From 686001f3210d117a0b542cf26a9d95bd0f2d3074 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 10 Mar 2022 16:56:49 +0100 Subject: [PATCH 001/199] login form commented --- src/app/form/structure-form/form.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index f943a8432..890abef1c 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -129,13 +129,13 @@ <h3>Qui êtes-vous ?</h3> <p>Ces informations ne seront pas visibles sur la plateforme</p> </div> - <div *ngIf="!isClaimMode" class="title"> + <!-- <div *ngIf="!isClaimMode" class="title"> <h4>Vous possédez déja un compte ? Connectez-vous :</h4> <button class="btn-primary small next" *ngIf="!isLoggedIn" (click)="isPopUpOpen = !isPopUpOpen"> Se connecter </button> <h4>Sinon, inscrivez-vous en suivant le formulaire ci-dessous :</h4> - </div> + </div> --> <div class="form-group" fxLayout="column"> <label for="surname">Nom</label> <div fxLayout="row" fxLayoutGap="13px"> -- GitLab From 6700af55e2a61ab6af62f0a01f5b37875842227c Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 10 Mar 2022 17:41:43 +0100 Subject: [PATCH 002/199] who are you page --- src/app/form/structure-form/form.component.html | 16 ++++++++-------- src/app/form/structure-form/form.component.scss | 8 +++++--- src/assets/scss/_color.scss | 1 + src/assets/scss/_inputs.scss | 2 +- src/assets/scss/_shapes.scss | 2 +- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 890abef1c..35390fa0a 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -137,17 +137,17 @@ <h4>Sinon, inscrivez-vous en suivant le formulaire ci-dessous :</h4> </div> --> <div class="form-group" fxLayout="column"> - <label for="surname">Nom</label> + <label for="name">Prénom</label> <div fxLayout="row" fxLayoutGap="13px"> - <input type="text" (input)="setValidationsForm()" formControlName="surname" class="form-input" /> + <input type="text" (input)="setValidationsForm()" formControlName="name" class="form-input" /> <app-svg-icon - *ngIf="accountForm.get('surname').valid" + *ngIf="accountForm.get('name').valid" [iconClass]="'validation'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon - *ngIf="accountForm.get('surname').invalid && accountForm.get('surname').value" + *ngIf="accountForm.get('name').invalid && accountForm.get('name').value" [iconClass]="'validation'" [type]="'form'" [icon]="'notValidate'" @@ -155,17 +155,17 @@ </div> </div> <div class="form-group" fxLayout="column"> - <label for="name">Prénom</label> + <label for="surname">Nom</label> <div fxLayout="row" fxLayoutGap="13px"> - <input type="text" (input)="setValidationsForm()" formControlName="name" class="form-input" /> + <input type="text" (input)="setValidationsForm()" formControlName="surname" class="form-input" /> <app-svg-icon - *ngIf="accountForm.get('name').valid" + *ngIf="accountForm.get('surname').valid" [iconClass]="'validation'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon - *ngIf="accountForm.get('name').invalid && accountForm.get('name').value" + *ngIf="accountForm.get('surname').invalid && accountForm.get('surname').value" [iconClass]="'validation'" [type]="'form'" [icon]="'notValidate'" diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 04811894b..c38f37c49 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -19,7 +19,7 @@ h4 { } .form { - background: $white; + background: $white-1; width: 100vw; height: calc(var(--vh, 1vh) * 100 - #{$header-height} - #{$footer-height}); top: #{$header-height}; @@ -31,7 +31,6 @@ h4 { } .footer { - padding: 17px 0; width: 100%; max-width: 960px; margin: 20px auto; @@ -132,6 +131,9 @@ h4 { margin: auto; height: auto; color: $grey-1; + background: $white; + border-radius: 8px; + padding: 32px 24px 32px 48px; &.home { .btnStart { margin-top: 90px; @@ -157,7 +159,7 @@ h4 { } } .title { - margin-bottom: 10px; + margin-bottom: 20px; } .nextTitle { margin-bottom: 10px; diff --git a/src/assets/scss/_color.scss b/src/assets/scss/_color.scss index 31a19f508..67a293534 100644 --- a/src/assets/scss/_color.scss +++ b/src/assets/scss/_color.scss @@ -1,5 +1,6 @@ $black: #000000; $white: #ffff; +$white-1: #e5e5e5; /* GREYS */ $grey: #b4bbbf; $grey-1: #333333; diff --git a/src/assets/scss/_inputs.scss b/src/assets/scss/_inputs.scss index b2ed7e0ea..3382a2c79 100644 --- a/src/assets/scss/_inputs.scss +++ b/src/assets/scss/_inputs.scss @@ -15,7 +15,7 @@ .form-input { width: 296px; background: $grey-8; - border: 1px solid $grey-4; + border: 1px solid $grey-5; box-sizing: border-box; border-radius: $input-radius; height: 40px; diff --git a/src/assets/scss/_shapes.scss b/src/assets/scss/_shapes.scss index a2982aebe..37cbbcd9c 100644 --- a/src/assets/scss/_shapes.scss +++ b/src/assets/scss/_shapes.scss @@ -2,7 +2,7 @@ $card-radius: 0.625em; $bouton-radius: 0.625em; -$input-radius: 1px; +$input-radius: 4px; $bouton-width: 12.25em; $round-bouton-radius: 1.25em; $round-radius: 50%; -- GitLab From ea4f1347132f3abc6ef9d9e66c92bca9abd80a56 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 10 Mar 2022 17:54:28 +0100 Subject: [PATCH 003/199] progress bar --- .../form/structure-form/form.component.html | 29 +++++++++---------- .../form/structure-form/form.component.scss | 7 ++++- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 35390fa0a..d10d95e4c 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -23,22 +23,19 @@ </div> </button> </div> - <div - class="progressBar" - *ngIf="currentPage != 0 && !isEditMode" - fxLayout="row" - fxLayoutAlign="space-between center" - fxLayoutGap="20px" - > - <label [ngClass]="{ validate: currentPage == nbPagesForm }" for="progressForm" - >{{ progressStatus | number: '1.0-0' }}% - </label> - <progress - id="progressForm" - [ngClass]="{ validate: currentPage == nbPagesForm }" - max="100" - [value]="progressStatus" - ></progress> + <div class="progressBar" *ngIf="currentPage != 0 && !isEditMode"> + <p>Création de compte</p> + <div fxLayout="row" fxLayoutAlign="space-between center" fxLayoutGap="20px"> + <label [ngClass]="{ validate: currentPage == nbPagesForm }" for="progressForm" + >{{ progressStatus | number: '1.0-0' }}% + </label> + <progress + id="progressForm" + [ngClass]="{ validate: currentPage == nbPagesForm }" + max="100" + [value]="progressStatus" + ></progress> + </div> </div> <div *ngIf="displayAddStructure()" class="home page" fxLayout="column" fxLayoutAlign="space-between"> <h2>Ajouter votre structure</h2> diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index c38f37c49..95e76d137 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -238,7 +238,7 @@ h4 { .progressBar { height: #{$progressBar-height}; max-width: 960px; - margin: auto; + margin: 16px auto; progress { width: 100%; height: 6px; @@ -264,6 +264,11 @@ h4 { color: $green-1; } } + p { + color: $primary-color; + @include lato-bold-14; + margin-bottom: 7px; + } } .form-group { &.facebook, -- GitLab From df19c2e0ee7443f0daf7aa016b5b4dc554dbc911 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 11 Mar 2022 10:29:56 +0100 Subject: [PATCH 004/199] progress bar --- src/app/form/structure-form/form.component.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 95e76d137..32fae9ad8 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -237,14 +237,14 @@ h4 { } .progressBar { height: #{$progressBar-height}; - max-width: 960px; + max-width: 1030px; margin: 16px auto; progress { width: 100%; height: 6px; border-radius: 7px; &::-webkit-progress-bar { - background-color: $grey-8; + background-color: $grey-6; } &::-webkit-progress-value { background-color: $primary-color; -- GitLab From 1d6f58673f046f12d08c826f9737bb98a378c4ba Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 11 Mar 2022 10:52:38 +0100 Subject: [PATCH 005/199] password page --- src/app/form/structure-form/form.component.html | 2 +- src/app/form/structure-form/form.component.scss | 5 +++++ src/styles.scss | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index d10d95e4c..487bb2c37 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -233,7 +233,7 @@ class="special" [ngClass]="{ invalid: accountForm.get('password').invalid && accountForm.get('password').value }" ></p> - Le mot de passe doit contenir au minimum : + <span class="passwordInfo">Le mot de passe doit contenir au minimum</span> <ul> <li [ngClass]="{ diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 32fae9ad8..f73ac32f4 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -201,6 +201,11 @@ h4 { font-style: italic; } } + .passwordInfo { + @include lato-regular-14; + font-style: italic; + color: $grey-3; + } .textareaBlock { @media #{$tablet} { max-width: 90%; diff --git a/src/styles.scss b/src/styles.scss index d352c7245..e6ccdcfbf 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -102,7 +102,7 @@ a { .form-group { margin-bottom: 26px; label { - color: $grey-2; + color: $grey-1; } } form p.notRequired { -- GitLab From d46adf96cded023795baf26e99e9adb937cbd9fe Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 11 Mar 2022 11:15:38 +0100 Subject: [PATCH 006/199] strucutre buttons --- .../structure-type-picker/structure-type-picker.component.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss b/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss index 55a3380bd..d3c5589af 100644 --- a/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss +++ b/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss @@ -10,13 +10,12 @@ button { border: none; } .tags { - background: $grey-8; padding: 15px; width: calc(100% + 2px); margin-left: -16px; height: 100%; button { - background: $white; + background: $grey-8; border-radius: 20px; margin: 4px; max-width: 100%; -- GitLab From 01c12faaddc2645a438650c5e1e13230922f0cce Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 11 Mar 2022 14:39:09 +0100 Subject: [PATCH 007/199] radio button full --- .../radio-form/radio-form.component.html | 2 +- .../radio-form/radio-form.component.scss | 14 ++++++-------- src/assets/form/sprite.svg | 6 ++++++ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/app/shared/components/radio-form/radio-form.component.html b/src/app/shared/components/radio-form/radio-form.component.html index a80aa999f..8dd3035cf 100644 --- a/src/app/shared/components/radio-form/radio-form.component.html +++ b/src/app/shared/components/radio-form/radio-form.component.html @@ -25,7 +25,7 @@ > <div class="checkmark"> <svg class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVectorFull'"></use> </svg> </div> <p>Non</p> diff --git a/src/app/shared/components/radio-form/radio-form.component.scss b/src/app/shared/components/radio-form/radio-form.component.scss index 8a390e6f3..511fbae1d 100644 --- a/src/app/shared/components/radio-form/radio-form.component.scss +++ b/src/app/shared/components/radio-form/radio-form.component.scss @@ -2,12 +2,13 @@ @import '../../../../assets/scss/typography'; svg { - width: 40px; + width: 24px; height: 100%; fill: $primary-color; stroke: $primary-color; &.validate { - width: 13px; + width: 24px; + height: 24px; height: 100%; stroke: $green-1; display: none; @@ -25,16 +26,13 @@ button { cursor: pointer; margin: 8px 0; &.selected { - background: $green-1; + border: 3px solid $green-1; .validate { display: initial; } - p { - color: $white; - } .checkmark { - width: 20px; - height: 20px; + width: 24px; + height: 24px; border: none; } } diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 6f2814ee4..0c45964b4 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -17,6 +17,12 @@ <path d="M2.00002 5.81818L5.8889 9L12 2" fill="none" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </symbol> +<symbol id="checkVectorFull" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="12" cy="12" r="10" fill="#47C562"/> +<path d="M7 12.8182L10.8889 16L17 9" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> +</symbol> + + <symbol id="typeStructure_privateLucratif" viewBox="0 0 20 45" xmlns="http://www.w3.org/2000/svg"> <path d="M3.56201 15.4203L16.562 10V43H3.56201V15.4203Z" stroke="none"/> <rect x="0.562012" y="44" width="19" height="1" stroke="none"/> -- GitLab From 9d6026150db1d9f260b29b1e6e66a087462487be Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 11 Mar 2022 14:40:41 +0100 Subject: [PATCH 008/199] radio form on yes button --- src/app/form/structure-form/form.component.ts | 4 ++-- .../shared/components/radio-form/radio-form.component.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index 5de928c31..ed8ef2845 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,8 +48,8 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 0; // Change this value to start on a different page for dev testing - public progressStatus = 0; + public currentPage = 9; // Change this value to start on a different page for dev testing + public progressStatus = 37; public nbPagesForm = 24; public isPageValid: boolean; public pagesValidation = []; diff --git a/src/app/shared/components/radio-form/radio-form.component.html b/src/app/shared/components/radio-form/radio-form.component.html index 8dd3035cf..08e1ca72b 100644 --- a/src/app/shared/components/radio-form/radio-form.component.html +++ b/src/app/shared/components/radio-form/radio-form.component.html @@ -11,7 +11,7 @@ > <div class="checkmark"> <svg class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVectorFull'"></use> </svg> </div> <p>Oui</p> -- GitLab From 4b18f50d984f1bbb6712b7013a86bb155a2de884 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 11 Mar 2022 15:18:17 +0100 Subject: [PATCH 009/199] fix marting top on schedules --- src/app/shared/components/hour-picker/hour-picker.component.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/shared/components/hour-picker/hour-picker.component.scss b/src/app/shared/components/hour-picker/hour-picker.component.scss index 485ae2477..2a7964b16 100644 --- a/src/app/shared/components/hour-picker/hour-picker.component.scss +++ b/src/app/shared/components/hour-picker/hour-picker.component.scss @@ -75,6 +75,7 @@ input { box-sizing: border-box; border-radius: 4px; height: 40px; + margin-top: 0; @include lato-regular-14; min-width: 56px; text-align: center; -- GitLab From d467be06aa718e4859fcfe8c46f0d4a30e101c2d Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 11 Mar 2022 16:34:04 +0100 Subject: [PATCH 010/199] max width fixed --- src/app/form/structure-form/form.component.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index f73ac32f4..c79cd2df7 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -128,6 +128,7 @@ h4 { } .page { max-width: 960px; + box-sizing: border-box; margin: auto; height: auto; color: $grey-1; @@ -242,7 +243,7 @@ h4 { } .progressBar { height: #{$progressBar-height}; - max-width: 1030px; + max-width: 960px; margin: 16px auto; progress { width: 100%; -- GitLab From f0e435edd39fa502b256dcfa6dd6a462425667bf Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 11 Mar 2022 17:18:50 +0100 Subject: [PATCH 011/199] welcoming terms --- .../form/structure-form/form.component.html | 2 +- .../form/structure-form/form.component.scss | 3 +++ .../checkbox-form.component.html | 2 +- .../checkbox-form.component.scss | 24 +++++++------------ src/assets/form/sprite.svg | 4 ++++ 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 487bb2c37..581e14694 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -552,7 +552,7 @@ ></app-svg-icon> <span>Il faut renseigner au moins un champ</span> </p> - <div *ngIf="accessModality" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start"> + <div *ngIf="accessModality" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start" class="welcomingTerms"> <app-checkbox-form *ngFor="let module of accessModality.modules" [isChecked]="isInArray(module.id, accessModality.id)" diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index c79cd2df7..f01b0a6d8 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -169,6 +169,9 @@ h4 { .type-picker { height: 100%; } + .welcomingTerms { + max-width: 600px; + } } .titleDesc { @include lato-bold-20; diff --git a/src/app/shared/components/checkbox-form/checkbox-form.component.html b/src/app/shared/components/checkbox-form/checkbox-form.component.html index 04b241baa..832c0cb51 100644 --- a/src/app/shared/components/checkbox-form/checkbox-form.component.html +++ b/src/app/shared/components/checkbox-form/checkbox-form.component.html @@ -7,7 +7,7 @@ > <div class="checkmark"> <svg class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVectorSquareFull'"></use> </svg> </div> <svg *ngIf="iconSvg" aria-hidden="true" [ngClass]="iconType"> diff --git a/src/app/shared/components/checkbox-form/checkbox-form.component.scss b/src/app/shared/components/checkbox-form/checkbox-form.component.scss index d0aaf2fb4..d2e665d19 100644 --- a/src/app/shared/components/checkbox-form/checkbox-form.component.scss +++ b/src/app/shared/components/checkbox-form/checkbox-form.component.scss @@ -2,16 +2,14 @@ @import '../../../../assets/scss/typography'; svg { - min-width: 30px; - width: 30px; - height: 100%; + width: 24px; + height: 24px; fill: $primary-color; stroke: $primary-color; &.validate { - min-width: 13px; - width: 13px; - height: 100%; - stroke: $green-1; + width: 22px; + height: 22px; + stroke: none; display: none; } &.labels { @@ -31,17 +29,14 @@ button { cursor: pointer; margin: 8px 0; &.selected { - background: $green-1; + background: $white; + border: 3px solid $green-1; .validate { display: initial; } - p { - color: $white; - } .checkmark { - min-width: 20px; - width: 20px; - height: 20px; + width: 22px; + height: 22px; border: none; } } @@ -51,7 +46,6 @@ button { color: $grey-2; } .checkmark { - min-width: 18px; width: 18px; height: 18px; background: $white; diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 0c45964b4..8e3f70d76 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -22,6 +22,10 @@ <path d="M7 12.8182L10.8889 16L17 9" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </symbol> +<symbol id="checkVectorSquareFull" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<rect x="3" y="3" width="18" height="18" rx="4" fill="#333333"/> +<path d="M7 12.8182L10.8889 16L17 9" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</symbol> <symbol id="typeStructure_privateLucratif" viewBox="0 0 20 45" xmlns="http://www.w3.org/2000/svg"> <path d="M3.56201 15.4203L16.562 10V43H3.56201V15.4203Z" stroke="none"/> -- GitLab From 0858136da645a8eb0defea486551c7b75b9cb4ba Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 10:46:36 +0100 Subject: [PATCH 012/199] checkbox form --- .../checkbox-form.component.scss | 19 ++++++++++++------- src/assets/scss/_color.scss | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/app/shared/components/checkbox-form/checkbox-form.component.scss b/src/app/shared/components/checkbox-form/checkbox-form.component.scss index d2e665d19..1e2380d31 100644 --- a/src/app/shared/components/checkbox-form/checkbox-form.component.scss +++ b/src/app/shared/components/checkbox-form/checkbox-form.component.scss @@ -2,13 +2,11 @@ @import '../../../../assets/scss/typography'; svg { - width: 24px; - height: 24px; + width: 44px; + height: 44px; fill: $primary-color; stroke: $primary-color; &.validate { - width: 22px; - height: 22px; stroke: none; display: none; } @@ -27,16 +25,21 @@ button { outline: none; border: none; cursor: pointer; - margin: 8px 0; + margin: 8px 0 0 0; &.selected { background: $white; border: 3px solid $green-1; .validate { display: initial; + width: 100%; + height: 100%; } .checkmark { - width: 22px; - height: 22px; + width: 24px; + height: 24px; + // to compensate viewbox of svg + margin-right: 8px !important; + transform: translate(-5px); border: none; } } @@ -50,5 +53,7 @@ button { height: 18px; background: $white; border: 1px solid $grey-3; + border-radius: 4px; + box-sizing: border-box; } } diff --git a/src/assets/scss/_color.scss b/src/assets/scss/_color.scss index 67a293534..f5cdc0193 100644 --- a/src/assets/scss/_color.scss +++ b/src/assets/scss/_color.scss @@ -5,7 +5,7 @@ $white-1: #e5e5e5; $grey: #b4bbbf; $grey-1: #333333; $grey-2: #4f4f4f; -$grey-3: #828282; +$grey-3: #696969; $grey-4: #bdbdbd; $grey-5: #dedede; $grey-6: #e9e9e9; -- GitLab From 6db0d4d6246b48b3093b4bd8a5e23b488f77b53d Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 10:55:56 +0100 Subject: [PATCH 013/199] spacing of radio buttons --- src/app/shared/components/radio-form/radio-form.component.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/shared/components/radio-form/radio-form.component.scss b/src/app/shared/components/radio-form/radio-form.component.scss index 511fbae1d..3e5e4396f 100644 --- a/src/app/shared/components/radio-form/radio-form.component.scss +++ b/src/app/shared/components/radio-form/radio-form.component.scss @@ -24,7 +24,7 @@ button { outline: none; border: none; cursor: pointer; - margin: 8px 0; + margin: 8px 0 0 0; &.selected { border: 3px solid $green-1; .validate { -- GitLab From c5bd900553585f3e2c592fd5f4576f0a8ba30ae2 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 11:12:02 +0100 Subject: [PATCH 014/199] radio form fixed --- .../components/radio-form/radio-form.component.scss | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/app/shared/components/radio-form/radio-form.component.scss b/src/app/shared/components/radio-form/radio-form.component.scss index 3e5e4396f..8420130a0 100644 --- a/src/app/shared/components/radio-form/radio-form.component.scss +++ b/src/app/shared/components/radio-form/radio-form.component.scss @@ -2,13 +2,10 @@ @import '../../../../assets/scss/typography'; svg { - width: 24px; - height: 100%; fill: $primary-color; stroke: $primary-color; &.validate { - width: 24px; - height: 24px; + width: 100%; height: 100%; stroke: $green-1; display: none; @@ -33,6 +30,9 @@ button { .checkmark { width: 24px; height: 24px; + // to compensate viewbox of svg + transform: translate(-4px); + margin-right: 10px !important; border: none; } } @@ -40,8 +40,9 @@ button { @include lato-bold-16; } .checkmark { - width: 18px; - height: 18px; + width: 20px; + height: 20px; + box-sizing: border-box; background: $white; border: 1px solid $grey-3; border-radius: 10px; -- GitLab From d75b211d10a7b06559c390c88f11763896ed69fc Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 12:02:21 +0100 Subject: [PATCH 015/199] new icons --- src/assets/form/sprite.svg | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 8e3f70d76..bc609c8dc 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -132,24 +132,25 @@ </defs> </symbol> -<symbol id="twitter" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> -<path d="M19.6429 0C20.2976 0 20.8542 0.229167 21.3125 0.6875C21.7708 1.14583 22 1.70238 22 2.35714V19.6429C22 20.2976 21.7708 20.8542 21.3125 21.3125C20.8542 21.7708 20.2976 22 19.6429 22H2.35714C1.70238 22 1.14583 21.7708 0.6875 21.3125C0.229167 20.8542 0 20.2976 0 19.6429V2.35714C0 1.70238 0.229167 1.14583 0.6875 0.6875C1.14583 0.229167 1.70238 0 2.35714 0H19.6429ZM17.2366 7.80804C17.8586 7.3497 18.3988 6.79315 18.8571 6.13839C18.2351 6.4003 17.6131 6.56399 16.9911 6.62946C17.6786 6.20387 18.1533 5.61458 18.4152 4.86161C17.7604 5.25446 17.0729 5.51637 16.3527 5.64732C15.7307 4.95982 14.9613 4.61607 14.0446 4.61607C13.0298 4.61607 12.1949 5.00893 11.5402 5.79464C10.8854 6.58036 10.6726 7.51339 10.9018 8.59375C8.18452 8.43006 5.95833 7.3006 4.22321 5.20536C3.92857 5.69643 3.78125 6.23661 3.78125 6.82589C3.78125 7.15327 3.84673 7.49702 3.97768 7.85714C4.10863 8.18452 4.28869 8.49554 4.51786 8.79018C4.74702 9.08482 4.99256 9.33036 5.25446 9.52679C4.73065 9.49405 4.23958 9.34673 3.78125 9.08482V9.13393C3.78125 9.91964 4.02679 10.6071 4.51786 11.1964C5.00893 11.7857 5.63095 12.1622 6.38393 12.3259C5.9256 12.4241 5.43452 12.4405 4.91071 12.375C5.10714 13.0298 5.48363 13.5699 6.04018 13.9955C6.59673 14.3884 7.21875 14.5848 7.90625 14.5848C6.72768 15.5015 5.40179 15.9598 3.92857 15.9598C3.63393 15.9598 3.37202 15.9435 3.14286 15.9107C4.64881 16.8929 6.30208 17.3839 8.10268 17.3839C9.96875 17.3839 11.622 16.9092 13.0625 15.9598C14.503 15.0104 15.5506 13.8482 16.2054 12.4732C16.8929 11.0982 17.2366 9.67411 17.2366 8.20089C17.2366 8.0372 17.2366 7.90625 17.2366 7.80804Z" stroke="none"/> +<symbol id="twitter" width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M18.1818 6.43077C17.7682 7.04615 17.2807 7.56923 16.7193 8V8.36923C16.7193 9.75385 16.4091 11.0923 15.7886 12.3846C15.1977 13.6769 14.2523 14.7692 12.9523 15.6615C11.6523 16.5538 10.1602 17 8.47614 17C6.85114 17 5.35909 16.5385 4 15.6154C4.20682 15.6462 4.44318 15.6615 4.70909 15.6615C6.03864 15.6615 7.23523 15.2308 8.29886 14.3692C7.67841 14.3692 7.11705 14.1846 6.61477 13.8154C6.1125 13.4154 5.77273 12.9077 5.59545 12.2923C6.06818 12.3538 6.51136 12.3385 6.925 12.2462C6.24545 12.0923 5.68409 11.7385 5.24091 11.1846C4.79773 10.6308 4.57614 9.98462 4.57614 9.24615V9.2C4.98977 9.44615 5.43295 9.58462 5.90568 9.61539C5.66932 9.43077 5.44773 9.2 5.24091 8.92308C5.03409 8.64615 4.87159 8.35385 4.75341 8.04615C4.63523 7.70769 4.57614 7.38462 4.57614 7.07692C4.57614 6.52308 4.70909 6.01539 4.975 5.55385C6.54091 7.52308 8.55 8.58462 11.0023 8.73846C10.7955 7.72308 10.9875 6.84615 11.5784 6.10769C12.1693 5.36923 12.9227 5 13.8386 5C14.6659 5 15.3602 5.32308 15.9216 5.96923C16.5716 5.84615 17.192 5.6 17.783 5.23077C17.5466 5.93846 17.1182 6.49231 16.4977 6.89231C17.0591 6.83077 17.6205 6.67692 18.1818 6.43077Z" fill="#696969"/> </symbol> -<symbol id="facebook" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> -<path d="M19.6429 0C20.2976 0 20.8542 0.229167 21.3125 0.6875C21.7708 1.14583 22 1.70238 22 2.35714V19.6429C22 20.2976 21.7708 20.8542 21.3125 21.3125C20.8542 21.7708 20.2976 22 19.6429 22H12.9152V14.5357H15.7634L16.3036 11H12.9152V8.69196C12.9152 7.44792 13.5699 6.82589 14.8795 6.82589H16.4018V3.83036C15.4851 3.66667 14.5848 3.58482 13.7009 3.58482C12.7515 3.58482 11.933 3.76488 11.2455 4.125C10.5908 4.48512 10.067 5.0253 9.67411 5.74554C9.28125 6.46577 9.08482 7.31696 9.08482 8.29911V11H5.99107V14.5357H9.08482V22H2.35714C1.70238 22 1.14583 21.7708 0.6875 21.3125C0.229167 20.8542 0 20.2976 0 19.6429V2.35714C0 1.70238 0.229167 1.14583 0.6875 0.6875C1.14583 0.229167 1.70238 0 2.35714 0H19.6429Z" stroke="none"/> -</symbol> -<symbol id="linkedin" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> -<path d="M20.4286 0C20.8542 0 21.2143 0.16369 21.5089 0.491071C21.8363 0.785714 22 1.14583 22 1.57143V20.4286C22 20.8542 21.8363 21.2143 21.5089 21.5089C21.2143 21.8363 20.8542 22 20.4286 22H1.57143C1.14583 22 0.769345 21.8363 0.441964 21.5089C0.147321 21.2143 0 20.8542 0 20.4286V1.57143C0 1.14583 0.147321 0.785714 0.441964 0.491071C0.769345 0.16369 1.14583 0 1.57143 0H20.4286ZM6.62946 18.8571H6.67857V8.34821H3.38839V18.8571H6.62946ZM3.68304 6.38393C4.04315 6.74405 4.48512 6.92411 5.00893 6.92411C5.53274 6.92411 5.9747 6.74405 6.33482 6.38393C6.72768 5.99107 6.92411 5.54911 6.92411 5.05804C6.92411 4.53423 6.72768 4.09226 6.33482 3.73214C5.9747 3.33929 5.53274 3.14286 5.00893 3.14286C4.48512 3.14286 4.04315 3.33929 3.68304 3.73214C3.32292 4.09226 3.14286 4.53423 3.14286 5.05804C3.14286 5.54911 3.32292 5.99107 3.68304 6.38393ZM18.8571 18.8571V13.1116C18.8571 12.3259 18.808 11.6548 18.7098 11.0982C18.6116 10.5417 18.4315 10.0342 18.1696 9.57589C17.9077 9.08482 17.4985 8.7247 16.942 8.49554C16.4182 8.23363 15.7634 8.10268 14.9777 8.10268C14.2247 8.10268 13.5699 8.26637 13.0134 8.59375C12.4896 8.92113 12.1131 9.31399 11.8839 9.77232H11.8348V8.34821H8.69196V18.8571H11.9821V13.6518C11.9821 12.8333 12.1131 12.1786 12.375 11.6875C12.6369 11.1964 13.1443 10.9509 13.8973 10.9509C14.2902 10.9509 14.6176 11.0327 14.8795 11.1964C15.1414 11.3601 15.3051 11.6057 15.3705 11.933C15.4688 12.2604 15.5342 12.5551 15.567 12.817C15.5997 13.0461 15.6161 13.3571 15.6161 13.75V18.8571H18.8571Z" stroke="none"/> +<symbol id="facebook" width="22" height="22" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M9.37737 18.1509H12.3208V12.4151H14.5094L14.9245 9.69811H12.3208V7.92453C12.3208 6.96855 12.8239 6.49056 13.8302 6.49056H15V4.18868C14.2956 4.06289 13.6038 4 12.9245 4C12.195 4 11.5661 4.13836 11.0377 4.41509C10.5346 4.69182 10.1321 5.10692 9.8302 5.66037C9.52832 6.21383 9.37737 6.86792 9.37737 7.62264V9.69811H7.00001V12.4151H9.37737V18.1509Z" fill="#696969"/> </symbol> -<symbol id="instagram" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg"> -<path d="M10.8207 13.4828C10.0871 13.4828 9.45997 13.2226 8.93937 12.7019C8.41877 12.1813 8.15846 11.5542 8.15846 10.8207C8.15846 10.0871 8.41877 9.45998 8.93937 8.93937C9.45997 8.41875 10.0871 8.15846 10.8207 8.15846C11.5542 8.15846 12.1813 8.41875 12.7019 8.93937C13.2225 9.45998 13.4828 10.0871 13.4828 10.8207C13.4828 11.5542 13.2225 12.1813 12.7019 12.7019C12.1813 13.2226 11.5542 13.4828 10.8207 13.4828Z" stroke="none"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M17.2099 14.7962C17.1626 15.0802 17.1034 15.3168 17.0324 15.5061C16.7485 16.216 16.2397 16.7248 15.5061 17.0324C15.3168 17.1034 15.0683 17.1626 14.7607 17.2099C14.4767 17.2572 14.1218 17.2927 13.6958 17.3164C13.2935 17.3401 12.9622 17.3519 12.7019 17.3519H8.90387C8.66724 17.3519 8.33594 17.3401 7.90999 17.3164C7.50769 17.2927 7.15274 17.2572 6.84511 17.2099C6.56114 17.1626 6.32451 17.1034 6.13519 17.0324C5.42527 16.7485 4.91649 16.2397 4.60887 15.5061C4.56153 15.3405 4.51421 15.1275 4.46688 14.8672C4.41955 14.6069 4.38405 14.3584 4.36039 14.1218C4.33673 13.8615 4.31306 13.5538 4.2894 13.1989V8.93937C4.2894 8.67907 4.30124 8.34776 4.3249 7.94548C4.34856 7.51953 4.38405 7.16457 4.43139 6.8806C4.47872 6.57296 4.53787 6.32449 4.60887 6.13519C4.89283 5.4016 5.40161 4.89283 6.13519 4.60887C6.32451 4.53787 6.56114 4.4787 6.84511 4.43139C7.15274 4.38407 7.50769 4.34857 7.90999 4.3249C8.33594 4.30122 8.67906 4.2894 8.93937 4.2894H12.7019C12.9622 4.2894 13.2935 4.30122 13.6958 4.3249C14.1218 4.34857 14.4767 4.38407 14.7607 4.43139C15.0683 4.4787 15.3168 4.53787 15.5061 4.60887C16.2397 4.89283 16.7485 5.4016 17.0324 6.13519C17.1034 6.32449 17.1626 6.57296 17.2099 6.8806C17.2573 7.16457 17.2927 7.51953 17.3164 7.94548C17.3401 8.34776 17.3519 8.67907 17.3519 8.93937V12.7019C17.3519 12.9622 17.3401 13.3054 17.3164 13.7313C17.2927 14.1336 17.2573 14.4886 17.2099 14.7962ZM10.8207 6.73862C9.68478 6.73862 8.71456 7.1409 7.90999 7.94548C7.12908 8.72639 6.73862 9.68478 6.73862 10.8207C6.73862 11.9565 7.12908 12.9267 7.90999 13.7313C8.71456 14.5122 9.68478 14.9027 10.8207 14.9027C11.9565 14.9027 12.9149 14.5122 13.6958 13.7313C14.5004 12.9267 14.9027 11.9565 14.9027 10.8207C14.9027 9.68478 14.5004 8.72639 13.6958 7.94548C12.9149 7.1409 11.9565 6.73862 10.8207 6.73862ZM16.0031 6.56114C16.0031 6.30085 15.9084 6.08787 15.7191 5.92221C15.5534 5.73291 15.3405 5.63825 15.0802 5.63825C14.8199 5.63825 14.5951 5.73291 14.4057 5.92221C14.2164 6.08787 14.1218 6.30085 14.1218 6.56114C14.1218 6.82143 14.2164 7.04626 14.4057 7.23556C14.5951 7.42487 14.8199 7.51953 15.0802 7.51953C15.3405 7.51953 15.5534 7.42487 15.7191 7.23556C15.9084 7.04626 16.0031 6.82143 16.0031 6.56114Z" stroke="none"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M1.91304 0C0.8565 0 0 0.856485 0 1.91304V20.087C0 21.1435 0.8565 22 1.91304 22H20.087C21.1435 22 22 21.1435 22 20.087V1.91304C22 0.856485 21.1435 0 20.087 0H1.91304ZM18.7717 10.8207C18.7717 9.28251 18.7599 8.19395 18.7362 7.55503C18.6653 6.11152 18.2275 4.99932 17.4229 4.21841C16.642 3.41383 15.5298 2.97605 14.0863 2.90506C13.4474 2.88139 12.3588 2.86957 10.8207 2.86957C9.28249 2.86957 8.19395 2.88139 7.55503 2.90506C6.11153 2.97605 4.99932 3.41383 4.21841 4.21841C3.4375 4.99932 3.01155 6.09969 2.94056 7.51953C2.89322 8.18213 2.86957 9.28251 2.86957 10.8207C2.86957 12.3588 2.89322 13.4474 2.94056 14.0863C2.94056 14.5595 2.97605 14.9737 3.04704 15.3286C3.1417 15.6836 3.28368 16.0504 3.473 16.429C3.66231 16.8076 3.91078 17.1389 4.21841 17.4229C4.99932 18.2038 6.11153 18.6298 7.55503 18.7007C8.19395 18.7481 9.28249 18.7717 10.8207 18.7717C12.3588 18.7717 13.4474 18.7481 14.0863 18.7007C15.5298 18.6534 16.642 18.2393 17.4229 17.4584C18.2275 16.6538 18.6653 15.5298 18.7362 14.0863C18.7599 13.4474 18.7717 12.3588 18.7717 10.8207Z" stroke="none"/> +<symbol id="linkedin" width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M7.925 17H7.88437H5.20312V8.30625H7.925V17ZM6.54375 7.12812C6.11042 7.12812 5.74479 6.97917 5.44687 6.68125C5.14896 6.35625 5 5.99062 5 5.58437C5 5.15104 5.14896 4.78542 5.44687 4.4875C5.74479 4.1625 6.11042 4 6.54375 4C6.97708 4 7.34271 4.1625 7.64062 4.4875C7.96562 4.78542 8.12812 5.15104 8.12812 5.58437C8.12812 5.99062 7.96562 6.35625 7.64062 6.68125C7.34271 6.97917 6.97708 7.12812 6.54375 7.12812ZM18 12.2469V17H15.3187V12.775C15.3187 12.45 15.3052 12.1927 15.2781 12.0031C15.251 11.7865 15.1969 11.5427 15.1156 11.2719C15.0615 11.001 14.926 10.7979 14.7094 10.6625C14.4927 10.5271 14.2219 10.4594 13.8969 10.4594C13.274 10.4594 12.8542 10.6625 12.6375 11.0687C12.4208 11.475 12.3125 12.0167 12.3125 12.6937V17H9.59062V8.30625H12.1906V9.48437H12.2312C12.4208 9.10521 12.7323 8.78021 13.1656 8.50937C13.626 8.23854 14.1677 8.10312 14.7906 8.10312C15.4406 8.10312 15.9823 8.21146 16.4156 8.42812C16.876 8.61771 17.2146 8.91562 17.4312 9.32187C17.6479 9.70104 17.7969 10.1208 17.8781 10.5812C17.9594 11.0417 18 11.5969 18 12.2469Z" fill="#696969"/> </symbol> +<svg id="instagram" width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M11 6.89286C9.85714 6.89286 8.88095 7.29764 8.07143 8.10714C7.28571 8.89286 6.89286 9.85714 6.89286 11C6.89286 12.1429 7.28571 13.1191 8.07143 13.9286C8.88095 14.7143 9.85714 15.1071 11 15.1071C12.1429 15.1071 13.1071 14.7143 13.8929 13.9286C14.7024 13.1191 15.1071 12.1429 15.1071 11C15.1071 9.85714 14.7024 8.89286 13.8929 8.10714C13.1071 7.29764 12.1429 6.89286 11 6.89286ZM11 13.6786C10.2619 13.6786 9.63095 13.4166 9.10714 12.8929C8.58334 12.3691 8.32143 11.7381 8.32143 11C8.32143 10.2619 8.58334 9.63093 9.10714 9.10714C9.63095 8.58335 10.2619 8.32143 11 8.32143C11.7381 8.32143 12.3691 8.58335 12.8929 9.10714C13.4167 9.63093 13.6786 10.2619 13.6786 11C13.6786 11.7381 13.4167 12.3691 12.8929 12.8929C12.3691 13.4166 11.7381 13.6786 11 13.6786Z" fill="#696969"/> +<path d="M16.2143 6.71429C16.2143 6.45236 16.1191 6.23808 15.9286 6.07143C15.7619 5.88093 15.5476 5.78571 15.2857 5.78571C15.0238 5.78571 14.7976 5.88093 14.6071 6.07143C14.4167 6.23808 14.3214 6.45236 14.3214 6.71429C14.3214 6.97621 14.4167 7.20236 14.6071 7.39286C14.7976 7.58335 15.0238 7.67857 15.2857 7.67857C15.5476 7.67857 15.7619 7.58335 15.9286 7.39286C16.1191 7.20236 16.2143 6.97621 16.2143 6.71429Z" fill="#696969"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M18.9643 7.71429C18.9881 8.35714 19 9.45236 19 11C19 12.5476 18.9881 13.6429 18.9643 14.2857C18.8929 15.7381 18.4524 16.8691 17.6429 17.6786C16.8571 18.4643 15.7381 18.8809 14.2857 18.9286C13.6429 18.9762 12.5476 19 11 19C9.45238 19 8.35714 18.9762 7.71429 18.9286C6.26191 18.8571 5.14286 18.4286 4.35714 17.6429C4.04762 17.3571 3.79762 17.0238 3.60714 16.6429C3.41666 16.2619 3.2738 15.8929 3.17857 15.5357C3.10714 15.1786 3.07143 14.7619 3.07143 14.2857C3.0238 13.6429 3 12.5476 3 11C3 9.45236 3.0238 8.34522 3.07143 7.67857C3.14286 6.25 3.57143 5.14286 4.35714 4.35714C5.14286 3.54764 6.26191 3.10714 7.71429 3.03571C8.35714 3.01192 9.45238 3 11 3C12.5476 3 13.6429 3.01192 14.2857 3.03571C15.7381 3.10714 16.8571 3.54764 17.6429 4.35714C18.4524 5.14286 18.8929 6.26192 18.9643 7.71429ZM17.4286 15C17.3809 15.2857 17.3214 15.5238 17.25 15.7143C16.9643 16.4286 16.4524 16.9405 15.7143 17.25C15.5238 17.3214 15.2738 17.3809 14.9643 17.4286C14.6786 17.4762 14.3214 17.5119 13.8929 17.5357C13.4881 17.5595 13.1548 17.5714 12.8929 17.5714H9.07143C8.83334 17.5714 8.5 17.5595 8.07143 17.5357C7.66666 17.5119 7.30952 17.4762 7 17.4286C6.71429 17.3809 6.4762 17.3214 6.28571 17.25C5.57143 16.9643 5.05952 16.4524 4.75 15.7143C4.70238 15.5476 4.65477 15.3334 4.60714 15.0714C4.55952 14.8095 4.5238 14.5595 4.5 14.3214C4.4762 14.0595 4.45238 13.75 4.42857 13.3929V9.10714C4.42857 8.84522 4.44048 8.51192 4.46429 8.10714C4.48809 7.67857 4.5238 7.32143 4.57143 7.03571C4.61905 6.72621 4.67857 6.47621 4.75 6.28571C5.03571 5.54764 5.54762 5.03571 6.28571 4.75C6.4762 4.67857 6.71429 4.61907 7 4.57143C7.30952 4.52379 7.66666 4.48808 8.07143 4.46429C8.5 4.4405 8.84523 4.42857 9.10714 4.42857H12.8929C13.1548 4.42857 13.4881 4.4405 13.8929 4.46429C14.3214 4.48808 14.6786 4.52379 14.9643 4.57143C15.2738 4.61907 15.5238 4.67857 15.7143 4.75C16.4524 5.03571 16.9643 5.54764 17.25 6.28571C17.3214 6.47621 17.3809 6.72621 17.4286 7.03571C17.4762 7.32143 17.5119 7.67857 17.5357 8.10714C17.5595 8.51192 17.5714 8.84522 17.5714 9.10714V12.8929C17.5714 13.1548 17.5595 13.5 17.5357 13.9286C17.5119 14.3334 17.4762 14.6905 17.4286 15Z" fill="#696969"/> +</svg> + <symbol id="show" viewBox="0 0 24 25" xmlns="http://www.w3.org/2000/svg"> <path d="M12 5.5C11.4477 5.5 11 5.94772 11 6.5V11.5H6C5.44772 11.5 5 11.9477 5 12.5C5 13.0523 5.44772 13.5 6 13.5H11V18.5C11 19.0523 11.4477 19.5 12 19.5C12.5523 19.5 13 19.0523 13 18.5V13.5H18C18.5523 13.5 19 13.0523 19 12.5C19 11.9477 18.5523 11.5 18 11.5H13V6.5C13 5.94772 12.5523 5.5 12 5.5Z" stroke="none"/> -- GitLab From 7f7ad8b4a5356877e979a1d191b1d760a9e62d2d Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 12:02:32 +0100 Subject: [PATCH 016/199] borders fixed --- src/app/form/structure-form/form.component.scss | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index f01b0a6d8..9fee903b1 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -350,9 +350,10 @@ img { // collapse .collapse { - border: 1px solid $grey-4; + border: 1px solid $grey-5; border-radius: 4px; margin-bottom: 13px; + max-width: 600px; @media #{$small-phone} { width: 95% !important; } @@ -375,6 +376,17 @@ img { margin: 0; color: $grey-2; @include lato-regular-14; + &.facebook, + &.twitter, + &.instagram, + &.linkedin { + &:focus-within { + input { + border-color: $primary-color; + fill: $primary-color; + } + } + } &.facebook { &:focus-within { svg { @@ -432,7 +444,7 @@ img { height: 38px; fill: $grey-3; margin-right: 0 !important; - border: 1px solid $grey-4; + border: 1px solid $grey-5; border-radius: 4px 0 0 4px; border-right: 0; padding-left: 16px; -- GitLab From cc2d07a52c65cbc5bb316429de63096201a1a7da Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 14:03:31 +0100 Subject: [PATCH 017/199] socials icons centered + red selector fixed --- src/app/form/structure-form/form.component.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 9fee903b1..fc00f5da6 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -380,6 +380,11 @@ img { &.twitter, &.instagram, &.linkedin { + svg { + height: 22px; + width: 22px; + padding: 8px; + } &:focus-within { input { border-color: $primary-color; -- GitLab From 91de69f7db79f77951f9452af5898fc4f31c202b Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 15:51:08 +0100 Subject: [PATCH 018/199] website styles --- .../form/structure-form/form.component.html | 28 +++++++++++-------- .../form/structure-form/form.component.scss | 4 +++ .../svg-icon/svg-icon.component.scss | 4 +++ 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 581e14694..2faedcbbe 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -552,7 +552,13 @@ ></app-svg-icon> <span>Il faut renseigner au moins un champ</span> </p> - <div *ngIf="accessModality" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start" class="welcomingTerms"> + <div + *ngIf="accessModality" + fxLayout="row wrap" + fxLayoutGap="16px" + fxLayoutAlign="flex-start" + class="welcomingTerms" + > <app-checkbox-form *ngFor="let module of accessModality.modules" [isChecked]="isInArray(module.id, accessModality.id)" @@ -651,14 +657,14 @@ /> <app-svg-icon *ngIf="getStructureControl('website').valid && getStructureControl('website').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" class="validationIcon" ></app-svg-icon> <app-svg-icon *ngIf="getStructureControl('website').invalid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon" @@ -707,14 +713,14 @@ getStructureControl('facebook').value != null && getStructureControl('facebook').value != '' " - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" class="validationIcon" ></app-svg-icon> <app-svg-icon *ngIf="getStructureControl('facebook').invalid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon" @@ -739,14 +745,14 @@ getStructureControl('twitter').value != null && getStructureControl('twitter').value != '' " - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" class="validationIcon" ></app-svg-icon> <app-svg-icon *ngIf="getStructureControl('twitter').invalid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon" @@ -772,14 +778,14 @@ getStructureControl('instagram').value != null && getStructureControl('instagram').value != '' " - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" class="validationIcon" ></app-svg-icon> <app-svg-icon *ngIf="getStructureControl('instagram').invalid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon" @@ -804,14 +810,14 @@ getStructureControl('linkedin').value != null && getStructureControl('linkedin').value != '' " - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" class="validationIcon" ></app-svg-icon> <app-svg-icon *ngIf="getStructureControl('linkedin').invalid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon" diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index fc00f5da6..12d0234fc 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -392,6 +392,10 @@ img { } } } + app-svg-icon { + padding-top: 12px; + margin-right: 0 !important; + } &.facebook { &:focus-within { svg { diff --git a/src/app/shared/components/svg-icon/svg-icon.component.scss b/src/app/shared/components/svg-icon/svg-icon.component.scss index 0ce39a373..60e602bfd 100644 --- a/src/app/shared/components/svg-icon/svg-icon.component.scss +++ b/src/app/shared/components/svg-icon/svg-icon.component.scss @@ -21,6 +21,10 @@ height: 80px; width: 80px; } + &.icon-26 { + height: 26px; + width: 26px; + } &.validation { height: 40px; width: 20px; -- GitLab From b792aed235de15e3d812888254dc6f13a3364489 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 15:58:28 +0100 Subject: [PATCH 019/199] max-width --- src/app/form/structure-form/form.component.html | 2 +- src/app/form/structure-form/form.component.scss | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 2faedcbbe..85aa43d11 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -943,7 +943,7 @@ <div class="title"> <h3>Quelles sont les autres démarches ?</h3> </div> - <div class="textareaBlock" fxLayout="column"> + <div class="textareaBlock procedureContainer" fxLayout="column"> <textarea rows="8" placeholder="Exemple : tout ce qui est en lien avec la création d'entreprise..." diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 12d0234fc..a89efb804 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -169,7 +169,8 @@ h4 { .type-picker { height: 100%; } - .welcomingTerms { + .welcomingTerms, + .procedureContainer { max-width: 600px; } } -- GitLab From 0aa1861dd86f2d65db32546b0928c6b4f4efae02 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 16:02:52 +0100 Subject: [PATCH 020/199] small text modifed --- src/app/form/structure-form/form.component.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index a89efb804..86d5ee65e 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -217,6 +217,8 @@ h4 { } p { text-align: right; + @include lato-regular-14; + color: $grey-3; } } } -- GitLab From cda7956ddfd18ee625f4e1da36718383930c3620 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 16:08:01 +0100 Subject: [PATCH 021/199] optionnal --- .../form/structure-form/form.component.html | 24 +++++++++---------- .../form/structure-form/form.component.scss | 2 ++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 85aa43d11..d5a8dcf6c 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -573,7 +573,7 @@ <div class="section"> <div class="title"> <h3>Quels sont les horaires d'ouverture ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <app-hour-picker *ngIf="hoursForm" @@ -585,7 +585,7 @@ <div> <div class="title"> <h3>Avez-vous des précisions à apporter sur les horaires ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <div class="textareaBlock" fxLayout="column"> <textarea @@ -626,7 +626,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureWebAndSocialNetwork" class="page"> <div class="title"> <h3>Comment vous trouver sur internet ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <div class="collapse" [ngClass]="{ notCollapsed: !showWebsite }"> <div fxLayout="column"> @@ -862,7 +862,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureAccompaniment" class="page"> <div class="title"> <h3>Quel(s) accompagnement(s) proposez-vous ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <div class="collapse" [ngClass]="{ notCollapsed: !showProceduresAccompaniment }"> <div fxLayout="column"> @@ -980,7 +980,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureWorkshop" class="page"> <div class="title"> <h3>Quel(s) atelier(s) au numérique proposez-vous ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <div class="collapse" *ngFor="let categ of trainingCategories" [ngClass]="{ notCollapsed: !categ.openned }"> <div fxLayout="column"> @@ -1049,7 +1049,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureEquipments" class="page"> <div class="title"> <h3>Quel matériel mettez-vous à disposition ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <ng-container *ngFor="let equipment of equipmentsAndServices"> <div @@ -1212,7 +1212,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureLabels" class="page"> <div class="title"> <h3>Quelle(s) labelisation proposez-vous ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <div *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start"> <app-checkbox-form @@ -1229,7 +1229,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureOtherServices" class="page"> <div class="title"> <h3>Quels autres services proposez-vous ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <div *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start"> <ng-container *ngFor="let equipment of equipmentsAndServices"> @@ -1254,7 +1254,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureDescription" class="page"> <div class="title"> <h3>Pouvez vous présentez votre structure ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <div class="textareaBlock" fxLayout="column"> <textarea @@ -1271,7 +1271,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureCovidInfo" class="page"> <div class="title"> <h3>Y a-t-il des informations spécifiques à la période COVID ?</h3> - <p class="notRequired">facultatif</p> + <p class="notRequired">Facultatif</p> </div> <div class="textareaBlock" fxLayout="column"> <textarea @@ -1314,7 +1314,7 @@ data.grandlyon.com<span class="asterisk" *ngIf="!isEditMode">**</span ><span class="asterisk" *ngIf="isEditMode">*</span> ? </h3> - <p class="notRequired" *ngIf="!isEditMode">facultatif</p> + <p class="notRequired" *ngIf="!isEditMode">Facultatif</p> </div> <app-checkbox-form *ngIf="!isEditMode" @@ -1335,7 +1335,7 @@ <div *ngIf="!profile"> <div class="title"> <h3>Souhaitez-vous vous abonner à la lettre d’information de Res'in ?</h3> - <p class="notRequired" *ngIf="!isEditMode">facultatif</p> + <p class="notRequired" *ngIf="!isEditMode">Facultatif</p> </div> <app-checkbox-form [isChecked]="userAcceptNewsletter" diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 86d5ee65e..10b4b07e9 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -203,6 +203,8 @@ h4 { } } &.notRequired { + @include lato-regular-18; + color: $grey-3; font-style: italic; } } -- GitLab From 8348b06b7f9d26a83ca2924fb3632ce3ac742793 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 16:41:33 +0100 Subject: [PATCH 022/199] lables icons --- src/assets/form/sprite.svg | 281 +++++++++++++++++++++---------------- 1 file changed, 158 insertions(+), 123 deletions(-) diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index bc609c8dc..78ec15287 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -160,130 +160,165 @@ <path d="M6 11.5C5.44772 11.5 5 11.9477 5 12.5C5 13.0523 5.44772 13.5 6 13.5C13.0974 13.5 10.2809 13.5 18 13.5C18.5523 13.5 19 13.0523 19 12.5C19 11.9477 18.5523 11.5 18 11.5C10.9004 11.5 13.7065 11.5 6 11.5Z" stroke="none"/> </symbol> -<symbol id="passNumerique" viewBox="0 0 120 56" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M58.8222 28.6543C58.8186 28.6508 58.8153 28.6534 58.8119 28.6543L58.8019 28.6589C58.7875 28.6645 58.7738 28.6717 58.7611 28.6804C58.7567 28.6831 58.7509 28.6846 58.7479 28.6804C58.7449 28.6762 58.7515 28.6729 58.7542 28.6695C58.763 28.6582 58.7779 28.6619 58.7885 28.6546C58.8247 28.6293 58.8651 28.6108 58.9078 28.5998C58.9793 28.5799 59.0531 28.5745 59.1256 28.5608C59.1729 28.5518 59.22 28.5435 59.2598 28.5133C59.2773 28.5004 59.295 28.4871 59.3137 28.4753C59.3425 28.458 59.3653 28.4323 59.379 28.4016C59.3826 28.3934 59.3915 28.3827 59.3832 28.3761C59.3775 28.3719 59.3712 28.3851 59.365 28.39C59.3618 28.3928 59.3589 28.3957 59.356 28.3988C59.2947 28.4556 59.2276 28.5032 59.1462 28.5266C59.0829 28.5447 59.0169 28.5415 58.9508 28.5502C58.9721 28.5327 58.9896 28.5127 59.02 28.5092C59.0063 28.4977 58.9961 28.5062 58.9858 28.5078C58.979 28.509 58.9687 28.516 58.9669 28.5047C58.9658 28.498 58.9669 28.4841 58.9818 28.4847C58.9852 28.4847 58.9897 28.4859 58.9912 28.4817C58.9967 28.4647 59.0128 28.4605 59.0259 28.4531C59.0652 28.4307 59.105 28.4094 59.1445 28.3873C59.1486 28.3849 59.1548 28.3845 59.1559 28.3782C59.1511 28.3763 59.1439 28.3824 59.142 28.3749C59.14 28.3675 59.146 28.3654 59.1524 28.3634C59.1874 28.3507 59.2215 28.3357 59.2546 28.3187C59.2448 28.3153 59.2352 28.3217 59.2286 28.3138C59.2328 28.3045 59.2459 28.3059 59.2479 28.2988C59.2512 28.2877 59.2501 28.2753 59.2661 28.2738C59.2682 28.2738 59.268 28.271 59.2661 28.2699C59.2553 28.2614 59.2673 28.2595 59.2706 28.2566C59.2816 28.2472 59.297 28.2475 59.3105 28.2408C59.2928 28.2344 59.2865 28.2231 59.2956 28.211C59.3134 28.1862 59.3163 28.1569 59.3247 28.1291C59.3259 28.1255 59.3283 28.1211 59.3231 28.1181C59.3178 28.1151 59.3153 28.1181 59.3125 28.1215C59.2842 28.1464 59.2505 28.1643 59.214 28.1737C59.1873 28.1816 59.1601 28.1879 59.1326 28.1925C59.1176 28.1962 59.1018 28.196 59.0869 28.1918C59.072 28.1876 59.0585 28.1796 59.0476 28.1686C59.0376 28.1593 59.0265 28.1512 59.0146 28.1445C58.929 28.0954 58.8346 28.078 58.7384 28.0665C58.7023 28.0633 58.666 28.0621 58.6298 28.0629C58.6452 28.0548 58.6615 28.0488 58.6784 28.045C58.72 28.0349 58.7621 28.0269 58.8028 28.0137C58.8376 28.0014 58.8736 27.9927 58.9102 27.9877L58.9611 27.9838C58.9443 27.9809 58.9271 27.9809 58.9104 27.9838C58.8961 27.9828 58.8818 27.9835 58.8677 27.9859C58.7764 28.0037 58.6833 28.0158 58.6007 28.0633C58.5943 28.0671 58.5858 28.0702 58.5809 28.0644C58.576 28.0586 58.5834 28.0517 58.5876 28.0462C58.6103 28.0146 58.6407 27.9893 58.676 27.9728C58.7112 27.9563 58.7501 27.949 58.7889 27.9518C58.8858 27.9551 58.9822 27.9678 59.0767 27.9897C59.0846 27.9906 59.0922 27.9933 59.0989 27.9978C59.1056 28.0022 59.1111 28.0082 59.115 28.0152C59.1176 28.0199 59.1215 28.0238 59.1261 28.0266C59.1307 28.0293 59.136 28.0308 59.1414 28.031C59.161 28.0312 59.1805 28.0349 59.1988 28.042C59.2015 28.0135 59.2036 28.0122 59.2304 28.0164H59.2339C59.2437 28.0181 59.2539 28.0189 59.2595 28.009C59.2616 28.0047 59.2622 27.9997 59.2612 27.995C59.2602 27.9903 59.2577 27.986 59.254 27.9828C59.2424 27.9692 59.2298 27.9564 59.2179 27.9431C59.214 27.9388 59.2079 27.9345 59.2131 27.9251C59.2303 27.9415 59.2462 27.9573 59.2628 27.9725C59.2829 27.9932 59.309 28.0071 59.3374 28.0122C59.3474 28.0135 59.3593 28.018 59.3662 28.0092C59.373 28.0004 59.3636 27.9903 59.3589 27.9821C59.3385 27.9512 59.3154 27.9222 59.2898 27.8955C59.2839 27.8905 59.2796 27.884 59.2773 27.8766C59.2732 27.8632 59.2675 27.8504 59.2601 27.8384C59.2488 27.8177 59.2412 27.7952 59.2377 27.7719C59.2379 27.7611 59.237 27.7504 59.2349 27.7398C59.2149 27.6718 59.2066 27.6013 59.1902 27.5322C59.1784 27.4809 59.1742 27.4296 59.2008 27.3808C59.2207 27.3443 59.2415 27.3082 59.2622 27.2721C59.2889 27.2259 59.319 27.1826 59.3648 27.1528C59.3695 27.1493 59.3729 27.1443 59.3745 27.1386C59.4078 27.056 59.4597 26.9908 59.5432 26.9538C59.5826 26.9364 59.6224 26.9199 59.6625 26.9017H59.6439C58.7579 26.9017 57.8721 26.9017 56.9863 26.9017C56.9674 26.9017 56.9642 26.9073 56.9642 26.9246C56.9642 27.6091 56.9642 28.2935 56.9642 28.9779C56.9642 28.9966 56.9692 29.0002 56.9868 29.0002C57.6097 28.9996 58.2327 28.9996 58.8556 29.0002C58.8709 29.0008 58.8861 28.9965 58.8987 28.9878C58.9187 28.9738 58.9398 28.9614 58.9618 28.9508C59.0318 28.9166 59.102 28.8828 59.1727 28.8504C59.2635 28.8088 59.3462 28.7575 59.4102 28.678C59.4589 28.6168 59.515 28.562 59.5774 28.5148C59.5803 28.5132 59.5827 28.5107 59.5841 28.5076C59.5854 28.5045 59.5857 28.5011 59.5848 28.4978C59.5659 28.5035 59.555 28.5239 59.5331 28.5236C59.5389 28.5166 59.5466 28.512 59.5525 28.5057C59.5583 28.4995 59.5753 28.4977 59.5707 28.4857C59.565 28.4708 59.5499 28.4801 59.5389 28.4795C59.5371 28.4798 59.5354 28.4802 59.5337 28.4808C59.5001 28.488 59.4756 28.5106 59.4506 28.5311C59.4457 28.5351 59.4409 28.5424 59.4339 28.5387C59.4209 28.5318 59.4109 28.5387 59.4005 28.5438C59.3802 28.5539 59.361 28.5659 59.3429 28.5796C59.3221 28.5956 59.3 28.6097 59.2768 28.6219C59.2619 28.6294 59.2433 28.6255 59.2273 28.6349C59.2006 28.6499 59.17 28.6566 59.1395 28.6541C59.0707 28.65 59.0052 28.6681 58.9384 28.681C58.8826 28.6917 58.8458 28.732 58.803 28.7627C58.7674 28.7886 58.7342 28.8177 58.7038 28.8495C58.6996 28.8537 58.6957 28.8598 58.6865 28.8558C58.6975 28.842 58.7068 28.827 58.7142 28.811C58.7244 28.7842 58.7444 28.7622 58.7702 28.7496C58.7758 28.7465 58.7805 28.7419 58.7838 28.7363C58.787 28.7308 58.7887 28.7244 58.7886 28.718C58.7624 28.719 58.7597 28.7578 58.7278 28.7527C58.7361 28.742 58.7426 28.73 58.747 28.7172C58.7506 28.6931 58.7688 28.6853 58.7857 28.675L58.8054 28.6629L58.814 28.6574L58.8213 28.6538L58.8225 28.651L58.8204 28.6519L58.8222 28.6543ZM60.7521 28.2247C60.7614 28.2269 60.7699 28.2315 60.7769 28.2379C60.784 28.2444 60.7892 28.2526 60.7921 28.2617C60.7954 28.2673 60.7967 28.274 60.7957 28.2805C60.7946 28.2869 60.7913 28.2928 60.7862 28.2971C60.7771 28.3048 60.7677 28.312 60.7589 28.32C60.7531 28.3244 60.7491 28.3307 60.7478 28.3378C60.7464 28.345 60.7478 28.3523 60.7516 28.3585C60.7609 28.3805 60.7628 28.4049 60.7571 28.4281C60.7513 28.4512 60.7383 28.4719 60.7199 28.4871C60.7039 28.4988 60.6857 28.5069 60.6663 28.511C60.647 28.5152 60.627 28.5151 60.6077 28.5109C60.5928 28.5081 60.5795 28.5029 60.5646 28.5009C60.5093 28.4935 60.4548 28.4792 60.3987 28.4759C60.3688 28.4721 60.3386 28.4798 60.3142 28.4974C60.2111 28.5815 60.1662 28.6913 60.177 28.8234C60.1792 28.8521 60.1896 28.8756 60.2226 28.8807C60.2277 28.882 60.2327 28.8838 60.2375 28.8859C60.3245 28.9165 60.4116 28.9466 60.4924 28.992C60.5015 28.9972 60.5118 29 60.5222 29C61.2388 29 61.9553 29 62.6718 29C62.6878 29 62.6927 28.9966 62.6927 28.9797C62.6927 28.2936 62.6927 27.608 62.6927 26.9228C62.6927 26.9049 62.6873 26.9017 62.6708 26.9017C61.9449 26.9017 61.219 26.9017 60.4932 26.9017C60.4863 26.9003 60.4792 26.9014 60.473 26.9047L60.4888 26.9135C60.5228 26.9329 60.5595 26.9475 60.5901 26.9732C60.6298 27.0062 60.6372 27.0337 60.6232 27.0807C60.6199 27.0935 60.6125 27.1048 60.6021 27.1129C60.5916 27.121 60.5788 27.1254 60.5656 27.1255C60.5496 27.1268 60.5334 27.1265 60.5175 27.1246C60.5079 27.1235 60.4984 27.1228 60.4876 27.1219C60.4876 27.1241 60.4876 27.125 60.4876 27.1252C60.4897 27.1264 60.4918 27.1275 60.494 27.1285C60.5443 27.1479 60.5883 27.1809 60.6211 27.2236C60.624 27.227 60.6276 27.2298 60.6316 27.2318C60.6356 27.2337 60.6399 27.2349 60.6444 27.2351C60.6641 27.239 60.6641 27.2388 60.6524 27.2552C60.6492 27.2597 60.645 27.2652 60.6498 27.2694C60.6523 27.2715 60.6556 27.2725 60.659 27.2722C60.6623 27.2719 60.6654 27.2703 60.6675 27.2678C60.6737 27.2605 60.6787 27.2524 60.6824 27.2436C60.6834 27.2412 60.6849 27.2391 60.6869 27.2374C60.6889 27.2358 60.6912 27.2346 60.6937 27.2341C60.6963 27.2336 60.6989 27.2337 60.7014 27.2344C60.7038 27.2351 60.7061 27.2364 60.7079 27.2382C60.713 27.2416 60.7172 27.2462 60.7203 27.2514C60.7234 27.2567 60.7252 27.2626 60.7257 27.2687C60.7262 27.2748 60.7253 27.281 60.723 27.2867C60.7208 27.2923 60.7173 27.2975 60.7129 27.3016C60.7033 27.3106 60.6929 27.3186 60.683 27.3267C60.6798 27.3285 60.6769 27.331 60.6747 27.334C60.6725 27.337 60.6709 27.3404 60.6702 27.3441C60.6694 27.3477 60.6694 27.3515 60.6703 27.3551C60.6711 27.3588 60.6727 27.3622 60.675 27.3652C60.6798 27.3733 60.684 27.3819 60.6873 27.3908C60.7015 27.4356 60.7161 27.4815 60.7287 27.5273C60.7449 27.5869 60.757 27.6484 60.7436 27.7106C60.7372 27.7432 60.7438 27.7771 60.7621 27.8049C60.777 27.8301 60.7932 27.8541 60.8097 27.8782C60.8362 27.9126 60.8596 27.9493 60.8796 27.9879C60.8966 28.0259 60.883 28.0525 60.8432 28.0642C60.8387 28.0656 60.8341 28.0668 60.8295 28.0678C60.7764 28.0786 60.7801 28.1054 60.7986 28.1396L60.8023 28.1457C60.8155 28.1686 60.8129 28.1842 60.7919 28.2C60.78 28.2091 60.7673 28.2152 60.7521 28.2247ZM61.3636 30.252C61.4476 30.252 61.5317 30.252 61.6157 30.252C61.6288 30.252 61.6333 30.2474 61.6354 30.2357C61.6452 30.1835 61.6464 30.13 61.6386 30.0775C61.6213 29.9677 61.5666 29.8836 61.467 29.8312C61.3901 29.7913 61.3075 29.7854 61.2234 29.7981C61.1088 29.8154 61.0173 29.8703 60.9563 29.9699C60.8974 30.0668 60.877 30.1822 60.8991 30.2933C60.9215 30.4216 60.9886 30.5202 61.1059 30.5807C61.1976 30.628 61.2959 30.6374 61.3963 30.6234C61.4944 30.6113 61.5844 30.5628 61.6483 30.4875C61.6565 30.478 61.6591 30.4718 61.6468 30.4624C61.6128 30.4365 61.5799 30.4087 61.5466 30.3817C61.5221 30.3619 61.5221 30.3621 61.5004 30.3843C61.4467 30.4387 61.3799 30.4554 61.3065 30.4526C61.1949 30.4481 61.1159 30.378 61.0977 30.2682C61.0953 30.2544 61.0977 30.2512 61.1115 30.2514C61.1961 30.2524 61.2802 30.2524 61.3642 30.2524L61.3636 30.252ZM61.6944 31.5511C61.7772 31.5511 61.8601 31.5511 61.9429 31.5511C61.9587 31.5511 61.9629 31.5457 61.9653 31.5317C61.9747 31.48 61.9754 31.4272 61.9675 31.3752C61.9492 31.2643 61.8929 31.1794 61.7909 31.1286C61.7213 31.0959 61.6435 31.0849 61.5675 31.0968C61.4415 31.1124 61.3427 31.1714 61.2792 31.2831C61.2305 31.3701 61.2117 31.4707 61.2259 31.5694C61.2408 31.6888 61.2933 31.7891 61.3955 31.8569C61.5122 31.934 61.6407 31.9455 61.7742 31.9138C61.8556 31.8951 61.9284 31.8496 61.9809 31.7847C61.9853 31.7796 61.9921 31.7751 61.9826 31.7675C61.9408 31.7341 61.8992 31.7003 61.8577 31.6662C61.8521 31.6616 61.8492 31.6625 61.8451 31.6679C61.8003 31.7244 61.7407 31.7492 61.6711 31.7527C61.5408 31.7593 61.4474 31.6909 61.4277 31.5675C61.4256 31.5535 61.4277 31.5508 61.4418 31.5508C61.5257 31.5515 61.6103 31.5511 61.695 31.5511H61.6944ZM58.1287 31.5511C58.2108 31.5511 58.2927 31.5511 58.3754 31.5511C58.393 31.5511 58.4 31.5468 58.4025 31.5289C58.4104 31.4806 58.4113 31.4314 58.405 31.3829C58.3882 31.2691 58.3325 31.1813 58.2278 31.1293C58.1578 31.0961 58.0793 31.0848 58.0028 31.0969C57.8711 31.1138 57.7704 31.1775 57.7083 31.2966C57.6643 31.3828 57.6486 31.4806 57.6636 31.5762C57.6793 31.6931 57.7316 31.7911 57.8318 31.8564C57.9612 31.9407 58.1017 31.9489 58.2463 31.9031C58.3137 31.8813 58.3732 31.8403 58.4176 31.7851C58.422 31.7796 58.4289 31.775 58.4185 31.7668C58.3768 31.734 58.336 31.7002 58.2948 31.6665C58.2899 31.6625 58.2868 31.6613 58.2821 31.6674C58.2381 31.7241 58.1777 31.749 58.1084 31.7527C57.9861 31.7592 57.887 31.6994 57.8648 31.57C57.8623 31.556 57.8633 31.5505 57.8797 31.5508C57.9624 31.5517 58.0457 31.5511 58.1293 31.5511H58.1287ZM56.9644 30.0605C56.9644 30.2338 56.9644 30.4073 56.9644 30.5807C56.9644 30.5956 56.9686 30.5995 56.9832 30.5994C57.0428 30.5985 57.1037 30.5983 57.1638 30.5994C57.1796 30.5994 57.1835 30.5956 57.1835 30.5798C57.1835 30.4422 57.1835 30.3045 57.1835 30.1668C57.1835 30.1527 57.1872 30.1489 57.2012 30.1491C57.3056 30.1491 57.41 30.1491 57.5144 30.1491C57.5273 30.1491 57.5316 30.1465 57.5315 30.1327C57.5306 30.0778 57.5306 30.023 57.5315 29.9686C57.5315 29.9547 57.5282 29.9509 57.514 29.951C57.4103 29.951 57.3065 29.951 57.2029 29.951C57.188 29.951 57.1836 29.948 57.1838 29.9327C57.1847 29.8684 57.1848 29.8039 57.1838 29.7397C57.1838 29.7235 57.1881 29.72 57.2036 29.7201C57.3276 29.7201 57.4515 29.7201 57.5755 29.7201C57.5895 29.7201 57.5936 29.7165 57.5933 29.7024C57.5933 29.6481 57.5925 29.5939 57.5933 29.5396C57.5933 29.5247 57.5899 29.521 57.5749 29.521C57.3782 29.5216 57.1815 29.5216 56.9848 29.521C56.969 29.521 56.9654 29.5249 56.9654 29.5405C56.9651 29.7155 56.965 29.8876 56.965 30.0605H56.9644ZM58.7702 30.5281C58.7702 30.5498 58.7702 30.5677 58.7702 30.5855C58.7702 30.597 58.7737 30.5994 58.7851 30.5992C58.8404 30.5992 58.8959 30.5985 58.9514 30.5992C58.9646 30.5992 58.9682 30.5961 58.9681 30.5825C58.9681 30.4156 58.9703 30.2486 58.9669 30.0818C58.9645 29.9613 58.9072 29.8718 58.7948 29.8226C58.7312 29.7962 58.6619 29.7866 58.5936 29.7947C58.5411 29.7983 58.4899 29.8128 58.4433 29.8371C58.3967 29.8614 58.3555 29.8951 58.3226 29.9361C58.3152 29.945 58.3166 29.9491 58.3251 29.9555C58.3666 29.9867 58.4077 30.0182 58.4484 30.05C58.4575 30.0572 58.4611 30.0557 58.4674 30.0468C58.4834 30.0229 58.5046 30.0031 58.5296 29.9889C58.5545 29.9747 58.5824 29.9665 58.611 29.9649C58.7072 29.9567 58.7734 30.0148 58.7712 30.1055C58.7712 30.1148 58.7694 30.1188 58.7591 30.1204C58.7014 30.1294 58.644 30.1397 58.5864 30.1489C58.5308 30.1556 58.4767 30.1712 58.4262 30.1953C58.2936 30.2642 58.2542 30.426 58.3448 30.541C58.4068 30.6198 58.4939 30.6366 58.5877 30.6258C58.6588 30.6173 58.7241 30.5824 58.7708 30.5281H58.7702ZM59.3668 29.8806C59.3668 29.8621 59.3668 29.8485 59.3668 29.835C59.3668 29.8253 59.3635 29.823 59.3544 29.823C59.2959 29.823 59.2376 29.823 59.1791 29.823C59.1685 29.823 59.1666 29.8265 59.1666 29.8362C59.1666 30.086 59.1666 30.3359 59.1666 30.5856C59.1666 30.5973 59.1705 30.5992 59.1815 30.5992C59.2368 30.5992 59.2923 30.5983 59.3478 30.5992C59.3627 30.5992 59.3677 30.5958 59.3675 30.5797C59.3675 30.4223 59.3675 30.265 59.3675 30.1075C59.3664 30.0998 59.3675 30.092 59.3708 30.0849C59.4043 30.0299 59.4483 29.9892 59.5149 29.9781C59.5935 29.9653 59.6613 30.0032 59.6855 30.0746C59.6931 30.098 59.6967 30.1223 59.6964 30.1468C59.6964 30.2917 59.6964 30.4365 59.6964 30.5815C59.6964 30.5953 59.7 30.5994 59.7141 30.5992C59.7684 30.5983 59.8226 30.5983 59.8769 30.5992C59.891 30.5992 59.8945 30.5955 59.8945 30.5815C59.8945 30.4653 59.8945 30.3489 59.8945 30.2327C59.8963 30.1803 59.8951 30.1278 59.8909 30.0755C59.8821 30.001 59.8599 29.9331 59.8065 29.8791C59.7214 29.7929 59.6172 29.7784 59.5043 29.8045C59.4528 29.8175 59.4056 29.8437 59.3675 29.8806H59.3668ZM60.3689 31.5134C60.3685 31.5318 60.3696 31.5503 60.3722 31.5685C60.3895 31.6961 60.4481 31.7981 60.5585 31.8668C60.648 31.9222 60.7458 31.9377 60.8486 31.9265C60.9 31.9218 60.95 31.907 60.9957 31.8829C61.0414 31.8588 61.0819 31.8258 61.1148 31.786C61.123 31.7762 61.1218 31.772 61.112 31.7647C61.0671 31.7312 61.0227 31.6971 60.9786 31.6625C60.9686 31.6546 60.9645 31.6564 60.9569 31.6658C60.9227 31.7095 60.8727 31.7381 60.8176 31.7452C60.7626 31.7523 60.7069 31.7375 60.6627 31.704C60.5794 31.6412 60.5576 31.5533 60.5773 31.4553C60.595 31.3669 60.6493 31.3062 60.7379 31.2846C60.8265 31.2629 60.902 31.2865 60.9587 31.3591C60.9645 31.3667 60.9678 31.3685 60.9763 31.3618C61.021 31.3263 61.0675 31.291 61.1139 31.2567C61.1241 31.2492 61.1214 31.2446 61.1153 31.2374C61.0977 31.2157 61.0777 31.1961 61.0556 31.179C60.9243 31.0825 60.7803 31.0696 60.6304 31.1215C60.4693 31.1772 60.3697 31.3296 60.3697 31.5134H60.3689ZM60.4553 29.7925C60.4392 29.7938 60.4141 29.7947 60.3895 29.7984C60.2808 29.815 60.1893 29.8629 60.1231 29.9522C60.0444 30.0585 60.0236 30.1785 60.0499 30.3064C60.0604 30.3644 60.084 30.4192 60.1191 30.4666C60.1541 30.514 60.1996 30.5527 60.252 30.5797C60.3291 30.6198 60.4163 30.6364 60.5028 30.6276C60.5571 30.6247 60.6102 30.6106 60.6589 30.5862C60.7075 30.5619 60.7505 30.5278 60.7853 30.486C60.7932 30.4765 60.7934 30.4718 60.7831 30.4642C60.7384 30.4308 60.6936 30.3968 60.6498 30.3622C60.6395 30.3542 60.6348 30.3559 60.6277 30.3652C60.5932 30.4092 60.5426 30.4377 60.4871 30.4445C60.4316 30.4514 60.3756 30.4359 60.3315 30.4016C60.2505 30.3383 60.2293 30.2514 60.249 30.155C60.2667 30.0669 60.3204 30.0059 60.4095 29.9843C60.4985 29.9626 60.5735 29.9861 60.6301 30.0588C60.638 30.0688 60.6422 30.066 60.6498 30.0602C60.6945 30.026 60.7384 29.9917 60.7833 29.9585C60.7947 29.95 60.7935 29.945 60.7852 29.9352C60.7012 29.8363 60.5919 29.7948 60.456 29.7925H60.4553ZM59.495 31.6728C59.4916 31.6643 59.4892 31.6589 59.4873 31.6534C59.4249 31.4826 59.3627 31.3117 59.3007 31.1408C59.2995 31.1351 59.2962 31.1301 59.2915 31.1268C59.2867 31.1236 59.2809 31.1223 59.2752 31.1232C59.2175 31.1241 59.1596 31.1241 59.1019 31.1232C59.0859 31.1232 59.0847 31.1269 59.0898 31.1409C59.1805 31.3888 59.2706 31.6369 59.36 31.885C59.3642 31.8965 59.3699 31.8985 59.3806 31.8983C59.4552 31.8983 59.5308 31.8983 59.6058 31.8983C59.611 31.8992 59.6162 31.8981 59.6205 31.8951C59.6248 31.8922 59.6278 31.8877 59.6288 31.8827C59.6566 31.8042 59.6853 31.7261 59.7137 31.6479C59.775 31.4789 59.8364 31.3096 59.8979 31.14C59.9007 31.1323 59.908 31.123 59.8903 31.1232C59.8282 31.1232 59.7663 31.1232 59.7043 31.1232C59.7011 31.1227 59.6979 31.1236 59.6952 31.1254C59.6926 31.1273 59.6909 31.1302 59.6903 31.1333C59.6833 31.1536 59.6754 31.1736 59.6685 31.1937C59.6111 31.3526 59.5539 31.5111 59.495 31.6728ZM62.4112 31.0929C62.3724 31.0921 62.3337 31.0984 62.2971 31.1115C62.2047 31.1457 62.1446 31.2086 62.1349 31.3095C62.1253 31.4079 62.1647 31.4844 62.2491 31.5368C62.2851 31.5577 62.3228 31.5756 62.3617 31.5903C62.3954 31.6022 62.4277 31.6175 62.4582 31.6361C62.5121 31.6724 62.4898 31.7357 62.4472 31.7538C62.4154 31.7667 62.38 31.7676 62.3476 31.7565C62.3017 31.7407 62.2615 31.7116 62.2321 31.673C62.2233 31.6622 62.2191 31.6627 62.2097 31.6722C62.1745 31.7077 62.1387 31.7425 62.1022 31.7766C62.0928 31.7856 62.094 31.7915 62.1022 31.7991C62.2076 31.9107 62.3368 31.9507 62.4855 31.9185C62.6265 31.8879 62.7061 31.7598 62.6769 31.6187C62.6638 31.5554 62.6256 31.5099 62.5725 31.4755C62.5262 31.4485 62.4776 31.4258 62.4272 31.4078C62.3997 31.3981 62.3737 31.3844 62.3502 31.367C62.3418 31.3612 62.3352 31.3531 62.3311 31.3437C62.327 31.3343 62.3255 31.324 62.3268 31.3138C62.3282 31.3037 62.3323 31.2941 62.3387 31.2861C62.3451 31.2781 62.3536 31.272 62.3632 31.2685C62.3856 31.2582 62.4106 31.2551 62.4348 31.2595C62.4867 31.2683 62.5236 31.3005 62.5559 31.3392C62.5622 31.3466 62.5655 31.3484 62.5734 31.3406C62.6092 31.3057 62.6453 31.2711 62.6821 31.2371C62.6925 31.2276 62.6922 31.2222 62.683 31.2115C62.6485 31.1738 62.6065 31.1438 62.5597 31.1234C62.5129 31.103 62.4623 31.0926 62.4112 31.0929ZM57.2357 31.0929C57.1903 31.0925 57.1452 31.1013 57.1032 31.1187C56.922 31.1958 56.9243 31.4136 57.0322 31.5065C57.0762 31.5412 57.1255 31.5685 57.1783 31.5873C57.2137 31.5995 57.2478 31.6153 57.2801 31.6343C57.3027 31.6492 57.3182 31.6691 57.314 31.6983C57.3122 31.7123 57.3063 31.7255 57.2969 31.7361C57.2876 31.7468 57.2753 31.7544 57.2616 31.758C57.2371 31.7656 57.2109 31.7664 57.1859 31.7604C57.1314 31.748 57.0913 31.7141 57.0567 31.6728C57.0473 31.6618 57.0428 31.6634 57.0339 31.6728C56.9981 31.7086 56.9617 31.7439 56.9252 31.7789C56.918 31.7857 56.9174 31.7897 56.9252 31.7973C57.0313 31.9113 57.162 31.9538 57.3129 31.9186C57.4825 31.8789 57.5329 31.7259 57.4985 31.6042C57.4788 31.5344 57.4288 31.4911 57.3674 31.4585C57.3253 31.4361 57.2803 31.4203 57.2366 31.4016C57.213 31.3932 57.1912 31.3805 57.1721 31.3642C57.1649 31.3583 57.1593 31.3507 57.1559 31.342C57.1524 31.3333 57.1512 31.3239 57.1525 31.3147C57.1537 31.3054 57.1572 31.2966 57.1628 31.2892C57.1683 31.2817 57.1757 31.2757 57.1842 31.2719C57.2076 31.2595 57.2346 31.2555 57.2606 31.2605C57.3104 31.2688 57.347 31.2987 57.378 31.3362C57.3875 31.3475 57.3929 31.3485 57.4035 31.3377C57.4371 31.304 57.4715 31.271 57.5067 31.2389C57.5177 31.2289 57.5186 31.2231 57.5085 31.2122C57.4341 31.1324 57.3423 31.0956 57.2357 31.0928V31.0929ZM57.9367 29.8981C57.9367 29.8751 57.9367 29.8567 57.9367 29.8384C57.9367 29.8277 57.9352 29.8235 57.9225 29.8235C57.8658 29.8242 57.8093 29.8235 57.7526 29.8235C57.7412 29.8235 57.7377 29.8263 57.7377 29.8384C57.7377 30.087 57.7377 30.3356 57.7377 30.5841C57.7377 30.5967 57.7415 30.6001 57.7538 30.6C57.8087 30.6 57.8635 30.5991 57.9179 30.6C57.9328 30.6 57.9364 30.5959 57.9364 30.5813C57.9364 30.4389 57.9376 30.2964 57.9349 30.154C57.9341 30.1372 57.9374 30.1205 57.9445 30.1052C57.9516 30.09 57.9623 30.0767 57.9756 30.0664C57.9927 30.0515 58.0121 30.0395 58.033 30.0309C58.0846 30.0113 58.141 30.0082 58.1944 30.0221C58.2056 30.0247 58.2076 30.0221 58.2074 30.0119C58.2074 29.9522 58.2074 29.8925 58.2074 29.8329C58.2074 29.8212 58.2031 29.818 58.1925 29.8153C58.1399 29.803 58.0848 29.8078 58.0351 29.8288C57.9984 29.8453 57.9651 29.8688 57.9373 29.8979L57.9367 29.8981ZM58.76 31.1978C58.76 31.1757 58.759 31.1578 58.76 31.14C58.7612 31.1259 58.7557 31.1235 58.7429 31.1236C58.6881 31.1236 58.6332 31.1244 58.5788 31.1236C58.5657 31.1236 58.5619 31.1265 58.5619 31.1402C58.5619 31.3877 58.5619 31.6351 58.5619 31.8825C58.5619 31.8974 58.5664 31.8988 58.5789 31.8986C58.632 31.8979 58.6851 31.8976 58.7381 31.8986C58.7552 31.8986 58.7609 31.8958 58.7608 31.877C58.7597 31.7362 58.7618 31.5955 58.7591 31.4547C58.7582 31.4374 58.7616 31.42 58.769 31.4043C58.7764 31.3885 58.7876 31.3749 58.8016 31.3645C58.8108 31.3569 58.8204 31.35 58.8306 31.3438C58.8883 31.3095 58.9499 31.3081 59.0139 31.3207C59.0268 31.3233 59.0315 31.3226 59.0312 31.3075C59.0303 31.2497 59.0303 31.1918 59.0312 31.1341C59.0312 31.1206 59.0258 31.1169 59.0145 31.1144C58.9606 31.1024 58.9043 31.1082 58.854 31.1309C58.8191 31.1474 58.7875 31.17 58.7606 31.1976L58.76 31.1978ZM60.0078 31.5117C60.0078 31.6356 60.0078 31.7596 60.0078 31.8836C60.0078 31.8944 60.0096 31.8985 60.0227 31.8985C60.0799 31.8977 60.1371 31.8977 60.1943 31.8985C60.2068 31.8985 60.2092 31.8941 60.2092 31.8836C60.2092 31.6359 60.2092 31.388 60.2092 31.14C60.2092 31.1251 60.2044 31.1236 60.1919 31.1238C60.137 31.1238 60.0822 31.1245 60.0278 31.1238C60.0129 31.1238 60.009 31.1271 60.009 31.1423C60.0087 31.2649 60.0084 31.3882 60.0084 31.5116L60.0078 31.5117ZM59.9792 30.8729C59.9791 30.9066 59.9924 30.9389 60.0162 30.9628C60.0399 30.9867 60.0721 31.0002 60.1058 31.0004C60.1232 31.0017 60.1406 30.9993 60.1571 30.9936C60.1735 30.9878 60.1886 30.9787 60.2013 30.9669C60.2141 30.955 60.2243 30.9407 60.2313 30.9247C60.2383 30.9088 60.242 30.8915 60.242 30.8741C60.2421 30.8567 60.2386 30.8395 60.2317 30.8235C60.2248 30.8075 60.2147 30.793 60.202 30.7811C60.1893 30.7692 60.1743 30.76 60.1579 30.7541C60.1415 30.7482 60.1241 30.7457 60.1067 30.7469C60.0733 30.747 60.0412 30.7603 60.0174 30.7838C59.9937 30.8074 59.9802 30.8393 59.9798 30.8728L59.9792 30.8729ZM60.459 27.6826C60.4671 27.6861 60.4729 27.6826 60.4788 27.6802C60.5264 27.6676 60.5741 27.6596 60.6231 27.6724C60.639 27.6766 60.6407 27.6805 60.6301 27.6934C60.6215 27.7034 60.611 27.7115 60.5992 27.7173C60.5796 27.7289 60.561 27.7421 60.5436 27.7568C60.5322 27.7656 60.5275 27.7807 60.5087 27.7773C60.504 27.7764 60.4969 27.7773 60.4955 27.7835C60.4942 27.7898 60.5014 27.7901 60.5042 27.7935C60.5206 27.8126 60.5503 27.7992 60.5673 27.8195C60.5701 27.8229 60.5777 27.8231 60.5776 27.8311C60.5779 27.8348 60.5767 27.8384 60.5743 27.8412C60.5719 27.844 60.5685 27.8457 60.5649 27.846C60.5556 27.8477 60.5462 27.8484 60.5351 27.8499C60.5543 27.8562 60.5747 27.8582 60.5947 27.8556C60.6314 27.8536 60.635 27.8492 60.6341 27.8128C60.6333 27.8087 60.6333 27.8045 60.6341 27.8004C60.6389 27.7855 60.629 27.7688 60.6442 27.7556C60.6513 27.7504 60.6592 27.7463 60.6677 27.7437C60.6757 27.7407 60.6826 27.7346 60.6739 27.7267C60.6653 27.7188 60.6692 27.7137 60.6765 27.7078C60.6897 27.6984 60.6994 27.6848 60.7038 27.6691C60.706 27.659 60.7054 27.6484 60.6951 27.6447C60.6725 27.634 60.648 27.6281 60.6231 27.6274C60.5765 27.6308 60.531 27.6427 60.4888 27.6626C60.4779 27.6673 60.468 27.674 60.4596 27.6824L60.459 27.6826Z" fill="#FEFEFE"/> -<path d="M58.8052 28.6631L58.7855 28.6752C58.7687 28.6855 58.7505 28.6932 58.7469 28.7174C58.7425 28.7302 58.736 28.7422 58.7277 28.7529C58.7596 28.7579 58.7623 28.7192 58.7885 28.7181C58.7886 28.7246 58.7869 28.7309 58.7836 28.7365C58.7804 28.742 58.7757 28.7466 58.77 28.7497C58.7443 28.7624 58.7242 28.7843 58.7141 28.8112C58.7067 28.8272 58.6974 28.8422 58.6864 28.8559C58.6956 28.86 58.6995 28.8539 58.7037 28.8497C58.734 28.8178 58.7672 28.7888 58.8029 28.7629C58.8457 28.7321 58.8825 28.6919 58.9383 28.6811C59.005 28.6683 59.0706 28.6501 59.1393 28.6543C59.1699 28.6568 59.2005 28.6501 59.2272 28.635C59.2431 28.6257 59.2612 28.6295 59.2767 28.6221C59.2999 28.6099 59.322 28.5957 59.3428 28.5797C59.3608 28.5661 59.3801 28.5541 59.4004 28.5439C59.4108 28.5391 59.4208 28.532 59.4338 28.5388C59.4408 28.5426 59.4455 28.5353 59.4505 28.5312C59.4755 28.5101 59.5 28.4881 59.5335 28.481C59.5352 28.4804 59.537 28.4799 59.5388 28.4796C59.5498 28.4796 59.5649 28.4714 59.5705 28.4859C59.5752 28.4978 59.5586 28.4992 59.5523 28.5059C59.5461 28.5126 59.5388 28.5168 59.5329 28.5238C59.5546 28.5238 59.5658 28.5036 59.5847 28.498C59.5856 28.5012 59.5853 28.5047 59.5839 28.5078C59.5826 28.5109 59.5802 28.5134 59.5772 28.515C59.5149 28.5622 59.4587 28.617 59.41 28.6782C59.3461 28.7577 59.2634 28.809 59.1726 28.8506C59.1019 28.8829 59.0316 28.9168 58.9617 28.951C58.9397 28.9616 58.9186 28.9739 58.8986 28.9879C58.886 28.9966 58.8708 29.001 58.8555 29.0003C58.2326 29.0003 57.6097 29.0003 56.9866 29.0003C56.969 29.0003 56.9641 28.9967 56.9641 28.9781C56.9641 28.2936 56.9641 27.6091 56.9641 26.9247C56.9641 26.9074 56.9672 26.9019 56.9862 26.9019C57.8719 26.9019 58.7578 26.9019 59.6438 26.9019H59.6624C59.6223 26.9201 59.5825 26.9365 59.5431 26.954C59.4596 26.991 59.4077 27.0561 59.3744 27.1388C59.3728 27.1444 59.3694 27.1494 59.3647 27.1529C59.3189 27.1828 59.2888 27.2263 59.2621 27.2723C59.2414 27.3083 59.2206 27.3444 59.2006 27.381C59.1741 27.4298 59.1783 27.4811 59.19 27.5324C59.2059 27.6014 59.2142 27.672 59.2348 27.74C59.2369 27.7505 59.2378 27.7613 59.2376 27.7721C59.2411 27.7954 59.2487 27.8179 59.26 27.8386C59.2673 27.8505 59.2731 27.8633 59.2772 27.8768C59.2794 27.8841 59.2838 27.8907 59.2897 27.8957C59.3153 27.9224 59.3384 27.9513 59.3587 27.9822C59.3635 27.9904 59.3737 27.9995 59.366 28.0094C59.3584 28.0192 59.3473 28.0137 59.3373 28.0123C59.3089 28.0072 59.2828 27.9934 59.2627 27.9727C59.2461 27.9578 59.2302 27.9416 59.213 27.9252C59.2078 27.9346 59.2139 27.939 59.2178 27.9433C59.2297 27.9566 59.2423 27.9694 59.2539 27.983C59.2575 27.9861 59.2601 27.9904 59.2611 27.9952C59.262 27.9999 59.2615 28.0048 59.2594 28.0092C59.2537 28.0191 59.2436 28.0183 59.2337 28.0165H59.2303C59.2035 28.012 59.2014 28.0137 59.1987 28.0422C59.1804 28.0351 59.1609 28.0314 59.1413 28.0311C59.1358 28.031 59.1305 28.0295 59.1258 28.0267C59.1211 28.0239 59.1172 28.0199 59.1146 28.0152C59.1107 28.0082 59.1052 28.0022 59.0985 27.9978C59.0918 27.9934 59.0842 27.9906 59.0762 27.9897C58.9816 27.968 58.8851 27.9554 58.7881 27.9522C58.7493 27.9495 58.7104 27.9567 58.6751 27.9733C58.6399 27.9898 58.6095 28.015 58.5867 28.0466C58.5826 28.0522 58.5745 28.0581 58.58 28.0648C58.5855 28.0716 58.5934 28.0675 58.5999 28.0638C58.6825 28.0159 58.7756 28.0041 58.8668 27.9864C58.8809 27.984 58.8952 27.9833 58.9095 27.9843C58.9096 27.9854 58.9096 27.9865 58.9095 27.9876C58.8729 27.9926 58.8369 28.0012 58.8021 28.0135C58.7614 28.0268 58.7193 28.0347 58.6777 28.0449C58.6608 28.0488 58.6445 28.0549 58.6292 28.0631C58.6655 28.0622 58.7017 28.0634 58.7378 28.0666C58.834 28.0781 58.9284 28.0956 59.014 28.1446C59.026 28.1513 59.037 28.1594 59.047 28.1688C59.0579 28.1798 59.0715 28.1878 59.0864 28.1919C59.1013 28.1961 59.117 28.1964 59.132 28.1927C59.1595 28.188 59.1867 28.1818 59.2135 28.1739C59.2499 28.1644 59.2836 28.1465 59.3119 28.1217C59.3147 28.1188 59.3176 28.1153 59.3225 28.1182C59.3274 28.1212 59.3253 28.1257 59.3241 28.1293C59.3158 28.157 59.3128 28.1864 59.2951 28.2112C59.2865 28.2231 59.2928 28.2344 59.31 28.241C59.2964 28.2477 59.281 28.2474 59.27 28.2568C59.2667 28.2596 59.2551 28.2616 59.2655 28.2701C59.267 28.2711 59.2672 28.2738 59.2655 28.274C59.2496 28.2754 59.2506 28.2878 59.2473 28.299C59.2454 28.3059 59.2324 28.3045 59.2281 28.3139C59.2346 28.3218 59.2442 28.3154 59.254 28.3188C59.221 28.3359 59.1868 28.3508 59.1519 28.3636C59.1455 28.3655 59.1395 28.3676 59.1414 28.3751C59.1434 28.3825 59.1505 28.3764 59.1553 28.3784C59.1543 28.3846 59.148 28.3851 59.144 28.3875C59.1044 28.4095 59.0646 28.4309 59.0254 28.4532C59.0123 28.4607 58.9956 28.4649 58.9906 28.4819C58.9891 28.486 58.9847 28.485 58.9812 28.4849C58.9663 28.4849 58.9663 28.4981 58.9663 28.5048C58.9681 28.5162 58.9784 28.5092 58.9853 28.508C58.9956 28.5063 59.0057 28.4978 59.0194 28.5093C58.9896 28.5129 58.9715 28.5329 58.9502 28.5503C59.0163 28.5423 59.0824 28.5448 59.1456 28.5268C59.227 28.5036 59.2948 28.4558 59.3555 28.3989C59.3583 28.3959 59.3613 28.3929 59.3644 28.3901C59.3707 28.3852 59.3769 28.3721 59.3826 28.3763C59.391 28.3828 59.3826 28.3936 59.3784 28.4018C59.3647 28.4324 59.3419 28.4582 59.3131 28.4755C59.2945 28.4872 59.2767 28.5005 59.2593 28.5135C59.2187 28.5433 59.1716 28.552 59.125 28.5609C59.0525 28.5746 58.9787 28.58 58.9073 28.6C58.8645 28.6109 58.8241 28.6295 58.7879 28.6547C58.7773 28.6625 58.7624 28.6588 58.7536 28.6697C58.7509 28.6731 58.7439 28.675 58.7474 28.6805C58.7508 28.6861 58.7562 28.6835 58.7605 28.6805C58.7732 28.6718 58.787 28.6646 58.8014 28.6591L58.8052 28.6631ZM58.6492 28.4068C58.6555 28.4095 58.6622 28.4109 58.669 28.4109C58.6758 28.4109 58.6825 28.4095 58.6887 28.4068C58.7163 28.3973 58.7433 28.3845 58.7739 28.3873C58.7769 28.3871 58.7798 28.3865 58.7826 28.3854C58.8161 28.3779 58.85 28.3705 58.8834 28.3627C58.9391 28.3495 58.9931 28.3301 59.0445 28.3048C58.9445 28.2291 58.8269 28.2025 58.7111 28.1688C58.7143 28.1655 58.7207 28.1676 58.7207 28.1627C58.7207 28.1578 58.7153 28.1569 58.7119 28.156C58.7014 28.1533 58.6908 28.1516 58.6805 28.1493C58.6771 28.1493 58.6704 28.1493 58.6713 28.1461C58.6768 28.1288 58.6609 28.1327 58.6549 28.1312C58.6325 28.1248 58.6094 28.1206 58.5845 28.1153C58.5966 28.109 58.6064 28.1033 58.6103 28.0917C58.6124 28.0857 58.6167 28.079 58.6103 28.0738C58.6039 28.0686 58.5993 28.0738 58.594 28.0765C58.5645 28.0939 58.5404 28.1191 58.5244 28.1494C58.5169 28.1624 58.5011 28.1792 58.5084 28.1901C58.5157 28.201 58.5383 28.1991 58.5553 28.1989C58.5663 28.197 58.5776 28.1974 58.5885 28.2001C58.5825 28.2058 58.5748 28.2095 58.5666 28.2107C58.5554 28.212 58.5444 28.2148 58.5339 28.2191C58.5242 28.2247 58.5181 28.2311 58.5312 28.2402C58.5238 28.2452 58.5145 28.2461 58.5107 28.2552C58.5142 28.2579 58.5184 28.2598 58.5228 28.2606C58.5272 28.2614 58.5317 28.2612 58.536 28.2599C58.5415 28.2578 58.5476 28.2578 58.5531 28.2598C58.5586 28.2619 58.5631 28.2659 58.5658 28.2711C58.5301 28.286 58.5221 28.3281 58.4913 28.3476C58.4906 28.3482 58.49 28.3489 58.4897 28.3498C58.4893 28.3506 58.4891 28.3515 58.4892 28.3524C58.4907 28.3625 58.4837 28.3673 58.4771 28.3722C58.4543 28.3904 58.4324 28.4106 58.4085 28.4267C58.3846 28.4428 58.381 28.4781 58.3548 28.4938C58.3538 28.4943 58.353 28.4949 58.3523 28.4957C58.3516 28.4965 58.3511 28.4974 58.3508 28.4984C58.3504 28.4994 58.3503 28.5005 58.3504 28.5015C58.3505 28.5026 58.3509 28.5036 58.3514 28.5045C58.3548 28.5095 58.359 28.5057 58.3626 28.5045C58.3708 28.5012 58.3789 28.4975 58.3867 28.4932C58.4261 28.4684 58.4671 28.4462 58.5095 28.4268C58.5573 28.4065 58.6031 28.3849 58.6567 28.396C58.6576 28.3964 58.6584 28.397 58.6591 28.3977C58.6586 28.4037 58.6504 28.4003 58.6492 28.4068ZM58.7034 27.8903C58.6844 27.882 58.6638 27.8782 58.6431 27.8792C58.6224 27.8802 58.6022 27.8859 58.584 27.8959C58.51 27.9383 58.4432 27.9923 58.3863 28.0559C58.3496 28.0976 58.3072 28.1338 58.2604 28.1636C58.2511 28.1688 58.2437 28.1768 58.2391 28.1864C58.2076 28.2479 58.1709 28.3066 58.1293 28.3618C58.1262 28.366 58.1197 28.3693 58.122 28.3767C58.1288 28.3776 58.1308 28.3718 58.1339 28.3682C58.1739 28.3235 58.2141 28.2801 58.2576 28.2392C58.3063 28.1928 58.3594 28.151 58.416 28.1145C58.4221 28.1105 58.4268 28.1088 58.4322 28.1145C58.4376 28.1202 58.4286 28.1221 58.4274 28.1261C58.4262 28.1302 58.4239 28.1311 58.4228 28.1338C58.4218 28.1364 58.4149 28.144 58.4195 28.1478C58.4242 28.1515 58.4313 28.1461 58.4356 28.1414C58.4376 28.1391 58.4385 28.1358 58.4407 28.1339C58.4489 28.1264 58.4474 28.1115 58.4547 28.1068C58.4826 28.0883 58.4971 28.0605 58.5116 28.0322C58.5228 28.0087 58.5387 27.9877 58.5582 27.9704C58.587 27.9464 58.6192 27.9269 58.6468 27.8999C58.6497 27.9057 58.6491 27.9158 58.6568 27.9115C58.6713 27.9039 58.6893 27.9042 58.7034 27.8903ZM58.6658 28.6186C58.6394 28.6061 58.6154 28.6143 58.593 28.6089C58.5829 28.6069 58.5724 28.6082 58.5632 28.6127C58.5463 28.6202 58.5285 28.6256 58.5102 28.6288C58.458 28.6372 58.4108 28.6646 58.3775 28.7056C58.3734 28.7102 58.3496 28.7151 58.3724 28.7278C58.3724 28.7278 58.3708 28.7321 58.3705 28.7344C58.3683 28.7498 58.3622 28.7644 58.3529 28.7769C58.3414 28.7927 58.3293 28.8082 58.3169 28.8236C58.3126 28.8291 58.3102 28.8345 58.3169 28.8385C58.3236 28.8425 58.3241 28.8351 58.3271 28.8321C58.3454 28.8142 58.3582 28.7873 58.3906 28.7911C58.3927 28.7911 58.3954 28.7878 58.3975 28.7857C58.4195 28.7605 58.4472 28.741 58.4783 28.7287C58.5456 28.7043 58.5978 28.6519 58.6658 28.6186ZM58.8096 28.4441C58.7897 28.4292 58.7706 28.4244 58.7499 28.4392C58.7436 28.4424 58.7369 28.4447 58.7299 28.4459C58.7242 28.4475 58.719 28.4507 58.715 28.455C58.7125 28.4582 58.7086 28.4619 58.7113 28.4659C58.714 28.4699 58.7177 28.4681 58.721 28.4677C58.7442 28.4641 58.7675 28.4607 58.7906 28.4564C58.7983 28.4549 58.8051 28.4505 58.8096 28.4441ZM58.6343 28.7116C58.6343 28.7093 58.6316 28.7083 58.6285 28.7078C58.625 28.7074 58.6214 28.7079 58.6181 28.7092C58.6148 28.7105 58.6118 28.7126 58.6095 28.7153C58.5966 28.7281 58.5832 28.7405 58.5702 28.7535C58.5669 28.7568 58.5587 28.7596 58.5638 28.7654C58.5648 28.7665 58.5661 28.7673 58.5675 28.7679C58.5689 28.7685 58.5704 28.7688 58.5719 28.7688C58.5734 28.7688 58.5749 28.7685 58.5763 28.7679C58.5777 28.7673 58.579 28.7665 58.58 28.7654C58.5895 28.7565 58.6007 28.7497 58.613 28.7454C58.6273 28.739 58.6288 28.725 58.6343 28.7116Z" fill="#273375"/> -<path d="M60.7511 28.2247C60.7661 28.2152 60.779 28.2085 60.7902 28.2C60.8113 28.1842 60.8138 28.1687 60.8007 28.1457L60.7969 28.1396C60.7784 28.1054 60.7747 28.0786 60.8278 28.0678C60.8324 28.0668 60.8371 28.0656 60.8415 28.0642C60.8814 28.0525 60.8949 28.0259 60.8779 27.9879C60.8579 27.9493 60.8345 27.9127 60.808 27.8783C60.7916 27.8541 60.7752 27.8301 60.7604 27.8049C60.7428 27.7769 60.7368 27.7431 60.7437 27.7108C60.757 27.6486 60.7449 27.5874 60.7288 27.5274C60.7162 27.4817 60.7016 27.4363 60.6875 27.391C60.6841 27.3821 60.68 27.3735 60.6751 27.3653C60.6728 27.3624 60.6712 27.3589 60.6704 27.3553C60.6696 27.3517 60.6695 27.3479 60.6703 27.3442C60.6711 27.3406 60.6726 27.3371 60.6748 27.3341C60.677 27.3311 60.6799 27.3286 60.6831 27.3268C60.6934 27.3188 60.7039 27.3107 60.713 27.3018C60.7174 27.2976 60.7209 27.2925 60.7232 27.2868C60.7254 27.2811 60.7263 27.275 60.7258 27.2689C60.7253 27.2628 60.7235 27.2569 60.7204 27.2516C60.7173 27.2463 60.7131 27.2418 60.708 27.2384C60.7062 27.2366 60.7039 27.2353 60.7015 27.2345C60.699 27.2338 60.6964 27.2337 60.6939 27.2343C60.6913 27.2348 60.689 27.2359 60.687 27.2376C60.685 27.2392 60.6835 27.2414 60.6825 27.2438C60.6788 27.2525 60.6738 27.2607 60.6676 27.2679C60.6655 27.2705 60.6624 27.2721 60.6591 27.2724C60.6558 27.2727 60.6525 27.2717 60.6499 27.2696C60.6451 27.2654 60.6499 27.2599 60.6526 27.2554C60.6642 27.239 60.6642 27.2391 60.6445 27.2353C60.64 27.235 60.6357 27.2339 60.6317 27.2319C60.6277 27.2299 60.6241 27.2272 60.6212 27.2238C60.5884 27.181 60.5444 27.1481 60.4942 27.1286C60.4919 27.1277 60.4898 27.1266 60.4877 27.1253C60.4877 27.1253 60.4877 27.1243 60.4877 27.1221C60.4977 27.1229 60.5073 27.1237 60.5176 27.1247C60.5336 27.1267 60.5497 27.127 60.5658 27.1256C60.5789 27.1256 60.5918 27.1212 60.6022 27.1131C60.6126 27.105 60.62 27.0937 60.6233 27.0809C60.6373 27.0339 60.6299 27.0063 60.5902 26.9734C60.5596 26.9478 60.5229 26.9332 60.4889 26.9137L60.4731 26.9049C60.4793 26.9016 60.4864 26.9005 60.4933 26.9019C61.2191 26.9019 61.945 26.9019 62.6709 26.9019C62.6874 26.9019 62.6928 26.905 62.6928 26.9229C62.6928 27.609 62.6928 28.2947 62.6928 28.9799C62.6928 28.9967 62.6879 29.0002 62.6719 29.0002C61.9549 28.9998 61.2384 28.9996 60.5225 28.9996C60.512 28.9996 60.5017 28.9968 60.4927 28.9915C60.4118 28.9468 60.3247 28.916 60.2378 28.8855C60.2329 28.8833 60.228 28.8816 60.2229 28.8803C60.1899 28.8752 60.1794 28.8516 60.1772 28.823C60.1665 28.6907 60.2114 28.5811 60.3144 28.4969C60.3389 28.4794 60.3691 28.4717 60.399 28.4755C60.4551 28.4787 60.5095 28.4931 60.5649 28.5005C60.5798 28.5025 60.5936 28.5077 60.608 28.5105C60.6273 28.5147 60.6473 28.5147 60.6666 28.5106C60.6859 28.5065 60.7042 28.4983 60.7201 28.4866C60.7383 28.4713 60.7511 28.4506 60.7566 28.4275C60.7621 28.4044 60.76 28.3801 60.7507 28.3582C60.7469 28.3521 60.7455 28.3447 60.7469 28.3376C60.7482 28.3304 60.7522 28.3241 60.758 28.3197C60.7668 28.312 60.7762 28.3048 60.7853 28.2968C60.7903 28.2925 60.7937 28.2866 60.7947 28.2802C60.7958 28.2737 60.7945 28.267 60.7911 28.2614C60.7882 28.2524 60.783 28.2443 60.776 28.2378C60.769 28.2314 60.7604 28.2269 60.7511 28.2247Z" fill="#E20613"/> -<path d="M61.3633 30.2524C61.2794 30.2524 61.1952 30.2524 61.1113 30.2524C61.0964 30.2524 61.095 30.2554 61.0974 30.2693C61.1153 30.3788 61.1943 30.4492 61.3062 30.4537C61.3799 30.4565 61.4467 30.4398 61.5001 30.3853C61.5219 30.3631 61.5219 30.363 61.5463 30.3828C61.5796 30.4098 61.6126 30.4375 61.6466 30.4635C61.6588 30.4729 61.6563 30.4784 61.6481 30.4886C61.5841 30.5639 61.4941 30.6124 61.396 30.6244C61.2956 30.6385 61.1973 30.6291 61.1056 30.5818C60.9882 30.5212 60.9212 30.4226 60.8989 30.2944C60.8767 30.1832 60.8971 30.0678 60.956 29.971C61.017 29.8714 61.1086 29.8165 61.2231 29.7992C61.3073 29.7865 61.3899 29.7923 61.4667 29.8323C61.5663 29.8842 61.6211 29.9688 61.6384 30.0785C61.6461 30.1311 61.645 30.1846 61.6351 30.2368C61.633 30.2484 61.6285 30.2532 61.6154 30.253C61.5314 30.2516 61.4473 30.2524 61.3633 30.2524ZM61.2774 30.0926C61.3304 30.0926 61.3835 30.0926 61.4364 30.0926C61.4467 30.0926 61.4495 30.0903 61.4475 30.0794C61.4419 30.0468 61.4248 30.0174 61.3991 29.9965C61.3589 29.9637 61.3114 29.9565 61.2613 29.9594C61.2272 29.961 61.1944 29.973 61.1673 29.994C61.1403 30.0149 61.1204 30.0436 61.1104 30.0763C61.1066 30.0881 61.1074 30.093 61.1219 30.0927C61.1738 30.0917 61.2255 30.0921 61.2774 30.0921V30.0926Z" fill="#273375"/> -<path d="M61.6942 31.5511C61.6095 31.5511 61.5249 31.5511 61.4406 31.5511C61.4269 31.5511 61.4245 31.5538 61.4266 31.5678C61.4458 31.6912 61.5396 31.7596 61.67 31.7531C61.7397 31.7495 61.7998 31.7247 61.8439 31.6682C61.8481 31.6628 61.8509 31.6619 61.8566 31.6665C61.8981 31.7005 61.9397 31.7343 61.9814 31.7678C61.991 31.7754 61.9841 31.7799 61.9798 31.785C61.9273 31.8499 61.8545 31.8954 61.7731 31.9141C61.6396 31.9458 61.511 31.9343 61.3944 31.8572C61.2918 31.7887 61.2385 31.6894 61.2243 31.5694C61.2102 31.4707 61.2289 31.3701 61.2776 31.2831C61.3411 31.1714 61.4399 31.1124 61.5659 31.0968C61.6423 31.0849 61.7205 31.0961 61.7904 31.1292C61.8925 31.18 61.9486 31.2649 61.967 31.3758C61.9749 31.4278 61.9741 31.4806 61.9647 31.5323C61.9623 31.5463 61.9582 31.5518 61.9424 31.5517C61.8599 31.5501 61.7769 31.5511 61.6942 31.5511ZM61.4361 31.3931C61.5474 31.3931 61.6575 31.3931 61.7676 31.3931C61.7792 31.3931 61.7781 31.3878 61.7767 31.3799C61.7735 31.3598 61.7658 31.3407 61.7543 31.324C61.7427 31.3073 61.7276 31.2933 61.71 31.2832C61.6754 31.264 61.636 31.2553 61.5966 31.2582C61.5584 31.2588 61.5216 31.2726 61.4924 31.2971C61.4632 31.3217 61.4433 31.3556 61.4361 31.3931Z" fill="#E20714"/> -<path d="M58.1284 31.5511C58.0448 31.5511 57.9615 31.5511 57.8779 31.5511C57.8614 31.5511 57.8603 31.5563 57.863 31.5703C57.8851 31.6992 57.9841 31.7589 58.1063 31.7528C58.1759 31.749 58.2361 31.7241 58.2801 31.6674C58.2847 31.6613 58.2878 31.6625 58.2927 31.6665C58.3339 31.7003 58.3748 31.734 58.4164 31.7668C58.4268 31.775 58.42 31.7796 58.4155 31.7851C58.3711 31.8403 58.3116 31.8813 58.2443 31.9031C58.0996 31.9489 57.9591 31.9407 57.8298 31.8564C57.7295 31.7911 57.6772 31.6924 57.6615 31.5762C57.6466 31.4806 57.6622 31.3828 57.7063 31.2967C57.7683 31.1773 57.869 31.1138 58.0007 31.0969C58.0777 31.0845 58.1567 31.0958 58.2271 31.1293C58.3315 31.1818 58.3874 31.2695 58.4043 31.3829C58.4105 31.4314 58.4097 31.4806 58.4018 31.5289C58.3992 31.5468 58.3922 31.5514 58.3746 31.5511C58.2929 31.5501 58.2107 31.5511 58.1284 31.5511ZM58.0438 31.3932C58.0961 31.3932 58.1482 31.3932 58.2009 31.3932C58.2125 31.3932 58.2149 31.3905 58.2128 31.379C58.2075 31.3457 58.1898 31.3157 58.1634 31.2949C58.1263 31.2673 58.0803 31.2542 58.0342 31.258C57.9985 31.2584 57.9639 31.2702 57.9353 31.2916C57.9068 31.3131 57.8858 31.3431 57.8756 31.3773C57.8718 31.3891 57.8721 31.3936 57.8867 31.3933C57.9391 31.3927 57.9914 31.3932 58.0438 31.3932Z" fill="#E20714"/> -<path d="M56.9641 30.0605C56.9641 29.8876 56.9641 29.7148 56.9641 29.5419C56.9641 29.5262 56.9676 29.5223 56.9834 29.5223C57.1801 29.5229 57.3768 29.5229 57.5735 29.5223C57.5884 29.5223 57.5921 29.5262 57.592 29.541C57.5909 29.5953 57.5911 29.6494 57.592 29.7037C57.592 29.7179 57.5881 29.7216 57.5741 29.7215C57.4501 29.7215 57.3262 29.7215 57.2023 29.7215C57.1873 29.7215 57.1821 29.7249 57.1824 29.741C57.1835 29.8053 57.1833 29.8697 57.1824 29.934C57.1824 29.9489 57.1872 29.9525 57.2015 29.9524C57.3059 29.9524 57.409 29.9524 57.5126 29.9524C57.5276 29.9524 57.5304 29.9561 57.5301 29.9699C57.5293 30.0248 57.5293 30.0796 57.5301 30.134C57.5301 30.1479 57.5259 30.1504 57.5131 30.1504C57.4087 30.1504 57.3043 30.1504 57.1999 30.1504C57.1858 30.1504 57.182 30.154 57.1821 30.1682C57.1821 30.3058 57.1821 30.4435 57.1821 30.5812C57.1821 30.597 57.1782 30.601 57.1624 30.6007C57.1028 30.5997 57.0421 30.5998 56.9818 30.6007C56.9669 30.6007 56.963 30.5971 56.963 30.5821C56.9642 30.4073 56.9641 30.2338 56.9641 30.0605Z" fill="#273375"/> -<path d="M58.7698 30.5281C58.7231 30.5823 58.6577 30.617 58.5865 30.6253C58.4926 30.6362 58.4056 30.6194 58.3436 30.5406C58.253 30.4256 58.2924 30.2638 58.425 30.1949C58.4755 30.1708 58.5296 30.1551 58.5852 30.1485C58.6428 30.1392 58.7002 30.1289 58.7579 30.12C58.7682 30.1184 58.7698 30.1143 58.77 30.1051C58.7722 30.0144 58.706 29.9559 58.6098 29.9644C58.5811 29.966 58.5533 29.9743 58.5283 29.9885C58.5034 30.0027 58.4821 30.0225 58.4662 30.0463C58.4599 30.0553 58.4563 30.0568 58.4472 30.0496C58.4064 30.0177 58.3653 29.9862 58.3239 29.955C58.3154 29.9486 58.314 29.9446 58.3213 29.9356C58.3543 29.8947 58.3954 29.861 58.4421 29.8366C58.4887 29.8123 58.5399 29.7979 58.5923 29.7943C58.6607 29.7862 58.73 29.7958 58.7935 29.8221C58.9065 29.8714 58.9633 29.9609 58.9657 30.0814C58.9691 30.2481 58.9657 30.4152 58.9669 30.5821C58.9669 30.5956 58.9634 30.5989 58.9502 30.5988C58.8947 30.5979 58.8392 30.5988 58.7839 30.5988C58.7731 30.5988 58.7689 30.5965 58.7689 30.5851C58.7706 30.5678 58.7698 30.5499 58.7698 30.5281ZM58.7698 30.3133C58.7698 30.3027 58.7691 30.2918 58.7698 30.2812C58.7712 30.2684 58.767 30.2651 58.7542 30.2674C58.7121 30.2753 58.6699 30.2823 58.6277 30.2891C58.594 30.2924 58.561 30.3014 58.5303 30.3157C58.516 30.3227 58.5042 30.3339 58.4967 30.3479C58.4891 30.3619 58.4861 30.3779 58.4881 30.3937C58.4895 30.4102 58.4965 30.4257 58.5078 30.4377C58.5192 30.4498 58.5343 30.4576 58.5507 30.4599C58.5818 30.4662 58.6139 30.4648 58.6443 30.4561C58.6747 30.4473 58.7026 30.4313 58.7255 30.4095C58.7545 30.3841 58.7806 30.3569 58.7698 30.3133Z" fill="#273375"/> -<path d="M59.3667 29.8806C59.4046 29.8436 59.4515 29.8172 59.5028 29.8041C59.6157 29.7786 59.72 29.7931 59.805 29.8787C59.8584 29.9327 59.8806 30.0013 59.8894 30.0751C59.8937 30.1274 59.8949 30.1799 59.893 30.2323C59.893 30.3485 59.893 30.4648 59.893 30.581C59.893 30.595 59.8896 30.5989 59.8754 30.5988C59.8211 30.5979 59.767 30.5979 59.7127 30.5988C59.6978 30.5988 59.6949 30.5949 59.6949 30.581C59.6949 30.436 59.6949 30.2912 59.6949 30.1464C59.6953 30.1219 59.6916 30.0975 59.6841 30.0742C59.6599 30.0028 59.592 29.9649 59.5134 29.9777C59.4469 29.9887 59.4029 30.0295 59.3693 30.0845C59.3661 30.0915 59.3649 30.0994 59.3661 30.107C59.3661 30.2645 59.3661 30.4219 59.3661 30.5792C59.3661 30.5953 59.3619 30.5991 59.3464 30.5988C59.2909 30.5977 59.2354 30.5988 59.1801 30.5988C59.1695 30.5988 59.1652 30.5968 59.1652 30.5852C59.1652 30.3354 59.1652 30.0856 59.1652 29.8357C59.1652 29.826 59.1671 29.8224 59.1777 29.8226C59.2362 29.8226 59.2945 29.8226 59.3529 29.8226C59.362 29.8226 59.3658 29.8248 59.3653 29.8345C59.3661 29.8485 59.3667 29.8621 59.3667 29.8806Z" fill="#273375"/> -<path d="M60.3687 31.5134C60.3687 31.3296 60.4683 31.1775 60.6298 31.1216C60.7797 31.0696 60.9238 31.0825 61.0551 31.179C61.0771 31.1961 61.0971 31.2157 61.1147 31.2374C61.1208 31.2446 61.1235 31.2492 61.1134 31.2567C61.067 31.291 61.0212 31.3263 60.9757 31.3618C60.9672 31.3685 60.9639 31.3668 60.9581 31.3591C60.901 31.2861 60.8255 31.2621 60.7374 31.2846C60.6492 31.3071 60.5945 31.3669 60.5767 31.4554C60.5571 31.5533 60.5788 31.6412 60.6622 31.704C60.7064 31.7375 60.7621 31.7524 60.8171 31.7452C60.8721 31.7381 60.9222 31.7095 60.9563 31.6658C60.9639 31.6564 60.9681 31.6546 60.9781 31.6625C61.0222 31.6971 61.0666 31.7312 61.1114 31.7647C61.1213 31.772 61.1225 31.7762 61.1143 31.786C61.0814 31.8258 61.0409 31.8588 60.9952 31.8829C60.9495 31.907 60.8995 31.9218 60.848 31.9265C60.7453 31.938 60.647 31.9225 60.5579 31.8669C60.4476 31.7983 60.389 31.6962 60.3717 31.5686C60.3691 31.5503 60.3681 31.5318 60.3687 31.5134Z" fill="#E20714"/> -<path d="M60.4551 29.7925C60.591 29.7948 60.7003 29.8363 60.7843 29.9353C60.7926 29.9452 60.7938 29.9503 60.7823 29.9586C60.7376 29.9919 60.6928 30.0262 60.6488 30.0603C60.6412 30.0662 60.6371 30.069 60.6292 30.059C60.5722 29.9859 60.497 29.9622 60.4086 29.9844C60.3201 30.0066 60.2658 30.067 60.2481 30.1552C60.2284 30.2515 60.2496 30.3385 60.3305 30.4017C60.3747 30.4361 60.4307 30.4516 60.4863 30.4447C60.5418 30.4379 60.5924 30.4093 60.6269 30.3652C60.6344 30.356 60.6387 30.3542 60.649 30.3622C60.6928 30.3968 60.7374 30.4308 60.7823 30.4642C60.7926 30.4718 60.7925 30.4765 60.7846 30.486C60.7497 30.5278 60.7067 30.5619 60.6581 30.5862C60.6095 30.6106 60.5564 30.6247 60.5021 30.6276C60.4156 30.6364 60.3284 30.6198 60.2512 30.5797C60.1988 30.5527 60.1534 30.514 60.1183 30.4666C60.0833 30.4192 60.0596 30.3644 60.0491 30.3064C60.0229 30.1785 60.0436 30.0585 60.1223 29.9522C60.1886 29.8627 60.28 29.815 60.3887 29.7984C60.4139 29.7947 60.439 29.7938 60.4551 29.7925Z" fill="#273375"/> -<path d="M59.4942 31.6728C59.5528 31.5111 59.6103 31.3526 59.6677 31.1939C59.675 31.1737 59.6826 31.1538 59.6895 31.1335C59.69 31.1303 59.6918 31.1275 59.6944 31.1256C59.697 31.1237 59.7003 31.1229 59.7035 31.1233C59.7655 31.1233 59.8274 31.1233 59.8895 31.1233C59.9072 31.1233 59.8999 31.1324 59.8971 31.1402C59.8356 31.3092 59.7742 31.4785 59.7129 31.6481C59.6845 31.7262 59.6557 31.8044 59.628 31.8828C59.627 31.8879 59.624 31.8924 59.6197 31.8953C59.6154 31.8982 59.6101 31.8994 59.605 31.8985C59.5305 31.8985 59.4548 31.8985 59.3798 31.8985C59.3691 31.8985 59.3634 31.8967 59.3592 31.8852C59.2697 31.6366 59.1797 31.3886 59.089 31.1411C59.0839 31.1271 59.0851 31.1232 59.1011 31.1233C59.1588 31.1242 59.2166 31.1242 59.2744 31.1233C59.2801 31.1224 59.2859 31.1237 59.2907 31.127C59.2954 31.1303 59.2987 31.1353 59.2999 31.1409C59.3616 31.312 59.4238 31.4828 59.4865 31.6536C59.4884 31.6589 59.4908 31.6643 59.4942 31.6728Z" fill="#E20714"/> -<path d="M62.4103 31.0929C62.4614 31.0927 62.512 31.1032 62.5587 31.1238C62.6055 31.1443 62.6475 31.1745 62.6819 31.2122C62.6911 31.2224 62.6914 31.2283 62.681 31.2379C62.6442 31.2719 62.6081 31.3065 62.5723 31.3414C62.5644 31.3492 62.5611 31.3474 62.5548 31.3399C62.5225 31.3013 62.4856 31.2691 62.4337 31.2603C62.4095 31.2559 62.3845 31.259 62.3621 31.2692C62.3525 31.2727 62.344 31.2788 62.3376 31.2868C62.3312 31.2948 62.3271 31.3044 62.3257 31.3146C62.3244 31.3247 62.3259 31.3351 62.33 31.3444C62.3341 31.3538 62.3407 31.3619 62.3491 31.3678C62.3726 31.3851 62.3986 31.3989 62.4261 31.4085C62.4765 31.4266 62.5251 31.4492 62.5714 31.4762C62.6245 31.5107 62.6627 31.5562 62.6758 31.6194C62.7056 31.7605 62.6254 31.8886 62.4844 31.9192C62.3353 31.9514 62.2066 31.9115 62.1011 31.7999C62.093 31.7915 62.0919 31.7863 62.1011 31.7774C62.1375 31.7431 62.1733 31.7083 62.2086 31.673C62.218 31.6634 62.2222 31.663 62.231 31.6737C62.2604 31.7124 62.3006 31.7414 62.3465 31.7572C62.3789 31.7684 62.4143 31.7674 62.4461 31.7545C62.4887 31.7365 62.511 31.6731 62.4571 31.6369C62.4266 31.6183 62.3943 31.6029 62.3606 31.5911C62.3217 31.5764 62.284 31.5585 62.248 31.5375C62.163 31.4852 62.1242 31.4087 62.1338 31.3102C62.1435 31.2094 62.2036 31.1462 62.296 31.1123C62.3326 31.0989 62.3713 31.0923 62.4103 31.0929Z" fill="#E20714"/> -<path d="M57.2349 31.0928C57.3415 31.0956 57.4332 31.1321 57.5065 31.2121C57.5166 31.223 57.5157 31.2288 57.5047 31.2388C57.4695 31.2708 57.4351 31.3037 57.4015 31.3375C57.3904 31.3484 57.3855 31.3474 57.376 31.336C57.3449 31.2986 57.3084 31.2686 57.2586 31.2604C57.2326 31.2553 57.2056 31.2593 57.1822 31.2717C57.1737 31.2756 57.1663 31.2815 57.1608 31.289C57.1552 31.2965 57.1516 31.3053 57.1504 31.3145C57.1492 31.3238 57.1504 31.3332 57.1538 31.3419C57.1573 31.3505 57.1629 31.3582 57.1701 31.3641C57.1891 31.3804 57.211 31.3931 57.2346 31.4015C57.2783 31.4201 57.324 31.436 57.3654 31.4583C57.4268 31.491 57.4768 31.5342 57.4965 31.6041C57.5309 31.7258 57.4805 31.8788 57.3109 31.9185C57.1604 31.9537 57.0298 31.9112 56.9231 31.7972C56.9161 31.7896 56.9167 31.7856 56.9231 31.7787C56.9597 31.7438 56.9961 31.7085 57.0319 31.6727C57.0408 31.6637 57.0453 31.6621 57.0547 31.6727C57.0893 31.714 57.1293 31.7472 57.1838 31.7602C57.2088 31.7663 57.235 31.7655 57.2596 31.7578C57.2733 31.7542 57.2856 31.7466 57.2949 31.736C57.3042 31.7254 57.3102 31.7122 57.312 31.6982C57.3161 31.6683 57.3006 31.6492 57.2781 31.6342C57.2458 31.6151 57.2117 31.5994 57.1762 31.5872C57.1235 31.5684 57.0742 31.5411 57.0302 31.5064C56.9216 31.4136 56.92 31.1958 57.1012 31.1186C57.1436 31.101 57.189 31.0922 57.2349 31.0928Z" fill="#E20714"/> -<path d="M57.9364 29.8979C57.9647 29.8685 57.9985 29.8449 58.0359 29.8286C58.0856 29.8075 58.1407 29.8028 58.1933 29.815C58.2037 29.8175 58.2082 29.821 58.2082 29.8326C58.2082 29.8922 58.2082 29.9519 58.2082 30.0116C58.2082 30.022 58.2064 30.0244 58.1952 30.0219C58.1418 30.0079 58.0854 30.011 58.0338 30.0307C58.0129 30.0392 57.9935 30.0512 57.9764 30.0662C57.9631 30.0764 57.9524 30.0897 57.9453 30.1049C57.9382 30.1202 57.9349 30.1369 57.9357 30.1537C57.9384 30.2961 57.9366 30.4386 57.9372 30.581C57.9372 30.5959 57.9338 30.6 57.9187 30.5997C57.8638 30.5986 57.8091 30.5989 57.7546 30.5997C57.7423 30.5997 57.7385 30.5964 57.7385 30.5839C57.7385 30.3353 57.7385 30.0867 57.7385 29.8381C57.7385 29.8262 57.742 29.8232 57.7534 29.8232C57.8101 29.8232 57.8666 29.8232 57.9233 29.8232C57.936 29.8232 57.9382 29.8278 57.9375 29.8381C57.936 29.8566 57.9364 29.8749 57.9364 29.8979Z" fill="#273375"/> -<path d="M58.7596 31.1976C58.7867 31.17 58.8185 31.1474 58.8536 31.1309C58.9039 31.1082 58.9602 31.1024 59.014 31.1144C59.0254 31.1169 59.0309 31.1207 59.0308 31.1341C59.0297 31.1919 59.0297 31.2497 59.0308 31.3075C59.0308 31.3225 59.0264 31.3234 59.0135 31.3207C58.9499 31.3081 58.8879 31.3095 58.8301 31.3438C58.82 31.35 58.8103 31.3569 58.8012 31.3645C58.7872 31.3749 58.776 31.3885 58.7686 31.4043C58.7612 31.42 58.7578 31.4374 58.7587 31.4548C58.7614 31.5956 58.7587 31.7362 58.7603 31.877C58.7603 31.8958 58.7548 31.8989 58.7377 31.8986C58.6847 31.8974 58.6316 31.8977 58.5785 31.8986C58.566 31.8986 58.5615 31.8967 58.5615 31.8825C58.5615 31.6351 58.5615 31.3877 58.5615 31.1402C58.5615 31.1265 58.5653 31.1233 58.5784 31.1236C58.6333 31.1244 58.6882 31.1236 58.7424 31.1236C58.7553 31.1236 58.7608 31.1259 58.7596 31.14C58.7586 31.1576 58.7596 31.1755 58.7596 31.1976Z" fill="#E20613"/> -<path d="M60.0075 31.5116C60.0075 31.3882 60.0075 31.2649 60.0075 31.1417C60.0075 31.1268 60.0116 31.1229 60.0263 31.1232C60.0811 31.1241 60.1358 31.1239 60.1904 31.1232C60.2029 31.1232 60.2079 31.1253 60.2077 31.1394C60.2077 31.3873 60.2077 31.6352 60.2077 31.883C60.2077 31.894 60.2058 31.8979 60.1928 31.8979C60.1357 31.8971 60.0784 31.8971 60.0213 31.8979C60.0089 31.8979 60.0063 31.8937 60.0063 31.883C60.0073 31.7594 60.0077 31.6356 60.0075 31.5116Z" fill="#E20714"/> -<path d="M59.9788 30.8728C59.979 30.8391 59.9925 30.8069 60.0164 30.7832C60.0403 30.7595 60.0726 30.7462 60.1063 30.7463C60.1237 30.7452 60.1411 30.7476 60.1575 30.7535C60.1739 30.7594 60.1889 30.7686 60.2016 30.7805C60.2143 30.7925 60.2244 30.8069 60.2313 30.8229C60.2381 30.8389 60.2417 30.8561 60.2416 30.8735C60.2415 30.891 60.2379 30.9082 60.2309 30.9241C60.2239 30.9401 60.2137 30.9544 60.2009 30.9663C60.1882 30.9781 60.1731 30.9872 60.1566 30.993C60.1402 30.9988 60.1228 31.0011 60.1054 30.9998C60.0718 30.9996 60.0396 30.9862 60.0159 30.9624C59.9922 30.9386 59.9788 30.9064 59.9788 30.8728Z" fill="#E20714"/> -<path d="M60.4586 27.6824C60.4673 27.6742 60.4774 27.6677 60.4884 27.6632C60.5307 27.6433 60.5762 27.6314 60.6227 27.628C60.6477 27.6285 60.6723 27.6343 60.695 27.6448C60.7053 27.6486 60.7059 27.6597 60.7037 27.6693C60.6993 27.6849 60.6897 27.6986 60.6764 27.7079C60.6691 27.7139 60.6641 27.7179 60.6738 27.7269C60.6835 27.7358 60.6756 27.7409 60.6676 27.7439C60.6591 27.7465 60.6512 27.7505 60.6442 27.7558C60.6292 27.7685 60.6388 27.7856 60.634 27.8005C60.6333 27.8046 60.6333 27.8088 60.634 27.8129C60.6349 27.8493 60.6313 27.8538 60.5946 27.8557C60.5746 27.8583 60.5542 27.8564 60.535 27.8501C60.5462 27.8486 60.5556 27.8478 60.5648 27.8462C60.5685 27.8459 60.5719 27.8441 60.5742 27.8413C60.5766 27.8385 60.5778 27.8349 60.5775 27.8313C60.5775 27.8232 60.57 27.8231 60.5672 27.8196C60.5502 27.7993 60.5205 27.8128 60.5041 27.7937C60.5013 27.7902 60.494 27.7891 60.4955 27.7837C60.497 27.7783 60.504 27.7765 60.5086 27.7774C60.5274 27.7808 60.5321 27.7658 60.5435 27.757C60.5608 27.7421 60.5793 27.7286 60.5988 27.7169C60.6106 27.7111 60.6211 27.703 60.6297 27.693C60.6403 27.68 60.6386 27.6761 60.6227 27.672C60.5738 27.6591 60.526 27.6672 60.4785 27.6797C60.4725 27.6817 60.4667 27.686 60.4586 27.6824Z" fill="#9E9E9D"/> -<path d="M58.9093 27.9876C58.9095 27.9865 58.9095 27.9854 58.9093 27.9843C58.9262 27.9814 58.9435 27.9814 58.9605 27.9843L58.9093 27.9876Z" fill="#9E9E9D"/> -<path d="M58.8152 28.658L58.8053 28.6643L58.801 28.6602L58.8125 28.6549L58.8152 28.658Z" fill="#273375"/> -<path d="M58.811 28.655C58.8147 28.6534 58.8182 28.6507 58.822 28.655L58.8141 28.6588L58.811 28.655Z" fill="#273375"/> -<path d="M58.8219 28.6556L58.8198 28.6524L58.8228 28.6512C58.8222 28.6525 58.8217 28.6538 58.8213 28.6552L58.8219 28.6556Z" fill="#273375"/> -<path d="M58.6488 28.4068C58.65 28.4003 58.6582 28.4037 58.6591 28.3977C58.6584 28.397 58.6576 28.3964 58.6567 28.3959C58.6031 28.3849 58.5573 28.4065 58.5095 28.4268C58.4666 28.4458 58.425 28.4677 58.3851 28.4923C58.3772 28.4966 58.3692 28.5003 58.3609 28.5036C58.3573 28.5051 58.3532 28.5089 58.3497 28.5036C58.3492 28.5027 58.3489 28.5017 58.3488 28.5006C58.3487 28.4996 58.3488 28.4985 58.3491 28.4975C58.3494 28.4965 58.35 28.4956 58.3507 28.4948C58.3514 28.494 58.3522 28.4934 58.3532 28.4929C58.3794 28.478 58.3815 28.4429 58.4068 28.4258C58.4322 28.4086 58.4526 28.3895 58.4755 28.3713C58.482 28.3661 58.489 28.3616 58.4875 28.3515C58.4875 28.3506 58.4877 28.3497 58.488 28.3489C58.4884 28.348 58.4889 28.3473 58.4896 28.3467C58.5209 28.3272 58.5289 28.2851 58.5642 28.2702C58.5615 28.265 58.5569 28.261 58.5514 28.2589C58.5459 28.2568 58.5398 28.2569 58.5344 28.259C58.5301 28.2603 58.5255 28.2605 58.5211 28.2597C58.5167 28.2589 58.5126 28.257 58.509 28.2543C58.5129 28.2453 58.5221 28.2444 58.5296 28.2393C58.5165 28.2302 58.5226 28.2244 58.5323 28.2182C58.5427 28.2139 58.5537 28.2111 58.5649 28.2098C58.5732 28.2086 58.5808 28.2049 58.5869 28.1992C58.576 28.1965 58.5647 28.1961 58.5536 28.198C58.5371 28.198 58.5151 28.2029 58.5068 28.1892C58.4984 28.1755 58.5153 28.1615 58.5227 28.1485C58.5391 28.1184 58.5634 28.0934 58.593 28.0763C58.5982 28.0733 58.604 28.0692 58.6092 28.0736C58.6145 28.0781 58.611 28.0856 58.6092 28.0915C58.6054 28.1032 58.5955 28.1088 58.5834 28.1151C58.6083 28.1205 58.6315 28.1246 58.6538 28.1311C58.6598 28.1327 58.6758 28.1288 58.6702 28.146C58.6694 28.1485 58.6761 28.1484 58.6795 28.1491C58.6898 28.1515 58.7004 28.1531 58.7108 28.1558C58.7142 28.1567 58.7198 28.1572 58.7196 28.1625C58.7195 28.1679 58.7132 28.1654 58.7101 28.1686C58.8258 28.2023 58.9435 28.2283 59.0434 28.3047C58.9921 28.3299 58.938 28.3493 58.8823 28.3625C58.8489 28.3709 58.8151 28.3775 58.7815 28.3852C58.7788 28.3863 58.7758 28.387 58.7729 28.3871C58.743 28.3843 58.7153 28.3971 58.6877 28.4067C58.6816 28.4093 58.6749 28.4107 58.6682 28.4107C58.6616 28.4107 58.6549 28.4094 58.6488 28.4068Z" fill="#FEFEFE"/> -<path d="M58.703 27.8903C58.6889 27.9042 58.6709 27.9039 58.6564 27.912C58.6487 27.9163 58.6493 27.9061 58.6464 27.9003C58.6188 27.9273 58.5868 27.9469 58.5578 27.9709C58.538 27.9881 58.5219 28.0092 58.5104 28.0328C58.4955 28.0608 58.4815 28.0886 58.4536 28.1073C58.4463 28.1121 58.4478 28.127 58.4396 28.1345C58.4373 28.1364 58.4364 28.1397 58.4345 28.1419C58.4302 28.1467 58.4251 28.1534 58.4184 28.1484C58.4117 28.1433 58.42 28.139 58.4217 28.1343C58.4233 28.1297 58.4255 28.1296 58.4263 28.1267C58.427 28.1239 58.4373 28.1221 58.4311 28.1151C58.4248 28.1081 58.4209 28.1106 58.4148 28.1151C58.3582 28.1513 58.3052 28.1928 58.2564 28.2389C58.213 28.2798 58.1727 28.3238 58.1328 28.3679C58.1296 28.3715 58.1277 28.3773 58.1208 28.3764C58.1186 28.3688 58.125 28.3655 58.1281 28.3615C58.1697 28.3063 58.2065 28.2476 58.2379 28.1861C58.2425 28.1765 58.25 28.1685 58.2592 28.1633C58.3061 28.1335 58.3485 28.0973 58.3851 28.0556C58.4423 27.9921 58.5094 27.9381 58.5836 27.8958C58.6018 27.8858 58.622 27.8801 58.6427 27.8792C58.6633 27.8782 58.684 27.882 58.703 27.8903Z" fill="#FEFEFE"/> -<path d="M58.6653 28.6186C58.5973 28.6519 58.5451 28.7043 58.4777 28.729C58.4466 28.7413 58.4189 28.7608 58.3968 28.786C58.3947 28.7881 58.3921 28.7915 58.39 28.7914C58.3576 28.7879 58.3452 28.8145 58.3264 28.8324C58.3235 28.8354 58.3218 28.8425 58.3163 28.8388C58.3108 28.8351 58.3124 28.8291 58.3163 28.8239C58.3287 28.809 58.3408 28.793 58.3522 28.7772C58.3616 28.7647 58.3677 28.7501 58.3698 28.7347C58.3698 28.7324 58.3721 28.7284 58.3718 28.7281C58.349 28.7154 58.3728 28.7105 58.3768 28.7059C58.4102 28.6648 58.4574 28.6375 58.5096 28.6291C58.5278 28.6259 58.5456 28.6205 58.5625 28.613C58.5718 28.6085 58.5823 28.6072 58.5924 28.6092C58.6149 28.6143 58.6389 28.6061 58.6653 28.6186Z" fill="#FEFEFE"/> -<path d="M58.8091 28.4441C58.8068 28.4473 58.8039 28.4501 58.8006 28.4522C58.7973 28.4543 58.7936 28.4557 58.7897 28.4564C58.7666 28.4607 58.7433 28.4641 58.72 28.4677C58.7167 28.4677 58.7117 28.4677 58.7103 28.4659C58.709 28.4641 58.7115 28.4581 58.7141 28.455C58.7181 28.4507 58.7233 28.4475 58.729 28.4459C58.7359 28.4447 58.7427 28.4424 58.749 28.4392C58.7701 28.4244 58.7892 28.4297 58.8091 28.4441Z" fill="#FEFEFE"/> -<path d="M58.6345 28.7116C58.629 28.7251 58.6274 28.7393 58.6129 28.7455C58.6006 28.7498 58.5892 28.7567 58.5797 28.7656C58.5786 28.7667 58.5773 28.7676 58.5759 28.7681C58.5745 28.7687 58.573 28.769 58.5715 28.769C58.57 28.769 58.5684 28.7687 58.567 28.7681C58.5656 28.7676 58.5644 28.7667 58.5633 28.7656C58.5582 28.7598 58.5664 28.7569 58.5697 28.7536C58.5828 28.7405 58.5964 28.728 58.6095 28.7151C58.6118 28.7123 58.6147 28.7102 58.6181 28.7089C58.6214 28.7076 58.625 28.7071 58.6286 28.7075C58.6317 28.7083 58.6343 28.7093 58.6345 28.7116Z" fill="#FEFEFE"/> -<path d="M61.2773 30.0921C61.2254 30.0921 61.1737 30.0921 61.1217 30.0921C61.1068 30.0921 61.1068 30.0875 61.1103 30.0757C61.1203 30.043 61.1402 30.0143 61.1672 29.9934C61.1943 29.9724 61.2271 29.9603 61.2612 29.9588C61.3113 29.9559 61.3587 29.9631 61.399 29.9959C61.4246 30.0168 61.4418 30.0462 61.4473 30.0788C61.4494 30.0897 61.4466 30.0921 61.4363 30.092C61.3834 30.092 61.3303 30.0921 61.2773 30.0921Z" fill="#FEFEFE"/> -<path d="M61.4362 31.3932C61.4435 31.3558 61.4634 31.322 61.4926 31.2976C61.5218 31.2732 61.5586 31.2595 61.5966 31.2589C61.6361 31.256 61.6755 31.2647 61.71 31.284C61.7276 31.2941 61.7428 31.308 61.7543 31.3247C61.7658 31.3415 61.7735 31.3606 61.7767 31.3806C61.7782 31.3885 61.7792 31.394 61.7676 31.3939C61.6575 31.393 61.5474 31.3932 61.4362 31.3932Z" fill="#FEFEFE"/> -<path d="M58.0437 31.3932C57.9914 31.3932 57.9393 31.3932 57.8867 31.3932C57.8718 31.3932 57.8718 31.389 57.8755 31.3772C57.8858 31.343 57.9067 31.313 57.9352 31.2915C57.9638 31.27 57.9985 31.2582 58.0342 31.2579C58.0803 31.2541 58.1262 31.2672 58.1633 31.2947C58.1898 31.3156 58.2074 31.3456 58.2127 31.3788C58.2148 31.3903 58.2127 31.3938 58.2008 31.393C58.1484 31.3929 58.0961 31.3932 58.0437 31.3932Z" fill="#FEFEFE"/> -<path d="M58.7698 30.3133C58.7806 30.3571 58.7549 30.3841 58.7251 30.4095C58.7021 30.4313 58.6743 30.4473 58.6439 30.4561C58.6134 30.4648 58.5813 30.4662 58.5503 30.4599C58.5339 30.4576 58.5188 30.4498 58.5074 30.4377C58.496 30.4257 58.4891 30.4102 58.4877 30.3937C58.4857 30.3779 58.4887 30.3619 58.4962 30.3479C58.5038 30.3339 58.5156 30.3227 58.5299 30.3157C58.5606 30.3014 58.5935 30.2924 58.6273 30.2891C58.6695 30.2818 58.7117 30.2753 58.7537 30.2674C58.7666 30.2651 58.7707 30.2684 58.7694 30.2812C58.7691 30.2918 58.7698 30.3027 58.7698 30.3133Z" fill="#FEFEFE"/> -<path d="M98.6191 18C99.1376 18.2055 99.6983 18.1632 100.233 18.2813C101.74 18.6155 103.172 19.1273 104.492 19.9406C104.726 20.0846 104.79 20.1902 104.636 20.4553C103.707 22.0556 102.791 23.6636 101.888 25.2794C101.726 25.5674 101.627 25.6116 101.331 25.4099C99.9576 24.4776 98.4577 24.0205 96.7956 24.4123C94.7571 24.8924 93.4704 26.6899 93.6269 28.7784C93.769 30.6585 95.4619 32.3033 97.4284 32.4896C98.1922 32.5745 98.9653 32.504 99.7013 32.2826C100.437 32.0612 101.121 31.6933 101.711 31.201C101.944 31.0089 102.022 31.0483 102.156 31.2874C103.06 32.9015 103.967 34.5137 104.896 36.1144C105.06 36.4024 105.038 36.533 104.772 36.7203C103.304 37.7573 101.649 38.3402 99.8981 38.5937C96.9857 39.0152 94.1867 38.6618 91.6623 37.016C89.0611 35.3212 87.6525 32.8775 87.2857 29.825C86.9496 27.026 87.4777 24.4171 89.1773 22.1155C90.9959 19.6516 93.5059 18.4196 96.5085 18.096C96.5709 18.0893 96.6343 18.0807 96.7006 18.072C97.244 18.0432 97.7923 18.1047 98.3329 18H98.6191ZM97.9095 35.2051C94.1147 35.1561 91.5164 33.0062 90.9959 29.3756C90.5571 26.3029 92.008 23.1256 95.3083 22.0002C97.0756 21.3791 99.0103 21.4345 100.739 22.1558C101.219 22.3478 101.211 21.9782 101.326 21.7775C101.505 21.4644 101.155 21.5048 101.027 21.452C100.155 21.0922 99.2244 20.8925 98.2811 20.8624C92.9202 20.6703 89.1677 25.1084 90.3853 30.2974C91.6422 35.6516 97.6262 37.0343 101.441 35.1772C101.641 35.0812 101.779 34.9919 101.594 34.7605C101.453 34.5857 101.438 34.2727 101.047 34.4897C100.08 35.0265 99.0128 35.2127 97.9095 35.2051Z" fill="#A30248"/> -<path d="M15 30.8524C15.2429 30.0919 15.2698 29.295 15.3735 28.5133C15.5358 27.2891 15.5128 27.2756 16.7457 27.2651C17.026 27.2651 17.1653 27.1931 17.173 26.9069C17.173 26.7792 17.1989 26.6525 17.2133 26.5228C17.317 25.5626 17.316 25.5377 16.3203 25.5626C15.9036 25.5751 15.8047 25.4512 15.8652 25.0575C16.0361 23.9539 16.1903 22.8478 16.328 21.7391C16.3587 21.4923 16.4442 21.3943 16.6833 21.427C16.6992 21.4289 16.7153 21.4289 16.7313 21.427C17.1201 21.3857 17.6252 21.6046 17.8691 21.3204C18.0813 21.0736 18.0227 20.5935 18.0794 20.2162C18.1466 19.7581 18.2205 19.3011 18.2714 18.8411C18.2983 18.602 18.3972 18.5156 18.6392 18.5175C19.8231 18.5271 21.0071 18.532 22.192 18.5175C22.5175 18.5175 22.5137 18.6693 22.48 18.9016C22.3735 19.6112 22.2688 20.3227 22.1766 21.0352C22.1584 21.1735 21.9846 21.4491 22.312 21.4116C22.5905 21.379 23.0379 21.6882 23.1311 21.1447C23.2591 20.4053 23.3628 19.6624 23.4422 18.916C23.4748 18.6116 23.5766 18.5108 23.8848 18.5156C25.0198 18.531 26.1554 18.531 27.2917 18.5156C27.6028 18.5156 27.718 18.5809 27.6585 18.916C27.5308 19.6381 27.4415 20.3669 27.3234 21.0909C27.2849 21.3262 27.307 21.4539 27.5961 21.4327C27.9148 21.4097 28.2365 21.4327 28.5563 21.4251C28.7656 21.4183 28.8328 21.4827 28.8011 21.7026C28.634 22.8548 28.4727 24.0071 28.3268 25.1651C28.2855 25.4858 28.1443 25.5645 27.8303 25.5597C26.7357 25.5463 26.7357 25.5597 26.5533 26.6361C26.4486 27.2497 26.4486 27.2497 27.1006 27.2497C27.9821 27.2497 27.9878 27.2497 27.8784 28.1139C27.7535 29.0952 27.6076 30.0737 27.4943 31.056C27.4635 31.3104 27.3877 31.4151 27.1102 31.4141C26.7146 31.4141 26.1951 31.2346 25.9579 31.4871C25.7208 31.7397 25.7909 32.2342 25.7294 32.625C25.6583 33.082 25.5873 33.5391 25.5278 33.9981C25.5009 34.2084 25.4145 34.2909 25.1888 34.2861C24.0058 34.2756 22.8219 34.2717 21.636 34.2861C21.322 34.2861 21.3028 34.1536 21.3393 33.9097C21.4469 33.1838 21.5314 32.4541 21.6533 31.7301C21.6956 31.4804 21.66 31.4007 21.3912 31.3959C20.7421 31.3825 20.7382 31.3681 20.6374 32.0239C20.5414 32.6394 20.4454 33.2549 20.3753 33.8723C20.3417 34.144 20.2792 34.2957 19.9441 34.289C18.7919 34.265 17.6396 34.2669 16.4874 34.289C16.159 34.2948 16.1138 34.1728 16.1561 33.8963C16.2694 33.1713 16.3481 32.4396 16.4797 31.7195C16.5335 31.4314 16.4394 31.3921 16.2003 31.4017C15.8008 31.417 15.4014 31.4151 15.0019 31.4199L15 30.8524ZM27.0372 23.2572C26.5456 23.2572 26.0655 23.2293 25.5911 23.2658C25.1869 23.2975 25.1523 23.1371 25.207 22.7982C25.3386 22.0118 25.4452 21.2196 25.5393 20.4274C25.5566 20.2891 25.738 20.0376 25.3703 20.0078C25.064 19.9819 25.0044 20.123 24.9708 20.3919C24.8652 21.2311 24.7135 22.0646 24.6136 22.9038C24.5791 23.1976 24.4696 23.2687 24.1931 23.2658C22.9621 23.2536 21.7304 23.2536 20.4982 23.2658C20.2207 23.2658 20.1323 23.1919 20.1746 22.9124C20.3026 22.0758 20.4188 21.2381 20.5231 20.3996C20.5404 20.2632 20.7046 20.0347 20.3714 20.0155C20.1458 20.002 19.9873 20.0155 19.9576 20.3141C19.8615 21.1543 19.7098 21.9878 19.6033 22.827C19.562 23.1506 19.4544 23.3071 19.0943 23.2696C18.7103 23.2331 18.3262 23.2783 17.9421 23.2562C17.654 23.2389 17.6031 23.381 17.5801 23.624C17.5503 23.9264 17.7481 23.8698 17.9133 23.8707C18.2974 23.8707 18.6814 23.8918 19.0655 23.8659C19.3814 23.8438 19.4496 23.9619 19.4045 24.25C19.199 25.7038 19.0031 27.1588 18.8168 28.6151C18.7823 28.883 18.6642 28.9531 18.4116 28.9406C18.0131 28.9214 17.6099 28.9637 17.2133 28.9253C16.8436 28.8907 16.8014 29.0933 16.7802 29.3689C16.7524 29.7386 17.0318 29.5782 17.1778 29.5869C17.5616 29.6066 17.9462 29.6066 18.33 29.5869C18.5864 29.5753 18.6526 29.6454 18.6094 29.9085C18.4808 30.6959 18.3655 31.4862 18.283 32.2793C18.2666 32.4339 18.0151 32.7354 18.4462 32.7901C18.8178 32.8381 18.8082 32.5875 18.8389 32.3465C18.9349 31.5553 19.0531 30.765 19.1481 29.9729C19.1827 29.6915 19.2845 29.5773 19.5975 29.583C20.7968 29.6041 21.998 29.607 23.1964 29.583C23.5804 29.5753 23.687 29.679 23.6208 30.0631C23.4844 30.8486 23.3817 31.6408 23.2789 32.4329C23.2626 32.5587 23.1339 32.7719 23.4239 32.7901C23.639 32.8036 23.808 32.8151 23.8464 32.5021C23.9424 31.6619 24.098 30.8294 24.1825 29.9882C24.218 29.6416 24.3534 29.5744 24.6626 29.5926C25.0611 29.6176 25.4634 29.5811 25.8619 29.6041C26.2018 29.6243 26.1961 29.4035 26.2297 29.1769C26.2758 28.8619 26.0492 28.9445 25.8955 28.9406C25.5436 28.9238 25.191 28.9257 24.8393 28.9464C24.4552 28.979 24.3179 28.909 24.3889 28.4663C24.6175 27.049 24.8018 25.6241 24.9862 24.1991C25.0217 23.9274 25.1389 23.8563 25.3914 23.8688C25.7419 23.8861 26.0972 23.8458 26.4476 23.8794C26.8826 23.9168 27.1217 23.7968 27.0372 23.2572Z" fill="#A30248"/> -<path d="M74.3142 30.9869C74.3142 33.2568 74.3065 35.5258 74.3228 37.7957C74.3228 38.151 74.2403 38.2499 73.8763 38.247C71.9886 38.2265 70.1001 38.2265 68.2111 38.247C67.827 38.247 67.7752 38.1289 67.7761 37.789C67.7867 33.2664 67.7761 28.7428 67.7934 24.2202C67.7934 23.7958 67.6897 23.6758 67.2653 23.6912C66.355 23.7248 65.4409 23.6912 64.5306 23.7075C64.2541 23.7075 64.1398 23.6604 64.1465 23.3455C64.1638 21.8597 64.1638 20.3736 64.1465 18.8872C64.1465 18.5742 64.255 18.5243 64.5306 18.5252C68.865 18.5329 73.2 18.5329 77.5357 18.5252C77.866 18.5252 77.9726 18.6117 77.9688 18.9516C77.9505 20.3919 77.9467 21.8322 77.9688 23.2668C77.9755 23.6412 77.8507 23.72 77.505 23.7113C76.5937 23.6893 75.6806 23.7248 74.7703 23.6941C74.3747 23.6806 74.3017 23.8189 74.3036 24.1799C74.3219 26.4479 74.3142 28.7179 74.3142 30.9869ZM70.6808 28.7256C70.6808 30.9638 70.6884 33.2011 70.6731 35.4394C70.6731 35.7725 70.7557 35.8628 71.0927 35.8666C71.4845 35.8715 71.4374 35.6496 71.4374 35.4067C71.4374 30.9782 71.4374 26.5507 71.4278 22.1241C71.4278 21.7227 71.4931 21.572 71.9406 21.5873C73.0429 21.6248 74.149 21.596 75.2514 21.6018C75.4962 21.6018 75.6691 21.6018 75.6739 21.2618C75.6787 20.9219 75.5298 20.8778 75.2456 20.8778C72.4463 20.8854 69.6466 20.8854 66.8466 20.8778C66.6008 20.8778 66.4337 20.873 66.427 21.2157C66.4203 21.5585 66.5749 21.5998 66.8553 21.5998C67.9912 21.5893 69.1271 21.6085 70.2631 21.5873C70.5963 21.5816 70.6913 21.6709 70.6884 22.0089C70.6731 24.2539 70.6808 26.4921 70.6808 28.7256Z" fill="#A30248"/> -<path d="M48.2973 28.3693C48.2973 25.2544 48.305 22.1404 48.2877 19.0255C48.2877 18.6328 48.3761 18.5147 48.7832 18.5214C51.1165 18.5627 53.4517 18.4628 55.7841 18.5761C57.4597 18.6577 59.0738 19.0303 60.5237 19.9204C62.3663 21.0506 63.3467 22.73 63.581 24.8578C63.7615 26.5027 63.6473 28.1091 62.8868 29.6157C61.8901 31.5889 60.1761 32.6077 58.1164 33.1416C57.1273 33.4059 56.1069 33.5351 55.0831 33.5257C54.677 33.5189 54.5819 33.6659 54.5886 34.0509C54.6117 35.3126 54.5829 36.5743 54.6069 37.8361C54.6136 38.199 54.4753 38.2422 54.1642 38.2403C52.3398 38.2269 50.5154 38.223 48.6968 38.2403C48.3386 38.2403 48.2896 38.1184 48.2906 37.8044C48.3021 34.6635 48.2973 31.5169 48.2973 28.3693ZM51.274 28.3693V35.4154C51.274 35.6496 51.2077 35.883 51.6129 35.8724C51.9682 35.8638 52.0287 35.7389 52.0239 35.424C52.0085 34.1757 52.0335 32.9323 52.0085 31.6859C52.0009 31.2836 52.0777 31.1213 52.5261 31.1463C53.2943 31.1895 54.0624 31.1674 54.8306 31.1568C56.3112 31.1357 57.7266 30.8544 58.9528 29.971C60.6111 28.7765 61.2487 26.2751 60.4546 24.1137C59.7642 22.2393 58.2461 21.4251 56.414 21.0708C54.8776 20.7731 53.3221 20.9315 51.7742 20.8787C51.3902 20.8662 51.2625 20.9575 51.2653 21.3675C51.2826 23.7037 51.2721 26.037 51.2721 28.3684L51.274 28.3693Z" fill="#A30248"/> -<path d="M28.222 38.2374C28.7348 36.8758 29.2264 35.5661 29.7229 34.2573C31.6542 29.1759 33.5816 24.0932 35.5052 19.0092C35.6493 18.6251 35.8327 18.5147 36.2264 18.5224C37.5054 18.5473 38.7853 18.5377 40.0672 18.5224C40.3399 18.5224 40.4916 18.5829 40.5982 18.8652C43.0045 25.2326 45.4172 31.5966 47.8363 37.957C47.8641 38.03 47.8824 38.1059 47.9064 38.1856C47.7489 38.2739 47.5895 38.2307 47.4388 38.2307C45.647 38.2307 43.8552 38.2307 42.0616 38.2393C41.8014 38.2393 41.6285 38.1961 41.5863 37.9157C41.5821 37.9003 41.5766 37.8852 41.5699 37.8706C41.3981 37.426 41.3453 36.823 41.0217 36.5782C40.652 36.2997 40.0355 36.4985 39.5266 36.4946C38.167 36.4841 36.8073 36.5004 35.4476 36.4841C35.1759 36.4841 35.052 36.5647 34.9675 36.8173C34.811 37.2858 34.7457 37.9446 34.4125 38.151C34.0284 38.3891 33.3918 38.2307 32.8656 38.2326C31.3379 38.2403 29.8074 38.2374 28.222 38.2374ZM44.2845 35.8081C44.2716 35.7432 44.2552 35.6791 44.2355 35.616C42.4015 30.8047 40.5697 25.9928 38.7402 21.1802C38.5482 20.6809 38.1842 20.9613 37.8981 20.8922C37.5668 20.8115 37.4708 21.0362 37.3729 21.2945C35.5958 25.9726 33.815 30.6498 32.0302 35.3261C31.8267 35.858 31.8805 35.9166 32.4364 35.8609C32.6217 35.8426 32.6765 35.7466 32.7245 35.6064C32.8393 35.3436 32.9397 35.0747 33.025 34.8008C33.1105 34.4638 33.2881 34.3745 33.6309 34.3764C36.4155 34.3918 39.2001 34.385 41.979 34.385C42.9651 34.385 43.0055 34.3726 43.2935 35.2857C43.4654 35.8206 43.7362 35.9684 44.2845 35.8081Z" fill="#A30248"/> -<path d="M78.9232 28.4077C78.9232 25.2918 78.9338 22.175 78.9108 19.0591C78.9108 18.5982 79.0548 18.5176 79.4715 18.5224C81.3747 18.5425 83.2788 18.5387 85.1819 18.5224C85.5151 18.5224 85.614 18.6097 85.614 18.9487C85.6044 25.2458 85.6044 31.5425 85.614 37.8389C85.614 38.1443 85.5449 38.2451 85.2213 38.2432C83.2538 38.2278 81.2844 38.2249 79.3189 38.2432C78.954 38.2432 78.9165 38.1087 78.9175 37.8015C78.9271 34.6731 78.9232 31.5409 78.9232 28.4077ZM81.8999 28.353C81.8999 30.7023 81.8999 33.052 81.8999 35.4019C81.8999 35.666 81.8557 35.882 82.2686 35.8763C82.6614 35.8715 82.6527 35.689 82.6527 35.4067C82.6482 30.7241 82.6482 26.0408 82.6527 21.3569C82.6527 21.0909 82.6892 20.8768 82.2754 20.8768C81.8615 20.8768 81.9028 21.0919 81.9028 21.3569C81.8996 23.6877 81.897 26.0197 81.8951 28.353H81.8999Z" fill="#A30248"/> -<path d="M97.9095 35.2051C99.0127 35.2127 100.08 35.0265 101.049 34.4897C101.44 34.2727 101.455 34.5857 101.596 34.7605C101.781 34.9919 101.643 35.0802 101.443 35.1772C97.6281 37.0343 91.6441 35.6516 90.3872 30.2974C89.1696 25.1123 92.9221 20.6713 98.283 20.8624C99.2263 20.8925 100.157 21.0922 101.029 21.452C101.157 21.5048 101.509 21.4644 101.328 21.7775C101.213 21.9781 101.221 22.3536 100.741 22.1558C99.0118 21.4358 97.077 21.3817 95.3102 22.0041C92.0099 23.1294 90.559 26.3049 90.9979 29.3795C91.5164 33.0062 94.1147 35.159 97.9095 35.2051Z" fill="#FBF4F7"/> -<path d="M27.0372 23.2572C27.1217 23.7968 26.8826 23.9168 26.4467 23.8746C26.0981 23.841 25.7429 23.8813 25.3905 23.864C25.1379 23.8515 25.0208 23.9226 24.9852 24.1943C24.8009 25.6193 24.6165 27.0442 24.388 28.4615C24.3169 28.9013 24.4571 28.9714 24.8383 28.9416C25.1901 28.9209 25.5426 28.919 25.8946 28.9358C26.0482 28.9358 26.2786 28.8571 26.2287 29.1721C26.1951 29.3987 26.2009 29.6195 25.861 29.5993C25.4625 29.5763 25.0601 29.6128 24.6617 29.5878C24.3544 29.5696 24.219 29.6368 24.1815 29.9834C24.097 30.8246 23.9367 31.6571 23.8455 32.4973C23.8109 32.8141 23.6381 32.8026 23.423 32.7853C23.1349 32.7671 23.2617 32.5539 23.278 32.4281C23.3807 31.636 23.4835 30.8438 23.6198 30.0583C23.6861 29.6742 23.5843 29.5782 23.1954 29.5782C21.9961 29.6032 20.7949 29.6003 19.5965 29.5782C19.2835 29.5725 19.1817 29.6867 19.1472 29.9681C19.0511 30.7602 18.9388 31.5505 18.838 32.3417C18.8072 32.5827 18.8168 32.8333 18.4452 32.7853C18.0141 32.7306 18.2657 32.4291 18.282 32.2745C18.3646 31.4814 18.4798 30.6911 18.6085 29.9037C18.6517 29.6406 18.5854 29.5705 18.3291 29.5821C17.9452 29.6018 17.5606 29.6018 17.1768 29.5821C17.0309 29.5734 16.7514 29.7338 16.7793 29.3641C16.8004 29.0885 16.8427 28.884 17.2123 28.9205C17.6089 28.9589 18.0122 28.9205 18.4107 28.9358C18.6632 28.9483 18.7813 28.8782 18.8159 28.6103C19.0022 27.154 19.1981 25.699 19.4035 24.2452C19.4448 23.9571 19.3805 23.8381 19.0646 23.8611C18.6805 23.8871 18.2964 23.8688 17.9123 23.8659C17.7472 23.8659 17.5494 23.9216 17.5791 23.6192C17.6022 23.3762 17.6521 23.2351 17.9411 23.2514C18.3252 23.2735 18.7093 23.2283 19.0934 23.2648C19.4535 23.2994 19.561 23.1458 19.6023 22.8222C19.7089 21.983 19.8587 21.1495 19.9566 20.3093C19.9912 20.0078 20.1487 19.9972 20.3705 20.0107C20.7037 20.0308 20.5395 20.2594 20.5222 20.3948C20.4166 21.2333 20.3004 22.071 20.1736 22.9076C20.1314 23.1871 20.2197 23.2639 20.4972 23.261C21.7288 23.2488 22.9605 23.2488 24.1921 23.261C24.4687 23.261 24.5762 23.1928 24.6127 22.899C24.7087 22.0598 24.8643 21.2263 24.9699 20.3871C25.0035 20.1211 25.0659 19.98 25.3693 20.003C25.7371 20.0328 25.5556 20.2843 25.5383 20.4226C25.4423 21.2148 25.3376 22.007 25.2061 22.7934C25.1494 23.1323 25.184 23.2927 25.5902 23.261C26.0655 23.2293 26.5456 23.2572 27.0372 23.2572ZM21.5256 28.933C22.1651 28.933 22.8046 28.9214 23.446 28.9387C23.688 28.9445 23.785 28.8667 23.8167 28.6295C24.0126 27.1572 24.2158 25.6878 24.4264 24.2212C24.4658 23.9495 24.4034 23.8592 24.1163 23.8621C22.868 23.8755 21.6197 23.8717 20.3714 23.8621C20.1458 23.8621 20.0277 23.9091 19.9941 24.1646C19.7982 25.6689 19.5914 27.17 19.3738 28.6679C19.3392 28.9013 19.4122 28.9378 19.6119 28.9349C20.2466 28.9282 20.8861 28.932 21.5256 28.933Z" fill="#FBF4F7"/> -<path d="M70.6807 28.7256C70.6807 26.4883 70.673 24.25 70.6884 22.0127C70.6884 21.6747 70.5924 21.5854 70.263 21.5912C69.1271 21.6123 67.9911 21.5912 66.8552 21.6037C66.5748 21.6037 66.4202 21.5768 66.427 21.2196C66.4337 20.8624 66.6008 20.8816 66.8466 20.8816C69.6466 20.8861 72.4462 20.8861 75.2455 20.8816C75.5336 20.8816 75.6776 20.9123 75.6738 21.2657C75.67 21.619 75.4962 21.6065 75.2513 21.6056C74.148 21.5998 73.0428 21.6286 71.9405 21.5912C71.493 21.5758 71.4258 21.7266 71.4277 22.1279C71.4412 26.5545 71.4354 30.9821 71.4373 35.4105C71.4373 35.6535 71.4844 35.8753 71.0926 35.8705C70.7556 35.8705 70.6711 35.7745 70.673 35.4432C70.6884 33.2049 70.6807 30.9676 70.6807 28.7256Z" fill="#FBF4F7"/> -<path d="M51.272 28.3684C51.272 26.036 51.2826 23.7037 51.2615 21.3713C51.2615 20.9613 51.3834 20.8701 51.7704 20.8826C53.3182 20.9334 54.8757 20.775 56.4101 21.0746C58.247 21.428 59.7603 22.2413 60.4507 24.1165C61.2448 26.2751 60.6072 28.7765 58.9489 29.9738C57.7227 30.8572 56.3074 31.1386 54.8267 31.1597C54.0586 31.1703 53.2904 31.1923 52.5222 31.1491C52.0738 31.1242 51.997 31.2864 52.0047 31.6888C52.0296 32.937 52.0047 34.1853 52.02 35.4269C52.0248 35.7418 51.9643 35.8667 51.6091 35.8753C51.2039 35.8859 51.2701 35.6525 51.2701 35.4182L51.272 28.3684ZM52.021 26.0139C52.021 27.3717 52.0268 28.7284 52.0162 30.0862C52.0162 30.3579 52.0556 30.4827 52.3744 30.4751C53.3173 30.452 54.2621 30.5058 55.2031 30.4549C56.4783 30.3867 57.7247 30.138 58.7012 29.2297C60.0647 27.9622 60.1694 26.3346 59.7882 24.6667C59.4233 23.0728 58.2518 22.2288 56.7232 21.8408C55.2608 21.4692 53.7667 21.643 52.2851 21.6018C51.973 21.5931 52.022 21.8053 52.022 21.9858C52.0168 23.3301 52.0165 24.6728 52.021 26.0139Z" fill="#FBF4F7"/> -<path d="M44.2846 35.8081C43.7363 35.9684 43.4655 35.8206 43.2975 35.2876C43.0094 34.3745 42.9691 34.387 41.9829 34.387C39.1983 34.387 36.4137 34.3937 33.6349 34.3783C33.2921 34.3783 33.1144 34.4657 33.029 34.8027C32.9436 35.0766 32.8433 35.3455 32.7284 35.6084C32.6766 35.7485 32.6218 35.8446 32.4404 35.8628C31.8844 35.9185 31.8306 35.8628 32.0342 35.328C33.8163 30.6511 35.5972 25.9739 37.3768 21.2964C37.4728 21.0381 37.5688 20.8163 37.902 20.8941C38.1901 20.9642 38.5559 20.6838 38.7441 21.1821C40.566 25.9979 42.3977 30.8099 44.2394 35.618C44.2578 35.6805 44.2729 35.744 44.2846 35.8081ZM38.0979 21.6075C38.0345 21.7352 37.9933 21.7996 37.9654 21.8764C36.5104 25.6903 35.0537 29.5027 33.5955 33.3135C33.4361 33.7263 33.6157 33.7158 33.9191 33.7158C36.6864 33.71 39.4547 33.7052 42.222 33.7158C42.6224 33.7158 42.7117 33.6524 42.5552 33.2491C41.5662 30.7084 40.6021 28.16 39.6295 25.6116L38.0979 21.6075Z" fill="#FBF4F7"/> -<path d="M81.8951 28.353C81.8951 26.0197 81.8951 23.6861 81.8951 21.3521C81.8951 21.089 81.8557 20.872 82.2677 20.872C82.6796 20.872 82.645 21.089 82.645 21.3521C82.645 26.036 82.645 30.7193 82.645 35.4019C82.645 35.6842 82.6546 35.8667 82.2609 35.8715C81.848 35.8715 81.8913 35.6612 81.8922 35.3971C81.8967 33.051 81.8977 30.703 81.8951 28.353Z" fill="#FBF4F7"/> -<path d="M21.5256 28.932C20.8861 28.932 20.2466 28.932 19.6052 28.932C19.4054 28.932 19.3325 28.8984 19.367 28.6651C19.5891 27.1691 19.7985 25.6695 19.995 24.1665C20.0286 23.9111 20.1467 23.8631 20.3724 23.864C21.6206 23.8717 22.8689 23.8755 24.1172 23.864C24.4052 23.864 24.4667 23.9514 24.4273 24.2231C24.2122 25.6884 24.008 27.1572 23.8147 28.6295C23.783 28.8667 23.686 28.9445 23.4441 28.9387C22.8046 28.9176 22.1651 28.933 21.5256 28.932ZM21.7743 27.2507C22.1584 27.3467 22.336 27.1979 22.3379 26.7984C22.3505 26.6074 22.3778 26.4177 22.4195 26.2309C22.5415 25.4839 22.6509 25.5751 21.8271 25.5588C21.6024 25.553 21.5198 25.6222 21.4996 25.8468C21.4665 26.1641 21.4155 26.4792 21.347 26.7907C21.2682 27.1499 21.3499 27.3486 21.7743 27.2507Z" fill="#A30248"/> -<path d="M52.021 26.0139C52.021 24.6696 52.021 23.3282 52.021 21.9897C52.021 21.8053 51.9721 21.5931 52.2841 21.6056C53.7657 21.6469 55.2608 21.4731 56.7222 21.8447C58.2586 22.2288 59.4223 23.0766 59.7872 24.6706C60.1713 26.3385 60.0638 27.966 58.7003 29.2335C57.7237 30.1419 56.4774 30.3906 55.2022 30.4587C54.2612 30.5096 53.3164 30.4587 52.3734 30.4789C52.0546 30.4866 52.0124 30.3618 52.0153 30.09C52.021 28.7256 52.021 27.3717 52.021 26.0139ZM54.6002 26.0139C54.6002 26.6361 54.6002 27.2587 54.6002 27.8815C54.6002 28.039 54.5752 28.1878 54.8181 28.2234C55.5777 28.3367 56.5542 27.9353 56.8845 27.2852C57.307 26.4547 57.3176 25.5914 56.8711 24.7647C56.4486 23.9812 55.6804 23.8928 54.893 23.8515C54.6414 23.839 54.5944 23.9303 54.5973 24.1473C54.6002 24.7714 54.5954 25.3936 54.5954 26.0158L54.6002 26.0139Z" fill="#A30248"/> -<path d="M38.0979 21.6075L39.6295 25.6154C40.6022 28.1629 41.5662 30.7122 42.5552 33.253C42.7118 33.6562 42.6225 33.7215 42.2221 33.7196C39.4547 33.7052 36.6864 33.71 33.9191 33.7196C33.6157 33.7196 33.439 33.7302 33.5955 33.3173C35.0608 29.5065 36.5158 25.6929 37.9606 21.8764C37.9885 21.8034 38.0298 21.7352 38.0979 21.6075ZM38.0855 28.7054C37.6553 29.826 37.2674 30.8505 36.866 31.8741C36.7873 32.0757 36.841 32.1218 37.0369 32.1209C37.8051 32.1151 38.5656 32.1209 39.3904 32.1209C38.9506 30.9782 38.532 29.8855 38.0807 28.7054H38.0855Z" fill="#A30248"/> -</symbol> - -<symbol id="pix" viewBox="0 -10 240 198" xmlns="http://www.w3.org/2000/svg"> -<path d="M42.555 61.426l3.097-3.758c2.756-3.178 4.715-6.246 5.876-9.27l23.577 28.787c4.279 5.483 4.075 6.499-3.057 6.499h-2.445c-7.132 0-9.781-1.422-14.06-6.5L42.555 61.427zm0-39.159L55.543 6.509c4.279-5.078 6.928-6.5 14.06-6.5h2.445c7.132 0 7.336 1.016 3.057 6.5L51.528 35.294c-1.161-3.022-3.12-6.091-5.876-9.269l-3.097-3.758z" fill="#12A3FF" transform="translate(143 58.5)"></path> -<path d="M41.866 83.684c7.131 0 7.335-1.016 3.056-6.5L20.47 47.33c-1.834-2.234-2.853-4.062-2.853-5.484 0-1.624 1.019-3.452 2.853-5.483L44.922 6.51c4.28-5.484 4.075-6.5-3.056-6.5H39.42c-7.132 0-9.78 1.422-14.06 6.5L6.613 29.255c-7.947 9.139-7.947 16.044 0 25.183L25.36 77.185c4.28 5.077 6.928 6.499 14.06 6.499h2.446z" fill="#FFBE00" transform="matrix(-1 0 0 1 191.414 58.5)"></path> -<path d="M17 168.22c0 6.063 1.521 7.58 7.605 7.58h2.028c6.083 0 7.604-1.517 7.604-7.58v-35.202c4.563 7.242 12.844 10.948 24.843 10.948 23.49 0 35.15-12.296 35.15-36.718V92.594c0-24.423-12.505-35.876-38.7-35.876-24.335 0-38.53 11.79-38.53 35.876v75.626zm59.824-60.636c0 14.148-4.732 20.044-21.124 20.044-16.73 0-21.463-6.064-21.463-20.044V93.1c0-14.148 5.07-20.212 21.463-20.212 16.73 0 21.124 6.064 21.124 20.212v14.485z" fill="#12A3FF"></path> -<path d="M110.486 134.402c0 6.063 1.52 7.58 7.605 7.58h2.196c6.084 0 7.605-1.517 7.605-7.58V66.018c0-6.063-1.52-7.579-7.605-7.579h-2.196c-6.084 0-7.605 1.516-7.605 7.58v68.383zm1.183-94.153c4.225 4.042 10.984 4.042 15.04 0 4.225-4.211 4.225-10.948 0-14.99-4.056-4.212-10.815-4.212-15.04 0-4.225 4.042-4.225 10.779 0 14.99z" fill="#12A3FF"></path> -</symbol> - -<symbol id="conseillerNumFranceServices" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 371.93 157.55"><defs></defs><path fill="#e1000f" d="M46.81 0 0 27.03v54.05l44.31 76.47h5l44.32-76.47V27.03L46.81 0z"/><path style="fill:#fff" d="M60.2 46.33h17.74V36.09L46.81 18.11 15.68 36.09v35.94L46.81 90l31.13-17.97V61.78H60.2V46.33z"/><path fill="#000091" d="M60.2 61.78V46.33L46.81 38.6l-13.38 7.73v15.45l13.38 7.73 13.39-7.73z"/><path fill="#000000" d="m187.28 64 4.55 3.49a14.54 14.54 0 0 1-12 5.81 15 15 0 1 1 12-24.29l-4.55 3.54a8.9 8.9 0 0 0-7.44-3.9c-5.36 0-9.18 4.18-9.18 9.62s3.82 9.63 9.18 9.63a8.9 8.9 0 0 0 7.44-3.9Z" transform="translate(-37.77 -37.79)"/><path fill="#000000" d="M224.09 58.25a15.1 15.1 0 1 1-15.08-15 14.78 14.78 0 0 1 15.08 15Zm-5.94 0c0-5.44-3.81-9.62-9.14-9.62s-9.18 4.18-9.18 9.62 3.82 9.63 9.18 9.63 9.14-4.18 9.14-9.63ZM229.08 44h7.4l12.71 20.35V44H255v28.47h-7.39L234.85 52v20.47h-5.77ZM264.06 64.67a8.2 8.2 0 0 0 6.3 3.5c2.27 0 3.65-1.22 3.65-3.29 0-5.08-13-3.94-13-13.41 0-4.51 3.69-8.25 9.09-8.25a12.56 12.56 0 0 1 10 4.8l-4.23 3.77c-1.66-2.15-3.53-3.53-5.68-3.53a3 3 0 0 0-3.29 3c0 5.07 13 3.9 13 13.52-.08 5.29-4.22 8.53-9.42 8.53a12.81 12.81 0 0 1-10.56-4.75ZM285.43 44H302v5h-10.8v6.58h9.18v4.92h-9.18v7.11H302v4.91h-16.57ZM308.18 44H314v28.47h-5.77ZM321.43 44h5.77v23.23H338v5.24h-16.57ZM342.59 44h5.77v23.23h10.81v5.24h-16.58ZM363.76 44h16.57v5h-10.8v6.58h9.18v4.92h-9.18v7.11h10.8v4.91h-16.57ZM386.51 44h8.69c6.26 0 10.12 3.2 10.12 8.49a7.74 7.74 0 0 1-4.55 7.35l8.94 12.59h-6.91L395.24 61h-3v11.47h-5.77Zm5.77 5v7.11h3.25c2.44 0 3.86-1.3 3.86-3.62 0-2.15-1.42-3.49-3.86-3.49ZM165.14 85h7.39l12.72 20.35V85H191v28.44h-7.39L170.91 93v20.44h-5.77ZM214.94 85h5.77v17.3c0 7.48-4.39 12-11.54 12s-11.49-4.47-11.49-12V85h5.77v17.79c0 3.82 2.15 6.06 5.77 6.06s5.72-2.24 5.72-6.06ZM227.38 85h7.27l6.86 11.7 6.87-11.7h7.27v28.44h-5.77V93.23l-6.34 10.49h-4.06l-6.34-10.49v20.24h-5.76ZM263.09 85h16.57v4.91h-10.81v6.58H278v4.92h-9.18v7.11h10.81v4.92h-16.54Zm5.6-2.44 4.59-5.48h5.93l-5.28 5.48ZM285.88 85h8.69c6.26 0 10.12 3.21 10.12 8.49a7.73 7.73 0 0 1-4.56 7.35l8.94 12.6h-6.9L294.61 102h-3v11.5h-5.77Zm5.77 4.91v7.11h3.25c2.43 0 3.85-1.3 3.85-3.61 0-2.15-1.42-3.5-3.85-3.5ZM312.16 85h5.77v28.44h-5.77ZM355.22 115.46a5.76 5.76 0 0 0 2-.33V120a7.56 7.56 0 0 1-3 .52 13.44 13.44 0 0 1-8.9-3.73l-3.37-3a15 15 0 1 1 11.17-14.54 15 15 0 0 1-5.61 11.86l1.71 1.62c2.22 1.99 4.18 2.73 6 2.73Zm-8-16.21c0-5.45-3.82-9.63-9.14-9.63s-9.18 4.18-9.18 9.63 3.82 9.63 9.18 9.63 9.14-4.19 9.14-9.63ZM374.6 85h5.77v17.3c0 7.48-4.39 12-11.54 12s-11.49-4.47-11.49-12V85h5.77v17.79c0 3.82 2.15 6.06 5.77 6.06s5.72-2.24 5.72-6.06ZM387 85h16.57v4.91h-10.8v6.58H402v4.92h-9.18v7.11h10.8v4.92H387Z" transform="translate(-37.77 -37.79)"/><path fill="#000091" d="M165.28 127.5h16.57v4.92H171V139h9.18v4.91H171v12h-5.76ZM185.34 135.46h5.16v2a7.36 7.36 0 0 1 5.41-2.43 5.68 5.68 0 0 1 1.78.28v5.41a8.53 8.53 0 0 0-2.27-.29 5.66 5.66 0 0 0-4.92 2.64v12.84h-5.16ZM199.89 150.54c0-3.13 2.4-5.53 6.82-6.26l6.18-1.06v-.53c0-2.15-1.63-3.53-3.94-3.53a5.09 5.09 0 0 0-4.59 2.44l-3.82-2.89a10.3 10.3 0 0 1 8.57-4.06c5.93 0 9 3.53 9 8v13.25h-5.2V154a8.06 8.06 0 0 1-6.09 2.72c-4.13.03-6.93-2.33-6.93-6.18Zm8 2.07a5.8 5.8 0 0 0 5-2.89v-2.8l-4.84.85c-2.19.37-3 1.26-3 2.56s1.05 2.28 2.8 2.28ZM223.09 135.46h5.15v1.63a8.36 8.36 0 0 1 6.06-2.44c4.43 0 8 3 8 9.1v12.19H237V144c0-2.72-1.5-4.42-4-4.42a5.46 5.46 0 0 0-4.76 3v13.37h-5.15ZM261.6 149.48l4.1 3.13a10.56 10.56 0 0 1-8.65 4.14c-7.07 0-11.29-5.08-11.29-11.05s4.22-11 11.29-11a10.59 10.59 0 0 1 8.65 4.14l-4.1 3.13a5.41 5.41 0 0 0-4.63-2.39 6.18 6.18 0 0 0 .08 12.35 5.43 5.43 0 0 0 4.55-2.45ZM278.58 156.75c-7.27 0-11.37-5.08-11.37-11.05s3.81-11 10.52-11c5.68 0 9.42 3.82 9.42 9.18a13.8 13.8 0 0 1-.32 2.93h-14.34c.32 3.37 2.68 5.36 6.17 5.36a6.3 6.3 0 0 0 5.16-2.44l3.7 2.93a10.86 10.86 0 0 1-8.94 4.09Zm-5.77-13.89H282a4 4 0 0 0-4.3-3.9 4.66 4.66 0 0 0-4.89 3.9Z" transform="translate(-37.77 -37.79)"/><path fill="#e1000f" d="M167 187c1.26 1.58 2.76 2.72 4.71 2.72 1.63 0 2.52-.9 2.52-2.11 0-3.58-9.54-2.08-9.54-9.47 0-3.62 3-6.3 7.27-6.3a9.54 9.54 0 0 1 7.51 3.5l-3.47 3.04a5.29 5.29 0 0 0-4-2.35c-1.55 0-2.36.73-2.36 1.87 0 3.49 9.55 2.07 9.55 9.34-.08 4.31-3.54 6.66-7.39 6.66a10.16 10.16 0 0 1-8.21-3.78ZM193 193.9c-7.27 0-11.37-5.08-11.37-11.05s3.81-11 10.52-11c5.68 0 9.42 3.82 9.42 9.18a13.8 13.8 0 0 1-.32 2.93h-14.36c.32 3.37 2.68 5.36 6.17 5.36a6.3 6.3 0 0 0 5.16-2.44l3.7 2.93a10.86 10.86 0 0 1-8.92 4.09Zm-5.79-13.9h9.22a4 4 0 0 0-4.3-3.9 4.66 4.66 0 0 0-4.92 3.9ZM205.7 172.61h5.16v2a7.35 7.35 0 0 1 5.4-2.44 5.8 5.8 0 0 1 1.79.28v5.41a8.55 8.55 0 0 0-2.28-.29 5.63 5.63 0 0 0-4.91 2.64v12.84h-5.16ZM224.38 172.61l5.33 14.63 5.29-14.63h5.56l-7.47 20.48h-6.79l-7.43-20.48ZM242.14 165.67a3.41 3.41 0 0 1 3.37-3.37 3.37 3.37 0 0 1 0 6.74 3.41 3.41 0 0 1-3.37-3.37Zm.77 6.94h5.16v20.48h-5.16ZM267.73 186.63l4.1 3.13a10.55 10.55 0 0 1-8.65 4.14c-7.07 0-11.29-5.08-11.29-11.05s4.22-11 11.29-11a10.56 10.56 0 0 1 8.65 4.15l-4.1 3.12a5.39 5.39 0 0 0-4.63-2.39 6.18 6.18 0 0 0 .08 12.35 5.41 5.41 0 0 0 4.55-2.45ZM284.71 193.9c-7.27 0-11.37-5.08-11.37-11.05s3.82-11 10.52-11c5.69 0 9.42 3.82 9.42 9.18a13.8 13.8 0 0 1-.32 2.93h-14.34c.33 3.37 2.68 5.36 6.17 5.36a6.29 6.29 0 0 0 5.16-2.44l3.7 2.93a10.86 10.86 0 0 1-8.94 4.09ZM279 180h9.22a4 4 0 0 0-4.31-3.9A4.65 4.65 0 0 0 279 180ZM299 187c1.26 1.58 2.77 2.72 4.72 2.72 1.62 0 2.51-.9 2.51-2.11 0-3.58-9.54-2.08-9.54-9.47 0-3.62 3.05-6.3 7.27-6.3a9.57 9.57 0 0 1 7.52 3.5l-3.48 3.04a5.25 5.25 0 0 0-4-2.35c-1.54 0-2.36.73-2.36 1.87 0 3.49 9.55 2.07 9.55 9.34-.08 4.31-3.53 6.66-7.39 6.66a10.16 10.16 0 0 1-8.21-3.78Z" transform="translate(-37.77 -37.79)"/></symbol> - - -<symbol id="maisonFranceService" viewBox="0 0 120 56" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M49.8218 20.2578C49.7845 20.222 49.7503 20.2484 49.7146 20.2578L49.6105 20.3059C49.4606 20.3639 49.3178 20.439 49.1849 20.5296C49.1399 20.5576 49.0793 20.5731 49.0482 20.5296C49.0172 20.4861 49.0855 20.4519 49.1135 20.4162C49.2051 20.2981 49.3604 20.337 49.4707 20.2609C49.8474 19.9978 50.2683 19.8047 50.7134 19.6908C51.4574 19.4827 52.2263 19.4267 52.9812 19.2838C53.4736 19.1906 53.9645 19.1036 54.3792 18.7899C54.5609 18.6547 54.7458 18.5165 54.94 18.3938C55.24 18.2137 55.4774 17.9458 55.6203 17.6264C55.6576 17.541 55.7508 17.4292 55.6638 17.3608C55.6048 17.3173 55.5395 17.454 55.4743 17.5053C55.4417 17.5342 55.4106 17.5648 55.3811 17.5969C54.7427 18.1887 54.0437 18.6842 53.1956 18.9281C52.537 19.1161 51.8489 19.0835 51.1607 19.1735C51.3829 18.9918 51.5646 18.7837 51.8815 18.7464C51.7386 18.6268 51.6329 18.7153 51.5258 18.7324C51.4543 18.7448 51.3471 18.8178 51.3285 18.6998C51.3176 18.6299 51.3285 18.4854 51.4838 18.4916C51.5196 18.4916 51.5662 18.5041 51.5817 18.4606C51.6392 18.2835 51.8069 18.24 51.9436 18.1623C52.3521 17.9293 52.7669 17.7072 53.1785 17.4773C53.2204 17.4525 53.2857 17.4478 53.2965 17.3826C53.2468 17.3624 53.1723 17.4261 53.1521 17.3484C53.1319 17.2707 53.194 17.249 53.2608 17.2288C53.625 17.0961 53.9804 16.9404 54.3248 16.7628C54.2223 16.7271 54.1229 16.7939 54.0546 16.7115C54.0981 16.6152 54.2348 16.6292 54.2549 16.5562C54.2891 16.4397 54.2782 16.3108 54.4445 16.2952C54.4662 16.2952 54.4646 16.2657 54.4445 16.2549C54.3326 16.1663 54.4569 16.1461 54.491 16.1166C54.606 16.0188 54.766 16.0219 54.9073 15.952C54.7225 15.8852 54.6573 15.7671 54.752 15.6413C54.9369 15.3834 54.9679 15.0774 55.0549 14.7885C55.0673 14.7512 55.0922 14.7046 55.0378 14.6736C54.9834 14.6425 54.957 14.6736 54.9275 14.7093C54.6332 14.9684 54.282 15.1546 53.9023 15.253C53.6238 15.3352 53.3406 15.4006 53.0542 15.4487C52.8978 15.4874 52.7339 15.4848 52.5787 15.4412C52.4236 15.3977 52.2823 15.3146 52.1688 15.2002C52.065 15.1027 51.9498 15.0182 51.8256 14.9485C50.9339 14.4375 49.9507 14.2557 48.9488 14.1361C48.5729 14.1026 48.1953 14.0901 47.818 14.0988C47.978 14.015 48.1482 13.9524 48.3244 13.9125C48.7577 13.8068 49.1958 13.7245 49.6198 13.5863C49.9825 13.4583 50.3572 13.3678 50.7382 13.316L51.2679 13.2756C51.0932 13.2454 50.9145 13.2454 50.7398 13.2756C50.5914 13.2649 50.4422 13.2722 50.2955 13.2973C49.3449 13.4822 48.3756 13.608 47.5151 14.1035C47.4483 14.1423 47.3598 14.175 47.3085 14.1144C47.2572 14.0538 47.3349 13.9824 47.3784 13.9249C47.6151 13.5957 47.932 13.3326 48.299 13.1605C48.666 12.9884 49.071 12.9131 49.4754 12.9416C50.4845 12.9767 51.4879 13.1088 52.4717 13.3362C52.5546 13.3456 52.634 13.3746 52.7034 13.4207C52.7729 13.4669 52.8303 13.529 52.8709 13.6018C52.8986 13.6507 52.9385 13.6915 52.9867 13.7204C53.0349 13.7493 53.0897 13.7651 53.1459 13.7664C53.3505 13.7688 53.553 13.8078 53.7439 13.8814C53.7719 13.5847 53.7936 13.5707 54.0732 13.6142H54.1089C54.2115 13.6329 54.3171 13.6406 54.3761 13.5381C54.3976 13.4925 54.4036 13.4411 54.3933 13.3918C54.3829 13.3424 54.3567 13.2978 54.3186 13.2647C54.1975 13.1234 54.067 12.9898 53.9427 12.8515C53.9023 12.8065 53.8387 12.7614 53.893 12.6636C54.0717 12.8344 54.2379 12.9991 54.4103 13.1575C54.6196 13.3731 54.8912 13.5176 55.1869 13.5707C55.291 13.5847 55.4153 13.6313 55.4867 13.5397C55.5582 13.448 55.4603 13.3424 55.4106 13.257C55.1991 12.9352 54.9583 12.6336 54.6914 12.356C54.6301 12.304 54.5849 12.2356 54.561 12.1588C54.5188 12.0191 54.4587 11.8854 54.3823 11.7611C54.2645 11.5457 54.1856 11.3112 54.1493 11.0683C54.1513 10.9563 54.1414 10.8443 54.1198 10.7344C53.9117 10.026 53.8247 9.29133 53.6538 8.57214C53.5311 8.0378 53.4876 7.50346 53.7641 6.99552C53.9722 6.61496 54.1882 6.23906 54.4041 5.86315C54.6821 5.38162 54.9959 4.93116 55.4727 4.6205C55.5218 4.58385 55.5573 4.53194 55.5737 4.47293C55.9201 3.61239 56.4607 2.93359 57.3305 2.54837C57.7406 2.36663 58.1553 2.19577 58.5732 2.00626H58.379C49.1523 2.00626 39.9266 2.00626 30.702 2.00626C30.5047 2.00626 30.4721 2.06373 30.4721 2.24392C30.4721 9.37262 30.4721 16.5008 30.4721 23.6285C30.4721 23.8226 30.5233 23.8599 30.7066 23.8599C37.1943 23.8537 43.682 23.8537 50.1697 23.8599C50.3294 23.8668 50.4869 23.8215 50.6186 23.731C50.8269 23.5851 51.0466 23.4563 51.2757 23.3458C52.0042 22.99 52.7358 22.6374 53.4721 22.3004C54.418 21.867 55.2786 21.3327 55.945 20.5047C56.4521 19.8678 57.0371 19.2969 57.6862 18.8054C57.7173 18.789 57.7419 18.7626 57.756 18.7304C57.7701 18.6983 57.7729 18.6623 57.7639 18.6283C57.5666 18.6874 57.4532 18.9002 57.2249 18.8971C57.2855 18.824 57.3662 18.7759 57.4268 18.7107C57.4874 18.6454 57.6645 18.6268 57.6163 18.5025C57.5573 18.3472 57.4004 18.4435 57.2855 18.4373C57.267 18.4405 57.2488 18.4451 57.2311 18.4512C56.8816 18.5258 56.6269 18.7619 56.3659 18.9747C56.3146 19.0167 56.2649 19.0928 56.1919 19.0539C56.0568 18.9825 55.9527 19.0539 55.844 19.1068C55.6333 19.2127 55.4326 19.3374 55.2444 19.4795C55.0283 19.6463 54.798 19.7939 54.5563 19.9207C54.401 19.9984 54.2068 19.958 54.0406 20.0558C53.7625 20.2126 53.4438 20.2824 53.1257 20.2562C52.4096 20.2127 51.7277 20.4022 51.0318 20.5358C50.4509 20.6476 50.0672 21.067 49.6214 21.387C49.2505 21.6566 48.9048 21.9592 48.5884 22.2911C48.5449 22.3345 48.5046 22.3982 48.4083 22.3563C48.5228 22.2131 48.6198 22.0566 48.6972 21.8903C48.8028 21.6106 49.0111 21.3817 49.2797 21.2503C49.3385 21.2179 49.3874 21.1701 49.4213 21.1122C49.4552 21.0542 49.4728 20.9882 49.4723 20.921C49.1989 20.9319 49.1709 21.3358 48.8385 21.2829C48.9252 21.1716 48.9929 21.0467 49.0389 20.9133C49.0762 20.6616 49.2657 20.5809 49.4412 20.4737L49.6462 20.3479L49.7363 20.2904L49.8125 20.2531L49.8249 20.2236L49.8031 20.2329L49.8218 20.2578ZM69.9202 15.7842C70.0169 15.8069 70.1062 15.8544 70.1791 15.9219C70.2521 15.9894 70.3063 16.0747 70.3365 16.1694C70.3718 16.228 70.3851 16.2972 70.374 16.3647C70.3629 16.4321 70.3281 16.4934 70.2759 16.5376C70.1811 16.6183 70.0833 16.6929 69.9916 16.7768C69.931 16.8219 69.8895 16.8881 69.8754 16.9623C69.8613 17.0365 69.8756 17.1133 69.9155 17.1775C70.0119 17.4066 70.0317 17.6606 69.9721 17.9019C69.9125 18.1431 69.7766 18.3587 69.5847 18.5165C69.4186 18.6382 69.2286 18.7232 69.0273 18.7661C68.8259 18.8089 68.6178 18.8086 68.4166 18.765C68.2612 18.7355 68.123 18.6811 67.9676 18.6609C67.3914 18.5833 66.8244 18.4342 66.2404 18.4C65.9291 18.3607 65.6144 18.4406 65.3596 18.6237C64.2863 19.4997 63.8187 20.643 63.9306 22.0192C63.9539 22.3175 64.0626 22.5629 64.4059 22.6157C64.4591 22.6295 64.511 22.6477 64.5612 22.6701C65.4668 22.9885 66.3739 23.3023 67.2158 23.7745C67.3102 23.8292 67.4174 23.8582 67.5265 23.8584C74.9886 23.8584 82.4508 23.8584 89.9129 23.8584C90.0791 23.8584 90.1304 23.8226 90.1304 23.6471C90.1304 16.5018 90.1304 9.36123 90.1304 2.22528C90.1304 2.03888 90.0745 2.00626 89.9021 2.00626C82.3426 2.00626 74.7831 2.00626 67.2236 2.00626C67.1522 1.99171 67.078 2.00271 67.0139 2.03733L67.1786 2.12897C67.5327 2.3309 67.9148 2.48313 68.2333 2.7503C68.6464 3.09358 68.7241 3.38095 68.5781 3.87024C68.5438 4.00328 68.4663 4.12118 68.3578 4.2055C68.2493 4.28981 68.1159 4.33579 67.9785 4.33624C67.8114 4.35021 67.6433 4.34708 67.4768 4.32692C67.3774 4.31605 67.278 4.30828 67.1661 4.29896C67.1661 4.32226 67.1661 4.33158 67.1661 4.33313C67.1876 4.34606 67.2099 4.35748 67.2329 4.36731C67.7565 4.57017 68.2143 4.91298 68.5564 5.35832C68.5865 5.39369 68.6235 5.42253 68.6652 5.4431C68.7069 5.46366 68.7523 5.47551 68.7987 5.47793C69.0037 5.51832 69.0037 5.51676 68.8825 5.68763C68.8484 5.73423 68.8049 5.7917 68.8546 5.83519C68.8815 5.85724 68.9159 5.86782 68.9505 5.86462C68.9851 5.86142 69.0171 5.84471 69.0394 5.81811C69.1034 5.74239 69.1557 5.65758 69.1948 5.56647C69.2047 5.54153 69.2207 5.51944 69.2413 5.50217C69.2618 5.48489 69.2863 5.47295 69.3126 5.46742C69.3389 5.46189 69.3661 5.46293 69.3919 5.47045C69.4177 5.47798 69.4412 5.49175 69.4604 5.51055C69.5132 5.54613 69.5573 5.59318 69.5893 5.64819C69.6214 5.70321 69.6406 5.76476 69.6455 5.82824C69.6505 5.89173 69.641 5.9555 69.6178 6.01481C69.5946 6.07411 69.5583 6.12741 69.5116 6.17071C69.4122 6.26391 69.3035 6.34779 69.201 6.43167C69.167 6.45047 69.1374 6.47639 69.1143 6.50765C69.0912 6.53891 69.0752 6.57479 69.0672 6.61283C69.0593 6.65086 69.0596 6.69017 69.0682 6.72807C69.0768 6.76596 69.0935 6.80156 69.1171 6.83242C69.1678 6.91752 69.211 7.00693 69.246 7.09959C69.3936 7.56559 69.5458 8.04401 69.6763 8.52088C69.8456 9.14221 69.9714 9.78218 69.8316 10.4299C69.7649 10.7697 69.8341 11.1222 70.0242 11.4116C70.1796 11.6741 70.3489 11.9242 70.5197 12.1758C70.7959 12.5341 71.0397 12.9162 71.2483 13.3175C71.4253 13.7136 71.284 13.9901 70.8692 14.1128C70.8226 14.1268 70.7745 14.1392 70.7263 14.1501C70.1734 14.2619 70.2122 14.5415 70.4048 14.8973L70.4436 14.9609C70.5803 15.2002 70.5539 15.3617 70.3349 15.5263C70.2106 15.6211 70.0786 15.6848 69.9202 15.7842ZM76.2888 36.8969C77.1633 36.8969 78.0394 36.8969 78.9139 36.8969C79.0506 36.8969 79.0972 36.8488 79.1189 36.7276C79.222 36.184 79.2335 35.627 79.1531 35.0795C78.9729 33.9363 78.4028 33.0602 77.3652 32.515C76.5653 32.0987 75.7047 32.0381 74.8287 32.1702C73.6357 32.3503 72.682 32.922 72.0467 33.9596C71.4331 34.9678 71.2208 36.1698 71.4517 37.3272C71.6847 38.663 72.3837 39.6898 73.6046 40.3204C74.5599 40.8128 75.5836 40.9107 76.6289 40.7647C77.6507 40.6395 78.5878 40.1343 79.2541 39.3496C79.3395 39.2502 79.3659 39.1865 79.2385 39.0886C78.8844 38.8184 78.5411 38.5294 78.1947 38.2483C77.94 38.0417 77.94 38.0433 77.7132 38.2747C77.154 38.8417 76.4581 39.0156 75.6939 38.9861C74.532 38.9395 73.7087 38.2095 73.5192 37.0662C73.4944 36.9218 73.5192 36.8891 73.6637 36.8907C74.5444 36.9016 75.4205 36.9016 76.295 36.9016L76.2888 36.8969ZM79.734 50.4263C80.5961 50.4263 81.4598 50.4263 82.3219 50.4263C82.4865 50.4263 82.53 50.3704 82.5549 50.2244C82.6526 49.6863 82.6605 49.1357 82.5782 48.595C82.3871 47.4393 81.8015 46.5554 80.739 46.0258C80.0137 45.6862 79.2034 45.571 78.4122 45.6949C77.0996 45.858 76.0713 46.4716 75.4096 47.635C74.9022 48.5412 74.7073 49.5893 74.8551 50.6174C75.0104 51.86 75.5572 52.9054 76.6212 53.6106C77.8359 54.4137 79.1748 54.5333 80.5651 54.204C81.4128 54.0088 82.1708 53.5352 82.718 52.8588C82.763 52.806 82.8345 52.7594 82.735 52.6802C82.3001 52.3322 81.8667 51.9807 81.4349 51.6255C81.3759 51.5773 81.3464 51.5866 81.3029 51.6426C80.8369 52.2313 80.2156 52.4891 79.4917 52.5264C78.1341 52.5948 77.1617 51.8818 76.9567 50.5972C76.935 50.4512 76.9567 50.4232 77.1027 50.4232C77.9772 50.431 78.858 50.4263 79.7402 50.4263H79.734ZM42.5988 50.4263C43.4547 50.4263 44.3075 50.4263 45.168 50.4263C45.3513 50.4263 45.4243 50.3813 45.4507 50.1949C45.5333 49.6919 45.5422 49.1797 45.4771 48.6742C45.3016 47.489 44.7222 46.5756 43.6318 46.0335C42.9023 45.6875 42.0853 45.57 41.2878 45.6965C39.9163 45.872 38.8678 46.5353 38.2216 47.7764C37.7629 48.6732 37.5998 49.6921 37.7556 50.6873C37.9187 51.9051 38.4639 52.9256 39.5077 53.606C40.8545 54.4836 42.3177 54.569 43.8244 54.0922C44.5259 53.8651 45.1457 53.4381 45.6076 52.8635C45.6542 52.806 45.7257 52.7579 45.6169 52.6724C45.1836 52.3307 44.758 51.9796 44.3292 51.6286C44.278 51.5866 44.2454 51.5742 44.1972 51.6379C43.739 52.2282 43.1099 52.4876 42.3876 52.5264C41.1139 52.5932 40.0825 51.9703 39.851 50.6236C39.8246 50.4776 39.8355 50.4201 40.0064 50.4232C40.8669 50.4325 41.7352 50.4263 42.6051 50.4263H42.5988ZM30.4736 34.9025C30.4736 36.7074 30.4736 38.5139 30.4736 40.3204C30.4736 40.4758 30.5171 40.5161 30.6693 40.5146C31.2907 40.5053 31.9244 40.5037 32.5504 40.5146C32.7151 40.5146 32.7555 40.4758 32.7555 40.3111C32.7555 38.8774 32.7555 37.4437 32.7555 36.01C32.7555 35.8624 32.7943 35.8236 32.9403 35.8251C34.0276 35.8251 35.1149 35.8251 36.2023 35.8251C36.3359 35.8251 36.3809 35.7987 36.3793 35.6543C36.37 35.0826 36.37 34.5126 36.3793 33.9456C36.3793 33.8011 36.3452 33.7608 36.1976 33.7623C35.1181 33.7623 34.0369 33.7623 32.9574 33.7623C32.8021 33.7623 32.757 33.7312 32.7586 33.5713C32.7679 32.9018 32.7694 32.2307 32.7586 31.5613C32.7586 31.3935 32.8036 31.3562 32.9652 31.3578C34.256 31.3578 35.5468 31.3578 36.8376 31.3578C36.9836 31.3578 37.0271 31.3205 37.024 31.1729C37.024 30.6075 37.0147 30.0437 37.024 29.4783C37.024 29.3229 36.9883 29.2841 36.8314 29.2841C34.7831 29.2903 32.7347 29.2903 30.6864 29.2841C30.5218 29.2841 30.4845 29.3245 30.4845 29.4876C30.4814 31.3096 30.4798 33.1022 30.4798 34.9025H30.4736ZM49.2797 39.7721C49.2797 39.9989 49.2797 40.1853 49.2797 40.3701C49.2797 40.4897 49.3169 40.5146 49.435 40.513C50.0113 40.513 50.5891 40.5053 51.1669 40.513C51.3052 40.513 51.3425 40.4804 51.3409 40.3391C51.3409 38.6009 51.3642 36.8612 51.3285 35.1246C51.3036 33.8695 50.7072 32.9375 49.536 32.4249C48.8738 32.1506 48.1524 32.0506 47.4405 32.1344C46.894 32.1722 46.3612 32.3226 45.8756 32.576C45.3899 32.8293 44.9618 33.1804 44.6182 33.607C44.542 33.7002 44.556 33.7421 44.6446 33.8089C45.0764 34.1341 45.5046 34.4623 45.9292 34.7937C46.0239 34.8683 46.0612 34.8527 46.1264 34.7595C46.2928 34.5114 46.5145 34.3052 46.774 34.1572C47.0336 34.0092 47.324 33.9235 47.6223 33.9068C48.6242 33.8213 49.3138 34.4271 49.2905 35.3716C49.2905 35.4679 49.2719 35.5098 49.1647 35.5269C48.5636 35.6201 47.9656 35.7273 47.366 35.8236C46.7873 35.8928 46.2238 36.056 45.6977 36.3066C44.3168 37.0243 43.9067 38.7096 44.8496 39.9072C45.4958 40.7274 46.4029 40.9029 47.38 40.7895C48.1203 40.7011 48.8004 40.338 49.2859 39.7721H49.2797ZM55.4929 33.0291C55.4929 32.8365 55.4929 32.6952 55.4929 32.5538C55.4929 32.4529 55.4588 32.4296 55.364 32.4296C54.7551 32.4296 54.1478 32.4296 53.5389 32.4296C53.4286 32.4296 53.4084 32.4653 53.4084 32.5663C53.4084 35.1686 53.4084 37.7704 53.4084 40.3717C53.4084 40.4928 53.4488 40.513 53.5637 40.513C54.14 40.513 54.7178 40.5037 55.2957 40.513C55.451 40.513 55.5023 40.4773 55.5007 40.3096C55.5007 38.6708 55.5007 37.0321 55.5007 35.3917C55.489 35.3119 55.5009 35.2304 55.5349 35.1572C55.8844 34.584 56.3426 34.16 57.0354 34.045C57.854 33.9114 58.5607 34.306 58.8124 35.05C58.8911 35.2927 58.9294 35.5467 58.9258 35.8018C58.9258 37.3101 58.9258 38.8184 58.9258 40.3282C58.9258 40.4727 58.9631 40.5146 59.1106 40.513C59.676 40.5037 60.2399 40.5037 60.8053 40.513C60.9529 40.513 60.9886 40.4742 60.9886 40.3282C60.9886 39.1182 60.9886 37.9066 60.9886 36.6965C61.008 36.1505 60.9956 35.6039 60.9513 35.0593C60.8597 34.2827 60.6282 33.5759 60.0721 33.0136C59.1867 32.1158 58.101 31.9651 56.9251 32.237C56.3891 32.3716 55.8978 32.6448 55.5007 33.0291H55.4929ZM65.9297 50.0333C65.9251 50.2255 65.9365 50.4178 65.9639 50.6081C66.144 51.9361 66.7545 52.9986 67.904 53.7147C68.836 54.291 69.8549 54.4525 70.9252 54.336C71.461 54.2871 71.9819 54.1327 72.4578 53.8815C72.9336 53.6304 73.3551 53.2876 73.6978 52.8728C73.7833 52.7703 73.7708 52.7268 73.6683 52.6507C73.2013 52.3017 72.7384 51.947 72.2797 51.5867C72.1756 51.5043 72.1321 51.523 72.0529 51.6208C71.697 52.0763 71.1761 52.3734 70.6028 52.4478C70.0296 52.5222 69.4501 52.368 68.9897 52.0185C68.1214 51.3645 67.8946 50.4496 68.0997 49.4291C68.2845 48.508 68.8499 47.8758 69.7726 47.6505C70.6953 47.4253 71.4813 47.6707 72.0715 48.4272C72.1321 48.5064 72.1663 48.5251 72.2548 48.4552C72.7208 48.0855 73.2054 47.7173 73.6885 47.3601C73.7941 47.2824 73.7662 47.2342 73.7025 47.1597C73.5194 46.9336 73.3109 46.7293 73.0812 46.5508C71.7142 45.5458 70.2137 45.4122 68.6527 45.9528C66.9751 46.5321 65.9375 48.1196 65.9375 50.0333H65.9297ZM66.8291 32.1111C66.6613 32.1251 66.4003 32.1344 66.144 32.1733C65.0117 32.3457 64.0595 32.8443 63.3698 33.7747C62.5497 34.8823 62.3338 36.1311 62.6071 37.4639C62.7163 38.0678 62.9629 38.6386 63.3279 39.132C63.6929 39.6254 64.1664 40.0283 64.7119 40.3096C65.5154 40.7274 66.4237 40.9008 67.3246 40.8082C67.89 40.778 68.4431 40.6315 68.9493 40.3779C69.4555 40.1242 69.9039 39.7689 70.2666 39.3341C70.3489 39.2347 70.3504 39.1865 70.2433 39.1073C69.7773 38.7593 69.3113 38.4052 68.8546 38.0448C68.7474 37.9609 68.6993 37.9796 68.6247 38.0759C68.2651 38.5341 67.7386 38.8313 67.1605 38.9023C66.5824 38.9733 65.9996 38.8125 65.5398 38.4549C64.6964 37.7963 64.4758 36.8907 64.6808 35.8873C64.8657 34.9692 65.4249 34.3339 66.3522 34.1087C67.2795 33.8835 68.0608 34.1273 68.6496 34.8854C68.7319 34.9894 68.7754 34.9599 68.8546 34.8993C69.3206 34.5436 69.7773 34.1864 70.2448 33.84C70.3644 33.7514 70.352 33.7002 70.265 33.5977C69.3905 32.5678 68.2519 32.136 66.8368 32.1111H66.8291ZM56.8288 51.6938C56.7931 51.6053 56.7682 51.5494 56.748 51.4919C56.0987 49.7128 55.451 47.9332 54.8048 46.1531C54.7928 46.0942 54.7584 46.0422 54.7089 46.0081C54.6594 45.9739 54.5986 45.9602 54.5392 45.9698C53.9381 45.9792 53.3354 45.9792 52.7342 45.9698C52.568 45.9698 52.5556 46.0087 52.6084 46.1547C53.5528 48.7363 54.491 51.3195 55.423 53.9042C55.4665 54.0238 55.5256 54.044 55.6374 54.0424C56.4141 54.0424 57.2016 54.0424 57.9829 54.0424C58.0362 54.0516 58.0909 54.0397 58.1355 54.0093C58.1802 53.9789 58.2112 53.9323 58.2221 53.8793C58.511 53.0623 58.8108 52.2484 59.106 51.4344C59.7449 49.674 60.3843 47.911 61.0243 46.1454C61.0538 46.0646 61.1299 45.9683 60.9451 45.9698C60.2989 45.9698 59.6543 45.9698 59.0081 45.9698C58.9748 45.9653 58.9411 45.9737 58.9139 45.9934C58.8867 46.0131 58.8682 46.0425 58.8621 46.0755C58.7891 46.2867 58.7068 46.4949 58.6353 46.7046C58.0373 48.3588 57.4424 50.01 56.8288 51.6938ZM87.1993 45.6545C86.7947 45.6461 86.3919 45.7119 86.011 45.8487C85.0479 46.2044 84.422 46.8599 84.321 47.9099C84.2216 48.9351 84.6317 49.732 85.5108 50.2772C85.8856 50.4954 86.2778 50.6819 86.6836 50.8348C87.0344 50.9582 87.3712 51.118 87.6886 51.3117C88.2493 51.6892 88.0179 52.3493 87.5736 52.5373C87.2424 52.6714 86.874 52.6813 86.536 52.5652C86.058 52.4006 85.6396 52.0979 85.3338 51.6954C85.2421 51.5835 85.1986 51.5882 85.1008 51.6876C84.7342 52.0573 84.3609 52.4197 83.9808 52.7749C83.8829 52.8681 83.8954 52.9303 83.9808 53.0095C85.079 54.1714 86.4242 54.5877 87.9728 54.2521C89.4407 53.9337 90.2702 52.5994 89.9657 51.13C89.8291 50.4714 89.4314 49.9976 88.8784 49.6388C88.3969 49.3576 87.8905 49.1215 87.3655 48.9336C87.0787 48.8329 86.8085 48.69 86.564 48.5095C86.4766 48.4482 86.4077 48.3641 86.3647 48.2664C86.3218 48.1687 86.3064 48.061 86.3204 47.9552C86.3343 47.8494 86.377 47.7494 86.4437 47.6661C86.5105 47.5828 86.5988 47.5194 86.6991 47.4828C86.9324 47.3765 87.1925 47.344 87.4447 47.3896C87.9853 47.4812 88.3689 47.8167 88.706 48.2191C88.7712 48.2967 88.8054 48.3154 88.8877 48.2346C89.2605 47.8711 89.6364 47.5107 90.0201 47.1566C90.1288 47.0572 90.1257 47.0012 90.0294 46.8894C89.6701 46.4974 89.2326 46.185 88.7451 45.9723C88.2577 45.7596 87.7311 45.6514 87.1993 45.6545ZM33.2991 45.6545C32.826 45.6505 32.3568 45.7419 31.9198 45.9232C30.0325 46.7263 30.0558 48.9942 31.1804 49.9619C31.6381 50.3233 32.1518 50.6077 32.7011 50.8038C33.0703 50.9308 33.4257 51.0947 33.762 51.2931C33.9966 51.4484 34.1581 51.655 34.1146 51.9594C34.0959 52.1055 34.0341 52.2427 33.9369 52.3534C33.8398 52.4641 33.7118 52.5433 33.5694 52.5808C33.3135 52.6604 33.0407 52.669 32.7803 52.6056C32.2133 52.4767 31.7955 52.1241 31.4351 51.6938C31.3373 51.5789 31.2907 51.596 31.1975 51.6938C30.8247 52.0666 30.4457 52.4348 30.0651 52.7982C29.9905 52.8697 29.9843 52.9116 30.0651 52.9908C31.1711 54.1776 32.5318 54.6203 34.1037 54.2537C35.8699 53.8405 36.3949 52.2468 36.0361 50.9793C35.831 50.2523 35.3107 49.8019 34.6707 49.4617C34.2327 49.2287 33.7636 49.0641 33.3084 48.8699C33.0629 48.7819 32.8355 48.6498 32.6374 48.48C32.5621 48.4186 32.5037 48.339 32.4679 48.2487C32.432 48.1585 32.4198 48.0605 32.4324 47.9642C32.445 47.8679 32.482 47.7764 32.5399 47.6984C32.5978 47.6204 32.6747 47.5584 32.7632 47.5185C33.007 47.3894 33.2877 47.3478 33.5585 47.4005C34.0773 47.4859 34.4579 47.7981 34.781 48.188C34.8804 48.306 34.9363 48.3169 35.0466 48.2035C35.3966 47.8525 35.7549 47.5097 36.1215 47.1752C36.2364 47.0712 36.2458 47.0106 36.1401 46.8972C35.365 46.0662 34.4097 45.6825 33.2991 45.653V45.6545ZM40.5997 33.2109C40.5997 32.9717 40.5997 32.7806 40.5997 32.5896C40.5997 32.4777 40.5842 32.4342 40.4522 32.4342C39.8619 32.442 39.2732 32.4342 38.6829 32.4342C38.5633 32.4342 38.5276 32.4637 38.5276 32.5896C38.5276 35.1784 38.5276 37.7673 38.5276 40.3562C38.5276 40.4866 38.5664 40.5224 38.6953 40.5208C39.267 40.5208 39.837 40.5115 40.404 40.5208C40.5593 40.5208 40.5966 40.4789 40.5966 40.3266C40.5966 38.8432 40.609 37.3598 40.5811 35.8764C40.5731 35.7015 40.6075 35.5273 40.6814 35.3685C40.7552 35.2098 40.8663 35.0712 41.0051 34.9646C41.1827 34.8092 41.3848 34.6843 41.6032 34.5949C42.1403 34.3904 42.7277 34.3584 43.2839 34.5032C43.4004 34.5297 43.4205 34.5032 43.419 34.3961C43.419 33.7747 43.419 33.1534 43.419 32.5321C43.419 32.4109 43.3739 32.3768 43.2637 32.3488C42.7162 32.2214 42.1425 32.2709 41.6249 32.4901C41.2418 32.6615 40.8957 32.9058 40.6059 33.2093L40.5997 33.2109ZM49.174 46.7465C49.174 46.5166 49.1632 46.3302 49.174 46.1454C49.1865 45.9978 49.129 45.973 48.9954 45.9745C48.4253 45.9745 47.8537 45.9823 47.2868 45.9745C47.1501 45.9745 47.1112 46.004 47.1112 46.1469C47.1112 48.7244 47.1112 51.3014 47.1112 53.8778C47.1112 54.0331 47.1578 54.0471 47.2883 54.0456C47.8413 54.0378 48.3943 54.0347 48.9457 54.0456C49.1243 54.0456 49.1834 54.016 49.1818 53.8203C49.1709 52.354 49.1927 50.8892 49.1647 49.4229C49.1552 49.2419 49.1907 49.0613 49.2679 48.8973C49.3452 48.7334 49.4618 48.5911 49.6074 48.4831C49.7025 48.4039 49.8032 48.3317 49.9088 48.2672C50.5099 47.9099 51.1514 47.896 51.8178 48.0264C51.9529 48.0544 52.0011 48.0466 51.998 47.8897C51.9887 47.2871 51.9887 46.6849 51.998 46.0832C51.998 45.9434 51.9421 45.9046 51.824 45.8782C51.2629 45.7532 50.6764 45.8137 50.1526 46.0506C49.7899 46.2226 49.4607 46.4577 49.1803 46.745L49.174 46.7465ZM62.1691 50.0162C62.1691 51.3065 62.1691 52.5973 62.1691 53.8887C62.1691 54.0021 62.1877 54.044 62.3244 54.044C62.9194 54.0362 63.5158 54.0362 64.1108 54.044C64.2412 54.044 64.2661 53.999 64.2661 53.8887C64.2661 51.3091 64.2661 48.728 64.2661 46.1454C64.2661 45.99 64.2164 45.9745 64.0859 45.9761C63.5143 45.9761 62.9442 45.9838 62.3772 45.9761C62.2219 45.9761 62.1815 46.0102 62.1815 46.1687C62.1784 47.4455 62.1753 48.7301 62.1753 50.0147L62.1691 50.0162ZM61.8709 43.3634C61.8705 43.7141 62.009 44.0508 62.2561 44.2996C62.5032 44.5485 62.8389 44.6894 63.1896 44.6915C63.3706 44.7045 63.5523 44.6802 63.7234 44.6201C63.8946 44.56 64.0516 44.4653 64.1846 44.3419C64.3177 44.2186 64.4239 44.0692 64.4968 43.903C64.5696 43.7369 64.6076 43.5576 64.6082 43.3761C64.6089 43.1947 64.5722 43.0151 64.5005 42.8485C64.4288 42.6818 64.3236 42.5317 64.1914 42.4074C64.0593 42.2831 63.903 42.1873 63.7323 42.126C63.5615 42.0646 63.38 42.0391 63.199 42.0508C62.8506 42.052 62.5167 42.1902 62.2694 42.4355C62.0221 42.6808 61.8812 43.0135 61.8771 43.3618L61.8709 43.3634ZM66.8679 10.1379C66.9518 10.1752 67.0124 10.1379 67.0745 10.113C67.57 9.98255 68.0671 9.89867 68.5765 10.0323C68.7427 10.0758 68.7598 10.1161 68.6496 10.2513C68.5604 10.3552 68.451 10.4397 68.328 10.4998C68.1236 10.6204 67.9298 10.7581 67.7486 10.9114C67.6306 11.0031 67.5809 11.16 67.3852 11.1242C67.337 11.1149 67.2624 11.1242 67.2485 11.1895C67.2345 11.2547 67.309 11.2578 67.3386 11.2936C67.5094 11.4924 67.8185 11.3526 67.9956 11.5638C68.0251 11.5996 68.1043 11.6011 68.1028 11.685C68.1058 11.7231 68.0936 11.7608 68.0688 11.7899C68.0441 11.819 68.0088 11.8372 67.9708 11.8403C67.8744 11.8574 67.7766 11.8652 67.6601 11.8807C67.8602 11.9464 68.0725 11.9666 68.2814 11.9397C68.6635 11.9195 68.7008 11.8729 68.6915 11.4939C68.6837 11.4513 68.6837 11.4076 68.6915 11.365C68.7412 11.2097 68.6387 11.0357 68.7971 10.899C68.8707 10.844 68.9532 10.8019 69.041 10.7747C69.1249 10.7437 69.1963 10.68 69.1062 10.5977C69.0161 10.5153 69.0565 10.4625 69.1326 10.4004C69.2709 10.303 69.3713 10.1609 69.4169 9.99809C69.4402 9.89246 69.434 9.78218 69.3268 9.74334C69.0919 9.63209 68.8364 9.57073 68.5765 9.56316C68.0921 9.5989 67.6182 9.72315 67.1786 9.92974C67.0652 9.97922 66.962 10.0493 66.8741 10.1363L66.8679 10.1379Z" fill="#FEFEFE"/> -<path d="M49.6493 20.3494L49.4442 20.4752C49.2687 20.5824 49.0792 20.6632 49.0419 20.9148C48.9959 21.0482 48.9282 21.1731 48.8415 21.2845C49.174 21.3373 49.2019 20.9335 49.4753 20.9226C49.4758 20.9897 49.4582 21.0558 49.4243 21.1137C49.3904 21.1717 49.3415 21.2194 49.2827 21.2519C49.0141 21.3833 48.8058 21.6122 48.7002 21.8918C48.6228 22.0582 48.5258 22.2146 48.4113 22.3578C48.5076 22.3998 48.548 22.3361 48.5915 22.2926C48.9078 21.9608 49.2536 21.6582 49.6244 21.3886C50.0702 21.0686 50.4539 20.6492 51.0348 20.5374C51.7292 20.4038 52.4126 20.2143 53.1287 20.2578C53.4468 20.2839 53.7655 20.2141 54.0436 20.0574C54.2098 19.9595 54.3978 19.9999 54.5593 19.9222C54.801 19.7954 55.0313 19.6478 55.2474 19.4811C55.4356 19.339 55.6363 19.2142 55.847 19.1083C55.9557 19.0586 56.0598 18.984 56.195 19.0555C56.268 19.0943 56.3177 19.0182 56.3689 18.9763C56.6299 18.7557 56.8846 18.5274 57.2341 18.4528C57.2518 18.4467 57.27 18.442 57.2885 18.4388C57.4034 18.4388 57.5603 18.3534 57.6193 18.5041C57.6675 18.6283 57.4951 18.6423 57.4298 18.7122C57.3646 18.7821 57.2885 18.8256 57.2279 18.8986C57.4531 18.8986 57.5696 18.6889 57.7669 18.6299C57.7759 18.6638 57.7731 18.6998 57.759 18.732C57.7449 18.7641 57.7203 18.7906 57.6892 18.807C57.0401 19.2985 56.4552 19.8694 55.948 20.5063C55.2816 21.3342 54.4211 21.8685 53.4751 22.3019C52.7388 22.639 52.0072 22.9916 51.2787 23.3473C51.0497 23.4578 50.8299 23.5866 50.6216 23.7325C50.49 23.8231 50.3324 23.8683 50.1727 23.8615C43.6861 23.8615 37.1984 23.8615 30.7096 23.8615C30.5264 23.8615 30.4751 23.8242 30.4751 23.63C30.4751 16.5013 30.4751 9.37313 30.4751 2.24547C30.4751 2.06529 30.5077 2.00781 30.705 2.00781C39.9296 2.00781 49.1553 2.00781 58.382 2.00781H58.5762C58.1583 2.19732 57.7436 2.36818 57.3335 2.54992C56.4637 2.93514 55.9231 3.61394 55.5767 4.47448C55.5603 4.5335 55.5248 4.5854 55.4758 4.62205C54.9989 4.93271 54.6851 5.38628 54.4071 5.8647C54.1912 6.24061 53.9753 6.61651 53.7671 6.99707C53.4906 7.50501 53.5341 8.03935 53.6568 8.57369C53.8215 9.29288 53.9085 10.0276 54.1228 10.7359C54.1445 10.8459 54.1544 10.9578 54.1523 11.0699C54.1887 11.3127 54.2675 11.5472 54.3853 11.7627C54.4618 11.887 54.5218 12.0206 54.564 12.1603C54.5879 12.2371 54.6331 12.3055 54.6944 12.3576C54.9613 12.6351 55.2021 12.9367 55.4136 13.2585C55.4633 13.3439 55.569 13.4387 55.4897 13.5412C55.4105 13.6437 55.294 13.5863 55.19 13.5723C54.8942 13.5191 54.6226 13.3746 54.4133 13.1591C54.2409 13.0038 54.0747 12.836 53.896 12.6651C53.8417 12.763 53.9054 12.808 53.9457 12.8531C54.07 12.9913 54.2005 13.1249 54.3217 13.2663C54.3597 13.2994 54.3859 13.344 54.3963 13.3933C54.4067 13.4427 54.4006 13.494 54.3791 13.5397C54.3201 13.6422 54.2145 13.6344 54.112 13.6158H54.0762C53.7966 13.5692 53.7749 13.5863 53.7469 13.8829C53.556 13.8093 53.3535 13.7704 53.1489 13.768C53.0921 13.7671 53.0365 13.7512 52.9877 13.722C52.9389 13.6929 52.8986 13.6514 52.8709 13.6018C52.8302 13.529 52.7728 13.4669 52.7033 13.4207C52.6339 13.3746 52.5545 13.3456 52.4716 13.3362C51.4862 13.1101 50.4812 12.9795 49.4706 12.9463C49.0663 12.9177 48.6613 12.9931 48.2943 13.1652C47.9272 13.3373 47.6103 13.6004 47.3737 13.9295C47.3302 13.987 47.2463 14.0491 47.3038 14.119C47.3612 14.1889 47.4436 14.147 47.5103 14.1082C48.3709 13.6096 49.3402 13.4868 50.2908 13.302C50.4375 13.2769 50.5866 13.2696 50.735 13.2802C50.7366 13.2916 50.7366 13.3031 50.735 13.3144C50.354 13.3662 49.9793 13.4568 49.6166 13.5847C49.1926 13.7229 48.7546 13.8053 48.3212 13.9109C48.1454 13.9519 47.9757 14.0156 47.8164 14.1004C48.1937 14.0917 48.5712 14.1041 48.9472 14.1377C49.9491 14.2573 50.9323 14.439 51.8239 14.9501C51.9481 15.0197 52.0634 15.1042 52.1672 15.2017C52.2807 15.3162 52.4219 15.3992 52.5771 15.4428C52.7323 15.4863 52.8961 15.4889 53.0526 15.4502C53.339 15.4021 53.6222 15.3368 53.9007 15.2545C54.2803 15.1562 54.6315 14.9699 54.9259 14.7109C54.9554 14.6813 54.9849 14.6441 55.0362 14.6751C55.0874 14.7062 55.0657 14.7528 55.0533 14.7901C54.9663 15.079 54.9352 15.385 54.7504 15.6428C54.6618 15.7671 54.7271 15.8852 54.9057 15.9535C54.7643 16.0234 54.6044 16.0203 54.4894 16.1182C54.4552 16.1477 54.3341 16.1679 54.4428 16.2564C54.4583 16.2673 54.4599 16.2952 54.4428 16.2968C54.2766 16.3123 54.2875 16.4413 54.2533 16.5578C54.2331 16.6292 54.098 16.6152 54.0529 16.7131C54.1213 16.7954 54.2207 16.7286 54.3232 16.7643C53.9787 16.942 53.6233 17.0976 53.2592 17.2303C53.1924 17.2505 53.1303 17.2723 53.1504 17.3499C53.1706 17.4276 53.2452 17.3639 53.2949 17.3841C53.284 17.4494 53.2188 17.454 53.1769 17.4789C52.7652 17.7088 52.3505 17.9309 51.942 18.1639C51.8053 18.2415 51.6313 18.285 51.58 18.4621C51.5645 18.5056 51.5179 18.4947 51.4822 18.4932C51.3269 18.4932 51.3269 18.6314 51.3269 18.7013C51.3455 18.8194 51.4527 18.7464 51.5241 18.734C51.6313 18.7169 51.7369 18.6283 51.8798 18.7479C51.5692 18.7852 51.3812 18.9934 51.1591 19.1751C51.8472 19.0912 52.5353 19.1176 53.1939 18.9297C54.0421 18.6889 54.7473 18.1903 55.3795 17.5985C55.409 17.5664 55.4401 17.5358 55.4727 17.5068C55.5379 17.4556 55.6031 17.3189 55.6622 17.3624C55.7492 17.4307 55.6622 17.5426 55.6187 17.628C55.4758 17.9474 55.2383 18.2152 54.9383 18.3953C54.7442 18.518 54.5593 18.6563 54.3776 18.7914C53.9551 19.1021 53.4642 19.1922 52.9796 19.2854C52.2247 19.4283 51.4558 19.4842 50.7117 19.6924C50.2667 19.8063 49.8457 19.9994 49.4691 20.2624C49.3588 20.3432 49.2035 20.3044 49.1118 20.4177C49.0839 20.4535 49.0109 20.4737 49.0466 20.5311C49.0823 20.5886 49.1382 20.5622 49.1833 20.5311C49.3161 20.4405 49.4589 20.3655 49.6089 20.3075L49.6493 20.3494ZM48.0245 17.6808C48.0895 17.7089 48.1595 17.7234 48.2303 17.7234C48.3011 17.7234 48.3711 17.7089 48.4361 17.6808C48.7235 17.5814 49.0046 17.4478 49.3231 17.4773C49.354 17.4755 49.3844 17.4687 49.4132 17.4571C49.7627 17.3795 50.1153 17.3018 50.4632 17.221C51.0432 17.0836 51.6059 16.8815 52.1408 16.6183C51.1001 15.8292 49.8745 15.5528 48.6691 15.2017C48.7017 15.1675 48.7685 15.1893 48.7685 15.138C48.7685 15.0868 48.7126 15.0774 48.6769 15.0681C48.5682 15.0402 48.4579 15.0231 48.3507 14.9982C48.315 14.9982 48.2451 14.9982 48.2544 14.9656C48.3119 14.7854 48.1457 14.8258 48.0835 14.8103C47.8505 14.7435 47.6098 14.7 47.3504 14.6441C47.4762 14.5788 47.5787 14.5198 47.6191 14.3986C47.6408 14.3365 47.6859 14.2666 47.6191 14.2122C47.5523 14.1579 47.5041 14.2122 47.4498 14.2402C47.1425 14.4216 46.8915 14.6845 46.7244 14.9998C46.6467 15.1349 46.482 15.3104 46.5582 15.4238C46.6343 15.5372 46.8688 15.517 47.0459 15.5155C47.161 15.4957 47.2789 15.4999 47.3923 15.5279C47.3294 15.5874 47.2497 15.626 47.164 15.6382C47.0471 15.6515 46.9327 15.6808 46.8238 15.7252C46.7228 15.7842 46.6591 15.851 46.7958 15.9457C46.7182 15.997 46.6218 16.0063 46.5815 16.1011C46.6183 16.1298 46.6615 16.1493 46.7075 16.1579C46.7534 16.1666 46.8007 16.1641 46.8455 16.1508C46.9026 16.1285 46.9658 16.1281 47.0231 16.1496C47.0805 16.1711 47.1279 16.213 47.1562 16.2673C46.7834 16.4226 46.7011 16.8606 46.3795 17.0641C46.3723 17.0702 46.3666 17.0778 46.3628 17.0864C46.359 17.095 46.3573 17.1044 46.3578 17.1138C46.3733 17.2195 46.3003 17.2692 46.232 17.3204C45.9943 17.5099 45.766 17.7196 45.5174 17.8874C45.2689 18.0551 45.2316 18.4233 44.9582 18.5864C44.9483 18.5911 44.9395 18.5979 44.9323 18.6062C44.9251 18.6145 44.9196 18.6241 44.9163 18.6346C44.9129 18.6451 44.9118 18.6561 44.9128 18.6671C44.9139 18.678 44.9172 18.6886 44.9225 18.6982C44.9582 18.7495 45.0017 18.7107 45.039 18.6982C45.1252 18.6639 45.2092 18.6245 45.2907 18.5802C45.701 18.3217 46.1281 18.0908 46.569 17.8889C47.0676 17.6777 47.5445 17.4525 48.1022 17.5674C48.1114 17.5722 48.1198 17.5785 48.127 17.586C48.1224 17.6482 48.0369 17.6125 48.0245 17.6808ZM48.5884 12.3017C48.3907 12.2154 48.1758 12.1757 47.9603 12.1856C47.7449 12.1956 47.5346 12.255 47.3457 12.3591C46.5746 12.8013 45.8793 13.364 45.286 14.0258C44.9042 14.4598 44.4628 14.8374 43.975 15.1473C43.8786 15.2022 43.8011 15.2851 43.7529 15.385C43.4255 16.0259 43.043 16.6371 42.6096 17.2117C42.577 17.2552 42.5102 17.2894 42.5335 17.367C42.605 17.3763 42.6252 17.3158 42.6578 17.2785C43.0741 16.8125 43.4935 16.3605 43.9455 15.9349C44.4534 15.4512 45.0057 15.0165 45.5951 14.6363C45.6588 14.5944 45.7085 14.5773 45.7644 14.6363C45.8203 14.6953 45.7271 14.7155 45.7147 14.7575C45.7023 14.7994 45.6774 14.8087 45.6666 14.8367C45.6557 14.8646 45.5842 14.9439 45.6324 14.9827C45.6805 15.0215 45.7551 14.9656 45.8001 14.9159C45.8203 14.8926 45.8297 14.8584 45.853 14.8382C45.9384 14.7606 45.9229 14.6052 45.999 14.5555C46.2894 14.3629 46.4401 14.074 46.5908 13.7789C46.7082 13.5342 46.8736 13.3155 47.077 13.1358C47.3768 12.8857 47.7123 12.6822 47.9996 12.4011C48.0292 12.4616 48.0229 12.5673 48.1037 12.5222C48.2544 12.443 48.4423 12.4461 48.5884 12.3017ZM48.1969 19.8865C47.922 19.756 47.6719 19.8415 47.4389 19.7855C47.3339 19.7642 47.2248 19.7779 47.1282 19.8244C46.9522 19.9031 46.7669 19.9595 46.5768 19.9921C46.0333 20.0798 45.5412 20.3646 45.1943 20.7921C45.1524 20.8403 44.9039 20.8915 45.1415 21.0235C45.1415 21.0235 45.1244 21.0686 45.1213 21.0919C45.0988 21.2526 45.0358 21.405 44.9381 21.5346C44.8184 21.6992 44.6926 21.8608 44.5637 22.0208C44.5187 22.0782 44.4938 22.1342 44.5637 22.1761C44.6336 22.218 44.6383 22.1404 44.6693 22.1093C44.8604 21.9229 44.994 21.6433 45.331 21.6822C45.3528 21.6822 45.3807 21.648 45.4025 21.6262C45.6318 21.3641 45.9205 21.1607 46.2444 21.0329C46.9449 20.7781 47.4886 20.2329 48.1969 19.8865ZM49.6943 18.0691C49.4877 17.9138 49.2889 17.8641 49.073 18.0179C49.0074 18.0513 48.9373 18.0748 48.8648 18.0878C48.8053 18.1044 48.7516 18.1372 48.7095 18.1825C48.6831 18.2151 48.6427 18.254 48.6707 18.2959C48.6986 18.3379 48.7375 18.3192 48.7716 18.3146C49.014 18.2773 49.2563 18.2415 49.497 18.1965C49.5769 18.1815 49.6478 18.1358 49.6943 18.0691ZM47.8692 20.8542C47.8692 20.8309 47.8412 20.8201 47.8086 20.8154C47.7718 20.8109 47.7345 20.8156 47.7001 20.8292C47.6656 20.8427 47.6351 20.8647 47.6113 20.8931C47.4762 21.0266 47.3364 21.1556 47.2012 21.2907C47.1671 21.3249 47.0816 21.3544 47.1344 21.415C47.1456 21.4261 47.1587 21.4349 47.1733 21.441C47.1878 21.447 47.2034 21.4501 47.2191 21.4501C47.2348 21.4501 47.2504 21.447 47.2649 21.441C47.2794 21.4349 47.2926 21.4261 47.3038 21.415C47.4023 21.3223 47.5193 21.2514 47.647 21.2068C47.7962 21.14 47.8117 20.994 47.8692 20.8542Z" fill="#273375"/> -<path d="M69.9201 15.7842C70.0754 15.6848 70.2106 15.6149 70.3271 15.5264C70.5461 15.3617 70.5725 15.2002 70.4358 14.9609L70.397 14.8973C70.2044 14.5415 70.1655 14.2619 70.7185 14.1501C70.7667 14.1392 70.8148 14.1268 70.8614 14.1128C71.2761 13.9901 71.4175 13.7136 71.2404 13.3175C71.0319 12.9162 70.7881 12.5341 70.5119 12.1758C70.341 11.9242 70.1702 11.6741 70.0164 11.4116C69.8331 11.12 69.7707 10.7684 69.8424 10.4315C69.9807 9.78373 69.8549 9.14687 69.6871 8.52244C69.5566 8.04557 69.4044 7.57336 69.2568 7.10115C69.2218 7.00848 69.1786 6.91908 69.1279 6.83398C69.1043 6.80311 69.0876 6.76752 69.079 6.72962C69.0704 6.69173 69.0701 6.65242 69.078 6.61438C69.086 6.57634 69.1021 6.54047 69.1251 6.50921C69.1482 6.47794 69.1778 6.45203 69.2118 6.43322C69.319 6.34934 69.4277 6.26546 69.5224 6.17227C69.5691 6.12896 69.6054 6.07567 69.6286 6.01636C69.6518 5.95706 69.6613 5.89328 69.6564 5.8298C69.6514 5.76631 69.6322 5.70476 69.6001 5.64975C69.5681 5.59474 69.524 5.54768 69.4712 5.5121C69.452 5.4933 69.4285 5.47953 69.4027 5.47201C69.3769 5.46448 69.3497 5.46344 69.3234 5.46897C69.2971 5.47451 69.2726 5.48644 69.2521 5.50372C69.2315 5.521 69.2155 5.54309 69.2056 5.56802C69.1665 5.65914 69.1142 5.74394 69.0502 5.81966C69.0279 5.84626 68.9959 5.86297 68.9613 5.86617C68.9267 5.86937 68.8923 5.8588 68.8654 5.83675C68.8157 5.79326 68.8654 5.73578 68.8934 5.68918C69.0145 5.51832 69.0145 5.51987 68.8095 5.47948C68.7631 5.47707 68.7177 5.46522 68.676 5.44465C68.6343 5.42409 68.5973 5.39524 68.5672 5.35988C68.2251 4.91454 67.7673 4.57172 67.2437 4.36886C67.2207 4.35903 67.1984 4.34761 67.1769 4.33469C67.1769 4.33469 67.1769 4.32382 67.1769 4.30052C67.281 4.30984 67.3804 4.3176 67.4876 4.32848C67.6541 4.34864 67.8222 4.35176 67.9893 4.3378C68.1267 4.33735 68.2601 4.29137 68.3686 4.20705C68.4771 4.12274 68.5546 4.00484 68.5889 3.8718C68.7349 3.3825 68.6572 3.09514 68.2441 2.75186C67.9256 2.48624 67.5435 2.33401 67.1894 2.13053L67.0247 2.03888C67.0888 2.00426 67.163 1.99327 67.2344 2.00782C74.7939 2.00782 82.3534 2.00782 89.9129 2.00782C90.0853 2.00782 90.1412 2.04044 90.1412 2.22684C90.1412 9.3721 90.1412 16.5127 90.1412 23.6487C90.1412 23.8242 90.0899 23.8599 89.9237 23.8599C82.4564 23.8558 74.9948 23.8537 67.5389 23.8537C67.4297 23.8535 67.3226 23.8246 67.2282 23.7698C66.3863 23.3038 65.4792 22.9838 64.5736 22.6654C64.5234 22.643 64.4714 22.6248 64.4182 22.611C64.075 22.5582 63.9662 22.3128 63.9429 22.0146C63.8311 20.6368 64.2986 19.4951 65.372 18.619C65.6268 18.4359 65.9414 18.356 66.2527 18.3953C66.8368 18.4295 67.4037 18.5786 67.98 18.6563C68.1353 18.6765 68.2798 18.7308 68.4289 18.7604C68.6301 18.8039 68.8383 18.8043 69.0396 18.7614C69.241 18.7186 69.431 18.6335 69.597 18.5118C69.7865 18.3525 69.9197 18.1365 69.9771 17.8957C70.0344 17.6549 70.0128 17.402 69.9154 17.1744C69.8756 17.1102 69.8613 17.0334 69.8754 16.9592C69.8895 16.885 69.9309 16.8188 69.9916 16.7737C70.0832 16.6929 70.1811 16.6183 70.2758 16.5345C70.3281 16.4903 70.3629 16.429 70.374 16.3616C70.3851 16.2941 70.3717 16.2249 70.3364 16.1663C70.3058 16.0722 70.2514 15.9875 70.1784 15.9206C70.1055 15.8536 70.0165 15.8066 69.9201 15.7842Z" fill="#E20613"/> -<path d="M76.2947 36.9016C75.4202 36.9016 74.5441 36.9016 73.6696 36.9016C73.5143 36.9016 73.5003 36.9326 73.5252 37.0771C73.7116 38.2172 74.5348 38.9504 75.6998 38.997C76.4671 39.0265 77.163 38.8525 77.7191 38.2856C77.9459 38.0541 77.9459 38.0526 78.2007 38.2592C78.547 38.5403 78.8903 38.8292 79.2445 39.0995C79.3719 39.1974 79.3454 39.2549 79.26 39.3605C78.5938 40.1451 77.6566 40.6503 76.6349 40.7756C75.5895 40.9216 74.5659 40.8237 73.6106 40.3313C72.3881 39.7007 71.6907 38.6739 71.4577 37.3381C71.2268 36.1806 71.4391 34.9787 72.0526 33.9705C72.6879 32.9328 73.6417 32.3612 74.8346 32.181C75.7107 32.049 76.5712 32.1096 77.3712 32.5259C78.4088 33.0664 78.9789 33.9472 79.159 35.0904C79.2395 35.6378 79.2279 36.1948 79.1249 36.7385C79.1031 36.8596 79.0565 36.9093 78.9198 36.9078C78.0453 36.8923 77.1692 36.9016 76.2947 36.9016ZM75.4 35.2364C75.9514 35.2364 76.5044 35.2364 77.0559 35.2364C77.163 35.2364 77.1925 35.2131 77.1708 35.0997C77.1133 34.7603 76.9344 34.4534 76.6675 34.2361C76.2481 33.8943 75.7542 33.8198 75.2323 33.8493C74.8768 33.8658 74.535 33.9916 74.2537 34.2096C73.9723 34.4275 73.7651 34.727 73.6603 35.0671C73.6215 35.1898 73.6292 35.2411 73.7799 35.238C74.3205 35.2271 74.8595 35.2318 75.4 35.2318V35.2364Z" fill="#273375"/> -<path d="M79.7401 50.4263C78.8578 50.4263 77.9771 50.4263 77.0995 50.4263C76.9566 50.4263 76.9317 50.4543 76.9534 50.6003C77.1538 51.8849 78.1309 52.5979 79.4885 52.5295C80.2139 52.4922 80.8399 52.2344 81.2996 51.6457C81.3431 51.5898 81.3726 51.5804 81.4317 51.6286C81.8635 51.9828 82.2969 52.3343 82.7318 52.6833C82.8312 52.7625 82.7598 52.8091 82.7147 52.8619C82.1676 53.5383 81.4096 54.0119 80.5618 54.2071C79.1716 54.5364 77.8326 54.4168 76.6179 53.6137C75.5493 52.9008 74.9947 51.8663 74.8471 50.6174C74.6994 49.5893 74.8943 48.5413 75.4017 47.635C76.0634 46.4716 77.0917 45.858 78.4043 45.6949C79.1997 45.5707 80.0141 45.6882 80.742 46.032C81.806 46.5617 82.3901 47.4455 82.5811 48.6012C82.6635 49.1419 82.6556 49.6925 82.5578 50.2306C82.533 50.3766 82.4895 50.4341 82.3248 50.4325C81.4658 50.4154 80.6022 50.4263 79.7401 50.4263ZM77.0529 48.7814C78.2116 48.7814 79.358 48.7814 80.5043 48.7814C80.6255 48.7814 80.6146 48.7254 80.5991 48.6431C80.5658 48.4342 80.4861 48.2353 80.366 48.0612C80.2458 47.887 80.0882 47.7419 79.9048 47.6366C79.5451 47.4363 79.1348 47.3455 78.7242 47.3756C78.3265 47.3821 77.9432 47.5255 77.6388 47.7815C77.3344 48.0375 77.1274 48.3906 77.0529 48.7814Z" fill="#E20714"/> -<path d="M42.6046 50.4263C41.7348 50.4263 40.8665 50.4263 39.9966 50.4263C39.8242 50.4263 39.8133 50.4807 39.8413 50.6267C40.0712 51.9688 41.1026 52.5901 42.3747 52.5264C43.1001 52.4876 43.7261 52.2282 44.1843 51.6379C44.2325 51.5742 44.2651 51.5866 44.3164 51.6286C44.7451 51.9796 45.1707 52.3307 45.6041 52.6724C45.7128 52.7578 45.6414 52.806 45.5948 52.8635C45.1328 53.4381 44.513 53.8651 43.8115 54.0921C42.3048 54.569 40.8416 54.4836 39.4949 53.606C38.451 52.9256 37.9058 51.8973 37.7427 50.6873C37.5869 49.6921 37.7501 48.6732 38.2087 47.7764C38.8549 46.5337 39.9034 45.872 41.275 45.6965C42.077 45.5671 42.8993 45.6847 43.6329 46.0335C44.7202 46.5803 45.3027 47.4936 45.4783 48.6742C45.5433 49.1797 45.5344 49.6919 45.4519 50.1949C45.4254 50.3813 45.3524 50.4294 45.1692 50.4263C44.3179 50.4154 43.4621 50.4263 42.6046 50.4263ZM41.7239 48.7813C42.2691 48.7813 42.8112 48.7813 43.3595 48.7813C43.4807 48.7813 43.5055 48.7534 43.4838 48.6338C43.4283 48.2876 43.2448 47.9749 42.9697 47.7577C42.5827 47.4707 42.1046 47.3343 41.6245 47.374C41.2525 47.3779 40.8915 47.5005 40.5941 47.7241C40.2968 47.9476 40.0787 48.2604 39.9717 48.6167C39.9329 48.7394 39.936 48.786 40.0882 48.7829C40.6335 48.7767 41.1787 48.7813 41.7239 48.7813Z" fill="#E20714"/> -<path d="M30.4796 34.9024C30.4796 33.1022 30.4796 31.3019 30.4796 29.5016C30.4796 29.3385 30.5169 29.2981 30.6816 29.2981C32.7299 29.3043 34.7782 29.3043 36.8265 29.2981C36.9818 29.2981 37.0207 29.3385 37.0191 29.4922C37.0082 30.0576 37.0098 30.6215 37.0191 31.1869C37.0191 31.3345 36.9787 31.3733 36.8327 31.3718C35.5419 31.3718 34.2511 31.3718 32.9603 31.3718C32.8049 31.3718 32.7506 31.4075 32.7537 31.5752C32.7646 32.2447 32.763 32.9158 32.7537 33.5852C32.7537 33.7406 32.8034 33.7778 32.9525 33.7763C34.0398 33.7763 35.1132 33.7763 36.1927 33.7763C36.3481 33.7763 36.3776 33.8151 36.3745 33.9596C36.3667 34.5312 36.3667 35.1013 36.3745 35.6682C36.3745 35.8127 36.331 35.8391 36.1974 35.8391C35.1101 35.8391 34.0227 35.8391 32.9354 35.8391C32.7894 35.8391 32.749 35.8764 32.7506 36.0239C32.7506 37.4577 32.7506 38.8914 32.7506 40.3251C32.7506 40.4897 32.7102 40.5317 32.5455 40.5286C31.9242 40.5177 31.292 40.5192 30.6645 40.5286C30.5091 40.5286 30.4688 40.4913 30.4688 40.3344C30.4812 38.5139 30.4796 36.7074 30.4796 34.9024Z" fill="#273375"/> -<path d="M49.2856 39.7721C48.7987 40.337 48.1174 40.6984 47.3766 40.7849C46.398 40.8983 45.4924 40.7227 44.8462 39.9026C43.9034 38.705 44.3135 37.0196 45.6944 36.302C46.2205 36.0513 46.784 35.8882 47.3626 35.8189C47.9622 35.7226 48.5602 35.6154 49.1614 35.5222C49.2685 35.5051 49.2856 35.4632 49.2872 35.3669C49.3105 34.4225 48.6208 33.8136 47.6189 33.9021C47.3206 33.9188 47.0302 34.0045 46.7707 34.1525C46.5111 34.3005 46.2894 34.5067 46.1231 34.7549C46.0578 34.8481 46.0206 34.8636 45.9258 34.7891C45.5012 34.4566 45.073 34.1284 44.6412 33.8043C44.5527 33.7375 44.5387 33.6955 44.6148 33.6023C44.9584 33.1757 45.3865 32.8247 45.8722 32.5713C46.3579 32.3179 46.8907 32.1676 47.4372 32.1298C48.149 32.046 48.8704 32.146 49.5326 32.4202C50.7085 32.9328 51.3003 33.8648 51.3251 35.1199C51.3609 36.8565 51.3251 38.5962 51.3376 40.3344C51.3376 40.4758 51.3018 40.5099 51.1636 40.5084C50.5858 40.4991 50.0079 40.5084 49.4316 40.5084C49.3198 40.5084 49.2763 40.4851 49.2763 40.3655C49.2934 40.1853 49.2856 39.9989 49.2856 39.7721ZM49.2856 37.5353C49.2856 37.425 49.2779 37.3116 49.2856 37.2014C49.2996 37.0678 49.2561 37.0336 49.1225 37.0569C48.6845 37.1392 48.2449 37.2122 47.8053 37.2837C47.454 37.3177 47.111 37.4112 46.791 37.5602C46.6421 37.6328 46.5197 37.7502 46.4409 37.8958C46.362 38.0415 46.3308 38.2082 46.3514 38.3726C46.3662 38.5443 46.4387 38.706 46.5572 38.8313C46.6757 38.9565 46.8331 39.0379 47.0038 39.0622C47.3271 39.1272 47.6613 39.1134 47.9782 39.022C48.295 38.9307 48.5852 38.7644 48.8243 38.5372C49.1256 38.2732 49.3975 37.9889 49.2856 37.5353Z" fill="#273375"/> -<path d="M55.5004 33.0291C55.8952 32.644 56.3843 32.3692 56.9186 32.2323C58.0944 31.9667 59.1802 32.1173 60.0656 33.0089C60.6217 33.5713 60.8531 34.2858 60.9448 35.0547C60.989 35.5992 61.0015 36.1459 60.9821 36.6919C60.9821 37.9019 60.9821 39.1135 60.9821 40.3235C60.9821 40.4695 60.9463 40.5099 60.7988 40.5084C60.2333 40.4991 59.6695 40.4991 59.1041 40.5084C58.9488 40.5084 58.9192 40.468 58.9192 40.3235C58.9192 38.8137 58.9192 37.3054 58.9192 35.7972C58.9229 35.542 58.8846 35.2881 58.8059 35.0454C58.5542 34.3013 57.8475 33.9068 57.0289 34.0404C56.3361 34.1553 55.8778 34.5794 55.5283 35.1525C55.4944 35.2257 55.4825 35.3072 55.4942 35.3871C55.4942 37.0274 55.4942 38.6661 55.4942 40.3049C55.4942 40.4726 55.4507 40.5115 55.2891 40.5084C54.7113 40.4975 54.1335 40.5084 53.5572 40.5084C53.4469 40.5084 53.4019 40.4882 53.4019 40.367C53.4019 37.7657 53.4019 35.1639 53.4019 32.5616C53.4019 32.4606 53.422 32.4233 53.5323 32.4249C54.1412 32.4249 54.7486 32.4249 55.3575 32.4249C55.4522 32.4249 55.4911 32.4482 55.4864 32.5492C55.4942 32.6952 55.5004 32.8365 55.5004 33.0291Z" fill="#273375"/> -<path d="M65.937 50.0333C65.937 48.1196 66.9747 46.5353 68.6569 45.9528C70.218 45.4122 71.7185 45.5458 73.0854 46.5508C73.3152 46.7293 73.5237 46.9336 73.7067 47.1597C73.7704 47.2343 73.7984 47.2824 73.6928 47.3601C73.2097 47.7173 72.7328 48.0855 72.2591 48.4552C72.1705 48.5251 72.1363 48.5064 72.0758 48.4272C71.4808 47.6661 70.6949 47.416 69.7769 47.6505C68.8588 47.8851 68.2888 48.508 68.1039 49.4291C67.8989 50.4496 68.1257 51.3645 68.994 52.0185C69.4544 52.368 70.0339 52.5222 70.6071 52.4478C71.1803 52.3734 71.7012 52.0763 72.0571 51.6208C72.1363 51.523 72.1798 51.5043 72.2839 51.5866C72.7427 51.947 73.2055 52.3017 73.6726 52.6507C73.7751 52.7268 73.7875 52.7703 73.7021 52.8728C73.3593 53.2876 72.9379 53.6304 72.462 53.8815C71.9861 54.1327 71.4653 54.2871 70.9294 54.336C69.8592 54.4556 68.8355 54.2941 67.9082 53.7147C66.7588 53.0002 66.1483 51.9377 65.9681 50.6081C65.9418 50.4177 65.9314 50.2254 65.937 50.0333Z" fill="#E20714"/> -<path d="M66.8366 32.1111C68.2517 32.136 69.3903 32.5678 70.2648 33.5992C70.3518 33.7017 70.3642 33.7545 70.2446 33.8415C69.7786 34.1879 69.3126 34.5452 68.8544 34.9009C68.7752 34.9615 68.7317 34.991 68.6494 34.8869C68.056 34.1258 67.2731 33.8788 66.352 34.1103C65.4309 34.3417 64.8655 34.9708 64.6806 35.8888C64.4756 36.8923 64.6962 37.7978 65.5396 38.4564C65.9997 38.8143 66.5829 38.9752 67.1615 38.9039C67.74 38.8326 68.2667 38.5348 68.6261 38.0759C68.7037 37.9796 68.7488 37.9609 68.856 38.0448C69.3126 38.4052 69.7771 38.7593 70.2446 39.1073C70.3518 39.1865 70.3502 39.2347 70.2679 39.3341C69.9053 39.7689 69.4568 40.1243 68.9506 40.3779C68.4444 40.6315 67.8913 40.778 67.3259 40.8082C66.425 40.9008 65.5167 40.7274 64.7133 40.3096C64.1678 40.0283 63.6942 39.6254 63.3293 39.132C62.9643 38.6386 62.7177 38.0678 62.6085 37.4639C62.3351 36.1311 62.551 34.8823 63.3712 33.7747C64.0609 32.8427 65.013 32.3457 66.1454 32.1733C66.4079 32.1344 66.6689 32.1251 66.8366 32.1111Z" fill="#273375"/> -<path d="M56.8285 51.6938C57.4389 50.01 58.037 48.3588 58.635 46.7061C58.7111 46.4964 58.7903 46.2883 58.8618 46.077C58.8679 46.044 58.8864 46.0146 58.9136 45.995C58.9408 45.9753 58.9745 45.9668 59.0078 45.9714C59.654 45.9714 60.2986 45.9714 60.9448 45.9714C61.1296 45.9714 61.0535 46.0661 61.024 46.1469C60.384 47.9073 59.7446 49.6704 59.1056 51.436C58.8105 52.2499 58.5107 53.0638 58.2218 53.8809C58.2109 53.9338 58.1798 53.9804 58.1352 54.0108C58.0906 54.0413 58.0358 54.0532 57.9826 54.044C57.2059 54.044 56.4184 54.044 55.6371 54.044C55.5252 54.044 55.4662 54.0254 55.4227 53.9057C54.4907 51.3169 53.5525 48.7337 52.6081 46.1562C52.5553 46.0102 52.5677 45.9698 52.7339 45.9714C53.3351 45.9807 53.9378 45.9807 54.5389 45.9714C54.5983 45.9618 54.6591 45.9754 54.7086 46.0096C54.7581 46.0438 54.7924 46.0958 54.8045 46.1547C55.4476 47.9358 56.0953 49.7154 56.7477 51.4934C56.7679 51.5494 56.7928 51.6053 56.8285 51.6938Z" fill="#E20714"/> -<path d="M87.1993 45.6545C87.7314 45.6526 88.2581 45.7621 88.7453 45.9762C89.2324 46.1902 89.6694 46.5039 90.0279 46.8972C90.1242 47.0028 90.1273 47.0649 90.0186 47.1644C89.6349 47.5185 89.259 47.8789 88.8862 48.2424C88.8039 48.3231 88.7697 48.3045 88.7045 48.2268C88.3674 47.8245 87.9837 47.489 87.4432 47.3974C87.191 47.3517 86.9308 47.3843 86.6976 47.4906C86.5973 47.5272 86.509 47.5906 86.4422 47.6738C86.3754 47.7571 86.3328 47.8571 86.3188 47.963C86.3049 48.0688 86.3202 48.1764 86.3632 48.2742C86.4061 48.3719 86.4751 48.456 86.5624 48.5173C86.807 48.6978 87.0772 48.8407 87.364 48.9414C87.8889 49.1293 88.3954 49.3654 88.8769 49.6466C89.4299 50.0054 89.8275 50.4791 89.9642 51.1377C90.2749 52.6072 89.4392 53.9415 87.9713 54.2599C86.418 54.5954 85.0775 54.1791 83.9793 53.0173C83.8954 52.9303 83.883 52.8759 83.9793 52.7827C84.3583 52.4254 84.7316 52.063 85.0992 51.6954C85.1971 51.596 85.2406 51.5913 85.3322 51.7032C85.6381 52.1057 86.0565 52.4084 86.5345 52.573C86.8724 52.6891 87.2409 52.6792 87.5721 52.545C88.0163 52.3571 88.2478 51.6969 87.687 51.3195C87.3697 51.1258 87.0328 50.9659 86.682 50.8426C86.2763 50.6897 85.884 50.5032 85.5093 50.285C84.6239 49.7398 84.22 48.9429 84.3194 47.9177C84.4204 46.8677 85.0464 46.2091 86.0095 45.8565C86.3904 45.7169 86.7937 45.6484 87.1993 45.6545Z" fill="#E20714"/> -<path d="M33.2989 45.653C34.4095 45.6825 35.3648 46.063 36.1275 46.8956C36.2331 47.009 36.2238 47.0696 36.1088 47.1737C35.7423 47.5071 35.384 47.8499 35.0339 48.202C34.919 48.3154 34.8677 48.3045 34.7683 48.1864C34.4452 47.7965 34.0647 47.4843 33.5459 47.3989C33.2751 47.3462 32.9944 47.3879 32.7506 47.517C32.662 47.5569 32.5851 47.6188 32.5272 47.6968C32.4693 47.7748 32.4323 47.8663 32.4197 47.9626C32.4071 48.059 32.4193 48.1569 32.4552 48.2472C32.4911 48.3375 32.5495 48.4171 32.6247 48.4785C32.8228 48.6482 33.0502 48.7804 33.2958 48.8683C33.7509 49.0625 34.2278 49.2272 34.658 49.4602C35.298 49.8003 35.8184 50.2508 36.0234 50.9777C36.3822 52.2453 35.8572 53.839 34.0911 54.2521C32.5238 54.6187 31.1631 54.176 30.0525 52.9893C29.9794 52.9101 29.9857 52.8681 30.0525 52.7967C30.433 52.4332 30.812 52.0651 31.1848 51.6923C31.278 51.5991 31.3246 51.582 31.4225 51.6923C31.7828 52.1225 32.1991 52.4689 32.7677 52.6041C33.0281 52.6674 33.3008 52.6589 33.5567 52.5792C33.6992 52.5417 33.8271 52.4626 33.9243 52.3519C34.0214 52.2412 34.0833 52.104 34.102 51.9579C34.1454 51.6472 33.9839 51.4484 33.7493 51.2915C33.4131 51.0932 33.0576 50.9292 32.6884 50.8022C32.1391 50.6062 31.6255 50.3218 31.1677 49.9603C30.0369 48.9942 30.0198 46.7263 31.9071 45.9217C32.348 45.7387 32.8215 45.6473 33.2989 45.653Z" fill="#E20714"/> -<path d="M40.6057 33.2093C40.9002 32.9028 41.2523 32.6574 41.6418 32.487C42.1593 32.2678 42.733 32.2183 43.2805 32.3457C43.3892 32.3721 43.4358 32.4078 43.4358 32.529C43.4358 33.1503 43.4358 33.7716 43.4358 34.393C43.4358 34.5017 43.4172 34.5265 43.3007 34.5001C42.7446 34.3553 42.1571 34.3873 41.62 34.5918C41.4016 34.6812 41.1996 34.8061 41.022 34.9615C40.8831 35.0681 40.772 35.2067 40.6982 35.3654C40.6244 35.5242 40.59 35.6984 40.5979 35.8733C40.6259 37.3567 40.6072 38.8401 40.6135 40.3235C40.6135 40.4789 40.5777 40.5208 40.4208 40.5177C39.8492 40.5068 39.2792 40.5099 38.7122 40.5177C38.5833 40.5177 38.5444 40.4835 38.5444 40.353C38.5444 37.7642 38.5444 35.1753 38.5444 32.5865C38.5444 32.4622 38.5802 32.4311 38.6998 32.4311C39.29 32.4311 39.8787 32.4311 40.469 32.4311C40.601 32.4311 40.6243 32.4793 40.6166 32.5865C40.601 32.7791 40.6057 32.9701 40.6057 33.2093Z" fill="#273375"/> -<path d="M49.18 46.7449C49.4623 46.4571 49.7937 46.222 50.1586 46.0506C50.6823 45.8137 51.2689 45.7532 51.83 45.8782C51.948 45.9046 52.0055 45.9434 52.0039 46.0832C51.9925 46.6849 51.9925 47.2871 52.0039 47.8897C52.0039 48.0451 51.9589 48.0544 51.8237 48.0264C51.162 47.896 50.5158 47.9099 49.9147 48.2672C49.8091 48.3317 49.7084 48.4039 49.6134 48.4831C49.4678 48.5911 49.3511 48.7334 49.2739 48.8973C49.1966 49.0613 49.1612 49.2419 49.1707 49.4229C49.1986 50.8892 49.1707 52.354 49.1878 53.8203C49.1878 54.016 49.1303 54.0487 48.9517 54.0455C48.4002 54.0331 47.8472 54.0362 47.2943 54.0455C47.1638 54.0455 47.1172 54.0254 47.1172 53.8778C47.1172 51.3014 47.1172 48.7244 47.1172 46.1469C47.1172 46.004 47.156 45.9714 47.2927 45.9745C47.8643 45.9823 48.436 45.9745 49.0014 45.9745C49.1349 45.9745 49.1924 45.9978 49.18 46.1454C49.1691 46.3287 49.18 46.5151 49.18 46.7449Z" fill="#E20613"/> -<path d="M62.175 50.0147C62.175 48.7301 62.175 47.4455 62.175 46.1625C62.175 46.0071 62.217 45.9668 62.3707 45.9699C62.9408 45.9792 63.5109 45.9776 64.0794 45.9699C64.2099 45.9699 64.2611 45.9916 64.2596 46.1392C64.2596 48.7208 64.2596 51.3019 64.2596 53.8825C64.2596 53.9974 64.2394 54.0378 64.1042 54.0378C63.5093 54.03 62.9129 54.03 62.3179 54.0378C62.189 54.0378 62.1626 53.9943 62.1626 53.8825C62.173 52.5953 62.1771 51.306 62.175 50.0147Z" fill="#E20714"/> -<path d="M61.8767 43.3618C61.8792 43.0114 62.0202 42.6761 62.2691 42.4293C62.5179 42.1825 62.8543 42.0442 63.2048 42.0446C63.3858 42.0328 63.5674 42.0584 63.7381 42.1198C63.9088 42.1811 64.0651 42.2769 64.1973 42.4012C64.3295 42.5255 64.4346 42.6756 64.5063 42.8422C64.578 43.0089 64.6147 43.1885 64.6141 43.3699C64.6134 43.5513 64.5755 43.7307 64.5026 43.8968C64.4297 44.063 64.3235 44.2124 64.1905 44.3357C64.0574 44.4591 63.9005 44.5537 63.7293 44.6139C63.5581 44.674 63.3764 44.6983 63.1955 44.6853C62.8455 44.6832 62.5106 44.543 62.2636 44.2951C62.0166 44.0472 61.8775 43.7118 61.8767 43.3618Z" fill="#E20714"/> -<path d="M66.874 10.1363C66.9643 10.0508 67.0696 9.98289 67.1847 9.93595C67.6244 9.72935 68.0982 9.60511 68.5827 9.56937C68.8432 9.57505 69.0998 9.63482 69.336 9.74489C69.4432 9.78372 69.4494 9.90022 69.4261 9.99964C69.3805 10.1625 69.2801 10.3045 69.1419 10.4019C69.0658 10.4641 69.0145 10.506 69.1155 10.5992C69.2164 10.6924 69.1341 10.7452 69.0502 10.7763C68.9624 10.8035 68.8799 10.8455 68.8064 10.9006C68.651 11.0326 68.7504 11.2112 68.7007 11.3666C68.6929 11.4092 68.6929 11.4529 68.7007 11.4955C68.71 11.8745 68.6728 11.9211 68.2906 11.9413C68.0817 11.9681 67.8694 11.948 67.6693 11.8823C67.7858 11.8667 67.8837 11.859 67.98 11.8419C68.0181 11.8387 68.0533 11.8206 68.0781 11.7915C68.1028 11.7624 68.115 11.7246 68.112 11.6865C68.112 11.6027 68.0344 11.6011 68.0048 11.5654C67.8278 11.3541 67.5186 11.4939 67.3478 11.2951C67.3183 11.2594 67.2422 11.247 67.2577 11.191C67.2732 11.1351 67.3462 11.1165 67.3944 11.1258C67.5901 11.1615 67.6398 11.0046 67.7579 10.913C67.9378 10.7576 68.1306 10.6178 68.3341 10.4951C68.4571 10.4351 68.5665 10.3505 68.6557 10.2466C68.766 10.1115 68.7489 10.0711 68.5827 10.0276C68.0732 9.89401 67.5761 9.97789 67.0806 10.1084C67.0185 10.1286 66.9579 10.1736 66.874 10.1363Z" fill="#9E9E9D"/> -<path d="M50.738 13.3144C50.7396 13.3031 50.7396 13.2916 50.738 13.2803C50.9128 13.2501 51.0914 13.2501 51.2662 13.2803L50.738 13.3144Z" fill="#9E9E9D"/> -<path d="M49.7399 20.2921L49.6494 20.3498L49.6104 20.3123L49.7149 20.264L49.7399 20.2921Z" fill="#273375"/> -<path d="M49.7144 20.2641C49.7502 20.2485 49.7846 20.2219 49.822 20.2641L49.744 20.3015L49.7144 20.2641Z" fill="#273375"/> -<path d="M49.8222 20.2587L49.8062 20.2347L49.8286 20.2251C49.8241 20.235 49.8204 20.2452 49.8174 20.2555L49.8222 20.2587Z" fill="#273375"/> -<path d="M48.0244 17.6808C48.0368 17.6125 48.1222 17.6482 48.1315 17.5861C48.1243 17.5785 48.1159 17.5722 48.1067 17.5674C47.549 17.4525 47.0722 17.6777 46.5736 17.889C46.127 18.0871 45.6942 18.3149 45.2781 18.5709C45.1966 18.6152 45.1126 18.6546 45.0265 18.6889C44.9892 18.7044 44.9457 18.7433 44.91 18.6889C44.9047 18.6793 44.9014 18.6687 44.9003 18.6577C44.8992 18.6468 44.9004 18.6358 44.9037 18.6253C44.9071 18.6148 44.9125 18.6051 44.9197 18.5969C44.927 18.5886 44.9358 18.5818 44.9457 18.5771C45.2191 18.4217 45.2408 18.0567 45.5049 17.8781C45.7689 17.6994 45.9818 17.5006 46.2194 17.3111C46.2878 17.2568 46.3608 17.2102 46.3452 17.1045C46.3447 17.0951 46.3465 17.0857 46.3502 17.0771C46.354 17.0685 46.3597 17.0608 46.367 17.0548C46.6932 16.8513 46.7755 16.4133 47.1436 16.258C47.1153 16.2037 47.0679 16.1618 47.0106 16.1403C46.9533 16.1188 46.89 16.1192 46.833 16.1415C46.7882 16.1548 46.7408 16.1572 46.6949 16.1486C46.649 16.14 46.6058 16.1205 46.5689 16.0918C46.6093 15.9986 46.7056 15.9892 46.7833 15.9364C46.6466 15.8417 46.7103 15.7811 46.8112 15.7159C46.9201 15.6715 47.0346 15.6422 47.1514 15.6289C47.2371 15.6167 47.3169 15.5781 47.3797 15.5186C47.2664 15.4906 47.1484 15.4864 47.0333 15.5062C46.8609 15.5062 46.6326 15.5574 46.5456 15.4145C46.4586 15.2716 46.6341 15.1256 46.7118 14.9905C46.8818 14.6772 47.1349 14.4171 47.4434 14.2387C47.4978 14.2076 47.5584 14.1641 47.6127 14.2107C47.6671 14.2573 47.6314 14.335 47.6127 14.3971C47.5724 14.5182 47.4698 14.5773 47.344 14.6425C47.6034 14.6984 47.8442 14.7419 48.0772 14.8087C48.1393 14.8258 48.3055 14.7854 48.248 14.9641C48.2387 14.9905 48.3086 14.9889 48.3443 14.9967C48.4515 15.0215 48.5618 15.0386 48.6705 15.0666C48.7063 15.0759 48.7637 15.0806 48.7622 15.1365C48.7606 15.1924 48.6954 15.166 48.6628 15.2002C49.8682 15.5512 51.0937 15.8215 52.1344 16.6168C51.5996 16.8799 51.0369 17.0821 50.4569 17.2195C50.1089 17.3065 49.7563 17.3748 49.4068 17.4556C49.3781 17.4671 49.3477 17.4739 49.3167 17.4758C49.0061 17.4463 48.7171 17.5798 48.4298 17.6793C48.3658 17.7067 48.2969 17.721 48.2272 17.7213C48.1576 17.7215 48.0886 17.7078 48.0244 17.6808Z" fill="#FEFEFE"/> -<path d="M48.5884 12.3017C48.4424 12.4461 48.2545 12.443 48.1038 12.5269C48.023 12.5719 48.0292 12.4663 47.9997 12.4057C47.7124 12.6869 47.3784 12.8904 47.0771 13.1405C46.8707 13.3199 46.7027 13.5391 46.5831 13.7851C46.4278 14.0771 46.2818 14.366 45.9913 14.5617C45.9152 14.6114 45.9307 14.7668 45.8453 14.8444C45.822 14.8646 45.8127 14.8988 45.7925 14.9221C45.7474 14.9718 45.6946 15.0417 45.6247 14.9889C45.5548 14.9361 45.6418 14.891 45.6589 14.8429C45.676 14.7947 45.6993 14.7932 45.707 14.7637C45.7148 14.7342 45.822 14.7155 45.7567 14.6425C45.6915 14.5695 45.6511 14.5959 45.5874 14.6425C44.9984 15.0197 44.4461 15.4514 43.9378 15.9318C43.4858 16.3574 43.0664 16.8156 42.6501 17.2754C42.6175 17.3127 42.5973 17.3732 42.5258 17.3639C42.5025 17.2847 42.5693 17.2505 42.6019 17.2086C43.0353 16.634 43.4178 16.0228 43.7452 15.3819C43.7934 15.282 43.8709 15.1991 43.9673 15.1442C44.4551 14.8342 44.8965 14.4567 45.2783 14.0227C45.8742 13.3613 46.5722 12.7997 47.3458 12.3591C47.5347 12.255 47.7449 12.1956 47.9604 12.1856C48.1759 12.1757 48.3907 12.2154 48.5884 12.3017Z" fill="#FEFEFE"/> -<path d="M48.1969 19.8865C47.4886 20.2329 46.9449 20.7781 46.2428 21.036C45.9189 21.1638 45.6302 21.3673 45.4009 21.6293C45.3792 21.6511 45.3512 21.6868 45.3295 21.6853C44.9924 21.6495 44.8635 21.926 44.6677 22.1124C44.6367 22.1435 44.6196 22.2181 44.5621 22.1792C44.5046 22.1404 44.5217 22.0783 44.5621 22.0239C44.691 21.8686 44.8169 21.7024 44.9365 21.5377C45.0342 21.4081 45.0973 21.2557 45.1198 21.095C45.1198 21.0717 45.1431 21.0298 45.14 21.0267C44.9023 20.8946 45.1508 20.8434 45.1928 20.7952C45.5396 20.3677 46.0318 20.083 46.5752 19.9953C46.7653 19.9626 46.9506 19.9062 47.1266 19.8275C47.2232 19.781 47.3323 19.7673 47.4373 19.7887C47.6719 19.8415 47.9219 19.756 48.1969 19.8865Z" fill="#FEFEFE"/> -<path d="M49.694 18.0691C49.6704 18.1026 49.6404 18.1311 49.6058 18.153C49.5711 18.1748 49.5325 18.1896 49.4921 18.1965C49.2513 18.2415 49.009 18.2773 48.7667 18.3146C48.7325 18.3146 48.6797 18.3146 48.6657 18.2959C48.6518 18.2773 48.6782 18.2151 48.7046 18.1825C48.7466 18.1372 48.8004 18.1044 48.8599 18.0878C48.9323 18.0748 49.0025 18.0513 49.068 18.0179C49.2886 17.8641 49.4874 17.9185 49.694 18.0691Z" fill="#FEFEFE"/> -<path d="M47.869 20.8542C47.813 20.994 47.796 21.14 47.6468 21.2037C47.5191 21.2483 47.4021 21.3192 47.3036 21.4119C47.2924 21.423 47.2792 21.4318 47.2647 21.4379C47.2502 21.4439 47.2346 21.447 47.2189 21.447C47.2032 21.447 47.1876 21.4439 47.1731 21.4379C47.1585 21.4318 47.1454 21.423 47.1342 21.4119C47.0814 21.3513 47.1669 21.3218 47.201 21.2876C47.3362 21.1525 47.476 21.0235 47.6111 20.89C47.6349 20.8616 47.6654 20.8396 47.6999 20.8261C47.7343 20.8125 47.7716 20.8078 47.8084 20.8123C47.841 20.8201 47.8674 20.8309 47.869 20.8542Z" fill="#FEFEFE"/> -<path d="M75.4 35.2318C74.8594 35.2318 74.3204 35.2318 73.7799 35.2318C73.6245 35.2318 73.6245 35.1836 73.6603 35.0609C73.7651 34.7208 73.9723 34.4213 74.2537 34.2034C74.535 33.9854 74.8767 33.8596 75.2322 33.8431C75.7541 33.8136 76.2481 33.8881 76.6675 34.2299C76.9344 34.4472 77.1133 34.7541 77.1708 35.0935C77.1925 35.2069 77.163 35.2318 77.0558 35.2302C76.5044 35.2302 75.9514 35.2318 75.4 35.2318Z" fill="#FEFEFE"/> -<path d="M77.0527 48.7814C77.1289 48.3921 77.3365 48.0407 77.6407 47.7862C77.945 47.5317 78.3275 47.3895 78.7241 47.3834C79.1346 47.3533 79.545 47.444 79.9046 47.6443C80.0881 47.7497 80.2457 47.8948 80.3659 48.0689C80.486 48.2431 80.5656 48.4419 80.599 48.6509C80.6145 48.7332 80.6254 48.7907 80.5042 48.7891C79.3579 48.7798 78.2115 48.7814 77.0527 48.7814Z" fill="#FEFEFE"/> -<path d="M41.7239 48.7814C41.1787 48.7814 40.6366 48.7814 40.0883 48.7814C39.9329 48.7814 39.9329 48.7379 39.9718 48.6152C40.0787 48.2589 40.2968 47.9461 40.5942 47.7225C40.8915 47.499 41.2525 47.3763 41.6245 47.3725C42.1046 47.3328 42.5828 47.4692 42.9697 47.7562C43.2448 47.9734 43.4284 48.2861 43.4838 48.6322C43.5056 48.7518 43.4838 48.7876 43.3596 48.7798C42.8143 48.7782 42.2691 48.7814 41.7239 48.7814Z" fill="#FEFEFE"/> -<path d="M49.2857 37.5353C49.3975 37.992 49.1303 38.2732 48.8197 38.5372C48.5806 38.7644 48.2904 38.9307 47.9735 39.0221C47.6567 39.1134 47.3225 39.1272 46.9992 39.0622C46.8285 39.0379 46.6711 38.9565 46.5526 38.8313C46.4341 38.706 46.3616 38.5443 46.3468 38.3726C46.3261 38.2082 46.3574 38.0415 46.4362 37.8959C46.5151 37.7502 46.6375 37.6328 46.7864 37.5602C47.1064 37.4112 47.4494 37.3177 47.8007 37.2837C48.2403 37.2076 48.6799 37.1392 49.1179 37.0569C49.2515 37.0336 49.295 37.0678 49.281 37.2014C49.2779 37.3117 49.2857 37.425 49.2857 37.5353Z" fill="#FEFEFE"/> -</symbol> - -<symbol id="fabriqueDeTerritoire" viewBox="0 0 120 56" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M67.2273 20.667H65.6731V24.4108H67.2273C68.0184 24.4108 68.6205 24.2445 69.0371 23.9102C69.4536 23.5759 69.6602 23.0823 69.6602 22.4278C69.6602 21.7732 69.4519 21.3164 69.0371 21.0573C68.6223 20.7965 68.0184 20.667 67.2273 20.667ZM67.4723 18.2727L67.6229 18.2744C68.2757 18.2832 68.89 18.3514 69.4659 18.4774C70.0855 18.614 70.628 18.8415 71.0919 19.1635C71.5557 19.4838 71.9232 19.9109 72.1963 20.4412C72.4693 20.9733 72.6058 21.6349 72.6058 22.426C72.6058 23.4079 72.3905 24.2165 71.9617 24.8501C71.5329 25.4837 70.9571 25.958 70.2342 26.2713L73.2604 31.6096H69.8859L67.3288 26.8016H65.6731V31.6096H62.6662V18.2727H67.4723ZM60.8687 18.2727V20.8105H55.5304V23.4902H60.0705V26.007H55.5304V29.0752H61.0717V31.6113H52.5235V18.2744H60.8687V18.2727ZM50.4407 18.2727V31.6096H47.4337V18.2727H50.4407ZM46.4133 18.2727V20.8105H42.7536V31.6113H39.7274V20.8105H36.0676V18.2727H46.4133ZM78.3309 18.0276C79.108 18.0276 79.8746 18.1782 80.6307 18.4774C81.3868 18.7767 82.0519 19.2143 82.6242 19.7866L81.091 21.6892L80.9983 21.6174C80.5939 21.3111 80.1879 21.0731 79.7836 20.9015C79.3478 20.7178 78.863 20.625 78.3309 20.625C77.8128 20.625 77.3997 20.73 77.0935 20.9418C76.7872 21.1536 76.6331 21.4494 76.6331 21.8309C76.6331 22.0357 76.6839 22.209 76.7872 22.3525C76.8887 22.496 77.0322 22.6255 77.216 22.7411C77.3997 22.8566 77.615 22.9668 77.8601 23.0683C78.1051 23.1699 78.3711 23.2836 78.6582 23.4061L80.3752 24.101L80.4679 24.1395C81.2415 24.4633 81.8541 24.9009 82.3074 25.4504C82.7783 26.0228 83.0128 26.7806 83.0128 27.7205C83.0128 28.2788 82.9008 28.8074 82.675 29.3062C82.4492 29.8033 82.1237 30.2409 81.6931 30.6154C81.2643 30.99 80.7357 31.291 80.1074 31.5151C79.4808 31.7408 78.7719 31.8528 77.9808 31.8528C77.1075 31.8528 76.2393 31.6918 75.373 31.3715C74.5066 31.0512 73.733 30.5699 73.0521 29.9293L74.7691 27.864L74.8654 27.9445C75.317 28.3173 75.814 28.6236 76.3549 28.8669C76.9342 29.126 77.503 29.2555 78.0631 29.2555C78.6897 29.2555 79.157 29.14 79.4633 28.9072C79.7696 28.6761 79.9236 28.3611 79.9236 27.9655C79.9236 27.7608 79.8799 27.584 79.7906 27.4335C79.7013 27.2829 79.5718 27.1499 79.402 27.0344C79.2323 26.9189 79.0275 26.8086 78.7877 26.7071C78.5497 26.6056 78.2871 26.4918 78.0001 26.3693L76.2621 25.6325L76.1483 25.5852C75.8473 25.4557 75.555 25.2947 75.2697 25.1004C74.9494 24.8816 74.6624 24.6261 74.4103 24.3338C74.1583 24.0397 73.957 23.7002 73.8065 23.3116C73.656 22.9231 73.5807 22.4838 73.5807 21.9919C73.5807 21.4459 73.6962 20.9313 73.929 20.4482C74.16 19.9634 74.4873 19.5416 74.9109 19.1793C75.3327 18.8187 75.835 18.5352 76.4144 18.3304C76.9972 18.1309 77.6343 18.0276 78.3309 18.0276ZM76.4336 33.274L77.5993 35.7909L77.6745 35.9484C77.7988 36.2145 77.9248 36.4928 78.0491 36.7815C78.1996 37.1299 78.3694 37.5149 78.5602 37.9367H78.6424L78.6914 37.7967C78.8245 37.4291 78.954 37.0896 79.0817 36.7798C79.2253 36.4315 79.3653 36.1007 79.5018 35.7874L80.566 33.2706H83.7759L80.3192 39.8987L83.9999 46.6092H80.6465L79.318 43.8893L79.1553 43.5358C79.0485 43.3012 78.9417 43.0667 78.8367 42.8357C78.6792 42.4874 78.5059 42.1093 78.3151 41.6998H78.2329L78.1769 41.852C78.0456 42.2038 77.9143 42.5311 77.7831 42.8357C77.6325 43.184 77.4838 43.534 77.3332 43.8893L76.0853 46.6092H72.8544L76.5561 39.757L73.0801 33.2723H76.4336V33.274ZM59.6522 33.274V35.8102H54.314V38.4898H58.8541V41.0067H54.314V44.0748H59.8553V46.6109H51.307V33.274H59.6522ZM49.0107 33.274V46.6109H46.0038V33.274H49.0107ZM39.2688 33.274V44.0748H44.5458V46.6109H36.2637V33.274H39.2688ZM64.6072 33.274V40.8386C64.6159 42.0953 64.8137 42.9774 65.2005 43.4815C65.5961 43.9996 66.1684 44.2586 66.9175 44.2586C67.6666 44.2586 68.2459 43.9996 68.6555 43.4815C69.0651 42.9634 69.2698 42.0498 69.2698 40.7406V33.274H72.1735V40.5516C72.1578 42.7271 71.7114 44.3181 70.8346 45.3228C69.9419 46.3449 68.6363 46.8577 66.9175 46.8577C65.1865 46.8577 63.8633 46.3467 62.9497 45.3228C62.0361 44.3006 61.5793 42.6711 61.5793 40.4343V33.274H64.6072Z" fill="#4232C5"/> -<path d="M65.7327 50.1237H52.9559V53.4072H65.7327V50.1237Z" fill="#E8336D"/> -<path d="M77.9546 13.3755C78.0141 13.1059 78.0701 12.8697 78.1226 12.6684C78.1751 12.4653 78.2399 12.2781 78.3169 12.103C78.3939 11.928 78.4989 11.76 78.6355 11.5972C78.7702 11.4344 78.9575 11.2524 79.192 11.0494C79.1693 11.3189 79.1325 11.557 79.0853 11.7652C79.038 11.9735 78.968 12.1661 78.8735 12.3463C78.779 12.5266 78.6582 12.6999 78.5112 12.8697C78.3642 13.0394 78.1786 13.2075 77.9546 13.3755ZM78.8875 16.9547C79.0818 16.9547 79.3181 16.932 79.5981 16.8865C79.8781 16.841 80.1722 16.7727 80.4802 16.6799C80.7883 16.5889 81.0998 16.4734 81.4131 16.3369C81.7264 16.2004 82.0064 16.0429 82.2515 15.8661C82.4965 15.6893 82.696 15.4898 82.8501 15.2657C83.0041 15.0435 83.0811 14.8054 83.0811 14.5551C83.0811 14.4641 83.0688 14.3731 83.0461 14.2804C83.0233 14.1893 82.9551 14.1438 82.8413 14.1438C82.7275 14.1438 82.619 14.1858 82.5158 14.2716C82.4125 14.3574 82.3162 14.4571 82.2252 14.5709C82.1342 14.6847 82.0449 14.7967 81.9592 14.9052C81.8734 15.0137 81.8017 15.096 81.7457 15.1537C81.3343 15.4845 80.8845 15.7243 80.3927 15.8731C79.9026 16.0218 79.3881 16.0954 78.8507 16.0954C78.6687 16.0954 78.4989 16.0866 78.3449 16.0691C78.1909 16.0516 78.0544 16.0061 77.9336 15.9326C77.8146 15.8591 77.7201 15.7576 77.6518 15.6333C77.5836 15.5073 77.5486 15.3428 77.5486 15.1362V15.1012C77.5486 15.0662 77.5608 15.0102 77.5836 14.9297C77.6063 14.8492 77.6238 14.7932 77.6343 14.7582C78.0001 14.4501 78.3257 14.1561 78.611 13.876C78.8963 13.596 79.1395 13.2967 79.3391 12.9764C79.5386 12.6561 79.6874 12.3078 79.7836 11.9315C79.8799 11.5552 79.9289 11.1212 79.9289 10.6293C79.9289 10.5838 79.9254 10.5016 79.9201 10.3808C79.9149 10.26 79.9114 10.1778 79.9114 10.1323C79.8659 10.0062 79.8116 9.88898 79.7486 9.78046C79.6856 9.67195 79.5806 9.61769 79.4318 9.61769C79.0328 9.61769 78.6985 9.70695 78.4307 9.88373C78.1629 10.0605 77.9424 10.2863 77.7708 10.5611C77.5993 10.8359 77.4663 11.1317 77.3683 11.452C77.272 11.7722 77.188 12.0698 77.1197 12.3428C77.097 12.4111 77.0655 12.5406 77.0252 12.7279C76.985 12.9169 76.9395 13.1129 76.8887 13.3195C76.838 13.526 76.7854 13.7168 76.7347 13.8935C76.6839 14.0703 76.6454 14.1928 76.6227 14.2628L76.5369 15.446C76.6857 16.0516 76.9622 16.4542 77.3683 16.6537C77.7761 16.855 78.2819 16.9547 78.8875 16.9547ZM70.7226 16.9547C70.8696 16.9547 70.9974 16.9512 71.1041 16.946C71.2109 16.9407 71.3159 16.925 71.4174 16.9022C71.5189 16.8795 71.6327 16.8532 71.757 16.8235C71.8812 16.7937 72.0335 16.7517 72.2155 16.6939C72.3521 16.6362 72.5638 16.5522 72.8509 16.4419C73.1397 16.3316 73.4355 16.2196 73.7418 16.1041C74.0463 15.9886 74.3333 15.8783 74.5976 15.7751C74.8637 15.6718 75.0352 15.607 75.1157 15.5843C75.3992 15.4565 75.695 15.3007 76.0066 15.1152C76.3181 14.9297 76.6034 14.7162 76.8625 14.4729C77.1232 14.2296 77.3403 13.9583 77.5153 13.6573C77.6903 13.3562 77.7778 13.0219 77.7778 12.6509C77.7778 12.5354 77.7586 12.4163 77.7183 12.2956C77.6781 12.1748 77.5853 12.1135 77.4383 12.1135C77.2808 12.1135 77.1617 12.1713 77.0812 12.2868C77.0025 12.4023 76.9307 12.5389 76.8695 12.6946C76.8064 12.8504 76.7504 13.0097 76.6997 13.1707C76.6489 13.3317 76.5894 13.4595 76.5212 13.5522C76.2271 13.8883 75.8316 14.2086 75.3345 14.5149C74.8374 14.8212 74.3088 15.0837 73.7488 15.3042C73.1887 15.5248 72.6321 15.6998 72.0773 15.8328C71.5224 15.9658 71.0429 16.0324 70.6351 16.0324C70.6123 16.0324 70.5336 16.0289 70.397 16.0236C70.2605 16.0183 70.1765 16.0149 70.1432 16.0149C70.0522 15.9571 69.9542 15.8993 69.8457 15.8416C69.7389 15.7838 69.6724 15.6963 69.6514 15.5808V15.425C69.6514 15.355 69.6479 15.2867 69.6427 15.2167C69.6374 15.1467 69.6339 15.0785 69.6339 15.0085V14.8527C69.6339 14.4834 69.6759 14.1648 69.7617 13.8988C69.8457 13.6328 69.9647 13.3842 70.1187 13.1532C70.271 12.9222 70.4495 12.6929 70.6526 12.4688C70.8556 12.2431 71.0761 11.9858 71.3142 11.697C71.3247 11.6742 71.3509 11.6427 71.3912 11.6025C71.4314 11.5622 71.4559 11.536 71.4682 11.5237H71.5364C71.6275 11.5465 71.701 11.5867 71.757 11.6445C71.813 11.7022 71.8672 11.76 71.918 11.8178C71.9688 11.8755 72.0283 11.9245 72.0965 11.9648C72.1648 12.005 72.2435 12.026 72.3346 12.026C72.4816 12.026 72.6111 11.9963 72.7249 11.9385C72.8386 11.8808 72.8946 11.7775 72.8946 11.627C72.8946 11.4887 72.8684 11.3347 72.8176 11.1667C72.7669 10.9986 72.6934 10.8394 72.5971 10.6906C72.5008 10.5418 72.3906 10.4123 72.2663 10.309C72.142 10.2058 72.0003 10.1533 71.8427 10.1533C71.764 10.1533 71.7045 10.162 71.6642 10.1795C71.624 10.197 71.5907 10.2198 71.5627 10.2495C71.5347 10.2793 71.4997 10.3073 71.4612 10.337C71.4209 10.3668 71.3737 10.3983 71.3177 10.4316C71.1024 10.351 70.8504 10.4141 70.5633 10.6223C70.2763 10.8306 69.9927 11.1247 69.7144 11.5062C69.4379 11.8878 69.1946 12.3446 68.9846 12.8767C68.7746 13.4087 68.6433 13.9688 68.5855 14.5586C68.6083 14.9524 68.6555 15.2955 68.729 15.5913C68.8026 15.8871 68.9181 16.1339 69.0773 16.3369C69.2349 16.5399 69.4484 16.6922 69.7127 16.7972C69.9787 16.9022 70.3148 16.9547 70.7226 16.9547ZM61.7998 16.9547C61.8733 16.9547 61.9451 16.946 62.0133 16.9285C62.0816 16.911 62.1411 16.8847 62.1919 16.8497C62.2426 16.8147 62.2636 16.7622 62.2514 16.6922C62.2619 16.5977 62.2846 16.4454 62.3196 16.2354C62.3529 16.0254 62.3914 15.8013 62.4299 15.5685C62.4702 15.334 62.5122 15.1117 62.5577 14.9017C62.6032 14.6917 62.6364 14.5446 62.6592 14.4624C62.7274 14.2278 62.8377 13.9303 62.9917 13.5663C63.1458 13.2039 63.3278 12.8451 63.5378 12.4951C63.7478 12.1433 63.9876 11.8458 64.2537 11.599C64.5214 11.3522 64.791 11.2297 65.064 11.2297V11.809L64.3989 15.2167V15.4443C64.3989 15.6315 64.4077 15.8066 64.4252 15.9711C64.4427 16.1356 64.4812 16.2844 64.5442 16.4192C64.6072 16.5539 64.7 16.6624 64.826 16.7447C64.9503 16.827 65.1218 16.8672 65.3371 16.8672C65.5523 16.8672 65.8149 16.827 66.1212 16.7447C66.4275 16.6624 66.7443 16.5522 67.0681 16.4104C67.3919 16.2704 67.7209 16.1006 68.057 15.9011C68.393 15.7016 68.687 15.4915 68.9443 15.2692C69.1999 15.047 69.4099 14.8089 69.5744 14.5586C69.7389 14.3066 69.8212 14.0528 69.8212 13.7938C69.8212 13.7115 69.7949 13.645 69.7442 13.5925C69.6934 13.54 69.6269 13.5137 69.5482 13.5137H69.4799C69.2524 13.7833 68.9846 14.0616 68.6783 14.3486C68.372 14.6357 68.0412 14.8894 67.6894 15.1135C67.3376 15.3358 66.97 15.5213 66.5902 15.6665C66.2087 15.8136 65.8429 15.8853 65.4911 15.8853V14.4624L66.1387 11.459V11.3889C66.1387 11.3662 66.1422 11.3504 66.1474 11.3452L66.1509 11.3399C66.1544 11.3329 66.1562 11.3189 66.1562 11.3014C66.1562 10.9741 66.0617 10.7046 65.8744 10.4928C65.6871 10.2828 65.4281 10.176 65.099 10.176C64.9398 10.176 64.7717 10.2163 64.5967 10.2985C64.4199 10.3808 64.2694 10.4806 64.1451 10.5978C64.1119 10.6451 64.0366 10.7203 63.9229 10.8254C63.8091 10.9304 63.6866 11.0424 63.5571 11.1597C63.4258 11.2769 63.3033 11.3872 63.1913 11.494C63.0775 11.599 62.9987 11.669 62.9532 11.704V10.5086C62.9532 10.4036 62.8937 10.3178 62.7747 10.253C62.6557 10.1883 62.5507 10.1568 62.4597 10.1568C62.4264 10.1568 62.3634 10.1603 62.2724 10.1655C62.1814 10.1708 62.1184 10.197 62.0851 10.2443L61.7438 12.5809V13.0727L61.1592 16.5854V16.6379C61.1592 16.778 61.21 16.8655 61.3132 16.9022C61.4148 16.9372 61.518 16.9547 61.6195 16.9547H61.7998ZM53.5579 16.0604V15.579L53.9727 13.4927C53.985 13.4577 54.0042 13.4122 54.0322 13.3597C54.0602 13.3055 54.0952 13.2495 54.1355 13.1899C54.1757 13.1304 54.2125 13.0797 54.2475 13.0377C54.2825 12.9957 54.3052 12.9747 54.3157 12.9747C54.3735 12.9152 54.4803 12.8031 54.6343 12.6369C54.7883 12.4706 54.9563 12.2921 55.1349 12.1013C55.3134 11.9105 55.4832 11.7355 55.6442 11.5762C55.8052 11.4169 55.9207 11.3067 55.989 11.2472C56.0117 11.2349 56.0607 11.2297 56.136 11.2297H56.283C56.4563 11.2297 56.5928 11.2419 56.6978 11.2647C56.8011 11.2892 56.9271 11.3662 57.0776 11.4957C57.0776 11.5202 57.0811 11.5552 57.0864 11.6025L57.0899 11.6287C57.0934 11.6637 57.0951 11.69 57.0951 11.7092C57.0951 12.054 57.0514 12.3901 56.9656 12.7156C56.8799 13.0429 56.8309 13.3842 56.8186 13.7413C56.6803 13.9548 56.4843 14.1963 56.2323 14.4624C55.9785 14.7302 55.6984 14.9822 55.3869 15.2202C55.0754 15.4583 54.7603 15.6578 54.4383 15.8171C54.1145 15.9798 53.8222 16.0604 53.5579 16.0604ZM53.4214 16.9547C53.7312 16.9547 54.0357 16.8917 54.3333 16.764C54.6308 16.6362 54.9231 16.4857 55.2101 16.3124C55.4972 16.1391 55.772 15.9466 56.0362 15.7383C56.3005 15.53 56.5473 15.3323 56.7766 15.1467C56.7538 15.3673 56.7573 15.579 56.7854 15.7821C56.8134 15.9851 56.8694 16.1584 56.9481 16.3036C57.0286 16.4489 57.1494 16.5644 57.3087 16.6519C57.4697 16.7395 57.6762 16.7832 57.9283 16.7832C58.0893 16.7832 58.2696 16.7622 58.4708 16.7219C58.6721 16.6817 58.8751 16.6257 59.0817 16.5574C59.2882 16.4874 59.4895 16.4157 59.6838 16.3404C59.878 16.2651 60.0566 16.1811 60.2176 16.0884C60.3086 16.0534 60.4609 15.9781 60.6727 15.8626C60.8844 15.7471 61.112 15.6245 61.3517 15.4968C61.5933 15.369 61.8191 15.2535 62.0308 15.1485C62.2426 15.0435 62.3896 14.9629 62.4702 14.9052C62.5279 14.8579 62.5594 14.8089 62.5647 14.7564C62.5699 14.7039 62.5734 14.6497 62.5734 14.5919C62.5734 14.4764 62.5367 14.3836 62.4614 14.3136C62.3861 14.2436 62.2916 14.2086 62.1779 14.2086C62.1656 14.2086 62.1464 14.2121 62.1184 14.2173L62.0991 14.2208C62.0816 14.2243 62.0676 14.2261 62.0589 14.2261L58.7911 15.7576C58.6756 15.8048 58.5653 15.8293 58.4551 15.8363C58.3448 15.8433 58.2346 15.8451 58.119 15.8451C58.0963 15.8451 58.0385 15.8416 57.9475 15.8363C57.8565 15.8311 57.7987 15.8276 57.776 15.8276C57.7637 15.8048 57.7497 15.7383 57.7322 15.628C57.7147 15.5178 57.7007 15.4513 57.6885 15.4285V15.3235C57.6885 15.0102 57.72 14.7109 57.783 14.4274C57.846 14.1438 57.9143 13.8568 57.9895 13.5663C58.0648 13.2757 58.133 12.9887 58.1961 12.7051C58.2591 12.4216 58.2906 12.1275 58.2906 11.8265C58.2906 11.606 58.2713 11.3854 58.2311 11.1649C58.1908 10.9444 58.1225 10.7466 58.0245 10.5733C57.9265 10.4001 57.7952 10.2565 57.629 10.1463C57.4627 10.036 57.2527 9.98174 57.0006 9.98174H56.6908C56.003 10.0623 55.3694 10.2863 54.7901 10.6521C54.2107 11.0179 53.7347 11.4695 53.3619 12.0085C52.9891 12.5476 52.7318 13.1532 52.5883 13.827C52.4447 14.4991 52.471 15.1835 52.6653 15.8801V16.4192C52.723 16.6047 52.8193 16.7412 52.9576 16.8287C53.0958 16.911 53.2498 16.9547 53.4214 16.9547ZM49.2103 16.9547C49.3713 16.9547 49.6023 16.9022 49.9051 16.7972C50.2079 16.6922 50.5405 16.5522 50.901 16.3754C51.2616 16.2004 51.6309 16.0043 52.0089 15.7873C52.387 15.5703 52.73 15.3515 53.0398 15.1292C53.3496 14.9069 53.6016 14.6899 53.7959 14.4799C53.9902 14.2699 54.0882 14.0931 54.0882 13.9531C54.0882 13.9181 54.083 13.8655 54.0707 13.7955C54.0585 13.7255 54.0357 13.6905 54.0025 13.6905H53.4879C53.3969 13.7605 53.3111 13.8305 53.2306 13.9005C53.1476 13.9674 53.071 14.0257 53.0008 14.0764C52.9348 14.1242 52.8744 14.165 52.8193 14.1998C52.751 14.2471 52.6793 14.2961 52.604 14.3486C52.5287 14.4011 52.4692 14.4694 52.4237 14.5499L50.9133 15.4985C50.7872 15.5213 50.6665 15.5598 50.5527 15.6123C50.4389 15.6648 50.3217 15.7208 50.2009 15.7786C50.0801 15.8363 49.9629 15.8906 49.8491 15.9361C49.7353 15.9816 49.6093 16.0061 49.4711 16.0061C49.4133 16.0061 49.3538 16.0026 49.2908 15.9973C49.2278 15.9921 49.2015 15.9361 49.2138 15.8311V15.3743C49.2138 15.1397 49.24 14.8789 49.2908 14.5936C49.3415 14.3066 49.394 14.0196 49.4448 13.7325C49.4956 13.4455 49.5481 13.1619 49.5988 12.8802C49.6496 12.5984 49.6758 12.3481 49.6758 12.1258C49.6758 11.8808 49.6321 11.69 49.5463 11.5552C49.4606 11.4204 49.3153 11.2944 49.1088 11.1772C48.925 11.0826 48.7132 10.9951 48.4734 10.9146C48.2336 10.8341 48.0061 10.7571 47.7943 10.6871C47.5825 10.6171 47.4058 10.5523 47.2622 10.4946C47.1187 10.4368 47.054 10.3825 47.0645 10.337C46.9507 10.337 46.8527 10.3773 46.7722 10.4596C46.6917 10.5418 46.6234 10.6381 46.5656 10.7501C46.5079 10.8621 46.4659 10.9811 46.4361 11.1107C46.4081 11.2402 46.3924 11.3504 46.3924 11.445C46.3924 11.5395 46.3959 11.6182 46.4011 11.6812C46.4064 11.746 46.4326 11.8195 46.4781 11.9C46.3521 12.2168 46.2611 12.5056 46.2033 12.7699C46.1456 13.0324 46.0721 13.2827 45.9793 13.5155C45.8883 13.75 45.764 13.9846 45.61 14.2173C45.456 14.4519 45.218 14.6917 44.8977 14.9367C44.8854 15.1467 44.8924 15.3077 44.9152 15.4198C44.9379 15.5318 44.9694 15.6123 45.0097 15.6648C45.0499 15.7173 45.0902 15.7488 45.1304 15.7611C45.1707 15.7733 45.1969 15.7786 45.2074 15.7786C45.6538 15.4618 45.9723 15.1397 46.1613 14.8124C46.3504 14.4851 46.4939 14.1561 46.5901 13.8288C46.6864 13.5015 46.7844 13.1847 46.8824 12.8802C46.9805 12.5756 47.1537 12.2886 47.4058 12.019C47.4058 12.0313 47.488 12.075 47.6543 12.1503C47.8206 12.2256 48.0008 12.3148 48.1951 12.4128C48.3894 12.5126 48.5697 12.6036 48.736 12.6841C48.9022 12.7664 48.9845 12.8136 48.9845 12.8241C48.9845 12.9642 48.9442 13.1514 48.8637 13.386C48.7832 13.6205 48.6922 13.8603 48.5889 14.1053C48.4857 14.3504 48.3947 14.5919 48.3141 14.8247C48.2336 15.0592 48.1934 15.2395 48.1934 15.369C48.1934 15.544 48.2074 15.7226 48.2371 15.9046C48.2651 16.0866 48.3194 16.2529 48.3999 16.4052C48.4804 16.5574 48.5837 16.6869 48.7097 16.792C48.8392 16.9022 49.0055 16.9547 49.2103 16.9547ZM38.2817 16.7762C38.4007 16.7762 38.483 16.7412 38.5302 16.6729L39.5209 14.8334L40.5115 11.5657L40.6831 10.225H41.0069C41.0979 10.225 41.1924 10.2215 41.2886 10.2163C41.3849 10.211 41.4672 10.2075 41.5372 10.2075C42.015 10.2075 42.4911 10.239 42.9636 10.302C43.4362 10.365 43.9 10.3966 44.3551 10.3966C44.5038 10.3966 44.6544 10.351 44.8084 10.2583C44.9624 10.1673 45.0394 10.0342 45.0394 9.86272C45.0394 9.72445 44.9817 9.62469 44.8679 9.56168C44.7541 9.49867 44.6194 9.45317 44.4671 9.42341C44.3131 9.39541 44.1626 9.37966 44.0138 9.37966H40.9228C40.8318 9.40241 40.7828 9.38841 40.7776 9.3359C40.7723 9.28339 40.7688 9.23614 40.7688 9.18888C40.7688 8.73031 40.7828 8.2805 40.8108 7.83944L40.8266 7.5734C40.8441 7.2181 40.8546 6.8558 40.8546 6.48999C40.8546 6.20295 40.8406 5.92291 40.8126 5.64812C40.7846 5.37334 40.7706 5.09855 40.7706 4.82201V4.70124L44.9222 4.35644C45.0587 4.34419 45.2074 4.28468 45.3667 4.17617C45.526 4.06765 45.6065 3.93813 45.6065 3.78936C45.6065 3.77711 45.603 3.75786 45.5978 3.72985L45.5943 3.7106C45.5908 3.6931 45.589 3.6791 45.589 3.67035C45.554 3.63534 45.512 3.58458 45.4612 3.51632C45.4105 3.44806 45.3475 3.3728 45.274 3.29229C45.2004 3.21178 45.1199 3.14352 45.0342 3.08576C44.9484 3.028 44.8609 3 44.7699 3C44.6561 3 44.5879 3.02625 44.5651 3.07701C44.5424 3.12777 44.5336 3.19253 44.5389 3.26604C44.5441 3.3413 44.5441 3.41306 44.5389 3.48132C44.5336 3.54958 44.5021 3.58983 44.4443 3.60208C43.921 3.70535 43.3819 3.77186 42.8306 3.79986C42.2775 3.82787 41.7402 3.84362 41.2169 3.84362C41.0349 3.84362 40.8668 3.82612 40.7128 3.79286C40.5588 3.75786 40.4083 3.7211 40.2595 3.68085C40.1107 3.64059 39.9602 3.60033 39.8062 3.56008C39.6522 3.51982 39.5016 3.50057 39.3529 3.50057C39.3301 3.50057 39.2881 3.50407 39.2251 3.50932L39.1953 3.51282C39.1481 3.51632 39.1166 3.51807 39.0973 3.51807C39.0518 3.57583 39.0256 3.63009 39.0203 3.68085C39.0151 3.7316 39.0116 3.78761 39.0116 3.84362C39.0116 3.96964 39.0343 4.06765 39.0798 4.13591C39.1253 4.20417 39.1831 4.26718 39.2514 4.32494C39.3196 4.3827 39.3914 4.4457 39.4649 4.51396C39.5384 4.58222 39.6154 4.66799 39.6959 4.77125C39.7992 4.92002 39.8674 5.09155 39.9007 5.28757C39.934 5.4836 39.9585 5.67963 39.969 5.88091C39.9812 6.08219 39.9812 6.28172 39.969 6.48299C39.9567 6.68427 39.9515 6.86455 39.9515 7.02557C39.9515 7.17434 39.9567 7.35812 39.969 7.57515C39.9812 7.79218 39.983 8.01446 39.9777 8.23674C39.9725 8.46078 39.9515 8.67606 39.9182 8.88083C39.8849 9.08561 39.8324 9.25364 39.7642 9.37966C39.4334 9.40241 39.0746 9.43041 38.6878 9.46542C38.301 9.50042 37.9072 9.53368 37.5099 9.56868C37.1126 9.60369 36.7135 9.62644 36.3144 9.63694C35.9154 9.64744 35.5461 9.64919 35.2048 9.63694C35.1015 9.61419 35.042 9.63694 35.0263 9.7052C35.0105 9.77346 35 9.83122 35 9.87673C35 9.95724 35.0088 10.0255 35.0263 10.0833C35.0438 10.141 35.1033 10.1865 35.2048 10.2215C35.3185 10.2443 35.4131 10.2583 35.4866 10.2653C35.5601 10.2723 35.6353 10.2775 35.7088 10.2828C35.7824 10.288 35.8576 10.2915 35.9311 10.2915H36.1954C36.731 10.2915 37.2631 10.2793 37.7934 10.2565C38.3237 10.2338 38.8558 10.2215 39.3914 10.2215C39.4824 10.2215 39.5559 10.2303 39.6137 10.2478C39.6714 10.2653 39.6994 10.3248 39.6994 10.4281C39.6994 10.8516 39.6574 11.2682 39.5717 11.6742C39.4859 12.0803 39.3774 12.4828 39.2479 12.8784C39.1183 13.274 38.9661 13.6608 38.7945 14.0388C38.623 14.4169 38.4532 14.7897 38.2817 15.1572C38.2135 15.2832 38.1452 15.3918 38.0769 15.4845C38.0087 15.5773 37.9457 15.6648 37.8897 15.7506C37.8336 15.8363 37.7846 15.9343 37.7444 16.0429C37.7041 16.1514 37.6849 16.2914 37.6849 16.4647C37.6849 16.5329 37.6884 16.5872 37.6936 16.6274C37.6989 16.6677 37.7251 16.7167 37.7706 16.7745H38.2817V16.7762Z" fill="#E8336D"/> -</symbol> - -<symbol id="espacePublicNumeriqueepn" viewBox="0 0 120 56" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M40.0664 21.1289V25.8184H46.6836V28.8398H40.0664V34.8418H49.1445V38H36.5117V17.9707H49.2949V21.1289H40.0664ZM56.0078 30.6309V38H52.4531V17.9844C54.8229 17.8841 56.2083 17.834 56.6094 17.834C59.7721 17.834 62.0827 18.3216 63.541 19.2969C65.0085 20.263 65.7422 21.776 65.7422 23.8359C65.7422 28.4297 63.0352 30.7266 57.6211 30.7266C57.2201 30.7266 56.6823 30.6947 56.0078 30.6309ZM56.0078 21.0605V27.4727C56.6094 27.5365 57.0833 27.5684 57.4297 27.5684C59.0521 27.5684 60.237 27.2995 60.9844 26.7617C61.7318 26.2148 62.1055 25.3307 62.1055 24.1094C62.1055 22.0312 60.4329 20.9922 57.0879 20.9922C56.7142 20.9922 56.3542 21.015 56.0078 21.0605ZM82.0254 38.2734L72.3047 25.5996V38.0137H68.8867V17.9707H70.5957L80.0566 30.0566V17.9707H83.4746V38.2734H82.0254Z" fill="#D50000"/> -</symbol> - -<symbol id="aidantsConnect" viewBox="0 0 120 56" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M31.6926 35.1771C31.4886 34.8727 31.2845 34.5974 31.0367 34.3365C30.2787 33.5249 29.3458 33.0611 28.2234 33.0032C26.5471 32.9307 25.1914 33.5249 24.3168 35.0032C23.3548 36.6264 23.588 38.8582 24.827 40.2061C25.585 41.0322 26.5471 41.4235 27.6549 41.4959C28.7773 41.5684 29.7685 41.2785 30.6285 40.5539C30.993 40.2351 31.3136 39.8872 31.576 39.4669C31.6635 39.3365 31.7072 39.351 31.8238 39.4235C32.4069 39.8438 32.99 40.2496 33.573 40.6553C33.6897 40.7278 33.6751 40.7858 33.6168 40.8872C32.611 42.5104 31.1533 43.4959 29.2729 43.8438C27.4217 44.1916 25.6579 43.9017 24.069 42.8872C22.3198 41.7568 21.2849 40.1336 21.0516 38.0611C20.8184 36.0322 21.3723 34.2351 22.7717 32.7278C23.8649 31.5394 25.2497 30.8582 26.8386 30.6264C28.2234 30.4235 29.5499 30.5684 30.8326 31.1481C32.0279 31.6843 32.9608 32.5249 33.6459 33.6409C33.6897 33.6988 33.748 33.7568 33.6313 33.8293C32.9754 34.264 32.334 34.7278 31.6926 35.1771Z" fill="#003188"/> -<path d="M61.4437 34.8727C61.5603 34.7713 61.6623 34.6843 61.7644 34.6119C62.6244 33.9597 63.601 33.7423 64.6506 33.8148C65.5397 33.8727 66.3269 34.1771 66.9537 34.8293C67.5368 35.438 67.8283 36.1771 67.9303 36.9887C67.9741 37.2496 67.9741 37.5104 67.9741 37.7713C67.9741 39.6988 67.9741 41.6409 67.9741 43.5684C67.9741 43.7278 67.9303 43.7568 67.7846 43.7568C67.0266 43.7423 66.254 43.7423 65.496 43.7568C65.3502 43.7568 65.3065 43.7133 65.3211 43.5684C65.3211 41.7133 65.3211 39.8582 65.3211 38.0177C65.3211 37.1916 64.8546 36.5104 64.1258 36.293C62.9305 35.9452 61.6769 36.6119 61.6623 38.0611C61.6478 39.8872 61.6623 41.7133 61.6623 43.5539C61.6623 43.7278 61.6186 43.7568 61.4437 43.7568C60.6711 43.7423 59.8986 43.7423 59.1406 43.7568C59.0094 43.7568 58.9802 43.7278 58.9802 43.5974C58.9802 40.4669 58.9802 37.322 58.9802 34.1916C58.9802 34.0611 59.024 34.0322 59.1406 34.0322C59.8548 34.0322 60.5691 34.0322 61.2688 34.0322C61.4 34.0322 61.4291 34.0756 61.4291 34.1916C61.4291 34.3945 61.4437 34.6119 61.4437 34.8727Z" fill="#003188"/> -<path d="M66.2687 20.0467C66.3853 19.9452 66.4727 19.8727 66.5602 19.8003C67.5223 19.0612 68.6155 18.8438 69.7962 19.0177C70.8895 19.1626 71.7349 19.6988 72.2888 20.6554C72.6533 21.293 72.8136 21.9742 72.8136 22.6988C72.8136 24.7133 72.8136 26.7278 72.8136 28.7423C72.8136 28.8727 72.7844 28.9017 72.6533 28.9017C71.8807 28.9017 71.1081 28.8872 70.3501 28.9017C70.2044 28.9017 70.1606 28.8727 70.1606 28.7133C70.1606 26.8583 70.1606 25.0032 70.1606 23.1336C70.1606 22.3655 69.7379 21.7278 69.0674 21.4669C68.3531 21.1916 67.5077 21.351 66.9975 21.8872C66.6331 22.2641 66.5019 22.7278 66.5019 23.2351C66.5019 25.0467 66.5019 26.8727 66.5019 28.6843C66.5019 28.8438 66.4727 28.9017 66.2978 28.9017C65.5252 28.8872 64.7527 28.8872 63.9947 28.9017C63.8635 28.9017 63.8344 28.8727 63.8344 28.7423C63.8344 25.5974 63.8344 22.4669 63.8344 19.322C63.8344 19.1916 63.8781 19.1626 63.9947 19.1626C64.709 19.1626 65.4232 19.1626 66.1229 19.1626C66.2541 19.1626 66.2832 19.2061 66.2832 19.322C66.2541 19.5684 66.2687 19.7858 66.2687 20.0467Z" fill="#003188"/> -<path d="M50.1759 34.8727C51.2546 33.9162 52.479 33.6409 53.8347 33.8727C55.2778 34.1046 56.3273 35.1771 56.6043 36.6409C56.6771 37.0032 56.7063 37.3655 56.7063 37.7423C56.7063 39.6843 56.7063 41.6264 56.7063 43.5539C56.7063 43.6988 56.6771 43.7423 56.5168 43.7423C55.7588 43.7278 54.9862 43.7278 54.2282 43.7423C54.0679 43.7423 54.0387 43.6988 54.0387 43.5539C54.0387 41.7133 54.0387 39.8582 54.0387 38.0177C54.0387 37.1916 53.5869 36.5104 52.8435 36.2785C51.6919 35.9162 50.38 36.5539 50.38 38.0466C50.3654 39.8872 50.38 41.7133 50.38 43.5539C50.38 43.7133 50.3363 43.7568 50.1759 43.7568C49.4179 43.7423 48.6454 43.7568 47.8874 43.7568C47.7562 43.7568 47.6979 43.7278 47.6979 43.5829C47.6979 40.4524 47.6979 37.3365 47.6979 34.2061C47.6979 34.0611 47.7416 34.0322 47.8874 34.0322C48.5871 34.0466 49.3013 34.0466 50.001 34.0322C50.1322 34.0322 50.1759 34.0611 50.1613 34.1916C50.1613 34.3945 50.1759 34.6264 50.1759 34.8727Z" fill="#003188"/> -<path d="M86.4428 33.7858C87.8276 33.8003 89.0083 34.2061 89.9703 35.1626C90.2327 35.438 90.4659 35.7278 90.6554 36.0612C90.7137 36.1626 90.7138 36.2061 90.6117 36.2785C90.0578 36.6988 89.5185 37.1191 88.9645 37.5394C88.8625 37.6119 88.8334 37.5974 88.775 37.5104C88.4398 37.0177 88.0316 36.6119 87.4631 36.38C86.0492 35.8293 84.2417 36.5394 83.9793 38.4235C83.8773 39.1771 84.0085 39.8872 84.4603 40.5104C85.3495 41.7278 87.1716 41.8583 88.2794 40.7858C88.4689 40.6119 88.6293 40.4235 88.775 40.2061C88.8188 40.1336 88.8625 40.1191 88.9354 40.1771C89.4893 40.6119 90.0432 41.0322 90.6117 41.4525C90.7283 41.5394 90.6846 41.5974 90.6263 41.6698C89.9412 42.7858 88.95 43.5249 87.6672 43.8148C85.437 44.322 83.0027 43.438 81.8511 41.3075C80.2185 38.322 81.822 34.5394 85.437 33.8583C85.8014 33.8293 86.1367 33.8003 86.4428 33.7858Z" fill="#003188"/> -<path d="M86.7489 29.1336C85.3787 29.1191 84.1543 28.7133 83.1485 27.7568C83.0173 27.6264 82.8861 27.4669 82.7549 27.3365C82.6966 27.2785 82.7112 27.2206 82.7549 27.1626C83.1485 26.6988 83.542 26.2206 83.9356 25.7423C84.0231 25.6409 84.0522 25.6554 84.1397 25.7423C84.6644 26.2496 85.2621 26.6698 85.9763 26.8583C86.4428 26.9742 86.9093 27.0032 87.3757 26.8727C87.5069 26.8438 87.6235 26.7858 87.7401 26.6988C88.1191 26.4235 88.1191 25.9307 87.7401 25.6554C87.5215 25.4814 87.2591 25.3945 86.9967 25.2785C86.3845 25.0177 85.7431 24.7858 85.1455 24.4814C84.5624 24.1916 84.0231 23.8293 83.6732 23.2641C82.8423 21.9452 83.3817 20.1336 84.7811 19.409C85.5682 19.0177 86.3991 18.9017 87.2591 18.9597C88.4107 19.0322 89.431 19.438 90.2619 20.2496C90.3785 20.3655 90.4222 20.438 90.2911 20.5974C89.9121 21.0322 89.5476 21.4814 89.1832 21.9452C89.0958 22.0612 89.052 22.0467 88.95 21.9597C88.294 21.409 87.5506 21.0901 86.676 21.1481C86.4865 21.1626 86.3116 21.2061 86.1367 21.293C85.7723 21.5104 85.7285 21.9742 86.0492 22.2641C86.2096 22.409 86.4136 22.4959 86.6031 22.5829C87.3028 22.8872 88.0317 23.1481 88.7168 23.4814C89.0666 23.6554 89.4019 23.8727 89.708 24.1191C90.4368 24.7568 90.6555 25.5684 90.5243 26.4814C90.3202 27.8438 89.431 28.5829 88.1628 28.9597C87.711 29.0901 87.2445 29.1481 86.7489 29.1336Z" fill="#003188"/> -<path d="M93.221 38.7713C93.221 37.8872 93.221 37.1481 93.221 36.409C93.221 36.293 93.1919 36.2496 93.0607 36.2496C92.6525 36.2641 92.2298 36.2496 91.8217 36.2496C91.7051 36.2496 91.6759 36.2206 91.6759 36.1046C91.6759 35.4525 91.6759 34.8003 91.6759 34.1481C91.6759 34.0322 91.7196 34.0032 91.8217 34.0032C92.2298 34.0032 92.6525 34.0032 93.0607 34.0032C93.1919 34.0032 93.221 33.9597 93.221 33.8438C93.221 33.1336 93.221 32.4235 93.221 31.7133C93.221 31.5684 93.2648 31.5394 93.396 31.5394C94.1831 31.5394 94.9557 31.5539 95.7428 31.5394C95.9032 31.5394 95.9177 31.5829 95.9177 31.7278C95.9177 32.438 95.9177 33.1336 95.9177 33.8438C95.9177 33.9742 95.9615 34.0032 96.0781 34.0032C96.8944 34.0032 97.7107 34.0032 98.527 34.0032C98.6436 34.0032 98.6873 34.0322 98.6873 34.1481C98.6873 34.8003 98.6727 35.438 98.6873 36.0901C98.6873 36.2351 98.6436 36.2496 98.5124 36.2496C97.6961 36.2496 96.8944 36.2496 96.0781 36.2496C95.9323 36.2496 95.9032 36.2785 95.9032 36.4235C95.9032 37.6554 95.9032 38.8872 95.9032 40.1191C95.9032 41.0032 96.355 41.4814 97.2588 41.5684C97.7836 41.6119 98.3229 41.5539 98.8477 41.5249C98.9643 41.5104 98.9934 41.5394 98.9934 41.6554C98.9934 42.3075 98.9934 42.9597 98.9934 43.6119C98.9934 43.6698 99.0226 43.7278 98.9205 43.7568C97.769 44.0177 96.632 44.0901 95.495 43.7423C94.1977 43.3365 93.498 42.4235 93.3085 41.1191C93.1627 40.293 93.2502 39.4525 93.221 38.7713Z" fill="#003188"/> -<path d="M78.5714 23.6119C78.586 24.1626 78.5277 24.8438 78.6005 25.5249C78.6588 26.1916 79.0233 26.5684 79.6938 26.6988C80.1894 26.7858 80.685 26.7568 81.1952 26.7133C81.2681 26.7133 81.341 26.6988 81.4284 26.6988C81.6762 26.6843 81.6762 26.6843 81.6762 26.9452C81.6762 27.5539 81.6762 28.1481 81.6762 28.7568C81.6762 28.8293 81.6908 28.9162 81.5742 28.9307C80.4226 29.1916 79.2711 29.2496 78.1195 28.8872C76.8951 28.4959 76.21 27.6409 75.9913 26.3945C75.933 26.0756 75.9184 25.7568 75.9184 25.4235C75.9184 24.1481 75.9184 22.8728 75.9184 21.5974C75.9184 21.438 75.8747 21.3945 75.7143 21.3945C75.3062 21.409 74.9126 21.3945 74.5045 21.3945C74.4024 21.3945 74.3733 21.3655 74.3733 21.2641C74.3733 20.5974 74.3733 19.9452 74.3733 19.2785C74.3733 19.1771 74.4024 19.1481 74.5045 19.1481C74.9126 19.1481 75.3354 19.1481 75.7435 19.1481C75.8747 19.1481 75.9038 19.1191 75.9038 18.9887C75.9038 18.2785 75.9038 17.5684 75.9038 16.8583C75.9038 16.7278 75.933 16.6988 76.0642 16.6988C76.8513 16.6988 77.6385 16.6988 78.4256 16.6988C78.5422 16.6988 78.586 16.7278 78.586 16.8583C78.586 17.5684 78.586 18.2785 78.586 18.9887C78.586 19.1336 78.6297 19.1626 78.7609 19.1626C79.5772 19.1626 80.3789 19.1626 81.1952 19.1626C81.3264 19.1626 81.3701 19.1916 81.3701 19.3365C81.3555 19.9742 81.3701 20.6264 81.3701 21.2641C81.3701 21.3945 81.3264 21.4235 81.2098 21.409C80.3935 21.409 79.5772 21.409 78.7609 21.409C78.6297 21.409 78.586 21.438 78.586 21.5829C78.5714 22.2206 78.5714 22.8583 78.5714 23.6119Z" fill="#003188"/> -<path d="M37.9752 24.0467C37.9752 25.5974 37.9752 27.1626 37.9752 28.7133C37.9752 28.8727 37.9315 28.9017 37.7711 28.9017C37.0131 28.8872 36.2406 28.9017 35.4826 28.9017C35.3514 28.9017 35.2931 28.8727 35.2931 28.7278C35.2931 25.5974 35.2931 22.4814 35.2931 19.351C35.2931 19.2206 35.3222 19.1771 35.468 19.1771C36.2552 19.1771 37.0277 19.1916 37.8149 19.1771C37.9606 19.1771 37.9752 19.2351 37.9752 19.351C37.9752 20.9162 37.9752 22.4814 37.9752 24.0467Z" fill="#003188"/> -<path d="M50.2196 14.1771C49.4616 14.1771 48.689 14.1916 47.9311 14.1771C47.7707 14.1771 47.7124 14.2061 47.7124 14.38C47.727 16.0322 47.7124 17.6988 47.7124 19.351C47.7124 19.5974 47.7124 19.8293 47.7124 20.1191C47.6249 20.0467 47.5812 19.9887 47.5229 19.9452C46.6629 19.1771 45.6425 18.9162 44.5201 18.9887C42.7126 19.1046 41.4007 19.9742 40.599 21.5829C40.0013 22.7858 39.9139 24.0612 40.1908 25.3655C40.3949 26.351 40.8614 27.2206 41.6048 27.9307C42.5668 28.8293 43.733 29.2061 45.0449 29.1481C45.9924 29.1046 46.8524 28.8293 47.5521 28.1626C47.6833 28.0467 47.7999 27.9017 47.9311 27.7568C47.9311 28.1046 47.9311 28.4235 47.9311 28.7423C47.9311 28.8583 47.9456 28.9162 48.0914 28.9162C48.8057 28.9017 49.5199 28.9017 50.2488 28.9162C50.3799 28.9162 50.4091 28.8727 50.4091 28.7423C50.4091 23.9452 50.4091 19.1481 50.4091 14.3365C50.4091 14.1916 50.3508 14.1771 50.2196 14.1771ZM47.6395 24.9887C47.3334 26.0612 46.4442 26.7133 45.3073 26.7133C43.9808 26.7133 42.9312 25.7713 42.8001 24.438C42.7272 23.6988 42.8292 23.0032 43.2665 22.3945C43.9079 21.5249 44.7971 21.2206 45.832 21.438C46.867 21.6409 47.4646 22.322 47.6833 23.3365C47.8144 23.8727 47.7999 24.438 47.6395 24.9887Z" fill="#003188"/> -<path d="M33.6313 28.7423C33.3397 28.0322 33.0482 27.3075 32.7567 26.5974C31.299 23.0177 29.8413 19.4235 28.3837 15.8438C28.3399 15.7423 28.2816 15.7133 28.1796 15.7133C27.7131 15.7133 27.2321 15.7278 26.7656 15.7133C26.6053 15.7133 26.5324 15.7713 26.4741 15.9162C25.6432 17.9597 24.8124 20.0032 23.9669 22.0467C23.0632 24.2641 22.1448 26.4959 21.2265 28.7278C21.1828 28.8438 21.1682 28.9017 21.3285 28.9017C22.174 28.8872 23.034 28.9017 23.8795 28.9017C23.9961 28.9017 24.0544 28.8583 24.0981 28.7568C24.3022 28.2785 24.5063 27.8003 24.7103 27.322C24.7395 27.2351 24.7832 27.2206 24.8707 27.2206C26.5616 27.2206 28.267 27.2206 29.9579 27.2206C30.06 27.2206 30.1037 27.2496 30.1329 27.3365C30.3369 27.8148 30.541 28.293 30.7451 28.7713C30.7888 28.8727 30.8325 28.9162 30.9492 28.9017C31.3719 28.9017 31.7946 28.9017 32.2319 28.9017C32.6692 28.9017 33.0774 28.9017 33.5147 28.9017C33.675 28.9162 33.6896 28.8727 33.6313 28.7423ZM25.7015 25.0322C26.27 23.351 26.8531 21.6698 27.4362 19.9597C28.0192 21.6698 28.5877 23.351 29.1708 25.0322C28.0047 25.0322 26.8677 25.0322 25.7015 25.0322Z" fill="#003188"/> -<path d="M45.3073 37.3655C44.593 35.1191 42.3336 33.6264 39.9139 33.8148C38.5874 33.9162 37.4067 34.38 36.4884 35.3365C35.0599 36.8148 34.6954 38.5684 35.3077 40.4959C35.9636 42.5829 37.9752 43.9597 40.3075 43.9597C40.7156 43.9452 41.1675 43.9017 41.6194 43.7858C44.5056 43.0901 46.1965 40.1481 45.3073 37.3655ZM40.9926 41.409C39.4766 41.8148 38.0044 40.9597 37.7857 39.3075C37.6545 38.3365 37.8877 37.4669 38.6311 36.8003C39.841 35.7278 42.0858 36.0756 42.6689 38.0322C42.7126 38.1771 42.7418 38.3365 42.7709 38.4959C42.7855 38.6264 42.7855 38.7423 42.8001 38.8727C42.8001 40.1046 42.1004 41.1191 40.9926 41.409Z" fill="#003188"/> -<path d="M61.2542 23.2206C61.2542 22.8293 61.2251 22.438 61.1522 22.0467C60.9044 20.7568 60.2193 19.8003 58.9802 19.3075C58.0036 18.9162 56.9978 18.8872 55.9774 19.0612C54.7093 19.2785 53.6889 19.9307 52.858 20.8872C52.7997 20.9452 52.7997 20.9887 52.858 21.0612C53.2808 21.5394 53.6889 22.0322 54.097 22.5249C54.1554 22.5974 54.1991 22.6119 54.272 22.5249C54.374 22.4235 54.476 22.322 54.5781 22.2206C55.2632 21.5684 56.0649 21.1916 57.0415 21.2785C57.6975 21.3365 58.2223 21.6119 58.4701 22.2641C58.5867 22.5829 58.5721 22.9162 58.5867 23.2351C58.5867 23.3655 58.5429 23.3945 58.4263 23.3945C57.6392 23.3945 56.852 23.3945 56.0649 23.3945C55.4381 23.3945 54.8259 23.4959 54.2428 23.7133C51.9251 24.5829 52.0855 27.2641 53.3682 28.3365C53.9367 28.8003 54.5927 29.0467 55.3069 29.1046C56.371 29.2061 57.3768 29.0322 58.266 28.4235C58.4555 28.293 58.6158 28.1481 58.8053 27.9887C58.8053 28.2496 58.8199 28.4814 58.8053 28.7133C58.8053 28.8583 58.8345 28.9017 58.9802 28.9017C59.6654 28.8872 60.3505 28.8872 61.0356 28.9017C61.2105 28.9017 61.2542 28.8727 61.2542 28.6843C61.2542 26.8727 61.2542 25.0467 61.2542 23.2206ZM56.648 27.1916C56.3127 27.2061 55.992 27.1771 55.7005 27.0322C55.3069 26.8438 55.0883 26.4814 55.132 26.0612C55.1757 25.6264 55.409 25.3655 55.8608 25.2351C56.0795 25.1771 56.2981 25.1626 56.5168 25.1626C56.7937 25.1626 57.0707 25.1626 57.3331 25.1626C57.6975 25.1626 58.0619 25.1626 58.4409 25.1626C58.5575 25.1626 58.5867 25.2061 58.5867 25.3075C58.5429 26.3365 57.7121 27.1626 56.648 27.1916Z" fill="#003188"/> -<path d="M40.6719 18.0756C40.497 17.9452 40.3221 17.8148 40.1472 17.6843C39.9868 17.5104 39.8265 17.322 39.6953 17.1336C39.5058 16.7568 39.3309 16.38 39.3017 15.9452C39.3017 15.9452 39.3017 15.9307 39.2871 15.9307C39.2871 15.9307 39.2871 15.9452 39.3017 15.9452C39.3017 15.7133 39.2871 15.4814 39.3309 15.2495C39.3892 14.8872 39.5349 14.5684 39.6953 14.2495C39.841 14.0756 39.9868 13.8872 40.1472 13.7133C40.3221 13.5539 40.5116 13.4235 40.7157 13.3075C41.0072 13.1771 41.3133 13.0756 41.634 13.0032C41.3424 13.0032 41.0509 13.0032 40.7594 13.0032C40.5553 13.0032 40.3658 13.0032 40.1617 13.0032C40.0014 13.0032 39.841 13.0032 39.6661 13.0032C39.5204 13.0032 39.3892 13.0032 39.2434 13.0032C39.1122 13.0032 38.981 13.0032 38.8644 13.0032C38.7478 13.0032 38.6312 13.0032 38.5146 13.0032C38.398 13.0032 38.2813 13.0032 38.1647 13.0032C38.0481 13.0032 37.9315 13.0032 37.8149 13.0032C37.6983 13.0032 37.5817 13.0032 37.465 13.0032C37.3484 13.0032 37.2318 13.0032 37.1152 13.0032C37.0132 13.0032 36.9111 13.0032 36.7945 13.0032C36.6925 13.0032 36.5904 13.0032 36.4738 13.0032C36.3426 12.9887 36.2114 13.0322 36.0948 13.0322C35.9053 13.0611 35.7158 13.1481 35.5409 13.2061C35.3514 13.2785 35.1911 13.409 35.0162 13.5249C34.9578 13.5684 34.8995 13.5974 34.8412 13.6409C34.5934 13.8727 34.3894 14.0901 34.4039 14.4959C34.4331 15.351 34.4185 16.2206 34.4039 17.0756C34.4039 17.2061 34.4185 17.322 34.506 17.4235C34.6517 17.5684 34.7829 17.7423 34.9724 17.8582C35.1473 17.9887 35.3223 18.1046 35.5263 18.1771C35.6867 18.2785 35.8616 18.322 36.0511 18.351C36.1823 18.3945 36.3281 18.3945 36.4738 18.4235C36.5759 18.4235 36.6779 18.4235 36.7945 18.4235C36.8966 18.4235 36.9986 18.4235 37.1152 18.4235C37.2318 18.4235 37.3484 18.4235 37.465 18.4235C37.5817 18.4235 37.6983 18.4235 37.8149 18.4235C37.9315 18.4235 38.0481 18.4235 38.1647 18.4235C38.2813 18.4235 38.398 18.4235 38.5146 18.4235C38.6312 18.4235 38.7478 18.4235 38.8644 18.4235C38.981 18.4235 39.0976 18.4235 39.2142 18.4235C39.36 18.4235 39.5204 18.4235 39.6661 18.4235C39.8119 18.4235 39.9722 18.4235 40.118 18.4235C40.3075 18.4235 40.497 18.4235 40.6719 18.4235C41.0072 18.4235 41.357 18.4235 41.6923 18.4235C41.3424 18.3365 40.9926 18.2351 40.6719 18.0756Z" fill="url(#paint0_linear)"/> -<path d="M41.5756 13.0177C42.3336 12.9452 43.0333 13.0901 43.6455 13.5539C44.5056 14.2061 44.8991 15.322 44.6368 16.38C44.3744 17.438 43.4852 18.2206 42.4065 18.3945C42.1441 18.438 41.8963 18.4235 41.634 18.4235C41.2695 18.4235 40.9343 18.3075 40.6136 18.1336C40.4241 18.0177 40.2346 17.8872 40.0742 17.7278C39.8847 17.5539 39.739 17.3655 39.5932 17.1481C39.3891 16.7713 39.1996 16.3945 39.1996 15.9597C39.1705 15.4959 39.2142 15.0467 39.4037 14.6264C39.462 14.5104 39.5203 14.3945 39.5786 14.293C39.7098 14.0901 39.8702 13.9017 40.0597 13.7278C40.2346 13.5539 40.4241 13.409 40.6427 13.3075C40.9488 13.1336 41.255 13.0322 41.5756 13.0177Z" fill="#FE3954"/> -<path d="M79.6792 37.7133C79.5335 36.5684 79.0524 35.5974 78.1633 34.8582C77.0117 33.9017 75.6561 33.6264 74.213 33.8727C71.7932 34.2785 70.0878 36.2206 69.9857 38.6553C69.8983 40.8727 71.1227 42.8148 73.178 43.5684C75.3354 44.3655 77.347 44.0177 79.169 42.5974C79.2565 42.5249 79.2419 42.4814 79.1982 42.409C78.8775 41.8872 78.5568 41.38 78.2507 40.8582C78.1778 40.7278 78.1195 40.7278 78.0029 40.8148C77.0554 41.5104 75.9913 41.8293 74.796 41.6409C73.7757 41.4814 73.076 40.9452 72.7261 39.9597C72.6824 39.8148 72.6824 39.7713 72.8573 39.7713C73.936 39.7858 75.0147 39.7713 76.0934 39.7713C77.1866 39.7713 78.2799 39.7713 79.3731 39.7713C79.4752 39.7713 79.5335 39.7568 79.5626 39.6264C79.6938 39.0032 79.7667 38.3655 79.6792 37.7133ZM76.9388 37.9017C76.2537 37.8872 75.5832 37.9017 74.8981 37.9017C74.213 37.9017 73.5279 37.9017 72.8428 37.9017C72.7699 37.9017 72.6824 37.9307 72.7261 37.7858C73.0031 36.8727 73.557 36.2206 74.5336 35.9887C75.5394 35.7568 76.5744 36.2206 76.968 37.0756C77.0554 37.2785 77.0992 37.4814 77.1283 37.6988C77.1429 37.8582 77.1137 37.9017 76.9388 37.9017Z" fill="#003188"/> +<symbol id="passNumerique" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M21.4765 21.7352C21.4749 21.7337 21.4734 21.7348 21.4719 21.7352L21.4675 21.7373C21.4611 21.7398 21.455 21.743 21.4493 21.7468C21.4474 21.748 21.4448 21.7487 21.4435 21.7468C21.4421 21.745 21.4451 21.7435 21.4463 21.742C21.4502 21.7369 21.4568 21.7386 21.4615 21.7354C21.4776 21.7241 21.4955 21.7159 21.5145 21.711C21.5463 21.7021 21.5791 21.6998 21.6113 21.6937C21.6323 21.6897 21.6533 21.686 21.671 21.6726C21.6787 21.6668 21.6866 21.6609 21.6949 21.6557C21.7077 21.648 21.7178 21.6366 21.7239 21.6229C21.7255 21.6193 21.7295 21.6145 21.7258 21.6116C21.7233 21.6097 21.7205 21.6156 21.7177 21.6178C21.7163 21.619 21.715 21.6203 21.7137 21.6217C21.6865 21.6469 21.6567 21.6681 21.6205 21.6785C21.5924 21.6865 21.563 21.6851 21.5336 21.689C21.5431 21.6812 21.5509 21.6723 21.5644 21.6707C21.5583 21.6656 21.5538 21.6694 21.5492 21.6701C21.5462 21.6707 21.5416 21.6738 21.5408 21.6687C21.5403 21.6658 21.5408 21.6596 21.5474 21.6599C21.5489 21.6599 21.5509 21.6604 21.5516 21.6585C21.554 21.651 21.5612 21.6491 21.567 21.6458C21.5845 21.6359 21.6022 21.6264 21.6197 21.6166C21.6215 21.6155 21.6243 21.6153 21.6248 21.6125C21.6227 21.6117 21.6195 21.6144 21.6186 21.6111C21.6177 21.6077 21.6204 21.6068 21.6232 21.606C21.6388 21.6003 21.654 21.5937 21.6687 21.5861C21.6643 21.5845 21.66 21.5874 21.6571 21.5839C21.659 21.5798 21.6648 21.5804 21.6657 21.5773C21.6671 21.5723 21.6667 21.5668 21.6738 21.5661C21.6747 21.5661 21.6746 21.5649 21.6738 21.5644C21.669 21.5606 21.6743 21.5598 21.6758 21.5585C21.6807 21.5543 21.6875 21.5545 21.6935 21.5515C21.6856 21.5486 21.6828 21.5436 21.6869 21.5382C21.6948 21.5272 21.6961 21.5141 21.6998 21.5018C21.7003 21.5002 21.7014 21.4982 21.6991 21.4969C21.6968 21.4956 21.6956 21.4969 21.6944 21.4984C21.6818 21.5095 21.6668 21.5174 21.6506 21.5216C21.6387 21.5251 21.6267 21.5279 21.6144 21.53C21.6078 21.5316 21.6008 21.5315 21.5941 21.5297C21.5875 21.5278 21.5815 21.5243 21.5766 21.5194C21.5722 21.5152 21.5673 21.5116 21.562 21.5086C21.5239 21.4868 21.482 21.4791 21.4392 21.474C21.4232 21.4725 21.4071 21.472 21.391 21.4724C21.3978 21.4688 21.4051 21.4661 21.4126 21.4644C21.4311 21.4599 21.4498 21.4564 21.4679 21.4505C21.4833 21.4451 21.4993 21.4412 21.5156 21.439L21.5382 21.4373C21.5307 21.436 21.5231 21.436 21.5157 21.4373C21.5093 21.4368 21.503 21.4371 21.4967 21.4382C21.4561 21.4461 21.4148 21.4514 21.378 21.4726C21.3752 21.4742 21.3714 21.4756 21.3692 21.473C21.367 21.4705 21.3704 21.4674 21.3722 21.465C21.3823 21.4509 21.3958 21.4397 21.4115 21.4323C21.4272 21.425 21.4444 21.4218 21.4617 21.423C21.5048 21.4245 21.5476 21.4301 21.5896 21.4398C21.5931 21.4402 21.5965 21.4415 21.5995 21.4434C21.6024 21.4454 21.6049 21.4481 21.6066 21.4512C21.6078 21.4533 21.6095 21.455 21.6115 21.4562C21.6136 21.4575 21.6159 21.4581 21.6183 21.4582C21.6271 21.4583 21.6357 21.46 21.6439 21.4631C21.6451 21.4504 21.646 21.4498 21.6579 21.4517H21.6594C21.6638 21.4525 21.6683 21.4528 21.6708 21.4485C21.6718 21.4465 21.672 21.4443 21.6716 21.4422C21.6711 21.4401 21.67 21.4382 21.6684 21.4368C21.6632 21.4308 21.6577 21.4251 21.6523 21.4192C21.6506 21.4172 21.6479 21.4153 21.6502 21.4111C21.6579 21.4184 21.6649 21.4255 21.6723 21.4322C21.6812 21.4414 21.6928 21.4476 21.7054 21.4498C21.7099 21.4504 21.7152 21.4524 21.7182 21.4485C21.7213 21.4446 21.7171 21.4401 21.715 21.4365C21.706 21.4227 21.6957 21.4099 21.6843 21.398C21.6817 21.3958 21.6798 21.3929 21.6787 21.3896C21.6769 21.3836 21.6744 21.3779 21.6711 21.3726C21.6661 21.3634 21.6627 21.3534 21.6612 21.3431C21.6613 21.3383 21.6608 21.3335 21.6599 21.3288C21.651 21.2986 21.6473 21.2672 21.64 21.2365C21.6348 21.2137 21.6329 21.1909 21.6447 21.1692C21.6536 21.153 21.6628 21.137 21.672 21.1209C21.6839 21.1004 21.6973 21.0811 21.7176 21.0679C21.7197 21.0663 21.7213 21.0641 21.722 21.0616C21.7367 21.0249 21.7598 20.9959 21.7969 20.9795C21.8144 20.9717 21.8321 20.9644 21.85 20.9563H21.8417C21.4479 20.9563 21.0542 20.9563 20.6605 20.9563C20.6521 20.9563 20.6507 20.9588 20.6507 20.9665C20.6507 21.2707 20.6507 21.5749 20.6507 21.8791C20.6507 21.8874 20.6529 21.8889 20.6607 21.8889C20.9376 21.8887 21.2145 21.8887 21.4913 21.8889C21.4981 21.8892 21.5049 21.8873 21.5105 21.8834C21.5194 21.8772 21.5288 21.8717 21.5385 21.867C21.5696 21.8518 21.6008 21.8368 21.6323 21.8224C21.6726 21.8039 21.7094 21.7811 21.7378 21.7458C21.7594 21.7186 21.7844 21.6942 21.8121 21.6732C21.8134 21.6725 21.8145 21.6714 21.8151 21.67C21.8157 21.6687 21.8158 21.6671 21.8154 21.6657C21.807 21.6682 21.8022 21.6773 21.7924 21.6772C21.795 21.674 21.7985 21.672 21.801 21.6692C21.8036 21.6664 21.8112 21.6656 21.8091 21.6603C21.8066 21.6537 21.7999 21.6578 21.795 21.6575C21.7942 21.6577 21.7934 21.6579 21.7927 21.6581C21.7778 21.6613 21.7669 21.6714 21.7558 21.6805C21.7536 21.6823 21.7515 21.6855 21.7483 21.6838C21.7426 21.6808 21.7381 21.6838 21.7335 21.6861C21.7245 21.6906 21.7159 21.6959 21.7079 21.702C21.6987 21.7091 21.6889 21.7154 21.6785 21.7208C21.6719 21.7242 21.6636 21.7224 21.6565 21.7266C21.6447 21.7333 21.6311 21.7363 21.6175 21.7352C21.5869 21.7333 21.5578 21.7414 21.5281 21.7471C21.5033 21.7519 21.487 21.7698 21.4679 21.7834C21.4521 21.7949 21.4374 21.8078 21.4238 21.822C21.422 21.8239 21.4203 21.8266 21.4162 21.8248C21.421 21.8187 21.4252 21.812 21.4285 21.8049C21.433 21.793 21.4419 21.7832 21.4533 21.7776C21.4559 21.7762 21.4579 21.7742 21.4594 21.7717C21.4608 21.7692 21.4616 21.7664 21.4616 21.7635C21.4499 21.764 21.4487 21.7812 21.4345 21.779C21.4382 21.7742 21.4411 21.7689 21.4431 21.7632C21.4447 21.7525 21.4528 21.749 21.4602 21.7444L21.469 21.7391L21.4728 21.7366L21.4761 21.735L21.4766 21.7338L21.4757 21.7342L21.4765 21.7352ZM22.3342 21.5443C22.3383 21.5453 22.3421 21.5473 22.3453 21.5502C22.3484 21.5531 22.3507 21.5567 22.352 21.5607C22.3535 21.5632 22.354 21.5662 22.3536 21.5691C22.3531 21.572 22.3516 21.5746 22.3494 21.5765C22.3453 21.5799 22.3412 21.5831 22.3373 21.5867C22.3347 21.5886 22.3329 21.5914 22.3323 21.5946C22.3317 21.5978 22.3323 21.601 22.334 21.6038C22.3381 21.6135 22.339 21.6244 22.3364 21.6347C22.3339 21.645 22.3281 21.6542 22.3199 21.6609C22.3128 21.6661 22.3047 21.6697 22.2961 21.6716C22.2875 21.6734 22.2786 21.6734 22.27 21.6715C22.2634 21.6703 22.2575 21.6679 22.2509 21.6671C22.2263 21.6638 22.2021 21.6574 22.1772 21.6559C22.1639 21.6543 22.1505 21.6577 22.1396 21.6655C22.0938 21.7029 22.0738 21.7517 22.0786 21.8104C22.0796 21.8231 22.0842 21.8336 22.0989 21.8359C22.1011 21.8364 22.1034 21.8372 22.1055 21.8382C22.1442 21.8518 22.1829 21.8652 22.2188 21.8853C22.2228 21.8876 22.2274 21.8889 22.2321 21.8889C22.5505 21.8889 22.869 21.8889 23.1874 21.8889C23.1945 21.8889 23.1967 21.8874 23.1967 21.8799C23.1967 21.5749 23.1967 21.2702 23.1967 20.9657C23.1967 20.9577 23.1943 20.9563 23.187 20.9563C22.8643 20.9563 22.5417 20.9563 22.2191 20.9563C22.2161 20.9557 22.2129 20.9562 22.2102 20.9576L22.2172 20.9616C22.2323 20.9702 22.2486 20.9767 22.2622 20.9881C22.2798 21.0027 22.2832 21.015 22.2769 21.0359C22.2755 21.0415 22.2722 21.0466 22.2675 21.0502C22.2629 21.0538 22.2572 21.0557 22.2513 21.0558C22.2442 21.0564 22.237 21.0562 22.2299 21.0554C22.2257 21.0549 22.2214 21.0546 22.2167 21.0542C22.2167 21.0552 22.2167 21.0556 22.2167 21.0556C22.2176 21.0562 22.2185 21.0567 22.2195 21.0571C22.2419 21.0657 22.2614 21.0804 22.276 21.0994C22.2773 21.1009 22.2789 21.1021 22.2806 21.103C22.2824 21.1039 22.2844 21.1044 22.2863 21.1045C22.2951 21.1062 22.2951 21.1061 22.2899 21.1134C22.2885 21.1154 22.2866 21.1179 22.2887 21.1197C22.2899 21.1207 22.2913 21.1211 22.2928 21.121C22.2943 21.1208 22.2957 21.1201 22.2966 21.119C22.2993 21.1158 22.3016 21.1121 22.3032 21.1083C22.3037 21.1072 22.3044 21.1063 22.3052 21.1055C22.3061 21.1048 22.3072 21.1043 22.3083 21.104C22.3094 21.1038 22.3106 21.1038 22.3117 21.1042C22.3128 21.1045 22.3138 21.1051 22.3146 21.1059C22.3168 21.1074 22.3187 21.1094 22.3201 21.1117C22.3215 21.1141 22.3223 21.1167 22.3225 21.1194C22.3227 21.1221 22.3223 21.1249 22.3213 21.1274C22.3203 21.1299 22.3188 21.1322 22.3168 21.134C22.3125 21.138 22.3079 21.1416 22.3035 21.1452C22.3021 21.146 22.3008 21.1471 22.2998 21.1484C22.2988 21.1498 22.2981 21.1513 22.2978 21.1529C22.2975 21.1545 22.2975 21.1562 22.2978 21.1578C22.2982 21.1594 22.2989 21.161 22.2999 21.1623C22.3021 21.1659 22.3039 21.1697 22.3054 21.1737C22.3117 21.1936 22.3182 21.214 22.3238 21.2343C22.331 21.2609 22.3364 21.2882 22.3304 21.3158C22.3276 21.3303 22.3305 21.3454 22.3386 21.3577C22.3453 21.3689 22.3525 21.3796 22.3598 21.3903C22.3716 21.4056 22.382 21.4219 22.3909 21.439C22.3984 21.4559 22.3924 21.4677 22.3747 21.473C22.3727 21.4736 22.3707 21.4741 22.3686 21.4746C22.345 21.4793 22.3467 21.4913 22.3549 21.5065L22.3565 21.5092C22.3624 21.5194 22.3613 21.5263 22.3519 21.5333C22.3466 21.5373 22.341 21.5401 22.3342 21.5443ZM22.606 22.4453C22.6433 22.4453 22.6807 22.4453 22.718 22.4453C22.7239 22.4453 22.7258 22.4433 22.7268 22.4381C22.7312 22.4149 22.7317 22.3911 22.7282 22.3678C22.7205 22.319 22.6962 22.2816 22.6519 22.2583C22.6178 22.2405 22.5811 22.238 22.5437 22.2436C22.4928 22.2513 22.4521 22.2757 22.425 22.32C22.3988 22.363 22.3897 22.4143 22.3996 22.4637C22.4095 22.5207 22.4393 22.5645 22.4914 22.5914C22.5322 22.6124 22.5759 22.6166 22.6205 22.6104C22.6641 22.605 22.7041 22.5835 22.7325 22.55C22.7362 22.5457 22.7373 22.543 22.7319 22.5389C22.7168 22.5273 22.7021 22.515 22.6873 22.503C22.6765 22.4942 22.6765 22.4942 22.6668 22.5041C22.6429 22.5283 22.6132 22.5357 22.5806 22.5345C22.531 22.5325 22.4959 22.5013 22.4878 22.4525C22.4867 22.4464 22.4878 22.445 22.494 22.4451C22.5315 22.4455 22.5689 22.4455 22.6063 22.4455L22.606 22.4453ZM22.753 23.0227C22.7898 23.0227 22.8267 23.0227 22.8635 23.0227C22.8705 23.0227 22.8723 23.0203 22.8734 23.0141C22.8776 22.9911 22.8779 22.9676 22.8744 22.9445C22.8662 22.8952 22.8413 22.8575 22.7959 22.8349C22.765 22.8204 22.7304 22.8155 22.6966 22.8208C22.6406 22.8277 22.5967 22.8539 22.5685 22.9036C22.5468 22.9423 22.5385 22.987 22.5448 23.0309C22.5514 23.0839 22.5748 23.1285 22.6202 23.1586C22.672 23.1929 22.7292 23.198 22.7885 23.1839C22.8247 23.1756 22.857 23.1554 22.8804 23.1265C22.8823 23.1243 22.8853 23.1223 22.8811 23.1189C22.8625 23.104 22.844 23.089 22.8256 23.0739C22.8231 23.0718 22.8218 23.0722 22.82 23.0746C22.8001 23.0997 22.7736 23.1107 22.7427 23.1123C22.6847 23.1152 22.6432 23.0848 22.6345 23.03C22.6336 23.0238 22.6345 23.0226 22.6407 23.0226C22.678 23.0229 22.7156 23.0227 22.7533 23.0227H22.753ZM21.1682 23.0227C21.2048 23.0227 21.2412 23.0227 21.2779 23.0227C21.2857 23.0227 21.2888 23.0208 21.2899 23.0128C21.2935 22.9914 21.2938 22.9695 21.2911 22.9479C21.2836 22.8973 21.2589 22.8584 21.2123 22.8352C21.1812 22.8205 21.1463 22.8155 21.1123 22.8208C21.0538 22.8283 21.009 22.8566 20.9814 22.9096C20.9619 22.9479 20.9549 22.9914 20.9615 23.0338C20.9685 23.0858 20.9918 23.1294 21.0363 23.1584C21.0938 23.1958 21.1562 23.1995 21.2205 23.1791C21.2505 23.1695 21.2769 23.1512 21.2966 23.1267C21.2986 23.1243 21.3017 23.1222 21.297 23.1186C21.2785 23.104 21.2604 23.089 21.2421 23.074C21.2399 23.0722 21.2385 23.0717 21.2364 23.0744C21.2169 23.0996 21.19 23.1107 21.1592 23.1123C21.1049 23.1152 21.0608 23.0886 21.051 23.0311C21.0498 23.0249 21.0503 23.0224 21.0576 23.0226C21.0943 23.023 21.1314 23.0227 21.1685 23.0227H21.1682ZM20.6508 22.3602C20.6508 22.4372 20.6508 22.5143 20.6508 22.5914C20.6508 22.598 20.6526 22.5998 20.6591 22.5997C20.6856 22.5993 20.7127 22.5992 20.7394 22.5997C20.7464 22.5997 20.7482 22.598 20.7482 22.591C20.7482 22.5298 20.7482 22.4687 20.7482 22.4075C20.7482 22.4012 20.7498 22.3995 20.756 22.3996C20.8025 22.3996 20.8489 22.3996 20.8953 22.3996C20.901 22.3996 20.9029 22.3985 20.9028 22.3923C20.9024 22.3679 20.9024 22.3436 20.9028 22.3194C20.9028 22.3132 20.9014 22.3115 20.8951 22.3115C20.849 22.3115 20.8028 22.3115 20.7568 22.3115C20.7501 22.3115 20.7482 22.3102 20.7483 22.3034C20.7487 22.2748 20.7488 22.2462 20.7483 22.2176C20.7483 22.2105 20.7502 22.2089 20.7571 22.2089C20.8122 22.2089 20.8673 22.2089 20.9224 22.2089C20.9286 22.2089 20.9305 22.2073 20.9303 22.201C20.9303 22.1769 20.9299 22.1528 20.9303 22.1287C20.9303 22.1221 20.9288 22.1204 20.9221 22.1204C20.8347 22.1207 20.7473 22.1207 20.6599 22.1204C20.6528 22.1204 20.6512 22.1222 20.6512 22.1291C20.6511 22.2069 20.651 22.2834 20.651 22.3602H20.6508ZM21.4533 22.568C21.4533 22.5777 21.4533 22.5857 21.4533 22.5935C21.4533 22.5986 21.4549 22.5997 21.46 22.5996C21.4846 22.5996 21.5092 22.5993 21.5339 22.5996C21.5398 22.5996 21.5414 22.5982 21.5413 22.5922C21.5413 22.518 21.5423 22.4438 21.5408 22.3697C21.5397 22.3161 21.5143 22.2763 21.4643 22.2545C21.436 22.2428 21.4052 22.2385 21.3749 22.2421C21.3515 22.2437 21.3288 22.2501 21.3081 22.2609C21.2873 22.2717 21.2691 22.2867 21.2544 22.3049C21.2512 22.3089 21.2518 22.3107 21.2555 22.3135C21.274 22.3274 21.2922 22.3414 21.3104 22.3556C21.3144 22.3587 21.316 22.3581 21.3188 22.3541C21.3259 22.3435 21.3353 22.3347 21.3464 22.3284C21.3575 22.3221 21.3699 22.3184 21.3826 22.3177C21.4254 22.3141 21.4548 22.3399 21.4538 22.3802C21.4538 22.3843 21.453 22.3861 21.4484 22.3868C21.4228 22.3908 21.3973 22.3954 21.3717 22.3995C21.347 22.4025 21.3229 22.4094 21.3005 22.4201C21.2416 22.4508 21.2241 22.5227 21.2643 22.5738C21.2919 22.6088 21.3306 22.6163 21.3723 22.6114C21.4039 22.6077 21.4329 22.5922 21.4536 22.568H21.4533ZM21.7185 22.2803C21.7185 22.272 21.7185 22.266 21.7185 22.26C21.7185 22.2557 21.717 22.2547 21.713 22.2547C21.687 22.2547 21.6611 22.2547 21.6351 22.2547C21.6304 22.2547 21.6295 22.2562 21.6295 22.2605C21.6295 22.3716 21.6295 22.4826 21.6295 22.5936C21.6295 22.5988 21.6313 22.5996 21.6362 22.5996C21.6608 22.5996 21.6854 22.5992 21.7101 22.5996C21.7167 22.5996 21.7189 22.5981 21.7188 22.591C21.7188 22.521 21.7188 22.4511 21.7188 22.3811C21.7183 22.3777 21.7188 22.3742 21.7203 22.3711C21.7352 22.3466 21.7548 22.3285 21.7843 22.3236C21.8193 22.3179 21.8494 22.3347 21.8602 22.3665C21.8635 22.3769 21.8652 22.3877 21.865 22.3986C21.865 22.4629 21.865 22.5273 21.865 22.5918C21.865 22.5979 21.8666 22.5997 21.8729 22.5996C21.897 22.5992 21.9211 22.5992 21.9452 22.5996C21.9515 22.5996 21.953 22.598 21.953 22.5918C21.953 22.5401 21.953 22.4884 21.953 22.4368C21.9539 22.4135 21.9533 22.3901 21.9514 22.3669C21.9475 22.3338 21.9377 22.3036 21.9139 22.2796C21.8761 22.2413 21.8298 22.2348 21.7796 22.2464C21.7567 22.2522 21.7358 22.2639 21.7188 22.2803H21.7185ZM22.1639 23.0059C22.1637 23.0141 22.1642 23.0223 22.1654 23.0305C22.1731 23.0871 22.1991 23.1325 22.2482 23.163C22.2879 23.1876 22.3314 23.1945 22.3771 23.1895C22.4 23.1875 22.4222 23.1809 22.4425 23.1702C22.4628 23.1594 22.4808 23.1448 22.4954 23.1271C22.4991 23.1227 22.4985 23.1209 22.4942 23.1176C22.4742 23.1027 22.4545 23.0876 22.4349 23.0722C22.4305 23.0687 22.4286 23.0695 22.4252 23.0737C22.41 23.0931 22.3878 23.1058 22.3633 23.109C22.3389 23.1121 22.3141 23.1056 22.2945 23.0906C22.2574 23.0627 22.2478 23.0237 22.2565 22.9801C22.2644 22.9408 22.2885 22.9139 22.3279 22.9042C22.3673 22.8946 22.4008 22.9051 22.426 22.9374C22.4286 22.9408 22.4301 22.9416 22.4338 22.9386C22.4537 22.9228 22.4744 22.9071 22.495 22.8918C22.4995 22.8885 22.4983 22.8865 22.4956 22.8833C22.4878 22.8736 22.4789 22.8649 22.4691 22.8573C22.4108 22.8144 22.3467 22.8087 22.2801 22.8318C22.2085 22.8565 22.1642 22.9243 22.1642 23.0059H22.1639ZM22.2023 22.2411C22.1951 22.2417 22.184 22.2421 22.1731 22.2437C22.1247 22.2511 22.0841 22.2724 22.0547 22.3121C22.0197 22.3593 22.0104 22.4126 22.0221 22.4695C22.0268 22.4953 22.0373 22.5196 22.0529 22.5407C22.0684 22.5618 22.0887 22.579 22.1119 22.591C22.1462 22.6088 22.185 22.6162 22.2234 22.6122C22.2476 22.6109 22.2712 22.6047 22.2928 22.5939C22.3144 22.583 22.3335 22.5679 22.349 22.5493C22.3525 22.5451 22.3526 22.543 22.348 22.5396C22.3281 22.5248 22.3082 22.5097 22.2887 22.4943C22.2842 22.4907 22.2821 22.4915 22.2789 22.4956C22.2636 22.5152 22.2411 22.5279 22.2164 22.5309C22.1918 22.5339 22.1669 22.5271 22.1473 22.5118C22.1113 22.4837 22.1019 22.4451 22.1106 22.4022C22.1185 22.3631 22.1424 22.3359 22.1819 22.3263C22.2215 22.3167 22.2549 22.3271 22.28 22.3595C22.2835 22.3639 22.2853 22.3627 22.2887 22.3601C22.3086 22.3449 22.3281 22.3296 22.3481 22.3149C22.3532 22.3111 22.3526 22.3089 22.3489 22.3045C22.3116 22.2606 22.263 22.2421 22.2026 22.2411H22.2023ZM21.7755 23.0768C21.774 23.073 21.7729 23.0706 21.7721 23.0682C21.7444 22.9922 21.7167 22.9163 21.6891 22.8403C21.6886 22.8378 21.6872 22.8356 21.685 22.8341C21.6829 22.8327 21.6803 22.8321 21.6778 22.8325C21.6522 22.8329 21.6264 22.8329 21.6008 22.8325C21.5937 22.8325 21.5932 22.8342 21.5954 22.8404C21.6357 22.9506 21.6758 23.0608 21.7155 23.1711C21.7174 23.1762 21.7199 23.1771 21.7247 23.177C21.7578 23.177 21.7914 23.177 21.8248 23.177C21.827 23.1774 21.8294 23.1769 21.8313 23.1756C21.8332 23.1743 21.8345 23.1723 21.835 23.1701C21.8473 23.1352 21.8601 23.1005 21.8727 23.0657C21.9 22.9906 21.9273 22.9154 21.9546 22.84C21.9558 22.8366 21.9591 22.8324 21.9512 22.8325C21.9236 22.8325 21.8961 22.8325 21.8685 22.8325C21.8671 22.8323 21.8657 22.8327 21.8645 22.8335C21.8633 22.8344 21.8625 22.8356 21.8623 22.837C21.8592 22.846 21.8557 22.8549 21.8526 22.8639C21.8271 22.9345 21.8017 23.0049 21.7755 23.0768ZM23.0716 22.8191C23.0543 22.8187 23.0372 22.8215 23.0209 22.8273C22.9798 22.8425 22.9531 22.8705 22.9488 22.9153C22.9445 22.9591 22.962 22.9931 22.9996 23.0163C23.0155 23.0256 23.0323 23.0336 23.0496 23.0401C23.0646 23.0454 23.0789 23.0522 23.0925 23.0605C23.1164 23.0766 23.1065 23.1048 23.0876 23.1128C23.0735 23.1185 23.0577 23.1189 23.0433 23.114C23.0229 23.107 23.0051 23.094 22.992 23.0769C22.9881 23.0721 22.9862 23.0723 22.9821 23.0765C22.9664 23.0923 22.9505 23.1078 22.9343 23.1229C22.9301 23.1269 22.9306 23.1296 22.9343 23.1329C22.9811 23.1825 23.0385 23.2003 23.1046 23.186C23.1673 23.1724 23.2027 23.1154 23.1897 23.0527C23.1838 23.0246 23.1669 23.0044 23.1433 22.9891C23.1227 22.9771 23.1011 22.967 23.0787 22.959C23.0665 22.9547 23.0549 22.9486 23.0445 22.9409C23.0408 22.9383 23.0378 22.9347 23.036 22.9305C23.0342 22.9264 23.0335 22.9218 23.0341 22.9172C23.0347 22.9127 23.0365 22.9085 23.0394 22.9049C23.0422 22.9013 23.046 22.8986 23.0503 22.8971C23.0602 22.8925 23.0713 22.8912 23.0821 22.8931C23.1052 22.897 23.1215 22.9113 23.1359 22.9285C23.1387 22.9318 23.1402 22.9326 23.1437 22.9292C23.1596 22.9137 23.1756 22.8983 23.192 22.8832C23.1966 22.8789 23.1965 22.8765 23.1924 22.8718C23.1771 22.855 23.1584 22.8417 23.1376 22.8326C23.1168 22.8235 23.0943 22.8189 23.0716 22.8191ZM20.7714 22.8191C20.7512 22.8189 20.7311 22.8228 20.7125 22.8305C20.632 22.8648 20.6329 22.9616 20.6809 23.0029C20.7005 23.0183 20.7224 23.0304 20.7458 23.0388C20.7616 23.0442 20.7768 23.0512 20.7911 23.0597C20.8011 23.0663 20.808 23.0751 20.8062 23.0881C20.8054 23.0944 20.8027 23.1002 20.7986 23.1049C20.7944 23.1097 20.789 23.113 20.7829 23.1146C20.772 23.118 20.7603 23.1184 20.7492 23.1157C20.725 23.1102 20.7072 23.0952 20.6918 23.0768C20.6876 23.0719 20.6856 23.0726 20.6817 23.0768C20.6658 23.0927 20.6496 23.1084 20.6333 23.1239C20.6302 23.127 20.6299 23.1288 20.6333 23.1321C20.6805 23.1828 20.7386 23.2017 20.8057 23.186C20.8811 23.1684 20.9035 23.1004 20.8882 23.0463C20.8794 23.0153 20.8572 22.9961 20.8299 22.9815C20.8112 22.9716 20.7912 22.9646 20.7718 22.9563C20.7613 22.9525 20.7516 22.9469 20.7431 22.9396C20.7399 22.937 20.7374 22.9336 20.7359 22.9298C20.7344 22.9259 20.7338 22.9217 20.7344 22.9176C20.7349 22.9135 20.7365 22.9096 20.739 22.9063C20.7414 22.903 20.7447 22.9003 20.7485 22.8986C20.7589 22.8931 20.7709 22.8913 20.7824 22.8936C20.8046 22.8972 20.8208 22.9105 20.8346 22.9272C20.8388 22.9322 20.8412 22.9327 20.8459 22.9278C20.8609 22.9129 20.8762 22.8982 20.8918 22.884C20.8967 22.8795 20.8971 22.8769 20.8926 22.8721C20.8595 22.8366 20.8188 22.8203 20.7714 22.819V22.8191ZM21.0829 22.288C21.0829 22.2778 21.0829 22.2696 21.0829 22.2615C21.0829 22.2567 21.0823 22.2549 21.0766 22.2549C21.0514 22.2552 21.0263 22.2549 21.0011 22.2549C20.996 22.2549 20.9945 22.2561 20.9945 22.2615C20.9945 22.372 20.9945 22.4825 20.9945 22.5929C20.9945 22.5985 20.9961 22.6 21.0017 22.6C21.026 22.6 21.0504 22.5996 21.0746 22.6C21.0812 22.6 21.0828 22.5982 21.0828 22.5917C21.0828 22.5284 21.0833 22.4651 21.0821 22.4018C21.0818 22.3943 21.0833 22.3869 21.0864 22.3801C21.0896 22.3733 21.0943 22.3674 21.1002 22.3629C21.1078 22.3562 21.1164 22.3509 21.1257 22.3471C21.1487 22.3383 21.1737 22.337 21.1975 22.3432C21.2024 22.3443 21.2033 22.3432 21.2032 22.3386C21.2032 22.3121 21.2032 22.2856 21.2032 22.259C21.2032 22.2539 21.2013 22.2524 21.1966 22.2512C21.1732 22.2458 21.1488 22.2479 21.1267 22.2573C21.1103 22.2646 21.0956 22.275 21.0832 22.2879L21.0829 22.288ZM21.4488 22.8657C21.4488 22.8558 21.4484 22.8479 21.4488 22.84C21.4494 22.8337 21.4469 22.8326 21.4412 22.8327C21.4169 22.8327 21.3925 22.833 21.3683 22.8327C21.3625 22.8327 21.3608 22.834 21.3608 22.8401C21.3608 22.9501 21.3608 23.06 21.3608 23.17C21.3608 23.1766 21.3628 23.1772 21.3684 23.1772C21.392 23.1768 21.4156 23.1767 21.4391 23.1772C21.4467 23.1772 21.4492 23.1759 21.4492 23.1675C21.4487 23.105 21.4496 23.0425 21.4484 22.9799C21.448 22.9722 21.4496 22.9644 21.4528 22.9574C21.4561 22.9505 21.4611 22.9444 21.4673 22.9398C21.4714 22.9364 21.4757 22.9333 21.4802 22.9306C21.5058 22.9153 21.5332 22.9147 21.5617 22.9203C21.5674 22.9215 21.5695 22.9211 21.5694 22.9144C21.569 22.8887 21.569 22.863 21.5694 22.8374C21.5694 22.8314 21.567 22.8297 21.5619 22.8286C21.538 22.8233 21.513 22.8259 21.4906 22.836C21.4751 22.8433 21.4611 22.8533 21.4491 22.8656L21.4488 22.8657ZM22.0034 23.0052C22.0034 23.0603 22.0034 23.1153 22.0034 23.1705C22.0034 23.1753 22.0042 23.1771 22.01 23.1771C22.0354 23.1768 22.0609 23.1768 22.0863 23.1771C22.0918 23.1771 22.0929 23.1752 22.0929 23.1705C22.0929 23.0604 22.0929 22.9502 22.0929 22.84C22.0929 22.8334 22.0908 22.8327 22.0852 22.8328C22.0608 22.8328 22.0365 22.8331 22.0123 22.8328C22.0057 22.8328 22.0039 22.8342 22.0039 22.841C22.0038 22.8955 22.0037 22.9503 22.0037 23.0051L22.0034 23.0052ZM21.9907 22.7213C21.9907 22.7362 21.9966 22.7506 22.0071 22.7612C22.0177 22.7719 22.032 22.7779 22.047 22.778C22.0547 22.7785 22.0624 22.7775 22.0698 22.7749C22.0771 22.7723 22.0838 22.7683 22.0894 22.763C22.0951 22.7578 22.0996 22.7514 22.1028 22.7443C22.1059 22.7372 22.1075 22.7296 22.1075 22.7218C22.1075 22.7141 22.106 22.7064 22.1029 22.6993C22.0999 22.6922 22.0954 22.6858 22.0897 22.6805C22.0841 22.6752 22.0774 22.6711 22.0701 22.6685C22.0628 22.6659 22.0551 22.6648 22.0474 22.6653C22.0325 22.6653 22.0183 22.6712 22.0077 22.6817C21.9971 22.6921 21.9911 22.7063 21.991 22.7212L21.9907 22.7213ZM22.2039 21.3033C22.2075 21.3049 22.2101 21.3033 22.2128 21.3023C22.2339 21.2967 22.2551 21.2931 22.2769 21.2988C22.284 21.3007 22.2847 21.3024 22.28 21.3082C22.2762 21.3126 22.2715 21.3162 22.2663 21.3188C22.2575 21.3239 22.2493 21.3298 22.2415 21.3364C22.2365 21.3403 22.2344 21.347 22.226 21.3454C22.224 21.345 22.2208 21.3454 22.2202 21.3482C22.2196 21.351 22.2228 21.3511 22.224 21.3527C22.2313 21.3612 22.2445 21.3552 22.2521 21.3642C22.2533 21.3657 22.2567 21.3658 22.2566 21.3694C22.2568 21.371 22.2563 21.3726 22.2552 21.3738C22.2541 21.3751 22.2526 21.3759 22.251 21.376C22.2469 21.3767 22.2427 21.3771 22.2378 21.3777C22.2463 21.3805 22.2554 21.3814 22.2643 21.3802C22.2806 21.3794 22.2822 21.3774 22.2818 21.3612C22.2814 21.3594 22.2814 21.3575 22.2818 21.3557C22.2839 21.3491 22.2795 21.3417 22.2863 21.3358C22.2894 21.3335 22.2929 21.3317 22.2967 21.3305C22.3003 21.3292 22.3033 21.3265 22.2995 21.323C22.2956 21.3195 22.2973 21.3172 22.3006 21.3146C22.3065 21.3104 22.3108 21.3043 22.3127 21.2974C22.3137 21.2929 22.3135 21.2882 22.3089 21.2865C22.2989 21.2818 22.288 21.2791 22.2769 21.2788C22.2562 21.2803 22.236 21.2856 22.2172 21.2945C22.2124 21.2966 22.208 21.2996 22.2042 21.3033L22.2039 21.3033Z" fill="#FEFEFE"/> +<path d="M21.4687 21.7393L21.4599 21.7447C21.4524 21.7492 21.4443 21.7527 21.4427 21.7634C21.4408 21.7691 21.4379 21.7744 21.4342 21.7792C21.4484 21.7815 21.4496 21.7642 21.4612 21.7638C21.4613 21.7666 21.4605 21.7694 21.4591 21.7719C21.4576 21.7744 21.4555 21.7764 21.453 21.7778C21.4416 21.7834 21.4327 21.7932 21.4282 21.8051C21.4249 21.8122 21.4207 21.8189 21.4158 21.825C21.4199 21.8268 21.4217 21.8241 21.4235 21.8222C21.437 21.8081 21.4518 21.7951 21.4676 21.7836C21.4866 21.77 21.503 21.7521 21.5278 21.7473C21.5574 21.7416 21.5866 21.7335 21.6172 21.7354C21.6307 21.7365 21.6443 21.7335 21.6562 21.7268C21.6633 21.7227 21.6713 21.7244 21.6782 21.7211C21.6885 21.7156 21.6984 21.7093 21.7076 21.7022C21.7156 21.6962 21.7242 21.6908 21.7332 21.6863C21.7378 21.6842 21.7422 21.681 21.748 21.6841C21.7511 21.6857 21.7533 21.6825 21.7554 21.6807C21.7666 21.6713 21.7774 21.6615 21.7924 21.6584C21.7931 21.6581 21.7939 21.6579 21.7947 21.6578C21.7996 21.6578 21.8063 21.6541 21.8088 21.6605C21.8109 21.6658 21.8035 21.6664 21.8007 21.6694C21.7979 21.6724 21.7947 21.6743 21.7921 21.6774C21.8017 21.6774 21.8067 21.6684 21.8151 21.6659C21.8155 21.6674 21.8154 21.6689 21.8148 21.6703C21.8142 21.6716 21.8131 21.6728 21.8118 21.6735C21.7841 21.6944 21.7591 21.7188 21.7375 21.746C21.709 21.7813 21.6723 21.8041 21.6319 21.8226C21.6005 21.837 21.5693 21.852 21.5382 21.8672C21.5284 21.8719 21.5191 21.8774 21.5102 21.8837C21.5045 21.8875 21.4978 21.8895 21.491 21.8892C21.2142 21.8892 20.9373 21.8892 20.6604 21.8892C20.6526 21.8892 20.6504 21.8876 20.6504 21.8793C20.6504 21.5751 20.6504 21.2709 20.6504 20.9667C20.6504 20.959 20.6518 20.9565 20.6602 20.9565C21.0539 20.9565 21.4476 20.9565 21.8413 20.9565H21.8496C21.8318 20.9646 21.8141 20.9719 21.7966 20.9797C21.7595 20.9961 21.7364 21.0251 21.7216 21.0618C21.7209 21.0643 21.7194 21.0665 21.7173 21.0681C21.697 21.0814 21.6836 21.1007 21.6717 21.1211C21.6625 21.1372 21.6533 21.1532 21.6444 21.1695C21.6326 21.1911 21.6345 21.2139 21.6397 21.2367C21.6467 21.2674 21.6504 21.2988 21.6596 21.329C21.6605 21.3337 21.6609 21.3385 21.6608 21.3433C21.6624 21.3536 21.6658 21.3636 21.6708 21.3728C21.674 21.3781 21.6766 21.3839 21.6784 21.3898C21.6794 21.3931 21.6814 21.396 21.684 21.3982C21.6954 21.4101 21.7056 21.4229 21.7147 21.4367C21.7168 21.4403 21.7213 21.4444 21.7179 21.4487C21.7145 21.4531 21.7096 21.4507 21.7051 21.4501C21.6925 21.4478 21.6809 21.4416 21.672 21.4324C21.6646 21.4258 21.6575 21.4186 21.6499 21.4114C21.6476 21.4155 21.6503 21.4175 21.652 21.4194C21.6573 21.4253 21.6629 21.431 21.6681 21.437C21.6697 21.4384 21.6708 21.4403 21.6713 21.4424C21.6717 21.4445 21.6714 21.4467 21.6705 21.4487C21.668 21.4531 21.6635 21.4527 21.6591 21.4519H21.6576C21.6457 21.4499 21.6447 21.4507 21.6435 21.4633C21.6354 21.4602 21.6268 21.4585 21.618 21.4584C21.6156 21.4584 21.6132 21.4577 21.6111 21.4565C21.6091 21.4552 21.6073 21.4534 21.6062 21.4513C21.6044 21.4482 21.602 21.4456 21.599 21.4436C21.596 21.4416 21.5927 21.4404 21.5891 21.44C21.5471 21.4303 21.5042 21.4248 21.461 21.4234C21.4438 21.4221 21.4265 21.4254 21.4108 21.4327C21.3952 21.44 21.3817 21.4513 21.3716 21.4653C21.3697 21.4678 21.3661 21.4704 21.3686 21.4734C21.371 21.4764 21.3745 21.4746 21.3774 21.4729C21.4141 21.4517 21.4555 21.4464 21.496 21.4385C21.5023 21.4375 21.5087 21.4372 21.515 21.4376C21.5151 21.4381 21.5151 21.4386 21.515 21.4391C21.4987 21.4413 21.4828 21.4451 21.4673 21.4506C21.4492 21.4565 21.4305 21.46 21.412 21.4645C21.4045 21.4663 21.3972 21.469 21.3904 21.4726C21.4066 21.4722 21.4227 21.4728 21.4387 21.4742C21.4815 21.4793 21.5234 21.4871 21.5615 21.5089C21.5668 21.5118 21.5717 21.5154 21.5761 21.5196C21.581 21.5245 21.587 21.528 21.5936 21.5299C21.6002 21.5318 21.6072 21.5319 21.6139 21.5302C21.6261 21.5282 21.6382 21.5254 21.6501 21.5219C21.6663 21.5177 21.6813 21.5097 21.6939 21.4987C21.6951 21.4974 21.6964 21.4958 21.6986 21.4971C21.7007 21.4985 21.6998 21.5004 21.6993 21.502C21.6956 21.5144 21.6943 21.5274 21.6864 21.5384C21.6826 21.5437 21.6854 21.5488 21.693 21.5517C21.687 21.5547 21.6801 21.5545 21.6752 21.5587C21.6738 21.56 21.6686 21.5608 21.6732 21.5646C21.6739 21.5651 21.674 21.5663 21.6732 21.5663C21.6661 21.567 21.6666 21.5725 21.6652 21.5775C21.6643 21.5805 21.6585 21.5799 21.6566 21.5841C21.6595 21.5876 21.6638 21.5848 21.6681 21.5863C21.6534 21.5939 21.6383 21.6005 21.6227 21.6062C21.6199 21.607 21.6172 21.608 21.6181 21.6113C21.6189 21.6146 21.6221 21.6119 21.6243 21.6127C21.6238 21.6155 21.621 21.6157 21.6192 21.6168C21.6016 21.6266 21.5839 21.6361 21.5665 21.646C21.5607 21.6493 21.5533 21.6512 21.5511 21.6587C21.5504 21.6606 21.5484 21.6601 21.5469 21.6601C21.5403 21.6601 21.5403 21.666 21.5403 21.669C21.5411 21.674 21.5456 21.6709 21.5487 21.6703C21.5533 21.6696 21.5578 21.6658 21.5639 21.6709C21.5506 21.6725 21.5426 21.6814 21.5331 21.6892C21.5625 21.6856 21.5918 21.6867 21.6199 21.6787C21.6561 21.6684 21.6862 21.6471 21.7132 21.6219C21.7145 21.6205 21.7158 21.6192 21.7172 21.618C21.72 21.6158 21.7228 21.61 21.7253 21.6118C21.729 21.6147 21.7253 21.6195 21.7234 21.6232C21.7173 21.6368 21.7072 21.6482 21.6944 21.6559C21.6861 21.6611 21.6782 21.667 21.6705 21.6728C21.6524 21.6861 21.6315 21.6899 21.6108 21.6939C21.5786 21.7 21.5458 21.7024 21.514 21.7112C21.495 21.7161 21.4771 21.7244 21.461 21.7356C21.4563 21.739 21.4496 21.7374 21.4457 21.7422C21.4445 21.7437 21.4414 21.7446 21.4429 21.747C21.4445 21.7495 21.4469 21.7484 21.4488 21.747C21.4545 21.7432 21.4605 21.74 21.4669 21.7375L21.4687 21.7393ZM21.3993 21.6254C21.4021 21.6266 21.4051 21.6272 21.4081 21.6272C21.4111 21.6272 21.4141 21.6266 21.4169 21.6254C21.4292 21.6212 21.4412 21.6155 21.4547 21.6167C21.4561 21.6166 21.4574 21.6164 21.4586 21.6159C21.4735 21.6125 21.4886 21.6092 21.5034 21.6058C21.5282 21.5999 21.5522 21.5913 21.575 21.5801C21.5306 21.5464 21.4783 21.5346 21.4268 21.5196C21.4282 21.5181 21.4311 21.5191 21.4311 21.5169C21.4311 21.5147 21.4287 21.5143 21.4272 21.5139C21.4225 21.5127 21.4178 21.512 21.4133 21.5109C21.4117 21.5109 21.4087 21.5109 21.4091 21.5095C21.4116 21.5018 21.4045 21.5036 21.4018 21.5029C21.3919 21.5001 21.3816 21.4982 21.3706 21.4958C21.3759 21.493 21.3803 21.4905 21.382 21.4853C21.383 21.4827 21.3849 21.4797 21.382 21.4774C21.3792 21.4751 21.3771 21.4774 21.3748 21.4786C21.3617 21.4863 21.351 21.4975 21.3438 21.511C21.3405 21.5168 21.3335 21.5242 21.3368 21.5291C21.34 21.5339 21.35 21.5331 21.3576 21.533C21.3625 21.5322 21.3675 21.5323 21.3724 21.5335C21.3697 21.5361 21.3663 21.5377 21.3626 21.5382C21.3576 21.5388 21.3527 21.5401 21.3481 21.5419C21.3438 21.5445 21.3411 21.5473 21.3469 21.5514C21.3436 21.5535 21.3395 21.5539 21.3377 21.558C21.3393 21.5592 21.3412 21.56 21.3431 21.5604C21.3451 21.5608 21.3471 21.5607 21.349 21.5601C21.3515 21.5592 21.3541 21.5591 21.3566 21.5601C21.359 21.561 21.3611 21.5628 21.3623 21.5651C21.3464 21.5717 21.3429 21.5904 21.3291 21.5991C21.3288 21.5993 21.3286 21.5997 21.3284 21.6C21.3283 21.6004 21.3282 21.6008 21.3282 21.6012C21.3289 21.6057 21.3257 21.6078 21.3228 21.61C21.3127 21.6181 21.3029 21.6271 21.2923 21.6342C21.2817 21.6414 21.2801 21.6571 21.2685 21.6641C21.2681 21.6643 21.2677 21.6645 21.2674 21.6649C21.2671 21.6652 21.2668 21.6657 21.2667 21.6661C21.2665 21.6666 21.2665 21.667 21.2665 21.6675C21.2666 21.668 21.2667 21.6684 21.2669 21.6688C21.2685 21.671 21.2703 21.6694 21.2719 21.6688C21.2756 21.6674 21.2792 21.6657 21.2827 21.6638C21.3002 21.6528 21.3184 21.6429 21.3372 21.6343C21.3585 21.6253 21.3788 21.6157 21.4026 21.6206C21.403 21.6208 21.4034 21.621 21.4037 21.6214C21.4035 21.624 21.3999 21.6225 21.3993 21.6254ZM21.4234 21.3958C21.415 21.3922 21.4058 21.3905 21.3966 21.3909C21.3874 21.3913 21.3784 21.3939 21.3704 21.3983C21.3375 21.4172 21.3078 21.4412 21.2825 21.4694C21.2662 21.4879 21.2473 21.5041 21.2265 21.5173C21.2224 21.5196 21.2191 21.5232 21.217 21.5274C21.2031 21.5548 21.1867 21.5809 21.1682 21.6054C21.1669 21.6072 21.164 21.6087 21.165 21.612C21.168 21.6124 21.1689 21.6098 21.1703 21.6082C21.1881 21.5883 21.206 21.5691 21.2253 21.5509C21.2469 21.5303 21.2705 21.5117 21.2957 21.4955C21.2984 21.4937 21.3005 21.493 21.3029 21.4955C21.3053 21.498 21.3013 21.4989 21.3008 21.5006C21.3002 21.5024 21.2992 21.5028 21.2987 21.504C21.2982 21.5052 21.2952 21.5086 21.2972 21.5103C21.2993 21.5119 21.3025 21.5095 21.3044 21.5074C21.3053 21.5064 21.3057 21.505 21.3067 21.5041C21.3103 21.5008 21.3096 21.4942 21.3129 21.492C21.3253 21.4838 21.3317 21.4715 21.3381 21.4589C21.3432 21.4484 21.3502 21.4391 21.3589 21.4314C21.3717 21.4208 21.386 21.4121 21.3983 21.4001C21.3995 21.4027 21.3993 21.4072 21.4027 21.4053C21.4091 21.4019 21.4172 21.402 21.4234 21.3958ZM21.4067 21.7195C21.395 21.714 21.3843 21.7176 21.3743 21.7152C21.3699 21.7143 21.3652 21.7149 21.3611 21.7169C21.3536 21.7202 21.3457 21.7227 21.3375 21.724C21.3144 21.7278 21.2934 21.7399 21.2786 21.7582C21.2768 21.7602 21.2662 21.7624 21.2763 21.7681C21.2763 21.7681 21.2756 21.77 21.2754 21.771C21.2745 21.7778 21.2718 21.7843 21.2676 21.7899C21.2625 21.7969 21.2571 21.8038 21.2516 21.8106C21.2497 21.8131 21.2487 21.8155 21.2516 21.8172C21.2546 21.819 21.2548 21.8157 21.2561 21.8144C21.2643 21.8064 21.27 21.7945 21.2844 21.7962C21.2853 21.7962 21.2865 21.7947 21.2874 21.7938C21.2972 21.7826 21.3095 21.7739 21.3234 21.7685C21.3533 21.7576 21.3765 21.7343 21.4067 21.7195ZM21.4706 21.642C21.4618 21.6353 21.4533 21.6332 21.4441 21.6398C21.4413 21.6412 21.4383 21.6422 21.4352 21.6428C21.4327 21.6435 21.4304 21.6449 21.4286 21.6468C21.4274 21.6482 21.4257 21.6499 21.4269 21.6517C21.4281 21.6534 21.4298 21.6526 21.4312 21.6525C21.4416 21.6509 21.4519 21.6493 21.4622 21.6474C21.4656 21.6468 21.4686 21.6448 21.4706 21.642ZM21.3927 21.7608C21.3927 21.7598 21.3915 21.7594 21.3901 21.7592C21.3885 21.759 21.387 21.7592 21.3855 21.7598C21.384 21.7603 21.3827 21.7613 21.3817 21.7625C21.3759 21.7682 21.37 21.7737 21.3642 21.7795C21.3627 21.7809 21.3591 21.7822 21.3613 21.7848C21.3618 21.7852 21.3624 21.7856 21.363 21.7859C21.3636 21.7861 21.3643 21.7863 21.365 21.7863C21.3656 21.7863 21.3663 21.7861 21.3669 21.7859C21.3675 21.7856 21.3681 21.7852 21.3686 21.7848C21.3728 21.7808 21.3778 21.7778 21.3832 21.7759C21.3896 21.773 21.3902 21.7668 21.3927 21.7608Z" fill="#273375"/> +<path d="M22.3339 21.5442C22.3405 21.54 22.3463 21.537 22.3513 21.5332C22.3606 21.5262 22.3617 21.5193 22.3559 21.5091L22.3542 21.5064C22.346 21.4912 22.3444 21.4793 22.368 21.4745C22.37 21.474 22.3721 21.4735 22.3741 21.4729C22.3918 21.4677 22.3978 21.4559 22.3902 21.439C22.3813 21.4218 22.3709 21.4055 22.3592 21.3903C22.3519 21.3795 22.3446 21.3688 22.338 21.3576C22.3302 21.3452 22.3275 21.3302 22.3306 21.3158C22.3365 21.2882 22.3311 21.261 22.324 21.2343C22.3184 21.214 22.3119 21.1938 22.3056 21.1737C22.3041 21.1697 22.3023 21.1659 22.3001 21.1623C22.2991 21.161 22.2984 21.1594 22.298 21.1578C22.2976 21.1562 22.2976 21.1545 22.298 21.1529C22.2983 21.1513 22.299 21.1498 22.3 21.1484C22.301 21.1471 22.3022 21.146 22.3037 21.1452C22.3082 21.1416 22.3129 21.138 22.3169 21.134C22.3189 21.1322 22.3205 21.1299 22.3215 21.1274C22.3224 21.1249 22.3229 21.1221 22.3226 21.1194C22.3224 21.1167 22.3216 21.1141 22.3202 21.1117C22.3189 21.1094 22.317 21.1074 22.3147 21.1059C22.3139 21.1051 22.3129 21.1045 22.3118 21.1042C22.3107 21.1038 22.3096 21.1038 22.3084 21.104C22.3073 21.1043 22.3063 21.1048 22.3054 21.1055C22.3045 21.1063 22.3038 21.1072 22.3034 21.1083C22.3017 21.1121 22.2995 21.1158 22.2968 21.119C22.2958 21.1201 22.2945 21.1208 22.293 21.121C22.2915 21.1211 22.29 21.1207 22.2889 21.1197C22.2868 21.1179 22.2889 21.1154 22.2901 21.1134C22.2952 21.1061 22.2952 21.1062 22.2865 21.1045C22.2845 21.1044 22.2826 21.1039 22.2808 21.103C22.279 21.1021 22.2774 21.1009 22.2762 21.0994C22.2616 21.0804 22.242 21.0657 22.2197 21.0571C22.2187 21.0567 22.2177 21.0562 22.2168 21.0556C22.2168 21.0556 22.2168 21.0552 22.2168 21.0542C22.2213 21.0546 22.2255 21.0549 22.2301 21.0554C22.2372 21.0562 22.2444 21.0564 22.2515 21.0558C22.2574 21.0557 22.2631 21.0538 22.2677 21.0502C22.2723 21.0466 22.2756 21.0415 22.2771 21.0359C22.2833 21.015 22.28 21.0027 22.2624 20.9881C22.2488 20.9767 22.2325 20.9702 22.2174 20.9616L22.2103 20.9576C22.2131 20.9562 22.2162 20.9557 22.2193 20.9563C22.5419 20.9563 22.8645 20.9563 23.1871 20.9563C23.1945 20.9563 23.1969 20.9577 23.1969 20.9657C23.1969 21.2706 23.1969 21.5753 23.1969 21.8799C23.1969 21.8874 23.1947 21.8889 23.1876 21.8889C22.8689 21.8887 22.5505 21.8886 22.2323 21.8886C22.2276 21.8886 22.223 21.8874 22.219 21.885C22.1831 21.8652 22.1444 21.8515 22.1057 21.8379C22.1036 21.837 22.1014 21.8362 22.0991 21.8356C22.0844 21.8333 22.0798 21.8229 22.0788 21.8101C22.074 21.7513 22.094 21.7026 22.1398 21.6652C22.1507 21.6574 22.1641 21.654 22.1774 21.6557C22.2023 21.6571 22.2265 21.6635 22.2511 21.6668C22.2577 21.6677 22.2639 21.67 22.2703 21.6713C22.2788 21.6731 22.2877 21.6731 22.2963 21.6713C22.3049 21.6695 22.313 21.6658 22.3201 21.6606C22.3282 21.6539 22.3339 21.6446 22.3363 21.6344C22.3388 21.6241 22.3379 21.6133 22.3337 21.6036C22.332 21.6008 22.3314 21.5976 22.332 21.5944C22.3326 21.5912 22.3344 21.5884 22.3369 21.5865C22.3409 21.583 22.345 21.5798 22.3491 21.5763C22.3513 21.5744 22.3528 21.5718 22.3533 21.5689C22.3537 21.566 22.3532 21.563 22.3517 21.5606C22.3504 21.5565 22.348 21.5529 22.3449 21.5501C22.3418 21.5472 22.338 21.5452 22.3339 21.5442Z" fill="#E20613"/> +<path d="M22.6068 22.4453C22.5695 22.4453 22.5321 22.4453 22.4948 22.4453C22.4881 22.4453 22.4875 22.4467 22.4886 22.4528C22.4966 22.5015 22.5317 22.5328 22.5814 22.5348C22.6142 22.536 22.6439 22.5286 22.6676 22.5044C22.6773 22.4945 22.6773 22.4944 22.6881 22.5033C22.7029 22.5153 22.7176 22.5276 22.7327 22.5391C22.7381 22.5433 22.737 22.5458 22.7333 22.5503C22.7049 22.5838 22.6649 22.6053 22.6213 22.6107C22.5767 22.6169 22.533 22.6127 22.4922 22.5917C22.4401 22.5648 22.4103 22.521 22.4004 22.464C22.3905 22.4146 22.3996 22.3633 22.4258 22.3202C22.4529 22.276 22.4936 22.2516 22.5445 22.2439C22.5819 22.2382 22.6186 22.2408 22.6527 22.2586C22.697 22.2817 22.7213 22.3192 22.729 22.368C22.7325 22.3914 22.732 22.4152 22.7276 22.4384C22.7266 22.4435 22.7247 22.4457 22.7188 22.4456C22.6815 22.4449 22.6441 22.4453 22.6068 22.4453ZM22.5686 22.3743C22.5921 22.3743 22.6157 22.3743 22.6393 22.3743C22.6439 22.3743 22.6451 22.3733 22.6442 22.3684C22.6417 22.354 22.6341 22.3409 22.6227 22.3316C22.6048 22.317 22.5837 22.3138 22.5615 22.3151C22.5463 22.3158 22.5317 22.3211 22.5197 22.3304C22.5077 22.3397 22.4988 22.3525 22.4944 22.367C22.4927 22.3723 22.493 22.3745 22.4995 22.3743C22.5225 22.3739 22.5455 22.3741 22.5686 22.3741V22.3743Z" fill="#273375"/> +<path d="M22.7538 23.0228C22.7162 23.0228 22.6786 23.0228 22.6411 23.0228C22.635 23.0228 22.634 23.024 22.6349 23.0302C22.6435 23.0851 22.6852 23.1155 22.7431 23.1126C22.774 23.111 22.8008 23.1 22.8204 23.0749C22.8222 23.0725 22.8235 23.0721 22.826 23.0741C22.8444 23.0892 22.8629 23.1042 22.8815 23.1191C22.8857 23.1225 22.8827 23.1245 22.8808 23.1268C22.8574 23.1556 22.8251 23.1758 22.7889 23.1842C22.7296 23.1982 22.6724 23.1931 22.6206 23.1588C22.575 23.1284 22.5513 23.0843 22.545 23.031C22.5387 22.9871 22.547 22.9424 22.5687 22.9037C22.5969 22.854 22.6408 22.8279 22.6968 22.8209C22.7308 22.8156 22.7655 22.8206 22.7966 22.8353C22.842 22.8579 22.8669 22.8956 22.8751 22.9449C22.8786 22.968 22.8783 22.9915 22.8741 23.0145C22.873 23.0207 22.8712 23.0232 22.8641 23.0231C22.8275 23.0224 22.7906 23.0228 22.7538 23.0228ZM22.6392 22.9526C22.6886 22.9526 22.7375 22.9526 22.7864 22.9526C22.7916 22.9526 22.7912 22.9502 22.7905 22.9467C22.7891 22.9378 22.7857 22.9293 22.7805 22.9219C22.7754 22.9145 22.7687 22.9083 22.7609 22.9038C22.7455 22.8952 22.728 22.8913 22.7105 22.8926C22.6935 22.8929 22.6771 22.899 22.6642 22.9099C22.6512 22.9209 22.6423 22.9359 22.6392 22.9526Z" fill="#E20714"/> +<path d="M21.1689 23.0229C21.1318 23.0229 21.0947 23.0229 21.0576 23.0229C21.0503 23.0229 21.0498 23.0252 21.051 23.0314C21.0608 23.0887 21.1048 23.1152 21.1591 23.1125C21.1901 23.1108 21.2168 23.0998 21.2363 23.0746C21.2384 23.0719 21.2398 23.0724 21.242 23.0742C21.2603 23.0892 21.2784 23.1042 21.2969 23.1187C21.3016 23.1224 21.2985 23.1244 21.2965 23.1269C21.2768 23.1514 21.2504 23.1696 21.2204 23.1793C21.1561 23.1997 21.0937 23.196 21.0362 23.1586C20.9917 23.1295 20.9684 23.0857 20.9614 23.034C20.9548 22.9915 20.9617 22.9481 20.9813 22.9098C21.0089 22.8568 21.0536 22.8285 21.1122 22.821C21.1464 22.8155 21.1815 22.8205 21.2128 22.8354C21.2592 22.8587 21.2841 22.8977 21.2916 22.9481C21.2943 22.9697 21.294 22.9915 21.2904 23.013C21.2893 23.021 21.2862 23.023 21.2784 23.0229C21.242 23.0224 21.2055 23.0229 21.1689 23.0229ZM21.1313 22.9527C21.1546 22.9527 21.1777 22.9527 21.2011 22.9527C21.2063 22.9527 21.2074 22.9515 21.2064 22.9464C21.2041 22.9316 21.1962 22.9183 21.1845 22.909C21.168 22.8967 21.1476 22.8909 21.1271 22.8926C21.1112 22.8928 21.0958 22.898 21.0831 22.9076C21.0704 22.9171 21.0611 22.9304 21.0566 22.9457C21.0549 22.9509 21.055 22.9529 21.0615 22.9527C21.0848 22.9525 21.1081 22.9527 21.1313 22.9527Z" fill="#E20714"/> +<path d="M20.6509 22.3603C20.6509 22.2834 20.6509 22.2066 20.6509 22.1298C20.6509 22.1228 20.6524 22.1211 20.6595 22.1211C20.7469 22.1214 20.8343 22.1214 20.9217 22.1211C20.9283 22.1211 20.93 22.1228 20.9299 22.1294C20.9295 22.1535 20.9295 22.1776 20.9299 22.2017C20.9299 22.208 20.9282 22.2097 20.922 22.2096C20.8669 22.2096 20.8118 22.2096 20.7567 22.2096C20.7501 22.2096 20.7478 22.2111 20.7479 22.2183C20.7484 22.2468 20.7483 22.2755 20.7479 22.3041C20.7479 22.3107 20.75 22.3123 20.7564 22.3122C20.8028 22.3122 20.8486 22.3122 20.8947 22.3122C20.9013 22.3122 20.9026 22.3139 20.9024 22.32C20.9021 22.3444 20.9021 22.3688 20.9024 22.3929C20.9024 22.3991 20.9006 22.4002 20.8949 22.4002C20.8485 22.4002 20.8021 22.4002 20.7557 22.4002C20.7494 22.4002 20.7477 22.4018 20.7478 22.4081C20.7478 22.4693 20.7478 22.5305 20.7478 22.5917C20.7478 22.5987 20.746 22.6005 20.739 22.6004C20.7125 22.5999 20.6855 22.6 20.6587 22.6004C20.6521 22.6004 20.6504 22.5988 20.6504 22.5921C20.6509 22.5144 20.6509 22.4373 20.6509 22.3603Z" fill="#273375"/> +<path d="M21.4534 22.5681C21.4326 22.5922 21.4036 22.6076 21.372 22.6113C21.3302 22.6162 21.2915 22.6087 21.264 22.5737C21.2237 22.5226 21.2412 22.4506 21.3002 22.42C21.3226 22.4093 21.3467 22.4023 21.3714 22.3994C21.3969 22.3953 21.4225 22.3907 21.4481 22.3867C21.4527 22.386 21.4534 22.3842 21.4535 22.3801C21.4545 22.3398 21.425 22.3138 21.3823 22.3176C21.3696 22.3183 21.3572 22.322 21.3461 22.3283C21.335 22.3346 21.3256 22.3434 21.3185 22.354C21.3157 22.358 21.3141 22.3586 21.31 22.3554C21.2919 22.3413 21.2736 22.3272 21.2552 22.3134C21.2514 22.3106 21.2508 22.3088 21.2541 22.3048C21.2688 22.2866 21.287 22.2716 21.3077 22.2608C21.3285 22.25 21.3512 22.2436 21.3745 22.242C21.4049 22.2384 21.4357 22.2426 21.464 22.2543C21.5141 22.2762 21.5394 22.316 21.5405 22.3696C21.542 22.4437 21.5405 22.5179 21.541 22.5921C21.541 22.5981 21.5395 22.5996 21.5336 22.5995C21.5089 22.5991 21.4842 22.5995 21.4597 22.5995C21.4549 22.5995 21.453 22.5985 21.453 22.5934C21.4538 22.5857 21.4534 22.5778 21.4534 22.5681ZM21.4534 22.4726C21.4534 22.4679 21.4531 22.4631 21.4534 22.4584C21.454 22.4527 21.4522 22.4512 21.4465 22.4522C21.4278 22.4557 21.409 22.4588 21.3902 22.4619C21.3753 22.4634 21.3606 22.4673 21.347 22.4737C21.3406 22.4768 21.3354 22.4818 21.332 22.488C21.3287 22.4942 21.3273 22.5014 21.3282 22.5084C21.3288 22.5157 21.3319 22.5226 21.337 22.5279C21.342 22.5333 21.3488 22.5368 21.356 22.5378C21.3698 22.5406 21.3841 22.54 21.3976 22.5361C21.4111 22.5322 21.4235 22.5251 21.4337 22.5154C21.4466 22.5041 21.4582 22.492 21.4534 22.4726Z" fill="#273375"/> +<path d="M21.7185 22.2803C21.7353 22.2638 21.7562 22.2521 21.779 22.2463C21.8292 22.2349 21.8755 22.2413 21.9133 22.2794C21.937 22.3034 21.9469 22.3339 21.9508 22.3667C21.9527 22.3899 21.9532 22.4133 21.9524 22.4366C21.9524 22.4882 21.9524 22.5399 21.9524 22.5916C21.9524 22.5978 21.9509 22.5995 21.9446 22.5994C21.9204 22.599 21.8964 22.599 21.8723 22.5994C21.8656 22.5994 21.8644 22.5977 21.8644 22.5916C21.8644 22.5271 21.8644 22.4628 21.8644 22.3984C21.8645 22.3875 21.8629 22.3767 21.8595 22.3663C21.8488 22.3346 21.8186 22.3177 21.7837 22.3234C21.7541 22.3283 21.7346 22.3464 21.7197 22.3709C21.7182 22.374 21.7177 22.3775 21.7182 22.3809C21.7182 22.4509 21.7182 22.5208 21.7182 22.5908C21.7182 22.5979 21.7163 22.5996 21.7094 22.5994C21.6848 22.599 21.6601 22.5994 21.6355 22.5994C21.6308 22.5994 21.6289 22.5986 21.6289 22.5934C21.6289 22.4824 21.6289 22.3714 21.6289 22.2603C21.6289 22.256 21.6298 22.2544 21.6345 22.2545C21.6605 22.2545 21.6864 22.2545 21.7124 22.2545C21.7164 22.2545 21.7181 22.2555 21.7179 22.2598C21.7182 22.266 21.7185 22.272 21.7185 22.2803Z" fill="#273375"/> +<path d="M22.1641 23.0059C22.1641 22.9242 22.2084 22.8566 22.2802 22.8317C22.3468 22.8087 22.4109 22.8144 22.4692 22.8573C22.479 22.8649 22.4879 22.8736 22.4957 22.8832C22.4984 22.8864 22.4996 22.8885 22.4951 22.8918C22.4745 22.907 22.4541 22.9227 22.4339 22.9385C22.4301 22.9415 22.4287 22.9407 22.4261 22.9373C22.4007 22.9049 22.3672 22.8942 22.328 22.9042C22.2888 22.9142 22.2645 22.9408 22.2566 22.9801C22.2479 23.0236 22.2575 23.0627 22.2946 23.0906C22.3142 23.1055 22.339 23.1121 22.3634 23.1089C22.3879 23.1057 22.4101 23.0931 22.4253 23.0736C22.4287 23.0694 22.4305 23.0687 22.435 23.0722C22.4546 23.0875 22.4743 23.1027 22.4942 23.1176C22.4986 23.1208 22.4992 23.1227 22.4955 23.1271C22.4809 23.1448 22.4629 23.1594 22.4426 23.1701C22.4223 23.1808 22.4 23.1874 22.3772 23.1895C22.3315 23.1946 22.2878 23.1877 22.2482 23.163C22.1992 23.1325 22.1731 23.0871 22.1655 23.0304C22.1643 23.0223 22.1639 23.0141 22.1641 23.0059Z" fill="#E20714"/> +<path d="M22.2028 22.2412C22.2632 22.2423 22.3118 22.2607 22.3491 22.3047C22.3528 22.3091 22.3533 22.3113 22.3482 22.3151C22.3284 22.3298 22.3085 22.3451 22.2889 22.3603C22.2855 22.3629 22.2837 22.3641 22.2802 22.3597C22.2548 22.3272 22.2214 22.3166 22.1821 22.3265C22.1428 22.3364 22.1187 22.3632 22.1108 22.4024C22.102 22.4452 22.1115 22.4839 22.1475 22.512C22.1671 22.5273 22.192 22.5341 22.2167 22.5311C22.2414 22.5281 22.2638 22.5153 22.2792 22.4958C22.2825 22.4917 22.2844 22.4909 22.289 22.4944C22.3085 22.5098 22.3283 22.5249 22.3482 22.5398C22.3528 22.5432 22.3528 22.5452 22.3492 22.5495C22.3338 22.568 22.3146 22.5832 22.293 22.594C22.2714 22.6048 22.2478 22.6111 22.2237 22.6124C22.1852 22.6163 22.1465 22.6089 22.1122 22.5911C22.0889 22.5791 22.0687 22.5619 22.0531 22.5408C22.0375 22.5198 22.027 22.4954 22.0224 22.4696C22.0107 22.4128 22.0199 22.3595 22.0549 22.3122C22.0843 22.2724 22.125 22.2512 22.1733 22.2439C22.1845 22.2422 22.1956 22.2418 22.2028 22.2412Z" fill="#273375"/> +<path d="M21.775 23.0769C21.8011 23.005 21.8266 22.9345 21.8521 22.864C21.8554 22.8551 21.8588 22.8462 21.8618 22.8372C21.8621 22.8357 21.8629 22.8345 21.864 22.8337C21.8652 22.8328 21.8666 22.8325 21.868 22.8326C21.8956 22.8326 21.9231 22.8326 21.9507 22.8326C21.9586 22.8326 21.9554 22.8367 21.9541 22.8401C21.9268 22.9153 21.8995 22.9905 21.8722 23.0659C21.8596 23.1006 21.8468 23.1353 21.8345 23.1702C21.834 23.1725 21.8327 23.1744 21.8308 23.1757C21.8289 23.177 21.8266 23.1775 21.8243 23.1772C21.7912 23.1772 21.7575 23.1772 21.7242 23.1772C21.7194 23.1772 21.7169 23.1764 21.7151 23.1713C21.6753 23.0608 21.6352 22.9505 21.5949 22.8405C21.5927 22.8343 21.5932 22.8326 21.6003 22.8326C21.626 22.833 21.6517 22.833 21.6773 22.8326C21.6799 22.8322 21.6825 22.8328 21.6846 22.8343C21.6867 22.8357 21.6882 22.838 21.6887 22.8405C21.7161 22.9165 21.7438 22.9924 21.7716 23.0683C21.7725 23.0707 21.7735 23.0731 21.775 23.0769Z" fill="#E20714"/> +<path d="M23.0719 22.8189C23.0947 22.8188 23.1171 22.8235 23.1379 22.8326C23.1587 22.8417 23.1774 22.8551 23.1927 22.8719C23.1968 22.8764 23.1969 22.8791 23.1923 22.8833C23.1759 22.8984 23.1598 22.9138 23.1439 22.9293C23.1404 22.9327 23.139 22.932 23.1362 22.9286C23.1218 22.9115 23.1054 22.8972 23.0824 22.8932C23.0716 22.8913 23.0605 22.8927 23.0505 22.8972C23.0463 22.8988 23.0425 22.9015 23.0396 22.905C23.0368 22.9086 23.035 22.9129 23.0344 22.9174C23.0338 22.9219 23.0344 22.9265 23.0363 22.9307C23.0381 22.9348 23.041 22.9384 23.0448 22.941C23.0552 22.9487 23.0667 22.9548 23.079 22.9591C23.1014 22.9672 23.123 22.9772 23.1435 22.9892C23.1671 23.0045 23.1841 23.0248 23.1899 23.0529C23.2032 23.1156 23.1675 23.1725 23.1049 23.1861C23.0386 23.2004 22.9814 23.1827 22.9345 23.1331C22.9309 23.1294 22.9304 23.127 22.9345 23.1231C22.9507 23.1078 22.9666 23.0924 22.9823 23.0767C22.9865 23.0724 22.9884 23.0722 22.9923 23.077C23.0053 23.0942 23.0232 23.1071 23.0436 23.1141C23.058 23.1191 23.0737 23.1186 23.0879 23.1129C23.1068 23.1049 23.1167 23.0767 23.0928 23.0606C23.0792 23.0524 23.0648 23.0455 23.0499 23.0403C23.0326 23.0337 23.0158 23.0258 22.9998 23.0165C22.962 22.9932 22.9448 22.9592 22.949 22.9154C22.9534 22.8706 22.9801 22.8425 23.0212 22.8275C23.0374 22.8215 23.0546 22.8186 23.0719 22.8189Z" fill="#E20714"/> +<path d="M20.7716 22.8189C20.819 22.8201 20.8598 22.8364 20.8924 22.8719C20.8969 22.8767 20.8965 22.8793 20.8916 22.8838C20.8759 22.898 20.8606 22.9126 20.8457 22.9276C20.8408 22.9325 20.8386 22.932 20.8344 22.927C20.8206 22.9103 20.8043 22.897 20.7822 22.8934C20.7706 22.8911 20.7586 22.8929 20.7482 22.8984C20.7445 22.9001 20.7412 22.9028 20.7387 22.9061C20.7362 22.9094 20.7347 22.9133 20.7341 22.9174C20.7336 22.9215 20.7341 22.9257 20.7356 22.9296C20.7372 22.9334 20.7397 22.9368 20.7429 22.9394C20.7513 22.9467 20.761 22.9523 20.7715 22.9561C20.7909 22.9644 20.8113 22.9714 20.8296 22.9813C20.857 22.9959 20.8792 23.0151 20.8879 23.0461C20.9032 23.1002 20.8808 23.1682 20.8055 23.1858C20.7386 23.2015 20.6805 23.1826 20.6331 23.1319C20.63 23.1286 20.6302 23.1268 20.6331 23.1237C20.6493 23.1082 20.6655 23.0925 20.6814 23.0766C20.6854 23.0726 20.6874 23.0719 20.6916 23.0766C20.7069 23.095 20.7247 23.1097 20.749 23.1155C20.7601 23.1182 20.7717 23.1178 20.7826 23.1144C20.7887 23.1128 20.7942 23.1095 20.7983 23.1047C20.8025 23.1 20.8051 23.0942 20.8059 23.0879C20.8078 23.0747 20.8009 23.0662 20.7909 23.0595C20.7765 23.051 20.7613 23.044 20.7456 23.0386C20.7221 23.0302 20.7002 23.0181 20.6807 23.0027C20.6324 22.9614 20.6317 22.8647 20.7122 22.8303C20.7311 22.8225 20.7513 22.8186 20.7716 22.8189Z" fill="#E20714"/> +<path d="M21.0841 22.2879C21.0966 22.2748 21.1117 22.2643 21.1283 22.257C21.1504 22.2477 21.1748 22.2456 21.1982 22.251C21.2029 22.2521 21.2048 22.2536 21.2048 22.2588C21.2048 22.2853 21.2048 22.3119 21.2048 22.3384C21.2048 22.343 21.204 22.3441 21.1991 22.3429C21.1753 22.3368 21.1503 22.3381 21.1273 22.3469C21.118 22.3507 21.1094 22.356 21.1018 22.3626C21.0959 22.3672 21.0912 22.3731 21.088 22.3799C21.0849 22.3866 21.0834 22.3941 21.0837 22.4015C21.0849 22.4648 21.0841 22.5282 21.0844 22.5915C21.0844 22.5981 21.0829 22.5999 21.0762 22.5997C21.0518 22.5993 21.0274 22.5994 21.0033 22.5997C20.9978 22.5997 20.9961 22.5983 20.9961 22.5927C20.9961 22.4822 20.9961 22.3718 20.9961 22.2613C20.9961 22.256 20.9976 22.2546 21.0027 22.2546C21.0279 22.2546 21.053 22.2546 21.0782 22.2546C21.0839 22.2546 21.0849 22.2567 21.0845 22.2613C21.0839 22.2695 21.0841 22.2776 21.0841 22.2879Z" fill="#273375"/> +<path d="M21.4494 22.8654C21.4614 22.8531 21.4755 22.8431 21.4911 22.8358C21.5135 22.8256 21.5385 22.8231 21.5625 22.8284C21.5675 22.8295 21.5699 22.8312 21.5699 22.8371C21.5694 22.8628 21.5694 22.8885 21.5699 22.9142C21.5699 22.9209 21.568 22.9213 21.5622 22.9201C21.5339 22.9145 21.5064 22.9151 21.4807 22.9303C21.4762 22.9331 21.4719 22.9362 21.4679 22.9396C21.4616 22.9442 21.4567 22.9502 21.4534 22.9572C21.4501 22.9642 21.4486 22.9719 21.449 22.9797C21.4502 23.0422 21.449 23.1048 21.4497 23.1673C21.4497 23.1757 21.4472 23.1771 21.4396 23.1769C21.4161 23.1764 21.3925 23.1765 21.3689 23.1769C21.3633 23.1769 21.3613 23.1761 21.3613 23.1698C21.3613 23.0598 21.3613 22.9499 21.3613 22.8399C21.3613 22.8338 21.363 22.8324 21.3688 22.8325C21.3932 22.8328 21.4176 22.8325 21.4417 22.8325C21.4474 22.8325 21.4499 22.8335 21.4494 22.8398C21.4489 22.8476 21.4494 22.8556 21.4494 22.8654Z" fill="#E20613"/> +<path d="M22.0044 23.0051C22.0044 22.9503 22.0044 22.8955 22.0044 22.8407C22.0044 22.8341 22.0062 22.8324 22.0128 22.8325C22.0371 22.8329 22.0614 22.8329 22.0857 22.8325C22.0913 22.8325 22.0935 22.8335 22.0934 22.8398C22.0934 22.9499 22.0934 23.0601 22.0934 23.1702C22.0934 23.1751 22.0925 23.1768 22.0868 23.1768C22.0614 23.1765 22.0359 23.1765 22.0105 23.1768C22.005 23.1768 22.0039 23.175 22.0039 23.1702C22.0043 23.1153 22.0045 23.0603 22.0044 23.0051Z" fill="#E20714"/> +<path d="M21.9922 22.7214C21.9923 22.7064 21.9983 22.6921 22.0089 22.6816C22.0196 22.671 22.0339 22.6651 22.0489 22.6652C22.0566 22.6647 22.0643 22.6657 22.0716 22.6684C22.0789 22.671 22.0856 22.6751 22.0912 22.6804C22.0969 22.6857 22.1014 22.6921 22.1044 22.6992C22.1075 22.7063 22.109 22.714 22.109 22.7217C22.109 22.7295 22.1074 22.7371 22.1043 22.7442C22.1011 22.7513 22.0966 22.7577 22.0909 22.7629C22.0853 22.7682 22.0786 22.7722 22.0712 22.7748C22.0639 22.7774 22.0562 22.7784 22.0485 22.7778C22.0335 22.7778 22.0192 22.7718 22.0087 22.7612C21.9982 22.7506 21.9922 22.7363 21.9922 22.7214Z" fill="#E20714"/> +<path d="M22.2051 21.3035C22.2089 21.2998 22.2134 21.2969 22.2183 21.2949C22.2371 21.2861 22.2573 21.2808 22.278 21.2793C22.2891 21.2795 22.3001 21.2821 22.3101 21.2868C22.3147 21.2884 22.315 21.2934 22.314 21.2977C22.312 21.3046 22.3078 21.3107 22.3019 21.3148C22.2986 21.3175 22.2964 21.3193 22.3007 21.3232C22.305 21.3272 22.3015 21.3295 22.298 21.3308C22.2942 21.332 22.2907 21.3338 22.2875 21.3361C22.2809 21.3417 22.2852 21.3494 22.283 21.356C22.2827 21.3578 22.2827 21.3597 22.283 21.3615C22.2834 21.3777 22.2818 21.3797 22.2655 21.3805C22.2566 21.3817 22.2476 21.3808 22.239 21.378C22.244 21.3773 22.2482 21.377 22.2523 21.3763C22.2539 21.3761 22.2554 21.3754 22.2565 21.3741C22.2575 21.3729 22.258 21.3713 22.2579 21.3697C22.2579 21.3661 22.2546 21.366 22.2533 21.3645C22.2458 21.3555 22.2326 21.3614 22.2253 21.3529C22.224 21.3514 22.2208 21.3509 22.2215 21.3485C22.2221 21.3461 22.2252 21.3453 22.2273 21.3457C22.2356 21.3472 22.2378 21.3405 22.2428 21.3366C22.2505 21.33 22.2587 21.324 22.2674 21.3188C22.2726 21.3162 22.2773 21.3126 22.2811 21.3082C22.2858 21.3024 22.2851 21.3007 22.278 21.2989C22.2563 21.2932 22.235 21.2967 22.2139 21.3023C22.2112 21.3032 22.2087 21.3051 22.2051 21.3035Z" fill="#9E9E9D"/> +<path d="M21.5156 21.439C21.5157 21.4385 21.5157 21.438 21.5156 21.4375C21.5231 21.4362 21.5308 21.4362 21.5384 21.4375L21.5156 21.439Z" fill="#9E9E9D"/> +<path d="M21.4731 21.7367L21.4687 21.7395L21.4668 21.7377L21.4719 21.7354L21.4731 21.7367Z" fill="#273375"/> +<path d="M21.4727 21.7354C21.4743 21.7347 21.4758 21.7335 21.4775 21.7354L21.474 21.7371L21.4727 21.7354Z" fill="#273375"/> +<path d="M21.4775 21.7359L21.4766 21.7344L21.4779 21.7339C21.4776 21.7345 21.4774 21.7351 21.4772 21.7357L21.4775 21.7359Z" fill="#273375"/> +<path d="M21.4009 21.625C21.4014 21.6221 21.4051 21.6236 21.4055 21.621C21.4052 21.6207 21.4048 21.6204 21.4044 21.6202C21.3806 21.6153 21.3603 21.6249 21.339 21.6339C21.3199 21.6424 21.3015 21.6521 21.2837 21.663C21.2802 21.6649 21.2767 21.6666 21.273 21.6681C21.2714 21.6687 21.2695 21.6704 21.268 21.6681C21.2678 21.6676 21.2676 21.6672 21.2676 21.6667C21.2675 21.6663 21.2676 21.6658 21.2677 21.6653C21.2679 21.6649 21.2681 21.6645 21.2684 21.6641C21.2687 21.6638 21.2691 21.6635 21.2695 21.6633C21.2812 21.6567 21.2821 21.6411 21.2934 21.6335C21.3047 21.6258 21.3137 21.6173 21.3239 21.6093C21.3268 21.6069 21.3299 21.605 21.3293 21.6004C21.3292 21.6 21.3293 21.5996 21.3295 21.5993C21.3296 21.5989 21.3299 21.5986 21.3302 21.5983C21.3441 21.5896 21.3476 21.5709 21.3633 21.5643C21.3621 21.562 21.3601 21.5602 21.3577 21.5593C21.3552 21.5584 21.3525 21.5584 21.3501 21.5593C21.3482 21.5599 21.3461 21.56 21.3442 21.5596C21.3422 21.5593 21.3404 21.5584 21.3388 21.5572C21.3405 21.5532 21.3446 21.5528 21.348 21.5506C21.3421 21.5465 21.3448 21.544 21.3491 21.5412C21.3538 21.5393 21.3587 21.538 21.3637 21.5375C21.3673 21.5369 21.3707 21.5353 21.3734 21.5328C21.3686 21.5316 21.3635 21.5314 21.3586 21.5322C21.3513 21.5322 21.3415 21.5344 21.3378 21.5283C21.3341 21.5222 21.3416 21.516 21.3449 21.5102C21.3522 21.4969 21.363 21.4858 21.3761 21.4781C21.3784 21.4768 21.381 21.475 21.3834 21.4769C21.3857 21.4789 21.3841 21.4822 21.3834 21.4849C21.3816 21.4901 21.3773 21.4926 21.3719 21.4954C21.383 21.4978 21.3932 21.4996 21.4032 21.5025C21.4058 21.5032 21.4129 21.5015 21.4105 21.5091C21.4101 21.5102 21.413 21.5102 21.4146 21.5105C21.4191 21.5115 21.4239 21.5123 21.4285 21.5135C21.43 21.5139 21.4325 21.5141 21.4324 21.5165C21.4323 21.5188 21.4296 21.5177 21.4282 21.5192C21.4796 21.5342 21.5319 21.5457 21.5763 21.5796C21.5535 21.5909 21.5295 21.5995 21.5047 21.6053C21.4899 21.6091 21.4748 21.612 21.4599 21.6154C21.4587 21.6159 21.4574 21.6162 21.4561 21.6163C21.4428 21.615 21.4305 21.6207 21.4182 21.625C21.4155 21.6261 21.4125 21.6268 21.4096 21.6268C21.4066 21.6268 21.4037 21.6262 21.4009 21.625Z" fill="#FEFEFE"/> +<path d="M21.425 21.3956C21.4187 21.4018 21.4107 21.4017 21.4043 21.4053C21.4008 21.4072 21.4011 21.4027 21.3998 21.4001C21.3876 21.4121 21.3733 21.4208 21.3605 21.4314C21.3516 21.4391 21.3445 21.4485 21.3394 21.4589C21.3327 21.4714 21.3265 21.4837 21.3141 21.4921C21.3109 21.4942 21.3115 21.5008 21.3079 21.5042C21.3069 21.505 21.3065 21.5065 21.3056 21.5075C21.3037 21.5096 21.3015 21.5126 21.2985 21.5103C21.2955 21.5081 21.2992 21.5061 21.2999 21.5041C21.3007 21.502 21.3017 21.502 21.302 21.5007C21.3023 21.4995 21.3069 21.4987 21.3041 21.4955C21.3013 21.4924 21.2996 21.4936 21.2969 21.4955C21.2717 21.5116 21.2482 21.5301 21.2265 21.5506C21.2072 21.5687 21.1893 21.5883 21.1715 21.6079C21.1701 21.6095 21.1693 21.6121 21.1662 21.6117C21.1652 21.6083 21.1681 21.6068 21.1695 21.6051C21.188 21.5805 21.2043 21.5544 21.2183 21.5271C21.2203 21.5228 21.2236 21.5193 21.2277 21.517C21.2486 21.5037 21.2674 21.4876 21.2837 21.4691C21.3091 21.4409 21.3389 21.4169 21.3719 21.3981C21.38 21.3936 21.389 21.3911 21.3982 21.3907C21.4073 21.3903 21.4165 21.392 21.425 21.3956Z" fill="#FEFEFE"/> +<path d="M21.4067 21.7194C21.3765 21.7342 21.3533 21.7575 21.3233 21.7685C21.3095 21.7739 21.2972 21.7826 21.2874 21.7938C21.2864 21.7947 21.2853 21.7963 21.2843 21.7962C21.2699 21.7947 21.2644 21.8065 21.2561 21.8144C21.2548 21.8158 21.254 21.8189 21.2516 21.8173C21.2491 21.8156 21.2499 21.813 21.2516 21.8107C21.2571 21.804 21.2624 21.7969 21.2676 21.7899C21.2717 21.7844 21.2744 21.7779 21.2754 21.771C21.2754 21.77 21.2764 21.7682 21.2762 21.7681C21.2661 21.7625 21.2767 21.7603 21.2785 21.7582C21.2933 21.74 21.3143 21.7278 21.3375 21.7241C21.3456 21.7227 21.3535 21.7203 21.361 21.7169C21.3651 21.7149 21.3698 21.7144 21.3743 21.7153C21.3843 21.7175 21.395 21.7139 21.4067 21.7194Z" fill="#FEFEFE"/> +<path d="M21.4718 21.6419C21.4708 21.6433 21.4695 21.6445 21.468 21.6454C21.4665 21.6464 21.4649 21.647 21.4632 21.6473C21.4529 21.6492 21.4426 21.6507 21.4322 21.6523C21.4308 21.6523 21.4285 21.6523 21.4279 21.6515C21.4273 21.6507 21.4284 21.6481 21.4296 21.6467C21.4314 21.6448 21.4336 21.6434 21.4362 21.6426C21.4393 21.6421 21.4423 21.6411 21.4451 21.6397C21.4545 21.6331 21.463 21.6354 21.4718 21.6419Z" fill="#FEFEFE"/> +<path d="M21.3937 21.7607C21.3913 21.7667 21.3905 21.773 21.3841 21.7757C21.3786 21.7776 21.3736 21.7807 21.3693 21.7847C21.3689 21.7852 21.3683 21.7855 21.3677 21.7858C21.367 21.7861 21.3664 21.7862 21.3657 21.7862C21.365 21.7862 21.3643 21.7861 21.3637 21.7858C21.3631 21.7855 21.3625 21.7852 21.3621 21.7847C21.3598 21.7821 21.3635 21.7808 21.3649 21.7793C21.3707 21.7735 21.3768 21.768 21.3826 21.7622C21.3836 21.761 21.3849 21.76 21.3864 21.7595C21.3879 21.7589 21.3895 21.7587 21.3911 21.7589C21.3925 21.7592 21.3936 21.7597 21.3937 21.7607Z" fill="#FEFEFE"/> +<path d="M22.5692 22.3745C22.5461 22.3745 22.5231 22.3745 22.5001 22.3745C22.4934 22.3745 22.4934 22.3724 22.495 22.3672C22.4994 22.3526 22.5083 22.3399 22.5203 22.3306C22.5323 22.3213 22.5469 22.3159 22.5621 22.3152C22.5843 22.3139 22.6054 22.3171 22.6233 22.3317C22.6347 22.341 22.6423 22.3541 22.6448 22.3686C22.6457 22.3734 22.6445 22.3745 22.6399 22.3744C22.6163 22.3744 22.5927 22.3745 22.5692 22.3745Z" fill="#FEFEFE"/> +<path d="M22.6387 22.9525C22.6419 22.9359 22.6508 22.9209 22.6638 22.91C22.6768 22.8992 22.6931 22.8931 22.71 22.8928C22.7275 22.8915 22.745 22.8954 22.7604 22.904C22.7682 22.9085 22.7749 22.9146 22.7801 22.9221C22.7852 22.9295 22.7886 22.938 22.79 22.9469C22.7907 22.9504 22.7911 22.9529 22.786 22.9528C22.737 22.9524 22.6881 22.9525 22.6387 22.9525Z" fill="#FEFEFE"/> +<path d="M21.1304 22.9525C21.1071 22.9525 21.084 22.9525 21.0606 22.9525C21.054 22.9525 21.054 22.9506 21.0556 22.9454C21.0602 22.9302 21.0695 22.9169 21.0822 22.9073C21.0949 22.8978 21.1103 22.8925 21.1261 22.8924C21.1466 22.8907 21.167 22.8965 21.1835 22.9088C21.1953 22.918 21.2031 22.9314 21.2055 22.9461C21.2064 22.9512 21.2055 22.9528 21.2002 22.9524C21.1769 22.9524 21.1537 22.9525 21.1304 22.9525Z" fill="#FEFEFE"/> +<path d="M21.4538 22.4724C21.4586 22.4919 21.4472 22.5039 21.4339 22.5151C21.4237 22.5248 21.4113 22.5319 21.3978 22.5358C21.3843 22.5397 21.37 22.5403 21.3562 22.5375C21.3489 22.5365 21.3422 22.533 21.3372 22.5277C21.3321 22.5223 21.329 22.5154 21.3284 22.5081C21.3275 22.5011 21.3288 22.494 21.3322 22.4878C21.3356 22.4815 21.3408 22.4765 21.3471 22.4734C21.3608 22.4671 21.3754 22.4631 21.3904 22.4616C21.4092 22.4584 21.428 22.4555 21.4467 22.4519C21.4524 22.451 21.4542 22.4524 21.4536 22.4581C21.4535 22.4628 21.4538 22.4677 21.4538 22.4724Z" fill="#FEFEFE"/> +<path d="M39.1636 17C39.3941 17.0913 39.6433 17.0725 39.881 17.125C40.5506 17.2736 41.1873 17.501 41.7737 17.8625C41.8778 17.9265 41.9064 17.9734 41.8377 18.0912C41.4249 18.8025 41.0178 19.5172 40.6163 20.2353C40.5446 20.3633 40.5007 20.3829 40.3688 20.2933C39.7586 19.8789 39.092 19.6758 38.3532 19.8499C37.4472 20.0633 36.8754 20.8622 36.9449 21.7904C37.0081 22.626 37.7605 23.357 38.6345 23.4398C38.9739 23.4775 39.3175 23.4462 39.6446 23.3478C39.9717 23.2494 40.2755 23.0859 40.5378 22.8671C40.6415 22.7818 40.6761 22.7993 40.7358 22.9055C41.1374 23.6229 41.5407 24.3394 41.9534 25.0508C42.0264 25.1789 42.0165 25.2369 41.8983 25.3201C41.2458 25.781 40.5101 26.0401 39.7321 26.1527C38.4377 26.3401 37.1937 26.183 36.0718 25.4516C34.9157 24.6983 34.2896 23.6122 34.1266 22.2556C33.9772 21.0116 34.2119 19.852 34.9673 18.8291C35.7756 17.734 36.8911 17.1865 38.2256 17.0427C38.2534 17.0397 38.2815 17.0358 38.311 17.032C38.5525 17.0192 38.7962 17.0465 39.0365 17H39.1636ZM38.8483 24.6467C37.1617 24.6249 36.0069 23.6694 35.7756 22.0558C35.5806 20.6902 36.2254 19.278 37.6922 18.7779C38.4777 18.5018 39.3375 18.5265 40.1059 18.847C40.3193 18.9324 40.3155 18.7681 40.3667 18.6789C40.4465 18.5398 40.2907 18.5577 40.234 18.5342C39.8461 18.3743 39.4327 18.2856 39.0134 18.2722C36.6308 18.1868 34.963 20.1593 35.5042 22.4655C36.0628 24.8451 38.7224 25.4597 40.4179 24.6343C40.5067 24.5916 40.5681 24.552 40.4858 24.4491C40.423 24.3714 40.4166 24.2323 40.2429 24.3288C39.8128 24.5673 39.3386 24.6501 38.8483 24.6467Z" fill="#A30248"/> +<path d="M2 22.7121C2.10797 22.3741 2.11992 22.0199 2.16601 21.6725C2.23813 21.1284 2.22789 21.1224 2.77585 21.1177C2.90046 21.1177 2.96235 21.0857 2.96576 20.9585C2.96576 20.9018 2.97728 20.8454 2.98368 20.7878C3.02977 20.3611 3.02935 20.35 2.5868 20.3611C2.40158 20.3666 2.35763 20.3116 2.38451 20.1366C2.46047 19.6461 2.52904 19.1545 2.59021 18.6617C2.60387 18.552 2.64185 18.5085 2.74811 18.523C2.7552 18.5239 2.76236 18.5239 2.76945 18.523C2.94229 18.5047 3.16676 18.602 3.27516 18.4756C3.36947 18.366 3.34344 18.1526 3.36862 17.9849C3.39849 17.7813 3.43136 17.5782 3.45397 17.3737C3.46592 17.2675 3.50988 17.2291 3.61742 17.2299C4.14362 17.2342 4.66981 17.2363 5.19644 17.2299C5.34111 17.2299 5.3394 17.2974 5.32447 17.4006C5.27709 17.716 5.23058 18.0322 5.18961 18.3489C5.1815 18.4103 5.10426 18.5328 5.24978 18.5162C5.37354 18.5017 5.57241 18.6391 5.61381 18.3975C5.67071 18.0689 5.7168 17.7388 5.75208 17.407C5.76659 17.2718 5.81183 17.2269 5.94882 17.2291C6.45325 17.2359 6.95796 17.2359 7.46296 17.2291C7.60123 17.2291 7.65244 17.2581 7.62599 17.407C7.56923 17.728 7.52954 18.0519 7.47705 18.3736C7.45998 18.4782 7.46979 18.535 7.59825 18.5256C7.73993 18.5153 7.8829 18.5256 8.02501 18.5222C8.11804 18.5192 8.14791 18.5478 8.13383 18.6455C8.05957 19.1576 7.98788 19.6697 7.92301 20.1844C7.90466 20.3269 7.84193 20.3619 7.70238 20.3598C7.21587 20.3538 7.21587 20.3598 7.13478 20.8382C7.08827 21.1109 7.08827 21.1109 7.37804 21.1109C7.7698 21.1109 7.77236 21.1109 7.72371 21.495C7.66823 21.9311 7.60337 22.366 7.55301 22.8026C7.53935 22.9157 7.50564 22.9622 7.38231 22.9618C7.20648 22.9618 6.9756 22.8819 6.87019 22.9942C6.76478 23.1064 6.79594 23.3262 6.76862 23.4999C6.73704 23.703 6.70546 23.9062 6.679 24.1102C6.66705 24.2036 6.62865 24.2403 6.52836 24.2382C6.00259 24.2335 5.47639 24.2318 4.94934 24.2382C4.80979 24.2382 4.80126 24.1793 4.81747 24.0709C4.86527 23.7483 4.90283 23.4239 4.95702 23.1022C4.9758 22.9912 4.96001 22.9558 4.84052 22.9536C4.55203 22.9477 4.55032 22.9413 4.50551 23.2327C4.46284 23.5063 4.42016 23.7799 4.38901 24.0543C4.37407 24.175 4.34633 24.2425 4.19739 24.2395C3.68528 24.2288 3.17316 24.2297 2.66105 24.2395C2.5151 24.242 2.49504 24.1878 2.51382 24.0649C2.56418 23.7427 2.59917 23.4175 2.65764 23.0975C2.68154 22.9694 2.63971 22.9519 2.53345 22.9562C2.35592 22.963 2.17839 22.9622 2.00085 22.9643L2 22.7121ZM7.34987 19.3364C7.13137 19.3364 6.91799 19.324 6.70717 19.3403C6.5275 19.3543 6.51214 19.2831 6.53647 19.1324C6.59493 18.7829 6.6423 18.4308 6.68412 18.0788C6.69181 18.0173 6.77246 17.9055 6.60901 17.8923C6.47288 17.8807 6.44642 17.9435 6.43148 18.063C6.38454 18.436 6.31711 18.8064 6.27273 19.1794C6.25736 19.31 6.20871 19.3415 6.08581 19.3403C5.5387 19.3349 4.99131 19.3349 4.44363 19.3403C4.3203 19.3403 4.28104 19.3074 4.29981 19.1832C4.35671 18.8114 4.40835 18.4391 4.45473 18.0664C4.46241 18.0058 4.53538 17.9042 4.3873 17.8957C4.28701 17.8897 4.21659 17.8957 4.20337 18.0284C4.16069 18.4018 4.09326 18.7722 4.04589 19.1452C4.02754 19.289 3.97974 19.3586 3.81971 19.342C3.649 19.3258 3.4783 19.3458 3.30759 19.336C3.17957 19.3283 3.15695 19.3915 3.14671 19.4994C3.13348 19.6339 3.22139 19.6087 3.29479 19.6091C3.4655 19.6091 3.6362 19.6185 3.8069 19.607C3.94731 19.5972 3.97761 19.6497 3.95755 19.7777C3.86622 20.4238 3.77917 21.0705 3.69637 21.7177C3.68101 21.8368 3.62852 21.868 3.51628 21.8624C3.33917 21.8539 3.15994 21.8727 2.98368 21.8556C2.81938 21.8402 2.8006 21.9303 2.79121 22.0528C2.77884 22.2171 2.90303 22.1458 2.96789 22.1496C3.13848 22.1584 3.30941 22.1584 3.48001 22.1496C3.59395 22.1445 3.6234 22.1757 3.60419 22.2926C3.54701 22.6425 3.4958 22.9938 3.45909 23.3463C3.45184 23.415 3.34003 23.549 3.53164 23.5733C3.6968 23.5946 3.69253 23.4833 3.70619 23.3761C3.74887 23.0245 3.80136 22.6733 3.84361 22.3212C3.85897 22.1961 3.90421 22.1454 4.04333 22.1479C4.57635 22.1573 5.11023 22.1586 5.64283 22.1479C5.81353 22.1445 5.8609 22.1906 5.83146 22.3613C5.77086 22.7104 5.72519 23.0625 5.67953 23.4145C5.67228 23.4705 5.61509 23.5652 5.74397 23.5733C5.83957 23.5793 5.91468 23.5844 5.93175 23.4453C5.97442 23.0719 6.04356 22.7019 6.08111 22.328C6.0969 22.174 6.15708 22.1441 6.29449 22.1522C6.4716 22.1633 6.65041 22.1471 6.82752 22.1573C6.97859 22.1663 6.97603 22.0681 6.99097 21.9674C7.01145 21.8274 6.91073 21.8641 6.84245 21.8624C6.68604 21.8549 6.52934 21.8558 6.37302 21.865C6.20231 21.8795 6.14128 21.8483 6.17287 21.6516C6.27443 21.0217 6.35637 20.3884 6.43831 19.7551C6.4541 19.6343 6.50617 19.6027 6.6184 19.6083C6.77417 19.6159 6.93207 19.598 7.08784 19.613C7.28116 19.6296 7.38743 19.5763 7.34987 19.3364Z" fill="#A30248"/> +<path d="M28.3609 22.7719C28.3609 23.7808 28.3575 24.7892 28.3647 25.7981C28.3647 25.956 28.328 25.9999 28.1663 25.9986C27.3273 25.9895 26.488 25.9895 25.6484 25.9986C25.4777 25.9986 25.4546 25.9462 25.4551 25.7951C25.4598 23.785 25.4551 21.7746 25.4628 19.7645C25.4628 19.5759 25.4167 19.5225 25.228 19.5294C24.8235 19.5443 24.4172 19.5294 24.0126 19.5366C23.8897 19.5366 23.8389 19.5157 23.8419 19.3757C23.8496 18.7154 23.8496 18.0549 23.8419 17.3943C23.8419 17.2552 23.8901 17.233 24.0126 17.2334C25.939 17.2368 27.8657 17.2368 29.7927 17.2334C29.9395 17.2334 29.9868 17.2718 29.9851 17.4229C29.977 18.063 29.9753 18.7032 29.9851 19.3407C29.9881 19.5072 29.9326 19.5422 29.779 19.5383C29.374 19.5285 28.9682 19.5443 28.5636 19.5307C28.3878 19.5247 28.3553 19.5861 28.3562 19.7466C28.3643 20.7546 28.3609 21.7635 28.3609 22.7719ZM26.746 21.7669C26.746 22.7617 26.7494 23.756 26.7426 24.7508C26.7426 24.8989 26.7793 24.939 26.9291 24.9407C27.1032 24.9428 27.0823 24.8443 27.0823 24.7363C27.0823 22.7681 27.0823 20.8003 27.078 18.8329C27.078 18.6545 27.1071 18.5875 27.3059 18.5943C27.7959 18.611 28.2875 18.5982 28.7774 18.6007C28.8862 18.6007 28.963 18.6007 28.9652 18.4497C28.9673 18.2986 28.9012 18.279 28.7748 18.279C27.5307 18.2824 26.2864 18.2824 25.042 18.279C24.9327 18.279 24.8585 18.2768 24.8555 18.4292C24.8525 18.5815 24.9212 18.5999 25.0458 18.5999C25.5507 18.5952 26.0555 18.6037 26.5604 18.5943C26.7085 18.5918 26.7507 18.6315 26.7494 18.7817C26.7426 19.7795 26.746 20.7742 26.746 21.7669Z" fill="#A30248"/> +<path d="M16.7992 21.6085C16.7992 20.2241 16.8026 18.8401 16.7949 17.4557C16.7949 17.2812 16.8342 17.2287 17.0151 17.2317C18.0522 17.25 19.09 17.2056 20.1266 17.256C20.8713 17.2923 21.5887 17.4578 22.2331 17.8535C23.0521 18.3558 23.4878 19.1022 23.5919 20.0479C23.6722 20.7789 23.6214 21.4929 23.2834 22.1625C22.8404 23.0395 22.0786 23.4922 21.1632 23.7295C20.7236 23.847 20.2701 23.9044 19.8151 23.9002C19.6346 23.8972 19.5923 23.9625 19.5953 24.1337C19.6056 24.6944 19.5928 25.2552 19.6034 25.816C19.6064 25.9773 19.545 25.9965 19.4067 25.9956C18.5959 25.9897 17.785 25.9879 16.9767 25.9956C16.8175 25.9956 16.7958 25.9414 16.7962 25.8019C16.8013 24.4059 16.7992 23.0074 16.7992 21.6085ZM18.1221 21.6085V24.7401C18.1221 24.8442 18.0927 24.9479 18.2728 24.9432C18.4307 24.9394 18.4576 24.8839 18.4554 24.7439C18.4486 24.1891 18.4597 23.6365 18.4486 23.0826C18.4452 22.9037 18.4793 22.8316 18.6786 22.8427C19.0201 22.8619 19.3615 22.8521 19.7029 22.8474C20.3609 22.838 20.99 22.713 21.535 22.3204C22.272 21.7895 22.5553 20.6778 22.2024 19.7171C21.8956 18.8841 21.2209 18.5222 20.4066 18.3647C19.7238 18.2324 19.0324 18.3028 18.3445 18.2794C18.1738 18.2738 18.117 18.3144 18.1183 18.4966C18.126 19.5349 18.1213 20.5719 18.1213 21.6081L18.1221 21.6085Z" fill="#A30248"/> +<path d="M7.87695 25.9943C8.10484 25.3892 8.32334 24.8071 8.54398 24.2254C9.40234 21.967 10.259 19.708 11.1139 17.4485C11.1779 17.2778 11.2595 17.2287 11.4344 17.2321C12.0029 17.2432 12.5717 17.2389 13.1415 17.2321C13.2627 17.2321 13.3301 17.259 13.3775 17.3845C14.4469 20.2144 15.5192 23.0429 16.5944 25.8697C16.6068 25.9022 16.6149 25.9359 16.6255 25.9713C16.5556 26.0106 16.4847 25.9914 16.4177 25.9914C15.6214 25.9914 14.825 25.9914 14.0279 25.9952C13.9122 25.9952 13.8354 25.976 13.8166 25.8514C13.8148 25.8445 13.8123 25.8378 13.8094 25.8313C13.733 25.6337 13.7095 25.3657 13.5657 25.2569C13.4014 25.1331 13.1274 25.2215 12.9012 25.2198C12.2969 25.2151 11.6926 25.2223 11.0883 25.2151C10.9676 25.2151 10.9125 25.2509 10.8749 25.3632C10.8054 25.5714 10.7764 25.8642 10.6283 25.9559C10.4576 26.0618 10.1746 25.9914 9.94077 25.9922C9.26179 25.9956 8.58153 25.9943 7.87695 25.9943ZM15.0158 24.9146C15.0101 24.8858 15.0028 24.8573 14.994 24.8293C14.1789 22.6909 13.3648 20.5523 12.5517 18.4134C12.4663 18.1915 12.3046 18.3161 12.1774 18.2853C12.0302 18.2495 11.9875 18.3494 11.944 18.4642C11.1542 20.5433 10.3627 22.6221 9.56949 24.7004C9.47901 24.9368 9.50291 24.9629 9.75001 24.9381C9.83237 24.93 9.8567 24.8873 9.87803 24.825C9.92908 24.7082 9.97367 24.5887 10.0116 24.467C10.0496 24.3172 10.1285 24.2775 10.2809 24.2783C11.5185 24.2852 12.7561 24.2822 13.9912 24.2822C14.4294 24.2822 14.4474 24.2766 14.5754 24.6825C14.6518 24.9202 14.7721 24.9859 15.0158 24.9146Z" fill="#A30248"/> +<path d="M30.4098 21.6255C30.4098 20.2407 30.4145 18.8554 30.4043 17.4706C30.4043 17.2657 30.4683 17.2299 30.6535 17.232C31.4994 17.241 32.3456 17.2393 33.1915 17.232C33.3396 17.232 33.3835 17.2709 33.3835 17.4215C33.3792 20.2202 33.3792 23.0188 33.3835 25.8172C33.3835 25.9529 33.3528 25.9977 33.209 25.9968C32.3345 25.99 31.4592 25.9887 30.5857 25.9968C30.4235 25.9968 30.4069 25.9371 30.4073 25.8005C30.4116 24.4101 30.4098 23.018 30.4098 21.6255ZM31.7328 21.6012C31.7328 22.6453 31.7328 23.6896 31.7328 24.734C31.7328 24.8514 31.7132 24.9474 31.8967 24.9449C32.0712 24.9427 32.0674 24.8616 32.0674 24.7362C32.0654 22.655 32.0654 20.5736 32.0674 18.4918C32.0674 18.3736 32.0836 18.2784 31.8997 18.2784C31.7157 18.2784 31.7341 18.374 31.7341 18.4918C31.7327 19.5277 31.7315 20.5642 31.7307 21.6012H31.7328Z" fill="#A30248"/> +<path d="M38.8479 24.6467C39.3383 24.6501 39.8124 24.5673 40.2435 24.3288C40.4171 24.2323 40.4235 24.3714 40.4863 24.4491C40.5686 24.552 40.5072 24.5912 40.4184 24.6343C38.7229 25.4597 36.0633 24.8451 35.5047 22.4655C34.9636 20.161 36.6313 18.1872 39.014 18.2722C39.4332 18.2856 39.8467 18.3743 40.2345 18.5342C40.2913 18.5577 40.4479 18.5398 40.3672 18.6789C40.316 18.7681 40.3198 18.9349 40.1065 18.847C39.3379 18.527 38.478 18.503 37.6927 18.7796C36.2259 19.2798 35.5811 20.6911 35.7761 22.0575C36.0066 23.6694 37.1614 24.6262 38.8479 24.6467Z" fill="#FBF4F7"/> +<path d="M7.34901 19.3365C7.38656 19.5764 7.2803 19.6297 7.08655 19.6109C6.93164 19.596 6.77373 19.6139 6.61711 19.6062C6.50488 19.6007 6.45281 19.6323 6.43702 19.7531C6.35508 20.3864 6.27314 21.0197 6.17157 21.6496C6.13999 21.845 6.2023 21.8762 6.37173 21.863C6.52805 21.8538 6.68475 21.8529 6.84116 21.8604C6.90944 21.8604 7.01187 21.8254 6.98968 21.9654C6.97474 22.0661 6.9773 22.1643 6.82623 22.1553C6.64912 22.1451 6.47031 22.1613 6.2932 22.1502C6.15664 22.1421 6.09646 22.1719 6.07982 22.326C6.04227 22.6998 5.971 23.0698 5.93045 23.4433C5.91509 23.5841 5.83827 23.579 5.74268 23.5713C5.61465 23.5632 5.67098 23.4684 5.67824 23.4125C5.7239 23.0605 5.76957 22.7084 5.83017 22.3593C5.85961 22.1886 5.81438 22.1459 5.64154 22.1459C5.10851 22.157 4.57464 22.1557 4.04204 22.1459C3.90291 22.1433 3.85768 22.1941 3.84231 22.3192C3.79964 22.6712 3.74971 23.0225 3.7049 23.3741C3.69124 23.4812 3.69551 23.5926 3.53035 23.5713C3.33874 23.547 3.45055 23.413 3.4578 23.3442C3.4945 22.9917 3.54572 22.6405 3.6029 22.2906C3.62211 22.1736 3.59266 22.1425 3.47871 22.1476C3.30812 22.1564 3.13719 22.1564 2.9666 22.1476C2.90173 22.1438 2.77755 22.215 2.78992 22.0507C2.79931 21.9283 2.81809 21.8374 2.98239 21.8536C3.15864 21.8706 3.33788 21.8536 3.51499 21.8604C3.62723 21.8659 3.67972 21.8348 3.69508 21.7157C3.77787 21.0685 3.86493 20.4218 3.95626 19.7757C3.97461 19.6476 3.94602 19.5947 3.80561 19.605C3.63491 19.6165 3.4642 19.6084 3.2935 19.6071C3.2201 19.6071 3.13219 19.6319 3.14541 19.4974C3.15566 19.3895 3.17785 19.3267 3.3063 19.334C3.47701 19.3438 3.64771 19.3237 3.81842 19.34C3.97845 19.3553 4.02625 19.287 4.0446 19.1432C4.09197 18.7702 4.15854 18.3998 4.20207 18.0264C4.21744 17.8924 4.28743 17.8877 4.38601 17.8937C4.53409 17.9026 4.46112 18.0042 4.45344 18.0644C4.40649 18.4371 4.35485 18.8093 4.29852 19.1812C4.27974 19.3054 4.31901 19.3395 4.44234 19.3382C4.98973 19.3328 5.53712 19.3328 6.08452 19.3382C6.20742 19.3382 6.25522 19.3079 6.27144 19.1774C6.31411 18.8044 6.38325 18.4339 6.43019 18.0609C6.44513 17.9427 6.47287 17.88 6.60772 17.8902C6.77117 17.9035 6.69052 18.0153 6.68283 18.0767C6.64016 18.4288 6.59364 18.7809 6.53517 19.1304C6.51 19.2811 6.52536 19.3523 6.70588 19.3382C6.91713 19.3242 7.13051 19.3365 7.34901 19.3365ZM4.8994 21.8591C5.18362 21.8591 5.46785 21.854 5.75292 21.8617C5.86047 21.8642 5.90357 21.8297 5.91765 21.7243C6.00471 21.0699 6.09504 20.4168 6.18865 19.765C6.20614 19.6442 6.1784 19.6041 6.0508 19.6054C5.49601 19.6114 4.94122 19.6097 4.38643 19.6054C4.28615 19.6054 4.23365 19.6263 4.21872 19.7398C4.13166 20.4084 4.03976 21.0756 3.94303 21.7413C3.92767 21.845 3.9601 21.8613 4.04887 21.86C4.33096 21.857 4.61518 21.8587 4.8994 21.8591Z" fill="#FBF4F7"/> +<path d="M26.7461 21.7671C26.7461 20.7727 26.7427 19.7779 26.7495 18.7836C26.7495 18.6333 26.7068 18.5937 26.5605 18.5962C26.0556 18.6056 25.5508 18.5962 25.0459 18.6018C24.9213 18.6018 24.8526 18.5898 24.8556 18.4311C24.8585 18.2723 24.9328 18.2808 25.0421 18.2808C26.2865 18.2828 27.5308 18.2828 28.7749 18.2808C28.903 18.2808 28.967 18.2945 28.9653 18.4515C28.9636 18.6086 28.8863 18.603 28.7775 18.6026C28.2871 18.6001 27.7959 18.6129 27.306 18.5962C27.1072 18.5894 27.0773 18.6564 27.0781 18.8348C27.0841 20.8021 27.0815 22.7699 27.0824 24.7382C27.0824 24.8461 27.1033 24.9447 26.9292 24.9426C26.7794 24.9426 26.7418 24.8999 26.7427 24.7527C26.7495 23.7579 26.7461 22.7635 26.7461 21.7671Z" fill="#FBF4F7"/> +<path d="M18.1199 21.6083C18.1199 20.5717 18.1246 19.5351 18.1152 18.4985C18.1152 18.3162 18.1694 18.2757 18.3414 18.2812C19.0294 18.3039 19.7216 18.2334 20.4035 18.3666C21.2199 18.5236 21.8925 18.8851 22.1993 19.7186C22.5523 20.6779 22.2689 21.7896 21.5319 22.3218C20.9869 22.7144 20.3579 22.8395 19.6998 22.8489C19.3584 22.8536 19.017 22.8634 18.6756 22.8442C18.4763 22.8331 18.4421 22.9052 18.4455 23.084C18.4566 23.6388 18.4455 24.1936 18.4524 24.7454C18.4545 24.8854 18.4276 24.9408 18.2697 24.9447C18.0896 24.9494 18.1191 24.8457 18.1191 24.7415L18.1199 21.6083ZM18.4528 20.5619C18.4528 21.1653 18.4554 21.7683 18.4507 22.3717C18.4507 22.4925 18.4682 22.548 18.6099 22.5446C19.0289 22.5343 19.4489 22.5582 19.8671 22.5356C20.4338 22.5053 20.9878 22.3948 21.4218 21.9911C22.0278 21.4278 22.0743 20.7044 21.9049 19.9631C21.7427 19.2547 21.2221 18.8796 20.5427 18.7072C19.8927 18.542 19.2287 18.6192 18.5702 18.6009C18.4315 18.597 18.4532 18.6914 18.4532 18.7716C18.451 19.3691 18.4508 19.9658 18.4528 20.5619Z" fill="#FBF4F7"/> +<path d="M15.0144 24.9146C14.7708 24.9859 14.6504 24.9202 14.5757 24.6833C14.4477 24.2775 14.4298 24.283 13.9915 24.283C12.7539 24.283 11.5163 24.286 10.2812 24.2792C10.1289 24.2792 10.0499 24.318 10.0119 24.4678C9.97401 24.5895 9.92942 24.709 9.87837 24.8259C9.85533 24.8882 9.831 24.9308 9.75035 24.9389C9.50325 24.9637 9.47935 24.9389 9.56983 24.7012C10.3619 22.6226 11.1534 20.5439 11.9443 18.465C11.987 18.3502 12.0297 18.2516 12.1778 18.2862C12.3058 18.3173 12.4684 18.1927 12.552 18.4142C13.3617 20.5546 14.1759 22.6932 14.9944 24.8301C15.0025 24.8579 15.0092 24.8861 15.0144 24.9146ZM12.2648 18.6033C12.2367 18.66 12.2183 18.6886 12.2059 18.7228C11.5592 20.4178 10.9118 22.1122 10.2637 23.8059C10.1929 23.9894 10.2727 23.9847 10.4076 23.9847C11.6375 23.9822 12.8678 23.98 14.0978 23.9847C14.2757 23.9847 14.3154 23.9565 14.2458 23.7773C13.8063 22.6481 13.3778 21.5155 12.9455 20.3829L12.2648 18.6033Z" fill="#FBF4F7"/> +<path d="M31.7306 21.6013C31.7306 20.5642 31.7306 19.5271 31.7306 18.4897C31.7306 18.3728 31.7131 18.2764 31.8961 18.2764C32.0792 18.2764 32.0639 18.3728 32.0639 18.4897C32.0639 20.5715 32.0639 22.6529 32.0639 24.7341C32.0639 24.8596 32.0681 24.9407 31.8932 24.9428C31.7096 24.9428 31.7289 24.8493 31.7293 24.732C31.7313 23.6893 31.7317 22.6457 31.7306 21.6013Z" fill="#FBF4F7"/> +<path d="M4.90053 21.8589C4.6163 21.8589 4.33208 21.8589 4.04701 21.8589C3.95824 21.8589 3.92581 21.844 3.94117 21.7403C4.03989 21.0754 4.13293 20.4089 4.22027 19.7409C4.23521 19.6274 4.2877 19.606 4.38799 19.6065C4.94278 19.6099 5.49757 19.6116 6.05235 19.6065C6.18038 19.6065 6.2077 19.6453 6.1902 19.7661C6.0946 20.4173 6.00385 21.0701 5.91793 21.7245C5.90384 21.8299 5.86074 21.8644 5.7532 21.8619C5.46897 21.8525 5.18475 21.8593 4.90053 21.8589ZM5.01106 21.1116C5.18176 21.1543 5.26071 21.0882 5.26157 20.9106C5.26716 20.8258 5.27929 20.7414 5.29784 20.6584C5.35204 20.3264 5.40069 20.3669 5.03453 20.3597C4.93467 20.3571 4.89797 20.3879 4.889 20.4877C4.87427 20.6287 4.85161 20.7688 4.82115 20.9072C4.78616 21.0668 4.82243 21.1552 5.01106 21.1116Z" fill="#A30248"/> +<path d="M18.4538 20.5619C18.4538 19.9644 18.4538 19.3682 18.4538 18.7733C18.4538 18.6914 18.432 18.5971 18.5707 18.6026C19.2292 18.621 19.8937 18.5437 20.5432 18.7089C21.226 18.8796 21.7433 19.2564 21.9054 19.9648C22.0761 20.7061 22.0283 21.4295 21.4223 21.9928C20.9883 22.3965 20.4344 22.507 19.8676 22.5373C19.4494 22.56 19.0295 22.5373 18.6104 22.5463C18.4687 22.5497 18.4499 22.4942 18.4512 22.3735C18.4538 21.767 18.4538 21.1653 18.4538 20.5619ZM19.6001 20.5619C19.6001 20.8384 19.6001 21.1151 19.6001 21.3919C19.6001 21.4619 19.589 21.5281 19.6969 21.5438C20.0345 21.5942 20.4685 21.4158 20.6153 21.1269C20.8031 20.7577 20.8078 20.3741 20.6094 20.0066C20.4216 19.6584 20.0802 19.6191 19.7302 19.6008C19.6184 19.5953 19.5975 19.6358 19.5988 19.7322C19.6001 20.0096 19.5979 20.2862 19.5979 20.5627L19.6001 20.5619Z" fill="#A30248"/> +<path d="M12.2652 18.6035L12.9459 20.3848C13.3782 21.517 13.8067 22.6501 14.2462 23.7793C14.3158 23.9585 14.2761 23.9875 14.0981 23.9867C12.8682 23.9803 11.6379 23.9824 10.4079 23.9867C10.2731 23.9867 10.1946 23.9914 10.2641 23.8079C10.9154 22.1142 11.5621 20.4192 12.2042 18.723C12.2166 18.6906 12.2349 18.6603 12.2652 18.6035ZM12.2597 21.7581C12.0685 22.2562 11.8961 22.7115 11.7177 23.1664C11.6827 23.2561 11.7066 23.2765 11.7936 23.2761C12.135 23.2736 12.473 23.2761 12.8396 23.2761C12.6442 22.7683 12.4581 22.2826 12.2575 21.7581H12.2597Z" fill="#A30248"/> +</symbol> + +<symbol id="pix" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M32.9277 24.9876L33.444 24.3612C33.9033 23.8316 34.2297 23.3201 34.4232 22.8163L38.3527 27.614C39.0659 28.5278 39.0319 28.6971 37.8433 28.6971H37.4357C36.2471 28.6971 35.8056 28.4602 35.0923 27.614L32.9277 24.9876ZM32.9277 18.461L35.0923 15.8346C35.8056 14.9884 36.2471 14.7515 37.4357 14.7515H37.8433C39.0319 14.7515 39.0659 14.9207 38.3527 15.8346L34.4232 20.6322C34.2297 20.1285 33.9033 19.617 33.444 19.0874L32.9277 18.461Z" fill="url(#paint0_linear_6046_4294)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M26.9261 28.6971C25.7375 28.6971 25.7035 28.5278 26.4167 27.614L30.4921 22.6382C30.7978 22.2659 30.9676 21.9612 30.9676 21.7243C30.9676 21.4535 30.7978 21.1488 30.4921 20.8104L26.4167 15.8346C25.7035 14.9207 25.7375 14.7515 26.9261 14.7515H27.3337C28.5223 14.7515 28.9638 14.9884 29.677 15.8346L32.8015 19.6257C34.1261 21.1488 34.1261 22.2997 32.8015 23.8229L29.677 27.614C28.9638 28.4602 28.5223 28.6971 27.3337 28.6971H26.9261Z" fill="url(#paint1_linear_6046_4294)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M4.83398 33.0362C4.83398 34.0468 5.08748 34.2995 6.10145 34.2995H6.43941C7.45339 34.2995 7.70688 34.0468 7.70688 33.0362V27.1692C8.46736 28.3763 9.8475 28.9939 11.8472 28.9939C15.7623 28.9939 17.7057 26.9446 17.7057 22.8742V20.4319C17.7057 16.3615 15.6214 14.4526 11.2557 14.4526C7.19989 14.4526 4.83398 16.4177 4.83398 20.4319V33.0362ZM14.8047 22.9303C14.8047 25.2884 14.016 26.2709 11.2839 26.2709C8.49552 26.2709 7.70688 25.2603 7.70688 22.9303V20.5161C7.70688 18.1581 8.55187 17.1475 11.2839 17.1475C14.0723 17.1475 14.8047 18.1581 14.8047 20.5161V22.9303Z" fill="url(#paint2_linear_6046_4294)"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M20.4149 27.4C20.4149 28.4106 20.6684 28.6633 21.6824 28.6633H22.0485C23.0625 28.6633 23.316 28.4106 23.316 27.4V16.0029C23.316 14.9923 23.0625 14.7396 22.0485 14.7396H21.6824C20.6684 14.7396 20.4149 14.9923 20.4149 16.0029V27.4ZM20.6121 11.7079C21.3162 12.3816 22.4428 12.3816 23.1189 11.7079C23.823 11.006 23.823 9.88319 23.1189 9.20947C22.4428 8.50765 21.3162 8.50765 20.6121 9.20947C19.908 9.88319 19.908 11.006 20.6121 11.7079Z" fill="url(#paint3_linear_6046_4294)"/> <defs> -<linearGradient id="paint0_linear" x1="34.4071" y1="15.7001" x2="41.6955" y2="15.7001" gradientUnits="userSpaceOnUse"> +<linearGradient id="paint0_linear_6046_4294" x1="35.8768" y1="14.7515" x2="35.8768" y2="28.6971" gradientUnits="userSpaceOnUse"> +<stop stop-color="#12A3FF"/> +<stop offset="1" stop-color="#3D68FF"/> +</linearGradient> +<linearGradient id="paint1_linear_6046_4294" x1="28.4055" y1="14.7515" x2="28.4055" y2="28.6971" gradientUnits="userSpaceOnUse"> +<stop stop-color="#FFBE00"/> +<stop offset="1" stop-color="#FF9F00"/> +</linearGradient> +<linearGradient id="paint2_linear_6046_4294" x1="11.2698" y1="14.4526" x2="11.2698" y2="28.9506" gradientUnits="userSpaceOnUse"> +<stop stop-color="#12A3FF"/> +<stop offset="1" stop-color="#3D68FF"/> +</linearGradient> +<linearGradient id="paint3_linear_6046_4294" x1="21.8655" y1="14.3499" x2="21.8655" y2="28.6633" gradientUnits="userSpaceOnUse"> +<stop stop-color="#12A3FF"/> +<stop offset="1" stop-color="#3D68FF"/> +</linearGradient> +</defs> +</symbol> + +<symbol id="conseillerNumFranceServices" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_6046_4268)"> +<path d="M5.78257 12L1 14.8251V20.4742L5.52714 28.4667H6.03799L10.5662 20.4742V14.8251L5.78257 12Z" fill="#E1000F"/> +<path d="M7.15016 16.8421H8.96265V15.7718L5.78211 13.8926L2.60156 15.7718V19.5281L5.78211 21.4063L8.96265 19.5281V18.4568H7.15016V16.8421Z" fill="white"/> +<path d="M7.1511 18.4569V16.8421L5.78305 16.0342L4.41602 16.8421V18.4569L5.78305 19.2648L7.1511 18.4569Z" fill="#000091"/> +<path d="M16.2747 14.7395L16.7396 15.1043C16.5974 15.2982 16.4119 15.4545 16.1986 15.5601C15.9853 15.6658 15.7504 15.7177 15.5135 15.7115C15.2549 15.7076 15.0014 15.6367 14.7768 15.5055C14.5521 15.3744 14.3636 15.1871 14.2287 14.9614C14.0938 14.7356 14.017 14.4785 14.0054 14.2142C13.9939 13.9498 14.0479 13.6868 14.1624 13.4495C14.277 13.2123 14.4484 13.0086 14.6607 12.8574C14.873 12.7062 15.1192 12.6124 15.3765 12.5847C15.6337 12.5571 15.8936 12.5966 16.132 12.6994C16.3703 12.8022 16.5793 12.9651 16.7396 13.1728L16.2747 13.5428C16.1906 13.4161 16.0772 13.3126 15.9446 13.2415C15.812 13.1703 15.6643 13.1338 15.5145 13.1352C14.9669 13.1352 14.5766 13.572 14.5766 14.1406C14.5766 14.7092 14.9669 15.1471 15.5145 15.1471C15.6643 15.1484 15.812 15.1119 15.9446 15.0408C16.0772 14.9697 16.1906 14.8662 16.2747 14.7395Z" fill="black"/> +<path d="M20.0366 14.1383C20.0386 14.451 19.9498 14.7572 19.7814 15.0182C19.613 15.2791 19.3727 15.4831 19.0908 15.604C18.809 15.725 18.4984 15.7577 18.1984 15.6978C17.8984 15.6379 17.6226 15.4882 17.4059 15.2677C17.1892 15.0472 17.0414 14.7658 16.9812 14.4593C16.9211 14.1527 16.9513 13.8348 17.0681 13.5458C17.1849 13.2569 17.3829 13.0099 17.6371 12.8363C17.8913 12.6627 18.1902 12.5702 18.4959 12.5706C18.6986 12.5663 18.9002 12.6039 19.0884 12.6811C19.2767 12.7583 19.4478 12.8735 19.5916 13.0198C19.7354 13.1661 19.8489 13.3406 19.9254 13.5328C20.0018 13.7249 20.0396 13.9309 20.0366 14.1383ZM19.4297 14.1383C19.4297 13.5698 19.0404 13.1329 18.4959 13.1329C17.9513 13.1329 17.5579 13.5698 17.5579 14.1383C17.5579 14.7069 17.9482 15.1448 18.4959 15.1448C19.0435 15.1448 19.4297 14.708 19.4297 14.1383ZM20.5464 12.649H21.3025L22.601 14.7759V12.649H23.1946V15.6246H22.4396L21.1359 13.4851V15.6246H20.5464V12.649ZM24.1203 14.8093C24.1933 14.9164 24.2892 15.0051 24.4008 15.0685C24.5123 15.1319 24.6365 15.1683 24.764 15.1751C24.9959 15.1751 25.1369 15.0476 25.1369 14.8313C25.1369 14.3003 23.8087 14.4195 23.8087 13.4297C23.8087 12.9583 24.1857 12.5674 24.7374 12.5674C24.9339 12.5655 25.1282 12.6097 25.3053 12.6967C25.4825 12.7836 25.6377 12.9111 25.7591 13.0691L25.3269 13.4632C25.1573 13.2384 24.9663 13.0942 24.7466 13.0942C24.7039 13.09 24.6609 13.0949 24.6202 13.1088C24.5795 13.1226 24.5421 13.1451 24.5105 13.1746C24.4788 13.2042 24.4535 13.2402 24.4363 13.2803C24.4191 13.3205 24.4103 13.3639 24.4105 13.4078C24.4105 13.9377 25.7387 13.8154 25.7387 14.8208C25.7305 15.3737 25.3075 15.7124 24.7762 15.7124C24.5709 15.7221 24.3663 15.6822 24.1788 15.596C23.9914 15.5097 23.8264 15.3795 23.6973 15.2159L24.1203 14.8093ZM26.3037 12.649H27.9966V13.1716H26.8932V13.8593H27.8311V14.3735H26.8932V15.1166H27.9966V15.6298H26.3037V12.649ZM28.628 12.649H29.2227V15.6246H28.6331L28.628 12.649ZM29.9818 12.649H30.5713V15.0769H31.6747V15.6246H29.9818V12.649ZM32.1437 12.649H32.7332V15.0769H33.8377V15.6246H32.1437V12.649ZM34.3066 12.649H35.9996V13.1716H34.8962V13.8593H35.8341V14.3735H34.8962V15.1166H35.9996V15.6298H34.3066V12.649ZM36.631 12.649H37.5189C38.1584 12.649 38.5528 12.9834 38.5528 13.5363C38.5588 13.6971 38.5178 13.8561 38.435 13.993C38.3522 14.1298 38.2313 14.2383 38.0879 14.3045L39.0013 15.6204H38.2953L37.5229 14.4258H37.2164V15.6246H36.6269L36.631 12.649ZM37.2205 13.1716V13.9147H37.5526C37.8019 13.9147 37.9469 13.7788 37.9469 13.5363C37.9469 13.3116 37.8019 13.1716 37.5526 13.1716H37.2205ZM14.0137 16.9342H14.7687L16.0683 19.0611V16.9342H16.6558V19.9066H15.9007L14.6032 17.7703V19.9066H14.0137V16.9342ZM19.1017 16.9342H19.6912V18.7423C19.6912 19.5241 19.2427 19.9965 18.5122 19.9965C17.7817 19.9965 17.3383 19.5293 17.3383 18.7423V16.9342H17.9278V18.7935C17.9278 19.1928 18.1475 19.4269 18.5173 19.4269C18.8872 19.4269 19.1017 19.1928 19.1017 18.7935V16.9342ZM20.3727 16.9342H21.1155L21.8164 18.157L22.5183 16.9342H23.2611V19.9066H22.6715V17.7943L22.0238 18.8907H21.609L20.9612 17.7943V19.9098H20.3727V16.9342ZM24.0212 16.9342H25.7142V17.4473H24.6097V18.1351H25.5446V18.6493H24.6066V19.3924H25.7111V19.9066H24.0212V16.9342ZM24.5934 16.6791L25.0623 16.1064H25.6682L25.1287 16.6791H24.5934ZM26.3497 16.9342H27.2375C27.8771 16.9342 28.2715 17.2697 28.2715 17.8215C28.2775 17.9825 28.2364 18.1416 28.1534 18.2785C28.0704 18.4154 27.9492 18.5238 27.8056 18.5897L28.719 19.9066H28.014L27.2416 18.711H26.9351V19.9129H26.3456L26.3497 16.9342ZM26.9392 17.4473V18.1905H27.2712C27.5195 18.1905 27.6646 18.0546 27.6646 17.8132C27.6646 17.5884 27.5195 17.4473 27.2712 17.4473H26.9392ZM29.0347 16.9342H29.6242V19.9066H29.0347V16.9342ZM33.4341 20.1178C33.5037 20.1187 33.5729 20.107 33.6384 20.0833V20.5923C33.5409 20.6315 33.4367 20.65 33.3319 20.6466C32.9921 20.6363 32.6681 20.4974 32.4226 20.2568L32.0783 19.9432C31.7691 20.0268 31.4421 20.0092 31.1431 19.8931C30.8441 19.777 30.5881 19.5681 30.411 19.2957C30.2338 19.0233 30.1445 18.701 30.1554 18.3741C30.1662 18.0471 30.2768 17.7318 30.4717 17.4723C30.6665 17.2129 30.9358 17.0223 31.2418 16.9273C31.5479 16.8322 31.8753 16.8375 32.1782 16.9424C32.4812 17.0473 32.7445 17.2464 32.9312 17.5121C33.1179 17.7777 33.2188 18.0964 33.2195 18.4235C33.2221 18.6611 33.1718 18.8961 33.0725 19.1108C32.9732 19.3256 32.8275 19.5144 32.6464 19.6631L32.8211 19.8324C33.0479 20.0404 33.2482 20.1178 33.4341 20.1178ZM32.6167 18.4235C32.6167 17.8539 32.2265 17.417 31.6829 17.417C31.1394 17.417 30.745 17.8539 30.745 18.4235C30.745 18.9932 31.1353 19.43 31.6829 19.43C32.2305 19.43 32.6167 18.9921 32.6167 18.4235ZM35.4142 16.9342H36.0037V18.7423C36.0037 19.5241 35.5552 19.9965 34.8246 19.9965C34.0941 19.9965 33.6507 19.5293 33.6507 18.7423V16.9342H34.2402V18.7935C34.2402 19.1928 34.4599 19.4269 34.8297 19.4269C35.1996 19.4269 35.4142 19.1928 35.4142 18.7935V16.9342ZM36.6811 16.9342H38.374V17.4473H37.2706V18.1351H38.2136V18.6493H37.2757V19.3924H38.3791V19.9066H36.6811V16.9342Z" fill="black"/> +<path d="M14.0275 21.3765H15.7205V21.8907H14.6119V22.5784H15.5499V23.0916H14.6119V24.3458H14.0234L14.0275 21.3765ZM16.077 22.2084H16.6042V22.4175C16.6741 22.3382 16.7593 22.2747 16.8545 22.231C16.9497 22.1873 17.0527 22.1643 17.157 22.1635C17.2187 22.1633 17.2801 22.1732 17.3388 22.1927V22.7582C17.2632 22.7375 17.1852 22.7273 17.1069 22.7279C17.007 22.7255 16.9081 22.7497 16.82 22.798C16.7319 22.8464 16.6576 22.9173 16.6042 23.0038V24.3458H16.077V22.2084ZM17.5636 23.7845C17.5636 23.4574 17.8088 23.2066 18.2604 23.1303L18.8918 23.0195V22.9641C18.8918 22.7394 18.7253 22.5951 18.4893 22.5951C18.3959 22.5906 18.3031 22.6119 18.2206 22.6568C18.138 22.7017 18.0689 22.7685 18.0203 22.8502L17.63 22.5481C17.7321 22.4108 17.8649 22.3006 18.0172 22.2267C18.1696 22.1529 18.3371 22.1176 18.5056 22.1238C19.1115 22.1238 19.4252 22.4927 19.4252 22.9599V24.3448H18.8939V24.1462C18.816 24.2362 18.7202 24.3082 18.6129 24.3572C18.5055 24.4063 18.3892 24.4312 18.2717 24.4305C17.8497 24.4336 17.5636 24.1869 17.5636 23.7845ZM18.381 24.0009C18.4845 24.0006 18.5861 23.9725 18.6758 23.9195C18.7654 23.8665 18.8399 23.7904 18.8918 23.6988V23.4062L18.3973 23.495C18.1736 23.5337 18.0908 23.6267 18.0908 23.7626C18.0908 23.8985 18.1981 24.0009 18.3769 24.0009H18.381ZM19.934 22.2084H20.4601V22.3788C20.5413 22.2959 20.638 22.2307 20.7443 22.1868C20.8507 22.143 20.9646 22.1216 21.0793 22.1238C21.5319 22.1238 21.8966 22.4373 21.8966 23.0749V24.3489H21.3551V23.101C21.3551 22.8167 21.2019 22.639 20.9465 22.639C20.8452 22.6412 20.7464 22.6716 20.6608 22.7268C20.5751 22.782 20.5057 22.8601 20.4601 22.9526V24.35H19.934V22.2084ZM23.8685 23.6738L24.2874 24.0009C24.1839 24.1392 24.0499 24.2506 23.8963 24.3258C23.7427 24.401 23.5739 24.4379 23.4036 24.4336C22.6813 24.4336 22.2501 23.9026 22.2501 23.2787C22.2501 22.6547 22.6813 22.129 23.4036 22.129C23.5738 22.1249 23.7426 22.162 23.8961 22.2371C24.0497 22.3123 24.1838 22.4235 24.2874 22.5617L23.8685 22.8888C23.8166 22.8098 23.746 22.7455 23.6633 22.7018C23.5806 22.6582 23.4885 22.6366 23.3955 22.639C23.2325 22.6467 23.0788 22.7187 22.9665 22.8397C22.8543 22.9608 22.7922 23.1216 22.7932 23.2884C22.7943 23.4553 22.8584 23.6153 22.9722 23.7348C23.086 23.8544 23.2406 23.9243 23.4036 23.9298C23.4958 23.93 23.5866 23.9067 23.6678 23.862C23.7489 23.8173 23.8179 23.7526 23.8685 23.6738ZM25.6034 24.4336C24.8606 24.4336 24.4417 23.9026 24.4417 23.2787C24.4417 22.6547 24.831 22.129 25.5165 22.129C26.0968 22.129 26.479 22.5282 26.479 23.0885C26.4788 23.1914 26.4678 23.2941 26.4463 23.3947H24.9811C25.0138 23.7469 25.255 23.9549 25.6115 23.9549C25.7128 23.9578 25.8134 23.9363 25.905 23.892C25.9966 23.8477 26.0767 23.7818 26.1387 23.6999L26.5168 24.0061C26.4081 24.1458 26.2688 24.2574 26.11 24.3316C25.9513 24.4059 25.7777 24.4408 25.6034 24.4336ZM25.0138 22.9818H25.9528C25.9515 22.9251 25.939 22.8692 25.916 22.8175C25.8929 22.7659 25.8599 22.7196 25.8188 22.6814C25.7776 22.6433 25.7294 22.6141 25.6769 22.5957C25.6244 22.5773 25.5688 22.57 25.5134 22.5742C25.3956 22.5667 25.2792 22.6042 25.1869 22.6796C25.0945 22.7549 25.0329 22.8626 25.0138 22.9818Z" fill="#000091"/> +<path d="M14.2039 27.5948C14.3326 27.7599 14.4859 27.879 14.6851 27.879C14.8516 27.879 14.9426 27.785 14.9426 27.6585C14.9426 27.2843 13.9679 27.4411 13.9679 26.6687C13.9679 26.2904 14.2744 26.0103 14.7106 26.0103C14.8572 26.0083 15.0023 26.0402 15.1351 26.1035C15.268 26.1669 15.3851 26.26 15.4779 26.3761L15.1234 26.6938C15.078 26.6238 15.0176 26.5653 14.9468 26.5227C14.876 26.4802 14.7966 26.4547 14.7147 26.4482C14.5564 26.4482 14.4736 26.5245 14.4736 26.6437C14.4736 27.0084 15.4493 26.86 15.4493 27.6198C15.4411 28.0703 15.0876 28.3159 14.6943 28.3159C14.5341 28.3208 14.3751 28.2876 14.2296 28.2191C14.084 28.1505 13.956 28.0485 13.8555 27.9209L14.2039 27.5948ZM16.8603 28.3159C16.1175 28.3159 15.6986 27.785 15.6986 27.161C15.6986 26.537 16.0879 26.0113 16.7734 26.0113C17.3538 26.0113 17.7359 26.4106 17.7359 26.9708C17.7357 27.0738 17.7247 27.1764 17.7032 27.277H16.236C16.2687 27.6292 16.5098 27.8372 16.8664 27.8372C16.9677 27.8402 17.0683 27.8186 17.1599 27.7743C17.2515 27.73 17.3316 27.6642 17.3936 27.5822L17.7716 27.8885C17.6632 28.0279 17.5242 28.1392 17.3658 28.2135C17.2075 28.2878 17.0343 28.3228 16.8603 28.3159ZM16.2687 26.8631H17.2107C17.2095 26.8064 17.197 26.7505 17.1739 26.6988C17.1509 26.6472 17.1178 26.6009 17.0767 26.5627C17.0356 26.5246 16.9873 26.4954 16.9348 26.477C16.8823 26.4586 16.8267 26.4512 16.7714 26.4555C16.653 26.4472 16.5359 26.4843 16.4429 26.5597C16.3499 26.6351 16.2878 26.7433 16.2687 26.8631ZM18.1578 26.0908H18.685V26.2998C18.7547 26.2204 18.8397 26.1568 18.9347 26.1129C19.0296 26.069 19.1325 26.0458 19.2367 26.0448C19.2988 26.0447 19.3605 26.0545 19.4196 26.074V26.6395C19.3437 26.6187 19.2653 26.6085 19.1867 26.6092C19.0868 26.6066 18.9881 26.6308 18.9001 26.6791C18.8122 26.7275 18.738 26.7985 18.685 26.8851V28.2271H18.1578V26.0908ZM20.0664 26.0908L20.6109 27.6198L21.1514 26.0908H21.7195L20.9563 28.2313H20.2625L19.5034 26.0908H20.0664ZM21.8809 25.3654C21.882 25.2723 21.9186 25.1834 21.9829 25.1175C22.0473 25.0517 22.1342 25.0143 22.2252 25.0132C22.3165 25.0132 22.4041 25.0503 22.4687 25.1163C22.5333 25.1824 22.5695 25.272 22.5695 25.3654C22.5695 25.4588 22.5333 25.5484 22.4687 25.6145C22.4041 25.6805 22.3165 25.7176 22.2252 25.7176C22.1342 25.7165 22.0473 25.6791 21.9829 25.6133C21.9186 25.5474 21.882 25.4585 21.8809 25.3654ZM21.9596 26.0908H22.4868V28.2313H21.9596V26.0908ZM24.4954 27.5561L24.9143 27.8832C24.8109 28.0216 24.6769 28.133 24.5233 28.2082C24.3697 28.2834 24.2008 28.3204 24.0306 28.3159C23.3082 28.3159 22.8771 27.785 22.8771 27.161C22.8771 26.537 23.3082 26.0113 24.0306 26.0113C24.2009 26.0071 24.3698 26.0442 24.5234 26.1196C24.677 26.195 24.811 26.3065 24.9143 26.4451L24.4954 26.7712C24.4436 26.692 24.3731 26.6276 24.2904 26.5839C24.2076 26.5402 24.1154 26.5187 24.0224 26.5214C23.8594 26.5291 23.7057 26.601 23.5935 26.722C23.4812 26.8431 23.4191 27.0039 23.4201 27.1708C23.4212 27.3376 23.4853 27.4976 23.5991 27.6172C23.7129 27.7367 23.8675 27.8066 24.0306 27.8122C24.1228 27.8125 24.2136 27.7893 24.2948 27.7446C24.376 27.6998 24.445 27.6351 24.4954 27.5561ZM26.2303 28.3159C25.4875 28.3159 25.0686 27.785 25.0686 27.161C25.0686 26.537 25.4589 26.0113 26.1434 26.0113C26.7248 26.0113 27.1059 26.4106 27.1059 26.9708C27.1057 27.0738 27.0947 27.1764 27.0732 27.277H25.6081C25.6418 27.6292 25.8819 27.8372 26.2384 27.8372C26.3398 27.8403 26.4403 27.8187 26.5319 27.7744C26.6236 27.7301 26.7036 27.6642 26.7656 27.5822L27.1437 27.8885C27.035 28.0282 26.8957 28.1397 26.737 28.214C26.5783 28.2883 26.4047 28.3232 26.2303 28.3159ZM25.6469 26.8631H26.5889C26.5877 26.8063 26.5751 26.7503 26.552 26.6986C26.5289 26.6468 26.4957 26.6005 26.4545 26.5623C26.4133 26.5242 26.3649 26.495 26.3123 26.4767C26.2597 26.4583 26.204 26.4511 26.1485 26.4555C26.0303 26.4472 25.9133 26.4844 25.8204 26.5598C25.7276 26.6352 25.6657 26.7434 25.6469 26.8631ZM27.6903 27.5948C27.819 27.7599 27.9733 27.879 28.1725 27.879C28.338 27.879 28.429 27.785 28.429 27.6585C28.429 27.2843 27.4543 27.4411 27.4543 26.6687C27.4543 26.2904 27.7659 26.0103 28.197 26.0103C28.3437 26.0084 28.489 26.0403 28.622 26.1036C28.755 26.1669 28.8723 26.2601 28.9654 26.3761L28.6098 26.6938C28.5646 26.6236 28.5043 26.5649 28.4334 26.5223C28.3626 26.4797 28.2831 26.4544 28.2011 26.4482C28.0438 26.4482 27.96 26.5245 27.96 26.6437C27.96 27.0084 28.9357 26.86 28.9357 27.6198C28.9276 28.0703 28.5751 28.3159 28.1807 28.3159C28.0206 28.3208 27.8615 28.2876 27.716 28.2191C27.5704 28.1505 27.4424 28.0485 27.3419 27.9209L27.6903 27.5948Z" fill="#E1000F"/> +</g> +<defs> +<clipPath id="clip0_6046_4268"> +<rect width="38" height="16.4667" fill="white" transform="translate(1 12)"/> +</clipPath> +</defs> +</symbol> + + +<symbol id="maisonFranceService" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M15.1829 17.1433C15.1581 17.1195 15.1353 17.1371 15.1116 17.1433L15.0424 17.1753C14.9426 17.2139 14.8476 17.2638 14.7593 17.3241C14.7293 17.3427 14.689 17.353 14.6684 17.3241C14.6477 17.2951 14.6932 17.2724 14.7118 17.2486C14.7727 17.1701 14.876 17.196 14.9494 17.1453C15.1999 16.9704 15.4799 16.842 15.7759 16.7662C16.2707 16.6277 16.7821 16.5906 17.2842 16.4955C17.6117 16.4335 17.9382 16.3757 18.214 16.167C18.3349 16.0771 18.4578 15.9851 18.587 15.9035C18.7865 15.7838 18.9445 15.6056 19.0395 15.3932C19.0643 15.3364 19.1263 15.262 19.0684 15.2165C19.0291 15.1876 18.9858 15.2785 18.9424 15.3126C18.9207 15.3318 18.9 15.3522 18.8804 15.3735C18.4558 15.7672 17.9909 16.0967 17.4268 16.2589C16.9887 16.3839 16.5311 16.3622 16.0734 16.4222C16.2211 16.3013 16.342 16.1628 16.5528 16.138C16.4577 16.0585 16.3875 16.1174 16.3162 16.1287C16.2687 16.137 16.1974 16.1856 16.185 16.1071C16.1777 16.0606 16.185 15.9645 16.2883 15.9686C16.3121 15.9686 16.343 15.9769 16.3534 15.948C16.3916 15.8302 16.5032 15.8013 16.5941 15.7496C16.8658 15.5946 17.1416 15.4469 17.4154 15.294C17.4433 15.2775 17.4867 15.2744 17.4939 15.231C17.4609 15.2175 17.4113 15.2599 17.3979 15.2082C17.3844 15.1566 17.4258 15.1421 17.4702 15.1287C17.7124 15.0404 17.9487 14.9369 18.1779 14.8188C18.1097 14.795 18.0436 14.8394 17.9981 14.7847C18.027 14.7206 18.1179 14.7299 18.1314 14.6814C18.1541 14.6039 18.1469 14.5181 18.2574 14.5078C18.2719 14.5078 18.2708 14.4882 18.2574 14.4809C18.183 14.422 18.2657 14.4086 18.2884 14.389C18.3649 14.3239 18.4713 14.326 18.5653 14.2795C18.4423 14.235 18.3989 14.1565 18.462 14.0728C18.5849 13.9014 18.6056 13.6978 18.6634 13.5057C18.6717 13.4809 18.6882 13.4499 18.6521 13.4292C18.6159 13.4086 18.5983 13.4292 18.5787 13.453C18.3829 13.6253 18.1493 13.7492 17.8969 13.8146C17.7116 13.8693 17.5232 13.9127 17.3328 13.9447C17.2287 13.9705 17.1197 13.9688 17.0165 13.9398C16.9133 13.9108 16.8194 13.8556 16.7439 13.7794C16.6749 13.7146 16.5982 13.6584 16.5156 13.6121C15.9226 13.2722 15.2686 13.1513 14.6022 13.0718C14.3522 13.0495 14.1011 13.0412 13.8501 13.047C13.9566 12.9912 14.0698 12.9496 14.1869 12.923C14.4752 12.8527 14.7665 12.798 15.0486 12.706C15.2897 12.6209 15.539 12.5607 15.7924 12.5263L16.1447 12.4994C16.0285 12.4794 15.9097 12.4794 15.7934 12.4994C15.6947 12.4923 15.5955 12.4972 15.498 12.5139C14.8657 12.6368 14.221 12.7205 13.6487 13.0501C13.6043 13.0759 13.5454 13.0976 13.5113 13.0573C13.4772 13.017 13.5288 12.9695 13.5578 12.9313C13.7152 12.7124 13.926 12.5373 14.1701 12.4229C14.4142 12.3084 14.6835 12.2583 14.9525 12.2773C15.6236 12.3006 16.291 12.3885 16.9454 12.5397C17.0005 12.546 17.0533 12.5652 17.0995 12.596C17.1456 12.6267 17.1838 12.668 17.2109 12.7164C17.2293 12.7489 17.2558 12.7761 17.2878 12.7953C17.3199 12.8145 17.3564 12.825 17.3937 12.8259C17.5298 12.8275 17.6645 12.8534 17.7915 12.9023C17.8101 12.705 17.8245 12.6957 18.0105 12.7246H18.0343C18.1024 12.737 18.1727 12.7422 18.212 12.674C18.2263 12.6437 18.2303 12.6095 18.2234 12.5767C18.2165 12.5439 18.199 12.5142 18.1737 12.4922C18.0931 12.3982 18.0064 12.3093 17.9237 12.2174C17.8969 12.1874 17.8545 12.1575 17.8907 12.0924C18.0095 12.206 18.12 12.3155 18.2347 12.4209C18.3739 12.5643 18.5546 12.6604 18.7512 12.6957C18.8205 12.705 18.9031 12.736 18.9506 12.675C18.9982 12.6141 18.9331 12.5438 18.9 12.487C18.7593 12.273 18.5992 12.0724 18.4217 11.8878C18.3809 11.8532 18.3508 11.8077 18.3349 11.7566C18.3068 11.6637 18.2669 11.5748 18.2161 11.4921C18.1377 11.3488 18.0853 11.1929 18.0611 11.0314C18.0625 10.9568 18.0559 10.8824 18.0415 10.8092C17.903 10.3381 17.8452 9.84947 17.7316 9.37114C17.6499 9.01575 17.621 8.66036 17.8049 8.32253C17.9433 8.06942 18.0869 7.8194 18.2305 7.56939C18.4155 7.24912 18.6242 6.94952 18.9413 6.7429C18.974 6.71852 18.9976 6.684 19.0085 6.64475C19.2389 6.07241 19.5984 5.62093 20.1769 5.36472C20.4497 5.24385 20.7255 5.1302 21.0034 5.00416H20.8743C14.7376 5.00416 8.60157 5.00416 2.46624 5.00416C2.33504 5.00416 2.31334 5.04239 2.31334 5.16223C2.31334 9.90354 2.31334 14.6445 2.31334 19.3851C2.31334 19.5143 2.34743 19.5391 2.46934 19.5391C6.78432 19.5349 11.0993 19.5349 15.4143 19.5391C15.5205 19.5436 15.6253 19.5135 15.7128 19.4533C15.8514 19.3563 15.9975 19.2706 16.1499 19.1971C16.6344 18.9605 17.121 18.726 17.6107 18.5018C18.2398 18.2136 18.8122 17.8582 19.2554 17.3075C19.5927 16.8839 19.9818 16.5042 20.4135 16.1773C20.4342 16.1664 20.4505 16.1488 20.4599 16.1274C20.4693 16.106 20.4711 16.0821 20.4652 16.0595C20.334 16.0988 20.2586 16.2403 20.1067 16.2383C20.147 16.1897 20.2007 16.1577 20.241 16.1143C20.2813 16.0709 20.3991 16.0585 20.367 15.9758C20.3278 15.8725 20.2234 15.9366 20.147 15.9325C20.1347 15.9346 20.1226 15.9377 20.1108 15.9418C19.8784 15.9913 19.7089 16.1484 19.5354 16.2899C19.5013 16.3178 19.4682 16.3684 19.4197 16.3426C19.3298 16.2951 19.2606 16.3426 19.1882 16.3777C19.0481 16.4482 18.9146 16.5312 18.7895 16.6257C18.6457 16.7366 18.4926 16.8347 18.3318 16.9191C18.2285 16.9707 18.0993 16.9439 17.9888 17.009C17.8038 17.1132 17.5919 17.1596 17.3803 17.1422C16.904 17.1133 16.4505 17.2393 15.9877 17.3282C15.6013 17.4026 15.3461 17.6815 15.0496 17.8943C14.8029 18.0737 14.573 18.2749 14.3626 18.4956C14.3336 18.5245 14.3068 18.5669 14.2427 18.539C14.3189 18.4437 14.3834 18.3397 14.4349 18.2291C14.5051 18.043 14.6437 17.8908 14.8223 17.8034C14.8614 17.7818 14.8939 17.7501 14.9165 17.7115C14.939 17.673 14.9508 17.6291 14.9504 17.5844C14.7686 17.5916 14.75 17.8602 14.5289 17.8251C14.5865 17.7511 14.6316 17.668 14.6622 17.5792C14.687 17.4119 14.813 17.3582 14.9297 17.2869L15.0661 17.2032L15.126 17.165L15.1767 17.1402L15.1849 17.1205L15.1705 17.1267L15.1829 17.1433ZM28.5503 14.1679C28.6147 14.183 28.6741 14.2146 28.7226 14.2595C28.7711 14.3044 28.8072 14.3611 28.8272 14.4241C28.8507 14.463 28.8596 14.5091 28.8522 14.554C28.8448 14.5988 28.8217 14.6396 28.7869 14.669C28.7239 14.7227 28.6588 14.7723 28.5979 14.8281C28.5575 14.8581 28.53 14.9021 28.5206 14.9515C28.5112 15.0008 28.5207 15.0519 28.5472 15.0946C28.6113 15.2469 28.6245 15.4159 28.5849 15.5764C28.5452 15.7368 28.4548 15.8802 28.3272 15.9851C28.2167 16.0661 28.0904 16.1227 27.9565 16.1511C27.8225 16.1796 27.6841 16.1794 27.5503 16.1504C27.447 16.1308 27.355 16.0947 27.2517 16.0812C26.8684 16.0296 26.4913 15.9304 26.1029 15.9077C25.8958 15.8815 25.6866 15.9347 25.5171 16.0564C24.8032 16.6391 24.4923 17.3995 24.5666 18.3148C24.5821 18.5132 24.6545 18.6764 24.8828 18.7115C24.9182 18.7207 24.9527 18.7328 24.9861 18.7477C25.5884 18.9595 26.1917 19.1682 26.7517 19.4822C26.8145 19.5187 26.8857 19.5379 26.9583 19.538C31.9214 19.538 36.8845 19.538 41.8476 19.538C41.9581 19.538 41.9922 19.5143 41.9922 19.3975C41.9922 14.6452 41.9922 9.89596 41.9922 5.14983C41.9922 5.02586 41.955 5.00416 41.8403 5.00416C36.8125 5.00416 31.7847 5.00416 26.7568 5.00416C26.7094 4.99449 26.66 5.0018 26.6174 5.02483L26.7269 5.08578C26.9624 5.22009 27.2166 5.32133 27.4284 5.49903C27.7032 5.72734 27.7548 5.91847 27.6577 6.2439C27.6349 6.33239 27.5833 6.4108 27.5112 6.46688C27.439 6.52296 27.3503 6.55354 27.2589 6.55384C27.1478 6.56313 27.036 6.56105 26.9252 6.54764C26.8591 6.54041 26.793 6.53524 26.7186 6.52904C26.7186 6.54454 26.7186 6.55074 26.7186 6.55177C26.7329 6.56037 26.7477 6.56796 26.763 6.5745C27.1113 6.70942 27.4158 6.93743 27.6433 7.23363C27.6633 7.25715 27.6879 7.27633 27.7156 7.29001C27.7434 7.30369 27.7736 7.31157 27.8044 7.31318C27.9408 7.34004 27.9408 7.339 27.8602 7.45265C27.8375 7.48364 27.8086 7.52187 27.8416 7.55079C27.8595 7.56546 27.8824 7.57249 27.9054 7.57036C27.9284 7.56824 27.9497 7.55712 27.9646 7.53943C28.0071 7.48907 28.0419 7.43266 28.0679 7.37206C28.0745 7.35548 28.0851 7.34079 28.0988 7.3293C28.1125 7.3178 28.1288 7.30987 28.1462 7.30619C28.1637 7.30251 28.1818 7.3032 28.199 7.3082C28.2161 7.31321 28.2318 7.32237 28.2445 7.33487C28.2797 7.35854 28.309 7.38983 28.3303 7.42642C28.3516 7.46301 28.3644 7.50395 28.3677 7.54617C28.371 7.58839 28.3647 7.63081 28.3492 7.67026C28.3338 7.7097 28.3097 7.74515 28.2786 7.77395C28.2125 7.83593 28.1402 7.89172 28.072 7.94751C28.0494 7.96002 28.0297 7.97725 28.0144 7.99805C27.999 8.01884 27.9883 8.0427 27.983 8.068C27.9777 8.0933 27.978 8.11944 27.9837 8.14465C27.9894 8.16985 28.0005 8.19352 28.0162 8.21405C28.05 8.27065 28.0786 8.33012 28.102 8.39175C28.2001 8.70168 28.3014 9.01988 28.3881 9.33705C28.5007 9.7503 28.5844 10.1759 28.4914 10.6067C28.4471 10.8328 28.4931 11.0672 28.6196 11.2597C28.7229 11.4343 28.8355 11.6006 28.9491 11.768C29.1328 12.0062 29.2949 12.2604 29.4337 12.5273C29.5514 12.7908 29.4574 12.9746 29.1816 13.0563C29.1506 13.0656 29.1185 13.0738 29.0865 13.0811C28.7187 13.1554 28.7446 13.3414 28.8727 13.578L28.8985 13.6203C28.9894 13.7794 28.9718 13.8869 28.8262 13.9964C28.7435 14.0594 28.6557 14.1018 28.5503 14.1679ZM32.7861 28.21C33.3678 28.21 33.9504 28.21 34.5321 28.21C34.623 28.21 34.654 28.178 34.6684 28.0974C34.737 27.7358 34.7447 27.3654 34.6912 27.0013C34.5713 26.2409 34.1922 25.6582 33.5021 25.2956C32.97 25.0187 32.3977 24.9784 31.815 25.0662C31.0215 25.1861 30.3872 25.5663 29.9647 26.2564C29.5566 26.927 29.4154 27.7264 29.569 28.4962C29.724 29.3847 30.1889 30.0675 31.0009 30.487C31.6363 30.8145 32.3171 30.8796 33.0124 30.7825C33.6919 30.6992 34.3152 30.3632 34.7583 29.8413C34.8151 29.7752 34.8327 29.7328 34.748 29.6677C34.5124 29.488 34.2841 29.2958 34.0537 29.1088C33.8843 28.9714 33.8843 28.9724 33.7335 29.1264C33.3616 29.5035 32.8987 29.6192 32.3904 29.5995C31.6177 29.5685 31.0701 29.083 30.9441 28.3226C30.9275 28.2265 30.9441 28.2048 31.0401 28.2059C31.6259 28.2131 32.2086 28.2131 32.7902 28.2131L32.7861 28.21ZM35.0776 37.2084C35.6509 37.2084 36.2254 37.2084 36.7987 37.2084C36.9082 37.2084 36.9372 37.1712 36.9537 37.0741C37.0187 36.7162 37.024 36.35 36.9692 35.9904C36.8421 35.2218 36.4526 34.6339 35.746 34.2816C35.2635 34.0558 34.7247 33.9792 34.1984 34.0616C33.3254 34.17 32.6415 34.5781 32.2014 35.3519C31.8639 35.9547 31.7343 36.6517 31.8325 37.3355C31.9359 38.162 32.2995 38.8573 33.0072 39.3263C33.8151 39.8604 34.7056 39.94 35.6303 39.721C36.1941 39.5911 36.6983 39.2761 37.0622 38.8263C37.0921 38.7912 37.1397 38.7602 37.0735 38.7075C36.7843 38.4761 36.496 38.2422 36.2088 38.006C36.1696 37.974 36.1499 37.9802 36.121 38.0174C35.8111 38.4089 35.3978 38.5804 34.9164 38.6052C34.0135 38.6507 33.3667 38.1765 33.2303 37.3221C33.2159 37.225 33.2304 37.2064 33.3275 37.2064C33.9091 37.2115 34.4949 37.2084 35.0817 37.2084H35.0776ZM10.3789 37.2084C10.9481 37.2084 11.5153 37.2084 12.0876 37.2084C12.2096 37.2084 12.2581 37.1785 12.2757 37.0545C12.3306 36.72 12.3365 36.3793 12.2932 36.0431C12.1765 35.2548 11.7911 34.6473 11.0659 34.2868C10.5807 34.0567 10.0373 33.9785 9.50692 34.0626C8.59468 34.1793 7.89733 34.6205 7.46755 35.4459C7.16249 36.0424 7.05399 36.7201 7.15762 37.382C7.26609 38.192 7.62872 38.8707 8.32297 39.3232C9.21868 39.9069 10.1919 39.9638 11.194 39.6466C11.6605 39.4956 12.0728 39.2116 12.38 38.8294C12.411 38.7912 12.4585 38.7591 12.3862 38.7023C12.098 38.475 11.8149 38.2415 11.5298 38.0081C11.4957 37.9802 11.474 37.9719 11.4419 38.0143C11.1372 38.4068 10.7188 38.5794 10.2384 38.6052C9.39121 38.6496 8.70522 38.2353 8.55129 37.3396C8.53373 37.2425 8.54096 37.2043 8.6546 37.2064C9.22695 37.2126 9.80446 37.2084 10.383 37.2084H10.3789ZM2.31437 26.8835C2.31437 28.084 2.31437 29.2855 2.31437 30.487C2.31437 30.5903 2.3433 30.6172 2.44455 30.6161C2.85779 30.6099 3.2793 30.6089 3.69565 30.6161C3.80516 30.6161 3.83202 30.5903 3.83202 30.4808C3.83202 29.5272 3.83202 28.5737 3.83202 27.6201C3.83202 27.5219 3.85785 27.4961 3.95496 27.4972C4.67814 27.4972 5.40132 27.4972 6.1245 27.4972C6.21335 27.4972 6.24331 27.4796 6.24228 27.3835C6.23608 27.0033 6.23608 26.6242 6.24228 26.2471C6.24228 26.151 6.21955 26.1241 6.1214 26.1252C5.40339 26.1252 4.68434 26.1252 3.96632 26.1252C3.86301 26.1252 3.83305 26.1045 3.83409 25.9981C3.84028 25.5528 3.84132 25.1065 3.83409 24.6612C3.83409 24.5497 3.86405 24.5249 3.97149 24.5259C4.83001 24.5259 5.68853 24.5259 6.54705 24.5259C6.64416 24.5259 6.67309 24.5011 6.67102 24.403C6.67102 24.0269 6.66482 23.6519 6.67102 23.2758C6.67102 23.1725 6.64726 23.1467 6.54291 23.1467C5.18058 23.1508 3.81824 23.1508 2.45591 23.1467C2.3464 23.1467 2.3216 23.1736 2.3216 23.282C2.31954 24.4939 2.31851 25.6861 2.31851 26.8835H2.31437ZM14.8223 30.1223C14.8223 30.2731 14.8223 30.3971 14.8223 30.52C14.8223 30.5996 14.8471 30.6161 14.9256 30.6151C15.3089 30.6151 15.6932 30.6099 16.0775 30.6151C16.1695 30.6151 16.1943 30.5934 16.1932 30.4994C16.1932 29.3433 16.2087 28.1862 16.185 27.0312C16.1684 26.1965 15.7717 25.5766 14.9928 25.2357C14.5523 25.0532 14.0725 24.9867 13.5991 25.0425C13.2356 25.0676 12.8812 25.1676 12.5582 25.3361C12.2352 25.5047 11.9505 25.7381 11.7219 26.0219C11.6713 26.0838 11.6806 26.1117 11.7395 26.1562C12.0267 26.3724 12.3115 26.5908 12.5939 26.8112C12.6569 26.8608 12.6817 26.8504 12.7251 26.7884C12.8357 26.6234 12.9832 26.4862 13.1558 26.3878C13.3284 26.2894 13.5216 26.2324 13.72 26.2213C14.3863 26.1644 14.845 26.5673 14.8295 27.1955C14.8295 27.2595 14.8171 27.2874 14.7459 27.2988C14.346 27.3608 13.9483 27.4321 13.5495 27.4961C13.1646 27.5422 12.7899 27.6507 12.4399 27.8174C11.5215 28.2947 11.2488 29.4156 11.8759 30.2122C12.3056 30.7577 12.909 30.8744 13.5588 30.799C14.0512 30.7402 14.5036 30.4987 14.8264 30.1223H14.8223ZM18.9548 25.6375C18.9548 25.5094 18.9548 25.4154 18.9548 25.3214C18.9548 25.2543 18.932 25.2388 18.869 25.2388C18.464 25.2388 18.0601 25.2388 17.6551 25.2388C17.5818 25.2388 17.5683 25.2625 17.5683 25.3297C17.5683 27.0605 17.5683 28.791 17.5683 30.5211C17.5683 30.6017 17.5952 30.6151 17.6716 30.6151C18.0549 30.6151 18.4392 30.6089 18.8236 30.6151C18.9269 30.6151 18.961 30.5913 18.9599 30.4798C18.9599 29.3898 18.9599 28.2999 18.9599 27.2089C18.9522 27.1558 18.9601 27.1016 18.9827 27.0529C19.2151 26.6717 19.5199 26.3897 19.9806 26.3132C20.5251 26.2244 20.9952 26.4868 21.1625 26.9816C21.2149 27.143 21.2404 27.312 21.2379 27.4817C21.2379 28.4848 21.2379 29.488 21.2379 30.4921C21.2379 30.5882 21.2627 30.6161 21.3609 30.6151C21.7369 30.6089 22.112 30.6089 22.488 30.6151C22.5862 30.6151 22.6099 30.5893 22.6099 30.4921C22.6099 29.6874 22.6099 28.8815 22.6099 28.0767C22.6229 27.7136 22.6146 27.35 22.5851 26.9878C22.5242 26.4713 22.3702 26.0012 22.0004 25.6272C21.4115 25.0301 20.6894 24.9299 19.9073 25.1107C19.5508 25.2002 19.2241 25.3819 18.9599 25.6375H18.9548ZM25.8963 36.9471C25.8932 37.0749 25.9008 37.2027 25.919 37.3293C26.0388 38.2126 26.4448 38.9193 27.2094 39.3955C27.8292 39.7788 28.5069 39.8863 29.2188 39.8088C29.5752 39.7763 29.9216 39.6735 30.2381 39.5065C30.5546 39.3395 30.8349 39.1115 31.0629 38.8356C31.1197 38.7674 31.1114 38.7385 31.0432 38.6879C30.7326 38.4557 30.4248 38.2199 30.1196 37.9802C30.0504 37.9254 30.0215 37.9378 29.9688 38.0029C29.7321 38.3058 29.3856 38.5034 29.0044 38.5529C28.6231 38.6024 28.2377 38.4998 27.9315 38.2674C27.354 37.8324 27.2032 37.2239 27.3395 36.5452C27.4625 35.9325 27.8385 35.5121 28.4522 35.3623C29.0659 35.2125 29.5886 35.3757 29.9812 35.8788C30.0215 35.9315 30.0442 35.9439 30.1031 35.8974C30.413 35.6515 30.7354 35.4067 31.0567 35.1691C31.1269 35.1174 31.1083 35.0854 31.066 35.0358C30.9442 34.8854 30.8055 34.7495 30.6527 34.6308C29.7436 33.9624 28.7456 33.8735 27.7073 34.2331C26.5916 34.6184 25.9014 35.6743 25.9014 36.9471H25.8963ZM26.4944 25.027C26.3829 25.0363 26.2093 25.0425 26.0388 25.0683C25.2857 25.183 24.6524 25.5146 24.1937 26.1334C23.6482 26.87 23.5046 27.7007 23.6864 28.5871C23.7591 28.9888 23.9231 29.3684 24.1658 29.6965C24.4085 30.0247 24.7235 30.2927 25.0863 30.4798C25.6207 30.7577 26.2248 30.873 26.824 30.8114C27.2 30.7913 27.5679 30.6939 27.9046 30.5252C28.2413 30.3565 28.5395 30.1202 28.7807 29.831C28.8355 29.7648 28.8365 29.7328 28.7652 29.6801C28.4553 29.4487 28.1454 29.2132 27.8416 28.9735C27.7703 28.9177 27.7383 28.9301 27.6887 28.9941C27.4496 29.2989 27.0994 29.4965 26.7149 29.5438C26.3304 29.591 25.9428 29.484 25.637 29.2462C25.076 28.8082 24.9293 28.2059 25.0656 27.5385C25.1886 26.9279 25.5605 26.5054 26.1773 26.3556C26.794 26.2058 27.3137 26.368 27.7052 26.8721C27.76 26.9413 27.7889 26.9217 27.8416 26.8814C28.1516 26.6448 28.4553 26.4072 28.7663 26.1768C28.8458 26.1179 28.8375 26.0838 28.7797 26.0157C28.198 25.3307 27.4408 25.0435 26.4996 25.027H26.4944ZM19.8432 38.0515C19.8195 37.9926 19.8029 37.9554 19.7895 37.9171C19.3577 36.7339 18.9269 35.5503 18.4971 34.3663C18.4891 34.3271 18.4662 34.2926 18.4333 34.2698C18.4004 34.2471 18.3599 34.238 18.3204 34.2444C17.9206 34.2506 17.5198 34.2506 17.1199 34.2444C17.0094 34.2444 17.0011 34.2703 17.0363 34.3674C17.6644 36.0844 18.2884 37.8025 18.9083 39.5216C18.9372 39.6011 18.9765 39.6146 19.0508 39.6135C19.5674 39.6135 20.0912 39.6135 20.6108 39.6135C20.6463 39.6196 20.6827 39.6117 20.7123 39.5915C20.742 39.5712 20.7627 39.5402 20.7699 39.505C20.9621 38.9616 21.1615 38.4203 21.3578 37.8789C21.7827 36.7081 22.208 35.5355 22.6337 34.3612C22.6533 34.3074 22.7039 34.2434 22.581 34.2444C22.1512 34.2444 21.7225 34.2444 21.2927 34.2444C21.2706 34.2414 21.2482 34.247 21.2301 34.2601C21.212 34.2732 21.1996 34.2927 21.1956 34.3147C21.147 34.4552 21.0923 34.5936 21.0448 34.7331C20.647 35.8334 20.2513 36.9316 19.8432 38.0515ZM40.0427 34.0347C39.7736 34.0291 39.5057 34.0729 39.2524 34.1638C38.6118 34.4004 38.1955 34.8364 38.1283 35.5348C38.0622 36.2166 38.335 36.7466 38.9197 37.1093C39.1689 37.2544 39.4299 37.3784 39.6997 37.4801C39.933 37.5622 40.1571 37.6685 40.3681 37.7973C40.7411 38.0484 40.5872 38.4874 40.2917 38.6124C40.0714 38.7016 39.8263 38.7082 39.6016 38.631C39.2837 38.5215 39.0054 38.3202 38.8019 38.0525C38.741 37.9781 38.7121 37.9812 38.647 38.0473C38.4032 38.2932 38.1549 38.5343 37.9021 38.7705C37.837 38.8325 37.8453 38.8738 37.9021 38.9265C38.6325 39.6993 39.5272 39.9762 40.5572 39.753C41.5335 39.5412 42.0852 38.6538 41.8827 37.6764C41.7918 37.2384 41.5273 36.9233 41.1595 36.6846C40.8393 36.4976 40.5024 36.3406 40.1533 36.2156C39.9625 36.1487 39.7828 36.0536 39.6202 35.9336C39.562 35.8928 39.5162 35.8369 39.4876 35.7719C39.4591 35.7069 39.4489 35.6353 39.4581 35.5649C39.4674 35.4945 39.4958 35.428 39.5402 35.3726C39.5846 35.3172 39.6434 35.275 39.71 35.2507C39.8652 35.18 40.0382 35.1584 40.2059 35.1887C40.5655 35.2496 40.8206 35.4728 41.0448 35.7404C41.0882 35.792 41.111 35.8044 41.1657 35.7507C41.4137 35.509 41.6637 35.2693 41.9188 35.0337C41.9912 34.9676 41.9891 34.9304 41.925 34.856C41.686 34.5953 41.395 34.3875 41.0708 34.2461C40.7466 34.1046 40.3964 34.0326 40.0427 34.0347ZM4.19361 34.0347C3.87891 34.032 3.56689 34.0928 3.2762 34.2134C2.02097 34.7476 2.03646 36.2559 2.78444 36.8995C3.08888 37.1399 3.43051 37.3291 3.79586 37.4595C4.04141 37.544 4.27781 37.653 4.50148 37.7849C4.65748 37.8882 4.76492 38.0256 4.736 38.2281C4.72358 38.3253 4.68244 38.4165 4.61783 38.4901C4.55322 38.5638 4.4681 38.6164 4.37337 38.6414C4.20316 38.6943 4.02176 38.7 3.84855 38.6579C3.47146 38.5721 3.19355 38.3376 2.95387 38.0515C2.88878 37.975 2.85779 37.9864 2.7958 38.0515C2.54786 38.2994 2.29578 38.5443 2.04266 38.786C1.99307 38.8335 1.98894 38.8614 2.04266 38.9141C2.77824 39.7034 3.68325 39.9978 4.72876 39.754C5.90342 39.4792 6.25261 38.4192 6.01396 37.5762C5.87759 37.0927 5.53149 36.7931 5.10585 36.5669C4.81451 36.4119 4.50251 36.3024 4.19981 36.1733C4.03648 36.1147 3.88523 36.0268 3.7535 35.9139C3.70342 35.8731 3.66461 35.8202 3.64074 35.7601C3.61687 35.7001 3.60874 35.6349 3.61713 35.5709C3.62551 35.5068 3.65013 35.4459 3.68864 35.3941C3.72715 35.3422 3.77829 35.301 3.83719 35.2744C3.99935 35.1886 4.18603 35.1609 4.36614 35.1959C4.7112 35.2527 4.96431 35.4604 5.1792 35.7197C5.24532 35.7982 5.28251 35.8055 5.35587 35.73C5.58866 35.4966 5.82697 35.2686 6.07078 35.0461C6.14723 34.9769 6.15343 34.9366 6.08318 34.8612C5.56765 34.3085 4.93229 34.0533 4.19361 34.0337V34.0347ZM9.04925 25.7584C9.04925 25.5993 9.04925 25.4722 9.04925 25.3452C9.04925 25.2708 9.03892 25.2419 8.95111 25.2419C8.55852 25.247 8.16697 25.2419 7.77439 25.2419C7.69484 25.2419 7.67108 25.2615 7.67108 25.3452C7.67108 27.067 7.67108 28.7889 7.67108 30.5107C7.67108 30.5975 7.6969 30.6213 7.78265 30.6203C8.16284 30.6203 8.54199 30.6141 8.91908 30.6203C9.02239 30.6203 9.04719 30.5924 9.04719 30.4911C9.04719 29.5045 9.05545 28.5179 9.03685 27.5312C9.03157 27.4149 9.05445 27.299 9.10356 27.1935C9.15266 27.0879 9.22653 26.9957 9.31889 26.9248C9.43701 26.8215 9.57141 26.7384 9.71664 26.6789C10.0739 26.5429 10.4646 26.5216 10.8345 26.618C10.912 26.6355 10.9254 26.618 10.9244 26.5467C10.9244 26.1334 10.9244 25.7202 10.9244 25.3069C10.9244 25.2264 10.8944 25.2036 10.821 25.185C10.4569 25.1003 10.0753 25.1332 9.73111 25.2791C9.47632 25.393 9.24613 25.5555 9.05338 25.7574L9.04925 25.7584ZM14.752 34.761C14.752 34.6081 14.7448 34.4841 14.752 34.3612C14.7603 34.263 14.7221 34.2465 14.6332 34.2475C14.2541 34.2475 13.8739 34.2527 13.4968 34.2475C13.4059 34.2475 13.3801 34.2672 13.3801 34.3622C13.3801 36.0765 13.3801 37.7904 13.3801 39.504C13.3801 39.6073 13.4111 39.6166 13.4978 39.6156C13.8656 39.6104 14.2334 39.6084 14.6002 39.6156C14.719 39.6156 14.7582 39.596 14.7572 39.4658C14.75 38.4905 14.7644 37.5163 14.7459 36.541C14.7395 36.4206 14.7631 36.3006 14.8145 36.1915C14.8659 36.0824 14.9434 35.9878 15.0403 35.916C15.1035 35.8633 15.1705 35.8153 15.2407 35.7724C15.6405 35.5348 16.0672 35.5255 16.5104 35.6123C16.6003 35.6309 16.6323 35.6257 16.6303 35.5214C16.6241 35.1205 16.6241 34.72 16.6303 34.3198C16.6303 34.2269 16.5931 34.201 16.5145 34.1835C16.1414 34.1003 15.7513 34.1406 15.4029 34.2981C15.1617 34.4125 14.9427 34.5689 14.7562 34.7599L14.752 34.761ZM23.3951 36.9357C23.3951 37.7939 23.3951 38.6524 23.3951 39.5112C23.3951 39.5867 23.4075 39.6146 23.4984 39.6146C23.8941 39.6094 24.2908 39.6094 24.6865 39.6146C24.7733 39.6146 24.7898 39.5846 24.7898 39.5112C24.7898 37.7956 24.7898 36.0789 24.7898 34.3612C24.7898 34.2579 24.7567 34.2475 24.67 34.2486C24.2898 34.2486 23.9106 34.2537 23.5335 34.2486C23.4302 34.2486 23.4034 34.2713 23.4034 34.3767C23.4013 35.2259 23.3992 36.0803 23.3992 36.9347L23.3951 36.9357ZM23.1967 32.5109C23.1965 32.7441 23.2886 32.968 23.453 33.1336C23.6173 33.2991 23.8406 33.3928 24.0738 33.3942C24.1942 33.4028 24.315 33.3867 24.4289 33.3467C24.5427 33.3067 24.6471 33.2437 24.7356 33.1617C24.8241 33.0796 24.8948 32.9803 24.9432 32.8698C24.9917 32.7593 25.0169 32.64 25.0174 32.5193C25.0178 32.3987 24.9934 32.2792 24.9457 32.1684C24.898 32.0575 24.8281 31.9577 24.7402 31.875C24.6523 31.7924 24.5483 31.7287 24.4347 31.6879C24.3212 31.6471 24.2005 31.63 24.08 31.6379C23.8484 31.6387 23.6263 31.7306 23.4618 31.8937C23.2973 32.0569 23.2036 32.2782 23.2009 32.5098L23.1967 32.5109ZM26.5203 10.4125C26.5761 10.4373 26.6163 10.4125 26.6577 10.396C26.9872 10.3092 27.3178 10.2534 27.6567 10.3423C27.7672 10.3712 27.7786 10.3981 27.7052 10.4879C27.646 10.557 27.5732 10.6133 27.4914 10.6532C27.3554 10.7334 27.2265 10.825 27.106 10.927C27.0275 10.988 26.9945 11.0923 26.8643 11.0686C26.8323 11.0624 26.7827 11.0686 26.7734 11.1119C26.7641 11.1553 26.8137 11.1574 26.8333 11.1812C26.9469 11.3134 27.1525 11.2204 27.2703 11.3609C27.2899 11.3847 27.3426 11.3857 27.3416 11.4415C27.3436 11.4668 27.3355 11.4919 27.319 11.5113C27.3026 11.5307 27.2791 11.5427 27.2538 11.5448C27.1897 11.5562 27.1246 11.5613 27.0472 11.5717C27.1803 11.6154 27.3214 11.6288 27.4604 11.6109C27.7145 11.5975 27.7393 11.5665 27.7331 11.3144C27.7279 11.2861 27.7279 11.257 27.7331 11.2287C27.7662 11.1254 27.698 11.0097 27.8034 10.9187C27.8523 10.8821 27.9072 10.8542 27.9656 10.8361C28.0214 10.8154 28.0689 10.7731 28.009 10.7183C27.9491 10.6636 27.9759 10.6284 28.0265 10.5871C28.1185 10.5223 28.1853 10.4278 28.2156 10.3195C28.2311 10.2493 28.227 10.1759 28.1557 10.1501C27.9994 10.0761 27.8295 10.0353 27.6567 10.0303C27.3345 10.054 27.0193 10.1367 26.7269 10.2741C26.6515 10.307 26.5828 10.3536 26.5244 10.4115L26.5203 10.4125Z" fill="#FEFEFE"/> +<path d="M15.0692 17.2044L14.9328 17.2881C14.8161 17.3594 14.69 17.4131 14.6652 17.5805C14.6346 17.6692 14.5896 17.7523 14.532 17.8263C14.753 17.8615 14.7716 17.5928 14.9535 17.5856C14.9538 17.6303 14.9421 17.6742 14.9196 17.7128C14.897 17.7513 14.8645 17.7831 14.8254 17.8046C14.6468 17.892 14.5082 18.0443 14.4379 18.2303C14.3865 18.3409 14.322 18.4449 14.2458 18.5402C14.3098 18.5681 14.3367 18.5258 14.3656 18.4968C14.5761 18.2761 14.806 18.0749 15.0527 17.8956C15.3492 17.6827 15.6043 17.4038 15.9907 17.3294C16.4525 17.2406 16.9071 17.1145 17.3834 17.1434C17.595 17.1608 17.8069 17.1144 17.9919 17.0102C18.1024 16.9451 18.2274 16.9719 18.3349 16.9203C18.4956 16.8359 18.6488 16.7378 18.7925 16.6269C18.9177 16.5324 19.0512 16.4494 19.1913 16.3789C19.2636 16.3459 19.3328 16.2963 19.4227 16.3438C19.4713 16.3696 19.5043 16.319 19.5384 16.2911C19.712 16.1444 19.8814 15.9926 20.1139 15.943C20.1257 15.9389 20.1378 15.9358 20.15 15.9337C20.2265 15.9337 20.3308 15.8768 20.3701 15.9771C20.4021 16.0597 20.2874 16.069 20.2441 16.1155C20.2007 16.162 20.15 16.1909 20.1097 16.2395C20.2596 16.2395 20.337 16.1 20.4682 16.0607C20.4742 16.0833 20.4724 16.1073 20.463 16.1286C20.4536 16.15 20.4372 16.1676 20.4166 16.1785C19.9849 16.5054 19.5958 16.8851 19.2585 17.3087C18.8153 17.8594 18.2429 18.2148 17.6137 18.503C17.124 18.7272 16.6375 18.9617 16.1529 19.1983C16.0006 19.2718 15.8544 19.3575 15.7159 19.4545C15.6283 19.5147 15.5235 19.5448 15.4173 19.5403C11.1031 19.5403 6.78807 19.5403 2.47241 19.5403C2.3505 19.5403 2.31641 19.5155 2.31641 19.3863C2.31641 14.645 2.31641 9.90406 2.31641 5.16344C2.31641 5.0436 2.3381 5.00537 2.46931 5.00537C8.60463 5.00537 14.7406 5.00537 20.8774 5.00537H21.0065C20.7286 5.13141 20.4527 5.24505 20.18 5.36593C19.6015 5.62214 19.2419 6.07361 19.0115 6.64596C19.0007 6.68521 18.977 6.71973 18.9444 6.7441C18.6272 6.95073 18.4185 7.2524 18.2336 7.5706C18.09 7.82061 17.9464 8.07062 17.808 8.32374C17.6241 8.66157 17.653 9.01696 17.7346 9.37235C17.8441 9.85068 17.902 10.3393 18.0446 10.8104C18.0589 10.8836 18.0655 10.958 18.0642 11.0326C18.0883 11.1941 18.1408 11.3501 18.2191 11.4933C18.27 11.576 18.3099 11.6649 18.338 11.7578C18.3539 11.8089 18.384 11.8544 18.4247 11.889C18.6023 12.0736 18.7624 12.2742 18.9031 12.4882C18.9361 12.545 19.0064 12.6081 18.9537 12.6763C18.901 12.7444 18.8235 12.7062 18.7543 12.6969C18.5576 12.6616 18.377 12.5655 18.2377 12.4221C18.1231 12.3188 18.0125 12.2072 17.8937 12.0936C17.8576 12.1587 17.8999 12.1886 17.9268 12.2186C18.0094 12.3105 18.0962 12.3994 18.1768 12.4934C18.2021 12.5154 18.2195 12.5451 18.2264 12.5779C18.2333 12.6107 18.2293 12.6449 18.215 12.6752C18.1758 12.7434 18.1055 12.7382 18.0373 12.7258H18.0136C17.8276 12.6948 17.8131 12.7062 17.7945 12.9035C17.6676 12.8546 17.5329 12.8287 17.3968 12.8271C17.359 12.8265 17.322 12.8159 17.2896 12.7965C17.2571 12.7771 17.2303 12.7495 17.2119 12.7165C17.1848 12.6681 17.1466 12.6269 17.1005 12.5961C17.0543 12.5654 17.0015 12.5461 16.9464 12.5399C16.2909 12.3895 15.6225 12.3027 14.9504 12.2806C14.6814 12.2616 14.4121 12.3117 14.168 12.4262C13.9238 12.5406 13.7131 12.7156 13.5557 12.9345C13.5267 12.9728 13.471 13.0141 13.5092 13.0606C13.5474 13.1071 13.6022 13.0792 13.6466 13.0533C14.2189 12.7217 14.8636 12.6401 15.4959 12.5172C15.5934 12.5004 15.6926 12.4956 15.7913 12.5027C15.7924 12.5102 15.7924 12.5179 15.7913 12.5254C15.5379 12.5599 15.2887 12.6201 15.0475 12.7052C14.7654 12.7971 14.4741 12.8519 14.1859 12.9221C14.069 12.9494 13.9561 12.9918 13.8501 13.0482C14.1011 13.0424 14.3522 13.0507 14.6022 13.073C15.2686 13.1525 15.9225 13.2734 16.5155 13.6133C16.5982 13.6596 16.6748 13.7158 16.7439 13.7807C16.8193 13.8568 16.9133 13.912 17.0165 13.941C17.1197 13.97 17.2287 13.9717 17.3327 13.946C17.5232 13.914 17.7116 13.8705 17.8968 13.8158C18.1493 13.7504 18.3829 13.6265 18.5787 13.4542C18.5983 13.4346 18.6179 13.4098 18.652 13.4304C18.6861 13.4511 18.6717 13.4821 18.6634 13.5069C18.6055 13.699 18.5849 13.9026 18.4619 14.0741C18.403 14.1567 18.4464 14.2352 18.5652 14.2807C18.4712 14.3272 18.3648 14.3251 18.2884 14.3902C18.2656 14.4098 18.1851 14.4232 18.2574 14.4821C18.2677 14.4894 18.2687 14.508 18.2574 14.509C18.1468 14.5193 18.1541 14.6051 18.1313 14.6826C18.1179 14.7301 18.028 14.7208 17.9981 14.7859C18.0435 14.8406 18.1096 14.7962 18.1778 14.82C17.9487 14.9381 17.7123 15.0416 17.4701 15.1299C17.4257 15.1433 17.3844 15.1578 17.3978 15.2094C17.4113 15.2611 17.4608 15.2187 17.4939 15.2322C17.4867 15.2756 17.4433 15.2787 17.4154 15.2952C17.1416 15.4481 16.8658 15.5958 16.5941 15.7508C16.5031 15.8025 16.3874 15.8314 16.3533 15.9492C16.343 15.9781 16.312 15.9709 16.2883 15.9698C16.1849 15.9698 16.1849 16.0618 16.1849 16.1083C16.1973 16.1868 16.2686 16.1382 16.3162 16.13C16.3874 16.1186 16.4577 16.0597 16.5527 16.1393C16.3461 16.164 16.2211 16.3025 16.0734 16.4234C16.531 16.3676 16.9887 16.3851 17.4267 16.2601C17.9908 16.1 18.4599 15.7684 18.8803 15.3747C18.9 15.3534 18.9207 15.3331 18.9423 15.3138C18.9857 15.2797 19.0291 15.1888 19.0684 15.2177C19.1262 15.2632 19.0684 15.3376 19.0394 15.3944C18.9444 15.6068 18.7865 15.785 18.5869 15.9047C18.4578 15.9864 18.3349 16.0783 18.214 16.1682C17.933 16.3748 17.6065 16.4347 17.2842 16.4967C16.7821 16.5918 16.2707 16.629 15.7758 16.7674C15.4798 16.8432 15.1999 16.9716 14.9493 17.1465C14.876 17.2003 14.7727 17.1744 14.7117 17.2499C14.6931 17.2736 14.6446 17.287 14.6683 17.3253C14.6921 17.3635 14.7293 17.3459 14.7592 17.3253C14.8476 17.265 14.9426 17.2151 15.0423 17.1765L15.0692 17.2044ZM13.9885 15.4295C14.0318 15.4482 14.0783 15.4578 14.1254 15.4578C14.1725 15.4578 14.2191 15.4482 14.2623 15.4295C14.4534 15.3634 14.6404 15.2745 14.8522 15.2942C14.8728 15.2929 14.893 15.2884 14.9121 15.2807C15.1446 15.2291 15.3791 15.1774 15.6105 15.1237C15.9963 15.0323 16.3706 14.8979 16.7263 14.7229C16.0341 14.198 15.219 14.0141 14.4173 13.7807C14.439 13.7579 14.4834 13.7724 14.4834 13.7383C14.4834 13.7042 14.4462 13.698 14.4225 13.6918C14.3501 13.6732 14.2768 13.6618 14.2055 13.6453C14.1817 13.6453 14.1352 13.6453 14.1414 13.6236C14.1797 13.5038 14.0691 13.5306 14.0278 13.5203C13.8728 13.4759 13.7127 13.447 13.5402 13.4098C13.6239 13.3664 13.692 13.3271 13.7189 13.2465C13.7334 13.2052 13.7633 13.1587 13.7189 13.1226C13.6745 13.0864 13.6424 13.1226 13.6063 13.1412C13.4019 13.2618 13.235 13.4367 13.1238 13.6463C13.0722 13.7362 12.9627 13.853 13.0133 13.9284C13.0639 14.0038 13.2199 13.9904 13.3377 13.9893C13.4142 13.9762 13.4927 13.979 13.5681 13.9976C13.5263 14.0372 13.4732 14.0628 13.4162 14.071C13.3385 14.0798 13.2624 14.0993 13.1899 14.1288C13.1228 14.1681 13.0804 14.2125 13.1713 14.2755C13.1197 14.3096 13.0556 14.3158 13.0288 14.3788C13.0533 14.3979 13.082 14.4109 13.1126 14.4166C13.1431 14.4224 13.1746 14.4208 13.2044 14.4119C13.2423 14.3971 13.2844 14.3968 13.3225 14.4111C13.3607 14.4254 13.3922 14.4533 13.411 14.4894C13.1631 14.5927 13.1083 14.884 12.8945 15.0194C12.8897 15.0234 12.8858 15.0284 12.8833 15.0342C12.8808 15.0399 12.8797 15.0462 12.88 15.0524C12.8903 15.1227 12.8418 15.1557 12.7963 15.1898C12.6383 15.3159 12.4864 15.4553 12.3211 15.5669C12.1558 15.6785 12.131 15.9233 11.9492 16.0318C11.9426 16.035 11.9367 16.0395 11.9319 16.045C11.9271 16.0505 11.9235 16.0569 11.9213 16.0639C11.919 16.0708 11.9183 16.0782 11.919 16.0855C11.9197 16.0927 11.9219 16.0998 11.9254 16.1062C11.9492 16.1403 11.9781 16.1145 12.0029 16.1062C12.0602 16.0834 12.1161 16.0572 12.1703 16.0277C12.4432 15.8557 12.7272 15.7022 13.0205 15.5679C13.3521 15.4274 13.6693 15.2776 14.0402 15.3541C14.0464 15.3573 14.0519 15.3615 14.0567 15.3665C14.0536 15.4078 13.9968 15.384 13.9885 15.4295ZM14.3636 11.8518C14.2321 11.7944 14.0892 11.768 13.9459 11.7747C13.8026 11.7813 13.6627 11.8208 13.5371 11.8901C13.0242 12.1841 12.5618 12.5584 12.1672 12.9986C11.9132 13.2872 11.6197 13.5383 11.2952 13.7445C11.2311 13.781 11.1795 13.8361 11.1475 13.9026C10.9297 14.3288 10.6753 14.7353 10.3871 15.1175C10.3654 15.1464 10.321 15.1692 10.3365 15.2208C10.384 15.227 10.3974 15.1867 10.4191 15.1619C10.696 14.852 10.9749 14.5514 11.2756 14.2683C11.6134 13.9466 11.9808 13.6575 12.3727 13.4046C12.4151 13.3767 12.4482 13.3653 12.4854 13.4046C12.5226 13.4439 12.4606 13.4573 12.4523 13.4852C12.444 13.5131 12.4275 13.5193 12.4203 13.5379C12.413 13.5565 12.3655 13.6092 12.3975 13.635C12.4296 13.6608 12.4792 13.6236 12.5091 13.5906C12.5226 13.5751 12.5288 13.5523 12.5442 13.5389C12.6011 13.4872 12.5907 13.3839 12.6414 13.3509C12.8346 13.2228 12.9348 13.0306 13.035 12.8343C13.1131 12.6716 13.223 12.5261 13.3583 12.4066C13.5577 12.2403 13.7809 12.1049 13.972 11.9179C13.9916 11.9582 13.9875 12.0285 14.0412 11.9985C14.1414 11.9458 14.2664 11.9479 14.3636 11.8518ZM14.1032 16.8965C13.9204 16.8097 13.754 16.8666 13.5991 16.8294C13.5292 16.8152 13.4566 16.8243 13.3924 16.8552C13.2753 16.9076 13.1521 16.9451 13.0257 16.9668C12.6642 17.0251 12.3369 17.2145 12.1062 17.4988C12.0783 17.5309 11.913 17.565 12.0711 17.6528C12.0711 17.6528 12.0597 17.6827 12.0576 17.6982C12.0427 17.8051 12.0007 17.9065 11.9357 17.9927C11.8562 18.1022 11.7725 18.2096 11.6868 18.316C11.6568 18.3543 11.6403 18.3914 11.6868 18.4193C11.7333 18.4472 11.7364 18.3956 11.757 18.3749C11.8841 18.2509 11.9729 18.065 12.1971 18.0908C12.2116 18.0908 12.2302 18.0681 12.2446 18.0536C12.3972 17.8793 12.5891 17.744 12.8046 17.659C13.2705 17.4895 13.6321 17.1269 14.1032 16.8965ZM15.0991 15.6878C14.9617 15.5845 14.8295 15.5514 14.6859 15.6537C14.6423 15.6759 14.5956 15.6916 14.5475 15.7002C14.5079 15.7113 14.4721 15.7331 14.4441 15.7632C14.4266 15.7849 14.3997 15.8107 14.4183 15.8386C14.4369 15.8665 14.4627 15.8541 14.4855 15.851C14.6466 15.8262 14.8078 15.8025 14.9679 15.7725C15.0211 15.7625 15.0682 15.7321 15.0991 15.6878ZM13.8852 17.5402C13.8852 17.5247 13.8666 17.5174 13.8449 17.5143C13.8205 17.5113 13.7957 17.5145 13.7728 17.5235C13.7499 17.5325 13.7296 17.5471 13.7137 17.566C13.6239 17.6548 13.5309 17.7406 13.441 17.8305C13.4183 17.8532 13.3614 17.8728 13.3966 17.9131C13.404 17.9205 13.4127 17.9264 13.4224 17.9304C13.4321 17.9344 13.4424 17.9365 13.4529 17.9365C13.4633 17.9365 13.4737 17.9344 13.4833 17.9304C13.493 17.9264 13.5018 17.9205 13.5092 17.9131C13.5747 17.8515 13.6525 17.8043 13.7375 17.7747C13.8367 17.7303 13.847 17.6331 13.8852 17.5402Z" fill="#273375"/> +<path d="M28.5506 14.1678C28.6539 14.1017 28.7438 14.0552 28.8213 13.9963C28.967 13.8868 28.9845 13.7794 28.8936 13.6203L28.8678 13.5779C28.7397 13.3413 28.7139 13.1554 29.0817 13.081C29.1137 13.0738 29.1457 13.0655 29.1767 13.0562C29.4525 12.9746 29.5466 12.7907 29.4288 12.5273C29.2901 12.2603 29.1279 12.0062 28.9443 11.7679C28.8306 11.6005 28.717 11.4342 28.6147 11.2596C28.4927 11.0657 28.4512 10.8318 28.499 10.6077C28.5909 10.1769 28.5072 9.75334 28.3957 9.33803C28.3089 9.02086 28.2076 8.70679 28.1095 8.39273C28.0862 8.33109 28.0575 8.27163 28.0237 8.21503C28.008 8.1945 27.9969 8.17083 27.9912 8.14562C27.9855 8.12042 27.9853 8.09427 27.9906 8.06898C27.9959 8.04368 28.0066 8.01982 28.0219 7.99902C28.0373 7.97823 28.0569 7.96099 28.0795 7.94849C28.1508 7.8927 28.2231 7.83691 28.2862 7.77492C28.3172 7.74612 28.3413 7.71067 28.3568 7.67123C28.3722 7.63179 28.3785 7.58937 28.3752 7.54715C28.3719 7.50492 28.3592 7.46399 28.3378 7.4274C28.3165 7.39081 28.2872 7.35951 28.2521 7.33585C28.2393 7.32335 28.2237 7.31418 28.2065 7.30918C28.1894 7.30418 28.1713 7.30348 28.1538 7.30716C28.1363 7.31084 28.12 7.31878 28.1063 7.33027C28.0927 7.34177 28.082 7.35646 28.0754 7.37304C28.0494 7.43364 28.0146 7.49004 27.9721 7.54041C27.9572 7.5581 27.936 7.56921 27.913 7.57134C27.8899 7.57347 27.867 7.56644 27.8491 7.55177C27.8161 7.52284 27.8491 7.48462 27.8677 7.45362C27.9483 7.33998 27.9483 7.34101 27.812 7.31415C27.7811 7.31255 27.7509 7.30466 27.7232 7.29099C27.6955 7.27731 27.6708 7.25812 27.6508 7.2346C27.4233 6.93841 27.1188 6.7104 26.7706 6.57548C26.7553 6.56894 26.7404 6.56134 26.7262 6.55275C26.7262 6.55275 26.7262 6.54552 26.7262 6.53002C26.7954 6.53622 26.8615 6.54138 26.9328 6.54861C27.0435 6.56203 27.1553 6.5641 27.2665 6.55481C27.3579 6.55452 27.4466 6.52394 27.5187 6.46786C27.5909 6.41178 27.6424 6.33336 27.6653 6.24488C27.7624 5.91945 27.7107 5.72832 27.4359 5.5C27.2241 5.32334 26.97 5.22209 26.7344 5.08676L26.6249 5.0258C26.6675 5.00278 26.7169 4.99546 26.7644 5.00514C31.7922 5.00514 36.82 5.00514 41.8479 5.00514C41.9625 5.00514 41.9997 5.02684 41.9997 5.15081C41.9997 9.90314 41.9997 14.6524 41.9997 19.3985C41.9997 19.5152 41.9656 19.539 41.8551 19.539C36.8886 19.5363 31.9258 19.5349 26.9669 19.5349C26.8943 19.5347 26.823 19.5155 26.7602 19.4791C26.2003 19.1692 25.597 18.9563 24.9947 18.7445C24.9613 18.7296 24.9267 18.7175 24.8913 18.7084C24.663 18.6733 24.5907 18.51 24.5752 18.3117C24.5008 17.3953 24.8118 16.636 25.5257 16.0533C25.6951 15.9315 25.9044 15.8784 26.1114 15.9045C26.4999 15.9272 26.877 16.0264 27.2603 16.0781C27.3636 16.0915 27.4597 16.1277 27.5588 16.1473C27.6927 16.1762 27.8311 16.1765 27.965 16.148C28.0989 16.1195 28.2253 16.0629 28.3357 15.982C28.4618 15.876 28.5504 15.7324 28.5885 15.5722C28.6267 15.412 28.6123 15.2439 28.5475 15.0925C28.521 15.0498 28.5115 14.9987 28.5209 14.9493C28.5303 14.9 28.5578 14.8559 28.5982 14.8259C28.6591 14.7722 28.7242 14.7226 28.7872 14.6668C28.822 14.6375 28.8451 14.5967 28.8525 14.5518C28.8599 14.507 28.851 14.4609 28.8275 14.422C28.8072 14.3594 28.771 14.3031 28.7225 14.2585C28.674 14.214 28.6148 14.1828 28.5506 14.1678Z" fill="#E20613"/> +<path d="M32.7913 28.2129C32.2097 28.2129 31.627 28.2129 31.0453 28.2129C30.942 28.2129 30.9327 28.2336 30.9493 28.3296C31.0732 29.0879 31.6208 29.5756 32.3956 29.6066C32.906 29.6262 33.3688 29.5105 33.7387 29.1334C33.8895 28.9795 33.8895 28.9784 34.0589 29.1158C34.2893 29.3028 34.5176 29.495 34.7532 29.6748C34.8379 29.7398 34.8204 29.7781 34.7635 29.8483C34.3204 30.3702 33.6971 30.7062 33.0176 30.7895C32.3223 30.8866 31.6415 30.8215 31.0061 30.494C30.193 30.0746 29.7292 29.3917 29.5742 28.5032C29.4206 27.7334 29.5618 26.934 29.9699 26.2634C30.3924 25.5733 31.0268 25.1931 31.8202 25.0733C32.4029 24.9854 32.9752 25.0257 33.5073 25.3026C34.1974 25.6621 34.5765 26.2479 34.6964 27.0083C34.7499 27.3724 34.7422 27.7429 34.6736 28.1044C34.6592 28.185 34.6282 28.2181 34.5373 28.217C33.9556 28.2067 33.373 28.2129 32.7913 28.2129ZM32.1962 27.1054C32.563 27.1054 32.9308 27.1054 33.2975 27.1054C33.3688 27.1054 33.3885 27.0899 33.374 27.0145C33.3357 26.7888 33.2168 26.5846 33.0393 26.4401C32.7603 26.2128 32.4318 26.1632 32.0847 26.1828C31.8482 26.1938 31.6209 26.2775 31.4338 26.4225C31.2467 26.5674 31.1089 26.7666 31.0392 26.9928C31.0133 27.0744 31.0185 27.1085 31.1187 27.1064C31.4782 27.0992 31.8367 27.1023 32.1962 27.1023V27.1054Z" fill="#273375"/> +<path d="M35.0812 37.2087C34.4944 37.2087 33.9086 37.2087 33.3249 37.2087C33.2299 37.2087 33.2133 37.2273 33.2278 37.3244C33.3611 38.1788 34.0109 38.653 34.9138 38.6075C35.3963 38.5827 35.8127 38.4112 36.1185 38.0197C36.1474 37.9825 36.167 37.9763 36.2063 38.0083C36.4935 38.2438 36.7817 38.4777 37.071 38.7098C37.1371 38.7625 37.0896 38.7935 37.0596 38.8286C36.6957 39.2784 36.1916 39.5934 35.6277 39.7233C34.7031 39.9423 33.8125 39.8627 33.0047 39.3286C32.2939 38.8544 31.925 38.1664 31.8269 37.3357C31.7286 36.652 31.8583 35.9549 32.1957 35.3522C32.6358 34.5784 33.3198 34.1703 34.1927 34.0618C34.7218 33.9792 35.2634 34.0573 35.7476 34.286C36.4553 34.6383 36.8437 35.2261 36.9708 35.9948C37.0256 36.3544 37.0203 36.7206 36.9553 37.0785C36.9388 37.1756 36.9098 37.2138 36.8003 37.2128C36.229 37.2014 35.6546 37.2087 35.0812 37.2087ZM33.2939 36.1146C34.0646 36.1146 34.8271 36.1146 35.5895 36.1146C35.6701 36.1146 35.6629 36.0774 35.6525 36.0226C35.6304 35.8837 35.5774 35.7514 35.4975 35.6356C35.4176 35.5197 35.3128 35.4233 35.1907 35.3532C34.9515 35.22 34.6786 35.1596 34.4056 35.1796C34.141 35.184 33.8861 35.2793 33.6836 35.4496C33.4811 35.6199 33.3435 35.8547 33.2939 36.1146Z" fill="#E20714"/> +<path d="M10.3832 37.2086C9.80463 37.2086 9.22712 37.2086 8.64857 37.2086C8.5339 37.2086 8.52667 37.2448 8.54526 37.3419C8.69816 38.2345 9.38415 38.6478 10.2303 38.6054C10.7127 38.5796 11.1291 38.407 11.4339 38.0145C11.4659 37.9721 11.4876 37.9804 11.5217 38.0083C11.8068 38.2417 12.0899 38.4752 12.3781 38.7025C12.4504 38.7593 12.4029 38.7914 12.3719 38.8296C12.0647 39.2117 11.6524 39.4958 11.1859 39.6468C10.1838 39.9639 9.21059 39.9071 8.31488 39.3234C7.62063 38.8709 7.258 38.187 7.14952 37.3822C7.0459 36.7203 7.15439 36.0426 7.45946 35.4461C7.88923 34.6196 8.58659 34.1795 9.49883 34.0628C10.0322 33.9768 10.5792 34.055 11.0671 34.287C11.7903 34.6506 12.1777 35.2581 12.2944 36.0433C12.3377 36.3795 12.3318 36.7202 12.2769 37.0547C12.2593 37.1787 12.2108 37.2107 12.0888 37.2086C11.5227 37.2014 10.9535 37.2086 10.3832 37.2086ZM9.7974 36.1146C10.16 36.1146 10.5206 36.1146 10.8853 36.1146C10.9659 36.1146 10.9824 36.096 10.9679 36.0164C10.931 35.7862 10.809 35.5782 10.626 35.4337C10.3686 35.2429 10.0506 35.1521 9.73128 35.1786C9.48387 35.1811 9.24376 35.2627 9.046 35.4114C8.84824 35.5601 8.7032 35.7681 8.63204 36.005C8.60622 36.0867 8.60828 36.1177 8.70953 36.1156C9.07215 36.1115 9.43477 36.1146 9.7974 36.1146Z" fill="#E20714"/> +<path d="M2.31973 26.8832C2.31973 25.6859 2.31973 24.4885 2.31973 23.2911C2.31973 23.1826 2.34453 23.1558 2.45404 23.1558C3.81637 23.1599 5.17871 23.1599 6.54104 23.1558C6.64435 23.1558 6.67018 23.1826 6.66915 23.2849C6.66192 23.661 6.66295 24.036 6.66915 24.412C6.66915 24.5102 6.64229 24.536 6.54518 24.535C5.68666 24.535 4.82814 24.535 3.96962 24.535C3.86631 24.535 3.83015 24.5587 3.83221 24.6703C3.83945 25.1156 3.83841 25.5619 3.83221 26.0072C3.83221 26.1105 3.86527 26.1353 3.96445 26.1342C4.68763 26.1342 5.40152 26.1342 6.11953 26.1342C6.22284 26.1342 6.24247 26.1601 6.24041 26.2561C6.23524 26.6363 6.23524 27.0155 6.24041 27.3926C6.24041 27.4886 6.21148 27.5062 6.12263 27.5062C5.39945 27.5062 4.67627 27.5062 3.95309 27.5062C3.85598 27.5062 3.82911 27.531 3.83015 27.6292C3.83015 28.5827 3.83015 29.5363 3.83015 30.4898C3.83015 30.5994 3.80329 30.6273 3.69378 30.6252C3.28053 30.618 2.86005 30.619 2.44267 30.6252C2.33936 30.6252 2.3125 30.6004 2.3125 30.496C2.32076 29.2852 2.31973 28.0837 2.31973 26.8832Z" fill="#273375"/> +<path d="M14.8272 30.1221C14.5033 30.4978 14.0502 30.7382 13.5575 30.7957C12.9066 30.8711 12.3043 30.7544 11.8746 30.2089C11.2475 29.4123 11.5202 28.2914 12.4386 27.8141C12.7886 27.6474 13.1633 27.5389 13.5482 27.4928C13.947 27.4288 14.3447 27.3575 14.7446 27.2955C14.8158 27.2841 14.8272 27.2562 14.8282 27.1922C14.8437 26.564 14.385 26.1591 13.7187 26.2179C13.5203 26.2291 13.3271 26.2861 13.1545 26.3845C12.9819 26.4829 12.8344 26.6201 12.7238 26.7851C12.6804 26.8471 12.6556 26.8574 12.5926 26.8079C12.3102 26.5868 12.0254 26.3684 11.7382 26.1529C11.6793 26.1084 11.67 26.0805 11.7206 26.0186C11.9492 25.7348 12.2339 25.5013 12.5569 25.3328C12.88 25.1643 13.2343 25.0643 13.5978 25.0392C14.0712 24.9834 14.5511 25.0499 14.9915 25.2324C15.7735 25.5733 16.1672 26.1932 16.1837 27.0279C16.2074 28.1829 16.1837 29.34 16.1919 30.4961C16.1919 30.5901 16.1682 30.6128 16.0762 30.6118C15.6919 30.6056 15.3076 30.6118 14.9243 30.6118C14.8499 30.6118 14.821 30.5963 14.821 30.5167C14.8324 30.3969 14.8272 30.2729 14.8272 30.1221ZM14.8272 28.6344C14.8272 28.5611 14.822 28.4856 14.8272 28.4123C14.8365 28.3234 14.8076 28.3007 14.7187 28.3162C14.4274 28.371 14.135 28.4195 13.8426 28.467C13.609 28.4897 13.3809 28.5519 13.168 28.6509C13.069 28.6992 12.9876 28.7773 12.9351 28.8742C12.8827 28.9711 12.8619 29.0819 12.8756 29.1913C12.8855 29.3055 12.9337 29.413 13.0125 29.4963C13.0913 29.5796 13.196 29.6338 13.3096 29.65C13.5246 29.6932 13.7469 29.684 13.9576 29.6232C14.1683 29.5624 14.3614 29.4518 14.5204 29.3008C14.7208 29.1251 14.9016 28.9361 14.8272 28.6344Z" fill="#273375"/> +<path d="M18.9602 25.6374C19.2228 25.3812 19.5481 25.1985 19.9034 25.1074C20.6855 24.9307 21.4076 25.0309 21.9965 25.624C22.3664 25.9979 22.5203 26.4732 22.5813 26.9846C22.6107 27.3467 22.619 27.7103 22.6061 28.0735C22.6061 28.8783 22.6061 29.6841 22.6061 30.4889C22.6061 30.586 22.5823 30.6129 22.4841 30.6118C22.1081 30.6056 21.7331 30.6056 21.357 30.6118C21.2537 30.6118 21.2341 30.585 21.2341 30.4889C21.2341 29.4847 21.2341 28.4815 21.2341 27.4784C21.2365 27.3087 21.211 27.1398 21.1587 26.9784C20.9913 26.4835 20.5212 26.2211 19.9768 26.3099C19.516 26.3864 19.2112 26.6684 18.9788 27.0497C18.9562 27.0983 18.9483 27.1525 18.9561 27.2056C18.9561 28.2966 18.9561 29.3866 18.9561 30.4765C18.9561 30.5881 18.9271 30.6139 18.8197 30.6118C18.4354 30.6046 18.0511 30.6118 17.6678 30.6118C17.5944 30.6118 17.5645 30.5984 17.5645 30.5178C17.5645 28.7877 17.5645 27.0572 17.5645 25.3264C17.5645 25.2593 17.5779 25.2345 17.6512 25.2355C18.0562 25.2355 18.4602 25.2355 18.8651 25.2355C18.9282 25.2355 18.954 25.251 18.9509 25.3181C18.9561 25.4153 18.9602 25.5093 18.9602 25.6374Z" fill="#273375"/> +<path d="M25.9014 36.9468C25.9014 35.674 26.5915 34.6203 27.7104 34.2328C28.7487 33.8733 29.7466 33.9622 30.6558 34.6306C30.8086 34.7493 30.9473 34.8852 31.069 35.0356C31.1114 35.0852 31.13 35.1172 31.0597 35.1688C30.7384 35.4065 30.4213 35.6513 30.1062 35.8972C30.0473 35.9437 30.0246 35.9313 29.9843 35.8786C29.5886 35.3724 29.0658 35.206 28.4553 35.362C27.8447 35.518 27.4655 35.9323 27.3426 36.5449C27.2062 37.2237 27.357 37.8322 27.9346 38.2672C28.2408 38.4996 28.6262 38.6022 29.0074 38.5527C29.3887 38.5032 29.7352 38.3056 29.9719 38.0027C30.0246 37.9376 30.0535 37.9252 30.1227 37.9799C30.4278 38.2196 30.7357 38.4555 31.0463 38.6876C31.1145 38.7383 31.1228 38.7672 31.0659 38.8354C30.838 39.1112 30.5577 39.3393 30.2412 39.5063C29.9246 39.6733 29.5782 39.776 29.2218 39.8086C28.51 39.8881 27.8292 39.7807 27.2124 39.3953C26.4479 38.9201 26.0419 38.2134 25.9221 37.3291C25.9045 37.2025 25.8976 37.0746 25.9014 36.9468Z" fill="#E20714"/> +<path d="M26.5 25.0269C27.4412 25.0434 28.1985 25.3306 28.7801 26.0166C28.838 26.0848 28.8462 26.1199 28.7667 26.1777C28.4567 26.4081 28.1468 26.6457 27.842 26.8823C27.7893 26.9226 27.7604 26.9423 27.7057 26.873C27.311 26.3668 26.7903 26.2025 26.1777 26.3565C25.5651 26.5104 25.189 26.9288 25.0661 27.5394C24.9297 28.2068 25.0764 28.8091 25.6374 29.2471C25.9434 29.4852 26.3313 29.5922 26.7161 29.5447C27.1009 29.4973 27.4511 29.2993 27.6902 28.994C27.7418 28.93 27.7718 28.9176 27.8431 28.9734C28.1468 29.213 28.4557 29.4486 28.7667 29.68C28.838 29.7327 28.8369 29.7647 28.7822 29.8308C28.541 30.1201 28.2427 30.3564 27.906 30.5251C27.5694 30.6938 27.2015 30.7912 26.8255 30.8113C26.2263 30.8729 25.6222 30.7576 25.0878 30.4796C24.7249 30.2926 24.41 30.0246 24.1673 29.6964C23.9245 29.3683 23.7605 28.9887 23.6879 28.587C23.5061 27.7006 23.6497 26.8699 24.1951 26.1333C24.6538 25.5135 25.2871 25.1829 26.0403 25.0682C26.2149 25.0424 26.3884 25.0362 26.5 25.0269Z" fill="#273375"/> +<path d="M19.843 38.0517C20.249 36.9318 20.6468 35.8336 21.0445 34.7343C21.0952 34.5948 21.1479 34.4564 21.1954 34.3159C21.1994 34.294 21.2118 34.2744 21.2299 34.2613C21.2479 34.2482 21.2704 34.2426 21.2925 34.2457C21.7223 34.2457 22.151 34.2457 22.5808 34.2457C22.7037 34.2457 22.6531 34.3087 22.6335 34.3624C22.2078 35.5333 21.7825 36.7058 21.3576 37.8802C21.1613 38.4215 20.9619 38.9629 20.7697 39.5063C20.7625 39.5415 20.7418 39.5725 20.7121 39.5927C20.6824 39.613 20.6461 39.6209 20.6106 39.6148C20.0941 39.6148 19.5703 39.6148 19.0506 39.6148C18.9763 39.6148 18.937 39.6024 18.9081 39.5228C18.2882 37.801 17.6642 36.0829 17.0361 34.3686C17.0009 34.2715 17.0092 34.2446 17.1197 34.2457C17.5196 34.2519 17.9204 34.2519 18.3202 34.2457C18.3597 34.2392 18.4001 34.2484 18.4331 34.2711C18.466 34.2938 18.4889 34.3284 18.4969 34.3676C18.9246 35.5522 19.3554 36.7358 19.7893 37.9184C19.8027 37.9556 19.8193 37.9928 19.843 38.0517Z" fill="#E20714"/> +<path d="M40.0441 34.0349C40.398 34.0336 40.7482 34.1065 41.0723 34.2488C41.3963 34.3912 41.6869 34.5999 41.9254 34.8614C41.9894 34.9317 41.9915 34.973 41.9192 35.0391C41.664 35.2747 41.414 35.5143 41.166 35.7561C41.1113 35.8098 41.0885 35.7974 41.0452 35.7458C40.821 35.4782 40.5658 35.255 40.2063 35.1941C40.0385 35.1637 39.8655 35.1854 39.7104 35.2561C39.6437 35.2804 39.5849 35.3226 39.5405 35.378C39.4961 35.4334 39.4677 35.4999 39.4585 35.5703C39.4492 35.6407 39.4594 35.7122 39.488 35.7772C39.5165 35.8422 39.5624 35.8982 39.6205 35.9389C39.7831 36.059 39.9628 36.1541 40.1536 36.221C40.5027 36.346 40.8396 36.503 41.1598 36.69C41.5276 36.9287 41.7921 37.2438 41.883 37.6818C42.0896 38.6591 41.5338 39.5466 40.5575 39.7584C39.5244 39.9815 38.6328 39.7047 37.9024 38.9319C37.8466 38.874 37.8384 38.8379 37.9024 38.7759C38.1545 38.5383 38.4028 38.2972 38.6473 38.0527C38.7124 37.9866 38.7413 37.9835 38.8023 38.0579C39.0057 38.3256 39.284 38.5269 39.6019 38.6364C39.8267 38.7136 40.0717 38.707 40.292 38.6178C40.5875 38.4928 40.7414 38.0537 40.3685 37.8027C40.1574 37.6739 39.9333 37.5676 39.7 37.4855C39.4302 37.3838 39.1693 37.2597 38.92 37.1146C38.3312 36.752 38.0625 36.222 38.1287 35.5402C38.1958 34.8418 38.6122 34.4037 39.2527 34.1692C39.506 34.0764 39.7743 34.0309 40.0441 34.0349Z" fill="#E20714"/> +<path d="M4.1941 34.0339C4.93277 34.0535 5.56814 34.3066 6.0754 34.8604C6.14565 34.9358 6.13945 34.9761 6.063 35.0453C5.81919 35.2671 5.58088 35.495 5.34809 35.7292C5.27164 35.8046 5.23754 35.7974 5.17142 35.7189C4.95654 35.4596 4.70342 35.2519 4.35836 35.1951C4.17825 35.16 3.99157 35.1877 3.82941 35.2736C3.77051 35.3002 3.71938 35.3413 3.68086 35.3932C3.64235 35.4451 3.61773 35.506 3.60935 35.57C3.60096 35.6341 3.60909 35.6992 3.63296 35.7593C3.65683 35.8193 3.69564 35.8723 3.74572 35.9131C3.87745 36.026 4.0287 36.1139 4.19203 36.1724C4.49473 36.3015 4.8119 36.4111 5.09807 36.566C5.52372 36.7923 5.86981 37.0919 6.00618 37.5754C6.24483 38.4184 5.89564 39.4784 4.72099 39.7532C3.67857 39.997 2.77356 39.7026 2.03488 38.9133C1.98633 38.8606 1.99046 38.8327 2.03488 38.7852C2.288 38.5434 2.54008 38.2986 2.78803 38.0506C2.85001 37.9886 2.88101 37.9773 2.94609 38.0506C3.18578 38.3368 3.46265 38.5672 3.84077 38.6571C4.01398 38.6992 4.19538 38.6935 4.36559 38.6405C4.46032 38.6156 4.54544 38.5629 4.61005 38.4893C4.67466 38.4157 4.7158 38.3244 4.72822 38.2273C4.75715 38.0207 4.6497 37.8884 4.4937 37.7841C4.27003 37.6522 4.03363 37.5431 3.78808 37.4586C3.42273 37.3282 3.0811 37.1391 2.77666 36.8987C2.02455 36.2561 2.01319 34.7477 3.26843 34.2126C3.56168 34.0909 3.87661 34.0301 4.1941 34.0339Z" fill="#E20714"/> +<path d="M9.05454 25.7576C9.25045 25.5537 9.4846 25.3905 9.74363 25.2772C10.0879 25.1314 10.4694 25.0985 10.8336 25.1832C10.9059 25.2007 10.9369 25.2245 10.9369 25.3051C10.9369 25.7183 10.9369 26.1316 10.9369 26.5448C10.9369 26.6171 10.9245 26.6337 10.847 26.6161C10.4771 26.5198 10.0864 26.5411 9.72916 26.6771C9.58392 26.7365 9.44953 26.8196 9.33141 26.9229C9.23905 26.9939 9.16518 27.086 9.11607 27.1916C9.06697 27.2972 9.04409 27.4131 9.04937 27.5294C9.06797 28.516 9.05557 29.5026 9.0597 30.4893C9.0597 30.5926 9.03594 30.6205 8.9316 30.6184C8.55141 30.6112 8.17226 30.6132 7.79517 30.6184C7.70942 30.6184 7.68359 30.5957 7.68359 30.5089C7.68359 28.787 7.68359 27.0652 7.68359 25.3433C7.68359 25.2607 7.70736 25.24 7.78691 25.24C8.17949 25.24 8.57104 25.24 8.96362 25.24C9.05144 25.24 9.06693 25.272 9.06177 25.3433C9.05144 25.4714 9.05454 25.5985 9.05454 25.7576Z" fill="#273375"/> +<path d="M14.7567 34.7598C14.9445 34.5684 15.1649 34.412 15.4076 34.298C15.756 34.1405 16.146 34.1002 16.5192 34.1834C16.5978 34.2009 16.636 34.2268 16.6349 34.3197C16.6274 34.7199 16.6274 35.1204 16.6349 35.5213C16.6349 35.6246 16.605 35.6308 16.5151 35.6122C16.075 35.5254 15.6452 35.5347 15.2454 35.7723C15.1752 35.8152 15.1082 35.8632 15.045 35.9159C14.9481 35.9877 14.8706 36.0823 14.8192 36.1914C14.7678 36.3005 14.7442 36.4205 14.7505 36.5409C14.7691 37.5162 14.7505 38.4904 14.7619 39.4657C14.7619 39.5959 14.7237 39.6176 14.6049 39.6155C14.2381 39.6072 13.8703 39.6093 13.5025 39.6155C13.4158 39.6155 13.3848 39.6021 13.3848 39.5039C13.3848 37.7903 13.3848 36.0764 13.3848 34.3621C13.3848 34.267 13.4106 34.2454 13.5015 34.2474C13.8817 34.2526 14.2619 34.2474 14.6379 34.2474C14.7268 34.2474 14.765 34.2629 14.7567 34.3611C14.7495 34.483 14.7567 34.6069 14.7567 34.7598Z" fill="#E20613"/> +<path d="M23.3989 36.9345C23.3989 36.0801 23.3989 35.2257 23.3989 34.3724C23.3989 34.269 23.4268 34.2422 23.5291 34.2442C23.9082 34.2504 24.2874 34.2494 24.6655 34.2442C24.7523 34.2442 24.7864 34.2587 24.7853 34.3569C24.7853 36.0739 24.7853 37.7906 24.7853 39.5069C24.7853 39.5834 24.7719 39.6103 24.682 39.6103C24.2863 39.6051 23.8896 39.6051 23.4939 39.6103C23.4082 39.6103 23.3906 39.5813 23.3906 39.5069C23.3975 38.6508 23.4003 37.7933 23.3989 36.9345Z" fill="#E20714"/> +<path d="M23.2012 32.5098C23.2028 32.2767 23.2966 32.0537 23.4621 31.8895C23.6276 31.7254 23.8514 31.6334 24.0845 31.6337C24.2049 31.6259 24.3256 31.6429 24.4392 31.6837C24.5527 31.7245 24.6567 31.7882 24.7446 31.8708C24.8325 31.9535 24.9025 32.0534 24.9501 32.1642C24.9978 32.275 25.0222 32.3945 25.0218 32.5152C25.0214 32.6358 24.9961 32.7551 24.9477 32.8656C24.8992 32.9761 24.8285 33.0755 24.7401 33.1575C24.6516 33.2395 24.5472 33.3025 24.4333 33.3425C24.3195 33.3825 24.1986 33.3987 24.0783 33.39C23.8455 33.3886 23.6228 33.2954 23.4585 33.1305C23.2942 32.9656 23.2017 32.7425 23.2012 32.5098Z" fill="#E20714"/> +<path d="M26.5254 10.4113C26.5854 10.3544 26.6555 10.3092 26.732 10.278C27.0244 10.1406 27.3396 10.058 27.6618 10.0342C27.8351 10.038 28.0057 10.0777 28.1629 10.1509C28.2342 10.1767 28.2383 10.2542 28.2228 10.3204C28.1924 10.4286 28.1257 10.5231 28.0337 10.5879C27.9831 10.6293 27.949 10.6571 28.0162 10.7191C28.0833 10.7811 28.0286 10.8162 27.9728 10.8369C27.9144 10.855 27.8595 10.8829 27.8106 10.9196C27.7073 11.0074 27.7734 11.1262 27.7403 11.2295C27.7351 11.2578 27.7351 11.2869 27.7403 11.3152C27.7465 11.5673 27.7217 11.5983 27.4676 11.6117C27.3286 11.6296 27.1874 11.6162 27.0543 11.5725C27.1318 11.5622 27.1969 11.557 27.261 11.5456C27.2863 11.5435 27.3098 11.5315 27.3262 11.5121C27.3427 11.4927 27.3508 11.4676 27.3488 11.4423C27.3488 11.3865 27.2971 11.3855 27.2775 11.3617C27.1597 11.2212 26.9541 11.3142 26.8405 11.182C26.8209 11.1582 26.7702 11.1499 26.7806 11.1128C26.7909 11.0756 26.8395 11.0632 26.8715 11.0694C27.0017 11.0931 27.0347 10.9888 27.1132 10.9278C27.2329 10.8245 27.3611 10.7315 27.4965 10.6499C27.5783 10.61 27.6511 10.5537 27.7104 10.4846C27.7837 10.3947 27.7724 10.3679 27.6618 10.3389C27.323 10.2501 26.9924 10.3059 26.6628 10.3927C26.6215 10.4061 26.5812 10.4361 26.5254 10.4113Z" fill="#9E9E9D"/> +<path d="M15.793 12.5251C15.794 12.5175 15.794 12.5099 15.793 12.5023C15.9092 12.4823 16.028 12.4823 16.1442 12.5023L15.793 12.5251Z" fill="#9E9E9D"/> +<path d="M15.1291 17.1661L15.0689 17.2045L15.043 17.1796L15.1125 17.1475L15.1291 17.1661Z" fill="#273375"/> +<path d="M15.1113 17.1474C15.1352 17.137 15.158 17.1194 15.1829 17.1474L15.131 17.1723L15.1113 17.1474Z" fill="#273375"/> +<path d="M15.1845 17.1439L15.1738 17.128L15.1887 17.1216C15.1858 17.1281 15.1833 17.1349 15.1813 17.1418L15.1845 17.1439Z" fill="#273375"/> +<path d="M13.9882 15.4295C13.9965 15.384 14.0533 15.4078 14.0595 15.3665C14.0547 15.3614 14.0492 15.3573 14.043 15.3541C13.6721 15.2776 13.3549 15.4274 13.0233 15.5679C12.7263 15.6997 12.4384 15.8512 12.1617 16.0214C12.1075 16.0509 12.0516 16.0771 11.9943 16.1C11.9695 16.1103 11.9406 16.1361 11.9168 16.1C11.9133 16.0936 11.9111 16.0865 11.9104 16.0792C11.9097 16.072 11.9105 16.0646 11.9127 16.0577C11.9149 16.0507 11.9186 16.0443 11.9233 16.0387C11.9281 16.0332 11.934 16.0287 11.9406 16.0256C12.1224 15.9223 12.1369 15.6795 12.3125 15.5607C12.4882 15.4419 12.6297 15.3096 12.7878 15.1836C12.8332 15.1474 12.8818 15.1164 12.8714 15.0462C12.8711 15.0399 12.8723 15.0337 12.8748 15.0279C12.8773 15.0222 12.8811 15.0171 12.8859 15.0131C13.1029 14.8778 13.1576 14.5865 13.4025 14.4831C13.3836 14.447 13.3521 14.4192 13.314 14.4049C13.2758 14.3906 13.2338 14.3909 13.1958 14.4057C13.1661 14.4145 13.1346 14.4161 13.104 14.4104C13.0735 14.4046 13.0447 14.3917 13.0202 14.3726C13.0471 14.3106 13.1111 14.3044 13.1628 14.2693C13.0719 14.2063 13.1142 14.166 13.1814 14.1226C13.2538 14.0931 13.3299 14.0736 13.4076 14.0647C13.4646 14.0566 13.5177 14.031 13.5595 13.9914C13.4841 13.9728 13.4057 13.9699 13.3291 13.9831C13.2144 13.9831 13.0626 14.0172 13.0047 13.9222C12.9469 13.8271 13.0636 13.73 13.1153 13.6401C13.2283 13.4318 13.3967 13.2587 13.6019 13.1401C13.638 13.1194 13.6783 13.0905 13.7145 13.1215C13.7506 13.1525 13.7269 13.2041 13.7145 13.2455C13.6876 13.3261 13.6194 13.3653 13.5357 13.4087C13.7083 13.4459 13.8684 13.4748 14.0234 13.5192C14.0647 13.5306 14.1752 13.5037 14.137 13.6226C14.1308 13.6401 14.1773 13.6391 14.2011 13.6443C14.2723 13.6608 14.3457 13.6721 14.418 13.6907C14.4418 13.6969 14.48 13.7 14.479 13.7372C14.4779 13.7744 14.4345 13.7569 14.4129 13.7796C15.2146 14.0131 16.0297 14.1928 16.7219 14.7218C16.3661 14.8968 15.9919 15.0313 15.6061 15.1226C15.3747 15.1805 15.1402 15.2259 14.9077 15.2797C14.8886 15.2873 14.8684 15.2919 14.8478 15.2931C14.6412 15.2735 14.449 15.3623 14.2579 15.4284C14.2153 15.4467 14.1695 15.4562 14.1232 15.4564C14.0768 15.4566 14.031 15.4474 13.9882 15.4295Z" fill="#FEFEFE"/> +<path d="M14.3636 11.8516C14.2665 11.9477 14.1415 11.9456 14.0413 12.0014C13.9875 12.0314 13.9917 11.9611 13.972 11.9208C13.7809 12.1078 13.5588 12.2432 13.3584 12.4095C13.2211 12.5288 13.1094 12.6746 13.0298 12.8382C12.9265 13.0325 12.8294 13.2246 12.6362 13.3548C12.5856 13.3878 12.5959 13.4912 12.5391 13.5428C12.5236 13.5562 12.5174 13.579 12.504 13.5945C12.474 13.6275 12.4389 13.674 12.3924 13.6389C12.3459 13.6038 12.4038 13.5738 12.4151 13.5418C12.4265 13.5098 12.442 13.5087 12.4472 13.4891C12.4523 13.4695 12.5236 13.4571 12.4802 13.4085C12.4368 13.36 12.41 13.3775 12.3676 13.4085C11.9759 13.6594 11.6085 13.9465 11.2704 14.266C10.9698 14.5491 10.6909 14.8538 10.414 15.1596C10.3923 15.1844 10.3789 15.2247 10.3313 15.2185C10.3158 15.1658 10.3603 15.1431 10.382 15.1152C10.6702 14.733 10.9246 14.3265 11.1423 13.9003C11.1744 13.8338 11.2259 13.7787 11.2901 13.7422C11.6145 13.536 11.9081 13.2849 12.162 12.9963C12.5583 12.5564 13.0226 12.1828 13.5371 11.8898C13.6627 11.8205 13.8026 11.7811 13.9459 11.7744C14.0892 11.7678 14.2321 11.7942 14.3636 11.8516Z" fill="#FEFEFE"/> +<path d="M14.1022 16.8963C13.6311 17.1267 13.2695 17.4893 12.8026 17.6608C12.5871 17.7458 12.3951 17.8812 12.2426 18.0555C12.2282 18.0699 12.2096 18.0937 12.1951 18.0927C11.9709 18.0689 11.8852 18.2528 11.755 18.3768C11.7343 18.3974 11.723 18.447 11.6847 18.4212C11.6465 18.3954 11.6579 18.354 11.6847 18.3179C11.7705 18.2146 11.8542 18.104 11.9337 17.9945C11.9987 17.9083 12.0407 17.807 12.0556 17.7001C12.0556 17.6846 12.0711 17.6567 12.0691 17.6546C11.911 17.5668 12.0763 17.5327 12.1042 17.5007C12.3349 17.2164 12.6622 17.027 13.0237 16.9686C13.1501 16.9469 13.2733 16.9094 13.3904 16.8571C13.4546 16.8261 13.5272 16.8171 13.597 16.8312C13.753 16.8664 13.9194 16.8095 14.1022 16.8963Z" fill="#FEFEFE"/> +<path d="M15.0986 15.6875C15.0829 15.7098 15.063 15.7287 15.0399 15.7433C15.0169 15.7578 14.9912 15.7677 14.9643 15.7722C14.8042 15.8022 14.643 15.8259 14.4818 15.8507C14.4591 15.8507 14.424 15.8507 14.4147 15.8383C14.4054 15.8259 14.4229 15.7846 14.4405 15.7629C14.4685 15.7328 14.5042 15.711 14.5438 15.6999C14.592 15.6913 14.6387 15.6756 14.6823 15.6534C14.829 15.5511 14.9612 15.5873 15.0986 15.6875Z" fill="#FEFEFE"/> +<path d="M13.8846 17.5397C13.8474 17.6327 13.8361 17.7298 13.7369 17.7722C13.6519 17.8018 13.5741 17.849 13.5086 17.9106C13.5012 17.918 13.4924 17.9239 13.4827 17.9279C13.4731 17.9319 13.4627 17.934 13.4523 17.934C13.4418 17.934 13.4314 17.9319 13.4218 17.9279C13.4121 17.9239 13.4033 17.918 13.3959 17.9106C13.3608 17.8703 13.4176 17.8507 13.4404 17.828C13.5303 17.7381 13.6232 17.6524 13.7131 17.5635C13.7289 17.5446 13.7492 17.53 13.7722 17.521C13.7951 17.512 13.8199 17.5088 13.8443 17.5118C13.866 17.517 13.8836 17.5242 13.8846 17.5397Z" fill="#FEFEFE"/> +<path d="M32.1954 27.1023C31.8359 27.1023 31.4774 27.1023 31.1178 27.1023C31.0145 27.1023 31.0145 27.0703 31.0383 26.9887C31.108 26.7625 31.2458 26.5633 31.433 26.4183C31.6201 26.2734 31.8474 26.1897 32.0838 26.1787C32.4309 26.1591 32.7595 26.2087 33.0384 26.436C33.2159 26.5805 33.3349 26.7847 33.3731 27.0104C33.3876 27.0858 33.368 27.1023 33.2967 27.1013C32.9299 27.1013 32.5621 27.1023 32.1954 27.1023Z" fill="#FEFEFE"/> +<path d="M33.2949 36.1142C33.3456 35.8553 33.4836 35.6216 33.686 35.4524C33.8884 35.2831 34.1428 35.1885 34.4066 35.1844C34.6796 35.1644 34.9525 35.2247 35.1917 35.358C35.3138 35.428 35.4186 35.5245 35.4985 35.6404C35.5784 35.7562 35.6314 35.8885 35.6535 36.0274C35.6639 36.0822 35.6711 36.1204 35.5905 36.1194C34.8281 36.1132 34.0656 36.1142 33.2949 36.1142Z" fill="#FEFEFE"/> +<path d="M9.79689 36.1144C9.43427 36.1144 9.07371 36.1144 8.70902 36.1144C8.60571 36.1144 8.60571 36.0855 8.63154 36.0038C8.70269 35.7669 8.84773 35.5588 9.04549 35.4102C9.24325 35.2615 9.48336 35.1799 9.73077 35.1773C10.0501 35.1509 10.3681 35.2416 10.6254 35.4325C10.8085 35.577 10.9305 35.785 10.9674 36.0152C10.9819 36.0948 10.9674 36.1185 10.8848 36.1133C10.5221 36.1123 10.1595 36.1144 9.79689 36.1144Z" fill="#FEFEFE"/> +<path d="M14.8279 28.6347C14.9023 28.9384 14.7246 29.1254 14.518 29.3011C14.359 29.4522 14.166 29.5628 13.9552 29.6235C13.7445 29.6843 13.5222 29.6935 13.3072 29.6503C13.1936 29.6341 13.0889 29.58 13.0101 29.4967C12.9313 29.4134 12.8831 29.3058 12.8733 29.1916C12.8595 29.0823 12.8803 28.9714 12.9328 28.8745C12.9852 28.7776 13.0666 28.6995 13.1656 28.6512C13.3785 28.5522 13.6066 28.49 13.8403 28.4673C14.1326 28.4167 14.425 28.3713 14.7163 28.3165C14.8052 28.301 14.8341 28.3237 14.8248 28.4126C14.8228 28.4859 14.8279 28.5614 14.8279 28.6347Z" fill="#FEFEFE"/> +</symbol> + +<symbol id="fabriqueDeTerritoire" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M27.0186 16.6192H25.9085V19.2933H27.0186C27.5837 19.2933 28.0138 19.1745 28.3113 18.9357C28.6089 18.6969 28.7564 18.3444 28.7564 17.8768C28.7564 17.4093 28.6076 17.083 28.3113 16.8979C28.015 16.7117 27.5837 16.6192 27.0186 16.6192ZM27.1937 14.9089L27.3012 14.9102C27.7675 14.9164 28.2063 14.9652 28.6176 15.0552C29.0602 15.1527 29.4477 15.3152 29.779 15.5453C30.1103 15.774 30.3729 16.0791 30.5679 16.4579C30.7629 16.8379 30.8604 17.3105 30.8604 17.8756C30.8604 18.5769 30.7067 19.1545 30.4004 19.6071C30.0941 20.0596 29.6828 20.3984 29.1664 20.6222L31.328 24.4353H28.9177L27.0911 21.001H25.9085V24.4353H23.7607V14.9089H27.1937ZM22.4767 14.9089V16.7217H18.6637V18.6357H21.9067V20.4334H18.6637V22.625H22.6218V24.4365H16.5159V14.9102H22.4767V14.9089ZM15.0282 14.9089V24.4353H12.8804V14.9089H15.0282ZM12.1515 14.9089V16.7217H9.5374V24.4365H7.37584V16.7217H4.76172V14.9089H12.1515ZM34.9498 14.7339C35.5048 14.7339 36.0524 14.8414 36.5925 15.0552C37.1326 15.269 37.6076 15.5815 38.0165 15.9903L36.9213 17.3493L36.855 17.298C36.5662 17.0792 36.2762 16.9092 35.9874 16.7867C35.6761 16.6554 35.3298 16.5892 34.9498 16.5892C34.5797 16.5892 34.2847 16.6642 34.0659 16.8154C33.8471 16.9667 33.7371 17.178 33.7371 17.4505C33.7371 17.5968 33.7733 17.7206 33.8471 17.8231C33.9196 17.9256 34.0221 18.0181 34.1534 18.1006C34.2847 18.1831 34.4384 18.2619 34.6135 18.3344C34.7885 18.4069 34.9785 18.4882 35.1835 18.5757L36.41 19.072L36.4762 19.0995C37.0288 19.3308 37.4664 19.6433 37.7902 20.0359C38.1265 20.4447 38.294 20.986 38.294 21.6574C38.294 22.0562 38.214 22.4337 38.0527 22.79C37.8914 23.1451 37.6589 23.4576 37.3514 23.7252C37.0451 23.9927 36.6675 24.2077 36.2187 24.3678C35.7711 24.529 35.2648 24.609 34.6997 24.609C34.0759 24.609 33.4558 24.494 32.837 24.2652C32.2181 24.0365 31.6655 23.6927 31.1792 23.2351L32.4057 21.7599L32.4744 21.8174C32.797 22.0837 33.152 22.3025 33.5383 22.4762C33.9521 22.6613 34.3584 22.7538 34.7585 22.7538C35.2061 22.7538 35.5398 22.6713 35.7586 22.505C35.9774 22.34 36.0874 22.1149 36.0874 21.8324C36.0874 21.6861 36.0562 21.5599 35.9924 21.4523C35.9287 21.3448 35.8361 21.2498 35.7149 21.1673C35.5936 21.0848 35.4473 21.006 35.2761 20.9335C35.106 20.861 34.9185 20.7797 34.7135 20.6922L33.472 20.1659L33.3908 20.1322C33.1758 20.0396 32.967 19.9246 32.7632 19.7859C32.5344 19.6296 32.3294 19.4471 32.1494 19.2383C31.9693 19.0282 31.8256 18.7857 31.7181 18.5082C31.6105 18.2306 31.5568 17.9168 31.5568 17.5655C31.5568 17.1755 31.6393 16.8079 31.8056 16.4629C31.9706 16.1166 32.2044 15.8153 32.5069 15.5565C32.8082 15.299 33.167 15.0964 33.5808 14.9502C33.9971 14.8076 34.4522 14.7339 34.9498 14.7339ZM33.5946 25.6242L34.4272 27.4219L34.4809 27.5345C34.5697 27.7245 34.6597 27.9233 34.7485 28.1295C34.856 28.3783 34.9773 28.6534 35.1135 28.9547H35.1723L35.2073 28.8546C35.3023 28.5921 35.3948 28.3496 35.4861 28.1283C35.5886 27.8795 35.6886 27.6432 35.7861 27.4194L36.5462 25.6217H38.8391L36.37 30.3561L38.9991 35.1493H36.6038L35.6549 33.2065L35.5386 32.954C35.4623 32.7865 35.3861 32.6189 35.3111 32.4539C35.1985 32.2051 35.0748 31.9351 34.9385 31.6425H34.8798L34.8397 31.7513C34.746 32.0026 34.6522 32.2364 34.5585 32.4539C34.4509 32.7027 34.3447 32.9527 34.2372 33.2065L33.3458 35.1493H31.038L33.6821 30.2548L31.1992 25.6229H33.5946V25.6242ZM21.6079 25.6242V27.4357H17.7948V29.3497H21.0378V31.1475H17.7948V33.339H21.7529V35.1505H15.647V25.6242H21.6079ZM14.0068 25.6242V35.1505H11.859V25.6242H14.0068ZM7.04829 25.6242V33.339H10.8176V35.1505H4.90174V25.6242H7.04829ZM25.1471 25.6242V31.0275C25.1534 31.9251 25.2946 32.5552 25.5709 32.9152C25.8535 33.2853 26.2623 33.4703 26.7974 33.4703C27.3324 33.4703 27.7462 33.2853 28.0388 32.9152C28.3313 32.5452 28.4776 31.8926 28.4776 30.9574V25.6242H30.5516V30.8224C30.5404 32.3764 30.2216 33.5128 29.5953 34.2304C28.9577 34.9605 28.025 35.3268 26.7974 35.3268C25.5609 35.3268 24.6158 34.9618 23.9632 34.2304C23.3106 33.5003 22.9843 32.3364 22.9843 30.7387V25.6242H25.1471Z" fill="#4232C5"/> +<path d="M25.9525 37.6597H16.8262V40.005H25.9525V37.6597Z" fill="#E8336D"/> +<path d="M34.6819 11.4111C34.7244 11.2185 34.7644 11.0497 34.8019 10.906C34.8394 10.761 34.8857 10.6272 34.9407 10.5022C34.9957 10.3772 35.0707 10.2571 35.1682 10.1409C35.2644 10.0246 35.3982 9.89459 35.5657 9.74957C35.5495 9.94209 35.5232 10.1121 35.4895 10.2609C35.4557 10.4097 35.4057 10.5472 35.3382 10.6759C35.2707 10.8047 35.1844 10.9285 35.0794 11.0498C34.9744 11.171 34.8419 11.291 34.6819 11.4111ZM35.3482 13.9677C35.487 13.9677 35.6558 13.9514 35.8558 13.9189C36.0558 13.8864 36.2658 13.8376 36.4859 13.7714C36.7059 13.7064 36.9284 13.6239 37.1522 13.5264C37.376 13.4288 37.576 13.3163 37.7511 13.1901C37.9261 13.0638 38.0686 12.9213 38.1786 12.7612C38.2886 12.6025 38.3436 12.4324 38.3436 12.2537C38.3436 12.1887 38.3349 12.1237 38.3186 12.0574C38.3024 11.9924 38.2536 11.9599 38.1724 11.9599C38.0911 11.9599 38.0136 11.9899 37.9398 12.0511C37.8661 12.1124 37.7973 12.1837 37.7323 12.2649C37.6673 12.3462 37.6035 12.4262 37.5423 12.5037C37.481 12.5812 37.4298 12.64 37.3898 12.6812C37.096 12.9175 36.7747 13.0888 36.4234 13.1951C36.0733 13.3013 35.7058 13.3538 35.322 13.3538C35.1919 13.3538 35.0707 13.3476 34.9607 13.3351C34.8506 13.3226 34.7531 13.2901 34.6669 13.2376C34.5819 13.1851 34.5143 13.1125 34.4656 13.0238C34.4168 12.9338 34.3918 12.8163 34.3918 12.6687V12.6437C34.3918 12.6187 34.4006 12.5787 34.4168 12.5212C34.4331 12.4637 34.4456 12.4237 34.4531 12.3987C34.7144 12.1787 34.9469 11.9686 35.1507 11.7686C35.3545 11.5686 35.5282 11.3548 35.6708 11.126C35.8133 10.8972 35.9195 10.6484 35.9883 10.3797C36.0571 10.1109 36.0921 9.80082 36.0921 9.44952C36.0921 9.41702 36.0896 9.35826 36.0858 9.272C36.0821 9.18574 36.0796 9.12698 36.0796 9.09447C36.0471 9.00446 36.0083 8.9207 35.9633 8.84319C35.9183 8.76568 35.8433 8.72692 35.737 8.72692C35.452 8.72692 35.2132 8.79068 35.0219 8.91695C34.8306 9.04322 34.6731 9.20449 34.5506 9.40077C34.4281 9.59704 34.3331 9.80832 34.2631 10.0371C34.1943 10.2659 34.1343 10.4784 34.0855 10.6734C34.0693 10.7222 34.0468 10.8147 34.018 10.9485C33.9893 11.0835 33.9568 11.2235 33.9205 11.371C33.8843 11.5186 33.8467 11.6548 33.8105 11.7811C33.7742 11.9074 33.7467 11.9949 33.7305 12.0449L33.6692 12.89C33.7755 13.3226 33.973 13.6101 34.2631 13.7526C34.5543 13.8964 34.9156 13.9677 35.3482 13.9677ZM29.5161 13.9677C29.6212 13.9677 29.7124 13.9652 29.7887 13.9614C29.8649 13.9577 29.9399 13.9464 30.0125 13.9302C30.085 13.9139 30.1662 13.8952 30.255 13.8739C30.3438 13.8526 30.4525 13.8226 30.5825 13.7814C30.68 13.7401 30.8313 13.6801 31.0363 13.6014C31.2426 13.5226 31.4539 13.4426 31.6727 13.3601C31.8902 13.2776 32.0953 13.1988 32.284 13.125C32.4741 13.0513 32.5966 13.005 32.6541 12.9888C32.8566 12.8975 33.0679 12.7862 33.2904 12.6537C33.513 12.5212 33.7167 12.3687 33.9018 12.1949C34.088 12.0211 34.2431 11.8274 34.3681 11.6123C34.4931 11.3973 34.5556 11.1585 34.5556 10.8935C34.5556 10.811 34.5418 10.726 34.5131 10.6397C34.4843 10.5534 34.4181 10.5097 34.3131 10.5097C34.2006 10.5097 34.1155 10.5509 34.058 10.6334C34.0018 10.716 33.9505 10.8135 33.9068 10.9247C33.8618 11.036 33.8217 11.1498 33.7855 11.2648C33.7492 11.3798 33.7067 11.4711 33.658 11.5373C33.4479 11.7774 33.1654 12.0061 32.8104 12.2249C32.4553 12.4437 32.0777 12.6312 31.6777 12.7887C31.2776 12.9463 30.8801 13.0713 30.4838 13.1663C30.0875 13.2613 29.7449 13.3088 29.4536 13.3088C29.4374 13.3088 29.3811 13.3063 29.2836 13.3026C29.1861 13.2988 29.1261 13.2963 29.1023 13.2963C29.0373 13.2551 28.9673 13.2138 28.8898 13.1726C28.8135 13.1313 28.766 13.0688 28.751 12.9863V12.875C28.751 12.825 28.7485 12.7762 28.7448 12.7262C28.741 12.6762 28.7385 12.6275 28.7385 12.5775V12.4662C28.7385 12.2024 28.7685 11.9749 28.8298 11.7849C28.8898 11.5948 28.9748 11.4173 29.0848 11.2523C29.1936 11.0873 29.3211 10.9235 29.4661 10.7635C29.6111 10.6022 29.7687 10.4184 29.9387 10.2121C29.9462 10.1959 29.9649 10.1734 29.9937 10.1446C30.0225 10.1159 30.04 10.0971 30.0487 10.0884H30.0975C30.1625 10.1046 30.215 10.1334 30.255 10.1746C30.295 10.2159 30.3337 10.2571 30.37 10.2984C30.4063 10.3396 30.4488 10.3747 30.4975 10.4034C30.5463 10.4322 30.6025 10.4472 30.6675 10.4472C30.7726 10.4472 30.8651 10.4259 30.9463 10.3847C31.0276 10.3434 31.0676 10.2696 31.0676 10.1621C31.0676 10.0634 31.0488 9.95334 31.0126 9.83333C30.9763 9.71331 30.9238 9.59954 30.8551 9.49328C30.7863 9.38701 30.7076 9.2945 30.6188 9.22074C30.53 9.14698 30.4288 9.10947 30.3162 9.10947C30.26 9.10947 30.2175 9.11573 30.1887 9.12823C30.16 9.14073 30.1362 9.15698 30.1162 9.17824C30.0962 9.19949 30.0712 9.21949 30.0437 9.24074C30.015 9.262 29.9812 9.2845 29.9412 9.30825C29.7874 9.25074 29.6074 9.29575 29.4024 9.44452C29.1973 9.59329 28.9948 9.80332 28.796 10.0759C28.5985 10.3484 28.4247 10.6747 28.2747 11.0548C28.1247 11.4348 28.0309 11.8349 27.9897 12.2562C28.0059 12.5375 28.0397 12.7825 28.0922 12.9938C28.1447 13.2051 28.2272 13.3813 28.341 13.5264C28.4535 13.6714 28.606 13.7801 28.7948 13.8551C28.9848 13.9302 29.2248 13.9677 29.5161 13.9677ZM23.1427 13.9677C23.1952 13.9677 23.2465 13.9614 23.2952 13.9489C23.344 13.9364 23.3865 13.9177 23.4228 13.8927C23.459 13.8676 23.474 13.8301 23.4653 13.7801C23.4728 13.7126 23.489 13.6039 23.514 13.4538C23.5378 13.3038 23.5653 13.1438 23.5928 12.9775C23.6215 12.81 23.6515 12.6512 23.6841 12.5012C23.7166 12.3512 23.7403 12.2462 23.7566 12.1874C23.8053 12.0199 23.8841 11.8074 23.9941 11.5473C24.1041 11.2885 24.2341 11.0322 24.3842 10.7822C24.5342 10.5309 24.7054 10.3184 24.8955 10.1421C25.0868 9.96585 25.2793 9.87833 25.4743 9.87833V10.2921L24.9992 12.7262V12.8888C24.9992 13.0225 25.0055 13.1475 25.018 13.2651C25.0305 13.3826 25.058 13.4888 25.103 13.5851C25.148 13.6814 25.2143 13.7589 25.3043 13.8176C25.393 13.8764 25.5156 13.9052 25.6693 13.9052C25.8231 13.9052 26.0106 13.8764 26.2294 13.8176C26.4482 13.7589 26.6745 13.6801 26.9058 13.5789C27.137 13.4788 27.3721 13.3576 27.6121 13.2151C27.8521 13.0725 28.0622 12.9225 28.246 12.7637C28.4285 12.605 28.5785 12.4349 28.696 12.2562C28.8135 12.0761 28.8723 11.8949 28.8723 11.7098C28.8723 11.6511 28.8535 11.6036 28.8173 11.5661C28.781 11.5286 28.7335 11.5098 28.6773 11.5098H28.6285C28.466 11.7023 28.2747 11.9011 28.0559 12.1062C27.8371 12.3112 27.6009 12.4925 27.3496 12.6525C27.0983 12.8112 26.8358 12.9438 26.5645 13.0475C26.2919 13.1525 26.0306 13.2038 25.7794 13.2038V12.1874L26.2419 10.0421V9.9921C26.2419 9.97585 26.2444 9.9646 26.2482 9.96085L26.2507 9.95709C26.2532 9.95209 26.2544 9.94209 26.2544 9.92959C26.2544 9.69581 26.1869 9.50328 26.0531 9.35201C25.9194 9.20199 25.7343 9.12573 25.4993 9.12573C25.3855 9.12573 25.2655 9.15448 25.1405 9.21324C25.0142 9.272 24.9067 9.34326 24.818 9.42702C24.7942 9.46077 24.7405 9.51453 24.6592 9.58954C24.5779 9.66455 24.4904 9.74457 24.3979 9.82833C24.3041 9.91209 24.2166 9.99085 24.1366 10.0671C24.0554 10.1421 23.9991 10.1921 23.9666 10.2171V9.36326C23.9666 9.28825 23.9241 9.22699 23.8391 9.18073C23.7541 9.13448 23.6791 9.11198 23.614 9.11198C23.5903 9.11198 23.5453 9.11447 23.4803 9.11823C23.4153 9.12198 23.3703 9.14073 23.3465 9.17448L23.1027 10.8435V11.1948L22.6852 13.7039V13.7414C22.6852 13.8414 22.7214 13.9039 22.7952 13.9302C22.8677 13.9552 22.9414 13.9677 23.014 13.9677H23.1427ZM17.2556 13.3288V12.985L17.5519 11.4948C17.5607 11.4698 17.5744 11.4373 17.5944 11.3998C17.6144 11.361 17.6394 11.321 17.6682 11.2785C17.6969 11.236 17.7232 11.1998 17.7482 11.1698C17.7732 11.1398 17.7895 11.1248 17.797 11.1248C17.8382 11.0823 17.9145 11.0022 18.0245 10.8835C18.1345 10.7647 18.2545 10.6372 18.382 10.5009C18.5096 10.3647 18.6308 10.2396 18.7458 10.1259C18.8609 10.0121 18.9434 9.93334 18.9921 9.89084C19.0084 9.88208 19.0434 9.87833 19.0971 9.87833H19.2022C19.3259 9.87833 19.4234 9.88709 19.4985 9.90334C19.5722 9.92084 19.6622 9.97585 19.7697 10.0684C19.7697 10.0859 19.7722 10.1109 19.776 10.1446L19.7785 10.1634C19.781 10.1884 19.7822 10.2071 19.7822 10.2209C19.7822 10.4672 19.751 10.7072 19.6897 10.9397C19.6285 11.1735 19.5935 11.4173 19.5847 11.6723C19.486 11.8249 19.3459 11.9974 19.1659 12.1874C18.9846 12.3787 18.7846 12.5587 18.5621 12.7287C18.3395 12.8988 18.1145 13.0413 17.8845 13.155C17.6532 13.2713 17.4444 13.3288 17.2556 13.3288ZM17.1581 13.9677C17.3794 13.9677 17.5969 13.9227 17.8095 13.8314C18.022 13.7401 18.2308 13.6326 18.4358 13.5088C18.6408 13.3851 18.8371 13.2476 19.0259 13.0988C19.2147 12.95 19.3909 12.8088 19.5547 12.6762C19.5385 12.8338 19.541 12.985 19.561 13.13C19.581 13.2751 19.621 13.3988 19.6772 13.5026C19.7347 13.6064 19.821 13.6889 19.9348 13.7514C20.0498 13.8139 20.1973 13.8451 20.3773 13.8451C20.4923 13.8451 20.6211 13.8301 20.7649 13.8014C20.9087 13.7726 21.0537 13.7326 21.2012 13.6839C21.3487 13.6339 21.4925 13.5826 21.6313 13.5289C21.77 13.4751 21.8975 13.4151 22.0126 13.3488C22.0776 13.3238 22.1863 13.2701 22.3376 13.1876C22.4889 13.105 22.6514 13.0175 22.8227 12.9263C22.9952 12.835 23.1565 12.7525 23.3078 12.6775C23.459 12.6025 23.564 12.545 23.6215 12.5037C23.6628 12.47 23.6853 12.4349 23.6891 12.3974C23.6928 12.3599 23.6953 12.3212 23.6953 12.2799C23.6953 12.1974 23.6691 12.1312 23.6153 12.0811C23.5615 12.0311 23.494 12.0061 23.4128 12.0061C23.404 12.0061 23.3903 12.0086 23.3703 12.0124L23.3565 12.0149C23.344 12.0174 23.334 12.0186 23.3278 12.0186L20.9937 13.1125C20.9112 13.1463 20.8324 13.1638 20.7536 13.1688C20.6749 13.1738 20.5961 13.1751 20.5136 13.1751C20.4973 13.1751 20.4561 13.1726 20.3911 13.1688C20.3261 13.1651 20.2848 13.1625 20.2686 13.1625C20.2598 13.1463 20.2498 13.0988 20.2373 13.02C20.2248 12.9413 20.2148 12.8938 20.2061 12.8775V12.8025C20.2061 12.5787 20.2286 12.3649 20.2736 12.1624C20.3186 11.9599 20.3673 11.7549 20.4211 11.5473C20.4748 11.3398 20.5236 11.1348 20.5686 10.9322C20.6136 10.7297 20.6361 10.5197 20.6361 10.3046C20.6361 10.1471 20.6224 9.9896 20.5936 9.83208C20.5649 9.67455 20.5161 9.53328 20.4461 9.40952C20.3761 9.28575 20.2823 9.18324 20.1635 9.10448C20.0448 9.02571 19.8948 8.98696 19.7147 8.98696H19.4935C19.0021 9.04447 18.5496 9.20449 18.1358 9.46578C17.722 9.72706 17.3819 10.0496 17.1156 10.4347C16.8493 10.8197 16.6656 11.2523 16.563 11.7336C16.4605 12.2137 16.4793 12.7025 16.618 13.2001V13.5851C16.6593 13.7176 16.7281 13.8151 16.8268 13.8777C16.9256 13.9364 17.0356 13.9677 17.1581 13.9677ZM14.1502 13.9677C14.2652 13.9677 14.4302 13.9302 14.6465 13.8551C14.8628 13.7801 15.1003 13.6801 15.3579 13.5539C15.6154 13.4288 15.8792 13.2888 16.1492 13.1338C16.4193 12.9788 16.6643 12.8225 16.8856 12.6637C17.1069 12.505 17.2869 12.3499 17.4257 12.1999C17.5644 12.0499 17.6344 11.9236 17.6344 11.8236C17.6344 11.7986 17.6307 11.7611 17.6219 11.7111C17.6132 11.6611 17.5969 11.6361 17.5732 11.6361H17.2056C17.1406 11.6861 17.0794 11.7361 17.0219 11.7861C16.9626 11.8339 16.9078 11.8755 16.8577 11.9117C16.8106 11.9459 16.7674 11.975 16.7281 11.9999C16.6793 12.0336 16.628 12.0686 16.5743 12.1062C16.5205 12.1437 16.478 12.1924 16.4455 12.2499L15.3666 12.9275C15.2766 12.9438 15.1903 12.9713 15.1091 13.0088C15.0278 13.0463 14.9441 13.0863 14.8578 13.1275C14.7715 13.1688 14.6878 13.2076 14.6065 13.2401C14.5252 13.2726 14.4352 13.2901 14.3365 13.2901C14.2952 13.2901 14.2527 13.2876 14.2077 13.2838C14.1627 13.2801 14.1439 13.2401 14.1527 13.1651V12.8388C14.1527 12.6712 14.1714 12.485 14.2077 12.2812C14.244 12.0761 14.2815 11.8711 14.3177 11.6661C14.354 11.4611 14.3915 11.2585 14.4277 11.0573C14.464 10.856 14.4827 10.6772 14.4827 10.5184C14.4827 10.3434 14.4515 10.2071 14.3902 10.1109C14.329 10.0146 14.2252 9.92459 14.0777 9.84083C13.9464 9.77332 13.7951 9.71081 13.6239 9.6533C13.4526 9.59579 13.2901 9.54079 13.1388 9.49078C12.9875 9.44077 12.8613 9.39452 12.7587 9.35326C12.6562 9.312 12.61 9.27325 12.6175 9.24074C12.5362 9.24074 12.4662 9.2695 12.4087 9.32826C12.3512 9.38701 12.3024 9.45577 12.2612 9.53579C12.2199 9.6158 12.1899 9.70081 12.1687 9.79332C12.1487 9.88584 12.1374 9.9646 12.1374 10.0321C12.1374 10.0996 12.1399 10.1559 12.1437 10.2009C12.1474 10.2471 12.1662 10.2996 12.1987 10.3572C12.1087 10.5834 12.0436 10.7897 12.0024 10.9785C11.9611 11.166 11.9086 11.3448 11.8424 11.5111C11.7774 11.6786 11.6886 11.8461 11.5786 12.0124C11.4686 12.1799 11.2985 12.3512 11.0698 12.5262C11.061 12.6762 11.066 12.7912 11.0823 12.8713C11.0985 12.9513 11.121 13.0088 11.1498 13.0463C11.1785 13.0838 11.2073 13.1063 11.236 13.115C11.2648 13.1238 11.2835 13.1275 11.291 13.1275C11.6098 12.9013 11.8374 12.6712 11.9724 12.4374C12.1074 12.2037 12.2099 11.9686 12.2787 11.7348C12.3474 11.5011 12.4174 11.2748 12.4875 11.0573C12.5575 10.8397 12.6812 10.6347 12.8613 10.4422C12.8613 10.4509 12.92 10.4822 13.0388 10.5359C13.1576 10.5897 13.2863 10.6534 13.4251 10.7235C13.5639 10.7947 13.6926 10.8597 13.8114 10.9172C13.9302 10.976 13.9889 11.0097 13.9889 11.0172C13.9889 11.1173 13.9602 11.251 13.9027 11.4186C13.8452 11.5861 13.7801 11.7574 13.7064 11.9324C13.6326 12.1074 13.5676 12.2799 13.5101 12.4462C13.4526 12.6137 13.4238 12.7425 13.4238 12.835C13.4238 12.96 13.4338 13.0875 13.4551 13.2176C13.4751 13.3476 13.5139 13.4663 13.5714 13.5751C13.6289 13.6839 13.7026 13.7764 13.7926 13.8514C13.8852 13.9302 14.0039 13.9677 14.1502 13.9677ZM6.34408 13.8401C6.4291 13.8401 6.48785 13.8151 6.52161 13.7664L7.22921 12.4524L7.93681 10.1184L8.05933 9.16073H8.29061C8.35562 9.16073 8.42313 9.15823 8.49189 9.15448C8.56065 9.15073 8.61941 9.14823 8.66942 9.14823C9.01071 9.14823 9.35076 9.17073 9.68831 9.21574C10.0259 9.26075 10.3572 9.28325 10.6822 9.28325C10.7885 9.28325 10.896 9.25075 11.006 9.18449C11.116 9.11948 11.171 9.02446 11.171 8.90194C11.171 8.80318 11.1298 8.73192 11.0485 8.68691C10.9672 8.64191 10.871 8.6094 10.7622 8.58815C10.6522 8.56815 10.5447 8.5569 10.4384 8.5569H8.2306C8.16559 8.57315 8.13059 8.56315 8.12684 8.52564C8.12308 8.48814 8.12059 8.45438 8.12059 8.42063C8.12059 8.09308 8.13059 7.77178 8.15059 7.45674L8.16184 7.26671C8.17434 7.01293 8.18184 6.75414 8.18184 6.49285C8.18184 6.28782 8.17184 6.0878 8.15184 5.89152C8.13184 5.69524 8.12184 5.49896 8.12184 5.30143V5.21517L11.0873 4.96889C11.1848 4.96014 11.291 4.91763 11.4048 4.84012C11.5186 4.76261 11.5761 4.67009 11.5761 4.56383C11.5761 4.55508 11.5736 4.54133 11.5698 4.52132L11.5673 4.50757C11.5648 4.49507 11.5636 4.48507 11.5636 4.47882C11.5386 4.45381 11.5086 4.41756 11.4723 4.3688C11.4361 4.32005 11.3911 4.26629 11.3385 4.20878C11.286 4.15127 11.2285 4.10251 11.1673 4.06126C11.106 4.02 11.0435 4 10.9785 4C10.8972 4 10.8485 4.01875 10.8322 4.05501C10.816 4.09126 10.8097 4.13752 10.8135 4.19003C10.8172 4.24378 10.8172 4.29504 10.8135 4.3438C10.8097 4.39256 10.7872 4.42131 10.746 4.43006C10.3722 4.50382 9.9871 4.55133 9.5933 4.57133C9.19824 4.59133 8.81443 4.60258 8.44063 4.60258C8.31061 4.60258 8.19059 4.59008 8.08058 4.56633C7.97056 4.54133 7.86305 4.51507 7.75678 4.48632C7.65052 4.45756 7.543 4.42881 7.43299 4.40006C7.32297 4.3713 7.21546 4.35755 7.10919 4.35755C7.09294 4.35755 7.06293 4.36005 7.01793 4.3638L6.99668 4.3663C6.96292 4.3688 6.94042 4.37005 6.92667 4.37005C6.89416 4.41131 6.87541 4.45006 6.87166 4.48632C6.86791 4.52257 6.86541 4.56258 6.86541 4.60258C6.86541 4.6926 6.88166 4.76261 6.91416 4.81136C6.94667 4.86012 6.98792 4.90513 7.03668 4.94638C7.08544 4.98764 7.13669 5.03265 7.1892 5.0814C7.24171 5.13016 7.29672 5.19142 7.35423 5.26518C7.42799 5.37144 7.47675 5.49396 7.5005 5.63398C7.52425 5.774 7.54175 5.91402 7.54925 6.05779C7.558 6.20156 7.558 6.34408 7.54925 6.48785C7.5405 6.63162 7.53675 6.76039 7.53675 6.87541C7.53675 6.98167 7.5405 7.11294 7.54925 7.26796C7.558 7.42299 7.55926 7.58176 7.55551 7.74053C7.55176 7.90055 7.53675 8.05432 7.513 8.2006C7.48925 8.34687 7.45174 8.46688 7.40298 8.5569C7.1667 8.57315 6.91041 8.59315 6.63412 8.61815C6.35783 8.64316 6.07655 8.66691 5.79275 8.69192C5.50896 8.71692 5.22392 8.73317 4.93888 8.74067C4.65384 8.74817 4.39005 8.74942 4.14627 8.74067C4.07251 8.72442 4.03 8.74067 4.01875 8.78943C4.0075 8.83819 4 8.87944 4 8.91195C4 8.96945 4.00625 9.01821 4.01875 9.05947C4.03125 9.10072 4.07376 9.13323 4.14627 9.15823C4.22753 9.17448 4.29504 9.18449 4.34755 9.18949C4.40006 9.19449 4.45381 9.19824 4.50632 9.20199C4.55883 9.20574 4.61258 9.20824 4.66509 9.20824H4.85387C5.23642 9.20824 5.61648 9.19949 5.99528 9.18323C6.37409 9.16698 6.75414 9.15823 7.1367 9.15823C7.20171 9.15823 7.25421 9.16448 7.29547 9.17698C7.33672 9.18949 7.35673 9.23199 7.35673 9.30575C7.35673 9.60829 7.32672 9.90584 7.26546 10.1959C7.20421 10.4859 7.12669 10.7735 7.03418 11.056C6.94167 11.3385 6.8329 11.6148 6.71039 11.8849C6.58787 12.1549 6.4666 12.4212 6.34408 12.6837C6.29533 12.7737 6.24657 12.8513 6.19781 12.9175C6.14905 12.9838 6.10405 13.0463 6.06404 13.1075C6.02404 13.1688 5.98903 13.2388 5.96028 13.3163C5.93152 13.3938 5.91777 13.4938 5.91777 13.6176C5.91777 13.6664 5.92027 13.7051 5.92402 13.7339C5.92777 13.7626 5.94653 13.7976 5.97903 13.8389H6.34408V13.8401Z" fill="#E8336D"/> +</symbol> + +<symbol id="espacePublicNumeriqueepn" width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M7.53906 17.3535V20.7031H12.2656V22.8613H7.53906V27.1484H14.0234V29.4043H5V15.0977H14.1309V17.3535H7.53906Z" fill="#F35453"/> +<path d="M18.9258 24.1406V29.4043H16.3867V15.1074C18.0794 15.0358 19.069 15 19.3555 15C21.6146 15 23.265 15.3483 24.3066 16.0449C25.3548 16.735 25.8789 17.8158 25.8789 19.2871C25.8789 22.5684 23.9453 24.209 20.0781 24.209C19.7917 24.209 19.4076 24.1862 18.9258 24.1406ZM18.9258 17.3047V21.8848C19.3555 21.9303 19.694 21.9531 19.9414 21.9531C21.1003 21.9531 21.9466 21.7611 22.4805 21.377C23.0143 20.9863 23.2812 20.3548 23.2812 19.4824C23.2812 17.998 22.0866 17.2559 19.6973 17.2559C19.4303 17.2559 19.1732 17.2721 18.9258 17.3047Z" fill="#F35453"/> +<path d="M37.5098 29.5996L30.5664 20.5469V29.4141H28.125V15.0977H29.3457L36.1035 23.7305V15.0977H38.5449V29.5996H37.5098Z" fill="#F35453"/> +</symbol> + +<symbol id="aidantsConnect" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M7.4836 25.3734C7.37894 25.2173 7.27428 25.0761 7.1472 24.9423C6.75847 24.5261 6.28004 24.2882 5.70443 24.2585C4.84475 24.2213 4.14953 24.5261 3.701 25.2842C3.20761 26.1166 3.32722 27.2612 3.96264 27.9524C4.35136 28.3761 4.84475 28.5768 5.41288 28.6139C5.9885 28.6511 6.49683 28.5024 6.93789 28.1308C7.12477 27.9673 7.28924 27.7889 7.42379 27.5734C7.46865 27.5065 7.49107 27.5139 7.55088 27.5511C7.8499 27.7666 8.14892 27.9747 8.44794 28.1828C8.50774 28.22 8.50027 28.2497 8.47036 28.3018C7.95455 29.1342 7.20701 29.6396 6.24267 29.818C5.29328 29.9964 4.38874 29.8477 3.57391 29.3274C2.67685 28.7477 2.14609 27.9153 2.02648 26.8524C1.90688 25.8119 2.19094 24.8903 2.90859 24.1173C3.46925 23.5078 4.17943 23.1585 4.99426 23.0396C5.70443 22.9355 6.3847 23.0099 7.04254 23.3072C7.65553 23.5822 8.13397 24.0132 8.48532 24.5855C8.50774 24.6153 8.53764 24.645 8.47784 24.6822C8.14144 24.9051 7.81252 25.143 7.4836 25.3734Z" fill="#003188"/> +<path d="M22.7419 25.2174C22.8017 25.1653 22.854 25.1207 22.9063 25.0836C23.3474 24.7491 23.8483 24.6376 24.3865 24.6748C24.8425 24.7045 25.2462 24.8606 25.5676 25.1951C25.8666 25.5072 26.0161 25.8863 26.0685 26.3025C26.0909 26.4363 26.0909 26.5701 26.0909 26.7039C26.0909 27.6924 26.0909 28.6883 26.0909 29.6768C26.0909 29.7586 26.0685 29.7735 25.9937 29.7735C25.605 29.766 25.2088 29.766 24.8201 29.7735C24.7453 29.7735 24.7229 29.7512 24.7304 29.6768C24.7304 28.7255 24.7304 27.7741 24.7304 26.8302C24.7304 26.4066 24.4911 26.0572 24.1174 25.9457C23.5044 25.7674 22.8615 26.1093 22.854 26.8525C22.8465 27.789 22.854 28.7255 22.854 29.6694C22.854 29.7586 22.8316 29.7735 22.7419 29.7735C22.3457 29.766 21.9495 29.766 21.5607 29.7735C21.4935 29.7735 21.4785 29.7586 21.4785 29.6917C21.4785 28.0863 21.4785 26.4735 21.4785 24.868C21.4785 24.8011 21.5009 24.7863 21.5607 24.7863C21.927 24.7863 22.2933 24.7863 22.6522 24.7863C22.7194 24.7863 22.7344 24.8086 22.7344 24.868C22.7344 24.9721 22.7419 25.0836 22.7419 25.2174Z" fill="#003188"/> +<path d="M25.2152 17.6139C25.275 17.5618 25.3199 17.5247 25.3647 17.4875C25.8581 17.1085 26.4188 16.997 27.0243 17.0862C27.5849 17.1605 28.0185 17.4355 28.3026 17.926C28.4895 18.2531 28.5717 18.6024 28.5717 18.974C28.5717 20.0071 28.5717 21.0402 28.5717 22.0733C28.5717 22.1402 28.5568 22.1551 28.4895 22.1551C28.0933 22.1551 27.6971 22.1477 27.3083 22.1551C27.2336 22.1551 27.2112 22.1402 27.2112 22.0585C27.2112 21.1071 27.2112 20.1558 27.2112 19.197C27.2112 18.8031 26.9944 18.476 26.6505 18.3422C26.2842 18.201 25.8506 18.2828 25.589 18.5578C25.4021 18.751 25.3348 18.9889 25.3348 19.249C25.3348 20.1781 25.3348 21.1145 25.3348 22.0436C25.3348 22.1254 25.3199 22.1551 25.2302 22.1551C24.834 22.1477 24.4378 22.1477 24.049 22.1551C23.9817 22.1551 23.9668 22.1402 23.9668 22.0733C23.9668 20.4605 23.9668 18.8551 23.9668 17.2422C23.9668 17.1754 23.9892 17.1605 24.049 17.1605C24.4153 17.1605 24.7816 17.1605 25.1405 17.1605C25.2077 17.1605 25.2227 17.1828 25.2227 17.2422C25.2077 17.3686 25.2152 17.4801 25.2152 17.6139Z" fill="#003188"/> +<path d="M16.9622 25.2172C17.5154 24.7266 18.1434 24.5854 18.8386 24.7043C19.5787 24.8232 20.1169 25.3732 20.2589 26.1239C20.2963 26.3097 20.3113 26.4955 20.3113 26.6888C20.3113 27.6847 20.3113 28.6807 20.3113 29.6692C20.3113 29.7435 20.2963 29.7658 20.2141 29.7658C19.8254 29.7584 19.4292 29.7584 19.0404 29.7658C18.9582 29.7658 18.9433 29.7435 18.9433 29.6692C18.9433 28.7253 18.9433 27.7739 18.9433 26.83C18.9433 26.4063 18.7115 26.057 18.3303 25.9381C17.7397 25.7523 17.0669 26.0793 17.0669 26.8449C17.0594 27.7888 17.0669 28.7253 17.0669 29.6692C17.0669 29.7509 17.0445 29.7732 16.9622 29.7732C16.5735 29.7658 16.1773 29.7732 15.7886 29.7732C15.7213 29.7732 15.6914 29.7584 15.6914 29.6841C15.6914 28.0786 15.6914 26.4807 15.6914 24.8753C15.6914 24.8009 15.7138 24.7861 15.7886 24.7861C16.1474 24.7935 16.5137 24.7935 16.8725 24.7861C16.9398 24.7861 16.9622 24.8009 16.9548 24.8678C16.9548 24.9719 16.9622 25.0908 16.9622 25.2172Z" fill="#003188"/> +<path d="M35.5614 24.6597C36.2715 24.6671 36.8771 24.8752 37.3704 25.3657C37.505 25.507 37.6246 25.6556 37.7218 25.8266C37.7517 25.8786 37.7517 25.9009 37.6994 25.938C37.4153 26.1536 37.1387 26.3691 36.8546 26.5847C36.8023 26.6218 36.7873 26.6144 36.7574 26.5698C36.5855 26.3171 36.3762 26.109 36.0847 25.9901C35.3595 25.7076 34.4326 26.0718 34.298 27.038C34.2457 27.4245 34.313 27.7887 34.5447 28.1083C35.0007 28.7326 35.9351 28.7995 36.5033 28.2495C36.6005 28.1603 36.6827 28.0637 36.7574 27.9522C36.7799 27.9151 36.8023 27.9076 36.8397 27.9374C37.1237 28.1603 37.4078 28.3759 37.6994 28.5914C37.7592 28.636 37.7367 28.6658 37.7068 28.7029C37.3555 29.2752 36.8472 29.6543 36.1893 29.8029C35.0456 30.0631 33.7971 29.6097 33.2066 28.5171C32.3693 26.986 33.1916 25.0462 35.0456 24.6968C35.2324 24.682 35.4044 24.6671 35.5614 24.6597Z" fill="#003188"/> +<path d="M35.7184 22.2741C35.0157 22.2667 34.3878 22.0586 33.872 21.568C33.8047 21.5011 33.7374 21.4194 33.6701 21.3525C33.6402 21.3227 33.6477 21.293 33.6701 21.2633C33.872 21.0254 34.0738 20.7802 34.2756 20.5349C34.3205 20.4829 34.3354 20.4903 34.3803 20.5349C34.6494 20.795 34.9559 21.0106 35.3222 21.1072C35.5614 21.1667 35.8006 21.1815 36.0398 21.1146C36.1071 21.0998 36.1669 21.07 36.2267 21.0254C36.4211 20.8842 36.4211 20.6315 36.2267 20.4903C36.1146 20.4011 35.98 20.3565 35.8455 20.2971C35.5315 20.1633 35.2026 20.0444 34.8961 19.8883C34.5971 19.7396 34.3205 19.5538 34.1411 19.264C33.715 18.5876 33.9916 17.6586 34.7092 17.2869C35.1129 17.0863 35.539 17.0268 35.98 17.0565C36.5706 17.0937 37.0939 17.3018 37.52 17.718C37.5798 17.7775 37.6022 17.8146 37.5349 17.8964C37.3406 18.1194 37.1537 18.3498 36.9668 18.5876C36.922 18.6471 36.8995 18.6396 36.8472 18.595C36.5108 18.3126 36.1296 18.1491 35.681 18.1788C35.5838 18.1863 35.4941 18.2086 35.4044 18.2531C35.2175 18.3646 35.1951 18.6025 35.3596 18.7511C35.4418 18.8254 35.5465 18.87 35.6436 18.9146C36.0025 19.0707 36.3762 19.2045 36.7276 19.3754C36.907 19.4646 37.0789 19.5761 37.2359 19.7025C37.6097 20.0295 37.7218 20.4457 37.6546 20.914C37.5499 21.6126 37.0939 21.9917 36.4435 22.1849C36.2118 22.2518 35.9726 22.2815 35.7184 22.2741Z" fill="#003188"/> +<path d="M39.0385 27.2166C39.0385 26.7632 39.0385 26.3842 39.0385 26.0051C39.0385 25.9457 39.0235 25.9234 38.9563 25.9234C38.747 25.9308 38.5302 25.9234 38.3208 25.9234C38.261 25.9234 38.2461 25.9085 38.2461 25.849C38.2461 25.5146 38.2461 25.1801 38.2461 24.8457C38.2461 24.7862 38.2685 24.7713 38.3208 24.7713C38.5302 24.7713 38.747 24.7713 38.9563 24.7713C39.0235 24.7713 39.0385 24.749 39.0385 24.6896C39.0385 24.3254 39.0385 23.9612 39.0385 23.597C39.0385 23.5227 39.0609 23.5078 39.1282 23.5078C39.5319 23.5078 39.9281 23.5152 40.3318 23.5078C40.414 23.5078 40.4215 23.5301 40.4215 23.6044C40.4215 23.9686 40.4215 24.3254 40.4215 24.6896C40.4215 24.7565 40.4439 24.7713 40.5037 24.7713C40.9223 24.7713 41.341 24.7713 41.7596 24.7713C41.8194 24.7713 41.8418 24.7862 41.8418 24.8457C41.8418 25.1801 41.8343 25.5071 41.8418 25.8416C41.8418 25.9159 41.8194 25.9234 41.7521 25.9234C41.3335 25.9234 40.9223 25.9234 40.5037 25.9234C40.4289 25.9234 40.414 25.9382 40.414 26.0125C40.414 26.6443 40.414 27.2761 40.414 27.9078C40.414 28.3612 40.6457 28.6065 41.1092 28.6511C41.3783 28.6734 41.6549 28.6436 41.9241 28.6288C41.9839 28.6213 41.9988 28.6362 41.9988 28.6957C41.9988 29.0301 41.9988 29.3646 41.9988 29.699C41.9988 29.7288 42.0138 29.7585 41.9614 29.7734C41.3709 29.9071 40.7878 29.9443 40.2047 29.7659C39.5394 29.5578 39.1805 29.0896 39.0834 28.4207C39.0086 27.997 39.0535 27.5659 39.0385 27.2166Z" fill="#003188"/> +<path d="M31.524 19.4422C31.5315 19.7247 31.5016 20.074 31.539 20.4233C31.5689 20.7652 31.7558 20.9585 32.0997 21.0254C32.3538 21.07 32.608 21.0551 32.8696 21.0328C32.907 21.0328 32.9444 21.0254 32.9892 21.0254C33.1163 21.0179 33.1163 21.0179 33.1163 21.1517C33.1163 21.4639 33.1163 21.7686 33.1163 22.0808C33.1163 22.1179 33.1238 22.1625 33.064 22.17C32.4734 22.3037 31.8829 22.3335 31.2923 22.1477C30.6644 21.947 30.313 21.5085 30.2009 20.8693C30.171 20.7058 30.1635 20.5422 30.1635 20.3713C30.1635 19.7172 30.1635 19.0632 30.1635 18.4091C30.1635 18.3274 30.1411 18.3051 30.0588 18.3051C29.8495 18.3125 29.6477 18.3051 29.4384 18.3051C29.386 18.3051 29.3711 18.2902 29.3711 18.2382C29.3711 17.8963 29.3711 17.5618 29.3711 17.2199C29.3711 17.1679 29.386 17.1531 29.4384 17.1531C29.6477 17.1531 29.8645 17.1531 30.0738 17.1531C30.1411 17.1531 30.156 17.1382 30.156 17.0713C30.156 16.7071 30.156 16.3429 30.156 15.9787C30.156 15.9118 30.171 15.897 30.2383 15.897C30.6419 15.897 31.0456 15.897 31.4493 15.897C31.5091 15.897 31.5315 15.9118 31.5315 15.9787C31.5315 16.3429 31.5315 16.7071 31.5315 17.0713C31.5315 17.1456 31.5539 17.1605 31.6212 17.1605C32.0398 17.1605 32.451 17.1605 32.8696 17.1605C32.9369 17.1605 32.9593 17.1754 32.9593 17.2497C32.9519 17.5767 32.9593 17.9112 32.9593 18.2382C32.9593 18.3051 32.9369 18.3199 32.8771 18.3125C32.4585 18.3125 32.0398 18.3125 31.6212 18.3125C31.5539 18.3125 31.5315 18.3274 31.5315 18.4017C31.524 18.7287 31.524 19.0558 31.524 19.4422Z" fill="#003188"/> +<path d="M10.7056 19.6653C10.7056 20.4605 10.7056 21.2632 10.7056 22.0585C10.7056 22.1403 10.6831 22.1551 10.6009 22.1551C10.2122 22.1477 9.81599 22.1551 9.42726 22.1551C9.35998 22.1551 9.33008 22.1403 9.33008 22.0659C9.33008 20.4605 9.33008 18.8626 9.33008 17.2572C9.33008 17.1903 9.34503 17.168 9.41978 17.168C9.82346 17.168 10.2197 17.1754 10.6233 17.168C10.6981 17.168 10.7056 17.1977 10.7056 17.2572C10.7056 18.0599 10.7056 18.8626 10.7056 19.6653Z" fill="#003188"/> +<path d="M16.9841 14.6035C16.5954 14.6035 16.1992 14.6109 15.8104 14.6035C15.7282 14.6035 15.6983 14.6184 15.6983 14.7076C15.7058 15.5549 15.6983 16.4096 15.6983 17.2569C15.6983 17.3832 15.6983 17.5022 15.6983 17.6508C15.6534 17.6137 15.631 17.5839 15.6011 17.5616C15.1601 17.1677 14.6368 17.0339 14.0612 17.0711C13.1342 17.1305 12.4614 17.5765 12.0503 18.4015C11.7438 19.0184 11.6989 19.6724 11.8409 20.3414C11.9456 20.8468 12.1848 21.2927 12.5661 21.6569C13.0594 22.1177 13.6575 22.311 14.3303 22.2812C14.8162 22.2589 15.2572 22.1177 15.6161 21.7758C15.6833 21.7164 15.7431 21.642 15.8104 21.5677C15.8104 21.7461 15.8104 21.9096 15.8104 22.0731C15.8104 22.1326 15.8179 22.1623 15.8927 22.1623C16.259 22.1549 16.6253 22.1549 16.999 22.1623C17.0663 22.1623 17.0813 22.14 17.0813 22.0731C17.0813 19.613 17.0813 17.1528 17.0813 14.6853C17.0813 14.6109 17.0514 14.6035 16.9841 14.6035ZM15.6609 20.1481C15.5039 20.6981 15.0479 21.0326 14.4648 21.0326C13.7846 21.0326 13.2463 20.5495 13.1791 19.8657C13.1417 19.4866 13.194 19.1299 13.4183 18.8177C13.7472 18.3718 14.2032 18.2157 14.734 18.3272C15.2647 18.4312 15.5712 18.7805 15.6833 19.3008C15.7506 19.5758 15.7431 19.8657 15.6609 20.1481Z" fill="#003188"/> +<path d="M8.4782 22.0734C8.32869 21.7092 8.17918 21.3376 8.02967 20.9734C7.28212 19.1376 6.53457 17.2943 5.78702 15.4585C5.7646 15.4065 5.73469 15.3916 5.68237 15.3916C5.44315 15.3916 5.19646 15.399 4.95724 15.3916C4.87501 15.3916 4.83763 15.4213 4.80773 15.4957C4.38163 16.5436 3.95552 17.5916 3.52195 18.6396C3.05846 19.7767 2.58751 20.9213 2.11655 22.0659C2.09412 22.1254 2.08665 22.1551 2.16888 22.1551C2.60246 22.1477 3.04351 22.1551 3.47709 22.1551C3.5369 22.1551 3.5668 22.1328 3.58923 22.0808C3.69388 21.8355 3.79854 21.5903 3.9032 21.345C3.91815 21.3004 3.94057 21.293 3.98543 21.293C4.85259 21.293 5.72722 21.293 6.59438 21.293C6.64671 21.293 6.66913 21.3078 6.68408 21.3524C6.78874 21.5977 6.8934 21.843 6.99805 22.0882C7.02048 22.1403 7.04291 22.1626 7.10271 22.1551C7.3195 22.1551 7.53629 22.1551 7.76056 22.1551C7.98482 22.1551 8.19413 22.1551 8.4184 22.1551C8.50063 22.1626 8.50811 22.1403 8.4782 22.0734ZM4.41153 20.1707C4.70308 19.3085 5.0021 18.4463 5.30112 17.5693C5.60014 18.4463 5.89168 19.3085 6.1907 20.1707C5.59266 20.1707 5.00957 20.1707 4.41153 20.1707Z" fill="#003188"/> +<path d="M14.4659 26.4957C14.0996 25.3436 12.9409 24.5781 11.6999 24.6747C11.0197 24.7267 10.4141 24.9646 9.94318 25.4551C9.21058 26.2132 9.0237 27.1126 9.33767 28.1011C9.67406 29.1713 10.7057 29.8774 11.9018 29.8774C12.1111 29.87 12.3428 29.8477 12.5746 29.7882C14.0547 29.4315 14.9219 27.9227 14.4659 26.4957ZM12.2531 28.5693C11.4757 28.7774 10.7206 28.3389 10.6085 27.4916C10.5412 26.9936 10.6608 26.5477 11.0421 26.2058C11.6625 25.6558 12.8138 25.8342 13.1128 26.8376C13.1352 26.9119 13.1502 26.9936 13.1651 27.0754C13.1726 27.1423 13.1726 27.2017 13.1801 27.2686C13.1801 27.9004 12.8212 28.4207 12.2531 28.5693Z" fill="#003188"/> +<path d="M22.6443 19.2414C22.6443 19.0407 22.6293 18.84 22.592 18.6394C22.4649 17.9779 22.1135 17.4873 21.4781 17.2346C20.9773 17.034 20.4614 17.0191 19.9382 17.1083C19.2878 17.2198 18.7645 17.5542 18.3384 18.0448C18.3085 18.0745 18.3085 18.0968 18.3384 18.134C18.5552 18.3792 18.7645 18.6319 18.9738 18.8846C19.0037 18.9218 19.0262 18.9292 19.0635 18.8846C19.1159 18.8326 19.1682 18.7806 19.2205 18.7286C19.5719 18.3941 19.983 18.2009 20.4839 18.2454C20.8203 18.2752 21.0894 18.4164 21.2165 18.7509C21.2763 18.9144 21.2688 19.0853 21.2763 19.2488C21.2763 19.3157 21.2539 19.3306 21.194 19.3306C20.7904 19.3306 20.3867 19.3306 19.983 19.3306C19.6616 19.3306 19.3476 19.3826 19.0486 19.4941C17.86 19.94 17.9422 21.315 18.6001 21.865C18.8916 22.1029 19.228 22.2292 19.5943 22.259C20.14 22.311 20.6558 22.2218 21.1118 21.9096C21.209 21.8427 21.2912 21.7684 21.3884 21.6867C21.3884 21.8205 21.3959 21.9394 21.3884 22.0583C21.3884 22.1326 21.4034 22.1549 21.4781 22.1549C21.8295 22.1475 22.1808 22.1475 22.5322 22.1549C22.6219 22.1549 22.6443 22.14 22.6443 22.0434C22.6443 21.1144 22.6443 20.1779 22.6443 19.2414ZM20.282 21.2779C20.1101 21.2853 19.9456 21.2705 19.7961 21.1961C19.5943 21.0995 19.4822 20.9137 19.5046 20.6982C19.527 20.4752 19.6466 20.3414 19.8784 20.2745C19.9905 20.2448 20.1026 20.2373 20.2148 20.2373C20.3568 20.2373 20.4988 20.2373 20.6334 20.2373C20.8203 20.2373 21.0072 20.2373 21.2015 20.2373C21.2613 20.2373 21.2763 20.2596 21.2763 20.3117C21.2539 20.8394 20.8277 21.263 20.282 21.2779Z" fill="#003188"/> +<path d="M12.0879 16.6029C11.9982 16.536 11.9085 16.4691 11.8188 16.4022C11.7365 16.313 11.6543 16.2164 11.587 16.1198C11.4899 15.9265 11.4001 15.7333 11.3852 15.5103C11.3852 15.5103 11.3852 15.5029 11.3777 15.5029C11.3777 15.5029 11.3777 15.5103 11.3852 15.5103C11.3852 15.3914 11.3777 15.2725 11.4001 15.1535C11.43 14.9677 11.5048 14.8042 11.587 14.6407C11.6618 14.5515 11.7365 14.4549 11.8188 14.3657C11.9085 14.2839 12.0057 14.2171 12.1103 14.1576C12.2598 14.0907 12.4168 14.0387 12.5813 14.0015C12.4318 14.0015 12.2823 14.0015 12.1327 14.0015C12.0281 14.0015 11.9309 14.0015 11.8262 14.0015C11.744 14.0015 11.6618 14.0015 11.5721 14.0015C11.4973 14.0015 11.43 14.0015 11.3553 14.0015C11.288 14.0015 11.2207 14.0015 11.1609 14.0015C11.1011 14.0015 11.0413 14.0015 10.9815 14.0015C10.9217 14.0015 10.8619 14.0015 10.8021 14.0015C10.7423 14.0015 10.6825 14.0015 10.6227 14.0015C10.5629 14.0015 10.5031 14.0015 10.4433 14.0015C10.3835 14.0015 10.3237 14.0015 10.2639 14.0015C10.2115 14.0015 10.1592 14.0015 10.0994 14.0015C10.0471 14.0015 9.99475 14.0015 9.93495 14.0015C9.86767 13.9941 9.80039 14.0164 9.74058 14.0164C9.6434 14.0312 9.54622 14.0758 9.45651 14.1056C9.35933 14.1427 9.2771 14.2096 9.1874 14.2691C9.15749 14.2914 9.12759 14.3062 9.09769 14.3285C8.97061 14.4475 8.86595 14.559 8.87342 14.7671C8.88838 15.2056 8.8809 15.6515 8.87342 16.09C8.87342 16.1569 8.8809 16.2164 8.92575 16.2684C9.00051 16.3427 9.06779 16.4319 9.16497 16.4914C9.25467 16.5583 9.34438 16.6177 9.44904 16.6549C9.53127 16.7069 9.62097 16.7292 9.71816 16.7441C9.78544 16.7664 9.86019 16.7664 9.93495 16.7813C9.98727 16.7813 10.0396 16.7813 10.0994 16.7813C10.1517 16.7813 10.2041 16.7813 10.2639 16.7813C10.3237 16.7813 10.3835 16.7813 10.4433 16.7813C10.5031 16.7813 10.5629 16.7813 10.6227 16.7813C10.6825 16.7813 10.7423 16.7813 10.8021 16.7813C10.8619 16.7813 10.9217 16.7813 10.9815 16.7813C11.0413 16.7813 11.1011 16.7813 11.1609 16.7813C11.2207 16.7813 11.2805 16.7813 11.3403 16.7813C11.4151 16.7813 11.4973 16.7813 11.5721 16.7813C11.6468 16.7813 11.7291 16.7813 11.8038 16.7813C11.901 16.7813 11.9982 16.7813 12.0879 16.7813C12.2598 16.7813 12.4392 16.7813 12.6112 16.7813C12.4318 16.7367 12.2524 16.6846 12.0879 16.6029Z" fill="url(#paint0_linear_6046_4420)"/> +<path d="M12.5528 14.0091C12.9415 13.9719 13.3004 14.0462 13.6143 14.2841C14.0554 14.6185 14.2572 15.1908 14.1227 15.7334C13.9881 16.276 13.5321 16.6773 12.9789 16.7665C12.8444 16.7888 12.7173 16.7814 12.5827 16.7814C12.3958 16.7814 12.2239 16.7219 12.0594 16.6327C11.9622 16.5733 11.8651 16.5064 11.7828 16.4246C11.6857 16.3354 11.6109 16.2388 11.5361 16.1273C11.4315 15.9341 11.3343 15.7408 11.3343 15.5178C11.3194 15.28 11.3418 15.0496 11.439 14.8341C11.4689 14.7746 11.4988 14.7151 11.5287 14.6631C11.5959 14.5591 11.6782 14.4624 11.7754 14.3733C11.8651 14.2841 11.9622 14.2097 12.0744 14.1577C12.2314 14.0685 12.3883 14.0165 12.5528 14.0091Z" fill="#FE3954"/> +<path d="M32.0926 26.674C32.0178 26.0868 31.7712 25.5888 31.3152 25.2098C30.7246 24.7192 30.0294 24.578 29.2893 24.7044C28.0484 24.9125 27.1737 25.9084 27.1214 27.1571C27.0765 28.2942 27.7045 29.2902 28.7585 29.6767C29.8649 30.0855 30.8965 29.9071 31.831 29.1787C31.8758 29.1415 31.8683 29.1192 31.8459 29.0821C31.6814 28.8145 31.517 28.5544 31.36 28.2868C31.3226 28.2199 31.2927 28.2199 31.2329 28.2645C30.747 28.6213 30.2013 28.7848 29.5883 28.6882C29.065 28.6064 28.7062 28.3314 28.5268 27.826C28.5044 27.7517 28.5044 27.7294 28.5941 27.7294C29.1473 27.7368 29.7004 27.7294 30.2536 27.7294C30.8143 27.7294 31.375 27.7294 31.9356 27.7294C31.9879 27.7294 32.0178 27.7219 32.0328 27.6551C32.1001 27.3355 32.1375 27.0084 32.0926 26.674ZM30.6872 26.7706C30.3359 26.7632 29.992 26.7706 29.6406 26.7706C29.2893 26.7706 28.9379 26.7706 28.5866 26.7706C28.5492 26.7706 28.5044 26.7855 28.5268 26.7111C28.6688 26.2429 28.9529 25.9084 29.4537 25.7895C29.9696 25.6706 30.5003 25.9084 30.7022 26.3469C30.747 26.451 30.7694 26.555 30.7844 26.6665C30.7919 26.7483 30.7769 26.7706 30.6872 26.7706Z" fill="#003188"/> +<defs> +<linearGradient id="paint0_linear_6046_4420" x1="8.87504" y1="15.3846" x2="12.6128" y2="15.3846" gradientUnits="userSpaceOnUse"> <stop stop-color="white"/> <stop offset="1" stop-color="#FEACB7"/> </linearGradient> -- GitLab From 3832b09a5a68834247a5bb1f7e80dc7b2c825098 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 17:07:45 +0100 Subject: [PATCH 023/199] services icons --- .../form/structure-form/form.component.html | 2 +- .../form/structure-form/form.component.scss | 3 +- src/assets/form/sprite.svg | 59 ++++++++++--------- 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index d5a8dcf6c..a2c64c834 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -1231,7 +1231,7 @@ <h3>Quels autres services proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> - <div *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start"> + <div *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start" class="otherServices"> <ng-container *ngFor="let equipment of equipmentsAndServices"> <app-checkbox-form *ngIf=" diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 10b4b07e9..8f32a954a 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -170,7 +170,8 @@ h4 { height: 100%; } .welcomingTerms, - .procedureContainer { + .procedureContainer, + .otherServices { max-width: 600px; } } diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 78ec15287..486dd7bc1 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -325,20 +325,21 @@ </defs> </symbol> -<symbol id="accesLivresInformatiques" viewBox="0 0 35 35" xmlns="http://www.w3.org/2000/svg"> -<path d="M3.68164 4.18183C3.68164 3.90568 3.9055 3.68182 4.18164 3.68182H31.6632C31.9393 3.68182 32.1632 3.90568 32.1632 4.18182V24.4545C32.1632 24.7307 31.9393 24.9546 31.6632 24.9546H4.18164C3.9055 24.9546 3.68164 24.7307 3.68164 24.4546V4.18183Z" fill="white" stroke="#4F4F4F"/> -<rect x="3" y="21" width="29" height="4" fill="#4F4F4F" stroke="none"/> -<rect x="15.1135" y="25.4546" width="6.36364" height="3.18182" fill="#333333" stroke="none"/> -<path d="M11.9316 29.244C11.9316 28.8716 12.1421 28.5312 12.4752 28.3646L14.9023 27.151C15.0412 27.0816 15.1943 27.0455 15.3495 27.0455H21.241C21.3963 27.0455 21.5494 27.0816 21.6882 27.151L24.1154 28.3646C24.4485 28.5312 24.6589 28.8716 24.6589 29.244C24.6589 29.7871 24.2187 30.2273 23.6757 30.2273H12.9149C12.3719 30.2273 11.9316 29.7871 11.9316 29.244Z" fill="#4F4F4F" stroke="none"/> -<path d="M17.7498 7.95525L17.7498 7.95478L17.7498 7.95402L17.75 7.94502C17.7503 7.93631 17.7509 7.92239 17.7522 7.90401C17.7549 7.86715 17.7602 7.81287 17.7712 7.74708C17.7933 7.6143 17.8371 7.44109 17.9222 7.27091C18.0068 7.1017 18.1298 6.9401 18.3096 6.82024C18.4878 6.70142 18.7367 6.61365 19.0907 6.61365H19.1H19.1095H19.119H19.1285H19.1382H19.1479H19.1577H19.1675H19.1775H19.1875H19.1975H19.2077H19.2179H19.2281H19.2385H19.2489H19.2594H19.2699H19.2805H19.2912H19.3019H19.3127H19.3236H19.3345H19.3455H19.3566H19.3677H19.3789H19.3902H19.4015H19.4129H19.4243H19.4358H19.4474H19.459H19.4707H19.4824H19.4942H19.5061H19.518H19.53H19.542H19.5541H19.5663H19.5785H19.5907H19.6031H19.6154H19.6279H19.6404H19.6529H19.6655H19.6782H19.6909H19.7036H19.7165H19.7293H19.7423H19.7552H19.7683H19.7813H19.7945H19.8076H19.8209H19.8341H19.8475H19.8609H19.8743H19.8878H19.9013H19.9149H19.9285H19.9421H19.9559H19.9696H19.9834H19.9973H20.0112H20.0251H20.0391H20.0531H20.0672H20.0813H20.0955H20.1097H20.1239H20.1382H20.1526H20.1669H20.1814H20.1958H20.2103H20.2249H20.2394H20.254H20.2687H20.2834H20.2981H20.3129H20.3277H20.3425H20.3574H20.3723H20.3873H20.4023H20.4173H20.4324H20.4475H20.4626H20.4778H20.493H20.5082H20.5235H20.5388H20.5541H20.5695H20.5848H20.6003H20.6157H20.6312H20.6467H20.6623H20.6778H20.6934H20.7091H20.7247H20.7404H20.7561H20.7719H20.7877H20.8035H20.8193H20.8351H20.851H20.8669H20.8828H20.8988H20.9148H20.9308H20.9468H20.9628H20.9789H20.995H21.0111H21.0272H21.0434H21.0595H21.0757H21.092H21.1082H21.1245H21.1407H21.157H21.1733H21.1897H21.206H21.2224H21.2388H21.2551H21.2716H21.288H21.3044H21.3209H21.3374H21.3539H21.3704H21.3869H21.4034H21.42H21.4365H21.4531H21.4697H21.4863H21.5029H21.5195H21.5361H21.5528H21.5694H21.5861H21.6027H21.6194H21.6361H21.6528H21.6695H21.6862H21.7029H21.7196H21.7363H21.7531H21.7698H21.7865H21.8033H21.82H21.8368H21.8536H21.8703H21.8871H21.9039H21.9206H21.9374H21.9542H21.971H21.9877H22.0045H22.0213H22.0381H22.0549H22.0716H22.0884H22.1052H22.122H22.1387H22.1555H22.1723H22.189H22.2058H22.2225H22.2393H22.256H22.2728H22.2895H22.3062H22.323H22.3397H22.3564H22.3731H22.3898H22.4065H22.4232H22.4398H22.4565H22.4731H22.4898H22.5064H22.523H22.5396H22.5562H22.5728H22.5894H22.606H22.6225H22.6391H22.6556H22.6721H22.6886H22.7051H22.7216H22.738H22.7545H22.7709H22.7873H22.8037H22.8201H22.8364H22.8528H22.8691H22.8854H22.9017H22.9179H22.9342H22.9504H22.9666H22.9828H22.999H23.0151H23.0312H23.0473H23.0634H23.0795H23.0955H23.1115H23.1275H23.1435H23.1594H23.1753H23.1912H23.2071H23.2229H23.2387H23.2545H23.2703H23.286H23.3017H23.3174H23.3331H23.3487H23.3643H23.3798H23.3954H23.4109H23.4263H23.4418H23.4572H23.4726H23.4879H23.5032H23.5185H23.5338H23.549H23.5642H23.5793H23.5944H23.6095H23.6246H23.6396H23.6546H23.6695H23.6844H23.6993H23.7141H23.7289H23.7436H23.7584H23.773H23.7877H23.8023H23.8168H23.8314H23.8458H23.8603H23.8747H23.889H23.9034H23.9176H23.9319H23.9461H23.9602H23.9743H23.9884H24.0024H24.0163H24.0303H24.0441H24.058H24.0718H24.0855H24.0992H24.1129H24.1265H24.14H24.1535H24.167H24.1804H24.1937H24.207H24.2203H24.2335H24.2467H24.2598H24.2728H24.2858H24.2988H24.3117H24.3245H24.3373H24.3501H24.3628H24.3754H24.388H24.4005H24.413H24.4254H24.4377H24.45H24.4623H24.4745H24.4866H24.4987H24.5107H24.5226H24.5345H24.5464H24.5582H24.5699H24.5815H24.5931H24.6047H24.6162H24.6276H24.6389H24.6502H24.6614H24.6726H24.6837H24.6947H24.7057H24.7166H24.7275H24.7382H24.749H24.7596H24.7702H24.7807H24.7912H24.8015H24.8118H24.8221H24.8323H24.8424H24.8524H24.8624H24.8723H24.8821H24.8919H24.9016H24.9112H24.9207H24.9302H24.9396H24.9489H24.9582H24.9674H24.9765H24.9855H24.9945H25.0034H25.0122H25.0209H25.0296H25.0382H25.0467H25.0551H25.0634H25.0717H25.0799H25.088H25.0961H25.104H25.1119H25.1197H25.1274H25.1351H25.1426H25.1501H25.1575H25.1648H25.1721H25.1792H25.1863H25.1933H25.2002H25.2043V17.25H25.2002H25.1933H25.1863H25.1792H25.1721H25.1648H25.1575H25.1501H25.1426H25.1351H25.1274H25.1197H25.1119H25.104H25.0961H25.088H25.0799H25.0717H25.0634H25.0551H25.0467H25.0382H25.0296H25.0209H25.0122H25.0034H24.9945H24.9855H24.9765H24.9674H24.9582H24.9489H24.9396H24.9302H24.9207H24.9112H24.9016H24.8919H24.8821H24.8723H24.8624H24.8524H24.8424H24.8323H24.8221H24.8118H24.8015H24.7912H24.7807H24.7702H24.7596H24.749H24.7382H24.7275H24.7166H24.7057H24.6947H24.6837H24.6726H24.6614H24.6502H24.6389H24.6276H24.6162H24.6047H24.5931H24.5815H24.5699H24.5582H24.5464H24.5345H24.5226H24.5107H24.4987H24.4866H24.4745H24.4623H24.45H24.4377H24.4254H24.413H24.4005H24.388H24.3754H24.3628H24.3501H24.3373H24.3245H24.3117H24.2988H24.2858H24.2728H24.2598H24.2467H24.2335H24.2203H24.207H24.1937H24.1804H24.167H24.1535H24.14H24.1265H24.1129H24.0992H24.0855H24.0718H24.058H24.0441H24.0303H24.0163H24.0024H23.9884H23.9743H23.9602H23.9461H23.9319H23.9176H23.9034H23.889H23.8747H23.8603H23.8458H23.8314H23.8168H23.8023H23.7877H23.773H23.7584H23.7436H23.7289H23.7141H23.6993H23.6844H23.6695H23.6546H23.6396H23.6246H23.6095H23.5944H23.5793H23.5642H23.549H23.5338H23.5185H23.5032H23.4879H23.4726H23.4572H23.4418H23.4263H23.4109H23.3954H23.3798H23.3643H23.3487H23.3331H23.3174H23.3017H23.286H23.2703H23.2545H23.2387H23.2229H23.2071H23.1912H23.1753H23.1594H23.1435H23.1275H23.1115H23.0955H23.0795H23.0634H23.0473H23.0312H23.0151H22.999H22.9828H22.9666H22.9504H22.9342H22.9179H22.9017H22.8854H22.8691H22.8528H22.8364H22.8201H22.8037H22.7873H22.7709H22.7545H22.738H22.7216H22.7051H22.6886H22.6721H22.6556H22.6391H22.6225H22.606H22.5894H22.5728H22.5562H22.5396H22.523H22.5064H22.4898H22.4731H22.4565H22.4398H22.4232H22.4065H22.3898H22.3731H22.3564H22.3397H22.323H22.3062H22.2895H22.2728H22.256H22.2393H22.2225H22.2058H22.189H22.1723H22.1555H22.1387H22.122H22.1052H22.0884H22.0716H22.0549H22.0381H22.0213H22.0045H21.9877H21.971H21.9542H21.9374H21.9206H21.9039H21.8871H21.8703H21.8536H21.8368H21.82H21.8033H21.7865H21.7698H21.7531H21.7363H21.7196H21.7029H21.6862H21.6695H21.6528H21.6361H21.6194H21.6027H21.5861H21.5694H21.5528H21.5361H21.5195H21.5029H21.4863H21.4697H21.4531H21.4365H21.42H21.4034H21.3869H21.3704H21.3539H21.3374H21.3209H21.3044H21.288H21.2716H21.2551H21.2388H21.2224H21.206H21.1897H21.1733H21.157H21.1407H21.1245H21.1082H21.092H21.0757H21.0595H21.0434H21.0272H21.0111H20.995H20.9789H20.9628H20.9468H20.9308H20.9148H20.8988H20.8828H20.8669H20.851H20.8351H20.8193H20.8035H20.7877H20.7719H20.7561H20.7404H20.7247H20.7091H20.6934H20.6778H20.6623H20.6467H20.6312H20.6157H20.6003H20.5848H20.5695H20.5541H20.5388H20.5235H20.5082H20.493H20.4778H20.4626H20.4475H20.4324H20.4173H20.4023H20.3873H20.3723H20.3574H20.3425H20.3277H20.3129H20.2981H20.2834H20.2687H20.254H20.2394H20.2249H20.2103H20.1958H20.1814H20.1669H20.1526H20.1382H20.1239H20.1097H20.0955H20.0813H20.0672H20.0531H20.0391H20.0251H20.0112H19.9973H19.9834H19.9696H19.9559H19.9421H19.9285H19.9149H19.9013H19.8878H19.8743H19.8609H19.8475H19.8341H19.8209H19.8076H19.7945H19.7813H19.7683H19.7552H19.7423H19.7293H19.7165H19.7036H19.6909H19.6782H19.6655H19.6529H19.6404H19.6279H19.6154H19.6031H19.5907H19.5785H19.5663H19.5541H19.542H19.53H19.518H19.5061H19.4942H19.4824H19.4707H19.459H19.4474H19.4358H19.4243H19.4129H19.4015H19.3902H19.3789H19.3677H19.3566H19.3455H19.3345H19.3236H19.3127H19.3019H19.2912H19.2805H19.2699H19.2594H19.2489H19.2385H19.2281H19.2179H19.2077H19.1975H19.1875H19.1775H19.1675H19.1577H19.1479H19.1382H19.1285H19.119H19.1095H19.1H19.0907C18.6492 17.25 18.3015 17.3611 18.0322 17.5406C17.9236 17.613 17.8301 17.695 17.7498 17.7821V7.95525Z" fill="none" stroke-width="0.5"/> -<path d="M18.0452 7.95525L18.0452 7.95478L18.0451 7.95402L18.0449 7.94502C18.0446 7.93631 18.044 7.92239 18.0427 7.90401C18.0401 7.86715 18.0347 7.81287 18.0237 7.74708C18.0016 7.6143 17.9578 7.44109 17.8727 7.27091C17.7881 7.1017 17.6651 6.9401 17.4853 6.82024C17.3071 6.70142 17.0582 6.61365 16.7043 6.61365H16.6949H16.6855H16.676H16.6664H16.6567H16.647H16.6372H16.6274H16.6175H16.6075H16.5974H16.5873H16.5771H16.5668H16.5564H16.546H16.5356H16.525H16.5144H16.5037H16.493H16.4822H16.4713H16.4604H16.4494H16.4383H16.4272H16.416H16.4047H16.3934H16.3821H16.3706H16.3591H16.3476H16.3359H16.3242H16.3125H16.3007H16.2888H16.2769H16.2649H16.2529H16.2408H16.2287H16.2164H16.2042H16.1919H16.1795H16.167H16.1545H16.142H16.1294H16.1167H16.104H16.0913H16.0785H16.0656H16.0527H16.0397H16.0267H16.0136H16.0005H15.9873H15.9741H15.9608H15.9474H15.9341H15.9206H15.9072H15.8936H15.8801H15.8664H15.8528H15.8391H15.8253H15.8115H15.7976H15.7838H15.7698H15.7558H15.7418H15.7277H15.7136H15.6994H15.6852H15.671H15.6567H15.6424H15.628H15.6136H15.5991H15.5846H15.5701H15.5555H15.5409H15.5262H15.5115H15.4968H15.482H15.4672H15.4524H15.4375H15.4226H15.4076H15.3926H15.3776H15.3625H15.3474H15.3323H15.3172H15.302H15.2867H15.2715H15.2562H15.2408H15.2255H15.2101H15.1947H15.1792H15.1637H15.1482H15.1327H15.1171H15.1015H15.0858H15.0702H15.0545H15.0388H15.023H15.0073H14.9915H14.9756H14.9598H14.9439H14.928H14.9121H14.8961H14.8802H14.8642H14.8481H14.8321H14.816H14.7999H14.7838H14.7677H14.7515H14.7354H14.7192H14.703H14.6867H14.6705H14.6542H14.6379H14.6216H14.6053H14.5889H14.5726H14.5562H14.5398H14.5234H14.5069H14.4905H14.474H14.4575H14.4411H14.4246H14.408H14.3915H14.375H14.3584H14.3418H14.3252H14.3087H14.2921H14.2754H14.2588H14.2422H14.2255H14.2089H14.1922H14.1755H14.1588H14.1422H14.1255H14.1088H14.092H14.0753H14.0586H14.0419H14.0251H14.0084H13.9916H13.9749H13.9581H13.9414H13.9246H13.9078H13.8911H13.8743H13.8575H13.8407H13.824H13.8072H13.7904H13.7736H13.7569H13.7401H13.7233H13.7065H13.6897H13.673H13.6562H13.6394H13.6227H13.6059H13.5891H13.5724H13.5556H13.5389H13.5222H13.5054H13.4887H13.472H13.4552H13.4385H13.4218H13.4051H13.3884H13.3718H13.3551H13.3384H13.3218H13.3051H13.2885H13.2719H13.2553H13.2387H13.2221H13.2055H13.1889H13.1724H13.1559H13.1393H13.1228H13.1063H13.0898H13.0734H13.0569H13.0405H13.024H13.0076H12.9912H12.9749H12.9585H12.9422H12.9258H12.9095H12.8933H12.877H12.8607H12.8445H12.8283H12.8121H12.796H12.7798H12.7637H12.7476H12.7315H12.7154H12.6994H12.6834H12.6674H12.6514H12.6355H12.6196H12.6037H12.5878H12.572H12.5562H12.5404H12.5246H12.5089H12.4932H12.4775H12.4619H12.4463H12.4307H12.4151H12.3996H12.3841H12.3686H12.3531H12.3377H12.3224H12.307H12.2917H12.2764H12.2612H12.2459H12.2307H12.2156H12.2005H12.1854H12.1704H12.1553H12.1404H12.1254H12.1105H12.0957H12.0808H12.066H12.0513H12.0366H12.0219H12.0072H11.9926H11.9781H11.9636H11.9491H11.9346H11.9202H11.9059H11.8916H11.8773H11.8631H11.8489H11.8347H11.8206H11.8066H11.7926H11.7786H11.7647H11.7508H11.7369H11.7232H11.7094H11.6957H11.6821H11.6685H11.6549H11.6414H11.628H11.6145H11.6012H11.5879H11.5746H11.5614H11.5482H11.5351H11.5221H11.5091H11.4961H11.4832H11.4704H11.4576H11.4448H11.4322H11.4195H11.4069H11.3944H11.382H11.3695H11.3572H11.3449H11.3326H11.3204H11.3083H11.2962H11.2842H11.2723H11.2604H11.2485H11.2368H11.225H11.2134H11.2018H11.1902H11.1788H11.1674H11.156H11.1447H11.1335H11.1223H11.1112H11.1002H11.0892H11.0783H11.0675H11.0567H11.046H11.0353H11.0247H11.0142H11.0038H10.9934H10.9831H10.9728H10.9627H10.9525H10.9425H10.9325H10.9226H10.9128H10.903H10.8934H10.8837H10.8742H10.8647H10.8553H10.846H10.8367H10.8276H10.8184H10.8094H10.8004H10.7916H10.7828H10.774H10.7654H10.7568H10.7483H10.7398H10.7315H10.7232H10.715H10.7069H10.6989H10.6909H10.683H10.6752H10.6675H10.6598H10.6523H10.6448H10.6374H10.6301H10.6229H10.6157H10.6086H10.6016H10.5947H10.5906V17.25H10.5947H10.6016H10.6086H10.6157H10.6229H10.6301H10.6374H10.6448H10.6523H10.6598H10.6675H10.6752H10.683H10.6909H10.6989H10.7069H10.715H10.7232H10.7315H10.7398H10.7483H10.7568H10.7654H10.774H10.7828H10.7916H10.8004H10.8094H10.8184H10.8276H10.8367H10.846H10.8553H10.8647H10.8742H10.8837H10.8934H10.903H10.9128H10.9226H10.9325H10.9425H10.9525H10.9627H10.9728H10.9831H10.9934H11.0038H11.0142H11.0247H11.0353H11.046H11.0567H11.0675H11.0783H11.0892H11.1002H11.1112H11.1223H11.1335H11.1447H11.156H11.1674H11.1788H11.1902H11.2018H11.2134H11.225H11.2368H11.2485H11.2604H11.2723H11.2842H11.2962H11.3083H11.3204H11.3326H11.3449H11.3572H11.3695H11.382H11.3944H11.4069H11.4195H11.4322H11.4448H11.4576H11.4704H11.4832H11.4961H11.5091H11.5221H11.5351H11.5482H11.5614H11.5746H11.5879H11.6012H11.6145H11.628H11.6414H11.6549H11.6685H11.6821H11.6957H11.7094H11.7232H11.7369H11.7508H11.7647H11.7786H11.7926H11.8066H11.8206H11.8347H11.8489H11.8631H11.8773H11.8916H11.9059H11.9202H11.9346H11.9491H11.9636H11.9781H11.9926H12.0072H12.0219H12.0366H12.0513H12.066H12.0808H12.0957H12.1105H12.1254H12.1404H12.1553H12.1704H12.1854H12.2005H12.2156H12.2307H12.2459H12.2612H12.2764H12.2917H12.307H12.3224H12.3377H12.3531H12.3686H12.3841H12.3996H12.4151H12.4307H12.4463H12.4619H12.4775H12.4932H12.5089H12.5246H12.5404H12.5562H12.572H12.5878H12.6037H12.6196H12.6355H12.6514H12.6674H12.6834H12.6994H12.7154H12.7315H12.7476H12.7637H12.7798H12.796H12.8121H12.8283H12.8445H12.8607H12.877H12.8933H12.9095H12.9258H12.9422H12.9585H12.9749H12.9912H13.0076H13.024H13.0405H13.0569H13.0734H13.0898H13.1063H13.1228H13.1393H13.1559H13.1724H13.1889H13.2055H13.2221H13.2387H13.2553H13.2719H13.2885H13.3051H13.3218H13.3384H13.3551H13.3718H13.3884H13.4051H13.4218H13.4385H13.4552H13.472H13.4887H13.5054H13.5222H13.5389H13.5556H13.5724H13.5891H13.6059H13.6227H13.6394H13.6562H13.673H13.6897H13.7065H13.7233H13.7401H13.7569H13.7736H13.7904H13.8072H13.824H13.8407H13.8575H13.8743H13.8911H13.9078H13.9246H13.9414H13.9581H13.9749H13.9916H14.0084H14.0251H14.0419H14.0586H14.0753H14.092H14.1088H14.1255H14.1422H14.1588H14.1755H14.1922H14.2089H14.2255H14.2422H14.2588H14.2754H14.2921H14.3087H14.3252H14.3418H14.3584H14.375H14.3915H14.408H14.4246H14.4411H14.4575H14.474H14.4905H14.5069H14.5234H14.5398H14.5562H14.5726H14.5889H14.6053H14.6216H14.6379H14.6542H14.6705H14.6867H14.703H14.7192H14.7354H14.7515H14.7677H14.7838H14.7999H14.816H14.8321H14.8481H14.8642H14.8802H14.8961H14.9121H14.928H14.9439H14.9598H14.9756H14.9915H15.0073H15.023H15.0388H15.0545H15.0702H15.0858H15.1015H15.1171H15.1327H15.1482H15.1637H15.1792H15.1947H15.2101H15.2255H15.2408H15.2562H15.2715H15.2867H15.302H15.3172H15.3323H15.3474H15.3625H15.3776H15.3926H15.4076H15.4226H15.4375H15.4524H15.4672H15.482H15.4968H15.5115H15.5262H15.5409H15.5555H15.5701H15.5846H15.5991H15.6136H15.628H15.6424H15.6567H15.671H15.6852H15.6994H15.7136H15.7277H15.7418H15.7558H15.7698H15.7838H15.7976H15.8115H15.8253H15.8391H15.8528H15.8664H15.8801H15.8936H15.9072H15.9206H15.9341H15.9474H15.9608H15.9741H15.9873H16.0005H16.0136H16.0267H16.0397H16.0527H16.0656H16.0785H16.0913H16.104H16.1167H16.1294H16.142H16.1545H16.167H16.1795H16.1919H16.2042H16.2164H16.2287H16.2408H16.2529H16.2649H16.2769H16.2888H16.3007H16.3125H16.3242H16.3359H16.3476H16.3591H16.3706H16.3821H16.3934H16.4047H16.416H16.4272H16.4383H16.4494H16.4604H16.4713H16.4822H16.493H16.5037H16.5144H16.525H16.5356H16.546H16.5564H16.5668H16.5771H16.5873H16.5974H16.6075H16.6175H16.6274H16.6372H16.647H16.6567H16.6664H16.676H16.6855H16.6949H16.7043C17.1457 17.25 17.4935 17.3611 17.7627 17.5406C17.8714 17.613 17.9648 17.695 18.0452 17.7821V7.95525Z" fill="none" stroke-width="0.5"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M10.5 7.95456H8.71143V19.0909H15.5906C16.0738 19.0909 16.8128 19.1928 17.0823 19.3451C17.1152 19.3636 17.1308 19.4099 17.1504 19.4679C17.2053 19.6307 17.2915 19.8864 17.8778 19.8864C18.6732 19.8864 18.6732 19.4157 18.6732 19.4157C18.9989 19.2252 19.458 19.0909 20.105 19.0909H27.0452V7.95456H25.5V17H10.5V7.95456Z" stroke="none"/> -<rect x="11.9316" y="9.54547" width="4.77273" height="0.795455" rx="0.397727" stroke="none"/> -<rect x="19.0908" y="9.54547" width="4.77273" height="0.795455" rx="0.397727" stroke="none"/> -<rect x="11.9316" y="11.9318" width="4.77273" height="0.795455" rx="0.397727" stroke="none"/> -<rect x="19.0908" y="11.9318" width="4.77273" height="0.795455" rx="0.397727" stroke="none"/> -<rect x="11.9316" y="14.3182" width="4.77273" height="0.795455" rx="0.397727" stroke="none"/> -<rect x="19.0908" y="14.3182" width="4.77273" height="0.795455" rx="0.397727" stroke="none"/> +<symbol id="accesLivresInformatiques" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M7 10H37V27C37 28.1046 36.1046 29 35 29H9C7.89543 29 7 28.1046 7 27V10Z" fill="white"/> +<rect x="6.25" y="9.25" width="31.5" height="20.5" rx="2.75" stroke="#333333" stroke-width="1.5"/> +<path d="M6 27C6 28.1046 6.89543 29 8 29H36C37.1046 29 38 28.1046 38 27H6Z" fill="#333333"/> +<path d="M17 34L28 34" stroke="#333333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M23.25 30V29.25H21.75V30H23.25ZM21.75 34C21.75 34.4142 22.0858 34.75 22.5 34.75C22.9142 34.75 23.25 34.4142 23.25 34H21.75ZM21.75 30C21.75 30.0038 21.75 30.0076 21.75 30.0114C21.75 30.0152 21.75 30.019 21.75 30.0228C21.75 30.0266 21.75 30.0304 21.75 30.0341C21.75 30.0379 21.75 30.0417 21.75 30.0454C21.75 30.0492 21.75 30.0529 21.75 30.0567C21.75 30.0604 21.75 30.0642 21.75 30.0679C21.75 30.0716 21.75 30.0753 21.75 30.0791C21.75 30.0828 21.75 30.0865 21.75 30.0902C21.75 30.0939 21.75 30.0976 21.75 30.1013C21.75 30.105 21.75 30.1086 21.75 30.1123C21.75 30.116 21.75 30.1197 21.75 30.1233C21.75 30.127 21.75 30.1306 21.75 30.1343C21.75 30.1379 21.75 30.1416 21.75 30.1452C21.75 30.1488 21.75 30.1525 21.75 30.1561C21.75 30.1597 21.75 30.1633 21.75 30.1669C21.75 30.1705 21.75 30.1741 21.75 30.1777C21.75 30.1813 21.75 30.1849 21.75 30.1885C21.75 30.1921 21.75 30.1956 21.75 30.1992C21.75 30.2028 21.75 30.2063 21.75 30.2099C21.75 30.2135 21.75 30.217 21.75 30.2205C21.75 30.2241 21.75 30.2276 21.75 30.2311C21.75 30.2347 21.75 30.2382 21.75 30.2417C21.75 30.2452 21.75 30.2487 21.75 30.2522C21.75 30.2557 21.75 30.2592 21.75 30.2627C21.75 30.2662 21.75 30.2697 21.75 30.2732C21.75 30.2766 21.75 30.2801 21.75 30.2836C21.75 30.287 21.75 30.2905 21.75 30.294C21.75 30.2974 21.75 30.3009 21.75 30.3043C21.75 30.3077 21.75 30.3112 21.75 30.3146C21.75 30.318 21.75 30.3214 21.75 30.3248C21.75 30.3283 21.75 30.3317 21.75 30.3351C21.75 30.3385 21.75 30.3419 21.75 30.3453C21.75 30.3486 21.75 30.352 21.75 30.3554C21.75 30.3588 21.75 30.3621 21.75 30.3655C21.75 30.3689 21.75 30.3722 21.75 30.3756C21.75 30.3789 21.75 30.3823 21.75 30.3856C21.75 30.389 21.75 30.3923 21.75 30.3956C21.75 30.3989 21.75 30.4023 21.75 30.4056C21.75 30.4089 21.75 30.4122 21.75 30.4155C21.75 30.4188 21.75 30.4221 21.75 30.4254C21.75 30.4287 21.75 30.432 21.75 30.4353C21.75 30.4385 21.75 30.4418 21.75 30.4451C21.75 30.4483 21.75 30.4516 21.75 30.4549C21.75 30.4581 21.75 30.4614 21.75 30.4646C21.75 30.4678 21.75 30.4711 21.75 30.4743C21.75 30.4776 21.75 30.4808 21.75 30.484C21.75 30.4872 21.75 30.4904 21.75 30.4936C21.75 30.4968 21.75 30.5001 21.75 30.5032C21.75 30.5064 21.75 30.5096 21.75 30.5128C21.75 30.516 21.75 30.5192 21.75 30.5224C21.75 30.5255 21.75 30.5287 21.75 30.5319C21.75 30.535 21.75 30.5382 21.75 30.5413C21.75 30.5445 21.75 30.5476 21.75 30.5508C21.75 30.5539 21.75 30.5571 21.75 30.5602C21.75 30.5633 21.75 30.5664 21.75 30.5696C21.75 30.5727 21.75 30.5758 21.75 30.5789C21.75 30.582 21.75 30.5851 21.75 30.5882C21.75 30.5913 21.75 30.5944 21.75 30.5975C21.75 30.6005 21.75 30.6036 21.75 30.6067C21.75 30.6098 21.75 30.6128 21.75 30.6159C21.75 30.619 21.75 30.622 21.75 30.6251C21.75 30.6281 21.75 30.6312 21.75 30.6342C21.75 30.6373 21.75 30.6403 21.75 30.6433C21.75 30.6464 21.75 30.6494 21.75 30.6524C21.75 30.6554 21.75 30.6584 21.75 30.6614C21.75 30.6645 21.75 30.6675 21.75 30.6705C21.75 30.6735 21.75 30.6765 21.75 30.6794C21.75 30.6824 21.75 30.6854 21.75 30.6884C21.75 30.6914 21.75 30.6943 21.75 30.6973C21.75 30.7003 21.75 30.7032 21.75 30.7062C21.75 30.7092 21.75 30.7121 21.75 30.715C21.75 30.718 21.75 30.7209 21.75 30.7239C21.75 30.7268 21.75 30.7297 21.75 30.7327C21.75 30.7356 21.75 30.7385 21.75 30.7414C21.75 30.7444 21.75 30.7473 21.75 30.7502C21.75 30.7531 21.75 30.756 21.75 30.7589C21.75 30.7618 21.75 30.7647 21.75 30.7675C21.75 30.7704 21.75 30.7733 21.75 30.7762C21.75 30.7791 21.75 30.7819 21.75 30.7848C21.75 30.7877 21.75 30.7905 21.75 30.7934C21.75 30.7962 21.75 30.7991 21.75 30.8019C21.75 30.8048 21.75 30.8076 21.75 30.8105C21.75 30.8133 21.75 30.8161 21.75 30.819C21.75 30.8218 21.75 30.8246 21.75 30.8274C21.75 30.8303 21.75 30.8331 21.75 30.8359C21.75 30.8387 21.75 30.8415 21.75 30.8443C21.75 30.8471 21.75 30.8499 21.75 30.8527C21.75 30.8555 21.75 30.8583 21.75 30.861C21.75 30.8638 21.75 30.8666 21.75 30.8694C21.75 30.8721 21.75 30.8749 21.75 30.8777C21.75 30.8804 21.75 30.8832 21.75 30.8859C21.75 30.8887 21.75 30.8914 21.75 30.8942C21.75 30.8969 21.75 30.8997 21.75 30.9024C21.75 30.9051 21.75 30.9079 21.75 30.9106C21.75 30.9133 21.75 30.916 21.75 30.9188C21.75 30.9215 21.75 30.9242 21.75 30.9269C21.75 30.9296 21.75 30.9323 21.75 30.935C21.75 30.9377 21.75 30.9404 21.75 30.9431C21.75 30.9458 21.75 30.9485 21.75 30.9512C21.75 30.9538 21.75 30.9565 21.75 30.9592C21.75 30.9619 21.75 30.9645 21.75 30.9672C21.75 30.9699 21.75 30.9725 21.75 30.9752C21.75 30.9778 21.75 30.9805 21.75 30.9831C21.75 30.9858 21.75 30.9884 21.75 30.9911C21.75 30.9937 21.75 30.9963 21.75 30.999C21.75 31.0016 21.75 31.0042 21.75 31.0068C21.75 31.0095 21.75 31.0121 21.75 31.0147C21.75 31.0173 21.75 31.0199 21.75 31.0225C21.75 31.0251 21.75 31.0277 21.75 31.0303C21.75 31.0329 21.75 31.0355 21.75 31.0381C21.75 31.0407 21.75 31.0433 21.75 31.0459C21.75 31.0484 21.75 31.051 21.75 31.0536C21.75 31.0562 21.75 31.0587 21.75 31.0613C21.75 31.0639 21.75 31.0664 21.75 31.069C21.75 31.0715 21.75 31.0741 21.75 31.0767C21.75 31.0792 21.75 31.0817 21.75 31.0843C21.75 31.0868 21.75 31.0894 21.75 31.0919C21.75 31.0944 21.75 31.097 21.75 31.0995C21.75 31.102 21.75 31.1045 21.75 31.1071C21.75 31.1096 21.75 31.1121 21.75 31.1146C21.75 31.1171 21.75 31.1196 21.75 31.1221C21.75 31.1246 21.75 31.1271 21.75 31.1296C21.75 31.1321 21.75 31.1346 21.75 31.1371C21.75 31.1396 21.75 31.1421 21.75 31.1446C21.75 31.147 21.75 31.1495 21.75 31.152C21.75 31.1545 21.75 31.1569 21.75 31.1594C21.75 31.1619 21.75 31.1643 21.75 31.1668C21.75 31.1693 21.75 31.1717 21.75 31.1742C21.75 31.1766 21.75 31.1791 21.75 31.1815C21.75 31.184 21.75 31.1864 21.75 31.1889C21.75 31.1913 21.75 31.1937 21.75 31.1962C21.75 31.1986 21.75 31.201 21.75 31.2034C21.75 31.2059 21.75 31.2083 21.75 31.2107C21.75 31.2131 21.75 31.2155 21.75 31.218C21.75 31.2204 21.75 31.2228 21.75 31.2252C21.75 31.2276 21.75 31.23 21.75 31.2324C21.75 31.2348 21.75 31.2372 21.75 31.2396C21.75 31.242 21.75 31.2443 21.75 31.2467C21.75 31.2491 21.75 31.2515 21.75 31.2539C21.75 31.2563 21.75 31.2586 21.75 31.261C21.75 31.2634 21.75 31.2657 21.75 31.2681C21.75 31.2705 21.75 31.2728 21.75 31.2752C21.75 31.2776 21.75 31.2799 21.75 31.2823C21.75 31.2846 21.75 31.287 21.75 31.2893C21.75 31.2917 21.75 31.294 21.75 31.2963C21.75 31.2987 21.75 31.301 21.75 31.3034C21.75 31.3057 21.75 31.308 21.75 31.3103C21.75 31.3127 21.75 31.315 21.75 31.3173C21.75 31.3196 21.75 31.322 21.75 31.3243C21.75 31.3266 21.75 31.3289 21.75 31.3312C21.75 31.3335 21.75 31.3358 21.75 31.3381C21.75 31.3404 21.75 31.3427 21.75 31.345C21.75 31.3473 21.75 31.3496 21.75 31.3519C21.75 31.3542 21.75 31.3565 21.75 31.3588C21.75 31.3611 21.75 31.3634 21.75 31.3657C21.75 31.3679 21.75 31.3702 21.75 31.3725C21.75 31.3748 21.75 31.377 21.75 31.3793C21.75 31.3816 21.75 31.3839 21.75 31.3861C21.75 31.3884 21.75 31.3907 21.75 31.3929C21.75 31.3952 21.75 31.3974 21.75 31.3997C21.75 31.4019 21.75 31.4042 21.75 31.4064C21.75 31.4087 21.75 31.4109 21.75 31.4132C21.75 31.4154 21.75 31.4177 21.75 31.4199C21.75 31.4221 21.75 31.4244 21.75 31.4266C21.75 31.4288 21.75 31.4311 21.75 31.4333C21.75 31.4355 21.75 31.4378 21.75 31.44C21.75 31.4422 21.75 31.4444 21.75 31.4466C21.75 31.4489 21.75 31.4511 21.75 31.4533C21.75 31.4555 21.75 31.4577 21.75 31.4599C21.75 31.4621 21.75 31.4643 21.75 31.4665C21.75 31.4688 21.75 31.471 21.75 31.4732C21.75 31.4754 21.75 31.4775 21.75 31.4797C21.75 31.4819 21.75 31.4841 21.75 31.4863C21.75 31.4885 21.75 31.4907 21.75 31.4929C21.75 31.4951 21.75 31.4973 21.75 31.4994C21.75 31.5016 21.75 31.5038 21.75 31.506C21.75 31.5081 21.75 31.5103 21.75 31.5125C21.75 31.5147 21.75 31.5168 21.75 31.519C21.75 31.5212 21.75 31.5233 21.75 31.5255C21.75 31.5277 21.75 31.5298 21.75 31.532C21.75 31.5341 21.75 31.5363 21.75 31.5385C21.75 31.5406 21.75 31.5428 21.75 31.5449C21.75 31.5471 21.75 31.5492 21.75 31.5514C21.75 31.5535 21.75 31.5557 21.75 31.5578C21.75 31.5599 21.75 31.5621 21.75 31.5642C21.75 31.5664 21.75 31.5685 21.75 31.5706C21.75 31.5728 21.75 31.5749 21.75 31.577C21.75 31.5792 21.75 31.5813 21.75 31.5834C21.75 31.5855 21.75 31.5877 21.75 31.5898C21.75 31.5919 21.75 31.594 21.75 31.5962C21.75 31.5983 21.75 31.6004 21.75 31.6025C21.75 31.6046 21.75 31.6067 21.75 31.6089C21.75 31.611 21.75 31.6131 21.75 31.6152C21.75 31.6173 21.75 31.6194 21.75 31.6215C21.75 31.6236 21.75 31.6257 21.75 31.6278C21.75 31.6299 21.75 31.632 21.75 31.6341C21.75 31.6362 21.75 31.6383 21.75 31.6404C21.75 31.6425 21.75 31.6446 21.75 31.6467C21.75 31.6488 21.75 31.6509 21.75 31.653C21.75 31.6551 21.75 31.6572 21.75 31.6592C21.75 31.6613 21.75 31.6634 21.75 31.6655C21.75 31.6676 21.75 31.6697 21.75 31.6717C21.75 31.6738 21.75 31.6759 21.75 31.678C21.75 31.6801 21.75 31.6821 21.75 31.6842C21.75 31.6863 21.75 31.6883 21.75 31.6904C21.75 31.6925 21.75 31.6946 21.75 31.6966C21.75 31.6987 21.75 31.7008 21.75 31.7028C21.75 31.7049 21.75 31.707 21.75 31.709C21.75 31.7111 21.75 31.7132 21.75 31.7152C21.75 31.7173 21.75 31.7193 21.75 31.7214C21.75 31.7234 21.75 31.7255 21.75 31.7276C21.75 31.7296 21.75 31.7317 21.75 31.7337C21.75 31.7358 21.75 31.7378 21.75 31.7399C21.75 31.7419 21.75 31.744 21.75 31.746C21.75 31.7481 21.75 31.7501 21.75 31.7522C21.75 31.7542 21.75 31.7563 21.75 31.7583C21.75 31.7603 21.75 31.7624 21.75 31.7644C21.75 31.7665 21.75 31.7685 21.75 31.7706C21.75 31.7726 21.75 31.7746 21.75 31.7767C21.75 31.7787 21.75 31.7807 21.75 31.7828C21.75 31.7848 21.75 31.7868 21.75 31.7889C21.75 31.7909 21.75 31.7929 21.75 31.795C21.75 31.797 21.75 31.799 21.75 31.8011C21.75 31.8031 21.75 31.8051 21.75 31.8072C21.75 31.8092 21.75 31.8112 21.75 31.8132C21.75 31.8153 21.75 31.8173 21.75 31.8193C21.75 31.8213 21.75 31.8234 21.75 31.8254C21.75 31.8274 21.75 31.8294 21.75 31.8314C21.75 31.8335 21.75 31.8355 21.75 31.8375C21.75 31.8395 21.75 31.8415 21.75 31.8436C21.75 31.8456 21.75 31.8476 21.75 31.8496C21.75 31.8516 21.75 31.8536 21.75 31.8557C21.75 31.8577 21.75 31.8597 21.75 31.8617C21.75 31.8637 21.75 31.8657 21.75 31.8677C21.75 31.8698 21.75 31.8718 21.75 31.8738C21.75 31.8758 21.75 31.8778 21.75 31.8798C21.75 31.8818 21.75 31.8838 21.75 31.8858C21.75 31.8879 21.75 31.8899 21.75 31.8919C21.75 31.8939 21.75 31.8959 21.75 31.8979C21.75 31.8999 21.75 31.9019 21.75 31.9039C21.75 31.9059 21.75 31.9079 21.75 31.9099C21.75 31.9119 21.75 31.9139 21.75 31.9159C21.75 31.918 21.75 31.92 21.75 31.922C21.75 31.924 21.75 31.926 21.75 31.928C21.75 31.93 21.75 31.932 21.75 31.934C21.75 31.936 21.75 31.938 21.75 31.94C21.75 31.942 21.75 31.944 21.75 31.946C21.75 31.948 21.75 31.95 21.75 31.952C21.75 31.954 21.75 31.956 21.75 31.958C21.75 31.96 21.75 31.962 21.75 31.964C21.75 31.966 21.75 31.968 21.75 31.97C21.75 31.972 21.75 31.974 21.75 31.976C21.75 31.978 21.75 31.98 21.75 31.982C21.75 31.984 21.75 31.986 21.75 31.988C21.75 31.99 21.75 31.992 21.75 31.994C21.75 31.996 21.75 31.998 21.75 32C21.75 32.002 21.75 32.004 21.75 32.006C21.75 32.008 21.75 32.01 21.75 32.012C21.75 32.014 21.75 32.016 21.75 32.018C21.75 32.02 21.75 32.022 21.75 32.024C21.75 32.026 21.75 32.028 21.75 32.03C21.75 32.032 21.75 32.034 21.75 32.036C21.75 32.038 21.75 32.04 21.75 32.042C21.75 32.044 21.75 32.046 21.75 32.048C21.75 32.05 21.75 32.052 21.75 32.054C21.75 32.056 21.75 32.058 21.75 32.06C21.75 32.062 21.75 32.064 21.75 32.066C21.75 32.068 21.75 32.07 21.75 32.072C21.75 32.074 21.75 32.076 21.75 32.078C21.75 32.08 21.75 32.082 21.75 32.0841C21.75 32.0861 21.75 32.0881 21.75 32.0901C21.75 32.0921 21.75 32.0941 21.75 32.0961C21.75 32.0981 21.75 32.1001 21.75 32.1021C21.75 32.1041 21.75 32.1061 21.75 32.1081C21.75 32.1101 21.75 32.1121 21.75 32.1142C21.75 32.1162 21.75 32.1182 21.75 32.1202C21.75 32.1222 21.75 32.1242 21.75 32.1262C21.75 32.1282 21.75 32.1302 21.75 32.1323C21.75 32.1343 21.75 32.1363 21.75 32.1383C21.75 32.1403 21.75 32.1423 21.75 32.1443C21.75 32.1464 21.75 32.1484 21.75 32.1504C21.75 32.1524 21.75 32.1544 21.75 32.1564C21.75 32.1585 21.75 32.1605 21.75 32.1625C21.75 32.1645 21.75 32.1665 21.75 32.1686C21.75 32.1706 21.75 32.1726 21.75 32.1746C21.75 32.1766 21.75 32.1787 21.75 32.1807C21.75 32.1827 21.75 32.1847 21.75 32.1868C21.75 32.1888 21.75 32.1908 21.75 32.1928C21.75 32.1949 21.75 32.1969 21.75 32.1989C21.75 32.201 21.75 32.203 21.75 32.205C21.75 32.2071 21.75 32.2091 21.75 32.2111C21.75 32.2132 21.75 32.2152 21.75 32.2172C21.75 32.2193 21.75 32.2213 21.75 32.2233C21.75 32.2254 21.75 32.2274 21.75 32.2294C21.75 32.2315 21.75 32.2335 21.75 32.2356C21.75 32.2376 21.75 32.2397 21.75 32.2417C21.75 32.2437 21.75 32.2458 21.75 32.2478C21.75 32.2499 21.75 32.2519 21.75 32.254C21.75 32.256 21.75 32.2581 21.75 32.2601C21.75 32.2622 21.75 32.2642 21.75 32.2663C21.75 32.2683 21.75 32.2704 21.75 32.2724C21.75 32.2745 21.75 32.2766 21.75 32.2786C21.75 32.2807 21.75 32.2827 21.75 32.2848C21.75 32.2868 21.75 32.2889 21.75 32.291C21.75 32.293 21.75 32.2951 21.75 32.2972C21.75 32.2992 21.75 32.3013 21.75 32.3034C21.75 32.3054 21.75 32.3075 21.75 32.3096C21.75 32.3117 21.75 32.3137 21.75 32.3158C21.75 32.3179 21.75 32.3199 21.75 32.322C21.75 32.3241 21.75 32.3262 21.75 32.3283C21.75 32.3303 21.75 32.3324 21.75 32.3345C21.75 32.3366 21.75 32.3387 21.75 32.3408C21.75 32.3428 21.75 32.3449 21.75 32.347C21.75 32.3491 21.75 32.3512 21.75 32.3533C21.75 32.3554 21.75 32.3575 21.75 32.3596C21.75 32.3617 21.75 32.3638 21.75 32.3659C21.75 32.368 21.75 32.3701 21.75 32.3722C21.75 32.3743 21.75 32.3764 21.75 32.3785C21.75 32.3806 21.75 32.3827 21.75 32.3848C21.75 32.3869 21.75 32.389 21.75 32.3911C21.75 32.3933 21.75 32.3954 21.75 32.3975C21.75 32.3996 21.75 32.4017 21.75 32.4038C21.75 32.406 21.75 32.4081 21.75 32.4102C21.75 32.4123 21.75 32.4145 21.75 32.4166C21.75 32.4187 21.75 32.4208 21.75 32.423C21.75 32.4251 21.75 32.4272 21.75 32.4294C21.75 32.4315 21.75 32.4336 21.75 32.4358C21.75 32.4379 21.75 32.4401 21.75 32.4422C21.75 32.4443 21.75 32.4465 21.75 32.4486C21.75 32.4508 21.75 32.4529 21.75 32.4551C21.75 32.4572 21.75 32.4594 21.75 32.4615C21.75 32.4637 21.75 32.4659 21.75 32.468C21.75 32.4702 21.75 32.4723 21.75 32.4745C21.75 32.4767 21.75 32.4788 21.75 32.481C21.75 32.4832 21.75 32.4853 21.75 32.4875C21.75 32.4897 21.75 32.4919 21.75 32.494C21.75 32.4962 21.75 32.4984 21.75 32.5006C21.75 32.5027 21.75 32.5049 21.75 32.5071C21.75 32.5093 21.75 32.5115 21.75 32.5137C21.75 32.5159 21.75 32.5181 21.75 32.5203C21.75 32.5225 21.75 32.5246 21.75 32.5268C21.75 32.529 21.75 32.5312 21.75 32.5335C21.75 32.5357 21.75 32.5379 21.75 32.5401C21.75 32.5423 21.75 32.5445 21.75 32.5467C21.75 32.5489 21.75 32.5511 21.75 32.5534C21.75 32.5556 21.75 32.5578 21.75 32.56C21.75 32.5622 21.75 32.5645 21.75 32.5667C21.75 32.5689 21.75 32.5712 21.75 32.5734C21.75 32.5756 21.75 32.5779 21.75 32.5801C21.75 32.5823 21.75 32.5846 21.75 32.5868C21.75 32.5891 21.75 32.5913 21.75 32.5936C21.75 32.5958 21.75 32.5981 21.75 32.6003C21.75 32.6026 21.75 32.6048 21.75 32.6071C21.75 32.6093 21.75 32.6116 21.75 32.6139C21.75 32.6161 21.75 32.6184 21.75 32.6207C21.75 32.623 21.75 32.6252 21.75 32.6275C21.75 32.6298 21.75 32.6321 21.75 32.6343C21.75 32.6366 21.75 32.6389 21.75 32.6412C21.75 32.6435 21.75 32.6458 21.75 32.6481C21.75 32.6504 21.75 32.6527 21.75 32.655C21.75 32.6573 21.75 32.6596 21.75 32.6619C21.75 32.6642 21.75 32.6665 21.75 32.6688C21.75 32.6711 21.75 32.6734 21.75 32.6757C21.75 32.678 21.75 32.6804 21.75 32.6827C21.75 32.685 21.75 32.6873 21.75 32.6897C21.75 32.692 21.75 32.6943 21.75 32.6966C21.75 32.699 21.75 32.7013 21.75 32.7037C21.75 32.706 21.75 32.7083 21.75 32.7107C21.75 32.713 21.75 32.7154 21.75 32.7177C21.75 32.7201 21.75 32.7224 21.75 32.7248C21.75 32.7272 21.75 32.7295 21.75 32.7319C21.75 32.7343 21.75 32.7366 21.75 32.739C21.75 32.7414 21.75 32.7437 21.75 32.7461C21.75 32.7485 21.75 32.7509 21.75 32.7533C21.75 32.7557 21.75 32.758 21.75 32.7604C21.75 32.7628 21.75 32.7652 21.75 32.7676C21.75 32.77 21.75 32.7724 21.75 32.7748C21.75 32.7772 21.75 32.7796 21.75 32.782C21.75 32.7845 21.75 32.7869 21.75 32.7893C21.75 32.7917 21.75 32.7941 21.75 32.7966C21.75 32.799 21.75 32.8014 21.75 32.8038C21.75 32.8063 21.75 32.8087 21.75 32.8111C21.75 32.8136 21.75 32.816 21.75 32.8185C21.75 32.8209 21.75 32.8234 21.75 32.8258C21.75 32.8283 21.75 32.8307 21.75 32.8332C21.75 32.8357 21.75 32.8381 21.75 32.8406C21.75 32.8431 21.75 32.8455 21.75 32.848C21.75 32.8505 21.75 32.853 21.75 32.8554C21.75 32.8579 21.75 32.8604 21.75 32.8629C21.75 32.8654 21.75 32.8679 21.75 32.8704C21.75 32.8729 21.75 32.8754 21.75 32.8779C21.75 32.8804 21.75 32.8829 21.75 32.8854C21.75 32.8879 21.75 32.8904 21.75 32.8929C21.75 32.8955 21.75 32.898 21.75 32.9005C21.75 32.903 21.75 32.9056 21.75 32.9081C21.75 32.9106 21.75 32.9132 21.75 32.9157C21.75 32.9183 21.75 32.9208 21.75 32.9233C21.75 32.9259 21.75 32.9285 21.75 32.931C21.75 32.9336 21.75 32.9361 21.75 32.9387C21.75 32.9413 21.75 32.9438 21.75 32.9464C21.75 32.949 21.75 32.9516 21.75 32.9541C21.75 32.9567 21.75 32.9593 21.75 32.9619C21.75 32.9645 21.75 32.9671 21.75 32.9697C21.75 32.9723 21.75 32.9749 21.75 32.9775C21.75 32.9801 21.75 32.9827 21.75 32.9853C21.75 32.9879 21.75 32.9905 21.75 32.9932C21.75 32.9958 21.75 32.9984 21.75 33.001C21.75 33.0037 21.75 33.0063 21.75 33.0089C21.75 33.0116 21.75 33.0142 21.75 33.0169C21.75 33.0195 21.75 33.0222 21.75 33.0248C21.75 33.0275 21.75 33.0301 21.75 33.0328C21.75 33.0355 21.75 33.0381 21.75 33.0408C21.75 33.0435 21.75 33.0462 21.75 33.0488C21.75 33.0515 21.75 33.0542 21.75 33.0569C21.75 33.0596 21.75 33.0623 21.75 33.065C21.75 33.0677 21.75 33.0704 21.75 33.0731C21.75 33.0758 21.75 33.0785 21.75 33.0812C21.75 33.084 21.75 33.0867 21.75 33.0894C21.75 33.0921 21.75 33.0949 21.75 33.0976C21.75 33.1003 21.75 33.1031 21.75 33.1058C21.75 33.1086 21.75 33.1113 21.75 33.1141C21.75 33.1168 21.75 33.1196 21.75 33.1223C21.75 33.1251 21.75 33.1279 21.75 33.1306C21.75 33.1334 21.75 33.1362 21.75 33.139C21.75 33.1417 21.75 33.1445 21.75 33.1473C21.75 33.1501 21.75 33.1529 21.75 33.1557C21.75 33.1585 21.75 33.1613 21.75 33.1641C21.75 33.1669 21.75 33.1697 21.75 33.1726C21.75 33.1754 21.75 33.1782 21.75 33.181C21.75 33.1839 21.75 33.1867 21.75 33.1895C21.75 33.1924 21.75 33.1952 21.75 33.1981C21.75 33.2009 21.75 33.2038 21.75 33.2066C21.75 33.2095 21.75 33.2123 21.75 33.2152C21.75 33.2181 21.75 33.2209 21.75 33.2238C21.75 33.2267 21.75 33.2296 21.75 33.2325C21.75 33.2353 21.75 33.2382 21.75 33.2411C21.75 33.244 21.75 33.2469 21.75 33.2498C21.75 33.2527 21.75 33.2556 21.75 33.2586C21.75 33.2615 21.75 33.2644 21.75 33.2673C21.75 33.2703 21.75 33.2732 21.75 33.2761C21.75 33.2791 21.75 33.282 21.75 33.285C21.75 33.2879 21.75 33.2908 21.75 33.2938C21.75 33.2968 21.75 33.2997 21.75 33.3027C21.75 33.3057 21.75 33.3086 21.75 33.3116C21.75 33.3146 21.75 33.3176 21.75 33.3206C21.75 33.3235 21.75 33.3265 21.75 33.3295C21.75 33.3325 21.75 33.3355 21.75 33.3386C21.75 33.3416 21.75 33.3446 21.75 33.3476C21.75 33.3506 21.75 33.3536 21.75 33.3567C21.75 33.3597 21.75 33.3627 21.75 33.3658C21.75 33.3688 21.75 33.3719 21.75 33.3749C21.75 33.378 21.75 33.381 21.75 33.3841C21.75 33.3872 21.75 33.3902 21.75 33.3933C21.75 33.3964 21.75 33.3995 21.75 33.4025C21.75 33.4056 21.75 33.4087 21.75 33.4118C21.75 33.4149 21.75 33.418 21.75 33.4211C21.75 33.4242 21.75 33.4273 21.75 33.4304C21.75 33.4336 21.75 33.4367 21.75 33.4398C21.75 33.4429 21.75 33.4461 21.75 33.4492C21.75 33.4524 21.75 33.4555 21.75 33.4587C21.75 33.4618 21.75 33.465 21.75 33.4681C21.75 33.4713 21.75 33.4745 21.75 33.4776C21.75 33.4808 21.75 33.484 21.75 33.4872C21.75 33.4904 21.75 33.4936 21.75 33.4968C21.75 33.4999 21.75 33.5032 21.75 33.5064C21.75 33.5096 21.75 33.5128 21.75 33.516C21.75 33.5192 21.75 33.5224 21.75 33.5257C21.75 33.5289 21.75 33.5322 21.75 33.5354C21.75 33.5386 21.75 33.5419 21.75 33.5451C21.75 33.5484 21.75 33.5517 21.75 33.5549C21.75 33.5582 21.75 33.5615 21.75 33.5647C21.75 33.568 21.75 33.5713 21.75 33.5746C21.75 33.5779 21.75 33.5812 21.75 33.5845C21.75 33.5878 21.75 33.5911 21.75 33.5944C21.75 33.5977 21.75 33.6011 21.75 33.6044C21.75 33.6077 21.75 33.611 21.75 33.6144C21.75 33.6177 21.75 33.6211 21.75 33.6244C21.75 33.6278 21.75 33.6311 21.75 33.6345C21.75 33.6379 21.75 33.6412 21.75 33.6446C21.75 33.648 21.75 33.6514 21.75 33.6547C21.75 33.6581 21.75 33.6615 21.75 33.6649C21.75 33.6683 21.75 33.6717 21.75 33.6752C21.75 33.6786 21.75 33.682 21.75 33.6854C21.75 33.6888 21.75 33.6923 21.75 33.6957C21.75 33.6991 21.75 33.7026 21.75 33.706C21.75 33.7095 21.75 33.713 21.75 33.7164C21.75 33.7199 21.75 33.7234 21.75 33.7268C21.75 33.7303 21.75 33.7338 21.75 33.7373C21.75 33.7408 21.75 33.7443 21.75 33.7478C21.75 33.7513 21.75 33.7548 21.75 33.7583C21.75 33.7618 21.75 33.7653 21.75 33.7689C21.75 33.7724 21.75 33.7759 21.75 33.7795C21.75 33.783 21.75 33.7865 21.75 33.7901C21.75 33.7937 21.75 33.7972 21.75 33.8008C21.75 33.8044 21.75 33.8079 21.75 33.8115C21.75 33.8151 21.75 33.8187 21.75 33.8223C21.75 33.8259 21.75 33.8295 21.75 33.8331C21.75 33.8367 21.75 33.8403 21.75 33.8439C21.75 33.8475 21.75 33.8512 21.75 33.8548C21.75 33.8584 21.75 33.8621 21.75 33.8657C21.75 33.8694 21.75 33.873 21.75 33.8767C21.75 33.8803 21.75 33.884 21.75 33.8877C21.75 33.8914 21.75 33.895 21.75 33.8987C21.75 33.9024 21.75 33.9061 21.75 33.9098C21.75 33.9135 21.75 33.9172 21.75 33.9209C21.75 33.9247 21.75 33.9284 21.75 33.9321C21.75 33.9358 21.75 33.9396 21.75 33.9433C21.75 33.9471 21.75 33.9508 21.75 33.9546C21.75 33.9583 21.75 33.9621 21.75 33.9659C21.75 33.9696 21.75 33.9734 21.75 33.9772C21.75 33.981 21.75 33.9848 21.75 33.9886C21.75 33.9924 21.75 33.9962 21.75 34H23.25C23.25 33.9962 23.25 33.9924 23.25 33.9886C23.25 33.9848 23.25 33.981 23.25 33.9772C23.25 33.9734 23.25 33.9696 23.25 33.9659C23.25 33.9621 23.25 33.9583 23.25 33.9546C23.25 33.9508 23.25 33.9471 23.25 33.9433C23.25 33.9396 23.25 33.9358 23.25 33.9321C23.25 33.9284 23.25 33.9247 23.25 33.9209C23.25 33.9172 23.25 33.9135 23.25 33.9098C23.25 33.9061 23.25 33.9024 23.25 33.8987C23.25 33.895 23.25 33.8914 23.25 33.8877C23.25 33.884 23.25 33.8803 23.25 33.8767C23.25 33.873 23.25 33.8694 23.25 33.8657C23.25 33.8621 23.25 33.8584 23.25 33.8548C23.25 33.8512 23.25 33.8475 23.25 33.8439C23.25 33.8403 23.25 33.8367 23.25 33.8331C23.25 33.8295 23.25 33.8259 23.25 33.8223C23.25 33.8187 23.25 33.8151 23.25 33.8115C23.25 33.8079 23.25 33.8044 23.25 33.8008C23.25 33.7972 23.25 33.7937 23.25 33.7901C23.25 33.7865 23.25 33.783 23.25 33.7795C23.25 33.7759 23.25 33.7724 23.25 33.7689C23.25 33.7653 23.25 33.7618 23.25 33.7583C23.25 33.7548 23.25 33.7513 23.25 33.7478C23.25 33.7443 23.25 33.7408 23.25 33.7373C23.25 33.7338 23.25 33.7303 23.25 33.7268C23.25 33.7234 23.25 33.7199 23.25 33.7164C23.25 33.713 23.25 33.7095 23.25 33.706C23.25 33.7026 23.25 33.6991 23.25 33.6957C23.25 33.6923 23.25 33.6888 23.25 33.6854C23.25 33.682 23.25 33.6786 23.25 33.6752C23.25 33.6717 23.25 33.6683 23.25 33.6649C23.25 33.6615 23.25 33.6581 23.25 33.6547C23.25 33.6514 23.25 33.648 23.25 33.6446C23.25 33.6412 23.25 33.6379 23.25 33.6345C23.25 33.6311 23.25 33.6278 23.25 33.6244C23.25 33.6211 23.25 33.6177 23.25 33.6144C23.25 33.611 23.25 33.6077 23.25 33.6044C23.25 33.6011 23.25 33.5977 23.25 33.5944C23.25 33.5911 23.25 33.5878 23.25 33.5845C23.25 33.5812 23.25 33.5779 23.25 33.5746C23.25 33.5713 23.25 33.568 23.25 33.5647C23.25 33.5615 23.25 33.5582 23.25 33.5549C23.25 33.5517 23.25 33.5484 23.25 33.5451C23.25 33.5419 23.25 33.5386 23.25 33.5354C23.25 33.5322 23.25 33.5289 23.25 33.5257C23.25 33.5224 23.25 33.5192 23.25 33.516C23.25 33.5128 23.25 33.5096 23.25 33.5064C23.25 33.5032 23.25 33.4999 23.25 33.4968C23.25 33.4936 23.25 33.4904 23.25 33.4872C23.25 33.484 23.25 33.4808 23.25 33.4776C23.25 33.4745 23.25 33.4713 23.25 33.4681C23.25 33.465 23.25 33.4618 23.25 33.4587C23.25 33.4555 23.25 33.4524 23.25 33.4492C23.25 33.4461 23.25 33.4429 23.25 33.4398C23.25 33.4367 23.25 33.4336 23.25 33.4304C23.25 33.4273 23.25 33.4242 23.25 33.4211C23.25 33.418 23.25 33.4149 23.25 33.4118C23.25 33.4087 23.25 33.4056 23.25 33.4025C23.25 33.3995 23.25 33.3964 23.25 33.3933C23.25 33.3902 23.25 33.3872 23.25 33.3841C23.25 33.381 23.25 33.378 23.25 33.3749C23.25 33.3719 23.25 33.3688 23.25 33.3658C23.25 33.3627 23.25 33.3597 23.25 33.3567C23.25 33.3536 23.25 33.3506 23.25 33.3476C23.25 33.3446 23.25 33.3416 23.25 33.3386C23.25 33.3355 23.25 33.3325 23.25 33.3295C23.25 33.3265 23.25 33.3235 23.25 33.3206C23.25 33.3176 23.25 33.3146 23.25 33.3116C23.25 33.3086 23.25 33.3057 23.25 33.3027C23.25 33.2997 23.25 33.2968 23.25 33.2938C23.25 33.2908 23.25 33.2879 23.25 33.285C23.25 33.282 23.25 33.2791 23.25 33.2761C23.25 33.2732 23.25 33.2703 23.25 33.2673C23.25 33.2644 23.25 33.2615 23.25 33.2586C23.25 33.2556 23.25 33.2527 23.25 33.2498C23.25 33.2469 23.25 33.244 23.25 33.2411C23.25 33.2382 23.25 33.2353 23.25 33.2325C23.25 33.2296 23.25 33.2267 23.25 33.2238C23.25 33.2209 23.25 33.2181 23.25 33.2152C23.25 33.2123 23.25 33.2095 23.25 33.2066C23.25 33.2038 23.25 33.2009 23.25 33.1981C23.25 33.1952 23.25 33.1924 23.25 33.1895C23.25 33.1867 23.25 33.1839 23.25 33.181C23.25 33.1782 23.25 33.1754 23.25 33.1726C23.25 33.1697 23.25 33.1669 23.25 33.1641C23.25 33.1613 23.25 33.1585 23.25 33.1557C23.25 33.1529 23.25 33.1501 23.25 33.1473C23.25 33.1445 23.25 33.1417 23.25 33.139C23.25 33.1362 23.25 33.1334 23.25 33.1306C23.25 33.1279 23.25 33.1251 23.25 33.1223C23.25 33.1196 23.25 33.1168 23.25 33.1141C23.25 33.1113 23.25 33.1086 23.25 33.1058C23.25 33.1031 23.25 33.1003 23.25 33.0976C23.25 33.0949 23.25 33.0921 23.25 33.0894C23.25 33.0867 23.25 33.084 23.25 33.0812C23.25 33.0785 23.25 33.0758 23.25 33.0731C23.25 33.0704 23.25 33.0677 23.25 33.065C23.25 33.0623 23.25 33.0596 23.25 33.0569C23.25 33.0542 23.25 33.0515 23.25 33.0488C23.25 33.0462 23.25 33.0435 23.25 33.0408C23.25 33.0381 23.25 33.0355 23.25 33.0328C23.25 33.0301 23.25 33.0275 23.25 33.0248C23.25 33.0222 23.25 33.0195 23.25 33.0169C23.25 33.0142 23.25 33.0116 23.25 33.0089C23.25 33.0063 23.25 33.0037 23.25 33.001C23.25 32.9984 23.25 32.9958 23.25 32.9932C23.25 32.9905 23.25 32.9879 23.25 32.9853C23.25 32.9827 23.25 32.9801 23.25 32.9775C23.25 32.9749 23.25 32.9723 23.25 32.9697C23.25 32.9671 23.25 32.9645 23.25 32.9619C23.25 32.9593 23.25 32.9567 23.25 32.9541C23.25 32.9516 23.25 32.949 23.25 32.9464C23.25 32.9438 23.25 32.9413 23.25 32.9387C23.25 32.9361 23.25 32.9336 23.25 32.931C23.25 32.9285 23.25 32.9259 23.25 32.9233C23.25 32.9208 23.25 32.9183 23.25 32.9157C23.25 32.9132 23.25 32.9106 23.25 32.9081C23.25 32.9056 23.25 32.903 23.25 32.9005C23.25 32.898 23.25 32.8955 23.25 32.8929C23.25 32.8904 23.25 32.8879 23.25 32.8854C23.25 32.8829 23.25 32.8804 23.25 32.8779C23.25 32.8754 23.25 32.8729 23.25 32.8704C23.25 32.8679 23.25 32.8654 23.25 32.8629C23.25 32.8604 23.25 32.8579 23.25 32.8554C23.25 32.853 23.25 32.8505 23.25 32.848C23.25 32.8455 23.25 32.8431 23.25 32.8406C23.25 32.8381 23.25 32.8357 23.25 32.8332C23.25 32.8307 23.25 32.8283 23.25 32.8258C23.25 32.8234 23.25 32.8209 23.25 32.8185C23.25 32.816 23.25 32.8136 23.25 32.8111C23.25 32.8087 23.25 32.8063 23.25 32.8038C23.25 32.8014 23.25 32.799 23.25 32.7966C23.25 32.7941 23.25 32.7917 23.25 32.7893C23.25 32.7869 23.25 32.7845 23.25 32.782C23.25 32.7796 23.25 32.7772 23.25 32.7748C23.25 32.7724 23.25 32.77 23.25 32.7676C23.25 32.7652 23.25 32.7628 23.25 32.7604C23.25 32.758 23.25 32.7557 23.25 32.7533C23.25 32.7509 23.25 32.7485 23.25 32.7461C23.25 32.7437 23.25 32.7414 23.25 32.739C23.25 32.7366 23.25 32.7343 23.25 32.7319C23.25 32.7295 23.25 32.7272 23.25 32.7248C23.25 32.7224 23.25 32.7201 23.25 32.7177C23.25 32.7154 23.25 32.713 23.25 32.7107C23.25 32.7083 23.25 32.706 23.25 32.7037C23.25 32.7013 23.25 32.699 23.25 32.6966C23.25 32.6943 23.25 32.692 23.25 32.6897C23.25 32.6873 23.25 32.685 23.25 32.6827C23.25 32.6804 23.25 32.678 23.25 32.6757C23.25 32.6734 23.25 32.6711 23.25 32.6688C23.25 32.6665 23.25 32.6642 23.25 32.6619C23.25 32.6596 23.25 32.6573 23.25 32.655C23.25 32.6527 23.25 32.6504 23.25 32.6481C23.25 32.6458 23.25 32.6435 23.25 32.6412C23.25 32.6389 23.25 32.6366 23.25 32.6343C23.25 32.6321 23.25 32.6298 23.25 32.6275C23.25 32.6252 23.25 32.623 23.25 32.6207C23.25 32.6184 23.25 32.6161 23.25 32.6139C23.25 32.6116 23.25 32.6093 23.25 32.6071C23.25 32.6048 23.25 32.6026 23.25 32.6003C23.25 32.5981 23.25 32.5958 23.25 32.5936C23.25 32.5913 23.25 32.5891 23.25 32.5868C23.25 32.5846 23.25 32.5823 23.25 32.5801C23.25 32.5779 23.25 32.5756 23.25 32.5734C23.25 32.5712 23.25 32.5689 23.25 32.5667C23.25 32.5645 23.25 32.5622 23.25 32.56C23.25 32.5578 23.25 32.5556 23.25 32.5534C23.25 32.5511 23.25 32.5489 23.25 32.5467C23.25 32.5445 23.25 32.5423 23.25 32.5401C23.25 32.5379 23.25 32.5357 23.25 32.5335C23.25 32.5312 23.25 32.529 23.25 32.5268C23.25 32.5246 23.25 32.5225 23.25 32.5203C23.25 32.5181 23.25 32.5159 23.25 32.5137C23.25 32.5115 23.25 32.5093 23.25 32.5071C23.25 32.5049 23.25 32.5027 23.25 32.5006C23.25 32.4984 23.25 32.4962 23.25 32.494C23.25 32.4919 23.25 32.4897 23.25 32.4875C23.25 32.4853 23.25 32.4832 23.25 32.481C23.25 32.4788 23.25 32.4767 23.25 32.4745C23.25 32.4723 23.25 32.4702 23.25 32.468C23.25 32.4659 23.25 32.4637 23.25 32.4615C23.25 32.4594 23.25 32.4572 23.25 32.4551C23.25 32.4529 23.25 32.4508 23.25 32.4486C23.25 32.4465 23.25 32.4443 23.25 32.4422C23.25 32.4401 23.25 32.4379 23.25 32.4358C23.25 32.4336 23.25 32.4315 23.25 32.4294C23.25 32.4272 23.25 32.4251 23.25 32.423C23.25 32.4208 23.25 32.4187 23.25 32.4166C23.25 32.4145 23.25 32.4123 23.25 32.4102C23.25 32.4081 23.25 32.406 23.25 32.4038C23.25 32.4017 23.25 32.3996 23.25 32.3975C23.25 32.3954 23.25 32.3933 23.25 32.3911C23.25 32.389 23.25 32.3869 23.25 32.3848C23.25 32.3827 23.25 32.3806 23.25 32.3785C23.25 32.3764 23.25 32.3743 23.25 32.3722C23.25 32.3701 23.25 32.368 23.25 32.3659C23.25 32.3638 23.25 32.3617 23.25 32.3596C23.25 32.3575 23.25 32.3554 23.25 32.3533C23.25 32.3512 23.25 32.3491 23.25 32.347C23.25 32.3449 23.25 32.3428 23.25 32.3408C23.25 32.3387 23.25 32.3366 23.25 32.3345C23.25 32.3324 23.25 32.3303 23.25 32.3283C23.25 32.3262 23.25 32.3241 23.25 32.322C23.25 32.3199 23.25 32.3179 23.25 32.3158C23.25 32.3137 23.25 32.3117 23.25 32.3096C23.25 32.3075 23.25 32.3054 23.25 32.3034C23.25 32.3013 23.25 32.2992 23.25 32.2972C23.25 32.2951 23.25 32.293 23.25 32.291C23.25 32.2889 23.25 32.2868 23.25 32.2848C23.25 32.2827 23.25 32.2807 23.25 32.2786C23.25 32.2766 23.25 32.2745 23.25 32.2724C23.25 32.2704 23.25 32.2683 23.25 32.2663C23.25 32.2642 23.25 32.2622 23.25 32.2601C23.25 32.2581 23.25 32.256 23.25 32.254C23.25 32.2519 23.25 32.2499 23.25 32.2478C23.25 32.2458 23.25 32.2437 23.25 32.2417C23.25 32.2397 23.25 32.2376 23.25 32.2356C23.25 32.2335 23.25 32.2315 23.25 32.2294C23.25 32.2274 23.25 32.2254 23.25 32.2233C23.25 32.2213 23.25 32.2193 23.25 32.2172C23.25 32.2152 23.25 32.2132 23.25 32.2111C23.25 32.2091 23.25 32.2071 23.25 32.205C23.25 32.203 23.25 32.201 23.25 32.1989C23.25 32.1969 23.25 32.1949 23.25 32.1928C23.25 32.1908 23.25 32.1888 23.25 32.1868C23.25 32.1847 23.25 32.1827 23.25 32.1807C23.25 32.1787 23.25 32.1766 23.25 32.1746C23.25 32.1726 23.25 32.1706 23.25 32.1686C23.25 32.1665 23.25 32.1645 23.25 32.1625C23.25 32.1605 23.25 32.1585 23.25 32.1564C23.25 32.1544 23.25 32.1524 23.25 32.1504C23.25 32.1484 23.25 32.1464 23.25 32.1443C23.25 32.1423 23.25 32.1403 23.25 32.1383C23.25 32.1363 23.25 32.1343 23.25 32.1323C23.25 32.1302 23.25 32.1282 23.25 32.1262C23.25 32.1242 23.25 32.1222 23.25 32.1202C23.25 32.1182 23.25 32.1162 23.25 32.1142C23.25 32.1121 23.25 32.1101 23.25 32.1081C23.25 32.1061 23.25 32.1041 23.25 32.1021C23.25 32.1001 23.25 32.0981 23.25 32.0961C23.25 32.0941 23.25 32.0921 23.25 32.0901C23.25 32.0881 23.25 32.0861 23.25 32.0841C23.25 32.082 23.25 32.08 23.25 32.078C23.25 32.076 23.25 32.074 23.25 32.072C23.25 32.07 23.25 32.068 23.25 32.066C23.25 32.064 23.25 32.062 23.25 32.06C23.25 32.058 23.25 32.056 23.25 32.054C23.25 32.052 23.25 32.05 23.25 32.048C23.25 32.046 23.25 32.044 23.25 32.042C23.25 32.04 23.25 32.038 23.25 32.036C23.25 32.034 23.25 32.032 23.25 32.03C23.25 32.028 23.25 32.026 23.25 32.024C23.25 32.022 23.25 32.02 23.25 32.018C23.25 32.016 23.25 32.014 23.25 32.012C23.25 32.01 23.25 32.008 23.25 32.006C23.25 32.004 23.25 32.002 23.25 32C23.25 31.998 23.25 31.996 23.25 31.994C23.25 31.992 23.25 31.99 23.25 31.988C23.25 31.986 23.25 31.984 23.25 31.982C23.25 31.98 23.25 31.978 23.25 31.976C23.25 31.974 23.25 31.972 23.25 31.97C23.25 31.968 23.25 31.966 23.25 31.964C23.25 31.962 23.25 31.96 23.25 31.958C23.25 31.956 23.25 31.954 23.25 31.952C23.25 31.95 23.25 31.948 23.25 31.946C23.25 31.944 23.25 31.942 23.25 31.94C23.25 31.938 23.25 31.936 23.25 31.934C23.25 31.932 23.25 31.93 23.25 31.928C23.25 31.926 23.25 31.924 23.25 31.922C23.25 31.92 23.25 31.918 23.25 31.9159C23.25 31.9139 23.25 31.9119 23.25 31.9099C23.25 31.9079 23.25 31.9059 23.25 31.9039C23.25 31.9019 23.25 31.8999 23.25 31.8979C23.25 31.8959 23.25 31.8939 23.25 31.8919C23.25 31.8899 23.25 31.8879 23.25 31.8858C23.25 31.8838 23.25 31.8818 23.25 31.8798C23.25 31.8778 23.25 31.8758 23.25 31.8738C23.25 31.8718 23.25 31.8698 23.25 31.8677C23.25 31.8657 23.25 31.8637 23.25 31.8617C23.25 31.8597 23.25 31.8577 23.25 31.8557C23.25 31.8536 23.25 31.8516 23.25 31.8496C23.25 31.8476 23.25 31.8456 23.25 31.8436C23.25 31.8415 23.25 31.8395 23.25 31.8375C23.25 31.8355 23.25 31.8335 23.25 31.8314C23.25 31.8294 23.25 31.8274 23.25 31.8254C23.25 31.8234 23.25 31.8213 23.25 31.8193C23.25 31.8173 23.25 31.8153 23.25 31.8132C23.25 31.8112 23.25 31.8092 23.25 31.8072C23.25 31.8051 23.25 31.8031 23.25 31.8011C23.25 31.799 23.25 31.797 23.25 31.795C23.25 31.7929 23.25 31.7909 23.25 31.7889C23.25 31.7868 23.25 31.7848 23.25 31.7828C23.25 31.7807 23.25 31.7787 23.25 31.7767C23.25 31.7746 23.25 31.7726 23.25 31.7706C23.25 31.7685 23.25 31.7665 23.25 31.7644C23.25 31.7624 23.25 31.7603 23.25 31.7583C23.25 31.7563 23.25 31.7542 23.25 31.7522C23.25 31.7501 23.25 31.7481 23.25 31.746C23.25 31.744 23.25 31.7419 23.25 31.7399C23.25 31.7378 23.25 31.7358 23.25 31.7337C23.25 31.7317 23.25 31.7296 23.25 31.7276C23.25 31.7255 23.25 31.7234 23.25 31.7214C23.25 31.7193 23.25 31.7173 23.25 31.7152C23.25 31.7132 23.25 31.7111 23.25 31.709C23.25 31.707 23.25 31.7049 23.25 31.7028C23.25 31.7008 23.25 31.6987 23.25 31.6966C23.25 31.6946 23.25 31.6925 23.25 31.6904C23.25 31.6883 23.25 31.6863 23.25 31.6842C23.25 31.6821 23.25 31.6801 23.25 31.678C23.25 31.6759 23.25 31.6738 23.25 31.6717C23.25 31.6697 23.25 31.6676 23.25 31.6655C23.25 31.6634 23.25 31.6613 23.25 31.6592C23.25 31.6572 23.25 31.6551 23.25 31.653C23.25 31.6509 23.25 31.6488 23.25 31.6467C23.25 31.6446 23.25 31.6425 23.25 31.6404C23.25 31.6383 23.25 31.6362 23.25 31.6341C23.25 31.632 23.25 31.6299 23.25 31.6278C23.25 31.6257 23.25 31.6236 23.25 31.6215C23.25 31.6194 23.25 31.6173 23.25 31.6152C23.25 31.6131 23.25 31.611 23.25 31.6089C23.25 31.6067 23.25 31.6046 23.25 31.6025C23.25 31.6004 23.25 31.5983 23.25 31.5962C23.25 31.594 23.25 31.5919 23.25 31.5898C23.25 31.5877 23.25 31.5855 23.25 31.5834C23.25 31.5813 23.25 31.5792 23.25 31.577C23.25 31.5749 23.25 31.5728 23.25 31.5706C23.25 31.5685 23.25 31.5664 23.25 31.5642C23.25 31.5621 23.25 31.5599 23.25 31.5578C23.25 31.5557 23.25 31.5535 23.25 31.5514C23.25 31.5492 23.25 31.5471 23.25 31.5449C23.25 31.5428 23.25 31.5406 23.25 31.5385C23.25 31.5363 23.25 31.5341 23.25 31.532C23.25 31.5298 23.25 31.5277 23.25 31.5255C23.25 31.5233 23.25 31.5212 23.25 31.519C23.25 31.5168 23.25 31.5147 23.25 31.5125C23.25 31.5103 23.25 31.5081 23.25 31.506C23.25 31.5038 23.25 31.5016 23.25 31.4994C23.25 31.4973 23.25 31.4951 23.25 31.4929C23.25 31.4907 23.25 31.4885 23.25 31.4863C23.25 31.4841 23.25 31.4819 23.25 31.4797C23.25 31.4775 23.25 31.4754 23.25 31.4732C23.25 31.471 23.25 31.4688 23.25 31.4665C23.25 31.4643 23.25 31.4621 23.25 31.4599C23.25 31.4577 23.25 31.4555 23.25 31.4533C23.25 31.4511 23.25 31.4489 23.25 31.4466C23.25 31.4444 23.25 31.4422 23.25 31.44C23.25 31.4378 23.25 31.4355 23.25 31.4333C23.25 31.4311 23.25 31.4288 23.25 31.4266C23.25 31.4244 23.25 31.4221 23.25 31.4199C23.25 31.4177 23.25 31.4154 23.25 31.4132C23.25 31.4109 23.25 31.4087 23.25 31.4064C23.25 31.4042 23.25 31.4019 23.25 31.3997C23.25 31.3974 23.25 31.3952 23.25 31.3929C23.25 31.3907 23.25 31.3884 23.25 31.3861C23.25 31.3839 23.25 31.3816 23.25 31.3793C23.25 31.377 23.25 31.3748 23.25 31.3725C23.25 31.3702 23.25 31.3679 23.25 31.3657C23.25 31.3634 23.25 31.3611 23.25 31.3588C23.25 31.3565 23.25 31.3542 23.25 31.3519C23.25 31.3496 23.25 31.3473 23.25 31.345C23.25 31.3427 23.25 31.3404 23.25 31.3381C23.25 31.3358 23.25 31.3335 23.25 31.3312C23.25 31.3289 23.25 31.3266 23.25 31.3243C23.25 31.322 23.25 31.3196 23.25 31.3173C23.25 31.315 23.25 31.3127 23.25 31.3103C23.25 31.308 23.25 31.3057 23.25 31.3034C23.25 31.301 23.25 31.2987 23.25 31.2963C23.25 31.294 23.25 31.2917 23.25 31.2893C23.25 31.287 23.25 31.2846 23.25 31.2823C23.25 31.2799 23.25 31.2776 23.25 31.2752C23.25 31.2728 23.25 31.2705 23.25 31.2681C23.25 31.2657 23.25 31.2634 23.25 31.261C23.25 31.2586 23.25 31.2563 23.25 31.2539C23.25 31.2515 23.25 31.2491 23.25 31.2467C23.25 31.2443 23.25 31.242 23.25 31.2396C23.25 31.2372 23.25 31.2348 23.25 31.2324C23.25 31.23 23.25 31.2276 23.25 31.2252C23.25 31.2228 23.25 31.2204 23.25 31.218C23.25 31.2155 23.25 31.2131 23.25 31.2107C23.25 31.2083 23.25 31.2059 23.25 31.2034C23.25 31.201 23.25 31.1986 23.25 31.1962C23.25 31.1937 23.25 31.1913 23.25 31.1889C23.25 31.1864 23.25 31.184 23.25 31.1815C23.25 31.1791 23.25 31.1766 23.25 31.1742C23.25 31.1717 23.25 31.1693 23.25 31.1668C23.25 31.1643 23.25 31.1619 23.25 31.1594C23.25 31.1569 23.25 31.1545 23.25 31.152C23.25 31.1495 23.25 31.147 23.25 31.1446C23.25 31.1421 23.25 31.1396 23.25 31.1371C23.25 31.1346 23.25 31.1321 23.25 31.1296C23.25 31.1271 23.25 31.1246 23.25 31.1221C23.25 31.1196 23.25 31.1171 23.25 31.1146C23.25 31.1121 23.25 31.1096 23.25 31.1071C23.25 31.1045 23.25 31.102 23.25 31.0995C23.25 31.097 23.25 31.0944 23.25 31.0919C23.25 31.0894 23.25 31.0868 23.25 31.0843C23.25 31.0817 23.25 31.0792 23.25 31.0767C23.25 31.0741 23.25 31.0715 23.25 31.069C23.25 31.0664 23.25 31.0639 23.25 31.0613C23.25 31.0587 23.25 31.0562 23.25 31.0536C23.25 31.051 23.25 31.0484 23.25 31.0459C23.25 31.0433 23.25 31.0407 23.25 31.0381C23.25 31.0355 23.25 31.0329 23.25 31.0303C23.25 31.0277 23.25 31.0251 23.25 31.0225C23.25 31.0199 23.25 31.0173 23.25 31.0147C23.25 31.0121 23.25 31.0095 23.25 31.0068C23.25 31.0042 23.25 31.0016 23.25 30.999C23.25 30.9963 23.25 30.9937 23.25 30.9911C23.25 30.9884 23.25 30.9858 23.25 30.9831C23.25 30.9805 23.25 30.9778 23.25 30.9752C23.25 30.9725 23.25 30.9699 23.25 30.9672C23.25 30.9645 23.25 30.9619 23.25 30.9592C23.25 30.9565 23.25 30.9538 23.25 30.9512C23.25 30.9485 23.25 30.9458 23.25 30.9431C23.25 30.9404 23.25 30.9377 23.25 30.935C23.25 30.9323 23.25 30.9296 23.25 30.9269C23.25 30.9242 23.25 30.9215 23.25 30.9188C23.25 30.916 23.25 30.9133 23.25 30.9106C23.25 30.9079 23.25 30.9051 23.25 30.9024C23.25 30.8997 23.25 30.8969 23.25 30.8942C23.25 30.8914 23.25 30.8887 23.25 30.8859C23.25 30.8832 23.25 30.8804 23.25 30.8777C23.25 30.8749 23.25 30.8721 23.25 30.8694C23.25 30.8666 23.25 30.8638 23.25 30.861C23.25 30.8583 23.25 30.8555 23.25 30.8527C23.25 30.8499 23.25 30.8471 23.25 30.8443C23.25 30.8415 23.25 30.8387 23.25 30.8359C23.25 30.8331 23.25 30.8303 23.25 30.8274C23.25 30.8246 23.25 30.8218 23.25 30.819C23.25 30.8161 23.25 30.8133 23.25 30.8105C23.25 30.8076 23.25 30.8048 23.25 30.8019C23.25 30.7991 23.25 30.7962 23.25 30.7934C23.25 30.7905 23.25 30.7877 23.25 30.7848C23.25 30.7819 23.25 30.7791 23.25 30.7762C23.25 30.7733 23.25 30.7704 23.25 30.7675C23.25 30.7647 23.25 30.7618 23.25 30.7589C23.25 30.756 23.25 30.7531 23.25 30.7502C23.25 30.7473 23.25 30.7444 23.25 30.7414C23.25 30.7385 23.25 30.7356 23.25 30.7327C23.25 30.7297 23.25 30.7268 23.25 30.7239C23.25 30.7209 23.25 30.718 23.25 30.715C23.25 30.7121 23.25 30.7092 23.25 30.7062C23.25 30.7032 23.25 30.7003 23.25 30.6973C23.25 30.6943 23.25 30.6914 23.25 30.6884C23.25 30.6854 23.25 30.6824 23.25 30.6794C23.25 30.6765 23.25 30.6735 23.25 30.6705C23.25 30.6675 23.25 30.6645 23.25 30.6614C23.25 30.6584 23.25 30.6554 23.25 30.6524C23.25 30.6494 23.25 30.6464 23.25 30.6433C23.25 30.6403 23.25 30.6373 23.25 30.6342C23.25 30.6312 23.25 30.6281 23.25 30.6251C23.25 30.622 23.25 30.619 23.25 30.6159C23.25 30.6128 23.25 30.6098 23.25 30.6067C23.25 30.6036 23.25 30.6005 23.25 30.5975C23.25 30.5944 23.25 30.5913 23.25 30.5882C23.25 30.5851 23.25 30.582 23.25 30.5789C23.25 30.5758 23.25 30.5727 23.25 30.5696C23.25 30.5664 23.25 30.5633 23.25 30.5602C23.25 30.5571 23.25 30.5539 23.25 30.5508C23.25 30.5476 23.25 30.5445 23.25 30.5413C23.25 30.5382 23.25 30.535 23.25 30.5319C23.25 30.5287 23.25 30.5255 23.25 30.5224C23.25 30.5192 23.25 30.516 23.25 30.5128C23.25 30.5096 23.25 30.5064 23.25 30.5032C23.25 30.5001 23.25 30.4968 23.25 30.4936C23.25 30.4904 23.25 30.4872 23.25 30.484C23.25 30.4808 23.25 30.4776 23.25 30.4743C23.25 30.4711 23.25 30.4678 23.25 30.4646C23.25 30.4614 23.25 30.4581 23.25 30.4549C23.25 30.4516 23.25 30.4483 23.25 30.4451C23.25 30.4418 23.25 30.4385 23.25 30.4353C23.25 30.432 23.25 30.4287 23.25 30.4254C23.25 30.4221 23.25 30.4188 23.25 30.4155C23.25 30.4122 23.25 30.4089 23.25 30.4056C23.25 30.4023 23.25 30.3989 23.25 30.3956C23.25 30.3923 23.25 30.389 23.25 30.3856C23.25 30.3823 23.25 30.3789 23.25 30.3756C23.25 30.3722 23.25 30.3689 23.25 30.3655C23.25 30.3621 23.25 30.3588 23.25 30.3554C23.25 30.352 23.25 30.3486 23.25 30.3453C23.25 30.3419 23.25 30.3385 23.25 30.3351C23.25 30.3317 23.25 30.3283 23.25 30.3248C23.25 30.3214 23.25 30.318 23.25 30.3146C23.25 30.3112 23.25 30.3077 23.25 30.3043C23.25 30.3009 23.25 30.2974 23.25 30.294C23.25 30.2905 23.25 30.287 23.25 30.2836C23.25 30.2801 23.25 30.2766 23.25 30.2732C23.25 30.2697 23.25 30.2662 23.25 30.2627C23.25 30.2592 23.25 30.2557 23.25 30.2522C23.25 30.2487 23.25 30.2452 23.25 30.2417C23.25 30.2382 23.25 30.2347 23.25 30.2311C23.25 30.2276 23.25 30.2241 23.25 30.2205C23.25 30.217 23.25 30.2135 23.25 30.2099C23.25 30.2063 23.25 30.2028 23.25 30.1992C23.25 30.1956 23.25 30.1921 23.25 30.1885C23.25 30.1849 23.25 30.1813 23.25 30.1777C23.25 30.1741 23.25 30.1705 23.25 30.1669C23.25 30.1633 23.25 30.1597 23.25 30.1561C23.25 30.1525 23.25 30.1488 23.25 30.1452C23.25 30.1416 23.25 30.1379 23.25 30.1343C23.25 30.1306 23.25 30.127 23.25 30.1233C23.25 30.1197 23.25 30.116 23.25 30.1123C23.25 30.1086 23.25 30.105 23.25 30.1013C23.25 30.0976 23.25 30.0939 23.25 30.0902C23.25 30.0865 23.25 30.0828 23.25 30.0791C23.25 30.0753 23.25 30.0716 23.25 30.0679C23.25 30.0642 23.25 30.0604 23.25 30.0567C23.25 30.0529 23.25 30.0492 23.25 30.0454C23.25 30.0417 23.25 30.0379 23.25 30.0341C23.25 30.0304 23.25 30.0266 23.25 30.0228C23.25 30.019 23.25 30.0152 23.25 30.0114C23.25 30.0076 23.25 30.0038 23.25 30H21.75Z" fill="#333333"/> +<path d="M22.3711 13.6256L22.3711 13.6252L22.3711 13.6242L22.3713 13.6148C22.3716 13.6058 22.3723 13.5914 22.3736 13.5724C22.3762 13.5344 22.3816 13.4785 22.3925 13.4109C22.4145 13.2743 22.458 13.0962 22.5425 12.9213C22.6267 12.7471 22.7486 12.5818 22.9257 12.4597C23.1008 12.339 23.3448 12.25 23.692 12.25H23.7012H23.7105H23.7199H23.7294H23.7389H23.7485H23.7581H23.7679H23.7777H23.7875H23.7975H23.8075H23.8176H23.8277H23.8379H23.8482H23.8585H23.869H23.8794H23.89H23.9006H23.9112H23.922H23.9328H23.9436H23.9546H23.9655H23.9766H23.9877H23.9989H24.0101H24.0214H24.0328H24.0442H24.0557H24.0672H24.0788H24.0904H24.1022H24.1139H24.1258H24.1376H24.1496H24.1616H24.1736H24.1858H24.1979H24.2101H24.2224H24.2348H24.2471H24.2596H24.2721H24.2846H24.2972H24.3099H24.3226H24.3354H24.3482H24.361H24.3739H24.3869H24.3999H24.413H24.4261H24.4392H24.4525H24.4657H24.479H24.4924H24.5058H24.5192H24.5327H24.5463H24.5598H24.5735H24.5872H24.6009H24.6146H24.6285H24.6423H24.6562H24.6702H24.6841H24.6982H24.7122H24.7263H24.7405H24.7547H24.7689H24.7832H24.7975H24.8119H24.8263H24.8407H24.8552H24.8697H24.8842H24.8988H24.9134H24.9281H24.9428H24.9575H24.9723H24.9871H25.0019H25.0168H25.0317H25.0466H25.0616H25.0766H25.0916H25.1067H25.1218H25.137H25.1521H25.1673H25.1826H25.1978H25.2131H25.2284H25.2438H25.2592H25.2746H25.29H25.3055H25.321H25.3365H25.352H25.3676H25.3832H25.3988H25.4145H25.4301H25.4458H25.4616H25.4773H25.4931H25.5089H25.5247H25.5405H25.5564H25.5723H25.5882H25.6041H25.6201H25.6361H25.652H25.6681H25.6841H25.7001H25.7162H25.7323H25.7484H25.7645H25.7807H25.7968H25.813H25.8292H25.8454H25.8616H25.8779H25.8941H25.9104H25.9267H25.943H25.9593H25.9756H25.9919H26.0083H26.0246H26.041H26.0574H26.0738H26.0902H26.1066H26.123H26.1395H26.1559H26.1724H26.1888H26.2053H26.2218H26.2383H26.2548H26.2713H26.2878H26.3043H26.3208H26.3374H26.3539H26.3704H26.387H26.4035H26.4201H26.4366H26.4532H26.4697H26.4863H26.5029H26.5194H26.536H26.5526H26.5691H26.5857H26.6023H26.6188H26.6354H26.652H26.6685H26.6851H26.7016H26.7182H26.7348H26.7513H26.7679H26.7844H26.8009H26.8175H26.834H26.8505H26.867H26.8836H26.9001H26.9166H26.9331H26.9495H26.966H26.9825H26.9989H27.0154H27.0318H27.0483H27.0647H27.0811H27.0975H27.1139H27.1303H27.1467H27.163H27.1794H27.1957H27.212H27.2283H27.2446H27.2609H27.2771H27.2934H27.3096H27.3258H27.342H27.3582H27.3744H27.3905H27.4067H27.4228H27.4389H27.455H27.471H27.4871H27.5031H27.5191H27.5351H27.551H27.567H27.5829H27.5988H27.6147H27.6305H27.6464H27.6622H27.678H27.6937H27.7095H27.7252H27.7409H27.7565H27.7722H27.7878H27.8034H27.8189H27.8345H27.85H27.8655H27.8809H27.8963H27.9117H27.9271H27.9425H27.9578H27.973H27.9883H28.0035H28.0187H28.0338H28.049H28.0641H28.0791H28.0941H28.1091H28.1241H28.139H28.1539H28.1688H28.1836H28.1984H28.2131H28.2279H28.2425H28.2572H28.2718H28.2864H28.3009H28.3154H28.3298H28.3442H28.3586H28.373H28.3873H28.4015H28.4157H28.4299H28.444H28.4581H28.4722H28.4862H28.5002H28.5141H28.528H28.5418H28.5556H28.5694H28.5831H28.5967H28.6103H28.6239H28.6374H28.6509H28.6643H28.6777H28.6911H28.7043H28.7176H28.7308H28.7439H28.757H28.77H28.783H28.796H28.8089H28.8217H28.8345H28.8472H28.8599H28.8726H28.8851H28.8977H28.9101H28.9226H28.9349H28.9472H28.9595H28.9717H28.9839H28.9959H29.008H29.02H29.0319H29.0437H29.0555H29.0673H29.079H29.0906H29.1022H29.1137H29.1251H29.1365H29.1479H29.1591H29.1703H29.1815H29.1926H29.2036H29.2146H29.2255H29.2363H29.2471H29.2578H29.2684H29.279H29.2895H29.3H29.3103H29.3207H29.3309H29.3411H29.3512H29.3613H29.3712H29.3812H29.391H29.4008H29.4105H29.4201H29.4297H29.4392H29.4486H29.458H29.4672H29.4765H29.4856H29.4947H29.5037H29.5126H29.5214H29.5302H29.5389H29.5475H29.5561H29.5646H29.573H29.5813H29.5895H29.5977H29.6058H29.6138H29.6217H29.6296H29.6374H29.6451H29.6527H29.6603H29.6677H29.6751H29.6824H29.6896H29.6968H29.7038H29.7108H29.7177H29.7245H29.7255V23.125H29.7245H29.7177H29.7108H29.7038H29.6968H29.6896H29.6824H29.6751H29.6677H29.6603H29.6527H29.6451H29.6374H29.6296H29.6217H29.6138H29.6058H29.5977H29.5895H29.5813H29.573H29.5646H29.5561H29.5475H29.5389H29.5302H29.5214H29.5126H29.5037H29.4947H29.4856H29.4765H29.4672H29.458H29.4486H29.4392H29.4297H29.4201H29.4105H29.4008H29.391H29.3812H29.3712H29.3613H29.3512H29.3411H29.3309H29.3207H29.3103H29.3H29.2895H29.279H29.2684H29.2578H29.2471H29.2363H29.2255H29.2146H29.2036H29.1926H29.1815H29.1703H29.1591H29.1479H29.1365H29.1251H29.1137H29.1022H29.0906H29.079H29.0673H29.0555H29.0437H29.0319H29.02H29.008H28.9959H28.9839H28.9717H28.9595H28.9472H28.9349H28.9226H28.9101H28.8977H28.8851H28.8726H28.8599H28.8472H28.8345H28.8217H28.8089H28.796H28.783H28.77H28.757H28.7439H28.7308H28.7176H28.7043H28.6911H28.6777H28.6643H28.6509H28.6374H28.6239H28.6103H28.5967H28.5831H28.5694H28.5556H28.5418H28.528H28.5141H28.5002H28.4862H28.4722H28.4581H28.444H28.4299H28.4157H28.4015H28.3873H28.373H28.3586H28.3442H28.3298H28.3154H28.3009H28.2864H28.2718H28.2572H28.2425H28.2279H28.2131H28.1984H28.1836H28.1688H28.1539H28.139H28.1241H28.1091H28.0941H28.0791H28.0641H28.049H28.0338H28.0187H28.0035H27.9883H27.973H27.9578H27.9425H27.9271H27.9117H27.8963H27.8809H27.8655H27.85H27.8345H27.8189H27.8034H27.7878H27.7722H27.7565H27.7409H27.7252H27.7095H27.6937H27.678H27.6622H27.6464H27.6305H27.6147H27.5988H27.5829H27.567H27.551H27.5351H27.5191H27.5031H27.4871H27.471H27.455H27.4389H27.4228H27.4067H27.3905H27.3744H27.3582H27.342H27.3258H27.3096H27.2934H27.2771H27.2609H27.2446H27.2283H27.212H27.1957H27.1794H27.163H27.1467H27.1303H27.1139H27.0975H27.0811H27.0647H27.0483H27.0318H27.0154H26.9989H26.9825H26.966H26.9495H26.9331H26.9166H26.9001H26.8836H26.867H26.8505H26.834H26.8175H26.8009H26.7844H26.7679H26.7513H26.7348H26.7182H26.7016H26.6851H26.6685H26.652H26.6354H26.6188H26.6023H26.5857H26.5691H26.5526H26.536H26.5194H26.5029H26.4863H26.4697H26.4532H26.4366H26.4201H26.4035H26.387H26.3704H26.3539H26.3374H26.3208H26.3043H26.2878H26.2713H26.2548H26.2383H26.2218H26.2053H26.1888H26.1724H26.1559H26.1395H26.123H26.1066H26.0902H26.0738H26.0574H26.041H26.0246H26.0083H25.9919H25.9756H25.9593H25.943H25.9267H25.9104H25.8941H25.8779H25.8616H25.8454H25.8292H25.813H25.7968H25.7807H25.7645H25.7484H25.7323H25.7162H25.7001H25.6841H25.6681H25.652H25.6361H25.6201H25.6041H25.5882H25.5723H25.5564H25.5405H25.5247H25.5089H25.4931H25.4773H25.4616H25.4458H25.4301H25.4145H25.3988H25.3832H25.3676H25.352H25.3365H25.321H25.3055H25.29H25.2746H25.2592H25.2438H25.2284H25.2131H25.1978H25.1826H25.1673H25.1521H25.137H25.1218H25.1067H25.0916H25.0766H25.0616H25.0466H25.0317H25.0168H25.0019H24.9871H24.9723H24.9575H24.9428H24.9281H24.9134H24.8988H24.8842H24.8697H24.8552H24.8407H24.8263H24.8119H24.7975H24.7832H24.7689H24.7547H24.7405H24.7263H24.7122H24.6982H24.6841H24.6702H24.6562H24.6423H24.6285H24.6146H24.6009H24.5872H24.5735H24.5598H24.5463H24.5327H24.5192H24.5058H24.4924H24.479H24.4657H24.4525H24.4392H24.4261H24.413H24.3999H24.3869H24.3739H24.361H24.3482H24.3354H24.3226H24.3099H24.2972H24.2846H24.2721H24.2596H24.2471H24.2348H24.2224H24.2101H24.1979H24.1858H24.1736H24.1616H24.1496H24.1376H24.1258H24.1139H24.1022H24.0904H24.0788H24.0672H24.0557H24.0442H24.0328H24.0214H24.0101H23.9989H23.9877H23.9766H23.9655H23.9546H23.9436H23.9328H23.922H23.9112H23.9006H23.89H23.8794H23.869H23.8585H23.8482H23.8379H23.8277H23.8176H23.8075H23.7975H23.7875H23.7777H23.7679H23.7581H23.7485H23.7389H23.7294H23.7199H23.7105H23.7012H23.692C23.2537 23.125 22.9086 23.2392 22.6419 23.4231C22.5381 23.4947 22.4485 23.5752 22.3711 23.6607V13.6256Z" stroke="#DA3635" stroke-width="0.5"/> +<path d="M21.8711 13.6256L21.8711 13.6252L21.8711 13.6242L21.8708 13.6148C21.8705 13.6058 21.8699 13.5914 21.8686 13.5724C21.866 13.5344 21.8606 13.4785 21.8497 13.4109C21.8277 13.2743 21.7842 13.0962 21.6996 12.9213C21.6155 12.7471 21.4935 12.5818 21.3165 12.4597C21.1413 12.339 20.8974 12.25 20.5502 12.25H20.541H20.5317H20.5223H20.5128H20.5033H20.4937H20.484H20.4743H20.4645H20.4546H20.4447H20.4347H20.4246H20.4145H20.4043H20.394H20.3836H20.3732H20.3628H20.3522H20.3416H20.3309H20.3202H20.3094H20.2986H20.2876H20.2766H20.2656H20.2545H20.2433H20.2321H20.2208H20.2094H20.198H20.1865H20.175H20.1634H20.1517H20.14H20.1283H20.1164H20.1046H20.0926H20.0806H20.0685H20.0564H20.0443H20.032H20.0198H20.0074H19.995H19.9826H19.9701H19.9576H19.945H19.9323H19.9196H19.9068H19.894H19.8812H19.8683H19.8553H19.8423H19.8292H19.8161H19.8029H19.7897H19.7765H19.7632H19.7498H19.7364H19.723H19.7095H19.6959H19.6823H19.6687H19.655H19.6413H19.6275H19.6137H19.5999H19.586H19.572H19.558H19.544H19.5299H19.5158H19.5017H19.4875H19.4733H19.459H19.4447H19.4303H19.4159H19.4015H19.387H19.3725H19.358H19.3434H19.3288H19.3141H19.2994H19.2847H19.2699H19.2551H19.2403H19.2254H19.2105H19.1956H19.1806H19.1656H19.1505H19.1355H19.1204H19.1052H19.0901H19.0749H19.0596H19.0444H19.0291H19.0138H18.9984H18.983H18.9676H18.9522H18.9367H18.9212H18.9057H18.8902H18.8746H18.859H18.8434H18.8277H18.812H18.7963H18.7806H18.7649H18.7491H18.7333H18.7175H18.7016H18.6858H18.6699H18.654H18.6381H18.6221H18.6061H18.5901H18.5741H18.5581H18.542H18.526H18.5099H18.4938H18.4777H18.4615H18.4454H18.4292H18.413H18.3968H18.3806H18.3643H18.3481H18.3318H18.3155H18.2992H18.2829H18.2666H18.2503H18.2339H18.2175H18.2012H18.1848H18.1684H18.152H18.1356H18.1191H18.1027H18.0863H18.0698H18.0533H18.0369H18.0204H18.0039H17.9874H17.9709H17.9544H17.9379H17.9214H17.9048H17.8883H17.8718H17.8552H17.8387H17.8221H17.8056H17.789H17.7725H17.7559H17.7393H17.7228H17.7062H17.6896H17.6731H17.6565H17.6399H17.6234H17.6068H17.5902H17.5737H17.5571H17.5405H17.524H17.5074H17.4909H17.4743H17.4578H17.4413H17.4247H17.4082H17.3917H17.3751H17.3586H17.3421H17.3256H17.3091H17.2926H17.2762H17.2597H17.2432H17.2268H17.2103H17.1939H17.1775H17.1611H17.1447H17.1283H17.1119H17.0955H17.0792H17.0628H17.0465H17.0302H17.0139H16.9976H16.9813H16.965H16.9488H16.9326H16.9164H16.9002H16.884H16.8678H16.8516H16.8355H16.8194H16.8033H16.7872H16.7712H16.7551H16.7391H16.7231H16.7071H16.6911H16.6752H16.6593H16.6434H16.6275H16.6116H16.5958H16.58H16.5642H16.5485H16.5327H16.517H16.5013H16.4856H16.47H16.4544H16.4388H16.4232H16.4077H16.3922H16.3767H16.3613H16.3458H16.3304H16.3151H16.2997H16.2844H16.2692H16.2539H16.2387H16.2235H16.2083H16.1932H16.1781H16.1631H16.148H16.133H16.1181H16.1032H16.0883H16.0734H16.0586H16.0438H16.0291H16.0143H15.9997H15.985H15.9704H15.9558H15.9413H15.9268H15.9124H15.8979H15.8836H15.8692H15.8549H15.8407H15.8265H15.8123H15.7981H15.784H15.77H15.756H15.742H15.7281H15.7142H15.7004H15.6866H15.6728H15.6591H15.6455H15.6318H15.6183H15.6048H15.5913H15.5778H15.5645H15.5511H15.5378H15.5246H15.5114H15.4983H15.4852H15.4721H15.4591H15.4462H15.4333H15.4205H15.4077H15.3949H15.3823H15.3696H15.357H15.3445H15.332H15.3196H15.3073H15.2949H15.2827H15.2705H15.2583H15.2462H15.2342H15.2222H15.2103H15.1985H15.1866H15.1749H15.1632H15.1516H15.14H15.1285H15.117H15.1057H15.0943H15.083H15.0718H15.0607H15.0496H15.0386H15.0276H15.0167H15.0059H14.9951H14.9844H14.9738H14.9632H14.9527H14.9422H14.9318H14.9215H14.9113H14.9011H14.891H14.8809H14.8709H14.861H14.8512H14.8414H14.8317H14.8221H14.8125H14.803H14.7936H14.7842H14.7749H14.7657H14.7566H14.7475H14.7385H14.7296H14.7208H14.712H14.7033H14.6947H14.6861H14.6776H14.6692H14.6609H14.6527H14.6445H14.6364H14.6284H14.6204H14.6126H14.6048H14.5971H14.5895H14.5819H14.5745H14.5671H14.5598H14.5525H14.5454H14.5383H14.5314H14.5245H14.5177H14.5167V23.125H14.5177H14.5245H14.5314H14.5383H14.5454H14.5525H14.5598H14.5671H14.5745H14.5819H14.5895H14.5971H14.6048H14.6126H14.6204H14.6284H14.6364H14.6445H14.6527H14.6609H14.6692H14.6776H14.6861H14.6947H14.7033H14.712H14.7208H14.7296H14.7385H14.7475H14.7566H14.7657H14.7749H14.7842H14.7936H14.803H14.8125H14.8221H14.8317H14.8414H14.8512H14.861H14.8709H14.8809H14.891H14.9011H14.9113H14.9215H14.9318H14.9422H14.9527H14.9632H14.9738H14.9844H14.9951H15.0059H15.0167H15.0276H15.0386H15.0496H15.0607H15.0718H15.083H15.0943H15.1057H15.117H15.1285H15.14H15.1516H15.1632H15.1749H15.1866H15.1985H15.2103H15.2222H15.2342H15.2462H15.2583H15.2705H15.2827H15.2949H15.3073H15.3196H15.332H15.3445H15.357H15.3696H15.3823H15.3949H15.4077H15.4205H15.4333H15.4462H15.4591H15.4721H15.4852H15.4983H15.5114H15.5246H15.5378H15.5511H15.5645H15.5778H15.5913H15.6048H15.6183H15.6318H15.6455H15.6591H15.6728H15.6866H15.7004H15.7142H15.7281H15.742H15.756H15.77H15.784H15.7981H15.8123H15.8265H15.8407H15.8549H15.8692H15.8836H15.8979H15.9124H15.9268H15.9413H15.9558H15.9704H15.985H15.9997H16.0143H16.0291H16.0438H16.0586H16.0734H16.0883H16.1032H16.1181H16.133H16.148H16.1631H16.1781H16.1932H16.2083H16.2235H16.2387H16.2539H16.2692H16.2844H16.2997H16.3151H16.3304H16.3458H16.3613H16.3767H16.3922H16.4077H16.4232H16.4388H16.4544H16.47H16.4856H16.5013H16.517H16.5327H16.5485H16.5642H16.58H16.5958H16.6116H16.6275H16.6434H16.6593H16.6752H16.6911H16.7071H16.7231H16.7391H16.7551H16.7712H16.7872H16.8033H16.8194H16.8355H16.8516H16.8678H16.884H16.9002H16.9164H16.9326H16.9488H16.965H16.9813H16.9976H17.0139H17.0302H17.0465H17.0628H17.0792H17.0955H17.1119H17.1283H17.1447H17.1611H17.1775H17.1939H17.2103H17.2268H17.2432H17.2597H17.2762H17.2926H17.3091H17.3256H17.3421H17.3586H17.3751H17.3917H17.4082H17.4247H17.4413H17.4578H17.4743H17.4909H17.5074H17.524H17.5405H17.5571H17.5737H17.5902H17.6068H17.6234H17.6399H17.6565H17.6731H17.6896H17.7062H17.7228H17.7393H17.7559H17.7725H17.789H17.8056H17.8221H17.8387H17.8552H17.8718H17.8883H17.9048H17.9214H17.9379H17.9544H17.9709H17.9874H18.0039H18.0204H18.0369H18.0533H18.0698H18.0863H18.1027H18.1191H18.1356H18.152H18.1684H18.1848H18.2012H18.2175H18.2339H18.2503H18.2666H18.2829H18.2992H18.3155H18.3318H18.3481H18.3643H18.3806H18.3968H18.413H18.4292H18.4454H18.4615H18.4777H18.4938H18.5099H18.526H18.542H18.5581H18.5741H18.5901H18.6061H18.6221H18.6381H18.654H18.6699H18.6858H18.7016H18.7175H18.7333H18.7491H18.7649H18.7806H18.7963H18.812H18.8277H18.8434H18.859H18.8746H18.8902H18.9057H18.9212H18.9367H18.9522H18.9676H18.983H18.9984H19.0138H19.0291H19.0444H19.0596H19.0749H19.0901H19.1052H19.1204H19.1355H19.1505H19.1656H19.1806H19.1956H19.2105H19.2254H19.2403H19.2551H19.2699H19.2847H19.2994H19.3141H19.3288H19.3434H19.358H19.3725H19.387H19.4015H19.4159H19.4303H19.4447H19.459H19.4733H19.4875H19.5017H19.5158H19.5299H19.544H19.558H19.572H19.586H19.5999H19.6137H19.6275H19.6413H19.655H19.6687H19.6823H19.6959H19.7095H19.723H19.7364H19.7498H19.7632H19.7765H19.7897H19.8029H19.8161H19.8292H19.8423H19.8553H19.8683H19.8812H19.894H19.9068H19.9196H19.9323H19.945H19.9576H19.9701H19.9826H19.995H20.0074H20.0198H20.032H20.0443H20.0564H20.0685H20.0806H20.0926H20.1046H20.1164H20.1283H20.14H20.1517H20.1634H20.175H20.1865H20.198H20.2094H20.2208H20.2321H20.2433H20.2545H20.2656H20.2766H20.2876H20.2986H20.3094H20.3202H20.3309H20.3416H20.3522H20.3628H20.3732H20.3836H20.394H20.4043H20.4145H20.4246H20.4347H20.4447H20.4546H20.4645H20.4743H20.484H20.4937H20.5033H20.5128H20.5223H20.5317H20.541H20.5502C20.9885 23.125 21.3336 23.2392 21.6003 23.4231C21.7041 23.4947 21.7937 23.5752 21.8711 23.6607V13.6256Z" stroke="#DA3635" stroke-width="0.5"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M14.265 13.9546H13V25.091H19.754C20.2284 25.091 20.9539 25.1929 21.2185 25.3451C21.2508 25.3637 21.2661 25.4099 21.2853 25.468C21.3392 25.6307 21.4239 25.8864 21.9995 25.8864C22.7805 25.8864 22.7805 25.4157 22.7805 25.4157C23.1002 25.2252 23.5509 25.091 24.1862 25.091H31V13.9546H29.9737V23H14.265V13.9546Z" fill="#DA3635"/> +<rect x="15.7383" y="15.5459" width="4.68585" height="0.795455" rx="0.397727" fill="#DA3635"/> +<rect x="23.5938" y="15.5459" width="4.68584" height="0.795455" rx="0.397727" fill="#DA3635"/> +<rect x="15.7383" y="17.9316" width="4.68585" height="0.795455" rx="0.397727" fill="#DA3635"/> +<rect x="23.5938" y="17.9316" width="4.68584" height="0.795455" rx="0.397727" fill="#DA3635"/> +<rect x="15.7383" y="20.3184" width="4.68585" height="0.795455" rx="0.397727" fill="#DA3635"/> +<rect x="23.5938" y="20.3184" width="4.68584" height="0.795455" rx="0.397727" fill="#DA3635"/> </symbol> <symbol id="print" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> @@ -347,17 +348,18 @@ <path fill-rule="evenodd" clip-rule="evenodd" d="M6 12C5.44772 12 5 12.4477 5 13V21H9V17H23V21H27V13C27 12.4477 26.5523 12 26 12H6Z"/> </symbol> -<symbol id="donDeMateriels" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M13.6364 8.18182H4.09093C3.33782 8.18182 2.72729 8.79234 2.72729 9.54546V13.6364L13.6364 13.6364V8.18182ZM2.72729 15V23.1818C2.72729 23.9349 3.33782 24.5455 4.09093 24.5455H12.2727H13.6364V15H2.72729ZM16.3637 24.5455H17.7273H25.9091C26.6622 24.5455 27.2728 23.9349 27.2728 23.1818V15H16.3637V24.5455ZM27.2728 13.6364L16.3637 13.6364V8.18182H25.9091C26.6622 8.18182 27.2728 8.79234 27.2728 9.54546V13.6364Z" stroke="none"/> -<path d="M17.7272 6.81818H9.10467C7.84184 6.81818 6.81812 5.79445 6.81812 4.53162V4.53162C6.81812 2.65509 8.95378 1.57748 10.4632 2.69239L16.0489 6.81818" fill="none"/> -<path d="M12.2728 6.81818H20.8953C22.1582 6.81818 23.1819 5.79445 23.1819 4.53162V4.53162C23.1819 2.65509 21.0462 1.57748 19.5368 2.69239L13.9511 6.81818" fill="none"/> -<path d="M12.2727 24.5454V25.9476C12.1734 25.9717 12.0768 26.007 11.9848 26.053L10.0113 27.0398C9.72576 27.1825 9.54541 27.4744 9.54541 27.7936C9.54541 28.259 9.92273 28.6363 10.3882 28.6363H19.6117C20.0772 28.6363 20.4545 28.259 20.4545 27.7936C20.4545 27.4744 20.2741 27.1825 19.9886 27.0398L18.0152 26.053C17.9231 26.007 17.8265 25.9717 17.7272 25.9476V24.5454H12.2727Z" stroke="none" fill="#333333"/> +<symbol id="donDeMateriels" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M21.2492 15.1816H11.0902C10.3371 15.1816 9.72656 15.7922 9.72656 16.5453V20.6362L21.2492 20.6362V15.1816ZM9.72656 21.9998V30.1816C9.72656 30.9348 10.3371 31.5453 11.0902 31.5453H19.272H21.2492V21.9998H9.72656ZM22.7492 31.5453H24.7266H32.9084C33.6615 31.5453 34.272 30.9348 34.272 30.1816V21.9998H22.7492V31.5453ZM34.272 20.6362L22.7492 20.6362V15.1816H32.9084C33.6615 15.1816 34.272 15.7922 34.272 16.5453V20.6362Z" fill="#333333"/> +<path d="M24.7255 13.8182H16.103C14.8401 13.8182 13.8164 12.7945 13.8164 11.5316V11.5316C13.8164 9.65509 15.9521 8.57748 17.4615 9.69239L23.0472 13.8182" stroke="#DA3635" stroke-width="1.5"/> +<path d="M19.2706 13.8182H27.8931C29.156 13.8182 30.1797 12.7945 30.1797 11.5316V11.5316C30.1797 9.65509 28.044 8.57748 26.5346 9.69239L20.9489 13.8182" stroke="#DA3635" stroke-width="1.5"/> +<path d="M18 36H26" stroke="#333333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M22.75 32V31.25H21.25V32H22.75ZM21.25 36C21.25 36.4142 21.5858 36.75 22 36.75C22.4142 36.75 22.75 36.4142 22.75 36H21.25ZM21.25 32C21.25 32.0038 21.25 32.0076 21.25 32.0114C21.25 32.0152 21.25 32.019 21.25 32.0228C21.25 32.0266 21.25 32.0304 21.25 32.0341C21.25 32.0379 21.25 32.0417 21.25 32.0454C21.25 32.0492 21.25 32.0529 21.25 32.0567C21.25 32.0604 21.25 32.0642 21.25 32.0679C21.25 32.0716 21.25 32.0753 21.25 32.0791C21.25 32.0828 21.25 32.0865 21.25 32.0902C21.25 32.0939 21.25 32.0976 21.25 32.1013C21.25 32.105 21.25 32.1086 21.25 32.1123C21.25 32.116 21.25 32.1197 21.25 32.1233C21.25 32.127 21.25 32.1306 21.25 32.1343C21.25 32.1379 21.25 32.1416 21.25 32.1452C21.25 32.1488 21.25 32.1525 21.25 32.1561C21.25 32.1597 21.25 32.1633 21.25 32.1669C21.25 32.1705 21.25 32.1741 21.25 32.1777C21.25 32.1813 21.25 32.1849 21.25 32.1885C21.25 32.1921 21.25 32.1956 21.25 32.1992C21.25 32.2028 21.25 32.2063 21.25 32.2099C21.25 32.2135 21.25 32.217 21.25 32.2205C21.25 32.2241 21.25 32.2276 21.25 32.2311C21.25 32.2347 21.25 32.2382 21.25 32.2417C21.25 32.2452 21.25 32.2487 21.25 32.2522C21.25 32.2557 21.25 32.2592 21.25 32.2627C21.25 32.2662 21.25 32.2697 21.25 32.2732C21.25 32.2766 21.25 32.2801 21.25 32.2836C21.25 32.287 21.25 32.2905 21.25 32.294C21.25 32.2974 21.25 32.3009 21.25 32.3043C21.25 32.3077 21.25 32.3112 21.25 32.3146C21.25 32.318 21.25 32.3214 21.25 32.3248C21.25 32.3283 21.25 32.3317 21.25 32.3351C21.25 32.3385 21.25 32.3419 21.25 32.3453C21.25 32.3486 21.25 32.352 21.25 32.3554C21.25 32.3588 21.25 32.3621 21.25 32.3655C21.25 32.3689 21.25 32.3722 21.25 32.3756C21.25 32.3789 21.25 32.3823 21.25 32.3856C21.25 32.389 21.25 32.3923 21.25 32.3956C21.25 32.3989 21.25 32.4023 21.25 32.4056C21.25 32.4089 21.25 32.4122 21.25 32.4155C21.25 32.4188 21.25 32.4221 21.25 32.4254C21.25 32.4287 21.25 32.432 21.25 32.4353C21.25 32.4385 21.25 32.4418 21.25 32.4451C21.25 32.4483 21.25 32.4516 21.25 32.4549C21.25 32.4581 21.25 32.4614 21.25 32.4646C21.25 32.4678 21.25 32.4711 21.25 32.4743C21.25 32.4776 21.25 32.4808 21.25 32.484C21.25 32.4872 21.25 32.4904 21.25 32.4936C21.25 32.4968 21.25 32.5001 21.25 32.5032C21.25 32.5064 21.25 32.5096 21.25 32.5128C21.25 32.516 21.25 32.5192 21.25 32.5224C21.25 32.5255 21.25 32.5287 21.25 32.5319C21.25 32.535 21.25 32.5382 21.25 32.5413C21.25 32.5445 21.25 32.5476 21.25 32.5508C21.25 32.5539 21.25 32.5571 21.25 32.5602C21.25 32.5633 21.25 32.5664 21.25 32.5696C21.25 32.5727 21.25 32.5758 21.25 32.5789C21.25 32.582 21.25 32.5851 21.25 32.5882C21.25 32.5913 21.25 32.5944 21.25 32.5975C21.25 32.6005 21.25 32.6036 21.25 32.6067C21.25 32.6098 21.25 32.6128 21.25 32.6159C21.25 32.619 21.25 32.622 21.25 32.6251C21.25 32.6281 21.25 32.6312 21.25 32.6342C21.25 32.6373 21.25 32.6403 21.25 32.6433C21.25 32.6464 21.25 32.6494 21.25 32.6524C21.25 32.6554 21.25 32.6584 21.25 32.6614C21.25 32.6645 21.25 32.6675 21.25 32.6705C21.25 32.6735 21.25 32.6765 21.25 32.6794C21.25 32.6824 21.25 32.6854 21.25 32.6884C21.25 32.6914 21.25 32.6943 21.25 32.6973C21.25 32.7003 21.25 32.7032 21.25 32.7062C21.25 32.7092 21.25 32.7121 21.25 32.715C21.25 32.718 21.25 32.7209 21.25 32.7239C21.25 32.7268 21.25 32.7297 21.25 32.7327C21.25 32.7356 21.25 32.7385 21.25 32.7414C21.25 32.7444 21.25 32.7473 21.25 32.7502C21.25 32.7531 21.25 32.756 21.25 32.7589C21.25 32.7618 21.25 32.7647 21.25 32.7675C21.25 32.7704 21.25 32.7733 21.25 32.7762C21.25 32.7791 21.25 32.7819 21.25 32.7848C21.25 32.7877 21.25 32.7905 21.25 32.7934C21.25 32.7962 21.25 32.7991 21.25 32.8019C21.25 32.8048 21.25 32.8076 21.25 32.8105C21.25 32.8133 21.25 32.8161 21.25 32.819C21.25 32.8218 21.25 32.8246 21.25 32.8274C21.25 32.8303 21.25 32.8331 21.25 32.8359C21.25 32.8387 21.25 32.8415 21.25 32.8443C21.25 32.8471 21.25 32.8499 21.25 32.8527C21.25 32.8555 21.25 32.8583 21.25 32.861C21.25 32.8638 21.25 32.8666 21.25 32.8694C21.25 32.8721 21.25 32.8749 21.25 32.8777C21.25 32.8804 21.25 32.8832 21.25 32.8859C21.25 32.8887 21.25 32.8914 21.25 32.8942C21.25 32.8969 21.25 32.8997 21.25 32.9024C21.25 32.9051 21.25 32.9079 21.25 32.9106C21.25 32.9133 21.25 32.916 21.25 32.9188C21.25 32.9215 21.25 32.9242 21.25 32.9269C21.25 32.9296 21.25 32.9323 21.25 32.935C21.25 32.9377 21.25 32.9404 21.25 32.9431C21.25 32.9458 21.25 32.9485 21.25 32.9512C21.25 32.9538 21.25 32.9565 21.25 32.9592C21.25 32.9619 21.25 32.9645 21.25 32.9672C21.25 32.9699 21.25 32.9725 21.25 32.9752C21.25 32.9778 21.25 32.9805 21.25 32.9831C21.25 32.9858 21.25 32.9884 21.25 32.9911C21.25 32.9937 21.25 32.9963 21.25 32.999C21.25 33.0016 21.25 33.0042 21.25 33.0068C21.25 33.0095 21.25 33.0121 21.25 33.0147C21.25 33.0173 21.25 33.0199 21.25 33.0225C21.25 33.0251 21.25 33.0277 21.25 33.0303C21.25 33.0329 21.25 33.0355 21.25 33.0381C21.25 33.0407 21.25 33.0433 21.25 33.0459C21.25 33.0484 21.25 33.051 21.25 33.0536C21.25 33.0562 21.25 33.0587 21.25 33.0613C21.25 33.0639 21.25 33.0664 21.25 33.069C21.25 33.0715 21.25 33.0741 21.25 33.0767C21.25 33.0792 21.25 33.0817 21.25 33.0843C21.25 33.0868 21.25 33.0894 21.25 33.0919C21.25 33.0944 21.25 33.097 21.25 33.0995C21.25 33.102 21.25 33.1045 21.25 33.1071C21.25 33.1096 21.25 33.1121 21.25 33.1146C21.25 33.1171 21.25 33.1196 21.25 33.1221C21.25 33.1246 21.25 33.1271 21.25 33.1296C21.25 33.1321 21.25 33.1346 21.25 33.1371C21.25 33.1396 21.25 33.1421 21.25 33.1446C21.25 33.147 21.25 33.1495 21.25 33.152C21.25 33.1545 21.25 33.1569 21.25 33.1594C21.25 33.1619 21.25 33.1643 21.25 33.1668C21.25 33.1693 21.25 33.1717 21.25 33.1742C21.25 33.1766 21.25 33.1791 21.25 33.1815C21.25 33.184 21.25 33.1864 21.25 33.1889C21.25 33.1913 21.25 33.1937 21.25 33.1962C21.25 33.1986 21.25 33.201 21.25 33.2034C21.25 33.2059 21.25 33.2083 21.25 33.2107C21.25 33.2131 21.25 33.2155 21.25 33.218C21.25 33.2204 21.25 33.2228 21.25 33.2252C21.25 33.2276 21.25 33.23 21.25 33.2324C21.25 33.2348 21.25 33.2372 21.25 33.2396C21.25 33.242 21.25 33.2443 21.25 33.2467C21.25 33.2491 21.25 33.2515 21.25 33.2539C21.25 33.2563 21.25 33.2586 21.25 33.261C21.25 33.2634 21.25 33.2657 21.25 33.2681C21.25 33.2705 21.25 33.2728 21.25 33.2752C21.25 33.2776 21.25 33.2799 21.25 33.2823C21.25 33.2846 21.25 33.287 21.25 33.2893C21.25 33.2917 21.25 33.294 21.25 33.2963C21.25 33.2987 21.25 33.301 21.25 33.3034C21.25 33.3057 21.25 33.308 21.25 33.3103C21.25 33.3127 21.25 33.315 21.25 33.3173C21.25 33.3196 21.25 33.322 21.25 33.3243C21.25 33.3266 21.25 33.3289 21.25 33.3312C21.25 33.3335 21.25 33.3358 21.25 33.3381C21.25 33.3404 21.25 33.3427 21.25 33.345C21.25 33.3473 21.25 33.3496 21.25 33.3519C21.25 33.3542 21.25 33.3565 21.25 33.3588C21.25 33.3611 21.25 33.3634 21.25 33.3657C21.25 33.3679 21.25 33.3702 21.25 33.3725C21.25 33.3748 21.25 33.377 21.25 33.3793C21.25 33.3816 21.25 33.3839 21.25 33.3861C21.25 33.3884 21.25 33.3907 21.25 33.3929C21.25 33.3952 21.25 33.3974 21.25 33.3997C21.25 33.4019 21.25 33.4042 21.25 33.4064C21.25 33.4087 21.25 33.4109 21.25 33.4132C21.25 33.4154 21.25 33.4177 21.25 33.4199C21.25 33.4221 21.25 33.4244 21.25 33.4266C21.25 33.4288 21.25 33.4311 21.25 33.4333C21.25 33.4355 21.25 33.4378 21.25 33.44C21.25 33.4422 21.25 33.4444 21.25 33.4466C21.25 33.4489 21.25 33.4511 21.25 33.4533C21.25 33.4555 21.25 33.4577 21.25 33.4599C21.25 33.4621 21.25 33.4643 21.25 33.4665C21.25 33.4688 21.25 33.471 21.25 33.4732C21.25 33.4754 21.25 33.4775 21.25 33.4797C21.25 33.4819 21.25 33.4841 21.25 33.4863C21.25 33.4885 21.25 33.4907 21.25 33.4929C21.25 33.4951 21.25 33.4973 21.25 33.4994C21.25 33.5016 21.25 33.5038 21.25 33.506C21.25 33.5081 21.25 33.5103 21.25 33.5125C21.25 33.5147 21.25 33.5168 21.25 33.519C21.25 33.5212 21.25 33.5233 21.25 33.5255C21.25 33.5277 21.25 33.5298 21.25 33.532C21.25 33.5341 21.25 33.5363 21.25 33.5385C21.25 33.5406 21.25 33.5428 21.25 33.5449C21.25 33.5471 21.25 33.5492 21.25 33.5514C21.25 33.5535 21.25 33.5557 21.25 33.5578C21.25 33.5599 21.25 33.5621 21.25 33.5642C21.25 33.5664 21.25 33.5685 21.25 33.5706C21.25 33.5728 21.25 33.5749 21.25 33.577C21.25 33.5792 21.25 33.5813 21.25 33.5834C21.25 33.5855 21.25 33.5877 21.25 33.5898C21.25 33.5919 21.25 33.594 21.25 33.5962C21.25 33.5983 21.25 33.6004 21.25 33.6025C21.25 33.6046 21.25 33.6067 21.25 33.6089C21.25 33.611 21.25 33.6131 21.25 33.6152C21.25 33.6173 21.25 33.6194 21.25 33.6215C21.25 33.6236 21.25 33.6257 21.25 33.6278C21.25 33.6299 21.25 33.632 21.25 33.6341C21.25 33.6362 21.25 33.6383 21.25 33.6404C21.25 33.6425 21.25 33.6446 21.25 33.6467C21.25 33.6488 21.25 33.6509 21.25 33.653C21.25 33.6551 21.25 33.6572 21.25 33.6592C21.25 33.6613 21.25 33.6634 21.25 33.6655C21.25 33.6676 21.25 33.6697 21.25 33.6717C21.25 33.6738 21.25 33.6759 21.25 33.678C21.25 33.6801 21.25 33.6821 21.25 33.6842C21.25 33.6863 21.25 33.6883 21.25 33.6904C21.25 33.6925 21.25 33.6946 21.25 33.6966C21.25 33.6987 21.25 33.7008 21.25 33.7028C21.25 33.7049 21.25 33.707 21.25 33.709C21.25 33.7111 21.25 33.7132 21.25 33.7152C21.25 33.7173 21.25 33.7193 21.25 33.7214C21.25 33.7234 21.25 33.7255 21.25 33.7276C21.25 33.7296 21.25 33.7317 21.25 33.7337C21.25 33.7358 21.25 33.7378 21.25 33.7399C21.25 33.7419 21.25 33.744 21.25 33.746C21.25 33.7481 21.25 33.7501 21.25 33.7522C21.25 33.7542 21.25 33.7563 21.25 33.7583C21.25 33.7603 21.25 33.7624 21.25 33.7644C21.25 33.7665 21.25 33.7685 21.25 33.7706C21.25 33.7726 21.25 33.7746 21.25 33.7767C21.25 33.7787 21.25 33.7807 21.25 33.7828C21.25 33.7848 21.25 33.7868 21.25 33.7889C21.25 33.7909 21.25 33.7929 21.25 33.795C21.25 33.797 21.25 33.799 21.25 33.8011C21.25 33.8031 21.25 33.8051 21.25 33.8072C21.25 33.8092 21.25 33.8112 21.25 33.8132C21.25 33.8153 21.25 33.8173 21.25 33.8193C21.25 33.8213 21.25 33.8234 21.25 33.8254C21.25 33.8274 21.25 33.8294 21.25 33.8314C21.25 33.8335 21.25 33.8355 21.25 33.8375C21.25 33.8395 21.25 33.8415 21.25 33.8436C21.25 33.8456 21.25 33.8476 21.25 33.8496C21.25 33.8516 21.25 33.8536 21.25 33.8557C21.25 33.8577 21.25 33.8597 21.25 33.8617C21.25 33.8637 21.25 33.8657 21.25 33.8677C21.25 33.8698 21.25 33.8718 21.25 33.8738C21.25 33.8758 21.25 33.8778 21.25 33.8798C21.25 33.8818 21.25 33.8838 21.25 33.8858C21.25 33.8879 21.25 33.8899 21.25 33.8919C21.25 33.8939 21.25 33.8959 21.25 33.8979C21.25 33.8999 21.25 33.9019 21.25 33.9039C21.25 33.9059 21.25 33.9079 21.25 33.9099C21.25 33.9119 21.25 33.9139 21.25 33.9159C21.25 33.918 21.25 33.92 21.25 33.922C21.25 33.924 21.25 33.926 21.25 33.928C21.25 33.93 21.25 33.932 21.25 33.934C21.25 33.936 21.25 33.938 21.25 33.94C21.25 33.942 21.25 33.944 21.25 33.946C21.25 33.948 21.25 33.95 21.25 33.952C21.25 33.954 21.25 33.956 21.25 33.958C21.25 33.96 21.25 33.962 21.25 33.964C21.25 33.966 21.25 33.968 21.25 33.97C21.25 33.972 21.25 33.974 21.25 33.976C21.25 33.978 21.25 33.98 21.25 33.982C21.25 33.984 21.25 33.986 21.25 33.988C21.25 33.99 21.25 33.992 21.25 33.994C21.25 33.996 21.25 33.998 21.25 34C21.25 34.002 21.25 34.004 21.25 34.006C21.25 34.008 21.25 34.01 21.25 34.012C21.25 34.014 21.25 34.016 21.25 34.018C21.25 34.02 21.25 34.022 21.25 34.024C21.25 34.026 21.25 34.028 21.25 34.03C21.25 34.032 21.25 34.034 21.25 34.036C21.25 34.038 21.25 34.04 21.25 34.042C21.25 34.044 21.25 34.046 21.25 34.048C21.25 34.05 21.25 34.052 21.25 34.054C21.25 34.056 21.25 34.058 21.25 34.06C21.25 34.062 21.25 34.064 21.25 34.066C21.25 34.068 21.25 34.07 21.25 34.072C21.25 34.074 21.25 34.076 21.25 34.078C21.25 34.08 21.25 34.082 21.25 34.0841C21.25 34.0861 21.25 34.0881 21.25 34.0901C21.25 34.0921 21.25 34.0941 21.25 34.0961C21.25 34.0981 21.25 34.1001 21.25 34.1021C21.25 34.1041 21.25 34.1061 21.25 34.1081C21.25 34.1101 21.25 34.1121 21.25 34.1142C21.25 34.1162 21.25 34.1182 21.25 34.1202C21.25 34.1222 21.25 34.1242 21.25 34.1262C21.25 34.1282 21.25 34.1302 21.25 34.1323C21.25 34.1343 21.25 34.1363 21.25 34.1383C21.25 34.1403 21.25 34.1423 21.25 34.1443C21.25 34.1464 21.25 34.1484 21.25 34.1504C21.25 34.1524 21.25 34.1544 21.25 34.1564C21.25 34.1585 21.25 34.1605 21.25 34.1625C21.25 34.1645 21.25 34.1665 21.25 34.1686C21.25 34.1706 21.25 34.1726 21.25 34.1746C21.25 34.1766 21.25 34.1787 21.25 34.1807C21.25 34.1827 21.25 34.1847 21.25 34.1868C21.25 34.1888 21.25 34.1908 21.25 34.1928C21.25 34.1949 21.25 34.1969 21.25 34.1989C21.25 34.201 21.25 34.203 21.25 34.205C21.25 34.2071 21.25 34.2091 21.25 34.2111C21.25 34.2132 21.25 34.2152 21.25 34.2172C21.25 34.2193 21.25 34.2213 21.25 34.2233C21.25 34.2254 21.25 34.2274 21.25 34.2294C21.25 34.2315 21.25 34.2335 21.25 34.2356C21.25 34.2376 21.25 34.2397 21.25 34.2417C21.25 34.2437 21.25 34.2458 21.25 34.2478C21.25 34.2499 21.25 34.2519 21.25 34.254C21.25 34.256 21.25 34.2581 21.25 34.2601C21.25 34.2622 21.25 34.2642 21.25 34.2663C21.25 34.2683 21.25 34.2704 21.25 34.2724C21.25 34.2745 21.25 34.2766 21.25 34.2786C21.25 34.2807 21.25 34.2827 21.25 34.2848C21.25 34.2868 21.25 34.2889 21.25 34.291C21.25 34.293 21.25 34.2951 21.25 34.2972C21.25 34.2992 21.25 34.3013 21.25 34.3034C21.25 34.3054 21.25 34.3075 21.25 34.3096C21.25 34.3117 21.25 34.3137 21.25 34.3158C21.25 34.3179 21.25 34.3199 21.25 34.322C21.25 34.3241 21.25 34.3262 21.25 34.3283C21.25 34.3303 21.25 34.3324 21.25 34.3345C21.25 34.3366 21.25 34.3387 21.25 34.3408C21.25 34.3428 21.25 34.3449 21.25 34.347C21.25 34.3491 21.25 34.3512 21.25 34.3533C21.25 34.3554 21.25 34.3575 21.25 34.3596C21.25 34.3617 21.25 34.3638 21.25 34.3659C21.25 34.368 21.25 34.3701 21.25 34.3722C21.25 34.3743 21.25 34.3764 21.25 34.3785C21.25 34.3806 21.25 34.3827 21.25 34.3848C21.25 34.3869 21.25 34.389 21.25 34.3911C21.25 34.3933 21.25 34.3954 21.25 34.3975C21.25 34.3996 21.25 34.4017 21.25 34.4038C21.25 34.406 21.25 34.4081 21.25 34.4102C21.25 34.4123 21.25 34.4145 21.25 34.4166C21.25 34.4187 21.25 34.4208 21.25 34.423C21.25 34.4251 21.25 34.4272 21.25 34.4294C21.25 34.4315 21.25 34.4336 21.25 34.4358C21.25 34.4379 21.25 34.4401 21.25 34.4422C21.25 34.4443 21.25 34.4465 21.25 34.4486C21.25 34.4508 21.25 34.4529 21.25 34.4551C21.25 34.4572 21.25 34.4594 21.25 34.4615C21.25 34.4637 21.25 34.4659 21.25 34.468C21.25 34.4702 21.25 34.4723 21.25 34.4745C21.25 34.4767 21.25 34.4788 21.25 34.481C21.25 34.4832 21.25 34.4853 21.25 34.4875C21.25 34.4897 21.25 34.4919 21.25 34.494C21.25 34.4962 21.25 34.4984 21.25 34.5006C21.25 34.5027 21.25 34.5049 21.25 34.5071C21.25 34.5093 21.25 34.5115 21.25 34.5137C21.25 34.5159 21.25 34.5181 21.25 34.5203C21.25 34.5225 21.25 34.5246 21.25 34.5268C21.25 34.529 21.25 34.5312 21.25 34.5335C21.25 34.5357 21.25 34.5379 21.25 34.5401C21.25 34.5423 21.25 34.5445 21.25 34.5467C21.25 34.5489 21.25 34.5511 21.25 34.5534C21.25 34.5556 21.25 34.5578 21.25 34.56C21.25 34.5622 21.25 34.5645 21.25 34.5667C21.25 34.5689 21.25 34.5712 21.25 34.5734C21.25 34.5756 21.25 34.5779 21.25 34.5801C21.25 34.5823 21.25 34.5846 21.25 34.5868C21.25 34.5891 21.25 34.5913 21.25 34.5936C21.25 34.5958 21.25 34.5981 21.25 34.6003C21.25 34.6026 21.25 34.6048 21.25 34.6071C21.25 34.6093 21.25 34.6116 21.25 34.6139C21.25 34.6161 21.25 34.6184 21.25 34.6207C21.25 34.623 21.25 34.6252 21.25 34.6275C21.25 34.6298 21.25 34.6321 21.25 34.6343C21.25 34.6366 21.25 34.6389 21.25 34.6412C21.25 34.6435 21.25 34.6458 21.25 34.6481C21.25 34.6504 21.25 34.6527 21.25 34.655C21.25 34.6573 21.25 34.6596 21.25 34.6619C21.25 34.6642 21.25 34.6665 21.25 34.6688C21.25 34.6711 21.25 34.6734 21.25 34.6757C21.25 34.678 21.25 34.6804 21.25 34.6827C21.25 34.685 21.25 34.6873 21.25 34.6897C21.25 34.692 21.25 34.6943 21.25 34.6966C21.25 34.699 21.25 34.7013 21.25 34.7037C21.25 34.706 21.25 34.7083 21.25 34.7107C21.25 34.713 21.25 34.7154 21.25 34.7177C21.25 34.7201 21.25 34.7224 21.25 34.7248C21.25 34.7272 21.25 34.7295 21.25 34.7319C21.25 34.7343 21.25 34.7366 21.25 34.739C21.25 34.7414 21.25 34.7437 21.25 34.7461C21.25 34.7485 21.25 34.7509 21.25 34.7533C21.25 34.7557 21.25 34.758 21.25 34.7604C21.25 34.7628 21.25 34.7652 21.25 34.7676C21.25 34.77 21.25 34.7724 21.25 34.7748C21.25 34.7772 21.25 34.7796 21.25 34.782C21.25 34.7845 21.25 34.7869 21.25 34.7893C21.25 34.7917 21.25 34.7941 21.25 34.7966C21.25 34.799 21.25 34.8014 21.25 34.8038C21.25 34.8063 21.25 34.8087 21.25 34.8111C21.25 34.8136 21.25 34.816 21.25 34.8185C21.25 34.8209 21.25 34.8234 21.25 34.8258C21.25 34.8283 21.25 34.8307 21.25 34.8332C21.25 34.8357 21.25 34.8381 21.25 34.8406C21.25 34.8431 21.25 34.8455 21.25 34.848C21.25 34.8505 21.25 34.853 21.25 34.8554C21.25 34.8579 21.25 34.8604 21.25 34.8629C21.25 34.8654 21.25 34.8679 21.25 34.8704C21.25 34.8729 21.25 34.8754 21.25 34.8779C21.25 34.8804 21.25 34.8829 21.25 34.8854C21.25 34.8879 21.25 34.8904 21.25 34.8929C21.25 34.8955 21.25 34.898 21.25 34.9005C21.25 34.903 21.25 34.9056 21.25 34.9081C21.25 34.9106 21.25 34.9132 21.25 34.9157C21.25 34.9183 21.25 34.9208 21.25 34.9233C21.25 34.9259 21.25 34.9285 21.25 34.931C21.25 34.9336 21.25 34.9361 21.25 34.9387C21.25 34.9413 21.25 34.9438 21.25 34.9464C21.25 34.949 21.25 34.9516 21.25 34.9541C21.25 34.9567 21.25 34.9593 21.25 34.9619C21.25 34.9645 21.25 34.9671 21.25 34.9697C21.25 34.9723 21.25 34.9749 21.25 34.9775C21.25 34.9801 21.25 34.9827 21.25 34.9853C21.25 34.9879 21.25 34.9905 21.25 34.9932C21.25 34.9958 21.25 34.9984 21.25 35.001C21.25 35.0037 21.25 35.0063 21.25 35.0089C21.25 35.0116 21.25 35.0142 21.25 35.0169C21.25 35.0195 21.25 35.0222 21.25 35.0248C21.25 35.0275 21.25 35.0301 21.25 35.0328C21.25 35.0355 21.25 35.0381 21.25 35.0408C21.25 35.0435 21.25 35.0462 21.25 35.0488C21.25 35.0515 21.25 35.0542 21.25 35.0569C21.25 35.0596 21.25 35.0623 21.25 35.065C21.25 35.0677 21.25 35.0704 21.25 35.0731C21.25 35.0758 21.25 35.0785 21.25 35.0812C21.25 35.084 21.25 35.0867 21.25 35.0894C21.25 35.0921 21.25 35.0949 21.25 35.0976C21.25 35.1003 21.25 35.1031 21.25 35.1058C21.25 35.1086 21.25 35.1113 21.25 35.1141C21.25 35.1168 21.25 35.1196 21.25 35.1223C21.25 35.1251 21.25 35.1279 21.25 35.1306C21.25 35.1334 21.25 35.1362 21.25 35.139C21.25 35.1417 21.25 35.1445 21.25 35.1473C21.25 35.1501 21.25 35.1529 21.25 35.1557C21.25 35.1585 21.25 35.1613 21.25 35.1641C21.25 35.1669 21.25 35.1697 21.25 35.1726C21.25 35.1754 21.25 35.1782 21.25 35.181C21.25 35.1839 21.25 35.1867 21.25 35.1895C21.25 35.1924 21.25 35.1952 21.25 35.1981C21.25 35.2009 21.25 35.2038 21.25 35.2066C21.25 35.2095 21.25 35.2123 21.25 35.2152C21.25 35.2181 21.25 35.2209 21.25 35.2238C21.25 35.2267 21.25 35.2296 21.25 35.2325C21.25 35.2353 21.25 35.2382 21.25 35.2411C21.25 35.244 21.25 35.2469 21.25 35.2498C21.25 35.2527 21.25 35.2556 21.25 35.2586C21.25 35.2615 21.25 35.2644 21.25 35.2673C21.25 35.2703 21.25 35.2732 21.25 35.2761C21.25 35.2791 21.25 35.282 21.25 35.285C21.25 35.2879 21.25 35.2908 21.25 35.2938C21.25 35.2968 21.25 35.2997 21.25 35.3027C21.25 35.3057 21.25 35.3086 21.25 35.3116C21.25 35.3146 21.25 35.3176 21.25 35.3206C21.25 35.3235 21.25 35.3265 21.25 35.3295C21.25 35.3325 21.25 35.3355 21.25 35.3386C21.25 35.3416 21.25 35.3446 21.25 35.3476C21.25 35.3506 21.25 35.3536 21.25 35.3567C21.25 35.3597 21.25 35.3627 21.25 35.3658C21.25 35.3688 21.25 35.3719 21.25 35.3749C21.25 35.378 21.25 35.381 21.25 35.3841C21.25 35.3872 21.25 35.3902 21.25 35.3933C21.25 35.3964 21.25 35.3995 21.25 35.4025C21.25 35.4056 21.25 35.4087 21.25 35.4118C21.25 35.4149 21.25 35.418 21.25 35.4211C21.25 35.4242 21.25 35.4273 21.25 35.4304C21.25 35.4336 21.25 35.4367 21.25 35.4398C21.25 35.4429 21.25 35.4461 21.25 35.4492C21.25 35.4524 21.25 35.4555 21.25 35.4587C21.25 35.4618 21.25 35.465 21.25 35.4681C21.25 35.4713 21.25 35.4745 21.25 35.4776C21.25 35.4808 21.25 35.484 21.25 35.4872C21.25 35.4904 21.25 35.4936 21.25 35.4968C21.25 35.4999 21.25 35.5032 21.25 35.5064C21.25 35.5096 21.25 35.5128 21.25 35.516C21.25 35.5192 21.25 35.5224 21.25 35.5257C21.25 35.5289 21.25 35.5322 21.25 35.5354C21.25 35.5386 21.25 35.5419 21.25 35.5451C21.25 35.5484 21.25 35.5517 21.25 35.5549C21.25 35.5582 21.25 35.5615 21.25 35.5647C21.25 35.568 21.25 35.5713 21.25 35.5746C21.25 35.5779 21.25 35.5812 21.25 35.5845C21.25 35.5878 21.25 35.5911 21.25 35.5944C21.25 35.5977 21.25 35.6011 21.25 35.6044C21.25 35.6077 21.25 35.611 21.25 35.6144C21.25 35.6177 21.25 35.6211 21.25 35.6244C21.25 35.6278 21.25 35.6311 21.25 35.6345C21.25 35.6379 21.25 35.6412 21.25 35.6446C21.25 35.648 21.25 35.6514 21.25 35.6547C21.25 35.6581 21.25 35.6615 21.25 35.6649C21.25 35.6683 21.25 35.6717 21.25 35.6752C21.25 35.6786 21.25 35.682 21.25 35.6854C21.25 35.6888 21.25 35.6923 21.25 35.6957C21.25 35.6991 21.25 35.7026 21.25 35.706C21.25 35.7095 21.25 35.713 21.25 35.7164C21.25 35.7199 21.25 35.7234 21.25 35.7268C21.25 35.7303 21.25 35.7338 21.25 35.7373C21.25 35.7408 21.25 35.7443 21.25 35.7478C21.25 35.7513 21.25 35.7548 21.25 35.7583C21.25 35.7618 21.25 35.7653 21.25 35.7689C21.25 35.7724 21.25 35.7759 21.25 35.7795C21.25 35.783 21.25 35.7865 21.25 35.7901C21.25 35.7937 21.25 35.7972 21.25 35.8008C21.25 35.8044 21.25 35.8079 21.25 35.8115C21.25 35.8151 21.25 35.8187 21.25 35.8223C21.25 35.8259 21.25 35.8295 21.25 35.8331C21.25 35.8367 21.25 35.8403 21.25 35.8439C21.25 35.8475 21.25 35.8512 21.25 35.8548C21.25 35.8584 21.25 35.8621 21.25 35.8657C21.25 35.8694 21.25 35.873 21.25 35.8767C21.25 35.8803 21.25 35.884 21.25 35.8877C21.25 35.8914 21.25 35.895 21.25 35.8987C21.25 35.9024 21.25 35.9061 21.25 35.9098C21.25 35.9135 21.25 35.9172 21.25 35.9209C21.25 35.9247 21.25 35.9284 21.25 35.9321C21.25 35.9358 21.25 35.9396 21.25 35.9433C21.25 35.9471 21.25 35.9508 21.25 35.9546C21.25 35.9583 21.25 35.9621 21.25 35.9659C21.25 35.9696 21.25 35.9734 21.25 35.9772C21.25 35.981 21.25 35.9848 21.25 35.9886C21.25 35.9924 21.25 35.9962 21.25 36H22.75C22.75 35.9962 22.75 35.9924 22.75 35.9886C22.75 35.9848 22.75 35.981 22.75 35.9772C22.75 35.9734 22.75 35.9696 22.75 35.9659C22.75 35.9621 22.75 35.9583 22.75 35.9546C22.75 35.9508 22.75 35.9471 22.75 35.9433C22.75 35.9396 22.75 35.9358 22.75 35.9321C22.75 35.9284 22.75 35.9247 22.75 35.9209C22.75 35.9172 22.75 35.9135 22.75 35.9098C22.75 35.9061 22.75 35.9024 22.75 35.8987C22.75 35.895 22.75 35.8914 22.75 35.8877C22.75 35.884 22.75 35.8803 22.75 35.8767C22.75 35.873 22.75 35.8694 22.75 35.8657C22.75 35.8621 22.75 35.8584 22.75 35.8548C22.75 35.8512 22.75 35.8475 22.75 35.8439C22.75 35.8403 22.75 35.8367 22.75 35.8331C22.75 35.8295 22.75 35.8259 22.75 35.8223C22.75 35.8187 22.75 35.8151 22.75 35.8115C22.75 35.8079 22.75 35.8044 22.75 35.8008C22.75 35.7972 22.75 35.7937 22.75 35.7901C22.75 35.7865 22.75 35.783 22.75 35.7795C22.75 35.7759 22.75 35.7724 22.75 35.7689C22.75 35.7653 22.75 35.7618 22.75 35.7583C22.75 35.7548 22.75 35.7513 22.75 35.7478C22.75 35.7443 22.75 35.7408 22.75 35.7373C22.75 35.7338 22.75 35.7303 22.75 35.7268C22.75 35.7234 22.75 35.7199 22.75 35.7164C22.75 35.713 22.75 35.7095 22.75 35.706C22.75 35.7026 22.75 35.6991 22.75 35.6957C22.75 35.6923 22.75 35.6888 22.75 35.6854C22.75 35.682 22.75 35.6786 22.75 35.6752C22.75 35.6717 22.75 35.6683 22.75 35.6649C22.75 35.6615 22.75 35.6581 22.75 35.6547C22.75 35.6514 22.75 35.648 22.75 35.6446C22.75 35.6412 22.75 35.6379 22.75 35.6345C22.75 35.6311 22.75 35.6278 22.75 35.6244C22.75 35.6211 22.75 35.6177 22.75 35.6144C22.75 35.611 22.75 35.6077 22.75 35.6044C22.75 35.6011 22.75 35.5977 22.75 35.5944C22.75 35.5911 22.75 35.5878 22.75 35.5845C22.75 35.5812 22.75 35.5779 22.75 35.5746C22.75 35.5713 22.75 35.568 22.75 35.5647C22.75 35.5615 22.75 35.5582 22.75 35.5549C22.75 35.5517 22.75 35.5484 22.75 35.5451C22.75 35.5419 22.75 35.5386 22.75 35.5354C22.75 35.5322 22.75 35.5289 22.75 35.5257C22.75 35.5224 22.75 35.5192 22.75 35.516C22.75 35.5128 22.75 35.5096 22.75 35.5064C22.75 35.5032 22.75 35.4999 22.75 35.4968C22.75 35.4936 22.75 35.4904 22.75 35.4872C22.75 35.484 22.75 35.4808 22.75 35.4776C22.75 35.4745 22.75 35.4713 22.75 35.4681C22.75 35.465 22.75 35.4618 22.75 35.4587C22.75 35.4555 22.75 35.4524 22.75 35.4492C22.75 35.4461 22.75 35.4429 22.75 35.4398C22.75 35.4367 22.75 35.4336 22.75 35.4304C22.75 35.4273 22.75 35.4242 22.75 35.4211C22.75 35.418 22.75 35.4149 22.75 35.4118C22.75 35.4087 22.75 35.4056 22.75 35.4025C22.75 35.3995 22.75 35.3964 22.75 35.3933C22.75 35.3902 22.75 35.3872 22.75 35.3841C22.75 35.381 22.75 35.378 22.75 35.3749C22.75 35.3719 22.75 35.3688 22.75 35.3658C22.75 35.3627 22.75 35.3597 22.75 35.3567C22.75 35.3536 22.75 35.3506 22.75 35.3476C22.75 35.3446 22.75 35.3416 22.75 35.3386C22.75 35.3355 22.75 35.3325 22.75 35.3295C22.75 35.3265 22.75 35.3235 22.75 35.3206C22.75 35.3176 22.75 35.3146 22.75 35.3116C22.75 35.3086 22.75 35.3057 22.75 35.3027C22.75 35.2997 22.75 35.2968 22.75 35.2938C22.75 35.2908 22.75 35.2879 22.75 35.285C22.75 35.282 22.75 35.2791 22.75 35.2761C22.75 35.2732 22.75 35.2703 22.75 35.2673C22.75 35.2644 22.75 35.2615 22.75 35.2586C22.75 35.2556 22.75 35.2527 22.75 35.2498C22.75 35.2469 22.75 35.244 22.75 35.2411C22.75 35.2382 22.75 35.2353 22.75 35.2325C22.75 35.2296 22.75 35.2267 22.75 35.2238C22.75 35.2209 22.75 35.2181 22.75 35.2152C22.75 35.2123 22.75 35.2095 22.75 35.2066C22.75 35.2038 22.75 35.2009 22.75 35.1981C22.75 35.1952 22.75 35.1924 22.75 35.1895C22.75 35.1867 22.75 35.1839 22.75 35.181C22.75 35.1782 22.75 35.1754 22.75 35.1726C22.75 35.1697 22.75 35.1669 22.75 35.1641C22.75 35.1613 22.75 35.1585 22.75 35.1557C22.75 35.1529 22.75 35.1501 22.75 35.1473C22.75 35.1445 22.75 35.1417 22.75 35.139C22.75 35.1362 22.75 35.1334 22.75 35.1306C22.75 35.1279 22.75 35.1251 22.75 35.1223C22.75 35.1196 22.75 35.1168 22.75 35.1141C22.75 35.1113 22.75 35.1086 22.75 35.1058C22.75 35.1031 22.75 35.1003 22.75 35.0976C22.75 35.0949 22.75 35.0921 22.75 35.0894C22.75 35.0867 22.75 35.084 22.75 35.0812C22.75 35.0785 22.75 35.0758 22.75 35.0731C22.75 35.0704 22.75 35.0677 22.75 35.065C22.75 35.0623 22.75 35.0596 22.75 35.0569C22.75 35.0542 22.75 35.0515 22.75 35.0488C22.75 35.0462 22.75 35.0435 22.75 35.0408C22.75 35.0381 22.75 35.0355 22.75 35.0328C22.75 35.0301 22.75 35.0275 22.75 35.0248C22.75 35.0222 22.75 35.0195 22.75 35.0169C22.75 35.0142 22.75 35.0116 22.75 35.0089C22.75 35.0063 22.75 35.0037 22.75 35.001C22.75 34.9984 22.75 34.9958 22.75 34.9932C22.75 34.9905 22.75 34.9879 22.75 34.9853C22.75 34.9827 22.75 34.9801 22.75 34.9775C22.75 34.9749 22.75 34.9723 22.75 34.9697C22.75 34.9671 22.75 34.9645 22.75 34.9619C22.75 34.9593 22.75 34.9567 22.75 34.9541C22.75 34.9516 22.75 34.949 22.75 34.9464C22.75 34.9438 22.75 34.9413 22.75 34.9387C22.75 34.9361 22.75 34.9336 22.75 34.931C22.75 34.9285 22.75 34.9259 22.75 34.9233C22.75 34.9208 22.75 34.9183 22.75 34.9157C22.75 34.9132 22.75 34.9106 22.75 34.9081C22.75 34.9056 22.75 34.903 22.75 34.9005C22.75 34.898 22.75 34.8955 22.75 34.8929C22.75 34.8904 22.75 34.8879 22.75 34.8854C22.75 34.8829 22.75 34.8804 22.75 34.8779C22.75 34.8754 22.75 34.8729 22.75 34.8704C22.75 34.8679 22.75 34.8654 22.75 34.8629C22.75 34.8604 22.75 34.8579 22.75 34.8554C22.75 34.853 22.75 34.8505 22.75 34.848C22.75 34.8455 22.75 34.8431 22.75 34.8406C22.75 34.8381 22.75 34.8357 22.75 34.8332C22.75 34.8307 22.75 34.8283 22.75 34.8258C22.75 34.8234 22.75 34.8209 22.75 34.8185C22.75 34.816 22.75 34.8136 22.75 34.8111C22.75 34.8087 22.75 34.8063 22.75 34.8038C22.75 34.8014 22.75 34.799 22.75 34.7966C22.75 34.7941 22.75 34.7917 22.75 34.7893C22.75 34.7869 22.75 34.7845 22.75 34.782C22.75 34.7796 22.75 34.7772 22.75 34.7748C22.75 34.7724 22.75 34.77 22.75 34.7676C22.75 34.7652 22.75 34.7628 22.75 34.7604C22.75 34.758 22.75 34.7557 22.75 34.7533C22.75 34.7509 22.75 34.7485 22.75 34.7461C22.75 34.7437 22.75 34.7414 22.75 34.739C22.75 34.7366 22.75 34.7343 22.75 34.7319C22.75 34.7295 22.75 34.7272 22.75 34.7248C22.75 34.7224 22.75 34.7201 22.75 34.7177C22.75 34.7154 22.75 34.713 22.75 34.7107C22.75 34.7083 22.75 34.706 22.75 34.7037C22.75 34.7013 22.75 34.699 22.75 34.6966C22.75 34.6943 22.75 34.692 22.75 34.6897C22.75 34.6873 22.75 34.685 22.75 34.6827C22.75 34.6804 22.75 34.678 22.75 34.6757C22.75 34.6734 22.75 34.6711 22.75 34.6688C22.75 34.6665 22.75 34.6642 22.75 34.6619C22.75 34.6596 22.75 34.6573 22.75 34.655C22.75 34.6527 22.75 34.6504 22.75 34.6481C22.75 34.6458 22.75 34.6435 22.75 34.6412C22.75 34.6389 22.75 34.6366 22.75 34.6343C22.75 34.6321 22.75 34.6298 22.75 34.6275C22.75 34.6252 22.75 34.623 22.75 34.6207C22.75 34.6184 22.75 34.6161 22.75 34.6139C22.75 34.6116 22.75 34.6093 22.75 34.6071C22.75 34.6048 22.75 34.6026 22.75 34.6003C22.75 34.5981 22.75 34.5958 22.75 34.5936C22.75 34.5913 22.75 34.5891 22.75 34.5868C22.75 34.5846 22.75 34.5823 22.75 34.5801C22.75 34.5779 22.75 34.5756 22.75 34.5734C22.75 34.5712 22.75 34.5689 22.75 34.5667C22.75 34.5645 22.75 34.5622 22.75 34.56C22.75 34.5578 22.75 34.5556 22.75 34.5534C22.75 34.5511 22.75 34.5489 22.75 34.5467C22.75 34.5445 22.75 34.5423 22.75 34.5401C22.75 34.5379 22.75 34.5357 22.75 34.5335C22.75 34.5312 22.75 34.529 22.75 34.5268C22.75 34.5246 22.75 34.5225 22.75 34.5203C22.75 34.5181 22.75 34.5159 22.75 34.5137C22.75 34.5115 22.75 34.5093 22.75 34.5071C22.75 34.5049 22.75 34.5027 22.75 34.5006C22.75 34.4984 22.75 34.4962 22.75 34.494C22.75 34.4919 22.75 34.4897 22.75 34.4875C22.75 34.4853 22.75 34.4832 22.75 34.481C22.75 34.4788 22.75 34.4767 22.75 34.4745C22.75 34.4723 22.75 34.4702 22.75 34.468C22.75 34.4659 22.75 34.4637 22.75 34.4615C22.75 34.4594 22.75 34.4572 22.75 34.4551C22.75 34.4529 22.75 34.4508 22.75 34.4486C22.75 34.4465 22.75 34.4443 22.75 34.4422C22.75 34.4401 22.75 34.4379 22.75 34.4358C22.75 34.4336 22.75 34.4315 22.75 34.4294C22.75 34.4272 22.75 34.4251 22.75 34.423C22.75 34.4208 22.75 34.4187 22.75 34.4166C22.75 34.4145 22.75 34.4123 22.75 34.4102C22.75 34.4081 22.75 34.406 22.75 34.4038C22.75 34.4017 22.75 34.3996 22.75 34.3975C22.75 34.3954 22.75 34.3933 22.75 34.3911C22.75 34.389 22.75 34.3869 22.75 34.3848C22.75 34.3827 22.75 34.3806 22.75 34.3785C22.75 34.3764 22.75 34.3743 22.75 34.3722C22.75 34.3701 22.75 34.368 22.75 34.3659C22.75 34.3638 22.75 34.3617 22.75 34.3596C22.75 34.3575 22.75 34.3554 22.75 34.3533C22.75 34.3512 22.75 34.3491 22.75 34.347C22.75 34.3449 22.75 34.3428 22.75 34.3408C22.75 34.3387 22.75 34.3366 22.75 34.3345C22.75 34.3324 22.75 34.3303 22.75 34.3283C22.75 34.3262 22.75 34.3241 22.75 34.322C22.75 34.3199 22.75 34.3179 22.75 34.3158C22.75 34.3137 22.75 34.3117 22.75 34.3096C22.75 34.3075 22.75 34.3054 22.75 34.3034C22.75 34.3013 22.75 34.2992 22.75 34.2972C22.75 34.2951 22.75 34.293 22.75 34.291C22.75 34.2889 22.75 34.2868 22.75 34.2848C22.75 34.2827 22.75 34.2807 22.75 34.2786C22.75 34.2766 22.75 34.2745 22.75 34.2724C22.75 34.2704 22.75 34.2683 22.75 34.2663C22.75 34.2642 22.75 34.2622 22.75 34.2601C22.75 34.2581 22.75 34.256 22.75 34.254C22.75 34.2519 22.75 34.2499 22.75 34.2478C22.75 34.2458 22.75 34.2437 22.75 34.2417C22.75 34.2397 22.75 34.2376 22.75 34.2356C22.75 34.2335 22.75 34.2315 22.75 34.2294C22.75 34.2274 22.75 34.2254 22.75 34.2233C22.75 34.2213 22.75 34.2193 22.75 34.2172C22.75 34.2152 22.75 34.2132 22.75 34.2111C22.75 34.2091 22.75 34.2071 22.75 34.205C22.75 34.203 22.75 34.201 22.75 34.1989C22.75 34.1969 22.75 34.1949 22.75 34.1928C22.75 34.1908 22.75 34.1888 22.75 34.1868C22.75 34.1847 22.75 34.1827 22.75 34.1807C22.75 34.1787 22.75 34.1766 22.75 34.1746C22.75 34.1726 22.75 34.1706 22.75 34.1686C22.75 34.1665 22.75 34.1645 22.75 34.1625C22.75 34.1605 22.75 34.1585 22.75 34.1564C22.75 34.1544 22.75 34.1524 22.75 34.1504C22.75 34.1484 22.75 34.1464 22.75 34.1443C22.75 34.1423 22.75 34.1403 22.75 34.1383C22.75 34.1363 22.75 34.1343 22.75 34.1323C22.75 34.1302 22.75 34.1282 22.75 34.1262C22.75 34.1242 22.75 34.1222 22.75 34.1202C22.75 34.1182 22.75 34.1162 22.75 34.1142C22.75 34.1121 22.75 34.1101 22.75 34.1081C22.75 34.1061 22.75 34.1041 22.75 34.1021C22.75 34.1001 22.75 34.0981 22.75 34.0961C22.75 34.0941 22.75 34.0921 22.75 34.0901C22.75 34.0881 22.75 34.0861 22.75 34.0841C22.75 34.082 22.75 34.08 22.75 34.078C22.75 34.076 22.75 34.074 22.75 34.072C22.75 34.07 22.75 34.068 22.75 34.066C22.75 34.064 22.75 34.062 22.75 34.06C22.75 34.058 22.75 34.056 22.75 34.054C22.75 34.052 22.75 34.05 22.75 34.048C22.75 34.046 22.75 34.044 22.75 34.042C22.75 34.04 22.75 34.038 22.75 34.036C22.75 34.034 22.75 34.032 22.75 34.03C22.75 34.028 22.75 34.026 22.75 34.024C22.75 34.022 22.75 34.02 22.75 34.018C22.75 34.016 22.75 34.014 22.75 34.012C22.75 34.01 22.75 34.008 22.75 34.006C22.75 34.004 22.75 34.002 22.75 34C22.75 33.998 22.75 33.996 22.75 33.994C22.75 33.992 22.75 33.99 22.75 33.988C22.75 33.986 22.75 33.984 22.75 33.982C22.75 33.98 22.75 33.978 22.75 33.976C22.75 33.974 22.75 33.972 22.75 33.97C22.75 33.968 22.75 33.966 22.75 33.964C22.75 33.962 22.75 33.96 22.75 33.958C22.75 33.956 22.75 33.954 22.75 33.952C22.75 33.95 22.75 33.948 22.75 33.946C22.75 33.944 22.75 33.942 22.75 33.94C22.75 33.938 22.75 33.936 22.75 33.934C22.75 33.932 22.75 33.93 22.75 33.928C22.75 33.926 22.75 33.924 22.75 33.922C22.75 33.92 22.75 33.918 22.75 33.9159C22.75 33.9139 22.75 33.9119 22.75 33.9099C22.75 33.9079 22.75 33.9059 22.75 33.9039C22.75 33.9019 22.75 33.8999 22.75 33.8979C22.75 33.8959 22.75 33.8939 22.75 33.8919C22.75 33.8899 22.75 33.8879 22.75 33.8858C22.75 33.8838 22.75 33.8818 22.75 33.8798C22.75 33.8778 22.75 33.8758 22.75 33.8738C22.75 33.8718 22.75 33.8698 22.75 33.8677C22.75 33.8657 22.75 33.8637 22.75 33.8617C22.75 33.8597 22.75 33.8577 22.75 33.8557C22.75 33.8536 22.75 33.8516 22.75 33.8496C22.75 33.8476 22.75 33.8456 22.75 33.8436C22.75 33.8415 22.75 33.8395 22.75 33.8375C22.75 33.8355 22.75 33.8335 22.75 33.8314C22.75 33.8294 22.75 33.8274 22.75 33.8254C22.75 33.8234 22.75 33.8213 22.75 33.8193C22.75 33.8173 22.75 33.8153 22.75 33.8132C22.75 33.8112 22.75 33.8092 22.75 33.8072C22.75 33.8051 22.75 33.8031 22.75 33.8011C22.75 33.799 22.75 33.797 22.75 33.795C22.75 33.7929 22.75 33.7909 22.75 33.7889C22.75 33.7868 22.75 33.7848 22.75 33.7828C22.75 33.7807 22.75 33.7787 22.75 33.7767C22.75 33.7746 22.75 33.7726 22.75 33.7706C22.75 33.7685 22.75 33.7665 22.75 33.7644C22.75 33.7624 22.75 33.7603 22.75 33.7583C22.75 33.7563 22.75 33.7542 22.75 33.7522C22.75 33.7501 22.75 33.7481 22.75 33.746C22.75 33.744 22.75 33.7419 22.75 33.7399C22.75 33.7378 22.75 33.7358 22.75 33.7337C22.75 33.7317 22.75 33.7296 22.75 33.7276C22.75 33.7255 22.75 33.7234 22.75 33.7214C22.75 33.7193 22.75 33.7173 22.75 33.7152C22.75 33.7132 22.75 33.7111 22.75 33.709C22.75 33.707 22.75 33.7049 22.75 33.7028C22.75 33.7008 22.75 33.6987 22.75 33.6966C22.75 33.6946 22.75 33.6925 22.75 33.6904C22.75 33.6883 22.75 33.6863 22.75 33.6842C22.75 33.6821 22.75 33.6801 22.75 33.678C22.75 33.6759 22.75 33.6738 22.75 33.6717C22.75 33.6697 22.75 33.6676 22.75 33.6655C22.75 33.6634 22.75 33.6613 22.75 33.6592C22.75 33.6572 22.75 33.6551 22.75 33.653C22.75 33.6509 22.75 33.6488 22.75 33.6467C22.75 33.6446 22.75 33.6425 22.75 33.6404C22.75 33.6383 22.75 33.6362 22.75 33.6341C22.75 33.632 22.75 33.6299 22.75 33.6278C22.75 33.6257 22.75 33.6236 22.75 33.6215C22.75 33.6194 22.75 33.6173 22.75 33.6152C22.75 33.6131 22.75 33.611 22.75 33.6089C22.75 33.6067 22.75 33.6046 22.75 33.6025C22.75 33.6004 22.75 33.5983 22.75 33.5962C22.75 33.594 22.75 33.5919 22.75 33.5898C22.75 33.5877 22.75 33.5855 22.75 33.5834C22.75 33.5813 22.75 33.5792 22.75 33.577C22.75 33.5749 22.75 33.5728 22.75 33.5706C22.75 33.5685 22.75 33.5664 22.75 33.5642C22.75 33.5621 22.75 33.5599 22.75 33.5578C22.75 33.5557 22.75 33.5535 22.75 33.5514C22.75 33.5492 22.75 33.5471 22.75 33.5449C22.75 33.5428 22.75 33.5406 22.75 33.5385C22.75 33.5363 22.75 33.5341 22.75 33.532C22.75 33.5298 22.75 33.5277 22.75 33.5255C22.75 33.5233 22.75 33.5212 22.75 33.519C22.75 33.5168 22.75 33.5147 22.75 33.5125C22.75 33.5103 22.75 33.5081 22.75 33.506C22.75 33.5038 22.75 33.5016 22.75 33.4994C22.75 33.4973 22.75 33.4951 22.75 33.4929C22.75 33.4907 22.75 33.4885 22.75 33.4863C22.75 33.4841 22.75 33.4819 22.75 33.4797C22.75 33.4775 22.75 33.4754 22.75 33.4732C22.75 33.471 22.75 33.4688 22.75 33.4665C22.75 33.4643 22.75 33.4621 22.75 33.4599C22.75 33.4577 22.75 33.4555 22.75 33.4533C22.75 33.4511 22.75 33.4489 22.75 33.4466C22.75 33.4444 22.75 33.4422 22.75 33.44C22.75 33.4378 22.75 33.4355 22.75 33.4333C22.75 33.4311 22.75 33.4288 22.75 33.4266C22.75 33.4244 22.75 33.4221 22.75 33.4199C22.75 33.4177 22.75 33.4154 22.75 33.4132C22.75 33.4109 22.75 33.4087 22.75 33.4064C22.75 33.4042 22.75 33.4019 22.75 33.3997C22.75 33.3974 22.75 33.3952 22.75 33.3929C22.75 33.3907 22.75 33.3884 22.75 33.3861C22.75 33.3839 22.75 33.3816 22.75 33.3793C22.75 33.377 22.75 33.3748 22.75 33.3725C22.75 33.3702 22.75 33.3679 22.75 33.3657C22.75 33.3634 22.75 33.3611 22.75 33.3588C22.75 33.3565 22.75 33.3542 22.75 33.3519C22.75 33.3496 22.75 33.3473 22.75 33.345C22.75 33.3427 22.75 33.3404 22.75 33.3381C22.75 33.3358 22.75 33.3335 22.75 33.3312C22.75 33.3289 22.75 33.3266 22.75 33.3243C22.75 33.322 22.75 33.3196 22.75 33.3173C22.75 33.315 22.75 33.3127 22.75 33.3103C22.75 33.308 22.75 33.3057 22.75 33.3034C22.75 33.301 22.75 33.2987 22.75 33.2963C22.75 33.294 22.75 33.2917 22.75 33.2893C22.75 33.287 22.75 33.2846 22.75 33.2823C22.75 33.2799 22.75 33.2776 22.75 33.2752C22.75 33.2728 22.75 33.2705 22.75 33.2681C22.75 33.2657 22.75 33.2634 22.75 33.261C22.75 33.2586 22.75 33.2563 22.75 33.2539C22.75 33.2515 22.75 33.2491 22.75 33.2467C22.75 33.2443 22.75 33.242 22.75 33.2396C22.75 33.2372 22.75 33.2348 22.75 33.2324C22.75 33.23 22.75 33.2276 22.75 33.2252C22.75 33.2228 22.75 33.2204 22.75 33.218C22.75 33.2155 22.75 33.2131 22.75 33.2107C22.75 33.2083 22.75 33.2059 22.75 33.2034C22.75 33.201 22.75 33.1986 22.75 33.1962C22.75 33.1937 22.75 33.1913 22.75 33.1889C22.75 33.1864 22.75 33.184 22.75 33.1815C22.75 33.1791 22.75 33.1766 22.75 33.1742C22.75 33.1717 22.75 33.1693 22.75 33.1668C22.75 33.1643 22.75 33.1619 22.75 33.1594C22.75 33.1569 22.75 33.1545 22.75 33.152C22.75 33.1495 22.75 33.147 22.75 33.1446C22.75 33.1421 22.75 33.1396 22.75 33.1371C22.75 33.1346 22.75 33.1321 22.75 33.1296C22.75 33.1271 22.75 33.1246 22.75 33.1221C22.75 33.1196 22.75 33.1171 22.75 33.1146C22.75 33.1121 22.75 33.1096 22.75 33.1071C22.75 33.1045 22.75 33.102 22.75 33.0995C22.75 33.097 22.75 33.0944 22.75 33.0919C22.75 33.0894 22.75 33.0868 22.75 33.0843C22.75 33.0817 22.75 33.0792 22.75 33.0767C22.75 33.0741 22.75 33.0715 22.75 33.069C22.75 33.0664 22.75 33.0639 22.75 33.0613C22.75 33.0587 22.75 33.0562 22.75 33.0536C22.75 33.051 22.75 33.0484 22.75 33.0459C22.75 33.0433 22.75 33.0407 22.75 33.0381C22.75 33.0355 22.75 33.0329 22.75 33.0303C22.75 33.0277 22.75 33.0251 22.75 33.0225C22.75 33.0199 22.75 33.0173 22.75 33.0147C22.75 33.0121 22.75 33.0095 22.75 33.0068C22.75 33.0042 22.75 33.0016 22.75 32.999C22.75 32.9963 22.75 32.9937 22.75 32.9911C22.75 32.9884 22.75 32.9858 22.75 32.9831C22.75 32.9805 22.75 32.9778 22.75 32.9752C22.75 32.9725 22.75 32.9699 22.75 32.9672C22.75 32.9645 22.75 32.9619 22.75 32.9592C22.75 32.9565 22.75 32.9538 22.75 32.9512C22.75 32.9485 22.75 32.9458 22.75 32.9431C22.75 32.9404 22.75 32.9377 22.75 32.935C22.75 32.9323 22.75 32.9296 22.75 32.9269C22.75 32.9242 22.75 32.9215 22.75 32.9188C22.75 32.916 22.75 32.9133 22.75 32.9106C22.75 32.9079 22.75 32.9051 22.75 32.9024C22.75 32.8997 22.75 32.8969 22.75 32.8942C22.75 32.8914 22.75 32.8887 22.75 32.8859C22.75 32.8832 22.75 32.8804 22.75 32.8777C22.75 32.8749 22.75 32.8721 22.75 32.8694C22.75 32.8666 22.75 32.8638 22.75 32.861C22.75 32.8583 22.75 32.8555 22.75 32.8527C22.75 32.8499 22.75 32.8471 22.75 32.8443C22.75 32.8415 22.75 32.8387 22.75 32.8359C22.75 32.8331 22.75 32.8303 22.75 32.8274C22.75 32.8246 22.75 32.8218 22.75 32.819C22.75 32.8161 22.75 32.8133 22.75 32.8105C22.75 32.8076 22.75 32.8048 22.75 32.8019C22.75 32.7991 22.75 32.7962 22.75 32.7934C22.75 32.7905 22.75 32.7877 22.75 32.7848C22.75 32.7819 22.75 32.7791 22.75 32.7762C22.75 32.7733 22.75 32.7704 22.75 32.7675C22.75 32.7647 22.75 32.7618 22.75 32.7589C22.75 32.756 22.75 32.7531 22.75 32.7502C22.75 32.7473 22.75 32.7444 22.75 32.7414C22.75 32.7385 22.75 32.7356 22.75 32.7327C22.75 32.7297 22.75 32.7268 22.75 32.7239C22.75 32.7209 22.75 32.718 22.75 32.715C22.75 32.7121 22.75 32.7092 22.75 32.7062C22.75 32.7032 22.75 32.7003 22.75 32.6973C22.75 32.6943 22.75 32.6914 22.75 32.6884C22.75 32.6854 22.75 32.6824 22.75 32.6794C22.75 32.6765 22.75 32.6735 22.75 32.6705C22.75 32.6675 22.75 32.6645 22.75 32.6614C22.75 32.6584 22.75 32.6554 22.75 32.6524C22.75 32.6494 22.75 32.6464 22.75 32.6433C22.75 32.6403 22.75 32.6373 22.75 32.6342C22.75 32.6312 22.75 32.6281 22.75 32.6251C22.75 32.622 22.75 32.619 22.75 32.6159C22.75 32.6128 22.75 32.6098 22.75 32.6067C22.75 32.6036 22.75 32.6005 22.75 32.5975C22.75 32.5944 22.75 32.5913 22.75 32.5882C22.75 32.5851 22.75 32.582 22.75 32.5789C22.75 32.5758 22.75 32.5727 22.75 32.5696C22.75 32.5664 22.75 32.5633 22.75 32.5602C22.75 32.5571 22.75 32.5539 22.75 32.5508C22.75 32.5476 22.75 32.5445 22.75 32.5413C22.75 32.5382 22.75 32.535 22.75 32.5319C22.75 32.5287 22.75 32.5255 22.75 32.5224C22.75 32.5192 22.75 32.516 22.75 32.5128C22.75 32.5096 22.75 32.5064 22.75 32.5032C22.75 32.5001 22.75 32.4968 22.75 32.4936C22.75 32.4904 22.75 32.4872 22.75 32.484C22.75 32.4808 22.75 32.4776 22.75 32.4743C22.75 32.4711 22.75 32.4678 22.75 32.4646C22.75 32.4614 22.75 32.4581 22.75 32.4549C22.75 32.4516 22.75 32.4483 22.75 32.4451C22.75 32.4418 22.75 32.4385 22.75 32.4353C22.75 32.432 22.75 32.4287 22.75 32.4254C22.75 32.4221 22.75 32.4188 22.75 32.4155C22.75 32.4122 22.75 32.4089 22.75 32.4056C22.75 32.4023 22.75 32.3989 22.75 32.3956C22.75 32.3923 22.75 32.389 22.75 32.3856C22.75 32.3823 22.75 32.3789 22.75 32.3756C22.75 32.3722 22.75 32.3689 22.75 32.3655C22.75 32.3621 22.75 32.3588 22.75 32.3554C22.75 32.352 22.75 32.3486 22.75 32.3453C22.75 32.3419 22.75 32.3385 22.75 32.3351C22.75 32.3317 22.75 32.3283 22.75 32.3248C22.75 32.3214 22.75 32.318 22.75 32.3146C22.75 32.3112 22.75 32.3077 22.75 32.3043C22.75 32.3009 22.75 32.2974 22.75 32.294C22.75 32.2905 22.75 32.287 22.75 32.2836C22.75 32.2801 22.75 32.2766 22.75 32.2732C22.75 32.2697 22.75 32.2662 22.75 32.2627C22.75 32.2592 22.75 32.2557 22.75 32.2522C22.75 32.2487 22.75 32.2452 22.75 32.2417C22.75 32.2382 22.75 32.2347 22.75 32.2311C22.75 32.2276 22.75 32.2241 22.75 32.2205C22.75 32.217 22.75 32.2135 22.75 32.2099C22.75 32.2063 22.75 32.2028 22.75 32.1992C22.75 32.1956 22.75 32.1921 22.75 32.1885C22.75 32.1849 22.75 32.1813 22.75 32.1777C22.75 32.1741 22.75 32.1705 22.75 32.1669C22.75 32.1633 22.75 32.1597 22.75 32.1561C22.75 32.1525 22.75 32.1488 22.75 32.1452C22.75 32.1416 22.75 32.1379 22.75 32.1343C22.75 32.1306 22.75 32.127 22.75 32.1233C22.75 32.1197 22.75 32.116 22.75 32.1123C22.75 32.1086 22.75 32.105 22.75 32.1013C22.75 32.0976 22.75 32.0939 22.75 32.0902C22.75 32.0865 22.75 32.0828 22.75 32.0791C22.75 32.0753 22.75 32.0716 22.75 32.0679C22.75 32.0642 22.75 32.0604 22.75 32.0567C22.75 32.0529 22.75 32.0492 22.75 32.0454C22.75 32.0417 22.75 32.0379 22.75 32.0341C22.75 32.0304 22.75 32.0266 22.75 32.0228C22.75 32.019 22.75 32.0152 22.75 32.0114C22.75 32.0076 22.75 32.0038 22.75 32H21.25Z" fill="#333333"/> </symbol> -<symbol id="reconditionnementsDeMateriel" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M24.6458 4.07059C23.19 3.6818 21.5723 4.05846 20.4302 5.20056C19.2881 6.34266 18.9115 7.96033 19.3002 9.41611L15.8209 12.8955L18.9064 15.981L22.3858 12.5017C23.8416 12.8904 25.4593 12.5138 26.6013 11.3717C27.7434 10.2296 28.1201 8.61195 27.7313 7.15618L25.5729 9.31462L23.0016 8.80036L22.4873 6.22906L24.6458 4.07059ZM16.8494 18.0381L13.7638 14.9525L9.21799 19.4984C7.76221 19.1096 6.14454 19.4863 5.00244 20.6283C3.86034 21.7705 3.48368 23.3882 3.87247 24.844L6.03106 22.6854L8.60236 23.1996L9.11662 25.7709L6.95807 27.9295C8.41384 28.3182 10.0315 27.9415 11.1736 26.7995C12.3157 25.6574 12.6923 24.0397 12.3035 22.5839L16.8494 18.0381Z" stroke="none" fill="#333333"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2536 6.42804C10.1525 6.19203 9.96439 6.00397 9.72838 5.90282L6.49622 4.51761L5.4677 5.54612L6.85291 8.77828C6.95406 9.0143 7.14212 9.20236 7.37814 9.30351L10.6103 10.6887L10.6164 10.6826L19.0192 19.0855L20.0478 18.057L11.6297 9.63888L10.2536 6.42804Z" fill="#333333" stroke="none"/> -<rect x="17.7522" y="19.8494" width="4.36364" height="11.6364" rx="1" transform="rotate(-45 17.7522 19.8494)" stroke="none"/> +<symbol id="reconditionnementsDeMateriel" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M30.6441 10.0705C29.1883 9.68168 27.5706 10.0583 26.4285 11.2004C25.2864 12.3425 24.9098 13.9602 25.2985 15.416L21.8192 18.8954L24.9047 21.9809L28.3841 18.5015C29.8399 18.8903 31.4575 18.5136 32.5996 17.3716C33.7417 16.2295 34.1184 14.6118 33.7296 13.1561L31.5712 15.3145L28.9999 14.8002L28.4856 12.2289L30.6441 10.0705ZM22.8477 24.0379L19.7621 20.9524L15.2163 25.4982C13.7605 25.1095 12.1428 25.4861 11.0007 26.6282C9.85863 27.7703 9.48197 29.388 9.87077 30.8438L12.0294 28.6852L14.6007 29.1995L15.1149 31.7708L12.9564 33.9293C14.4121 34.3181 16.0298 33.9414 17.1718 32.7993C18.3139 31.6572 18.6906 30.0396 18.3018 28.5838L22.8477 24.0379Z" fill="#333333"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M16.2521 12.4279C16.151 12.1919 15.9629 12.0038 15.7269 11.9027L12.4948 10.5175L11.4662 11.546L12.8514 14.7781C12.9526 15.0141 13.1407 15.2022 13.3767 15.3034L16.6088 16.6886L16.6149 16.6825L25.0178 25.0853L26.0463 24.0568L17.6282 15.6387L16.2521 12.4279Z" fill="#333333"/> +<rect x="23.75" y="25.8491" width="4.36364" height="11.6364" rx="1" transform="rotate(-45 23.75 25.8491)" fill="#DA3635"/> </symbol> <symbol id="emailVerification" viewBox="0 0 196 119" fill="none" xmlns="http://www.w3.org/2000/svg"> @@ -428,10 +430,13 @@ <path d="M17.1672 10.9313C17.016 9.60345 15.8455 8.65494 14.5527 8.81268C13.6717 8.9202 12.9613 9.51373 12.646 10.3012C12.4923 10.5803 12.4335 10.897 12.4695 11.2047C12.469 11.303 12.4743 11.4025 12.4857 11.5026L13.7476 22.5855C13.8759 23.7123 14.749 24.595 15.8478 24.7088L26.2094 25.7814L29.5025 33.4144C30.0295 34.6361 31.4215 35.1857 32.6117 34.6419C33.8018 34.0983 34.3393 32.6672 33.8122 31.4455L29.9653 22.5289C29.6229 21.7351 28.8923 21.1915 28.051 21.1044L18.2096 20.0856L17.8595 17.0114L18.0599 17.21L19.0954 16.1816L18.0599 17.21C18.4504 17.5973 18.9639 17.8388 19.5137 17.8938L23.7649 18.3188C24.6044 18.4027 25.3548 17.7952 25.4409 16.9619C25.527 16.1286 24.9163 15.3851 24.0767 15.3012L20.0573 14.8993L17.3087 12.1738L17.1672 10.9313Z" fill="#348899"/> </symbol> -<symbol id="venteMaterielPrixSolidaire" viewBox="0 0 35 35" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" stroke="none" clip-rule="evenodd" d="M23.492 12.1384C23.6409 12.0504 23.8145 12 24 12L27.7415 12C28.005 12 28.2578 12.104 28.4451 12.2894L34.1522 17.9404C34.546 18.3303 34.5476 18.9662 34.1557 19.3581L30.3697 23.1441C29.978 23.5357 29.3427 23.5345 28.9526 23.1412L23.29 17.4329C23.1042 17.2456 23 16.9925 23 16.7286L23 13C23 12.8145 23.0505 12.6408 23.1384 12.492L21.3232 10.6768L21.6768 10.3232L23.492 12.1384ZM26.596 14.3347C26.9067 14.6453 26.9067 15.149 26.596 15.4596C26.2854 15.7703 25.7817 15.7703 25.4711 15.4596C25.1605 15.149 25.1605 14.6453 25.4711 14.3347C25.7817 14.0241 26.2854 14.0241 26.596 14.3347Z" fill="#348899"/> -<rect x="1" y="9" width="20" height="12" stroke="none" fill="white"/> -<path fill-rule="evenodd" clip-rule="evenodd" stroke="none" d="M0 9C0 8.44772 0.447715 8 1 8H21C21.5523 8 22 8.44772 22 9V23C22 23.5523 21.5523 24 21 24H14V25.6L16.3685 26.3106C16.7433 26.423 17 26.768 17 27.1593C17 27.6487 16.6033 28.0454 16.1139 28.0454H5.88612C5.39673 28.0454 5 27.6487 5 27.1593C5 26.768 5.25668 26.423 5.63149 26.3106L8 25.6V24H1C0.447716 24 0 23.5523 0 23V9ZM1 9H21V21H1V9Z" fill="#333333"/> +<symbol id="venteMaterielPrixSolidaire" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M6 14H26V25.5C26 26.0523 25.5523 26.5 25 26.5H7C6.44772 26.5 6 26.0523 6 25.5V14Z" fill="white"/> +<rect x="5.25" y="13.25" width="21.5" height="14" rx="1.75" stroke="#333333" stroke-width="1.5"/> +<path d="M6 25.5C6 26.0523 6.44772 26.5 7 26.5H25C25.5523 26.5 26 26.0523 26 25.5V25.25H6V25.5Z" fill="#333333"/> +<path d="M12.875 30.625L19.75 30.625" stroke="#333333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M17.0625 27.125V26.375H15.5625V27.125H17.0625ZM15.5625 29.625C15.5625 30.0392 15.8983 30.375 16.3125 30.375C16.7267 30.375 17.0625 30.0392 17.0625 29.625H15.5625ZM15.5625 27.125C15.5625 27.1274 15.5625 27.1298 15.5625 27.1321C15.5625 27.1345 15.5625 27.1369 15.5625 27.1392C15.5625 27.1416 15.5625 27.144 15.5625 27.1463C15.5625 27.1487 15.5625 27.151 15.5625 27.1534C15.5625 27.1557 15.5625 27.1581 15.5625 27.1604C15.5625 27.1628 15.5625 27.1651 15.5625 27.1674C15.5625 27.1698 15.5625 27.1721 15.5625 27.1744C15.5625 27.1767 15.5625 27.1791 15.5625 27.1814C15.5625 27.1837 15.5625 27.186 15.5625 27.1883C15.5625 27.1906 15.5625 27.1929 15.5625 27.1952C15.5625 27.1975 15.5625 27.1998 15.5625 27.2021C15.5625 27.2044 15.5625 27.2066 15.5625 27.2089C15.5625 27.2112 15.5625 27.2135 15.5625 27.2158C15.5625 27.218 15.5625 27.2203 15.5625 27.2226C15.5625 27.2248 15.5625 27.2271 15.5625 27.2293C15.5625 27.2316 15.5625 27.2338 15.5625 27.2361C15.5625 27.2383 15.5625 27.2406 15.5625 27.2428C15.5625 27.245 15.5625 27.2473 15.5625 27.2495C15.5625 27.2517 15.5625 27.254 15.5625 27.2562C15.5625 27.2584 15.5625 27.2606 15.5625 27.2628C15.5625 27.2651 15.5625 27.2673 15.5625 27.2695C15.5625 27.2717 15.5625 27.2739 15.5625 27.2761C15.5625 27.2783 15.5625 27.2805 15.5625 27.2826C15.5625 27.2848 15.5625 27.287 15.5625 27.2892C15.5625 27.2914 15.5625 27.2936 15.5625 27.2957C15.5625 27.2979 15.5625 27.3001 15.5625 27.3022C15.5625 27.3044 15.5625 27.3066 15.5625 27.3087C15.5625 27.3109 15.5625 27.313 15.5625 27.3152C15.5625 27.3173 15.5625 27.3195 15.5625 27.3216C15.5625 27.3238 15.5625 27.3259 15.5625 27.328C15.5625 27.3302 15.5625 27.3323 15.5625 27.3344C15.5625 27.3365 15.5625 27.3387 15.5625 27.3408C15.5625 27.3429 15.5625 27.345 15.5625 27.3471C15.5625 27.3492 15.5625 27.3513 15.5625 27.3534C15.5625 27.3555 15.5625 27.3576 15.5625 27.3597C15.5625 27.3618 15.5625 27.3639 15.5625 27.366C15.5625 27.3681 15.5625 27.3702 15.5625 27.3723C15.5625 27.3743 15.5625 27.3764 15.5625 27.3785C15.5625 27.3806 15.5625 27.3826 15.5625 27.3847C15.5625 27.3868 15.5625 27.3888 15.5625 27.3909C15.5625 27.3929 15.5625 27.395 15.5625 27.397C15.5625 27.3991 15.5625 27.4011 15.5625 27.4032C15.5625 27.4052 15.5625 27.4073 15.5625 27.4093C15.5625 27.4113 15.5625 27.4134 15.5625 27.4154C15.5625 27.4174 15.5625 27.4194 15.5625 27.4214C15.5625 27.4235 15.5625 27.4255 15.5625 27.4275C15.5625 27.4295 15.5625 27.4315 15.5625 27.4335C15.5625 27.4355 15.5625 27.4375 15.5625 27.4395C15.5625 27.4415 15.5625 27.4435 15.5625 27.4455C15.5625 27.4475 15.5625 27.4495 15.5625 27.4515C15.5625 27.4535 15.5625 27.4554 15.5625 27.4574C15.5625 27.4594 15.5625 27.4614 15.5625 27.4633C15.5625 27.4653 15.5625 27.4673 15.5625 27.4692C15.5625 27.4712 15.5625 27.4732 15.5625 27.4751C15.5625 27.4771 15.5625 27.479 15.5625 27.481C15.5625 27.4829 15.5625 27.4849 15.5625 27.4868C15.5625 27.4887 15.5625 27.4907 15.5625 27.4926C15.5625 27.4946 15.5625 27.4965 15.5625 27.4984C15.5625 27.5003 15.5625 27.5023 15.5625 27.5042C15.5625 27.5061 15.5625 27.508 15.5625 27.5099C15.5625 27.5119 15.5625 27.5138 15.5625 27.5157C15.5625 27.5176 15.5625 27.5195 15.5625 27.5214C15.5625 27.5233 15.5625 27.5252 15.5625 27.5271C15.5625 27.529 15.5625 27.5309 15.5625 27.5328C15.5625 27.5346 15.5625 27.5365 15.5625 27.5384C15.5625 27.5403 15.5625 27.5422 15.5625 27.544C15.5625 27.5459 15.5625 27.5478 15.5625 27.5496C15.5625 27.5515 15.5625 27.5534 15.5625 27.5552C15.5625 27.5571 15.5625 27.559 15.5625 27.5608C15.5625 27.5627 15.5625 27.5645 15.5625 27.5664C15.5625 27.5682 15.5625 27.5701 15.5625 27.5719C15.5625 27.5737 15.5625 27.5756 15.5625 27.5774C15.5625 27.5793 15.5625 27.5811 15.5625 27.5829C15.5625 27.5847 15.5625 27.5866 15.5625 27.5884C15.5625 27.5902 15.5625 27.592 15.5625 27.5939C15.5625 27.5957 15.5625 27.5975 15.5625 27.5993C15.5625 27.6011 15.5625 27.6029 15.5625 27.6047C15.5625 27.6065 15.5625 27.6083 15.5625 27.6101C15.5625 27.6119 15.5625 27.6137 15.5625 27.6155C15.5625 27.6173 15.5625 27.6191 15.5625 27.6209C15.5625 27.6227 15.5625 27.6244 15.5625 27.6262C15.5625 27.628 15.5625 27.6298 15.5625 27.6315C15.5625 27.6333 15.5625 27.6351 15.5625 27.6369C15.5625 27.6386 15.5625 27.6404 15.5625 27.6422C15.5625 27.6439 15.5625 27.6457 15.5625 27.6474C15.5625 27.6492 15.5625 27.6509 15.5625 27.6527C15.5625 27.6544 15.5625 27.6562 15.5625 27.6579C15.5625 27.6597 15.5625 27.6614 15.5625 27.6631C15.5625 27.6649 15.5625 27.6666 15.5625 27.6684C15.5625 27.6701 15.5625 27.6718 15.5625 27.6735C15.5625 27.6753 15.5625 27.677 15.5625 27.6787C15.5625 27.6804 15.5625 27.6822 15.5625 27.6839C15.5625 27.6856 15.5625 27.6873 15.5625 27.689C15.5625 27.6907 15.5625 27.6924 15.5625 27.6941C15.5625 27.6958 15.5625 27.6975 15.5625 27.6992C15.5625 27.7009 15.5625 27.7026 15.5625 27.7043C15.5625 27.706 15.5625 27.7077 15.5625 27.7094C15.5625 27.7111 15.5625 27.7128 15.5625 27.7144C15.5625 27.7161 15.5625 27.7178 15.5625 27.7195C15.5625 27.7211 15.5625 27.7228 15.5625 27.7245C15.5625 27.7262 15.5625 27.7278 15.5625 27.7295C15.5625 27.7312 15.5625 27.7328 15.5625 27.7345C15.5625 27.7361 15.5625 27.7378 15.5625 27.7395C15.5625 27.7411 15.5625 27.7428 15.5625 27.7444C15.5625 27.7461 15.5625 27.7477 15.5625 27.7493C15.5625 27.751 15.5625 27.7526 15.5625 27.7543C15.5625 27.7559 15.5625 27.7575 15.5625 27.7592C15.5625 27.7608 15.5625 27.7624 15.5625 27.7641C15.5625 27.7657 15.5625 27.7673 15.5625 27.769C15.5625 27.7706 15.5625 27.7722 15.5625 27.7738C15.5625 27.7754 15.5625 27.7771 15.5625 27.7787C15.5625 27.7803 15.5625 27.7819 15.5625 27.7835C15.5625 27.7851 15.5625 27.7867 15.5625 27.7883C15.5625 27.7899 15.5625 27.7915 15.5625 27.7931C15.5625 27.7947 15.5625 27.7963 15.5625 27.7979C15.5625 27.7995 15.5625 27.8011 15.5625 27.8027C15.5625 27.8043 15.5625 27.8059 15.5625 27.8074C15.5625 27.809 15.5625 27.8106 15.5625 27.8122C15.5625 27.8138 15.5625 27.8153 15.5625 27.8169C15.5625 27.8185 15.5625 27.8201 15.5625 27.8216C15.5625 27.8232 15.5625 27.8248 15.5625 27.8263C15.5625 27.8279 15.5625 27.8295 15.5625 27.831C15.5625 27.8326 15.5625 27.8341 15.5625 27.8357C15.5625 27.8373 15.5625 27.8388 15.5625 27.8404C15.5625 27.8419 15.5625 27.8435 15.5625 27.845C15.5625 27.8465 15.5625 27.8481 15.5625 27.8496C15.5625 27.8512 15.5625 27.8527 15.5625 27.8543C15.5625 27.8558 15.5625 27.8573 15.5625 27.8589C15.5625 27.8604 15.5625 27.8619 15.5625 27.8635C15.5625 27.865 15.5625 27.8665 15.5625 27.868C15.5625 27.8696 15.5625 27.8711 15.5625 27.8726C15.5625 27.8741 15.5625 27.8756 15.5625 27.8772C15.5625 27.8787 15.5625 27.8802 15.5625 27.8817C15.5625 27.8832 15.5625 27.8847 15.5625 27.8862C15.5625 27.8877 15.5625 27.8892 15.5625 27.8907C15.5625 27.8922 15.5625 27.8937 15.5625 27.8952C15.5625 27.8967 15.5625 27.8982 15.5625 27.8997C15.5625 27.9012 15.5625 27.9027 15.5625 27.9042C15.5625 27.9057 15.5625 27.9072 15.5625 27.9087C15.5625 27.9102 15.5625 27.9116 15.5625 27.9131C15.5625 27.9146 15.5625 27.9161 15.5625 27.9176C15.5625 27.919 15.5625 27.9205 15.5625 27.922C15.5625 27.9235 15.5625 27.9249 15.5625 27.9264C15.5625 27.9279 15.5625 27.9294 15.5625 27.9308C15.5625 27.9323 15.5625 27.9337 15.5625 27.9352C15.5625 27.9367 15.5625 27.9381 15.5625 27.9396C15.5625 27.9411 15.5625 27.9425 15.5625 27.944C15.5625 27.9454 15.5625 27.9469 15.5625 27.9483C15.5625 27.9498 15.5625 27.9512 15.5625 27.9527C15.5625 27.9541 15.5625 27.9556 15.5625 27.957C15.5625 27.9585 15.5625 27.9599 15.5625 27.9613C15.5625 27.9628 15.5625 27.9642 15.5625 27.9657C15.5625 27.9671 15.5625 27.9685 15.5625 27.97C15.5625 27.9714 15.5625 27.9728 15.5625 27.9743C15.5625 27.9757 15.5625 27.9771 15.5625 27.9785C15.5625 27.98 15.5625 27.9814 15.5625 27.9828C15.5625 27.9842 15.5625 27.9857 15.5625 27.9871C15.5625 27.9885 15.5625 27.9899 15.5625 27.9913C15.5625 27.9927 15.5625 27.9942 15.5625 27.9956C15.5625 27.997 15.5625 27.9984 15.5625 27.9998C15.5625 28.0012 15.5625 28.0026 15.5625 28.004C15.5625 28.0054 15.5625 28.0068 15.5625 28.0082C15.5625 28.0096 15.5625 28.011 15.5625 28.0124C15.5625 28.0138 15.5625 28.0152 15.5625 28.0166C15.5625 28.018 15.5625 28.0194 15.5625 28.0208C15.5625 28.0222 15.5625 28.0236 15.5625 28.025C15.5625 28.0264 15.5625 28.0278 15.5625 28.0292C15.5625 28.0305 15.5625 28.0319 15.5625 28.0333C15.5625 28.0347 15.5625 28.0361 15.5625 28.0375C15.5625 28.0388 15.5625 28.0402 15.5625 28.0416C15.5625 28.043 15.5625 28.0443 15.5625 28.0457C15.5625 28.0471 15.5625 28.0485 15.5625 28.0498C15.5625 28.0512 15.5625 28.0526 15.5625 28.054C15.5625 28.0553 15.5625 28.0567 15.5625 28.0581C15.5625 28.0594 15.5625 28.0608 15.5625 28.0621C15.5625 28.0635 15.5625 28.0649 15.5625 28.0662C15.5625 28.0676 15.5625 28.069 15.5625 28.0703C15.5625 28.0717 15.5625 28.073 15.5625 28.0744C15.5625 28.0757 15.5625 28.0771 15.5625 28.0784C15.5625 28.0798 15.5625 28.0811 15.5625 28.0825C15.5625 28.0838 15.5625 28.0852 15.5625 28.0865C15.5625 28.0879 15.5625 28.0892 15.5625 28.0906C15.5625 28.0919 15.5625 28.0933 15.5625 28.0946C15.5625 28.0959 15.5625 28.0973 15.5625 28.0986C15.5625 28.1 15.5625 28.1013 15.5625 28.1026C15.5625 28.104 15.5625 28.1053 15.5625 28.1066C15.5625 28.108 15.5625 28.1093 15.5625 28.1106C15.5625 28.112 15.5625 28.1133 15.5625 28.1146C15.5625 28.116 15.5625 28.1173 15.5625 28.1186C15.5625 28.1199 15.5625 28.1213 15.5625 28.1226C15.5625 28.1239 15.5625 28.1252 15.5625 28.1266C15.5625 28.1279 15.5625 28.1292 15.5625 28.1305C15.5625 28.1319 15.5625 28.1332 15.5625 28.1345C15.5625 28.1358 15.5625 28.1371 15.5625 28.1384C15.5625 28.1398 15.5625 28.1411 15.5625 28.1424C15.5625 28.1437 15.5625 28.145 15.5625 28.1463C15.5625 28.1476 15.5625 28.149 15.5625 28.1503C15.5625 28.1516 15.5625 28.1529 15.5625 28.1542C15.5625 28.1555 15.5625 28.1568 15.5625 28.1581C15.5625 28.1594 15.5625 28.1607 15.5625 28.162C15.5625 28.1633 15.5625 28.1646 15.5625 28.1659C15.5625 28.1672 15.5625 28.1685 15.5625 28.1698C15.5625 28.1711 15.5625 28.1724 15.5625 28.1737C15.5625 28.175 15.5625 28.1763 15.5625 28.1776C15.5625 28.1789 15.5625 28.1802 15.5625 28.1815C15.5625 28.1828 15.5625 28.1841 15.5625 28.1854C15.5625 28.1867 15.5625 28.188 15.5625 28.1893C15.5625 28.1906 15.5625 28.1919 15.5625 28.1931C15.5625 28.1944 15.5625 28.1957 15.5625 28.197C15.5625 28.1983 15.5625 28.1996 15.5625 28.2009C15.5625 28.2022 15.5625 28.2034 15.5625 28.2047C15.5625 28.206 15.5625 28.2073 15.5625 28.2086C15.5625 28.2099 15.5625 28.2111 15.5625 28.2124C15.5625 28.2137 15.5625 28.215 15.5625 28.2163C15.5625 28.2175 15.5625 28.2188 15.5625 28.2201C15.5625 28.2214 15.5625 28.2227 15.5625 28.2239C15.5625 28.2252 15.5625 28.2265 15.5625 28.2278C15.5625 28.229 15.5625 28.2303 15.5625 28.2316C15.5625 28.2329 15.5625 28.2341 15.5625 28.2354C15.5625 28.2367 15.5625 28.238 15.5625 28.2392C15.5625 28.2405 15.5625 28.2418 15.5625 28.243C15.5625 28.2443 15.5625 28.2456 15.5625 28.2469C15.5625 28.2481 15.5625 28.2494 15.5625 28.2507C15.5625 28.2519 15.5625 28.2532 15.5625 28.2545C15.5625 28.2557 15.5625 28.257 15.5625 28.2583C15.5625 28.2595 15.5625 28.2608 15.5625 28.2621C15.5625 28.2633 15.5625 28.2646 15.5625 28.2659C15.5625 28.2671 15.5625 28.2684 15.5625 28.2697C15.5625 28.2709 15.5625 28.2722 15.5625 28.2734C15.5625 28.2747 15.5625 28.276 15.5625 28.2772C15.5625 28.2785 15.5625 28.2797 15.5625 28.281C15.5625 28.2823 15.5625 28.2835 15.5625 28.2848C15.5625 28.286 15.5625 28.2873 15.5625 28.2886C15.5625 28.2898 15.5625 28.2911 15.5625 28.2923C15.5625 28.2936 15.5625 28.2949 15.5625 28.2961C15.5625 28.2974 15.5625 28.2986 15.5625 28.2999C15.5625 28.3011 15.5625 28.3024 15.5625 28.3037C15.5625 28.3049 15.5625 28.3062 15.5625 28.3074C15.5625 28.3087 15.5625 28.3099 15.5625 28.3112C15.5625 28.3124 15.5625 28.3137 15.5625 28.3149C15.5625 28.3162 15.5625 28.3175 15.5625 28.3187C15.5625 28.32 15.5625 28.3212 15.5625 28.3225C15.5625 28.3237 15.5625 28.325 15.5625 28.3262C15.5625 28.3275 15.5625 28.3287 15.5625 28.33C15.5625 28.3312 15.5625 28.3325 15.5625 28.3337C15.5625 28.335 15.5625 28.3362 15.5625 28.3375C15.5625 28.3387 15.5625 28.34 15.5625 28.3412C15.5625 28.3425 15.5625 28.3437 15.5625 28.345C15.5625 28.3463 15.5625 28.3475 15.5625 28.3488C15.5625 28.35 15.5625 28.3513 15.5625 28.3525C15.5625 28.3538 15.5625 28.355 15.5625 28.3563C15.5625 28.3575 15.5625 28.3588 15.5625 28.36C15.5625 28.3613 15.5625 28.3625 15.5625 28.3638C15.5625 28.365 15.5625 28.3663 15.5625 28.3675C15.5625 28.3688 15.5625 28.37 15.5625 28.3713C15.5625 28.3725 15.5625 28.3738 15.5625 28.375C15.5625 28.3762 15.5625 28.3775 15.5625 28.3787C15.5625 28.38 15.5625 28.3812 15.5625 28.3825C15.5625 28.3837 15.5625 28.385 15.5625 28.3862C15.5625 28.3875 15.5625 28.3887 15.5625 28.39C15.5625 28.3912 15.5625 28.3925 15.5625 28.3937C15.5625 28.395 15.5625 28.3962 15.5625 28.3975C15.5625 28.3987 15.5625 28.4 15.5625 28.4012C15.5625 28.4025 15.5625 28.4037 15.5625 28.405C15.5625 28.4063 15.5625 28.4075 15.5625 28.4088C15.5625 28.41 15.5625 28.4113 15.5625 28.4125C15.5625 28.4138 15.5625 28.415 15.5625 28.4163C15.5625 28.4175 15.5625 28.4188 15.5625 28.42C15.5625 28.4213 15.5625 28.4225 15.5625 28.4238C15.5625 28.425 15.5625 28.4263 15.5625 28.4275C15.5625 28.4288 15.5625 28.43 15.5625 28.4313C15.5625 28.4325 15.5625 28.4338 15.5625 28.4351C15.5625 28.4363 15.5625 28.4376 15.5625 28.4388C15.5625 28.4401 15.5625 28.4413 15.5625 28.4426C15.5625 28.4438 15.5625 28.4451 15.5625 28.4463C15.5625 28.4476 15.5625 28.4489 15.5625 28.4501C15.5625 28.4514 15.5625 28.4526 15.5625 28.4539C15.5625 28.4551 15.5625 28.4564 15.5625 28.4577C15.5625 28.4589 15.5625 28.4602 15.5625 28.4614C15.5625 28.4627 15.5625 28.464 15.5625 28.4652C15.5625 28.4665 15.5625 28.4677 15.5625 28.469C15.5625 28.4703 15.5625 28.4715 15.5625 28.4728C15.5625 28.474 15.5625 28.4753 15.5625 28.4766C15.5625 28.4778 15.5625 28.4791 15.5625 28.4803C15.5625 28.4816 15.5625 28.4829 15.5625 28.4841C15.5625 28.4854 15.5625 28.4867 15.5625 28.4879C15.5625 28.4892 15.5625 28.4905 15.5625 28.4917C15.5625 28.493 15.5625 28.4943 15.5625 28.4955C15.5625 28.4968 15.5625 28.4981 15.5625 28.4993C15.5625 28.5006 15.5625 28.5019 15.5625 28.5031C15.5625 28.5044 15.5625 28.5057 15.5625 28.507C15.5625 28.5082 15.5625 28.5095 15.5625 28.5108C15.5625 28.512 15.5625 28.5133 15.5625 28.5146C15.5625 28.5159 15.5625 28.5171 15.5625 28.5184C15.5625 28.5197 15.5625 28.521 15.5625 28.5222C15.5625 28.5235 15.5625 28.5248 15.5625 28.5261C15.5625 28.5273 15.5625 28.5286 15.5625 28.5299C15.5625 28.5312 15.5625 28.5325 15.5625 28.5337C15.5625 28.535 15.5625 28.5363 15.5625 28.5376C15.5625 28.5389 15.5625 28.5401 15.5625 28.5414C15.5625 28.5427 15.5625 28.544 15.5625 28.5453C15.5625 28.5466 15.5625 28.5478 15.5625 28.5491C15.5625 28.5504 15.5625 28.5517 15.5625 28.553C15.5625 28.5543 15.5625 28.5556 15.5625 28.5569C15.5625 28.5581 15.5625 28.5594 15.5625 28.5607C15.5625 28.562 15.5625 28.5633 15.5625 28.5646C15.5625 28.5659 15.5625 28.5672 15.5625 28.5685C15.5625 28.5698 15.5625 28.5711 15.5625 28.5724C15.5625 28.5737 15.5625 28.575 15.5625 28.5763C15.5625 28.5776 15.5625 28.5789 15.5625 28.5802C15.5625 28.5815 15.5625 28.5828 15.5625 28.5841C15.5625 28.5854 15.5625 28.5867 15.5625 28.588C15.5625 28.5893 15.5625 28.5906 15.5625 28.5919C15.5625 28.5932 15.5625 28.5945 15.5625 28.5958C15.5625 28.5971 15.5625 28.5984 15.5625 28.5997C15.5625 28.601 15.5625 28.6024 15.5625 28.6037C15.5625 28.605 15.5625 28.6063 15.5625 28.6076C15.5625 28.6089 15.5625 28.6102 15.5625 28.6116C15.5625 28.6129 15.5625 28.6142 15.5625 28.6155C15.5625 28.6168 15.5625 28.6181 15.5625 28.6195C15.5625 28.6208 15.5625 28.6221 15.5625 28.6234C15.5625 28.6248 15.5625 28.6261 15.5625 28.6274C15.5625 28.6287 15.5625 28.6301 15.5625 28.6314C15.5625 28.6327 15.5625 28.634 15.5625 28.6354C15.5625 28.6367 15.5625 28.638 15.5625 28.6394C15.5625 28.6407 15.5625 28.642 15.5625 28.6434C15.5625 28.6447 15.5625 28.646 15.5625 28.6474C15.5625 28.6487 15.5625 28.65 15.5625 28.6514C15.5625 28.6527 15.5625 28.6541 15.5625 28.6554C15.5625 28.6567 15.5625 28.6581 15.5625 28.6594C15.5625 28.6608 15.5625 28.6621 15.5625 28.6635C15.5625 28.6648 15.5625 28.6662 15.5625 28.6675C15.5625 28.6689 15.5625 28.6702 15.5625 28.6716C15.5625 28.6729 15.5625 28.6743 15.5625 28.6756C15.5625 28.677 15.5625 28.6783 15.5625 28.6797C15.5625 28.681 15.5625 28.6824 15.5625 28.6838C15.5625 28.6851 15.5625 28.6865 15.5625 28.6879C15.5625 28.6892 15.5625 28.6906 15.5625 28.6919C15.5625 28.6933 15.5625 28.6947 15.5625 28.696C15.5625 28.6974 15.5625 28.6988 15.5625 28.7002C15.5625 28.7015 15.5625 28.7029 15.5625 28.7043C15.5625 28.7057 15.5625 28.707 15.5625 28.7084C15.5625 28.7098 15.5625 28.7112 15.5625 28.7125C15.5625 28.7139 15.5625 28.7153 15.5625 28.7167C15.5625 28.7181 15.5625 28.7195 15.5625 28.7208C15.5625 28.7222 15.5625 28.7236 15.5625 28.725C15.5625 28.7264 15.5625 28.7278 15.5625 28.7292C15.5625 28.7306 15.5625 28.732 15.5625 28.7334C15.5625 28.7348 15.5625 28.7362 15.5625 28.7376C15.5625 28.739 15.5625 28.7404 15.5625 28.7418C15.5625 28.7432 15.5625 28.7446 15.5625 28.746C15.5625 28.7474 15.5625 28.7488 15.5625 28.7502C15.5625 28.7516 15.5625 28.753 15.5625 28.7544C15.5625 28.7558 15.5625 28.7573 15.5625 28.7587C15.5625 28.7601 15.5625 28.7615 15.5625 28.7629C15.5625 28.7643 15.5625 28.7658 15.5625 28.7672C15.5625 28.7686 15.5625 28.77 15.5625 28.7715C15.5625 28.7729 15.5625 28.7743 15.5625 28.7757C15.5625 28.7772 15.5625 28.7786 15.5625 28.78C15.5625 28.7815 15.5625 28.7829 15.5625 28.7843C15.5625 28.7858 15.5625 28.7872 15.5625 28.7887C15.5625 28.7901 15.5625 28.7915 15.5625 28.793C15.5625 28.7944 15.5625 28.7959 15.5625 28.7973C15.5625 28.7988 15.5625 28.8002 15.5625 28.8017C15.5625 28.8031 15.5625 28.8046 15.5625 28.806C15.5625 28.8075 15.5625 28.8089 15.5625 28.8104C15.5625 28.8119 15.5625 28.8133 15.5625 28.8148C15.5625 28.8163 15.5625 28.8177 15.5625 28.8192C15.5625 28.8206 15.5625 28.8221 15.5625 28.8236C15.5625 28.8251 15.5625 28.8265 15.5625 28.828C15.5625 28.8295 15.5625 28.831 15.5625 28.8324C15.5625 28.8339 15.5625 28.8354 15.5625 28.8369C15.5625 28.8384 15.5625 28.8398 15.5625 28.8413C15.5625 28.8428 15.5625 28.8443 15.5625 28.8458C15.5625 28.8473 15.5625 28.8488 15.5625 28.8503C15.5625 28.8518 15.5625 28.8533 15.5625 28.8548C15.5625 28.8563 15.5625 28.8578 15.5625 28.8593C15.5625 28.8608 15.5625 28.8623 15.5625 28.8638C15.5625 28.8653 15.5625 28.8668 15.5625 28.8683C15.5625 28.8698 15.5625 28.8713 15.5625 28.8728C15.5625 28.8744 15.5625 28.8759 15.5625 28.8774C15.5625 28.8789 15.5625 28.8804 15.5625 28.882C15.5625 28.8835 15.5625 28.885 15.5625 28.8865C15.5625 28.8881 15.5625 28.8896 15.5625 28.8911C15.5625 28.8927 15.5625 28.8942 15.5625 28.8957C15.5625 28.8973 15.5625 28.8988 15.5625 28.9004C15.5625 28.9019 15.5625 28.9035 15.5625 28.905C15.5625 28.9065 15.5625 28.9081 15.5625 28.9096C15.5625 28.9112 15.5625 28.9128 15.5625 28.9143C15.5625 28.9159 15.5625 28.9174 15.5625 28.919C15.5625 28.9205 15.5625 28.9221 15.5625 28.9237C15.5625 28.9252 15.5625 28.9268 15.5625 28.9284C15.5625 28.9299 15.5625 28.9315 15.5625 28.9331C15.5625 28.9347 15.5625 28.9362 15.5625 28.9378C15.5625 28.9394 15.5625 28.941 15.5625 28.9426C15.5625 28.9441 15.5625 28.9457 15.5625 28.9473C15.5625 28.9489 15.5625 28.9505 15.5625 28.9521C15.5625 28.9537 15.5625 28.9553 15.5625 28.9569C15.5625 28.9585 15.5625 28.9601 15.5625 28.9617C15.5625 28.9633 15.5625 28.9649 15.5625 28.9665C15.5625 28.9681 15.5625 28.9697 15.5625 28.9713C15.5625 28.9729 15.5625 28.9746 15.5625 28.9762C15.5625 28.9778 15.5625 28.9794 15.5625 28.981C15.5625 28.9827 15.5625 28.9843 15.5625 28.9859C15.5625 28.9876 15.5625 28.9892 15.5625 28.9908C15.5625 28.9925 15.5625 28.9941 15.5625 28.9957C15.5625 28.9974 15.5625 28.999 15.5625 29.0007C15.5625 29.0023 15.5625 29.0039 15.5625 29.0056C15.5625 29.0072 15.5625 29.0089 15.5625 29.0105C15.5625 29.0122 15.5625 29.0139 15.5625 29.0155C15.5625 29.0172 15.5625 29.0188 15.5625 29.0205C15.5625 29.0222 15.5625 29.0238 15.5625 29.0255C15.5625 29.0272 15.5625 29.0289 15.5625 29.0305C15.5625 29.0322 15.5625 29.0339 15.5625 29.0356C15.5625 29.0372 15.5625 29.0389 15.5625 29.0406C15.5625 29.0423 15.5625 29.044 15.5625 29.0457C15.5625 29.0474 15.5625 29.0491 15.5625 29.0508C15.5625 29.0525 15.5625 29.0542 15.5625 29.0559C15.5625 29.0576 15.5625 29.0593 15.5625 29.061C15.5625 29.0627 15.5625 29.0644 15.5625 29.0661C15.5625 29.0678 15.5625 29.0696 15.5625 29.0713C15.5625 29.073 15.5625 29.0747 15.5625 29.0765C15.5625 29.0782 15.5625 29.0799 15.5625 29.0816C15.5625 29.0834 15.5625 29.0851 15.5625 29.0869C15.5625 29.0886 15.5625 29.0903 15.5625 29.0921C15.5625 29.0938 15.5625 29.0956 15.5625 29.0973C15.5625 29.0991 15.5625 29.1008 15.5625 29.1026C15.5625 29.1043 15.5625 29.1061 15.5625 29.1078C15.5625 29.1096 15.5625 29.1114 15.5625 29.1131C15.5625 29.1149 15.5625 29.1167 15.5625 29.1185C15.5625 29.1202 15.5625 29.122 15.5625 29.1238C15.5625 29.1256 15.5625 29.1273 15.5625 29.1291C15.5625 29.1309 15.5625 29.1327 15.5625 29.1345C15.5625 29.1363 15.5625 29.1381 15.5625 29.1399C15.5625 29.1417 15.5625 29.1435 15.5625 29.1453C15.5625 29.1471 15.5625 29.1489 15.5625 29.1507C15.5625 29.1525 15.5625 29.1543 15.5625 29.1561C15.5625 29.158 15.5625 29.1598 15.5625 29.1616C15.5625 29.1634 15.5625 29.1653 15.5625 29.1671C15.5625 29.1689 15.5625 29.1707 15.5625 29.1726C15.5625 29.1744 15.5625 29.1763 15.5625 29.1781C15.5625 29.1799 15.5625 29.1818 15.5625 29.1836C15.5625 29.1855 15.5625 29.1873 15.5625 29.1892C15.5625 29.191 15.5625 29.1929 15.5625 29.1948C15.5625 29.1966 15.5625 29.1985 15.5625 29.2004C15.5625 29.2022 15.5625 29.2041 15.5625 29.206C15.5625 29.2078 15.5625 29.2097 15.5625 29.2116C15.5625 29.2135 15.5625 29.2154 15.5625 29.2172C15.5625 29.2191 15.5625 29.221 15.5625 29.2229C15.5625 29.2248 15.5625 29.2267 15.5625 29.2286C15.5625 29.2305 15.5625 29.2324 15.5625 29.2343C15.5625 29.2362 15.5625 29.2381 15.5625 29.2401C15.5625 29.242 15.5625 29.2439 15.5625 29.2458C15.5625 29.2477 15.5625 29.2497 15.5625 29.2516C15.5625 29.2535 15.5625 29.2554 15.5625 29.2574C15.5625 29.2593 15.5625 29.2613 15.5625 29.2632C15.5625 29.2651 15.5625 29.2671 15.5625 29.269C15.5625 29.271 15.5625 29.2729 15.5625 29.2749C15.5625 29.2768 15.5625 29.2788 15.5625 29.2808C15.5625 29.2827 15.5625 29.2847 15.5625 29.2867C15.5625 29.2886 15.5625 29.2906 15.5625 29.2926C15.5625 29.2946 15.5625 29.2965 15.5625 29.2985C15.5625 29.3005 15.5625 29.3025 15.5625 29.3045C15.5625 29.3065 15.5625 29.3085 15.5625 29.3105C15.5625 29.3125 15.5625 29.3145 15.5625 29.3165C15.5625 29.3185 15.5625 29.3205 15.5625 29.3225C15.5625 29.3245 15.5625 29.3265 15.5625 29.3286C15.5625 29.3306 15.5625 29.3326 15.5625 29.3346C15.5625 29.3366 15.5625 29.3387 15.5625 29.3407C15.5625 29.3427 15.5625 29.3448 15.5625 29.3468C15.5625 29.3489 15.5625 29.3509 15.5625 29.353C15.5625 29.355 15.5625 29.3571 15.5625 29.3591C15.5625 29.3612 15.5625 29.3632 15.5625 29.3653C15.5625 29.3674 15.5625 29.3694 15.5625 29.3715C15.5625 29.3736 15.5625 29.3757 15.5625 29.3777C15.5625 29.3798 15.5625 29.3819 15.5625 29.384C15.5625 29.3861 15.5625 29.3882 15.5625 29.3903C15.5625 29.3924 15.5625 29.3945 15.5625 29.3966C15.5625 29.3987 15.5625 29.4008 15.5625 29.4029C15.5625 29.405 15.5625 29.4071 15.5625 29.4092C15.5625 29.4113 15.5625 29.4135 15.5625 29.4156C15.5625 29.4177 15.5625 29.4198 15.5625 29.422C15.5625 29.4241 15.5625 29.4262 15.5625 29.4284C15.5625 29.4305 15.5625 29.4327 15.5625 29.4348C15.5625 29.437 15.5625 29.4391 15.5625 29.4413C15.5625 29.4434 15.5625 29.4456 15.5625 29.4478C15.5625 29.4499 15.5625 29.4521 15.5625 29.4543C15.5625 29.4564 15.5625 29.4586 15.5625 29.4608C15.5625 29.463 15.5625 29.4652 15.5625 29.4674C15.5625 29.4695 15.5625 29.4717 15.5625 29.4739C15.5625 29.4761 15.5625 29.4783 15.5625 29.4805C15.5625 29.4827 15.5625 29.4849 15.5625 29.4872C15.5625 29.4894 15.5625 29.4916 15.5625 29.4938C15.5625 29.496 15.5625 29.4983 15.5625 29.5005C15.5625 29.5027 15.5625 29.505 15.5625 29.5072C15.5625 29.5094 15.5625 29.5117 15.5625 29.5139C15.5625 29.5162 15.5625 29.5184 15.5625 29.5207C15.5625 29.5229 15.5625 29.5252 15.5625 29.5274C15.5625 29.5297 15.5625 29.532 15.5625 29.5342C15.5625 29.5365 15.5625 29.5388 15.5625 29.5411C15.5625 29.5434 15.5625 29.5456 15.5625 29.5479C15.5625 29.5502 15.5625 29.5525 15.5625 29.5548C15.5625 29.5571 15.5625 29.5594 15.5625 29.5617C15.5625 29.564 15.5625 29.5663 15.5625 29.5686C15.5625 29.5709 15.5625 29.5733 15.5625 29.5756C15.5625 29.5779 15.5625 29.5802 15.5625 29.5826C15.5625 29.5849 15.5625 29.5872 15.5625 29.5896C15.5625 29.5919 15.5625 29.5943 15.5625 29.5966C15.5625 29.599 15.5625 29.6013 15.5625 29.6037C15.5625 29.606 15.5625 29.6084 15.5625 29.6108C15.5625 29.6131 15.5625 29.6155 15.5625 29.6179C15.5625 29.6202 15.5625 29.6226 15.5625 29.625H17.0625C17.0625 29.6226 17.0625 29.6202 17.0625 29.6179C17.0625 29.6155 17.0625 29.6131 17.0625 29.6108C17.0625 29.6084 17.0625 29.606 17.0625 29.6037C17.0625 29.6013 17.0625 29.599 17.0625 29.5966C17.0625 29.5943 17.0625 29.5919 17.0625 29.5896C17.0625 29.5872 17.0625 29.5849 17.0625 29.5826C17.0625 29.5802 17.0625 29.5779 17.0625 29.5756C17.0625 29.5733 17.0625 29.5709 17.0625 29.5686C17.0625 29.5663 17.0625 29.564 17.0625 29.5617C17.0625 29.5594 17.0625 29.5571 17.0625 29.5548C17.0625 29.5525 17.0625 29.5502 17.0625 29.5479C17.0625 29.5456 17.0625 29.5434 17.0625 29.5411C17.0625 29.5388 17.0625 29.5365 17.0625 29.5342C17.0625 29.532 17.0625 29.5297 17.0625 29.5274C17.0625 29.5252 17.0625 29.5229 17.0625 29.5207C17.0625 29.5184 17.0625 29.5162 17.0625 29.5139C17.0625 29.5117 17.0625 29.5094 17.0625 29.5072C17.0625 29.505 17.0625 29.5027 17.0625 29.5005C17.0625 29.4983 17.0625 29.496 17.0625 29.4938C17.0625 29.4916 17.0625 29.4894 17.0625 29.4872C17.0625 29.4849 17.0625 29.4827 17.0625 29.4805C17.0625 29.4783 17.0625 29.4761 17.0625 29.4739C17.0625 29.4717 17.0625 29.4695 17.0625 29.4674C17.0625 29.4652 17.0625 29.463 17.0625 29.4608C17.0625 29.4586 17.0625 29.4564 17.0625 29.4543C17.0625 29.4521 17.0625 29.4499 17.0625 29.4478C17.0625 29.4456 17.0625 29.4434 17.0625 29.4413C17.0625 29.4391 17.0625 29.437 17.0625 29.4348C17.0625 29.4327 17.0625 29.4305 17.0625 29.4284C17.0625 29.4262 17.0625 29.4241 17.0625 29.422C17.0625 29.4198 17.0625 29.4177 17.0625 29.4156C17.0625 29.4135 17.0625 29.4113 17.0625 29.4092C17.0625 29.4071 17.0625 29.405 17.0625 29.4029C17.0625 29.4008 17.0625 29.3987 17.0625 29.3966C17.0625 29.3945 17.0625 29.3924 17.0625 29.3903C17.0625 29.3882 17.0625 29.3861 17.0625 29.384C17.0625 29.3819 17.0625 29.3798 17.0625 29.3777C17.0625 29.3757 17.0625 29.3736 17.0625 29.3715C17.0625 29.3694 17.0625 29.3674 17.0625 29.3653C17.0625 29.3632 17.0625 29.3612 17.0625 29.3591C17.0625 29.3571 17.0625 29.355 17.0625 29.353C17.0625 29.3509 17.0625 29.3489 17.0625 29.3468C17.0625 29.3448 17.0625 29.3427 17.0625 29.3407C17.0625 29.3387 17.0625 29.3366 17.0625 29.3346C17.0625 29.3326 17.0625 29.3306 17.0625 29.3286C17.0625 29.3265 17.0625 29.3245 17.0625 29.3225C17.0625 29.3205 17.0625 29.3185 17.0625 29.3165C17.0625 29.3145 17.0625 29.3125 17.0625 29.3105C17.0625 29.3085 17.0625 29.3065 17.0625 29.3045C17.0625 29.3025 17.0625 29.3005 17.0625 29.2985C17.0625 29.2965 17.0625 29.2946 17.0625 29.2926C17.0625 29.2906 17.0625 29.2886 17.0625 29.2867C17.0625 29.2847 17.0625 29.2827 17.0625 29.2808C17.0625 29.2788 17.0625 29.2768 17.0625 29.2749C17.0625 29.2729 17.0625 29.271 17.0625 29.269C17.0625 29.2671 17.0625 29.2651 17.0625 29.2632C17.0625 29.2613 17.0625 29.2593 17.0625 29.2574C17.0625 29.2554 17.0625 29.2535 17.0625 29.2516C17.0625 29.2497 17.0625 29.2477 17.0625 29.2458C17.0625 29.2439 17.0625 29.242 17.0625 29.2401C17.0625 29.2381 17.0625 29.2362 17.0625 29.2343C17.0625 29.2324 17.0625 29.2305 17.0625 29.2286C17.0625 29.2267 17.0625 29.2248 17.0625 29.2229C17.0625 29.221 17.0625 29.2191 17.0625 29.2172C17.0625 29.2154 17.0625 29.2135 17.0625 29.2116C17.0625 29.2097 17.0625 29.2078 17.0625 29.206C17.0625 29.2041 17.0625 29.2022 17.0625 29.2004C17.0625 29.1985 17.0625 29.1966 17.0625 29.1948C17.0625 29.1929 17.0625 29.191 17.0625 29.1892C17.0625 29.1873 17.0625 29.1855 17.0625 29.1836C17.0625 29.1818 17.0625 29.1799 17.0625 29.1781C17.0625 29.1763 17.0625 29.1744 17.0625 29.1726C17.0625 29.1707 17.0625 29.1689 17.0625 29.1671C17.0625 29.1653 17.0625 29.1634 17.0625 29.1616C17.0625 29.1598 17.0625 29.158 17.0625 29.1561C17.0625 29.1543 17.0625 29.1525 17.0625 29.1507C17.0625 29.1489 17.0625 29.1471 17.0625 29.1453C17.0625 29.1435 17.0625 29.1417 17.0625 29.1399C17.0625 29.1381 17.0625 29.1363 17.0625 29.1345C17.0625 29.1327 17.0625 29.1309 17.0625 29.1291C17.0625 29.1273 17.0625 29.1256 17.0625 29.1238C17.0625 29.122 17.0625 29.1202 17.0625 29.1185C17.0625 29.1167 17.0625 29.1149 17.0625 29.1131C17.0625 29.1114 17.0625 29.1096 17.0625 29.1078C17.0625 29.1061 17.0625 29.1043 17.0625 29.1026C17.0625 29.1008 17.0625 29.0991 17.0625 29.0973C17.0625 29.0956 17.0625 29.0938 17.0625 29.0921C17.0625 29.0903 17.0625 29.0886 17.0625 29.0869C17.0625 29.0851 17.0625 29.0834 17.0625 29.0816C17.0625 29.0799 17.0625 29.0782 17.0625 29.0765C17.0625 29.0747 17.0625 29.073 17.0625 29.0713C17.0625 29.0696 17.0625 29.0678 17.0625 29.0661C17.0625 29.0644 17.0625 29.0627 17.0625 29.061C17.0625 29.0593 17.0625 29.0576 17.0625 29.0559C17.0625 29.0542 17.0625 29.0525 17.0625 29.0508C17.0625 29.0491 17.0625 29.0474 17.0625 29.0457C17.0625 29.044 17.0625 29.0423 17.0625 29.0406C17.0625 29.0389 17.0625 29.0372 17.0625 29.0356C17.0625 29.0339 17.0625 29.0322 17.0625 29.0305C17.0625 29.0289 17.0625 29.0272 17.0625 29.0255C17.0625 29.0238 17.0625 29.0222 17.0625 29.0205C17.0625 29.0188 17.0625 29.0172 17.0625 29.0155C17.0625 29.0139 17.0625 29.0122 17.0625 29.0105C17.0625 29.0089 17.0625 29.0072 17.0625 29.0056C17.0625 29.0039 17.0625 29.0023 17.0625 29.0007C17.0625 28.999 17.0625 28.9974 17.0625 28.9957C17.0625 28.9941 17.0625 28.9925 17.0625 28.9908C17.0625 28.9892 17.0625 28.9876 17.0625 28.9859C17.0625 28.9843 17.0625 28.9827 17.0625 28.981C17.0625 28.9794 17.0625 28.9778 17.0625 28.9762C17.0625 28.9746 17.0625 28.9729 17.0625 28.9713C17.0625 28.9697 17.0625 28.9681 17.0625 28.9665C17.0625 28.9649 17.0625 28.9633 17.0625 28.9617C17.0625 28.9601 17.0625 28.9585 17.0625 28.9569C17.0625 28.9553 17.0625 28.9537 17.0625 28.9521C17.0625 28.9505 17.0625 28.9489 17.0625 28.9473C17.0625 28.9457 17.0625 28.9441 17.0625 28.9426C17.0625 28.941 17.0625 28.9394 17.0625 28.9378C17.0625 28.9362 17.0625 28.9347 17.0625 28.9331C17.0625 28.9315 17.0625 28.9299 17.0625 28.9284C17.0625 28.9268 17.0625 28.9252 17.0625 28.9237C17.0625 28.9221 17.0625 28.9205 17.0625 28.919C17.0625 28.9174 17.0625 28.9159 17.0625 28.9143C17.0625 28.9128 17.0625 28.9112 17.0625 28.9096C17.0625 28.9081 17.0625 28.9065 17.0625 28.905C17.0625 28.9035 17.0625 28.9019 17.0625 28.9004C17.0625 28.8988 17.0625 28.8973 17.0625 28.8957C17.0625 28.8942 17.0625 28.8927 17.0625 28.8911C17.0625 28.8896 17.0625 28.8881 17.0625 28.8865C17.0625 28.885 17.0625 28.8835 17.0625 28.882C17.0625 28.8804 17.0625 28.8789 17.0625 28.8774C17.0625 28.8759 17.0625 28.8744 17.0625 28.8728C17.0625 28.8713 17.0625 28.8698 17.0625 28.8683C17.0625 28.8668 17.0625 28.8653 17.0625 28.8638C17.0625 28.8623 17.0625 28.8608 17.0625 28.8593C17.0625 28.8578 17.0625 28.8563 17.0625 28.8548C17.0625 28.8533 17.0625 28.8518 17.0625 28.8503C17.0625 28.8488 17.0625 28.8473 17.0625 28.8458C17.0625 28.8443 17.0625 28.8428 17.0625 28.8413C17.0625 28.8398 17.0625 28.8384 17.0625 28.8369C17.0625 28.8354 17.0625 28.8339 17.0625 28.8324C17.0625 28.831 17.0625 28.8295 17.0625 28.828C17.0625 28.8265 17.0625 28.8251 17.0625 28.8236C17.0625 28.8221 17.0625 28.8206 17.0625 28.8192C17.0625 28.8177 17.0625 28.8163 17.0625 28.8148C17.0625 28.8133 17.0625 28.8119 17.0625 28.8104C17.0625 28.8089 17.0625 28.8075 17.0625 28.806C17.0625 28.8046 17.0625 28.8031 17.0625 28.8017C17.0625 28.8002 17.0625 28.7988 17.0625 28.7973C17.0625 28.7959 17.0625 28.7944 17.0625 28.793C17.0625 28.7915 17.0625 28.7901 17.0625 28.7887C17.0625 28.7872 17.0625 28.7858 17.0625 28.7843C17.0625 28.7829 17.0625 28.7815 17.0625 28.78C17.0625 28.7786 17.0625 28.7772 17.0625 28.7757C17.0625 28.7743 17.0625 28.7729 17.0625 28.7715C17.0625 28.77 17.0625 28.7686 17.0625 28.7672C17.0625 28.7658 17.0625 28.7643 17.0625 28.7629C17.0625 28.7615 17.0625 28.7601 17.0625 28.7587C17.0625 28.7573 17.0625 28.7558 17.0625 28.7544C17.0625 28.753 17.0625 28.7516 17.0625 28.7502C17.0625 28.7488 17.0625 28.7474 17.0625 28.746C17.0625 28.7446 17.0625 28.7432 17.0625 28.7418C17.0625 28.7404 17.0625 28.739 17.0625 28.7376C17.0625 28.7362 17.0625 28.7348 17.0625 28.7334C17.0625 28.732 17.0625 28.7306 17.0625 28.7292C17.0625 28.7278 17.0625 28.7264 17.0625 28.725C17.0625 28.7236 17.0625 28.7222 17.0625 28.7208C17.0625 28.7195 17.0625 28.7181 17.0625 28.7167C17.0625 28.7153 17.0625 28.7139 17.0625 28.7125C17.0625 28.7112 17.0625 28.7098 17.0625 28.7084C17.0625 28.707 17.0625 28.7057 17.0625 28.7043C17.0625 28.7029 17.0625 28.7015 17.0625 28.7002C17.0625 28.6988 17.0625 28.6974 17.0625 28.696C17.0625 28.6947 17.0625 28.6933 17.0625 28.6919C17.0625 28.6906 17.0625 28.6892 17.0625 28.6879C17.0625 28.6865 17.0625 28.6851 17.0625 28.6838C17.0625 28.6824 17.0625 28.681 17.0625 28.6797C17.0625 28.6783 17.0625 28.677 17.0625 28.6756C17.0625 28.6743 17.0625 28.6729 17.0625 28.6716C17.0625 28.6702 17.0625 28.6689 17.0625 28.6675C17.0625 28.6662 17.0625 28.6648 17.0625 28.6635C17.0625 28.6621 17.0625 28.6608 17.0625 28.6594C17.0625 28.6581 17.0625 28.6567 17.0625 28.6554C17.0625 28.6541 17.0625 28.6527 17.0625 28.6514C17.0625 28.65 17.0625 28.6487 17.0625 28.6474C17.0625 28.646 17.0625 28.6447 17.0625 28.6434C17.0625 28.642 17.0625 28.6407 17.0625 28.6394C17.0625 28.638 17.0625 28.6367 17.0625 28.6354C17.0625 28.634 17.0625 28.6327 17.0625 28.6314C17.0625 28.6301 17.0625 28.6287 17.0625 28.6274C17.0625 28.6261 17.0625 28.6248 17.0625 28.6234C17.0625 28.6221 17.0625 28.6208 17.0625 28.6195C17.0625 28.6181 17.0625 28.6168 17.0625 28.6155C17.0625 28.6142 17.0625 28.6129 17.0625 28.6116C17.0625 28.6102 17.0625 28.6089 17.0625 28.6076C17.0625 28.6063 17.0625 28.605 17.0625 28.6037C17.0625 28.6024 17.0625 28.601 17.0625 28.5997C17.0625 28.5984 17.0625 28.5971 17.0625 28.5958C17.0625 28.5945 17.0625 28.5932 17.0625 28.5919C17.0625 28.5906 17.0625 28.5893 17.0625 28.588C17.0625 28.5867 17.0625 28.5854 17.0625 28.5841C17.0625 28.5828 17.0625 28.5815 17.0625 28.5802C17.0625 28.5789 17.0625 28.5776 17.0625 28.5763C17.0625 28.575 17.0625 28.5737 17.0625 28.5724C17.0625 28.5711 17.0625 28.5698 17.0625 28.5685C17.0625 28.5672 17.0625 28.5659 17.0625 28.5646C17.0625 28.5633 17.0625 28.562 17.0625 28.5607C17.0625 28.5594 17.0625 28.5581 17.0625 28.5569C17.0625 28.5556 17.0625 28.5543 17.0625 28.553C17.0625 28.5517 17.0625 28.5504 17.0625 28.5491C17.0625 28.5478 17.0625 28.5466 17.0625 28.5453C17.0625 28.544 17.0625 28.5427 17.0625 28.5414C17.0625 28.5401 17.0625 28.5389 17.0625 28.5376C17.0625 28.5363 17.0625 28.535 17.0625 28.5337C17.0625 28.5325 17.0625 28.5312 17.0625 28.5299C17.0625 28.5286 17.0625 28.5273 17.0625 28.5261C17.0625 28.5248 17.0625 28.5235 17.0625 28.5222C17.0625 28.521 17.0625 28.5197 17.0625 28.5184C17.0625 28.5171 17.0625 28.5159 17.0625 28.5146C17.0625 28.5133 17.0625 28.512 17.0625 28.5108C17.0625 28.5095 17.0625 28.5082 17.0625 28.507C17.0625 28.5057 17.0625 28.5044 17.0625 28.5031C17.0625 28.5019 17.0625 28.5006 17.0625 28.4993C17.0625 28.4981 17.0625 28.4968 17.0625 28.4955C17.0625 28.4943 17.0625 28.493 17.0625 28.4917C17.0625 28.4905 17.0625 28.4892 17.0625 28.4879C17.0625 28.4867 17.0625 28.4854 17.0625 28.4841C17.0625 28.4829 17.0625 28.4816 17.0625 28.4803C17.0625 28.4791 17.0625 28.4778 17.0625 28.4766C17.0625 28.4753 17.0625 28.474 17.0625 28.4728C17.0625 28.4715 17.0625 28.4703 17.0625 28.469C17.0625 28.4677 17.0625 28.4665 17.0625 28.4652C17.0625 28.464 17.0625 28.4627 17.0625 28.4614C17.0625 28.4602 17.0625 28.4589 17.0625 28.4577C17.0625 28.4564 17.0625 28.4551 17.0625 28.4539C17.0625 28.4526 17.0625 28.4514 17.0625 28.4501C17.0625 28.4489 17.0625 28.4476 17.0625 28.4463C17.0625 28.4451 17.0625 28.4438 17.0625 28.4426C17.0625 28.4413 17.0625 28.4401 17.0625 28.4388C17.0625 28.4376 17.0625 28.4363 17.0625 28.4351C17.0625 28.4338 17.0625 28.4325 17.0625 28.4313C17.0625 28.43 17.0625 28.4288 17.0625 28.4275C17.0625 28.4263 17.0625 28.425 17.0625 28.4238C17.0625 28.4225 17.0625 28.4213 17.0625 28.42C17.0625 28.4188 17.0625 28.4175 17.0625 28.4163C17.0625 28.415 17.0625 28.4138 17.0625 28.4125C17.0625 28.4113 17.0625 28.41 17.0625 28.4088C17.0625 28.4075 17.0625 28.4063 17.0625 28.405C17.0625 28.4037 17.0625 28.4025 17.0625 28.4012C17.0625 28.4 17.0625 28.3987 17.0625 28.3975C17.0625 28.3962 17.0625 28.395 17.0625 28.3937C17.0625 28.3925 17.0625 28.3912 17.0625 28.39C17.0625 28.3887 17.0625 28.3875 17.0625 28.3862C17.0625 28.385 17.0625 28.3837 17.0625 28.3825C17.0625 28.3812 17.0625 28.38 17.0625 28.3787C17.0625 28.3775 17.0625 28.3762 17.0625 28.375C17.0625 28.3738 17.0625 28.3725 17.0625 28.3713C17.0625 28.37 17.0625 28.3688 17.0625 28.3675C17.0625 28.3663 17.0625 28.365 17.0625 28.3638C17.0625 28.3625 17.0625 28.3613 17.0625 28.36C17.0625 28.3588 17.0625 28.3575 17.0625 28.3563C17.0625 28.355 17.0625 28.3538 17.0625 28.3525C17.0625 28.3513 17.0625 28.35 17.0625 28.3488C17.0625 28.3475 17.0625 28.3463 17.0625 28.345C17.0625 28.3437 17.0625 28.3425 17.0625 28.3412C17.0625 28.34 17.0625 28.3387 17.0625 28.3375C17.0625 28.3362 17.0625 28.335 17.0625 28.3337C17.0625 28.3325 17.0625 28.3312 17.0625 28.33C17.0625 28.3287 17.0625 28.3275 17.0625 28.3262C17.0625 28.325 17.0625 28.3237 17.0625 28.3225C17.0625 28.3212 17.0625 28.32 17.0625 28.3187C17.0625 28.3175 17.0625 28.3162 17.0625 28.3149C17.0625 28.3137 17.0625 28.3124 17.0625 28.3112C17.0625 28.3099 17.0625 28.3087 17.0625 28.3074C17.0625 28.3062 17.0625 28.3049 17.0625 28.3037C17.0625 28.3024 17.0625 28.3011 17.0625 28.2999C17.0625 28.2986 17.0625 28.2974 17.0625 28.2961C17.0625 28.2949 17.0625 28.2936 17.0625 28.2923C17.0625 28.2911 17.0625 28.2898 17.0625 28.2886C17.0625 28.2873 17.0625 28.286 17.0625 28.2848C17.0625 28.2835 17.0625 28.2823 17.0625 28.281C17.0625 28.2797 17.0625 28.2785 17.0625 28.2772C17.0625 28.276 17.0625 28.2747 17.0625 28.2734C17.0625 28.2722 17.0625 28.2709 17.0625 28.2697C17.0625 28.2684 17.0625 28.2671 17.0625 28.2659C17.0625 28.2646 17.0625 28.2633 17.0625 28.2621C17.0625 28.2608 17.0625 28.2595 17.0625 28.2583C17.0625 28.257 17.0625 28.2557 17.0625 28.2545C17.0625 28.2532 17.0625 28.2519 17.0625 28.2507C17.0625 28.2494 17.0625 28.2481 17.0625 28.2469C17.0625 28.2456 17.0625 28.2443 17.0625 28.243C17.0625 28.2418 17.0625 28.2405 17.0625 28.2392C17.0625 28.238 17.0625 28.2367 17.0625 28.2354C17.0625 28.2341 17.0625 28.2329 17.0625 28.2316C17.0625 28.2303 17.0625 28.229 17.0625 28.2278C17.0625 28.2265 17.0625 28.2252 17.0625 28.2239C17.0625 28.2227 17.0625 28.2214 17.0625 28.2201C17.0625 28.2188 17.0625 28.2175 17.0625 28.2163C17.0625 28.215 17.0625 28.2137 17.0625 28.2124C17.0625 28.2111 17.0625 28.2099 17.0625 28.2086C17.0625 28.2073 17.0625 28.206 17.0625 28.2047C17.0625 28.2034 17.0625 28.2022 17.0625 28.2009C17.0625 28.1996 17.0625 28.1983 17.0625 28.197C17.0625 28.1957 17.0625 28.1944 17.0625 28.1931C17.0625 28.1919 17.0625 28.1906 17.0625 28.1893C17.0625 28.188 17.0625 28.1867 17.0625 28.1854C17.0625 28.1841 17.0625 28.1828 17.0625 28.1815C17.0625 28.1802 17.0625 28.1789 17.0625 28.1776C17.0625 28.1763 17.0625 28.175 17.0625 28.1737C17.0625 28.1724 17.0625 28.1711 17.0625 28.1698C17.0625 28.1685 17.0625 28.1672 17.0625 28.1659C17.0625 28.1646 17.0625 28.1633 17.0625 28.162C17.0625 28.1607 17.0625 28.1594 17.0625 28.1581C17.0625 28.1568 17.0625 28.1555 17.0625 28.1542C17.0625 28.1529 17.0625 28.1516 17.0625 28.1503C17.0625 28.149 17.0625 28.1476 17.0625 28.1463C17.0625 28.145 17.0625 28.1437 17.0625 28.1424C17.0625 28.1411 17.0625 28.1398 17.0625 28.1384C17.0625 28.1371 17.0625 28.1358 17.0625 28.1345C17.0625 28.1332 17.0625 28.1319 17.0625 28.1305C17.0625 28.1292 17.0625 28.1279 17.0625 28.1266C17.0625 28.1252 17.0625 28.1239 17.0625 28.1226C17.0625 28.1213 17.0625 28.1199 17.0625 28.1186C17.0625 28.1173 17.0625 28.116 17.0625 28.1146C17.0625 28.1133 17.0625 28.112 17.0625 28.1106C17.0625 28.1093 17.0625 28.108 17.0625 28.1066C17.0625 28.1053 17.0625 28.104 17.0625 28.1026C17.0625 28.1013 17.0625 28.1 17.0625 28.0986C17.0625 28.0973 17.0625 28.0959 17.0625 28.0946C17.0625 28.0933 17.0625 28.0919 17.0625 28.0906C17.0625 28.0892 17.0625 28.0879 17.0625 28.0865C17.0625 28.0852 17.0625 28.0838 17.0625 28.0825C17.0625 28.0811 17.0625 28.0798 17.0625 28.0784C17.0625 28.0771 17.0625 28.0757 17.0625 28.0744C17.0625 28.073 17.0625 28.0717 17.0625 28.0703C17.0625 28.069 17.0625 28.0676 17.0625 28.0662C17.0625 28.0649 17.0625 28.0635 17.0625 28.0621C17.0625 28.0608 17.0625 28.0594 17.0625 28.0581C17.0625 28.0567 17.0625 28.0553 17.0625 28.054C17.0625 28.0526 17.0625 28.0512 17.0625 28.0498C17.0625 28.0485 17.0625 28.0471 17.0625 28.0457C17.0625 28.0443 17.0625 28.043 17.0625 28.0416C17.0625 28.0402 17.0625 28.0388 17.0625 28.0375C17.0625 28.0361 17.0625 28.0347 17.0625 28.0333C17.0625 28.0319 17.0625 28.0305 17.0625 28.0292C17.0625 28.0278 17.0625 28.0264 17.0625 28.025C17.0625 28.0236 17.0625 28.0222 17.0625 28.0208C17.0625 28.0194 17.0625 28.018 17.0625 28.0166C17.0625 28.0152 17.0625 28.0138 17.0625 28.0124C17.0625 28.011 17.0625 28.0096 17.0625 28.0082C17.0625 28.0068 17.0625 28.0054 17.0625 28.004C17.0625 28.0026 17.0625 28.0012 17.0625 27.9998C17.0625 27.9984 17.0625 27.997 17.0625 27.9956C17.0625 27.9942 17.0625 27.9927 17.0625 27.9913C17.0625 27.9899 17.0625 27.9885 17.0625 27.9871C17.0625 27.9857 17.0625 27.9842 17.0625 27.9828C17.0625 27.9814 17.0625 27.98 17.0625 27.9785C17.0625 27.9771 17.0625 27.9757 17.0625 27.9743C17.0625 27.9728 17.0625 27.9714 17.0625 27.97C17.0625 27.9685 17.0625 27.9671 17.0625 27.9657C17.0625 27.9642 17.0625 27.9628 17.0625 27.9613C17.0625 27.9599 17.0625 27.9585 17.0625 27.957C17.0625 27.9556 17.0625 27.9541 17.0625 27.9527C17.0625 27.9512 17.0625 27.9498 17.0625 27.9483C17.0625 27.9469 17.0625 27.9454 17.0625 27.944C17.0625 27.9425 17.0625 27.9411 17.0625 27.9396C17.0625 27.9381 17.0625 27.9367 17.0625 27.9352C17.0625 27.9337 17.0625 27.9323 17.0625 27.9308C17.0625 27.9294 17.0625 27.9279 17.0625 27.9264C17.0625 27.9249 17.0625 27.9235 17.0625 27.922C17.0625 27.9205 17.0625 27.919 17.0625 27.9176C17.0625 27.9161 17.0625 27.9146 17.0625 27.9131C17.0625 27.9116 17.0625 27.9102 17.0625 27.9087C17.0625 27.9072 17.0625 27.9057 17.0625 27.9042C17.0625 27.9027 17.0625 27.9012 17.0625 27.8997C17.0625 27.8982 17.0625 27.8967 17.0625 27.8952C17.0625 27.8937 17.0625 27.8922 17.0625 27.8907C17.0625 27.8892 17.0625 27.8877 17.0625 27.8862C17.0625 27.8847 17.0625 27.8832 17.0625 27.8817C17.0625 27.8802 17.0625 27.8787 17.0625 27.8772C17.0625 27.8756 17.0625 27.8741 17.0625 27.8726C17.0625 27.8711 17.0625 27.8696 17.0625 27.868C17.0625 27.8665 17.0625 27.865 17.0625 27.8635C17.0625 27.8619 17.0625 27.8604 17.0625 27.8589C17.0625 27.8573 17.0625 27.8558 17.0625 27.8543C17.0625 27.8527 17.0625 27.8512 17.0625 27.8496C17.0625 27.8481 17.0625 27.8465 17.0625 27.845C17.0625 27.8435 17.0625 27.8419 17.0625 27.8404C17.0625 27.8388 17.0625 27.8373 17.0625 27.8357C17.0625 27.8341 17.0625 27.8326 17.0625 27.831C17.0625 27.8295 17.0625 27.8279 17.0625 27.8263C17.0625 27.8248 17.0625 27.8232 17.0625 27.8216C17.0625 27.8201 17.0625 27.8185 17.0625 27.8169C17.0625 27.8153 17.0625 27.8138 17.0625 27.8122C17.0625 27.8106 17.0625 27.809 17.0625 27.8074C17.0625 27.8059 17.0625 27.8043 17.0625 27.8027C17.0625 27.8011 17.0625 27.7995 17.0625 27.7979C17.0625 27.7963 17.0625 27.7947 17.0625 27.7931C17.0625 27.7915 17.0625 27.7899 17.0625 27.7883C17.0625 27.7867 17.0625 27.7851 17.0625 27.7835C17.0625 27.7819 17.0625 27.7803 17.0625 27.7787C17.0625 27.7771 17.0625 27.7754 17.0625 27.7738C17.0625 27.7722 17.0625 27.7706 17.0625 27.769C17.0625 27.7673 17.0625 27.7657 17.0625 27.7641C17.0625 27.7624 17.0625 27.7608 17.0625 27.7592C17.0625 27.7575 17.0625 27.7559 17.0625 27.7543C17.0625 27.7526 17.0625 27.751 17.0625 27.7493C17.0625 27.7477 17.0625 27.7461 17.0625 27.7444C17.0625 27.7428 17.0625 27.7411 17.0625 27.7395C17.0625 27.7378 17.0625 27.7361 17.0625 27.7345C17.0625 27.7328 17.0625 27.7312 17.0625 27.7295C17.0625 27.7278 17.0625 27.7262 17.0625 27.7245C17.0625 27.7228 17.0625 27.7211 17.0625 27.7195C17.0625 27.7178 17.0625 27.7161 17.0625 27.7144C17.0625 27.7128 17.0625 27.7111 17.0625 27.7094C17.0625 27.7077 17.0625 27.706 17.0625 27.7043C17.0625 27.7026 17.0625 27.7009 17.0625 27.6992C17.0625 27.6975 17.0625 27.6958 17.0625 27.6941C17.0625 27.6924 17.0625 27.6907 17.0625 27.689C17.0625 27.6873 17.0625 27.6856 17.0625 27.6839C17.0625 27.6822 17.0625 27.6804 17.0625 27.6787C17.0625 27.677 17.0625 27.6753 17.0625 27.6735C17.0625 27.6718 17.0625 27.6701 17.0625 27.6684C17.0625 27.6666 17.0625 27.6649 17.0625 27.6631C17.0625 27.6614 17.0625 27.6597 17.0625 27.6579C17.0625 27.6562 17.0625 27.6544 17.0625 27.6527C17.0625 27.6509 17.0625 27.6492 17.0625 27.6474C17.0625 27.6457 17.0625 27.6439 17.0625 27.6422C17.0625 27.6404 17.0625 27.6386 17.0625 27.6369C17.0625 27.6351 17.0625 27.6333 17.0625 27.6315C17.0625 27.6298 17.0625 27.628 17.0625 27.6262C17.0625 27.6244 17.0625 27.6227 17.0625 27.6209C17.0625 27.6191 17.0625 27.6173 17.0625 27.6155C17.0625 27.6137 17.0625 27.6119 17.0625 27.6101C17.0625 27.6083 17.0625 27.6065 17.0625 27.6047C17.0625 27.6029 17.0625 27.6011 17.0625 27.5993C17.0625 27.5975 17.0625 27.5957 17.0625 27.5939C17.0625 27.592 17.0625 27.5902 17.0625 27.5884C17.0625 27.5866 17.0625 27.5847 17.0625 27.5829C17.0625 27.5811 17.0625 27.5793 17.0625 27.5774C17.0625 27.5756 17.0625 27.5737 17.0625 27.5719C17.0625 27.5701 17.0625 27.5682 17.0625 27.5664C17.0625 27.5645 17.0625 27.5627 17.0625 27.5608C17.0625 27.559 17.0625 27.5571 17.0625 27.5552C17.0625 27.5534 17.0625 27.5515 17.0625 27.5496C17.0625 27.5478 17.0625 27.5459 17.0625 27.544C17.0625 27.5422 17.0625 27.5403 17.0625 27.5384C17.0625 27.5365 17.0625 27.5346 17.0625 27.5328C17.0625 27.5309 17.0625 27.529 17.0625 27.5271C17.0625 27.5252 17.0625 27.5233 17.0625 27.5214C17.0625 27.5195 17.0625 27.5176 17.0625 27.5157C17.0625 27.5138 17.0625 27.5119 17.0625 27.5099C17.0625 27.508 17.0625 27.5061 17.0625 27.5042C17.0625 27.5023 17.0625 27.5003 17.0625 27.4984C17.0625 27.4965 17.0625 27.4946 17.0625 27.4926C17.0625 27.4907 17.0625 27.4887 17.0625 27.4868C17.0625 27.4849 17.0625 27.4829 17.0625 27.481C17.0625 27.479 17.0625 27.4771 17.0625 27.4751C17.0625 27.4732 17.0625 27.4712 17.0625 27.4692C17.0625 27.4673 17.0625 27.4653 17.0625 27.4633C17.0625 27.4614 17.0625 27.4594 17.0625 27.4574C17.0625 27.4554 17.0625 27.4535 17.0625 27.4515C17.0625 27.4495 17.0625 27.4475 17.0625 27.4455C17.0625 27.4435 17.0625 27.4415 17.0625 27.4395C17.0625 27.4375 17.0625 27.4355 17.0625 27.4335C17.0625 27.4315 17.0625 27.4295 17.0625 27.4275C17.0625 27.4255 17.0625 27.4235 17.0625 27.4214C17.0625 27.4194 17.0625 27.4174 17.0625 27.4154C17.0625 27.4134 17.0625 27.4113 17.0625 27.4093C17.0625 27.4073 17.0625 27.4052 17.0625 27.4032C17.0625 27.4011 17.0625 27.3991 17.0625 27.397C17.0625 27.395 17.0625 27.3929 17.0625 27.3909C17.0625 27.3888 17.0625 27.3868 17.0625 27.3847C17.0625 27.3826 17.0625 27.3806 17.0625 27.3785C17.0625 27.3764 17.0625 27.3743 17.0625 27.3723C17.0625 27.3702 17.0625 27.3681 17.0625 27.366C17.0625 27.3639 17.0625 27.3618 17.0625 27.3597C17.0625 27.3576 17.0625 27.3555 17.0625 27.3534C17.0625 27.3513 17.0625 27.3492 17.0625 27.3471C17.0625 27.345 17.0625 27.3429 17.0625 27.3408C17.0625 27.3387 17.0625 27.3365 17.0625 27.3344C17.0625 27.3323 17.0625 27.3302 17.0625 27.328C17.0625 27.3259 17.0625 27.3238 17.0625 27.3216C17.0625 27.3195 17.0625 27.3173 17.0625 27.3152C17.0625 27.313 17.0625 27.3109 17.0625 27.3087C17.0625 27.3066 17.0625 27.3044 17.0625 27.3022C17.0625 27.3001 17.0625 27.2979 17.0625 27.2957C17.0625 27.2936 17.0625 27.2914 17.0625 27.2892C17.0625 27.287 17.0625 27.2848 17.0625 27.2826C17.0625 27.2805 17.0625 27.2783 17.0625 27.2761C17.0625 27.2739 17.0625 27.2717 17.0625 27.2695C17.0625 27.2673 17.0625 27.2651 17.0625 27.2628C17.0625 27.2606 17.0625 27.2584 17.0625 27.2562C17.0625 27.254 17.0625 27.2517 17.0625 27.2495C17.0625 27.2473 17.0625 27.245 17.0625 27.2428C17.0625 27.2406 17.0625 27.2383 17.0625 27.2361C17.0625 27.2338 17.0625 27.2316 17.0625 27.2293C17.0625 27.2271 17.0625 27.2248 17.0625 27.2226C17.0625 27.2203 17.0625 27.218 17.0625 27.2158C17.0625 27.2135 17.0625 27.2112 17.0625 27.2089C17.0625 27.2066 17.0625 27.2044 17.0625 27.2021C17.0625 27.1998 17.0625 27.1975 17.0625 27.1952C17.0625 27.1929 17.0625 27.1906 17.0625 27.1883C17.0625 27.186 17.0625 27.1837 17.0625 27.1814C17.0625 27.1791 17.0625 27.1767 17.0625 27.1744C17.0625 27.1721 17.0625 27.1698 17.0625 27.1674C17.0625 27.1651 17.0625 27.1628 17.0625 27.1604C17.0625 27.1581 17.0625 27.1557 17.0625 27.1534C17.0625 27.151 17.0625 27.1487 17.0625 27.1463C17.0625 27.144 17.0625 27.1416 17.0625 27.1392C17.0625 27.1369 17.0625 27.1345 17.0625 27.1321C17.0625 27.1298 17.0625 27.1274 17.0625 27.125H15.5625Z" fill="#333333"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M26 15.7071L27.1384 16.8455C27.0505 16.9944 27 17.1681 27 17.3535L27 21.0822C27 21.346 27.1042 21.5992 27.29 21.7865L32.9526 27.4948C33.3427 27.888 33.978 27.8893 34.3697 27.4977L38.1557 23.7116C38.5476 23.3197 38.546 22.6839 38.1522 22.2939L32.4451 16.6429C32.2578 16.4575 32.005 16.3535 31.7415 16.3535L28 16.3535C27.8145 16.3535 27.6409 16.404 27.492 16.492L26 15V15.7071ZM30.596 19.8132C30.9067 19.5026 30.9067 18.9989 30.596 18.6883C30.2854 18.3776 29.7817 18.3776 29.4711 18.6883C29.1605 18.9989 29.1605 19.5026 29.4711 19.8132C29.7817 20.1238 30.2854 20.1238 30.596 19.8132Z" fill="#DA3635"/> </symbol> <symbol id="grandLyonLaMetropole" width="189" height="43" viewBox="0 0 189 43" fill="none" xmlns="http://www.w3.org/2000/svg"> -- GitLab From d21fa7ad3ada2267fda4b99ece6224397e107003 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Mon, 14 Mar 2022 17:17:00 +0100 Subject: [PATCH 024/199] max width --- src/app/form/structure-form/form.component.html | 2 +- src/app/form/structure-form/form.component.scss | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index a2c64c834..d8c6cdff3 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -1256,7 +1256,7 @@ <h3>Pouvez vous présentez votre structure ?</h3> <p class="notRequired">Facultatif</p> </div> - <div class="textareaBlock" fxLayout="column"> + <div class="textareaBlock introduceStructure" fxLayout="column"> <textarea rows="8" placeholder="Exemple : nous sommes une équipe de 7 bénévoles qui orientons les personnes pour qui le numérique est une langue étrangère" diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 8f32a954a..ca1885c6f 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -171,7 +171,8 @@ h4 { } .welcomingTerms, .procedureContainer, - .otherServices { + .otherServices, + .textareaBlock { max-width: 600px; } } @@ -207,6 +208,7 @@ h4 { @include lato-regular-18; color: $grey-3; font-style: italic; + margin-top: 4px; } } .passwordInfo { -- GitLab From bea2a63f2d0b7078dddd11d199fd7eada63d8b3e Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 15 Mar 2022 08:55:25 +0100 Subject: [PATCH 025/199] small adjustments --- src/app/form/structure-form/form.component.html | 12 +++++++++--- src/app/form/structure-form/form.component.scss | 11 +++-------- .../checkbox-form/checkbox-form.component.scss | 1 + 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index d8c6cdff3..519c45668 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -198,7 +198,7 @@ <h3>Quels identifiants utiliserez-vous pour vous connecter ?</h3> </div> <div class="form-group" fxLayout="column"> - <label for="email">Courriel du compte</label> + <label for="email">Email du compte</label> <p class="special invalid" *ngIf="this.accountForm.get('email').hasError('alreadyExist')"> L'email est déja utilisé. </p> @@ -497,7 +497,7 @@ </div> </div> <div class="form-group" fxLayout="column"> - <label for="structureName">Courriel de la structure</label> + <label for="structureName">Email de la structure</label> <div fxLayout="row" fxLayoutGap="13px"> <input type="text" (input)="setValidationsForm()" formControlName="contactMail" class="form-input" /> <app-svg-icon @@ -1231,7 +1231,13 @@ <h3>Quels autres services proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> - <div *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start" class="otherServices"> + <div + *ngIf="labelsQualifications" + fxLayout="row wrap" + fxLayoutGap="16px" + fxLayoutAlign="flex-start" + class="otherServices" + > <ng-container *ngFor="let equipment of equipmentsAndServices"> <app-checkbox-form *ngIf=" diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index ca1885c6f..e88976e71 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -160,7 +160,7 @@ h4 { } } .title { - margin-bottom: 20px; + margin-bottom: 16px; } .nextTitle { margin-bottom: 10px; @@ -181,9 +181,9 @@ h4 { margin-bottom: 20px; } p { + color: $grey-1; + @include lato-regular-14; margin-top: 10px; - margin-bottom: 0; - @include lato-regular-18; &.special { @include lato-regular-14; color: $grey-3; @@ -281,11 +281,6 @@ h4 { color: $green-1; } } - p { - color: $primary-color; - @include lato-bold-14; - margin-bottom: 7px; - } } .form-group { &.facebook, diff --git a/src/app/shared/components/checkbox-form/checkbox-form.component.scss b/src/app/shared/components/checkbox-form/checkbox-form.component.scss index 1e2380d31..3269a7e15 100644 --- a/src/app/shared/components/checkbox-form/checkbox-form.component.scss +++ b/src/app/shared/components/checkbox-form/checkbox-form.component.scss @@ -51,6 +51,7 @@ button { .checkmark { width: 18px; height: 18px; + min-width: 18px; background: $white; border: 1px solid $grey-3; border-radius: 4px; -- GitLab From da0a974c45f9f6288d5a55777c51a93ea8e29bad Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 15 Mar 2022 15:04:35 +0100 Subject: [PATCH 026/199] structure equipment --- .../form/structure-form/form.component.html | 113 +++--------------- .../form/structure-form/form.component.scss | 42 +++++++ src/app/form/structure-form/form.component.ts | 18 ++- src/assets/form/sprite.svg | 9 ++ 4 files changed, 84 insertions(+), 98 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 519c45668..f1a9374a6 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -1048,44 +1048,25 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureEquipments" class="page"> <div class="title"> - <h3>Quel matériel mettez-vous à disposition ?</h3> + <h3>Quel matériel est mis à disposition par la structure ?</h3> <p class="notRequired">Facultatif</p> </div> <ng-container *ngFor="let equipment of equipmentsAndServices"> <div - class="collapse equipments" - [ngClass]="{ notCollapsed: !equipment.openned }" + class="controller equipments" *ngIf=" ['ordinateurs', 'tablettes', 'bornesNumeriques', 'imprimantes', 'scanners'].includes(equipment.module.id) " > <div fxLayout="column"> - <div - class="collapseHeader" - fxLayout="row" - fxLayoutAlign=" center" - (click)="toggleEquipmentsServices(equipment)" - > - <div class="titleCollapse"> - <p [ngClass]="{ show: equipment.openned, hide: !equipment.openned }" class="no-margin"> - Ajouter des {{ equipment.module.text | lowercase }} - </p> - <p [ngClass]="{ show: !equipment.openned, hide: equipment.openned }" class="no-margin"> - Retirer les {{ equipment.module.text | lowercase }} - </p> + <div class="contorllerHeader" fxLayout="row" fxLayoutAlign="space-between center"> + <div class="flex-item"> + <p class="no-margin">Nombre de {{ equipment.module.text | lowercase }}</p> </div> - <div class="logo"> - <svg class="show" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#show'"></use> - </svg> - <svg class="hide" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#hide'"></use> + <div class="inputSection flex-item equipments" fxLayout="row" fxLayoutAlign="center center"> + <svg class="hide" aria-hidden="true" (click)="changeValueHandler(equipment.module.id, -1)"> + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> </svg> - </div> - </div> - <div *ngIf="equipment.openned" class="inputSection"> - <div class="form-group equipments" fxLayout="column"> - <label for="equipment">Nombre</label> <div fxLayout="row" fxLayoutAlign=" center" fxLayoutGap="27px"> <ng-container *ngIf="equipment.module.id == 'ordinateurs'"> <input @@ -1094,21 +1075,8 @@ formControlName="nbComputers" min="0" class="form-input nbEquipment" + [(value)]="structureForm.value.nbComputers" /> - <app-svg-icon - *ngIf="getStructureControl('nbComputers').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - class="validationIcon" - ></app-svg-icon> - <app-svg-icon - *ngIf="getStructureControl('nbComputers').invalid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> </ng-container> <ng-container *ngIf="equipment.module.id == 'tablettes'"> <input @@ -1117,21 +1085,8 @@ formControlName="nbTablets" min="0" class="form-input nbEquipment" + [(value)]="structureForm.value.nbTablets" /> - <app-svg-icon - *ngIf="getStructureControl('nbTablets').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - class="validationIcon" - ></app-svg-icon> - <app-svg-icon - *ngIf="getStructureControl('nbTablets').invalid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> </ng-container> <ng-container *ngIf="equipment.module.id == 'imprimantes'"> <input @@ -1140,21 +1095,8 @@ formControlName="nbPrinters" min="0" class="form-input nbEquipment" + [(value)]="structureForm.value.nbPrinters" /> - <app-svg-icon - *ngIf="getStructureControl('nbPrinters').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - class="validationIcon" - ></app-svg-icon> - <app-svg-icon - *ngIf="getStructureControl('nbPrinters').invalid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> </ng-container> <ng-container *ngIf="equipment.module.id == 'bornesNumeriques'"> <input @@ -1163,21 +1105,8 @@ formControlName="nbNumericTerminal" min="0" class="form-input nbEquipment" + [(value)]="structureForm.value.nbNumericTerminal" /> - <app-svg-icon - *ngIf="getStructureControl('nbNumericTerminal').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - class="validationIcon" - ></app-svg-icon> - <app-svg-icon - *ngIf="getStructureControl('nbNumericTerminal').invalid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> </ng-container> <ng-container *ngIf="equipment.module.id == 'scanners'"> <input @@ -1186,23 +1115,13 @@ formControlName="nbScanners" min="0" class="form-input nbEquipment" + [(value)]="structureForm.value.nbScanners" /> - <app-svg-icon - *ngIf="getStructureControl('nbScanners').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - class="validationIcon" - ></app-svg-icon> - <app-svg-icon - *ngIf="getStructureControl('nbScanners').invalid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> </ng-container> </div> + <svg class="show" aria-hidden="true" (click)="changeValueHandler(equipment.module.id, 1)"> + <use [attr.xlink:href]="'assets/form/sprite.svg#plus'"></use> + </svg> </div> </div> </div> diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index e88976e71..02e33d740 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -351,6 +351,48 @@ img { } } +//section equipments controller +.controller { + border: 1px solid $grey-5; + border-radius: 4px; + margin-bottom: 13px; + max-width: 600px; + @media #{$small-phone} { + width: 95% !important; + } + @media #{$tablet} { + width: 296px; + } + .contorllerHeader { + height: 65px; + padding: 0 15px 0 12px; + p { + @include lato-bold-14; + } + } + .equipments { + svg { + width: 32px; + height: 32px; + background-color: $grey-8; + border-radius: 50%; + cursor: pointer; + } + input { + width: 56px; + margin: 0 6px; + } + input::-webkit-outer-spin-button, + input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } + input[type='number'] { + -moz-appearance: textfield; + } + } +} + // collapse .collapse { border: 1px solid $grey-5; diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index ed8ef2845..d5f5b1267 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,7 +48,9 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 9; // Change this value to start on a different page for dev testing + public currentPage = 18; // Change this value to start on a different page for dev testing + // screen 18 number of equipments + // screen 6 structure type public progressStatus = 37; public nbPagesForm = 24; public isPageValid: boolean; @@ -918,6 +920,20 @@ export class FormComponent implements OnInit { this.userAcceptNewsletter = isAccepted; } + private changeValueHandler(equipment: string, value = 0): void { + let field = ''; + if (equipment === 'ordinateurs') field = 'nbComputers'; + if (equipment === 'tablettes') field = 'nbTablets'; + if (equipment === 'scanners') field = 'nbScanners'; + if (equipment === 'bornesNumeriques') field = 'nbNumericTerminal'; + if (equipment === 'imprimantes') field = 'nbPrinters'; + + if (value === -1 && this.structureForm.value[field] === 0) return; + // this.structureForm.value[field] = this.structureForm.value[field] + value; + // console.log(`current value of ${equipment} :`, this.structureForm.value[field]); + this.getStructureControl(field).setValue(this.structureForm.value[field] + value); + } + public validateForm(): void { if (this.getStructureControl('freeWorkShop').value === null) { this.getStructureControl('freeWorkShop').setValue(false); diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 486dd7bc1..406112af5 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -160,6 +160,15 @@ <path d="M6 11.5C5.44772 11.5 5 11.9477 5 12.5C5 13.0523 5.44772 13.5 6 13.5C13.0974 13.5 10.2809 13.5 18 13.5C18.5523 13.5 19 13.0523 19 12.5C19 11.9477 18.5523 11.5 18 11.5C10.9004 11.5 13.7065 11.5 6 11.5Z" stroke="none"/> </symbol> +<symbol id="plus" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M16 9.63623L16 22.3642" stroke="#333333" stroke-width="1.5" stroke-linecap="round"/> +<path d="M22.3633 16L9.63536 16" stroke="#333333" stroke-width="1.5" stroke-linecap="round"/> +</symbol> + +<symbol id="minus" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M21.5 16L10.5 16" stroke="#333333" stroke-width="1.5" stroke-linecap="round"/> +</symbol> + <symbol id="passNumerique" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> <path d="M21.4765 21.7352C21.4749 21.7337 21.4734 21.7348 21.4719 21.7352L21.4675 21.7373C21.4611 21.7398 21.455 21.743 21.4493 21.7468C21.4474 21.748 21.4448 21.7487 21.4435 21.7468C21.4421 21.745 21.4451 21.7435 21.4463 21.742C21.4502 21.7369 21.4568 21.7386 21.4615 21.7354C21.4776 21.7241 21.4955 21.7159 21.5145 21.711C21.5463 21.7021 21.5791 21.6998 21.6113 21.6937C21.6323 21.6897 21.6533 21.686 21.671 21.6726C21.6787 21.6668 21.6866 21.6609 21.6949 21.6557C21.7077 21.648 21.7178 21.6366 21.7239 21.6229C21.7255 21.6193 21.7295 21.6145 21.7258 21.6116C21.7233 21.6097 21.7205 21.6156 21.7177 21.6178C21.7163 21.619 21.715 21.6203 21.7137 21.6217C21.6865 21.6469 21.6567 21.6681 21.6205 21.6785C21.5924 21.6865 21.563 21.6851 21.5336 21.689C21.5431 21.6812 21.5509 21.6723 21.5644 21.6707C21.5583 21.6656 21.5538 21.6694 21.5492 21.6701C21.5462 21.6707 21.5416 21.6738 21.5408 21.6687C21.5403 21.6658 21.5408 21.6596 21.5474 21.6599C21.5489 21.6599 21.5509 21.6604 21.5516 21.6585C21.554 21.651 21.5612 21.6491 21.567 21.6458C21.5845 21.6359 21.6022 21.6264 21.6197 21.6166C21.6215 21.6155 21.6243 21.6153 21.6248 21.6125C21.6227 21.6117 21.6195 21.6144 21.6186 21.6111C21.6177 21.6077 21.6204 21.6068 21.6232 21.606C21.6388 21.6003 21.654 21.5937 21.6687 21.5861C21.6643 21.5845 21.66 21.5874 21.6571 21.5839C21.659 21.5798 21.6648 21.5804 21.6657 21.5773C21.6671 21.5723 21.6667 21.5668 21.6738 21.5661C21.6747 21.5661 21.6746 21.5649 21.6738 21.5644C21.669 21.5606 21.6743 21.5598 21.6758 21.5585C21.6807 21.5543 21.6875 21.5545 21.6935 21.5515C21.6856 21.5486 21.6828 21.5436 21.6869 21.5382C21.6948 21.5272 21.6961 21.5141 21.6998 21.5018C21.7003 21.5002 21.7014 21.4982 21.6991 21.4969C21.6968 21.4956 21.6956 21.4969 21.6944 21.4984C21.6818 21.5095 21.6668 21.5174 21.6506 21.5216C21.6387 21.5251 21.6267 21.5279 21.6144 21.53C21.6078 21.5316 21.6008 21.5315 21.5941 21.5297C21.5875 21.5278 21.5815 21.5243 21.5766 21.5194C21.5722 21.5152 21.5673 21.5116 21.562 21.5086C21.5239 21.4868 21.482 21.4791 21.4392 21.474C21.4232 21.4725 21.4071 21.472 21.391 21.4724C21.3978 21.4688 21.4051 21.4661 21.4126 21.4644C21.4311 21.4599 21.4498 21.4564 21.4679 21.4505C21.4833 21.4451 21.4993 21.4412 21.5156 21.439L21.5382 21.4373C21.5307 21.436 21.5231 21.436 21.5157 21.4373C21.5093 21.4368 21.503 21.4371 21.4967 21.4382C21.4561 21.4461 21.4148 21.4514 21.378 21.4726C21.3752 21.4742 21.3714 21.4756 21.3692 21.473C21.367 21.4705 21.3704 21.4674 21.3722 21.465C21.3823 21.4509 21.3958 21.4397 21.4115 21.4323C21.4272 21.425 21.4444 21.4218 21.4617 21.423C21.5048 21.4245 21.5476 21.4301 21.5896 21.4398C21.5931 21.4402 21.5965 21.4415 21.5995 21.4434C21.6024 21.4454 21.6049 21.4481 21.6066 21.4512C21.6078 21.4533 21.6095 21.455 21.6115 21.4562C21.6136 21.4575 21.6159 21.4581 21.6183 21.4582C21.6271 21.4583 21.6357 21.46 21.6439 21.4631C21.6451 21.4504 21.646 21.4498 21.6579 21.4517H21.6594C21.6638 21.4525 21.6683 21.4528 21.6708 21.4485C21.6718 21.4465 21.672 21.4443 21.6716 21.4422C21.6711 21.4401 21.67 21.4382 21.6684 21.4368C21.6632 21.4308 21.6577 21.4251 21.6523 21.4192C21.6506 21.4172 21.6479 21.4153 21.6502 21.4111C21.6579 21.4184 21.6649 21.4255 21.6723 21.4322C21.6812 21.4414 21.6928 21.4476 21.7054 21.4498C21.7099 21.4504 21.7152 21.4524 21.7182 21.4485C21.7213 21.4446 21.7171 21.4401 21.715 21.4365C21.706 21.4227 21.6957 21.4099 21.6843 21.398C21.6817 21.3958 21.6798 21.3929 21.6787 21.3896C21.6769 21.3836 21.6744 21.3779 21.6711 21.3726C21.6661 21.3634 21.6627 21.3534 21.6612 21.3431C21.6613 21.3383 21.6608 21.3335 21.6599 21.3288C21.651 21.2986 21.6473 21.2672 21.64 21.2365C21.6348 21.2137 21.6329 21.1909 21.6447 21.1692C21.6536 21.153 21.6628 21.137 21.672 21.1209C21.6839 21.1004 21.6973 21.0811 21.7176 21.0679C21.7197 21.0663 21.7213 21.0641 21.722 21.0616C21.7367 21.0249 21.7598 20.9959 21.7969 20.9795C21.8144 20.9717 21.8321 20.9644 21.85 20.9563H21.8417C21.4479 20.9563 21.0542 20.9563 20.6605 20.9563C20.6521 20.9563 20.6507 20.9588 20.6507 20.9665C20.6507 21.2707 20.6507 21.5749 20.6507 21.8791C20.6507 21.8874 20.6529 21.8889 20.6607 21.8889C20.9376 21.8887 21.2145 21.8887 21.4913 21.8889C21.4981 21.8892 21.5049 21.8873 21.5105 21.8834C21.5194 21.8772 21.5288 21.8717 21.5385 21.867C21.5696 21.8518 21.6008 21.8368 21.6323 21.8224C21.6726 21.8039 21.7094 21.7811 21.7378 21.7458C21.7594 21.7186 21.7844 21.6942 21.8121 21.6732C21.8134 21.6725 21.8145 21.6714 21.8151 21.67C21.8157 21.6687 21.8158 21.6671 21.8154 21.6657C21.807 21.6682 21.8022 21.6773 21.7924 21.6772C21.795 21.674 21.7985 21.672 21.801 21.6692C21.8036 21.6664 21.8112 21.6656 21.8091 21.6603C21.8066 21.6537 21.7999 21.6578 21.795 21.6575C21.7942 21.6577 21.7934 21.6579 21.7927 21.6581C21.7778 21.6613 21.7669 21.6714 21.7558 21.6805C21.7536 21.6823 21.7515 21.6855 21.7483 21.6838C21.7426 21.6808 21.7381 21.6838 21.7335 21.6861C21.7245 21.6906 21.7159 21.6959 21.7079 21.702C21.6987 21.7091 21.6889 21.7154 21.6785 21.7208C21.6719 21.7242 21.6636 21.7224 21.6565 21.7266C21.6447 21.7333 21.6311 21.7363 21.6175 21.7352C21.5869 21.7333 21.5578 21.7414 21.5281 21.7471C21.5033 21.7519 21.487 21.7698 21.4679 21.7834C21.4521 21.7949 21.4374 21.8078 21.4238 21.822C21.422 21.8239 21.4203 21.8266 21.4162 21.8248C21.421 21.8187 21.4252 21.812 21.4285 21.8049C21.433 21.793 21.4419 21.7832 21.4533 21.7776C21.4559 21.7762 21.4579 21.7742 21.4594 21.7717C21.4608 21.7692 21.4616 21.7664 21.4616 21.7635C21.4499 21.764 21.4487 21.7812 21.4345 21.779C21.4382 21.7742 21.4411 21.7689 21.4431 21.7632C21.4447 21.7525 21.4528 21.749 21.4602 21.7444L21.469 21.7391L21.4728 21.7366L21.4761 21.735L21.4766 21.7338L21.4757 21.7342L21.4765 21.7352ZM22.3342 21.5443C22.3383 21.5453 22.3421 21.5473 22.3453 21.5502C22.3484 21.5531 22.3507 21.5567 22.352 21.5607C22.3535 21.5632 22.354 21.5662 22.3536 21.5691C22.3531 21.572 22.3516 21.5746 22.3494 21.5765C22.3453 21.5799 22.3412 21.5831 22.3373 21.5867C22.3347 21.5886 22.3329 21.5914 22.3323 21.5946C22.3317 21.5978 22.3323 21.601 22.334 21.6038C22.3381 21.6135 22.339 21.6244 22.3364 21.6347C22.3339 21.645 22.3281 21.6542 22.3199 21.6609C22.3128 21.6661 22.3047 21.6697 22.2961 21.6716C22.2875 21.6734 22.2786 21.6734 22.27 21.6715C22.2634 21.6703 22.2575 21.6679 22.2509 21.6671C22.2263 21.6638 22.2021 21.6574 22.1772 21.6559C22.1639 21.6543 22.1505 21.6577 22.1396 21.6655C22.0938 21.7029 22.0738 21.7517 22.0786 21.8104C22.0796 21.8231 22.0842 21.8336 22.0989 21.8359C22.1011 21.8364 22.1034 21.8372 22.1055 21.8382C22.1442 21.8518 22.1829 21.8652 22.2188 21.8853C22.2228 21.8876 22.2274 21.8889 22.2321 21.8889C22.5505 21.8889 22.869 21.8889 23.1874 21.8889C23.1945 21.8889 23.1967 21.8874 23.1967 21.8799C23.1967 21.5749 23.1967 21.2702 23.1967 20.9657C23.1967 20.9577 23.1943 20.9563 23.187 20.9563C22.8643 20.9563 22.5417 20.9563 22.2191 20.9563C22.2161 20.9557 22.2129 20.9562 22.2102 20.9576L22.2172 20.9616C22.2323 20.9702 22.2486 20.9767 22.2622 20.9881C22.2798 21.0027 22.2832 21.015 22.2769 21.0359C22.2755 21.0415 22.2722 21.0466 22.2675 21.0502C22.2629 21.0538 22.2572 21.0557 22.2513 21.0558C22.2442 21.0564 22.237 21.0562 22.2299 21.0554C22.2257 21.0549 22.2214 21.0546 22.2167 21.0542C22.2167 21.0552 22.2167 21.0556 22.2167 21.0556C22.2176 21.0562 22.2185 21.0567 22.2195 21.0571C22.2419 21.0657 22.2614 21.0804 22.276 21.0994C22.2773 21.1009 22.2789 21.1021 22.2806 21.103C22.2824 21.1039 22.2844 21.1044 22.2863 21.1045C22.2951 21.1062 22.2951 21.1061 22.2899 21.1134C22.2885 21.1154 22.2866 21.1179 22.2887 21.1197C22.2899 21.1207 22.2913 21.1211 22.2928 21.121C22.2943 21.1208 22.2957 21.1201 22.2966 21.119C22.2993 21.1158 22.3016 21.1121 22.3032 21.1083C22.3037 21.1072 22.3044 21.1063 22.3052 21.1055C22.3061 21.1048 22.3072 21.1043 22.3083 21.104C22.3094 21.1038 22.3106 21.1038 22.3117 21.1042C22.3128 21.1045 22.3138 21.1051 22.3146 21.1059C22.3168 21.1074 22.3187 21.1094 22.3201 21.1117C22.3215 21.1141 22.3223 21.1167 22.3225 21.1194C22.3227 21.1221 22.3223 21.1249 22.3213 21.1274C22.3203 21.1299 22.3188 21.1322 22.3168 21.134C22.3125 21.138 22.3079 21.1416 22.3035 21.1452C22.3021 21.146 22.3008 21.1471 22.2998 21.1484C22.2988 21.1498 22.2981 21.1513 22.2978 21.1529C22.2975 21.1545 22.2975 21.1562 22.2978 21.1578C22.2982 21.1594 22.2989 21.161 22.2999 21.1623C22.3021 21.1659 22.3039 21.1697 22.3054 21.1737C22.3117 21.1936 22.3182 21.214 22.3238 21.2343C22.331 21.2609 22.3364 21.2882 22.3304 21.3158C22.3276 21.3303 22.3305 21.3454 22.3386 21.3577C22.3453 21.3689 22.3525 21.3796 22.3598 21.3903C22.3716 21.4056 22.382 21.4219 22.3909 21.439C22.3984 21.4559 22.3924 21.4677 22.3747 21.473C22.3727 21.4736 22.3707 21.4741 22.3686 21.4746C22.345 21.4793 22.3467 21.4913 22.3549 21.5065L22.3565 21.5092C22.3624 21.5194 22.3613 21.5263 22.3519 21.5333C22.3466 21.5373 22.341 21.5401 22.3342 21.5443ZM22.606 22.4453C22.6433 22.4453 22.6807 22.4453 22.718 22.4453C22.7239 22.4453 22.7258 22.4433 22.7268 22.4381C22.7312 22.4149 22.7317 22.3911 22.7282 22.3678C22.7205 22.319 22.6962 22.2816 22.6519 22.2583C22.6178 22.2405 22.5811 22.238 22.5437 22.2436C22.4928 22.2513 22.4521 22.2757 22.425 22.32C22.3988 22.363 22.3897 22.4143 22.3996 22.4637C22.4095 22.5207 22.4393 22.5645 22.4914 22.5914C22.5322 22.6124 22.5759 22.6166 22.6205 22.6104C22.6641 22.605 22.7041 22.5835 22.7325 22.55C22.7362 22.5457 22.7373 22.543 22.7319 22.5389C22.7168 22.5273 22.7021 22.515 22.6873 22.503C22.6765 22.4942 22.6765 22.4942 22.6668 22.5041C22.6429 22.5283 22.6132 22.5357 22.5806 22.5345C22.531 22.5325 22.4959 22.5013 22.4878 22.4525C22.4867 22.4464 22.4878 22.445 22.494 22.4451C22.5315 22.4455 22.5689 22.4455 22.6063 22.4455L22.606 22.4453ZM22.753 23.0227C22.7898 23.0227 22.8267 23.0227 22.8635 23.0227C22.8705 23.0227 22.8723 23.0203 22.8734 23.0141C22.8776 22.9911 22.8779 22.9676 22.8744 22.9445C22.8662 22.8952 22.8413 22.8575 22.7959 22.8349C22.765 22.8204 22.7304 22.8155 22.6966 22.8208C22.6406 22.8277 22.5967 22.8539 22.5685 22.9036C22.5468 22.9423 22.5385 22.987 22.5448 23.0309C22.5514 23.0839 22.5748 23.1285 22.6202 23.1586C22.672 23.1929 22.7292 23.198 22.7885 23.1839C22.8247 23.1756 22.857 23.1554 22.8804 23.1265C22.8823 23.1243 22.8853 23.1223 22.8811 23.1189C22.8625 23.104 22.844 23.089 22.8256 23.0739C22.8231 23.0718 22.8218 23.0722 22.82 23.0746C22.8001 23.0997 22.7736 23.1107 22.7427 23.1123C22.6847 23.1152 22.6432 23.0848 22.6345 23.03C22.6336 23.0238 22.6345 23.0226 22.6407 23.0226C22.678 23.0229 22.7156 23.0227 22.7533 23.0227H22.753ZM21.1682 23.0227C21.2048 23.0227 21.2412 23.0227 21.2779 23.0227C21.2857 23.0227 21.2888 23.0208 21.2899 23.0128C21.2935 22.9914 21.2938 22.9695 21.2911 22.9479C21.2836 22.8973 21.2589 22.8584 21.2123 22.8352C21.1812 22.8205 21.1463 22.8155 21.1123 22.8208C21.0538 22.8283 21.009 22.8566 20.9814 22.9096C20.9619 22.9479 20.9549 22.9914 20.9615 23.0338C20.9685 23.0858 20.9918 23.1294 21.0363 23.1584C21.0938 23.1958 21.1562 23.1995 21.2205 23.1791C21.2505 23.1695 21.2769 23.1512 21.2966 23.1267C21.2986 23.1243 21.3017 23.1222 21.297 23.1186C21.2785 23.104 21.2604 23.089 21.2421 23.074C21.2399 23.0722 21.2385 23.0717 21.2364 23.0744C21.2169 23.0996 21.19 23.1107 21.1592 23.1123C21.1049 23.1152 21.0608 23.0886 21.051 23.0311C21.0498 23.0249 21.0503 23.0224 21.0576 23.0226C21.0943 23.023 21.1314 23.0227 21.1685 23.0227H21.1682ZM20.6508 22.3602C20.6508 22.4372 20.6508 22.5143 20.6508 22.5914C20.6508 22.598 20.6526 22.5998 20.6591 22.5997C20.6856 22.5993 20.7127 22.5992 20.7394 22.5997C20.7464 22.5997 20.7482 22.598 20.7482 22.591C20.7482 22.5298 20.7482 22.4687 20.7482 22.4075C20.7482 22.4012 20.7498 22.3995 20.756 22.3996C20.8025 22.3996 20.8489 22.3996 20.8953 22.3996C20.901 22.3996 20.9029 22.3985 20.9028 22.3923C20.9024 22.3679 20.9024 22.3436 20.9028 22.3194C20.9028 22.3132 20.9014 22.3115 20.8951 22.3115C20.849 22.3115 20.8028 22.3115 20.7568 22.3115C20.7501 22.3115 20.7482 22.3102 20.7483 22.3034C20.7487 22.2748 20.7488 22.2462 20.7483 22.2176C20.7483 22.2105 20.7502 22.2089 20.7571 22.2089C20.8122 22.2089 20.8673 22.2089 20.9224 22.2089C20.9286 22.2089 20.9305 22.2073 20.9303 22.201C20.9303 22.1769 20.9299 22.1528 20.9303 22.1287C20.9303 22.1221 20.9288 22.1204 20.9221 22.1204C20.8347 22.1207 20.7473 22.1207 20.6599 22.1204C20.6528 22.1204 20.6512 22.1222 20.6512 22.1291C20.6511 22.2069 20.651 22.2834 20.651 22.3602H20.6508ZM21.4533 22.568C21.4533 22.5777 21.4533 22.5857 21.4533 22.5935C21.4533 22.5986 21.4549 22.5997 21.46 22.5996C21.4846 22.5996 21.5092 22.5993 21.5339 22.5996C21.5398 22.5996 21.5414 22.5982 21.5413 22.5922C21.5413 22.518 21.5423 22.4438 21.5408 22.3697C21.5397 22.3161 21.5143 22.2763 21.4643 22.2545C21.436 22.2428 21.4052 22.2385 21.3749 22.2421C21.3515 22.2437 21.3288 22.2501 21.3081 22.2609C21.2873 22.2717 21.2691 22.2867 21.2544 22.3049C21.2512 22.3089 21.2518 22.3107 21.2555 22.3135C21.274 22.3274 21.2922 22.3414 21.3104 22.3556C21.3144 22.3587 21.316 22.3581 21.3188 22.3541C21.3259 22.3435 21.3353 22.3347 21.3464 22.3284C21.3575 22.3221 21.3699 22.3184 21.3826 22.3177C21.4254 22.3141 21.4548 22.3399 21.4538 22.3802C21.4538 22.3843 21.453 22.3861 21.4484 22.3868C21.4228 22.3908 21.3973 22.3954 21.3717 22.3995C21.347 22.4025 21.3229 22.4094 21.3005 22.4201C21.2416 22.4508 21.2241 22.5227 21.2643 22.5738C21.2919 22.6088 21.3306 22.6163 21.3723 22.6114C21.4039 22.6077 21.4329 22.5922 21.4536 22.568H21.4533ZM21.7185 22.2803C21.7185 22.272 21.7185 22.266 21.7185 22.26C21.7185 22.2557 21.717 22.2547 21.713 22.2547C21.687 22.2547 21.6611 22.2547 21.6351 22.2547C21.6304 22.2547 21.6295 22.2562 21.6295 22.2605C21.6295 22.3716 21.6295 22.4826 21.6295 22.5936C21.6295 22.5988 21.6313 22.5996 21.6362 22.5996C21.6608 22.5996 21.6854 22.5992 21.7101 22.5996C21.7167 22.5996 21.7189 22.5981 21.7188 22.591C21.7188 22.521 21.7188 22.4511 21.7188 22.3811C21.7183 22.3777 21.7188 22.3742 21.7203 22.3711C21.7352 22.3466 21.7548 22.3285 21.7843 22.3236C21.8193 22.3179 21.8494 22.3347 21.8602 22.3665C21.8635 22.3769 21.8652 22.3877 21.865 22.3986C21.865 22.4629 21.865 22.5273 21.865 22.5918C21.865 22.5979 21.8666 22.5997 21.8729 22.5996C21.897 22.5992 21.9211 22.5992 21.9452 22.5996C21.9515 22.5996 21.953 22.598 21.953 22.5918C21.953 22.5401 21.953 22.4884 21.953 22.4368C21.9539 22.4135 21.9533 22.3901 21.9514 22.3669C21.9475 22.3338 21.9377 22.3036 21.9139 22.2796C21.8761 22.2413 21.8298 22.2348 21.7796 22.2464C21.7567 22.2522 21.7358 22.2639 21.7188 22.2803H21.7185ZM22.1639 23.0059C22.1637 23.0141 22.1642 23.0223 22.1654 23.0305C22.1731 23.0871 22.1991 23.1325 22.2482 23.163C22.2879 23.1876 22.3314 23.1945 22.3771 23.1895C22.4 23.1875 22.4222 23.1809 22.4425 23.1702C22.4628 23.1594 22.4808 23.1448 22.4954 23.1271C22.4991 23.1227 22.4985 23.1209 22.4942 23.1176C22.4742 23.1027 22.4545 23.0876 22.4349 23.0722C22.4305 23.0687 22.4286 23.0695 22.4252 23.0737C22.41 23.0931 22.3878 23.1058 22.3633 23.109C22.3389 23.1121 22.3141 23.1056 22.2945 23.0906C22.2574 23.0627 22.2478 23.0237 22.2565 22.9801C22.2644 22.9408 22.2885 22.9139 22.3279 22.9042C22.3673 22.8946 22.4008 22.9051 22.426 22.9374C22.4286 22.9408 22.4301 22.9416 22.4338 22.9386C22.4537 22.9228 22.4744 22.9071 22.495 22.8918C22.4995 22.8885 22.4983 22.8865 22.4956 22.8833C22.4878 22.8736 22.4789 22.8649 22.4691 22.8573C22.4108 22.8144 22.3467 22.8087 22.2801 22.8318C22.2085 22.8565 22.1642 22.9243 22.1642 23.0059H22.1639ZM22.2023 22.2411C22.1951 22.2417 22.184 22.2421 22.1731 22.2437C22.1247 22.2511 22.0841 22.2724 22.0547 22.3121C22.0197 22.3593 22.0104 22.4126 22.0221 22.4695C22.0268 22.4953 22.0373 22.5196 22.0529 22.5407C22.0684 22.5618 22.0887 22.579 22.1119 22.591C22.1462 22.6088 22.185 22.6162 22.2234 22.6122C22.2476 22.6109 22.2712 22.6047 22.2928 22.5939C22.3144 22.583 22.3335 22.5679 22.349 22.5493C22.3525 22.5451 22.3526 22.543 22.348 22.5396C22.3281 22.5248 22.3082 22.5097 22.2887 22.4943C22.2842 22.4907 22.2821 22.4915 22.2789 22.4956C22.2636 22.5152 22.2411 22.5279 22.2164 22.5309C22.1918 22.5339 22.1669 22.5271 22.1473 22.5118C22.1113 22.4837 22.1019 22.4451 22.1106 22.4022C22.1185 22.3631 22.1424 22.3359 22.1819 22.3263C22.2215 22.3167 22.2549 22.3271 22.28 22.3595C22.2835 22.3639 22.2853 22.3627 22.2887 22.3601C22.3086 22.3449 22.3281 22.3296 22.3481 22.3149C22.3532 22.3111 22.3526 22.3089 22.3489 22.3045C22.3116 22.2606 22.263 22.2421 22.2026 22.2411H22.2023ZM21.7755 23.0768C21.774 23.073 21.7729 23.0706 21.7721 23.0682C21.7444 22.9922 21.7167 22.9163 21.6891 22.8403C21.6886 22.8378 21.6872 22.8356 21.685 22.8341C21.6829 22.8327 21.6803 22.8321 21.6778 22.8325C21.6522 22.8329 21.6264 22.8329 21.6008 22.8325C21.5937 22.8325 21.5932 22.8342 21.5954 22.8404C21.6357 22.9506 21.6758 23.0608 21.7155 23.1711C21.7174 23.1762 21.7199 23.1771 21.7247 23.177C21.7578 23.177 21.7914 23.177 21.8248 23.177C21.827 23.1774 21.8294 23.1769 21.8313 23.1756C21.8332 23.1743 21.8345 23.1723 21.835 23.1701C21.8473 23.1352 21.8601 23.1005 21.8727 23.0657C21.9 22.9906 21.9273 22.9154 21.9546 22.84C21.9558 22.8366 21.9591 22.8324 21.9512 22.8325C21.9236 22.8325 21.8961 22.8325 21.8685 22.8325C21.8671 22.8323 21.8657 22.8327 21.8645 22.8335C21.8633 22.8344 21.8625 22.8356 21.8623 22.837C21.8592 22.846 21.8557 22.8549 21.8526 22.8639C21.8271 22.9345 21.8017 23.0049 21.7755 23.0768ZM23.0716 22.8191C23.0543 22.8187 23.0372 22.8215 23.0209 22.8273C22.9798 22.8425 22.9531 22.8705 22.9488 22.9153C22.9445 22.9591 22.962 22.9931 22.9996 23.0163C23.0155 23.0256 23.0323 23.0336 23.0496 23.0401C23.0646 23.0454 23.0789 23.0522 23.0925 23.0605C23.1164 23.0766 23.1065 23.1048 23.0876 23.1128C23.0735 23.1185 23.0577 23.1189 23.0433 23.114C23.0229 23.107 23.0051 23.094 22.992 23.0769C22.9881 23.0721 22.9862 23.0723 22.9821 23.0765C22.9664 23.0923 22.9505 23.1078 22.9343 23.1229C22.9301 23.1269 22.9306 23.1296 22.9343 23.1329C22.9811 23.1825 23.0385 23.2003 23.1046 23.186C23.1673 23.1724 23.2027 23.1154 23.1897 23.0527C23.1838 23.0246 23.1669 23.0044 23.1433 22.9891C23.1227 22.9771 23.1011 22.967 23.0787 22.959C23.0665 22.9547 23.0549 22.9486 23.0445 22.9409C23.0408 22.9383 23.0378 22.9347 23.036 22.9305C23.0342 22.9264 23.0335 22.9218 23.0341 22.9172C23.0347 22.9127 23.0365 22.9085 23.0394 22.9049C23.0422 22.9013 23.046 22.8986 23.0503 22.8971C23.0602 22.8925 23.0713 22.8912 23.0821 22.8931C23.1052 22.897 23.1215 22.9113 23.1359 22.9285C23.1387 22.9318 23.1402 22.9326 23.1437 22.9292C23.1596 22.9137 23.1756 22.8983 23.192 22.8832C23.1966 22.8789 23.1965 22.8765 23.1924 22.8718C23.1771 22.855 23.1584 22.8417 23.1376 22.8326C23.1168 22.8235 23.0943 22.8189 23.0716 22.8191ZM20.7714 22.8191C20.7512 22.8189 20.7311 22.8228 20.7125 22.8305C20.632 22.8648 20.6329 22.9616 20.6809 23.0029C20.7005 23.0183 20.7224 23.0304 20.7458 23.0388C20.7616 23.0442 20.7768 23.0512 20.7911 23.0597C20.8011 23.0663 20.808 23.0751 20.8062 23.0881C20.8054 23.0944 20.8027 23.1002 20.7986 23.1049C20.7944 23.1097 20.789 23.113 20.7829 23.1146C20.772 23.118 20.7603 23.1184 20.7492 23.1157C20.725 23.1102 20.7072 23.0952 20.6918 23.0768C20.6876 23.0719 20.6856 23.0726 20.6817 23.0768C20.6658 23.0927 20.6496 23.1084 20.6333 23.1239C20.6302 23.127 20.6299 23.1288 20.6333 23.1321C20.6805 23.1828 20.7386 23.2017 20.8057 23.186C20.8811 23.1684 20.9035 23.1004 20.8882 23.0463C20.8794 23.0153 20.8572 22.9961 20.8299 22.9815C20.8112 22.9716 20.7912 22.9646 20.7718 22.9563C20.7613 22.9525 20.7516 22.9469 20.7431 22.9396C20.7399 22.937 20.7374 22.9336 20.7359 22.9298C20.7344 22.9259 20.7338 22.9217 20.7344 22.9176C20.7349 22.9135 20.7365 22.9096 20.739 22.9063C20.7414 22.903 20.7447 22.9003 20.7485 22.8986C20.7589 22.8931 20.7709 22.8913 20.7824 22.8936C20.8046 22.8972 20.8208 22.9105 20.8346 22.9272C20.8388 22.9322 20.8412 22.9327 20.8459 22.9278C20.8609 22.9129 20.8762 22.8982 20.8918 22.884C20.8967 22.8795 20.8971 22.8769 20.8926 22.8721C20.8595 22.8366 20.8188 22.8203 20.7714 22.819V22.8191ZM21.0829 22.288C21.0829 22.2778 21.0829 22.2696 21.0829 22.2615C21.0829 22.2567 21.0823 22.2549 21.0766 22.2549C21.0514 22.2552 21.0263 22.2549 21.0011 22.2549C20.996 22.2549 20.9945 22.2561 20.9945 22.2615C20.9945 22.372 20.9945 22.4825 20.9945 22.5929C20.9945 22.5985 20.9961 22.6 21.0017 22.6C21.026 22.6 21.0504 22.5996 21.0746 22.6C21.0812 22.6 21.0828 22.5982 21.0828 22.5917C21.0828 22.5284 21.0833 22.4651 21.0821 22.4018C21.0818 22.3943 21.0833 22.3869 21.0864 22.3801C21.0896 22.3733 21.0943 22.3674 21.1002 22.3629C21.1078 22.3562 21.1164 22.3509 21.1257 22.3471C21.1487 22.3383 21.1737 22.337 21.1975 22.3432C21.2024 22.3443 21.2033 22.3432 21.2032 22.3386C21.2032 22.3121 21.2032 22.2856 21.2032 22.259C21.2032 22.2539 21.2013 22.2524 21.1966 22.2512C21.1732 22.2458 21.1488 22.2479 21.1267 22.2573C21.1103 22.2646 21.0956 22.275 21.0832 22.2879L21.0829 22.288ZM21.4488 22.8657C21.4488 22.8558 21.4484 22.8479 21.4488 22.84C21.4494 22.8337 21.4469 22.8326 21.4412 22.8327C21.4169 22.8327 21.3925 22.833 21.3683 22.8327C21.3625 22.8327 21.3608 22.834 21.3608 22.8401C21.3608 22.9501 21.3608 23.06 21.3608 23.17C21.3608 23.1766 21.3628 23.1772 21.3684 23.1772C21.392 23.1768 21.4156 23.1767 21.4391 23.1772C21.4467 23.1772 21.4492 23.1759 21.4492 23.1675C21.4487 23.105 21.4496 23.0425 21.4484 22.9799C21.448 22.9722 21.4496 22.9644 21.4528 22.9574C21.4561 22.9505 21.4611 22.9444 21.4673 22.9398C21.4714 22.9364 21.4757 22.9333 21.4802 22.9306C21.5058 22.9153 21.5332 22.9147 21.5617 22.9203C21.5674 22.9215 21.5695 22.9211 21.5694 22.9144C21.569 22.8887 21.569 22.863 21.5694 22.8374C21.5694 22.8314 21.567 22.8297 21.5619 22.8286C21.538 22.8233 21.513 22.8259 21.4906 22.836C21.4751 22.8433 21.4611 22.8533 21.4491 22.8656L21.4488 22.8657ZM22.0034 23.0052C22.0034 23.0603 22.0034 23.1153 22.0034 23.1705C22.0034 23.1753 22.0042 23.1771 22.01 23.1771C22.0354 23.1768 22.0609 23.1768 22.0863 23.1771C22.0918 23.1771 22.0929 23.1752 22.0929 23.1705C22.0929 23.0604 22.0929 22.9502 22.0929 22.84C22.0929 22.8334 22.0908 22.8327 22.0852 22.8328C22.0608 22.8328 22.0365 22.8331 22.0123 22.8328C22.0057 22.8328 22.0039 22.8342 22.0039 22.841C22.0038 22.8955 22.0037 22.9503 22.0037 23.0051L22.0034 23.0052ZM21.9907 22.7213C21.9907 22.7362 21.9966 22.7506 22.0071 22.7612C22.0177 22.7719 22.032 22.7779 22.047 22.778C22.0547 22.7785 22.0624 22.7775 22.0698 22.7749C22.0771 22.7723 22.0838 22.7683 22.0894 22.763C22.0951 22.7578 22.0996 22.7514 22.1028 22.7443C22.1059 22.7372 22.1075 22.7296 22.1075 22.7218C22.1075 22.7141 22.106 22.7064 22.1029 22.6993C22.0999 22.6922 22.0954 22.6858 22.0897 22.6805C22.0841 22.6752 22.0774 22.6711 22.0701 22.6685C22.0628 22.6659 22.0551 22.6648 22.0474 22.6653C22.0325 22.6653 22.0183 22.6712 22.0077 22.6817C21.9971 22.6921 21.9911 22.7063 21.991 22.7212L21.9907 22.7213ZM22.2039 21.3033C22.2075 21.3049 22.2101 21.3033 22.2128 21.3023C22.2339 21.2967 22.2551 21.2931 22.2769 21.2988C22.284 21.3007 22.2847 21.3024 22.28 21.3082C22.2762 21.3126 22.2715 21.3162 22.2663 21.3188C22.2575 21.3239 22.2493 21.3298 22.2415 21.3364C22.2365 21.3403 22.2344 21.347 22.226 21.3454C22.224 21.345 22.2208 21.3454 22.2202 21.3482C22.2196 21.351 22.2228 21.3511 22.224 21.3527C22.2313 21.3612 22.2445 21.3552 22.2521 21.3642C22.2533 21.3657 22.2567 21.3658 22.2566 21.3694C22.2568 21.371 22.2563 21.3726 22.2552 21.3738C22.2541 21.3751 22.2526 21.3759 22.251 21.376C22.2469 21.3767 22.2427 21.3771 22.2378 21.3777C22.2463 21.3805 22.2554 21.3814 22.2643 21.3802C22.2806 21.3794 22.2822 21.3774 22.2818 21.3612C22.2814 21.3594 22.2814 21.3575 22.2818 21.3557C22.2839 21.3491 22.2795 21.3417 22.2863 21.3358C22.2894 21.3335 22.2929 21.3317 22.2967 21.3305C22.3003 21.3292 22.3033 21.3265 22.2995 21.323C22.2956 21.3195 22.2973 21.3172 22.3006 21.3146C22.3065 21.3104 22.3108 21.3043 22.3127 21.2974C22.3137 21.2929 22.3135 21.2882 22.3089 21.2865C22.2989 21.2818 22.288 21.2791 22.2769 21.2788C22.2562 21.2803 22.236 21.2856 22.2172 21.2945C22.2124 21.2966 22.208 21.2996 22.2042 21.3033L22.2039 21.3033Z" fill="#FEFEFE"/> <path d="M21.4687 21.7393L21.4599 21.7447C21.4524 21.7492 21.4443 21.7527 21.4427 21.7634C21.4408 21.7691 21.4379 21.7744 21.4342 21.7792C21.4484 21.7815 21.4496 21.7642 21.4612 21.7638C21.4613 21.7666 21.4605 21.7694 21.4591 21.7719C21.4576 21.7744 21.4555 21.7764 21.453 21.7778C21.4416 21.7834 21.4327 21.7932 21.4282 21.8051C21.4249 21.8122 21.4207 21.8189 21.4158 21.825C21.4199 21.8268 21.4217 21.8241 21.4235 21.8222C21.437 21.8081 21.4518 21.7951 21.4676 21.7836C21.4866 21.77 21.503 21.7521 21.5278 21.7473C21.5574 21.7416 21.5866 21.7335 21.6172 21.7354C21.6307 21.7365 21.6443 21.7335 21.6562 21.7268C21.6633 21.7227 21.6713 21.7244 21.6782 21.7211C21.6885 21.7156 21.6984 21.7093 21.7076 21.7022C21.7156 21.6962 21.7242 21.6908 21.7332 21.6863C21.7378 21.6842 21.7422 21.681 21.748 21.6841C21.7511 21.6857 21.7533 21.6825 21.7554 21.6807C21.7666 21.6713 21.7774 21.6615 21.7924 21.6584C21.7931 21.6581 21.7939 21.6579 21.7947 21.6578C21.7996 21.6578 21.8063 21.6541 21.8088 21.6605C21.8109 21.6658 21.8035 21.6664 21.8007 21.6694C21.7979 21.6724 21.7947 21.6743 21.7921 21.6774C21.8017 21.6774 21.8067 21.6684 21.8151 21.6659C21.8155 21.6674 21.8154 21.6689 21.8148 21.6703C21.8142 21.6716 21.8131 21.6728 21.8118 21.6735C21.7841 21.6944 21.7591 21.7188 21.7375 21.746C21.709 21.7813 21.6723 21.8041 21.6319 21.8226C21.6005 21.837 21.5693 21.852 21.5382 21.8672C21.5284 21.8719 21.5191 21.8774 21.5102 21.8837C21.5045 21.8875 21.4978 21.8895 21.491 21.8892C21.2142 21.8892 20.9373 21.8892 20.6604 21.8892C20.6526 21.8892 20.6504 21.8876 20.6504 21.8793C20.6504 21.5751 20.6504 21.2709 20.6504 20.9667C20.6504 20.959 20.6518 20.9565 20.6602 20.9565C21.0539 20.9565 21.4476 20.9565 21.8413 20.9565H21.8496C21.8318 20.9646 21.8141 20.9719 21.7966 20.9797C21.7595 20.9961 21.7364 21.0251 21.7216 21.0618C21.7209 21.0643 21.7194 21.0665 21.7173 21.0681C21.697 21.0814 21.6836 21.1007 21.6717 21.1211C21.6625 21.1372 21.6533 21.1532 21.6444 21.1695C21.6326 21.1911 21.6345 21.2139 21.6397 21.2367C21.6467 21.2674 21.6504 21.2988 21.6596 21.329C21.6605 21.3337 21.6609 21.3385 21.6608 21.3433C21.6624 21.3536 21.6658 21.3636 21.6708 21.3728C21.674 21.3781 21.6766 21.3839 21.6784 21.3898C21.6794 21.3931 21.6814 21.396 21.684 21.3982C21.6954 21.4101 21.7056 21.4229 21.7147 21.4367C21.7168 21.4403 21.7213 21.4444 21.7179 21.4487C21.7145 21.4531 21.7096 21.4507 21.7051 21.4501C21.6925 21.4478 21.6809 21.4416 21.672 21.4324C21.6646 21.4258 21.6575 21.4186 21.6499 21.4114C21.6476 21.4155 21.6503 21.4175 21.652 21.4194C21.6573 21.4253 21.6629 21.431 21.6681 21.437C21.6697 21.4384 21.6708 21.4403 21.6713 21.4424C21.6717 21.4445 21.6714 21.4467 21.6705 21.4487C21.668 21.4531 21.6635 21.4527 21.6591 21.4519H21.6576C21.6457 21.4499 21.6447 21.4507 21.6435 21.4633C21.6354 21.4602 21.6268 21.4585 21.618 21.4584C21.6156 21.4584 21.6132 21.4577 21.6111 21.4565C21.6091 21.4552 21.6073 21.4534 21.6062 21.4513C21.6044 21.4482 21.602 21.4456 21.599 21.4436C21.596 21.4416 21.5927 21.4404 21.5891 21.44C21.5471 21.4303 21.5042 21.4248 21.461 21.4234C21.4438 21.4221 21.4265 21.4254 21.4108 21.4327C21.3952 21.44 21.3817 21.4513 21.3716 21.4653C21.3697 21.4678 21.3661 21.4704 21.3686 21.4734C21.371 21.4764 21.3745 21.4746 21.3774 21.4729C21.4141 21.4517 21.4555 21.4464 21.496 21.4385C21.5023 21.4375 21.5087 21.4372 21.515 21.4376C21.5151 21.4381 21.5151 21.4386 21.515 21.4391C21.4987 21.4413 21.4828 21.4451 21.4673 21.4506C21.4492 21.4565 21.4305 21.46 21.412 21.4645C21.4045 21.4663 21.3972 21.469 21.3904 21.4726C21.4066 21.4722 21.4227 21.4728 21.4387 21.4742C21.4815 21.4793 21.5234 21.4871 21.5615 21.5089C21.5668 21.5118 21.5717 21.5154 21.5761 21.5196C21.581 21.5245 21.587 21.528 21.5936 21.5299C21.6002 21.5318 21.6072 21.5319 21.6139 21.5302C21.6261 21.5282 21.6382 21.5254 21.6501 21.5219C21.6663 21.5177 21.6813 21.5097 21.6939 21.4987C21.6951 21.4974 21.6964 21.4958 21.6986 21.4971C21.7007 21.4985 21.6998 21.5004 21.6993 21.502C21.6956 21.5144 21.6943 21.5274 21.6864 21.5384C21.6826 21.5437 21.6854 21.5488 21.693 21.5517C21.687 21.5547 21.6801 21.5545 21.6752 21.5587C21.6738 21.56 21.6686 21.5608 21.6732 21.5646C21.6739 21.5651 21.674 21.5663 21.6732 21.5663C21.6661 21.567 21.6666 21.5725 21.6652 21.5775C21.6643 21.5805 21.6585 21.5799 21.6566 21.5841C21.6595 21.5876 21.6638 21.5848 21.6681 21.5863C21.6534 21.5939 21.6383 21.6005 21.6227 21.6062C21.6199 21.607 21.6172 21.608 21.6181 21.6113C21.6189 21.6146 21.6221 21.6119 21.6243 21.6127C21.6238 21.6155 21.621 21.6157 21.6192 21.6168C21.6016 21.6266 21.5839 21.6361 21.5665 21.646C21.5607 21.6493 21.5533 21.6512 21.5511 21.6587C21.5504 21.6606 21.5484 21.6601 21.5469 21.6601C21.5403 21.6601 21.5403 21.666 21.5403 21.669C21.5411 21.674 21.5456 21.6709 21.5487 21.6703C21.5533 21.6696 21.5578 21.6658 21.5639 21.6709C21.5506 21.6725 21.5426 21.6814 21.5331 21.6892C21.5625 21.6856 21.5918 21.6867 21.6199 21.6787C21.6561 21.6684 21.6862 21.6471 21.7132 21.6219C21.7145 21.6205 21.7158 21.6192 21.7172 21.618C21.72 21.6158 21.7228 21.61 21.7253 21.6118C21.729 21.6147 21.7253 21.6195 21.7234 21.6232C21.7173 21.6368 21.7072 21.6482 21.6944 21.6559C21.6861 21.6611 21.6782 21.667 21.6705 21.6728C21.6524 21.6861 21.6315 21.6899 21.6108 21.6939C21.5786 21.7 21.5458 21.7024 21.514 21.7112C21.495 21.7161 21.4771 21.7244 21.461 21.7356C21.4563 21.739 21.4496 21.7374 21.4457 21.7422C21.4445 21.7437 21.4414 21.7446 21.4429 21.747C21.4445 21.7495 21.4469 21.7484 21.4488 21.747C21.4545 21.7432 21.4605 21.74 21.4669 21.7375L21.4687 21.7393ZM21.3993 21.6254C21.4021 21.6266 21.4051 21.6272 21.4081 21.6272C21.4111 21.6272 21.4141 21.6266 21.4169 21.6254C21.4292 21.6212 21.4412 21.6155 21.4547 21.6167C21.4561 21.6166 21.4574 21.6164 21.4586 21.6159C21.4735 21.6125 21.4886 21.6092 21.5034 21.6058C21.5282 21.5999 21.5522 21.5913 21.575 21.5801C21.5306 21.5464 21.4783 21.5346 21.4268 21.5196C21.4282 21.5181 21.4311 21.5191 21.4311 21.5169C21.4311 21.5147 21.4287 21.5143 21.4272 21.5139C21.4225 21.5127 21.4178 21.512 21.4133 21.5109C21.4117 21.5109 21.4087 21.5109 21.4091 21.5095C21.4116 21.5018 21.4045 21.5036 21.4018 21.5029C21.3919 21.5001 21.3816 21.4982 21.3706 21.4958C21.3759 21.493 21.3803 21.4905 21.382 21.4853C21.383 21.4827 21.3849 21.4797 21.382 21.4774C21.3792 21.4751 21.3771 21.4774 21.3748 21.4786C21.3617 21.4863 21.351 21.4975 21.3438 21.511C21.3405 21.5168 21.3335 21.5242 21.3368 21.5291C21.34 21.5339 21.35 21.5331 21.3576 21.533C21.3625 21.5322 21.3675 21.5323 21.3724 21.5335C21.3697 21.5361 21.3663 21.5377 21.3626 21.5382C21.3576 21.5388 21.3527 21.5401 21.3481 21.5419C21.3438 21.5445 21.3411 21.5473 21.3469 21.5514C21.3436 21.5535 21.3395 21.5539 21.3377 21.558C21.3393 21.5592 21.3412 21.56 21.3431 21.5604C21.3451 21.5608 21.3471 21.5607 21.349 21.5601C21.3515 21.5592 21.3541 21.5591 21.3566 21.5601C21.359 21.561 21.3611 21.5628 21.3623 21.5651C21.3464 21.5717 21.3429 21.5904 21.3291 21.5991C21.3288 21.5993 21.3286 21.5997 21.3284 21.6C21.3283 21.6004 21.3282 21.6008 21.3282 21.6012C21.3289 21.6057 21.3257 21.6078 21.3228 21.61C21.3127 21.6181 21.3029 21.6271 21.2923 21.6342C21.2817 21.6414 21.2801 21.6571 21.2685 21.6641C21.2681 21.6643 21.2677 21.6645 21.2674 21.6649C21.2671 21.6652 21.2668 21.6657 21.2667 21.6661C21.2665 21.6666 21.2665 21.667 21.2665 21.6675C21.2666 21.668 21.2667 21.6684 21.2669 21.6688C21.2685 21.671 21.2703 21.6694 21.2719 21.6688C21.2756 21.6674 21.2792 21.6657 21.2827 21.6638C21.3002 21.6528 21.3184 21.6429 21.3372 21.6343C21.3585 21.6253 21.3788 21.6157 21.4026 21.6206C21.403 21.6208 21.4034 21.621 21.4037 21.6214C21.4035 21.624 21.3999 21.6225 21.3993 21.6254ZM21.4234 21.3958C21.415 21.3922 21.4058 21.3905 21.3966 21.3909C21.3874 21.3913 21.3784 21.3939 21.3704 21.3983C21.3375 21.4172 21.3078 21.4412 21.2825 21.4694C21.2662 21.4879 21.2473 21.5041 21.2265 21.5173C21.2224 21.5196 21.2191 21.5232 21.217 21.5274C21.2031 21.5548 21.1867 21.5809 21.1682 21.6054C21.1669 21.6072 21.164 21.6087 21.165 21.612C21.168 21.6124 21.1689 21.6098 21.1703 21.6082C21.1881 21.5883 21.206 21.5691 21.2253 21.5509C21.2469 21.5303 21.2705 21.5117 21.2957 21.4955C21.2984 21.4937 21.3005 21.493 21.3029 21.4955C21.3053 21.498 21.3013 21.4989 21.3008 21.5006C21.3002 21.5024 21.2992 21.5028 21.2987 21.504C21.2982 21.5052 21.2952 21.5086 21.2972 21.5103C21.2993 21.5119 21.3025 21.5095 21.3044 21.5074C21.3053 21.5064 21.3057 21.505 21.3067 21.5041C21.3103 21.5008 21.3096 21.4942 21.3129 21.492C21.3253 21.4838 21.3317 21.4715 21.3381 21.4589C21.3432 21.4484 21.3502 21.4391 21.3589 21.4314C21.3717 21.4208 21.386 21.4121 21.3983 21.4001C21.3995 21.4027 21.3993 21.4072 21.4027 21.4053C21.4091 21.4019 21.4172 21.402 21.4234 21.3958ZM21.4067 21.7195C21.395 21.714 21.3843 21.7176 21.3743 21.7152C21.3699 21.7143 21.3652 21.7149 21.3611 21.7169C21.3536 21.7202 21.3457 21.7227 21.3375 21.724C21.3144 21.7278 21.2934 21.7399 21.2786 21.7582C21.2768 21.7602 21.2662 21.7624 21.2763 21.7681C21.2763 21.7681 21.2756 21.77 21.2754 21.771C21.2745 21.7778 21.2718 21.7843 21.2676 21.7899C21.2625 21.7969 21.2571 21.8038 21.2516 21.8106C21.2497 21.8131 21.2487 21.8155 21.2516 21.8172C21.2546 21.819 21.2548 21.8157 21.2561 21.8144C21.2643 21.8064 21.27 21.7945 21.2844 21.7962C21.2853 21.7962 21.2865 21.7947 21.2874 21.7938C21.2972 21.7826 21.3095 21.7739 21.3234 21.7685C21.3533 21.7576 21.3765 21.7343 21.4067 21.7195ZM21.4706 21.642C21.4618 21.6353 21.4533 21.6332 21.4441 21.6398C21.4413 21.6412 21.4383 21.6422 21.4352 21.6428C21.4327 21.6435 21.4304 21.6449 21.4286 21.6468C21.4274 21.6482 21.4257 21.6499 21.4269 21.6517C21.4281 21.6534 21.4298 21.6526 21.4312 21.6525C21.4416 21.6509 21.4519 21.6493 21.4622 21.6474C21.4656 21.6468 21.4686 21.6448 21.4706 21.642ZM21.3927 21.7608C21.3927 21.7598 21.3915 21.7594 21.3901 21.7592C21.3885 21.759 21.387 21.7592 21.3855 21.7598C21.384 21.7603 21.3827 21.7613 21.3817 21.7625C21.3759 21.7682 21.37 21.7737 21.3642 21.7795C21.3627 21.7809 21.3591 21.7822 21.3613 21.7848C21.3618 21.7852 21.3624 21.7856 21.363 21.7859C21.3636 21.7861 21.3643 21.7863 21.365 21.7863C21.3656 21.7863 21.3663 21.7861 21.3669 21.7859C21.3675 21.7856 21.3681 21.7852 21.3686 21.7848C21.3728 21.7808 21.3778 21.7778 21.3832 21.7759C21.3896 21.773 21.3902 21.7668 21.3927 21.7608Z" fill="#273375"/> -- GitLab From 9dd1b93e39de3214022e66eff5bb6276311ca801 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 15 Mar 2022 15:26:19 +0100 Subject: [PATCH 027/199] layout adjustments --- src/app/form/structure-form/form.component.scss | 8 ++++---- src/app/form/structure-form/form.component.ts | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 02e33d740..d51350e42 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -19,7 +19,7 @@ h4 { } .form { - background: $white-1; + background: $grey-7; width: 100vw; height: calc(var(--vh, 1vh) * 100 - #{$header-height} - #{$footer-height}); top: #{$header-height}; @@ -127,10 +127,10 @@ h4 { } } .page { - max-width: 960px; + max-width: 1000px; box-sizing: border-box; margin: auto; - height: auto; + min-height: 450px; color: $grey-1; background: $white; border-radius: 8px; @@ -254,7 +254,7 @@ h4 { } .progressBar { height: #{$progressBar-height}; - max-width: 960px; + max-width: 1000px; margin: 16px auto; progress { width: 100%; diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index d5f5b1267..b7b74f67a 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -929,8 +929,6 @@ export class FormComponent implements OnInit { if (equipment === 'imprimantes') field = 'nbPrinters'; if (value === -1 && this.structureForm.value[field] === 0) return; - // this.structureForm.value[field] = this.structureForm.value[field] + value; - // console.log(`current value of ${equipment} :`, this.structureForm.value[field]); this.getStructureControl(field).setValue(this.structureForm.value[field] + value); } -- GitLab From e433f268caf5f0ab354bcc56bdffdc466855304d Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 15 Mar 2022 15:42:10 +0100 Subject: [PATCH 028/199] leave alert popup --- .../modal-confirmation/modal-confirmation.component.scss | 4 ++++ 1 file changed, 4 insertions(+) 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 bae7c317e..01ec5e47a 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss @@ -7,6 +7,10 @@ .modal { .contentModal { padding: 20px !important; + h3 { + @include lato-bold-18; + color: $red; + } } } } -- GitLab From 660c0491474c7b3893e92c688b58ee8243881305 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 15 Mar 2022 17:08:50 +0100 Subject: [PATCH 029/199] warning modal --- .../form/structure-form/form.component.html | 2 +- .../components/button/button.component.scss | 31 ++++++------------- .../modal-confirmation.component.html | 16 ++++++++-- .../modal-confirmation.component.scss | 14 ++++++++- .../modal-confirmation.component.ts | 2 ++ 5 files changed, 38 insertions(+), 27 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index f1a9374a6..37e827408 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -1,7 +1,7 @@ <div class="form" fxLayout="column"> <app-modal-confirmation [openned]="showConfirmationModal" - [content]="'Il vous faudra de nouveau remplir le formulaire si vous quittez'" + [content]="'Il vous faudra de nouveau remplir le formulaire si vous quittez maintenant'" (closed)="hasRedirectionAccepted($event)" ></app-modal-confirmation> <div class="content" *ngIf="!isLoading" [ngClass]="{ editMode: isEditMode }"> diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index 46cb38029..755516f9a 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -111,7 +111,7 @@ button { background: $white; height: 31px; - color: $primary-color; + color: $grey-1; padding: 3px 15px; display: table-cell; vertical-align: middle; @@ -138,27 +138,6 @@ button { border-radius: 20px; } -// .btn-secondary { -// background: $white; -// height: 30px; -// width: 132px; -// color: $grey-1; -// padding: 0 0 1px 1px; -// // padding: 4px 37px 4px 37px; -// border-color: transparent; -// line-break: 18px; -// &:hover { -// @include background-hash($grey-1); -// } -// &:focus { -// background-color: $white; -// border-color: $primary-color; -// color: $primary-color; -// } -// &:active { -// background-color: $blue-light; -// } -// } .btn-filter-phone { background: $white; height: 40px; @@ -175,3 +154,11 @@ button { opacity: 0.4; cursor: not-allowed; } + +.h-36 { + background-color: rebeccapurple; + &.text { + white-space: nowrap !important; + height: 36px !important; + } +} 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 d3b7781e2..8de8b0930 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.html +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.html @@ -3,9 +3,19 @@ <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-primary small" (click)="closeModal(false)">Annuler</button> - <button class="btn-primary small leave" (click)="closeModal(true)">Confirmer</button> + <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center" fxLayoutGap="20px"> + <app-button + (action)="closeModal(false)" + [text]="'Annuler'" + [style]="buttonTypeEnum.Regular" + [ngClass]="'h-36'" + ></app-button> + <app-button + (action)="closeModal(true)" + [text]="'Quitter quand même'" + [style]="buttonTypeEnum.Primary" + [ngClass]="'h-36'" + ></app-button> </div> </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 01ec5e47a..9a4844e96 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss @@ -5,12 +5,24 @@ .modalBackground { .modal { + max-width: 390px; .contentModal { - padding: 20px !important; + padding: 20px 40px !important; h3 { @include lato-bold-18; color: $red; } + p { + text-align: center; + } + h3, + p { + margin: 10px 0; + } } } } + +::ng-deep .text { + height: 36px !important; +} diff --git a/src/app/shared/components/modal-confirmation/modal-confirmation.component.ts b/src/app/shared/components/modal-confirmation/modal-confirmation.component.ts index 2232792d2..092fb2de0 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.ts +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.ts @@ -1,4 +1,5 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { ButtonType } from '../button/buttonType.enum'; @Component({ selector: 'app-modal-confirmation', @@ -9,6 +10,7 @@ export class ModalConfirmationComponent { @Input() public openned: boolean; @Input() public content: string; @Output() closed = new EventEmitter<boolean>(); + public buttonTypeEnum = ButtonType; constructor() {} -- GitLab From 7c5bad55e5223d6b82178b73fa9f6edd81162f1d Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 15 Mar 2022 17:27:49 +0100 Subject: [PATCH 030/199] close modal with svg --- .../modal-confirmation.component.html | 8 ++++++- .../modal-confirmation.component.scss | 21 +++++++++++++++---- src/assets/form/sprite.svg | 5 +++++ 3 files changed, 29 insertions(+), 5 deletions(-) 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 8de8b0930..6aebce9ad 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.html +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.html @@ -1,7 +1,13 @@ <div *ngIf="openned" class="modalBackground"> <div class="modal"> <div class="contentModal" fxLayout="column" fxLayoutAlign="space-around center"> - <h3>ATTENTION</h3> + <div class="modalHeader" fxLayout="row" fxLayoutAlign="space-between center"> + <div class="empty"></div> + <h3>ATTENTION</h3> + <svg class="hide" aria-hidden="true" (click)="closeModal(false)"> + <use [attr.xlink:href]="'assets/form/sprite.svg#close'"></use> + </svg> + </div> <p>{{ content }}</p> <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center" fxLayoutGap="20px"> <app-button 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 9a4844e96..89b604f76 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss @@ -7,10 +7,23 @@ .modal { max-width: 390px; .contentModal { - padding: 20px 40px !important; - h3 { - @include lato-bold-18; - color: $red; + padding: 20px 40px; + + .modalHeader { + width: 390px; + padding: 0 8px; + h3 { + @include lato-bold-18; + color: $red; + } + svg, + .empty { + height: 40px; + width: 40px; + } + svg { + cursor: pointer; + } } p { text-align: center; diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 406112af5..155d40ca9 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -478,5 +478,10 @@ </defs> </symbol> +<symbol id="close" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M27.0279 11.9135C27.5486 11.3928 28.2873 11.2873 28.6778 11.6778C29.0683 12.0683 28.9628 12.807 28.4421 13.3277L13.3572 28.4127C12.8365 28.9334 12.0978 29.0389 11.7072 28.6484C11.3167 28.2578 11.4222 27.5192 11.9429 26.9985L27.0279 11.9135Z" fill="#333333"/> +<path d="M28.0279 27.0279C28.5486 27.5486 28.6541 28.2873 28.2636 28.6778C27.8731 29.0683 27.1344 28.9628 26.6137 28.4421L11.5287 13.3572C11.008 12.8365 10.9025 12.0978 11.293 11.7072C11.6836 11.3167 12.4223 11.4222 12.943 11.9429L28.0279 27.0279Z" fill="#333333"/> +</symbol> + </svg> -- GitLab From 192f10e85d1c9b51993eef9c9e3c75c5f334182f Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 11:17:07 +0100 Subject: [PATCH 031/199] hour-picker add button --- src/app/form/structure-form/form.component.scss | 3 +++ .../hour-picker/hour-picker.component.html | 10 +--------- .../hour-picker/hour-picker.component.scss | 13 ++++++++++++- .../components/hour-picker/hour-picker.component.ts | 3 ++- src/assets/scss/_inputs.scss | 2 +- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index d51350e42..7dad3c36d 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -135,6 +135,9 @@ h4 { background: $white; border-radius: 8px; padding: 32px 24px 32px 48px; + * { + max-width: 600px; + } &.home { .btnStart { margin-top: 90px; diff --git a/src/app/shared/components/hour-picker/hour-picker.component.html b/src/app/shared/components/hour-picker/hour-picker.component.html index 66ebf1a21..8025abe51 100644 --- a/src/app/shared/components/hour-picker/hour-picker.component.html +++ b/src/app/shared/components/hour-picker/hour-picker.component.html @@ -49,15 +49,7 @@ </div> </div> <div class="add" *ngIf="day.hours.length === 1"> - <div - (click)="addHours(day)" - fxLayout="row" - fxLayoutAlign="center center" - fxLayoutGap="3px" - class="grey-rounded-border" - > - <app-svg-icon [type]="'ico'" [icon]="'add'" [iconColor]="'currentColor'"></app-svg-icon>Ajouter - </div> + <app-button (action)="addHours(day)" [text]="'Ajouter'" [iconType]="'form'" [iconBtn]="'show'"></app-button> </div> </div> </div> diff --git a/src/app/shared/components/hour-picker/hour-picker.component.scss b/src/app/shared/components/hour-picker/hour-picker.component.scss index 2a7964b16..fc8b1c975 100644 --- a/src/app/shared/components/hour-picker/hour-picker.component.scss +++ b/src/app/shared/components/hour-picker/hour-picker.component.scss @@ -74,7 +74,7 @@ input { border: 1px solid $grey-4; box-sizing: border-box; border-radius: 4px; - height: 40px; + height: 36px; margin-top: 0; @include lato-regular-14; min-width: 56px; @@ -115,3 +115,14 @@ input[type='time']::-webkit-calendar-picker-indicator { background: none; display: none; } + +::ng-deep app-button button { + width: 100% !important; + div.text { + height: 32px !important; + width: 100% !important; + span { + @include lato-regular-12; + } + } +} diff --git a/src/app/shared/components/hour-picker/hour-picker.component.ts b/src/app/shared/components/hour-picker/hour-picker.component.ts index 7fa227f2b..4a879530d 100644 --- a/src/app/shared/components/hour-picker/hour-picker.component.ts +++ b/src/app/shared/components/hour-picker/hour-picker.component.ts @@ -4,6 +4,7 @@ import { Day } from '../../../models/day.model'; import { Time } from '../../../models/time.model'; import { WeekDayEnum } from '../../enum/weekDay.enum'; import { CheckHours } from '../../validator/form'; +import { ButtonType } from '../button/buttonType.enum'; @Component({ selector: 'app-hour-picker', @@ -16,7 +17,7 @@ export class HourPickerComponent implements OnChanges, OnDestroy { @Output() updateFormError = new EventEmitter<any>(); @Output() updateForm = new EventEmitter<FormGroup>(); - + public buttonTypeEnum = ButtonType; public error = false; private copiedDay: any; diff --git a/src/assets/scss/_inputs.scss b/src/assets/scss/_inputs.scss index 3382a2c79..36fca0201 100644 --- a/src/assets/scss/_inputs.scss +++ b/src/assets/scss/_inputs.scss @@ -18,7 +18,7 @@ border: 1px solid $grey-5; box-sizing: border-box; border-radius: $input-radius; - height: 40px; + height: 36px; padding: 8px; @include lato-regular-14; } -- GitLab From 47ff7d429379a2899ffd4bce6bee77b6b3c5cefa Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 11:24:37 +0100 Subject: [PATCH 032/199] hour picker done --- .../shared/components/hour-picker/hour-picker.component.scss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/shared/components/hour-picker/hour-picker.component.scss b/src/app/shared/components/hour-picker/hour-picker.component.scss index fc8b1c975..9b6daf151 100644 --- a/src/app/shared/components/hour-picker/hour-picker.component.scss +++ b/src/app/shared/components/hour-picker/hour-picker.component.scss @@ -26,8 +26,9 @@ grid-template-columns: auto 1fr; } .active { - display: grid; - grid-template-columns: 1fr 250px 40px; + display: flex; + flex-wrap: wrap; + max-width: 400px; @media #{$large-phone} { grid-template-columns: unset; grid-template-rows: 1fr 1fr; -- GitLab From bf0486dd04ef4840ca1a90245e80e299277eb4b8 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 11:30:49 +0100 Subject: [PATCH 033/199] css selector fixed --- .../shared/components/hour-picker/hour-picker.component.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/shared/components/hour-picker/hour-picker.component.scss b/src/app/shared/components/hour-picker/hour-picker.component.scss index 9b6daf151..3e50f5841 100644 --- a/src/app/shared/components/hour-picker/hour-picker.component.scss +++ b/src/app/shared/components/hour-picker/hour-picker.component.scss @@ -117,7 +117,7 @@ input[type='time']::-webkit-calendar-picker-indicator { display: none; } -::ng-deep app-button button { +::ng-deep .add app-button button { width: 100% !important; div.text { height: 32px !important; -- GitLab From 415cd4d6ef3e146ef97e6a8cac5fcced5859740b Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 11:40:52 +0100 Subject: [PATCH 034/199] modal adjusted --- src/app/shared/components/button/button.component.scss | 8 -------- .../modal-confirmation.component.html | 8 +------- .../modal-confirmation.component.scss | 10 ++++++++-- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index 755516f9a..ce4d94eb3 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -154,11 +154,3 @@ button { opacity: 0.4; cursor: not-allowed; } - -.h-36 { - background-color: rebeccapurple; - &.text { - white-space: nowrap !important; - height: 36px !important; - } -} 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 6aebce9ad..cbb528686 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.html +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.html @@ -10,17 +10,11 @@ </div> <p>{{ content }}</p> <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center" fxLayoutGap="20px"> - <app-button - (action)="closeModal(false)" - [text]="'Annuler'" - [style]="buttonTypeEnum.Regular" - [ngClass]="'h-36'" - ></app-button> + <app-button (action)="closeModal(false)" [text]="'Annuler'" [style]="buttonTypeEnum.Regular"></app-button> <app-button (action)="closeModal(true)" [text]="'Quitter quand même'" [style]="buttonTypeEnum.Primary" - [ngClass]="'h-36'" ></app-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 89b604f76..a7d4b7006 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss @@ -36,6 +36,12 @@ } } -::ng-deep .text { - height: 36px !important; +::ng-deep .modal app-button { + margin-right: 0 !important; + width: 150px !important; + .text { + padding: 0px 15px; + white-space: nowrap; + box-sizing: border-box; + } } -- GitLab From 9c7a805357b93da68c4e833b20512912a8dea20a Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 14:22:19 +0100 Subject: [PATCH 035/199] modal ok --- src/app/form/structure-form/form.component.ts | 3 +-- .../modal-confirmation.component.html | 6 +++--- .../modal-confirmation.component.scss | 18 ++++++++++++------ src/styles.scss | 3 +-- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index b7b74f67a..03c1a85ed 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,8 +48,7 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 18; // Change this value to start on a different page for dev testing - // screen 18 number of equipments + public currentPage = 8; // Change this value to start on a different page for dev testing // screen 6 structure type public progressStatus = 37; public nbPagesForm = 24; 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 cbb528686..34836878d 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.html +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.html @@ -1,7 +1,7 @@ <div *ngIf="openned" class="modalBackground"> <div class="modal"> <div class="contentModal" fxLayout="column" fxLayoutAlign="space-around center"> - <div class="modalHeader" fxLayout="row" fxLayoutAlign="space-between center"> + <div class="headerModal" fxLayout="row" fxLayoutAlign="space-between center"> <div class="empty"></div> <h3>ATTENTION</h3> <svg class="hide" aria-hidden="true" (click)="closeModal(false)"> @@ -9,8 +9,8 @@ </svg> </div> <p>{{ content }}</p> - <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center" fxLayoutGap="20px"> - <app-button (action)="closeModal(false)" [text]="'Annuler'" [style]="buttonTypeEnum.Regular"></app-button> + <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center" fxLayoutGap="8px"> + <app-button (action)="closeModal(false)" [text]="'Annuler'" [style]="buttonTypeEnum.Secondary"></app-button> <app-button (action)="closeModal(true)" [text]="'Quitter quand même'" 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 a7d4b7006..1cdff28c3 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss @@ -9,12 +9,13 @@ .contentModal { padding: 20px 40px; - .modalHeader { + .headerModal { width: 390px; padding: 0 8px; h3 { @include lato-bold-18; color: $red; + margin: 10px 0; } svg, .empty { @@ -27,21 +28,26 @@ } p { text-align: center; - } - h3, - p { margin: 10px 0; } + .footerModal { + gap: 8px; + } } } } ::ng-deep .modal app-button { margin-right: 0 !important; - width: 150px !important; .text { - padding: 0px 15px; + width: 150px !important; + height: 36px !important; + padding: 8px 0 !important; white-space: nowrap; box-sizing: border-box; } + .text:first-child { + font-size: 14px !important; + line-height: 18px !important; + } } diff --git a/src/styles.scss b/src/styles.scss index e6ccdcfbf..c9cf9f54a 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -270,8 +270,7 @@ button { min-width: 350px; max-width: 560px; margin: auto; - border-radius: 6px; - border: 1px solid $grey-4; + border-radius: 8px; position: fixed; top: 50%; left: 50%; -- GitLab From 2628a1dcdd77ff8dc2e29fafc2ed705b50928568 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 14:25:31 +0100 Subject: [PATCH 036/199] css cleaned --- .../components/hour-picker/hour-picker.component.html | 8 +++++++- .../components/hour-picker/hour-picker.component.scss | 5 ----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/app/shared/components/hour-picker/hour-picker.component.html b/src/app/shared/components/hour-picker/hour-picker.component.html index 8025abe51..e96f43944 100644 --- a/src/app/shared/components/hour-picker/hour-picker.component.html +++ b/src/app/shared/components/hour-picker/hour-picker.component.html @@ -49,7 +49,13 @@ </div> </div> <div class="add" *ngIf="day.hours.length === 1"> - <app-button (action)="addHours(day)" [text]="'Ajouter'" [iconType]="'form'" [iconBtn]="'show'"></app-button> + <app-button + (action)="addHours(day)" + [text]="'Ajouter'" + [iconType]="'form'" + [iconBtn]="'show'" + [style]="buttonTypeEnum.Secondary" + ></app-button> </div> </div> </div> diff --git a/src/app/shared/components/hour-picker/hour-picker.component.scss b/src/app/shared/components/hour-picker/hour-picker.component.scss index 3e50f5841..b285bc182 100644 --- a/src/app/shared/components/hour-picker/hour-picker.component.scss +++ b/src/app/shared/components/hour-picker/hour-picker.component.scss @@ -118,12 +118,7 @@ input[type='time']::-webkit-calendar-picker-indicator { } ::ng-deep .add app-button button { - width: 100% !important; div.text { height: 32px !important; - width: 100% !important; - span { - @include lato-regular-12; - } } } -- GitLab From db16045f45f07e1a047c2ab49046dbf4537e6bab Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 14:39:09 +0100 Subject: [PATCH 037/199] progress bar fixed --- src/app/form/structure-form/form.component.html | 4 ++-- src/app/form/structure-form/form.component.scss | 8 ++++++++ src/app/form/structure-form/form.component.ts | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 37e827408..56897c303 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -126,13 +126,13 @@ <h3>Qui êtes-vous ?</h3> <p>Ces informations ne seront pas visibles sur la plateforme</p> </div> - <!-- <div *ngIf="!isClaimMode" class="title"> + <div *ngIf="!isClaimMode" class="title"> <h4>Vous possédez déja un compte ? Connectez-vous :</h4> <button class="btn-primary small next" *ngIf="!isLoggedIn" (click)="isPopUpOpen = !isPopUpOpen"> Se connecter </button> <h4>Sinon, inscrivez-vous en suivant le formulaire ci-dessous :</h4> - </div> --> + </div> <div class="form-group" fxLayout="column"> <label for="name">Prénom</label> <div fxLayout="row" fxLayoutGap="13px"> diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 7dad3c36d..431da63cf 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -134,6 +134,7 @@ h4 { color: $grey-1; background: $white; border-radius: 8px; + border: 1px solid $grey-6; padding: 32px 24px 32px 48px; * { max-width: 600px; @@ -259,12 +260,19 @@ h4 { height: #{$progressBar-height}; max-width: 1000px; margin: 16px auto; + p { + @include lato-bold-14; + color: $red; + margin-bottom: 7px; + } + progress { width: 100%; height: 6px; border-radius: 7px; &::-webkit-progress-bar { background-color: $grey-6; + border-radius: 7px; } &::-webkit-progress-value { background-color: $primary-color; diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index 03c1a85ed..64e95c870 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,7 +48,7 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 8; // Change this value to start on a different page for dev testing + public currentPage = 0; // Change this value to start on a different page for dev testing // screen 6 structure type public progressStatus = 37; public nbPagesForm = 24; -- GitLab From 0045fbb731275c6a522f4cc41306d86a060681a1 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 14:43:02 +0100 Subject: [PATCH 038/199] mb inputs --- src/app/form/structure-form/form.component.html | 7 +++++-- src/styles.scss | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 56897c303..0f16fd847 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -124,10 +124,13 @@ <div *ngIf="currentPage == pageTypeEnum.accountInfo" class="page"> <div class="title"> <h3>Qui êtes-vous ?</h3> - <p>Ces informations ne seront pas visibles sur la plateforme</p> + <p>Vous pourrez choisir de rendre visibles ces informations sur votre profil public</p> </div> <div *ngIf="!isClaimMode" class="title"> - <h4>Vous possédez déja un compte ? Connectez-vous :</h4> + <h4> + Vous possédez déja un compte ?<br /> + Connectez-vous : + </h4> <button class="btn-primary small next" *ngIf="!isLoggedIn" (click)="isPopUpOpen = !isPopUpOpen"> Se connecter </button> diff --git a/src/styles.scss b/src/styles.scss index c9cf9f54a..168e75740 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -100,7 +100,7 @@ a { // Forms .form-group { - margin-bottom: 26px; + margin-bottom: 16px; label { color: $grey-1; } -- GitLab From 957fc5d45ee5d2eafd3232a3f32478371514637e Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 14:52:15 +0100 Subject: [PATCH 039/199] subtitle adjusted --- src/app/form/structure-form/form.component.scss | 2 +- src/app/form/structure-form/form.component.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 431da63cf..d44bf1714 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -187,7 +187,7 @@ h4 { p { color: $grey-1; @include lato-regular-14; - margin-top: 10px; + margin: 7px 0 0 0; &.special { @include lato-regular-14; color: $grey-3; diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index 64e95c870..b1f9eb1bd 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,7 +48,7 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 0; // Change this value to start on a different page for dev testing + public currentPage = 6; // Change this value to start on a different page for dev testing // screen 6 structure type public progressStatus = 37; public nbPagesForm = 24; -- GitLab From fd998ff466a99815925ba5c00a57298c458855a1 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 14:57:48 +0100 Subject: [PATCH 040/199] nbsp --- .../form/structure-form/form.component.html | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 0f16fd847..d687715cf 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -104,7 +104,7 @@ </div> </div> <div *ngIf="currentPage == pageTypeEnum.info" class="informations page" fxLayout="column" fxLayoutGap="28px"> - <h3>De quelles informations faut-il vous munir ?</h3> + <h3>De quelles informations faut-il vous munir ?</h3> <img src="../../assets/form/factures.svg" alt="logo factures" /> <div> <ul> @@ -123,12 +123,12 @@ > <div *ngIf="currentPage == pageTypeEnum.accountInfo" class="page"> <div class="title"> - <h3>Qui êtes-vous ?</h3> + <h3>Qui êtes-vous ?</h3> <p>Vous pourrez choisir de rendre visibles ces informations sur votre profil public</p> </div> <div *ngIf="!isClaimMode" class="title"> <h4> - Vous possédez déja un compte ?<br /> + Vous possédez déja un compte ?<br /> Connectez-vous : </h4> <button class="btn-primary small next" *ngIf="!isLoggedIn" (click)="isPopUpOpen = !isPopUpOpen"> @@ -198,7 +198,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.accountCredentials" class="page"> <div class="title"> - <h3>Quels identifiants utiliserez-vous pour vous connecter ?</h3> + <h3>Quels identifiants utiliserez-vous pour vous connecter ?</h3> </div> <div class="form-group" fxLayout="column"> <label for="email">Email du compte</label> @@ -408,7 +408,7 @@ > <div *ngIf="currentPage == pageTypeEnum.structureNameAndAddress" class="page"> <div class="title"> - <h3>Quelle structure voulez-vous référencer ?</h3> + <h3>Quelle structure voulez-vous référencer ?</h3> </div> <p class="missing-information" @@ -460,7 +460,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structurePhone" class="page"> <div class="title"> - <h3>Comment joindre votre structure ?</h3> + <h3>Comment joindre votre structure ?</h3> </div> <p class="missing-information" @@ -520,7 +520,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureType" class="page" fxLayout="column"> <div class="title"> - <h3>Quel type de structure ?</h3> + <h3>Quel type de structure ?</h3> <p>1 seul choix possible</p> </div> <p class="missing-information" *ngIf="isEditMode && !getStructureControl('structureType').valid"> @@ -543,7 +543,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureAccessModality" class="page"> <div class="title"> - <h3>Quelles sont les modalités d'accueil ?</h3> + <h3>Quelles sont les modalités d'accueil ?</h3> <p>Plusieurs choix possibles</p> </div> <p class="missing-information" *ngIf="isEditMode && !getStructureControl('accessModality').valid"> @@ -575,7 +575,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureHours" class="page"> <div class="section"> <div class="title"> - <h3>Quels sont les horaires d'ouverture ?</h3> + <h3>Quels sont les horaires d'ouverture ?</h3> <p class="notRequired">Facultatif</p> </div> <app-hour-picker @@ -587,7 +587,7 @@ </div> <div> <div class="title"> - <h3>Avez-vous des précisions à apporter sur les horaires ?</h3> + <h3>Avez-vous des précisions à apporter sur les horaires ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="textareaBlock" fxLayout="column"> @@ -609,7 +609,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structurePmr" class="page"> <div class="title"> - <h3>Est-ce accessible pour les personnes à mobilité réduite ?</h3> + <h3>Est-ce accessible pour les personnes à mobilité réduite ?</h3> </div> <p class="missing-information" *ngIf="isEditMode && !getStructureControl('pmrAccess').valid"> <app-svg-icon @@ -628,7 +628,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureWebAndSocialNetwork" class="page"> <div class="title"> - <h3>Comment vous trouver sur internet ?</h3> + <h3>Comment vous trouver sur internet ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="collapse" [ngClass]="{ notCollapsed: !showWebsite }"> @@ -833,7 +833,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structurePublicTarget" class="page"> <div class="title"> - <h3>Quel public peut venir vous consulter ?</h3> + <h3>Quel public peut venir vous consulter ?</h3> <p>Plusieurs choix possibles</p> </div> <p class="missing-information" *ngIf="isEditMode && !getStructureControl('publics').valid"> @@ -864,7 +864,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureAccompaniment" class="page"> <div class="title"> - <h3>Quel(s) accompagnement(s) proposez-vous ?</h3> + <h3>Quel(s) accompagnement(s) proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="collapse" [ngClass]="{ notCollapsed: !showProceduresAccompaniment }"> @@ -913,7 +913,7 @@ fxLayoutAlign=" center" (click)="togglePublicsAccompaniment()" > - <div class="titleCollapse">Publics spécifiques (handicap...) ?</div> + <div class="titleCollapse">Publics spécifiques (handicap...) ?</div> <div class="logo"> <svg class="show" aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#show'"></use> @@ -944,7 +944,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureOtherAccompaniment" class="page"> <div class="title"> - <h3>Quelles sont les autres démarches ?</h3> + <h3>Quelles sont les autres démarches ?</h3> </div> <div class="textareaBlock procedureContainer" fxLayout="column"> <textarea @@ -963,7 +963,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureRemoteAccompaniment" class="page"> <div class="title"> - <h3>Proposez vous un accompagnement à distance ?</h3> + <h3>Proposez vous un accompagnement à distance ?</h3> </div> <p class="missing-information" *ngIf="isEditMode && !getStructureControl('remoteAccompaniment').valid"> <app-svg-icon @@ -982,7 +982,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureWorkshop" class="page"> <div class="title"> - <h3>Quel(s) atelier(s) au numérique proposez-vous ?</h3> + <h3>Quel(s) atelier(s) au numérique proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="collapse" *ngFor="let categ of trainingCategories" [ngClass]="{ notCollapsed: !categ.openned }"> @@ -1025,7 +1025,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureWorkshopPrice" class="page"> <div class="title"> - <h3>Ces ateliers sont-ils gratuits ?</h3> + <h3>Ces ateliers sont-ils gratuits ?</h3> </div> <app-radio-form [selectedOption]="getStructureControl('freeWorkShop').value" @@ -1035,7 +1035,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureWifi" class="page"> <div class="title"> - <h3>Proposez-vous le wifi en accès libre ?</h3> + <h3>Proposez-vous le wifi en accès libre ?</h3> </div> <app-radio-form [selectedOption]=" @@ -1051,7 +1051,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureEquipments" class="page"> <div class="title"> - <h3>Quel matériel est mis à disposition par la structure ?</h3> + <h3>Quel matériel est mis à disposition par la structure ?</h3> <p class="notRequired">Facultatif</p> </div> <ng-container *ngFor="let equipment of equipmentsAndServices"> @@ -1133,7 +1133,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureLabels" class="page"> <div class="title"> - <h3>Quelle(s) labelisation proposez-vous ?</h3> + <h3>Quelle(s) labelisation proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> <div *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start"> @@ -1150,7 +1150,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureOtherServices" class="page"> <div class="title"> - <h3>Quels autres services proposez-vous ?</h3> + <h3>Quels autres services proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> <div @@ -1181,7 +1181,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureDescription" class="page"> <div class="title"> - <h3>Pouvez vous présentez votre structure ?</h3> + <h3>Pouvez vous présentez votre structure ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="textareaBlock introduceStructure" fxLayout="column"> @@ -1198,7 +1198,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureCovidInfo" class="page"> <div class="title"> - <h3>Y a-t-il des informations spécifiques à la période COVID ?</h3> + <h3>Y a-t-il des informations spécifiques à la période COVID ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="textareaBlock" fxLayout="column"> @@ -1262,7 +1262,7 @@ </div> <div *ngIf="!profile"> <div class="title"> - <h3>Souhaitez-vous vous abonner à la lettre d’information de Res'in ?</h3> + <h3>Souhaitez-vous vous abonner à la lettre d’information de Res'in ?</h3> <p class="notRequired" *ngIf="!isEditMode">Facultatif</p> </div> <app-checkbox-form -- GitLab From 6a1044bc337f9680a701a2c920e48c400be37da5 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 15:02:44 +0100 Subject: [PATCH 041/199] text area block --- src/app/form/structure-form/form.component.html | 11 +++++++---- src/app/form/structure-form/form.component.scss | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index d687715cf..9430e0cb7 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -602,7 +602,7 @@ getStructureControl('exceptionalClosures').value ? getStructureControl('exceptionalClosures').value.length : 0 - }}/500 + }} / 500 </p> </div> </div> @@ -957,7 +957,8 @@ <p> {{ getStructureControl('otherDescription').value ? getStructureControl('otherDescription').value.length : 0 - }}/500 + }} + / 500 </p> </div> </div> @@ -1192,7 +1193,9 @@ formControlName="description" ></textarea> <p> - {{ getStructureControl('description').value ? getStructureControl('description').value.length : 0 }}/500 + {{ + getStructureControl('description').value ? getStructureControl('description').value.length : 0 + }} / 500 </p> </div> </div> @@ -1211,7 +1214,7 @@ <p> {{ getStructureControl('lockdownActivity').value ? getStructureControl('lockdownActivity').value.length : 0 - }}/500 + }} / 500 </p> </div> </div> diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index d44bf1714..d3cf6720b 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -228,6 +228,7 @@ h4 { text-align: right; @include lato-regular-14; color: $grey-3; + font-style: italic; } } } -- GitLab From 17f898acb0e7c757cfb261e49516782a8c2e246f Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 15:15:42 +0100 Subject: [PATCH 042/199] input border changed --- src/styles.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles.scss b/src/styles.scss index 168e75740..96832e379 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -121,7 +121,7 @@ input { textarea { padding: 13px 8px; background: $grey-8; - border: 1px solid $grey-4; + border: 1px solid $grey-5; border-radius: $input-radius; resize: none; @include lato-regular-16; -- GitLab From 4ef648a851ea9949a1f6e6e60993e463be67096b Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 15:23:34 +0100 Subject: [PATCH 043/199] radio button bg white --- src/app/shared/components/radio-form/radio-form.component.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/shared/components/radio-form/radio-form.component.scss b/src/app/shared/components/radio-form/radio-form.component.scss index 8420130a0..e5b2487d8 100644 --- a/src/app/shared/components/radio-form/radio-form.component.scss +++ b/src/app/shared/components/radio-form/radio-form.component.scss @@ -23,6 +23,7 @@ button { cursor: pointer; margin: 8px 0 0 0; &.selected { + background: $white; border: 3px solid $green-1; .validate { display: initial; -- GitLab From 771e43c24601ff2a68b7ca0f633dd337dd9f00aa Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 16 Mar 2022 15:26:19 +0100 Subject: [PATCH 044/199] feat: add personnalOffers on structure and user --- src/app/form/structure-form/form.component.spec.ts | 1 + src/app/form/structure-form/form.component.ts | 1 + src/app/models/structure.model.ts | 2 ++ src/app/models/user.model.ts | 1 + 4 files changed, 5 insertions(+) diff --git a/src/app/form/structure-form/form.component.spec.ts b/src/app/form/structure-form/form.component.spec.ts index 665b1baa3..24041eeed 100644 --- a/src/app/form/structure-form/form.component.spec.ts +++ b/src/app/form/structure-form/form.component.spec.ts @@ -93,6 +93,7 @@ describe('FormComponent', () => { nbTablets: new FormControl('structure.nbTablets'), nbNumericTerminal: new FormControl('structure.nbNumericTerminal'), equipmentsDetails: new FormControl('structure.equipmentsDetails'), + personalOffers: new FormControl([]), }); }); diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index 5de928c31..b9f1e37d2 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -323,6 +323,7 @@ export class FormComponent implements OnInit { ]), freeWorkShop: new FormControl(structure.freeWorkShop, [Validators.required]), dataShareConsentDate: new FormControl(structure.dataShareConsentDate), + personalOffers: new FormControl(structure.personalOffers), }); } diff --git a/src/app/models/structure.model.ts b/src/app/models/structure.model.ts index f8dc38fd7..c114495fe 100644 --- a/src/app/models/structure.model.ts +++ b/src/app/models/structure.model.ts @@ -54,6 +54,8 @@ export class Structure { public accountVerified: boolean = false; + public personalOffers: string[] = []; + constructor(obj?: any) { Object.assign(this, obj, { hours: obj && obj.hours ? new Week(obj.hours) : new Week(), diff --git a/src/app/models/user.model.ts b/src/app/models/user.model.ts index ed5b7aa02..4de0811de 100644 --- a/src/app/models/user.model.ts +++ b/src/app/models/user.model.ts @@ -11,6 +11,7 @@ export class User { structuresLink: string[]; pendingStructuresLink: string[] = []; profileImage: string; + personalOffers: string[] = []; constructor(obj?: any) { Object.assign(this, obj); -- GitLab From d80b4883761ad77f650d08071f9ccfd014ebe6ab Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 15:44:25 +0100 Subject: [PATCH 045/199] socials size fixed --- src/app/form/structure-form/form.component.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index d3cf6720b..bf2f24d08 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -440,7 +440,7 @@ img { svg { height: 22px; width: 22px; - padding: 8px; + padding: 6px; } &:focus-within { input { -- GitLab From 9dc0e69ef9392f4cb0e99f00468fc86447aa0e51 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 15:50:58 +0100 Subject: [PATCH 046/199] website added --- .../form/structure-form/form.component.html | 10 ++++----- .../form/structure-form/form.component.scss | 21 ++++++++++++++----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 9430e0cb7..177220ccc 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -650,7 +650,7 @@ <div *ngIf="showWebsite" class="inputSection"> <div class="form-group website" fxLayout="column"> <label for="website">Adresse du site web</label> - <div fxLayout="row" fxLayoutGap="27px"> + <div fxLayout="row" fxLayoutGap="7px"> <input type="text" placeholder="www.resin.grandlyon.com" @@ -699,7 +699,7 @@ </div> <div *ngIf="showSocialNetwork" class="inputSection"> <div class="form-group facebook"> - <div fxLayout="row" fxLayoutGap="27px"> + <div fxLayout="row" fxLayoutGap="7px"> <svg class="facebook" aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#facebook'"></use> </svg> @@ -731,7 +731,7 @@ </div> </div> <div class="form-group twitter"> - <div fxLayout="row" fxLayoutGap="27px"> + <div fxLayout="row" fxLayoutGap="7px"> <svg class="twitter" aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#twitter'"></use> </svg> @@ -763,7 +763,7 @@ </div> </div> <div class="form-group instagram"> - <div fxLayout="row" fxLayoutGap="27px"> + <div fxLayout="row" fxLayoutGap="7px"> <svg class="instagram" aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#instagram'"></use> </svg> @@ -796,7 +796,7 @@ </div> </div> <div class="form-group linkedin"> - <div fxLayout="row" fxLayoutGap="27px"> + <div fxLayout="row" fxLayoutGap="7px"> <svg class="linkedin" aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#linkedin'"></use> </svg> diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index bf2f24d08..97ca065bd 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -433,6 +433,7 @@ img { margin: 0; color: $grey-2; @include lato-regular-14; + &.website, &.facebook, &.twitter, &.instagram, @@ -444,7 +445,7 @@ img { } &:focus-within { input { - border-color: $primary-color; + border-color: $grey-3; fill: $primary-color; } } @@ -453,11 +454,21 @@ img { padding-top: 12px; margin-right: 0 !important; } + &.website { + &:focus-within { + svg { + &.website { + border-color: $grey-3; + fill: $primary-color; + } + } + } + } &.facebook { &:focus-within { svg { &.facebook { - border-color: $primary-color; + border-color: $grey-3; fill: $primary-color; } } @@ -467,7 +478,7 @@ img { &:focus-within { svg { &.instagram { - border-color: $primary-color; + border-color: $grey-3; fill: $primary-color; } } @@ -477,7 +488,7 @@ img { &:focus-within { svg { &.twitter { - border-color: $primary-color; + border-color: $grey-3; fill: $primary-color; } } @@ -487,7 +498,7 @@ img { &:focus-within { svg { &.linkedin { - border-color: $primary-color; + border-color: $grey-3; fill: $primary-color; } } -- GitLab From 2f8864807ed530ebf0112ddd2f9ef2c6db1b04ee Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 16:12:29 +0100 Subject: [PATCH 047/199] textarea focus --- src/styles.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/styles.scss b/src/styles.scss index 96832e379..45c9e72b5 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -124,7 +124,11 @@ input { border: 1px solid $grey-5; border-radius: $input-radius; resize: none; + outline: none; @include lato-regular-16; + &:focus { + border: 1px solid $grey-3; + } } } -- GitLab From f638757dba5bcdaae799e51ceb69731e0b4b3fd6 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 16 Mar 2022 16:14:17 +0100 Subject: [PATCH 048/199] input border --- src/assets/scss/_inputs.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/scss/_inputs.scss b/src/assets/scss/_inputs.scss index 36fca0201..c91b8e2d2 100644 --- a/src/assets/scss/_inputs.scss +++ b/src/assets/scss/_inputs.scss @@ -23,7 +23,7 @@ @include lato-regular-14; } .form-input:focus { - border: 1px solid $blue; + border: 1px solid $grey-3; outline: none !important; } -- GitLab From d95d6cd507ca008bd80711a7d0f804f9def31c15 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 11:03:54 +0100 Subject: [PATCH 049/199] minus button disabled if 0 --- .../form/structure-form/form.component.html | 145 +++++++++++------- 1 file changed, 90 insertions(+), 55 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 177220ccc..b5881b881 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -1068,61 +1068,96 @@ <p class="no-margin">Nombre de {{ equipment.module.text | lowercase }}</p> </div> <div class="inputSection flex-item equipments" fxLayout="row" fxLayoutAlign="center center"> - <svg class="hide" aria-hidden="true" (click)="changeValueHandler(equipment.module.id, -1)"> - <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> - </svg> - <div fxLayout="row" fxLayoutAlign=" center" fxLayoutGap="27px"> - <ng-container *ngIf="equipment.module.id == 'ordinateurs'"> - <input - type="number" - (input)="setValidationsForm()" - formControlName="nbComputers" - min="0" - class="form-input nbEquipment" - [(value)]="structureForm.value.nbComputers" - /> - </ng-container> - <ng-container *ngIf="equipment.module.id == 'tablettes'"> - <input - type="number" - (input)="setValidationsForm()" - formControlName="nbTablets" - min="0" - class="form-input nbEquipment" - [(value)]="structureForm.value.nbTablets" - /> - </ng-container> - <ng-container *ngIf="equipment.module.id == 'imprimantes'"> - <input - type="number" - (input)="setValidationsForm()" - formControlName="nbPrinters" - min="0" - class="form-input nbEquipment" - [(value)]="structureForm.value.nbPrinters" - /> - </ng-container> - <ng-container *ngIf="equipment.module.id == 'bornesNumeriques'"> - <input - type="number" - (input)="setValidationsForm()" - formControlName="nbNumericTerminal" - min="0" - class="form-input nbEquipment" - [(value)]="structureForm.value.nbNumericTerminal" - /> - </ng-container> - <ng-container *ngIf="equipment.module.id == 'scanners'"> - <input - type="number" - (input)="setValidationsForm()" - formControlName="nbScanners" - min="0" - class="form-input nbEquipment" - [(value)]="structureForm.value.nbScanners" - /> - </ng-container> - </div> + <ng-container *ngIf="equipment.module.id == 'ordinateurs'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbComputers === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbComputers" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbComputers" + /> + </ng-container> + <ng-container *ngIf="equipment.module.id == 'tablettes'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbTablets === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbTablets" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbTablets" + /> + </ng-container> + <ng-container *ngIf="equipment.module.id == 'imprimantes'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbPrinters === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbPrinters" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbPrinters" + /> + </ng-container> + <ng-container *ngIf="equipment.module.id == 'bornesNumeriques'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbNumericTerminal === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbNumericTerminal" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbNumericTerminal" + /> + </ng-container> + <ng-container *ngIf="equipment.module.id == 'scanners'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbScanners === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbScanners" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbScanners" + /> + </ng-container> <svg class="show" aria-hidden="true" (click)="changeValueHandler(equipment.module.id, 1)"> <use [attr.xlink:href]="'assets/form/sprite.svg#plus'"></use> </svg> -- GitLab From 4b71f0806215a1fb64599cc761748b0fe71a0aa0 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 11:33:37 +0100 Subject: [PATCH 050/199] customizable modal text --- src/app/form/structure-form/form.component.html | 1 + src/app/form/structure-form/form.component.ts | 2 +- .../modal-confirmation/modal-confirmation.component.html | 2 +- .../modal-confirmation/modal-confirmation.component.ts | 3 +-- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index b5881b881..127b45a50 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -2,6 +2,7 @@ <app-modal-confirmation [openned]="showConfirmationModal" [content]="'Il vous faudra de nouveau remplir le formulaire si vous quittez maintenant'" + [customConfirmationText]="'Quitter quand même'" (closed)="hasRedirectionAccepted($event)" ></app-modal-confirmation> <div class="content" *ngIf="!isLoading" [ngClass]="{ editMode: isEditMode }"> diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index b1f9eb1bd..f5b28a7cf 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,7 +48,7 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 6; // Change this value to start on a different page for dev testing + public currentPage = 18; // Change this value to start on a different page for dev testing // screen 6 structure type public progressStatus = 37; public nbPagesForm = 24; 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 34836878d..fa91bb7c0 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.html +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.html @@ -13,7 +13,7 @@ <app-button (action)="closeModal(false)" [text]="'Annuler'" [style]="buttonTypeEnum.Secondary"></app-button> <app-button (action)="closeModal(true)" - [text]="'Quitter quand même'" + [text]="customConfirmationText ? customConfirmationText : 'Confirmer'" [style]="buttonTypeEnum.Primary" ></app-button> </div> diff --git a/src/app/shared/components/modal-confirmation/modal-confirmation.component.ts b/src/app/shared/components/modal-confirmation/modal-confirmation.component.ts index 092fb2de0..34024d004 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.ts +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.ts @@ -9,11 +9,10 @@ import { ButtonType } from '../button/buttonType.enum'; export class ModalConfirmationComponent { @Input() public openned: boolean; @Input() public content: string; + @Input() public customConfirmationText?: string; @Output() closed = new EventEmitter<boolean>(); public buttonTypeEnum = ButtonType; - constructor() {} - public closeModal(value: boolean): void { this.closed.emit(value); } -- GitLab From 42e4789730c00716683101209e7aab46744cc328 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Thu, 17 Mar 2022 11:44:39 +0100 Subject: [PATCH 051/199] init new form refacto --- src/app/app.module.ts | 16 +++++++++++ .../account-form/account-form.component.html | 1 + .../account-form/account-form.component.scss | 0 .../account-form.component.spec.ts | 25 +++++++++++++++++ .../account-form/account-form.component.ts | 15 +++++++++++ .../account-form/accountFormStep.enum.ts | 5 ++++ .../form/form-view/form-view.component.html | 1 + .../form/form-view/form-view.component.scss | 0 .../form-view/form-view.component.spec.ts | 25 +++++++++++++++++ src/app/form/form-view/form-view.component.ts | 15 +++++++++++ .../information-step.component.html | 1 + .../information-step.component.scss | 0 .../information-step.component.spec.ts | 25 +++++++++++++++++ .../information-step.component.ts | 15 +++++++++++ .../navigation-buttons.component.html | 1 + .../navigation-buttons.component.scss | 0 .../navigation-buttons.component.spec.ts | 25 +++++++++++++++++ .../navigation-buttons.component.ts | 15 +++++++++++ .../progress-bar/progress-bar.component.html | 1 + .../progress-bar/progress-bar.component.scss | 0 .../progress-bar.component.spec.ts | 25 +++++++++++++++++ .../progress-bar/progress-bar.component.ts | 15 +++++++++++ .../personnal-offer-form.component.html | 1 + .../personnal-offer-form.component.scss | 0 .../personnal-offer-form.component.spec.ts | 25 +++++++++++++++++ .../personnal-offer-form.component.ts | 15 +++++++++++ .../personnalOfferFormStep.enum.ts | 5 ++++ .../profile-form/profile-form.component.html | 1 + .../profile-form/profile-form.component.scss | 0 .../profile-form.component.spec.ts | 25 +++++++++++++++++ .../profile-form/profile-form.component.ts | 15 +++++++++++ .../profile-form/profileFormStep.enum.ts | 7 +++++ .../structure-form.component.html | 1 + .../structure-form.component.scss | 0 .../structure-form.component.spec.ts | 25 +++++++++++++++++ .../structure-form.component.ts | 15 +++++++++++ .../structure-form/structureFormStep.enum.ts | 27 +++++++++++++++++++ 37 files changed, 388 insertions(+) create mode 100644 src/app/form/form-view/account-form/account-form.component.html create mode 100644 src/app/form/form-view/account-form/account-form.component.scss create mode 100644 src/app/form/form-view/account-form/account-form.component.spec.ts create mode 100644 src/app/form/form-view/account-form/account-form.component.ts create mode 100644 src/app/form/form-view/account-form/accountFormStep.enum.ts create mode 100644 src/app/form/form-view/form-view.component.html create mode 100644 src/app/form/form-view/form-view.component.scss create mode 100644 src/app/form/form-view/form-view.component.spec.ts create mode 100644 src/app/form/form-view/form-view.component.ts create mode 100644 src/app/form/form-view/global-components/information-step/information-step.component.html create mode 100644 src/app/form/form-view/global-components/information-step/information-step.component.scss create mode 100644 src/app/form/form-view/global-components/information-step/information-step.component.spec.ts create mode 100644 src/app/form/form-view/global-components/information-step/information-step.component.ts create mode 100644 src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.html create mode 100644 src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.scss create mode 100644 src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.spec.ts create mode 100644 src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.ts create mode 100644 src/app/form/form-view/global-components/progress-bar/progress-bar.component.html create mode 100644 src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss create mode 100644 src/app/form/form-view/global-components/progress-bar/progress-bar.component.spec.ts create mode 100644 src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts create mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.html create mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.scss create mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.spec.ts create mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.ts create mode 100644 src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts create mode 100644 src/app/form/form-view/profile-form/profile-form.component.html create mode 100644 src/app/form/form-view/profile-form/profile-form.component.scss create mode 100644 src/app/form/form-view/profile-form/profile-form.component.spec.ts create mode 100644 src/app/form/form-view/profile-form/profile-form.component.ts create mode 100644 src/app/form/form-view/profile-form/profileFormStep.enum.ts create mode 100644 src/app/form/form-view/structure-form/structure-form.component.html create mode 100644 src/app/form/form-view/structure-form/structure-form.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-form.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-form.component.ts create mode 100644 src/app/form/form-view/structure-form/structureFormStep.enum.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 4496fc8d9..5d8ca6ca2 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -46,6 +46,14 @@ import { StructureResolver } from './resolvers/structure.resolver'; import { RoleGuard } from './guards/role.guard'; import { UpdateService } from './services/update.service'; import { DataShareConsentComponent } from './shared/components/data-share-consent/data-share-consent.component'; +import { FormViewComponent } from './form/form-view/form-view.component'; +import { ProgressBarComponent } from './form/form-view/global-components/progress-bar/progress-bar.component'; +import { NavigationButtonsComponent } from './form/form-view/global-components/navigation-buttons/navigation-buttons.component'; +import { StructureFormComponent } from './form/form-view/structure-form/structure-form.component'; +import { ProfileFormComponent } from './form/form-view/profile-form/profile-form.component'; +import { PersonnalOfferFormComponent } from './form/form-view/personnal-offer-form/personnal-offer-form.component'; +import { InformationStepComponent } from './form/form-view/global-components/information-step/information-step.component'; +import { AccountFormComponent } from './form/form-view/account-form/account-form.component'; @NgModule({ declarations: [ @@ -75,6 +83,14 @@ import { DataShareConsentComponent } from './shared/components/data-share-consen StructurePrintHeaderComponent, DataShareConsentComponent, OrientationComponent, + FormViewComponent, + ProgressBarComponent, + NavigationButtonsComponent, + StructureFormComponent, + ProfileFormComponent, + PersonnalOfferFormComponent, + InformationStepComponent, + AccountFormComponent, ], imports: [ BrowserModule, diff --git a/src/app/form/form-view/account-form/account-form.component.html b/src/app/form/form-view/account-form/account-form.component.html new file mode 100644 index 000000000..ab27b9f96 --- /dev/null +++ b/src/app/form/form-view/account-form/account-form.component.html @@ -0,0 +1 @@ +<p>account-form works!</p> diff --git a/src/app/form/form-view/account-form/account-form.component.scss b/src/app/form/form-view/account-form/account-form.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/account-form/account-form.component.spec.ts b/src/app/form/form-view/account-form/account-form.component.spec.ts new file mode 100644 index 000000000..7c7781d2d --- /dev/null +++ b/src/app/form/form-view/account-form/account-form.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AccountFormComponent } from './account-form.component'; + +describe('AccountFormComponent', () => { + let component: AccountFormComponent; + let fixture: ComponentFixture<AccountFormComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AccountFormComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AccountFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/account-form/account-form.component.ts b/src/app/form/form-view/account-form/account-form.component.ts new file mode 100644 index 000000000..2aa330d5e --- /dev/null +++ b/src/app/form/form-view/account-form/account-form.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-account-form', + templateUrl: './account-form.component.html', + styleUrls: ['./account-form.component.scss'] +}) +export class AccountFormComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/account-form/accountFormStep.enum.ts b/src/app/form/form-view/account-form/accountFormStep.enum.ts new file mode 100644 index 000000000..b890a221b --- /dev/null +++ b/src/app/form/form-view/account-form/accountFormStep.enum.ts @@ -0,0 +1,5 @@ +export enum accountFormStep { + accountInfo, + accountCredentials, + confirmEmailSentInfo, +} diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html new file mode 100644 index 000000000..bed61fa90 --- /dev/null +++ b/src/app/form/form-view/form-view.component.html @@ -0,0 +1 @@ +<p>form-view works!</p> diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/form-view.component.spec.ts b/src/app/form/form-view/form-view.component.spec.ts new file mode 100644 index 000000000..bdd70ec41 --- /dev/null +++ b/src/app/form/form-view/form-view.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FormViewComponent } from './form-view.component'; + +describe('FormViewComponent', () => { + let component: FormViewComponent; + let fixture: ComponentFixture<FormViewComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ FormViewComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(FormViewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts new file mode 100644 index 000000000..2b8f701ac --- /dev/null +++ b/src/app/form/form-view/form-view.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-form-view', + templateUrl: './form-view.component.html', + styleUrls: ['./form-view.component.scss'] +}) +export class FormViewComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html new file mode 100644 index 000000000..1e175bae5 --- /dev/null +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -0,0 +1 @@ +<p>information-step works!</p> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.scss b/src/app/form/form-view/global-components/information-step/information-step.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.spec.ts b/src/app/form/form-view/global-components/information-step/information-step.component.spec.ts new file mode 100644 index 000000000..d23b1a7a9 --- /dev/null +++ b/src/app/form/form-view/global-components/information-step/information-step.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { InformationStepComponent } from './information-step.component'; + +describe('InformationStepComponent', () => { + let component: InformationStepComponent; + let fixture: ComponentFixture<InformationStepComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ InformationStepComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(InformationStepComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.ts b/src/app/form/form-view/global-components/information-step/information-step.component.ts new file mode 100644 index 000000000..05b1bf2c7 --- /dev/null +++ b/src/app/form/form-view/global-components/information-step/information-step.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-information-step', + templateUrl: './information-step.component.html', + styleUrls: ['./information-step.component.scss'] +}) +export class InformationStepComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.html b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.html new file mode 100644 index 000000000..1d8617169 --- /dev/null +++ b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.html @@ -0,0 +1 @@ +<p>navigation-buttons works!</p> diff --git a/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.scss b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.spec.ts b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.spec.ts new file mode 100644 index 000000000..5b0cccce0 --- /dev/null +++ b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NavigationButtonsComponent } from './navigation-buttons.component'; + +describe('NavigationButtonsComponent', () => { + let component: NavigationButtonsComponent; + let fixture: ComponentFixture<NavigationButtonsComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ NavigationButtonsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(NavigationButtonsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.ts b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.ts new file mode 100644 index 000000000..b40efb819 --- /dev/null +++ b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-navigation-buttons', + templateUrl: './navigation-buttons.component.html', + styleUrls: ['./navigation-buttons.component.scss'] +}) +export class NavigationButtonsComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html new file mode 100644 index 000000000..872ad60ca --- /dev/null +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html @@ -0,0 +1 @@ +<p>progress-bar works!</p> diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.spec.ts b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.spec.ts new file mode 100644 index 000000000..a1ca2e4aa --- /dev/null +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProgressBarComponent } from './progress-bar.component'; + +describe('ProgressBarComponent', () => { + let component: ProgressBarComponent; + let fixture: ComponentFixture<ProgressBarComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ProgressBarComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ProgressBarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts new file mode 100644 index 000000000..6cd4ad130 --- /dev/null +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-progress-bar', + templateUrl: './progress-bar.component.html', + styleUrls: ['./progress-bar.component.scss'] +}) +export class ProgressBarComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.html b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.html new file mode 100644 index 000000000..299e61c35 --- /dev/null +++ b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.html @@ -0,0 +1 @@ +<p>personnal-offer-form works!</p> diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.scss b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.spec.ts b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.spec.ts new file mode 100644 index 000000000..4de8089b4 --- /dev/null +++ b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PersonnalOfferFormComponent } from './personnal-offer-form.component'; + +describe('PersonnalOfferFormComponent', () => { + let component: PersonnalOfferFormComponent; + let fixture: ComponentFixture<PersonnalOfferFormComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PersonnalOfferFormComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PersonnalOfferFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.ts b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.ts new file mode 100644 index 000000000..c9b045627 --- /dev/null +++ b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-personnal-offer-form', + templateUrl: './personnal-offer-form.component.html', + styleUrls: ['./personnal-offer-form.component.scss'] +}) +export class PersonnalOfferFormComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts b/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts new file mode 100644 index 000000000..2be4af062 --- /dev/null +++ b/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts @@ -0,0 +1,5 @@ +export enum personnalOfferFormStep { + personnalOfferAccompaniment, + personnalOfferTrainingType, + personnalOfferStructureChoice, +} diff --git a/src/app/form/form-view/profile-form/profile-form.component.html b/src/app/form/form-view/profile-form/profile-form.component.html new file mode 100644 index 000000000..4360ce079 --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-form.component.html @@ -0,0 +1 @@ +<p>profile-form works!</p> diff --git a/src/app/form/form-view/profile-form/profile-form.component.scss b/src/app/form/form-view/profile-form/profile-form.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/profile-form/profile-form.component.spec.ts b/src/app/form/form-view/profile-form/profile-form.component.spec.ts new file mode 100644 index 000000000..936caf8e3 --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-form.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProfileFormComponent } from './profile-form.component'; + +describe('ProfileFormComponent', () => { + let component: ProfileFormComponent; + let fixture: ComponentFixture<ProfileFormComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ProfileFormComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ProfileFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/profile-form/profile-form.component.ts b/src/app/form/form-view/profile-form/profile-form.component.ts new file mode 100644 index 000000000..2f15356e4 --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-form.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-profile-form', + templateUrl: './profile-form.component.html', + styleUrls: ['./profile-form.component.scss'] +}) +export class ProfileFormComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/profile-form/profileFormStep.enum.ts b/src/app/form/form-view/profile-form/profileFormStep.enum.ts new file mode 100644 index 000000000..74611311d --- /dev/null +++ b/src/app/form/form-view/profile-form/profileFormStep.enum.ts @@ -0,0 +1,7 @@ +export enum profileFormStep { + profileBeginningInfo, + profileEmployerSelection, + profileJobSelection, + profileStructureChoice, + profileMailSentInfo, +} diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html new file mode 100644 index 000000000..bfab9fee1 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -0,0 +1 @@ +<p>structure-form works!</p> diff --git a/src/app/form/form-view/structure-form/structure-form.component.scss b/src/app/form/form-view/structure-form/structure-form.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-form.component.spec.ts b/src/app/form/form-view/structure-form/structure-form.component.spec.ts new file mode 100644 index 000000000..e5172382e --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-form.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureFormComponent } from './structure-form.component'; + +describe('StructureFormComponent', () => { + let component: StructureFormComponent; + let fixture: ComponentFixture<StructureFormComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureFormComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts new file mode 100644 index 000000000..1f3ff6130 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-form', + templateUrl: './structure-form.component.html', + styleUrls: ['./structure-form.component.scss'] +}) +export class StructureFormComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts new file mode 100644 index 000000000..d73d5cb72 --- /dev/null +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -0,0 +1,27 @@ +export enum structureFormStep { + structureNameAndAddress, + structureContact, + structureAccompanimentChoice, + structureChoiceCompletion, + structureContactCompletion, + structurePhone, + structureCreationInfo, + structureType, + structureAccessModality, + structureHours, + structurePmr, + structureWebAndSocialNetwork, + structurePublicTarget, + structurePublicAccompaniment, + structureDigitalHelpingAccompaniment, + structureTrainingPrice, + structureTrainingType, + structureWifi, + structureEquipments, + structureLabels, + structureOtherServices, + structureDescription, + structureCovidInfo, + structureConsent, + structureCreationFinishedInfo, +} -- GitLab From 8959306193fff119269a500218e404d78811db93 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Thu, 17 Mar 2022 12:11:06 +0100 Subject: [PATCH 052/199] init each form component --- src/app/app.module.ts | 54 +++++++++++++++++++ .../account-credentials.component.html | 1 + .../account-credentials.component.scss | 0 .../account-credentials.component.spec.ts | 25 +++++++++ .../account-credentials.component.ts | 15 ++++++ .../account-info/account-info.component.html | 1 + .../account-info/account-info.component.scss | 0 .../account-info.component.spec.ts | 25 +++++++++ .../account-info/account-info.component.ts | 15 ++++++ .../public-accompaniment.component.html | 1 + .../public-accompaniment.component.scss | 0 .../public-accompaniment.component.spec.ts | 25 +++++++++ .../public-accompaniment.component.ts | 15 ++++++ .../training-type.component.html | 1 + .../training-type.component.scss | 0 .../training-type.component.spec.ts | 25 +++++++++ .../training-type/training-type.component.ts | 15 ++++++ ...ffer-other-structure-choice.component.html | 1 + ...ffer-other-structure-choice.component.scss | 0 ...r-other-structure-choice.component.spec.ts | 25 +++++++++ ...-offer-other-structure-choice.component.ts | 15 ++++++ .../personnalOfferFormStep.enum.ts | 1 + .../profile-employer-selection.component.html | 1 + .../profile-employer-selection.component.scss | 0 ...ofile-employer-selection.component.spec.ts | 25 +++++++++ .../profile-employer-selection.component.ts | 15 ++++++ .../profile-job-selection.component.html | 1 + .../profile-job-selection.component.scss | 0 .../profile-job-selection.component.spec.ts | 25 +++++++++ .../profile-job-selection.component.ts | 15 ++++++ .../profile-structure-choice.component.html | 1 + .../profile-structure-choice.component.scss | 0 ...profile-structure-choice.component.spec.ts | 25 +++++++++ .../profile-structure-choice.component.ts | 15 ++++++ .../structure-access-modality.component.html | 1 + .../structure-access-modality.component.scss | 0 ...tructure-access-modality.component.spec.ts | 25 +++++++++ .../structure-access-modality.component.ts | 15 ++++++ ...ucture-accompaniment-choice.component.html | 1 + ...ucture-accompaniment-choice.component.scss | 0 ...ure-accompaniment-choice.component.spec.ts | 25 +++++++++ ...tructure-accompaniment-choice.component.ts | 15 ++++++ ...structure-choice-completion.component.html | 1 + ...structure-choice-completion.component.scss | 0 ...ucture-choice-completion.component.spec.ts | 25 +++++++++ .../structure-choice-completion.component.ts | 15 ++++++ .../structure-consent.component.html | 1 + .../structure-consent.component.scss | 0 .../structure-consent.component.spec.ts | 25 +++++++++ .../structure-consent.component.ts | 15 ++++++ ...tructure-contact-completion.component.html | 1 + ...tructure-contact-completion.component.scss | 0 ...cture-contact-completion.component.spec.ts | 25 +++++++++ .../structure-contact-completion.component.ts | 15 ++++++ .../structure-contact.component.html | 1 + .../structure-contact.component.scss | 0 .../structure-contact.component.spec.ts | 25 +++++++++ .../structure-contact.component.ts | 15 ++++++ .../structure-covid-info.component.html | 1 + .../structure-covid-info.component.scss | 0 .../structure-covid-info.component.spec.ts | 25 +++++++++ .../structure-covid-info.component.ts | 15 ++++++ .../structure-description.component.html | 1 + .../structure-description.component.scss | 0 .../structure-description.component.spec.ts | 25 +++++++++ .../structure-description.component.ts | 15 ++++++ ...gital-helping-accompaniment.component.html | 1 + ...gital-helping-accompaniment.component.scss | 0 ...al-helping-accompaniment.component.spec.ts | 25 +++++++++ ...digital-helping-accompaniment.component.ts | 15 ++++++ .../structure-equipments.component.html | 1 + .../structure-equipments.component.scss | 0 .../structure-equipments.component.spec.ts | 25 +++++++++ .../structure-equipments.component.ts | 15 ++++++ .../structure-hours.component.html | 1 + .../structure-hours.component.scss | 0 .../structure-hours.component.spec.ts | 25 +++++++++ .../structure-hours.component.ts | 15 ++++++ .../structure-labels.component.html | 1 + .../structure-labels.component.scss | 0 .../structure-labels.component.spec.ts | 25 +++++++++ .../structure-labels.component.ts | 15 ++++++ .../structure-name-and-address.component.html | 1 + .../structure-name-and-address.component.scss | 0 ...ructure-name-and-address.component.spec.ts | 25 +++++++++ .../structure-name-and-address.component.ts | 15 ++++++ .../structure-other-services.component.html | 1 + .../structure-other-services.component.scss | 0 ...structure-other-services.component.spec.ts | 25 +++++++++ .../structure-other-services.component.ts | 15 ++++++ .../structure-pmr.component.html | 1 + .../structure-pmr.component.scss | 0 .../structure-pmr.component.spec.ts | 25 +++++++++ .../structure-pmr/structure-pmr.component.ts | 15 ++++++ .../structure-public-target.component.html | 1 + .../structure-public-target.component.scss | 0 .../structure-public-target.component.spec.ts | 25 +++++++++ .../structure-public-target.component.ts | 15 ++++++ .../structure-training-price.component.html | 1 + .../structure-training-price.component.scss | 0 ...structure-training-price.component.spec.ts | 25 +++++++++ .../structure-training-price.component.ts | 15 ++++++ ...ture-web-and-social-network.component.html | 1 + ...ture-web-and-social-network.component.scss | 0 ...e-web-and-social-network.component.spec.ts | 25 +++++++++ ...ucture-web-and-social-network.component.ts | 15 ++++++ .../structure-wifi.component.html | 1 + .../structure-wifi.component.scss | 0 .../structure-wifi.component.spec.ts | 25 +++++++++ .../structure-wifi.component.ts | 15 ++++++ .../structure-form/structureFormStep.enum.ts | 1 - 111 files changed, 1162 insertions(+), 1 deletion(-) create mode 100644 src/app/form/form-view/account-form/account-credentials/account-credentials.component.html create mode 100644 src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss create mode 100644 src/app/form/form-view/account-form/account-credentials/account-credentials.component.spec.ts create mode 100644 src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts create mode 100644 src/app/form/form-view/account-form/account-info/account-info.component.html create mode 100644 src/app/form/form-view/account-form/account-info/account-info.component.scss create mode 100644 src/app/form/form-view/account-form/account-info/account-info.component.spec.ts create mode 100644 src/app/form/form-view/account-form/account-info/account-info.component.ts create mode 100644 src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.html create mode 100644 src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.scss create mode 100644 src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.spec.ts create mode 100644 src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.ts create mode 100644 src/app/form/form-view/global-components/training-type/training-type.component.html create mode 100644 src/app/form/form-view/global-components/training-type/training-type.component.scss create mode 100644 src/app/form/form-view/global-components/training-type/training-type.component.spec.ts create mode 100644 src/app/form/form-view/global-components/training-type/training-type.component.ts create mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.html create mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.scss create mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.spec.ts create mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.ts create mode 100644 src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html create mode 100644 src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss create mode 100644 src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.spec.ts create mode 100644 src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts create mode 100644 src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html create mode 100644 src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss create mode 100644 src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.spec.ts create mode 100644 src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts create mode 100644 src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html create mode 100644 src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss create mode 100644 src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.spec.ts create mode 100644 src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html create mode 100644 src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.html create mode 100644 src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.html create mode 100644 src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-consent/structure-consent.component.html create mode 100644 src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-consent/structure-consent.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html create mode 100644 src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html create mode 100644 src/app/form/form-view/structure-form/structure-contact/structure-contact.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-contact/structure-contact.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.html create mode 100644 src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-description/structure-description.component.html create mode 100644 src/app/form/form-view/structure-form/structure-description/structure-description.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-description/structure-description.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-description/structure-description.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html create mode 100644 src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html create mode 100644 src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-hours/structure-hours.component.html create mode 100644 src/app/form/form-view/structure-form/structure-hours/structure-hours.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-hours/structure-hours.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html create mode 100644 src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-labels/structure-labels.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html create mode 100644 src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html create mode 100644 src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html create mode 100644 src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html create mode 100644 src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html create mode 100644 src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html create mode 100644 src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.ts create mode 100644 src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html create mode 100644 src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 5d8ca6ca2..89c2fce78 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -54,6 +54,33 @@ import { ProfileFormComponent } from './form/form-view/profile-form/profile-form import { PersonnalOfferFormComponent } from './form/form-view/personnal-offer-form/personnal-offer-form.component'; import { InformationStepComponent } from './form/form-view/global-components/information-step/information-step.component'; import { AccountFormComponent } from './form/form-view/account-form/account-form.component'; +import { TrainingTypeComponent } from './form/form-view/global-components/training-type/training-type.component'; +import { PublicAccompanimentComponent } from './form/form-view/global-components/public-accompaniment/public-accompaniment.component'; +import { ProfileEmployerSelectionComponent } from './form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component'; +import { ProfileJobSelectionComponent } from './form/form-view/profile-form/profile-job-selection/profile-job-selection.component'; +import { ProfileStructureChoiceComponent } from './form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component'; +import { PersonnalOfferOtherStructureChoiceComponent } from './form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component'; +import { StructureNameAndAddressComponent } from './form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component'; +import { StructureContactComponent } from './form/form-view/structure-form/structure-contact/structure-contact.component'; +import { StructureAccompanimentChoiceComponent } from './form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component'; +import { StructureChoiceCompletionComponent } from './form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component'; +import { StructureContactCompletionComponent } from './form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component'; +import { StructureAccessModalityComponent } from './form/form-view/structure-form/structure-access-modality/structure-access-modality.component'; +import { StructureHoursComponent } from './form/form-view/structure-form/structure-hours/structure-hours.component'; +import { StructurePmrComponent } from './form/form-view/structure-form/structure-pmr/structure-pmr.component'; +import { StructureWebAndSocialNetworkComponent } from './form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component'; +import { StructurePublicTargetComponent } from './form/form-view/structure-form/structure-public-target/structure-public-target.component'; +import { StructureDigitalHelpingAccompanimentComponent } from './form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component'; +import { StructureTrainingPriceComponent } from './form/form-view/structure-form/structure-training-price/structure-training-price.component'; +import { StructureWifiComponent } from './form/form-view/structure-form/structure-wifi/structure-wifi.component'; +import { StructureEquipmentsComponent } from './form/form-view/structure-form/structure-equipments/structure-equipments.component'; +import { StructureLabelsComponent } from './form/form-view/structure-form/structure-labels/structure-labels.component'; +import { StructureOtherServicesComponent } from './form/form-view/structure-form/structure-other-services/structure-other-services.component'; +import { StructureDescriptionComponent } from './form/form-view/structure-form/structure-description/structure-description.component'; +import { StructureCovidInfoComponent } from './form/form-view/structure-form/structure-covid-info/structure-covid-info.component'; +import { StructureConsentComponent } from './form/form-view/structure-form/structure-consent/structure-consent.component'; +import { AccountInfoComponent } from './form/form-view/account-form/account-info/account-info.component'; +import { AccountCredentialsComponent } from './form/form-view/account-form/account-credentials/account-credentials.component'; @NgModule({ declarations: [ @@ -91,6 +118,33 @@ import { AccountFormComponent } from './form/form-view/account-form/account-form PersonnalOfferFormComponent, InformationStepComponent, AccountFormComponent, + TrainingTypeComponent, + PublicAccompanimentComponent, + ProfileEmployerSelectionComponent, + ProfileJobSelectionComponent, + ProfileStructureChoiceComponent, + PersonnalOfferOtherStructureChoiceComponent, + StructureNameAndAddressComponent, + StructureContactComponent, + StructureAccompanimentChoiceComponent, + StructureChoiceCompletionComponent, + StructureContactCompletionComponent, + StructureAccessModalityComponent, + StructureHoursComponent, + StructurePmrComponent, + StructureWebAndSocialNetworkComponent, + StructurePublicTargetComponent, + StructureDigitalHelpingAccompanimentComponent, + StructureTrainingPriceComponent, + StructureWifiComponent, + StructureEquipmentsComponent, + StructureLabelsComponent, + StructureOtherServicesComponent, + StructureDescriptionComponent, + StructureCovidInfoComponent, + StructureConsentComponent, + AccountInfoComponent, + AccountCredentialsComponent, ], imports: [ BrowserModule, diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html new file mode 100644 index 000000000..7be0b1b5f --- /dev/null +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html @@ -0,0 +1 @@ +<p>account-credentials works!</p> diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.spec.ts b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.spec.ts new file mode 100644 index 000000000..aa99fe827 --- /dev/null +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AccountCredentialsComponent } from './account-credentials.component'; + +describe('AccountCredentialsComponent', () => { + let component: AccountCredentialsComponent; + let fixture: ComponentFixture<AccountCredentialsComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AccountCredentialsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AccountCredentialsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts new file mode 100644 index 000000000..f0b18b1be --- /dev/null +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-account-credentials', + templateUrl: './account-credentials.component.html', + styleUrls: ['./account-credentials.component.scss'] +}) +export class AccountCredentialsComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.html b/src/app/form/form-view/account-form/account-info/account-info.component.html new file mode 100644 index 000000000..d8e9e0886 --- /dev/null +++ b/src/app/form/form-view/account-form/account-info/account-info.component.html @@ -0,0 +1 @@ +<p>account-info works!</p> diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.scss b/src/app/form/form-view/account-form/account-info/account-info.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.spec.ts b/src/app/form/form-view/account-form/account-info/account-info.component.spec.ts new file mode 100644 index 000000000..13f8f214d --- /dev/null +++ b/src/app/form/form-view/account-form/account-info/account-info.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AccountInfoComponent } from './account-info.component'; + +describe('AccountInfoComponent', () => { + let component: AccountInfoComponent; + let fixture: ComponentFixture<AccountInfoComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AccountInfoComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AccountInfoComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.ts b/src/app/form/form-view/account-form/account-info/account-info.component.ts new file mode 100644 index 000000000..ea98c705b --- /dev/null +++ b/src/app/form/form-view/account-form/account-info/account-info.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-account-info', + templateUrl: './account-info.component.html', + styleUrls: ['./account-info.component.scss'] +}) +export class AccountInfoComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.html b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.html new file mode 100644 index 000000000..934916094 --- /dev/null +++ b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.html @@ -0,0 +1 @@ +<p>public-accompaniment works!</p> diff --git a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.scss b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.spec.ts b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.spec.ts new file mode 100644 index 000000000..39c47d7a3 --- /dev/null +++ b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PublicAccompanimentComponent } from './public-accompaniment.component'; + +describe('PublicAccompanimentComponent', () => { + let component: PublicAccompanimentComponent; + let fixture: ComponentFixture<PublicAccompanimentComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PublicAccompanimentComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PublicAccompanimentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.ts b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.ts new file mode 100644 index 000000000..58442f22f --- /dev/null +++ b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-public-accompaniment', + templateUrl: './public-accompaniment.component.html', + styleUrls: ['./public-accompaniment.component.scss'] +}) +export class PublicAccompanimentComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/global-components/training-type/training-type.component.html b/src/app/form/form-view/global-components/training-type/training-type.component.html new file mode 100644 index 000000000..33f30531e --- /dev/null +++ b/src/app/form/form-view/global-components/training-type/training-type.component.html @@ -0,0 +1 @@ +<p>training-type works!</p> diff --git a/src/app/form/form-view/global-components/training-type/training-type.component.scss b/src/app/form/form-view/global-components/training-type/training-type.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/global-components/training-type/training-type.component.spec.ts b/src/app/form/form-view/global-components/training-type/training-type.component.spec.ts new file mode 100644 index 000000000..77c0a6c13 --- /dev/null +++ b/src/app/form/form-view/global-components/training-type/training-type.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TrainingTypeComponent } from './training-type.component'; + +describe('TrainingTypeComponent', () => { + let component: TrainingTypeComponent; + let fixture: ComponentFixture<TrainingTypeComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ TrainingTypeComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(TrainingTypeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/global-components/training-type/training-type.component.ts b/src/app/form/form-view/global-components/training-type/training-type.component.ts new file mode 100644 index 000000000..74dffff2a --- /dev/null +++ b/src/app/form/form-view/global-components/training-type/training-type.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-training-type', + templateUrl: './training-type.component.html', + styleUrls: ['./training-type.component.scss'] +}) +export class TrainingTypeComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.html b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.html new file mode 100644 index 000000000..dcb4d21cc --- /dev/null +++ b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.html @@ -0,0 +1 @@ +<p>personnal-offer-other-structure-choice works!</p> diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.scss b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.spec.ts b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.spec.ts new file mode 100644 index 000000000..b2879c3dc --- /dev/null +++ b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PersonnalOfferOtherStructureChoiceComponent } from './personnal-offer-other-structure-choice.component'; + +describe('PersonnalOfferOtherStructureChoiceComponent', () => { + let component: PersonnalOfferOtherStructureChoiceComponent; + let fixture: ComponentFixture<PersonnalOfferOtherStructureChoiceComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PersonnalOfferOtherStructureChoiceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PersonnalOfferOtherStructureChoiceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.ts b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.ts new file mode 100644 index 000000000..00f13526f --- /dev/null +++ b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-personnal-offer-other-structure-choice', + templateUrl: './personnal-offer-other-structure-choice.component.html', + styleUrls: ['./personnal-offer-other-structure-choice.component.scss'] +}) +export class PersonnalOfferOtherStructureChoiceComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts b/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts index 2be4af062..2084eb29c 100644 --- a/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts +++ b/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts @@ -2,4 +2,5 @@ export enum personnalOfferFormStep { personnalOfferAccompaniment, personnalOfferTrainingType, personnalOfferStructureChoice, + personnalOfferFinishedInfo, } diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html new file mode 100644 index 000000000..92831437e --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html @@ -0,0 +1 @@ +<p>profile-employer-selection works!</p> diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.spec.ts b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.spec.ts new file mode 100644 index 000000000..6481ebb51 --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProfileEmployerSelectionComponent } from './profile-employer-selection.component'; + +describe('ProfileEmployerSelectionComponent', () => { + let component: ProfileEmployerSelectionComponent; + let fixture: ComponentFixture<ProfileEmployerSelectionComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ProfileEmployerSelectionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ProfileEmployerSelectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts new file mode 100644 index 000000000..fde647569 --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-profile-employer-selection', + templateUrl: './profile-employer-selection.component.html', + styleUrls: ['./profile-employer-selection.component.scss'] +}) +export class ProfileEmployerSelectionComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html new file mode 100644 index 000000000..9b37bba23 --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html @@ -0,0 +1 @@ +<p>profile-job-selection works!</p> diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.spec.ts b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.spec.ts new file mode 100644 index 000000000..cbf175971 --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProfileJobSelectionComponent } from './profile-job-selection.component'; + +describe('ProfileJobSelectionComponent', () => { + let component: ProfileJobSelectionComponent; + let fixture: ComponentFixture<ProfileJobSelectionComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ProfileJobSelectionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ProfileJobSelectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts new file mode 100644 index 000000000..b8f7665d9 --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-profile-job-selection', + templateUrl: './profile-job-selection.component.html', + styleUrls: ['./profile-job-selection.component.scss'] +}) +export class ProfileJobSelectionComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html new file mode 100644 index 000000000..f3c88b646 --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -0,0 +1 @@ +<p>profile-structure-choice works!</p> diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.spec.ts b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.spec.ts new file mode 100644 index 000000000..90577fb1f --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProfileStructureChoiceComponent } from './profile-structure-choice.component'; + +describe('ProfileStructureChoiceComponent', () => { + let component: ProfileStructureChoiceComponent; + let fixture: ComponentFixture<ProfileStructureChoiceComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ProfileStructureChoiceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ProfileStructureChoiceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts new file mode 100644 index 000000000..d37068d0b --- /dev/null +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-profile-structure-choice', + templateUrl: './profile-structure-choice.component.html', + styleUrls: ['./profile-structure-choice.component.scss'] +}) +export class ProfileStructureChoiceComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html new file mode 100644 index 000000000..239e79f42 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html @@ -0,0 +1 @@ +<p>structure-access-modality works!</p> diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.scss b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.spec.ts b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.spec.ts new file mode 100644 index 000000000..5388bf4aa --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureAccessModalityComponent } from './structure-access-modality.component'; + +describe('StructureAccessModalityComponent', () => { + let component: StructureAccessModalityComponent; + let fixture: ComponentFixture<StructureAccessModalityComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureAccessModalityComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureAccessModalityComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts new file mode 100644 index 000000000..64479839e --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-access-modality', + templateUrl: './structure-access-modality.component.html', + styleUrls: ['./structure-access-modality.component.scss'] +}) +export class StructureAccessModalityComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.html b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.html new file mode 100644 index 000000000..804ed8a8c --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.html @@ -0,0 +1 @@ +<p>structure-accompaniment-choice works!</p> diff --git a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.scss b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.spec.ts b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.spec.ts new file mode 100644 index 000000000..8d94bed18 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureAccompanimentChoiceComponent } from './structure-accompaniment-choice.component'; + +describe('StructureAccompanimentChoiceComponent', () => { + let component: StructureAccompanimentChoiceComponent; + let fixture: ComponentFixture<StructureAccompanimentChoiceComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureAccompanimentChoiceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureAccompanimentChoiceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts new file mode 100644 index 000000000..042e02cdb --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-accompaniment-choice', + templateUrl: './structure-accompaniment-choice.component.html', + styleUrls: ['./structure-accompaniment-choice.component.scss'] +}) +export class StructureAccompanimentChoiceComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.html b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.html new file mode 100644 index 000000000..2f74a7cac --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.html @@ -0,0 +1 @@ +<p>structure-choice-completion works!</p> diff --git a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.scss b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.spec.ts b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.spec.ts new file mode 100644 index 000000000..cd0a35a36 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureChoiceCompletionComponent } from './structure-choice-completion.component'; + +describe('StructureChoiceCompletionComponent', () => { + let component: StructureChoiceCompletionComponent; + let fixture: ComponentFixture<StructureChoiceCompletionComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureChoiceCompletionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureChoiceCompletionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts new file mode 100644 index 000000000..521aeb242 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-choice-completion', + templateUrl: './structure-choice-completion.component.html', + styleUrls: ['./structure-choice-completion.component.scss'] +}) +export class StructureChoiceCompletionComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.html b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.html new file mode 100644 index 000000000..1ba61c4cf --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.html @@ -0,0 +1 @@ +<p>structure-consent works!</p> diff --git a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.spec.ts b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.spec.ts new file mode 100644 index 000000000..03abf91f0 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureConsentComponent } from './structure-consent.component'; + +describe('StructureConsentComponent', () => { + let component: StructureConsentComponent; + let fixture: ComponentFixture<StructureConsentComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureConsentComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureConsentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts new file mode 100644 index 000000000..170010b7d --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-consent', + templateUrl: './structure-consent.component.html', + styleUrls: ['./structure-consent.component.scss'] +}) +export class StructureConsentComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html new file mode 100644 index 000000000..816d9f6d2 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html @@ -0,0 +1 @@ +<p>structure-contact-completion works!</p> diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.scss b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.spec.ts b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.spec.ts new file mode 100644 index 000000000..873c28d87 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureContactCompletionComponent } from './structure-contact-completion.component'; + +describe('StructureContactCompletionComponent', () => { + let component: StructureContactCompletionComponent; + let fixture: ComponentFixture<StructureContactCompletionComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureContactCompletionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureContactCompletionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts new file mode 100644 index 000000000..78655526f --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-contact-completion', + templateUrl: './structure-contact-completion.component.html', + styleUrls: ['./structure-contact-completion.component.scss'] +}) +export class StructureContactCompletionComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html new file mode 100644 index 000000000..e898bb2ec --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html @@ -0,0 +1 @@ +<p>structure-contact works!</p> diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.scss b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.spec.ts b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.spec.ts new file mode 100644 index 000000000..33e0e7511 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureContactComponent } from './structure-contact.component'; + +describe('StructureContactComponent', () => { + let component: StructureContactComponent; + let fixture: ComponentFixture<StructureContactComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureContactComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureContactComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts new file mode 100644 index 000000000..aaaa62968 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-contact', + templateUrl: './structure-contact.component.html', + styleUrls: ['./structure-contact.component.scss'] +}) +export class StructureContactComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.html b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.html new file mode 100644 index 000000000..2754bf5ee --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.html @@ -0,0 +1 @@ +<p>structure-covid-info works!</p> diff --git a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.spec.ts b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.spec.ts new file mode 100644 index 000000000..05af49779 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureCovidInfoComponent } from './structure-covid-info.component'; + +describe('StructureCovidInfoComponent', () => { + let component: StructureCovidInfoComponent; + let fixture: ComponentFixture<StructureCovidInfoComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureCovidInfoComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureCovidInfoComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts new file mode 100644 index 000000000..d9bad8046 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-covid-info', + templateUrl: './structure-covid-info.component.html', + styleUrls: ['./structure-covid-info.component.scss'] +}) +export class StructureCovidInfoComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-description/structure-description.component.html b/src/app/form/form-view/structure-form/structure-description/structure-description.component.html new file mode 100644 index 000000000..d59cc9455 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-description/structure-description.component.html @@ -0,0 +1 @@ +<p>structure-description works!</p> diff --git a/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss b/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-description/structure-description.component.spec.ts b/src/app/form/form-view/structure-form/structure-description/structure-description.component.spec.ts new file mode 100644 index 000000000..e28cfa732 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-description/structure-description.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureDescriptionComponent } from './structure-description.component'; + +describe('StructureDescriptionComponent', () => { + let component: StructureDescriptionComponent; + let fixture: ComponentFixture<StructureDescriptionComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureDescriptionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureDescriptionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts b/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts new file mode 100644 index 000000000..e2c631aba --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-description', + templateUrl: './structure-description.component.html', + styleUrls: ['./structure-description.component.scss'] +}) +export class StructureDescriptionComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html new file mode 100644 index 000000000..e160ae8b8 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html @@ -0,0 +1 @@ +<p>structure-digital-helping-accompaniment works!</p> diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.spec.ts b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.spec.ts new file mode 100644 index 000000000..b013915f4 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureDigitalHelpingAccompanimentComponent } from './structure-digital-helping-accompaniment.component'; + +describe('StructureDigitalHelpingAccompanimentComponent', () => { + let component: StructureDigitalHelpingAccompanimentComponent; + let fixture: ComponentFixture<StructureDigitalHelpingAccompanimentComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureDigitalHelpingAccompanimentComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureDigitalHelpingAccompanimentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts new file mode 100644 index 000000000..a71245716 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-digital-helping-accompaniment', + templateUrl: './structure-digital-helping-accompaniment.component.html', + styleUrls: ['./structure-digital-helping-accompaniment.component.scss'] +}) +export class StructureDigitalHelpingAccompanimentComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html new file mode 100644 index 000000000..ff4b7529e --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html @@ -0,0 +1 @@ +<p>structure-equipments works!</p> diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.spec.ts b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.spec.ts new file mode 100644 index 000000000..421d0b94c --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureEquipmentsComponent } from './structure-equipments.component'; + +describe('StructureEquipmentsComponent', () => { + let component: StructureEquipmentsComponent; + let fixture: ComponentFixture<StructureEquipmentsComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureEquipmentsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureEquipmentsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts new file mode 100644 index 000000000..6cf5236a2 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-equipments', + templateUrl: './structure-equipments.component.html', + styleUrls: ['./structure-equipments.component.scss'] +}) +export class StructureEquipmentsComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.html b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.html new file mode 100644 index 000000000..8281e0d23 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.html @@ -0,0 +1 @@ +<p>structure-hours works!</p> diff --git a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.scss b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.spec.ts b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.spec.ts new file mode 100644 index 000000000..2b0ad8038 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureHoursComponent } from './structure-hours.component'; + +describe('StructureHoursComponent', () => { + let component: StructureHoursComponent; + let fixture: ComponentFixture<StructureHoursComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureHoursComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureHoursComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts new file mode 100644 index 000000000..fa10105b1 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-hours', + templateUrl: './structure-hours.component.html', + styleUrls: ['./structure-hours.component.scss'] +}) +export class StructureHoursComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html new file mode 100644 index 000000000..33e80821d --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html @@ -0,0 +1 @@ +<p>structure-labels works!</p> diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.spec.ts b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.spec.ts new file mode 100644 index 000000000..760da6016 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureLabelsComponent } from './structure-labels.component'; + +describe('StructureLabelsComponent', () => { + let component: StructureLabelsComponent; + let fixture: ComponentFixture<StructureLabelsComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureLabelsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureLabelsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts new file mode 100644 index 000000000..953202b8b --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-labels', + templateUrl: './structure-labels.component.html', + styleUrls: ['./structure-labels.component.scss'] +}) +export class StructureLabelsComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html new file mode 100644 index 000000000..7f13e1a62 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html @@ -0,0 +1 @@ +<p>structure-name-and-address works!</p> diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.scss b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.spec.ts b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.spec.ts new file mode 100644 index 000000000..d0f0698ca --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureNameAndAddressComponent } from './structure-name-and-address.component'; + +describe('StructureNameAndAddressComponent', () => { + let component: StructureNameAndAddressComponent; + let fixture: ComponentFixture<StructureNameAndAddressComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureNameAndAddressComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureNameAndAddressComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts new file mode 100644 index 000000000..28769b105 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-name-and-address', + templateUrl: './structure-name-and-address.component.html', + styleUrls: ['./structure-name-and-address.component.scss'] +}) +export class StructureNameAndAddressComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html new file mode 100644 index 000000000..ec541dece --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html @@ -0,0 +1 @@ +<p>structure-other-services works!</p> diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.scss b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.spec.ts b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.spec.ts new file mode 100644 index 000000000..c2509b87a --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureOtherServicesComponent } from './structure-other-services.component'; + +describe('StructureOtherServicesComponent', () => { + let component: StructureOtherServicesComponent; + let fixture: ComponentFixture<StructureOtherServicesComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureOtherServicesComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureOtherServicesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts new file mode 100644 index 000000000..cf0ed862a --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-other-services', + templateUrl: './structure-other-services.component.html', + styleUrls: ['./structure-other-services.component.scss'] +}) +export class StructureOtherServicesComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html new file mode 100644 index 000000000..96a5e9393 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html @@ -0,0 +1 @@ +<p>structure-pmr works!</p> diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.scss b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.spec.ts b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.spec.ts new file mode 100644 index 000000000..fac5b5a7e --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructurePmrComponent } from './structure-pmr.component'; + +describe('StructurePmrComponent', () => { + let component: StructurePmrComponent; + let fixture: ComponentFixture<StructurePmrComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructurePmrComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructurePmrComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts new file mode 100644 index 000000000..0fea4fdc7 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-pmr', + templateUrl: './structure-pmr.component.html', + styleUrls: ['./structure-pmr.component.scss'] +}) +export class StructurePmrComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html new file mode 100644 index 000000000..392dfa839 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html @@ -0,0 +1 @@ +<p>structure-public-target works!</p> diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.spec.ts b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.spec.ts new file mode 100644 index 000000000..3fbc03952 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructurePublicTargetComponent } from './structure-public-target.component'; + +describe('StructurePublicTargetComponent', () => { + let component: StructurePublicTargetComponent; + let fixture: ComponentFixture<StructurePublicTargetComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructurePublicTargetComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructurePublicTargetComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts new file mode 100644 index 000000000..8ae26e57d --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-public-target', + templateUrl: './structure-public-target.component.html', + styleUrls: ['./structure-public-target.component.scss'] +}) +export class StructurePublicTargetComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html new file mode 100644 index 000000000..a2e8eb480 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html @@ -0,0 +1 @@ +<p>structure-training-price works!</p> diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.scss b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.spec.ts b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.spec.ts new file mode 100644 index 000000000..79536f255 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureTrainingPriceComponent } from './structure-training-price.component'; + +describe('StructureTrainingPriceComponent', () => { + let component: StructureTrainingPriceComponent; + let fixture: ComponentFixture<StructureTrainingPriceComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureTrainingPriceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureTrainingPriceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts new file mode 100644 index 000000000..741736f1c --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-training-price', + templateUrl: './structure-training-price.component.html', + styleUrls: ['./structure-training-price.component.scss'] +}) +export class StructureTrainingPriceComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html new file mode 100644 index 000000000..992faee8d --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html @@ -0,0 +1 @@ +<p>structure-web-and-social-network works!</p> diff --git a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.spec.ts b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.spec.ts new file mode 100644 index 000000000..594b174f8 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureWebAndSocialNetworkComponent } from './structure-web-and-social-network.component'; + +describe('StructureWebAndSocialNetworkComponent', () => { + let component: StructureWebAndSocialNetworkComponent; + let fixture: ComponentFixture<StructureWebAndSocialNetworkComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureWebAndSocialNetworkComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureWebAndSocialNetworkComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.ts b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.ts new file mode 100644 index 000000000..f338631d6 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-web-and-social-network', + templateUrl: './structure-web-and-social-network.component.html', + styleUrls: ['./structure-web-and-social-network.component.scss'] +}) +export class StructureWebAndSocialNetworkComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html new file mode 100644 index 000000000..710fd404e --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html @@ -0,0 +1 @@ +<p>structure-wifi works!</p> diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.scss b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.spec.ts b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.spec.ts new file mode 100644 index 000000000..1a3f7bfdf --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureWifiComponent } from './structure-wifi.component'; + +describe('StructureWifiComponent', () => { + let component: StructureWifiComponent; + let fixture: ComponentFixture<StructureWifiComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureWifiComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureWifiComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts new file mode 100644 index 000000000..2aecbdecb --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-structure-wifi', + templateUrl: './structure-wifi.component.html', + styleUrls: ['./structure-wifi.component.scss'] +}) +export class StructureWifiComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index d73d5cb72..8d2a43a73 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -4,7 +4,6 @@ export enum structureFormStep { structureAccompanimentChoice, structureChoiceCompletion, structureContactCompletion, - structurePhone, structureCreationInfo, structureType, structureAccessModality, -- GitLab From 68cfd0b87e196eb3493eff80b19f72cd9c1a9b95 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 13:54:33 +0100 Subject: [PATCH 053/199] wrap labels --- src/app/form/structure-form/form.component.html | 2 +- src/app/form/structure-form/form.component.scss | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 127b45a50..757769122 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -1173,7 +1173,7 @@ <h3>Quelle(s) labelisation proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> - <div *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start"> + <div class="labelsQualifications" *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutAlign="flex-start"> <app-checkbox-form *ngFor="let module of labelsQualifications.modules" [isChecked]="isInArray(module.id, labelsQualifications.id)" diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 97ca065bd..fa9d9d3b5 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -179,6 +179,9 @@ h4 { .textareaBlock { max-width: 600px; } + .labelsQualifications { + gap: 0 8px; + } } .titleDesc { @include lato-bold-20; -- GitLab From b096372e361cbb3613d261617e8d720dba1ed1b2 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 14:47:51 +0100 Subject: [PATCH 054/199] scroll bar --- src/app/app.component.html | 4 +- .../form/structure-form/form.component.html | 40 +++++++++---------- .../form/structure-form/form.component.scss | 6 ++- src/app/form/structure-form/form.component.ts | 2 +- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index aa331e09e..9c3155c1e 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -3,6 +3,8 @@ <div (scroll)="onScrollDown($event)" class="app-body"> <router-outlet></router-outlet> <router-outlet name="print"></router-outlet> - <app-footer></app-footer> + <!-- <app-footer> + commented to use outlet in another branch + </app-footer> --> </div> </div> diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 757769122..f19e3bfb4 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -1314,27 +1314,27 @@ <p *ngIf="!isEditMode" class="informationEndForm"> <span class="asterisk">*</span> Les informations recueillies sont enregistrées dans un fichier par la Métropole de Lyon en vue de l'animation du réseau des acteurs de la médiation numérique. Elles sont conservées - pendant 24 mois et sont destinées aux seuls intervenants habilités de la Métropole de Lyon. Vos données - personnelles sont traitées dans ce cadre aux fins de recensement des actions de médiation numérique sur le - territoire de la métropole. Conformément à la loi 78-17 du 6 janvier 1978 modifiée relative à l'information, - aux fichiers et aux libertés, et au Règlement Général européen à la Protection des Données, vous avez la - possibilité d’exercer vos droits d’accès, de rectification, d’effacement, d’opposition, de limitation du - traitement et de révocation de votre consentement. Afin d'exercer vos droits, vous pouvez vous adresser : par - courrier postal à : Métropole de Lyon - Direction des Affaires Juridiques et de la Commande Publique - 20, rue - du Lac - BP 33569 - 69505 Lyon Cedex par courrier électronique en remplissant le formulaire dédié sur Toodego, - le site des services et démarches en ligne dans la Métropole de Lyon + pendant 24 mois et sont destinées aux seuls intervenants habilités de la Métropole de Lyon.<br /> + Vos données personnelles sont traitées dans ce cadre aux fins de recensement des actions de médiation + numérique sur le territoire de la métropole. Conformément à la loi 78-17 du 6 janvier 1978 modifiée relative à + l'information, aux fichiers et aux libertés, et au Règlement Général européen à la Protection des Données, + vous avez la possibilité d’exercer vos droits d’accès, de rectification, d’effacement, d’opposition, de + limitation du traitement et de révocation de votre consentement. Afin d'exercer vos droits, vous pouvez vous + adresser : <br /> + - par courrier postal à : Métropole de Lyon - Direction des Affaires Juridiques et de la Commande Publique - + 20, rue du Lac - BP 33569 - 69505 Lyon Cedex<br /> + - par courrier électronique en remplissant le formulaire dédié sur Toodego, le site des services et démarches + en ligne dans la Métropole de Lyon + </p> + <p class="informationEndForm" *ngIf="currentPage == pageTypeEnum.cgu"> + <span class="asterisk" *ngIf="!isEditMode">**</span><span class="asterisk" *ngIf="isEditMode">*</span> La + Métropole de Lyon, engagée pour la transparence de l’action publique et la valorisation de ses partenaires, + encourage l’ouverture des données. Les données de votre structure seront publiées sur la plateforme + <a href="https://data.grandlyon.com/" target="_blank">https://data.grandlyon.com/</a> sous la licence ouverte + (open data) et seront donc librement accessibles et réutilisables. Vous pourrez modifier votre choix à tout + moment, exercer vos droits d’accès et de modification, en le signifiant, par tout moyen à votre convenance, + auprès de vos interlocuteurs de la Métropole de Lyon. </p> - <div class="page" *ngIf="currentPage == pageTypeEnum.cgu"> - <p class="informationEndForm"> - <span class="asterisk" *ngIf="!isEditMode">**</span><span class="asterisk" *ngIf="isEditMode">*</span> La - Métropole de Lyon, engagée pour la transparence de l’action publique et la valorisation de ses partenaires, - encourage l’ouverture des données. Les données de votre structure seront publiées sur la plateforme - <a href="https://data.grandlyon.com/" target="_blank">https://data.grandlyon.com/</a> sous la licence - ouverte (open data) et seront donc librement accessibles et réutilisables. Vous pourrez modifier votre choix - à tout moment, exercer vos droits d’accès et de modification, en le signifiant, par tout moyen à votre - convenance, auprès de vos interlocuteurs de la Métropole de Lyon. - </p> - </div> </div> </form> <div diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index fa9d9d3b5..47d5f6afc 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -21,7 +21,7 @@ h4 { .form { background: $grey-7; width: 100vw; - height: calc(var(--vh, 1vh) * 100 - #{$header-height} - #{$footer-height}); + height: calc(var(--vh, 1vh) * 100 - #{$header-height}); top: #{$header-height}; z-index: $structure-details-z-index; @media #{$tablet} { @@ -32,7 +32,7 @@ h4 { .footer { width: 100%; - max-width: 960px; + max-width: 1000px; margin: 20px auto; text-align: center; &.desktop { @@ -131,6 +131,8 @@ h4 { box-sizing: border-box; margin: auto; min-height: 450px; + max-height: 75vh; + overflow-y: auto; color: $grey-1; background: $white; border-radius: 8px; diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index f5b28a7cf..5d044d5df 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,7 +48,7 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 18; // Change this value to start on a different page for dev testing + public currentPage = 23; // Change this value to start on a different page for dev testing // screen 6 structure type public progressStatus = 37; public nbPagesForm = 24; -- GitLab From 4e4a2ed01e344a5ac8b89afc588e00c8053b54e5 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 16:34:40 +0100 Subject: [PATCH 055/199] structure form --- .../form/structure-form/form.component.html | 2 +- src/app/form/structure-form/form.component.ts | 2 +- .../structure-type-picker.component.html | 151 +++++++++++++++--- .../structure-type-picker.component.scss | 104 +++++++++++- .../structure-type-picker.component.ts | 48 ++++++ 5 files changed, 272 insertions(+), 35 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index f19e3bfb4..25743a40a 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -852,7 +852,7 @@ (click)="updateChoice(choice.id, 'publics')" [ngClass]="{ selectedChoice: isInArray(choice.id, 'publics') }" > - <div fxLayout="row" fxLayoutAlign=" center"> + <div fxLayout="row" fxLayoutAlign="center"> <svg class="validate" aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> </svg> diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index 5d044d5df..b1f9eb1bd 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,7 +48,7 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 23; // Change this value to start on a different page for dev testing + public currentPage = 6; // Change this value to start on a different page for dev testing // screen 6 structure type public progressStatus = 37; public nbPagesForm = 24; diff --git a/src/app/shared/components/structure-type-picker/structure-type-picker.component.html b/src/app/shared/components/structure-type-picker/structure-type-picker.component.html index 3613f3efb..937635b75 100644 --- a/src/app/shared/components/structure-type-picker/structure-type-picker.component.html +++ b/src/app/shared/components/structure-type-picker/structure-type-picker.component.html @@ -1,32 +1,133 @@ -<div class="container" fxLayout="column"> - <div fxLayout="row" fxLayoutAlign="center center" fxLayoutGap="30px"> - <div - class="boutonSection" - [ngClass]="{ selectedType: type.name == pickedType }" - *ngFor="let type of structureTypes" - > - <button (click)="pickType(type.name)"> - <div class="containerBtn"> - <div class="btn"> +<div class="container"> + <div + class="boutonSection" + [ngClass]="{ selectedType: type.name == pickedType }" + *ngFor="let type of structureTypes" + fxLayout="column" + fxLayoutGap="8px" + > + <ng-container *ngIf="type.name === 'Publique'"> + <div fxLayout="column" class="collapse" [ngClass]="{ notCollapsed: !showPublic }"> + <div + class="collapseHeader" + fxLayoutAlign="flex-start center" + fxLayout="row" + (click)="toggleCollapse(type.name)" + > + <div class="svgContainer"> <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#' + getStructureTypeIcon(type.name)"></use> </svg> </div> + <div class="titleCollapse"> + {{ type.name }} + </div> + <div class="logo"> + <svg class="show" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#show'"></use> + </svg> + <svg class="hide" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#hide'"></use> + </svg> + </div> </div> - </button> - <div class="btnText" fxLayoutAlign="center center">{{ type.name }}</div> - </div> - </div> - <div *ngIf="pickedType" class="tags"> - <button - *ngFor="let choice of getChoices(pickedType)" - (click)="pickChoice(choice)" - [ngClass]="{ selectedChoice: choice == pickedChoice }" - > - <svg *ngIf="choice == pickedChoice" class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> - </svg> - {{ getStructureTypeName(choice) }} - </button> + <div *ngIf="showPublic" class="inputSection"> + <div class="tags"> + <button + *ngFor="let choice of getChoices(pickedType)" + (click)="pickChoice(choice)" + [ngClass]="{ selectedChoice: choice == pickedChoice }" + > + <svg *ngIf="choice == pickedChoice" class="validate" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> + </svg> + {{ getStructureTypeName(choice) }} + </button> + </div> + </div> + </div> + </ng-container> + <ng-container *ngIf="type.name === 'Privée à but non lucratif'"> + <div fxLayout="column" class="collapse" [ngClass]="{ notCollapsed: !showPrivate }"> + <div + class="collapseHeader" + fxLayoutAlign="flex-start center" + fxLayout="row" + (click)="toggleCollapse(type.name)" + > + <div class="svgContainer"> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#' + getStructureTypeIcon(type.name)"></use> + </svg> + </div> + <div class="titleCollapse"> + {{ type.name }} + </div> + <div class="logo"> + <svg class="show" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#show'"></use> + </svg> + <svg class="hide" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#hide'"></use> + </svg> + </div> + </div> + <div *ngIf="showPrivate" class="inputSection"> + <div class="tags"> + <button + *ngFor="let choice of getChoices(pickedType)" + (click)="pickChoice(choice)" + [ngClass]="{ selectedChoice: choice == pickedChoice }" + > + <svg *ngIf="choice == pickedChoice" class="validate" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> + </svg> + {{ getStructureTypeName(choice) }} + </button> + </div> + </div> + </div> + </ng-container> + <ng-container *ngIf="type.name === 'Privée à but lucratif'"> + <div fxLayout="column" class="collapse" [ngClass]="{ notCollapsed: !showPrivateLucrative }"> + <div + class="collapseHeader" + fxLayoutAlign="flex-start center" + fxLayout="row" + (click)="toggleCollapse(type.name)" + > + <div class="svgContainer"> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#' + getStructureTypeIcon(type.name)"></use> + </svg> + </div> + <div class="titleCollapse"> + {{ type.name }} + </div> + <div class="logo"> + <svg class="show" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#show'"></use> + </svg> + <svg class="hide" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#hide'"></use> + </svg> + </div> + </div> + <div *ngIf="showPrivateLucrative" class="inputSection"> + <div class="tags"> + <button + *ngFor="let choice of getChoices(pickedType)" + (click)="pickChoice(choice)" + [ngClass]="{ selectedChoice: choice == pickedChoice }" + > + <svg *ngIf="choice == pickedChoice" class="validate" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> + </svg> + {{ getStructureTypeName(choice) }} + </button> + </div> + </div> + </div> + </ng-container> </div> </div> diff --git a/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss b/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss index d3c5589af..c68835c5c 100644 --- a/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss +++ b/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss @@ -1,10 +1,8 @@ @import '../../../../assets/scss/typography'; @import '../../../../assets/scss/color'; @import '../../../../assets/scss/shapes'; +@import '../../../../assets/scss/breakpoint'; -.container { - height: 100%; -} button { outline: none; border: none; @@ -16,6 +14,7 @@ button { height: 100%; button { background: $grey-8; + text-align: center; border-radius: 20px; margin: 4px; max-width: 100%; @@ -31,7 +30,6 @@ button { color: $white; } .selectedType { - background: $grey-8; .btnText { color: $primary-color; } @@ -41,8 +39,6 @@ button { } } .boutonSection { - text-align: center; - width: 99px; padding-top: 9px; border-radius: 6px 6px 0px 0px; .btnText { @@ -82,8 +78,6 @@ button { svg { width: 28px; height: 40px; - fill: $primary-color; - stroke: $primary-color; &.validate { width: 13px; height: 10px; @@ -91,3 +85,97 @@ svg { stroke: $white; } } + +.collapse { + border: 1px solid $grey-5; + border-radius: 4px; + @media #{$small-phone} { + width: 95% !important; + } + @media #{$tablet} { + width: 296px; + } + &.notCollapsed { + background: $grey-8; + .logo { + .hide { + display: none; + } + .show { + display: block; + } + } + } + .inputSection { + padding: 0px 15px 19px 12px; + svg { + border-right: 0; + padding-left: 16px; + } + } + .collapseHeader { + .titleCollapse { + width: 100%; + @include lato-bold-14; + color: $grey-1; + } + .svgContainer { + height: 48px; + width: 48px; + svg { + margin-right: 8px; + stroke: $grey-1; + fill: $grey-1; + } + } + } + .collapseHeader { + height: 65px; + padding: 0 15px 0 12px; + cursor: pointer; + } + .logo { + height: 24px; + width: 24px; + svg { + width: 100%; + height: 100%; + fill: $grey-1; + } + } + .logo, + .titleCollapse { + .hide { + display: block; + } + .show { + display: none; + } + } +} + +.tags { + padding: 8px; + button { + background: $grey-8; + border-radius: 20px; + margin: 4px; + max-width: 100%; + height: 40px; + padding: 0 13px; + @include lato-bold-14; + outline: none; + border: none; + cursor: pointer; + &.selectedChoice { + background: $green-1 !important; + color: $white; + } + } + svg { + width: 20px; + height: 10px; + margin-right: 4px; + stroke: $grey-8; + } +} diff --git a/src/app/shared/components/structure-type-picker/structure-type-picker.component.ts b/src/app/shared/components/structure-type-picker/structure-type-picker.component.ts index b64a4718f..31d97f35d 100644 --- a/src/app/shared/components/structure-type-picker/structure-type-picker.component.ts +++ b/src/app/shared/components/structure-type-picker/structure-type-picker.component.ts @@ -1,5 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { StructureType } from '../../../models/structure-type.model'; +import { Structure } from '../../../models/structure.model'; import { StructureTypeService } from '../../../services/structure-type.service'; import { typeStructureEnum } from '../../enum/typeStructure.enum'; @@ -20,6 +21,11 @@ export class StructureTypePickerComponent implements OnInit { @Input() public pickedChoice?: string; @Output() selectedType: EventEmitter<string> = new EventEmitter<string>(); + // Collapse var + public showPublic: boolean; + public showPrivate: boolean; + public showPrivateLucrative: boolean; + constructor(private structureTypeService: StructureTypeService) {} ngOnInit() { @@ -31,6 +37,40 @@ export class StructureTypePickerComponent implements OnInit { }); } + public togglePublic(): void { + this.showPublic = !this.showPublic; + this.showPrivate = false; + this.showPrivateLucrative = false; + if (!this.showPublic) { + // this.getStructureControl('website').reset(); + // remove to form + } + // this.setValidationsForm(); + // add to form + } + public togglePrivate(): void { + this.showPrivate = !this.showPrivate; + this.showPrivateLucrative = false; + this.showPublic = false; + if (!this.showPublic) { + // this.getStructureControl('website').reset(); + // remove to form + } + // this.setValidationsForm(); + // add to form + } + public togglePrivateLucrative(): void { + this.showPrivateLucrative = !this.showPrivateLucrative; + this.showPrivate = false; + this.showPublic = false; + if (!this.showPublic) { + // this.getStructureControl('website').reset(); + // remove to form + } + // this.setValidationsForm(); + // add to form + } + public getType(nameChoice: string): string { return this.structureTypes.filter((type) => { if (type.values.includes(nameChoice)) { @@ -47,6 +87,13 @@ export class StructureTypePickerComponent implements OnInit { })[0].values; } + public toggleCollapse(structureName: string): void { + this.pickType(structureName); + if (structureName === 'Publique') this.togglePublic(); + if (structureName === 'Privée à but non lucratif') this.togglePrivate(); + if (structureName === 'Privée à but lucratif') this.togglePrivateLucrative(); + } + public pickType(type: string): void { this.pickedType = type; } @@ -68,6 +115,7 @@ export class StructureTypePickerComponent implements OnInit { throw new Error('Structure type not handle'); } } + public getStructureTypeName(type: string): string { return typeStructureEnum[type]; } -- GitLab From 9f33e2fc6f864ecc1ce12569864e0d33dd21d1d8 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 16:52:32 +0100 Subject: [PATCH 056/199] structure address --- src/app/form/structure-form/form.component.html | 2 +- .../address-autocomplete/address-autocomplete.component.scss | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 25743a40a..1e9244f13 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -38,7 +38,7 @@ ></progress> </div> </div> - <div *ngIf="displayAddStructure()" class="home page" fxLayout="column" fxLayoutAlign="space-between"> + <div *ngIf="displayAddStructure()" class="home page" fxLayout="column" fxLayoutAlign="center center"> <h2>Ajouter votre structure</h2> <img src="../../assets/form/schedule.svg" alt="logo schedule" /> <div> diff --git a/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss b/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss index 5332c145c..f1bcd5b25 100644 --- a/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss +++ b/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss @@ -3,12 +3,15 @@ .search-bar { display: flex; flex-direction: column; + * { + width: 400px; + } } .autocomplete-items { border: 0.0625rem solid #d4d4d4; + box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.25); border-top: none; border-bottom: none; - max-width: 294px; z-index: 99; background-color: #fff; cursor: pointer; -- GitLab From bd642f97f276a3dc620d69e0c69c9721e25c1d43 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 16:57:37 +0100 Subject: [PATCH 057/199] default page to 0 --- src/app/form/structure-form/form.component.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index b1f9eb1bd..1dd305209 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,9 +48,8 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 6; // Change this value to start on a different page for dev testing - // screen 6 structure type - public progressStatus = 37; + public currentPage = 0; // Change this value to start on a different page for dev testing + public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; public pagesValidation = []; -- GitLab From 1c11aa90a599a77ab17b20e82e7f1dac447df443 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 17:00:03 +0100 Subject: [PATCH 058/199] progress bar red only --- src/app/form/structure-form/form.component.scss | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index 47d5f6afc..eb04d620d 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -284,19 +284,11 @@ h4 { background-color: $primary-color; border-radius: 12px; } - &.validate { - &::-webkit-progress-value { - background-color: $green-1; - } - } } label { @include lato-bold-14; color: $primary-color; min-width: 26px; - &.validate { - color: $green-1; - } } } .form-group { -- GitLab From 56e2a6a14b4b348fdb9580af1ea7bb35bd4f7c75 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 17:17:47 +0100 Subject: [PATCH 059/199] password info selection --- .../form/structure-form/form.component.html | 20 +++++------ .../form/structure-form/form.component.scss | 34 +++++++++++-------- src/app/form/structure-form/form.component.ts | 2 +- .../svg-icon/svg-icon.component.scss | 12 ++++--- 4 files changed, 38 insertions(+), 30 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 1e9244f13..266ba23a8 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -248,13 +248,13 @@ > <app-svg-icon *ngIf="accountForm.get('password').value.length >= 8" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="accountForm.get('password').value.length < 8" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -268,13 +268,13 @@ > <app-svg-icon *ngIf="checkIfPasswordHasSpecialChar(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="!checkIfPasswordHasSpecialChar(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -288,13 +288,13 @@ > <app-svg-icon *ngIf="checkIfPasswordHasLowerCase(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="!checkIfPasswordHasLowerCase(accountForm.get('password').value); s" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -308,13 +308,13 @@ > <app-svg-icon *ngIf="checkIfPasswordHasUpperCase(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="!checkIfPasswordHasUpperCase(accountForm.get('password').value); s" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -328,13 +328,13 @@ > <app-svg-icon *ngIf="checkIfPasswordHasDigit(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="!checkIfPasswordHasDigit(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index eb04d620d..c8be5265d 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -310,21 +310,25 @@ h4 { } ul { padding-left: 0; - } - li { - display: flex; - margin-left: 1%; - font-size: small; - align-items: center; - p { - margin-left: 10px; - margin-top: unset; - } - &.valid { - color: $green; - } - &.invalid { - color: $orange-warning; + li { + display: flex; + margin-left: 1%; + font-size: small; + align-items: center; + p { + margin-left: 10px; + margin-top: unset; + @include lato-regular-14; + } + &.valid { + color: $green; + } + &.invalid { + color: $orange-warning; + p { + color: $orange-warning; + } + } } } .addressRow { diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index 1dd305209..9aa7d63bf 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,7 +48,7 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 0; // Change this value to start on a different page for dev testing + public currentPage = 3; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; diff --git a/src/app/shared/components/svg-icon/svg-icon.component.scss b/src/app/shared/components/svg-icon/svg-icon.component.scss index 60e602bfd..a9bfa0105 100644 --- a/src/app/shared/components/svg-icon/svg-icon.component.scss +++ b/src/app/shared/components/svg-icon/svg-icon.component.scss @@ -7,6 +7,14 @@ width: unset; height: unset; } + &.icon-16 { + height: 16px; + width: 16px; + } + &.icon-26 { + height: 26px; + width: 26px; + } &.icon-28 { width: 28px; height: 28px; @@ -21,10 +29,6 @@ height: 80px; width: 80px; } - &.icon-26 { - height: 26px; - width: 26px; - } &.validation { height: 40px; width: 20px; -- GitLab From 6b502c615f5b6acefcb8baeb4e8303e6e85b4df8 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 17:29:49 +0100 Subject: [PATCH 060/199] wording --- .../form/structure-form/form.component.html | 22 +++++++++---------- .../form/structure-form/form.component.scss | 9 ++++++-- src/app/form/structure-form/form.component.ts | 2 +- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index 266ba23a8..a526561fe 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -544,7 +544,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureAccessModality" class="page"> <div class="title"> - <h3>Quelles sont les modalités d'accueil ?</h3> + <h3>Quelles sont les modalités d'accueil de la structure ?</h3> <p>Plusieurs choix possibles</p> </div> <p class="missing-information" *ngIf="isEditMode && !getStructureControl('accessModality').valid"> @@ -576,7 +576,7 @@ <div *ngIf="currentPage == pageTypeEnum.structureHours" class="page"> <div class="section"> <div class="title"> - <h3>Quels sont les horaires d'ouverture ?</h3> + <h3>Quels sont les horaires d'ouverture de la structure ?</h3> <p class="notRequired">Facultatif</p> </div> <app-hour-picker @@ -610,7 +610,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structurePmr" class="page"> <div class="title"> - <h3>Est-ce accessible pour les personnes à mobilité réduite ?</h3> + <h3>La structure est-elle accessible pour les personnes à mobilité réduite ?</h3> </div> <p class="missing-information" *ngIf="isEditMode && !getStructureControl('pmrAccess').valid"> <app-svg-icon @@ -629,7 +629,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureWebAndSocialNetwork" class="page"> <div class="title"> - <h3>Comment vous trouver sur internet ?</h3> + <h3>Comment vous trouver la structure sur internet ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="collapse" [ngClass]="{ notCollapsed: !showWebsite }"> @@ -834,7 +834,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structurePublicTarget" class="page"> <div class="title"> - <h3>Quel public peut venir vous consulter ?</h3> + <h3>Quel public peut être accueilli dans cette structure ?</h3> <p>Plusieurs choix possibles</p> </div> <p class="missing-information" *ngIf="isEditMode && !getStructureControl('publics').valid"> @@ -984,7 +984,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureWorkshop" class="page"> <div class="title"> - <h3>Quel(s) atelier(s) au numérique proposez-vous ?</h3> + <h3>Quelles formations au numérique sont proposées ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="collapse" *ngFor="let categ of trainingCategories" [ngClass]="{ notCollapsed: !categ.openned }"> @@ -1037,7 +1037,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureWifi" class="page"> <div class="title"> - <h3>Proposez-vous le wifi en accès libre ?</h3> + <h3>Le wifi est-il proposé en accès libre ?</h3> </div> <app-radio-form [selectedOption]=" @@ -1170,7 +1170,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureLabels" class="page"> <div class="title"> - <h3>Quelle(s) labelisation proposez-vous ?</h3> + <h3>La sturcture est labellisée ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="labelsQualifications" *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutAlign="flex-start"> @@ -1187,7 +1187,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureOtherServices" class="page"> <div class="title"> - <h3>Quels autres services proposez-vous ?</h3> + <h3>Quels autres services sont proposées par la structure ?</h3> <p class="notRequired">Facultatif</p> </div> <div @@ -1218,7 +1218,7 @@ </div> <div *ngIf="currentPage == pageTypeEnum.structureDescription" class="page"> <div class="title"> - <h3>Pouvez vous présentez votre structure ?</h3> + <h3>Pouvez-vous présentez votre structure en quelques mots ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="textareaBlock introduceStructure" fxLayout="column"> @@ -1256,7 +1256,7 @@ </div> </form> <form> - <div *ngIf="currentPage == pageTypeEnum.cgu" class="page"> + <div *ngIf="currentPage == pageTypeEnum.cgu" class="page cgu"> <div class="section" *ngIf="!isEditMode"> <div class="title"> <h3> diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index c8be5265d..c42df8856 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -598,8 +598,13 @@ img { margin-right: 12px; } -.asterisk { - color: $primary-color; +.cgu { + h3 { + @include lato-bold-18; + } + .asterisk { + color: $primary-color; + } } .structureInfoBlock { diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index 9aa7d63bf..d10d809c5 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,7 +48,7 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 3; // Change this value to start on a different page for dev testing + public currentPage = 23; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; -- GitLab From 3b6a9ace8d3f823aed5f7ccbb81c925b815c595f Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 17 Mar 2022 17:31:34 +0100 Subject: [PATCH 061/199] page 0 --- src/app/form/structure-form/form.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index d10d809c5..1dd305209 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -48,7 +48,7 @@ export class FormComponent implements OnInit { public linkedStructureId: Array<string> = null; // Page and progress var - public currentPage = 23; // Change this value to start on a different page for dev testing + public currentPage = 0; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; -- GitLab From e82ccf4dd7c31621f37274f3d483aaeecbd56b57 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Fri, 18 Mar 2022 09:54:20 +0100 Subject: [PATCH 062/199] add routing and account form --- src/app/app-routing.module.ts | 5 + src/app/app.module.ts | 74 +----- .../account-credentials.component.html | 211 +++++++++++++++++- .../account-credentials.component.ts | 49 +++- .../account-form/account-form.component.html | 22 +- .../account-form/account-form.component.ts | 112 +++++++++- .../account-info/account-info.component.html | 82 ++++++- .../account-info/account-info.component.ts | 19 +- .../account-form/accountFormStep.enum.ts | 6 +- .../form-view/form-view-routing.module.ts | 37 +++ .../form/form-view/form-view.component.html | 16 +- src/app/form/form-view/form-view.component.ts | 26 ++- src/app/form/form-view/form-view.module.ts | 83 +++++++ src/app/form/form-view/formType.enum.ts | 6 + .../information-step.component.html | 4 +- .../information-step.component.ts | 13 +- .../progress-bar/progress-bar.component.html | 17 +- .../progress-bar/progress-bar.component.ts | 21 +- .../profile-form/profile-form.component.html | 2 +- .../profile-form/profile-form.component.ts | 12 +- 20 files changed, 702 insertions(+), 115 deletions(-) create mode 100644 src/app/form/form-view/form-view-routing.module.ts create mode 100644 src/app/form/form-view/form-view.module.ts create mode 100644 src/app/form/form-view/formType.enum.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index ea7f55407..af73fa82b 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -21,6 +21,7 @@ import { StructureListPrintComponent } from './form/orientation-form/component/s import { StructureResolver } from './resolvers/structure.resolver'; import { RoleGuard } from './guards/role.guard'; import { RouteRole } from './shared/enum/routeRole.enum'; +import { FormViewComponent } from './form/form-view/form-view.component'; const routes: Routes = [ { path: 'print', outlet: 'print', children: [{ path: 'structure', component: StructureDetailsComponent }] }, @@ -116,6 +117,10 @@ const routes: Routes = [ canActivate: [AdminGuard], loadChildren: () => import('./admin/admin.module').then((m) => m.AdminModule), }, + { + path: 'form', + loadChildren: () => import('./form/form-view/form-view.module').then((m) => m.FormViewModule), + }, { path: 'home', redirectTo: 'news', diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 89c2fce78..a556ee367 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -30,7 +30,6 @@ import { ResetEmailComponent } from './reset-email/reset-email.component'; import { ResetPasswordComponent } from './reset-password/reset-password.component'; import { AdminGuard } from './guards/admin.guard'; import { DeactivateGuard } from './guards/deactivate.guard'; -import { FooterFormComponent } from './form/footer-form/footer-form.component'; import { TempUserResolver } from './resolvers/temp-user.resolver'; import { StructureJoinComponent } from './structure-join/structure-join.component'; import { RouterListenerService } from './services/routerListener.service'; @@ -46,41 +45,7 @@ import { StructureResolver } from './resolvers/structure.resolver'; import { RoleGuard } from './guards/role.guard'; import { UpdateService } from './services/update.service'; import { DataShareConsentComponent } from './shared/components/data-share-consent/data-share-consent.component'; -import { FormViewComponent } from './form/form-view/form-view.component'; -import { ProgressBarComponent } from './form/form-view/global-components/progress-bar/progress-bar.component'; -import { NavigationButtonsComponent } from './form/form-view/global-components/navigation-buttons/navigation-buttons.component'; -import { StructureFormComponent } from './form/form-view/structure-form/structure-form.component'; -import { ProfileFormComponent } from './form/form-view/profile-form/profile-form.component'; -import { PersonnalOfferFormComponent } from './form/form-view/personnal-offer-form/personnal-offer-form.component'; -import { InformationStepComponent } from './form/form-view/global-components/information-step/information-step.component'; -import { AccountFormComponent } from './form/form-view/account-form/account-form.component'; -import { TrainingTypeComponent } from './form/form-view/global-components/training-type/training-type.component'; -import { PublicAccompanimentComponent } from './form/form-view/global-components/public-accompaniment/public-accompaniment.component'; -import { ProfileEmployerSelectionComponent } from './form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component'; -import { ProfileJobSelectionComponent } from './form/form-view/profile-form/profile-job-selection/profile-job-selection.component'; -import { ProfileStructureChoiceComponent } from './form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component'; -import { PersonnalOfferOtherStructureChoiceComponent } from './form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component'; -import { StructureNameAndAddressComponent } from './form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component'; -import { StructureContactComponent } from './form/form-view/structure-form/structure-contact/structure-contact.component'; -import { StructureAccompanimentChoiceComponent } from './form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component'; -import { StructureChoiceCompletionComponent } from './form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component'; -import { StructureContactCompletionComponent } from './form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component'; -import { StructureAccessModalityComponent } from './form/form-view/structure-form/structure-access-modality/structure-access-modality.component'; -import { StructureHoursComponent } from './form/form-view/structure-form/structure-hours/structure-hours.component'; -import { StructurePmrComponent } from './form/form-view/structure-form/structure-pmr/structure-pmr.component'; -import { StructureWebAndSocialNetworkComponent } from './form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component'; -import { StructurePublicTargetComponent } from './form/form-view/structure-form/structure-public-target/structure-public-target.component'; -import { StructureDigitalHelpingAccompanimentComponent } from './form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component'; -import { StructureTrainingPriceComponent } from './form/form-view/structure-form/structure-training-price/structure-training-price.component'; -import { StructureWifiComponent } from './form/form-view/structure-form/structure-wifi/structure-wifi.component'; -import { StructureEquipmentsComponent } from './form/form-view/structure-form/structure-equipments/structure-equipments.component'; -import { StructureLabelsComponent } from './form/form-view/structure-form/structure-labels/structure-labels.component'; -import { StructureOtherServicesComponent } from './form/form-view/structure-form/structure-other-services/structure-other-services.component'; -import { StructureDescriptionComponent } from './form/form-view/structure-form/structure-description/structure-description.component'; -import { StructureCovidInfoComponent } from './form/form-view/structure-form/structure-covid-info/structure-covid-info.component'; -import { StructureConsentComponent } from './form/form-view/structure-form/structure-consent/structure-consent.component'; -import { AccountInfoComponent } from './form/form-view/account-form/account-info/account-info.component'; -import { AccountCredentialsComponent } from './form/form-view/account-form/account-credentials/account-credentials.component'; +import { FormViewModule } from './form/form-view/form-view.module'; @NgModule({ declarations: [ @@ -101,7 +66,6 @@ import { AccountCredentialsComponent } from './form/form-view/account-form/accou ResetEmailComponent, ResetPasswordComponent, FormComponent, - FooterFormComponent, StructureJoinComponent, NewsletterSubscriptionComponent, OrientationFormComponent, @@ -110,41 +74,6 @@ import { AccountCredentialsComponent } from './form/form-view/account-form/accou StructurePrintHeaderComponent, DataShareConsentComponent, OrientationComponent, - FormViewComponent, - ProgressBarComponent, - NavigationButtonsComponent, - StructureFormComponent, - ProfileFormComponent, - PersonnalOfferFormComponent, - InformationStepComponent, - AccountFormComponent, - TrainingTypeComponent, - PublicAccompanimentComponent, - ProfileEmployerSelectionComponent, - ProfileJobSelectionComponent, - ProfileStructureChoiceComponent, - PersonnalOfferOtherStructureChoiceComponent, - StructureNameAndAddressComponent, - StructureContactComponent, - StructureAccompanimentChoiceComponent, - StructureChoiceCompletionComponent, - StructureContactCompletionComponent, - StructureAccessModalityComponent, - StructureHoursComponent, - StructurePmrComponent, - StructureWebAndSocialNetworkComponent, - StructurePublicTargetComponent, - StructureDigitalHelpingAccompanimentComponent, - StructureTrainingPriceComponent, - StructureWifiComponent, - StructureEquipmentsComponent, - StructureLabelsComponent, - StructureOtherServicesComponent, - StructureDescriptionComponent, - StructureCovidInfoComponent, - StructureConsentComponent, - AccountInfoComponent, - AccountCredentialsComponent, ], imports: [ BrowserModule, @@ -154,6 +83,7 @@ import { AccountCredentialsComponent } from './form/form-view/account-form/accou MapModule, BrowserAnimationsModule, ToastrModule.forRoot(), + FormViewModule, ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, }), diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html index 7be0b1b5f..1c63bbb1e 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html @@ -1 +1,210 @@ -<p>account-credentials works!</p> +<div class="page"> + <form + [formGroup]="accountForm" + *ngIf="accountForm && !profile" + (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" + > + <div class="title"> + <h3>Quels identifiants utiliserez-vous pour vous connecter ?</h3> + </div> + <div class="form-group" fxLayout="column"> + <label for="email">Email du compte</label> + <p class="special invalid" *ngIf="this.accountForm.get('email').hasError('alreadyExist')"> + L'email est déja utilisé. + </p> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + (input)="setValidationsForm()" + (keyup)="verifyUserExist($event.target.value)" + formControlName="email" + placeholder="exemple: prenom.nom@grandlyon.com" + class="form-input email-placeholder" + [readonly]="isAccountMode" + [ngClass]="{ disabled: isAccountMode }" + /> + <app-svg-icon + *ngIf="accountForm.get('email').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('email').invalid && accountForm.get('email').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="password">Création de mot de passe</label> + <p + class="special" + [ngClass]="{ invalid: accountForm.get('password').invalid && accountForm.get('password').value }" + ></p> + <span class="passwordInfo">Le mot de passe doit contenir au minimum</span> + <ul> + <li + [ngClass]="{ + invalid: accountForm.get('password').value.length < 8, + valid: accountForm.get('password').value.length >= 8 + }" + class="" + > + <app-svg-icon + *ngIf="accountForm.get('password').value.length >= 8" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('password').value.length < 8" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>8 caractères</p> + </li> + <li + [ngClass]="{ + invalid: !checkIfPasswordHasSpecialChar(accountForm.get('password').value), + valid: checkIfPasswordHasSpecialChar(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasSpecialChar(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="!checkIfPasswordHasSpecialChar(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un caractère spécial</p> + </li> + <li + [ngClass]="{ + invalid: !checkIfPasswordHasLowerCase(accountForm.get('password').value), + valid: checkIfPasswordHasLowerCase(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasLowerCase(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="!checkIfPasswordHasLowerCase(accountForm.get('password').value); s" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un caractère en minuscule</p> + </li> + <li + [ngClass]="{ + invalid: !checkIfPasswordHasUpperCase(accountForm.get('password').value), + valid: checkIfPasswordHasUpperCase(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasUpperCase(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="!checkIfPasswordHasUpperCase(accountForm.get('password').value); s" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un caractère en majuscule</p> + </li> + <li + [ngClass]="{ + invalid: !checkIfPasswordHasDigit(accountForm.get('password').value), + valid: checkIfPasswordHasDigit(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasDigit(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="!checkIfPasswordHasDigit(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un chiffre</p> + </li> + </ul> + <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> + <input + [type]="isShowPassword ? 'text' : 'password'" + formControlName="password" + class="form-input password" + (input)="setValidationsForm()" + autocomplete="on" + /> + <app-svg-icon + [iconClass]="'validation grey hover'" + [type]="'form'" + [icon]="'eyePassword'" + (click)="showPassword()" + ></app-svg-icon> + + <app-svg-icon + *ngIf="accountForm.get('password').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('password').invalid && accountForm.get('password').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="confirmPassword">Vérification du mot de passe</label> + <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> + <input + [type]="isShowConfirmPassword ? 'text' : 'password'" + formControlName="confirmPassword" + class="form-input password" + (input)="setValidationsForm()" + autocomplete="on" + /> + <app-svg-icon + [iconClass]="'validation grey hover'" + [type]="'form'" + [icon]="'eyePassword'" + (click)="showConfirmPassword()" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('confirmPassword').valid && accountForm.get('confirmPassword').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('confirmPassword').invalid && accountForm.get('confirmPassword').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + </form> +</div> diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts index f0b18b1be..522fc45c6 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts @@ -1,15 +1,56 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { User } from '../../../../models/user.model'; +import { ProfileComponent } from '../../../../profile/profile.component'; +import { CustomRegExp } from '../../../../utils/CustomRegExp'; @Component({ selector: 'app-account-credentials', templateUrl: './account-credentials.component.html', - styleUrls: ['./account-credentials.component.scss'] + styleUrls: ['./account-credentials.component.scss'], }) export class AccountCredentialsComponent implements OnInit { + @Input() accountForm: FormGroup; + @Input() isAccountMode: boolean; + @Input() profile: User; + @Output() validateForm = new EventEmitter<any>(); + @Output() userExists = new EventEmitter<any>(); - constructor() { } + public isShowConfirmPassword = false; + public isShowPassword = false; + constructor() {} - ngOnInit(): void { + ngOnInit(): void {} + public showPassword(): void { + this.isShowPassword = !this.isShowPassword; + } + public showConfirmPassword(): void { + this.isShowConfirmPassword = !this.isShowConfirmPassword; + } + + public checkIfPasswordHasSpecialChar(password: string): boolean { + if (password.match(CustomRegExp.SPECHAR)) return true; + return false; + } + + public checkIfPasswordHasDigit(password: string): boolean { + if (password.match(CustomRegExp.DIGIT)) return true; + return false; } + public checkIfPasswordHasUpperCase(password: string): boolean { + if (password.match(CustomRegExp.UPPERCASE)) return true; + return false; + } + + public checkIfPasswordHasLowerCase(password: string): boolean { + if (password.match(CustomRegExp.LOWERCASE)) return true; + return false; + } + public setValidationsForm() { + this.validateForm.emit(); + } + public verifyUserExist(value: string) { + this.userExists.emit(value); + } } diff --git a/src/app/form/form-view/account-form/account-form.component.html b/src/app/form/form-view/account-form/account-form.component.html index ab27b9f96..ed6b0a453 100644 --- a/src/app/form/form-view/account-form/account-form.component.html +++ b/src/app/form/form-view/account-form/account-form.component.html @@ -1 +1,21 @@ -<p>account-form works!</p> +<div> + <ng-container *ngIf="currentStep === accountFormStepEnum.accountInfo"> + <app-account-info + [accountForm]="accountForm" + [isClaimMode]="isClaimMode" + [profile]="profile" + (setValidationFrom)="setValidationsFrom($event)" + ></app-account-info> + </ng-container> + <ng-container *ngIf="currentStep === accountFormStepEnum.accountCredentials"> + <app-account-credentials + [accountForm]="accountForm" + [profile]="profile" + (validateForm)="setValidationsFrom($event)" + (userExists)="verifyUserExist($event)" + ></app-account-credentials> + </ng-container> + <ng-container *ngIf="currentStep === accountFormStepEnum.confirmEmailSentInfo"> + <app-information-step [step]="accountFormStepEnum.confirmEmailSentInfo"></app-information-step> + </ng-container> +</div> diff --git a/src/app/form/form-view/account-form/account-form.component.ts b/src/app/form/form-view/account-form/account-form.component.ts index 2aa330d5e..d9247bd5b 100644 --- a/src/app/form/form-view/account-form/account-form.component.ts +++ b/src/app/form/form-view/account-form/account-form.component.ts @@ -1,15 +1,121 @@ import { Component, OnInit } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute } from '@angular/router'; +import { User } from '../../../models/user.model'; +import { ProfileService } from '../../../profile/services/profile.service'; +import { MustMatch } from '../../../shared/validator/form'; +import { CustomRegExp } from '../../../utils/CustomRegExp'; +import { accountFormStep } from './accountFormStep.enum'; @Component({ selector: 'app-account-form', templateUrl: './account-form.component.html', - styleUrls: ['./account-form.component.scss'] + styleUrls: ['./account-form.component.scss'], }) export class AccountFormComponent implements OnInit { + public accountForm: FormGroup; + public isClaimMode = false; + public isAccountMode = false; + public pagesValidation = []; + public userAcceptSavedDate = false; + public isPageValid: boolean; + public profile: User; + public accountFormStepEnum = accountFormStep; - constructor() { } - + public currentStep: accountFormStep = accountFormStep.confirmEmailSentInfo; + public nbSteps: number = 3; + constructor(private route: ActivatedRoute, private profileService: ProfileService) {} ngOnInit(): void { + if (history.state.newUser) { + this.isClaimMode = true; + } + this.route.data.subscribe((data) => { + if (data.user) { + this.isAccountMode = true; + this.createAccountForm(data.user.email); + this.setValidationsForm(); + } else this.createAccountForm(); + }); + this.profileService.getProfile().then((user: User) => { + this.profile = user; + }); + } + + private createAccountForm(email?: string): void { + this.accountForm = new FormGroup( + { + email: new FormControl(email ? email : '', [Validators.required, Validators.pattern(CustomRegExp.EMAIL)]), + name: new FormControl('', [Validators.required, Validators.pattern(CustomRegExp.TEXT_WITHOUT_NUMBER)]), + surname: new FormControl('', [Validators.required, Validators.pattern(CustomRegExp.TEXT_WITHOUT_NUMBER)]), + phone: new FormControl('', [Validators.required, Validators.pattern(CustomRegExp.PHONE)]), + password: new FormControl('', [ + Validators.required, + Validators.pattern(CustomRegExp.PASSWORD), //NOSONAR + ]), + confirmPassword: new FormControl(''), + }, + [MustMatch('password', 'confirmPassword')] + ); } + public setValidationsForm(): void { + if (this.isClaimMode) { + // this.pagesValidation[PageTypeEnum.summary] = { valid: true }; + this.pagesValidation[accountFormStep.accountInfo] = { + valid: + this.accountForm.get('surname').valid && + this.accountForm.get('name').valid && + this.accountForm.get('phone').valid, + }; + this.pagesValidation[accountFormStep.accountCredentials] = { + valid: + this.accountForm.get('email').valid && + this.accountForm.get('password').valid && + this.accountForm.get('confirmPassword').valid, + }; + this.updatePageValid(); + } else if (this.isAccountMode) { + this.pagesValidation[accountFormStep.accountInfo] = { + valid: + this.accountForm.get('surname').valid && + this.accountForm.get('name').valid && + this.accountForm.get('phone').valid, + }; + this.pagesValidation[accountFormStep.accountCredentials] = { + valid: + this.accountForm.get('email').valid && + this.accountForm.get('password').valid && + this.accountForm.get('confirmPassword').valid, + }; + this.updatePageValid(); + } else { + // this.pagesValidation[PageTypeEnum.summary] = { valid: true }; + this.pagesValidation[accountFormStep.accountInfo] = { + valid: + this.accountForm.get('surname').valid && + this.accountForm.get('name').valid && + this.accountForm.get('phone').valid, + }; + this.pagesValidation[accountFormStep.accountCredentials] = { + valid: + this.accountForm.get('email').valid && + this.accountForm.get('password').valid && + this.accountForm.get('confirmPassword').valid, + }; + + this.updatePageValid(); + } + } + + /** + * Update valid page or return page validity of the given index + * @param {number} [index] - Page index + */ + private updatePageValid(index?: number): boolean { + if (index) { + return this.pagesValidation[index].valid; + } + this.isPageValid = this.pagesValidation[this.currentStep].valid; + return this.isPageValid; + } } diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.html b/src/app/form/form-view/account-form/account-info/account-info.component.html index d8e9e0886..689eaa3d5 100644 --- a/src/app/form/form-view/account-form/account-info/account-info.component.html +++ b/src/app/form/form-view/account-form/account-info/account-info.component.html @@ -1 +1,81 @@ -<p>account-info works!</p> +<div class="page"> + <form + [formGroup]="accountForm" + *ngIf="accountForm && !profile" + (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" + > + <div class="title"> + <h3>Qui êtes-vous ?</h3> + <p>Vous pourrez choisir de rendre visibles ces informations sur votre profil public</p> + </div> + <div *ngIf="!isClaimMode" class="title"> + <h4> + Vous possédez déja un compte ?<br /> + Connectez-vous : + </h4> + <button class="btn-primary small next" *ngIf="!isLoggedIn" (click)="isPopUpOpen = !isPopUpOpen"> + Se connecter + </button> + <h4>Sinon, inscrivez-vous en suivant le formulaire ci-dessous :</h4> + </div> + <div class="form-group" fxLayout="column"> + <label for="name">Prénom</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input type="text" (input)="setValidationsForm()" formControlName="name" class="form-input" /> + <app-svg-icon + *ngIf="accountForm.get('name').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('name').invalid && accountForm.get('name').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="surname">Nom</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input type="text" (input)="setValidationsForm()" formControlName="surname" class="form-input" /> + <app-svg-icon + *ngIf="accountForm.get('surname').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('surname').invalid && accountForm.get('surname').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="phone">Téléphone</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + formControlName="phone" + class="form-input phone" + (input)="utils.modifyPhoneInput(accountForm, 'phone', $event.target.value); setValidationsForm()" + /> + <app-svg-icon + *ngIf="accountForm.get('phone').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('phone').invalid && accountForm.get('phone').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + </form> +</div> diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.ts b/src/app/form/form-view/account-form/account-info/account-info.component.ts index ea98c705b..185a6f5c4 100644 --- a/src/app/form/form-view/account-form/account-info/account-info.component.ts +++ b/src/app/form/form-view/account-form/account-info/account-info.component.ts @@ -1,15 +1,24 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { User } from '../../../../models/user.model'; +import { Utils } from '../../../../utils/utils'; @Component({ selector: 'app-account-info', templateUrl: './account-info.component.html', - styleUrls: ['./account-info.component.scss'] + styleUrls: ['./account-info.component.scss'], }) export class AccountInfoComponent implements OnInit { + @Input() accountForm: FormGroup; + @Input() isClaimMode: boolean; + @Input() profile: User; - constructor() { } + @Output() validateForm = new EventEmitter<any>(); - ngOnInit(): void { - } + constructor(public utils: Utils) {} + ngOnInit(): void {} + public setValidationsForm() { + this.validateForm.emit(); + } } diff --git a/src/app/form/form-view/account-form/accountFormStep.enum.ts b/src/app/form/form-view/account-form/accountFormStep.enum.ts index b890a221b..3d2181d4c 100644 --- a/src/app/form/form-view/account-form/accountFormStep.enum.ts +++ b/src/app/form/form-view/account-form/accountFormStep.enum.ts @@ -1,5 +1,5 @@ export enum accountFormStep { - accountInfo, - accountCredentials, - confirmEmailSentInfo, + accountInfo = 0, + accountCredentials = 1, + confirmEmailSentInfo = 2, } diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts new file mode 100644 index 000000000..30f989c49 --- /dev/null +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -0,0 +1,37 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { AccountFormComponent } from './account-form/account-form.component'; +import { FormViewComponent } from './form-view.component'; +import { PersonnalOfferFormComponent } from './personnal-offer-form/personnal-offer-form.component'; +import { ProfileFormComponent } from './profile-form/profile-form.component'; +import { StructureFormComponent } from './structure-form/structure-form.component'; + +const routes: Routes = [ + { + path: '', + component: FormViewComponent, + children: [ + { + path: 'structure', + component: StructureFormComponent, + }, + { + path: 'profile', + component: ProfileFormComponent, + }, + { + path: 'personnal-offer', + component: PersonnalOfferFormComponent, + }, + { + path: 'account', + component: AccountFormComponent, + }, + ], + }, +]; +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class FormViewRoutingModule {} diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index bed61fa90..c46ab9e86 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -1 +1,15 @@ -<p>form-view works!</p> +<div> + <app-progress-bar + [formType]="formType[routeParam]" + [isEditMode]="isEditMode" + [currentPage]="currentPage" + [nbPagesForm]="nbPagesForm" + ></app-progress-bar> + <router-outlet></router-outlet> + <app-footer-form + [currentStep]="currentPage" + [currentForm]="formType[routeParam]" + [btnName]="['Précédent', 'Suivant']" + [isValid]="isCurrentPageValid" + ></app-footer-form> +</div> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 2b8f701ac..945996eb7 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -1,15 +1,33 @@ import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { formType } from './formType.enum'; @Component({ selector: 'app-form-view', templateUrl: './form-view.component.html', - styleUrls: ['./form-view.component.scss'] + styleUrls: ['./form-view.component.scss'], }) export class FormViewComponent implements OnInit { - - constructor() { } + public routeParam: string; + public formType = formType; + public isEditMode = false; + public isAccountMode = false; + public currentPage = 1; + public progressStatus = 37; + public nbPagesForm = 20; + public isCurrentPageValid: boolean = true; + constructor(private router: Router, private route: ActivatedRoute) {} ngOnInit(): void { + // this.route.snapshot.queryParamMap.get('search'); + this.routeParam = this.router.routerState.snapshot.url.split('/')[2]; + this.route.data.subscribe((data) => { + if (data.user) { + this.isAccountMode = true; + } + if (data.structure) { + this.isEditMode = true; + } + }); } - } diff --git a/src/app/form/form-view/form-view.module.ts b/src/app/form/form-view/form-view.module.ts new file mode 100644 index 000000000..0cba02360 --- /dev/null +++ b/src/app/form/form-view/form-view.module.ts @@ -0,0 +1,83 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormViewComponent } from './form-view.component'; +import { ProgressBarComponent } from './global-components/progress-bar/progress-bar.component'; +import { NavigationButtonsComponent } from './global-components/navigation-buttons/navigation-buttons.component'; +import { StructureFormComponent } from './structure-form/structure-form.component'; +import { ProfileFormComponent } from './profile-form/profile-form.component'; +import { PersonnalOfferFormComponent } from './personnal-offer-form/personnal-offer-form.component'; +import { InformationStepComponent } from './global-components/information-step/information-step.component'; +import { AccountFormComponent } from './account-form/account-form.component'; +import { TrainingTypeComponent } from './global-components/training-type/training-type.component'; +import { PublicAccompanimentComponent } from './global-components/public-accompaniment/public-accompaniment.component'; +import { ProfileEmployerSelectionComponent } from './profile-form/profile-employer-selection/profile-employer-selection.component'; +import { ProfileJobSelectionComponent } from './profile-form/profile-job-selection/profile-job-selection.component'; +import { ProfileStructureChoiceComponent } from './profile-form/profile-structure-choice/profile-structure-choice.component'; +import { PersonnalOfferOtherStructureChoiceComponent } from './personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component'; +import { StructureNameAndAddressComponent } from './structure-form/structure-name-and-address/structure-name-and-address.component'; +import { StructureContactComponent } from './structure-form/structure-contact/structure-contact.component'; +import { StructureAccompanimentChoiceComponent } from './structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component'; +import { StructureChoiceCompletionComponent } from './structure-form/structure-choice-completion/structure-choice-completion.component'; +import { StructureContactCompletionComponent } from './structure-form/structure-contact-completion/structure-contact-completion.component'; +import { StructureAccessModalityComponent } from './structure-form/structure-access-modality/structure-access-modality.component'; +import { StructureHoursComponent } from './structure-form/structure-hours/structure-hours.component'; +import { StructurePmrComponent } from './structure-form/structure-pmr/structure-pmr.component'; +import { StructureWebAndSocialNetworkComponent } from './structure-form/structure-web-and-social-network/structure-web-and-social-network.component'; +import { StructurePublicTargetComponent } from './structure-form/structure-public-target/structure-public-target.component'; +import { StructureDigitalHelpingAccompanimentComponent } from './structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component'; +import { StructureTrainingPriceComponent } from './structure-form/structure-training-price/structure-training-price.component'; +import { StructureWifiComponent } from './structure-form/structure-wifi/structure-wifi.component'; +import { StructureEquipmentsComponent } from './structure-form/structure-equipments/structure-equipments.component'; +import { StructureLabelsComponent } from './structure-form/structure-labels/structure-labels.component'; +import { StructureOtherServicesComponent } from './structure-form/structure-other-services/structure-other-services.component'; +import { StructureDescriptionComponent } from './structure-form/structure-description/structure-description.component'; +import { StructureCovidInfoComponent } from './structure-form/structure-covid-info/structure-covid-info.component'; +import { StructureConsentComponent } from './structure-form/structure-consent/structure-consent.component'; +import { AccountInfoComponent } from './account-form/account-info/account-info.component'; +import { AccountCredentialsComponent } from './account-form/account-credentials/account-credentials.component'; +import { SharedModule } from '../../shared/shared.module'; +import { FormViewRoutingModule } from './form-view-routing.module'; +import { FooterFormComponent } from '../footer-form/footer-form.component'; + +@NgModule({ + declarations: [ + FormViewComponent, + ProgressBarComponent, + NavigationButtonsComponent, + StructureFormComponent, + ProfileFormComponent, + PersonnalOfferFormComponent, + InformationStepComponent, + AccountFormComponent, + TrainingTypeComponent, + PublicAccompanimentComponent, + ProfileEmployerSelectionComponent, + ProfileJobSelectionComponent, + ProfileStructureChoiceComponent, + PersonnalOfferOtherStructureChoiceComponent, + StructureNameAndAddressComponent, + StructureContactComponent, + StructureAccompanimentChoiceComponent, + StructureChoiceCompletionComponent, + StructureContactCompletionComponent, + StructureAccessModalityComponent, + StructureHoursComponent, + StructurePmrComponent, + StructureWebAndSocialNetworkComponent, + StructurePublicTargetComponent, + StructureDigitalHelpingAccompanimentComponent, + StructureTrainingPriceComponent, + StructureWifiComponent, + StructureEquipmentsComponent, + StructureLabelsComponent, + StructureOtherServicesComponent, + StructureDescriptionComponent, + StructureCovidInfoComponent, + StructureConsentComponent, + AccountInfoComponent, + AccountCredentialsComponent, + FooterFormComponent, + ], + imports: [CommonModule, FormViewRoutingModule, SharedModule], +}) +export class FormViewModule {} diff --git a/src/app/form/form-view/formType.enum.ts b/src/app/form/form-view/formType.enum.ts new file mode 100644 index 000000000..54391ddb8 --- /dev/null +++ b/src/app/form/form-view/formType.enum.ts @@ -0,0 +1,6 @@ +export enum formType { + structure, + profile, + personnalOffer, + account, +} diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 1e175bae5..8347e5235 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -1 +1,3 @@ -<p>information-step works!</p> +<ng-container *ngIf="step === accountFormStepEnum.confirmEmailSentInfo"> + Un email vous a été envoyé afin de finaliser votre inscription +</ng-container> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.ts b/src/app/form/form-view/global-components/information-step/information-step.component.ts index 05b1bf2c7..0da2c63d7 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.ts +++ b/src/app/form/form-view/global-components/information-step/information-step.component.ts @@ -1,15 +1,16 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; +import { accountFormStep } from '../../account-form/accountFormStep.enum'; @Component({ selector: 'app-information-step', templateUrl: './information-step.component.html', - styleUrls: ['./information-step.component.scss'] + styleUrls: ['./information-step.component.scss'], }) export class InformationStepComponent implements OnInit { + @Input() step: accountFormStep; + public accountFormStepEnum = accountFormStep; - constructor() { } - - ngOnInit(): void { - } + constructor() {} + ngOnInit(): void {} } diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html index 872ad60ca..ea9bd17a8 100644 --- a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html @@ -1 +1,16 @@ -<p>progress-bar works!</p> +<div class="progressBar" *ngIf="currentPage != 0 && !isEditMode"> + <p *ngIf="formType === formTypeEnum.account">Création de compte</p> + <p *ngIf="formType === formTypeEnum.profile">Création du profil</p> + <p *ngIf="formType === formTypeEnum.account">Création de la structure</p> + <div fxLayout="row" fxLayoutAlign="space-between center" fxLayoutGap="20px"> + <label [ngClass]="{ validate: currentPage == nbPagesForm }" for="progressForm" + >{{ getProgressStatus() | number: '1.0-0' }}% + </label> + <progress + id="progressForm" + [ngClass]="{ validate: currentPage == nbPagesForm }" + max="100" + [value]="getProgressStatus()" + ></progress> + </div> +</div> diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts index 6cd4ad130..937d30cf6 100644 --- a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts @@ -1,15 +1,26 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; +import { formType } from '../../formType.enum'; @Component({ selector: 'app-progress-bar', templateUrl: './progress-bar.component.html', - styleUrls: ['./progress-bar.component.scss'] + styleUrls: ['./progress-bar.component.scss'], }) export class ProgressBarComponent implements OnInit { + @Input() formType: formType; + @Input() isEditMode: boolean; + @Input() currentPage: number; + @Input() nbPagesForm: number; + // @Input() progressStatus: number; + public progressStatus: number; + public formTypeEnum = formType; - constructor() { } + constructor() {} - ngOnInit(): void { - } + ngOnInit(): void {} + public getProgressStatus(): number { + this.progressStatus = 100 / this.nbPagesForm; + return this.progressStatus; + } } diff --git a/src/app/form/form-view/profile-form/profile-form.component.html b/src/app/form/form-view/profile-form/profile-form.component.html index 4360ce079..c221d4aa6 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.html +++ b/src/app/form/form-view/profile-form/profile-form.component.html @@ -1 +1 @@ -<p>profile-form works!</p> +<div>profile</div> diff --git a/src/app/form/form-view/profile-form/profile-form.component.ts b/src/app/form/form-view/profile-form/profile-form.component.ts index 2f15356e4..53b886c1e 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.ts +++ b/src/app/form/form-view/profile-form/profile-form.component.ts @@ -1,15 +1,15 @@ import { Component, OnInit } from '@angular/core'; +import { profileFormStep } from './profileFormStep.enum'; @Component({ selector: 'app-profile-form', templateUrl: './profile-form.component.html', - styleUrls: ['./profile-form.component.scss'] + styleUrls: ['./profile-form.component.scss'], }) export class ProfileFormComponent implements OnInit { + public currentStep: profileFormStep = profileFormStep.profileBeginningInfo; + public nbSteps: number = 5; + constructor() {} - constructor() { } - - ngOnInit(): void { - } - + ngOnInit(): void {} } -- GitLab From b44d19f8ffeb6bc68934690bfe65782d6eef7b87 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Fri, 18 Mar 2022 14:37:35 +0100 Subject: [PATCH 063/199] Update footer and form view --- .../footer-form/footer-form.component.html | 2 +- .../form/footer-form/footer-form.component.ts | 107 ++++++++- .../account-credentials.component.ts | 1 - .../account-form/account-form.component.html | 13 +- .../account-form/account-form.component.ts | 67 +++--- .../form/form-view/form-view.component.html | 24 +- src/app/form/form-view/form-view.component.ts | 208 +++++++++++++++++- .../progress-bar/progress-bar.component.html | 8 +- .../progress-bar/progress-bar.component.ts | 14 +- 9 files changed, 367 insertions(+), 77 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.html b/src/app/form/footer-form/footer-form.component.html index fb6192510..c12a9b571 100644 --- a/src/app/form/footer-form/footer-form.component.html +++ b/src/app/form/footer-form/footer-form.component.html @@ -10,7 +10,7 @@ <app-button *ngIf="hasFinishButton()" (action)="finishedModal()" [text]="btnName[2]" [iconBtn]="'flag'"></app-button> <app-button - (action)="goToNextPage()" + (action)="nextPage()" [disabled]="!isValid" [text]="btnName[1]" [iconBtn]="btnName[1] == 'Imprimer' ? 'print' : 'chevronRight'" diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 741f81280..f4758d857 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -1,5 +1,15 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { first } from 'rxjs/operators'; +import { User } from '../../models/user.model'; +import { AuthService } from '../../services/auth.service'; import { ButtonType } from '../../shared/components/button/buttonType.enum'; +import { Utils } from '../../utils/utils'; +import { accountFormStep } from '../form-view/account-form/accountFormStep.enum'; +import { formType } from '../form-view/formType.enum'; +import { personnalOfferFormStep } from '../form-view/personnal-offer-form/personnalOfferFormStep.enum'; +import { profileFormStep } from '../form-view/profile-form/profileFormStep.enum'; +import { structureFormStep } from '../form-view/structure-form/structureFormStep.enum'; @Component({ selector: 'app-footer-form', @@ -7,20 +17,30 @@ import { ButtonType } from '../../shared/components/button/buttonType.enum'; styleUrls: ['./footer-form.component.scss'], }) export class FooterFormComponent { + @Input() currentStep: number; + @Input() currentForm: formType; @Input() isValid: boolean; + @Input() isClaimMode: boolean; + @Input() isAccountMode: boolean; @Input() btnName: string[]; @Input() displayPreviousButton: boolean = true; - @Output() nextPage = new EventEmitter<any>(); - @Output() previousPage = new EventEmitter<any>(); + @Input() nbPagesForm: number; + @Input() form: FormGroup; + @Input() linkedStructureId: Array<string> = null; + @Input() currentPage: accountFormStep | profileFormStep | structureFormStep | personnalOfferFormStep; + @Output() goNext = new EventEmitter<any>(); + @Output() goPrev = new EventEmitter<any>(); @Output() endPage = new EventEmitter<any>(); public buttonTypeEnum = ButtonType; + + constructor(private authService: AuthService, public utils: Utils) {} public goToNextPage(): void { - this.nextPage.emit(); + this.goNext.emit(); } public goToPreviousPage(): void { - this.previousPage.emit(); + this.goPrev.emit(); } public hasFinishButton(): boolean { @@ -29,4 +49,83 @@ export class FooterFormComponent { public finishedModal(): void { this.endPage.emit(); } + + /** + * Page algo for create account case + */ + public nextPageAccount(): void { + if (this.currentPage === this.nbPagesForm - 1) { + const user = new User(this.form.value); + // Create user with structure + user.structuresLink = this.linkedStructureId; + this.authService.register(user).subscribe(() => { + // this.progressStatus = 100; + }); + } + + if (this.currentPage === accountFormStep.accountInfo) { + this.currentPage = accountFormStep.accountCredentials; + console.log('cur', this.currentPage); + } + + // this.progressStatus += 25; + } + public validateAccountForm(): void { + if (this.form.valid) { + const user = new User(this.form.value); + this.authService.register(user).pipe(first()); + + // .subscribe(() => { + // this.createStructure(structure, user); + // }); + // if (this.userAcceptNewsletter) { + // this.newsletterService.newsletterSubscribe(user.email).subscribe(() => {}); + // } + } + } + public nextPage(): void { + if (this.isClaimMode) { + // this.nextPageClaim(); + } else if (this.isAccountMode) { + this.nextPageAccount(); + } else { + // Check if user already connected to skip accountForm pages. + // if (this.currentPage === PageTypeEnum.info && this.profile) { + // this.currentPage += 2; // Skip accountInfo pages from AccountForm + // this.progressStatus += 2 * (100 / this.nbPagesForm); + // } + // Check if "other" isn't check to hide "other description" page + // if ( + // this.currentPage === PageTypeEnum.structureAccompaniment && + // !this.isInArray('autres', 'proceduresAccompaniment') + // ) { + // this.currentPage++; // page structureOtherAccompaniment skip and go to page structureWorkshop + // this.progressStatus += 100 / this.nbPagesForm; + // } + + // if (this.currentPage === PageTypeEnum.structureWorkshop) { + // if ( + // !this.structureForm.get('baseSkills').value.length && + // !this.structureForm.get('accessRight').value.length && + // !this.structureForm.get('parentingHelp').value.length && + // !this.structureForm.get('socialAndProfessional').value.length && + // !this.structureForm.get('digitalCultureSecurity').value.length + // ) { + // this.getStructureControl('freeWorkShop').reset(); + // this.currentPage++; + // this.progressStatus += 100 / this.nbPagesForm; + // } + // } + + // Check if going to the last page to submit form and send email verification. + if (this.currentPage === this.nbPagesForm - 1) { + this.validateAccountForm(); + } else { + this.goToNextPage(); + // this.progressStatus += 100 / this.nbPagesForm; + // document.getElementsByClassName('content')[0].scrollTo(0, 0); + // this.updatePageValid(); + } + } + } } diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts index 522fc45c6..ab0c46344 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts @@ -1,7 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { User } from '../../../../models/user.model'; -import { ProfileComponent } from '../../../../profile/profile.component'; import { CustomRegExp } from '../../../../utils/CustomRegExp'; @Component({ diff --git a/src/app/form/form-view/account-form/account-form.component.html b/src/app/form/form-view/account-form/account-form.component.html index ed6b0a453..d73525939 100644 --- a/src/app/form/form-view/account-form/account-form.component.html +++ b/src/app/form/form-view/account-form/account-form.component.html @@ -4,18 +4,27 @@ [accountForm]="accountForm" [isClaimMode]="isClaimMode" [profile]="profile" - (setValidationFrom)="setValidationsFrom($event)" + (validateForm)="setValidationsForm($event)" ></app-account-info> </ng-container> <ng-container *ngIf="currentStep === accountFormStepEnum.accountCredentials"> <app-account-credentials [accountForm]="accountForm" [profile]="profile" - (validateForm)="setValidationsFrom($event)" + (validateForm)="setValidationsForm($event)" (userExists)="verifyUserExist($event)" ></app-account-credentials> </ng-container> <ng-container *ngIf="currentStep === accountFormStepEnum.confirmEmailSentInfo"> <app-information-step [step]="accountFormStepEnum.confirmEmailSentInfo"></app-information-step> </ng-container> + <!-- <app-footer-form + [currentPage]="currentStep" + [currentForm]="formType.account" + [form]="accountForm" + [btnName]="['Précédent', 'Suivant']" + [isValid]="isPageValid" + (goNext)="nextPage()" + (goPrev)="prevPage()" + ></app-footer-form> --> </div> diff --git a/src/app/form/form-view/account-form/account-form.component.ts b/src/app/form/form-view/account-form/account-form.component.ts index d9247bd5b..1f9b87bc9 100644 --- a/src/app/form/form-view/account-form/account-form.component.ts +++ b/src/app/form/form-view/account-form/account-form.component.ts @@ -1,10 +1,9 @@ -import { Component, OnInit } from '@angular/core'; -import { FormControl, FormGroup, Validators } from '@angular/forms'; -import { ActivatedRoute } from '@angular/router'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; + import { User } from '../../../models/user.model'; import { ProfileService } from '../../../profile/services/profile.service'; -import { MustMatch } from '../../../shared/validator/form'; -import { CustomRegExp } from '../../../utils/CustomRegExp'; +import { formType } from '../formType.enum'; import { accountFormStep } from './accountFormStep.enum'; @Component({ @@ -12,51 +11,23 @@ import { accountFormStep } from './accountFormStep.enum'; templateUrl: './account-form.component.html', styleUrls: ['./account-form.component.scss'], }) -export class AccountFormComponent implements OnInit { - public accountForm: FormGroup; +export class AccountFormComponent { + @Input() nbSteps: number; + @Input() currentStep: accountFormStep; + @Input() accountForm: FormGroup; + public isClaimMode = false; public isAccountMode = false; public pagesValidation = []; public userAcceptSavedDate = false; public isPageValid: boolean; + public linkedStructureId: Array<string> = null; public profile: User; public accountFormStepEnum = accountFormStep; + public formType = formType; + @Output() pageValid = new EventEmitter<any>(); - public currentStep: accountFormStep = accountFormStep.confirmEmailSentInfo; - public nbSteps: number = 3; - constructor(private route: ActivatedRoute, private profileService: ProfileService) {} - ngOnInit(): void { - if (history.state.newUser) { - this.isClaimMode = true; - } - this.route.data.subscribe((data) => { - if (data.user) { - this.isAccountMode = true; - this.createAccountForm(data.user.email); - this.setValidationsForm(); - } else this.createAccountForm(); - }); - this.profileService.getProfile().then((user: User) => { - this.profile = user; - }); - } - - private createAccountForm(email?: string): void { - this.accountForm = new FormGroup( - { - email: new FormControl(email ? email : '', [Validators.required, Validators.pattern(CustomRegExp.EMAIL)]), - name: new FormControl('', [Validators.required, Validators.pattern(CustomRegExp.TEXT_WITHOUT_NUMBER)]), - surname: new FormControl('', [Validators.required, Validators.pattern(CustomRegExp.TEXT_WITHOUT_NUMBER)]), - phone: new FormControl('', [Validators.required, Validators.pattern(CustomRegExp.PHONE)]), - password: new FormControl('', [ - Validators.required, - Validators.pattern(CustomRegExp.PASSWORD), //NOSONAR - ]), - confirmPassword: new FormControl(''), - }, - [MustMatch('password', 'confirmPassword')] - ); - } + constructor(private profileService: ProfileService) {} public setValidationsForm(): void { if (this.isClaimMode) { @@ -107,6 +78,17 @@ export class AccountFormComponent implements OnInit { } } + public verifyUserExist(inputEmail): void { + if (this.accountForm.get('email').valid) { + this.profileService.isEmailAlreadyUsed(inputEmail).subscribe((isExist) => { + if (isExist) { + this.accountForm.get('email').setErrors({ alreadyExist: true }); + this.setValidationsForm(); + } + }); + } + } + /** * Update valid page or return page validity of the given index * @param {number} [index] - Page index @@ -116,6 +98,7 @@ export class AccountFormComponent implements OnInit { return this.pagesValidation[index].valid; } this.isPageValid = this.pagesValidation[this.currentStep].valid; + if (this.isPageValid) this.pageValid.emit(); return this.isPageValid; } } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index c46ab9e86..020150c03 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -3,13 +3,27 @@ [formType]="formType[routeParam]" [isEditMode]="isEditMode" [currentPage]="currentPage" - [nbPagesForm]="nbPagesForm" + [nbSteps]="nbSteps" ></app-progress-bar> - <router-outlet></router-outlet> + + <ng-container *ngIf="formType[routeParam] === formType.account"> + <app-account-form + [nbSteps]="nbSteps" + [accountForm]="accountForm" + [currentStep]="currentPage" + (pageValid)="validatePage($event)" + ></app-account-form> + </ng-container> + <ng-container *ngIf="formType[routeParam] === formType.profile"> Profile </ng-container> + <ng-container *ngIf="formType[routeParam] === formType.structure"> Structure </ng-container> + <ng-container *ngIf="formType[routeParam] === formType.personnalOffer"> PersonnalOffer </ng-container> <app-footer-form - [currentStep]="currentPage" - [currentForm]="formType[routeParam]" + [currentPage]="currentPage" + [currentForm]="formType.account" + [form]="accountForm" [btnName]="['Précédent', 'Suivant']" - [isValid]="isCurrentPageValid" + [isValid]="isPageValid" + (goNext)="nextPage()" + (goPrev)="prevPage()" ></app-footer-form> </div> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 945996eb7..161d9d6e7 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -1,6 +1,18 @@ import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormControl, Validators, FormArray } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; +import { Structure } from '../../models/structure.model'; +import { StructureWithOwners } from '../../models/structureWithOwners.model'; +import { User } from '../../models/user.model'; +import { ProfileService } from '../../profile/services/profile.service'; +import { StructureService } from '../../services/structure.service'; +import { MustMatch } from '../../shared/validator/form'; +import { CustomRegExp } from '../../utils/CustomRegExp'; +import { accountFormStep } from './account-form/accountFormStep.enum'; import { formType } from './formType.enum'; +import { personnalOfferFormStep } from './personnal-offer-form/personnalOfferFormStep.enum'; +import { profileFormStep } from './profile-form/profileFormStep.enum'; +import { structureFormStep } from './structure-form/structureFormStep.enum'; @Component({ selector: 'app-form-view', @@ -10,17 +22,72 @@ import { formType } from './formType.enum'; export class FormViewComponent implements OnInit { public routeParam: string; public formType = formType; - public isEditMode = false; - public isAccountMode = false; - public currentPage = 1; - public progressStatus = 37; - public nbPagesForm = 20; - public isCurrentPageValid: boolean = true; - constructor(private router: Router, private route: ActivatedRoute) {} + public accountForm: FormGroup; + public structureForm: FormGroup; + public profile: User; + public isEditMode: boolean = false; + public isAccountMode: boolean = false; + public isClaimMode: boolean = false; + public isJoinMode: boolean = false; + public claimStructure: boolean = false; + public currentPage: accountFormStep | profileFormStep | structureFormStep | personnalOfferFormStep; + public nbSteps: number; + public isWifiChoosen: boolean; + public linkedStructureId; + public structureWithOwners: StructureWithOwners; + public isPageValid: boolean = false; + constructor( + private router: Router, + private route: ActivatedRoute, + private profileService: ProfileService, + private structureService: StructureService + ) {} - ngOnInit(): void { - // this.route.snapshot.queryParamMap.get('search'); + async ngOnInit(): Promise<void> { this.routeParam = this.router.routerState.snapshot.url.split('/')[2]; + // this.isLoading = true; + this.profileService.getProfile().then((user: User) => { + this.profile = user; + }); + // await this.setCategories(); + // Check if it's a new structure or edit structure + // this.isLoading = false; + if (history.state.newUser) { + this.isClaimMode = true; + // Handle join structure, the case is very similar to claim + if (history.state.isJoin) { + this.isJoinMode = true; + } + this.createAccountForm(); + this.claimStructure = history.state.newUser; + } else { + // this.initForm(new Structure()); + // this.createAccountForm(); + // // Init form + // this.structureForm = this.createStructureForm(structure); + // if (this.isEditMode) { + // this.editForm = this.createStructureForm(structure); + // } + } + // Handle account creation when pre-register + this.route.data.subscribe((data) => { + if (data.user) { + this.isAccountMode = true; + this.createAccountForm(data.user.email); + this.linkedStructureId = data.user.pendingStructuresLink; + this.currentPage = accountFormStep.accountInfo; + } + // if (data.structure) { + // this.isEditMode = true; + // this.isWifiChoosen = true; + // const editStructure = new Structure(data.structure); + // this.initForm(editStructure); + // this.structureService.getStructureWithOwners(editStructure._id, this.profile).subscribe((s) => { + // this.structureWithOwners = s; + // }); + // } + }); + this.route.data.subscribe((data) => { if (data.user) { this.isAccountMode = true; @@ -29,5 +96,128 @@ export class FormViewComponent implements OnInit { this.isEditMode = true; } }); + if (formType[this.routeParam] === formType.account) { + this.nbSteps = 3; + this.currentPage = accountFormStep.accountInfo; + this.createAccountForm(); + } + // if (formType[this.routeParam] === formType.profile) { + // this.nbSteps = 3; + // this.currentPage = accountFormStep.accountInfo; + // } + // if (formType[this.routeParam] === formType.personnalOffer) { + // this.nbSteps = 3; + // this.currentPage = accountFormStep.accountInfo; + // } + // if (formType[this.routeParam] === formType.structure) { + // this.nbSteps = 3; + // this.currentPage = accountFormStep.accountInfo; + // } + } + private createAccountForm(email?: string): void { + this.accountForm = new FormGroup( + { + email: new FormControl(email ? email : '', [Validators.required, Validators.pattern(CustomRegExp.EMAIL)]), + name: new FormControl('', [Validators.required, Validators.pattern(CustomRegExp.TEXT_WITHOUT_NUMBER)]), + surname: new FormControl('', [Validators.required, Validators.pattern(CustomRegExp.TEXT_WITHOUT_NUMBER)]), + phone: new FormControl('', [Validators.required, Validators.pattern(CustomRegExp.PHONE)]), + password: new FormControl('', [ + Validators.required, + Validators.pattern(CustomRegExp.PASSWORD), //NOSONAR + ]), + confirmPassword: new FormControl(''), + }, + [MustMatch('password', 'confirmPassword')] + ); + } + + private createStructureForm(structure): void { + this.structureForm = new FormGroup({ + _id: new FormControl(structure._id), + coord: new FormControl(structure.coord), + structureType: new FormControl(structure.structureType, Validators.required), + structureName: new FormControl(structure.structureName, Validators.required), + description: new FormControl(structure.description), + lockdownActivity: new FormControl(structure.lockdownActivity), + address: new FormGroup({ + numero: new FormControl(structure.address.numero), + street: new FormControl(structure.address.street, Validators.required), + commune: new FormControl(structure.address.commune, Validators.required), + }), + contactMail: new FormControl(structure.contactMail, [ + Validators.required, + Validators.pattern(CustomRegExp.EMAIL), + ]), + contactPhone: new FormControl(structure.contactPhone, [ + Validators.required, + Validators.pattern(CustomRegExp.PHONE), + ]), + website: new FormControl(structure.website, Validators.pattern(CustomRegExp.WEBSITE)), + facebook: new FormControl(structure.facebook, Validators.pattern(CustomRegExp.FACEBOOK)), + twitter: new FormControl(structure.twitter, Validators.pattern(CustomRegExp.TWITTER)), + instagram: new FormControl(structure.instagram, Validators.pattern(CustomRegExp.INSTAGRAM)), + linkedin: new FormControl(structure.linkedin, Validators.pattern(CustomRegExp.LINKEDIN)), + hours: new FormGroup({}), + pmrAccess: new FormControl(structure.pmrAccess, Validators.required), + exceptionalClosures: new FormControl(structure.exceptionalClosures), + labelsQualifications: this.loadArrayForCheckbox(structure.labelsQualifications, false), + accessModality: this.loadArrayForCheckbox(structure.accessModality, true), + publicsAccompaniment: this.loadArrayForCheckbox(structure.publicsAccompaniment, false), + proceduresAccompaniment: this.loadArrayForCheckbox(structure.proceduresAccompaniment, false), + remoteAccompaniment: new FormControl(structure.remoteAccompaniment, Validators.required), + otherDescription: new FormControl(structure.otherDescription), + equipmentsAndServices: this.loadArrayForCheckbox(structure.equipmentsAndServices, false), + publics: this.loadArrayForCheckbox(structure.publics, true), + baseSkills: this.loadArrayForCheckbox(structure.baseSkills, false), + accessRight: this.loadArrayForCheckbox(structure.accessRight, false), + parentingHelp: this.loadArrayForCheckbox(structure.parentingHelp, false), + socialAndProfessional: this.loadArrayForCheckbox(structure.socialAndProfessional, false), + digitalCultureSecurity: this.loadArrayForCheckbox(structure.digitalCultureSecurity, false), + nbComputers: new FormControl( + structure.equipmentsAndServices.includes('ordinateurs') ? structure.nbComputers : 0, + [Validators.required, Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER), Validators.min(0)] + ), + nbPrinters: new FormControl(structure.equipmentsAndServices.includes('imprimantes') ? structure.nbPrinters : 0, [ + Validators.required, + Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER), + Validators.min(0), + ]), + nbTablets: new FormControl(structure.equipmentsAndServices.includes('tablettes') ? structure.nbTablets : 0, [ + Validators.required, + Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER), + Validators.min(0), + ]), + nbNumericTerminal: new FormControl( + structure.equipmentsAndServices.includes('bornesNumeriques') ? structure.nbNumericTerminal : 0, + [Validators.required, Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER), Validators.min(0)] + ), + nbScanners: new FormControl(structure.equipmentsAndServices.includes('scanners') ? structure.nbScanners : 0, [ + Validators.required, + Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER), + Validators.min(0), + ]), + freeWorkShop: new FormControl(structure.freeWorkShop, [Validators.required]), + dataShareConsentDate: new FormControl(structure.dataShareConsentDate), + }); + } + private loadArrayForCheckbox(array: string[], isRequired: boolean): FormArray { + return new FormArray( + array.map((str) => new FormControl(str)), + isRequired ? Validators.required : Validators.nullValidator + ); + } + public validatePage(): void { + this.isPageValid = true; + } + public nextPage(): void { + this.isPageValid = false; + if (this.currentPage < this.nbSteps) { + this.currentPage++; + } + } + public prevPage(): void { + if (this.currentPage > 0) { + this.currentPage--; + } } } diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html index ea9bd17a8..a32a9ce43 100644 --- a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html @@ -1,16 +1,16 @@ -<div class="progressBar" *ngIf="currentPage != 0 && !isEditMode"> +<div class="progressBar" *ngIf="!isEditMode"> <p *ngIf="formType === formTypeEnum.account">Création de compte</p> <p *ngIf="formType === formTypeEnum.profile">Création du profil</p> - <p *ngIf="formType === formTypeEnum.account">Création de la structure</p> + <p *ngIf="formType === formTypeEnum.structure">Création de la structure</p> <div fxLayout="row" fxLayoutAlign="space-between center" fxLayoutGap="20px"> <label [ngClass]="{ validate: currentPage == nbPagesForm }" for="progressForm" - >{{ getProgressStatus() | number: '1.0-0' }}% + >{{ progressStatus | number: '1.0-0' }}% </label> <progress id="progressForm" [ngClass]="{ validate: currentPage == nbPagesForm }" max="100" - [value]="getProgressStatus()" + [value]="progressStatus" ></progress> </div> </div> diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts index 937d30cf6..9d0cb41f5 100644 --- a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { formType } from '../../formType.enum'; @Component({ @@ -6,21 +6,17 @@ import { formType } from '../../formType.enum'; templateUrl: './progress-bar.component.html', styleUrls: ['./progress-bar.component.scss'], }) -export class ProgressBarComponent implements OnInit { +export class ProgressBarComponent implements OnChanges { @Input() formType: formType; @Input() isEditMode: boolean; @Input() currentPage: number; - @Input() nbPagesForm: number; - // @Input() progressStatus: number; + @Input() nbSteps: number; public progressStatus: number; public formTypeEnum = formType; constructor() {} - ngOnInit(): void {} - - public getProgressStatus(): number { - this.progressStatus = 100 / this.nbPagesForm; - return this.progressStatus; + ngOnChanges(changes: SimpleChanges): void { + if (changes.currentPage) this.progressStatus = ((this.currentPage + 1) / this.nbSteps) * 100; } } -- GitLab From 31c18b98d4d0eaa7e188be5561f250738cb37871 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 18 Mar 2022 14:38:04 +0100 Subject: [PATCH 064/199] layout --- .../footer-form/footer-form.component.html | 8 ++++- .../footer-form/footer-form.component.scss | 4 +++ .../form/form-view/form-view.component.html | 11 +++--- .../progress-bar/progress-bar.component.scss | 36 +++++++++++++++++++ .../form/structure-form/form.component.scss | 28 --------------- 5 files changed, 51 insertions(+), 36 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.html b/src/app/form/footer-form/footer-form.component.html index fb6192510..032d83323 100644 --- a/src/app/form/footer-form/footer-form.component.html +++ b/src/app/form/footer-form/footer-form.component.html @@ -1,4 +1,10 @@ -<div fxLayout="row" [ngClass]="{ column: hasFinishButton() }" fxLayoutGap="10px" fxLayoutAlign="center center"> +<div + class="footerForm" + fxLayout="row" + [ngClass]="{ column: hasFinishButton() }" + fxLayoutGap="10px" + fxLayoutAlign="center center" +> <app-button *ngIf="displayPreviousButton" (action)="goToPreviousPage()" diff --git a/src/app/form/footer-form/footer-form.component.scss b/src/app/form/footer-form/footer-form.component.scss index c478b1822..511b53de2 100644 --- a/src/app/form/footer-form/footer-form.component.scss +++ b/src/app/form/footer-form/footer-form.component.scss @@ -2,6 +2,10 @@ @import '../../../assets/scss/typography'; @import '../../../assets/scss/breakpoint'; +.footerForm { + padding: 20px 0; +} + .btn-primary { &.previous { background-color: $white; diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index c46ab9e86..03d5235f9 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -5,11 +5,8 @@ [currentPage]="currentPage" [nbPagesForm]="nbPagesForm" ></app-progress-bar> - <router-outlet></router-outlet> - <app-footer-form - [currentStep]="currentPage" - [currentForm]="formType[routeParam]" - [btnName]="['Précédent', 'Suivant']" - [isValid]="isCurrentPageValid" - ></app-footer-form> + <div class="page"> + <router-outlet></router-outlet> + </div> + <app-footer-form [btnName]="['Précédent', 'Suivant']" [isValid]="isCurrentPageValid"></app-footer-form> </div> diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss index e69de29bb..1bd04db0e 100644 --- a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss @@ -0,0 +1,36 @@ +@import '../../../../../assets/scss/layout'; +// @import '../../../assets/scss/breakpoint'; +@import '../../../../../assets/scss/color'; +@import '../../../../../assets/scss/typography'; +// @import '../../../assets/scss/shapes'; +// @import '../../../assets/scss/z-index'; + +.progressBar { + height: #{$progressBar-height}; + max-width: 1000px; + margin: 16px auto; + p { + @include lato-bold-14; + color: $red; + margin-bottom: 7px; + } + + progress { + width: 100%; + height: 6px; + border-radius: 7px; + &::-webkit-progress-bar { + background-color: $grey-6; + border-radius: 7px; + } + &::-webkit-progress-value { + background-color: $primary-color; + border-radius: 12px; + } + } + label { + @include lato-bold-14; + color: $primary-color; + min-width: 26px; + } +} diff --git a/src/app/form/structure-form/form.component.scss b/src/app/form/structure-form/form.component.scss index c42df8856..9f054336c 100644 --- a/src/app/form/structure-form/form.component.scss +++ b/src/app/form/structure-form/form.component.scss @@ -262,35 +262,7 @@ h4 { stroke: $black; margin-right: 10px; } -.progressBar { - height: #{$progressBar-height}; - max-width: 1000px; - margin: 16px auto; - p { - @include lato-bold-14; - color: $red; - margin-bottom: 7px; - } - progress { - width: 100%; - height: 6px; - border-radius: 7px; - &::-webkit-progress-bar { - background-color: $grey-6; - border-radius: 7px; - } - &::-webkit-progress-value { - background-color: $primary-color; - border-radius: 12px; - } - } - label { - @include lato-bold-14; - color: $primary-color; - min-width: 26px; - } -} .form-group { &.facebook, &.twitter, -- GitLab From 3d247bd75b2c7e45ecec28d4687c5c27811448fe Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 18 Mar 2022 14:38:18 +0100 Subject: [PATCH 065/199] structure form --- .../form-view/form-view-routing.module.ts | 2 +- .../form/form-view/form-view.component.scss | 28 +++ src/app/form/form-view/form-view.component.ts | 4 +- .../structure-form.component.html | 14 +- .../structure-form.component.ts | 168 +++++++++++++++++- .../structure-name-and-address.component.html | 45 ++++- .../structure-name-and-address.component.ts | 16 +- 7 files changed, 262 insertions(+), 15 deletions(-) diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts index 30f989c49..419a17e2d 100644 --- a/src/app/form/form-view/form-view-routing.module.ts +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -12,7 +12,7 @@ const routes: Routes = [ component: FormViewComponent, children: [ { - path: 'structure', + path: 'create-structure', component: StructureFormComponent, }, { diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index e69de29bb..2f17257ad 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -0,0 +1,28 @@ +@import '../../../assets/scss/color'; +@import '../../../assets/scss/breakpoint'; +@import '../../../assets/scss/layout'; + +.page { + max-width: 1000px; + box-sizing: border-box; + margin: auto; + min-height: 450px; + max-height: 75vh; + overflow-y: auto; + color: $grey-1; + background: $white; + border-radius: 8px; + border: 1px solid $grey-6; + padding: 32px 24px 32px 48px; + * { + max-width: 600px; + } +} + +@media #{$tablet} { + .page { + height: calc( + 100vh - #{$header-height-phone} - #{$footer-height-phone} - 87px - 1px + ); // -1px because of header border + } +} diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 945996eb7..0ac4c560a 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -12,8 +12,8 @@ export class FormViewComponent implements OnInit { public formType = formType; public isEditMode = false; public isAccountMode = false; - public currentPage = 1; - public progressStatus = 37; + public currentPage = 1; // Change this value to start on a different page for dev testing + public progressStatus = 1; public nbPagesForm = 20; public isCurrentPageValid: boolean = true; constructor(private router: Router, private route: ActivatedRoute) {} diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index bfab9fee1..ad9207ba8 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -1 +1,13 @@ -<p>structure-form works!</p> +<div *ngIf="currentPage == structureFormStep.structureNameAndAddress"> + <form + [formGroup]="structureForm" + *ngIf="structureForm" + (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" + > + <app-structure-name-and-address + [getStructureControl] + [setValidationsForm]="setValidationsForm" + [setAddressStructure]="setAddressStructure" + ></app-structure-name-and-address> + </form> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 1f3ff6130..926fc746c 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -1,15 +1,177 @@ import { Component, OnInit } from '@angular/core'; +import { AbstractControl, FormGroup } from '@angular/forms'; +import { Address } from '../../../models/address.model'; +import { structureFormStep } from './structureFormStep.enum'; @Component({ selector: 'app-structure-form', templateUrl: './structure-form.component.html', - styleUrls: ['./structure-form.component.scss'] + styleUrls: ['./structure-form.component.scss'], }) export class StructureFormComponent implements OnInit { + public structureForm: FormGroup; + public structureFormStep = structureFormStep; + public isClaimMode = false; + public hoursForm: FormGroup; - constructor() { } + // Page and progress var + public currentPage = 0; // Change this value to start on a different page for dev testing + public progressStatus = 0; + public nbPagesForm = 24; + public isPageValid: boolean; + public pagesValidation = []; - ngOnInit(): void { + // Collapse var + public showWebsite: boolean; + public showSocialNetwork: boolean; + public showPublicsAccompaniment: boolean; + public showProceduresAccompaniment: boolean; + + // Condition form + public isEditMode = false; + public isWifiChoosen = null; + public userAcceptSavedDate = false; + + constructor() {} + + ngOnInit(): void {} + + public getStructureControl(nameControl: string): AbstractControl { + return this.structureForm.get(nameControl); } + public setAddressStructure(address?: Address): void { + console.log(address); + if (address) { + this.getAddressControl('numero').setValue(address.numero); + this.getAddressControl('street').setValue(address.street); + this.getAddressControl('commune').setValue(address.commune); + } else { + this.structureForm.get('address').reset(); + } + this.setValidationsForm(); + } + + public getAddressControl(nameControl: string): AbstractControl { + return this.structureForm.get('address').get(nameControl); + } + + /** + * Update valid page or return page validity of the given index + * @param {number} [index] - Page index + */ + private updatePageValid(index?: number): boolean { + if (index) { + return this.pagesValidation[index].valid; + } + this.isPageValid = this.pagesValidation[this.currentPage].valid; + return this.isPageValid; + } + + public setValidationsForm(): void { + if (this.isClaimMode) { + this.updatePageValid(); + } else { + this.pagesValidation[structureFormStep.structureNameAndAddress] = { + valid: this.getStructureControl('structureName').valid && this.getStructureControl('address').valid, + name: 'Nom et adresse', + }; + this.pagesValidation[structureFormStep.structureContact] = { + valid: this.getStructureControl('contactMail').valid && this.getStructureControl('contactPhone').valid, + name: 'Contact structure', + }; + this.pagesValidation[structureFormStep.structureType] = { + valid: this.getStructureControl('structureType').valid, + name: 'Type de structure', + }; + this.pagesValidation[structureFormStep.structureAccessModality] = { + valid: this.getStructureControl('accessModality').valid, + name: "Modalités d'accueil", + }; + this.pagesValidation[structureFormStep.structureHours] = { + valid: this.hoursForm.valid && this.getStructureControl('exceptionalClosures').valid, + name: "Horaires d'ouverture", + }; + this.pagesValidation[structureFormStep.structurePmr] = { + valid: this.getStructureControl('pmrAccess').valid, + name: 'Accessibilité pour les personnes à mobilité réduite', + }; + this.pagesValidation[structureFormStep.structureWebAndSocialNetwork] = { + valid: + (this.getStructureControl('website').valid || !this.showWebsite) && + ((this.getStructureControl('facebook').valid && + this.getStructureControl('twitter').valid && + this.getStructureControl('instagram').valid) || + !this.showSocialNetwork), + name: 'Présence sur internet', + }; + this.pagesValidation[structureFormStep.structurePublicTarget] = { + valid: this.getStructureControl('publics').valid, + name: 'Public admis', + }; + this.pagesValidation[structureFormStep.structureAccompanimentChoice] = { + valid: + this.getStructureControl('publicsAccompaniment').valid && + this.getStructureControl('proceduresAccompaniment').valid, + name: 'Accompagnements proposés', + }; + // TODO : screen not used anymore ? + // this.pagesValidation[structureFormStep.structureOtherAccompaniment] = { + // valid: this.getStructureControl('otherDescription').value, + // name: 'Autres démarches proposés', + // }; + // TODO : screen not used anymore ? + // this.pagesValidation[structureFormStep.structureRemoteAccompaniment] = { + // valid: this.getStructureControl('remoteAccompaniment').valid, + // name: 'Accompagnement à distance', + // }; + this.pagesValidation[structureFormStep.structureTrainingType] = { + valid: + this.getStructureControl('accessRight').valid && + this.getStructureControl('socialAndProfessional').valid && + this.getStructureControl('baseSkills').valid && + this.getStructureControl('parentingHelp').valid && + this.getStructureControl('digitalCultureSecurity').valid, + name: 'Ateliers au numérique proposés', + }; + this.pagesValidation[structureFormStep.structureTrainingPrice] = { + valid: this.getStructureControl('freeWorkShop').valid, + name: 'Gratuité des ateliers', + }; + this.pagesValidation[structureFormStep.structureWifi] = { + valid: this.getStructureControl('equipmentsAndServices').valid && this.isWifiChoosen, + name: 'Gratuité du wifi', + }; + this.pagesValidation[structureFormStep.structureEquipments] = { + valid: + this.getStructureControl('equipmentsAndServices').valid && + this.getStructureControl('nbComputers').valid && + this.getStructureControl('nbPrinters').valid && + this.getStructureControl('nbTablets').valid && + this.getStructureControl('nbNumericTerminal').valid && + this.getStructureControl('nbScanners').valid, + name: 'Matériels mis à disposition', + }; + this.pagesValidation[structureFormStep.structureLabels] = { + valid: this.getStructureControl('labelsQualifications').valid, + name: 'Labélisations proposées', + }; + this.pagesValidation[structureFormStep.structureOtherServices] = { + valid: this.getStructureControl('equipmentsAndServices').valid, + name: 'Autres services proposés', + }; + this.pagesValidation[structureFormStep.structureDescription] = { + valid: this.getStructureControl('description').valid, + name: 'Présentation de la structure', + }; + this.pagesValidation[structureFormStep.structureCovidInfo] = { + valid: this.getStructureControl('lockdownActivity').valid, + name: 'Informations spécifiques à la période COVID', + }; + + this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; + + this.updatePageValid(); + } + } } diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html index 7f13e1a62..ff67474b1 100644 --- a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html @@ -1 +1,44 @@ -<p>structure-name-and-address works!</p> +<div class="title"> + <h3>Quelle structure voulez-vous référencer ?</h3> +</div> +<!-- <p + class="missing-information" + *ngIf="isEditMode && (!getStructureControl('structureName').valid || !getStructureControl('address').valid)" +> + <app-svg-icon [iconClass]="'validation'" [type]="'form'" [icon]="'notValidate'" class="validationIcon"></app-svg-icon> + <span>Il faut renseigner tous les champs</span> +</p> --> +<div class="form-group" fxLayout="column"> + <label for="structureName">Nom de la structure</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + (input)="setValidationsForm()" + formControlName="structureName" + class="form-input structureName" + /> + <app-svg-icon + *ngIf="getStructureControl('structureName').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + </div> +</div> +<div class="form-group" fxLayout="column"> + <label for="address">Adresse de la structure</label> + <div class="addressRow" fxLayout="row" fxLayoutGap="13px"> + <app-address-autocomplete + [address]="getStructureControl('address').valid ? getStructureControl('address').value : null" + (inputAddress)="setAddressStructure()" + (selectedAddress)="setAddressStructure($event)" + ></app-address-autocomplete> + <app-svg-icon + *ngIf="getStructureControl('address').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + class="validateIcon" + ></app-svg-icon> + </div> +</div> diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts index 28769b105..ee9d0b7dd 100644 --- a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts @@ -1,15 +1,17 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; @Component({ selector: 'app-structure-name-and-address', templateUrl: './structure-name-and-address.component.html', - styleUrls: ['./structure-name-and-address.component.scss'] + styleUrls: ['./structure-name-and-address.component.scss'], }) export class StructureNameAndAddressComponent implements OnInit { + @Input() isEditMode: boolean; + @Input() getStructureControl: Function; + @Input() setValidationsForm: Function; + @Input() setAddressStructure: Function; + // @Output() setValidationsForm: EventEmitter<any> = new EventEmitter<any>(); + constructor() {} - constructor() { } - - ngOnInit(): void { - } - + ngOnInit(): void {} } -- GitLab From 098d779be05e1da5efa24b2e6fde3cc561b65031 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 18 Mar 2022 15:00:25 +0100 Subject: [PATCH 066/199] title font adjuted --- src/app/form/form-view/form-view.component.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index 2f17257ad..0a2254993 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -1,6 +1,7 @@ @import '../../../assets/scss/color'; @import '../../../assets/scss/breakpoint'; @import '../../../assets/scss/layout'; +@import '../../../assets//scss/typography'; .page { max-width: 1000px; @@ -19,6 +20,14 @@ } } +::ng-deep.title { + h3 { + @include lato-bold-26; + margin: 0; + // margin-bottom: 16px; + } +} + @media #{$tablet} { .page { height: calc( -- GitLab From 65c89e26cc56c6228d974f23d3374fcac693dde6 Mon Sep 17 00:00:00 2001 From: Etienne LOUPIAS <eloupias@grandlyon.com> Date: Fri, 18 Mar 2022 15:37:33 +0100 Subject: [PATCH 067/199] feat(onboarding): add profile structure choice --- .../profile-structure-choice.component.html | 69 ++++++++- .../profile-structure-choice.component.scss | 131 ++++++++++++++++++ .../profile-structure-choice.component.ts | 52 ++++++- src/app/services/structure.service.ts | 8 +- src/assets/ico/sprite.svg | 6 + src/assets/scss/_typography.scss | 20 +++ 6 files changed, 280 insertions(+), 6 deletions(-) diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html index f3c88b646..23512b6b2 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -1 +1,68 @@ -<p>profile-structure-choice works!</p> +<div class="content" fxLayout="column"> + <div class="card" fxLayout="column"> + <h2>Dans quelle structure travaillez-vous ?</h2> + <div class="search-structure"> + <div fxLayout="row" fxLayoutAlign="space-between" class="form-input search"> + <input + type="text" + id="structureName" + (input)="onSearchChange($event.target.value)" + placeholder="Rechercher une structure" + class="form-input search-input" + autocomplete="off" + /> + <app-svg-icon [iconClass]="'searchIcon icon-32'" [type]="'ico'" [icon]="'search'"></app-svg-icon> + </div> + <div class="scroll"> + <div *ngIf="!isAlreadySearching"> + <div class="nb"> + <div *ngIf="structures"> + <div *ngIf="searchString.length == 0" class="nb-text">{{ structures.length }} structures existantes</div> + <div *ngIf="searchString.length > 0" class="nb-text" [ngPlural]="structures.length"> + <ng-template ngPluralCase="0">0 structure trouvée</ng-template> + <ng-template ngPluralCase="1">1 structure trouvée</ng-template> + <ng-template ngPluralCase="other">{{ structures.length }} structures trouvées</ng-template> + </div> + </div> + </div> + + <div class="structure-list"> + <div *ngFor="let structure of structures" (click)="selectedResult(structure)" class="filet"> + <div + fxLayout="column" + fxLayoutAlign="space-around" + class="form-list" + [class]="structure.selected ? 'item-selected' : ''" + > + <div fxLayout="row" fxLayoutAlign="space-between"> + <div class="item-frame"> + <div class="name">{{ structure.structureName }}</div> + <div class="commune">{{ structure.address.commune }}</div> + </div> + <app-svg-icon + class="form-icon" + *ngIf="structure.selected" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + </div> + </div> + </div> + <div class="item-frame"> + <div class="create-text"> + Cette structure n’existe pas encore sur Res’in. + <span class="question">Souhaitez-vous la référencer ?</span> + </div> + <app-button + (action)="addStructure()" + [text]="'Créer une structure'" + [style]="buttonTypeEnum.Primary" + ></app-button> + </div> + </div> + </div> + </div> + </div> + </div> +</div> diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss index e69de29bb..8859e5602 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss @@ -0,0 +1,131 @@ +@import '../../../../../assets/scss/color'; +@import '../../../../../assets/scss/typography'; +@import '../../../../../assets/scss/inputs'; +@import '../../../../../assets/scss/breakpoint'; + +.content { + background: $grey-7; + align-items: center; + padding: 16px 0px 0px; + height: 665px; +} + +.card { + padding: 32px 24px 0px 48px; + background: $white; + border: 1px solid $grey-6; + border-radius: 8px; + margin: 16px 0px; + + @media #{$large-desktop} { + width: 1000px; + } +} + +.search-structure { + width: 380px; +} + +.search { + width: 380px; + border-radius: 20px; + padding: 0px 0px 0px 8px; + margin: 4px 0px; + + .search-input { + height: 34px; + border: 0px; + @include lato-regular-15; + font-style: italic; + line-height: 120%; + padding: 0px; + margin: 0px 0px 0px 5px; + } +} + +::ng-deep .searchIcon { + padding-right: 12px; +} + +.scroll { + height: 353px; + overflow-y: scroll; + border: 1px solid $grey-6; + margin: 16px 0px -1px 0px; +} + +.nb { + padding: 0px 0px 0px 16px; + margin: 16px 0px; +} + +.nb-text { + @include lato-regular-13; + line-height: 120%; + color: $grey-3; +} + +.structure-list { + margin: 16px 0px; +} + +.filet { + border-width: 0px 0px 1px 0px; + border-style: solid; + border-color: $grey-8; +} + +.form-list { + cursor: pointer; + height: 76px; + border-width: 2px; + border-style: solid; + border-color: $white; + &:hover { + background: $primary-color-light; + border-color: $primary-color-light; + } + + &.item-selected { + border-color: $green-1; + &:hover { + border-color: $green-1; + background: $white; + } + } +} + +.item-frame { + padding: 0px 0px 0px 16px; +} + +.name { + @include lato-regular-16; + font-weight: 600; + line-height: 110%; + color: $grey-1; +} + +.commune { + @include lato-regular-13; + font-style: italic; + line-height: 120%; + color: $grey-3; + margin: 6px 0px; +} + +.create-text { + @include lato-regular-15; + line-height: 120%; + color: $grey-1; + margin: 8px 0px; + + .question { + @include lato-bold-15; + line-height: 110%; + } +} + +.form-icon { + margin: 0px 24px; +} diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts index d37068d0b..1f9454c6b 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts @@ -1,15 +1,61 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, OnInit, Output } from '@angular/core'; +import { Structure } from '../../../../models/structure.model'; +import { StructureService } from '../../../../services/structure.service'; +import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; +import { Filter } from '../../../../structure-list/models/filter.model'; @Component({ selector: 'app-profile-structure-choice', templateUrl: './profile-structure-choice.component.html', - styleUrls: ['./profile-structure-choice.component.scss'] + styleUrls: ['./profile-structure-choice.component.scss'], }) export class ProfileStructureChoiceComponent implements OnInit { + @Output() selectedStructure: EventEmitter<Structure> = new EventEmitter<Structure>(); + @Output() createStructure = new EventEmitter<any>(); + public searchString: string = ''; + public structures: Structure[]; + public selectedStructureItem: Structure; + public isAlreadySearching = false; + public buttonTypeEnum = ButtonType; - constructor() { } + constructor(private structureService: StructureService) {} ngOnInit(): void { + this.getStructures(null); } + public onSearchChange(searchString: string) { + if (searchString.length < 3 && this.searchString == '') return; + this.searchString = searchString; + const filters: Filter[] = []; + if (searchString.length > 0) { + filters.push(new Filter('query', searchString)); + } + this.getStructures(filters); + } + + public selectedResult(hit: any): void { + if (this.selectedStructureItem) this.selectedStructureItem['selected'] = false; + hit.selected = true; + this.selectedStructureItem = hit; + // Emit choosen value + this.selectedStructure.emit(this.selectedStructureItem); + } + + private getStructures(filters: Filter[]) { + if (!this.isAlreadySearching) { + this.isAlreadySearching = true; + this.structureService.getStructuresByName(filters).subscribe((structures) => { + if (this.searchString == '') { + structures.sort((a, b) => a.structureName.localeCompare(b.structureName)); + } + this.structures = structures; + this.isAlreadySearching = false; + }); + } + } + + public addStructure(): void { + this.createStructure.emit(); + } } diff --git a/src/app/services/structure.service.ts b/src/app/services/structure.service.ts index 6135dd776..76002c478 100644 --- a/src/app/services/structure.service.ts +++ b/src/app/services/structure.service.ts @@ -77,9 +77,13 @@ export class StructureService { return this.http.post<any>(`${this.baseUrl}/${idStructure}/addOwner`, user); } - public getStructures(filters: Filter[]): Observable<Structure[]> { + public getStructuresByName(filters: Filter[]): Observable<Structure[]> { + return this.getStructures(filters, 'searchByName'); + } + + public getStructures(filters: Filter[], searchUrl: string = 'search'): Observable<Structure[]> { if (filters && filters.length > 0) { - let requestUrl = `${this.baseUrl}/search`; + let requestUrl = `${this.baseUrl}/${searchUrl}`; const queryString = _.find(filters, { name: 'query' }); if (queryString) { _.remove(filters, { name: 'query' }); diff --git a/src/assets/ico/sprite.svg b/src/assets/ico/sprite.svg index 81f91788f..d9d63f5f3 100644 --- a/src/assets/ico/sprite.svg +++ b/src/assets/ico/sprite.svg @@ -367,4 +367,10 @@ <line x1="10.0176" y1="24.9287" x2="16.0176" y2="24.9287" stroke="#348899" stroke-width="2" stroke-linecap="round"/> </symbol> +<symbol id="search" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M19.8262 19.8262L24.0001 24.0001Z" fill="#333333"/> +<path d="M19.8262 19.8262L24.0001 24.0001" stroke="#828282" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M14.6087 21.2174C18.2586 21.2174 21.2174 18.2586 21.2174 14.6087C21.2174 10.9588 18.2586 8 14.6087 8C10.9588 8 8 10.9588 8 14.6087C8 18.2586 10.9588 21.2174 14.6087 21.2174Z" stroke="#828282" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</symbol> + </svg> diff --git a/src/assets/scss/_typography.scss b/src/assets/scss/_typography.scss index 08b4d0c87..11ce5e352 100644 --- a/src/assets/scss/_typography.scss +++ b/src/assets/scss/_typography.scss @@ -3,7 +3,9 @@ $footer-text-font: 'Arial', 'Helvetica', sans-serif; $title-font: 'Lato', 'Helvetica', sans-serif; $font-size-xxsmall: 0.75em; // 12px +$font-size-xxismall: 0.8125em; // 13px $font-size-xsmall: 0.875em; // 14px +$font-size-xismall: 0.9375em; // 15px $font-size-small: 1em; // 16px $font-size-smedium: 1.125em; // 18px @@ -146,6 +148,18 @@ h6, font-weight: normal; font-size: $font-size-small; } +@mixin lato-bold-15 { + font-family: $text-font; + font-style: normal; + font-weight: bold; + font-size: $font-size-xismall; +} +@mixin lato-regular-15 { + font-family: $text-font; + font-style: normal; + font-weight: normal; + font-size: $font-size-xismall; +} @mixin lato-bold-14 { font-family: $text-font; font-style: normal; @@ -158,6 +172,12 @@ h6, font-weight: normal; font-size: $font-size-xsmall; } +@mixin lato-regular-13 { + font-family: $text-font; + font-style: normal; + font-weight: normal; + font-size: $font-size-xxismall; +} @mixin lato-regular-12 { font-family: $text-font; font-style: normal; -- GitLab From 92da629027d7cdf9428678fab3d14fefc9c7e77f Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Fri, 18 Mar 2022 15:39:53 +0100 Subject: [PATCH 068/199] Add last step for account --- .../footer-form/footer-form.component.html | 6 +- .../form/footer-form/footer-form.component.ts | 105 ++++++------------ .../form/form-view/form-view.component.html | 2 +- .../information-step.component.html | 10 +- .../information-step.component.scss | 19 ++++ src/assets/scss/_typography.scss | 7 +- 6 files changed, 76 insertions(+), 73 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.html b/src/app/form/footer-form/footer-form.component.html index edea503dc..9d1cf6095 100644 --- a/src/app/form/footer-form/footer-form.component.html +++ b/src/app/form/footer-form/footer-form.component.html @@ -6,16 +6,18 @@ fxLayoutAlign="center center" > <app-button - *ngIf="displayPreviousButton" + *ngIf="displayPreviousButton && !isLastFormStep" (action)="goToPreviousPage()" [text]="btnName[0]" [iconType]="'form'" [iconBtn]="'chevronLeft'" ></app-button> - <app-button *ngIf="hasFinishButton()" (action)="finishedModal()" [text]="btnName[2]" [iconBtn]="'flag'"></app-button> + <!-- <app-button *ngIf="hasFinishButton()" (action)="finishedModal()" [text]="btnName[2]" [iconBtn]="'flag'"></app-button> --> + <app-button *ngIf="isLastFormStep" (action)="goToHome()" [text]="'Ok'" [style]="buttonTypeEnum.Primary"></app-button> <app-button + *ngIf="!isLastFormStep" (action)="nextPage()" [disabled]="!isValid" [text]="btnName[1]" diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index f4758d857..7cc12e22d 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -1,5 +1,6 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core'; import { FormGroup } from '@angular/forms'; +import { Router } from '@angular/router'; import { first } from 'rxjs/operators'; import { User } from '../../models/user.model'; import { AuthService } from '../../services/auth.service'; @@ -16,8 +17,7 @@ import { structureFormStep } from '../form-view/structure-form/structureFormStep templateUrl: './footer-form.component.html', styleUrls: ['./footer-form.component.scss'], }) -export class FooterFormComponent { - @Input() currentStep: number; +export class FooterFormComponent implements OnChanges { @Input() currentForm: formType; @Input() isValid: boolean; @Input() isClaimMode: boolean; @@ -27,17 +27,22 @@ export class FooterFormComponent { @Input() nbPagesForm: number; @Input() form: FormGroup; @Input() linkedStructureId: Array<string> = null; - @Input() currentPage: accountFormStep | profileFormStep | structureFormStep | personnalOfferFormStep; + @Input() currentStep: accountFormStep | profileFormStep | structureFormStep | personnalOfferFormStep; @Output() goNext = new EventEmitter<any>(); @Output() goPrev = new EventEmitter<any>(); @Output() endPage = new EventEmitter<any>(); - + public isLastFormStep: boolean = false; public buttonTypeEnum = ButtonType; - constructor(private authService: AuthService, public utils: Utils) {} + constructor(private authService: AuthService, public utils: Utils, private router: Router) {} public goToNextPage(): void { this.goNext.emit(); } + ngOnChanges(changes: SimpleChanges): void { + if (changes.currentStep && this.currentStep === accountFormStep.confirmEmailSentInfo) { + this.isLastFormStep = true; + } + } public goToPreviousPage(): void { this.goPrev.emit(); @@ -54,78 +59,42 @@ export class FooterFormComponent { * Page algo for create account case */ public nextPageAccount(): void { - if (this.currentPage === this.nbPagesForm - 1) { + if (this.currentStep === this.nbPagesForm - 1) { const user = new User(this.form.value); // Create user with structure user.structuresLink = this.linkedStructureId; - this.authService.register(user).subscribe(() => { - // this.progressStatus = 100; - }); + this.authService.register(user).subscribe(() => {}); } - if (this.currentPage === accountFormStep.accountInfo) { - this.currentPage = accountFormStep.accountCredentials; - console.log('cur', this.currentPage); + if (this.currentStep === accountFormStep.accountInfo) { + this.currentStep = accountFormStep.accountCredentials; } - - // this.progressStatus += 25; } - public validateAccountForm(): void { - if (this.form.valid) { - const user = new User(this.form.value); - this.authService.register(user).pipe(first()); + // public validateAccountForm(): void { + // if (this.form.valid) { + // const user = new User(this.form.value); + // this.authService.register(user).pipe(first()); - // .subscribe(() => { - // this.createStructure(structure, user); - // }); - // if (this.userAcceptNewsletter) { - // this.newsletterService.newsletterSubscribe(user.email).subscribe(() => {}); - // } - } + // // .subscribe(() => { + // // this.createStructure(structure, user); + // // }); + // // if (this.userAcceptNewsletter) { + // // this.newsletterService.newsletterSubscribe(user.email).subscribe(() => {}); + // // } + // } + // } + public goToHome(): void { + this.router.navigateByUrl('news'); } public nextPage(): void { - if (this.isClaimMode) { - // this.nextPageClaim(); - } else if (this.isAccountMode) { - this.nextPageAccount(); - } else { - // Check if user already connected to skip accountForm pages. - // if (this.currentPage === PageTypeEnum.info && this.profile) { - // this.currentPage += 2; // Skip accountInfo pages from AccountForm - // this.progressStatus += 2 * (100 / this.nbPagesForm); - // } - // Check if "other" isn't check to hide "other description" page - // if ( - // this.currentPage === PageTypeEnum.structureAccompaniment && - // !this.isInArray('autres', 'proceduresAccompaniment') - // ) { - // this.currentPage++; // page structureOtherAccompaniment skip and go to page structureWorkshop - // this.progressStatus += 100 / this.nbPagesForm; - // } - - // if (this.currentPage === PageTypeEnum.structureWorkshop) { - // if ( - // !this.structureForm.get('baseSkills').value.length && - // !this.structureForm.get('accessRight').value.length && - // !this.structureForm.get('parentingHelp').value.length && - // !this.structureForm.get('socialAndProfessional').value.length && - // !this.structureForm.get('digitalCultureSecurity').value.length - // ) { - // this.getStructureControl('freeWorkShop').reset(); - // this.currentPage++; - // this.progressStatus += 100 / this.nbPagesForm; - // } - // } - - // Check if going to the last page to submit form and send email verification. - if (this.currentPage === this.nbPagesForm - 1) { - this.validateAccountForm(); - } else { - this.goToNextPage(); - // this.progressStatus += 100 / this.nbPagesForm; - // document.getElementsByClassName('content')[0].scrollTo(0, 0); - // this.updatePageValid(); - } + if (this.currentStep === accountFormStep.accountCredentials) { + const user = new User(this.form.value); + // Create user with structure + user.structuresLink = this.linkedStructureId; + this.authService.register(user).subscribe(() => {}); + document.getElementsByClassName('page')[0].scrollTo(0, 0); } + + this.goToNextPage(); } } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index af19edfe7..ccae11353 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -19,7 +19,7 @@ <ng-container *ngIf="formType[routeParam] === formType.personnalOffer"> PersonnalOffer </ng-container> </div> <app-footer-form - [currentPage]="currentPage" + [currentStep]="currentPage" [currentForm]="formType.account" [form]="accountForm" [btnName]="['Précédent', 'Suivant']" diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 8347e5235..34eb09d9e 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -1,3 +1,11 @@ <ng-container *ngIf="step === accountFormStepEnum.confirmEmailSentInfo"> - Un email vous a été envoyé afin de finaliser votre inscription + <div class="mailSent"> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#emailVerification'"></use> + </svg> + <p> + Un email vous a été envoyé<br /> + afin de finaliser votre inscription + </p> + </div> </ng-container> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.scss b/src/app/form/form-view/global-components/information-step/information-step.component.scss index e69de29bb..1c721cf52 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.scss +++ b/src/app/form/form-view/global-components/information-step/information-step.component.scss @@ -0,0 +1,19 @@ +@import '../../../../../assets/scss/typography'; + +.mailSent { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: inherit; + height: 450px; + svg { + width: 100%; + max-width: 200px; + } + p { + @include lato-bold-24; + margin-top: 3rem; + text-align: center; + } +} diff --git a/src/assets/scss/_typography.scss b/src/assets/scss/_typography.scss index 08b4d0c87..0bf347619 100644 --- a/src/assets/scss/_typography.scss +++ b/src/assets/scss/_typography.scss @@ -78,7 +78,12 @@ h6, font-weight: normal; font-size: $font-size-large; } - +@mixin lato-bold-24 { + font-family: $title-font; + font-style: normal; + font-weight: bold; + font-size: $font-size-xxmedium; +} @mixin lato-regular-24 { font-family: $text-font; font-style: normal; -- GitLab From a1dc7bc9d9d90585e44aba0f2eed9a4abeba3c00 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 09:28:31 +0100 Subject: [PATCH 069/199] structure name and address --- .../form-view/form-view-routing.module.ts | 2 +- .../form/form-view/form-view.component.html | 10 ++- src/app/form/form-view/form-view.component.ts | 88 ++++++++++++++++--- .../progress-bar/progress-bar.component.scss | 3 - .../structure-form.component.html | 16 ++-- .../structure-form.component.ts | 76 ++++++++++------ .../structure-name-and-address.component.html | 75 ++++++++-------- .../structure-name-and-address.component.ts | 19 ++-- .../svg-icon/svg-icon.component.scss | 2 +- 9 files changed, 192 insertions(+), 99 deletions(-) diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts index 419a17e2d..30f989c49 100644 --- a/src/app/form/form-view/form-view-routing.module.ts +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -12,7 +12,7 @@ const routes: Routes = [ component: FormViewComponent, children: [ { - path: 'create-structure', + path: 'structure', component: StructureFormComponent, }, { diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index af19edfe7..029589a1b 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -10,12 +10,20 @@ <app-account-form [nbSteps]="nbSteps" [accountForm]="accountForm" + [hoursForm]="hoursForm" [currentStep]="currentPage" (pageValid)="validatePage($event)" ></app-account-form> </ng-container> <ng-container *ngIf="formType[routeParam] === formType.profile"> Profile </ng-container> - <ng-container *ngIf="formType[routeParam] === formType.structure"> Structure </ng-container> + <ng-container *ngIf="formType[routeParam] === formType.structure"> + <app-structure-form + [nbSteps]="nbSteps" + [structureForm]="structureForm" + [currentStep]="currentPage" + (pageValid)="validatePage($event)" + ></app-structure-form> + </ng-container> <ng-container *ngIf="formType[routeParam] === formType.personnalOffer"> PersonnalOffer </ng-container> </div> <app-footer-form diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 161d9d6e7..54f24b7d4 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -1,8 +1,10 @@ import { Component, OnInit } from '@angular/core'; import { FormGroup, FormControl, Validators, FormArray } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; +import { Day } from '../../models/day.model'; import { Structure } from '../../models/structure.model'; import { StructureWithOwners } from '../../models/structureWithOwners.model'; +import { Time } from '../../models/time.model'; import { User } from '../../models/user.model'; import { ProfileService } from '../../profile/services/profile.service'; import { StructureService } from '../../services/structure.service'; @@ -22,20 +24,40 @@ import { structureFormStep } from './structure-form/structureFormStep.enum'; export class FormViewComponent implements OnInit { public routeParam: string; public formType = formType; + public currentPage: accountFormStep | profileFormStep | structureFormStep | personnalOfferFormStep; + + // Account Form public accountForm: FormGroup; + + // Structure from public structureForm: FormGroup; - public profile: User; + public editForm: FormGroup; + public isEditMode: boolean = false; + public structureFormStep = structureFormStep; + + // Page and progress var + public pagesValidation = []; + public nbSteps: number; + + // Condition form + public userAcceptSavedDate = false; + + // Collapse var + public showWebsite: boolean; + public showSocialNetwork: boolean; + + public profile: User; public isAccountMode: boolean = false; public isClaimMode: boolean = false; public isJoinMode: boolean = false; public claimStructure: boolean = false; - public currentPage: accountFormStep | profileFormStep | structureFormStep | personnalOfferFormStep; - public nbSteps: number; public isWifiChoosen: boolean; public linkedStructureId; public structureWithOwners: StructureWithOwners; public isPageValid: boolean = false; + public hoursForm: FormGroup; + constructor( private router: Router, private route: ActivatedRoute, @@ -45,6 +67,8 @@ export class FormViewComponent implements OnInit { async ngOnInit(): Promise<void> { this.routeParam = this.router.routerState.snapshot.url.split('/')[2]; + + this.initPage(); // this.isLoading = true; this.profileService.getProfile().then((user: User) => { this.profile = user; @@ -61,10 +85,8 @@ export class FormViewComponent implements OnInit { this.createAccountForm(); this.claimStructure = history.state.newUser; } else { - // this.initForm(new Structure()); - // this.createAccountForm(); - // // Init form - // this.structureForm = this.createStructureForm(structure); + // Init form + this.initForm(new Structure()); // if (this.isEditMode) { // this.editForm = this.createStructureForm(structure); // } @@ -96,6 +118,36 @@ export class FormViewComponent implements OnInit { this.isEditMode = true; } }); + } + + private initForm(structure: Structure): void { + // Init account Form + this.createAccountForm(); + + // Init form + this.createStructureForm(structure); + // if (this.isEditMode) { + // this.editForm = this.createStructureForm(structure); + // } + + // Init hours form + this.hoursForm = new FormGroup({ + monday: this.createDay(structure.hours.monday), + tuesday: this.createDay(structure.hours.tuesday), + wednesday: this.createDay(structure.hours.wednesday), + thursday: this.createDay(structure.hours.thursday), + friday: this.createDay(structure.hours.friday), + saturday: this.createDay(structure.hours.saturday), + sunday: this.createDay(structure.hours.sunday), + }); + // if (this.isEditMode) { + // this.showCollapse(structure); + // } + + // this.setValidationsForm(); + } + + private initPage(): void { if (formType[this.routeParam] === formType.account) { this.nbSteps = 3; this.currentPage = accountFormStep.accountInfo; @@ -109,11 +161,25 @@ export class FormViewComponent implements OnInit { // this.nbSteps = 3; // this.currentPage = accountFormStep.accountInfo; // } - // if (formType[this.routeParam] === formType.structure) { - // this.nbSteps = 3; - // this.currentPage = accountFormStep.accountInfo; - // } + if (formType[this.routeParam] === formType.structure) { + this.nbSteps = 2; + this.currentPage = structureFormStep.structureNameAndAddress; + } + } + + private createDay(day: Day): FormGroup { + return new FormGroup({ + open: new FormControl(day.open, Validators.required), + time: new FormArray(day.time.map((oneTime) => this.createTime(oneTime))) as FormArray, + }); + } + private createTime(time: Time): FormGroup { + return new FormGroup({ + opening: new FormControl(time.opening), + closing: new FormControl(time.closing), + }); } + private createAccountForm(email?: string): void { this.accountForm = new FormGroup( { diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss index 1bd04db0e..011fc106e 100644 --- a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.scss @@ -1,9 +1,6 @@ @import '../../../../../assets/scss/layout'; -// @import '../../../assets/scss/breakpoint'; @import '../../../../../assets/scss/color'; @import '../../../../../assets/scss/typography'; -// @import '../../../assets/scss/shapes'; -// @import '../../../assets/scss/z-index'; .progressBar { height: #{$progressBar-height}; diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index ad9207ba8..adcf9cc63 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -1,13 +1,7 @@ <div *ngIf="currentPage == structureFormStep.structureNameAndAddress"> - <form - [formGroup]="structureForm" - *ngIf="structureForm" - (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" - > - <app-structure-name-and-address - [getStructureControl] - [setValidationsForm]="setValidationsForm" - [setAddressStructure]="setAddressStructure" - ></app-structure-name-and-address> - </form> + <app-structure-name-and-address + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + (addressStructure)="setAddressStructure($event)" + ></app-structure-name-and-address> </div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 926fc746c..685329922 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -1,6 +1,9 @@ -import { Component, OnInit } from '@angular/core'; -import { AbstractControl, FormGroup } from '@angular/forms'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { AbstractControl, FormArray, FormControl, FormGroup, Validators } from '@angular/forms'; import { Address } from '../../../models/address.model'; +import { Day } from '../../../models/day.model'; +import { Structure } from '../../../models/structure.model'; +import { Time } from '../../../models/time.model'; import { structureFormStep } from './structureFormStep.enum'; @Component({ @@ -8,11 +11,12 @@ import { structureFormStep } from './structureFormStep.enum'; templateUrl: './structure-form.component.html', styleUrls: ['./structure-form.component.scss'], }) -export class StructureFormComponent implements OnInit { - public structureForm: FormGroup; +export class StructureFormComponent { + @Input() structureForm: FormGroup; + @Input() hoursForm: FormGroup; + @Output() pageValid = new EventEmitter<any>(); public structureFormStep = structureFormStep; public isClaimMode = false; - public hoursForm: FormGroup; // Page and progress var public currentPage = 0; // Change this value to start on a different page for dev testing @@ -32,6 +36,10 @@ export class StructureFormComponent implements OnInit { public isWifiChoosen = null; public userAcceptSavedDate = false; + // Structure form + + public isAccountMode: boolean = false; + constructor() {} ngOnInit(): void {} @@ -41,7 +49,6 @@ export class StructureFormComponent implements OnInit { } public setAddressStructure(address?: Address): void { - console.log(address); if (address) { this.getAddressControl('numero').setValue(address.numero); this.getAddressControl('street').setValue(address.street); @@ -56,24 +63,18 @@ export class StructureFormComponent implements OnInit { return this.structureForm.get('address').get(nameControl); } - /** - * Update valid page or return page validity of the given index - * @param {number} [index] - Page index - */ - private updatePageValid(index?: number): boolean { - if (index) { - return this.pagesValidation[index].valid; - } - this.isPageValid = this.pagesValidation[this.currentPage].valid; - return this.isPageValid; - } - public setValidationsForm(): void { if (this.isClaimMode) { + this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; + this.updatePageValid(); + } else if (this.isAccountMode) { + console.log('account mode'); + this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; this.updatePageValid(); } else { + console.log('validation form'); this.pagesValidation[structureFormStep.structureNameAndAddress] = { - valid: this.getStructureControl('structureName').valid && this.getStructureControl('address').valid, + valid: this.structureForm.get('structureName').valid && this.structureForm.get('address').valid, name: 'Nom et adresse', }; this.pagesValidation[structureFormStep.structureContact] = { @@ -88,10 +89,10 @@ export class StructureFormComponent implements OnInit { valid: this.getStructureControl('accessModality').valid, name: "Modalités d'accueil", }; - this.pagesValidation[structureFormStep.structureHours] = { - valid: this.hoursForm.valid && this.getStructureControl('exceptionalClosures').valid, - name: "Horaires d'ouverture", - }; + // this.pagesValidation[structureFormStep.structureHours] = { + // valid: this.hoursForm.valid && this.getStructureControl('exceptionalClosures').valid, + // name: "Horaires d'ouverture", + // }; this.pagesValidation[structureFormStep.structurePmr] = { valid: this.getStructureControl('pmrAccess').valid, name: 'Accessibilité pour les personnes à mobilité réduite', @@ -114,16 +115,17 @@ export class StructureFormComponent implements OnInit { this.getStructureControl('publicsAccompaniment').valid && this.getStructureControl('proceduresAccompaniment').valid, name: 'Accompagnements proposés', + // TODO : update with new page name }; - // TODO : screen not used anymore ? // this.pagesValidation[structureFormStep.structureOtherAccompaniment] = { // valid: this.getStructureControl('otherDescription').value, // name: 'Autres démarches proposés', + // // TODO : update with new page name / remove // }; - // TODO : screen not used anymore ? // this.pagesValidation[structureFormStep.structureRemoteAccompaniment] = { // valid: this.getStructureControl('remoteAccompaniment').valid, // name: 'Accompagnement à distance', + // // TODO : update with new page name / remove // }; this.pagesValidation[structureFormStep.structureTrainingType] = { valid: @@ -168,10 +170,28 @@ export class StructureFormComponent implements OnInit { valid: this.getStructureControl('lockdownActivity').valid, name: 'Informations spécifiques à la période COVID', }; - - this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; - + if (this.isEditMode) { + this.pagesValidation[structureFormStep.structureConsent] = { + valid: this.getStructureControl('dataShareConsentDate').valid, + name: 'Partage de données sur data.grandlyon.com', + }; + } else { + this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; + } this.updatePageValid(); } } + + /** + * Update valid page or return page validity of the given index + * @param {number} [index] - Page index + */ + private updatePageValid(index?: number): boolean { + if (index) { + return this.pagesValidation[index].valid; + } + this.isPageValid = this.pagesValidation[this.currentPage].valid; + if (this.isPageValid) this.pageValid.emit(); + return this.isPageValid; + } } diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html index ff67474b1..63e05c887 100644 --- a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html @@ -1,44 +1,47 @@ -<div class="title"> - <h3>Quelle structure voulez-vous référencer ?</h3> -</div> -<!-- <p +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>Quelle structure voulez-vous référencer ?</h3> + </div> + <!-- TODO : keep edit ? --> + <!-- <p class="missing-information" *ngIf="isEditMode && (!getStructureControl('structureName').valid || !getStructureControl('address').valid)" > <app-svg-icon [iconClass]="'validation'" [type]="'form'" [icon]="'notValidate'" class="validationIcon"></app-svg-icon> <span>Il faut renseigner tous les champs</span> </p> --> -<div class="form-group" fxLayout="column"> - <label for="structureName">Nom de la structure</label> - <div fxLayout="row" fxLayoutGap="13px"> - <input - type="text" - (input)="setValidationsForm()" - formControlName="structureName" - class="form-input structureName" - /> - <app-svg-icon - *ngIf="getStructureControl('structureName').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> + <div class="form-group" fxLayout="column"> + <label for="structureName">Nom de la structure</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + (input)="setValidationsForm()" + formControlName="structureName" + class="form-input structureName" + /> + <app-svg-icon + *ngIf="structureForm.get('structureName').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + </div> </div> -</div> -<div class="form-group" fxLayout="column"> - <label for="address">Adresse de la structure</label> - <div class="addressRow" fxLayout="row" fxLayoutGap="13px"> - <app-address-autocomplete - [address]="getStructureControl('address').valid ? getStructureControl('address').value : null" - (inputAddress)="setAddressStructure()" - (selectedAddress)="setAddressStructure($event)" - ></app-address-autocomplete> - <app-svg-icon - *ngIf="getStructureControl('address').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - class="validateIcon" - ></app-svg-icon> + <div class="form-group" fxLayout="column"> + <label for="address">Adresse de la structure</label> + <div class="addressRow" fxLayout="row" fxLayoutGap="13px"> + <app-address-autocomplete + [address]="structureForm.get('address').valid ? structureForm.get('address').value : null" + (inputAddress)="setAddressStructure()" + (selectedAddress)="setAddressStructure($event)" + ></app-address-autocomplete> + <app-svg-icon + *ngIf="structureForm.get('address').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + class="validateIcon" + ></app-svg-icon> + </div> </div> -</div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts index ee9d0b7dd..b47ac69da 100644 --- a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts @@ -1,17 +1,22 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-name-and-address', templateUrl: './structure-name-and-address.component.html', styleUrls: ['./structure-name-and-address.component.scss'], }) -export class StructureNameAndAddressComponent implements OnInit { +export class StructureNameAndAddressComponent { + @Input() structureForm: FormGroup; @Input() isEditMode: boolean; - @Input() getStructureControl: Function; - @Input() setValidationsForm: Function; - @Input() setAddressStructure: Function; - // @Output() setValidationsForm: EventEmitter<any> = new EventEmitter<any>(); - constructor() {} + @Output() validateForm = new EventEmitter<any>(); + @Output() addressStructure = new EventEmitter<any>(); - ngOnInit(): void {} + public setValidationsForm(): void { + this.validateForm.emit(); + } + + public setAddressStructure(value) { + this.addressStructure.emit(value); + } } diff --git a/src/app/shared/components/svg-icon/svg-icon.component.scss b/src/app/shared/components/svg-icon/svg-icon.component.scss index a9bfa0105..493621949 100644 --- a/src/app/shared/components/svg-icon/svg-icon.component.scss +++ b/src/app/shared/components/svg-icon/svg-icon.component.scss @@ -30,7 +30,7 @@ width: 80px; } &.validation { - height: 40px; + height: 36px; width: 20px; } &.validation-small { -- GitLab From a78b3ab9d2be7cd85dafbadc92dd730079ea28ba Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 10:17:12 +0100 Subject: [PATCH 070/199] structure contact page --- .../form/form-view/form-view.component.html | 2 +- .../form/form-view/form-view.component.scss | 5 +- .../structure-contact.component.html | 59 ++++++++++++++++++- .../structure-contact.component.ts | 17 ++++-- .../structure-form.component.html | 3 + 5 files changed, 78 insertions(+), 8 deletions(-) diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 83bed7bd0..304050f5e 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -15,7 +15,6 @@ (pageValid)="validatePage($event)" ></app-account-form> </ng-container> - <ng-container *ngIf="formType[routeParam] === formType.profile"> Profile </ng-container> <ng-container *ngIf="formType[routeParam] === formType.structure"> <app-structure-form [nbSteps]="nbSteps" @@ -24,6 +23,7 @@ (pageValid)="validatePage($event)" ></app-structure-form> </ng-container> + <ng-container *ngIf="formType[routeParam] === formType.profile"> Profile </ng-container> <ng-container *ngIf="formType[routeParam] === formType.personnalOffer"> PersonnalOffer </ng-container> </div> <app-footer-form diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index 0a2254993..8b6c0fbe8 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -21,10 +21,13 @@ } ::ng-deep.title { + margin-bottom: 16px; h3 { @include lato-bold-26; margin: 0; - // margin-bottom: 16px; + } + p { + margin-bottom: 0; } } diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html index e898bb2ec..4341d9d76 100644 --- a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html +++ b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html @@ -1 +1,58 @@ -<p>structure-contact works!</p> +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>Comment joindre votre structure ?</h3> + </div> + <p + class="missing-information" + *ngIf="isEditMode && (!structureForm.get('contactPhone').valid || !structureForm.get('contactMail').valid)" + > + <app-svg-icon + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + <span>Il faut renseigner tous les champs</span> + </p> + <div class="form-group" fxLayout="column"> + <label for="contactPhone">Téléphone de la structure</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + formControlName="contactPhone" + class="form-input" + (input)="utils.modifyPhoneInput(structureForm, 'contactPhone', $event.target.value); setValidationsForm()" + /> + <app-svg-icon + *ngIf="structureForm.get('contactPhone').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="structureForm.get('contactPhone').invalid && structureForm.get('contactPhone').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="structureName">Email de la structure</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input type="text" (input)="setValidationsForm()" formControlName="contactMail" class="form-input" /> + <app-svg-icon + *ngIf="structureForm.get('contactMail').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="structureForm.get('contactMail').invalid && structureForm.get('contactMail').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts index aaaa62968..03ca960fa 100644 --- a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts +++ b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts @@ -1,15 +1,22 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { Utils } from '../../../../utils/utils'; @Component({ selector: 'app-structure-contact', templateUrl: './structure-contact.component.html', - styleUrls: ['./structure-contact.component.scss'] + styleUrls: ['./structure-contact.component.scss'], }) export class StructureContactComponent implements OnInit { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + @Output() validateForm = new EventEmitter<any>(); - constructor() { } + constructor(public utils: Utils) {} - ngOnInit(): void { - } + ngOnInit(): void {} + public setValidationsForm(): void { + this.validateForm.emit(); + } } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index adcf9cc63..94c72f40e 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -5,3 +5,6 @@ (addressStructure)="setAddressStructure($event)" ></app-structure-name-and-address> </div> +<div *ngIf="currentPage == structureFormStep.structureContact"> + <app-structure-contact [structureForm]="structureForm" (validateForm)="setValidationsForm()"></app-structure-contact> +</div> -- GitLab From 3f444b025c69736dc33c9de9fa31fc68750a8dbb Mon Sep 17 00:00:00 2001 From: Etienne LOUPIAS <eloupias@grandlyon.com> Date: Tue, 22 Mar 2022 10:40:41 +0100 Subject: [PATCH 071/199] feat(onboarding): minor style change --- .../profile-structure-choice.component.html | 2 +- .../profile-structure-choice.component.scss | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html index 23512b6b2..be54fe6bd 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -52,7 +52,7 @@ <div class="item-frame"> <div class="create-text"> Cette structure n’existe pas encore sur Res’in. - <span class="question">Souhaitez-vous la référencer ?</span> + <strong>Souhaitez-vous la référencer ?</strong> </div> <app-button (action)="addStructure()" diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss index 8859e5602..d8292968d 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss @@ -37,7 +37,6 @@ border: 0px; @include lato-regular-15; font-style: italic; - line-height: 120%; padding: 0px; margin: 0px 0px 0px 5px; } @@ -61,7 +60,6 @@ .nb-text { @include lato-regular-13; - line-height: 120%; color: $grey-3; } @@ -102,28 +100,20 @@ .name { @include lato-regular-16; font-weight: 600; - line-height: 110%; color: $grey-1; } .commune { @include lato-regular-13; font-style: italic; - line-height: 120%; color: $grey-3; margin: 6px 0px; } .create-text { @include lato-regular-15; - line-height: 120%; color: $grey-1; margin: 8px 0px; - - .question { - @include lato-bold-15; - line-height: 110%; - } } .form-icon { -- GitLab From 83485d888cf0ef3789d49b2b62f719c222d9ed76 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Tue, 22 Mar 2022 10:57:03 +0100 Subject: [PATCH 072/199] Add login + reset password --- src/app/app-routing.module.ts | 9 +- src/app/app.module.ts | 2 + .../account-credentials.component.html | 15 + .../account-credentials.component.scss | 6 + .../account-form/account-form.component.html | 9 - .../account-form/account-form.component.ts | 1 - .../account-info/account-info.component.html | 10 - src/app/header/header.component.html | 3 +- src/app/header/header.component.ts | 42 +- src/app/login/login.component.html | 72 ++++ src/app/login/login.component.scss | 99 +++++ src/app/login/login.component.spec.ts | 25 ++ src/app/login/login.component.ts | 67 +++ .../reset-password.component.html | 40 +- .../reset-password.component.scss | 71 +++- .../reset-password.component.ts | 18 +- .../components/button/button.component.html | 7 +- .../components/button/button.component.scss | 9 +- .../password-form.component.html | 402 +++++++++--------- .../password-form.component.scss | 50 ++- .../password-form/password-form.component.ts | 61 ++- .../structure-options-modal.component.html | 2 - .../structure-options-modal.component.ts | 19 +- 23 files changed, 722 insertions(+), 317 deletions(-) create mode 100644 src/app/login/login.component.html create mode 100644 src/app/login/login.component.scss create mode 100644 src/app/login/login.component.spec.ts create mode 100644 src/app/login/login.component.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index af73fa82b..60a690db7 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -21,7 +21,8 @@ import { StructureListPrintComponent } from './form/orientation-form/component/s import { StructureResolver } from './resolvers/structure.resolver'; import { RoleGuard } from './guards/role.guard'; import { RouteRole } from './shared/enum/routeRole.enum'; -import { FormViewComponent } from './form/form-view/form-view.component'; +import { LoginComponent } from './login/login.component'; +import { PasswordFormComponent } from './shared/components'; const routes: Routes = [ { path: 'print', outlet: 'print', children: [{ path: 'structure', component: StructureDetailsComponent }] }, @@ -36,7 +37,7 @@ const routes: Routes = [ }, { path: 'login', - component: CartoComponent, + component: LoginComponent, }, { path: 'structures', @@ -84,6 +85,10 @@ const routes: Routes = [ path: 'reset-password', component: ResetPasswordComponent, }, + { + path: 'new-password', + component: PasswordFormComponent, + }, { path: 'create-structure', component: FormComponent, diff --git a/src/app/app.module.ts b/src/app/app.module.ts index a556ee367..b07b9771b 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -46,6 +46,7 @@ import { RoleGuard } from './guards/role.guard'; import { UpdateService } from './services/update.service'; import { DataShareConsentComponent } from './shared/components/data-share-consent/data-share-consent.component'; import { FormViewModule } from './form/form-view/form-view.module'; +import { LoginComponent } from './login/login.component'; @NgModule({ declarations: [ @@ -74,6 +75,7 @@ import { FormViewModule } from './form/form-view/form-view.module'; StructurePrintHeaderComponent, DataShareConsentComponent, OrientationComponent, + LoginComponent, ], imports: [ BrowserModule, diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html index 1c63bbb1e..a43e46cf6 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html @@ -46,6 +46,9 @@ <span class="passwordInfo">Le mot de passe doit contenir au minimum</span> <ul> <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" [ngClass]="{ invalid: accountForm.get('password').value.length < 8, valid: accountForm.get('password').value.length >= 8 @@ -67,6 +70,9 @@ <p>8 caractères</p> </li> <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" [ngClass]="{ invalid: !checkIfPasswordHasSpecialChar(accountForm.get('password').value), valid: checkIfPasswordHasSpecialChar(accountForm.get('password').value) @@ -87,6 +93,9 @@ <p>un caractère spécial</p> </li> <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" [ngClass]="{ invalid: !checkIfPasswordHasLowerCase(accountForm.get('password').value), valid: checkIfPasswordHasLowerCase(accountForm.get('password').value) @@ -107,6 +116,9 @@ <p>un caractère en minuscule</p> </li> <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" [ngClass]="{ invalid: !checkIfPasswordHasUpperCase(accountForm.get('password').value), valid: checkIfPasswordHasUpperCase(accountForm.get('password').value) @@ -127,6 +139,9 @@ <p>un caractère en majuscule</p> </li> <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" [ngClass]="{ invalid: !checkIfPasswordHasDigit(accountForm.get('password').value), valid: checkIfPasswordHasDigit(accountForm.get('password').value) diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss index e69de29bb..d2c25e18e 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss @@ -0,0 +1,6 @@ +ul { + padding: 0; + li { + height: 30px; + } +} diff --git a/src/app/form/form-view/account-form/account-form.component.html b/src/app/form/form-view/account-form/account-form.component.html index d73525939..4be22f440 100644 --- a/src/app/form/form-view/account-form/account-form.component.html +++ b/src/app/form/form-view/account-form/account-form.component.html @@ -18,13 +18,4 @@ <ng-container *ngIf="currentStep === accountFormStepEnum.confirmEmailSentInfo"> <app-information-step [step]="accountFormStepEnum.confirmEmailSentInfo"></app-information-step> </ng-container> - <!-- <app-footer-form - [currentPage]="currentStep" - [currentForm]="formType.account" - [form]="accountForm" - [btnName]="['Précédent', 'Suivant']" - [isValid]="isPageValid" - (goNext)="nextPage()" - (goPrev)="prevPage()" - ></app-footer-form> --> </div> diff --git a/src/app/form/form-view/account-form/account-form.component.ts b/src/app/form/form-view/account-form/account-form.component.ts index 1f9b87bc9..24e1ffc42 100644 --- a/src/app/form/form-view/account-form/account-form.component.ts +++ b/src/app/form/form-view/account-form/account-form.component.ts @@ -21,7 +21,6 @@ export class AccountFormComponent { public pagesValidation = []; public userAcceptSavedDate = false; public isPageValid: boolean; - public linkedStructureId: Array<string> = null; public profile: User; public accountFormStepEnum = accountFormStep; public formType = formType; diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.html b/src/app/form/form-view/account-form/account-info/account-info.component.html index 689eaa3d5..445b8564b 100644 --- a/src/app/form/form-view/account-form/account-info/account-info.component.html +++ b/src/app/form/form-view/account-form/account-info/account-info.component.html @@ -8,16 +8,6 @@ <h3>Qui êtes-vous ?</h3> <p>Vous pourrez choisir de rendre visibles ces informations sur votre profil public</p> </div> - <div *ngIf="!isClaimMode" class="title"> - <h4> - Vous possédez déja un compte ?<br /> - Connectez-vous : - </h4> - <button class="btn-primary small next" *ngIf="!isLoggedIn" (click)="isPopUpOpen = !isPopUpOpen"> - Se connecter - </button> - <h4>Sinon, inscrivez-vous en suivant le formulaire ci-dessous :</h4> - </div> <div class="form-group" fxLayout="column"> <label for="name">Prénom</label> <div fxLayout="row" fxLayoutGap="13px"> diff --git a/src/app/header/header.component.html b/src/app/header/header.component.html index c76102e37..42d784193 100644 --- a/src/app/header/header.component.html +++ b/src/app/header/header.component.html @@ -23,7 +23,7 @@ </button> <app-button *ngIf="!isLoggedIn" - (action)="isPopUpOpen = !isPopUpOpen" + (action)="goToLoginPage()" [text]="'Se connecter'" [style]="buttonTypeEnum.Secondary" ></app-button> @@ -58,7 +58,6 @@ </div> </div> -<app-signup-modal *ngIf="displaySignUp" [openned]="isPopUpOpen" (closed)="closeSignUpModal($event)"></app-signup-modal> <app-data-share-consent *ngIf="isDisplayDataShare" [dataConsentPendingStructures]="dataConsentPendingStructures" diff --git a/src/app/header/header.component.ts b/src/app/header/header.component.ts index 45d6c5943..66be2616f 100644 --- a/src/app/header/header.component.ts +++ b/src/app/header/header.component.ts @@ -12,8 +12,6 @@ import { ButtonType } from '../shared/components/button/buttonType.enum'; }) export class HeaderComponent implements OnInit { public showMenu = false; - public isPopUpOpen = false; - public displaySignUp = true; public currentRoute = ''; public formRoute = '/create-structure'; public returnUrl = null; @@ -35,17 +33,17 @@ export class HeaderComponent implements OnInit { }); } ngOnInit(): void { - this.route.queryParams.subscribe((params) => { - if (params.verified || params.returnUrl) { - Promise.resolve().then(() => { - if (!this.isLoggedIn) { - this.isPopUpOpen = true; - this.displaySignUp = true; - } - }); - this.returnUrl = params.returnUrl; - } - }); + // this.route.queryParams.subscribe((params) => { + // if (params.verified || params.returnUrl) { + // Promise.resolve().then(() => { + // if (!this.isLoggedIn) { + // this.isPopUpOpen = true; + // this.displaySignUp = true; + // } + // }); + // this.returnUrl = params.returnUrl; + // } + // }); } public openMenu(): void { @@ -76,23 +74,9 @@ export class HeaderComponent implements OnInit { } return false; } - - public closeSignInModal(): void { - this.isPopUpOpen = false; - this.displaySignUp = true; + public goToLoginPage(): void { + this.router.navigateByUrl('login'); } - - public closeSignUpModal(value: boolean): void { - if (!value) { - this.displaySignUp = false; - } else { - this.isPopUpOpen = false; - } - if (this.returnUrl && this.isLoggedIn) { - this.router.navigateByUrl(this.returnUrl); - } - } - public get isAdmin(): boolean { return this.profileService.isAdmin(); } diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html new file mode 100644 index 000000000..9ea661717 --- /dev/null +++ b/src/app/login/login.component.html @@ -0,0 +1,72 @@ +<div class="content"> + <div class="loginPage"> + <div class="form"> + <div class="title"> + <h3>Connexion</h3> + <p>Saisissez votre email pour vous connecter</p> + </div> + <form [formGroup]="loginForm" (ngSubmit)="onSubmit()"> + <div class="form-group" fxLayout="column"> + <label for="email">Identifiant</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 class="incorrectId" *ngIf="authFailed">Identifiant ou mot de passe invalide</div> + </div> + <div class="form-group password" fxLayout="column"> + <label for="password">Mot de passe</label> + + <div fxLayout="row" fxLayoutGap="13px"> + <input + [type]="isShowPassword ? 'text' : 'password'" + autocomplete="on" + formControlName="password" + class="form-input" + [ngClass]="{ inputInvalid: f.password.invalid && f.password.value }" + /> + <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> + <p class="passHint" [ngClass]="{ invalid: f.password.invalid && f.password.value }"> + Il doit contenir au minimum :<br /> + 8 caractères dont un caractère spécial, un caractère en majuscule et un chiffre. + </p> + </div> + <div class="footer" fxLayout="row" fxLayoutAlign="space-around center"> + <app-button + [type]="'button'" + (action)="swithToResetPassword()" + [text]="'Mot de passe oublié'" + [style]="buttonTypeEnum.Secondary" + [extraClass]="'fullButton'" + > + </app-button> + <app-button + [type]="'submit'" + [text]="'Se connecter'" + [disabled]="loginForm.invalid || loading" + [style]="buttonTypeEnum.Primary" + [ngClass]="{ invalid: loginForm.invalid || loading }" + [extraClass]="'fullButton'" + > + </app-button> + </div> + <app-button + [type]="'button'" + (action)="goToAccountCreation()" + [text]="'Je n’ai pas encore de compte'" + [style]="buttonTypeEnum.Tertiary" + [extraClass]="'fullWidth'" + > + </app-button> + </form> + </div> + </div> +</div> diff --git a/src/app/login/login.component.scss b/src/app/login/login.component.scss new file mode 100644 index 000000000..f8409a416 --- /dev/null +++ b/src/app/login/login.component.scss @@ -0,0 +1,99 @@ +@import '../../assets/scss/color'; +@import '../../assets/scss/breakpoint'; +@import '../../assets/scss/layout'; +@import '../../assets/scss/typography'; + +.content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; +} +.loginPage { + width: 100%; + max-width: 1000px; + box-sizing: border-box; + margin: auto; + min-height: 450px; + max-height: 75vh; + overflow-y: auto; + color: $grey-1; + background: $white; + border-radius: 8px; + border: 1px solid $grey-6; + padding: 32px 24px 32px 48px; + + .title { + text-align: center; + h3 { + margin: 0; + @include lato-bold-24; + } + p { + @include lato-regular-14; + margin-top: 0.5rem; + } + } + .inputInvalid { + border-color: $orange-warning; + } + .incorrectId { + @include lato-regular-14; + color: $orange-warning; + } + + .form { + max-width: 340px; + margin: auto; + } + + .form-group { + margin: 2rem 0; + .notValidate { + min-width: 26px; + width: 26px; + height: 40px; + } + label { + margin-bottom: 4px; + @include lato-regular-16; + color: $grey-1; + } + input { + width: 100%; + } + &.password { + p { + @include lato-regular-14; + color: $grey-3; + margin-top: 0; + margin-bottom: 4px; + &.invalid { + color: $orange-warning; + } + } + .eyePassword { + cursor: pointer; + width: 24px; + height: 40px; + stroke: $grey-3; + fill: $grey-3; + } + .passHint { + margin-top: 0.5rem; + } + } + } + .footer { + margin-bottom: 1rem; + } +} + +@media #{$tablet} { + .loginPage { + height: calc( + 100vh - #{$header-height-phone} - #{$footer-height-phone} - 87px - 1px + ); // -1px because of header border + } +} diff --git a/src/app/login/login.component.spec.ts b/src/app/login/login.component.spec.ts new file mode 100644 index 000000000..d2c0e6c8f --- /dev/null +++ b/src/app/login/login.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture<LoginComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LoginComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts new file mode 100644 index 000000000..f2d03c518 --- /dev/null +++ b/src/app/login/login.component.ts @@ -0,0 +1,67 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormBuilder, Validators, AbstractControl } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { first } from 'rxjs/operators'; +import { AuthService } from '../services/auth.service'; +import { ButtonType } from '../shared/components/button/buttonType.enum'; +import { CustomRegExp } from '../utils/CustomRegExp'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'], +}) +export class LoginComponent implements OnInit { + public loginForm: FormGroup; + public loading = false; + public submitted = false; + public authFailed = false; + public isShowPassword = false; + public buttonTypeEnum = ButtonType; + constructor(private formBuilder: FormBuilder, private router: Router, private authService: AuthService) {} + + ngOnInit(): void { + this.loginForm = this.formBuilder.group({ + email: ['', [Validators.required, Validators.pattern(CustomRegExp.EMAIL)]], + password: ['', [Validators.required, Validators.pattern(CustomRegExp.PASSWORD)]], + }); + } + + // getter for form fields + get f(): { [key: string]: AbstractControl } { + return this.loginForm.controls; + } + + public swithToResetPassword(): void { + this.router.navigate(['/reset-password']); + } + + public onSubmit(): void { + this.submitted = true; + + // stop here if form is invalid + if (this.loginForm.invalid) { + return; + } + this.loading = true; + this.authService + .login(this.f.email.value, this.f.password.value) + .pipe(first()) + .subscribe( + () => { + this.router.navigateByUrl('news'); + }, + () => { + this.loading = false; + this.authFailed = true; + } + ); + } + + public toggleShowPassword(): void { + this.isShowPassword = !this.isShowPassword; + } + public goToAccountCreation(): void { + this.router.navigateByUrl('form/account'); + } +} diff --git a/src/app/reset-password/reset-password.component.html b/src/app/reset-password/reset-password.component.html index c242e2554..a53661d6d 100644 --- a/src/app/reset-password/reset-password.component.html +++ b/src/app/reset-password/reset-password.component.html @@ -1,32 +1,44 @@ -<div fxLayout="column" class="content-container full-screen"> - <div class="section-container" fxLayout="column" fxLayoutAlign="center center"> +<div class="content"> + <div class="resetPage"> <div class="resetPasswordForm"> - <h1>Réinitialisation du mot de passe</h1> - <form *ngIf="!token" [formGroup]="resetForm" (ngSubmit)="onSubmit()"> + <h1>Mot de passe oublié</h1> + <p>Saisissez votre email afin de réinitialiser votre mot de passe</p> + <form [formGroup]="resetForm" (ngSubmit)="onSubmit()"> <div class="form-group"> - <label for="email">Courriel du compte</label> + <label for="email">Email du compte</label> <div fxLayout="row" fxLayoutGap="13px"> <input type="text" autocomplete="on" formControlName="email" class="form-input" - [ngClass]="{ 'is-invalid': submitted && f.email.errors }" + [ngClass]="{ inputInvalid: submitted && f.email.errors }" /> </div> - <div *ngIf="submitted && f.email.errors" class="invalid-feedback"> + <div *ngIf="submitted && f.email.errors" class="incorrectId"> <div *ngIf="f.email.errors.required">L'adresse e-mail est requise</div> </div> </div> - <div class="button" fxLayout="row" fxLayoutAlign="space-around center"> - <a routerLink="../login" class="btn btn-link">Annuler</a> - <button [disabled]="loading" class="btn btn-primary"> - <span *ngIf="loading" class="spinner-border spinner-border-sm mr-1"></span> - Envoyer - </button> + <div class="footer" fxLayout="row" fxLayoutAlign="space-around center"> + <app-button + (action)="goLogin()" + [type]="'button'" + [text]="'Annuler'" + [style]="buttonTypeEnum.Secondary" + [extraClass]="'fullButton'" + > + </app-button> + <app-button + [type]="'submit'" + [disabled]="loading" + [text]="'Envoyer'" + [style]="buttonTypeEnum.Primary" + [extraClass]="'fullButton'" + > + </app-button> </div> </form> + <!-- <app-password-form *ngIf="token" (passwordForm)="onSubmitPassword($event)"></app-password-form> --> </div> - <app-password-form *ngIf="token" (passwordForm)="onSubmitPassword($event)"></app-password-form> </div> </div> diff --git a/src/app/reset-password/reset-password.component.scss b/src/app/reset-password/reset-password.component.scss index 74a6e2327..5f15d7666 100644 --- a/src/app/reset-password/reset-password.component.scss +++ b/src/app/reset-password/reset-password.component.scss @@ -1,19 +1,76 @@ @import '../../assets/scss/color'; +@import '../../assets/scss/typography'; +@import '../../assets/scss/breakpoint'; +@import '../../assets/scss/layout'; +.content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; +} +.resetPage { + width: 100%; + max-width: 1000px; + box-sizing: border-box; + margin: auto; + min-height: 450px; + max-height: 75vh; + overflow-y: auto; + color: $grey-1; + background: $white; + border-radius: 8px; + border: 1px solid $grey-6; + padding: 32px 24px 32px 48px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + @media #{$tablet} { + height: calc( + 100vh - #{$header-height-phone} - #{$footer-height-phone} - 87px - 1px + ); // -1px because of header border + } +} +.resetPasswordForm { + max-width: 430px; + margin: auto; + h1, + p { + text-align: center; + margin: 0.5rem 0; + } + h1 { + @include lato-bold-24; + } + p { + @include lato-regular-14; + } +} .form-group { - margin-bottom: 26px; + max-width: 320px; + margin: auto; + margin-top: 2rem; label { color: $grey-2; } - .resetPasswordForm { - max-width: 500px; - } - .button { margin-top: 20px; } - .form-input { - width: 256px; + width: 320px; } + .inputInvalid { + border-color: $orange-warning; + } + .incorrectId { + @include lato-regular-14; + color: $orange-warning; + } +} +.footer { + width: 340px; + margin: auto; + margin-top: 2rem; } diff --git a/src/app/reset-password/reset-password.component.ts b/src/app/reset-password/reset-password.component.ts index 4744261e9..1e9a5819b 100644 --- a/src/app/reset-password/reset-password.component.ts +++ b/src/app/reset-password/reset-password.component.ts @@ -3,6 +3,7 @@ import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/fo import { ActivatedRoute, Router } from '@angular/router'; import { AuthService } from '../services/auth.service'; import { NotificationService } from '../services/notification.service'; +import { ButtonType } from '../shared/components/button/buttonType.enum'; @Component({ selector: 'app-reset-password', @@ -11,12 +12,12 @@ import { NotificationService } from '../services/notification.service'; }) export class ResetPasswordComponent implements OnInit { public resetForm: FormGroup; - public token: string; public loading = false; public submitted = false; // Condition form public isShowConfirmPassword = false; public isShowPassword = false; + public buttonTypeEnum = ButtonType; constructor( private formBuilder: FormBuilder, @@ -27,10 +28,6 @@ export class ResetPasswordComponent implements OnInit { ) {} ngOnInit(): void { - this.activatedRoute.queryParams.subscribe((params) => { - this.token = params['token']; - }); - this.resetForm = this.formBuilder.group({ email: ['', Validators.required], }); @@ -64,14 +61,7 @@ export class ResetPasswordComponent implements OnInit { ); } - public onSubmitPassword(password: string[]): void { - this.authService.resetPasswordApply(this.token, password[0]).subscribe( - () => { - this.router.navigate(['']); - }, - () => { - this.loading = false; - } - ); + public goLogin(): void { + this.router.navigateByUrl('/login'); } } diff --git a/src/app/shared/components/button/button.component.html b/src/app/shared/components/button/button.component.html index 418ee4509..96b192708 100644 --- a/src/app/shared/components/button/button.component.html +++ b/src/app/shared/components/button/button.component.html @@ -44,7 +44,7 @@ fxLayoutAlign="space-around center" > <app-svg-icon [type]="iconType" [icon]="iconBtn" [iconColor]="'currentColor'"></app-svg-icon> - <span>{{ text }}</span> + <span [ngClass]="extraClass">{{ text }}</span> </div> <div *ngIf="iconBtn && iconPos === 'right'" @@ -52,7 +52,7 @@ class="text withIcon right" fxLayoutAlign="space-around center" > - <span>{{ text }}</span> + <span [ngClass]="extraClass">{{ text }}</span> <app-svg-icon [type]="iconType" [icon]="iconBtn" [iconColor]="'currentColor'"></app-svg-icon> </div> </button> @@ -66,7 +66,7 @@ [disabled]="disabled" [ngClass]="{ disabled: disabled }" > - <div *ngIf="!iconBtn" class="text">{{ text }}</div> + <div *ngIf="!iconBtn" [ngClass]="extraClass" class="text">{{ text }}</div> <div *ngIf="iconBtn && iconPos === 'left'" fxLayout="row center" @@ -130,6 +130,7 @@ (click)="doAction()" [disabled]="disabled" [ngClass]="{ disabled: disabled }" + [ngClass]="extraClass" > <div>{{ text }}</div> </button> diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index ce4d94eb3..d8a66de19 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -66,7 +66,6 @@ button { border: 1px solid $grey-1; color: $grey-1; font-size: 12px; - height: 0; // @include btn-regular; &.withIcon { color: $grey-1; @@ -149,7 +148,13 @@ button { border-color: $primary-color; } } - +.fullButton { + @include lato-regular-14; + width: 125px !important; +} +.fullWidth { + width: 100%; +} .disabled { opacity: 0.4; cursor: not-allowed; diff --git a/src/app/shared/components/password-form/password-form.component.html b/src/app/shared/components/password-form/password-form.component.html index e7fd2bb3f..4055875b7 100644 --- a/src/app/shared/components/password-form/password-form.component.html +++ b/src/app/shared/components/password-form/password-form.component.html @@ -1,192 +1,214 @@ -<form [formGroup]="accountForm" (ngSubmit)="onSubmitPassword()"> - <div *ngIf="oldPasswordNeeded" class="form-group" fxLayout="column"> - <label for="oldPassword">Ancien mot de passe</label> - <div fxLayout="row" fxLayoutGap="13px"> - <input - [type]="isShowOldPassword ? 'text' : 'password'" - formControlName="oldPassword" - class="form-input password" - autocomplete="on" - /> - <app-svg-icon - (click)="showOldPassword()" - [type]="'form'" - [iconClass]="'grey'" - [icon]="'eyePassword'" - ></app-svg-icon> - <app-svg-icon *ngIf="passwordError" [type]="'form'" [icon]="'notValidate'"></app-svg-icon> - </div> - </div> - <div class="form-group" fxLayout="column"> - <label for="password">Création de mot de passe</label> - Le mot de passe doit contenir au minimum : - <ul> - <li - [ngClass]="{ - invalid: accountForm.get('password').value.length < 8, - valid: accountForm.get('password').value.length >= 8 - }" - class="" - > - <app-svg-icon - *ngIf="accountForm.get('password').value.length >= 8" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('password').value.length < 8" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>8 caractères</p> - </li> - <li - [ngClass]="{ - invalid: !checkIfPasswordHasSpecialChar(accountForm.get('password').value), - valid: checkIfPasswordHasSpecialChar(accountForm.get('password').value) - }" - > - <app-svg-icon - *ngIf="checkIfPasswordHasSpecialChar(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="!checkIfPasswordHasSpecialChar(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>un caractère spécial</p> - </li> - <li - [ngClass]="{ - invalid: !checkIfPasswordHasLowerCase(accountForm.get('password').value), - valid: checkIfPasswordHasLowerCase(accountForm.get('password').value) - }" - > - <app-svg-icon - *ngIf="checkIfPasswordHasLowerCase(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="!checkIfPasswordHasLowerCase(accountForm.get('password').value); s" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>un caractère en minuscule</p> - </li> - <li - [ngClass]="{ - invalid: !checkIfPasswordHasUpperCase(accountForm.get('password').value), - valid: checkIfPasswordHasUpperCase(accountForm.get('password').value) - }" - > - <app-svg-icon - *ngIf="checkIfPasswordHasUpperCase(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="!checkIfPasswordHasUpperCase(accountForm.get('password').value); s" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>un caractère en majuscule</p> - </li> - <li - [ngClass]="{ - invalid: !checkIfPasswordHasDigit(accountForm.get('password').value), - valid: checkIfPasswordHasDigit(accountForm.get('password').value) - }" - > - <app-svg-icon - *ngIf="checkIfPasswordHasDigit(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="!checkIfPasswordHasDigit(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>un chiffre</p> - </li> - </ul> - <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> - <input - [type]="isShowPassword ? 'text' : 'password'" - formControlName="password" - class="form-input password" - autocomplete="on" - /> - <app-svg-icon - [iconClass]="'validation grey hover'" - [type]="'form'" - [icon]="'eyePassword'" - (click)="showPassword()" - ></app-svg-icon> +<div class="content"> + <div class="resetPage"> + <h1>Réinitialisation du mot de passe</h1> + <form [formGroup]="accountForm" (ngSubmit)="onSubmitPassword()"> + <div *ngIf="oldPasswordNeeded" class="form-group" fxLayout="column"> + <label for="oldPassword">Ancien mot de passe</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + [type]="isShowOldPassword ? 'text' : 'password'" + formControlName="oldPassword" + class="form-input password" + autocomplete="on" + /> + <app-svg-icon + (click)="showOldPassword()" + [type]="'form'" + [iconClass]="'grey'" + [icon]="'eyePassword'" + ></app-svg-icon> + <app-svg-icon + *ngIf="!checkOldPassword(accountForm.value.oldPassword)" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + <p *ngIf="passwordError" class="special invalid">Votre ancien mot de passe est incorrect.</p> + </div> + <div class="form-group" fxLayout="column"> + <label for="password"> Le mot de passe doit contenir au minimum :</label> + <ul> + <li + [ngClass]="{ + invalid: accountForm.get('password').value.length < 8, + valid: accountForm.get('password').value.length >= 8 + }" + class="" + > + <app-svg-icon + *ngIf="accountForm.get('password').value.length >= 8" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('password').value.length < 8" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>8 caractères</p> + </li> + <li + [ngClass]="{ + invalid: !checkIfPasswordHasSpecialChar(accountForm.get('password').value), + valid: checkIfPasswordHasSpecialChar(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasSpecialChar(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="!checkIfPasswordHasSpecialChar(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un caractère spécial</p> + </li> + <li + [ngClass]="{ + invalid: !checkIfPasswordHasLowerCase(accountForm.get('password').value), + valid: checkIfPasswordHasLowerCase(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasLowerCase(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="!checkIfPasswordHasLowerCase(accountForm.get('password').value); s" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un caractère en minuscule</p> + </li> + <li + [ngClass]="{ + invalid: !checkIfPasswordHasUpperCase(accountForm.get('password').value), + valid: checkIfPasswordHasUpperCase(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasUpperCase(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="!checkIfPasswordHasUpperCase(accountForm.get('password').value); s" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un caractère en majuscule</p> + </li> + <li + [ngClass]="{ + invalid: !checkIfPasswordHasDigit(accountForm.get('password').value), + valid: checkIfPasswordHasDigit(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasDigit(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="!checkIfPasswordHasDigit(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un chiffre</p> + </li> + </ul> + <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> + <input + [type]="isShowPassword ? 'text' : 'password'" + formControlName="password" + class="form-input password" + autocomplete="on" + /> + <app-svg-icon + [iconClass]="'validation grey hover'" + [type]="'form'" + [icon]="'eyePassword'" + (click)="showPassword()" + ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('password').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('password').invalid && accountForm.get('password').value" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - </div> - </div> - <div class="form-group" fxLayout="column"> - <label for="confirmPassword">Vérification du mot de passe</label> - <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> - <input - [type]="isShowConfirmPassword ? 'text' : 'password'" - formControlName="confirmPassword" - class="form-input password" - autocomplete="on" - /> - <app-svg-icon - [iconClass]="'validation grey hover'" - [type]="'form'" - [icon]="'eyePassword'" - (click)="showConfirmPassword()" - ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('confirmPassword').valid && accountForm.get('confirmPassword').value" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('confirmPassword').invalid && accountForm.get('confirmPassword').value" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - </div> - </div> - <div class="form-group" fxLayout="column" fxLayoutAlign="center center"> - <button - class="btn btn-primary" - [disabled]="accountForm.get('confirmPassword').invalid || accountForm.get('password').invalid" - > - <span class="spinner-border spinner-border-sm mr-1"></span> - Enregistrer - </button> + <app-svg-icon + *ngIf="accountForm.get('password').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('password').invalid && accountForm.get('password').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="confirmPassword">Vérification du mot de passe</label> + <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> + <input + [type]="isShowConfirmPassword ? 'text' : 'password'" + formControlName="confirmPassword" + class="form-input password" + autocomplete="on" + /> + <app-svg-icon + [iconClass]="'validation grey hover'" + [type]="'form'" + [icon]="'eyePassword'" + (click)="showConfirmPassword()" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('confirmPassword').valid && accountForm.get('confirmPassword').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('confirmPassword').invalid && accountForm.get('confirmPassword').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="row" fxLayoutAlign="center center" fxLayoutGap="20px"> + <app-button + (action)="goHome()" + [type]="'button'" + [text]="'Annuler'" + [style]="buttonTypeEnum.Secondary" + [extraClass]="'fullButton'" + > + </app-button> + <app-button + [type]="'submit'" + [disabled]=" + accountForm.get('confirmPassword').invalid || + accountForm.get('password').invalid || + (oldPasswordNeeded && passwordError) + " + [text]="'Envoyer'" + [style]="buttonTypeEnum.Primary" + [extraClass]="'fullButton'" + > + </app-button> + </div> + </form> </div> -</form> +</div> diff --git a/src/app/shared/components/password-form/password-form.component.scss b/src/app/shared/components/password-form/password-form.component.scss index 25461318b..05e58ec5e 100644 --- a/src/app/shared/components/password-form/password-form.component.scss +++ b/src/app/shared/components/password-form/password-form.component.scss @@ -1,6 +1,42 @@ @import '../../../../assets/scss/color'; +@import '../../../../assets/scss/layout'; +@import '../../../../assets/scss/breakpoint'; +@import '../../../../assets/scss/typography'; +.content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; +} +.resetPage { + width: 100%; + max-width: 1000px; + box-sizing: border-box; + margin: auto; + min-height: 450px; + max-height: 75vh; + overflow-y: auto; + color: $grey-1; + background: $white; + border-radius: 8px; + border: 1px solid $grey-6; + padding: 32px 24px 32px 48px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + @media #{$tablet} { + height: calc( + 100vh - #{$header-height-phone} - #{$footer-height-phone} - 47px - 1px + ); // -1px because of header border + } +} +h1 { + @include lato-bold-24; +} .form-group { - margin-bottom: 26px; + margin-bottom: 20px; label { color: $grey-2; } @@ -14,6 +50,7 @@ ul { padding-left: 0; + margin: 0.5rem 0; } li { @@ -22,13 +59,16 @@ font-size: small; align-items: center; p { - margin: 0 10px; + margin: 0 8px; } &.valid { color: $green; } - &.invalid { - color: $orange-warning; - } + } + .special { + margin: 0; + } + .invalid { + color: $orange-warning; } } diff --git a/src/app/shared/components/password-form/password-form.component.ts b/src/app/shared/components/password-form/password-form.component.ts index 76fbeb38a..f12afe5e5 100644 --- a/src/app/shared/components/password-form/password-form.component.ts +++ b/src/app/shared/components/password-form/password-form.component.ts @@ -1,7 +1,11 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup, Validators, AbstractControl, FormBuilder } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ProfileService } from '../../../profile/services/profile.service'; +import { AuthService } from '../../../services/auth.service'; import { CustomRegExp } from '../../../utils/CustomRegExp'; import { MustMatch } from '../../validator/form'; +import { ButtonType } from '../button/buttonType.enum'; @Component({ selector: 'app-password-form', templateUrl: './password-form.component.html', @@ -9,17 +13,32 @@ import { MustMatch } from '../../validator/form'; }) export class PasswordFormComponent implements OnInit { public accountForm: FormGroup; + public buttonTypeEnum = ButtonType; + public token: string; + public passwordError = false; // Condition form public isShowOldPassword = false; public isShowConfirmPassword = false; public isShowPassword = false; // Form output - @Input() oldPasswordNeeded: boolean = false; - @Output() passwordForm = new EventEmitter<string[]>(); + public oldPasswordNeeded: boolean = false; - constructor(private formBuilder: FormBuilder) {} + constructor( + private formBuilder: FormBuilder, + private router: Router, + private auth: AuthService, + private activatedRoute: ActivatedRoute, + private authService: AuthService, + private profileService: ProfileService + ) {} ngOnInit(): void { + this.activatedRoute.queryParams.subscribe((params) => { + this.token = params['token']; + }); + if (this.auth.isLoggedIn()) { + this.oldPasswordNeeded = true; + } this.initPasswordForm(); } @@ -79,17 +98,41 @@ export class PasswordFormComponent implements OnInit { if (password.match(CustomRegExp.LOWERCASE)) return true; return false; } + public checkOldPassword(password: string): boolean { + if ( + password !== '' && + (!this.checkIfPasswordHasSpecialChar(password) || + !this.checkIfPasswordHasDigit(password) || + !this.checkIfPasswordHasUpperCase(password) || + !this.checkIfPasswordHasLowerCase(password)) + ) { + return false; + } else return true; + } public onSubmitPassword(): void { // stop here if form is invalid - if (this.accountForm.invalid) { + if (this.oldPasswordNeeded && !this.checkOldPassword(this.accountForm.value.oldPassword)) { + this.passwordError = true; return; - } - - if (this.oldPasswordNeeded) { - this.passwordForm.emit([this.accountForm.value.password, this.accountForm.value.oldPassword]); + } else if (this.oldPasswordNeeded) { + // stop here if form is invalid + this.passwordError = false; + this.profileService.changePassword(this.accountForm.value.password, this.accountForm.value.oldPassword).subscribe( + () => { + this.passwordError = false; + }, + (error) => { + this.passwordError = true; + } + ); } else { - this.passwordForm.emit([this.accountForm.value.password]); + this.authService.resetPasswordApply(this.token, this.accountForm.value.password).subscribe(() => { + this.router.navigate(['']); + }); } } + public goHome(): void { + this.router.navigateByUrl('news'); + } } diff --git a/src/app/shared/components/structure-options-modal/structure-options-modal.component.html b/src/app/shared/components/structure-options-modal/structure-options-modal.component.html index 87739f479..1ecb9f68b 100644 --- a/src/app/shared/components/structure-options-modal/structure-options-modal.component.html +++ b/src/app/shared/components/structure-options-modal/structure-options-modal.component.html @@ -28,8 +28,6 @@ <h2>Changer de mot de passe</h2> <div class="ico-close-details" (click)="closeModalOptsProfile()"></div> </div> - <app-password-form [oldPasswordNeeded]="true" (passwordForm)="submitPassword($event)"></app-password-form> - <p *ngIf="passwordError" class="special invalid">Votre ancien mot de passe est incorrect.</p> </div> <form *ngIf="editModal == typeModalProfile.email" diff --git a/src/app/shared/components/structure-options-modal/structure-options-modal.component.ts b/src/app/shared/components/structure-options-modal/structure-options-modal.component.ts index e87901d8b..75ae365b3 100644 --- a/src/app/shared/components/structure-options-modal/structure-options-modal.component.ts +++ b/src/app/shared/components/structure-options-modal/structure-options-modal.component.ts @@ -26,9 +26,6 @@ export class StructureOptionsModalComponent implements OnInit { @Output() closedWithRefresh = new EventEmitter(); public active: boolean; - // Password profile - public passwordError = false; - // AddAccount public formAddAccount: FormGroup; public ownerAlreadyLinked = false; @@ -82,7 +79,7 @@ export class StructureOptionsModalComponent implements OnInit { this.editModal = TypeModalProfile.email; break; case FunctionTypeModalOptions.changePassword: - this.editModal = TypeModalProfile.password; + this.router.navigateByUrl('new-password'); break; case FunctionTypeModalOptions.deleteAccount: this.toggleDeleteAccountModal(); @@ -149,20 +146,6 @@ export class StructureOptionsModalComponent implements OnInit { this.authService.logout(); } - public submitPassword(passwords: string[]): void { - // stop here if form is invalid - this.passwordError = false; - this.profileService.changePassword(passwords[0], passwords[1]).subscribe( - () => { - this.closeModalOptsProfile(); - this.passwordError = false; - }, - (error) => { - this.passwordError = true; - } - ); - } - public addOwner(): void { // stop here if form is invalid if (this.formAddAccount.invalid) { -- GitLab From a99b818c98b993334e3474df7d1fc26e53750173 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 11:08:12 +0100 Subject: [PATCH 073/199] structure place of reception --- .../form/form-view/form-view.component.scss | 12 ++++++++++- src/app/form/form-view/form-view.component.ts | 1 + ...ucture-accompaniment-choice.component.html | 12 ++++++++++- ...tructure-accompaniment-choice.component.ts | 15 ++++++------- .../structure-contact.component.ts | 1 - .../structure-form.component.html | 6 ++++++ .../structure-form.component.ts | 21 +++++++++++-------- src/app/models/structure.model.ts | 1 + 8 files changed, 50 insertions(+), 19 deletions(-) diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index 8b6c0fbe8..288e6bb13 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -23,11 +23,21 @@ ::ng-deep.title { margin-bottom: 16px; h3 { - @include lato-bold-26; + @include lato-bold-24; margin: 0; + @media #{$tablet} { + @include lato-bold-22; + } } p { + @include lato-regular-14; margin-bottom: 0; + &.notRequired { + @include lato-regular-18; + color: $grey-3; + font-style: italic; + margin-top: 4px; + } } } diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 54f24b7d4..765530318 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -225,6 +225,7 @@ export class FormViewComponent implements OnInit { linkedin: new FormControl(structure.linkedin, Validators.pattern(CustomRegExp.LINKEDIN)), hours: new FormGroup({}), pmrAccess: new FormControl(structure.pmrAccess, Validators.required), + placeOfReception: new FormControl(structure.placeOfReception, Validators.required), exceptionalClosures: new FormControl(structure.exceptionalClosures), labelsQualifications: this.loadArrayForCheckbox(structure.labelsQualifications, false), accessModality: this.loadArrayForCheckbox(structure.accessModality, true), diff --git a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.html b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.html index 804ed8a8c..49e4f3ed7 100644 --- a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.html +++ b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.html @@ -1 +1,11 @@ -<p>structure-accompaniment-choice works!</p> +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>La structure dispose-t-elle d'un lieu d'accueil pour faire de l'accompagnement / formation ?</h3> + <p>Exemple : accompagnement aux démarches administratives...</p> + </div> + <app-radio-form + [selectedOption]="structureForm.get('placeOfReception').value" + (selectedEvent)="onRadioChange('placeOfReception', $event)" + > + </app-radio-form> +</form> diff --git a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts index 042e02cdb..9846250d7 100644 --- a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts +++ b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts @@ -1,15 +1,16 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-accompaniment-choice', templateUrl: './structure-accompaniment-choice.component.html', - styleUrls: ['./structure-accompaniment-choice.component.scss'] + styleUrls: ['./structure-accompaniment-choice.component.scss'], }) -export class StructureAccompanimentChoiceComponent implements OnInit { +export class StructureAccompanimentChoiceComponent { + @Input() structureForm: FormGroup; + @Output() radioChange = new EventEmitter<any>(); - constructor() { } - - ngOnInit(): void { + public onRadioChange(name: string, value: boolean): void { + this.radioChange.emit({ name, value }); } - } diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts index 03ca960fa..16d909878 100644 --- a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts +++ b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts @@ -9,7 +9,6 @@ import { Utils } from '../../../../utils/utils'; }) export class StructureContactComponent implements OnInit { @Input() structureForm: FormGroup; - @Input() isEditMode: boolean; @Output() validateForm = new EventEmitter<any>(); constructor(public utils: Utils) {} diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 94c72f40e..dbf0e270f 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -8,3 +8,9 @@ <div *ngIf="currentPage == structureFormStep.structureContact"> <app-structure-contact [structureForm]="structureForm" (validateForm)="setValidationsForm()"></app-structure-contact> </div> +<div *ngIf="currentPage == structureFormStep.structureAccompanimentChoice"> + <app-structure-accompaniment-choice + [structureForm]="structureForm" + (radioChange)="onRadioChange($event)" + ></app-structure-accompaniment-choice> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 685329922..27f7064c4 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -19,7 +19,7 @@ export class StructureFormComponent { public isClaimMode = false; // Page and progress var - public currentPage = 0; // Change this value to start on a different page for dev testing + public currentPage = 2; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; @@ -72,7 +72,6 @@ export class StructureFormComponent { this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; this.updatePageValid(); } else { - console.log('validation form'); this.pagesValidation[structureFormStep.structureNameAndAddress] = { valid: this.structureForm.get('structureName').valid && this.structureForm.get('address').valid, name: 'Nom et adresse', @@ -81,6 +80,10 @@ export class StructureFormComponent { valid: this.getStructureControl('contactMail').valid && this.getStructureControl('contactPhone').valid, name: 'Contact structure', }; + this.pagesValidation[structureFormStep.structureAccompanimentChoice] = { + valid: this.getStructureControl('placeOfReception').valid, + name: 'Lieu d accueil', + }; this.pagesValidation[structureFormStep.structureType] = { valid: this.getStructureControl('structureType').valid, name: 'Type de structure', @@ -110,13 +113,7 @@ export class StructureFormComponent { valid: this.getStructureControl('publics').valid, name: 'Public admis', }; - this.pagesValidation[structureFormStep.structureAccompanimentChoice] = { - valid: - this.getStructureControl('publicsAccompaniment').valid && - this.getStructureControl('proceduresAccompaniment').valid, - name: 'Accompagnements proposés', - // TODO : update with new page name - }; + // this.pagesValidation[structureFormStep.structureOtherAccompaniment] = { // valid: this.getStructureControl('otherDescription').value, // name: 'Autres démarches proposés', @@ -182,6 +179,12 @@ export class StructureFormComponent { } } + public onRadioChange(nameAndEvent: { name: string; value: boolean }): void { + const { name, value } = nameAndEvent; + this.structureForm.get(name).setValue(value); + this.setValidationsForm(); + } + /** * Update valid page or return page validity of the given index * @param {number} [index] - Page index diff --git a/src/app/models/structure.model.ts b/src/app/models/structure.model.ts index f8dc38fd7..bc23ba2ef 100644 --- a/src/app/models/structure.model.ts +++ b/src/app/models/structure.model.ts @@ -23,6 +23,7 @@ export class Structure { public linkedin: string = null; public lockdownActivity: string = null; public pmrAccess: boolean = null; + public placeOfReception: boolean = null; public publicsAccompaniment: string[] = []; public proceduresAccompaniment: string[] = []; public remoteAccompaniment: boolean = null; -- GitLab From e01b6fa08bab07ff229a5cd34327b794d11d8e17 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 11:26:53 +0100 Subject: [PATCH 074/199] structure choice completion --- src/app/form/form-view/form-view.component.ts | 1 + .../structure-choice-completion.component.html | 12 +++++++++++- .../structure-choice-completion.component.ts | 15 ++++++++------- .../structure-form/structure-form.component.html | 6 ++++++ .../structure-form/structure-form.component.ts | 7 ++++++- src/app/models/structure.model.ts | 1 + 6 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 765530318..49ff68dbf 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -226,6 +226,7 @@ export class FormViewComponent implements OnInit { hours: new FormGroup({}), pmrAccess: new FormControl(structure.pmrAccess, Validators.required), placeOfReception: new FormControl(structure.placeOfReception, Validators.required), + choiceCompletion: new FormControl(structure.choiceCompletion, Validators.required), exceptionalClosures: new FormControl(structure.exceptionalClosures), labelsQualifications: this.loadArrayForCheckbox(structure.labelsQualifications, false), accessModality: this.loadArrayForCheckbox(structure.accessModality, true), diff --git a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.html b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.html index 2f74a7cac..ac764e4d1 100644 --- a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.html +++ b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.html @@ -1 +1,11 @@ -<p>structure-choice-completion works!</p> +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>Souhaitez-vous renseigner les informations de la structure ?</h3> + <p>Exemple : téléphone, email, type d'établissement, accessibilité PMR, type de public ?</p> + </div> + <app-radio-form + [selectedOption]="structureForm.get('choiceCompletion').value" + (selectedEvent)="onRadioChange('choiceCompletion', $event)" + > + </app-radio-form> +</form> diff --git a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts index 521aeb242..ad643f99d 100644 --- a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts +++ b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts @@ -1,15 +1,16 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-choice-completion', templateUrl: './structure-choice-completion.component.html', - styleUrls: ['./structure-choice-completion.component.scss'] + styleUrls: ['./structure-choice-completion.component.scss'], }) -export class StructureChoiceCompletionComponent implements OnInit { +export class StructureChoiceCompletionComponent { + @Input() structureForm: FormGroup; + @Output() radioChange = new EventEmitter<any>(); - constructor() { } - - ngOnInit(): void { + public onRadioChange(name: string, value: boolean): void { + this.radioChange.emit({ name, value }); } - } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index dbf0e270f..769778708 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -14,3 +14,9 @@ (radioChange)="onRadioChange($event)" ></app-structure-accompaniment-choice> </div> +<div *ngIf="currentPage == structureFormStep.structureChoiceCompletion"> + <app-structure-choice-completion + [structureForm]="structureForm" + (radioChange)="onRadioChange($event)" + ></app-structure-choice-completion> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 27f7064c4..60478b577 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -19,7 +19,7 @@ export class StructureFormComponent { public isClaimMode = false; // Page and progress var - public currentPage = 2; // Change this value to start on a different page for dev testing + public currentPage = 3; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; @@ -84,6 +84,11 @@ export class StructureFormComponent { valid: this.getStructureControl('placeOfReception').valid, name: 'Lieu d accueil', }; + this.pagesValidation[structureFormStep.structureChoiceCompletion] = { + valid: this.getStructureControl('choiceCompletion').valid, + name: 'Completion info structure', + }; + this.pagesValidation[structureFormStep.structureType] = { valid: this.getStructureControl('structureType').valid, name: 'Type de structure', diff --git a/src/app/models/structure.model.ts b/src/app/models/structure.model.ts index bc23ba2ef..47d2f2893 100644 --- a/src/app/models/structure.model.ts +++ b/src/app/models/structure.model.ts @@ -24,6 +24,7 @@ export class Structure { public lockdownActivity: string = null; public pmrAccess: boolean = null; public placeOfReception: boolean = null; + public choiceCompletion: boolean = null; public publicsAccompaniment: string[] = []; public proceduresAccompaniment: string[] = []; public remoteAccompaniment: boolean = null; -- GitLab From cc05a56cddc890a7007f44cd518524e9b23382ed Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Tue, 22 Mar 2022 11:34:03 +0100 Subject: [PATCH 075/199] feat(profile-form): init profile form --- .../form/form-view/form-view.component.html | 11 +- src/app/form/form-view/form-view.component.ts | 27 ++++- .../information-step.component.html | 14 ++- .../information-step.component.scss | 13 ++- .../information-step.component.ts | 16 ++- .../navigation-buttons.component.html | 7 +- .../navigation-buttons.component.ts | 20 +++- .../profile-form/profile-form.component.html | 18 ++- .../profile-form/profile-form.component.ts | 38 +++++- .../profile-structure-choice.component.html | 108 +++++++++--------- .../profile-structure-choice.component.scss | 19 --- .../structure-form.component.ts | 2 - src/assets/form/sprite.svg | 9 ++ 13 files changed, 202 insertions(+), 100 deletions(-) diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 83bed7bd0..0664b14d0 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -15,7 +15,15 @@ (pageValid)="validatePage($event)" ></app-account-form> </ng-container> - <ng-container *ngIf="formType[routeParam] === formType.profile"> Profile </ng-container> + <ng-container *ngIf="formType[routeParam] === formType.profile"> + <app-profile-form + [profileForm]="profileForm" + [nbSteps]="nbSteps" + [currentStep]="currentPage" + (goNext)="nextPage()" + (pageValid)="validatePage($event)" + ></app-profile-form> + </ng-container> <ng-container *ngIf="formType[routeParam] === formType.structure"> <app-structure-form [nbSteps]="nbSteps" @@ -27,6 +35,7 @@ <ng-container *ngIf="formType[routeParam] === formType.personnalOffer"> PersonnalOffer </ng-container> </div> <app-footer-form + *ngIf="displayFooterForm()" [currentStep]="currentPage" [currentForm]="formType.account" [form]="accountForm" diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 54f24b7d4..de6855325 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -28,6 +28,8 @@ export class FormViewComponent implements OnInit { // Account Form public accountForm: FormGroup; + // Profile Form + public profileFform: FormGroup; // Structure from public structureForm: FormGroup; @@ -153,10 +155,11 @@ export class FormViewComponent implements OnInit { this.currentPage = accountFormStep.accountInfo; this.createAccountForm(); } - // if (formType[this.routeParam] === formType.profile) { - // this.nbSteps = 3; - // this.currentPage = accountFormStep.accountInfo; - // } + if (formType[this.routeParam] === formType.profile) { + this.nbSteps = 5; + this.currentPage = profileFormStep.profileBeginningInfo; + this.createProfileForm(); + } // if (formType[this.routeParam] === formType.personnalOffer) { // this.nbSteps = 3; // this.currentPage = accountFormStep.accountInfo; @@ -197,6 +200,17 @@ export class FormViewComponent implements OnInit { ); } + private createProfileForm(email?: string): void { + this.profileFform = new FormGroup( + { + employer: new FormControl(email ? email : '', [Validators.required]), + job: new FormControl('', [Validators.required]), + structure: new FormControl('', [Validators.required]), + }, + [MustMatch('password', 'confirmPassword')] + ); + } + private createStructureForm(structure): void { this.structureForm = new FormGroup({ _id: new FormControl(structure._id), @@ -286,4 +300,9 @@ export class FormViewComponent implements OnInit { this.currentPage--; } } + public displayFooterForm(): boolean { + if (this.currentPage === profileFormStep.profileBeginningInfo && formType[this.routeParam] === formType.profile) + return false; + return true; + } } diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 34eb09d9e..6783b5b9a 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -1,5 +1,5 @@ <ng-container *ngIf="step === accountFormStepEnum.confirmEmailSentInfo"> - <div class="mailSent"> + <div class="information-step-container"> <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#emailVerification'"></use> </svg> @@ -9,3 +9,15 @@ </p> </div> </ng-container> +<ng-container *ngIf="step === profileFormStepEnum.profileBeginningInfo"> + <div fxLayout="column" fxLayoutGap="18px" class="information-step-container profile-skip"> + <p> + Pour compléter votre profil,<br /> + nous aimerions vous poser quelques questions + </p> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#profileSkip'"></use> + </svg> + <app-navigation-buttons (goNext)="nextPage()"></app-navigation-buttons> + </div> +</ng-container> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.scss b/src/app/form/form-view/global-components/information-step/information-step.component.scss index 1c721cf52..46140e689 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.scss +++ b/src/app/form/form-view/global-components/information-step/information-step.component.scss @@ -1,6 +1,6 @@ @import '../../../../../assets/scss/typography'; -.mailSent { +.information-step-container { display: flex; flex-direction: column; align-items: center; @@ -16,4 +16,15 @@ margin-top: 3rem; text-align: center; } + &.profile-skip { + height: unset; + p { + margin: 0; + } + svg { + width: 100%; + height: 180px; + max-width: 180px; + } + } } diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.ts b/src/app/form/form-view/global-components/information-step/information-step.component.ts index 0da2c63d7..6cda1e23d 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.ts +++ b/src/app/form/form-view/global-components/information-step/information-step.component.ts @@ -1,16 +1,20 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; import { accountFormStep } from '../../account-form/accountFormStep.enum'; +import { profileFormStep } from '../../profile-form/profileFormStep.enum'; @Component({ selector: 'app-information-step', templateUrl: './information-step.component.html', styleUrls: ['./information-step.component.scss'], }) -export class InformationStepComponent implements OnInit { - @Input() step: accountFormStep; - public accountFormStepEnum = accountFormStep; +export class InformationStepComponent { + @Input() step: number; + @Output() goNext = new EventEmitter<any>(); - constructor() {} + public accountFormStepEnum = accountFormStep; + public profileFormStepEnum = profileFormStep; - ngOnInit(): void {} + public nextPage(): void { + this.goNext.emit(); + } } diff --git a/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.html b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.html index 1d8617169..c4ba4c2d7 100644 --- a/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.html +++ b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.html @@ -1 +1,6 @@ -<p>navigation-buttons works!</p> +<div class="footerForm" fxLayout="row" fxLayoutGap="10px" fxLayoutAlign="center center"> + <ng-container *ngIf="buttonStyle === 0"> + <app-button (action)="goToHome()" [text]="'Plus tard'"></app-button> + <app-button (action)="goToNextPage()" [text]="'C`est parti !'" [style]="buttonTypeEnum.Primary"></app-button> + </ng-container> +</div> diff --git a/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.ts b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.ts index b40efb819..2f841ceb4 100644 --- a/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.ts +++ b/src/app/form/form-view/global-components/navigation-buttons/navigation-buttons.component.ts @@ -1,15 +1,23 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Router } from '@angular/router'; +import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; @Component({ selector: 'app-navigation-buttons', templateUrl: './navigation-buttons.component.html', - styleUrls: ['./navigation-buttons.component.scss'] + styleUrls: ['./navigation-buttons.component.scss'], }) -export class NavigationButtonsComponent implements OnInit { +export class NavigationButtonsComponent { + @Input() buttonStyle = 0; + @Output() goNext = new EventEmitter<any>(); + public buttonTypeEnum = ButtonType; + constructor(private router: Router) {} - constructor() { } - - ngOnInit(): void { + public goToHome(): void { + this.router.navigateByUrl('news'); } + public goToNextPage(): void { + this.goNext.emit(); + } } diff --git a/src/app/form/form-view/profile-form/profile-form.component.html b/src/app/form/form-view/profile-form/profile-form.component.html index c221d4aa6..9a93ad22f 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.html +++ b/src/app/form/form-view/profile-form/profile-form.component.html @@ -1 +1,17 @@ -<div>profile</div> +<div> + <ng-container *ngIf="currentStep === profileFormStepEnum.profileBeginningInfo"> + <app-information-step [step]="0" (goNext)="setValidationsForm()"></app-information-step> + </ng-container> + <ng-container *ngIf="currentStep === profileFormStepEnum.profileEmployerSelection"> + <p>Employer</p> + </ng-container> + <ng-container *ngIf="currentStep === profileFormStepEnum.profileJobSelection"> + <p>Job</p> + </ng-container> + <ng-container *ngIf="currentStep === profileFormStepEnum.profileStructureChoice"> + <app-profile-structure-choice></app-profile-structure-choice> + </ng-container> + <ng-container *ngIf="currentStep === profileFormStepEnum.profileMailSentInfo"> + <p>Mail</p> + </ng-container> +</div> diff --git a/src/app/form/form-view/profile-form/profile-form.component.ts b/src/app/form/form-view/profile-form/profile-form.component.ts index 53b886c1e..a7af5264c 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.ts +++ b/src/app/form/form-view/profile-form/profile-form.component.ts @@ -1,4 +1,5 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; import { profileFormStep } from './profileFormStep.enum'; @Component({ @@ -7,9 +8,40 @@ import { profileFormStep } from './profileFormStep.enum'; styleUrls: ['./profile-form.component.scss'], }) export class ProfileFormComponent implements OnInit { - public currentStep: profileFormStep = profileFormStep.profileBeginningInfo; - public nbSteps: number = 5; + @Input() nbSteps: number; + @Input() currentStep: profileFormStep = profileFormStep.profileBeginningInfo; + @Input() profileForm: FormGroup; + @Output() pageValid = new EventEmitter<any>(); + @Output() goNext = new EventEmitter<any>(); + + public isPageValid: boolean; + public profileFormStepEnum = profileFormStep; + public pagesValidation = []; + constructor() {} ngOnInit(): void {} + + public setValidationsForm(): void { + this.pagesValidation[profileFormStep.profileBeginningInfo] = { + valid: true, + }; + + if (this.currentStep === profileFormStep.profileBeginningInfo) { + this.goNext.emit(); + } + } + + /** + * Update valid page or return page validity of the given index + * @param {number} [index] - Page index + */ + private updatePageValid(index?: number): boolean { + if (index) { + return this.pagesValidation[index].valid; + } + this.isPageValid = this.pagesValidation[this.currentStep].valid; + if (this.isPageValid) this.pageValid.emit(); + return this.isPageValid; + } } diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html index 23512b6b2..b540c0e4f 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -1,65 +1,63 @@ -<div class="content" fxLayout="column"> - <div class="card" fxLayout="column"> - <h2>Dans quelle structure travaillez-vous ?</h2> - <div class="search-structure"> - <div fxLayout="row" fxLayoutAlign="space-between" class="form-input search"> - <input - type="text" - id="structureName" - (input)="onSearchChange($event.target.value)" - placeholder="Rechercher une structure" - class="form-input search-input" - autocomplete="off" - /> - <app-svg-icon [iconClass]="'searchIcon icon-32'" [type]="'ico'" [icon]="'search'"></app-svg-icon> - </div> - <div class="scroll"> - <div *ngIf="!isAlreadySearching"> - <div class="nb"> - <div *ngIf="structures"> - <div *ngIf="searchString.length == 0" class="nb-text">{{ structures.length }} structures existantes</div> - <div *ngIf="searchString.length > 0" class="nb-text" [ngPlural]="structures.length"> - <ng-template ngPluralCase="0">0 structure trouvée</ng-template> - <ng-template ngPluralCase="1">1 structure trouvée</ng-template> - <ng-template ngPluralCase="other">{{ structures.length }} structures trouvées</ng-template> - </div> +<div fxLayout="column"> + <h2>Dans quelle structure travaillez-vous ?</h2> + <div class="search-structure"> + <div fxLayout="row" fxLayoutAlign="space-between" class="form-input search"> + <input + type="text" + id="structureName" + (input)="onSearchChange($event.target.value)" + placeholder="Rechercher une structure" + class="form-input search-input" + autocomplete="off" + /> + <app-svg-icon [iconClass]="'searchIcon icon-32'" [type]="'ico'" [icon]="'search'"></app-svg-icon> + </div> + <div class="scroll"> + <div *ngIf="!isAlreadySearching"> + <div class="nb"> + <div *ngIf="structures"> + <div *ngIf="searchString.length == 0" class="nb-text">{{ structures.length }} structures existantes</div> + <div *ngIf="searchString.length > 0" class="nb-text" [ngPlural]="structures.length"> + <ng-template ngPluralCase="0">0 structure trouvée</ng-template> + <ng-template ngPluralCase="1">1 structure trouvée</ng-template> + <ng-template ngPluralCase="other">{{ structures.length }} structures trouvées</ng-template> </div> </div> + </div> - <div class="structure-list"> - <div *ngFor="let structure of structures" (click)="selectedResult(structure)" class="filet"> - <div - fxLayout="column" - fxLayoutAlign="space-around" - class="form-list" - [class]="structure.selected ? 'item-selected' : ''" - > - <div fxLayout="row" fxLayoutAlign="space-between"> - <div class="item-frame"> - <div class="name">{{ structure.structureName }}</div> - <div class="commune">{{ structure.address.commune }}</div> - </div> - <app-svg-icon - class="form-icon" - *ngIf="structure.selected" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> + <div class="structure-list"> + <div *ngFor="let structure of structures" (click)="selectedResult(structure)" class="filet"> + <div + fxLayout="column" + fxLayoutAlign="space-around" + class="form-list" + [class]="structure.selected ? 'item-selected' : ''" + > + <div fxLayout="row" fxLayoutAlign="space-between"> + <div class="item-frame"> + <div class="name">{{ structure.structureName }}</div> + <div class="commune">{{ structure.address.commune }}</div> </div> + <app-svg-icon + class="form-icon" + *ngIf="structure.selected" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> </div> </div> - <div class="item-frame"> - <div class="create-text"> - Cette structure n’existe pas encore sur Res’in. - <span class="question">Souhaitez-vous la référencer ?</span> - </div> - <app-button - (action)="addStructure()" - [text]="'Créer une structure'" - [style]="buttonTypeEnum.Primary" - ></app-button> + </div> + <div class="item-frame"> + <div class="create-text"> + Cette structure n’existe pas encore sur Res’in. + <span class="question">Souhaitez-vous la référencer ?</span> </div> + <app-button + (action)="addStructure()" + [text]="'Créer une structure'" + [style]="buttonTypeEnum.Primary" + ></app-button> </div> </div> </div> diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss index 8859e5602..ceba896b1 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss @@ -3,25 +3,6 @@ @import '../../../../../assets/scss/inputs'; @import '../../../../../assets/scss/breakpoint'; -.content { - background: $grey-7; - align-items: center; - padding: 16px 0px 0px; - height: 665px; -} - -.card { - padding: 32px 24px 0px 48px; - background: $white; - border: 1px solid $grey-6; - border-radius: 8px; - margin: 16px 0px; - - @media #{$large-desktop} { - width: 1000px; - } -} - .search-structure { width: 380px; } diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 685329922..172016c1c 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -68,11 +68,9 @@ export class StructureFormComponent { this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; this.updatePageValid(); } else if (this.isAccountMode) { - console.log('account mode'); this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; this.updatePageValid(); } else { - console.log('validation form'); this.pagesValidation[structureFormStep.structureNameAndAddress] = { valid: this.structureForm.get('structureName').valid && this.structureForm.get('address').valid, name: 'Nom et adresse', diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 155d40ca9..e760d03a5 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -391,6 +391,15 @@ </defs> </symbol> +<symbol id="profileSkip" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M139.5 140C139.5 140.828 140.172 141.5 141 141.5C141.828 141.5 142.5 140.828 142.5 140H139.5ZM26 140H24.5C24.5 140.828 25.1716 141.5 26 141.5V140ZM83.5 87L83.5 85.5L83.5 87ZM103.426 88.0228L103.262 89.5139L103.426 88.0228ZM63.5739 88.0223L63.7373 89.5133L63.5739 88.0223ZM103.426 141.5C104.254 141.5 104.926 140.828 104.926 140C104.926 139.172 104.254 138.5 103.426 138.5V141.5ZM63.7373 89.5133C69.4973 88.882 76.0577 88.4999 83.5 88.5L83.5 85.5C75.9551 85.4999 69.2853 85.8873 63.4105 86.5312L63.7373 89.5133ZM83.5 88.5C90.9421 88.5001 97.5024 88.8825 103.262 89.5139L103.589 86.5318C97.7145 85.8878 91.0448 85.5001 83.5 85.5L83.5 88.5ZM142.5 140C142.5 127.036 139.391 114.431 132.967 104.67C126.52 94.8734 116.745 87.9739 103.589 86.5318L103.262 89.5139C115.443 90.8492 124.456 97.1942 130.461 106.32C136.49 115.481 139.5 127.476 139.5 140H142.5ZM27.5 140C27.5 127.476 30.5094 115.481 36.5387 106.319C42.5441 97.1935 51.5563 90.8484 63.7373 89.5133L63.4105 86.5312C50.2549 87.9731 40.4801 94.8727 34.0327 104.67C27.6093 114.43 24.5 127.036 24.5 140H27.5ZM103.426 138.5H26V141.5H103.426V138.5Z" fill="#DA3635"/> +<circle cx="84.0416" cy="63.4879" r="30.9879" fill="white" stroke="#DA3635" stroke-width="3" stroke-linejoin="round"/> +<rect width="14.5252" height="61.023" transform="matrix(0.762691 0.646763 -0.646759 0.762694 146.689 79.541)" fill="#348899" stroke="white" stroke-width="1.5" stroke-linejoin="round"/> +<path d="M157.768 88.9352C155.529 87.0368 150.344 82.6393 146.69 79.541C149.688 76.0059 154.598 75.2431 157.657 77.8373C160.716 80.4314 160.766 85.4002 157.768 88.9352Z" fill="#83B6C1" stroke="white" stroke-width="1.5" stroke-linejoin="round"/> +<path d="M105.675 141.994C104.089 142.813 102.307 141.301 102.855 139.602L107.22 126.081L118.301 135.478L105.675 141.994Z" fill="#83B6C1" stroke="white" stroke-width="1.5" stroke-linejoin="round"/> +</symbol> + + <symbol id="chevronRight" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> <path d="M8 6L16 12.5L8 19" fill="none" stroke-linecap="round" stroke-linejoin="round"/> </symbol> -- GitLab From 3eb3566eb9d7a78bf3ec9fa39fea1f31ff524dae Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 13:22:59 +0100 Subject: [PATCH 076/199] structure contact person --- src/app/form/form-view/form-view.component.ts | 6 ++ ...tructure-contact-completion.component.html | 64 ++++++++++++++++++- .../structure-contact-completion.component.ts | 16 +++-- .../structure-form.component.html | 6 ++ .../structure-form.component.ts | 10 ++- .../structure-name-and-address.component.ts | 5 -- src/app/models/structure.model.ts | 3 + 7 files changed, 96 insertions(+), 14 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 49ff68dbf..ec38f19a0 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -218,6 +218,12 @@ export class FormViewComponent implements OnInit { Validators.required, Validators.pattern(CustomRegExp.PHONE), ]), + contactPersonFirstname: new FormControl(structure.contactPersonLastname, Validators.required), + contactPersonLastname: new FormControl(structure.contactPersonLastname, Validators.required), + contactPersonEmail: new FormControl(structure.contactPersonEmail, [ + Validators.required, + Validators.pattern(CustomRegExp.EMAIL), + ]), website: new FormControl(structure.website, Validators.pattern(CustomRegExp.WEBSITE)), facebook: new FormControl(structure.facebook, Validators.pattern(CustomRegExp.FACEBOOK)), twitter: new FormControl(structure.twitter, Validators.pattern(CustomRegExp.TWITTER)), diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html index 816d9f6d2..3f9d670e9 100644 --- a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html @@ -1 +1,63 @@ -<p>structure-contact-completion works!</p> +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>Quelle personne pourrait connaître ces informations ?</h3> + </div> + + <div class="form-group" fxLayout="column"> + <label for="contactPersonFirstname">Prénom</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + name="contactPersonFirstname" + id="contactPersonFirstname" + formControlName="contactPersonFirstname" + (input)="setValidationsForm()" + class="form-input" + /> + <app-svg-icon + *ngIf="structureForm.get('contactPersonFirstname').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="contactPersonLastname">Nom</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + id="contactPersonLastname" + name="contactPersonLastname" + formControlName="contactPersonLastname" + (input)="setValidationsForm()" + class="form-input" + /> + <app-svg-icon + *ngIf="structureForm.get('contactPersonLastname').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="contactPersonEmail">Email</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + id="contactPersonEmail" + name="contactPersonEmail" + formControlName="contactPersonEmail" + (input)="setValidationsForm()" + class="form-input" + /> + <app-svg-icon + *ngIf="structureForm.get('contactPersonEmail').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + </div> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts index 78655526f..ce291934f 100644 --- a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts @@ -1,15 +1,17 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-contact-completion', templateUrl: './structure-contact-completion.component.html', - styleUrls: ['./structure-contact-completion.component.scss'] + styleUrls: ['./structure-contact-completion.component.scss'], }) -export class StructureContactCompletionComponent implements OnInit { +export class StructureContactCompletionComponent { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + @Output() validateForm = new EventEmitter<any>(); - constructor() { } - - ngOnInit(): void { + public setValidationsForm(): void { + this.validateForm.emit(); } - } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 769778708..ac252811f 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -20,3 +20,9 @@ (radioChange)="onRadioChange($event)" ></app-structure-choice-completion> </div> +<div *ngIf="currentPage == structureFormStep.structureContactCompletion"> + <app-structure-contact-completion + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + ></app-structure-contact-completion> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 60478b577..47caa88c9 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -19,7 +19,7 @@ export class StructureFormComponent { public isClaimMode = false; // Page and progress var - public currentPage = 3; // Change this value to start on a different page for dev testing + public currentPage = 4; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; @@ -59,6 +59,7 @@ export class StructureFormComponent { this.setValidationsForm(); } + // TODO : remove this func -> structureForm.get public getAddressControl(nameControl: string): AbstractControl { return this.structureForm.get('address').get(nameControl); } @@ -88,6 +89,13 @@ export class StructureFormComponent { valid: this.getStructureControl('choiceCompletion').valid, name: 'Completion info structure', }; + this.pagesValidation[structureFormStep.structureContactCompletion] = { + valid: + this.structureForm.get('contactPersonFirstname').valid && + this.structureForm.get('contactPersonLastname').valid && + this.structureForm.get('contactPersonEmail').valid, + name: 'Personne contact informations', + }; this.pagesValidation[structureFormStep.structureType] = { valid: this.getStructureControl('structureType').valid, diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts index b47ac69da..79c0096d8 100644 --- a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts @@ -10,13 +10,8 @@ export class StructureNameAndAddressComponent { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; @Output() validateForm = new EventEmitter<any>(); - @Output() addressStructure = new EventEmitter<any>(); public setValidationsForm(): void { this.validateForm.emit(); } - - public setAddressStructure(value) { - this.addressStructure.emit(value); - } } diff --git a/src/app/models/structure.model.ts b/src/app/models/structure.model.ts index 47d2f2893..b20fcf570 100644 --- a/src/app/models/structure.model.ts +++ b/src/app/models/structure.model.ts @@ -25,6 +25,9 @@ export class Structure { public pmrAccess: boolean = null; public placeOfReception: boolean = null; public choiceCompletion: boolean = null; + public contactPersonFirstName: string = null; + public contactPersonLastName: string = null; + public contactPersonEmail: string = null; public publicsAccompaniment: string[] = []; public proceduresAccompaniment: string[] = []; public remoteAccompaniment: boolean = null; -- GitLab From d8a5bd882cb02486f559aad2d595be3e7559a8fa Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 13:51:00 +0100 Subject: [PATCH 077/199] invalid icon on mail --- ...tructure-contact-completion.component.html | 6 ++ .../structure-form.component.ts | 68 +++++++++---------- 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html index 3f9d670e9..ce6614d34 100644 --- a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html @@ -58,6 +58,12 @@ [type]="'form'" [icon]="'validate'" ></app-svg-icon> + <app-svg-icon + *ngIf="structureForm.get('contactPersonEmail').invalid && structureForm.get('contactPersonEmail').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> </div> </div> </form> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 47caa88c9..706263a35 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -44,10 +44,6 @@ export class StructureFormComponent { ngOnInit(): void {} - public getStructureControl(nameControl: string): AbstractControl { - return this.structureForm.get(nameControl); - } - public setAddressStructure(address?: Address): void { if (address) { this.getAddressControl('numero').setValue(address.numero); @@ -78,15 +74,15 @@ export class StructureFormComponent { name: 'Nom et adresse', }; this.pagesValidation[structureFormStep.structureContact] = { - valid: this.getStructureControl('contactMail').valid && this.getStructureControl('contactPhone').valid, + valid: this.structureForm.get('contactMail').valid && this.structureForm.get('contactPhone').valid, name: 'Contact structure', }; this.pagesValidation[structureFormStep.structureAccompanimentChoice] = { - valid: this.getStructureControl('placeOfReception').valid, + valid: this.structureForm.get('placeOfReception').valid, name: 'Lieu d accueil', }; this.pagesValidation[structureFormStep.structureChoiceCompletion] = { - valid: this.getStructureControl('choiceCompletion').valid, + valid: this.structureForm.get('choiceCompletion').valid, name: 'Completion info structure', }; this.pagesValidation[structureFormStep.structureContactCompletion] = { @@ -98,91 +94,91 @@ export class StructureFormComponent { }; this.pagesValidation[structureFormStep.structureType] = { - valid: this.getStructureControl('structureType').valid, + valid: this.structureForm.get('structureType').valid, name: 'Type de structure', }; this.pagesValidation[structureFormStep.structureAccessModality] = { - valid: this.getStructureControl('accessModality').valid, + valid: this.structureForm.get('accessModality').valid, name: "Modalités d'accueil", }; // this.pagesValidation[structureFormStep.structureHours] = { - // valid: this.hoursForm.valid && this.getStructureControl('exceptionalClosures').valid, + // valid: this.hoursForm.valid && this.structureForm.get('exceptionalClosures').valid, // name: "Horaires d'ouverture", // }; this.pagesValidation[structureFormStep.structurePmr] = { - valid: this.getStructureControl('pmrAccess').valid, + valid: this.structureForm.get('pmrAccess').valid, name: 'Accessibilité pour les personnes à mobilité réduite', }; this.pagesValidation[structureFormStep.structureWebAndSocialNetwork] = { valid: - (this.getStructureControl('website').valid || !this.showWebsite) && - ((this.getStructureControl('facebook').valid && - this.getStructureControl('twitter').valid && - this.getStructureControl('instagram').valid) || + (this.structureForm.get('website').valid || !this.showWebsite) && + ((this.structureForm.get('facebook').valid && + this.structureForm.get('twitter').valid && + this.structureForm.get('instagram').valid) || !this.showSocialNetwork), name: 'Présence sur internet', }; this.pagesValidation[structureFormStep.structurePublicTarget] = { - valid: this.getStructureControl('publics').valid, + valid: this.structureForm.get('publics').valid, name: 'Public admis', }; // this.pagesValidation[structureFormStep.structureOtherAccompaniment] = { - // valid: this.getStructureControl('otherDescription').value, + // valid: this.structureForm.get('otherDescription').value, // name: 'Autres démarches proposés', // // TODO : update with new page name / remove // }; // this.pagesValidation[structureFormStep.structureRemoteAccompaniment] = { - // valid: this.getStructureControl('remoteAccompaniment').valid, + // valid: this.structureForm.get('remoteAccompaniment').valid, // name: 'Accompagnement à distance', // // TODO : update with new page name / remove // }; this.pagesValidation[structureFormStep.structureTrainingType] = { valid: - this.getStructureControl('accessRight').valid && - this.getStructureControl('socialAndProfessional').valid && - this.getStructureControl('baseSkills').valid && - this.getStructureControl('parentingHelp').valid && - this.getStructureControl('digitalCultureSecurity').valid, + this.structureForm.get('accessRight').valid && + this.structureForm.get('socialAndProfessional').valid && + this.structureForm.get('baseSkills').valid && + this.structureForm.get('parentingHelp').valid && + this.structureForm.get('digitalCultureSecurity').valid, name: 'Ateliers au numérique proposés', }; this.pagesValidation[structureFormStep.structureTrainingPrice] = { - valid: this.getStructureControl('freeWorkShop').valid, + valid: this.structureForm.get('freeWorkShop').valid, name: 'Gratuité des ateliers', }; this.pagesValidation[structureFormStep.structureWifi] = { - valid: this.getStructureControl('equipmentsAndServices').valid && this.isWifiChoosen, + valid: this.structureForm.get('equipmentsAndServices').valid && this.isWifiChoosen, name: 'Gratuité du wifi', }; this.pagesValidation[structureFormStep.structureEquipments] = { valid: - this.getStructureControl('equipmentsAndServices').valid && - this.getStructureControl('nbComputers').valid && - this.getStructureControl('nbPrinters').valid && - this.getStructureControl('nbTablets').valid && - this.getStructureControl('nbNumericTerminal').valid && - this.getStructureControl('nbScanners').valid, + this.structureForm.get('equipmentsAndServices').valid && + this.structureForm.get('nbComputers').valid && + this.structureForm.get('nbPrinters').valid && + this.structureForm.get('nbTablets').valid && + this.structureForm.get('nbNumericTerminal').valid && + this.structureForm.get('nbScanners').valid, name: 'Matériels mis à disposition', }; this.pagesValidation[structureFormStep.structureLabels] = { - valid: this.getStructureControl('labelsQualifications').valid, + valid: this.structureForm.get('labelsQualifications').valid, name: 'Labélisations proposées', }; this.pagesValidation[structureFormStep.structureOtherServices] = { - valid: this.getStructureControl('equipmentsAndServices').valid, + valid: this.structureForm.get('equipmentsAndServices').valid, name: 'Autres services proposés', }; this.pagesValidation[structureFormStep.structureDescription] = { - valid: this.getStructureControl('description').valid, + valid: this.structureForm.get('description').valid, name: 'Présentation de la structure', }; this.pagesValidation[structureFormStep.structureCovidInfo] = { - valid: this.getStructureControl('lockdownActivity').valid, + valid: this.structureForm.get('lockdownActivity').valid, name: 'Informations spécifiques à la période COVID', }; if (this.isEditMode) { this.pagesValidation[structureFormStep.structureConsent] = { - valid: this.getStructureControl('dataShareConsentDate').valid, + valid: this.structureForm.get('dataShareConsentDate').valid, name: 'Partage de données sur data.grandlyon.com', }; } else { -- GitLab From 062df57ab7e686671cb2c8ea42923c5847199743 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 14:19:06 +0100 Subject: [PATCH 078/199] structure typ --- .../form/form-view/form-view.component.scss | 2 +- src/app/form/form-view/form-view.module.ts | 2 ++ .../structure-form.component.html | 7 ++++++ .../structure-form.component.ts | 7 +++++- .../structure-type.component.html | 21 ++++++++++++++++ .../structure-type.component.scss | 0 .../structure-type.component.spec.ts | 25 +++++++++++++++++++ .../structure-type.component.ts | 17 +++++++++++++ .../structure-form/structureFormStep.enum.ts | 2 +- 9 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 src/app/form/form-view/structure-form/structure-type/structure-type.component.html create mode 100644 src/app/form/form-view/structure-form/structure-type/structure-type.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-type/structure-type.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-type/structure-type.component.ts diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index 288e6bb13..1fb840e46 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -3,7 +3,7 @@ @import '../../../assets/scss/layout'; @import '../../../assets//scss/typography'; -.page { +::ng-deep.page { max-width: 1000px; box-sizing: border-box; margin: auto; diff --git a/src/app/form/form-view/form-view.module.ts b/src/app/form/form-view/form-view.module.ts index 0cba02360..672ae8307 100644 --- a/src/app/form/form-view/form-view.module.ts +++ b/src/app/form/form-view/form-view.module.ts @@ -38,6 +38,7 @@ import { AccountCredentialsComponent } from './account-form/account-credentials/ import { SharedModule } from '../../shared/shared.module'; import { FormViewRoutingModule } from './form-view-routing.module'; import { FooterFormComponent } from '../footer-form/footer-form.component'; +import { StructureTypeComponent } from './structure-form/structure-type/structure-type.component'; @NgModule({ declarations: [ @@ -77,6 +78,7 @@ import { FooterFormComponent } from '../footer-form/footer-form.component'; AccountInfoComponent, AccountCredentialsComponent, FooterFormComponent, + StructureTypeComponent, ], imports: [CommonModule, FormViewRoutingModule, SharedModule], }) diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index ac252811f..ae215735a 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -26,3 +26,10 @@ (validateForm)="setValidationsForm()" ></app-structure-contact-completion> </div> +<div *ngIf="currentPage == structureFormStep.structureType"> + <app-structure-type + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + (typeStructure)="setTypeStructure($event)" + ></app-structure-type> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 706263a35..8f3a88bd0 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -19,7 +19,7 @@ export class StructureFormComponent { public isClaimMode = false; // Page and progress var - public currentPage = 4; // Change this value to start on a different page for dev testing + public currentPage = 5; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; @@ -60,6 +60,11 @@ export class StructureFormComponent { return this.structureForm.get('address').get(nameControl); } + public setTypeStructure(type?: string): void { + this.structureForm.get('structureType').setValue(type); + this.setValidationsForm(); + } + public setValidationsForm(): void { if (this.isClaimMode) { this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; diff --git a/src/app/form/form-view/structure-form/structure-type/structure-type.component.html b/src/app/form/form-view/structure-form/structure-type/structure-type.component.html new file mode 100644 index 000000000..b49f34b07 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-type/structure-type.component.html @@ -0,0 +1,21 @@ +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>Quel type de structure ?</h3> + <p>1 seul choix possible</p> + </div> + <p class="missing-information" *ngIf="isEditMode && !structureForm.get('structureType').valid"> + <app-svg-icon + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + <span>Il faut renseigner un champ</span> + </p> + <div class="type-picker"> + <app-structure-type-picker + [pickedChoice]="structureForm.get('structureType').valid ? structureForm.get('structureType').value : null" + (selectedType)="setTypeStructure($event)" + ></app-structure-type-picker> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-type/structure-type.component.scss b/src/app/form/form-view/structure-form/structure-type/structure-type.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-type/structure-type.component.spec.ts b/src/app/form/form-view/structure-form/structure-type/structure-type.component.spec.ts new file mode 100644 index 000000000..360c72a20 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-type/structure-type.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureTypeComponent } from './structure-type.component'; + +describe('StructureTypeComponent', () => { + let component: StructureTypeComponent; + let fixture: ComponentFixture<StructureTypeComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureTypeComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureTypeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts b/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts new file mode 100644 index 000000000..233844498 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts @@ -0,0 +1,17 @@ +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; + +@Component({ + selector: 'app-structure-type', + templateUrl: './structure-type.component.html', + styleUrls: ['./structure-type.component.scss'], +}) +export class StructureTypeComponent { + @Input() structureForm: FormGroup; + @Input() isEditMode; + @Output() typeStructure = new EventEmitter<any>(); + + public setTypeStructure(value) { + this.typeStructure.emit(value); + } +} diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index 8d2a43a73..736b096a9 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -4,8 +4,8 @@ export enum structureFormStep { structureAccompanimentChoice, structureChoiceCompletion, structureContactCompletion, - structureCreationInfo, structureType, + structureCreationInfo, structureAccessModality, structureHours, structurePmr, -- GitLab From 80af2e95f53236db21bebc700919584d841ed658 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 14:23:17 +0100 Subject: [PATCH 079/199] structure form cleaned --- .../structure-form.component.ts | 34 ++++++------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 6bbd69c68..2b0a3d741 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -16,7 +16,6 @@ export class StructureFormComponent { @Input() hoursForm: FormGroup; @Output() pageValid = new EventEmitter<any>(); public structureFormStep = structureFormStep; - public isClaimMode = false; // Page and progress var public currentPage = 5; // Change this value to start on a different page for dev testing @@ -34,32 +33,21 @@ export class StructureFormComponent { // Condition form public isEditMode = false; public isWifiChoosen = null; - public userAcceptSavedDate = false; - - // Structure form - + public isClaimMode = false; public isAccountMode: boolean = false; - - constructor() {} - - ngOnInit(): void {} + public userAcceptSavedDate = false; public setAddressStructure(address?: Address): void { if (address) { - this.getAddressControl('numero').setValue(address.numero); - this.getAddressControl('street').setValue(address.street); - this.getAddressControl('commune').setValue(address.commune); + this.structureForm.get('numero').setValue(address.numero); + this.structureForm.get('street').setValue(address.street); + this.structureForm.get('commune').setValue(address.commune); } else { this.structureForm.get('address').reset(); } this.setValidationsForm(); } - // TODO : remove this func -> structureForm.get - public getAddressControl(nameControl: string): AbstractControl { - return this.structureForm.get('address').get(nameControl); - } - public setTypeStructure(type?: string): void { this.structureForm.get('structureType').setValue(type); this.setValidationsForm(); @@ -67,11 +55,11 @@ export class StructureFormComponent { public setValidationsForm(): void { if (this.isClaimMode) { - this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; - this.updatePageValid(); - } else if (this.isAccountMode) { - this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; - this.updatePageValid(); + // this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; + // this.updatePageValid(); + // } else if (this.isAccountMode) { + // this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; + // this.updatePageValid(); } else { this.pagesValidation[structureFormStep.structureNameAndAddress] = { valid: this.structureForm.get('structureName').valid && this.structureForm.get('address').valid, @@ -96,11 +84,11 @@ export class StructureFormComponent { this.structureForm.get('contactPersonEmail').valid, name: 'Personne contact informations', }; - this.pagesValidation[structureFormStep.structureType] = { valid: this.structureForm.get('structureType').valid, name: 'Type de structure', }; + this.pagesValidation[structureFormStep.structureAccessModality] = { valid: this.structureForm.get('accessModality').valid, name: "Modalités d'accueil", -- GitLab From a4acae6ca4842cf4ae28449d0dc5209b6d17ab90 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Tue, 22 Mar 2022 15:08:05 +0100 Subject: [PATCH 080/199] fix init structure form --- src/app/form/form-view/form-view.component.ts | 49 ++++++------------- .../structure-form.component.ts | 2 +- 2 files changed, 17 insertions(+), 34 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index c31966868..14971e76e 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -86,12 +86,6 @@ export class FormViewComponent implements OnInit { } this.createAccountForm(); this.claimStructure = history.state.newUser; - } else { - // Init form - this.initForm(new Structure()); - // if (this.isEditMode) { - // this.editForm = this.createStructureForm(structure); - // } } // Handle account creation when pre-register this.route.data.subscribe((data) => { @@ -122,33 +116,6 @@ export class FormViewComponent implements OnInit { }); } - private initForm(structure: Structure): void { - // Init account Form - this.createAccountForm(); - - // Init form - this.createStructureForm(structure); - // if (this.isEditMode) { - // this.editForm = this.createStructureForm(structure); - // } - - // Init hours form - this.hoursForm = new FormGroup({ - monday: this.createDay(structure.hours.monday), - tuesday: this.createDay(structure.hours.tuesday), - wednesday: this.createDay(structure.hours.wednesday), - thursday: this.createDay(structure.hours.thursday), - friday: this.createDay(structure.hours.friday), - saturday: this.createDay(structure.hours.saturday), - sunday: this.createDay(structure.hours.sunday), - }); - // if (this.isEditMode) { - // this.showCollapse(structure); - // } - - // this.setValidationsForm(); - } - private initPage(): void { if (formType[this.routeParam] === formType.account) { this.nbSteps = 3; @@ -167,6 +134,22 @@ export class FormViewComponent implements OnInit { if (formType[this.routeParam] === formType.structure) { this.nbSteps = 2; this.currentPage = structureFormStep.structureNameAndAddress; + const newStructure = new Structure(); + this.createStructureForm(newStructure); + // if (this.isEditMode) { + // this.editForm = this.createStructureForm(structure); + // } + + // Init hours form + this.hoursForm = new FormGroup({ + monday: this.createDay(newStructure.hours.monday), + tuesday: this.createDay(newStructure.hours.tuesday), + wednesday: this.createDay(newStructure.hours.wednesday), + thursday: this.createDay(newStructure.hours.thursday), + friday: this.createDay(newStructure.hours.friday), + saturday: this.createDay(newStructure.hours.saturday), + sunday: this.createDay(newStructure.hours.sunday), + }); } } diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 6bbd69c68..66e20ccad 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -19,7 +19,7 @@ export class StructureFormComponent { public isClaimMode = false; // Page and progress var - public currentPage = 5; // Change this value to start on a different page for dev testing + public currentPage = 4; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; -- GitLab From 08977b850d562b622084c69e97088e3129541eb2 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 15:48:40 +0100 Subject: [PATCH 081/199] structure access modality --- .../structure-access-modality.component.html | 26 ++++- .../structure-access-modality.component.ts | 23 ++++- .../structure-form.component.html | 8 ++ .../structure-form.component.ts | 94 ++++++++++++++++++- .../structure-type.component.ts | 2 +- .../structure-form/structureFormStep.enum.ts | 2 +- 6 files changed, 145 insertions(+), 10 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html index 239e79f42..48abe3a85 100644 --- a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html @@ -1 +1,25 @@ -<p>structure-access-modality works!</p> +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>Quelles sont les modalités d'accueil de la structure ?</h3> + <p>Plusieurs choix possibles</p> + </div> + <p class="missing-information" *ngIf="isEditMode && !structureForm.get('accessModality').valid"> + <app-svg-icon + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + <span>Il faut renseigner au moins un champ</span> + </p> + <div *ngIf="accessModality" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start" class="welcomingTerms"> + <app-checkbox-form + *ngFor="let module of accessModality.modules" + [isChecked]="isInArray('accessModality', module.id)" + [text]="module.text" + [iconSvg]="module.id" + (checkEvent)="onCheckChange($event, 'accessModality', module.id)" + > + </app-checkbox-form> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts index 64479839e..6d1526e8f 100644 --- a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts @@ -1,15 +1,30 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-access-modality', templateUrl: './structure-access-modality.component.html', - styleUrls: ['./structure-access-modality.component.scss'] + styleUrls: ['./structure-access-modality.component.scss'], }) export class StructureAccessModalityComponent implements OnInit { + @Input() structureForm: FormGroup; + @Input() accessModality: Category; + @Output() checkChange = new EventEmitter<any>(); + @Output() inArray = new EventEmitter<any>(); + constructor() {} - constructor() { } + ngOnInit(): void {} - ngOnInit(): void { + public onCheckChange(event: boolean, accessModalityId: string, modality: string) { + this.checkChange.emit({ + event, + formControlName: accessModalityId, + value: modality, + }); } + public isInArray(accessModalityId: string, modality: string) { + this.inArray.emit({ formControlName: accessModalityId, value: modality }); + } } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index ae215735a..8406f103e 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -33,3 +33,11 @@ (typeStructure)="setTypeStructure($event)" ></app-structure-type> </div> +<div *ngIf="currentPage == structureFormStep.structureAccessModality"> + <app-structure-access-modality + [structureForm]="structureForm" + [accessModality]="accessModality" + (inArray)="isInArray($event)" + (checkChange)="onCheckChange($event)" + ></app-structure-access-modality> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 2b0a3d741..409e49e81 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -4,6 +4,10 @@ import { Address } from '../../../models/address.model'; import { Day } from '../../../models/day.model'; import { Structure } from '../../../models/structure.model'; import { Time } from '../../../models/time.model'; +import { CategoryEnum } from '../../../shared/enum/category.enum'; +import { Category } from '../../../structure-list/models/category.model'; +import { Module } from '../../../structure-list/models/module.model'; +import { SearchService } from '../../../structure-list/services/search.service'; import { structureFormStep } from './structureFormStep.enum'; @Component({ @@ -11,14 +15,14 @@ import { structureFormStep } from './structureFormStep.enum'; templateUrl: './structure-form.component.html', styleUrls: ['./structure-form.component.scss'], }) -export class StructureFormComponent { +export class StructureFormComponent implements OnInit { @Input() structureForm: FormGroup; @Input() hoursForm: FormGroup; @Output() pageValid = new EventEmitter<any>(); public structureFormStep = structureFormStep; // Page and progress var - public currentPage = 5; // Change this value to start on a different page for dev testing + public currentPage = 6; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; @@ -37,6 +41,21 @@ export class StructureFormComponent { public isAccountMode: boolean = false; public userAcceptSavedDate = false; + // Form var + public equipmentsAndServices: { module: Module; openned: boolean }[] = []; + public trainingCategories: { category: Category; openned: boolean }[] = []; + public accessModality: Category; + public labelsQualifications: Category; + public proceduresAccompaniment: Category; + public publicsAccompaniment: Category; + public publics: Category; + + constructor(private searchService: SearchService) {} + + ngOnInit(): void { + this.setCategories(); + } + public setAddressStructure(address?: Address): void { if (address) { this.structureForm.get('numero').setValue(address.numero); @@ -88,11 +107,11 @@ export class StructureFormComponent { valid: this.structureForm.get('structureType').valid, name: 'Type de structure', }; - this.pagesValidation[structureFormStep.structureAccessModality] = { valid: this.structureForm.get('accessModality').valid, name: "Modalités d'accueil", }; + // this.pagesValidation[structureFormStep.structureHours] = { // valid: this.hoursForm.valid && this.structureForm.get('exceptionalClosures').valid, // name: "Horaires d'ouverture", @@ -180,6 +199,75 @@ export class StructureFormComponent { } } + async setCategories(): Promise<void> { + this.searchService.getCategoriesAccompaniment().subscribe((categories: Category[]) => { + this.proceduresAccompaniment = categories[0]; + }); + const equipmentsCategs = await this.searchService.getCategoriesMoreFilters().toPromise(); + equipmentsCategs.forEach((categ) => { + switch (categ.id) { + case CategoryEnum.accessModality: { + this.accessModality = categ; + break; + } + case CategoryEnum.equipmentsAndServices: { + categ.modules.forEach((c) => { + this.equipmentsAndServices.push({ module: c, openned: false }); + }); + break; + } + case CategoryEnum.labelsQualifications: { + this.labelsQualifications = categ; + break; + } + case CategoryEnum.publics: { + this.publics = categ; + break; + } + case CategoryEnum.publicsAccompaniment: { + this.publicsAccompaniment = categ; + break; + } + } + }); + const categs = await this.searchService.getCategoriesTraining().toPromise(); + categs.forEach((categ) => { + this.trainingCategories.push({ category: categ, openned: false }); + }); + } + + public onCheckChange({ + event, + formControlName, + value, + }: { + event: boolean; + formControlName: string; + value: string; + }): void { + if (value === 'wifiEnAccesLibre') { + this.isWifiChoosen = true; + } + const formArray: FormArray = this.structureForm.get(formControlName) as FormArray; + if (event) { + // Add a new control in the arrayForm + formArray.push(new FormControl(value)); + } else { + // Remove uncheck control in the arrayForm + const index = formArray.controls.findIndex((element) => element.value === value); + formArray.removeAt(index); + } + this.setValidationsForm(); + } + + // Check if a FormControl value is in FormArray + public isInArray({ formControlName, term }: { formControlName: string; term: string }): boolean { + if (this.structureForm.controls[formControlName].value) { + return this.structureForm.controls[formControlName].value.includes(term); + } + return false; + } + public onRadioChange(nameAndEvent: { name: string; value: boolean }): void { const { name, value } = nameAndEvent; this.structureForm.get(name).setValue(value); diff --git a/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts b/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts index 233844498..af17810da 100644 --- a/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts +++ b/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts @@ -9,7 +9,7 @@ import { FormGroup } from '@angular/forms'; export class StructureTypeComponent { @Input() structureForm: FormGroup; @Input() isEditMode; - @Output() typeStructure = new EventEmitter<any>(); + @Output() typeStructure = new EventEmitter<string>(); public setTypeStructure(value) { this.typeStructure.emit(value); diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index 736b096a9..9594f7455 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -5,8 +5,8 @@ export enum structureFormStep { structureChoiceCompletion, structureContactCompletion, structureType, - structureCreationInfo, structureAccessModality, + structureCreationInfo, structureHours, structurePmr, structureWebAndSocialNetwork, -- GitLab From 5a1821a14f53eeaf012fe15e768f540c79c3c8a8 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Tue, 22 Mar 2022 15:57:43 +0100 Subject: [PATCH 082/199] feat: rename personnal by personal --- .../form/footer-form/footer-form.component.ts | 4 +-- .../form-view/form-view-routing.module.ts | 6 ++--- .../form/form-view/form-view.component.html | 2 +- src/app/form/form-view/form-view.component.ts | 4 +-- src/app/form/form-view/form-view.module.ts | 8 +++--- src/app/form/form-view/formType.enum.ts | 2 +- .../personal-offer-form.component.html | 1 + .../personal-offer-form.component.scss} | 0 .../personal-offer-form.component.spec.ts | 24 ++++++++++++++++++ .../personal-offer-form.component.ts | 12 +++++++++ ...ffer-other-structure-choice.component.html | 1 + ...fer-other-structure-choice.component.scss} | 0 ...r-other-structure-choice.component.spec.ts | 24 ++++++++++++++++++ ...-offer-other-structure-choice.component.ts | 12 +++++++++ .../personalOfferFormStep.enum.ts | 6 +++++ .../personnal-offer-form.component.html | 1 - .../personnal-offer-form.component.spec.ts | 25 ------------------- .../personnal-offer-form.component.ts | 15 ----------- ...ffer-other-structure-choice.component.html | 1 - ...r-other-structure-choice.component.spec.ts | 25 ------------------- ...-offer-other-structure-choice.component.ts | 15 ----------- .../personnalOfferFormStep.enum.ts | 6 ----- 22 files changed, 93 insertions(+), 101 deletions(-) create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-form.component.html rename src/app/form/form-view/{personnal-offer-form/personnal-offer-form.component.scss => personal-offer-form/personal-offer-form.component.scss} (100%) create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-form.component.spec.ts create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html rename src/app/form/form-view/{personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.scss => personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.scss} (100%) create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.spec.ts create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts create mode 100644 src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts delete mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.html delete mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.spec.ts delete mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.ts delete mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.html delete mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.spec.ts delete mode 100644 src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.ts delete mode 100644 src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 7cc12e22d..d45dcdabb 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -8,7 +8,7 @@ import { ButtonType } from '../../shared/components/button/buttonType.enum'; import { Utils } from '../../utils/utils'; import { accountFormStep } from '../form-view/account-form/accountFormStep.enum'; import { formType } from '../form-view/formType.enum'; -import { personnalOfferFormStep } from '../form-view/personnal-offer-form/personnalOfferFormStep.enum'; +import { personalOfferFormStep } from '../form-view/personal-offer-form/personalOfferFormStep.enum'; import { profileFormStep } from '../form-view/profile-form/profileFormStep.enum'; import { structureFormStep } from '../form-view/structure-form/structureFormStep.enum'; @@ -27,7 +27,7 @@ export class FooterFormComponent implements OnChanges { @Input() nbPagesForm: number; @Input() form: FormGroup; @Input() linkedStructureId: Array<string> = null; - @Input() currentStep: accountFormStep | profileFormStep | structureFormStep | personnalOfferFormStep; + @Input() currentStep: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep; @Output() goNext = new EventEmitter<any>(); @Output() goPrev = new EventEmitter<any>(); @Output() endPage = new EventEmitter<any>(); diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts index 30f989c49..961429b80 100644 --- a/src/app/form/form-view/form-view-routing.module.ts +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -2,7 +2,7 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { AccountFormComponent } from './account-form/account-form.component'; import { FormViewComponent } from './form-view.component'; -import { PersonnalOfferFormComponent } from './personnal-offer-form/personnal-offer-form.component'; +import { PersonalOfferFormComponent } from './personal-offer-form/personal-offer-form.component'; import { ProfileFormComponent } from './profile-form/profile-form.component'; import { StructureFormComponent } from './structure-form/structure-form.component'; @@ -20,8 +20,8 @@ const routes: Routes = [ component: ProfileFormComponent, }, { - path: 'personnal-offer', - component: PersonnalOfferFormComponent, + path: 'personal-offer', + component: PersonalOfferFormComponent, }, { path: 'account', diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 0664b14d0..d8653dff0 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -32,7 +32,7 @@ (pageValid)="validatePage($event)" ></app-structure-form> </ng-container> - <ng-container *ngIf="formType[routeParam] === formType.personnalOffer"> PersonnalOffer </ng-container> + <ng-container *ngIf="formType[routeParam] === formType.personalOffer"> PersonalOffer </ng-container> </div> <app-footer-form *ngIf="displayFooterForm()" diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index c31966868..d8ed8cd2e 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -12,7 +12,7 @@ import { MustMatch } from '../../shared/validator/form'; import { CustomRegExp } from '../../utils/CustomRegExp'; import { accountFormStep } from './account-form/accountFormStep.enum'; import { formType } from './formType.enum'; -import { personnalOfferFormStep } from './personnal-offer-form/personnalOfferFormStep.enum'; +import { personalOfferFormStep } from './personal-offer-form/personalOfferFormStep.enum'; import { profileFormStep } from './profile-form/profileFormStep.enum'; import { structureFormStep } from './structure-form/structureFormStep.enum'; @@ -24,7 +24,7 @@ import { structureFormStep } from './structure-form/structureFormStep.enum'; export class FormViewComponent implements OnInit { public routeParam: string; public formType = formType; - public currentPage: accountFormStep | profileFormStep | structureFormStep | personnalOfferFormStep; + public currentPage: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep; // Account Form public accountForm: FormGroup; diff --git a/src/app/form/form-view/form-view.module.ts b/src/app/form/form-view/form-view.module.ts index 672ae8307..655c8a182 100644 --- a/src/app/form/form-view/form-view.module.ts +++ b/src/app/form/form-view/form-view.module.ts @@ -5,7 +5,7 @@ import { ProgressBarComponent } from './global-components/progress-bar/progress- import { NavigationButtonsComponent } from './global-components/navigation-buttons/navigation-buttons.component'; import { StructureFormComponent } from './structure-form/structure-form.component'; import { ProfileFormComponent } from './profile-form/profile-form.component'; -import { PersonnalOfferFormComponent } from './personnal-offer-form/personnal-offer-form.component'; +import { PersonalOfferFormComponent } from './personal-offer-form/personal-offer-form.component'; import { InformationStepComponent } from './global-components/information-step/information-step.component'; import { AccountFormComponent } from './account-form/account-form.component'; import { TrainingTypeComponent } from './global-components/training-type/training-type.component'; @@ -13,7 +13,7 @@ import { PublicAccompanimentComponent } from './global-components/public-accompa import { ProfileEmployerSelectionComponent } from './profile-form/profile-employer-selection/profile-employer-selection.component'; import { ProfileJobSelectionComponent } from './profile-form/profile-job-selection/profile-job-selection.component'; import { ProfileStructureChoiceComponent } from './profile-form/profile-structure-choice/profile-structure-choice.component'; -import { PersonnalOfferOtherStructureChoiceComponent } from './personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component'; +import { PersonalOfferOtherStructureChoiceComponent } from './personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component'; import { StructureNameAndAddressComponent } from './structure-form/structure-name-and-address/structure-name-and-address.component'; import { StructureContactComponent } from './structure-form/structure-contact/structure-contact.component'; import { StructureAccompanimentChoiceComponent } from './structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component'; @@ -47,7 +47,7 @@ import { StructureTypeComponent } from './structure-form/structure-type/structur NavigationButtonsComponent, StructureFormComponent, ProfileFormComponent, - PersonnalOfferFormComponent, + PersonalOfferFormComponent, InformationStepComponent, AccountFormComponent, TrainingTypeComponent, @@ -55,7 +55,7 @@ import { StructureTypeComponent } from './structure-form/structure-type/structur ProfileEmployerSelectionComponent, ProfileJobSelectionComponent, ProfileStructureChoiceComponent, - PersonnalOfferOtherStructureChoiceComponent, + PersonalOfferOtherStructureChoiceComponent, StructureNameAndAddressComponent, StructureContactComponent, StructureAccompanimentChoiceComponent, diff --git a/src/app/form/form-view/formType.enum.ts b/src/app/form/form-view/formType.enum.ts index 54391ddb8..abc56d2b1 100644 --- a/src/app/form/form-view/formType.enum.ts +++ b/src/app/form/form-view/formType.enum.ts @@ -1,6 +1,6 @@ export enum formType { structure, profile, - personnalOffer, + personalOffer, account, } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html new file mode 100644 index 000000000..f7962ef6e --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html @@ -0,0 +1 @@ +<p>personal-offer-form works!</p> diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.scss b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss similarity index 100% rename from src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.scss rename to src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.spec.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.spec.ts new file mode 100644 index 000000000..44ce94d1b --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PersonalOfferFormComponent } from './personal-offer-form.component'; + +describe('PersonalOfferFormComponent', () => { + let component: PersonalOfferFormComponent; + let fixture: ComponentFixture<PersonalOfferFormComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [PersonalOfferFormComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PersonalOfferFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts new file mode 100644 index 000000000..8e9d0de18 --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-personal-offer-form', + templateUrl: './personal-offer-form.component.html', + styleUrls: ['./personal-offer-form.component.scss'], +}) +export class PersonalOfferFormComponent implements OnInit { + constructor() {} + + ngOnInit(): void {} +} diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html new file mode 100644 index 000000000..5742e329e --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html @@ -0,0 +1 @@ +<p>personal-offer-other-structure-choice works!</p> diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.scss b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.scss similarity index 100% rename from src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.scss rename to src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.scss diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.spec.ts b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.spec.ts new file mode 100644 index 000000000..8d24f0842 --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PersonalOfferOtherStructureChoiceComponent } from './personal-offer-other-structure-choice.component'; + +describe('PersonalOfferOtherStructureChoiceComponent', () => { + let component: PersonalOfferOtherStructureChoiceComponent; + let fixture: ComponentFixture<PersonalOfferOtherStructureChoiceComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [PersonalOfferOtherStructureChoiceComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PersonalOfferOtherStructureChoiceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts new file mode 100644 index 000000000..eb86fa903 --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-personal-offer-other-structure-choice', + templateUrl: './personal-offer-other-structure-choice.component.html', + styleUrls: ['./personal-offer-other-structure-choice.component.scss'], +}) +export class PersonalOfferOtherStructureChoiceComponent implements OnInit { + constructor() {} + + ngOnInit(): void {} +} diff --git a/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts b/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts new file mode 100644 index 000000000..460ca8172 --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts @@ -0,0 +1,6 @@ +export enum personalOfferFormStep { + personalOfferAccompaniment, + personalOfferTrainingType, + personalOfferStructureChoice, + personalOfferFinishedInfo, +} diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.html b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.html deleted file mode 100644 index 299e61c35..000000000 --- a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.html +++ /dev/null @@ -1 +0,0 @@ -<p>personnal-offer-form works!</p> diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.spec.ts b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.spec.ts deleted file mode 100644 index 4de8089b4..000000000 --- a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PersonnalOfferFormComponent } from './personnal-offer-form.component'; - -describe('PersonnalOfferFormComponent', () => { - let component: PersonnalOfferFormComponent; - let fixture: ComponentFixture<PersonnalOfferFormComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PersonnalOfferFormComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PersonnalOfferFormComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.ts b/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.ts deleted file mode 100644 index c9b045627..000000000 --- a/src/app/form/form-view/personnal-offer-form/personnal-offer-form.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-personnal-offer-form', - templateUrl: './personnal-offer-form.component.html', - styleUrls: ['./personnal-offer-form.component.scss'] -}) -export class PersonnalOfferFormComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.html b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.html deleted file mode 100644 index dcb4d21cc..000000000 --- a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.html +++ /dev/null @@ -1 +0,0 @@ -<p>personnal-offer-other-structure-choice works!</p> diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.spec.ts b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.spec.ts deleted file mode 100644 index b2879c3dc..000000000 --- a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PersonnalOfferOtherStructureChoiceComponent } from './personnal-offer-other-structure-choice.component'; - -describe('PersonnalOfferOtherStructureChoiceComponent', () => { - let component: PersonnalOfferOtherStructureChoiceComponent; - let fixture: ComponentFixture<PersonnalOfferOtherStructureChoiceComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PersonnalOfferOtherStructureChoiceComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PersonnalOfferOtherStructureChoiceComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.ts b/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.ts deleted file mode 100644 index 00f13526f..000000000 --- a/src/app/form/form-view/personnal-offer-form/personnal-offer-other-structure-choice/personnal-offer-other-structure-choice.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-personnal-offer-other-structure-choice', - templateUrl: './personnal-offer-other-structure-choice.component.html', - styleUrls: ['./personnal-offer-other-structure-choice.component.scss'] -}) -export class PersonnalOfferOtherStructureChoiceComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts b/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts deleted file mode 100644 index 2084eb29c..000000000 --- a/src/app/form/form-view/personnal-offer-form/personnalOfferFormStep.enum.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum personnalOfferFormStep { - personnalOfferAccompaniment, - personnalOfferTrainingType, - personnalOfferStructureChoice, - personnalOfferFinishedInfo, -} -- GitLab From cbf378a162b4b1271f0037f205415a512278a24f Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Tue, 22 Mar 2022 16:01:12 +0100 Subject: [PATCH 083/199] unused imports --- .../form-view/structure-form/structure-form.component.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 921536c60..bb7ae05c6 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -1,9 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { AbstractControl, FormArray, FormControl, FormGroup, Validators } from '@angular/forms'; +import { FormArray, FormControl, FormGroup } from '@angular/forms'; import { Address } from '../../../models/address.model'; -import { Day } from '../../../models/day.model'; -import { Structure } from '../../../models/structure.model'; -import { Time } from '../../../models/time.model'; import { CategoryEnum } from '../../../shared/enum/category.enum'; import { Category } from '../../../structure-list/models/category.model'; import { Module } from '../../../structure-list/models/module.model'; @@ -22,7 +19,7 @@ export class StructureFormComponent implements OnInit { public structureFormStep = structureFormStep; // Page and progress var - public currentPage = 4; // Change this value to start on a different page for dev testing + public currentPage = 7; // Change this value to start on a different page for dev testing public progressStatus = 0; public nbPagesForm = 24; public isPageValid: boolean; -- GitLab From b6cbee49c017e194e09e52f8cb075b39d015a606 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Tue, 22 Mar 2022 17:38:44 +0100 Subject: [PATCH 084/199] feat: init personal offer --- .../form-view/form-view-routing.module.ts | 2 +- .../form/form-view/form-view.component.html | 8 +++++- .../form/form-view/form-view.component.scss | 4 +++ src/app/form/form-view/form-view.component.ts | 21 +++++++++++++--- src/app/form/form-view/form-view.module.ts | 5 ++++ src/app/form/form-view/formType.enum.ts | 2 +- ...ersonal-offer-accompaniment.component.html | 25 +++++++++++++++++++ ...ersonal-offer-accompaniment.component.scss | 0 ...onal-offer-accompaniment.component.spec.ts | 24 ++++++++++++++++++ .../personal-offer-accompaniment.component.ts | 17 +++++++++++++ .../personal-offer-form.component.html | 14 ++++++++++- .../personal-offer-form.component.ts | 10 +++++++- ...ersonal-offer-training-type.component.html | 1 + ...ersonal-offer-training-type.component.scss | 0 ...onal-offer-training-type.component.spec.ts | 24 ++++++++++++++++++ .../personal-offer-training-type.component.ts | 12 +++++++++ 16 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.scss create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.spec.ts create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.scss create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.spec.ts create mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts index 961429b80..521fe6750 100644 --- a/src/app/form/form-view/form-view-routing.module.ts +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -20,7 +20,7 @@ const routes: Routes = [ component: ProfileFormComponent, }, { - path: 'personal-offer', + path: 'personaloffer', component: PersonalOfferFormComponent, }, { diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index d8653dff0..3b527a53d 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -32,7 +32,13 @@ (pageValid)="validatePage($event)" ></app-structure-form> </ng-container> - <ng-container *ngIf="formType[routeParam] === formType.personalOffer"> PersonalOffer </ng-container> + <ng-container *ngIf="formType[routeParam] === formType.personaloffer"> + <app-personal-offer-form + [nbSteps]="nbSteps" + [personalOfferForm]="personalOfferForm" + [currentStep]="currentPage" + ></app-personal-offer-form> + </ng-container> </div> <app-footer-form *ngIf="displayFooterForm()" diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index 1fb840e46..d32e667b4 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -22,6 +22,10 @@ ::ng-deep.title { margin-bottom: 16px; + .overtitle { + @include lato-regular-18; + color: $grey-3; + } h3 { @include lato-bold-24; margin: 0; diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index d8ed8cd2e..540e84c52 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -38,6 +38,9 @@ export class FormViewComponent implements OnInit { public isEditMode: boolean = false; public structureFormStep = structureFormStep; + // Personal Offers Form + public personalOfferForm: FormGroup; + // Page and progress var public pagesValidation = []; public nbSteps: number; @@ -132,6 +135,9 @@ export class FormViewComponent implements OnInit { // this.editForm = this.createStructureForm(structure); // } + // Init personal offers Form + this.createPersonalOfferForm(structure); + // Init hours form this.hoursForm = new FormGroup({ monday: this.createDay(structure.hours.monday), @@ -160,10 +166,10 @@ export class FormViewComponent implements OnInit { this.currentPage = profileFormStep.profileBeginningInfo; this.createProfileForm(); } - // if (formType[this.routeParam] === formType.personnalOffer) { - // this.nbSteps = 3; - // this.currentPage = accountFormStep.accountInfo; - // } + if (formType[this.routeParam] === formType.personaloffer) { + this.nbSteps = 3; + this.currentPage = personalOfferFormStep.personalOfferAccompaniment; + } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 2; this.currentPage = structureFormStep.structureNameAndAddress; @@ -288,6 +294,13 @@ export class FormViewComponent implements OnInit { dataShareConsentDate: new FormControl(structure.dataShareConsentDate), }); } + + private createPersonalOfferForm(structure: Structure): void { + this.personalOfferForm = new FormGroup({ + structure: new FormControl('', [Validators.required]), + }); + } + private loadArrayForCheckbox(array: string[], isRequired: boolean): FormArray { return new FormArray( array.map((str) => new FormControl(str)), diff --git a/src/app/form/form-view/form-view.module.ts b/src/app/form/form-view/form-view.module.ts index 655c8a182..a087e1b7c 100644 --- a/src/app/form/form-view/form-view.module.ts +++ b/src/app/form/form-view/form-view.module.ts @@ -39,6 +39,8 @@ import { SharedModule } from '../../shared/shared.module'; import { FormViewRoutingModule } from './form-view-routing.module'; import { FooterFormComponent } from '../footer-form/footer-form.component'; import { StructureTypeComponent } from './structure-form/structure-type/structure-type.component'; +import { PersonalOfferAccompanimentComponent } from './personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component'; +import { PersonalOfferTrainingTypeComponent } from './personal-offer-form/personal-offer-training-type/personal-offer-training-type.component'; @NgModule({ declarations: [ @@ -48,6 +50,9 @@ import { StructureTypeComponent } from './structure-form/structure-type/structur StructureFormComponent, ProfileFormComponent, PersonalOfferFormComponent, + PersonalOfferAccompanimentComponent, + PersonalOfferTrainingTypeComponent, + PersonalOfferOtherStructureChoiceComponent, InformationStepComponent, AccountFormComponent, TrainingTypeComponent, diff --git a/src/app/form/form-view/formType.enum.ts b/src/app/form/form-view/formType.enum.ts index abc56d2b1..c82157735 100644 --- a/src/app/form/form-view/formType.enum.ts +++ b/src/app/form/form-view/formType.enum.ts @@ -1,6 +1,6 @@ export enum formType { structure, profile, - personalOffer, + personaloffer, account, } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html new file mode 100644 index 000000000..fc0eaa7dc --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html @@ -0,0 +1,25 @@ +<form [formGroup]="personalOfferForm" *ngIf="personalOfferForm"> + <div class="title"> + <p class="overtitle">{{ personalOfferForm.value.structureName }}</p> + <h3>Quelles aides au numérique proposez-vous ?</h3> + <p class="notRequired">Facultatif</p> + </div> + + <!-- <div class="form-group" fxLayout="column"> + <label for="structureName">Nom de la structure</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + (input)="setValidationsForm()" + formControlName="structureName" + class="form-input structureName" + /> + <app-svg-icon + *ngIf="structureForm.get('structureName').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + </div> + </div> --> +</form> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.scss b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.spec.ts b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.spec.ts new file mode 100644 index 000000000..9e7212cae --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PersonalOfferAccompanimentComponent } from './personal-offer-accompaniment.component'; + +describe('PersonalOfferAccompanimentComponent', () => { + let component: PersonalOfferAccompanimentComponent; + let fixture: ComponentFixture<PersonalOfferAccompanimentComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [PersonalOfferAccompanimentComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PersonalOfferAccompanimentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts new file mode 100644 index 000000000..4efc6dfe4 --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts @@ -0,0 +1,17 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; + +@Component({ + selector: 'app-personal-offer-accompaniment', + templateUrl: './personal-offer-accompaniment.component.html', + styleUrls: ['./personal-offer-accompaniment.component.scss'], +}) +export class PersonalOfferAccompanimentComponent implements OnInit { + @Input() personalOfferForm: FormGroup; + + constructor() {} + + ngOnInit(): void { + console.log(this.personalOfferForm.value.structureName); + } +} diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html index f7962ef6e..a373422b6 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html @@ -1 +1,13 @@ -<p>personal-offer-form works!</p> +<div> + <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferAccompaniment"> + <app-personal-offer-accompaniment [personalOfferForm]="personalOfferForm"></app-personal-offer-accompaniment> + </ng-container> + <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferTrainingType"> + <app-personal-offer-training-type [personalOfferForm]="personalOfferForm"></app-personal-offer-training-type> + </ng-container> + <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferTrainingType"> + <app-personal-offer-other-structure-choice + [personalOfferForm]="personalOfferForm" + ></app-personal-offer-other-structure-choice> + </ng-container> +</div> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts index 8e9d0de18..486746681 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts @@ -1,4 +1,6 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { personalOfferFormStep } from './personalOfferFormStep.enum'; @Component({ selector: 'app-personal-offer-form', @@ -6,6 +8,12 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./personal-offer-form.component.scss'], }) export class PersonalOfferFormComponent implements OnInit { + @Input() nbSteps: number; + @Input() currentStep: personalOfferFormStep; + @Input() personalOfferForm: FormGroup; + + public personalOfferFormStep = personalOfferFormStep; + constructor() {} ngOnInit(): void {} diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html new file mode 100644 index 000000000..c437232cc --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html @@ -0,0 +1 @@ +<p>personal-offer-training-type works!</p> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.scss b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.spec.ts b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.spec.ts new file mode 100644 index 000000000..94086ff72 --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PersonalOfferTrainingTypeComponent } from './personal-offer-training-type.component'; + +describe('PersonalOfferTrainingTypeComponent', () => { + let component: PersonalOfferTrainingTypeComponent; + let fixture: ComponentFixture<PersonalOfferTrainingTypeComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [PersonalOfferTrainingTypeComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PersonalOfferTrainingTypeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts new file mode 100644 index 000000000..40d457a95 --- /dev/null +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-personal-offer-training-type', + templateUrl: './personal-offer-training-type.component.html', + styleUrls: ['./personal-offer-training-type.component.scss'], +}) +export class PersonalOfferTrainingTypeComponent implements OnInit { + constructor() {} + + ngOnInit(): void {} +} -- GitLab From dc7ee16f5c81d70d09d6f8f3e8769f2999d62df5 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Tue, 22 Mar 2022 17:55:58 +0100 Subject: [PATCH 085/199] Init structure + structure steps --- .../form/footer-form/footer-form.component.ts | 42 ++----- .../form/form-view/form-view.component.html | 1 + src/app/form/form-view/form-view.component.ts | 24 ++-- .../structure-equipments.component.html | 116 +++++++++++++++++- .../structure-equipments.component.scss | 44 +++++++ .../structure-equipments.component.ts | 38 +++++- .../structure-form.component.html | 35 +++++- .../structure-form.component.ts | 69 +++++++---- .../structure-labels.component.html | 18 ++- .../structure-labels.component.ts | 44 ++++++- .../structure-other-services.component.html | 26 +++- .../structure-other-services.component.ts | 21 +++- 12 files changed, 383 insertions(+), 95 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 7cc12e22d..257660d81 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -55,44 +55,18 @@ export class FooterFormComponent implements OnChanges { this.endPage.emit(); } - /** - * Page algo for create account case - */ - public nextPageAccount(): void { - if (this.currentStep === this.nbPagesForm - 1) { - const user = new User(this.form.value); - // Create user with structure - user.structuresLink = this.linkedStructureId; - this.authService.register(user).subscribe(() => {}); - } - - if (this.currentStep === accountFormStep.accountInfo) { - this.currentStep = accountFormStep.accountCredentials; - } - } - // public validateAccountForm(): void { - // if (this.form.valid) { - // const user = new User(this.form.value); - // this.authService.register(user).pipe(first()); - - // // .subscribe(() => { - // // this.createStructure(structure, user); - // // }); - // // if (this.userAcceptNewsletter) { - // // this.newsletterService.newsletterSubscribe(user.email).subscribe(() => {}); - // // } - // } - // } public goToHome(): void { this.router.navigateByUrl('news'); } public nextPage(): void { - if (this.currentStep === accountFormStep.accountCredentials) { - const user = new User(this.form.value); - // Create user with structure - user.structuresLink = this.linkedStructureId; - this.authService.register(user).subscribe(() => {}); - document.getElementsByClassName('page')[0].scrollTo(0, 0); + if (this.currentForm === formType.account) { + if (this.currentStep === accountFormStep.accountCredentials) { + const user = new User(this.form.value); + // Create user with structure + user.structuresLink = this.linkedStructureId; + this.authService.register(user).subscribe(() => {}); + document.getElementsByClassName('page')[0].scrollTo(0, 0); + } } this.goToNextPage(); diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 0664b14d0..284856e50 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -29,6 +29,7 @@ [nbSteps]="nbSteps" [structureForm]="structureForm" [currentStep]="currentPage" + [structure]="structure" (pageValid)="validatePage($event)" ></app-structure-form> </ng-container> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 14971e76e..dfe9bfea3 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -34,7 +34,7 @@ export class FormViewComponent implements OnInit { // Structure from public structureForm: FormGroup; public editForm: FormGroup; - + public structure: Structure; public isEditMode: boolean = false; public structureFormStep = structureFormStep; @@ -132,23 +132,23 @@ export class FormViewComponent implements OnInit { // this.currentPage = accountFormStep.accountInfo; // } if (formType[this.routeParam] === formType.structure) { - this.nbSteps = 2; - this.currentPage = structureFormStep.structureNameAndAddress; - const newStructure = new Structure(); - this.createStructureForm(newStructure); + this.nbSteps = 24; + this.currentPage = structureFormStep.structureLabels; + this.structure = new Structure(); + this.createStructureForm(this.structure); // if (this.isEditMode) { // this.editForm = this.createStructureForm(structure); // } // Init hours form this.hoursForm = new FormGroup({ - monday: this.createDay(newStructure.hours.monday), - tuesday: this.createDay(newStructure.hours.tuesday), - wednesday: this.createDay(newStructure.hours.wednesday), - thursday: this.createDay(newStructure.hours.thursday), - friday: this.createDay(newStructure.hours.friday), - saturday: this.createDay(newStructure.hours.saturday), - sunday: this.createDay(newStructure.hours.sunday), + monday: this.createDay(this.structure.hours.monday), + tuesday: this.createDay(this.structure.hours.tuesday), + wednesday: this.createDay(this.structure.hours.wednesday), + thursday: this.createDay(this.structure.hours.thursday), + friday: this.createDay(this.structure.hours.friday), + saturday: this.createDay(this.structure.hours.saturday), + sunday: this.createDay(this.structure.hours.sunday), }); } } diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html index ff4b7529e..a9677def6 100644 --- a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html @@ -1 +1,115 @@ -<p>structure-equipments works!</p> +<form [formGroup]="structureForm" (keyup.enter)="(!isEditMode ? '' : null)"> + <div class="title"> + <h3>Quel matériel est mis à disposition par la structure ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <ng-container *ngFor="let equipment of equipmentsAndServices"> + <div + class="controller equipments" + *ngIf="['ordinateurs', 'tablettes', 'bornesNumeriques', 'imprimantes', 'scanners'].includes(equipment.module.id)" + > + <div fxLayout="column"> + <div class="controllerHeader" fxLayout="row" fxLayoutAlign="space-between center"> + <div class="flex-item"> + <p class="no-margin">Nombre de {{ equipment.module.text | lowercase }}</p> + </div> + <div class="inputSection flex-item equipments" fxLayout="row" fxLayoutAlign="center center"> + <ng-container *ngIf="equipment.module.id == 'ordinateurs'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbComputers === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbComputers" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbComputers" + /> + </ng-container> + <ng-container *ngIf="equipment.module.id == 'tablettes'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbTablets === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbTablets" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbTablets" + /> + </ng-container> + <ng-container *ngIf="equipment.module.id == 'imprimantes'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbPrinters === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbPrinters" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbPrinters" + /> + </ng-container> + <ng-container *ngIf="equipment.module.id == 'bornesNumeriques'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbNumericTerminal === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbNumericTerminal" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbNumericTerminal" + /> + </ng-container> + <ng-container *ngIf="equipment.module.id == 'scanners'"> + <svg + class="hide" + aria-hidden="true" + (click)="changeValueHandler(equipment.module.id, -1)" + [ngClass]="{ disabled: structureForm.value.nbScanners === 0 }" + > + <use [attr.xlink:href]="'assets/form/sprite.svg#minus'"></use> + </svg> + <input + type="number" + (input)="setValidationsForm()" + formControlName="nbScanners" + min="0" + class="form-input nbEquipment" + [(value)]="structureForm.value.nbScanners" + /> + </ng-container> + <svg class="show" aria-hidden="true" (click)="changeValueHandler(equipment.module.id, 1)"> + <use [attr.xlink:href]="'assets/form/sprite.svg#plus'"></use> + </svg> + </div> + </div> + </div> + </div> + </ng-container> +</form> diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss index e69de29bb..54bca3545 100644 --- a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss @@ -0,0 +1,44 @@ +@import '../../../../../assets/scss/typography'; +@import '../../../../../assets/scss/color'; +@import '../../../../../assets/scss/breakpoint'; +//section equipments controller +.controller { + border: 1px solid $grey-5; + border-radius: 4px; + margin-bottom: 13px; + max-width: 600px; + @media #{$small-phone} { + width: 95% !important; + } + @media #{$tablet} { + width: 296px; + } + .controllerHeader { + height: 65px; + padding: 0 15px 0 12px; + p { + @include lato-bold-14; + } + } + .equipments { + svg { + width: 32px; + height: 32px; + background-color: $grey-8; + border-radius: 50%; + cursor: pointer; + } + input { + width: 56px; + margin: 0 6px; + } + input::-webkit-outer-spin-button, + input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } + input[type='number'] { + -moz-appearance: textfield; + } + } +} diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts index 6cf5236a2..d37984d28 100644 --- a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts @@ -1,15 +1,45 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { AbstractControl, FormGroup } from '@angular/forms'; +import { Structure } from '../../../../models/structure.model'; +import { Module } from '../../../../structure-list/models/module.model'; +import { SearchService } from '../../../../structure-list/services/search.service'; @Component({ selector: 'app-structure-equipments', templateUrl: './structure-equipments.component.html', - styleUrls: ['./structure-equipments.component.scss'] + styleUrls: ['./structure-equipments.component.scss'], }) export class StructureEquipmentsComponent implements OnInit { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + @Output() validateForm = new EventEmitter<any>(); + public equipmentsAndServices: { module: Module; openned: boolean }[] = []; - constructor() { } + constructor(private searchService: SearchService) {} - ngOnInit(): void { + async ngOnInit(): Promise<void> { + const equipmentsCategs = await this.searchService.getCategoriesMoreFilters().toPromise(); + equipmentsCategs.forEach((categ) => { + categ.modules.forEach((c) => { + this.equipmentsAndServices.push({ module: c, openned: false }); + }); + }); } + public getStructureControl(nameControl: string): AbstractControl { + return this.structureForm.get(nameControl); + } + public changeValueHandler(equipment: string, value = 0): void { + let field = ''; + if (equipment === 'ordinateurs') field = 'nbComputers'; + if (equipment === 'tablettes') field = 'nbTablets'; + if (equipment === 'scanners') field = 'nbScanners'; + if (equipment === 'bornesNumeriques') field = 'nbNumericTerminal'; + if (equipment === 'imprimantes') field = 'nbPrinters'; + if (value === -1 && this.structureForm.value[field] === 0) return; + this.getStructureControl(field).setValue(this.structureForm.value[field] + value); + } + public setValidationsForm() { + this.validateForm.emit(); + } } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index ae215735a..f0517a152 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -1,35 +1,58 @@ -<div *ngIf="currentPage == structureFormStep.structureNameAndAddress"> +<div *ngIf="currentStep == structureFormStep.structureNameAndAddress"> <app-structure-name-and-address [structureForm]="structureForm" (validateForm)="setValidationsForm()" (addressStructure)="setAddressStructure($event)" ></app-structure-name-and-address> </div> -<div *ngIf="currentPage == structureFormStep.structureContact"> +<div *ngIf="currentStep == structureFormStep.structureContact"> <app-structure-contact [structureForm]="structureForm" (validateForm)="setValidationsForm()"></app-structure-contact> </div> -<div *ngIf="currentPage == structureFormStep.structureAccompanimentChoice"> +<div *ngIf="currentStep == structureFormStep.structureAccompanimentChoice"> <app-structure-accompaniment-choice [structureForm]="structureForm" (radioChange)="onRadioChange($event)" ></app-structure-accompaniment-choice> </div> -<div *ngIf="currentPage == structureFormStep.structureChoiceCompletion"> +<div *ngIf="currentStep == structureFormStep.structureChoiceCompletion"> <app-structure-choice-completion [structureForm]="structureForm" (radioChange)="onRadioChange($event)" ></app-structure-choice-completion> </div> -<div *ngIf="currentPage == structureFormStep.structureContactCompletion"> +<div *ngIf="currentStep == structureFormStep.structureContactCompletion"> <app-structure-contact-completion [structureForm]="structureForm" (validateForm)="setValidationsForm()" ></app-structure-contact-completion> </div> -<div *ngIf="currentPage == structureFormStep.structureType"> +<div *ngIf="currentStep == structureFormStep.structureType"> <app-structure-type [structureForm]="structureForm" (validateForm)="setValidationsForm()" (typeStructure)="setTypeStructure($event)" ></app-structure-type> </div> + +<div *ngIf="currentStep == structureFormStep.structureEquipments"> + <app-structure-equipments + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + ></app-structure-equipments> +</div> +<div *ngIf="currentStep == structureFormStep.structureLabels"> + <app-structure-labels + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + ></app-structure-labels> +</div> +<div *ngIf="currentStep == structureFormStep.structureOtherServices"> + <app-structure-other-services + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + [structure]="structure" + ></app-structure-other-services> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 66e20ccad..88f78dfaf 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; import { AbstractControl, FormArray, FormControl, FormGroup, Validators } from '@angular/forms'; import { Address } from '../../../models/address.model'; import { Day } from '../../../models/day.model'; @@ -11,17 +11,14 @@ import { structureFormStep } from './structureFormStep.enum'; templateUrl: './structure-form.component.html', styleUrls: ['./structure-form.component.scss'], }) -export class StructureFormComponent { +export class StructureFormComponent implements OnChanges { + @Input() nbSteps: number; + @Input() currentStep: structureFormStep; @Input() structureForm: FormGroup; @Input() hoursForm: FormGroup; @Output() pageValid = new EventEmitter<any>(); public structureFormStep = structureFormStep; public isClaimMode = false; - - // Page and progress var - public currentPage = 4; // Change this value to start on a different page for dev testing - public progressStatus = 0; - public nbPagesForm = 24; public isPageValid: boolean; public pagesValidation = []; @@ -41,8 +38,17 @@ export class StructureFormComponent { public isAccountMode: boolean = false; constructor() {} - - ngOnInit(): void {} + ngOnChanges(changes: SimpleChanges): void { + if (changes.currentStep) { + if ( + this.currentStep === structureFormStep.structureEquipments || + this.currentStep === structureFormStep.structureLabels || + this.currentStep === structureFormStep.structureOtherServices + ) { + this.pageValid.emit(); + } + } + } public setAddressStructure(address?: Address): void { if (address) { @@ -138,12 +144,7 @@ export class StructureFormComponent { // // TODO : update with new page name / remove // }; this.pagesValidation[structureFormStep.structureTrainingType] = { - valid: - this.structureForm.get('accessRight').valid && - this.structureForm.get('socialAndProfessional').valid && - this.structureForm.get('baseSkills').valid && - this.structureForm.get('parentingHelp').valid && - this.structureForm.get('digitalCultureSecurity').valid, + valid: true, name: 'Ateliers au numérique proposés', }; this.pagesValidation[structureFormStep.structureTrainingPrice] = { @@ -155,17 +156,11 @@ export class StructureFormComponent { name: 'Gratuité du wifi', }; this.pagesValidation[structureFormStep.structureEquipments] = { - valid: - this.structureForm.get('equipmentsAndServices').valid && - this.structureForm.get('nbComputers').valid && - this.structureForm.get('nbPrinters').valid && - this.structureForm.get('nbTablets').valid && - this.structureForm.get('nbNumericTerminal').valid && - this.structureForm.get('nbScanners').valid, - name: 'Matériels mis à disposition', + valid: true, + name: 'Equipements mis à disposition', }; this.pagesValidation[structureFormStep.structureLabels] = { - valid: this.structureForm.get('labelsQualifications').valid, + valid: true, name: 'Labélisations proposées', }; this.pagesValidation[structureFormStep.structureOtherServices] = { @@ -206,8 +201,32 @@ export class StructureFormComponent { if (index) { return this.pagesValidation[index].valid; } - this.isPageValid = this.pagesValidation[this.currentPage].valid; + this.isPageValid = this.pagesValidation[this.currentStep].valid; if (this.isPageValid) this.pageValid.emit(); return this.isPageValid; } + // Check if a FormControl value is in FormArray + // public isInArray(nameAndEvent: { term: string; formControlName: string }): boolean { + // const { term, formControlName } = nameAndEvent; + // console.log('formControlName', formControlName); + // if (this.structureForm.controls[formControlName].value) { + // return this.structureForm.controls[formControlName].value.includes(term); + // } + // return false; + // } + // public onCheckChange(event: boolean, formControlName: string, value: string): void { + // if (value === 'wifiEnAccesLibre') { + // this.isWifiChoosen = true; + // } + // const formArray: FormArray = this.structureForm.get(formControlName) as FormArray; + // if (event) { + // // Add a new control in the arrayForm + // formArray.push(new FormControl(value)); + // } else { + // // Remove uncheck control in the arrayForm + // const index = formArray.controls.findIndex((element) => element.value === value); + // formArray.removeAt(index); + // } + // this.setValidationsForm(); + // } } diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html index 33e80821d..4053fac13 100644 --- a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html @@ -1 +1,17 @@ -<p>structure-labels works!</p> +<form [formGroup]="structureForm" (keyup.enter)="(!isEditMode ? '' : null)"> + <div class="title"> + <h3>La sturcture est labellisée ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <div class="labelsQualifications" *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutAlign="flex-start"> + <app-checkbox-form + *ngFor="let module of labelsQualifications.modules" + [isChecked]="isInArray(module.id, labelsQualifications.id)" + [text]="module.text" + [iconSvg]="module.id" + [iconType]="'labels'" + (checkEvent)="onCheckChange($event, labelsQualifications.id, module.id)" + > + </app-checkbox-form> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts index 953202b8b..d639026f3 100644 --- a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts @@ -1,15 +1,47 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormArray, FormControl, FormGroup } from '@angular/forms'; +import { CategoryEnum } from '../../../../shared/enum/category.enum'; +import { SearchService } from '../../../../structure-list/services/search.service'; @Component({ selector: 'app-structure-labels', templateUrl: './structure-labels.component.html', - styleUrls: ['./structure-labels.component.scss'] + styleUrls: ['./structure-labels.component.scss'], }) export class StructureLabelsComponent implements OnInit { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + @Output() validateForm = new EventEmitter<any>(); + @Output() checkChange = new EventEmitter<any>(); + @Output() inArray = new EventEmitter<any>(); + public labelsQualifications; + constructor(private searchService: SearchService) {} - constructor() { } - - ngOnInit(): void { + async ngOnInit(): Promise<void> { + const equipmentsCategs = await this.searchService.getCategoriesMoreFilters().toPromise(); + equipmentsCategs.forEach((categ) => { + if (categ.id === CategoryEnum.labelsQualifications) { + this.labelsQualifications = categ; + } + }); + } + // Check if a FormControl value is in FormArray + public isInArray(term: string, formControlName: string): boolean { + if (this.structureForm.controls[formControlName].value) { + return this.structureForm.controls[formControlName].value.includes(term); + } + return false; + } + public onCheckChange(event: boolean, formControlName: string, value: string): void { + const formArray: FormArray = this.structureForm.get(formControlName) as FormArray; + if (event) { + // Add a new control in the arrayForm + formArray.push(new FormControl(value)); + } else { + // Remove uncheck control in the arrayForm + const index = formArray.controls.findIndex((element) => element.value === value); + formArray.removeAt(index); + } + this.validateForm.emit(); } - } diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html index ec541dece..ef9fa819d 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html @@ -1 +1,25 @@ -<p>structure-other-services works!</p> +<form [formGroup]="structureForm" (keyup.enter)="(!isEditMode ? '' : null)"> + <div class="title"> + <h3>Quels autres services sont proposées par la structure ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <div *ngIf="otherServices" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start" class="otherServices"> + <ng-container *ngFor="let module of otherServices.modules"> + <app-checkbox-form + *ngIf=" + [ + 'donDeMateriels', + 'reconditionnementsDeMateriel', + 'accesLivresInformatiques', + 'venteMaterielPrixSolidaire' + ].includes(module.id) + " + [isChecked]="isInArray(module.id, 'equipmentsAndServices')" + [text]="module.text" + [iconSvg]="module.id" + (checkEvent)="onCheckChange($event, 'equipmentsAndServices', module.id)" + > + </app-checkbox-form> + </ng-container> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts index cf0ed862a..18a69c627 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts @@ -1,15 +1,26 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { CategoryEnum } from '../../../../shared/enum/category.enum'; +import { SearchService } from '../../../../structure-list/services/search.service'; @Component({ selector: 'app-structure-other-services', templateUrl: './structure-other-services.component.html', - styleUrls: ['./structure-other-services.component.scss'] + styleUrls: ['./structure-other-services.component.scss'], }) export class StructureOtherServicesComponent implements OnInit { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + public otherServices; - constructor() { } + constructor(private searchService: SearchService) {} - ngOnInit(): void { + async ngOnInit(): Promise<void> { + const equipmentsCategs = await this.searchService.getCategoriesMoreFilters().toPromise(); + equipmentsCategs.forEach((categ) => { + if (categ.id === CategoryEnum.equipmentsAndServices) { + this.otherServices = categ; + } + }); } - } -- GitLab From aff71d85de372b225b4dbbbef763395252986a9e Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Tue, 22 Mar 2022 18:09:09 +0100 Subject: [PATCH 086/199] feat: profile form --- .../form/footer-form/footer-form.component.ts | 9 +- .../form/form-view/form-view.component.html | 2 +- src/app/form/form-view/form-view.component.ts | 34 +++-- .../profile-employer-selection.component.html | 29 ++++- .../profile-employer-selection.component.scss | 122 ++++++++++++++++++ .../profile-employer-selection.component.ts | 48 ++++++- .../profile-form/profile-form.component.html | 12 +- .../profile-form/profile-form.component.ts | 38 ++++-- .../profile-job-selection.component.html | 24 +++- .../profile-job-selection.component.scss | 8 ++ .../profile-job-selection.component.ts | 46 ++++++- .../profile-structure-choice.component.html | 38 +----- src/app/models/employer.model.ts | 9 ++ src/app/models/job.model.ts | 10 ++ src/app/profile/services/profile.service.ts | 10 ++ .../components/button/button.component.html | 11 +- .../components/button/button.component.scss | 7 + 17 files changed, 381 insertions(+), 76 deletions(-) create mode 100644 src/app/models/employer.model.ts create mode 100644 src/app/models/job.model.ts diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 7cc12e22d..f0312d27c 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -39,9 +39,12 @@ export class FooterFormComponent implements OnChanges { this.goNext.emit(); } ngOnChanges(changes: SimpleChanges): void { - if (changes.currentStep && this.currentStep === accountFormStep.confirmEmailSentInfo) { - this.isLastFormStep = true; - } + console.log(changes.currentStep); + console.log(this.isValid); + //TODO: + // if (changes.currentStep && this.currentStep === accountFormStep.confirmEmailSentInfo) { + // this.isLastFormStep = true; + // } } public goToPreviousPage(): void { diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 0664b14d0..31361f58e 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -17,8 +17,8 @@ </ng-container> <ng-container *ngIf="formType[routeParam] === formType.profile"> <app-profile-form - [profileForm]="profileForm" [nbSteps]="nbSteps" + [profileForm]="profileForm" [currentStep]="currentPage" (goNext)="nextPage()" (pageValid)="validatePage($event)" diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 55ebe23a6..fa9bb11b5 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -29,7 +29,7 @@ export class FormViewComponent implements OnInit { // Account Form public accountForm: FormGroup; // Profile Form - public profileFform: FormGroup; + public profileForm: FormGroup; // Structure from public structureForm: FormGroup; @@ -128,6 +128,9 @@ export class FormViewComponent implements OnInit { // Init form this.createStructureForm(structure); + + // Init profile Form + this.createProfileForm(); // if (this.isEditMode) { // this.editForm = this.createStructureForm(structure); // } @@ -200,15 +203,18 @@ export class FormViewComponent implements OnInit { ); } - private createProfileForm(email?: string): void { - this.profileFform = new FormGroup( - { - employer: new FormControl(email ? email : '', [Validators.required]), - job: new FormControl('', [Validators.required]), - structure: new FormControl('', [Validators.required]), - }, - [MustMatch('password', 'confirmPassword')] - ); + private createProfileForm(): void { + this.profileForm = new FormGroup({ + employer: new FormGroup({ + name: new FormControl('', [Validators.required]), + validated: new FormControl(false, [Validators.required]), + }), + job: new FormGroup({ + name: new FormControl('', [Validators.required]), + validated: new FormControl(true, [Validators.required]), + }), + structure: new FormControl('', [Validators.required]), + }); } private createStructureForm(structure): void { @@ -288,8 +294,12 @@ export class FormViewComponent implements OnInit { isRequired ? Validators.required : Validators.nullValidator ); } - public validatePage(): void { - this.isPageValid = true; + public validatePage(skip?: boolean): void { + if (skip) { + this.nextPage(); + } else { + this.isPageValid = true; + } } public nextPage(): void { this.isPageValid = false; diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html index 92831437e..8c44ffea1 100644 --- a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html @@ -1 +1,28 @@ -<p>profile-employer-selection works!</p> +<form [formGroup]="profileForm"> + <div class="title"> + <h2>Qui vous emploie ?</h2> + <p>L’employeur demandé est celui qui figure sur votre fiche de paie (ou fiche de poste)</p> + </div> + <div class="search-structure"> + <div fxLayout="column" fxLayoutAlign="space-between" class="form-group search"> + <label for="employer">Employeur</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + id="search-employer" + type="text" + (input)="onSearchChange($event.target.value)" + class="form-input" + autocomplete="off" + #searchEmployer + /> + </div> + </div> + <div class="scroll"> + <div class="autocomplete-items" *ngIf="!isAlreadySearching"> + <p *ngFor="let employer of employers" (click)="selectedResult(employer)" class="autocomplete-item"> + {{ employer.name }} + </p> + </div> + </div> + </div> +</form> diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss index e69de29bb..d72dbd3db 100644 --- a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss @@ -0,0 +1,122 @@ +@import '../../../../../assets/scss/color'; +@import '../../../../../assets/scss/typography'; +@import '../../../../../assets/scss/inputs'; +@import '../../../../../assets/scss/breakpoint'; + +.search-structure { + width: 380px; +} + +.search { + width: 380px; + border-radius: 20px; + padding: 0px 0px 0px 8px; + margin: 4px 0px; + + .search-input { + height: 34px; + border: 0px; + @include lato-regular-15; + font-style: italic; + padding: 0px; + margin: 0px 0px 0px 5px; + } +} + +::ng-deep .searchIcon { + padding-right: 12px; +} + +.nb { + padding: 0px 0px 0px 16px; + margin: 16px 0px; +} + +.nb-text { + @include lato-regular-13; + color: $grey-3; +} + +.structure-list { + margin: 16px 0px; +} + +.filet { + border-width: 0px 0px 1px 0px; + border-style: solid; + border-color: $grey-8; +} + +.form-list { + cursor: pointer; + height: 76px; + border-width: 2px; + border-style: solid; + border-color: $white; + &:hover { + background: $primary-color-light; + border-color: $primary-color-light; + } + + &.item-selected { + border-color: $green-1; + &:hover { + border-color: $green-1; + background: $white; + } + } +} + +.item-frame { + padding: 0px 0px 0px 16px; +} + +.name { + @include lato-regular-16; + font-weight: 600; + color: $grey-1; +} + +.commune { + @include lato-regular-13; + font-style: italic; + color: $grey-3; + margin: 6px 0px; +} + +.create-text { + @include lato-regular-15; + color: $grey-1; + margin: 8px 0px; +} + +.form-icon { + margin: 0px 24px; +} + +.search-bar { + display: flex; + flex-direction: column; + * { + width: 400px; + } +} +.autocomplete-items { + border: 0.0625rem solid #d4d4d4; + box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.25); + border-top: none; + border-bottom: none; + z-index: 99; + background-color: #fff; + cursor: pointer; + max-height: 250px; + overflow: auto; +} +.autocomplete-item { + margin: 0; + padding: 1em 0; +} +.autocomplete-item:hover { + background-color: #dee6ee; + cursor: pointer; +} diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts index fde647569..4f9d25a74 100644 --- a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts @@ -1,15 +1,53 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { Employer } from '../../../../models/employer.model'; +import { ProfileService } from '../../../../profile/services/profile.service'; +import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; @Component({ selector: 'app-profile-employer-selection', templateUrl: './profile-employer-selection.component.html', - styleUrls: ['./profile-employer-selection.component.scss'] + styleUrls: ['./profile-employer-selection.component.scss'], }) -export class ProfileEmployerSelectionComponent implements OnInit { +export class ProfileEmployerSelectionComponent { + @Input() profileForm: FormGroup; + @Output() validateForm = new EventEmitter<Employer>(); + @ViewChild('searchEmployer', { static: true }) searchEmployer: ElementRef; + public buttonTypeEnum = ButtonType; + public employers: Employer[]; + public isAlreadySearching = false; - constructor() { } + constructor(private profileService: ProfileService) {} - ngOnInit(): void { + public onSearchChange(searchString: string): void { + if (searchString.length <= 2) this.getEmployers(); + this.getEmployers(searchString); + this.profileForm.get('employer').patchValue({ + name: searchString, + validated: false, + }); + console.table(searchString); + this.validateForm.emit(); } + public selectedResult(employer: Employer): void { + this.searchEmployer.nativeElement.value = employer.name; + this.profileForm.get('employer').patchValue({ + name: employer.name, + validated: employer.validated, + }); + + this.employers = []; + this.validateForm.emit(); + } + + private getEmployers(searchString: string = '') { + if (!this.isAlreadySearching) { + this.isAlreadySearching = true; + this.profileService.getEmployers(searchString).subscribe((employers) => { + this.employers = employers; + this.isAlreadySearching = false; + }); + } + } } diff --git a/src/app/form/form-view/profile-form/profile-form.component.html b/src/app/form/form-view/profile-form/profile-form.component.html index 9a93ad22f..678330bc2 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.html +++ b/src/app/form/form-view/profile-form/profile-form.component.html @@ -3,15 +3,21 @@ <app-information-step [step]="0" (goNext)="setValidationsForm()"></app-information-step> </ng-container> <ng-container *ngIf="currentStep === profileFormStepEnum.profileEmployerSelection"> - <p>Employer</p> + <app-profile-employer-selection + [profileForm]="profileForm" + (validateForm)="setValidationsForm()" + ></app-profile-employer-selection> </ng-container> <ng-container *ngIf="currentStep === profileFormStepEnum.profileJobSelection"> - <p>Job</p> + <app-profile-job-selection + [profileForm]="profileForm" + (validateForm)="setValidationsForm()" + ></app-profile-job-selection> </ng-container> <ng-container *ngIf="currentStep === profileFormStepEnum.profileStructureChoice"> <app-profile-structure-choice></app-profile-structure-choice> </ng-container> <ng-container *ngIf="currentStep === profileFormStepEnum.profileMailSentInfo"> - <p>Mail</p> + <app-information-step [step]="2" (goNext)="setValidationsForm()"></app-information-step> </ng-container> </div> diff --git a/src/app/form/form-view/profile-form/profile-form.component.ts b/src/app/form/form-view/profile-form/profile-form.component.ts index a7af5264c..f1633c14f 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.ts +++ b/src/app/form/form-view/profile-form/profile-form.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { profileFormStep } from './profileFormStep.enum'; @@ -7,10 +7,10 @@ import { profileFormStep } from './profileFormStep.enum'; templateUrl: './profile-form.component.html', styleUrls: ['./profile-form.component.scss'], }) -export class ProfileFormComponent implements OnInit { - @Input() nbSteps: number; - @Input() currentStep: profileFormStep = profileFormStep.profileBeginningInfo; +export class ProfileFormComponent { @Input() profileForm: FormGroup; + @Input() nbSteps: number; + @Input() currentStep: profileFormStep; @Output() pageValid = new EventEmitter<any>(); @Output() goNext = new EventEmitter<any>(); @@ -18,18 +18,26 @@ export class ProfileFormComponent implements OnInit { public profileFormStepEnum = profileFormStep; public pagesValidation = []; - constructor() {} - - ngOnInit(): void {} - public setValidationsForm(): void { + console.log('validation ?'); this.pagesValidation[profileFormStep.profileBeginningInfo] = { valid: true, }; + this.pagesValidation[profileFormStep.profileEmployerSelection] = { + valid: this.profileForm.get('employer').valid, + }; + this.pagesValidation[profileFormStep.profileJobSelection] = { + valid: this.profileForm.get('job').valid, + }; + this.pagesValidation[profileFormStep.profileStructureChoice] = { + valid: false, + }; + this.pagesValidation[profileFormStep.profileMailSentInfo] = { + valid: true, + }; - if (this.currentStep === profileFormStep.profileBeginningInfo) { - this.goNext.emit(); - } + this.updatePageValid(); + console.log(this.profileForm); } /** @@ -41,7 +49,13 @@ export class ProfileFormComponent implements OnInit { return this.pagesValidation[index].valid; } this.isPageValid = this.pagesValidation[this.currentStep].valid; - if (this.isPageValid) this.pageValid.emit(); + if (this.isPageValid) { + if (this.currentStep === profileFormStep.profileBeginningInfo) { + this.pageValid.emit(true); + } else { + this.pageValid.emit(); + } + } return this.isPageValid; } } diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html index 9b37bba23..7faaee184 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html @@ -1 +1,23 @@ -<p>profile-job-selection works!</p> +<form [formGroup]="profileForm"> + <div class="title"> + <h2>Quelle est votre fonction ?</h2> + <p>Cette information sera visible sur votre profil public</p> + </div> + <div fxLayout="column" fxLayoutGap="32px"> + <div class="button-grid"> + <span *ngFor="let job of jobs"> + <app-button + [ngClass]="{ selectedChoice: true }" + [extraClass]="isSelectedJob(job) ? 'selected' : ''" + [style]="buttonTypeEnum.Tertiary" + [text]="job.name" + (action)="selectedResult(job)" + ></app-button> + </span> + </div> + <div *ngIf="isUnexistingJob()" fxLayout="column" fxLayoutAlign="space-between" class="form-group search"> + <label for="employer">Quelle fonction occupez-vous ?</label> + <input type="text" (input)="newJob($event.target.value)" class="form-input" autocomplete="off" /> + </div> + </div> +</form> diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss index e69de29bb..76b255d5f 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss @@ -0,0 +1,8 @@ +@import '../../../../../assets/scss/color'; +@import '../../../../../assets/scss/typography'; +.button-grid { + display: inline-flex; + flex-wrap: wrap; + gap: 8px; + width: 50%; +} diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts index b8f7665d9..be23bd73a 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts @@ -1,15 +1,55 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { Job } from '../../../../models/job.model'; +import { ProfileService } from '../../../../profile/services/profile.service'; +import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; @Component({ selector: 'app-profile-job-selection', templateUrl: './profile-job-selection.component.html', - styleUrls: ['./profile-job-selection.component.scss'] + styleUrls: ['./profile-job-selection.component.scss'], }) export class ProfileJobSelectionComponent implements OnInit { + @Input() profileForm: FormGroup; + @Output() validateForm = new EventEmitter<Job>(); + public jobs: Job[]; + public selectedJob: Job; + public buttonTypeEnum = ButtonType; - constructor() { } + constructor(private profileService: ProfileService) {} ngOnInit(): void { + this.getJobs(); } + public selectedResult(job: Job): void { + this.selectedJob = job; + if (!this.isUnexistingJob()) { + this.validateForm.emit(); + } + } + + public isSelectedJob(job: Job): boolean { + if (this.selectedJob && this.selectedJob.name === job.name) return true; + return false; + } + + public isUnexistingJob(): boolean { + if (this.selectedJob && this.selectedJob.name === 'Autre') return true; + return false; + } + + public newJob(event: any): any { + this.profileForm.get('job').patchValue({ + name: event, + validated: false, + }); + this.validateForm.emit(); + } + + private getJobs() { + this.profileService.getJobs().subscribe((jobs) => { + this.jobs = [...jobs, new Job({ name: 'Autre' })]; + }); + } } diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html index 2713d8413..b540c0e4f 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -48,40 +48,10 @@ </div> </div> </div> - - <div class="structure-list"> - <div *ngFor="let structure of structures" (click)="selectedResult(structure)" class="filet"> - <div - fxLayout="column" - fxLayoutAlign="space-around" - class="form-list" - [class]="structure.selected ? 'item-selected' : ''" - > - <div fxLayout="row" fxLayoutAlign="space-between"> - <div class="item-frame"> - <div class="name">{{ structure.structureName }}</div> - <div class="commune">{{ structure.address.commune }}</div> - </div> - <app-svg-icon - class="form-icon" - *ngIf="structure.selected" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - </div> - </div> - </div> - <div class="item-frame"> - <div class="create-text"> - Cette structure n’existe pas encore sur Res’in. - <strong>Souhaitez-vous la référencer ?</strong> - </div> - <app-button - (action)="addStructure()" - [text]="'Créer une structure'" - [style]="buttonTypeEnum.Primary" - ></app-button> + <div class="item-frame"> + <div class="create-text"> + Cette structure n’existe pas encore sur Res’in. + <span class="question">Souhaitez-vous la référencer ?</span> </div> <app-button (action)="addStructure()" diff --git a/src/app/models/employer.model.ts b/src/app/models/employer.model.ts new file mode 100644 index 000000000..4b24d4403 --- /dev/null +++ b/src/app/models/employer.model.ts @@ -0,0 +1,9 @@ +export class Employer { + _id: string; + name: string; + validated: boolean = false; + + constructor(obj?: any) { + Object.assign(this, obj); + } +} diff --git a/src/app/models/job.model.ts b/src/app/models/job.model.ts new file mode 100644 index 000000000..e38c43512 --- /dev/null +++ b/src/app/models/job.model.ts @@ -0,0 +1,10 @@ +export class Job { + _id?: string; + name: string; + hasPersonalOffer: boolean = true; + validated: boolean = false; + + constructor(obj?: any) { + Object.assign(this, obj); + } +} diff --git a/src/app/profile/services/profile.service.ts b/src/app/profile/services/profile.service.ts index 74158fb4b..2d1b7a4e7 100644 --- a/src/app/profile/services/profile.service.ts +++ b/src/app/profile/services/profile.service.ts @@ -7,6 +7,8 @@ import { UserRole } from '../../shared/enum/userRole.enum'; import { AuthService } from '../../services/auth.service'; import { Structure } from '../../models/structure.model'; import { map } from 'rxjs/operators'; +import { Employer } from '../../models/employer.model'; +import { Job } from '../../models/job.model'; @Injectable({ providedIn: 'root', @@ -87,4 +89,12 @@ export class ProfileService { public getAllDataConsentPendingStructures(): Observable<Structure[]> { return this.http.get<Structure[]>(`${this.baseUrl}/dataConsentValidation`); } + + public getEmployers(searchString: string): Observable<Employer[]> { + return this.http.get<Employer[]>(`api/employer?search=${searchString}`); + } + + public getJobs(): Observable<Job[]> { + return this.http.get<Job[]>(`api/jobs`); + } } diff --git a/src/app/shared/components/button/button.component.html b/src/app/shared/components/button/button.component.html index 96b192708..9a97b0273 100644 --- a/src/app/shared/components/button/button.component.html +++ b/src/app/shared/components/button/button.component.html @@ -132,7 +132,16 @@ [ngClass]="{ disabled: disabled }" [ngClass]="extraClass" > - <div>{{ text }}</div> + <div fxLayout="row center" fxLayoutAlign="space-around center" fxLayoutGap="13px"> + <app-svg-icon + *ngIf="extraClass" + [type]="'ico'" + [icon]="'validate'" + [iconClass]="'icon-28'" + [iconColor]="'currentColor'" + ></app-svg-icon> + {{ text }} + </div> </button> </ng-container> diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index d8a66de19..92614db78 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -88,6 +88,13 @@ button { padding: 0px 16px; border-radius: 20px; @include btn-regular; + &.selected { + background-color: $green-1 !important; + color: white !important; + &:hover { + background-color: $green-1 !important; + } + } } &.icon-only { div:first-child { -- GitLab From 3b52371483f7e543f7d61be5e8159c01d396c577 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Wed, 23 Mar 2022 08:37:56 +0100 Subject: [PATCH 087/199] feat(profil-form): add structure choice + refactor of footer-form and form-view --- .../footer-form/footer-form.component.html | 15 ++++++- .../form/footer-form/footer-form.component.ts | 43 +++++++++++++------ .../form/form-view/form-view.component.html | 5 ++- .../form/form-view/form-view.component.scss | 6 +-- src/app/form/form-view/form-view.component.ts | 19 +++++--- .../information-step.component.html | 12 ++++++ .../information-step.component.scss | 21 +++++++++ .../information-step.component.ts | 1 + .../profile-form/profile-form.component.html | 13 ++++-- .../profile-form/profile-form.component.scss | 3 ++ .../profile-form/profile-form.component.ts | 10 ++--- .../profile-job-selection.component.ts | 11 ++++- .../profile-structure-choice.component.html | 4 +- .../profile-structure-choice.component.ts | 19 +++++--- 14 files changed, 139 insertions(+), 43 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.html b/src/app/form/footer-form/footer-form.component.html index 9d1cf6095..e46a66502 100644 --- a/src/app/form/footer-form/footer-form.component.html +++ b/src/app/form/footer-form/footer-form.component.html @@ -6,7 +6,7 @@ fxLayoutAlign="center center" > <app-button - *ngIf="displayPreviousButton && !isLastFormStep" + *ngIf="displayPreviousButton && !isLastFormStep && !isNextFormTransition" (action)="goToPreviousPage()" [text]="btnName[0]" [iconType]="'form'" @@ -17,7 +17,18 @@ <app-button *ngIf="isLastFormStep" (action)="goToHome()" [text]="'Ok'" [style]="buttonTypeEnum.Primary"></app-button> <app-button - *ngIf="!isLastFormStep" + *ngIf="!isLastFormStep && isNextFormTransition" + (action)="nextPage()" + [text]="btnName[1]" + [iconBtn]="'chevronRight'" + [iconType]="'form'" + [iconPos]="'right'" + [style]="buttonTypeEnum.Primary" + > + </app-button> + + <app-button + *ngIf="!isLastFormStep && !isNextFormTransition" (action)="nextPage()" [disabled]="!isValid" [text]="btnName[1]" diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 53f88b083..c0b1379c7 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -32,6 +32,7 @@ export class FooterFormComponent implements OnChanges { @Output() goPrev = new EventEmitter<any>(); @Output() endPage = new EventEmitter<any>(); public isLastFormStep: boolean = false; + public isNextFormTransition: boolean = false; public buttonTypeEnum = ButtonType; constructor(private authService: AuthService, public utils: Utils, private router: Router) {} @@ -39,12 +40,17 @@ export class FooterFormComponent implements OnChanges { this.goNext.emit(); } ngOnChanges(changes: SimpleChanges): void { - console.log(changes.currentStep); - console.log(this.isValid); - //TODO: - // if (changes.currentStep && this.currentStep === accountFormStep.confirmEmailSentInfo) { - // this.isLastFormStep = true; - // } + if ( + changes.currentStep && + this.currentStep === accountFormStep.confirmEmailSentInfo && + this.currentForm === formType.account + ) { + this.isLastFormStep = true; + } + + if (changes.currentStep && this.isProfileLastpage()) { + this.isNextFormTransition = true; + } } public goToPreviousPage(): void { @@ -62,16 +68,25 @@ export class FooterFormComponent implements OnChanges { this.router.navigateByUrl('news'); } public nextPage(): void { - if (this.currentForm === formType.account) { - if (this.currentStep === accountFormStep.accountCredentials) { - const user = new User(this.form.value); - // Create user with structure - user.structuresLink = this.linkedStructureId; - this.authService.register(user).subscribe(() => {}); - document.getElementsByClassName('page')[0].scrollTo(0, 0); - } + if (this.currentForm === formType.account && this.currentStep === accountFormStep.accountCredentials) { + const user = new User(this.form.value); + // Create user with structure + user.structuresLink = this.linkedStructureId; + this.authService.register(user).subscribe(() => {}); + document.getElementsByClassName('page')[0].scrollTo(0, 0); + } + if (this.isProfileLastpage()) { + console.log('Create job'); + console.log('Create employer'); + console.log('join structure'); + console.log('update user: structure linked, job, employer'); + this.router.navigateByUrl('form/personaloffer'); } this.goToNextPage(); } + + private isProfileLastpage(): boolean { + return this.currentForm === formType.profile && this.currentStep === profileFormStep.profileMailSentInfo; + } } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index de190da2f..8b18cdbc6 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -12,6 +12,7 @@ [accountForm]="accountForm" [hoursForm]="hoursForm" [currentStep]="currentPage" + (goNext)="nextPage()" (pageValid)="validatePage($event)" ></app-account-form> </ng-container> @@ -44,8 +45,8 @@ <app-footer-form *ngIf="displayFooterForm()" [currentStep]="currentPage" - [currentForm]="formType.account" - [form]="accountForm" + [currentForm]="currentFormType" + [form]="currentForm" [btnName]="['Précédent', 'Suivant']" [isValid]="isPageValid" (goNext)="nextPage()" diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index d32e667b4..54053df1c 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -15,9 +15,9 @@ border-radius: 8px; border: 1px solid $grey-6; padding: 32px 24px 32px 48px; - * { - max-width: 600px; - } + // * { + // max-width: 600px; + // } } ::ng-deep.title { diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 118e024e3..beaf17ddf 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -25,6 +25,8 @@ export class FormViewComponent implements OnInit { public routeParam: string; public formType = formType; public currentPage: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep; + public currentFormType: formType; + public currentForm: FormGroup; // Account Form public accountForm: FormGroup; @@ -123,23 +125,31 @@ export class FormViewComponent implements OnInit { if (formType[this.routeParam] === formType.account) { this.nbSteps = 3; this.currentPage = accountFormStep.accountInfo; + this.currentFormType = formType.account; this.createAccountForm(); + this.currentForm = this.accountForm; } if (formType[this.routeParam] === formType.profile) { this.nbSteps = 5; this.currentPage = profileFormStep.profileBeginningInfo; + this.currentFormType = formType.profile; this.createProfileForm(); + this.currentForm = this.profileForm; } if (formType[this.routeParam] === formType.personaloffer) { this.nbSteps = 3; this.currentPage = personalOfferFormStep.personalOfferAccompaniment; + this.currentFormType = formType.personaloffer; this.createPersonalOfferForm(); + this.currentForm = this.personalOfferForm; } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; this.currentPage = structureFormStep.structureLabels; + this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); + this.currentForm = this.structureForm; // if (this.isEditMode) { // this.editForm = this.createStructureForm(structure); // } @@ -291,13 +301,10 @@ export class FormViewComponent implements OnInit { isRequired ? Validators.required : Validators.nullValidator ); } - public validatePage(skip?: boolean): void { - if (skip) { - this.nextPage(); - } else { - this.isPageValid = true; - } + public validatePage(value: boolean = true): void { + this.isPageValid = value; } + public nextPage(): void { this.isPageValid = false; if (this.currentPage < this.nbSteps) { diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 6783b5b9a..bb02d7db2 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -21,3 +21,15 @@ <app-navigation-buttons (goNext)="nextPage()"></app-navigation-buttons> </div> </ng-container> +<ng-container *ngIf="step === profileFormStepEnum.profileMailSentInfo"> + <div class="information-step-container structure-display"> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#emailVerification'"></use> + </svg> + <p> + Un message a été envoyé aux membres<br /> + de la structure :<br /> + </p> + <span>{{ structureName }}</span> + </div> +</ng-container> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.scss b/src/app/form/form-view/global-components/information-step/information-step.component.scss index 46140e689..32e0fcf7c 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.scss +++ b/src/app/form/form-view/global-components/information-step/information-step.component.scss @@ -18,6 +18,8 @@ } &.profile-skip { height: unset; + max-width: unset; + p { margin: 0; } @@ -27,4 +29,23 @@ max-width: 180px; } } + &.structure-display { + height: unset; + max-width: unset; + + p { + @include lato-regular-18; + margin: 0; + } + span { + @include lato-bold-24; + margin-top: 16px; + text-align: center; + } + svg { + width: 100%; + height: 180px; + max-width: 180px; + } + } } diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.ts b/src/app/form/form-view/global-components/information-step/information-step.component.ts index 6cda1e23d..92c2559bf 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.ts +++ b/src/app/form/form-view/global-components/information-step/information-step.component.ts @@ -9,6 +9,7 @@ import { profileFormStep } from '../../profile-form/profileFormStep.enum'; }) export class InformationStepComponent { @Input() step: number; + @Input() structureName?: string; @Output() goNext = new EventEmitter<any>(); public accountFormStepEnum = accountFormStep; diff --git a/src/app/form/form-view/profile-form/profile-form.component.html b/src/app/form/form-view/profile-form/profile-form.component.html index 678330bc2..3c1329baf 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.html +++ b/src/app/form/form-view/profile-form/profile-form.component.html @@ -1,4 +1,4 @@ -<div> +<div class="no-max-width"> <ng-container *ngIf="currentStep === profileFormStepEnum.profileBeginningInfo"> <app-information-step [step]="0" (goNext)="setValidationsForm()"></app-information-step> </ng-container> @@ -15,9 +15,16 @@ ></app-profile-job-selection> </ng-container> <ng-container *ngIf="currentStep === profileFormStepEnum.profileStructureChoice"> - <app-profile-structure-choice></app-profile-structure-choice> + <app-profile-structure-choice + [profileForm]="profileForm" + (validateForm)="setValidationsForm()" + ></app-profile-structure-choice> </ng-container> <ng-container *ngIf="currentStep === profileFormStepEnum.profileMailSentInfo"> - <app-information-step [step]="2" (goNext)="setValidationsForm()"></app-information-step> + <app-information-step + [step]="4" + [structureName]="profileForm.get('structure').value.structureName" + (goNext)="setValidationsForm()" + ></app-information-step> </ng-container> </div> diff --git a/src/app/form/form-view/profile-form/profile-form.component.scss b/src/app/form/form-view/profile-form/profile-form.component.scss index e69de29bb..e5aaa88a0 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.scss +++ b/src/app/form/form-view/profile-form/profile-form.component.scss @@ -0,0 +1,3 @@ +.no-max-width { + max-width: none; +} diff --git a/src/app/form/form-view/profile-form/profile-form.component.ts b/src/app/form/form-view/profile-form/profile-form.component.ts index f1633c14f..836cab1eb 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.ts +++ b/src/app/form/form-view/profile-form/profile-form.component.ts @@ -19,7 +19,6 @@ export class ProfileFormComponent { public pagesValidation = []; public setValidationsForm(): void { - console.log('validation ?'); this.pagesValidation[profileFormStep.profileBeginningInfo] = { valid: true, }; @@ -27,17 +26,16 @@ export class ProfileFormComponent { valid: this.profileForm.get('employer').valid, }; this.pagesValidation[profileFormStep.profileJobSelection] = { - valid: this.profileForm.get('job').valid, + valid: this.profileForm.get('job').get('name').valid, }; this.pagesValidation[profileFormStep.profileStructureChoice] = { - valid: false, + valid: this.profileForm.get('structure').valid, }; this.pagesValidation[profileFormStep.profileMailSentInfo] = { valid: true, }; this.updatePageValid(); - console.log(this.profileForm); } /** @@ -51,10 +49,12 @@ export class ProfileFormComponent { this.isPageValid = this.pagesValidation[this.currentStep].valid; if (this.isPageValid) { if (this.currentStep === profileFormStep.profileBeginningInfo) { - this.pageValid.emit(true); + this.goNext.emit(); } else { this.pageValid.emit(); } + } else { + this.pageValid.emit(false); } return this.isPageValid; } diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts index be23bd73a..dafce1a4a 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts @@ -25,8 +25,17 @@ export class ProfileJobSelectionComponent implements OnInit { public selectedResult(job: Job): void { this.selectedJob = job; if (!this.isUnexistingJob()) { - this.validateForm.emit(); + this.profileForm.get('job').setValue({ + name: job.name, + validated: false, + }); + } else { + this.profileForm.get('job').setValue({ + name: '', + validated: false, + }); } + this.validateForm.emit(); } public isSelectedJob(job: Job): boolean { diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html index b540c0e4f..58df7ce7f 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -31,7 +31,7 @@ fxLayout="column" fxLayoutAlign="space-around" class="form-list" - [class]="structure.selected ? 'item-selected' : ''" + [class]="isSelectedStructure(structure) ? 'item-selected' : ''" > <div fxLayout="row" fxLayoutAlign="space-between"> <div class="item-frame"> @@ -40,7 +40,7 @@ </div> <app-svg-icon class="form-icon" - *ngIf="structure.selected" + *ngIf="isSelectedStructure(structure)" [iconClass]="'validation'" [type]="'form'" [icon]="'validate'" diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts index 1f9454c6b..521997ae6 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts @@ -1,4 +1,5 @@ -import { Component, EventEmitter, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; import { Structure } from '../../../../models/structure.model'; import { StructureService } from '../../../../services/structure.service'; import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; @@ -10,6 +11,8 @@ import { Filter } from '../../../../structure-list/models/filter.model'; styleUrls: ['./profile-structure-choice.component.scss'], }) export class ProfileStructureChoiceComponent implements OnInit { + @Input() profileForm: FormGroup; + @Output() validateForm = new EventEmitter<Structure>(); @Output() selectedStructure: EventEmitter<Structure> = new EventEmitter<Structure>(); @Output() createStructure = new EventEmitter<any>(); public searchString: string = ''; @@ -34,12 +37,18 @@ export class ProfileStructureChoiceComponent implements OnInit { this.getStructures(filters); } - public selectedResult(hit: any): void { + public selectedResult(structure: Structure): void { if (this.selectedStructureItem) this.selectedStructureItem['selected'] = false; - hit.selected = true; - this.selectedStructureItem = hit; + this.selectedStructureItem = structure; + this.profileForm.get('structure').patchValue(structure); // Emit choosen value - this.selectedStructure.emit(this.selectedStructureItem); + // this.selectedStructure.emit(this.selectedStructureItem); + this.validateForm.emit(); + } + + public isSelectedStructure(structure: Structure): boolean { + if (this.selectedStructureItem && this.selectedStructureItem._id === structure._id) return true; + return false; } private getStructures(filters: Filter[]) { -- GitLab From 297a6b1ca03765a3864c5427a45d5e2724fc7943 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 09:30:57 +0100 Subject: [PATCH 088/199] hours form --- .../form/form-view/form-view.component.html | 2 ++ .../form/form-view/form-view.component.scss | 12 +++++++ src/app/form/form-view/form-view.component.ts | 4 +++ .../structure-form.component.html | 8 +++++ .../structure-form.component.ts | 20 +++++++++--- .../structure-hours.component.html | 31 ++++++++++++++++++- .../structure-hours.component.scss | 3 ++ .../structure-hours.component.ts | 20 +++++++----- .../structure-form/structureFormStep.enum.ts | 2 +- 9 files changed, 89 insertions(+), 13 deletions(-) diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 0664b14d0..f113063d7 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -28,8 +28,10 @@ <app-structure-form [nbSteps]="nbSteps" [structureForm]="structureForm" + [hoursForm]="hoursForm" [currentStep]="currentPage" (pageValid)="validatePage($event)" + (updateHoursForm)="updateHours($event)" ></app-structure-form> </ng-container> <ng-container *ngIf="formType[routeParam] === formType.personnalOffer"> PersonnalOffer </ng-container> diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index 1fb840e46..b4d15678b 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -41,6 +41,18 @@ } } +::ng-deep.textareaBlock { + @media #{$tablet} { + max-width: 90%; + } + p { + text-align: right; + @include lato-regular-14; + color: $grey-3; + font-style: italic; + } +} + @media #{$tablet} { .page { height: calc( diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 14971e76e..6c42d597f 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -153,6 +153,10 @@ export class FormViewComponent implements OnInit { } } + public updateHours(form: FormGroup): void { + this.hoursForm = form; + } + private createDay(day: Day): FormGroup { return new FormGroup({ open: new FormControl(day.open, Validators.required), diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 8406f103e..92b87c0fd 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -41,3 +41,11 @@ (checkChange)="onCheckChange($event)" ></app-structure-access-modality> </div> +<div *ngIf="currentPage == structureFormStep.structureHours"> + <app-structure-hours + [structureForm]="structureForm" + [hoursForm]="hoursForm" + (hours)="updateHours($event)" + (hoursError)="setHoursError()" + ></app-structure-hours> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index bb7ae05c6..a5566863d 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -16,6 +16,7 @@ export class StructureFormComponent implements OnInit { @Input() structureForm: FormGroup; @Input() hoursForm: FormGroup; @Output() pageValid = new EventEmitter<any>(); + @Output() updateHoursForm = new EventEmitter<any>(); public structureFormStep = structureFormStep; // Page and progress var @@ -69,6 +70,17 @@ export class StructureFormComponent implements OnInit { this.setValidationsForm(); } + public updateHours(form: FormGroup): void { + this.updateHoursForm.emit(form); + // TODO : validation not working, this.hoursForm.valid never true + this.setValidationsForm(); + } + + public setHoursError(): void { + this.hoursForm.setErrors({ formError: true }); + this.setValidationsForm(); + } + public setValidationsForm(): void { if (this.isClaimMode) { // this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; @@ -108,11 +120,11 @@ export class StructureFormComponent implements OnInit { valid: this.structureForm.get('accessModality').valid, name: "Modalités d'accueil", }; + this.pagesValidation[structureFormStep.structureHours] = { + valid: this.hoursForm.valid && this.structureForm.get('exceptionalClosures').valid, + name: "Horaires d'ouverture", + }; - // this.pagesValidation[structureFormStep.structureHours] = { - // valid: this.hoursForm.valid && this.structureForm.get('exceptionalClosures').valid, - // name: "Horaires d'ouverture", - // }; this.pagesValidation[structureFormStep.structurePmr] = { valid: this.structureForm.get('pmrAccess').valid, name: 'Accessibilité pour les personnes à mobilité réduite', diff --git a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.html b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.html index 8281e0d23..7cadbf5f9 100644 --- a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.html +++ b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.html @@ -1 +1,30 @@ -<p>structure-hours works!</p> +<form [formGroup]="structureForm"> + <div class="title"> + <h3>Quels sont les horaires d'ouverture de la structure ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <app-hour-picker + *ngIf="hoursForm" + (updateForm)="updateHours($event)" + (updateFormError)="setHoursError()" + [structureInput]="hoursForm" + ></app-hour-picker> + + <div class="title secondTitle"> + <h3>Avez-vous des précisions à apporter sur les horaires ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <div class="textareaBlock" fxLayout="column"> + <textarea + rows="8" + placeholder="Exemple : nous ne sommes ouvert que le 1er mercredi du mois." + maxlength="500" + formControlName="exceptionalClosures" + ></textarea> + <p> + {{ + structureForm.get('exceptionalClosures').value ? structureForm.get('exceptionalClosures').value.length : 0 + }} / 500 + </p> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.scss b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.scss index e69de29bb..f28ea0cf8 100644 --- a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.scss +++ b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.scss @@ -0,0 +1,3 @@ +.secondTitle { + margin-top: 28px; +} diff --git a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts index fa10105b1..998770e83 100644 --- a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts +++ b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts @@ -1,15 +1,21 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-hours', templateUrl: './structure-hours.component.html', - styleUrls: ['./structure-hours.component.scss'] + styleUrls: ['./structure-hours.component.scss'], }) -export class StructureHoursComponent implements OnInit { +export class StructureHoursComponent { + @Input() structureForm: FormGroup; + @Input() hoursForm: FormGroup; + @Output() hours = new EventEmitter<any>(); + @Output() hoursError = new EventEmitter<any>(); - constructor() { } - - ngOnInit(): void { + public updateHours(value) { + this.hours.emit(value); + } + public setHoursError() { + this.hoursError.emit(); } - } diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index 9594f7455..b9cab06cd 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -6,8 +6,8 @@ export enum structureFormStep { structureContactCompletion, structureType, structureAccessModality, - structureCreationInfo, structureHours, + structureCreationInfo, structurePmr, structureWebAndSocialNetwork, structurePublicTarget, -- GitLab From 0e006679fdd5747aa39d198d46bf3d89c85c1d33 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 09:31:35 +0100 Subject: [PATCH 089/199] feat: create first personal offer forms --- .../form/form-view/form-view.component.html | 1 + .../form/form-view/form-view.component.scss | 1 + src/app/form/form-view/form-view.component.ts | 22 ++++++---- ...ersonal-offer-accompaniment.component.html | 30 ++++++-------- ...ersonal-offer-accompaniment.component.scss | 1 + .../personal-offer-accompaniment.component.ts | 40 +++++++++++++++++-- .../personal-offer-form.component.html | 13 ++++-- .../personal-offer-form.component.ts | 21 +++++++++- ...-offer-other-structure-choice.component.ts | 7 +++- ...ersonal-offer-training-type.component.html | 14 ++++++- .../personal-offer-training-type.component.ts | 7 +++- .../profile-job-selection.component.html | 2 +- .../profile-job-selection.component.scss | 9 +---- src/app/models/personalOffer.model.ts | 9 +++++ src/app/models/structure.model.ts | 4 +- src/assets/scss/_buttons.scss | 7 ++++ 16 files changed, 143 insertions(+), 45 deletions(-) create mode 100644 src/app/models/personalOffer.model.ts diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index de190da2f..31212522d 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -38,6 +38,7 @@ [nbSteps]="nbSteps" [personalOfferForm]="personalOfferForm" [currentStep]="currentPage" + (pageValid)="validatePage($event)" ></app-personal-offer-form> </ng-container> </div> diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index d32e667b4..0ae86a85b 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -25,6 +25,7 @@ .overtitle { @include lato-regular-18; color: $grey-3; + margin-bottom: 3px; } h3 { @include lato-bold-24; diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 118e024e3..8b169e422 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { FormGroup, FormControl, Validators, FormArray } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; import { Day } from '../../models/day.model'; +import { PersonalOffer } from '../../models/personalOffer.model'; import { Structure } from '../../models/structure.model'; import { StructureWithOwners } from '../../models/structureWithOwners.model'; import { Time } from '../../models/time.model'; @@ -130,11 +131,6 @@ export class FormViewComponent implements OnInit { this.currentPage = profileFormStep.profileBeginningInfo; this.createProfileForm(); } - if (formType[this.routeParam] === formType.personaloffer) { - this.nbSteps = 3; - this.currentPage = personalOfferFormStep.personalOfferAccompaniment; - this.createPersonalOfferForm(); - } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; this.currentPage = structureFormStep.structureLabels; @@ -155,6 +151,12 @@ export class FormViewComponent implements OnInit { sunday: this.createDay(this.structure.hours.sunday), }); } + if (formType[this.routeParam] === formType.personaloffer) { + this.nbSteps = 3; + this.currentPage = personalOfferFormStep.personalOfferAccompaniment; + const newPersonalOffer: PersonalOffer = new PersonalOffer(); + this.createPersonalOfferForm(newPersonalOffer); + } } private createDay(day: Day): FormGroup { @@ -279,9 +281,15 @@ export class FormViewComponent implements OnInit { }); } - private createPersonalOfferForm(): void { + private createPersonalOfferForm(personalOffer: PersonalOffer): void { this.personalOfferForm = new FormGroup({ - structure: new FormControl('', [Validators.required]), + publicsAccompaniment: new FormControl(personalOffer.publicsAccompaniment), + proceduresAccompaniment: new FormControl(personalOffer.proceduresAccompaniment), + baseSkills: new FormControl(personalOffer.baseSkills), + accessRight: new FormControl(personalOffer.accessRight), + digitalCultureSecurity: new FormControl(personalOffer.digitalCultureSecurity), + socialAndProfessional: new FormControl(personalOffer.socialAndProfessional), + parentingHelp: new FormControl(personalOffer.parentingHelp), }); } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html index fc0eaa7dc..f1315ea66 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html @@ -1,25 +1,21 @@ <form [formGroup]="personalOfferForm" *ngIf="personalOfferForm"> <div class="title"> - <p class="overtitle">{{ personalOfferForm.value.structureName }}</p> + <p class="overtitle">{{ structure.structureName }}</p> <h3>Quelles aides au numérique proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> - <!-- <div class="form-group" fxLayout="column"> - <label for="structureName">Nom de la structure</label> - <div fxLayout="row" fxLayoutGap="13px"> - <input - type="text" - (input)="setValidationsForm()" - formControlName="structureName" - class="form-input structureName" - /> - <app-svg-icon - *ngIf="structureForm.get('structureName').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> + <div fxLayout="column" fxLayoutGap="32px"> + <div *ngIf="proceduresAccompaniment" class="btn-grid"> + <span *ngFor="let module of proceduresAccompaniment.modules"> + <app-button + [ngClass]="{ selectedChoice: true }" + [extraClass]="isSelectedModule(module) ? 'selected' : ''" + [style]="buttonTypeEnum.Tertiary" + [text]="module.text" + (action)="isSelectedModule(module) ? unselectResult(module) : selectResult(module)" + ></app-button> + </span> </div> - </div> --> + </div> </form> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.scss b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.scss index e69de29bb..335870e68 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.scss +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.scss @@ -0,0 +1 @@ +@import '../../../../../assets/scss/buttons'; diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts index 4efc6dfe4..ef9d6b71c 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts @@ -1,5 +1,10 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; +import { Structure } from '../../../../models/structure.model'; +import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; +import { Category } from '../../../../structure-list/models/category.model'; +import { Module } from '../../../../structure-list/models/module.model'; +import { SearchService } from '../../../../structure-list/services/search.service'; @Component({ selector: 'app-personal-offer-accompaniment', @@ -7,11 +12,40 @@ import { FormGroup } from '@angular/forms'; styleUrls: ['./personal-offer-accompaniment.component.scss'], }) export class PersonalOfferAccompanimentComponent implements OnInit { + @Input() structure: Structure; @Input() personalOfferForm: FormGroup; + @Output() validateForm = new EventEmitter<any>(); - constructor() {} + public buttonTypeEnum = ButtonType; + public proceduresAccompaniment: Category; + public selectedModules: Module[] = []; + + constructor(private searchService: SearchService) {} ngOnInit(): void { - console.log(this.personalOfferForm.value.structureName); + this.validateForm.emit(); + this.searchService.getCategoriesAccompaniment().subscribe((categories: Category[]) => { + this.proceduresAccompaniment = categories[0]; + const proceduresAccompaniment = this.personalOfferForm.get('proceduresAccompaniment').value; + this.selectedModules = proceduresAccompaniment.map((procedure) => + this.proceduresAccompaniment.modules.find((module) => module.text === procedure) + ); + }); + } + + public selectResult(module: Module): void { + this.selectedModules.push(module); + this.personalOfferForm.get('proceduresAccompaniment').patchValue(this.selectedModules.map((_module) => _module.id)); + } + + public unselectResult(module: Module): void { + const index = this.selectedModules.findIndex((_module) => _module.id === module.id); + this.selectedModules.splice(index); + this.personalOfferForm.get('proceduresAccompaniment').patchValue(this.selectedModules.map((_module) => _module.id)); + } + + public isSelectedModule(module: Module): boolean { + if (this.selectedModules && this.selectedModules.includes(module)) return true; + return false; } } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html index a373422b6..524035dc0 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html @@ -1,12 +1,19 @@ <div> <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferAccompaniment"> - <app-personal-offer-accompaniment [personalOfferForm]="personalOfferForm"></app-personal-offer-accompaniment> + <app-personal-offer-accompaniment + [structure]="structure" + [personalOfferForm]="personalOfferForm" + ></app-personal-offer-accompaniment> </ng-container> <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferTrainingType"> - <app-personal-offer-training-type [personalOfferForm]="personalOfferForm"></app-personal-offer-training-type> + <app-personal-offer-training-type + [structure]="structure" + [personalOfferForm]="personalOfferForm" + ></app-personal-offer-training-type> </ng-container> - <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferTrainingType"> + <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferStructureChoice"> <app-personal-offer-other-structure-choice + [structure]="structure" [personalOfferForm]="personalOfferForm" ></app-personal-offer-other-structure-choice> </ng-container> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts index 486746681..d69cb1dc5 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts @@ -1,5 +1,6 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core'; import { FormGroup } from '@angular/forms'; +import { Structure } from '../../../models/structure.model'; import { personalOfferFormStep } from './personalOfferFormStep.enum'; @Component({ @@ -11,10 +12,26 @@ export class PersonalOfferFormComponent implements OnInit { @Input() nbSteps: number; @Input() currentStep: personalOfferFormStep; @Input() personalOfferForm: FormGroup; + @Input() structure: Structure; + @Output() pageValid = new EventEmitter<any>(); public personalOfferFormStep = personalOfferFormStep; constructor() {} - ngOnInit(): void {} + ngOnInit(): void { + this.structure = new Structure({ structureName: 'Nom de la structure de Test' }); + } + + ngOnChanges(changes: SimpleChanges): void { + if (changes.currentStep) { + if ( + this.currentStep === personalOfferFormStep.personalOfferAccompaniment || + this.currentStep === personalOfferFormStep.personalOfferTrainingType || + this.currentStep === personalOfferFormStep.personalOfferStructureChoice + ) { + this.pageValid.emit(); + } + } + } } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts index eb86fa903..356719c58 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts @@ -1,4 +1,6 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { Structure } from '../../../../models/structure.model'; @Component({ selector: 'app-personal-offer-other-structure-choice', @@ -6,6 +8,9 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./personal-offer-other-structure-choice.component.scss'], }) export class PersonalOfferOtherStructureChoiceComponent implements OnInit { + @Input() structure: Structure; + @Input() personalOfferForm: FormGroup; + constructor() {} ngOnInit(): void {} diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html index c437232cc..164c8d780 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html @@ -1 +1,13 @@ -<p>personal-offer-training-type works!</p> +<form [formGroup]="personalOfferForm" *ngIf="personalOfferForm"> + <div class="title"> + <p class="overtitle">{{ structure.structureName }}</p> + <h3>Quelles formations au numérique proposez-vous ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <div class="type-picker"> + <app-structure-type-picker + [pickedChoice]="personalOfferForm.get('baseSkills').valid ? structureForm.get('structureType').value : null" + (selectedType)="setTypeStructure($event)" + ></app-structure-type-picker> + </div> +</form> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts index 40d457a95..4203b4917 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts @@ -1,4 +1,6 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { Structure } from '../../../../models/structure.model'; @Component({ selector: 'app-personal-offer-training-type', @@ -6,6 +8,9 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./personal-offer-training-type.component.scss'], }) export class PersonalOfferTrainingTypeComponent implements OnInit { + @Input() structure: Structure; + @Input() personalOfferForm: FormGroup; + constructor() {} ngOnInit(): void {} diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html index 7faaee184..a32d62d75 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html @@ -4,7 +4,7 @@ <p>Cette information sera visible sur votre profil public</p> </div> <div fxLayout="column" fxLayoutGap="32px"> - <div class="button-grid"> + <div class="btn-grid"> <span *ngFor="let job of jobs"> <app-button [ngClass]="{ selectedChoice: true }" diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss index 76b255d5f..335870e68 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.scss @@ -1,8 +1 @@ -@import '../../../../../assets/scss/color'; -@import '../../../../../assets/scss/typography'; -.button-grid { - display: inline-flex; - flex-wrap: wrap; - gap: 8px; - width: 50%; -} +@import '../../../../../assets/scss/buttons'; diff --git a/src/app/models/personalOffer.model.ts b/src/app/models/personalOffer.model.ts new file mode 100644 index 000000000..e2edde996 --- /dev/null +++ b/src/app/models/personalOffer.model.ts @@ -0,0 +1,9 @@ +export class PersonalOffer { + public publicsAccompaniment: string[] = []; + public proceduresAccompaniment: string[] = []; + public baseSkills: string[] = []; + public accessRight: string[] = []; + public digitalCultureSecurity: string[] = []; + public socialAndProfessional: string[] = []; + public parentingHelp: string[] = []; +} diff --git a/src/app/models/structure.model.ts b/src/app/models/structure.model.ts index c8ec60def..0ca192096 100644 --- a/src/app/models/structure.model.ts +++ b/src/app/models/structure.model.ts @@ -5,6 +5,8 @@ import { Address } from './address.model'; import { Day } from './day.model'; import { OpeningDay } from './openingDay.model'; import { Week } from './week.model'; +import { PersonalOffer } from './personalOffer.model'; + export class Structure { public _id: string = null; public numero: string = null; @@ -59,7 +61,7 @@ export class Structure { public accountVerified: boolean = false; - public personalOffers: string[] = []; + public personalOffers: PersonalOffer[] = []; constructor(obj?: any) { Object.assign(this, obj, { diff --git a/src/assets/scss/_buttons.scss b/src/assets/scss/_buttons.scss index 277e0c9fa..36a715294 100644 --- a/src/assets/scss/_buttons.scss +++ b/src/assets/scss/_buttons.scss @@ -90,6 +90,13 @@ } } +.btn-grid { + display: inline-flex; + flex-wrap: wrap; + gap: 8px; + width: 50%; +} + .tags-cloud { font-style: normal; justify-content: center; -- GitLab From efc79c59d616b9b2fa72bc0832e5bf8693b19596 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Wed, 23 Mar 2022 09:42:49 +0100 Subject: [PATCH 090/199] fix: default routing --- src/app/form/form-view/form-view-routing.module.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts index 521fe6750..147dbd295 100644 --- a/src/app/form/form-view/form-view-routing.module.ts +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -11,6 +11,10 @@ const routes: Routes = [ path: '', component: FormViewComponent, children: [ + { + path: '**', + redirectTo: 'profile', + }, { path: 'structure', component: StructureFormComponent, -- GitLab From 622b180446600e1c91ccc074afc2afda97d2c223 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 09:43:28 +0100 Subject: [PATCH 091/199] structure conctact completion subtitle --- .../structure-contact-completion.component.html | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html index ce6614d34..f7ecb28a9 100644 --- a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html @@ -1,6 +1,7 @@ <form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> <div class="title"> <h3>Quelle personne pourrait connaître ces informations ?</h3> + <p>Informations demandées : téléphone, email, accéssibilité PMR, type de public...</p> </div> <div class="form-group" fxLayout="column"> -- GitLab From 8f10b23f15a0b4d9a42efeb2572c602524400023 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 10:00:26 +0100 Subject: [PATCH 092/199] structure pmr --- .../form/form-view/structure-form/structure-form.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 6e0ae8982..d2a1587cb 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -133,11 +133,11 @@ export class StructureFormComponent implements OnChanges { valid: this.hoursForm.valid && this.structureForm.get('exceptionalClosures').valid, name: "Horaires d'ouverture", }; - this.pagesValidation[structureFormStep.structurePmr] = { valid: this.structureForm.get('pmrAccess').valid, name: 'Accessibilité pour les personnes à mobilité réduite', }; + this.pagesValidation[structureFormStep.structureWebAndSocialNetwork] = { valid: (this.structureForm.get('website').valid || !this.showWebsite) && -- GitLab From f43557391df35dfbd53deb59051dfe78e18258f1 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 10:02:02 +0100 Subject: [PATCH 093/199] structure pmr --- .../form/form-view/form-view.component.html | 1 + src/app/form/form-view/form-view.component.ts | 2 +- .../structure-form.component.html | 3 +++ .../structure-pmr.component.html | 20 ++++++++++++++++++- .../structure-pmr/structure-pmr.component.ts | 18 ++++++++++------- .../structure-form/structureFormStep.enum.ts | 2 +- 6 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 5c734b8dc..33ea95cd5 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -32,6 +32,7 @@ [hoursForm]="hoursForm" [currentStep]="currentPage" [structure]="structure" + (goNext)="nextPage()" (pageValid)="validatePage($event)" (updateHoursForm)="updateHours($event)" ></app-structure-form> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 68c952ee2..19d1b1acc 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -145,7 +145,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureLabels; + this.currentPage = structureFormStep.structurePmr; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 95306b5d3..9c2008b8b 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -49,6 +49,9 @@ (hoursError)="setHoursError()" ></app-structure-hours> </div> +<div *ngIf="currentStep == structureFormStep.structurePmr"> + <app-structure-pmr [structureForm]="structureForm" (radioChange)="onRadioChange($event)"></app-structure-pmr> +</div> <div *ngIf="currentStep == structureFormStep.structureEquipments"> <app-structure-equipments diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html index 96a5e9393..765300d08 100644 --- a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html +++ b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html @@ -1 +1,19 @@ -<p>structure-pmr works!</p> +<form [formGroup]="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>La structure est-elle accessible pour les personnes à mobilité réduite ?</h3> + </div> + <p class="missing-information" *ngIf="isEditMode && !structureForm.get('pmrAccess').valid"> + <app-svg-icon + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + <span>Il faut renseigner un champ</span> + </p> + <app-radio-form + [selectedOption]="structureForm.get('pmrAccess').value" + (selectedEvent)="onRadioChange('pmrAccess', $event)" + > + </app-radio-form> +</form> diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts index 0fea4fdc7..78b8940f7 100644 --- a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts +++ b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts @@ -1,15 +1,19 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-pmr', templateUrl: './structure-pmr.component.html', - styleUrls: ['./structure-pmr.component.scss'] + styleUrls: ['./structure-pmr.component.scss'], }) -export class StructurePmrComponent implements OnInit { +export class StructurePmrComponent { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + @Input() isPageValid: boolean; + @Input() nextPage: Function; + @Output() radioChange = new EventEmitter<any>(); - constructor() { } - - ngOnInit(): void { + public onRadioChange(name: string, value: boolean): void { + this.radioChange.emit({ name, value }); } - } diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index b9cab06cd..394736226 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -7,9 +7,9 @@ export enum structureFormStep { structureType, structureAccessModality, structureHours, - structureCreationInfo, structurePmr, structureWebAndSocialNetwork, + structureCreationInfo, structurePublicTarget, structurePublicAccompaniment, structureDigitalHelpingAccompaniment, -- GitLab From 91e92b0db950a34c35c76a78c453da1f085a44d5 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Wed, 23 Mar 2022 10:35:45 +0100 Subject: [PATCH 094/199] fix: routing, and max-width for infocomponent --- src/app/form/form-view/form-view-routing.module.ts | 8 ++++---- src/app/form/form-view/form-view.component.scss | 6 +++--- src/assets/scss/_buttons.scss | 1 - 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts index 147dbd295..ab1bb787b 100644 --- a/src/app/form/form-view/form-view-routing.module.ts +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -11,10 +11,6 @@ const routes: Routes = [ path: '', component: FormViewComponent, children: [ - { - path: '**', - redirectTo: 'profile', - }, { path: 'structure', component: StructureFormComponent, @@ -31,6 +27,10 @@ const routes: Routes = [ path: 'account', component: AccountFormComponent, }, + { + path: '**', + redirectTo: 'profile', + }, ], }, ]; diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index f32272bbf..37f9a9ca5 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -15,9 +15,9 @@ border-radius: 8px; border: 1px solid $grey-6; padding: 32px 24px 32px 48px; - // * { - // max-width: 600px; - // } + * { + max-width: 600px; + } } ::ng-deep.title { diff --git a/src/assets/scss/_buttons.scss b/src/assets/scss/_buttons.scss index 36a715294..1115f861a 100644 --- a/src/assets/scss/_buttons.scss +++ b/src/assets/scss/_buttons.scss @@ -94,7 +94,6 @@ display: inline-flex; flex-wrap: wrap; gap: 8px; - width: 50%; } .tags-cloud { -- GitLab From 97f321bf88e187770e9b0cda28056019ac3ee27b Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Wed, 23 Mar 2022 11:13:37 +0100 Subject: [PATCH 095/199] feat(button): add CheckButton style --- .../profile-job-selection.component.html | 2 +- .../shared/components/button/button.component.html | 13 +++++++++++++ .../shared/components/button/button.component.scss | 10 ++++++++++ src/app/shared/components/button/buttonType.enum.ts | 1 + 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html index a32d62d75..952f5d7f4 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html @@ -9,7 +9,7 @@ <app-button [ngClass]="{ selectedChoice: true }" [extraClass]="isSelectedJob(job) ? 'selected' : ''" - [style]="buttonTypeEnum.Tertiary" + [style]="buttonTypeEnum.CheckButton" [text]="job.name" (action)="selectedResult(job)" ></app-button> diff --git a/src/app/shared/components/button/button.component.html b/src/app/shared/components/button/button.component.html index 9a97b0273..3ba6ef020 100644 --- a/src/app/shared/components/button/button.component.html +++ b/src/app/shared/components/button/button.component.html @@ -131,6 +131,19 @@ [disabled]="disabled" [ngClass]="{ disabled: disabled }" [ngClass]="extraClass" + > + <div>{{ text }}</div> + </button> +</ng-container> + +<ng-container *ngIf="style === buttonTypeEnum.CheckButton"> + <button + class="btn-regular tertiary checkButton" + type="{{ type }}" + (click)="doAction()" + [disabled]="disabled" + [ngClass]="{ disabled: disabled }" + [ngClass]="extraClass" > <div fxLayout="row center" fxLayoutAlign="space-around center" fxLayoutGap="13px"> <app-svg-icon diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index 92614db78..f9d479174 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -95,7 +95,17 @@ button { background-color: $green-1 !important; } } + &.checkButton { + padding: 0px 14px; + div:first-child { + padding: 0 14px; + } + &.selected { + padding: unset; + } + } } + &.icon-only { div:first-child { width: unset; diff --git a/src/app/shared/components/button/buttonType.enum.ts b/src/app/shared/components/button/buttonType.enum.ts index bfff9b13a..4904a45f5 100644 --- a/src/app/shared/components/button/buttonType.enum.ts +++ b/src/app/shared/components/button/buttonType.enum.ts @@ -6,4 +6,5 @@ export enum ButtonType { ButtonPhone, Filter, IconOnly, + CheckButton, } -- GitLab From c846952d25d76272f4a7a99a17ef5b05a15c9d4a Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 12:47:26 +0100 Subject: [PATCH 096/199] structure website --- src/app/form/form-view/form-view.component.ts | 2 +- .../structure-form.component.html | 11 + .../structure-form.component.ts | 31 ++- ...ture-web-and-social-network.component.html | 206 +++++++++++++++++- ...ture-web-and-social-network.component.scss | 159 ++++++++++++++ ...ucture-web-and-social-network.component.ts | 25 ++- 6 files changed, 424 insertions(+), 10 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index ecb9d1892..5b7d756dc 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -139,7 +139,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structurePmr; + this.currentPage = structureFormStep.structureWebAndSocialNetwork; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 9c2008b8b..517f4b1e0 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -52,6 +52,17 @@ <div *ngIf="currentStep == structureFormStep.structurePmr"> <app-structure-pmr [structureForm]="structureForm" (radioChange)="onRadioChange($event)"></app-structure-pmr> </div> +<div *ngIf="currentStep == structureFormStep.structureWebAndSocialNetwork"> + <app-structure-web-and-social-network + [structureForm]="structureForm" + [showWebsite]="showWebsite" + [showSocialNetwork]="showSocialNetwork" + (toggleSocials)="toggleSocialNetwork()" + (toggleWebsite)="toggleWebSite()" + (validateForm)="setValidationsForm()" + > + </app-structure-web-and-social-network> +</div> <div *ngIf="currentStep == structureFormStep.structureEquipments"> <app-structure-equipments diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index d2a1587cb..c4d5f1b82 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -25,8 +25,8 @@ export class StructureFormComponent implements OnChanges { public pagesValidation = []; // Collapse var - public showWebsite: boolean; - public showSocialNetwork: boolean; + public showWebsite: boolean = false; + public showSocialNetwork: boolean = false; public showPublicsAccompaniment: boolean; public showProceduresAccompaniment: boolean; @@ -61,6 +61,9 @@ export class StructureFormComponent implements OnChanges { } // ngOnInit(): void { // this.setCategories(); + // if (this.isEditMode) { + // this.showCollapse(structure); + // } // } public setAddressStructure(address?: Address): void { @@ -90,6 +93,25 @@ export class StructureFormComponent implements OnChanges { this.setValidationsForm(); } + public toggleWebSite(): void { + this.showWebsite = !this.showWebsite; + if (!this.showWebsite) { + this.structureForm.get('website').reset(); + } + this.setValidationsForm(); + } + + public toggleSocialNetwork(): void { + this.showSocialNetwork = !this.showSocialNetwork; + if (!this.showSocialNetwork) { + this.structureForm.get('facebook').reset(); + this.structureForm.get('twitter').reset(); + this.structureForm.get('instagram').reset(); + this.structureForm.get('linkedin').reset(); + } + this.setValidationsForm(); + } + public setValidationsForm(): void { if (this.isClaimMode) { // this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; @@ -130,14 +152,14 @@ export class StructureFormComponent implements OnChanges { name: "Modalités d'accueil", }; this.pagesValidation[structureFormStep.structureHours] = { - valid: this.hoursForm.valid && this.structureForm.get('exceptionalClosures').valid, + valid: this.hoursForm.get('errors') && this.structureForm.get('exceptionalClosures').valid, name: "Horaires d'ouverture", }; this.pagesValidation[structureFormStep.structurePmr] = { valid: this.structureForm.get('pmrAccess').valid, name: 'Accessibilité pour les personnes à mobilité réduite', }; - + console.log(this.showSocialNetwork && this.showWebsite); this.pagesValidation[structureFormStep.structureWebAndSocialNetwork] = { valid: (this.structureForm.get('website').valid || !this.showWebsite) && @@ -147,6 +169,7 @@ export class StructureFormComponent implements OnChanges { !this.showSocialNetwork), name: 'Présence sur internet', }; + this.pagesValidation[structureFormStep.structurePublicTarget] = { valid: this.structureForm.get('publics').valid, name: 'Public admis', diff --git a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html index 992faee8d..9f6482896 100644 --- a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html +++ b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html @@ -1 +1,205 @@ -<p>structure-web-and-social-network works!</p> +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>Comment vous trouver la structure sur internet ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <div class="collapse" [ngClass]="{ notCollapsed: !showWebsite }"> + <div fxLayout="column"> + <div class="collapseHeader" fxLayout="row" fxLayoutAlign=" center" (click)="toggleWebSite()"> + <div class="titleCollapse"> + <p [ngClass]="{ show: showWebsite, hide: !showWebsite }" class="no-margin">J'ajoute un site web</p> + <p [ngClass]="{ show: !showWebsite, hide: showWebsite }" class="no-margin">Je retire un site web</p> + </div> + <div class="logo"> + <svg class="show" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#show'"></use> + </svg> + <svg class="hide" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#hide'"></use> + </svg> + </div> + </div> + <div *ngIf="showWebsite" class="inputSection"> + <div class="form-group website" fxLayout="column"> + <label for="website">Adresse du site web</label> + <div fxLayout="row" fxLayoutGap="7px"> + <input + type="text" + placeholder="www.resin.grandlyon.com" + (input)="setValidationsForm()" + formControlName="website" + class="form-input" + /> + <app-svg-icon + *ngIf="structureForm.get('website').valid && structureForm.get('website').value" + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'validate'" + class="validationIcon" + ></app-svg-icon> + <app-svg-icon + *ngIf="structureForm.get('website').invalid" + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + </div> + </div> + </div> + </div> + </div> + <div class="collapse" [ngClass]="{ notCollapsed: !showSocialNetwork }"> + <div fxLayout="column"> + <div class="collapseHeader" fxLayout="row" fxLayoutAlign=" center" (click)="toggleSocialNetwork()"> + <div class="titleCollapse"> + <p [ngClass]="{ show: showSocialNetwork, hide: !showSocialNetwork }" class="no-margin"> + J’ajoute les réseaux sociaux + </p> + <p [ngClass]="{ show: !showSocialNetwork, hide: showSocialNetwork }" class="no-margin"> + Je retire des réseaux sociaux + </p> + </div> + <div class="logo"> + <svg class="show" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#show'"></use> + </svg> + <svg class="hide" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#hide'"></use> + </svg> + </div> + </div> + <div *ngIf="showSocialNetwork" class="inputSection"> + <div class="form-group facebook"> + <div fxLayout="row" fxLayoutGap="7px"> + <svg class="facebook" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#facebook'"></use> + </svg> + <input + type="text" + (input)="setValidationsForm()" + placeholder="facebook.com/resin" + formControlName="facebook" + class="form-input withIcon" + /> + <app-svg-icon + *ngIf=" + structureForm.get('facebook').valid && + structureForm.get('facebook').value != null && + structureForm.get('facebook').value != '' + " + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'validate'" + class="validationIcon" + ></app-svg-icon> + <app-svg-icon + *ngIf="structureForm.get('facebook').invalid" + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + </div> + </div> + <div class="form-group twitter"> + <div fxLayout="row" fxLayoutGap="7px"> + <svg class="twitter" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#twitter'"></use> + </svg> + <input + type="text" + (input)="setValidationsForm()" + placeholder="twitter.com/resin" + formControlName="twitter" + class="form-input withIcon" + /> + <app-svg-icon + *ngIf=" + structureForm.get('twitter').valid && + structureForm.get('twitter').value != null && + structureForm.get('twitter').value != '' + " + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'validate'" + class="validationIcon" + ></app-svg-icon> + <app-svg-icon + *ngIf="structureForm.get('twitter').invalid" + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + </div> + </div> + <div class="form-group instagram"> + <div fxLayout="row" fxLayoutGap="7px"> + <svg class="instagram" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#instagram'"></use> + </svg> + <input + type="text" + (input)="setValidationsForm()" + formControlName="instagram" + placeholder="instagram.com/resin" + class="form-input withIcon" + /> + + <app-svg-icon + *ngIf=" + structureForm.get('instagram').valid && + structureForm.get('instagram').value != null && + structureForm.get('instagram').value != '' + " + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'validate'" + class="validationIcon" + ></app-svg-icon> + <app-svg-icon + *ngIf="structureForm.get('instagram').invalid" + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + </div> + </div> + <div class="form-group linkedin"> + <div fxLayout="row" fxLayoutGap="7px"> + <svg class="linkedin" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#linkedin'"></use> + </svg> + <input + type="text" + (input)="setValidationsForm()" + formControlName="linkedin" + placeholder="linkedin.com/in/resin" + class="form-input withIcon" + /> + <app-svg-icon + *ngIf=" + structureForm.get('linkedin').valid && + structureForm.get('linkedin').value != null && + structureForm.get('linkedin').value != '' + " + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'validate'" + class="validationIcon" + ></app-svg-icon> + <app-svg-icon + *ngIf="structureForm.get('linkedin').invalid" + [iconClass]="'icon-26'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + </div> + </div> + </div> + </div> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss index e69de29bb..bf18ddaa7 100644 --- a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss +++ b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss @@ -0,0 +1,159 @@ +@import '../../../../../assets/scss/typography'; +@import '../../../../../assets/scss/color'; +@import '../../../../../assets/scss/breakpoint'; + +.collapse { + border: 1px solid $grey-5; + border-radius: 4px; + margin-bottom: 13px; + max-width: 600px; + @media #{$small-phone} { + width: 95% !important; + } + @media #{$tablet} { + width: 296px; + } + &.notCollapsed { + margin-bottom: 8px; + background: $grey-8; + .logo { + .hide { + display: none; + } + .show { + display: block; + } + } + } + .form-group { + margin: 0; + color: $grey-2; + @include lato-regular-14; + &.website, + &.facebook, + &.twitter, + &.instagram, + &.linkedin { + svg { + height: 22px; + width: 22px; + padding: 6px; + } + &:focus-within { + input { + border-color: $grey-3; + fill: $primary-color; + } + } + } + app-svg-icon { + padding-top: 12px; + margin-right: 0 !important; + } + &.website { + &:focus-within { + svg { + &.website { + border-color: $grey-3; + fill: $primary-color; + } + } + } + } + &.facebook { + &:focus-within { + svg { + &.facebook { + border-color: $grey-3; + fill: $primary-color; + } + } + } + } + &.instagram { + &:focus-within { + svg { + &.instagram { + border-color: $grey-3; + fill: $primary-color; + } + } + } + } + &.twitter { + &:focus-within { + svg { + &.twitter { + border-color: $grey-3; + fill: $primary-color; + } + } + } + } + &.linkedin { + &:focus-within { + svg { + &.linkedin { + border-color: $grey-3; + fill: $primary-color; + } + } + } + } + } + .inputSection { + input { + width: 100%; + margin-top: 8px; + &.withIcon { + border-radius: 0 4px 4px 0; + border-left: 0; + } + } + padding: 0px 15px 19px 12px; + svg { + margin-top: 8px; + width: 22px; + height: 38px; + fill: $grey-3; + margin-right: 0 !important; + border: 1px solid $grey-5; + border-radius: 4px 0 0 4px; + border-right: 0; + padding-left: 16px; + background: $grey-8; + } + } + .titleCollapse { + width: 100%; + @include lato-bold-16; + color: $grey-2; + p { + color: $grey-2; + @include lato-bold-16; + } + } + .collapseHeader { + height: 65px; + padding: 0 15px 0 12px; + cursor: pointer; + } + .logo { + height: 24px; + width: 24px; + svg { + width: 100%; + height: 100%; + fill: $grey-1; + } + } + .logo, + .titleCollapse { + .hide { + display: block; + } + .show { + display: none; + } + } +} diff --git a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.ts b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.ts index f338631d6..430b62c8f 100644 --- a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.ts +++ b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.ts @@ -1,15 +1,32 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-web-and-social-network', templateUrl: './structure-web-and-social-network.component.html', - styleUrls: ['./structure-web-and-social-network.component.scss'] + styleUrls: ['./structure-web-and-social-network.component.scss'], }) export class StructureWebAndSocialNetworkComponent implements OnInit { - - constructor() { } + @Input() structureForm: FormGroup; + @Input() showSocialNetwork: boolean; + @Input() showWebsite: boolean; + @Output() toggleWebsite = new EventEmitter<any>(); + @Output() toggleSocials = new EventEmitter<any>(); + @Output() validateForm = new EventEmitter<any>(); ngOnInit(): void { + this.validateForm.emit(); + } + + public toggleSocialNetwork() { + this.toggleSocials.emit(); } + public toggleWebSite() { + this.toggleWebsite.emit(); + } + + public setValidationsForm(): void { + this.validateForm.emit(); + } } -- GitLab From f959fe1f5708fa27a2a6ddce35fa420dcd2f33a1 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Wed, 23 Mar 2022 14:29:42 +0100 Subject: [PATCH 097/199] Add end of structure form + newsletter subscription --- .../form/footer-form/footer-form.component.ts | 45 ++++++++++--- .../account-form/account-form.component.html | 7 +++ .../account-form/account-form.component.ts | 17 +++-- .../account-newsletter.component.html | 18 ++++++ .../account-newsletter.component.scss | 0 .../account-newsletter.component.spec.ts | 25 ++++++++ .../account-newsletter.component.ts | 20 ++++++ .../account-form/accountFormStep.enum.ts | 7 ++- .../form/form-view/form-view.component.html | 2 + src/app/form/form-view/form-view.component.ts | 7 ++- src/app/form/form-view/form-view.module.ts | 2 + .../information-step.component.html | 11 ++++ .../information-step.component.scss | 20 ++++++ .../information-step.component.ts | 2 + .../structure-consent.component.html | 63 ++++++++++++++++++- .../structure-consent.component.scss | 9 +++ .../structure-consent.component.ts | 18 ++++-- .../structure-covid-info.component.html | 20 +++++- .../structure-covid-info.component.scss | 6 ++ .../structure-covid-info.component.ts | 15 +++-- .../structure-description.component.html | 20 +++++- .../structure-description.component.scss | 6 ++ .../structure-description.component.ts | 15 +++-- .../structure-form.component.html | 31 ++++++++- .../structure-form.component.ts | 31 +++++---- .../structure-other-services.component.ts | 23 ++++++- src/assets/form/accesLivresInformatiques.svg | 1 + src/assets/form/sprite.svg | 27 +++----- src/assets/form/structureCreated.svg | 9 +++ 29 files changed, 406 insertions(+), 71 deletions(-) create mode 100644 src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.html create mode 100644 src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.scss create mode 100644 src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.spec.ts create mode 100644 src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.ts create mode 100644 src/assets/form/accesLivresInformatiques.svg create mode 100644 src/assets/form/structureCreated.svg diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index c0b1379c7..57312e135 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -3,7 +3,10 @@ import { FormGroup } from '@angular/forms'; import { Router } from '@angular/router'; import { first } from 'rxjs/operators'; import { User } from '../../models/user.model'; +import { ProfileService } from '../../profile/services/profile.service'; import { AuthService } from '../../services/auth.service'; +import { NewsletterService } from '../../services/newsletter.service'; +import { StructureService } from '../../services/structure.service'; import { ButtonType } from '../../shared/components/button/buttonType.enum'; import { Utils } from '../../utils/utils'; import { accountFormStep } from '../form-view/account-form/accountFormStep.enum'; @@ -27,6 +30,7 @@ export class FooterFormComponent implements OnChanges { @Input() nbPagesForm: number; @Input() form: FormGroup; @Input() linkedStructureId: Array<string> = null; + @Input() acceptNewsletter: boolean; @Input() currentStep: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep; @Output() goNext = new EventEmitter<any>(); @Output() goPrev = new EventEmitter<any>(); @@ -35,17 +39,28 @@ export class FooterFormComponent implements OnChanges { public isNextFormTransition: boolean = false; public buttonTypeEnum = ButtonType; - constructor(private authService: AuthService, public utils: Utils, private router: Router) {} + constructor( + private authService: AuthService, + public utils: Utils, + private router: Router, + private structureService: StructureService, + private profileService: ProfileService, + private newsletterService: NewsletterService + ) {} public goToNextPage(): void { this.goNext.emit(); } ngOnChanges(changes: SimpleChanges): void { - if ( - changes.currentStep && - this.currentStep === accountFormStep.confirmEmailSentInfo && - this.currentForm === formType.account - ) { - this.isLastFormStep = true; + if (changes.currentStep) { + if (this.currentStep === accountFormStep.confirmEmailSentInfo && this.currentForm === formType.account) { + this.isLastFormStep = true; + } + if ( + this.currentForm === formType.structure && + this.currentStep === structureFormStep.structureCreationFinishedInfo + ) { + this.isLastFormStep = true; + } } if (changes.currentStep && this.isProfileLastpage()) { @@ -67,12 +82,13 @@ export class FooterFormComponent implements OnChanges { public goToHome(): void { this.router.navigateByUrl('news'); } - public nextPage(): void { - if (this.currentForm === formType.account && this.currentStep === accountFormStep.accountCredentials) { + public async nextPage(): Promise<void> { + if (this.currentForm === formType.account && this.currentStep === accountFormStep.accountNewsletter) { const user = new User(this.form.value); // Create user with structure user.structuresLink = this.linkedStructureId; this.authService.register(user).subscribe(() => {}); + this.newsletterService.newsletterSubscribe(user.email).subscribe(() => {}); document.getElementsByClassName('page')[0].scrollTo(0, 0); } if (this.isProfileLastpage()) { @@ -82,7 +98,16 @@ export class FooterFormComponent implements OnChanges { console.log('update user: structure linked, job, employer'); this.router.navigateByUrl('form/personaloffer'); } - + if (this.currentForm === formType.structure) { + if (this.currentStep === structureFormStep.structureConsent) { + const user: User = await this.profileService.getProfile(); + this.structureService.createStructure(this.form.value, user).subscribe(() => {}); + } + if (this.currentStep === structureFormStep.structureCreationFinishedInfo) { + console.log('form', this.form.value); + return; + } + } this.goToNextPage(); } diff --git a/src/app/form/form-view/account-form/account-form.component.html b/src/app/form/form-view/account-form/account-form.component.html index 4be22f440..4f59cafff 100644 --- a/src/app/form/form-view/account-form/account-form.component.html +++ b/src/app/form/form-view/account-form/account-form.component.html @@ -15,6 +15,13 @@ (userExists)="verifyUserExist($event)" ></app-account-credentials> </ng-container> + <ng-container *ngIf="currentStep === accountFormStepEnum.accountNewsletter"> + <app-account-newsletter + [accountForm]="accountForm" + [profile]="profile" + (acceptNewsletter)="acceptReceiveNewsletter($event)" + ></app-account-newsletter> + </ng-container> <ng-container *ngIf="currentStep === accountFormStepEnum.confirmEmailSentInfo"> <app-information-step [step]="accountFormStepEnum.confirmEmailSentInfo"></app-information-step> </ng-container> diff --git a/src/app/form/form-view/account-form/account-form.component.ts b/src/app/form/form-view/account-form/account-form.component.ts index 24e1ffc42..872f9d1d2 100644 --- a/src/app/form/form-view/account-form/account-form.component.ts +++ b/src/app/form/form-view/account-form/account-form.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { User } from '../../../models/user.model'; @@ -11,11 +11,10 @@ import { accountFormStep } from './accountFormStep.enum'; templateUrl: './account-form.component.html', styleUrls: ['./account-form.component.scss'], }) -export class AccountFormComponent { +export class AccountFormComponent implements OnChanges { @Input() nbSteps: number; @Input() currentStep: accountFormStep; @Input() accountForm: FormGroup; - public isClaimMode = false; public isAccountMode = false; public pagesValidation = []; @@ -25,9 +24,16 @@ export class AccountFormComponent { public accountFormStepEnum = accountFormStep; public formType = formType; @Output() pageValid = new EventEmitter<any>(); + @Output() acceptNewsletter = new EventEmitter<any>(); constructor(private profileService: ProfileService) {} - + ngOnChanges(changes: SimpleChanges): void { + if (changes.currentStep) { + if (this.currentStep === accountFormStep.accountNewsletter) { + this.pageValid.emit(); + } + } + } public setValidationsForm(): void { if (this.isClaimMode) { // this.pagesValidation[PageTypeEnum.summary] = { valid: true }; @@ -100,4 +106,7 @@ export class AccountFormComponent { if (this.isPageValid) this.pageValid.emit(); return this.isPageValid; } + public acceptReceiveNewsletter(accept: boolean): void { + this.acceptNewsletter.emit(accept); + } } diff --git a/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.html b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.html new file mode 100644 index 000000000..fb08680cf --- /dev/null +++ b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.html @@ -0,0 +1,18 @@ +<div class="page"> + <form + [formGroup]="accountForm" + *ngIf="accountForm && !profile" + (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" + > + <div class="title"> + <h3>Souhaitez-vous vous abonner à la lettre d’information de Res'in ?</h3> + <p class="notRequired" *ngIf="!isEditMode">Facultatif</p> + </div> + <app-checkbox-form + [isChecked]="userAcceptNewsletter" + [text]="'J\'accepte'" + (checkEvent)="acceptReceiveNewsletter($event)" + > + </app-checkbox-form> + </form> +</div> diff --git a/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.scss b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.spec.ts b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.spec.ts new file mode 100644 index 000000000..a2da397cb --- /dev/null +++ b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AccountNewsletterComponent } from './account-newsletter.component'; + +describe('AccountNewsletterComponent', () => { + let component: AccountNewsletterComponent; + let fixture: ComponentFixture<AccountNewsletterComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AccountNewsletterComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AccountNewsletterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.ts b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.ts new file mode 100644 index 000000000..e3ed34404 --- /dev/null +++ b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.ts @@ -0,0 +1,20 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { User } from '../../../../models/user.model'; + +@Component({ + selector: 'app-account-newsletter', + templateUrl: './account-newsletter.component.html', + styleUrls: ['./account-newsletter.component.scss'], +}) +export class AccountNewsletterComponent implements OnInit { + @Input() accountForm: FormGroup; + @Input() profile: User; + @Output() acceptNewsletter = new EventEmitter<any>(); + constructor() {} + + ngOnInit(): void {} + public acceptReceiveNewsletter(accepts: boolean) { + this.acceptNewsletter.emit(accepts); + } +} diff --git a/src/app/form/form-view/account-form/accountFormStep.enum.ts b/src/app/form/form-view/account-form/accountFormStep.enum.ts index 3d2181d4c..60c140bd7 100644 --- a/src/app/form/form-view/account-form/accountFormStep.enum.ts +++ b/src/app/form/form-view/account-form/accountFormStep.enum.ts @@ -1,5 +1,6 @@ export enum accountFormStep { - accountInfo = 0, - accountCredentials = 1, - confirmEmailSentInfo = 2, + accountInfo, + accountCredentials, + accountNewsletter, + confirmEmailSentInfo, } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 8b18cdbc6..6a418514b 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -14,6 +14,7 @@ [currentStep]="currentPage" (goNext)="nextPage()" (pageValid)="validatePage($event)" + (acceptNewsletter)="acceptReceiveNewsletter($event)" ></app-account-form> </ng-container> <ng-container *ngIf="formType[routeParam] === formType.profile"> @@ -49,6 +50,7 @@ [form]="currentForm" [btnName]="['Précédent', 'Suivant']" [isValid]="isPageValid" + [acceptNewsletter]="userAcceptNewsletter" (goNext)="nextPage()" (goPrev)="prevPage()" ></app-footer-form> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index beaf17ddf..f1009e0e0 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -30,6 +30,7 @@ export class FormViewComponent implements OnInit { // Account Form public accountForm: FormGroup; + public userAcceptNewsletter: boolean; // Profile Form public profileForm: FormGroup; @@ -145,7 +146,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureLabels; + this.currentPage = structureFormStep.structureCreationFinishedInfo; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); @@ -288,7 +289,9 @@ export class FormViewComponent implements OnInit { dataShareConsentDate: new FormControl(structure.dataShareConsentDate), }); } - + public acceptReceiveNewsletter(isAccepted: boolean): void { + this.userAcceptNewsletter = isAccepted; + } private createPersonalOfferForm(): void { this.personalOfferForm = new FormGroup({ structure: new FormControl('', [Validators.required]), diff --git a/src/app/form/form-view/form-view.module.ts b/src/app/form/form-view/form-view.module.ts index a087e1b7c..06bd6554a 100644 --- a/src/app/form/form-view/form-view.module.ts +++ b/src/app/form/form-view/form-view.module.ts @@ -41,6 +41,7 @@ import { FooterFormComponent } from '../footer-form/footer-form.component'; import { StructureTypeComponent } from './structure-form/structure-type/structure-type.component'; import { PersonalOfferAccompanimentComponent } from './personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component'; import { PersonalOfferTrainingTypeComponent } from './personal-offer-form/personal-offer-training-type/personal-offer-training-type.component'; +import { AccountNewsletterComponent } from './account-form/account-newsletter/account-newsletter.component'; @NgModule({ declarations: [ @@ -84,6 +85,7 @@ import { PersonalOfferTrainingTypeComponent } from './personal-offer-form/person AccountCredentialsComponent, FooterFormComponent, StructureTypeComponent, + AccountNewsletterComponent, ], imports: [CommonModule, FormViewRoutingModule, SharedModule], }) diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index bb02d7db2..81b0bddea 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -33,3 +33,14 @@ <span>{{ structureName }}</span> </div> </ng-container> +<ng-container *ngIf="step === structureFormStepEnum.structureCreationFinishedInfo"> + <div class="structureCreated"> + <h3>La structure est désormais référencée sur Rés’in.</h3> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#structureCreated'"></use> + </svg> + <p> + Les prochaines questions concernent les services que vous dispensez en tant qu’intervenant dans cette structure. + </p> + </div> +</ng-container> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.scss b/src/app/form/form-view/global-components/information-step/information-step.component.scss index 32e0fcf7c..d44231a5a 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.scss +++ b/src/app/form/form-view/global-components/information-step/information-step.component.scss @@ -49,3 +49,23 @@ } } } +.structureCreated { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + max-width: 600px; + margin: auto; + h3 { + @include lato-bold-24; + text-align: center; + } + p { + @include lato-regular-18; + text-align: center; + } + svg { + width: 180px; + height: 180px; + } +} diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.ts b/src/app/form/form-view/global-components/information-step/information-step.component.ts index 92c2559bf..504f7b7c8 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.ts +++ b/src/app/form/form-view/global-components/information-step/information-step.component.ts @@ -1,6 +1,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { accountFormStep } from '../../account-form/accountFormStep.enum'; import { profileFormStep } from '../../profile-form/profileFormStep.enum'; +import { structureFormStep } from '../../structure-form/structureFormStep.enum'; @Component({ selector: 'app-information-step', @@ -14,6 +15,7 @@ export class InformationStepComponent { public accountFormStepEnum = accountFormStep; public profileFormStepEnum = profileFormStep; + public structureFormStepEnum = structureFormStep; public nextPage(): void { this.goNext.emit(); diff --git a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.html b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.html index 1ba61c4cf..dfb039c3b 100644 --- a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.html +++ b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.html @@ -1 +1,62 @@ -<p>structure-consent works!</p> +<form [formGroup]="structureForm" (keyup.enter)="(!isEditMode ? '' : null)"> + <div class="section" *ngIf="!isEditMode"> + <div class="title"> + <h3> + Acceptez-vous que les informations saisies soient enregistrées par la Métropole de Lyon<span class="asterisk" + >*</span + > + ? + </h3> + </div> + <app-checkbox-form [isChecked]="userAcceptSavedDate" [text]="'J\'accepte'" (checkEvent)="acceptDataBeSaved($event)"> + </app-checkbox-form> + </div> + <div class="section"> + <div class="title"> + <h3> + Acceptez-vous que les informations de votre structure soient mises à disposition sur la plateforme + data.grandlyon.com<span class="asterisk" *ngIf="!isEditMode">**</span + ><span class="asterisk" *ngIf="isEditMode">*</span> ? + </h3> + <p class="notRequired" *ngIf="!isEditMode">Facultatif</p> + </div> + <app-checkbox-form + *ngIf="!isEditMode" + [text]="'J\'accepte'" + (checkEvent)="acceptOpenData($event)" + ></app-checkbox-form> + <div class="dataShareConsent"> + <app-radio-form + *ngIf="isEditMode" + name="{{ getStructureControl('structureName').value }}" + horizontal="true" + [selectedOption]="getStructureControl('dataShareConsentDate').value === null ? false : true" + (selectedEvent)="onRadioBtnChange('dataShareConsentDate', $event)" + > + </app-radio-form> + </div> + </div> + <p *ngIf="!isEditMode" class="informationEndForm"> + <span class="asterisk">*</span> Les informations recueillies sont enregistrées dans un fichier par la Métropole de + Lyon en vue de l'animation du réseau des acteurs de la médiation numérique. Elles sont conservées pendant 24 mois et + sont destinées aux seuls intervenants habilités de la Métropole de Lyon.<br /> + Vos données personnelles sont traitées dans ce cadre aux fins de recensement des actions de médiation numérique sur + le territoire de la métropole. Conformément à la loi 78-17 du 6 janvier 1978 modifiée relative à l'information, aux + fichiers et aux libertés, et au Règlement Général européen à la Protection des Données, vous avez la possibilité + d’exercer vos droits d’accès, de rectification, d’effacement, d’opposition, de limitation du traitement et de + révocation de votre consentement. Afin d'exercer vos droits, vous pouvez vous adresser : <br /> + - par courrier postal à : Métropole de Lyon - Direction des Affaires Juridiques et de la Commande Publique - 20, rue + du Lac - BP 33569 - 69505 Lyon Cedex<br /> + - par courrier électronique en remplissant le formulaire dédié sur Toodego, le site des services et démarches en + ligne dans la Métropole de Lyon + </p> + <p class="informationEndForm"> + <span class="asterisk" *ngIf="!isEditMode">**</span><span class="asterisk" *ngIf="isEditMode">*</span> La Métropole + de Lyon, engagée pour la transparence de l’action publique et la valorisation de ses partenaires, encourage + l’ouverture des données. Les données de votre structure seront publiées sur la plateforme + <a href="https://data.grandlyon.com/" target="_blank">https://data.grandlyon.com/</a> sous la licence ouverte (open + data) et seront donc librement accessibles et réutilisables. Vous pourrez modifier votre choix à tout moment, + exercer vos droits d’accès et de modification, en le signifiant, par tout moyen à votre convenance, auprès de vos + interlocuteurs de la Métropole de Lyon. + </p> +</form> diff --git a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss index e69de29bb..0483593b1 100644 --- a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss +++ b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss @@ -0,0 +1,9 @@ +@import '../../../../../assets/scss/typography'; + +h3 { + @include lato-bold-18; + margin-top: 1.5rem; +} +.informationEndForm { + @include lato-regular-12; +} diff --git a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts index 170010b7d..e5e930c67 100644 --- a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts +++ b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts @@ -1,15 +1,25 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-consent', templateUrl: './structure-consent.component.html', - styleUrls: ['./structure-consent.component.scss'] + styleUrls: ['./structure-consent.component.scss'], }) export class StructureConsentComponent implements OnInit { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + @Output() onAcceptDataBeSaved = new EventEmitter<any>(); + @Output() onAcceptOpenData = new EventEmitter<any>(); + constructor() {} - constructor() { } + ngOnInit(): void {} - ngOnInit(): void { + public acceptDataBeSaved(event: boolean): void { + this.onAcceptDataBeSaved.emit(event); } + public acceptOpenData(event: boolean): void { + this.onAcceptOpenData.emit(event); + } } diff --git a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.html b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.html index 2754bf5ee..6aaebaf99 100644 --- a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.html +++ b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.html @@ -1 +1,19 @@ -<p>structure-covid-info works!</p> +<form [formGroup]="structureForm" (keyup.enter)="(!isEditMode ? '' : null)"> + <div class="title"> + <h3>Y a-t-il des informations spécifiques à la période COVID ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <div class="textareaBlock" fxLayout="column"> + <textarea + rows="8" + placeholder="Exemple : nous ne sommes joignables que par visio" + maxlength="500" + formControlName="lockdownActivity" + ></textarea> + <p> + {{ + getStructureControl('lockdownActivity').value ? getStructureControl('lockdownActivity').value.length : 0 + }} / 500 + </p> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss index e69de29bb..59cffc01f 100644 --- a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss +++ b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss @@ -0,0 +1,6 @@ +.textareaBlock { + max-width: 600px; + p { + text-align: right; + } +} diff --git a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts index d9bad8046..565623240 100644 --- a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts +++ b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts @@ -1,15 +1,18 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; +import { AbstractControl, FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-covid-info', templateUrl: './structure-covid-info.component.html', - styleUrls: ['./structure-covid-info.component.scss'] + styleUrls: ['./structure-covid-info.component.scss'], }) export class StructureCovidInfoComponent implements OnInit { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + constructor() {} - constructor() { } - - ngOnInit(): void { + ngOnInit(): void {} + public getStructureControl(nameControl: string): AbstractControl { + return this.structureForm.get(nameControl); } - } diff --git a/src/app/form/form-view/structure-form/structure-description/structure-description.component.html b/src/app/form/form-view/structure-form/structure-description/structure-description.component.html index d59cc9455..a00e1aca5 100644 --- a/src/app/form/form-view/structure-form/structure-description/structure-description.component.html +++ b/src/app/form/form-view/structure-form/structure-description/structure-description.component.html @@ -1 +1,19 @@ -<p>structure-description works!</p> +<form [formGroup]="structureForm" (keyup.enter)="(!isEditMode ? '' : null)"> + <div class="title"> + <h3>Pouvez-vous présenter la structure en quelques mots ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <div class="textareaBlock introduceStructure" fxLayout="column"> + <textarea + rows="8" + placeholder="Exemple : nous sommes une équipe de 7 bénévoles qui orientons les personnes pour qui le numérique est une langue étrangère" + maxlength="500" + formControlName="description" + ></textarea> + <p> + {{ + getStructureControl('description').value ? getStructureControl('description').value.length : 0 + }} / 500 + </p> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss b/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss index e69de29bb..50531f05b 100644 --- a/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss +++ b/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss @@ -0,0 +1,6 @@ +.introduceStructure { + max-width: 600px; + p { + text-align: right; + } +} diff --git a/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts b/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts index e2c631aba..7ab5cfc03 100644 --- a/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts +++ b/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts @@ -1,15 +1,18 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; +import { AbstractControl, FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-description', templateUrl: './structure-description.component.html', - styleUrls: ['./structure-description.component.scss'] + styleUrls: ['./structure-description.component.scss'], }) export class StructureDescriptionComponent implements OnInit { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + constructor() {} - constructor() { } - - ngOnInit(): void { + ngOnInit(): void {} + public getStructureControl(nameControl: string): AbstractControl { + return this.structureForm.get(nameControl); } - } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 6fffe0398..11d390263 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -61,7 +61,36 @@ <app-structure-other-services [structureForm]="structureForm" (validateForm)="setValidationsForm($event)" + (inArray)="isInArray($event)" [isEditMode]="isEditMode" - [structure]="structure" ></app-structure-other-services> </div> +<div *ngIf="currentStep == structureFormStep.structureDescription"> + <app-structure-description + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + ></app-structure-description> +</div> +<div *ngIf="currentStep == structureFormStep.structureCovidInfo"> + <app-structure-covid-info + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + ></app-structure-covid-info> +</div> +<div *ngIf="currentStep == structureFormStep.structureConsent"> + <app-structure-consent + [structureForm]="structureForm" + [isEditMode]="isEditMode" + (onAcceptOpenData)="acceptOpenData($event)" + (onAcceptDataBeSaved)="acceptDataBeSaved($event)" + ></app-structure-consent> +</div> +<div *ngIf="currentStep == structureFormStep.structureCreationFinishedInfo"> + <app-information-step + [structureForm]="structureForm" + [isEditMode]="isEditMode" + [step]="currentStep" + ></app-information-step> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 4e2227fba..a7b1f19f8 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -55,7 +55,9 @@ export class StructureFormComponent implements OnChanges { if ( this.currentStep === structureFormStep.structureEquipments || this.currentStep === structureFormStep.structureLabels || - this.currentStep === structureFormStep.structureOtherServices + this.currentStep === structureFormStep.structureOtherServices || + this.currentStep === structureFormStep.structureDescription || + this.currentStep === structureFormStep.structureCovidInfo ) { this.pageValid.emit(); } @@ -178,11 +180,11 @@ export class StructureFormComponent implements OnChanges { name: 'Autres services proposés', }; this.pagesValidation[structureFormStep.structureDescription] = { - valid: this.structureForm.get('description').valid, + valid: true, name: 'Présentation de la structure', }; this.pagesValidation[structureFormStep.structureCovidInfo] = { - valid: this.structureForm.get('lockdownActivity').valid, + valid: true, name: 'Informations spécifiques à la période COVID', }; if (this.isEditMode) { @@ -260,7 +262,7 @@ export class StructureFormComponent implements OnChanges { // Check if a FormControl value is in FormArray public isInArray({ formControlName, term }: { formControlName: string; term: string }): boolean { - if (this.structureForm.controls[formControlName].value) { + if (this.structureForm.controls[formControlName] && this.structureForm.controls[formControlName].value) { return this.structureForm.controls[formControlName].value.includes(term); } return false; @@ -284,15 +286,18 @@ export class StructureFormComponent implements OnChanges { if (this.isPageValid) this.pageValid.emit(); return this.isPageValid; } - // Check if a FormControl value is in FormArray - // public isInArray(nameAndEvent: { term: string; formControlName: string }): boolean { - // const { term, formControlName } = nameAndEvent; - // console.log('formControlName', formControlName); - // if (this.structureForm.controls[formControlName].value) { - // return this.structureForm.controls[formControlName].value.includes(term); - // } - // return false; - // } + public getStructureControl(nameControl: string): AbstractControl { + return this.structureForm.get(nameControl); + } + public acceptDataBeSaved(isAccepted: boolean): void { + this.userAcceptSavedDate = isAccepted; + this.setValidationsForm(); + } + public acceptOpenData(isAccepted: boolean): void { + let now = isAccepted ? new Date().toString() : ''; + this.getStructureControl('dataShareConsentDate').setValue(now); + this.setValidationsForm(); + } // public onCheckChange(event: boolean, formControlName: string, value: string): void { // if (value === 'wifiEnAccesLibre') { // this.isWifiChoosen = true; diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts index 18a69c627..424fbff4d 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts @@ -1,5 +1,5 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormArray, FormControl, FormGroup } from '@angular/forms'; import { CategoryEnum } from '../../../../shared/enum/category.enum'; import { SearchService } from '../../../../structure-list/services/search.service'; @@ -11,6 +11,9 @@ import { SearchService } from '../../../../structure-list/services/search.servic export class StructureOtherServicesComponent implements OnInit { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; + @Output() validateForm = new EventEmitter<any>(); + @Output() inArray = new EventEmitter<any>(); + public otherServices; constructor(private searchService: SearchService) {} @@ -23,4 +26,20 @@ export class StructureOtherServicesComponent implements OnInit { } }); } + public isInArray(accessModalityId: string, modality: string) { + this.inArray.emit({ formControlName: accessModalityId, value: modality }); + } + + public onCheckChange(event: boolean, formControlName: string, value: string): void { + const formArray: FormArray = this.structureForm.get(formControlName) as FormArray; + if (event) { + // Add a new control in the arrayForm + formArray.push(new FormControl(value)); + } else { + // Remove uncheck control in the arrayForm + const index = formArray.controls.findIndex((element) => element.value === value); + formArray.removeAt(index); + } + this.validateForm.emit(); + } } diff --git a/src/assets/form/accesLivresInformatiques.svg b/src/assets/form/accesLivresInformatiques.svg new file mode 100644 index 000000000..22cd308cf --- /dev/null +++ b/src/assets/form/accesLivresInformatiques.svg @@ -0,0 +1 @@ +<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 44 44"><path d="M7 10h30v17a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V10Z" fill="#fff"/><rect x="6.25" y="9.25" width="31.5" height="20.5" rx="2.75" stroke="#333" stroke-width="1.5"/><path d="M6 27a2 2 0 0 0 2 2h28a2 2 0 0 0 2-2H6Z" fill="#333"/><path d="M17 34h11" stroke="#333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M23.25 30v-.75h-1.5V30h1.5Zm-1.5 4a.75.75 0 0 0 1.5 0h-1.5Zm0-4V34h1.5V30h-1.5Z" fill="#333"/><path d="M22.371 13.626v-.012l.003-.042a1.798 1.798 0 0 1 .169-.651c.084-.174.206-.34.383-.461.175-.121.419-.21.766-.21H29.726v10.875H23.692c-.438 0-.783.114-1.05.298a1.557 1.557 0 0 0-.27.238V13.626ZM21.871 13.626v-.012l-.002-.042a1.795 1.795 0 0 0-.169-.651 1.164 1.164 0 0 0-.383-.461c-.176-.121-.42-.21-.767-.21H14.517v10.875H20.552c.438 0 .783.114 1.05.298.103.072.193.152.27.238V13.626Z" stroke="#DA3635" stroke-width=".5"/><path fill-rule="evenodd" clip-rule="evenodd" d="M14.265 13.955H13V25.09h6.754c.474 0 1.2.102 1.464.254.033.019.048.065.067.123.054.163.139.418.715.418.78 0 .78-.47.78-.47.32-.19.77-.325 1.406-.325H31V13.955h-1.026V23H14.265v-9.045Z" fill="#DA3635"/><rect x="15.738" y="15.546" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="15.546" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="15.738" y="17.932" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="17.932" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="15.738" y="20.318" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="20.318" width="4.686" height=".795" rx=".398" fill="#DA3635"/></svg> \ No newline at end of file diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index e760d03a5..967f2b729 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -333,23 +333,7 @@ </linearGradient> </defs> </symbol> - -<symbol id="accesLivresInformatiques" width="44" height="44" viewBox="0 0 44 44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M7 10H37V27C37 28.1046 36.1046 29 35 29H9C7.89543 29 7 28.1046 7 27V10Z" fill="white"/> -<rect x="6.25" y="9.25" width="31.5" height="20.5" rx="2.75" stroke="#333333" stroke-width="1.5"/> -<path d="M6 27C6 28.1046 6.89543 29 8 29H36C37.1046 29 38 28.1046 38 27H6Z" fill="#333333"/> -<path d="M17 34L28 34" stroke="#333333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> -<path d="M23.25 30V29.25H21.75V30H23.25ZM21.75 34C21.75 34.4142 22.0858 34.75 22.5 34.75C22.9142 34.75 23.25 34.4142 23.25 34H21.75ZM21.75 30C21.75 30.0038 21.75 30.0076 21.75 30.0114C21.75 30.0152 21.75 30.019 21.75 30.0228C21.75 30.0266 21.75 30.0304 21.75 30.0341C21.75 30.0379 21.75 30.0417 21.75 30.0454C21.75 30.0492 21.75 30.0529 21.75 30.0567C21.75 30.0604 21.75 30.0642 21.75 30.0679C21.75 30.0716 21.75 30.0753 21.75 30.0791C21.75 30.0828 21.75 30.0865 21.75 30.0902C21.75 30.0939 21.75 30.0976 21.75 30.1013C21.75 30.105 21.75 30.1086 21.75 30.1123C21.75 30.116 21.75 30.1197 21.75 30.1233C21.75 30.127 21.75 30.1306 21.75 30.1343C21.75 30.1379 21.75 30.1416 21.75 30.1452C21.75 30.1488 21.75 30.1525 21.75 30.1561C21.75 30.1597 21.75 30.1633 21.75 30.1669C21.75 30.1705 21.75 30.1741 21.75 30.1777C21.75 30.1813 21.75 30.1849 21.75 30.1885C21.75 30.1921 21.75 30.1956 21.75 30.1992C21.75 30.2028 21.75 30.2063 21.75 30.2099C21.75 30.2135 21.75 30.217 21.75 30.2205C21.75 30.2241 21.75 30.2276 21.75 30.2311C21.75 30.2347 21.75 30.2382 21.75 30.2417C21.75 30.2452 21.75 30.2487 21.75 30.2522C21.75 30.2557 21.75 30.2592 21.75 30.2627C21.75 30.2662 21.75 30.2697 21.75 30.2732C21.75 30.2766 21.75 30.2801 21.75 30.2836C21.75 30.287 21.75 30.2905 21.75 30.294C21.75 30.2974 21.75 30.3009 21.75 30.3043C21.75 30.3077 21.75 30.3112 21.75 30.3146C21.75 30.318 21.75 30.3214 21.75 30.3248C21.75 30.3283 21.75 30.3317 21.75 30.3351C21.75 30.3385 21.75 30.3419 21.75 30.3453C21.75 30.3486 21.75 30.352 21.75 30.3554C21.75 30.3588 21.75 30.3621 21.75 30.3655C21.75 30.3689 21.75 30.3722 21.75 30.3756C21.75 30.3789 21.75 30.3823 21.75 30.3856C21.75 30.389 21.75 30.3923 21.75 30.3956C21.75 30.3989 21.75 30.4023 21.75 30.4056C21.75 30.4089 21.75 30.4122 21.75 30.4155C21.75 30.4188 21.75 30.4221 21.75 30.4254C21.75 30.4287 21.75 30.432 21.75 30.4353C21.75 30.4385 21.75 30.4418 21.75 30.4451C21.75 30.4483 21.75 30.4516 21.75 30.4549C21.75 30.4581 21.75 30.4614 21.75 30.4646C21.75 30.4678 21.75 30.4711 21.75 30.4743C21.75 30.4776 21.75 30.4808 21.75 30.484C21.75 30.4872 21.75 30.4904 21.75 30.4936C21.75 30.4968 21.75 30.5001 21.75 30.5032C21.75 30.5064 21.75 30.5096 21.75 30.5128C21.75 30.516 21.75 30.5192 21.75 30.5224C21.75 30.5255 21.75 30.5287 21.75 30.5319C21.75 30.535 21.75 30.5382 21.75 30.5413C21.75 30.5445 21.75 30.5476 21.75 30.5508C21.75 30.5539 21.75 30.5571 21.75 30.5602C21.75 30.5633 21.75 30.5664 21.75 30.5696C21.75 30.5727 21.75 30.5758 21.75 30.5789C21.75 30.582 21.75 30.5851 21.75 30.5882C21.75 30.5913 21.75 30.5944 21.75 30.5975C21.75 30.6005 21.75 30.6036 21.75 30.6067C21.75 30.6098 21.75 30.6128 21.75 30.6159C21.75 30.619 21.75 30.622 21.75 30.6251C21.75 30.6281 21.75 30.6312 21.75 30.6342C21.75 30.6373 21.75 30.6403 21.75 30.6433C21.75 30.6464 21.75 30.6494 21.75 30.6524C21.75 30.6554 21.75 30.6584 21.75 30.6614C21.75 30.6645 21.75 30.6675 21.75 30.6705C21.75 30.6735 21.75 30.6765 21.75 30.6794C21.75 30.6824 21.75 30.6854 21.75 30.6884C21.75 30.6914 21.75 30.6943 21.75 30.6973C21.75 30.7003 21.75 30.7032 21.75 30.7062C21.75 30.7092 21.75 30.7121 21.75 30.715C21.75 30.718 21.75 30.7209 21.75 30.7239C21.75 30.7268 21.75 30.7297 21.75 30.7327C21.75 30.7356 21.75 30.7385 21.75 30.7414C21.75 30.7444 21.75 30.7473 21.75 30.7502C21.75 30.7531 21.75 30.756 21.75 30.7589C21.75 30.7618 21.75 30.7647 21.75 30.7675C21.75 30.7704 21.75 30.7733 21.75 30.7762C21.75 30.7791 21.75 30.7819 21.75 30.7848C21.75 30.7877 21.75 30.7905 21.75 30.7934C21.75 30.7962 21.75 30.7991 21.75 30.8019C21.75 30.8048 21.75 30.8076 21.75 30.8105C21.75 30.8133 21.75 30.8161 21.75 30.819C21.75 30.8218 21.75 30.8246 21.75 30.8274C21.75 30.8303 21.75 30.8331 21.75 30.8359C21.75 30.8387 21.75 30.8415 21.75 30.8443C21.75 30.8471 21.75 30.8499 21.75 30.8527C21.75 30.8555 21.75 30.8583 21.75 30.861C21.75 30.8638 21.75 30.8666 21.75 30.8694C21.75 30.8721 21.75 30.8749 21.75 30.8777C21.75 30.8804 21.75 30.8832 21.75 30.8859C21.75 30.8887 21.75 30.8914 21.75 30.8942C21.75 30.8969 21.75 30.8997 21.75 30.9024C21.75 30.9051 21.75 30.9079 21.75 30.9106C21.75 30.9133 21.75 30.916 21.75 30.9188C21.75 30.9215 21.75 30.9242 21.75 30.9269C21.75 30.9296 21.75 30.9323 21.75 30.935C21.75 30.9377 21.75 30.9404 21.75 30.9431C21.75 30.9458 21.75 30.9485 21.75 30.9512C21.75 30.9538 21.75 30.9565 21.75 30.9592C21.75 30.9619 21.75 30.9645 21.75 30.9672C21.75 30.9699 21.75 30.9725 21.75 30.9752C21.75 30.9778 21.75 30.9805 21.75 30.9831C21.75 30.9858 21.75 30.9884 21.75 30.9911C21.75 30.9937 21.75 30.9963 21.75 30.999C21.75 31.0016 21.75 31.0042 21.75 31.0068C21.75 31.0095 21.75 31.0121 21.75 31.0147C21.75 31.0173 21.75 31.0199 21.75 31.0225C21.75 31.0251 21.75 31.0277 21.75 31.0303C21.75 31.0329 21.75 31.0355 21.75 31.0381C21.75 31.0407 21.75 31.0433 21.75 31.0459C21.75 31.0484 21.75 31.051 21.75 31.0536C21.75 31.0562 21.75 31.0587 21.75 31.0613C21.75 31.0639 21.75 31.0664 21.75 31.069C21.75 31.0715 21.75 31.0741 21.75 31.0767C21.75 31.0792 21.75 31.0817 21.75 31.0843C21.75 31.0868 21.75 31.0894 21.75 31.0919C21.75 31.0944 21.75 31.097 21.75 31.0995C21.75 31.102 21.75 31.1045 21.75 31.1071C21.75 31.1096 21.75 31.1121 21.75 31.1146C21.75 31.1171 21.75 31.1196 21.75 31.1221C21.75 31.1246 21.75 31.1271 21.75 31.1296C21.75 31.1321 21.75 31.1346 21.75 31.1371C21.75 31.1396 21.75 31.1421 21.75 31.1446C21.75 31.147 21.75 31.1495 21.75 31.152C21.75 31.1545 21.75 31.1569 21.75 31.1594C21.75 31.1619 21.75 31.1643 21.75 31.1668C21.75 31.1693 21.75 31.1717 21.75 31.1742C21.75 31.1766 21.75 31.1791 21.75 31.1815C21.75 31.184 21.75 31.1864 21.75 31.1889C21.75 31.1913 21.75 31.1937 21.75 31.1962C21.75 31.1986 21.75 31.201 21.75 31.2034C21.75 31.2059 21.75 31.2083 21.75 31.2107C21.75 31.2131 21.75 31.2155 21.75 31.218C21.75 31.2204 21.75 31.2228 21.75 31.2252C21.75 31.2276 21.75 31.23 21.75 31.2324C21.75 31.2348 21.75 31.2372 21.75 31.2396C21.75 31.242 21.75 31.2443 21.75 31.2467C21.75 31.2491 21.75 31.2515 21.75 31.2539C21.75 31.2563 21.75 31.2586 21.75 31.261C21.75 31.2634 21.75 31.2657 21.75 31.2681C21.75 31.2705 21.75 31.2728 21.75 31.2752C21.75 31.2776 21.75 31.2799 21.75 31.2823C21.75 31.2846 21.75 31.287 21.75 31.2893C21.75 31.2917 21.75 31.294 21.75 31.2963C21.75 31.2987 21.75 31.301 21.75 31.3034C21.75 31.3057 21.75 31.308 21.75 31.3103C21.75 31.3127 21.75 31.315 21.75 31.3173C21.75 31.3196 21.75 31.322 21.75 31.3243C21.75 31.3266 21.75 31.3289 21.75 31.3312C21.75 31.3335 21.75 31.3358 21.75 31.3381C21.75 31.3404 21.75 31.3427 21.75 31.345C21.75 31.3473 21.75 31.3496 21.75 31.3519C21.75 31.3542 21.75 31.3565 21.75 31.3588C21.75 31.3611 21.75 31.3634 21.75 31.3657C21.75 31.3679 21.75 31.3702 21.75 31.3725C21.75 31.3748 21.75 31.377 21.75 31.3793C21.75 31.3816 21.75 31.3839 21.75 31.3861C21.75 31.3884 21.75 31.3907 21.75 31.3929C21.75 31.3952 21.75 31.3974 21.75 31.3997C21.75 31.4019 21.75 31.4042 21.75 31.4064C21.75 31.4087 21.75 31.4109 21.75 31.4132C21.75 31.4154 21.75 31.4177 21.75 31.4199C21.75 31.4221 21.75 31.4244 21.75 31.4266C21.75 31.4288 21.75 31.4311 21.75 31.4333C21.75 31.4355 21.75 31.4378 21.75 31.44C21.75 31.4422 21.75 31.4444 21.75 31.4466C21.75 31.4489 21.75 31.4511 21.75 31.4533C21.75 31.4555 21.75 31.4577 21.75 31.4599C21.75 31.4621 21.75 31.4643 21.75 31.4665C21.75 31.4688 21.75 31.471 21.75 31.4732C21.75 31.4754 21.75 31.4775 21.75 31.4797C21.75 31.4819 21.75 31.4841 21.75 31.4863C21.75 31.4885 21.75 31.4907 21.75 31.4929C21.75 31.4951 21.75 31.4973 21.75 31.4994C21.75 31.5016 21.75 31.5038 21.75 31.506C21.75 31.5081 21.75 31.5103 21.75 31.5125C21.75 31.5147 21.75 31.5168 21.75 31.519C21.75 31.5212 21.75 31.5233 21.75 31.5255C21.75 31.5277 21.75 31.5298 21.75 31.532C21.75 31.5341 21.75 31.5363 21.75 31.5385C21.75 31.5406 21.75 31.5428 21.75 31.5449C21.75 31.5471 21.75 31.5492 21.75 31.5514C21.75 31.5535 21.75 31.5557 21.75 31.5578C21.75 31.5599 21.75 31.5621 21.75 31.5642C21.75 31.5664 21.75 31.5685 21.75 31.5706C21.75 31.5728 21.75 31.5749 21.75 31.577C21.75 31.5792 21.75 31.5813 21.75 31.5834C21.75 31.5855 21.75 31.5877 21.75 31.5898C21.75 31.5919 21.75 31.594 21.75 31.5962C21.75 31.5983 21.75 31.6004 21.75 31.6025C21.75 31.6046 21.75 31.6067 21.75 31.6089C21.75 31.611 21.75 31.6131 21.75 31.6152C21.75 31.6173 21.75 31.6194 21.75 31.6215C21.75 31.6236 21.75 31.6257 21.75 31.6278C21.75 31.6299 21.75 31.632 21.75 31.6341C21.75 31.6362 21.75 31.6383 21.75 31.6404C21.75 31.6425 21.75 31.6446 21.75 31.6467C21.75 31.6488 21.75 31.6509 21.75 31.653C21.75 31.6551 21.75 31.6572 21.75 31.6592C21.75 31.6613 21.75 31.6634 21.75 31.6655C21.75 31.6676 21.75 31.6697 21.75 31.6717C21.75 31.6738 21.75 31.6759 21.75 31.678C21.75 31.6801 21.75 31.6821 21.75 31.6842C21.75 31.6863 21.75 31.6883 21.75 31.6904C21.75 31.6925 21.75 31.6946 21.75 31.6966C21.75 31.6987 21.75 31.7008 21.75 31.7028C21.75 31.7049 21.75 31.707 21.75 31.709C21.75 31.7111 21.75 31.7132 21.75 31.7152C21.75 31.7173 21.75 31.7193 21.75 31.7214C21.75 31.7234 21.75 31.7255 21.75 31.7276C21.75 31.7296 21.75 31.7317 21.75 31.7337C21.75 31.7358 21.75 31.7378 21.75 31.7399C21.75 31.7419 21.75 31.744 21.75 31.746C21.75 31.7481 21.75 31.7501 21.75 31.7522C21.75 31.7542 21.75 31.7563 21.75 31.7583C21.75 31.7603 21.75 31.7624 21.75 31.7644C21.75 31.7665 21.75 31.7685 21.75 31.7706C21.75 31.7726 21.75 31.7746 21.75 31.7767C21.75 31.7787 21.75 31.7807 21.75 31.7828C21.75 31.7848 21.75 31.7868 21.75 31.7889C21.75 31.7909 21.75 31.7929 21.75 31.795C21.75 31.797 21.75 31.799 21.75 31.8011C21.75 31.8031 21.75 31.8051 21.75 31.8072C21.75 31.8092 21.75 31.8112 21.75 31.8132C21.75 31.8153 21.75 31.8173 21.75 31.8193C21.75 31.8213 21.75 31.8234 21.75 31.8254C21.75 31.8274 21.75 31.8294 21.75 31.8314C21.75 31.8335 21.75 31.8355 21.75 31.8375C21.75 31.8395 21.75 31.8415 21.75 31.8436C21.75 31.8456 21.75 31.8476 21.75 31.8496C21.75 31.8516 21.75 31.8536 21.75 31.8557C21.75 31.8577 21.75 31.8597 21.75 31.8617C21.75 31.8637 21.75 31.8657 21.75 31.8677C21.75 31.8698 21.75 31.8718 21.75 31.8738C21.75 31.8758 21.75 31.8778 21.75 31.8798C21.75 31.8818 21.75 31.8838 21.75 31.8858C21.75 31.8879 21.75 31.8899 21.75 31.8919C21.75 31.8939 21.75 31.8959 21.75 31.8979C21.75 31.8999 21.75 31.9019 21.75 31.9039C21.75 31.9059 21.75 31.9079 21.75 31.9099C21.75 31.9119 21.75 31.9139 21.75 31.9159C21.75 31.918 21.75 31.92 21.75 31.922C21.75 31.924 21.75 31.926 21.75 31.928C21.75 31.93 21.75 31.932 21.75 31.934C21.75 31.936 21.75 31.938 21.75 31.94C21.75 31.942 21.75 31.944 21.75 31.946C21.75 31.948 21.75 31.95 21.75 31.952C21.75 31.954 21.75 31.956 21.75 31.958C21.75 31.96 21.75 31.962 21.75 31.964C21.75 31.966 21.75 31.968 21.75 31.97C21.75 31.972 21.75 31.974 21.75 31.976C21.75 31.978 21.75 31.98 21.75 31.982C21.75 31.984 21.75 31.986 21.75 31.988C21.75 31.99 21.75 31.992 21.75 31.994C21.75 31.996 21.75 31.998 21.75 32C21.75 32.002 21.75 32.004 21.75 32.006C21.75 32.008 21.75 32.01 21.75 32.012C21.75 32.014 21.75 32.016 21.75 32.018C21.75 32.02 21.75 32.022 21.75 32.024C21.75 32.026 21.75 32.028 21.75 32.03C21.75 32.032 21.75 32.034 21.75 32.036C21.75 32.038 21.75 32.04 21.75 32.042C21.75 32.044 21.75 32.046 21.75 32.048C21.75 32.05 21.75 32.052 21.75 32.054C21.75 32.056 21.75 32.058 21.75 32.06C21.75 32.062 21.75 32.064 21.75 32.066C21.75 32.068 21.75 32.07 21.75 32.072C21.75 32.074 21.75 32.076 21.75 32.078C21.75 32.08 21.75 32.082 21.75 32.0841C21.75 32.0861 21.75 32.0881 21.75 32.0901C21.75 32.0921 21.75 32.0941 21.75 32.0961C21.75 32.0981 21.75 32.1001 21.75 32.1021C21.75 32.1041 21.75 32.1061 21.75 32.1081C21.75 32.1101 21.75 32.1121 21.75 32.1142C21.75 32.1162 21.75 32.1182 21.75 32.1202C21.75 32.1222 21.75 32.1242 21.75 32.1262C21.75 32.1282 21.75 32.1302 21.75 32.1323C21.75 32.1343 21.75 32.1363 21.75 32.1383C21.75 32.1403 21.75 32.1423 21.75 32.1443C21.75 32.1464 21.75 32.1484 21.75 32.1504C21.75 32.1524 21.75 32.1544 21.75 32.1564C21.75 32.1585 21.75 32.1605 21.75 32.1625C21.75 32.1645 21.75 32.1665 21.75 32.1686C21.75 32.1706 21.75 32.1726 21.75 32.1746C21.75 32.1766 21.75 32.1787 21.75 32.1807C21.75 32.1827 21.75 32.1847 21.75 32.1868C21.75 32.1888 21.75 32.1908 21.75 32.1928C21.75 32.1949 21.75 32.1969 21.75 32.1989C21.75 32.201 21.75 32.203 21.75 32.205C21.75 32.2071 21.75 32.2091 21.75 32.2111C21.75 32.2132 21.75 32.2152 21.75 32.2172C21.75 32.2193 21.75 32.2213 21.75 32.2233C21.75 32.2254 21.75 32.2274 21.75 32.2294C21.75 32.2315 21.75 32.2335 21.75 32.2356C21.75 32.2376 21.75 32.2397 21.75 32.2417C21.75 32.2437 21.75 32.2458 21.75 32.2478C21.75 32.2499 21.75 32.2519 21.75 32.254C21.75 32.256 21.75 32.2581 21.75 32.2601C21.75 32.2622 21.75 32.2642 21.75 32.2663C21.75 32.2683 21.75 32.2704 21.75 32.2724C21.75 32.2745 21.75 32.2766 21.75 32.2786C21.75 32.2807 21.75 32.2827 21.75 32.2848C21.75 32.2868 21.75 32.2889 21.75 32.291C21.75 32.293 21.75 32.2951 21.75 32.2972C21.75 32.2992 21.75 32.3013 21.75 32.3034C21.75 32.3054 21.75 32.3075 21.75 32.3096C21.75 32.3117 21.75 32.3137 21.75 32.3158C21.75 32.3179 21.75 32.3199 21.75 32.322C21.75 32.3241 21.75 32.3262 21.75 32.3283C21.75 32.3303 21.75 32.3324 21.75 32.3345C21.75 32.3366 21.75 32.3387 21.75 32.3408C21.75 32.3428 21.75 32.3449 21.75 32.347C21.75 32.3491 21.75 32.3512 21.75 32.3533C21.75 32.3554 21.75 32.3575 21.75 32.3596C21.75 32.3617 21.75 32.3638 21.75 32.3659C21.75 32.368 21.75 32.3701 21.75 32.3722C21.75 32.3743 21.75 32.3764 21.75 32.3785C21.75 32.3806 21.75 32.3827 21.75 32.3848C21.75 32.3869 21.75 32.389 21.75 32.3911C21.75 32.3933 21.75 32.3954 21.75 32.3975C21.75 32.3996 21.75 32.4017 21.75 32.4038C21.75 32.406 21.75 32.4081 21.75 32.4102C21.75 32.4123 21.75 32.4145 21.75 32.4166C21.75 32.4187 21.75 32.4208 21.75 32.423C21.75 32.4251 21.75 32.4272 21.75 32.4294C21.75 32.4315 21.75 32.4336 21.75 32.4358C21.75 32.4379 21.75 32.4401 21.75 32.4422C21.75 32.4443 21.75 32.4465 21.75 32.4486C21.75 32.4508 21.75 32.4529 21.75 32.4551C21.75 32.4572 21.75 32.4594 21.75 32.4615C21.75 32.4637 21.75 32.4659 21.75 32.468C21.75 32.4702 21.75 32.4723 21.75 32.4745C21.75 32.4767 21.75 32.4788 21.75 32.481C21.75 32.4832 21.75 32.4853 21.75 32.4875C21.75 32.4897 21.75 32.4919 21.75 32.494C21.75 32.4962 21.75 32.4984 21.75 32.5006C21.75 32.5027 21.75 32.5049 21.75 32.5071C21.75 32.5093 21.75 32.5115 21.75 32.5137C21.75 32.5159 21.75 32.5181 21.75 32.5203C21.75 32.5225 21.75 32.5246 21.75 32.5268C21.75 32.529 21.75 32.5312 21.75 32.5335C21.75 32.5357 21.75 32.5379 21.75 32.5401C21.75 32.5423 21.75 32.5445 21.75 32.5467C21.75 32.5489 21.75 32.5511 21.75 32.5534C21.75 32.5556 21.75 32.5578 21.75 32.56C21.75 32.5622 21.75 32.5645 21.75 32.5667C21.75 32.5689 21.75 32.5712 21.75 32.5734C21.75 32.5756 21.75 32.5779 21.75 32.5801C21.75 32.5823 21.75 32.5846 21.75 32.5868C21.75 32.5891 21.75 32.5913 21.75 32.5936C21.75 32.5958 21.75 32.5981 21.75 32.6003C21.75 32.6026 21.75 32.6048 21.75 32.6071C21.75 32.6093 21.75 32.6116 21.75 32.6139C21.75 32.6161 21.75 32.6184 21.75 32.6207C21.75 32.623 21.75 32.6252 21.75 32.6275C21.75 32.6298 21.75 32.6321 21.75 32.6343C21.75 32.6366 21.75 32.6389 21.75 32.6412C21.75 32.6435 21.75 32.6458 21.75 32.6481C21.75 32.6504 21.75 32.6527 21.75 32.655C21.75 32.6573 21.75 32.6596 21.75 32.6619C21.75 32.6642 21.75 32.6665 21.75 32.6688C21.75 32.6711 21.75 32.6734 21.75 32.6757C21.75 32.678 21.75 32.6804 21.75 32.6827C21.75 32.685 21.75 32.6873 21.75 32.6897C21.75 32.692 21.75 32.6943 21.75 32.6966C21.75 32.699 21.75 32.7013 21.75 32.7037C21.75 32.706 21.75 32.7083 21.75 32.7107C21.75 32.713 21.75 32.7154 21.75 32.7177C21.75 32.7201 21.75 32.7224 21.75 32.7248C21.75 32.7272 21.75 32.7295 21.75 32.7319C21.75 32.7343 21.75 32.7366 21.75 32.739C21.75 32.7414 21.75 32.7437 21.75 32.7461C21.75 32.7485 21.75 32.7509 21.75 32.7533C21.75 32.7557 21.75 32.758 21.75 32.7604C21.75 32.7628 21.75 32.7652 21.75 32.7676C21.75 32.77 21.75 32.7724 21.75 32.7748C21.75 32.7772 21.75 32.7796 21.75 32.782C21.75 32.7845 21.75 32.7869 21.75 32.7893C21.75 32.7917 21.75 32.7941 21.75 32.7966C21.75 32.799 21.75 32.8014 21.75 32.8038C21.75 32.8063 21.75 32.8087 21.75 32.8111C21.75 32.8136 21.75 32.816 21.75 32.8185C21.75 32.8209 21.75 32.8234 21.75 32.8258C21.75 32.8283 21.75 32.8307 21.75 32.8332C21.75 32.8357 21.75 32.8381 21.75 32.8406C21.75 32.8431 21.75 32.8455 21.75 32.848C21.75 32.8505 21.75 32.853 21.75 32.8554C21.75 32.8579 21.75 32.8604 21.75 32.8629C21.75 32.8654 21.75 32.8679 21.75 32.8704C21.75 32.8729 21.75 32.8754 21.75 32.8779C21.75 32.8804 21.75 32.8829 21.75 32.8854C21.75 32.8879 21.75 32.8904 21.75 32.8929C21.75 32.8955 21.75 32.898 21.75 32.9005C21.75 32.903 21.75 32.9056 21.75 32.9081C21.75 32.9106 21.75 32.9132 21.75 32.9157C21.75 32.9183 21.75 32.9208 21.75 32.9233C21.75 32.9259 21.75 32.9285 21.75 32.931C21.75 32.9336 21.75 32.9361 21.75 32.9387C21.75 32.9413 21.75 32.9438 21.75 32.9464C21.75 32.949 21.75 32.9516 21.75 32.9541C21.75 32.9567 21.75 32.9593 21.75 32.9619C21.75 32.9645 21.75 32.9671 21.75 32.9697C21.75 32.9723 21.75 32.9749 21.75 32.9775C21.75 32.9801 21.75 32.9827 21.75 32.9853C21.75 32.9879 21.75 32.9905 21.75 32.9932C21.75 32.9958 21.75 32.9984 21.75 33.001C21.75 33.0037 21.75 33.0063 21.75 33.0089C21.75 33.0116 21.75 33.0142 21.75 33.0169C21.75 33.0195 21.75 33.0222 21.75 33.0248C21.75 33.0275 21.75 33.0301 21.75 33.0328C21.75 33.0355 21.75 33.0381 21.75 33.0408C21.75 33.0435 21.75 33.0462 21.75 33.0488C21.75 33.0515 21.75 33.0542 21.75 33.0569C21.75 33.0596 21.75 33.0623 21.75 33.065C21.75 33.0677 21.75 33.0704 21.75 33.0731C21.75 33.0758 21.75 33.0785 21.75 33.0812C21.75 33.084 21.75 33.0867 21.75 33.0894C21.75 33.0921 21.75 33.0949 21.75 33.0976C21.75 33.1003 21.75 33.1031 21.75 33.1058C21.75 33.1086 21.75 33.1113 21.75 33.1141C21.75 33.1168 21.75 33.1196 21.75 33.1223C21.75 33.1251 21.75 33.1279 21.75 33.1306C21.75 33.1334 21.75 33.1362 21.75 33.139C21.75 33.1417 21.75 33.1445 21.75 33.1473C21.75 33.1501 21.75 33.1529 21.75 33.1557C21.75 33.1585 21.75 33.1613 21.75 33.1641C21.75 33.1669 21.75 33.1697 21.75 33.1726C21.75 33.1754 21.75 33.1782 21.75 33.181C21.75 33.1839 21.75 33.1867 21.75 33.1895C21.75 33.1924 21.75 33.1952 21.75 33.1981C21.75 33.2009 21.75 33.2038 21.75 33.2066C21.75 33.2095 21.75 33.2123 21.75 33.2152C21.75 33.2181 21.75 33.2209 21.75 33.2238C21.75 33.2267 21.75 33.2296 21.75 33.2325C21.75 33.2353 21.75 33.2382 21.75 33.2411C21.75 33.244 21.75 33.2469 21.75 33.2498C21.75 33.2527 21.75 33.2556 21.75 33.2586C21.75 33.2615 21.75 33.2644 21.75 33.2673C21.75 33.2703 21.75 33.2732 21.75 33.2761C21.75 33.2791 21.75 33.282 21.75 33.285C21.75 33.2879 21.75 33.2908 21.75 33.2938C21.75 33.2968 21.75 33.2997 21.75 33.3027C21.75 33.3057 21.75 33.3086 21.75 33.3116C21.75 33.3146 21.75 33.3176 21.75 33.3206C21.75 33.3235 21.75 33.3265 21.75 33.3295C21.75 33.3325 21.75 33.3355 21.75 33.3386C21.75 33.3416 21.75 33.3446 21.75 33.3476C21.75 33.3506 21.75 33.3536 21.75 33.3567C21.75 33.3597 21.75 33.3627 21.75 33.3658C21.75 33.3688 21.75 33.3719 21.75 33.3749C21.75 33.378 21.75 33.381 21.75 33.3841C21.75 33.3872 21.75 33.3902 21.75 33.3933C21.75 33.3964 21.75 33.3995 21.75 33.4025C21.75 33.4056 21.75 33.4087 21.75 33.4118C21.75 33.4149 21.75 33.418 21.75 33.4211C21.75 33.4242 21.75 33.4273 21.75 33.4304C21.75 33.4336 21.75 33.4367 21.75 33.4398C21.75 33.4429 21.75 33.4461 21.75 33.4492C21.75 33.4524 21.75 33.4555 21.75 33.4587C21.75 33.4618 21.75 33.465 21.75 33.4681C21.75 33.4713 21.75 33.4745 21.75 33.4776C21.75 33.4808 21.75 33.484 21.75 33.4872C21.75 33.4904 21.75 33.4936 21.75 33.4968C21.75 33.4999 21.75 33.5032 21.75 33.5064C21.75 33.5096 21.75 33.5128 21.75 33.516C21.75 33.5192 21.75 33.5224 21.75 33.5257C21.75 33.5289 21.75 33.5322 21.75 33.5354C21.75 33.5386 21.75 33.5419 21.75 33.5451C21.75 33.5484 21.75 33.5517 21.75 33.5549C21.75 33.5582 21.75 33.5615 21.75 33.5647C21.75 33.568 21.75 33.5713 21.75 33.5746C21.75 33.5779 21.75 33.5812 21.75 33.5845C21.75 33.5878 21.75 33.5911 21.75 33.5944C21.75 33.5977 21.75 33.6011 21.75 33.6044C21.75 33.6077 21.75 33.611 21.75 33.6144C21.75 33.6177 21.75 33.6211 21.75 33.6244C21.75 33.6278 21.75 33.6311 21.75 33.6345C21.75 33.6379 21.75 33.6412 21.75 33.6446C21.75 33.648 21.75 33.6514 21.75 33.6547C21.75 33.6581 21.75 33.6615 21.75 33.6649C21.75 33.6683 21.75 33.6717 21.75 33.6752C21.75 33.6786 21.75 33.682 21.75 33.6854C21.75 33.6888 21.75 33.6923 21.75 33.6957C21.75 33.6991 21.75 33.7026 21.75 33.706C21.75 33.7095 21.75 33.713 21.75 33.7164C21.75 33.7199 21.75 33.7234 21.75 33.7268C21.75 33.7303 21.75 33.7338 21.75 33.7373C21.75 33.7408 21.75 33.7443 21.75 33.7478C21.75 33.7513 21.75 33.7548 21.75 33.7583C21.75 33.7618 21.75 33.7653 21.75 33.7689C21.75 33.7724 21.75 33.7759 21.75 33.7795C21.75 33.783 21.75 33.7865 21.75 33.7901C21.75 33.7937 21.75 33.7972 21.75 33.8008C21.75 33.8044 21.75 33.8079 21.75 33.8115C21.75 33.8151 21.75 33.8187 21.75 33.8223C21.75 33.8259 21.75 33.8295 21.75 33.8331C21.75 33.8367 21.75 33.8403 21.75 33.8439C21.75 33.8475 21.75 33.8512 21.75 33.8548C21.75 33.8584 21.75 33.8621 21.75 33.8657C21.75 33.8694 21.75 33.873 21.75 33.8767C21.75 33.8803 21.75 33.884 21.75 33.8877C21.75 33.8914 21.75 33.895 21.75 33.8987C21.75 33.9024 21.75 33.9061 21.75 33.9098C21.75 33.9135 21.75 33.9172 21.75 33.9209C21.75 33.9247 21.75 33.9284 21.75 33.9321C21.75 33.9358 21.75 33.9396 21.75 33.9433C21.75 33.9471 21.75 33.9508 21.75 33.9546C21.75 33.9583 21.75 33.9621 21.75 33.9659C21.75 33.9696 21.75 33.9734 21.75 33.9772C21.75 33.981 21.75 33.9848 21.75 33.9886C21.75 33.9924 21.75 33.9962 21.75 34H23.25C23.25 33.9962 23.25 33.9924 23.25 33.9886C23.25 33.9848 23.25 33.981 23.25 33.9772C23.25 33.9734 23.25 33.9696 23.25 33.9659C23.25 33.9621 23.25 33.9583 23.25 33.9546C23.25 33.9508 23.25 33.9471 23.25 33.9433C23.25 33.9396 23.25 33.9358 23.25 33.9321C23.25 33.9284 23.25 33.9247 23.25 33.9209C23.25 33.9172 23.25 33.9135 23.25 33.9098C23.25 33.9061 23.25 33.9024 23.25 33.8987C23.25 33.895 23.25 33.8914 23.25 33.8877C23.25 33.884 23.25 33.8803 23.25 33.8767C23.25 33.873 23.25 33.8694 23.25 33.8657C23.25 33.8621 23.25 33.8584 23.25 33.8548C23.25 33.8512 23.25 33.8475 23.25 33.8439C23.25 33.8403 23.25 33.8367 23.25 33.8331C23.25 33.8295 23.25 33.8259 23.25 33.8223C23.25 33.8187 23.25 33.8151 23.25 33.8115C23.25 33.8079 23.25 33.8044 23.25 33.8008C23.25 33.7972 23.25 33.7937 23.25 33.7901C23.25 33.7865 23.25 33.783 23.25 33.7795C23.25 33.7759 23.25 33.7724 23.25 33.7689C23.25 33.7653 23.25 33.7618 23.25 33.7583C23.25 33.7548 23.25 33.7513 23.25 33.7478C23.25 33.7443 23.25 33.7408 23.25 33.7373C23.25 33.7338 23.25 33.7303 23.25 33.7268C23.25 33.7234 23.25 33.7199 23.25 33.7164C23.25 33.713 23.25 33.7095 23.25 33.706C23.25 33.7026 23.25 33.6991 23.25 33.6957C23.25 33.6923 23.25 33.6888 23.25 33.6854C23.25 33.682 23.25 33.6786 23.25 33.6752C23.25 33.6717 23.25 33.6683 23.25 33.6649C23.25 33.6615 23.25 33.6581 23.25 33.6547C23.25 33.6514 23.25 33.648 23.25 33.6446C23.25 33.6412 23.25 33.6379 23.25 33.6345C23.25 33.6311 23.25 33.6278 23.25 33.6244C23.25 33.6211 23.25 33.6177 23.25 33.6144C23.25 33.611 23.25 33.6077 23.25 33.6044C23.25 33.6011 23.25 33.5977 23.25 33.5944C23.25 33.5911 23.25 33.5878 23.25 33.5845C23.25 33.5812 23.25 33.5779 23.25 33.5746C23.25 33.5713 23.25 33.568 23.25 33.5647C23.25 33.5615 23.25 33.5582 23.25 33.5549C23.25 33.5517 23.25 33.5484 23.25 33.5451C23.25 33.5419 23.25 33.5386 23.25 33.5354C23.25 33.5322 23.25 33.5289 23.25 33.5257C23.25 33.5224 23.25 33.5192 23.25 33.516C23.25 33.5128 23.25 33.5096 23.25 33.5064C23.25 33.5032 23.25 33.4999 23.25 33.4968C23.25 33.4936 23.25 33.4904 23.25 33.4872C23.25 33.484 23.25 33.4808 23.25 33.4776C23.25 33.4745 23.25 33.4713 23.25 33.4681C23.25 33.465 23.25 33.4618 23.25 33.4587C23.25 33.4555 23.25 33.4524 23.25 33.4492C23.25 33.4461 23.25 33.4429 23.25 33.4398C23.25 33.4367 23.25 33.4336 23.25 33.4304C23.25 33.4273 23.25 33.4242 23.25 33.4211C23.25 33.418 23.25 33.4149 23.25 33.4118C23.25 33.4087 23.25 33.4056 23.25 33.4025C23.25 33.3995 23.25 33.3964 23.25 33.3933C23.25 33.3902 23.25 33.3872 23.25 33.3841C23.25 33.381 23.25 33.378 23.25 33.3749C23.25 33.3719 23.25 33.3688 23.25 33.3658C23.25 33.3627 23.25 33.3597 23.25 33.3567C23.25 33.3536 23.25 33.3506 23.25 33.3476C23.25 33.3446 23.25 33.3416 23.25 33.3386C23.25 33.3355 23.25 33.3325 23.25 33.3295C23.25 33.3265 23.25 33.3235 23.25 33.3206C23.25 33.3176 23.25 33.3146 23.25 33.3116C23.25 33.3086 23.25 33.3057 23.25 33.3027C23.25 33.2997 23.25 33.2968 23.25 33.2938C23.25 33.2908 23.25 33.2879 23.25 33.285C23.25 33.282 23.25 33.2791 23.25 33.2761C23.25 33.2732 23.25 33.2703 23.25 33.2673C23.25 33.2644 23.25 33.2615 23.25 33.2586C23.25 33.2556 23.25 33.2527 23.25 33.2498C23.25 33.2469 23.25 33.244 23.25 33.2411C23.25 33.2382 23.25 33.2353 23.25 33.2325C23.25 33.2296 23.25 33.2267 23.25 33.2238C23.25 33.2209 23.25 33.2181 23.25 33.2152C23.25 33.2123 23.25 33.2095 23.25 33.2066C23.25 33.2038 23.25 33.2009 23.25 33.1981C23.25 33.1952 23.25 33.1924 23.25 33.1895C23.25 33.1867 23.25 33.1839 23.25 33.181C23.25 33.1782 23.25 33.1754 23.25 33.1726C23.25 33.1697 23.25 33.1669 23.25 33.1641C23.25 33.1613 23.25 33.1585 23.25 33.1557C23.25 33.1529 23.25 33.1501 23.25 33.1473C23.25 33.1445 23.25 33.1417 23.25 33.139C23.25 33.1362 23.25 33.1334 23.25 33.1306C23.25 33.1279 23.25 33.1251 23.25 33.1223C23.25 33.1196 23.25 33.1168 23.25 33.1141C23.25 33.1113 23.25 33.1086 23.25 33.1058C23.25 33.1031 23.25 33.1003 23.25 33.0976C23.25 33.0949 23.25 33.0921 23.25 33.0894C23.25 33.0867 23.25 33.084 23.25 33.0812C23.25 33.0785 23.25 33.0758 23.25 33.0731C23.25 33.0704 23.25 33.0677 23.25 33.065C23.25 33.0623 23.25 33.0596 23.25 33.0569C23.25 33.0542 23.25 33.0515 23.25 33.0488C23.25 33.0462 23.25 33.0435 23.25 33.0408C23.25 33.0381 23.25 33.0355 23.25 33.0328C23.25 33.0301 23.25 33.0275 23.25 33.0248C23.25 33.0222 23.25 33.0195 23.25 33.0169C23.25 33.0142 23.25 33.0116 23.25 33.0089C23.25 33.0063 23.25 33.0037 23.25 33.001C23.25 32.9984 23.25 32.9958 23.25 32.9932C23.25 32.9905 23.25 32.9879 23.25 32.9853C23.25 32.9827 23.25 32.9801 23.25 32.9775C23.25 32.9749 23.25 32.9723 23.25 32.9697C23.25 32.9671 23.25 32.9645 23.25 32.9619C23.25 32.9593 23.25 32.9567 23.25 32.9541C23.25 32.9516 23.25 32.949 23.25 32.9464C23.25 32.9438 23.25 32.9413 23.25 32.9387C23.25 32.9361 23.25 32.9336 23.25 32.931C23.25 32.9285 23.25 32.9259 23.25 32.9233C23.25 32.9208 23.25 32.9183 23.25 32.9157C23.25 32.9132 23.25 32.9106 23.25 32.9081C23.25 32.9056 23.25 32.903 23.25 32.9005C23.25 32.898 23.25 32.8955 23.25 32.8929C23.25 32.8904 23.25 32.8879 23.25 32.8854C23.25 32.8829 23.25 32.8804 23.25 32.8779C23.25 32.8754 23.25 32.8729 23.25 32.8704C23.25 32.8679 23.25 32.8654 23.25 32.8629C23.25 32.8604 23.25 32.8579 23.25 32.8554C23.25 32.853 23.25 32.8505 23.25 32.848C23.25 32.8455 23.25 32.8431 23.25 32.8406C23.25 32.8381 23.25 32.8357 23.25 32.8332C23.25 32.8307 23.25 32.8283 23.25 32.8258C23.25 32.8234 23.25 32.8209 23.25 32.8185C23.25 32.816 23.25 32.8136 23.25 32.8111C23.25 32.8087 23.25 32.8063 23.25 32.8038C23.25 32.8014 23.25 32.799 23.25 32.7966C23.25 32.7941 23.25 32.7917 23.25 32.7893C23.25 32.7869 23.25 32.7845 23.25 32.782C23.25 32.7796 23.25 32.7772 23.25 32.7748C23.25 32.7724 23.25 32.77 23.25 32.7676C23.25 32.7652 23.25 32.7628 23.25 32.7604C23.25 32.758 23.25 32.7557 23.25 32.7533C23.25 32.7509 23.25 32.7485 23.25 32.7461C23.25 32.7437 23.25 32.7414 23.25 32.739C23.25 32.7366 23.25 32.7343 23.25 32.7319C23.25 32.7295 23.25 32.7272 23.25 32.7248C23.25 32.7224 23.25 32.7201 23.25 32.7177C23.25 32.7154 23.25 32.713 23.25 32.7107C23.25 32.7083 23.25 32.706 23.25 32.7037C23.25 32.7013 23.25 32.699 23.25 32.6966C23.25 32.6943 23.25 32.692 23.25 32.6897C23.25 32.6873 23.25 32.685 23.25 32.6827C23.25 32.6804 23.25 32.678 23.25 32.6757C23.25 32.6734 23.25 32.6711 23.25 32.6688C23.25 32.6665 23.25 32.6642 23.25 32.6619C23.25 32.6596 23.25 32.6573 23.25 32.655C23.25 32.6527 23.25 32.6504 23.25 32.6481C23.25 32.6458 23.25 32.6435 23.25 32.6412C23.25 32.6389 23.25 32.6366 23.25 32.6343C23.25 32.6321 23.25 32.6298 23.25 32.6275C23.25 32.6252 23.25 32.623 23.25 32.6207C23.25 32.6184 23.25 32.6161 23.25 32.6139C23.25 32.6116 23.25 32.6093 23.25 32.6071C23.25 32.6048 23.25 32.6026 23.25 32.6003C23.25 32.5981 23.25 32.5958 23.25 32.5936C23.25 32.5913 23.25 32.5891 23.25 32.5868C23.25 32.5846 23.25 32.5823 23.25 32.5801C23.25 32.5779 23.25 32.5756 23.25 32.5734C23.25 32.5712 23.25 32.5689 23.25 32.5667C23.25 32.5645 23.25 32.5622 23.25 32.56C23.25 32.5578 23.25 32.5556 23.25 32.5534C23.25 32.5511 23.25 32.5489 23.25 32.5467C23.25 32.5445 23.25 32.5423 23.25 32.5401C23.25 32.5379 23.25 32.5357 23.25 32.5335C23.25 32.5312 23.25 32.529 23.25 32.5268C23.25 32.5246 23.25 32.5225 23.25 32.5203C23.25 32.5181 23.25 32.5159 23.25 32.5137C23.25 32.5115 23.25 32.5093 23.25 32.5071C23.25 32.5049 23.25 32.5027 23.25 32.5006C23.25 32.4984 23.25 32.4962 23.25 32.494C23.25 32.4919 23.25 32.4897 23.25 32.4875C23.25 32.4853 23.25 32.4832 23.25 32.481C23.25 32.4788 23.25 32.4767 23.25 32.4745C23.25 32.4723 23.25 32.4702 23.25 32.468C23.25 32.4659 23.25 32.4637 23.25 32.4615C23.25 32.4594 23.25 32.4572 23.25 32.4551C23.25 32.4529 23.25 32.4508 23.25 32.4486C23.25 32.4465 23.25 32.4443 23.25 32.4422C23.25 32.4401 23.25 32.4379 23.25 32.4358C23.25 32.4336 23.25 32.4315 23.25 32.4294C23.25 32.4272 23.25 32.4251 23.25 32.423C23.25 32.4208 23.25 32.4187 23.25 32.4166C23.25 32.4145 23.25 32.4123 23.25 32.4102C23.25 32.4081 23.25 32.406 23.25 32.4038C23.25 32.4017 23.25 32.3996 23.25 32.3975C23.25 32.3954 23.25 32.3933 23.25 32.3911C23.25 32.389 23.25 32.3869 23.25 32.3848C23.25 32.3827 23.25 32.3806 23.25 32.3785C23.25 32.3764 23.25 32.3743 23.25 32.3722C23.25 32.3701 23.25 32.368 23.25 32.3659C23.25 32.3638 23.25 32.3617 23.25 32.3596C23.25 32.3575 23.25 32.3554 23.25 32.3533C23.25 32.3512 23.25 32.3491 23.25 32.347C23.25 32.3449 23.25 32.3428 23.25 32.3408C23.25 32.3387 23.25 32.3366 23.25 32.3345C23.25 32.3324 23.25 32.3303 23.25 32.3283C23.25 32.3262 23.25 32.3241 23.25 32.322C23.25 32.3199 23.25 32.3179 23.25 32.3158C23.25 32.3137 23.25 32.3117 23.25 32.3096C23.25 32.3075 23.25 32.3054 23.25 32.3034C23.25 32.3013 23.25 32.2992 23.25 32.2972C23.25 32.2951 23.25 32.293 23.25 32.291C23.25 32.2889 23.25 32.2868 23.25 32.2848C23.25 32.2827 23.25 32.2807 23.25 32.2786C23.25 32.2766 23.25 32.2745 23.25 32.2724C23.25 32.2704 23.25 32.2683 23.25 32.2663C23.25 32.2642 23.25 32.2622 23.25 32.2601C23.25 32.2581 23.25 32.256 23.25 32.254C23.25 32.2519 23.25 32.2499 23.25 32.2478C23.25 32.2458 23.25 32.2437 23.25 32.2417C23.25 32.2397 23.25 32.2376 23.25 32.2356C23.25 32.2335 23.25 32.2315 23.25 32.2294C23.25 32.2274 23.25 32.2254 23.25 32.2233C23.25 32.2213 23.25 32.2193 23.25 32.2172C23.25 32.2152 23.25 32.2132 23.25 32.2111C23.25 32.2091 23.25 32.2071 23.25 32.205C23.25 32.203 23.25 32.201 23.25 32.1989C23.25 32.1969 23.25 32.1949 23.25 32.1928C23.25 32.1908 23.25 32.1888 23.25 32.1868C23.25 32.1847 23.25 32.1827 23.25 32.1807C23.25 32.1787 23.25 32.1766 23.25 32.1746C23.25 32.1726 23.25 32.1706 23.25 32.1686C23.25 32.1665 23.25 32.1645 23.25 32.1625C23.25 32.1605 23.25 32.1585 23.25 32.1564C23.25 32.1544 23.25 32.1524 23.25 32.1504C23.25 32.1484 23.25 32.1464 23.25 32.1443C23.25 32.1423 23.25 32.1403 23.25 32.1383C23.25 32.1363 23.25 32.1343 23.25 32.1323C23.25 32.1302 23.25 32.1282 23.25 32.1262C23.25 32.1242 23.25 32.1222 23.25 32.1202C23.25 32.1182 23.25 32.1162 23.25 32.1142C23.25 32.1121 23.25 32.1101 23.25 32.1081C23.25 32.1061 23.25 32.1041 23.25 32.1021C23.25 32.1001 23.25 32.0981 23.25 32.0961C23.25 32.0941 23.25 32.0921 23.25 32.0901C23.25 32.0881 23.25 32.0861 23.25 32.0841C23.25 32.082 23.25 32.08 23.25 32.078C23.25 32.076 23.25 32.074 23.25 32.072C23.25 32.07 23.25 32.068 23.25 32.066C23.25 32.064 23.25 32.062 23.25 32.06C23.25 32.058 23.25 32.056 23.25 32.054C23.25 32.052 23.25 32.05 23.25 32.048C23.25 32.046 23.25 32.044 23.25 32.042C23.25 32.04 23.25 32.038 23.25 32.036C23.25 32.034 23.25 32.032 23.25 32.03C23.25 32.028 23.25 32.026 23.25 32.024C23.25 32.022 23.25 32.02 23.25 32.018C23.25 32.016 23.25 32.014 23.25 32.012C23.25 32.01 23.25 32.008 23.25 32.006C23.25 32.004 23.25 32.002 23.25 32C23.25 31.998 23.25 31.996 23.25 31.994C23.25 31.992 23.25 31.99 23.25 31.988C23.25 31.986 23.25 31.984 23.25 31.982C23.25 31.98 23.25 31.978 23.25 31.976C23.25 31.974 23.25 31.972 23.25 31.97C23.25 31.968 23.25 31.966 23.25 31.964C23.25 31.962 23.25 31.96 23.25 31.958C23.25 31.956 23.25 31.954 23.25 31.952C23.25 31.95 23.25 31.948 23.25 31.946C23.25 31.944 23.25 31.942 23.25 31.94C23.25 31.938 23.25 31.936 23.25 31.934C23.25 31.932 23.25 31.93 23.25 31.928C23.25 31.926 23.25 31.924 23.25 31.922C23.25 31.92 23.25 31.918 23.25 31.9159C23.25 31.9139 23.25 31.9119 23.25 31.9099C23.25 31.9079 23.25 31.9059 23.25 31.9039C23.25 31.9019 23.25 31.8999 23.25 31.8979C23.25 31.8959 23.25 31.8939 23.25 31.8919C23.25 31.8899 23.25 31.8879 23.25 31.8858C23.25 31.8838 23.25 31.8818 23.25 31.8798C23.25 31.8778 23.25 31.8758 23.25 31.8738C23.25 31.8718 23.25 31.8698 23.25 31.8677C23.25 31.8657 23.25 31.8637 23.25 31.8617C23.25 31.8597 23.25 31.8577 23.25 31.8557C23.25 31.8536 23.25 31.8516 23.25 31.8496C23.25 31.8476 23.25 31.8456 23.25 31.8436C23.25 31.8415 23.25 31.8395 23.25 31.8375C23.25 31.8355 23.25 31.8335 23.25 31.8314C23.25 31.8294 23.25 31.8274 23.25 31.8254C23.25 31.8234 23.25 31.8213 23.25 31.8193C23.25 31.8173 23.25 31.8153 23.25 31.8132C23.25 31.8112 23.25 31.8092 23.25 31.8072C23.25 31.8051 23.25 31.8031 23.25 31.8011C23.25 31.799 23.25 31.797 23.25 31.795C23.25 31.7929 23.25 31.7909 23.25 31.7889C23.25 31.7868 23.25 31.7848 23.25 31.7828C23.25 31.7807 23.25 31.7787 23.25 31.7767C23.25 31.7746 23.25 31.7726 23.25 31.7706C23.25 31.7685 23.25 31.7665 23.25 31.7644C23.25 31.7624 23.25 31.7603 23.25 31.7583C23.25 31.7563 23.25 31.7542 23.25 31.7522C23.25 31.7501 23.25 31.7481 23.25 31.746C23.25 31.744 23.25 31.7419 23.25 31.7399C23.25 31.7378 23.25 31.7358 23.25 31.7337C23.25 31.7317 23.25 31.7296 23.25 31.7276C23.25 31.7255 23.25 31.7234 23.25 31.7214C23.25 31.7193 23.25 31.7173 23.25 31.7152C23.25 31.7132 23.25 31.7111 23.25 31.709C23.25 31.707 23.25 31.7049 23.25 31.7028C23.25 31.7008 23.25 31.6987 23.25 31.6966C23.25 31.6946 23.25 31.6925 23.25 31.6904C23.25 31.6883 23.25 31.6863 23.25 31.6842C23.25 31.6821 23.25 31.6801 23.25 31.678C23.25 31.6759 23.25 31.6738 23.25 31.6717C23.25 31.6697 23.25 31.6676 23.25 31.6655C23.25 31.6634 23.25 31.6613 23.25 31.6592C23.25 31.6572 23.25 31.6551 23.25 31.653C23.25 31.6509 23.25 31.6488 23.25 31.6467C23.25 31.6446 23.25 31.6425 23.25 31.6404C23.25 31.6383 23.25 31.6362 23.25 31.6341C23.25 31.632 23.25 31.6299 23.25 31.6278C23.25 31.6257 23.25 31.6236 23.25 31.6215C23.25 31.6194 23.25 31.6173 23.25 31.6152C23.25 31.6131 23.25 31.611 23.25 31.6089C23.25 31.6067 23.25 31.6046 23.25 31.6025C23.25 31.6004 23.25 31.5983 23.25 31.5962C23.25 31.594 23.25 31.5919 23.25 31.5898C23.25 31.5877 23.25 31.5855 23.25 31.5834C23.25 31.5813 23.25 31.5792 23.25 31.577C23.25 31.5749 23.25 31.5728 23.25 31.5706C23.25 31.5685 23.25 31.5664 23.25 31.5642C23.25 31.5621 23.25 31.5599 23.25 31.5578C23.25 31.5557 23.25 31.5535 23.25 31.5514C23.25 31.5492 23.25 31.5471 23.25 31.5449C23.25 31.5428 23.25 31.5406 23.25 31.5385C23.25 31.5363 23.25 31.5341 23.25 31.532C23.25 31.5298 23.25 31.5277 23.25 31.5255C23.25 31.5233 23.25 31.5212 23.25 31.519C23.25 31.5168 23.25 31.5147 23.25 31.5125C23.25 31.5103 23.25 31.5081 23.25 31.506C23.25 31.5038 23.25 31.5016 23.25 31.4994C23.25 31.4973 23.25 31.4951 23.25 31.4929C23.25 31.4907 23.25 31.4885 23.25 31.4863C23.25 31.4841 23.25 31.4819 23.25 31.4797C23.25 31.4775 23.25 31.4754 23.25 31.4732C23.25 31.471 23.25 31.4688 23.25 31.4665C23.25 31.4643 23.25 31.4621 23.25 31.4599C23.25 31.4577 23.25 31.4555 23.25 31.4533C23.25 31.4511 23.25 31.4489 23.25 31.4466C23.25 31.4444 23.25 31.4422 23.25 31.44C23.25 31.4378 23.25 31.4355 23.25 31.4333C23.25 31.4311 23.25 31.4288 23.25 31.4266C23.25 31.4244 23.25 31.4221 23.25 31.4199C23.25 31.4177 23.25 31.4154 23.25 31.4132C23.25 31.4109 23.25 31.4087 23.25 31.4064C23.25 31.4042 23.25 31.4019 23.25 31.3997C23.25 31.3974 23.25 31.3952 23.25 31.3929C23.25 31.3907 23.25 31.3884 23.25 31.3861C23.25 31.3839 23.25 31.3816 23.25 31.3793C23.25 31.377 23.25 31.3748 23.25 31.3725C23.25 31.3702 23.25 31.3679 23.25 31.3657C23.25 31.3634 23.25 31.3611 23.25 31.3588C23.25 31.3565 23.25 31.3542 23.25 31.3519C23.25 31.3496 23.25 31.3473 23.25 31.345C23.25 31.3427 23.25 31.3404 23.25 31.3381C23.25 31.3358 23.25 31.3335 23.25 31.3312C23.25 31.3289 23.25 31.3266 23.25 31.3243C23.25 31.322 23.25 31.3196 23.25 31.3173C23.25 31.315 23.25 31.3127 23.25 31.3103C23.25 31.308 23.25 31.3057 23.25 31.3034C23.25 31.301 23.25 31.2987 23.25 31.2963C23.25 31.294 23.25 31.2917 23.25 31.2893C23.25 31.287 23.25 31.2846 23.25 31.2823C23.25 31.2799 23.25 31.2776 23.25 31.2752C23.25 31.2728 23.25 31.2705 23.25 31.2681C23.25 31.2657 23.25 31.2634 23.25 31.261C23.25 31.2586 23.25 31.2563 23.25 31.2539C23.25 31.2515 23.25 31.2491 23.25 31.2467C23.25 31.2443 23.25 31.242 23.25 31.2396C23.25 31.2372 23.25 31.2348 23.25 31.2324C23.25 31.23 23.25 31.2276 23.25 31.2252C23.25 31.2228 23.25 31.2204 23.25 31.218C23.25 31.2155 23.25 31.2131 23.25 31.2107C23.25 31.2083 23.25 31.2059 23.25 31.2034C23.25 31.201 23.25 31.1986 23.25 31.1962C23.25 31.1937 23.25 31.1913 23.25 31.1889C23.25 31.1864 23.25 31.184 23.25 31.1815C23.25 31.1791 23.25 31.1766 23.25 31.1742C23.25 31.1717 23.25 31.1693 23.25 31.1668C23.25 31.1643 23.25 31.1619 23.25 31.1594C23.25 31.1569 23.25 31.1545 23.25 31.152C23.25 31.1495 23.25 31.147 23.25 31.1446C23.25 31.1421 23.25 31.1396 23.25 31.1371C23.25 31.1346 23.25 31.1321 23.25 31.1296C23.25 31.1271 23.25 31.1246 23.25 31.1221C23.25 31.1196 23.25 31.1171 23.25 31.1146C23.25 31.1121 23.25 31.1096 23.25 31.1071C23.25 31.1045 23.25 31.102 23.25 31.0995C23.25 31.097 23.25 31.0944 23.25 31.0919C23.25 31.0894 23.25 31.0868 23.25 31.0843C23.25 31.0817 23.25 31.0792 23.25 31.0767C23.25 31.0741 23.25 31.0715 23.25 31.069C23.25 31.0664 23.25 31.0639 23.25 31.0613C23.25 31.0587 23.25 31.0562 23.25 31.0536C23.25 31.051 23.25 31.0484 23.25 31.0459C23.25 31.0433 23.25 31.0407 23.25 31.0381C23.25 31.0355 23.25 31.0329 23.25 31.0303C23.25 31.0277 23.25 31.0251 23.25 31.0225C23.25 31.0199 23.25 31.0173 23.25 31.0147C23.25 31.0121 23.25 31.0095 23.25 31.0068C23.25 31.0042 23.25 31.0016 23.25 30.999C23.25 30.9963 23.25 30.9937 23.25 30.9911C23.25 30.9884 23.25 30.9858 23.25 30.9831C23.25 30.9805 23.25 30.9778 23.25 30.9752C23.25 30.9725 23.25 30.9699 23.25 30.9672C23.25 30.9645 23.25 30.9619 23.25 30.9592C23.25 30.9565 23.25 30.9538 23.25 30.9512C23.25 30.9485 23.25 30.9458 23.25 30.9431C23.25 30.9404 23.25 30.9377 23.25 30.935C23.25 30.9323 23.25 30.9296 23.25 30.9269C23.25 30.9242 23.25 30.9215 23.25 30.9188C23.25 30.916 23.25 30.9133 23.25 30.9106C23.25 30.9079 23.25 30.9051 23.25 30.9024C23.25 30.8997 23.25 30.8969 23.25 30.8942C23.25 30.8914 23.25 30.8887 23.25 30.8859C23.25 30.8832 23.25 30.8804 23.25 30.8777C23.25 30.8749 23.25 30.8721 23.25 30.8694C23.25 30.8666 23.25 30.8638 23.25 30.861C23.25 30.8583 23.25 30.8555 23.25 30.8527C23.25 30.8499 23.25 30.8471 23.25 30.8443C23.25 30.8415 23.25 30.8387 23.25 30.8359C23.25 30.8331 23.25 30.8303 23.25 30.8274C23.25 30.8246 23.25 30.8218 23.25 30.819C23.25 30.8161 23.25 30.8133 23.25 30.8105C23.25 30.8076 23.25 30.8048 23.25 30.8019C23.25 30.7991 23.25 30.7962 23.25 30.7934C23.25 30.7905 23.25 30.7877 23.25 30.7848C23.25 30.7819 23.25 30.7791 23.25 30.7762C23.25 30.7733 23.25 30.7704 23.25 30.7675C23.25 30.7647 23.25 30.7618 23.25 30.7589C23.25 30.756 23.25 30.7531 23.25 30.7502C23.25 30.7473 23.25 30.7444 23.25 30.7414C23.25 30.7385 23.25 30.7356 23.25 30.7327C23.25 30.7297 23.25 30.7268 23.25 30.7239C23.25 30.7209 23.25 30.718 23.25 30.715C23.25 30.7121 23.25 30.7092 23.25 30.7062C23.25 30.7032 23.25 30.7003 23.25 30.6973C23.25 30.6943 23.25 30.6914 23.25 30.6884C23.25 30.6854 23.25 30.6824 23.25 30.6794C23.25 30.6765 23.25 30.6735 23.25 30.6705C23.25 30.6675 23.25 30.6645 23.25 30.6614C23.25 30.6584 23.25 30.6554 23.25 30.6524C23.25 30.6494 23.25 30.6464 23.25 30.6433C23.25 30.6403 23.25 30.6373 23.25 30.6342C23.25 30.6312 23.25 30.6281 23.25 30.6251C23.25 30.622 23.25 30.619 23.25 30.6159C23.25 30.6128 23.25 30.6098 23.25 30.6067C23.25 30.6036 23.25 30.6005 23.25 30.5975C23.25 30.5944 23.25 30.5913 23.25 30.5882C23.25 30.5851 23.25 30.582 23.25 30.5789C23.25 30.5758 23.25 30.5727 23.25 30.5696C23.25 30.5664 23.25 30.5633 23.25 30.5602C23.25 30.5571 23.25 30.5539 23.25 30.5508C23.25 30.5476 23.25 30.5445 23.25 30.5413C23.25 30.5382 23.25 30.535 23.25 30.5319C23.25 30.5287 23.25 30.5255 23.25 30.5224C23.25 30.5192 23.25 30.516 23.25 30.5128C23.25 30.5096 23.25 30.5064 23.25 30.5032C23.25 30.5001 23.25 30.4968 23.25 30.4936C23.25 30.4904 23.25 30.4872 23.25 30.484C23.25 30.4808 23.25 30.4776 23.25 30.4743C23.25 30.4711 23.25 30.4678 23.25 30.4646C23.25 30.4614 23.25 30.4581 23.25 30.4549C23.25 30.4516 23.25 30.4483 23.25 30.4451C23.25 30.4418 23.25 30.4385 23.25 30.4353C23.25 30.432 23.25 30.4287 23.25 30.4254C23.25 30.4221 23.25 30.4188 23.25 30.4155C23.25 30.4122 23.25 30.4089 23.25 30.4056C23.25 30.4023 23.25 30.3989 23.25 30.3956C23.25 30.3923 23.25 30.389 23.25 30.3856C23.25 30.3823 23.25 30.3789 23.25 30.3756C23.25 30.3722 23.25 30.3689 23.25 30.3655C23.25 30.3621 23.25 30.3588 23.25 30.3554C23.25 30.352 23.25 30.3486 23.25 30.3453C23.25 30.3419 23.25 30.3385 23.25 30.3351C23.25 30.3317 23.25 30.3283 23.25 30.3248C23.25 30.3214 23.25 30.318 23.25 30.3146C23.25 30.3112 23.25 30.3077 23.25 30.3043C23.25 30.3009 23.25 30.2974 23.25 30.294C23.25 30.2905 23.25 30.287 23.25 30.2836C23.25 30.2801 23.25 30.2766 23.25 30.2732C23.25 30.2697 23.25 30.2662 23.25 30.2627C23.25 30.2592 23.25 30.2557 23.25 30.2522C23.25 30.2487 23.25 30.2452 23.25 30.2417C23.25 30.2382 23.25 30.2347 23.25 30.2311C23.25 30.2276 23.25 30.2241 23.25 30.2205C23.25 30.217 23.25 30.2135 23.25 30.2099C23.25 30.2063 23.25 30.2028 23.25 30.1992C23.25 30.1956 23.25 30.1921 23.25 30.1885C23.25 30.1849 23.25 30.1813 23.25 30.1777C23.25 30.1741 23.25 30.1705 23.25 30.1669C23.25 30.1633 23.25 30.1597 23.25 30.1561C23.25 30.1525 23.25 30.1488 23.25 30.1452C23.25 30.1416 23.25 30.1379 23.25 30.1343C23.25 30.1306 23.25 30.127 23.25 30.1233C23.25 30.1197 23.25 30.116 23.25 30.1123C23.25 30.1086 23.25 30.105 23.25 30.1013C23.25 30.0976 23.25 30.0939 23.25 30.0902C23.25 30.0865 23.25 30.0828 23.25 30.0791C23.25 30.0753 23.25 30.0716 23.25 30.0679C23.25 30.0642 23.25 30.0604 23.25 30.0567C23.25 30.0529 23.25 30.0492 23.25 30.0454C23.25 30.0417 23.25 30.0379 23.25 30.0341C23.25 30.0304 23.25 30.0266 23.25 30.0228C23.25 30.019 23.25 30.0152 23.25 30.0114C23.25 30.0076 23.25 30.0038 23.25 30H21.75Z" fill="#333333"/> -<path d="M22.3711 13.6256L22.3711 13.6252L22.3711 13.6242L22.3713 13.6148C22.3716 13.6058 22.3723 13.5914 22.3736 13.5724C22.3762 13.5344 22.3816 13.4785 22.3925 13.4109C22.4145 13.2743 22.458 13.0962 22.5425 12.9213C22.6267 12.7471 22.7486 12.5818 22.9257 12.4597C23.1008 12.339 23.3448 12.25 23.692 12.25H23.7012H23.7105H23.7199H23.7294H23.7389H23.7485H23.7581H23.7679H23.7777H23.7875H23.7975H23.8075H23.8176H23.8277H23.8379H23.8482H23.8585H23.869H23.8794H23.89H23.9006H23.9112H23.922H23.9328H23.9436H23.9546H23.9655H23.9766H23.9877H23.9989H24.0101H24.0214H24.0328H24.0442H24.0557H24.0672H24.0788H24.0904H24.1022H24.1139H24.1258H24.1376H24.1496H24.1616H24.1736H24.1858H24.1979H24.2101H24.2224H24.2348H24.2471H24.2596H24.2721H24.2846H24.2972H24.3099H24.3226H24.3354H24.3482H24.361H24.3739H24.3869H24.3999H24.413H24.4261H24.4392H24.4525H24.4657H24.479H24.4924H24.5058H24.5192H24.5327H24.5463H24.5598H24.5735H24.5872H24.6009H24.6146H24.6285H24.6423H24.6562H24.6702H24.6841H24.6982H24.7122H24.7263H24.7405H24.7547H24.7689H24.7832H24.7975H24.8119H24.8263H24.8407H24.8552H24.8697H24.8842H24.8988H24.9134H24.9281H24.9428H24.9575H24.9723H24.9871H25.0019H25.0168H25.0317H25.0466H25.0616H25.0766H25.0916H25.1067H25.1218H25.137H25.1521H25.1673H25.1826H25.1978H25.2131H25.2284H25.2438H25.2592H25.2746H25.29H25.3055H25.321H25.3365H25.352H25.3676H25.3832H25.3988H25.4145H25.4301H25.4458H25.4616H25.4773H25.4931H25.5089H25.5247H25.5405H25.5564H25.5723H25.5882H25.6041H25.6201H25.6361H25.652H25.6681H25.6841H25.7001H25.7162H25.7323H25.7484H25.7645H25.7807H25.7968H25.813H25.8292H25.8454H25.8616H25.8779H25.8941H25.9104H25.9267H25.943H25.9593H25.9756H25.9919H26.0083H26.0246H26.041H26.0574H26.0738H26.0902H26.1066H26.123H26.1395H26.1559H26.1724H26.1888H26.2053H26.2218H26.2383H26.2548H26.2713H26.2878H26.3043H26.3208H26.3374H26.3539H26.3704H26.387H26.4035H26.4201H26.4366H26.4532H26.4697H26.4863H26.5029H26.5194H26.536H26.5526H26.5691H26.5857H26.6023H26.6188H26.6354H26.652H26.6685H26.6851H26.7016H26.7182H26.7348H26.7513H26.7679H26.7844H26.8009H26.8175H26.834H26.8505H26.867H26.8836H26.9001H26.9166H26.9331H26.9495H26.966H26.9825H26.9989H27.0154H27.0318H27.0483H27.0647H27.0811H27.0975H27.1139H27.1303H27.1467H27.163H27.1794H27.1957H27.212H27.2283H27.2446H27.2609H27.2771H27.2934H27.3096H27.3258H27.342H27.3582H27.3744H27.3905H27.4067H27.4228H27.4389H27.455H27.471H27.4871H27.5031H27.5191H27.5351H27.551H27.567H27.5829H27.5988H27.6147H27.6305H27.6464H27.6622H27.678H27.6937H27.7095H27.7252H27.7409H27.7565H27.7722H27.7878H27.8034H27.8189H27.8345H27.85H27.8655H27.8809H27.8963H27.9117H27.9271H27.9425H27.9578H27.973H27.9883H28.0035H28.0187H28.0338H28.049H28.0641H28.0791H28.0941H28.1091H28.1241H28.139H28.1539H28.1688H28.1836H28.1984H28.2131H28.2279H28.2425H28.2572H28.2718H28.2864H28.3009H28.3154H28.3298H28.3442H28.3586H28.373H28.3873H28.4015H28.4157H28.4299H28.444H28.4581H28.4722H28.4862H28.5002H28.5141H28.528H28.5418H28.5556H28.5694H28.5831H28.5967H28.6103H28.6239H28.6374H28.6509H28.6643H28.6777H28.6911H28.7043H28.7176H28.7308H28.7439H28.757H28.77H28.783H28.796H28.8089H28.8217H28.8345H28.8472H28.8599H28.8726H28.8851H28.8977H28.9101H28.9226H28.9349H28.9472H28.9595H28.9717H28.9839H28.9959H29.008H29.02H29.0319H29.0437H29.0555H29.0673H29.079H29.0906H29.1022H29.1137H29.1251H29.1365H29.1479H29.1591H29.1703H29.1815H29.1926H29.2036H29.2146H29.2255H29.2363H29.2471H29.2578H29.2684H29.279H29.2895H29.3H29.3103H29.3207H29.3309H29.3411H29.3512H29.3613H29.3712H29.3812H29.391H29.4008H29.4105H29.4201H29.4297H29.4392H29.4486H29.458H29.4672H29.4765H29.4856H29.4947H29.5037H29.5126H29.5214H29.5302H29.5389H29.5475H29.5561H29.5646H29.573H29.5813H29.5895H29.5977H29.6058H29.6138H29.6217H29.6296H29.6374H29.6451H29.6527H29.6603H29.6677H29.6751H29.6824H29.6896H29.6968H29.7038H29.7108H29.7177H29.7245H29.7255V23.125H29.7245H29.7177H29.7108H29.7038H29.6968H29.6896H29.6824H29.6751H29.6677H29.6603H29.6527H29.6451H29.6374H29.6296H29.6217H29.6138H29.6058H29.5977H29.5895H29.5813H29.573H29.5646H29.5561H29.5475H29.5389H29.5302H29.5214H29.5126H29.5037H29.4947H29.4856H29.4765H29.4672H29.458H29.4486H29.4392H29.4297H29.4201H29.4105H29.4008H29.391H29.3812H29.3712H29.3613H29.3512H29.3411H29.3309H29.3207H29.3103H29.3H29.2895H29.279H29.2684H29.2578H29.2471H29.2363H29.2255H29.2146H29.2036H29.1926H29.1815H29.1703H29.1591H29.1479H29.1365H29.1251H29.1137H29.1022H29.0906H29.079H29.0673H29.0555H29.0437H29.0319H29.02H29.008H28.9959H28.9839H28.9717H28.9595H28.9472H28.9349H28.9226H28.9101H28.8977H28.8851H28.8726H28.8599H28.8472H28.8345H28.8217H28.8089H28.796H28.783H28.77H28.757H28.7439H28.7308H28.7176H28.7043H28.6911H28.6777H28.6643H28.6509H28.6374H28.6239H28.6103H28.5967H28.5831H28.5694H28.5556H28.5418H28.528H28.5141H28.5002H28.4862H28.4722H28.4581H28.444H28.4299H28.4157H28.4015H28.3873H28.373H28.3586H28.3442H28.3298H28.3154H28.3009H28.2864H28.2718H28.2572H28.2425H28.2279H28.2131H28.1984H28.1836H28.1688H28.1539H28.139H28.1241H28.1091H28.0941H28.0791H28.0641H28.049H28.0338H28.0187H28.0035H27.9883H27.973H27.9578H27.9425H27.9271H27.9117H27.8963H27.8809H27.8655H27.85H27.8345H27.8189H27.8034H27.7878H27.7722H27.7565H27.7409H27.7252H27.7095H27.6937H27.678H27.6622H27.6464H27.6305H27.6147H27.5988H27.5829H27.567H27.551H27.5351H27.5191H27.5031H27.4871H27.471H27.455H27.4389H27.4228H27.4067H27.3905H27.3744H27.3582H27.342H27.3258H27.3096H27.2934H27.2771H27.2609H27.2446H27.2283H27.212H27.1957H27.1794H27.163H27.1467H27.1303H27.1139H27.0975H27.0811H27.0647H27.0483H27.0318H27.0154H26.9989H26.9825H26.966H26.9495H26.9331H26.9166H26.9001H26.8836H26.867H26.8505H26.834H26.8175H26.8009H26.7844H26.7679H26.7513H26.7348H26.7182H26.7016H26.6851H26.6685H26.652H26.6354H26.6188H26.6023H26.5857H26.5691H26.5526H26.536H26.5194H26.5029H26.4863H26.4697H26.4532H26.4366H26.4201H26.4035H26.387H26.3704H26.3539H26.3374H26.3208H26.3043H26.2878H26.2713H26.2548H26.2383H26.2218H26.2053H26.1888H26.1724H26.1559H26.1395H26.123H26.1066H26.0902H26.0738H26.0574H26.041H26.0246H26.0083H25.9919H25.9756H25.9593H25.943H25.9267H25.9104H25.8941H25.8779H25.8616H25.8454H25.8292H25.813H25.7968H25.7807H25.7645H25.7484H25.7323H25.7162H25.7001H25.6841H25.6681H25.652H25.6361H25.6201H25.6041H25.5882H25.5723H25.5564H25.5405H25.5247H25.5089H25.4931H25.4773H25.4616H25.4458H25.4301H25.4145H25.3988H25.3832H25.3676H25.352H25.3365H25.321H25.3055H25.29H25.2746H25.2592H25.2438H25.2284H25.2131H25.1978H25.1826H25.1673H25.1521H25.137H25.1218H25.1067H25.0916H25.0766H25.0616H25.0466H25.0317H25.0168H25.0019H24.9871H24.9723H24.9575H24.9428H24.9281H24.9134H24.8988H24.8842H24.8697H24.8552H24.8407H24.8263H24.8119H24.7975H24.7832H24.7689H24.7547H24.7405H24.7263H24.7122H24.6982H24.6841H24.6702H24.6562H24.6423H24.6285H24.6146H24.6009H24.5872H24.5735H24.5598H24.5463H24.5327H24.5192H24.5058H24.4924H24.479H24.4657H24.4525H24.4392H24.4261H24.413H24.3999H24.3869H24.3739H24.361H24.3482H24.3354H24.3226H24.3099H24.2972H24.2846H24.2721H24.2596H24.2471H24.2348H24.2224H24.2101H24.1979H24.1858H24.1736H24.1616H24.1496H24.1376H24.1258H24.1139H24.1022H24.0904H24.0788H24.0672H24.0557H24.0442H24.0328H24.0214H24.0101H23.9989H23.9877H23.9766H23.9655H23.9546H23.9436H23.9328H23.922H23.9112H23.9006H23.89H23.8794H23.869H23.8585H23.8482H23.8379H23.8277H23.8176H23.8075H23.7975H23.7875H23.7777H23.7679H23.7581H23.7485H23.7389H23.7294H23.7199H23.7105H23.7012H23.692C23.2537 23.125 22.9086 23.2392 22.6419 23.4231C22.5381 23.4947 22.4485 23.5752 22.3711 23.6607V13.6256Z" stroke="#DA3635" stroke-width="0.5"/> -<path d="M21.8711 13.6256L21.8711 13.6252L21.8711 13.6242L21.8708 13.6148C21.8705 13.6058 21.8699 13.5914 21.8686 13.5724C21.866 13.5344 21.8606 13.4785 21.8497 13.4109C21.8277 13.2743 21.7842 13.0962 21.6996 12.9213C21.6155 12.7471 21.4935 12.5818 21.3165 12.4597C21.1413 12.339 20.8974 12.25 20.5502 12.25H20.541H20.5317H20.5223H20.5128H20.5033H20.4937H20.484H20.4743H20.4645H20.4546H20.4447H20.4347H20.4246H20.4145H20.4043H20.394H20.3836H20.3732H20.3628H20.3522H20.3416H20.3309H20.3202H20.3094H20.2986H20.2876H20.2766H20.2656H20.2545H20.2433H20.2321H20.2208H20.2094H20.198H20.1865H20.175H20.1634H20.1517H20.14H20.1283H20.1164H20.1046H20.0926H20.0806H20.0685H20.0564H20.0443H20.032H20.0198H20.0074H19.995H19.9826H19.9701H19.9576H19.945H19.9323H19.9196H19.9068H19.894H19.8812H19.8683H19.8553H19.8423H19.8292H19.8161H19.8029H19.7897H19.7765H19.7632H19.7498H19.7364H19.723H19.7095H19.6959H19.6823H19.6687H19.655H19.6413H19.6275H19.6137H19.5999H19.586H19.572H19.558H19.544H19.5299H19.5158H19.5017H19.4875H19.4733H19.459H19.4447H19.4303H19.4159H19.4015H19.387H19.3725H19.358H19.3434H19.3288H19.3141H19.2994H19.2847H19.2699H19.2551H19.2403H19.2254H19.2105H19.1956H19.1806H19.1656H19.1505H19.1355H19.1204H19.1052H19.0901H19.0749H19.0596H19.0444H19.0291H19.0138H18.9984H18.983H18.9676H18.9522H18.9367H18.9212H18.9057H18.8902H18.8746H18.859H18.8434H18.8277H18.812H18.7963H18.7806H18.7649H18.7491H18.7333H18.7175H18.7016H18.6858H18.6699H18.654H18.6381H18.6221H18.6061H18.5901H18.5741H18.5581H18.542H18.526H18.5099H18.4938H18.4777H18.4615H18.4454H18.4292H18.413H18.3968H18.3806H18.3643H18.3481H18.3318H18.3155H18.2992H18.2829H18.2666H18.2503H18.2339H18.2175H18.2012H18.1848H18.1684H18.152H18.1356H18.1191H18.1027H18.0863H18.0698H18.0533H18.0369H18.0204H18.0039H17.9874H17.9709H17.9544H17.9379H17.9214H17.9048H17.8883H17.8718H17.8552H17.8387H17.8221H17.8056H17.789H17.7725H17.7559H17.7393H17.7228H17.7062H17.6896H17.6731H17.6565H17.6399H17.6234H17.6068H17.5902H17.5737H17.5571H17.5405H17.524H17.5074H17.4909H17.4743H17.4578H17.4413H17.4247H17.4082H17.3917H17.3751H17.3586H17.3421H17.3256H17.3091H17.2926H17.2762H17.2597H17.2432H17.2268H17.2103H17.1939H17.1775H17.1611H17.1447H17.1283H17.1119H17.0955H17.0792H17.0628H17.0465H17.0302H17.0139H16.9976H16.9813H16.965H16.9488H16.9326H16.9164H16.9002H16.884H16.8678H16.8516H16.8355H16.8194H16.8033H16.7872H16.7712H16.7551H16.7391H16.7231H16.7071H16.6911H16.6752H16.6593H16.6434H16.6275H16.6116H16.5958H16.58H16.5642H16.5485H16.5327H16.517H16.5013H16.4856H16.47H16.4544H16.4388H16.4232H16.4077H16.3922H16.3767H16.3613H16.3458H16.3304H16.3151H16.2997H16.2844H16.2692H16.2539H16.2387H16.2235H16.2083H16.1932H16.1781H16.1631H16.148H16.133H16.1181H16.1032H16.0883H16.0734H16.0586H16.0438H16.0291H16.0143H15.9997H15.985H15.9704H15.9558H15.9413H15.9268H15.9124H15.8979H15.8836H15.8692H15.8549H15.8407H15.8265H15.8123H15.7981H15.784H15.77H15.756H15.742H15.7281H15.7142H15.7004H15.6866H15.6728H15.6591H15.6455H15.6318H15.6183H15.6048H15.5913H15.5778H15.5645H15.5511H15.5378H15.5246H15.5114H15.4983H15.4852H15.4721H15.4591H15.4462H15.4333H15.4205H15.4077H15.3949H15.3823H15.3696H15.357H15.3445H15.332H15.3196H15.3073H15.2949H15.2827H15.2705H15.2583H15.2462H15.2342H15.2222H15.2103H15.1985H15.1866H15.1749H15.1632H15.1516H15.14H15.1285H15.117H15.1057H15.0943H15.083H15.0718H15.0607H15.0496H15.0386H15.0276H15.0167H15.0059H14.9951H14.9844H14.9738H14.9632H14.9527H14.9422H14.9318H14.9215H14.9113H14.9011H14.891H14.8809H14.8709H14.861H14.8512H14.8414H14.8317H14.8221H14.8125H14.803H14.7936H14.7842H14.7749H14.7657H14.7566H14.7475H14.7385H14.7296H14.7208H14.712H14.7033H14.6947H14.6861H14.6776H14.6692H14.6609H14.6527H14.6445H14.6364H14.6284H14.6204H14.6126H14.6048H14.5971H14.5895H14.5819H14.5745H14.5671H14.5598H14.5525H14.5454H14.5383H14.5314H14.5245H14.5177H14.5167V23.125H14.5177H14.5245H14.5314H14.5383H14.5454H14.5525H14.5598H14.5671H14.5745H14.5819H14.5895H14.5971H14.6048H14.6126H14.6204H14.6284H14.6364H14.6445H14.6527H14.6609H14.6692H14.6776H14.6861H14.6947H14.7033H14.712H14.7208H14.7296H14.7385H14.7475H14.7566H14.7657H14.7749H14.7842H14.7936H14.803H14.8125H14.8221H14.8317H14.8414H14.8512H14.861H14.8709H14.8809H14.891H14.9011H14.9113H14.9215H14.9318H14.9422H14.9527H14.9632H14.9738H14.9844H14.9951H15.0059H15.0167H15.0276H15.0386H15.0496H15.0607H15.0718H15.083H15.0943H15.1057H15.117H15.1285H15.14H15.1516H15.1632H15.1749H15.1866H15.1985H15.2103H15.2222H15.2342H15.2462H15.2583H15.2705H15.2827H15.2949H15.3073H15.3196H15.332H15.3445H15.357H15.3696H15.3823H15.3949H15.4077H15.4205H15.4333H15.4462H15.4591H15.4721H15.4852H15.4983H15.5114H15.5246H15.5378H15.5511H15.5645H15.5778H15.5913H15.6048H15.6183H15.6318H15.6455H15.6591H15.6728H15.6866H15.7004H15.7142H15.7281H15.742H15.756H15.77H15.784H15.7981H15.8123H15.8265H15.8407H15.8549H15.8692H15.8836H15.8979H15.9124H15.9268H15.9413H15.9558H15.9704H15.985H15.9997H16.0143H16.0291H16.0438H16.0586H16.0734H16.0883H16.1032H16.1181H16.133H16.148H16.1631H16.1781H16.1932H16.2083H16.2235H16.2387H16.2539H16.2692H16.2844H16.2997H16.3151H16.3304H16.3458H16.3613H16.3767H16.3922H16.4077H16.4232H16.4388H16.4544H16.47H16.4856H16.5013H16.517H16.5327H16.5485H16.5642H16.58H16.5958H16.6116H16.6275H16.6434H16.6593H16.6752H16.6911H16.7071H16.7231H16.7391H16.7551H16.7712H16.7872H16.8033H16.8194H16.8355H16.8516H16.8678H16.884H16.9002H16.9164H16.9326H16.9488H16.965H16.9813H16.9976H17.0139H17.0302H17.0465H17.0628H17.0792H17.0955H17.1119H17.1283H17.1447H17.1611H17.1775H17.1939H17.2103H17.2268H17.2432H17.2597H17.2762H17.2926H17.3091H17.3256H17.3421H17.3586H17.3751H17.3917H17.4082H17.4247H17.4413H17.4578H17.4743H17.4909H17.5074H17.524H17.5405H17.5571H17.5737H17.5902H17.6068H17.6234H17.6399H17.6565H17.6731H17.6896H17.7062H17.7228H17.7393H17.7559H17.7725H17.789H17.8056H17.8221H17.8387H17.8552H17.8718H17.8883H17.9048H17.9214H17.9379H17.9544H17.9709H17.9874H18.0039H18.0204H18.0369H18.0533H18.0698H18.0863H18.1027H18.1191H18.1356H18.152H18.1684H18.1848H18.2012H18.2175H18.2339H18.2503H18.2666H18.2829H18.2992H18.3155H18.3318H18.3481H18.3643H18.3806H18.3968H18.413H18.4292H18.4454H18.4615H18.4777H18.4938H18.5099H18.526H18.542H18.5581H18.5741H18.5901H18.6061H18.6221H18.6381H18.654H18.6699H18.6858H18.7016H18.7175H18.7333H18.7491H18.7649H18.7806H18.7963H18.812H18.8277H18.8434H18.859H18.8746H18.8902H18.9057H18.9212H18.9367H18.9522H18.9676H18.983H18.9984H19.0138H19.0291H19.0444H19.0596H19.0749H19.0901H19.1052H19.1204H19.1355H19.1505H19.1656H19.1806H19.1956H19.2105H19.2254H19.2403H19.2551H19.2699H19.2847H19.2994H19.3141H19.3288H19.3434H19.358H19.3725H19.387H19.4015H19.4159H19.4303H19.4447H19.459H19.4733H19.4875H19.5017H19.5158H19.5299H19.544H19.558H19.572H19.586H19.5999H19.6137H19.6275H19.6413H19.655H19.6687H19.6823H19.6959H19.7095H19.723H19.7364H19.7498H19.7632H19.7765H19.7897H19.8029H19.8161H19.8292H19.8423H19.8553H19.8683H19.8812H19.894H19.9068H19.9196H19.9323H19.945H19.9576H19.9701H19.9826H19.995H20.0074H20.0198H20.032H20.0443H20.0564H20.0685H20.0806H20.0926H20.1046H20.1164H20.1283H20.14H20.1517H20.1634H20.175H20.1865H20.198H20.2094H20.2208H20.2321H20.2433H20.2545H20.2656H20.2766H20.2876H20.2986H20.3094H20.3202H20.3309H20.3416H20.3522H20.3628H20.3732H20.3836H20.394H20.4043H20.4145H20.4246H20.4347H20.4447H20.4546H20.4645H20.4743H20.484H20.4937H20.5033H20.5128H20.5223H20.5317H20.541H20.5502C20.9885 23.125 21.3336 23.2392 21.6003 23.4231C21.7041 23.4947 21.7937 23.5752 21.8711 23.6607V13.6256Z" stroke="#DA3635" stroke-width="0.5"/> -<path fill-rule="evenodd" clip-rule="evenodd" d="M14.265 13.9546H13V25.091H19.754C20.2284 25.091 20.9539 25.1929 21.2185 25.3451C21.2508 25.3637 21.2661 25.4099 21.2853 25.468C21.3392 25.6307 21.4239 25.8864 21.9995 25.8864C22.7805 25.8864 22.7805 25.4157 22.7805 25.4157C23.1002 25.2252 23.5509 25.091 24.1862 25.091H31V13.9546H29.9737V23H14.265V13.9546Z" fill="#DA3635"/> -<rect x="15.7383" y="15.5459" width="4.68585" height="0.795455" rx="0.397727" fill="#DA3635"/> -<rect x="23.5938" y="15.5459" width="4.68584" height="0.795455" rx="0.397727" fill="#DA3635"/> -<rect x="15.7383" y="17.9316" width="4.68585" height="0.795455" rx="0.397727" fill="#DA3635"/> -<rect x="23.5938" y="17.9316" width="4.68584" height="0.795455" rx="0.397727" fill="#DA3635"/> -<rect x="15.7383" y="20.3184" width="4.68585" height="0.795455" rx="0.397727" fill="#DA3635"/> -<rect x="23.5938" y="20.3184" width="4.68584" height="0.795455" rx="0.397727" fill="#DA3635"/> -</symbol> +<symbol id="accesLivresInformatiques" width="44" height="44" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 44 44"><path d="M7 10h30v17a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V10Z" fill="#fff"/><rect x="6.25" y="9.25" width="31.5" height="20.5" rx="2.75" stroke="#333" stroke-width="1.5"/><path d="M6 27a2 2 0 0 0 2 2h28a2 2 0 0 0 2-2H6Z" fill="#333"/><path d="M17 34h11" stroke="#333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M23.25 30v-.75h-1.5V30h1.5Zm-1.5 4a.75.75 0 0 0 1.5 0h-1.5Zm0-4V34h1.5V30h-1.5Z" fill="#333"/><path d="M22.371 13.626v-.012l.003-.042a1.798 1.798 0 0 1 .169-.651c.084-.174.206-.34.383-.461.175-.121.419-.21.766-.21H29.726v10.875H23.692c-.438 0-.783.114-1.05.298a1.557 1.557 0 0 0-.27.238V13.626ZM21.871 13.626v-.012l-.002-.042a1.795 1.795 0 0 0-.169-.651 1.164 1.164 0 0 0-.383-.461c-.176-.121-.42-.21-.767-.21H14.517v10.875H20.552c.438 0 .783.114 1.05.298.103.072.193.152.27.238V13.626Z" stroke="#DA3635" stroke-width=".5"/><path fill-rule="evenodd" clip-rule="evenodd" d="M14.265 13.955H13V25.09h6.754c.474 0 1.2.102 1.464.254.033.019.048.065.067.123.054.163.139.418.715.418.78 0 .78-.47.78-.47.32-.19.77-.325 1.406-.325H31V13.955h-1.026V23H14.265v-9.045Z" fill="#DA3635"/><rect x="15.738" y="15.546" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="15.546" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="15.738" y="17.932" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="17.932" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="15.738" y="20.318" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="20.318" width="4.686" height=".795" rx=".398" fill="#DA3635"/></symbol> <symbol id="print" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> <rect x="10" y="8" width="12" height="5" stroke-width="2" fill="none"/> @@ -491,6 +475,15 @@ <path d="M27.0279 11.9135C27.5486 11.3928 28.2873 11.2873 28.6778 11.6778C29.0683 12.0683 28.9628 12.807 28.4421 13.3277L13.3572 28.4127C12.8365 28.9334 12.0978 29.0389 11.7072 28.6484C11.3167 28.2578 11.4222 27.5192 11.9429 26.9985L27.0279 11.9135Z" fill="#333333"/> <path d="M28.0279 27.0279C28.5486 27.5486 28.6541 28.2873 28.2636 28.6778C27.8731 29.0683 27.1344 28.9628 26.6137 28.4421L11.5287 13.3572C11.008 12.8365 10.9025 12.0978 11.293 11.7072C11.6836 11.3167 12.4223 11.4222 12.943 11.9429L28.0279 27.0279Z" fill="#333333"/> </symbol> +<symbol id="structureCreated" width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="path-1-outside-1_5987_73910" maskUnits="userSpaceOnUse" x="16" y="14" width="109" height="141" fill="black"> +<rect fill="white" x="16" y="14" width="109" height="141"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M28.5545 44.4103C21.5551 47.3434 17 54.1911 17 61.7802V153.793L60.9444 153.793V125.543C60.9444 120.343 65.1604 116.127 70.3611 116.127C75.5618 116.127 79.7778 120.343 79.7778 125.543V153.793L123.722 153.793V62.1604C123.722 54.3809 118.939 47.402 111.683 44.5954L102.098 40.8877C99.4214 39.8523 97.0166 38.2188 95.0676 36.1119L79.265 19.0294C74.4112 13.7825 66.1626 13.6404 61.1309 18.717L43.3554 36.6511C41.6129 38.4091 39.541 39.8064 37.258 40.7631L28.5545 44.4103ZM79.7778 37.6544C79.7778 42.8551 75.5618 47.071 70.3611 47.071C65.1604 47.071 60.9444 42.8551 60.9444 37.6544C60.9444 32.4537 65.1604 28.2377 70.3611 28.2377C75.5618 28.2377 79.7778 32.4537 79.7778 37.6544ZM37.4028 109.443C32.9491 110.19 29.5556 114.064 29.5556 118.73V127.113H37.4028V109.443ZM29.5556 146.98V130.252H37.4028V146.98H29.5556ZM40.5417 146.98V130.252H48.3889V146.98H40.5417ZM48.3889 118.73V127.113H40.5417V109.443C44.9953 110.19 48.3889 114.064 48.3889 118.73ZM92.3333 118.73C92.3333 114.064 95.7269 110.19 100.181 109.443V127.113H92.3333V118.73ZM92.3333 130.252V146.98H100.181V130.252H92.3333ZM103.319 130.252V146.98H111.167V130.252H103.319ZM111.167 127.113V118.73C111.167 114.064 107.773 110.19 103.319 109.443V127.113H111.167ZM100.181 59.6266C95.7269 60.3738 92.3333 64.2471 92.3333 68.9131V77.2961H100.181V59.6266ZM92.3333 97.1631V80.435H100.181V97.1631H92.3333ZM103.319 97.1631V80.435H111.167V97.1631H103.319ZM111.167 68.9131V77.2961H103.319V59.6266C107.773 60.3738 111.167 64.2471 111.167 68.9131ZM60.9444 68.9131C60.9444 64.2471 64.338 60.3738 68.7917 59.6266V77.2961H60.9444V68.9131ZM60.9444 80.435V97.1631H68.7917V80.435H60.9444ZM71.9306 80.435V97.1631H79.7778V80.435H71.9306ZM79.7778 77.2961V68.9131C79.7778 64.2471 76.3842 60.3738 71.9306 59.6266V77.2961H79.7778ZM37.4028 59.6266C32.9491 60.3738 29.5556 64.2471 29.5556 68.9131V77.2961H37.4028V59.6266ZM29.5556 97.1631V80.435H37.4028V97.1631H29.5556ZM40.5417 97.1631V80.435H48.3889V97.1631H40.5417ZM48.3889 68.9131V77.2961H40.5417V59.6266C44.9953 60.3738 48.3889 64.2471 48.3889 68.9131Z"/> +</mask> +<path fill-rule="evenodd" clip-rule="evenodd" d="M28.5545 44.4103C21.5551 47.3434 17 54.1911 17 61.7802V153.793L60.9444 153.793V125.543C60.9444 120.343 65.1604 116.127 70.3611 116.127C75.5618 116.127 79.7778 120.343 79.7778 125.543V153.793L123.722 153.793V62.1604C123.722 54.3809 118.939 47.402 111.683 44.5954L102.098 40.8877C99.4214 39.8523 97.0166 38.2188 95.0676 36.1119L79.265 19.0294C74.4112 13.7825 66.1626 13.6404 61.1309 18.717L43.3554 36.6511C41.6129 38.4091 39.541 39.8064 37.258 40.7631L28.5545 44.4103ZM79.7778 37.6544C79.7778 42.8551 75.5618 47.071 70.3611 47.071C65.1604 47.071 60.9444 42.8551 60.9444 37.6544C60.9444 32.4537 65.1604 28.2377 70.3611 28.2377C75.5618 28.2377 79.7778 32.4537 79.7778 37.6544ZM37.4028 109.443C32.9491 110.19 29.5556 114.064 29.5556 118.73V127.113H37.4028V109.443ZM29.5556 146.98V130.252H37.4028V146.98H29.5556ZM40.5417 146.98V130.252H48.3889V146.98H40.5417ZM48.3889 118.73V127.113H40.5417V109.443C44.9953 110.19 48.3889 114.064 48.3889 118.73ZM92.3333 118.73C92.3333 114.064 95.7269 110.19 100.181 109.443V127.113H92.3333V118.73ZM92.3333 130.252V146.98H100.181V130.252H92.3333ZM103.319 130.252V146.98H111.167V130.252H103.319ZM111.167 127.113V118.73C111.167 114.064 107.773 110.19 103.319 109.443V127.113H111.167ZM100.181 59.6266C95.7269 60.3738 92.3333 64.2471 92.3333 68.9131V77.2961H100.181V59.6266ZM92.3333 97.1631V80.435H100.181V97.1631H92.3333ZM103.319 97.1631V80.435H111.167V97.1631H103.319ZM111.167 68.9131V77.2961H103.319V59.6266C107.773 60.3738 111.167 64.2471 111.167 68.9131ZM60.9444 68.9131C60.9444 64.2471 64.338 60.3738 68.7917 59.6266V77.2961H60.9444V68.9131ZM60.9444 80.435V97.1631H68.7917V80.435H60.9444ZM71.9306 80.435V97.1631H79.7778V80.435H71.9306ZM79.7778 77.2961V68.9131C79.7778 64.2471 76.3842 60.3738 71.9306 59.6266V77.2961H79.7778ZM37.4028 59.6266C32.9491 60.3738 29.5556 64.2471 29.5556 68.9131V77.2961H37.4028V59.6266ZM29.5556 97.1631V80.435H37.4028V97.1631H29.5556ZM40.5417 97.1631V80.435H48.3889V97.1631H40.5417ZM48.3889 68.9131V77.2961H40.5417V59.6266C44.9953 60.3738 48.3889 64.2471 48.3889 68.9131Z" fill="#DA3635"/> +<path d="M28.5545 44.4103L28.941 45.3326L28.5545 44.4103ZM17 153.793H16V154.793H17L17 153.793ZM60.9444 153.793V154.793H61.9444V153.793H60.9444ZM79.7778 153.793H78.7778V154.793H79.7778V153.793ZM123.722 153.793V154.793H124.722V153.793H123.722ZM111.683 44.5954L111.323 45.528L111.683 44.5954ZM102.098 40.8877L102.459 39.9551L102.098 40.8877ZM95.0676 36.1119L95.8017 35.4328L95.0676 36.1119ZM79.265 19.0294L79.9991 18.3504V18.3504L79.265 19.0294ZM61.1309 18.717L61.8411 19.4209L61.1309 18.717ZM43.3554 36.6511L44.0657 37.355L43.3554 36.6511ZM37.258 40.7631L36.8716 39.8408L37.258 40.7631ZM37.4028 109.443H38.4028V108.261L37.2373 108.457L37.4028 109.443ZM29.5556 127.113H28.5556V128.113H29.5556V127.113ZM37.4028 127.113V128.113H38.4028V127.113H37.4028ZM29.5556 146.98H28.5556V147.98H29.5556V146.98ZM29.5556 130.252V129.252H28.5556V130.252H29.5556ZM37.4028 130.252H38.4028V129.252H37.4028V130.252ZM37.4028 146.98V147.98H38.4028V146.98H37.4028ZM40.5417 146.98H39.5417V147.98H40.5417V146.98ZM40.5417 130.252V129.252H39.5417V130.252H40.5417ZM48.3889 130.252H49.3889V129.252H48.3889V130.252ZM48.3889 146.98V147.98H49.3889V146.98H48.3889ZM48.3889 127.113V128.113H49.3889V127.113H48.3889ZM40.5417 127.113H39.5417V128.113H40.5417V127.113ZM40.5417 109.443L40.7071 108.457L39.5417 108.261V109.443H40.5417ZM100.181 109.443H101.181V108.261L100.015 108.457L100.181 109.443ZM100.181 127.113V128.113H101.181V127.113H100.181ZM92.3333 127.113H91.3333V128.113H92.3333V127.113ZM92.3333 130.252V129.252H91.3333V130.252H92.3333ZM92.3333 146.98H91.3333V147.98H92.3333V146.98ZM100.181 146.98V147.98H101.181V146.98H100.181ZM100.181 130.252H101.181V129.252H100.181V130.252ZM103.319 130.252V129.252H102.319V130.252H103.319ZM103.319 146.98H102.319V147.98H103.319V146.98ZM111.167 146.98V147.98H112.167V146.98H111.167ZM111.167 130.252H112.167V129.252H111.167V130.252ZM111.167 127.113V128.113H112.167V127.113H111.167ZM103.319 109.443L103.485 108.457L102.319 108.261V109.443H103.319ZM103.319 127.113H102.319V128.113H103.319V127.113ZM100.181 59.6266H101.181V58.4449L100.015 58.6404L100.181 59.6266ZM92.3333 77.2961H91.3333V78.2961H92.3333V77.2961ZM100.181 77.2961V78.2961H101.181V77.2961H100.181ZM92.3333 97.1631H91.3333V98.1631H92.3333V97.1631ZM92.3333 80.435V79.435H91.3333V80.435H92.3333ZM100.181 80.435H101.181V79.435H100.181V80.435ZM100.181 97.1631V98.1631H101.181V97.1631H100.181ZM103.319 97.1631H102.319V98.1631H103.319V97.1631ZM103.319 80.435V79.435H102.319V80.435H103.319ZM111.167 80.435H112.167V79.435H111.167V80.435ZM111.167 97.1631V98.1631H112.167V97.1631H111.167ZM111.167 77.2961V78.2961H112.167V77.2961H111.167ZM103.319 77.2961H102.319V78.2961H103.319V77.2961ZM103.319 59.6266L103.485 58.6404L102.319 58.4449V59.6266H103.319ZM68.7917 59.6266H69.7917V58.4449L68.6262 58.6404L68.7917 59.6266ZM68.7917 77.2961V78.2961H69.7917V77.2961H68.7917ZM60.9444 77.2961H59.9444V78.2961H60.9444V77.2961ZM60.9444 80.435V79.435H59.9444V80.435H60.9444ZM60.9444 97.1631H59.9444V98.1631H60.9444V97.1631ZM68.7917 97.1631V98.1631H69.7917V97.1631H68.7917ZM68.7917 80.435H69.7917V79.435H68.7917V80.435ZM71.9306 80.435V79.435H70.9306V80.435H71.9306ZM71.9306 97.1631H70.9306V98.1631H71.9306V97.1631ZM79.7778 97.1631V98.1631H80.7778V97.1631H79.7778ZM79.7778 80.435H80.7778V79.435H79.7778V80.435ZM79.7778 77.2961V78.2961H80.7778V77.2961H79.7778ZM71.9306 59.6266L72.096 58.6404L70.9306 58.4449V59.6266H71.9306ZM71.9306 77.2961H70.9306V78.2961H71.9306V77.2961ZM37.4028 59.6266H38.4028V58.4449L37.2373 58.6404L37.4028 59.6266ZM29.5556 77.2961H28.5556V78.2961H29.5556V77.2961ZM37.4028 77.2961V78.2961H38.4028V77.2961H37.4028ZM29.5556 97.1631H28.5556V98.1631H29.5556V97.1631ZM29.5556 80.435V79.435H28.5556V80.435H29.5556ZM37.4028 80.435H38.4028V79.435H37.4028V80.435ZM37.4028 97.1631V98.1631H38.4028V97.1631H37.4028ZM40.5417 97.1631H39.5417V98.1631H40.5417V97.1631ZM40.5417 80.435V79.435H39.5417V80.435H40.5417ZM48.3889 80.435H49.3889V79.435H48.3889V80.435ZM48.3889 97.1631V98.1631H49.3889V97.1631H48.3889ZM48.3889 77.2961V78.2961H49.3889V77.2961H48.3889ZM40.5417 77.2961H39.5417V78.2961H40.5417V77.2961ZM40.5417 59.6266L40.7071 58.6404L39.5417 58.4449V59.6266H40.5417ZM28.168 43.488C20.7969 46.5768 16 53.7881 16 61.7802H18C18 54.594 22.3132 48.11 28.941 45.3326L28.168 43.488ZM16 61.7802V153.793H18V61.7802H16ZM17 154.793L60.9444 154.793V152.793L17 152.793L17 154.793ZM61.9444 153.793V125.543H59.9444V153.793H61.9444ZM61.9444 125.543C61.9444 120.895 65.7127 117.127 70.3611 117.127V115.127C64.6081 115.127 59.9444 119.79 59.9444 125.543H61.9444ZM70.3611 117.127C75.0095 117.127 78.7778 120.895 78.7778 125.543H80.7778C80.7778 119.79 76.1141 115.127 70.3611 115.127V117.127ZM78.7778 125.543V153.793H80.7778V125.543H78.7778ZM79.7778 154.793L123.722 154.793V152.793L79.7778 152.793V154.793ZM124.722 153.793V62.1604H122.722V153.793H124.722ZM124.722 62.1604C124.722 53.9678 119.685 46.6183 112.044 43.6627L111.323 45.528C118.193 48.1856 122.722 54.794 122.722 62.1604H124.722ZM112.044 43.6627L102.459 39.9551L101.737 41.8204L111.323 45.528L112.044 43.6627ZM102.459 39.9551C99.9243 38.9746 97.6472 37.4278 95.8017 35.4328L94.3335 36.791C96.386 39.0097 98.9185 40.73 101.737 41.8204L102.459 39.9551ZM95.8017 35.4328L79.9991 18.3504L78.531 19.7085L94.3335 36.791L95.8017 35.4328ZM79.9991 18.3504C74.7587 12.6855 65.8531 12.5321 60.4206 18.013L61.8411 19.4209C66.4721 14.7487 74.0637 14.8795 78.531 19.7085L79.9991 18.3504ZM60.4206 18.013L42.6452 35.9471L44.0657 37.355L61.8411 19.4209L60.4206 18.013ZM42.6452 35.9471C40.9952 37.6118 39.0333 38.9349 36.8716 39.8408L37.6445 41.6854C40.0487 40.6779 42.2307 39.2064 44.0657 37.355L42.6452 35.9471ZM36.8716 39.8408L28.168 43.488L28.941 45.3326L37.6445 41.6854L36.8716 39.8408ZM78.7778 37.6544C78.7778 42.3028 75.0095 46.071 70.3611 46.071V48.071C76.1141 48.071 80.7778 43.4073 80.7778 37.6544H78.7778ZM70.3611 46.071C65.7127 46.071 61.9444 42.3028 61.9444 37.6544H59.9444C59.9444 43.4073 64.6081 48.071 70.3611 48.071V46.071ZM61.9444 37.6544C61.9444 33.006 65.7127 29.2377 70.3611 29.2377V27.2377C64.6081 27.2377 59.9444 31.9014 59.9444 37.6544H61.9444ZM70.3611 29.2377C75.0095 29.2377 78.7778 33.006 78.7778 37.6544H80.7778C80.7778 31.9014 76.1141 27.2377 70.3611 27.2377V29.2377ZM37.2373 108.457C32.31 109.284 28.5556 113.567 28.5556 118.73H30.5556C30.5556 114.56 33.5883 111.097 37.5682 110.429L37.2373 108.457ZM28.5556 118.73V127.113H30.5556V118.73H28.5556ZM29.5556 128.113H37.4028V126.113H29.5556V128.113ZM38.4028 127.113V109.443H36.4028V127.113H38.4028ZM30.5556 146.98V130.252H28.5556V146.98H30.5556ZM29.5556 131.252H37.4028V129.252H29.5556V131.252ZM36.4028 130.252V146.98H38.4028V130.252H36.4028ZM37.4028 145.98H29.5556V147.98H37.4028V145.98ZM41.5417 146.98V130.252H39.5417V146.98H41.5417ZM40.5417 131.252H48.3889V129.252H40.5417V131.252ZM47.3889 130.252V146.98H49.3889V130.252H47.3889ZM48.3889 145.98H40.5417V147.98H48.3889V145.98ZM47.3889 118.73V127.113H49.3889V118.73H47.3889ZM48.3889 126.113H40.5417V128.113H48.3889V126.113ZM41.5417 127.113V109.443H39.5417V127.113H41.5417ZM40.3762 110.429C44.3561 111.097 47.3889 114.56 47.3889 118.73H49.3889C49.3889 113.567 45.6345 109.284 40.7071 108.457L40.3762 110.429ZM93.3333 118.73C93.3333 114.56 96.3661 111.097 100.346 110.429L100.015 108.457C95.0878 109.284 91.3333 113.567 91.3333 118.73H93.3333ZM99.1806 109.443V127.113H101.181V109.443H99.1806ZM100.181 126.113H92.3333V128.113H100.181V126.113ZM93.3333 127.113V118.73H91.3333V127.113H93.3333ZM91.3333 130.252V146.98H93.3333V130.252H91.3333ZM92.3333 147.98H100.181V145.98H92.3333V147.98ZM101.181 146.98V130.252H99.1806V146.98H101.181ZM100.181 129.252H92.3333V131.252H100.181V129.252ZM102.319 130.252V146.98H104.319V130.252H102.319ZM103.319 147.98H111.167V145.98H103.319V147.98ZM112.167 146.98V130.252H110.167V146.98H112.167ZM111.167 129.252H103.319V131.252H111.167V129.252ZM112.167 127.113V118.73H110.167V127.113H112.167ZM112.167 118.73C112.167 113.567 108.412 109.284 103.485 108.457L103.154 110.429C107.134 111.097 110.167 114.56 110.167 118.73H112.167ZM102.319 109.443V127.113H104.319V109.443H102.319ZM103.319 128.113H111.167V126.113H103.319V128.113ZM100.015 58.6404C95.0878 59.467 91.3333 63.7506 91.3333 68.9131H93.3333C93.3333 64.7436 96.3661 61.2805 100.346 60.6128L100.015 58.6404ZM91.3333 68.9131V77.2961H93.3333V68.9131H91.3333ZM92.3333 78.2961H100.181V76.2961H92.3333V78.2961ZM101.181 77.2961V59.6266H99.1806V77.2961H101.181ZM93.3333 97.1631V80.435H91.3333V97.1631H93.3333ZM92.3333 81.435H100.181V79.435H92.3333V81.435ZM99.1806 80.435V97.1631H101.181V80.435H99.1806ZM100.181 96.1631H92.3333V98.1631H100.181V96.1631ZM104.319 97.1631V80.435H102.319V97.1631H104.319ZM103.319 81.435H111.167V79.435H103.319V81.435ZM110.167 80.435V97.1631H112.167V80.435H110.167ZM111.167 96.1631H103.319V98.1631H111.167V96.1631ZM110.167 68.9131V77.2961H112.167V68.9131H110.167ZM111.167 76.2961H103.319V78.2961H111.167V76.2961ZM104.319 77.2961V59.6266H102.319V77.2961H104.319ZM103.154 60.6128C107.134 61.2805 110.167 64.7436 110.167 68.9131H112.167C112.167 63.7506 108.412 59.467 103.485 58.6404L103.154 60.6128ZM61.9444 68.9131C61.9444 64.7436 64.9772 61.2805 68.9571 60.6128L68.6262 58.6404C63.6989 59.467 59.9444 63.7506 59.9444 68.9131H61.9444ZM67.7917 59.6266V77.2961H69.7917V59.6266H67.7917ZM68.7917 76.2961H60.9444V78.2961H68.7917V76.2961ZM61.9444 77.2961V68.9131H59.9444V77.2961H61.9444ZM59.9444 80.435V97.1631H61.9444V80.435H59.9444ZM60.9444 98.1631H68.7917V96.1631H60.9444V98.1631ZM69.7917 97.1631V80.435H67.7917V97.1631H69.7917ZM68.7917 79.435H60.9444V81.435H68.7917V79.435ZM70.9306 80.435V97.1631H72.9306V80.435H70.9306ZM71.9306 98.1631H79.7778V96.1631H71.9306V98.1631ZM80.7778 97.1631V80.435H78.7778V97.1631H80.7778ZM79.7778 79.435H71.9306V81.435H79.7778V79.435ZM80.7778 77.2961V68.9131H78.7778V77.2961H80.7778ZM80.7778 68.9131C80.7778 63.7506 77.0234 59.467 72.096 58.6404L71.7651 60.6128C75.745 61.2805 78.7778 64.7436 78.7778 68.9131H80.7778ZM70.9306 59.6266V77.2961H72.9306V59.6266H70.9306ZM71.9306 78.2961H79.7778V76.2961H71.9306V78.2961ZM37.2373 58.6404C32.31 59.467 28.5556 63.7506 28.5556 68.9131H30.5556C30.5556 64.7436 33.5883 61.2805 37.5682 60.6128L37.2373 58.6404ZM28.5556 68.9131V77.2961H30.5556V68.9131H28.5556ZM29.5556 78.2961H37.4028V76.2961H29.5556V78.2961ZM38.4028 77.2961V59.6266H36.4028V77.2961H38.4028ZM30.5556 97.1631V80.435H28.5556V97.1631H30.5556ZM29.5556 81.435H37.4028V79.435H29.5556V81.435ZM36.4028 80.435V97.1631H38.4028V80.435H36.4028ZM37.4028 96.1631H29.5556V98.1631H37.4028V96.1631ZM41.5417 97.1631V80.435H39.5417V97.1631H41.5417ZM40.5417 81.435H48.3889V79.435H40.5417V81.435ZM47.3889 80.435V97.1631H49.3889V80.435H47.3889ZM48.3889 96.1631H40.5417V98.1631H48.3889V96.1631ZM47.3889 68.9131V77.2961H49.3889V68.9131H47.3889ZM48.3889 76.2961H40.5417V78.2961H48.3889V76.2961ZM41.5417 77.2961V59.6266H39.5417V77.2961H41.5417ZM40.3762 60.6128C44.3561 61.2805 47.3889 64.7436 47.3889 68.9131H49.3889C49.3889 63.7506 45.6345 59.467 40.7071 58.6404L40.3762 60.6128Z" fill="#333333" mask="url(#path-1-outside-1_5987_73910)"/> +<path d="M161.686 108.624C158.223 105.539 152.92 105.852 149.842 109.322L117.73 145.534L100.143 131.368C96.5313 128.458 91.2499 129.036 88.3486 132.655C85.4489 136.272 86.0227 141.56 89.6326 144.468L113.442 163.646C116.928 166.453 121.998 166.027 124.968 162.678L162.382 120.486C165.458 117.018 165.147 111.708 161.686 108.624Z" fill="#47C562" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> +</symbol> </svg> diff --git a/src/assets/form/structureCreated.svg b/src/assets/form/structureCreated.svg new file mode 100644 index 000000000..b2aa6113b --- /dev/null +++ b/src/assets/form/structureCreated.svg @@ -0,0 +1,9 @@ +<svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="path-1-outside-1_5987_73910" maskUnits="userSpaceOnUse" x="16" y="14" width="109" height="141" fill="black"> +<rect fill="white" x="16" y="14" width="109" height="141"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M28.5545 44.4103C21.5551 47.3434 17 54.1911 17 61.7802V153.793L60.9444 153.793V125.543C60.9444 120.343 65.1604 116.127 70.3611 116.127C75.5618 116.127 79.7778 120.343 79.7778 125.543V153.793L123.722 153.793V62.1604C123.722 54.3809 118.939 47.402 111.683 44.5954L102.098 40.8877C99.4214 39.8523 97.0166 38.2188 95.0676 36.1119L79.265 19.0294C74.4112 13.7825 66.1626 13.6404 61.1309 18.717L43.3554 36.6511C41.6129 38.4091 39.541 39.8064 37.258 40.7631L28.5545 44.4103ZM79.7778 37.6544C79.7778 42.8551 75.5618 47.071 70.3611 47.071C65.1604 47.071 60.9444 42.8551 60.9444 37.6544C60.9444 32.4537 65.1604 28.2377 70.3611 28.2377C75.5618 28.2377 79.7778 32.4537 79.7778 37.6544ZM37.4028 109.443C32.9491 110.19 29.5556 114.064 29.5556 118.73V127.113H37.4028V109.443ZM29.5556 146.98V130.252H37.4028V146.98H29.5556ZM40.5417 146.98V130.252H48.3889V146.98H40.5417ZM48.3889 118.73V127.113H40.5417V109.443C44.9953 110.19 48.3889 114.064 48.3889 118.73ZM92.3333 118.73C92.3333 114.064 95.7269 110.19 100.181 109.443V127.113H92.3333V118.73ZM92.3333 130.252V146.98H100.181V130.252H92.3333ZM103.319 130.252V146.98H111.167V130.252H103.319ZM111.167 127.113V118.73C111.167 114.064 107.773 110.19 103.319 109.443V127.113H111.167ZM100.181 59.6266C95.7269 60.3738 92.3333 64.2471 92.3333 68.9131V77.2961H100.181V59.6266ZM92.3333 97.1631V80.435H100.181V97.1631H92.3333ZM103.319 97.1631V80.435H111.167V97.1631H103.319ZM111.167 68.9131V77.2961H103.319V59.6266C107.773 60.3738 111.167 64.2471 111.167 68.9131ZM60.9444 68.9131C60.9444 64.2471 64.338 60.3738 68.7917 59.6266V77.2961H60.9444V68.9131ZM60.9444 80.435V97.1631H68.7917V80.435H60.9444ZM71.9306 80.435V97.1631H79.7778V80.435H71.9306ZM79.7778 77.2961V68.9131C79.7778 64.2471 76.3842 60.3738 71.9306 59.6266V77.2961H79.7778ZM37.4028 59.6266C32.9491 60.3738 29.5556 64.2471 29.5556 68.9131V77.2961H37.4028V59.6266ZM29.5556 97.1631V80.435H37.4028V97.1631H29.5556ZM40.5417 97.1631V80.435H48.3889V97.1631H40.5417ZM48.3889 68.9131V77.2961H40.5417V59.6266C44.9953 60.3738 48.3889 64.2471 48.3889 68.9131Z"/> +</mask> +<path fill-rule="evenodd" clip-rule="evenodd" d="M28.5545 44.4103C21.5551 47.3434 17 54.1911 17 61.7802V153.793L60.9444 153.793V125.543C60.9444 120.343 65.1604 116.127 70.3611 116.127C75.5618 116.127 79.7778 120.343 79.7778 125.543V153.793L123.722 153.793V62.1604C123.722 54.3809 118.939 47.402 111.683 44.5954L102.098 40.8877C99.4214 39.8523 97.0166 38.2188 95.0676 36.1119L79.265 19.0294C74.4112 13.7825 66.1626 13.6404 61.1309 18.717L43.3554 36.6511C41.6129 38.4091 39.541 39.8064 37.258 40.7631L28.5545 44.4103ZM79.7778 37.6544C79.7778 42.8551 75.5618 47.071 70.3611 47.071C65.1604 47.071 60.9444 42.8551 60.9444 37.6544C60.9444 32.4537 65.1604 28.2377 70.3611 28.2377C75.5618 28.2377 79.7778 32.4537 79.7778 37.6544ZM37.4028 109.443C32.9491 110.19 29.5556 114.064 29.5556 118.73V127.113H37.4028V109.443ZM29.5556 146.98V130.252H37.4028V146.98H29.5556ZM40.5417 146.98V130.252H48.3889V146.98H40.5417ZM48.3889 118.73V127.113H40.5417V109.443C44.9953 110.19 48.3889 114.064 48.3889 118.73ZM92.3333 118.73C92.3333 114.064 95.7269 110.19 100.181 109.443V127.113H92.3333V118.73ZM92.3333 130.252V146.98H100.181V130.252H92.3333ZM103.319 130.252V146.98H111.167V130.252H103.319ZM111.167 127.113V118.73C111.167 114.064 107.773 110.19 103.319 109.443V127.113H111.167ZM100.181 59.6266C95.7269 60.3738 92.3333 64.2471 92.3333 68.9131V77.2961H100.181V59.6266ZM92.3333 97.1631V80.435H100.181V97.1631H92.3333ZM103.319 97.1631V80.435H111.167V97.1631H103.319ZM111.167 68.9131V77.2961H103.319V59.6266C107.773 60.3738 111.167 64.2471 111.167 68.9131ZM60.9444 68.9131C60.9444 64.2471 64.338 60.3738 68.7917 59.6266V77.2961H60.9444V68.9131ZM60.9444 80.435V97.1631H68.7917V80.435H60.9444ZM71.9306 80.435V97.1631H79.7778V80.435H71.9306ZM79.7778 77.2961V68.9131C79.7778 64.2471 76.3842 60.3738 71.9306 59.6266V77.2961H79.7778ZM37.4028 59.6266C32.9491 60.3738 29.5556 64.2471 29.5556 68.9131V77.2961H37.4028V59.6266ZM29.5556 97.1631V80.435H37.4028V97.1631H29.5556ZM40.5417 97.1631V80.435H48.3889V97.1631H40.5417ZM48.3889 68.9131V77.2961H40.5417V59.6266C44.9953 60.3738 48.3889 64.2471 48.3889 68.9131Z" fill="#DA3635"/> +<path d="M28.5545 44.4103L28.941 45.3326L28.5545 44.4103ZM17 153.793H16V154.793H17L17 153.793ZM60.9444 153.793V154.793H61.9444V153.793H60.9444ZM79.7778 153.793H78.7778V154.793H79.7778V153.793ZM123.722 153.793V154.793H124.722V153.793H123.722ZM111.683 44.5954L111.323 45.528L111.683 44.5954ZM102.098 40.8877L102.459 39.9551L102.098 40.8877ZM95.0676 36.1119L95.8017 35.4328L95.0676 36.1119ZM79.265 19.0294L79.9991 18.3504V18.3504L79.265 19.0294ZM61.1309 18.717L61.8411 19.4209L61.1309 18.717ZM43.3554 36.6511L44.0657 37.355L43.3554 36.6511ZM37.258 40.7631L36.8716 39.8408L37.258 40.7631ZM37.4028 109.443H38.4028V108.261L37.2373 108.457L37.4028 109.443ZM29.5556 127.113H28.5556V128.113H29.5556V127.113ZM37.4028 127.113V128.113H38.4028V127.113H37.4028ZM29.5556 146.98H28.5556V147.98H29.5556V146.98ZM29.5556 130.252V129.252H28.5556V130.252H29.5556ZM37.4028 130.252H38.4028V129.252H37.4028V130.252ZM37.4028 146.98V147.98H38.4028V146.98H37.4028ZM40.5417 146.98H39.5417V147.98H40.5417V146.98ZM40.5417 130.252V129.252H39.5417V130.252H40.5417ZM48.3889 130.252H49.3889V129.252H48.3889V130.252ZM48.3889 146.98V147.98H49.3889V146.98H48.3889ZM48.3889 127.113V128.113H49.3889V127.113H48.3889ZM40.5417 127.113H39.5417V128.113H40.5417V127.113ZM40.5417 109.443L40.7071 108.457L39.5417 108.261V109.443H40.5417ZM100.181 109.443H101.181V108.261L100.015 108.457L100.181 109.443ZM100.181 127.113V128.113H101.181V127.113H100.181ZM92.3333 127.113H91.3333V128.113H92.3333V127.113ZM92.3333 130.252V129.252H91.3333V130.252H92.3333ZM92.3333 146.98H91.3333V147.98H92.3333V146.98ZM100.181 146.98V147.98H101.181V146.98H100.181ZM100.181 130.252H101.181V129.252H100.181V130.252ZM103.319 130.252V129.252H102.319V130.252H103.319ZM103.319 146.98H102.319V147.98H103.319V146.98ZM111.167 146.98V147.98H112.167V146.98H111.167ZM111.167 130.252H112.167V129.252H111.167V130.252ZM111.167 127.113V128.113H112.167V127.113H111.167ZM103.319 109.443L103.485 108.457L102.319 108.261V109.443H103.319ZM103.319 127.113H102.319V128.113H103.319V127.113ZM100.181 59.6266H101.181V58.4449L100.015 58.6404L100.181 59.6266ZM92.3333 77.2961H91.3333V78.2961H92.3333V77.2961ZM100.181 77.2961V78.2961H101.181V77.2961H100.181ZM92.3333 97.1631H91.3333V98.1631H92.3333V97.1631ZM92.3333 80.435V79.435H91.3333V80.435H92.3333ZM100.181 80.435H101.181V79.435H100.181V80.435ZM100.181 97.1631V98.1631H101.181V97.1631H100.181ZM103.319 97.1631H102.319V98.1631H103.319V97.1631ZM103.319 80.435V79.435H102.319V80.435H103.319ZM111.167 80.435H112.167V79.435H111.167V80.435ZM111.167 97.1631V98.1631H112.167V97.1631H111.167ZM111.167 77.2961V78.2961H112.167V77.2961H111.167ZM103.319 77.2961H102.319V78.2961H103.319V77.2961ZM103.319 59.6266L103.485 58.6404L102.319 58.4449V59.6266H103.319ZM68.7917 59.6266H69.7917V58.4449L68.6262 58.6404L68.7917 59.6266ZM68.7917 77.2961V78.2961H69.7917V77.2961H68.7917ZM60.9444 77.2961H59.9444V78.2961H60.9444V77.2961ZM60.9444 80.435V79.435H59.9444V80.435H60.9444ZM60.9444 97.1631H59.9444V98.1631H60.9444V97.1631ZM68.7917 97.1631V98.1631H69.7917V97.1631H68.7917ZM68.7917 80.435H69.7917V79.435H68.7917V80.435ZM71.9306 80.435V79.435H70.9306V80.435H71.9306ZM71.9306 97.1631H70.9306V98.1631H71.9306V97.1631ZM79.7778 97.1631V98.1631H80.7778V97.1631H79.7778ZM79.7778 80.435H80.7778V79.435H79.7778V80.435ZM79.7778 77.2961V78.2961H80.7778V77.2961H79.7778ZM71.9306 59.6266L72.096 58.6404L70.9306 58.4449V59.6266H71.9306ZM71.9306 77.2961H70.9306V78.2961H71.9306V77.2961ZM37.4028 59.6266H38.4028V58.4449L37.2373 58.6404L37.4028 59.6266ZM29.5556 77.2961H28.5556V78.2961H29.5556V77.2961ZM37.4028 77.2961V78.2961H38.4028V77.2961H37.4028ZM29.5556 97.1631H28.5556V98.1631H29.5556V97.1631ZM29.5556 80.435V79.435H28.5556V80.435H29.5556ZM37.4028 80.435H38.4028V79.435H37.4028V80.435ZM37.4028 97.1631V98.1631H38.4028V97.1631H37.4028ZM40.5417 97.1631H39.5417V98.1631H40.5417V97.1631ZM40.5417 80.435V79.435H39.5417V80.435H40.5417ZM48.3889 80.435H49.3889V79.435H48.3889V80.435ZM48.3889 97.1631V98.1631H49.3889V97.1631H48.3889ZM48.3889 77.2961V78.2961H49.3889V77.2961H48.3889ZM40.5417 77.2961H39.5417V78.2961H40.5417V77.2961ZM40.5417 59.6266L40.7071 58.6404L39.5417 58.4449V59.6266H40.5417ZM28.168 43.488C20.7969 46.5768 16 53.7881 16 61.7802H18C18 54.594 22.3132 48.11 28.941 45.3326L28.168 43.488ZM16 61.7802V153.793H18V61.7802H16ZM17 154.793L60.9444 154.793V152.793L17 152.793L17 154.793ZM61.9444 153.793V125.543H59.9444V153.793H61.9444ZM61.9444 125.543C61.9444 120.895 65.7127 117.127 70.3611 117.127V115.127C64.6081 115.127 59.9444 119.79 59.9444 125.543H61.9444ZM70.3611 117.127C75.0095 117.127 78.7778 120.895 78.7778 125.543H80.7778C80.7778 119.79 76.1141 115.127 70.3611 115.127V117.127ZM78.7778 125.543V153.793H80.7778V125.543H78.7778ZM79.7778 154.793L123.722 154.793V152.793L79.7778 152.793V154.793ZM124.722 153.793V62.1604H122.722V153.793H124.722ZM124.722 62.1604C124.722 53.9678 119.685 46.6183 112.044 43.6627L111.323 45.528C118.193 48.1856 122.722 54.794 122.722 62.1604H124.722ZM112.044 43.6627L102.459 39.9551L101.737 41.8204L111.323 45.528L112.044 43.6627ZM102.459 39.9551C99.9243 38.9746 97.6472 37.4278 95.8017 35.4328L94.3335 36.791C96.386 39.0097 98.9185 40.73 101.737 41.8204L102.459 39.9551ZM95.8017 35.4328L79.9991 18.3504L78.531 19.7085L94.3335 36.791L95.8017 35.4328ZM79.9991 18.3504C74.7587 12.6855 65.8531 12.5321 60.4206 18.013L61.8411 19.4209C66.4721 14.7487 74.0637 14.8795 78.531 19.7085L79.9991 18.3504ZM60.4206 18.013L42.6452 35.9471L44.0657 37.355L61.8411 19.4209L60.4206 18.013ZM42.6452 35.9471C40.9952 37.6118 39.0333 38.9349 36.8716 39.8408L37.6445 41.6854C40.0487 40.6779 42.2307 39.2064 44.0657 37.355L42.6452 35.9471ZM36.8716 39.8408L28.168 43.488L28.941 45.3326L37.6445 41.6854L36.8716 39.8408ZM78.7778 37.6544C78.7778 42.3028 75.0095 46.071 70.3611 46.071V48.071C76.1141 48.071 80.7778 43.4073 80.7778 37.6544H78.7778ZM70.3611 46.071C65.7127 46.071 61.9444 42.3028 61.9444 37.6544H59.9444C59.9444 43.4073 64.6081 48.071 70.3611 48.071V46.071ZM61.9444 37.6544C61.9444 33.006 65.7127 29.2377 70.3611 29.2377V27.2377C64.6081 27.2377 59.9444 31.9014 59.9444 37.6544H61.9444ZM70.3611 29.2377C75.0095 29.2377 78.7778 33.006 78.7778 37.6544H80.7778C80.7778 31.9014 76.1141 27.2377 70.3611 27.2377V29.2377ZM37.2373 108.457C32.31 109.284 28.5556 113.567 28.5556 118.73H30.5556C30.5556 114.56 33.5883 111.097 37.5682 110.429L37.2373 108.457ZM28.5556 118.73V127.113H30.5556V118.73H28.5556ZM29.5556 128.113H37.4028V126.113H29.5556V128.113ZM38.4028 127.113V109.443H36.4028V127.113H38.4028ZM30.5556 146.98V130.252H28.5556V146.98H30.5556ZM29.5556 131.252H37.4028V129.252H29.5556V131.252ZM36.4028 130.252V146.98H38.4028V130.252H36.4028ZM37.4028 145.98H29.5556V147.98H37.4028V145.98ZM41.5417 146.98V130.252H39.5417V146.98H41.5417ZM40.5417 131.252H48.3889V129.252H40.5417V131.252ZM47.3889 130.252V146.98H49.3889V130.252H47.3889ZM48.3889 145.98H40.5417V147.98H48.3889V145.98ZM47.3889 118.73V127.113H49.3889V118.73H47.3889ZM48.3889 126.113H40.5417V128.113H48.3889V126.113ZM41.5417 127.113V109.443H39.5417V127.113H41.5417ZM40.3762 110.429C44.3561 111.097 47.3889 114.56 47.3889 118.73H49.3889C49.3889 113.567 45.6345 109.284 40.7071 108.457L40.3762 110.429ZM93.3333 118.73C93.3333 114.56 96.3661 111.097 100.346 110.429L100.015 108.457C95.0878 109.284 91.3333 113.567 91.3333 118.73H93.3333ZM99.1806 109.443V127.113H101.181V109.443H99.1806ZM100.181 126.113H92.3333V128.113H100.181V126.113ZM93.3333 127.113V118.73H91.3333V127.113H93.3333ZM91.3333 130.252V146.98H93.3333V130.252H91.3333ZM92.3333 147.98H100.181V145.98H92.3333V147.98ZM101.181 146.98V130.252H99.1806V146.98H101.181ZM100.181 129.252H92.3333V131.252H100.181V129.252ZM102.319 130.252V146.98H104.319V130.252H102.319ZM103.319 147.98H111.167V145.98H103.319V147.98ZM112.167 146.98V130.252H110.167V146.98H112.167ZM111.167 129.252H103.319V131.252H111.167V129.252ZM112.167 127.113V118.73H110.167V127.113H112.167ZM112.167 118.73C112.167 113.567 108.412 109.284 103.485 108.457L103.154 110.429C107.134 111.097 110.167 114.56 110.167 118.73H112.167ZM102.319 109.443V127.113H104.319V109.443H102.319ZM103.319 128.113H111.167V126.113H103.319V128.113ZM100.015 58.6404C95.0878 59.467 91.3333 63.7506 91.3333 68.9131H93.3333C93.3333 64.7436 96.3661 61.2805 100.346 60.6128L100.015 58.6404ZM91.3333 68.9131V77.2961H93.3333V68.9131H91.3333ZM92.3333 78.2961H100.181V76.2961H92.3333V78.2961ZM101.181 77.2961V59.6266H99.1806V77.2961H101.181ZM93.3333 97.1631V80.435H91.3333V97.1631H93.3333ZM92.3333 81.435H100.181V79.435H92.3333V81.435ZM99.1806 80.435V97.1631H101.181V80.435H99.1806ZM100.181 96.1631H92.3333V98.1631H100.181V96.1631ZM104.319 97.1631V80.435H102.319V97.1631H104.319ZM103.319 81.435H111.167V79.435H103.319V81.435ZM110.167 80.435V97.1631H112.167V80.435H110.167ZM111.167 96.1631H103.319V98.1631H111.167V96.1631ZM110.167 68.9131V77.2961H112.167V68.9131H110.167ZM111.167 76.2961H103.319V78.2961H111.167V76.2961ZM104.319 77.2961V59.6266H102.319V77.2961H104.319ZM103.154 60.6128C107.134 61.2805 110.167 64.7436 110.167 68.9131H112.167C112.167 63.7506 108.412 59.467 103.485 58.6404L103.154 60.6128ZM61.9444 68.9131C61.9444 64.7436 64.9772 61.2805 68.9571 60.6128L68.6262 58.6404C63.6989 59.467 59.9444 63.7506 59.9444 68.9131H61.9444ZM67.7917 59.6266V77.2961H69.7917V59.6266H67.7917ZM68.7917 76.2961H60.9444V78.2961H68.7917V76.2961ZM61.9444 77.2961V68.9131H59.9444V77.2961H61.9444ZM59.9444 80.435V97.1631H61.9444V80.435H59.9444ZM60.9444 98.1631H68.7917V96.1631H60.9444V98.1631ZM69.7917 97.1631V80.435H67.7917V97.1631H69.7917ZM68.7917 79.435H60.9444V81.435H68.7917V79.435ZM70.9306 80.435V97.1631H72.9306V80.435H70.9306ZM71.9306 98.1631H79.7778V96.1631H71.9306V98.1631ZM80.7778 97.1631V80.435H78.7778V97.1631H80.7778ZM79.7778 79.435H71.9306V81.435H79.7778V79.435ZM80.7778 77.2961V68.9131H78.7778V77.2961H80.7778ZM80.7778 68.9131C80.7778 63.7506 77.0234 59.467 72.096 58.6404L71.7651 60.6128C75.745 61.2805 78.7778 64.7436 78.7778 68.9131H80.7778ZM70.9306 59.6266V77.2961H72.9306V59.6266H70.9306ZM71.9306 78.2961H79.7778V76.2961H71.9306V78.2961ZM37.2373 58.6404C32.31 59.467 28.5556 63.7506 28.5556 68.9131H30.5556C30.5556 64.7436 33.5883 61.2805 37.5682 60.6128L37.2373 58.6404ZM28.5556 68.9131V77.2961H30.5556V68.9131H28.5556ZM29.5556 78.2961H37.4028V76.2961H29.5556V78.2961ZM38.4028 77.2961V59.6266H36.4028V77.2961H38.4028ZM30.5556 97.1631V80.435H28.5556V97.1631H30.5556ZM29.5556 81.435H37.4028V79.435H29.5556V81.435ZM36.4028 80.435V97.1631H38.4028V80.435H36.4028ZM37.4028 96.1631H29.5556V98.1631H37.4028V96.1631ZM41.5417 97.1631V80.435H39.5417V97.1631H41.5417ZM40.5417 81.435H48.3889V79.435H40.5417V81.435ZM47.3889 80.435V97.1631H49.3889V80.435H47.3889ZM48.3889 96.1631H40.5417V98.1631H48.3889V96.1631ZM47.3889 68.9131V77.2961H49.3889V68.9131H47.3889ZM48.3889 76.2961H40.5417V78.2961H48.3889V76.2961ZM41.5417 77.2961V59.6266H39.5417V77.2961H41.5417ZM40.3762 60.6128C44.3561 61.2805 47.3889 64.7436 47.3889 68.9131H49.3889C49.3889 63.7506 45.6345 59.467 40.7071 58.6404L40.3762 60.6128Z" fill="#333333" mask="url(#path-1-outside-1_5987_73910)"/> +<path d="M161.686 108.624C158.223 105.539 152.92 105.852 149.842 109.322L117.73 145.534L100.143 131.368C96.5313 128.458 91.2499 129.036 88.3486 132.655C85.4489 136.272 86.0227 141.56 89.6326 144.468L113.442 163.646C116.928 166.453 121.998 166.027 124.968 162.678L162.382 120.486C165.458 117.018 165.147 111.708 161.686 108.624Z" fill="#47C562" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> +</svg> -- GitLab From ad244613a9ca18fef088d89388366b99fde02ea3 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 14:32:20 +0100 Subject: [PATCH 098/199] structure public target --- .../form/form-view/form-view.component.scss | 12 +++---- src/app/form/form-view/form-view.component.ts | 2 +- .../structure-form.component.html | 10 +++++- .../structure-form.component.ts | 20 +++++++----- .../structure-public-target.component.html | 32 ++++++++++++++++++- .../structure-public-target.component.scss | 28 ++++++++++++++++ .../structure-public-target.component.ts | 20 ++++++++---- .../structure-form/structureFormStep.enum.ts | 2 +- 8 files changed, 100 insertions(+), 26 deletions(-) diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index 37f9a9ca5..d9cedee76 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -35,14 +35,10 @@ } } p { - @include lato-regular-14; - margin-bottom: 0; - &.notRequired { - @include lato-regular-18; - color: $grey-3; - font-style: italic; - margin-top: 4px; - } + @include lato-regular-18; + color: $grey-3; + font-style: italic; + margin-top: 4px; } } diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 5b7d756dc..9563e18d2 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -139,7 +139,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureWebAndSocialNetwork; + this.currentPage = structureFormStep.structurePublicTarget; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 517f4b1e0..44503715f 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -63,7 +63,15 @@ > </app-structure-web-and-social-network> </div> - +<div *ngIf="currentStep == structureFormStep.structurePublicTarget"> + <app-structure-public-target + [structureForm]="structureForm" + [publics]="publics" + (validateForm)="setValidationsForm()" + (updateChoice)="updateChoice($event)" + > + </app-structure-public-target> +</div> <div *ngIf="currentStep == structureFormStep.structureEquipments"> <app-structure-equipments [structureForm]="structureForm" diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index c4d5f1b82..4c5b896e8 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -59,12 +59,13 @@ export class StructureFormComponent implements OnChanges { } } } - // ngOnInit(): void { - // this.setCategories(); - // if (this.isEditMode) { - // this.showCollapse(structure); - // } - // } + + ngOnInit(): void { + this.setCategories(); + // if (this.isEditMode) { + // this.showCollapse(structure); + // } + } public setAddressStructure(address?: Address): void { if (address) { @@ -159,7 +160,6 @@ export class StructureFormComponent implements OnChanges { valid: this.structureForm.get('pmrAccess').valid, name: 'Accessibilité pour les personnes à mobilité réduite', }; - console.log(this.showSocialNetwork && this.showWebsite); this.pagesValidation[structureFormStep.structureWebAndSocialNetwork] = { valid: (this.structureForm.get('website').valid || !this.showWebsite) && @@ -169,7 +169,6 @@ export class StructureFormComponent implements OnChanges { !this.showSocialNetwork), name: 'Présence sur internet', }; - this.pagesValidation[structureFormStep.structurePublicTarget] = { valid: this.structureForm.get('publics').valid, name: 'Public admis', @@ -290,6 +289,11 @@ export class StructureFormComponent implements OnChanges { this.setValidationsForm(); } + public updateChoice({ formControlName, choice }: { formControlName: string; choice: string }): void { + const event = !this.isInArray({ formControlName, term: choice }); + this.onCheckChange({ event, formControlName, value: choice }); + } + // Check if a FormControl value is in FormArray public isInArray({ formControlName, term }: { formControlName: string; term: string }): boolean { if (this.structureForm.controls[formControlName].value) { diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html index 392dfa839..32b1c7a4b 100644 --- a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html @@ -1 +1,31 @@ -<p>structure-public-target works!</p> +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>Quel public peut être accueilli dans cette structure ?</h3> + <p>Plusieurs choix possibles</p> + </div> + <p class="missing-information" *ngIf="isEditMode && !structureForm.get('publics').valid"> + <app-svg-icon + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + class="validationIcon" + ></app-svg-icon> + <span>Il faut renseigner au moins un champ</span> + </p> + <div class="tags" *ngIf="publics"> + <button + *ngFor="let choice of publics.modules" + (click)="updateChoicePublic(choice.id)" + [ngClass]="{ selectedChoice: isInArray(choice.id) }" + > + <div fxLayout="row" fxLayoutAlign="center"> + <svg class="validate" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> + </svg> + <div class="textBtn"> + {{ choice.text }} + </div> + </div> + </button> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss index e69de29bb..6ae6c98b1 100644 --- a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss @@ -0,0 +1,28 @@ +@import '../../../../../assets/scss/typography'; +@import '../../../../../assets/scss/color'; + +.tags { + padding: 8px; + button { + background: $grey-8; + border-radius: 20px; + margin: 4px; + max-width: 100%; + height: 40px; + padding: 0 13px; + @include lato-bold-14; + outline: none; + border: none; + cursor: pointer; + &.selectedChoice { + background: $green-1 !important; + color: $white; + } + } + svg { + width: 20px; + height: 10px; + margin-right: 4px; + stroke: $grey-8; + } +} diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts index 8ae26e57d..9eb6e7391 100644 --- a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts @@ -1,15 +1,23 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-public-target', templateUrl: './structure-public-target.component.html', - styleUrls: ['./structure-public-target.component.scss'] + styleUrls: ['./structure-public-target.component.scss'], }) -export class StructurePublicTargetComponent implements OnInit { +export class StructurePublicTargetComponent { + @Input() structureForm: FormGroup; + @Input() publics: Category; + @Output() updateChoice = new EventEmitter<any>(); - constructor() { } - - ngOnInit(): void { + public updateChoicePublic(choice: string) { + this.updateChoice.emit({ formControlName: 'publics', choice }); } + public isInArray(choice: string) { + if (this.structureForm.get('publics') && this.structureForm.get('publics').value.includes(choice)) return true; + return false; + } } diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index 394736226..f080ba17f 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -9,8 +9,8 @@ export enum structureFormStep { structureHours, structurePmr, structureWebAndSocialNetwork, - structureCreationInfo, structurePublicTarget, + structureCreationInfo, structurePublicAccompaniment, structureDigitalHelpingAccompaniment, structureTrainingPrice, -- GitLab From ca8c78d561ece3883d320746a9fe7bafe18ea9d6 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 14:36:54 +0100 Subject: [PATCH 099/199] feat: add personal offer training type --- .../form-view/form-view-routing.module.ts | 8 +- ...ersonal-offer-training-type.component.html | 14 +- .../personal-offer-training-type.component.ts | 16 +- src/app/shared/components/index.ts | 3 + .../training-type-picker.component.html | 40 +++++ .../training-type-picker.component.scss | 166 ++++++++++++++++++ .../training-type-picker.component.spec.ts | 24 +++ .../training-type-picker.component.ts | 88 ++++++++++ 8 files changed, 344 insertions(+), 15 deletions(-) create mode 100644 src/app/shared/components/training-type-picker/training-type-picker.component.html create mode 100644 src/app/shared/components/training-type-picker/training-type-picker.component.scss create mode 100644 src/app/shared/components/training-type-picker/training-type-picker.component.spec.ts create mode 100644 src/app/shared/components/training-type-picker/training-type-picker.component.ts diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts index 147dbd295..ab1bb787b 100644 --- a/src/app/form/form-view/form-view-routing.module.ts +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -11,10 +11,6 @@ const routes: Routes = [ path: '', component: FormViewComponent, children: [ - { - path: '**', - redirectTo: 'profile', - }, { path: 'structure', component: StructureFormComponent, @@ -31,6 +27,10 @@ const routes: Routes = [ path: 'account', component: AccountFormComponent, }, + { + path: '**', + redirectTo: 'profile', + }, ], }, ]; diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html index 164c8d780..e85df8a6b 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html @@ -4,10 +4,12 @@ <h3>Quelles formations au numérique proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> - <div class="type-picker"> - <app-structure-type-picker - [pickedChoice]="personalOfferForm.get('baseSkills').valid ? structureForm.get('structureType').value : null" - (selectedType)="setTypeStructure($event)" - ></app-structure-type-picker> - </div> + <app-training-type-picker + [baseSkills]="personalOfferForm.get('baseSkills').value" + [accessRight]="personalOfferForm.get('accessRight').value" + [digitalCultureSecurity]="personalOfferForm.get('digitalCultureSecurity').value" + [socialAndProfessional]="personalOfferForm.get('socialAndProfessional').value" + [parentingHelp]="personalOfferForm.get('parentingHelp').value" + (selectedType)="setTrainingsFromCategories($event)" + ></app-training-type-picker> </form> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts index 4203b4917..41a758091 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts @@ -1,17 +1,23 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { Structure } from '../../../../models/structure.model'; +import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-personal-offer-training-type', templateUrl: './personal-offer-training-type.component.html', styleUrls: ['./personal-offer-training-type.component.scss'], }) -export class PersonalOfferTrainingTypeComponent implements OnInit { +export class PersonalOfferTrainingTypeComponent { @Input() structure: Structure; @Input() personalOfferForm: FormGroup; - constructor() {} - - ngOnInit(): void {} + public setTrainingsFromCategories(categories: Category[]) { + for (const categorie of categories) { + const moduleIds: string[] = categorie.modules.map((module) => module.id); + if (this.personalOfferForm.get(categorie.id)) { + this.personalOfferForm.get(categorie.id).patchValue(moduleIds); + } + } + } } diff --git a/src/app/shared/components/index.ts b/src/app/shared/components/index.ts index a797e7211..e16d787bb 100644 --- a/src/app/shared/components/index.ts +++ b/src/app/shared/components/index.ts @@ -16,6 +16,7 @@ import { StructureOptionsModalComponent } from './structure-options-modal/struct import { ModalOptionsComponent } from './modal-options/modal-options.component'; import { TextInputModalComponent } from './text-input-modal/text-input-modal.component'; import { PasswordFormComponent } from './password-form/password-form.component'; +import { TrainingTypePickerComponent } from './training-type-picker/training-type-picker.component'; // tslint:disable-next-line: max-line-length export { @@ -37,6 +38,7 @@ export { ModalOptionsComponent, TextInputModalComponent, PasswordFormComponent, + TrainingTypePickerComponent, }; // tslint:disable-next-line:variable-name @@ -59,4 +61,5 @@ export const SharedComponents = [ ModalOptionsComponent, TextInputModalComponent, PasswordFormComponent, + TrainingTypePickerComponent, ]; diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.html b/src/app/shared/components/training-type-picker/training-type-picker.component.html new file mode 100644 index 000000000..ba340f15e --- /dev/null +++ b/src/app/shared/components/training-type-picker/training-type-picker.component.html @@ -0,0 +1,40 @@ +<div class="container"> + <div class="boutonSection" *ngFor="let categorie of categories" fxLayout="column" fxLayoutGap="8px"> + <ng-container> + <div fxLayout="column" class="collapse" [ngClass]="{ notCollapsed: !isCategorieExpanded(categorie.id) }"> + <div + class="collapseHeader" + fxLayoutAlign="flex-start center" + fxLayout="row" + (click)="toggleCollapse(categorie.id)" + > + <div class="titleCollapse"> + {{ categorie.name }} + </div> + <div class="logo"> + <svg class="show" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#show'"></use> + </svg> + <svg class="hide" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#hide'"></use> + </svg> + </div> + </div> + <div *ngIf="isCategorieExpanded(categorie.id)" class="inputSection"> + <div class="tags"> + <button + *ngFor="let module of categorie.modules" + (click)="pickChoice(categorie, module)" + [ngClass]="{ selectedChoice: isModulePicked(categorie, module) }" + > + <svg *ngIf="isModulePicked(categorie, module)" class="validate" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> + </svg> + {{ module.text }} + </button> + </div> + </div> + </div> + </ng-container> + </div> +</div> diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.scss b/src/app/shared/components/training-type-picker/training-type-picker.component.scss new file mode 100644 index 000000000..3f344782f --- /dev/null +++ b/src/app/shared/components/training-type-picker/training-type-picker.component.scss @@ -0,0 +1,166 @@ +@import '../../../../assets/scss/typography'; +@import '../../../../assets/scss/color'; +@import '../../../../assets/scss/shapes'; +@import '../../../../assets/scss/breakpoint'; + +button { + outline: none; + border: none; +} +.tags { + padding: 15px; + width: calc(100% + 2px); + margin-left: -16px; + height: 100%; + button { + background: $grey-8; + text-align: center; + border-radius: 20px; + margin: 4px; + max-width: 100%; + white-space: nowrap; + height: 40px; + padding: 0 28px; + cursor: pointer; + @include lato-bold-14; + } +} +.selectedChoice { + background: $green-1 !important; + color: $white; +} +.boutonSection { + padding-top: 9px; + border-radius: 6px 6px 0px 0px; + .btnText { + min-height: 36px; + @include lato-bold-14; + margin-bottom: 12px; + } + + button { + background: none; + max-width: 114px; + } + .containerBtn { + @include background-hash($grey-2); + padding: 0 0 4px 5px; + border-radius: 4px; + cursor: pointer; + border: 1px solid $grey-4; + .btn { + background: $white; + height: 53px; + width: 35px; + color: $primary-color; + padding: 3px 16px 0px 12px; + display: table-cell; + vertical-align: middle; + border-radius: 4px; + @include btn-bold; + &.withIcon { + color: $black; + height: 36px; + } + } + } +} + +.collapse { + border-radius: 4px; + box-sizing: border-box; + border: 1px solid $grey-5; + @media #{$small-phone} { + width: 95% !important; + } + @media #{$tablet} { + width: 296px; + } + &.notCollapsed { + border: 1px solid $grey-8; + background: $grey-8; + &:hover { + border: 1px solid $grey-5; + } + .logo { + .hide { + display: none; + } + .show { + display: block; + } + } + } + .inputSection { + padding: 0px 15px 19px 12px; + svg { + border-right: 0; + padding-left: 16px; + } + } + .collapseHeader { + .titleCollapse { + width: 100%; + @include lato-bold-14; + color: $grey-1; + } + .svgContainer { + height: 48px; + width: 48px; + svg { + margin-right: 8px; + stroke: $grey-1; + fill: $grey-1; + } + } + } + .collapseHeader { + height: 65px; + padding: 0 15px 0 12px; + cursor: pointer; + } + .logo { + height: 24px; + width: 24px; + svg { + width: 100%; + height: 100%; + fill: $grey-1; + } + } + .logo, + .titleCollapse { + .hide { + display: block; + } + .show { + display: none; + } + } +} + +.tags { + padding: 8px; + button { + background: $grey-8; + border-radius: 20px; + margin: 4px; + max-width: 100%; + height: 40px; + padding: 0 13px; + @include lato-bold-14; + outline: none; + border: none; + cursor: pointer; + &.selectedChoice { + background: $green-1 !important; + color: $white; + } + } + svg { + width: 20px; + height: 10px; + margin-right: 4px; + stroke: $grey-8; + } +} diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.spec.ts b/src/app/shared/components/training-type-picker/training-type-picker.component.spec.ts new file mode 100644 index 000000000..843e92725 --- /dev/null +++ b/src/app/shared/components/training-type-picker/training-type-picker.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TrainingTypePickerComponent } from './training-type-picker.component'; + +describe('TypePickerComponent', () => { + let component: TrainingTypePickerComponent; + let fixture: ComponentFixture<TrainingTypePickerComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TrainingTypePickerComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(TrainingTypePickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.ts b/src/app/shared/components/training-type-picker/training-type-picker.component.ts new file mode 100644 index 000000000..3a5ba3ff1 --- /dev/null +++ b/src/app/shared/components/training-type-picker/training-type-picker.component.ts @@ -0,0 +1,88 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Category } from '../../../structure-list/models/category.model'; +import { Module } from '../../../structure-list/models/module.model'; +import { SearchService } from '../../../structure-list/services/search.service'; +import { cloneDeep, remove } from 'lodash'; + +@Component({ + selector: 'app-training-type-picker', + templateUrl: './training-type-picker.component.html', + styleUrls: ['./training-type-picker.component.scss'], +}) +export class TrainingTypePickerComponent implements OnInit { + @Input() public baseSkills: string[]; + @Input() public accessRight: string[]; + @Input() public digitalCultureSecurity: string[]; + @Input() public socialAndProfessional: string[]; + @Input() public parentingHelp: string[]; + @Output() selectedType: EventEmitter<Category[]> = new EventEmitter<Category[]>(); + + public categories: Category[] = []; + public categoriesExpanded: string[] = []; + public selectedChoices: Category[] = []; + + constructor(private searchService: SearchService) {} + + ngOnInit(): void { + this.searchService.getCategoriesTraining().subscribe((categories) => { + this.categories = categories; + this.selectedChoices = cloneDeep(categories); + this.selectedChoices.forEach((cat) => { + let selectedModulesId: string[] = []; + switch (cat.id) { + case 'accessRight': + selectedModulesId = this.accessRight; + break; + case 'socialAndProfessional': + selectedModulesId = this.socialAndProfessional; + break; + case 'baseSkills': + selectedModulesId = this.baseSkills; + break; + case 'parentingHelp': + selectedModulesId = this.parentingHelp; + break; + case 'digitalCultureSecurity': + selectedModulesId = this.digitalCultureSecurity; + break; + } + if (selectedModulesId.length) { + this.categoriesExpanded.push(cat.id); + } + cat.modules = cat.modules.filter((module) => selectedModulesId.includes(module.id)); + }); + }); + } + + public isCategorieExpanded(id: string): boolean { + return this.categoriesExpanded.includes(id); + } + + public toggleCollapse(id: string): void { + if (this.isCategorieExpanded(id)) { + const index = this.categoriesExpanded.findIndex((categorieId) => categorieId === id); + this.categoriesExpanded.splice(index, 1); + const selectedChoiceIndex = this.selectedChoices.findIndex((_categorie) => _categorie.id === id); + this.selectedChoices[selectedChoiceIndex].modules = []; + this.selectedType.emit(this.selectedChoices); + } else { + this.categoriesExpanded.push(id); + } + } + + public isModulePicked(categorie: Category, module: Module) { + const index = this.selectedChoices.findIndex((_categorie) => _categorie.id === categorie.id); + if (index === -1) return false; + return this.selectedChoices[index].modules.findIndex((_module) => _module.id === module.id) > -1; + } + + public pickChoice(categorie: Category, module: Module): void { + const index = this.selectedChoices.findIndex((_categorie) => _categorie.id === categorie.id); + if (this.selectedChoices[index].modules.includes(module)) { + remove(this.selectedChoices[index].modules, module); + } else { + this.selectedChoices[index].modules.push(module); + } + this.selectedType.emit(this.selectedChoices); + } +} -- GitLab From c3d46fbfe58dd7124ef92f3dfaf695b8cfb656a6 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Wed, 23 Mar 2022 14:44:43 +0100 Subject: [PATCH 100/199] fix design --- src/app/form/form-view/form-view.component.ts | 2 +- .../structure-labels/structure-labels.component.html | 12 +++++++++--- .../structure-labels/structure-labels.component.scss | 3 +++ .../structure-other-services.component.html | 2 +- .../checkbox-form/checkbox-form.component.scss | 1 + 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index f1009e0e0..4743f673d 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -146,7 +146,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureCreationFinishedInfo; + this.currentPage = structureFormStep.structureLabels; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html index 4053fac13..0c265692f 100644 --- a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html @@ -1,9 +1,15 @@ -<form [formGroup]="structureForm" (keyup.enter)="(!isEditMode ? '' : null)"> +<form [formGroup]="structureForm" class="labelStep" (keyup.enter)="(!isEditMode ? '' : null)"> <div class="title"> - <h3>La sturcture est labellisée ?</h3> + <h3>La structure est labellisée ?</h3> <p class="notRequired">Facultatif</p> </div> - <div class="labelsQualifications" *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutAlign="flex-start"> + <div + class="labelsQualifications" + *ngIf="labelsQualifications" + fxLayout="row wrap" + fxLayoutAlign="flex-start" + fxLayoutGap="10px" + > <app-checkbox-form *ngFor="let module of labelsQualifications.modules" [isChecked]="isInArray(module.id, labelsQualifications.id)" diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss index e69de29bb..72bea5b44 100644 --- a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss @@ -0,0 +1,3 @@ +.labelStep { + max-width: 800px; +} diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html index ef9fa819d..32e2fba3e 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html @@ -3,7 +3,7 @@ <h3>Quels autres services sont proposées par la structure ?</h3> <p class="notRequired">Facultatif</p> </div> - <div *ngIf="otherServices" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start" class="otherServices"> + <div *ngIf="otherServices" fxLayout="column wrap" fxLayoutGap="5px" fxLayoutAlign="flex-start" class="otherServices"> <ng-container *ngFor="let module of otherServices.modules"> <app-checkbox-form *ngIf=" diff --git a/src/app/shared/components/checkbox-form/checkbox-form.component.scss b/src/app/shared/components/checkbox-form/checkbox-form.component.scss index 3269a7e15..958c3b8ca 100644 --- a/src/app/shared/components/checkbox-form/checkbox-form.component.scss +++ b/src/app/shared/components/checkbox-form/checkbox-form.component.scss @@ -2,6 +2,7 @@ @import '../../../../assets/scss/typography'; svg { + min-width: 44px; width: 44px; height: 44px; fill: $primary-color; -- GitLab From 2d33ad4321963e596845bb385d783b939ecd76aa Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 14:51:44 +0100 Subject: [PATCH 101/199] feat: use shared components --- ...ersonal-offer-accompaniment.component.html | 2 +- .../training-type-picker.component.html | 22 ++++++++----------- .../training-type-picker.component.scss | 7 ++---- .../training-type-picker.component.ts | 2 ++ 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html index 83f1e8bb1..1cd3a1648 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html @@ -11,7 +11,7 @@ <app-button [ngClass]="{ selectedChoice: true }" [extraClass]="isSelectedModule(module) ? 'selected' : ''" - [style]="buttonTypeEnum.Tertiary" + [style]="buttonTypeEnum.CheckButton" [text]="module.text" (action)="toogleResult(module)" ></app-button> diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.html b/src/app/shared/components/training-type-picker/training-type-picker.component.html index ba340f15e..3bdc15456 100644 --- a/src/app/shared/components/training-type-picker/training-type-picker.component.html +++ b/src/app/shared/components/training-type-picker/training-type-picker.component.html @@ -20,19 +20,15 @@ </svg> </div> </div> - <div *ngIf="isCategorieExpanded(categorie.id)" class="inputSection"> - <div class="tags"> - <button - *ngFor="let module of categorie.modules" - (click)="pickChoice(categorie, module)" - [ngClass]="{ selectedChoice: isModulePicked(categorie, module) }" - > - <svg *ngIf="isModulePicked(categorie, module)" class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> - </svg> - {{ module.text }} - </button> - </div> + <div *ngIf="isCategorieExpanded(categorie.id)" class="inputSection btn-grid"> + <ng-container *ngFor="let module of categorie.modules"> + <app-button + [extraClass]="isModulePicked(categorie, module) ? 'selected' : ''" + [style]="buttonTypeEnum.CheckButton" + [text]="module.text" + (action)="pickChoice(categorie, module)" + ></app-button> + </ng-container> </div> </div> </ng-container> diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.scss b/src/app/shared/components/training-type-picker/training-type-picker.component.scss index 3f344782f..9d3339106 100644 --- a/src/app/shared/components/training-type-picker/training-type-picker.component.scss +++ b/src/app/shared/components/training-type-picker/training-type-picker.component.scss @@ -1,7 +1,8 @@ @import '../../../../assets/scss/typography'; -@import '../../../../assets/scss/color'; @import '../../../../assets/scss/shapes'; +@import '../../../../assets/scss/color'; @import '../../../../assets/scss/breakpoint'; +@import '../../../../assets/scss/buttons'; button { outline: none; @@ -25,10 +26,6 @@ button { @include lato-bold-14; } } -.selectedChoice { - background: $green-1 !important; - color: $white; -} .boutonSection { padding-top: 9px; border-radius: 6px 6px 0px 0px; diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.ts b/src/app/shared/components/training-type-picker/training-type-picker.component.ts index 3a5ba3ff1..5e8f6d30c 100644 --- a/src/app/shared/components/training-type-picker/training-type-picker.component.ts +++ b/src/app/shared/components/training-type-picker/training-type-picker.component.ts @@ -3,6 +3,7 @@ import { Category } from '../../../structure-list/models/category.model'; import { Module } from '../../../structure-list/models/module.model'; import { SearchService } from '../../../structure-list/services/search.service'; import { cloneDeep, remove } from 'lodash'; +import { ButtonType } from '../button/buttonType.enum'; @Component({ selector: 'app-training-type-picker', @@ -17,6 +18,7 @@ export class TrainingTypePickerComponent implements OnInit { @Input() public parentingHelp: string[]; @Output() selectedType: EventEmitter<Category[]> = new EventEmitter<Category[]>(); + public buttonTypeEnum = ButtonType; public categories: Category[] = []; public categoriesExpanded: string[] = []; public selectedChoices: Category[] = []; -- GitLab From 642d783d56c217c12c0424aa8cb161ebb789716a Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Wed, 23 Mar 2022 14:59:49 +0100 Subject: [PATCH 102/199] feat(profile-form): add back link --- .../footer-form/footer-form.component.html | 7 ++-- .../form/footer-form/footer-form.component.ts | 15 +++----- .../form/form-view/form-view.component.html | 1 + src/app/form/form-view/form-view.component.ts | 38 ++++++++++++++++++- .../information-step.component.html | 2 +- .../profile-form/profile-form.component.html | 8 ++-- .../profile-form/profile-form.component.ts | 12 +++--- .../profile-form/profileFormStep.enum.ts | 2 - src/app/profile/services/profile.service.ts | 13 ++++++- 9 files changed, 70 insertions(+), 28 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.html b/src/app/form/footer-form/footer-form.component.html index e46a66502..086411962 100644 --- a/src/app/form/footer-form/footer-form.component.html +++ b/src/app/form/footer-form/footer-form.component.html @@ -16,8 +16,9 @@ <!-- <app-button *ngIf="hasFinishButton()" (action)="finishedModal()" [text]="btnName[2]" [iconBtn]="'flag'"></app-button> --> <app-button *ngIf="isLastFormStep" (action)="goToHome()" [text]="'Ok'" [style]="buttonTypeEnum.Primary"></app-button> - <app-button - *ngIf="!isLastFormStep && isNextFormTransition" + <!-- temp remove --> + <!-- <app-button + *ngIf="false" (action)="nextPage()" [text]="btnName[1]" [iconBtn]="'chevronRight'" @@ -25,7 +26,7 @@ [iconPos]="'right'" [style]="buttonTypeEnum.Primary" > - </app-button> + </app-button> --> <app-button *ngIf="!isLastFormStep && !isNextFormTransition" diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index c0b1379c7..8b473b758 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -31,6 +31,7 @@ export class FooterFormComponent implements OnChanges { @Output() goNext = new EventEmitter<any>(); @Output() goPrev = new EventEmitter<any>(); @Output() endPage = new EventEmitter<any>(); + @Output() saveProfileForm = new EventEmitter<any>(); public isLastFormStep: boolean = false; public isNextFormTransition: boolean = false; public buttonTypeEnum = ButtonType; @@ -48,9 +49,9 @@ export class FooterFormComponent implements OnChanges { this.isLastFormStep = true; } - if (changes.currentStep && this.isProfileLastpage()) { - this.isNextFormTransition = true; - } + // if (changes.currentStep && this.isProfileLastpage()) { + // this.isNextFormTransition = true; + // } } public goToPreviousPage(): void { @@ -76,17 +77,13 @@ export class FooterFormComponent implements OnChanges { document.getElementsByClassName('page')[0].scrollTo(0, 0); } if (this.isProfileLastpage()) { - console.log('Create job'); - console.log('Create employer'); - console.log('join structure'); - console.log('update user: structure linked, job, employer'); - this.router.navigateByUrl('form/personaloffer'); + this.saveProfileForm.emit(); } this.goToNextPage(); } private isProfileLastpage(): boolean { - return this.currentForm === formType.profile && this.currentStep === profileFormStep.profileMailSentInfo; + return this.currentForm === formType.profile && this.currentStep === profileFormStep.profileJobSelection; } } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 8e5e73da3..80aeb033f 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -55,5 +55,6 @@ [isValid]="isPageValid" (goNext)="nextPage()" (goPrev)="prevPage()" + (saveProfileForm)="saveProfileForm()" ></app-footer-form> </div> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index ecb9d1892..79b41ce35 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -1,6 +1,8 @@ import { Component, OnInit } from '@angular/core'; import { FormGroup, FormControl, Validators, FormArray } from '@angular/forms'; -import { ActivatedRoute, Router } from '@angular/router'; +import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; +import { forkJoin, of } from 'rxjs'; +import { catchError, map } from 'rxjs/operators'; import { Day } from '../../models/day.model'; import { PersonalOffer } from '../../models/personalOffer.model'; import { Structure } from '../../models/structure.model'; @@ -95,6 +97,7 @@ export class FormViewComponent implements OnInit { } // Handle account creation when pre-register this.route.data.subscribe((data) => { + console.log(data); if (data.user) { this.isAccountMode = true; this.createAccountForm(data.user.email); @@ -120,6 +123,15 @@ export class FormViewComponent implements OnInit { this.isEditMode = true; } }); + + this.router.events.subscribe((evt) => { + if (!(evt instanceof NavigationEnd)) { + return; + } + this.routeParam = this.router.routerState.snapshot.url.split('/')[2]; + + this.initPage(); + }); } private initPage(): void { @@ -131,7 +143,7 @@ export class FormViewComponent implements OnInit { this.currentForm = this.accountForm; } if (formType[this.routeParam] === formType.profile) { - this.nbSteps = 5; + this.nbSteps = Object.keys(profileFormStep).length / 2; this.currentPage = profileFormStep.profileBeginningInfo; this.currentFormType = formType.profile; this.createProfileForm(); @@ -333,4 +345,26 @@ export class FormViewComponent implements OnInit { return false; return true; } + + public saveProfileForm(): void { + console.log('Create job, employer and update profile'); + forkJoin({ + employer: this.profileService.createEmployer(this.profileForm.get('employer').value).pipe( + map((res) => res), + catchError((e) => of(this.profileForm.get('employer').value)) + ), + job: this.profileService.createJob(this.profileForm.get('job').value).pipe( + map((res) => res), + catchError((e) => of(this.profileForm.get('job').value)) + ), + profile: this.profileService + .updateProfile(this.profileForm.get('employer').value.name, this.profileForm.get('job').value.name) + .pipe( + map((res) => res), + catchError((e) => of()) + ), + }).subscribe(() => { + this.router.navigateByUrl('form/structure'); + }); + } } diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index bb02d7db2..3c8427922 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -21,7 +21,7 @@ <app-navigation-buttons (goNext)="nextPage()"></app-navigation-buttons> </div> </ng-container> -<ng-container *ngIf="step === profileFormStepEnum.profileMailSentInfo"> +<ng-container *ngIf="step === 5"> <div class="information-step-container structure-display"> <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#emailVerification'"></use> diff --git a/src/app/form/form-view/profile-form/profile-form.component.html b/src/app/form/form-view/profile-form/profile-form.component.html index 3c1329baf..031c9bc1b 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.html +++ b/src/app/form/form-view/profile-form/profile-form.component.html @@ -14,17 +14,17 @@ (validateForm)="setValidationsForm()" ></app-profile-job-selection> </ng-container> - <ng-container *ngIf="currentStep === profileFormStepEnum.profileStructureChoice"> + <!-- <ng-container *ngIf="currentStep === profileFormStepEnum.profileStructureChoice"> <app-profile-structure-choice [profileForm]="profileForm" (validateForm)="setValidationsForm()" ></app-profile-structure-choice> - </ng-container> - <ng-container *ngIf="currentStep === profileFormStepEnum.profileMailSentInfo"> + </ng-container> --> + <!-- <ng-container *ngIf="currentStep === profileFormStepEnum.profileMailSentInfo"> <app-information-step [step]="4" [structureName]="profileForm.get('structure').value.structureName" (goNext)="setValidationsForm()" ></app-information-step> - </ng-container> + </ng-container> --> </div> diff --git a/src/app/form/form-view/profile-form/profile-form.component.ts b/src/app/form/form-view/profile-form/profile-form.component.ts index 836cab1eb..fb652ab2f 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.ts +++ b/src/app/form/form-view/profile-form/profile-form.component.ts @@ -28,12 +28,12 @@ export class ProfileFormComponent { this.pagesValidation[profileFormStep.profileJobSelection] = { valid: this.profileForm.get('job').get('name').valid, }; - this.pagesValidation[profileFormStep.profileStructureChoice] = { - valid: this.profileForm.get('structure').valid, - }; - this.pagesValidation[profileFormStep.profileMailSentInfo] = { - valid: true, - }; + // this.pagesValidation[profileFormStep.profileStructureChoice] = { + // valid: this.profileForm.get('structure').valid, + // }; + // this.pagesValidation[profileFormStep.profileMailSentInfo] = { + // valid: true, + // }; this.updatePageValid(); } diff --git a/src/app/form/form-view/profile-form/profileFormStep.enum.ts b/src/app/form/form-view/profile-form/profileFormStep.enum.ts index 74611311d..1f05ac3e8 100644 --- a/src/app/form/form-view/profile-form/profileFormStep.enum.ts +++ b/src/app/form/form-view/profile-form/profileFormStep.enum.ts @@ -2,6 +2,4 @@ export enum profileFormStep { profileBeginningInfo, profileEmployerSelection, profileJobSelection, - profileStructureChoice, - profileMailSentInfo, } diff --git a/src/app/profile/services/profile.service.ts b/src/app/profile/services/profile.service.ts index 2d1b7a4e7..ab75df01c 100644 --- a/src/app/profile/services/profile.service.ts +++ b/src/app/profile/services/profile.service.ts @@ -6,7 +6,6 @@ import decode from 'jwt-decode'; import { UserRole } from '../../shared/enum/userRole.enum'; import { AuthService } from '../../services/auth.service'; import { Structure } from '../../models/structure.model'; -import { map } from 'rxjs/operators'; import { Employer } from '../../models/employer.model'; import { Job } from '../../models/job.model'; @@ -97,4 +96,16 @@ export class ProfileService { public getJobs(): Observable<Job[]> { return this.http.get<Job[]>(`api/jobs`); } + + public createJob(value: Job): Observable<Job> { + return this.http.post<Job>(`api/jobs`, value); + } + + public createEmployer(value: Employer): Observable<Employer> { + return this.http.post<Employer>(`api/employer`, value); + } + + public updateProfile(employerName: string, jobName: string): Observable<User> { + return this.http.post<User>(`${this.baseUrl}/profile`, { employerName, jobName }); + } } -- GitLab From 621cd537cbf66049b590465ed35c2af9f9f63220 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 15:10:04 +0100 Subject: [PATCH 103/199] feat: personal offer other structure --- .../personal-offer-form.component.html | 1 + .../personal-offer-form.component.ts | 7 +++++-- ...rsonal-offer-other-structure-choice.component.html | 9 ++++++++- ...personal-offer-other-structure-choice.component.ts | 11 +++++++---- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html index 524035dc0..ea72d888c 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html @@ -15,6 +15,7 @@ <app-personal-offer-other-structure-choice [structure]="structure" [personalOfferForm]="personalOfferForm" + (pageValid)="validPage()" ></app-personal-offer-other-structure-choice> </ng-container> </div> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts index d69cb1dc5..aa1ee25d9 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts @@ -27,11 +27,14 @@ export class PersonalOfferFormComponent implements OnInit { if (changes.currentStep) { if ( this.currentStep === personalOfferFormStep.personalOfferAccompaniment || - this.currentStep === personalOfferFormStep.personalOfferTrainingType || - this.currentStep === personalOfferFormStep.personalOfferStructureChoice + this.currentStep === personalOfferFormStep.personalOfferTrainingType ) { this.pageValid.emit(); } } } + + public validPage(): void { + this.pageValid.emit(); + } } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html index 5742e329e..cf9bf2178 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html @@ -1 +1,8 @@ -<p>personal-offer-other-structure-choice works!</p> +<form [formGroup]="personalOfferForm" *ngIf="personalOfferForm"> + <div class="title"> + <p class="overtitle">{{ structure.structureName }}</p> + <h3>Intervenez-vous dans une autre structure ?</h3> + </div> + + <app-radio-form [selectedOption]="" (selectedEvent)="onRadioChange($event)"> </app-radio-form> +</form> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts index 356719c58..0616feeca 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { Structure } from '../../../../models/structure.model'; @@ -7,11 +7,14 @@ import { Structure } from '../../../../models/structure.model'; templateUrl: './personal-offer-other-structure-choice.component.html', styleUrls: ['./personal-offer-other-structure-choice.component.scss'], }) -export class PersonalOfferOtherStructureChoiceComponent implements OnInit { +export class PersonalOfferOtherStructureChoiceComponent { @Input() structure: Structure; @Input() personalOfferForm: FormGroup; + @Output() pageValid = new EventEmitter<any>(); - constructor() {} + public choice: boolean; - ngOnInit(): void {} + public onRadioChange(value: boolean): void { + this.pageValid.emit(); + } } -- GitLab From 26360941fa4a2092418d826d4b95148ff1aa8617 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 15:40:21 +0100 Subject: [PATCH 104/199] feat: change param for personal offer --- .../personal-offer-accompaniment.component.html | 2 +- .../personal-offer-accompaniment.component.ts | 2 +- .../personal-offer-form.component.html | 6 +++--- .../personal-offer-form.component.ts | 13 +++---------- ...onal-offer-other-structure-choice.component.html | 2 +- ...rsonal-offer-other-structure-choice.component.ts | 2 +- .../personal-offer-training-type.component.html | 2 +- .../personal-offer-training-type.component.ts | 2 +- .../personalOfferFormStep.enum.ts | 1 - 9 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html index 1cd3a1648..aee6164bf 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.html @@ -1,6 +1,6 @@ <form [formGroup]="personalOfferForm" *ngIf="personalOfferForm"> <div class="title"> - <p class="overtitle">{{ structure.structureName }}</p> + <p class="overtitle">{{ structureName }}</p> <h3>Quelles aides au numérique proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts index dad068f54..4fed25e15 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts @@ -12,7 +12,7 @@ import { SearchService } from '../../../../structure-list/services/search.servic styleUrls: ['./personal-offer-accompaniment.component.scss'], }) export class PersonalOfferAccompanimentComponent implements OnInit { - @Input() structure: Structure; + @Input() structureName: string; @Input() personalOfferForm: FormGroup; @Output() validateForm = new EventEmitter<any>(); diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html index ea72d888c..90b94e46d 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html @@ -1,19 +1,19 @@ <div> <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferAccompaniment"> <app-personal-offer-accompaniment - [structure]="structure" + [structureName]="structureName" [personalOfferForm]="personalOfferForm" ></app-personal-offer-accompaniment> </ng-container> <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferTrainingType"> <app-personal-offer-training-type - [structure]="structure" + [structureName]="structureName" [personalOfferForm]="personalOfferForm" ></app-personal-offer-training-type> </ng-container> <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferStructureChoice"> <app-personal-offer-other-structure-choice - [structure]="structure" + [structureName]="structureName" [personalOfferForm]="personalOfferForm" (pageValid)="validPage()" ></app-personal-offer-other-structure-choice> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts index aa1ee25d9..8a134cf14 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts @@ -1,6 +1,5 @@ -import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core'; +import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { Structure } from '../../../models/structure.model'; import { personalOfferFormStep } from './personalOfferFormStep.enum'; @Component({ @@ -8,21 +7,15 @@ import { personalOfferFormStep } from './personalOfferFormStep.enum'; templateUrl: './personal-offer-form.component.html', styleUrls: ['./personal-offer-form.component.scss'], }) -export class PersonalOfferFormComponent implements OnInit { +export class PersonalOfferFormComponent { @Input() nbSteps: number; @Input() currentStep: personalOfferFormStep; @Input() personalOfferForm: FormGroup; - @Input() structure: Structure; + @Input() structureName: string; @Output() pageValid = new EventEmitter<any>(); public personalOfferFormStep = personalOfferFormStep; - constructor() {} - - ngOnInit(): void { - this.structure = new Structure({ structureName: 'Nom de la structure de Test' }); - } - ngOnChanges(changes: SimpleChanges): void { if (changes.currentStep) { if ( diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html index cf9bf2178..6642892ab 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.html @@ -1,6 +1,6 @@ <form [formGroup]="personalOfferForm" *ngIf="personalOfferForm"> <div class="title"> - <p class="overtitle">{{ structure.structureName }}</p> + <p class="overtitle">{{ structureName }}</p> <h3>Intervenez-vous dans une autre structure ?</h3> </div> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts index 0616feeca..bbfe053e8 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts @@ -8,7 +8,7 @@ import { Structure } from '../../../../models/structure.model'; styleUrls: ['./personal-offer-other-structure-choice.component.scss'], }) export class PersonalOfferOtherStructureChoiceComponent { - @Input() structure: Structure; + @Input() structureName: string; @Input() personalOfferForm: FormGroup; @Output() pageValid = new EventEmitter<any>(); diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html index e85df8a6b..f6458cd9a 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.html @@ -1,6 +1,6 @@ <form [formGroup]="personalOfferForm" *ngIf="personalOfferForm"> <div class="title"> - <p class="overtitle">{{ structure.structureName }}</p> + <p class="overtitle">{{ structureName }}</p> <h3>Quelles formations au numérique proposez-vous ?</h3> <p class="notRequired">Facultatif</p> </div> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts index 41a758091..7cb85bbcf 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts @@ -9,7 +9,7 @@ import { Category } from '../../../../structure-list/models/category.model'; styleUrls: ['./personal-offer-training-type.component.scss'], }) export class PersonalOfferTrainingTypeComponent { - @Input() structure: Structure; + @Input() structureName: string; @Input() personalOfferForm: FormGroup; public setTrainingsFromCategories(categories: Category[]) { diff --git a/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts b/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts index 460ca8172..d58b1aa7c 100644 --- a/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts +++ b/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts @@ -2,5 +2,4 @@ export enum personalOfferFormStep { personalOfferAccompaniment, personalOfferTrainingType, personalOfferStructureChoice, - personalOfferFinishedInfo, } -- GitLab From abefc57b16dceccda75e9c00aaf6c5f5191d5a05 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 15:40:40 +0100 Subject: [PATCH 105/199] feat: create personal offer service --- src/app/services/personal-offer.service.spec.ts | 16 ++++++++++++++++ src/app/services/personal-offer.service.ts | 15 +++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/app/services/personal-offer.service.spec.ts create mode 100644 src/app/services/personal-offer.service.ts diff --git a/src/app/services/personal-offer.service.spec.ts b/src/app/services/personal-offer.service.spec.ts new file mode 100644 index 000000000..3174c9097 --- /dev/null +++ b/src/app/services/personal-offer.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { PersonalOfferService } from './personal-offer.service'; + +describe('PersonalOfferService', () => { + let service: PersonalOfferService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(PersonalOfferService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/personal-offer.service.ts b/src/app/services/personal-offer.service.ts new file mode 100644 index 000000000..aa57be29b --- /dev/null +++ b/src/app/services/personal-offer.service.ts @@ -0,0 +1,15 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { PersonalOffer } from '../models/personalOffer.model'; + +@Injectable({ + providedIn: 'root', +}) +export class PersonalOfferService { + constructor(private http: HttpClient) {} + + public createPersonalOffer(structureId: string, personalOffer: PersonalOffer): Observable<any> { + return this.http.post<any>(`api/personal-offers/`, { structureId: structureId, personalOffer: personalOffer }); + } +} -- GitLab From 441edd0d2b8494efb9ee5c7c2a154fa90f715b97 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Wed, 23 Mar 2022 15:41:50 +0100 Subject: [PATCH 106/199] add wifi structure --- .../account-credentials.component.html | 384 +++++++++--------- .../account-info/account-info.component.html | 134 +++--- .../account-newsletter.component.html | 32 +- src/app/form/form-view/form-view.component.ts | 2 +- .../structure-form.component.html | 11 + .../structure-form.component.ts | 15 - .../structure-wifi.component.html | 17 +- .../structure-wifi.component.ts | 22 +- 8 files changed, 315 insertions(+), 302 deletions(-) diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html index a43e46cf6..eed6365da 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html @@ -1,225 +1,223 @@ -<div class="page"> - <form - [formGroup]="accountForm" - *ngIf="accountForm && !profile" - (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" - > - <div class="title"> - <h3>Quels identifiants utiliserez-vous pour vous connecter ?</h3> +<form + [formGroup]="accountForm" + *ngIf="accountForm && !profile" + (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" +> + <div class="title"> + <h3>Quels identifiants utiliserez-vous pour vous connecter ?</h3> + </div> + <div class="form-group" fxLayout="column"> + <label for="email">Email du compte</label> + <p class="special invalid" *ngIf="this.accountForm.get('email').hasError('alreadyExist')"> + L'email est déja utilisé. + </p> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + (input)="setValidationsForm()" + (keyup)="verifyUserExist($event.target.value)" + formControlName="email" + placeholder="exemple: prenom.nom@grandlyon.com" + class="form-input email-placeholder" + [readonly]="isAccountMode" + [ngClass]="{ disabled: isAccountMode }" + /> + <app-svg-icon + *ngIf="accountForm.get('email').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('email').invalid && accountForm.get('email').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> </div> - <div class="form-group" fxLayout="column"> - <label for="email">Email du compte</label> - <p class="special invalid" *ngIf="this.accountForm.get('email').hasError('alreadyExist')"> - L'email est déja utilisé. - </p> - <div fxLayout="row" fxLayoutGap="13px"> - <input - type="text" - (input)="setValidationsForm()" - (keyup)="verifyUserExist($event.target.value)" - formControlName="email" - placeholder="exemple: prenom.nom@grandlyon.com" - class="form-input email-placeholder" - [readonly]="isAccountMode" - [ngClass]="{ disabled: isAccountMode }" - /> + </div> + <div class="form-group" fxLayout="column"> + <label for="password">Création de mot de passe</label> + <p + class="special" + [ngClass]="{ invalid: accountForm.get('password').invalid && accountForm.get('password').value }" + ></p> + <span class="passwordInfo">Le mot de passe doit contenir au minimum</span> + <ul> + <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" + [ngClass]="{ + invalid: accountForm.get('password').value.length < 8, + valid: accountForm.get('password').value.length >= 8 + }" + class="" + > <app-svg-icon - *ngIf="accountForm.get('email').valid" - [iconClass]="'validation'" + *ngIf="accountForm.get('password').value.length >= 8" + [iconClass]="'validation-small'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon - *ngIf="accountForm.get('email').invalid && accountForm.get('email').value" - [iconClass]="'validation'" + *ngIf="accountForm.get('password').value.length < 8" + [iconClass]="'validation-small'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> - </div> - </div> - <div class="form-group" fxLayout="column"> - <label for="password">Création de mot de passe</label> - <p - class="special" - [ngClass]="{ invalid: accountForm.get('password').invalid && accountForm.get('password').value }" - ></p> - <span class="passwordInfo">Le mot de passe doit contenir au minimum</span> - <ul> - <li - fxLayout="row" - fxLayoutAlign="start center" - fxLayoutGap="10px" - [ngClass]="{ - invalid: accountForm.get('password').value.length < 8, - valid: accountForm.get('password').value.length >= 8 - }" - class="" - > - <app-svg-icon - *ngIf="accountForm.get('password').value.length >= 8" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('password').value.length < 8" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>8 caractères</p> - </li> - <li - fxLayout="row" - fxLayoutAlign="start center" - fxLayoutGap="10px" - [ngClass]="{ - invalid: !checkIfPasswordHasSpecialChar(accountForm.get('password').value), - valid: checkIfPasswordHasSpecialChar(accountForm.get('password').value) - }" - > - <app-svg-icon - *ngIf="checkIfPasswordHasSpecialChar(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="!checkIfPasswordHasSpecialChar(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>un caractère spécial</p> - </li> - <li - fxLayout="row" - fxLayoutAlign="start center" - fxLayoutGap="10px" - [ngClass]="{ - invalid: !checkIfPasswordHasLowerCase(accountForm.get('password').value), - valid: checkIfPasswordHasLowerCase(accountForm.get('password').value) - }" - > - <app-svg-icon - *ngIf="checkIfPasswordHasLowerCase(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="!checkIfPasswordHasLowerCase(accountForm.get('password').value); s" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>un caractère en minuscule</p> - </li> - <li - fxLayout="row" - fxLayoutAlign="start center" - fxLayoutGap="10px" - [ngClass]="{ - invalid: !checkIfPasswordHasUpperCase(accountForm.get('password').value), - valid: checkIfPasswordHasUpperCase(accountForm.get('password').value) - }" - > - <app-svg-icon - *ngIf="checkIfPasswordHasUpperCase(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="!checkIfPasswordHasUpperCase(accountForm.get('password').value); s" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>un caractère en majuscule</p> - </li> - <li - fxLayout="row" - fxLayoutAlign="start center" - fxLayoutGap="10px" - [ngClass]="{ - invalid: !checkIfPasswordHasDigit(accountForm.get('password').value), - valid: checkIfPasswordHasDigit(accountForm.get('password').value) - }" - > - <app-svg-icon - *ngIf="checkIfPasswordHasDigit(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="!checkIfPasswordHasDigit(accountForm.get('password').value)" - [iconClass]="'validation-small'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - <p>un chiffre</p> - </li> - </ul> - <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> - <input - [type]="isShowPassword ? 'text' : 'password'" - formControlName="password" - class="form-input password" - (input)="setValidationsForm()" - autocomplete="on" - /> + <p>8 caractères</p> + </li> + <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" + [ngClass]="{ + invalid: !checkIfPasswordHasSpecialChar(accountForm.get('password').value), + valid: checkIfPasswordHasSpecialChar(accountForm.get('password').value) + }" + > <app-svg-icon - [iconClass]="'validation grey hover'" + *ngIf="checkIfPasswordHasSpecialChar(accountForm.get('password').value)" + [iconClass]="'validation-small'" [type]="'form'" - [icon]="'eyePassword'" - (click)="showPassword()" + [icon]="'validate'" ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('password').valid" - [iconClass]="'validation'" + *ngIf="!checkIfPasswordHasSpecialChar(accountForm.get('password').value)" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un caractère spécial</p> + </li> + <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" + [ngClass]="{ + invalid: !checkIfPasswordHasLowerCase(accountForm.get('password').value), + valid: checkIfPasswordHasLowerCase(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasLowerCase(accountForm.get('password').value)" + [iconClass]="'validation-small'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon - *ngIf="accountForm.get('password').invalid && accountForm.get('password').value" - [iconClass]="'validation'" + *ngIf="!checkIfPasswordHasLowerCase(accountForm.get('password').value); s" + [iconClass]="'validation-small'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> - </div> - </div> - <div class="form-group" fxLayout="column"> - <label for="confirmPassword">Vérification du mot de passe</label> - <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> - <input - [type]="isShowConfirmPassword ? 'text' : 'password'" - formControlName="confirmPassword" - class="form-input password" - (input)="setValidationsForm()" - autocomplete="on" - /> + <p>un caractère en minuscule</p> + </li> + <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" + [ngClass]="{ + invalid: !checkIfPasswordHasUpperCase(accountForm.get('password').value), + valid: checkIfPasswordHasUpperCase(accountForm.get('password').value) + }" + > <app-svg-icon - [iconClass]="'validation grey hover'" + *ngIf="checkIfPasswordHasUpperCase(accountForm.get('password').value)" + [iconClass]="'validation-small'" [type]="'form'" - [icon]="'eyePassword'" - (click)="showConfirmPassword()" + [icon]="'validate'" ></app-svg-icon> <app-svg-icon - *ngIf="accountForm.get('confirmPassword').valid && accountForm.get('confirmPassword').value" - [iconClass]="'validation'" + *ngIf="!checkIfPasswordHasUpperCase(accountForm.get('password').value); s" + [iconClass]="'validation-small'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + <p>un caractère en majuscule</p> + </li> + <li + fxLayout="row" + fxLayoutAlign="start center" + fxLayoutGap="10px" + [ngClass]="{ + invalid: !checkIfPasswordHasDigit(accountForm.get('password').value), + valid: checkIfPasswordHasDigit(accountForm.get('password').value) + }" + > + <app-svg-icon + *ngIf="checkIfPasswordHasDigit(accountForm.get('password').value)" + [iconClass]="'validation-small'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon - *ngIf="accountForm.get('confirmPassword').invalid && accountForm.get('confirmPassword').value" - [iconClass]="'validation'" + *ngIf="!checkIfPasswordHasDigit(accountForm.get('password').value)" + [iconClass]="'validation-small'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> - </div> + <p>un chiffre</p> + </li> + </ul> + <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> + <input + [type]="isShowPassword ? 'text' : 'password'" + formControlName="password" + class="form-input password" + (input)="setValidationsForm()" + autocomplete="on" + /> + <app-svg-icon + [iconClass]="'validation grey hover'" + [type]="'form'" + [icon]="'eyePassword'" + (click)="showPassword()" + ></app-svg-icon> + + <app-svg-icon + *ngIf="accountForm.get('password').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('password').invalid && accountForm.get('password').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> + </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="confirmPassword">Vérification du mot de passe</label> + <div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px"> + <input + [type]="isShowConfirmPassword ? 'text' : 'password'" + formControlName="confirmPassword" + class="form-input password" + (input)="setValidationsForm()" + autocomplete="on" + /> + <app-svg-icon + [iconClass]="'validation grey hover'" + [type]="'form'" + [icon]="'eyePassword'" + (click)="showConfirmPassword()" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('confirmPassword').valid && accountForm.get('confirmPassword').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('confirmPassword').invalid && accountForm.get('confirmPassword').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> </div> - </form> -</div> + </div> +</form> diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.html b/src/app/form/form-view/account-form/account-info/account-info.component.html index 445b8564b..304f523c4 100644 --- a/src/app/form/form-view/account-form/account-info/account-info.component.html +++ b/src/app/form/form-view/account-form/account-info/account-info.component.html @@ -1,71 +1,69 @@ -<div class="page"> - <form - [formGroup]="accountForm" - *ngIf="accountForm && !profile" - (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" - > - <div class="title"> - <h3>Qui êtes-vous ?</h3> - <p>Vous pourrez choisir de rendre visibles ces informations sur votre profil public</p> +<form + [formGroup]="accountForm" + *ngIf="accountForm && !profile" + (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" +> + <div class="title"> + <h3>Qui êtes-vous ?</h3> + <p>Vous pourrez choisir de rendre visibles ces informations sur votre profil public</p> + </div> + <div class="form-group" fxLayout="column"> + <label for="name">Prénom</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input type="text" (input)="setValidationsForm()" formControlName="name" class="form-input" /> + <app-svg-icon + *ngIf="accountForm.get('name').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('name').invalid && accountForm.get('name').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> </div> - <div class="form-group" fxLayout="column"> - <label for="name">Prénom</label> - <div fxLayout="row" fxLayoutGap="13px"> - <input type="text" (input)="setValidationsForm()" formControlName="name" class="form-input" /> - <app-svg-icon - *ngIf="accountForm.get('name').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('name').invalid && accountForm.get('name').value" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="surname">Nom</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input type="text" (input)="setValidationsForm()" formControlName="surname" class="form-input" /> + <app-svg-icon + *ngIf="accountForm.get('surname').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('surname').invalid && accountForm.get('surname').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> </div> - <div class="form-group" fxLayout="column"> - <label for="surname">Nom</label> - <div fxLayout="row" fxLayoutGap="13px"> - <input type="text" (input)="setValidationsForm()" formControlName="surname" class="form-input" /> - <app-svg-icon - *ngIf="accountForm.get('surname').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('surname').invalid && accountForm.get('surname').value" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - </div> + </div> + <div class="form-group" fxLayout="column"> + <label for="phone">Téléphone</label> + <div fxLayout="row" fxLayoutGap="13px"> + <input + type="text" + formControlName="phone" + class="form-input phone" + (input)="utils.modifyPhoneInput(accountForm, 'phone', $event.target.value); setValidationsForm()" + /> + <app-svg-icon + *ngIf="accountForm.get('phone').valid" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'validate'" + ></app-svg-icon> + <app-svg-icon + *ngIf="accountForm.get('phone').invalid && accountForm.get('phone').value" + [iconClass]="'validation'" + [type]="'form'" + [icon]="'notValidate'" + ></app-svg-icon> </div> - <div class="form-group" fxLayout="column"> - <label for="phone">Téléphone</label> - <div fxLayout="row" fxLayoutGap="13px"> - <input - type="text" - formControlName="phone" - class="form-input phone" - (input)="utils.modifyPhoneInput(accountForm, 'phone', $event.target.value); setValidationsForm()" - /> - <app-svg-icon - *ngIf="accountForm.get('phone').valid" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'validate'" - ></app-svg-icon> - <app-svg-icon - *ngIf="accountForm.get('phone').invalid && accountForm.get('phone').value" - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - ></app-svg-icon> - </div> - </div> - </form> -</div> + </div> +</form> diff --git a/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.html b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.html index fb08680cf..6ff4263ab 100644 --- a/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.html +++ b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.html @@ -1,18 +1,16 @@ -<div class="page"> - <form - [formGroup]="accountForm" - *ngIf="accountForm && !profile" - (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" +<form + [formGroup]="accountForm" + *ngIf="accountForm && !profile" + (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" +> + <div class="title"> + <h3>Souhaitez-vous vous abonner à la lettre d’information de Res'in ?</h3> + <p class="notRequired" *ngIf="!isEditMode">Facultatif</p> + </div> + <app-checkbox-form + [isChecked]="userAcceptNewsletter" + [text]="'J\'accepte'" + (checkEvent)="acceptReceiveNewsletter($event)" > - <div class="title"> - <h3>Souhaitez-vous vous abonner à la lettre d’information de Res'in ?</h3> - <p class="notRequired" *ngIf="!isEditMode">Facultatif</p> - </div> - <app-checkbox-form - [isChecked]="userAcceptNewsletter" - [text]="'J\'accepte'" - (checkEvent)="acceptReceiveNewsletter($event)" - > - </app-checkbox-form> - </form> -</div> + </app-checkbox-form> +</form> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index a226272dd..4eccbd6cd 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -140,7 +140,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structurePublicTarget; + this.currentPage = structureFormStep.structureWifi; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 4cecf5910..edfaed3ac 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -72,11 +72,22 @@ > </app-structure-public-target> </div> +<div *ngIf="currentStep == structureFormStep.structureWifi"> + <app-structure-wifi + [structureForm]="structureForm" + [isEditMode]="isEditMode" + [isWifiChoosen]="isWifiChoosen" + (validateForm)="setValidationsForm($event)" + (inArray)="isInArray($event)" + (checkChange)="onCheckChange($event)" + ></app-structure-wifi> +</div> <div *ngIf="currentStep == structureFormStep.structureEquipments"> <app-structure-equipments [structureForm]="structureForm" (validateForm)="setValidationsForm($event)" [isEditMode]="isEditMode" + (inArray)="isInArray($event)" ></app-structure-equipments> </div> <div *ngIf="currentStep == structureFormStep.structureLabels"> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 8d19e1262..b53ddc665 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -334,19 +334,4 @@ export class StructureFormComponent implements OnChanges { this.getStructureControl('dataShareConsentDate').setValue(now); this.setValidationsForm(); } - // public onCheckChange(event: boolean, formControlName: string, value: string): void { - // if (value === 'wifiEnAccesLibre') { - // this.isWifiChoosen = true; - // } - // const formArray: FormArray = this.structureForm.get(formControlName) as FormArray; - // if (event) { - // // Add a new control in the arrayForm - // formArray.push(new FormControl(value)); - // } else { - // // Remove uncheck control in the arrayForm - // const index = formArray.controls.findIndex((element) => element.value === value); - // formArray.removeAt(index); - // } - // this.setValidationsForm(); - // } } diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html index 710fd404e..9db87f701 100644 --- a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html +++ b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html @@ -1 +1,16 @@ -<p>structure-wifi works!</p> +<form [formGroup]="structureForm"> + <div class="title"> + <h3>Le wifi est-il proposé en accès libre ?</h3> + </div> + <app-radio-form + [selectedOption]=" + isEditMode + ? isInArray('wifiEnAccesLibre', 'equipmentsAndServices') + : isWifiChoosen + ? isInArray('wifiEnAccesLibre', 'equipmentsAndServices') + : null + " + (selectedEvent)="onCheckChange($event, 'equipmentsAndServices', 'wifiEnAccesLibre')" + > + </app-radio-form> +</form> diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts index 2aecbdecb..c34290b0c 100644 --- a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts +++ b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts @@ -1,15 +1,23 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-wifi', templateUrl: './structure-wifi.component.html', - styleUrls: ['./structure-wifi.component.scss'] + styleUrls: ['./structure-wifi.component.scss'], }) -export class StructureWifiComponent implements OnInit { +export class StructureWifiComponent { + @Input() structureForm: FormGroup; + @Input() isEditMode: boolean; + @Input() isWifiChoosen: boolean; + @Output() validateForm = new EventEmitter<any>(); + @Output() inArray = new EventEmitter<any>(); + @Output() checkChange = new EventEmitter<any>(); - constructor() { } - - ngOnInit(): void { + public isInArray(accessModalityId: string, modality: string) { + this.inArray.emit({ formControlName: accessModalityId, value: modality }); + } + public onCheckChange(event, catId: string, modId: string): void { + this.checkChange.emit({ event, formControlName: catId, value: modId }); } - } -- GitLab From 79d2c408dcab755b337b97cac913f96f4c173aee Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 16:02:32 +0100 Subject: [PATCH 107/199] structure digital help --- src/app/form/form-view/form-view.component.ts | 2 +- ...gital-helping-accompaniment.component.html | 24 +++++++++++++++- ...gital-helping-accompaniment.component.scss | 28 +++++++++++++++++++ ...digital-helping-accompaniment.component.ts | 25 ++++++++++++++--- .../structure-form.component.html | 8 ++++++ .../structure-form.component.ts | 4 +++ .../structure-form/structureFormStep.enum.ts | 6 ++-- 7 files changed, 88 insertions(+), 9 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 9563e18d2..7adcc08d3 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -139,7 +139,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structurePublicTarget; + this.currentPage = structureFormStep.structureDigitalHelpingAccompaniment; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html index e160ae8b8..a972f9f83 100644 --- a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html @@ -1 +1,23 @@ -<p>structure-digital-helping-accompaniment works!</p> +<form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> + <div class="title"> + <h3>Quelles aides au numérique propose la structure ?</h3> + <p>Facultatif</p> + </div> + + <div class="tags"> + <button + *ngFor="let accompaniment of proceduresAccompaniment.modules" + (click)="updateChoiceAccompaniment(accompaniment.id)" + [ngClass]="{ selectedChoice: isInArray(accompaniment.id) }" + > + <div fxLayout="row" fxLayoutAlign=" center"> + <svg class="validate" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> + </svg> + <div class="textBtn"> + {{ accompaniment.text }} + </div> + </div> + </button> + </div> +</form> diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss index e69de29bb..6ae6c98b1 100644 --- a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss @@ -0,0 +1,28 @@ +@import '../../../../../assets/scss/typography'; +@import '../../../../../assets/scss/color'; + +.tags { + padding: 8px; + button { + background: $grey-8; + border-radius: 20px; + margin: 4px; + max-width: 100%; + height: 40px; + padding: 0 13px; + @include lato-bold-14; + outline: none; + border: none; + cursor: pointer; + &.selectedChoice { + background: $green-1 !important; + color: $white; + } + } + svg { + width: 20px; + height: 10px; + margin-right: 4px; + stroke: $grey-8; + } +} diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts index a71245716..e6eb6883b 100644 --- a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts @@ -1,15 +1,32 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-digital-helping-accompaniment', templateUrl: './structure-digital-helping-accompaniment.component.html', - styleUrls: ['./structure-digital-helping-accompaniment.component.scss'] + styleUrls: ['./structure-digital-helping-accompaniment.component.scss'], }) export class StructureDigitalHelpingAccompanimentComponent implements OnInit { - - constructor() { } + @Input() structureForm: FormGroup; + @Input() proceduresAccompaniment: Category; + @Output() updateChoice = new EventEmitter<any>(); + @Output() validateForm = new EventEmitter<any>(); ngOnInit(): void { + this.validateForm.emit(); + } + + public updateChoiceAccompaniment(choice: string) { + this.updateChoice.emit({ formControlName: 'proceduresAccompaniment', choice }); } + public isInArray(choice: string) { + if ( + this.structureForm.get('proceduresAccompaniment') && + this.structureForm.get('proceduresAccompaniment').value.includes(choice) + ) + return true; + return false; + } } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 44503715f..6bf37d650 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -94,3 +94,11 @@ [structure]="structure" ></app-structure-other-services> </div> +<div *ngIf="currentStep == structureFormStep.structureDigitalHelpingAccompaniment"> + <app-structure-digital-helping-accompaniment + [structureForm]="structureForm" + [proceduresAccompaniment]="proceduresAccompaniment" + (validateForm)="setValidationsForm($event)" + (updateChoice)="updateChoice($event)" + ></app-structure-digital-helping-accompaniment> +</div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 4c5b896e8..abfe99e90 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -173,6 +173,10 @@ export class StructureFormComponent implements OnChanges { valid: this.structureForm.get('publics').valid, name: 'Public admis', }; + this.pagesValidation[structureFormStep.structureDigitalHelpingAccompaniment] = { + valid: this.structureForm.get('proceduresAccompaniment').valid, + name: 'Aides au numérique', + }; // this.pagesValidation[structureFormStep.structureOtherAccompaniment] = { // valid: this.structureForm.get('otherDescription').value, diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index f080ba17f..396c593ae 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -10,11 +10,9 @@ export enum structureFormStep { structurePmr, structureWebAndSocialNetwork, structurePublicTarget, - structureCreationInfo, - structurePublicAccompaniment, structureDigitalHelpingAccompaniment, - structureTrainingPrice, structureTrainingType, + structureTrainingPrice, structureWifi, structureEquipments, structureLabels, @@ -23,4 +21,6 @@ export enum structureFormStep { structureCovidInfo, structureConsent, structureCreationFinishedInfo, + structurePublicAccompaniment, // ? + structureCreationInfo, // ? } -- GitLab From 314e0fb3ca3c200764a11d16e8e46ca4c89fcec2 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 16:04:46 +0100 Subject: [PATCH 108/199] fix merge --- .../structure-form.component.html | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 690e82fd1..d5a6435da 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -112,33 +112,33 @@ (validateForm)="setValidationsForm($event)" (updateChoice)="updateChoice($event)" ></app-structure-digital-helping-accompaniment> - <div *ngIf="currentStep == structureFormStep.structureDescription"> - <app-structure-description - [structureForm]="structureForm" - (validateForm)="setValidationsForm($event)" - [isEditMode]="isEditMode" - ></app-structure-description> - </div> - <div *ngIf="currentStep == structureFormStep.structureCovidInfo"> - <app-structure-covid-info - [structureForm]="structureForm" - (validateForm)="setValidationsForm($event)" - [isEditMode]="isEditMode" - ></app-structure-covid-info> - </div> - <div *ngIf="currentStep == structureFormStep.structureConsent"> - <app-structure-consent - [structureForm]="structureForm" - [isEditMode]="isEditMode" - (onAcceptOpenData)="acceptOpenData($event)" - (onAcceptDataBeSaved)="acceptDataBeSaved($event)" - ></app-structure-consent> - </div> - <div *ngIf="currentStep == structureFormStep.structureCreationFinishedInfo"> - <app-information-step - [structureForm]="structureForm" - [isEditMode]="isEditMode" - [step]="currentStep" - ></app-information-step> - </div> +</div> +<div *ngIf="currentStep == structureFormStep.structureDescription"> + <app-structure-description + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + ></app-structure-description> +</div> +<div *ngIf="currentStep == structureFormStep.structureCovidInfo"> + <app-structure-covid-info + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + ></app-structure-covid-info> +</div> +<div *ngIf="currentStep == structureFormStep.structureConsent"> + <app-structure-consent + [structureForm]="structureForm" + [isEditMode]="isEditMode" + (onAcceptOpenData)="acceptOpenData($event)" + (onAcceptDataBeSaved)="acceptDataBeSaved($event)" + ></app-structure-consent> +</div> +<div *ngIf="currentStep == structureFormStep.structureCreationFinishedInfo"> + <app-information-step + [structureForm]="structureForm" + [isEditMode]="isEditMode" + [step]="currentStep" + ></app-information-step> </div> -- GitLab From ce9fda4836e642c3ca7589b767a859cd607c880b Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 16:14:32 +0100 Subject: [PATCH 109/199] address structure fixed --- src/app/form/form-view/form-view.component.ts | 3 +-- .../structure-form/structure-form.component.ts | 6 +++--- .../structure-name-and-address.component.ts | 11 ++++++++--- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index a760c1d85..961c88504 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -98,7 +98,6 @@ export class FormViewComponent implements OnInit { } // Handle account creation when pre-register this.route.data.subscribe((data) => { - console.log(data); if (data.user) { this.isAccountMode = true; this.createAccountForm(data.user.email); @@ -152,7 +151,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureWifi; + this.currentPage = structureFormStep.structureNameAndAddress; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 419359c57..59fc23d7a 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -71,9 +71,9 @@ export class StructureFormComponent implements OnChanges { public setAddressStructure(address?: Address): void { if (address) { - this.structureForm.get('numero').setValue(address.numero); - this.structureForm.get('street').setValue(address.street); - this.structureForm.get('commune').setValue(address.commune); + this.structureForm.get('address').get('numero').setValue(address.numero); + this.structureForm.get('address').get('street').setValue(address.street); + this.structureForm.get('address').get('commune').setValue(address.commune); } else { this.structureForm.get('address').reset(); } diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts index 79c0096d8..532a5da30 100644 --- a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts @@ -1,5 +1,6 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; +import { Address } from '../../../../models/address.model'; @Component({ selector: 'app-structure-name-and-address', @@ -8,10 +9,14 @@ import { FormGroup } from '@angular/forms'; }) export class StructureNameAndAddressComponent { @Input() structureForm: FormGroup; - @Input() isEditMode: boolean; @Output() validateForm = new EventEmitter<any>(); + @Output() addressStructure = new EventEmitter<any>(); - public setValidationsForm(): void { + public setValidationsForm() { this.validateForm.emit(); } + + public setAddressStructure(address?: Address) { + this.addressStructure.emit(address); + } } -- GitLab From c20d1c9209f1519a759a27f267b5a6395d4ba2b7 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 16:14:40 +0100 Subject: [PATCH 110/199] feat: create emit for form end in footer --- .../form/footer-form/footer-form.component.ts | 14 ++++++++-- .../form/form-view/form-view.component.html | 2 +- src/app/form/form-view/form-view.component.ts | 26 ++++++++++++++++++- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index af1de06d7..5af116c68 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -35,7 +35,7 @@ export class FooterFormComponent implements OnChanges { @Output() goNext = new EventEmitter<any>(); @Output() goPrev = new EventEmitter<any>(); @Output() endPage = new EventEmitter<any>(); - @Output() saveProfileForm = new EventEmitter<any>(); + @Output() endForm = new EventEmitter<formType>(); public isLastFormStep: boolean = false; public isNextFormTransition: boolean = false; public buttonTypeEnum = ButtonType; @@ -93,7 +93,7 @@ export class FooterFormComponent implements OnChanges { document.getElementsByClassName('page')[0].scrollTo(0, 0); } if (this.isProfileLastpage()) { - this.saveProfileForm.emit(); + this.endForm.emit(this.currentForm); } if (this.currentForm === formType.structure) { if (this.currentStep === structureFormStep.structureConsent) { @@ -105,10 +105,20 @@ export class FooterFormComponent implements OnChanges { return; } } + if (this.isPersonalOfferpage()) { + this.endForm.emit(this.currentForm); + } this.goToNextPage(); } private isProfileLastpage(): boolean { return this.currentForm === formType.profile && this.currentStep === profileFormStep.profileJobSelection; } + + private isPersonalOfferpage(): boolean { + return ( + this.currentForm === formType.personaloffer && + this.currentStep === personalOfferFormStep.personalOfferStructureChoice + ); + } } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 5acfd4959..627d05f8b 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -57,6 +57,6 @@ [acceptNewsletter]="userAcceptNewsletter" (goNext)="nextPage()" (goPrev)="prevPage()" - (saveProfileForm)="saveProfileForm()" + (endForm)="endForm($event)" ></app-footer-form> </div> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 483bd694a..92a32fa80 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -10,6 +10,7 @@ import { StructureWithOwners } from '../../models/structureWithOwners.model'; import { Time } from '../../models/time.model'; import { User } from '../../models/user.model'; import { ProfileService } from '../../profile/services/profile.service'; +import { PersonalOfferService } from '../../services/personal-offer.service'; import { StructureService } from '../../services/structure.service'; import { MustMatch } from '../../shared/validator/form'; import { CustomRegExp } from '../../utils/CustomRegExp'; @@ -73,7 +74,8 @@ export class FormViewComponent implements OnInit { private router: Router, private route: ActivatedRoute, private profileService: ProfileService, - private structureService: StructureService + private structureService: StructureService, + private personalOfferService: PersonalOfferService ) {} async ngOnInit(): Promise<void> { @@ -349,6 +351,21 @@ export class FormViewComponent implements OnInit { return true; } + public endForm(type: formType): void { + switch (type) { + case formType.account: + break; + case formType.profile: + this.saveProfileForm(); + break; + case formType.structure: + break; + case formType.personaloffer: + this.savePersonalOfferForm(); + break; + } + } + public saveProfileForm(): void { console.log('Create job, employer and update profile'); forkJoin({ @@ -370,4 +387,11 @@ export class FormViewComponent implements OnInit { this.router.navigateByUrl('form/structure'); }); } + + public savePersonalOfferForm(): void { + this.personalOfferService.createPersonalOffer(this.structure._id, this.personalOfferForm.value).subscribe(() => { + // TODO root to the right screen + // this.router.navigateByUrl('form/structure'); + }); + } } -- GitLab From 8adc81d2c40f56231d8735c9cbe6040522a27b13 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Wed, 23 Mar 2022 16:31:10 +0100 Subject: [PATCH 111/199] add form structure training --- src/app/form/form-view/form-view.component.ts | 2 +- src/app/form/form-view/form-view.module.ts | 2 ++ .../structure-form.component.html | 9 +++++++ .../structure-form.component.ts | 2 ++ .../structure-training-price.component.html | 12 ++++++++- .../structure-training-price.component.ts | 18 ++++++++----- .../structure-training-type.component.html | 14 +++++++++++ .../structure-training-type.component.scss | 0 .../structure-training-type.component.spec.ts | 25 +++++++++++++++++++ .../structure-training-type.component.ts | 24 ++++++++++++++++++ .../structure-form/structureFormStep.enum.ts | 2 +- .../radio-form/radio-form.component.html | 20 ++++++++++++++- .../radio-form/radio-form.component.scss | 8 ++++++ .../radio-form/radio-form.component.ts | 9 ++++--- 14 files changed, 133 insertions(+), 14 deletions(-) create mode 100644 src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.html create mode 100644 src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.scss create mode 100644 src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.spec.ts create mode 100644 src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index a760c1d85..d6e4f392d 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -152,7 +152,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureWifi; + this.currentPage = structureFormStep.structureTrainingType; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); diff --git a/src/app/form/form-view/form-view.module.ts b/src/app/form/form-view/form-view.module.ts index 06bd6554a..4a848a59b 100644 --- a/src/app/form/form-view/form-view.module.ts +++ b/src/app/form/form-view/form-view.module.ts @@ -42,6 +42,7 @@ import { StructureTypeComponent } from './structure-form/structure-type/structur import { PersonalOfferAccompanimentComponent } from './personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component'; import { PersonalOfferTrainingTypeComponent } from './personal-offer-form/personal-offer-training-type/personal-offer-training-type.component'; import { AccountNewsletterComponent } from './account-form/account-newsletter/account-newsletter.component'; +import { StructureTrainingTypeComponent } from './structure-form/structure-training-type/structure-training-type.component'; @NgModule({ declarations: [ @@ -86,6 +87,7 @@ import { AccountNewsletterComponent } from './account-form/account-newsletter/ac FooterFormComponent, StructureTypeComponent, AccountNewsletterComponent, + StructureTrainingTypeComponent, ], imports: [CommonModule, FormViewRoutingModule, SharedModule], }) diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index edfaed3ac..29c33993a 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -72,6 +72,15 @@ > </app-structure-public-target> </div> +<div *ngIf="currentStep == structureFormStep.structureTrainingType"> + <app-structure-training-type [structureForm]="structureForm"></app-structure-training-type> +</div> +<div *ngIf="currentStep == structureFormStep.structureTrainingPrice"> + <app-structure-training-price + [structureForm]="structureForm" + (radioChange)="onRadioChange($event)" + ></app-structure-training-price> +</div> <div *ngIf="currentStep == structureFormStep.structureWifi"> <app-structure-wifi [structureForm]="structureForm" diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index b53ddc665..9487c0dbc 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -50,7 +50,9 @@ export class StructureFormComponent implements OnChanges { ngOnChanges(changes: SimpleChanges): void { if (changes.currentStep) { + //facultative steps if ( + this.currentStep === structureFormStep.structureTrainingType || this.currentStep === structureFormStep.structureEquipments || this.currentStep === structureFormStep.structureLabels || this.currentStep === structureFormStep.structureOtherServices || diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html index a2e8eb480..3974d0557 100644 --- a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html +++ b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html @@ -1 +1,11 @@ -<p>structure-training-price works!</p> +<form [formGroup]="structureForm"> + <div class="title"> + <h3>Ces ateliers sont-ils gratuits ?</h3> + </div> + <app-radio-form + [selectedOption]="getStructureControl('freeWorkShop').value" + [isThreeChoices]="true" + (selectedEvent)="onRadioChange('freeWorkShop', $event)" + > + </app-radio-form> +</form> diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts index 741736f1c..034d9e118 100644 --- a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts +++ b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts @@ -1,15 +1,21 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { AbstractControl, FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-training-price', templateUrl: './structure-training-price.component.html', - styleUrls: ['./structure-training-price.component.scss'] + styleUrls: ['./structure-training-price.component.scss'], }) export class StructureTrainingPriceComponent implements OnInit { + @Input() structureForm: FormGroup; + @Output() radioChange = new EventEmitter<any>(); + constructor() {} - constructor() { } - - ngOnInit(): void { + ngOnInit(): void {} + public getStructureControl(nameControl: string): AbstractControl { + return this.structureForm.get(nameControl); + } + public onRadioChange(name: string, value: boolean): void { + this.radioChange.emit({ name, value }); } - } diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.html b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.html new file mode 100644 index 000000000..27359cc02 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.html @@ -0,0 +1,14 @@ +<form [formGroup]="structureForm"> + <div class="title"> + <h3>Quelles formations au numérique proposez-vous ?</h3> + <p class="notRequired">Facultatif</p> + </div> + <app-training-type-picker + [baseSkills]="structureForm.get('baseSkills').value" + [accessRight]="structureForm.get('accessRight').value" + [digitalCultureSecurity]="structureForm.get('digitalCultureSecurity').value" + [socialAndProfessional]="structureForm.get('socialAndProfessional').value" + [parentingHelp]="structureForm.get('parentingHelp').value" + (selectedType)="setTrainingsFromCategories($event)" + ></app-training-type-picker> +</form> diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.scss b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.spec.ts b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.spec.ts new file mode 100644 index 000000000..395a65942 --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StructureTrainingTypeComponent } from './structure-training-type.component'; + +describe('StructureTrainingTypeComponent', () => { + let component: StructureTrainingTypeComponent; + let fixture: ComponentFixture<StructureTrainingTypeComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ StructureTrainingTypeComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(StructureTrainingTypeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts new file mode 100644 index 000000000..16142948c --- /dev/null +++ b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts @@ -0,0 +1,24 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { Category } from '../../../../structure-list/models/category.model'; + +@Component({ + selector: 'app-structure-training-type', + templateUrl: './structure-training-type.component.html', + styleUrls: ['./structure-training-type.component.scss'], +}) +export class StructureTrainingTypeComponent implements OnInit { + @Input() structureForm: FormGroup; + + constructor() {} + + ngOnInit(): void {} + public setTrainingsFromCategories(categories: Category[]) { + for (const categorie of categories) { + const moduleIds: string[] = categorie.modules.map((module) => module.id); + if (this.structureForm.get(categorie.id)) { + this.structureForm.get(categorie.id).patchValue(moduleIds); + } + } + } +} diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index f080ba17f..97081e632 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -13,8 +13,8 @@ export enum structureFormStep { structureCreationInfo, structurePublicAccompaniment, structureDigitalHelpingAccompaniment, - structureTrainingPrice, structureTrainingType, + structureTrainingPrice, structureWifi, structureEquipments, structureLabels, diff --git a/src/app/shared/components/radio-form/radio-form.component.html b/src/app/shared/components/radio-form/radio-form.component.html index 08e1ca72b..8730a19a4 100644 --- a/src/app/shared/components/radio-form/radio-form.component.html +++ b/src/app/shared/components/radio-form/radio-form.component.html @@ -4,7 +4,7 @@ </div> <button (click)="clicked(true)" - [ngClass]="{ selected: selectedOption && selectedOption != null }" + [ngClass]="{ selected: selectedOption === true && selectedOption != null }" fxLayout="row" fxLayoutAlign=" center" [fxLayoutGap]="layoutGap ? layoutGap : '17px'" @@ -16,6 +16,24 @@ </div> <p>Oui</p> </button> + <button + *ngIf="isThreeChoices" + (click)="clicked('underCondition')" + [ngClass]="{ selected: selectedOption === 'underCondition' && selectedOption != null }" + fxLayout="row" + fxLayoutAlign=" center" + [fxLayoutGap]="layoutGap ? layoutGap : '17px'" + > + <div class="checkmark"> + <svg class="validate" aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#checkVectorFull'"></use> + </svg> + </div> + <div> + <p class="nomargin">Oui, sous condition</p> + <p class="hint">(adhésion à l'association...)</p> + </div> + </button> <button (click)="clicked(false)" [ngClass]="{ selected: !selectedOption && selectedOption != null }" diff --git a/src/app/shared/components/radio-form/radio-form.component.scss b/src/app/shared/components/radio-form/radio-form.component.scss index e5b2487d8..66b6481d8 100644 --- a/src/app/shared/components/radio-form/radio-form.component.scss +++ b/src/app/shared/components/radio-form/radio-form.component.scss @@ -40,6 +40,14 @@ button { p { @include lato-bold-16; } + .nomargin { + text-align: left !important; + margin: 0; + } + .hint { + @include lato-regular-14; + margin: 0; + } .checkmark { width: 20px; height: 20px; diff --git a/src/app/shared/components/radio-form/radio-form.component.ts b/src/app/shared/components/radio-form/radio-form.component.ts index e0fbd385b..503a12687 100644 --- a/src/app/shared/components/radio-form/radio-form.component.ts +++ b/src/app/shared/components/radio-form/radio-form.component.ts @@ -9,12 +9,13 @@ import { Observable, Subscription } from 'rxjs'; export class RadioFormComponent implements OnInit { constructor() {} - @Input() public selectedOption: boolean; + @Input() public selectedOption: boolean | string; @Input() public horizontal: boolean; @Input() public layoutGap: string; @Input() public name: string; @Input() events: Observable<Object>; - @Output() selectedEvent: EventEmitter<boolean> = new EventEmitter<boolean>(); + @Input() isThreeChoices: boolean = false; + @Output() selectedEvent = new EventEmitter<any>(); private eventsSubscription: Subscription; @@ -26,8 +27,8 @@ export class RadioFormComponent implements OnInit { if (this.eventsSubscription) this.eventsSubscription.unsubscribe(); } - public clicked(bool: boolean): void { - this.selectedOption = bool; + public clicked(val: boolean | string): void { + this.selectedOption = val; this.selectedEvent.emit(this.selectedOption); } } -- GitLab From 6fdea97d699d85455ea9a2dbf3435f5ad8294085 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Wed, 23 Mar 2022 16:39:36 +0100 Subject: [PATCH 112/199] feat: add structure choice in structure form --- src/app/form/form-view/form-view-routing.module.ts | 6 +++++- src/app/form/form-view/form-view.component.html | 1 + src/app/form/form-view/form-view.component.ts | 11 +++++++++-- .../profile-form/profile-form.component.html | 13 ------------- .../profile-structure-choice.component.ts | 5 +++-- .../structure-form/structure-form.component.html | 13 +++++++++++++ .../structure-form/structure-form.component.ts | 10 ++++++++++ .../structure-form/structureFormStep.enum.ts | 2 ++ 8 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts index ab1bb787b..5e4eec089 100644 --- a/src/app/form/form-view/form-view-routing.module.ts +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; +import { AuthGuard } from '../../guards/auth.guard'; import { AccountFormComponent } from './account-form/account-form.component'; import { FormViewComponent } from './form-view.component'; import { PersonalOfferFormComponent } from './personal-offer-form/personal-offer-form.component'; @@ -13,14 +14,17 @@ const routes: Routes = [ children: [ { path: 'structure', + canActivate: [AuthGuard], component: StructureFormComponent, }, { path: 'profile', + canActivate: [AuthGuard], component: ProfileFormComponent, }, { path: 'personaloffer', + canActivate: [AuthGuard], component: PersonalOfferFormComponent, }, { @@ -29,7 +33,7 @@ const routes: Routes = [ }, { path: '**', - redirectTo: 'profile', + redirectTo: 'account', }, ], }, diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 5acfd4959..2aad1f0f5 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -34,6 +34,7 @@ [currentStep]="currentPage" [structure]="structure" (goNext)="nextPage()" + (isAlreadyExistingStructure)="linkStructureToUser()" (pageValid)="validatePage($event)" (updateHoursForm)="updateHours($event)" ></app-structure-form> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 483bd694a..2784290ee 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -152,7 +152,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structurePublicTarget; + this.currentPage = structureFormStep.structureChoice; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); @@ -349,8 +349,15 @@ export class FormViewComponent implements OnInit { return true; } + public linkStructureToUser(): void { + console.log('la ?'); + console.log(this.structureForm.value); + this.structureService.joinStructure(this.structureForm.value._id, this.profile.email).subscribe((data) => { + console.log(data); + }); + } + public saveProfileForm(): void { - console.log('Create job, employer and update profile'); forkJoin({ employer: this.profileService.createEmployer(this.profileForm.get('employer').value).pipe( map((res) => res), diff --git a/src/app/form/form-view/profile-form/profile-form.component.html b/src/app/form/form-view/profile-form/profile-form.component.html index 031c9bc1b..16e72d765 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.html +++ b/src/app/form/form-view/profile-form/profile-form.component.html @@ -14,17 +14,4 @@ (validateForm)="setValidationsForm()" ></app-profile-job-selection> </ng-container> - <!-- <ng-container *ngIf="currentStep === profileFormStepEnum.profileStructureChoice"> - <app-profile-structure-choice - [profileForm]="profileForm" - (validateForm)="setValidationsForm()" - ></app-profile-structure-choice> - </ng-container> --> - <!-- <ng-container *ngIf="currentStep === profileFormStepEnum.profileMailSentInfo"> - <app-information-step - [step]="4" - [structureName]="profileForm.get('structure').value.structureName" - (goNext)="setValidationsForm()" - ></app-information-step> - </ng-container> --> </div> diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts index 521997ae6..b86056e43 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts @@ -11,7 +11,7 @@ import { Filter } from '../../../../structure-list/models/filter.model'; styleUrls: ['./profile-structure-choice.component.scss'], }) export class ProfileStructureChoiceComponent implements OnInit { - @Input() profileForm: FormGroup; + @Input() structureForm: FormGroup; @Output() validateForm = new EventEmitter<Structure>(); @Output() selectedStructure: EventEmitter<Structure> = new EventEmitter<Structure>(); @Output() createStructure = new EventEmitter<any>(); @@ -40,7 +40,8 @@ export class ProfileStructureChoiceComponent implements OnInit { public selectedResult(structure: Structure): void { if (this.selectedStructureItem) this.selectedStructureItem['selected'] = false; this.selectedStructureItem = structure; - this.profileForm.get('structure').patchValue(structure); + console.log(this.selectedStructureItem); + this.structureForm.patchValue({ _id: structure._id }); // Emit choosen value // this.selectedStructure.emit(this.selectedStructureItem); this.validateForm.emit(); diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 4cecf5910..caead491d 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -1,3 +1,16 @@ +<ng-container *ngIf="currentStep === structureFormStep.structureChoice"> + <app-profile-structure-choice + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + ></app-profile-structure-choice> +</ng-container> +<ng-container *ngIf="currentStep === structureFormStep.mailSentInfo"> + <app-information-step + [step]="4" + [structureName]="profileForm.get('structure').value.structureName" + (goNext)="setValidationsForm()" + ></app-information-step> +</ng-container> <div *ngIf="currentStep == structureFormStep.structureNameAndAddress"> <app-structure-name-and-address [structureForm]="structureForm" diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 8d19e1262..b3a337da8 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -19,6 +19,7 @@ export class StructureFormComponent implements OnChanges { @Input() hoursForm: FormGroup; @Output() pageValid = new EventEmitter<any>(); @Output() updateHoursForm = new EventEmitter<any>(); + @Output() isAlreadyExistingStructure = new EventEmitter<any>(); public structureFormStep = structureFormStep; public isPageValid: boolean; @@ -116,6 +117,7 @@ export class StructureFormComponent implements OnChanges { } public setValidationsForm(): void { + console.log(this.structureForm); if (this.isClaimMode) { // this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; // this.updatePageValid(); @@ -123,6 +125,10 @@ export class StructureFormComponent implements OnChanges { // this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; // this.updatePageValid(); } else { + this.pagesValidation[structureFormStep.structureChoice] = { + valid: this.structureForm.get('_id').valid, + name: 'Structure existe', + }; this.pagesValidation[structureFormStep.structureNameAndAddress] = { valid: this.structureForm.get('structureName').valid && this.structureForm.get('address').valid, name: 'Nom et adresse', @@ -320,6 +326,10 @@ export class StructureFormComponent implements OnChanges { } this.isPageValid = this.pagesValidation[this.currentStep].valid; if (this.isPageValid) this.pageValid.emit(); + if (this.currentStep === structureFormStep.structureChoice) { + // this.isAlreadyExistingStructure.emit(); + } + console.log('pagevalid', this.isPageValid); return this.isPageValid; } public getStructureControl(nameControl: string): AbstractControl { diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index f080ba17f..8cfa0d759 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -1,4 +1,5 @@ export enum structureFormStep { + structureChoice, structureNameAndAddress, structureContact, structureAccompanimentChoice, @@ -23,4 +24,5 @@ export enum structureFormStep { structureCovidInfo, structureConsent, structureCreationFinishedInfo, + mailSentInfo, } -- GitLab From 5fcf4453e217f7f9dcc391812f255ade2b54cfd3 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Wed, 23 Mar 2022 17:03:29 +0100 Subject: [PATCH 113/199] feat: add link to structure form after choice --- src/app/form/footer-form/footer-form.component.ts | 11 +++++++++++ src/app/form/form-view/form-view.component.html | 2 +- src/app/form/form-view/form-view.component.ts | 9 ++++++--- .../information-step/information-step.component.html | 2 +- .../profile-structure-choice.component.ts | 5 +---- .../structure-form/structure-form.component.html | 5 +++-- .../structure-form/structure-form.component.ts | 10 +++++----- 7 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 5af116c68..88ca332c5 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -108,9 +108,20 @@ export class FooterFormComponent implements OnChanges { if (this.isPersonalOfferpage()) { this.endForm.emit(this.currentForm); } + if (this.isStructureChoiceValid()) { + this.endForm.emit(this.currentForm); + } this.goToNextPage(); } + private isStructureChoiceValid(): boolean { + return ( + this.currentForm === formType.structure && + this.currentStep === structureFormStep.structureChoice && + this.form.value._id + ); + } + private isProfileLastpage(): boolean { return this.currentForm === formType.profile && this.currentStep === profileFormStep.profileJobSelection; } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index e9a132ca9..1a8db94e9 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -34,7 +34,7 @@ [currentStep]="currentPage" [structure]="structure" (goNext)="nextPage()" - (isAlreadyExistingStructure)="linkStructureToUser()" + (isNotExistingStructure)="nextPage()" (pageValid)="validatePage($event)" (updateHoursForm)="updateHours($event)" ></app-structure-form> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 3d7edb143..886914c47 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -351,10 +351,9 @@ export class FormViewComponent implements OnInit { } public linkStructureToUser(): void { - console.log('la ?'); - console.log(this.structureForm.value); this.structureService.joinStructure(this.structureForm.value._id, this.profile.email).subscribe((data) => { - console.log(data); + this.currentPage = structureFormStep.mailSentInfo; + this.nbSteps = structureFormStep.mailSentInfo; }); } @@ -366,6 +365,10 @@ export class FormViewComponent implements OnInit { this.saveProfileForm(); break; case formType.structure: + // If structure already exist, join it + if (this.structureForm.value._id) { + this.linkStructureToUser(); + } break; case formType.personaloffer: this.savePersonalOfferForm(); diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 83a34b4ce..596797d33 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -21,7 +21,7 @@ <app-navigation-buttons (goNext)="nextPage()"></app-navigation-buttons> </div> </ng-container> -<ng-container *ngIf="step === 5"> +<ng-container *ngIf="step === structureFormStepEnum.mailSentInfo"> <div class="information-step-container structure-display"> <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#emailVerification'"></use> diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts index b86056e43..aa13abc65 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts @@ -40,10 +40,7 @@ export class ProfileStructureChoiceComponent implements OnInit { public selectedResult(structure: Structure): void { if (this.selectedStructureItem) this.selectedStructureItem['selected'] = false; this.selectedStructureItem = structure; - console.log(this.selectedStructureItem); - this.structureForm.patchValue({ _id: structure._id }); - // Emit choosen value - // this.selectedStructure.emit(this.selectedStructureItem); + this.structureForm.patchValue({ _id: structure._id, structureName: structure.structureName }); this.validateForm.emit(); } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 723b44d18..eb5066f94 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -2,12 +2,13 @@ <app-profile-structure-choice [structureForm]="structureForm" (validateForm)="setValidationsForm()" + (createStructure)="goToCreateStructure()" ></app-profile-structure-choice> </ng-container> <ng-container *ngIf="currentStep === structureFormStep.mailSentInfo"> <app-information-step - [step]="4" - [structureName]="profileForm.get('structure').value.structureName" + [step]="structureFormStep.mailSentInfo" + [structureName]="structureForm.value.structureName" (goNext)="setValidationsForm()" ></app-information-step> </ng-container> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 6725a214e..297b08044 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -19,7 +19,7 @@ export class StructureFormComponent implements OnChanges { @Input() hoursForm: FormGroup; @Output() pageValid = new EventEmitter<any>(); @Output() updateHoursForm = new EventEmitter<any>(); - @Output() isAlreadyExistingStructure = new EventEmitter<any>(); + @Output() isNotExistingStructure = new EventEmitter<any>(); public structureFormStep = structureFormStep; public isPageValid: boolean; @@ -332,10 +332,6 @@ export class StructureFormComponent implements OnChanges { } this.isPageValid = this.pagesValidation[this.currentStep].valid; if (this.isPageValid) this.pageValid.emit(); - if (this.currentStep === structureFormStep.structureChoice) { - // this.isAlreadyExistingStructure.emit(); - } - console.log('pagevalid', this.isPageValid); return this.isPageValid; } public getStructureControl(nameControl: string): AbstractControl { @@ -350,4 +346,8 @@ export class StructureFormComponent implements OnChanges { this.getStructureControl('dataShareConsentDate').setValue(now); this.setValidationsForm(); } + + public goToCreateStructure(): void { + this.isNotExistingStructure.emit(); + } } -- GitLab From 76375c795b0653fd3d97086251195e00268d6e15 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 17:08:32 +0100 Subject: [PATCH 114/199] feat: save other structure choice --- src/app/form/form-view/form-view.component.html | 1 + src/app/form/form-view/form-view.component.ts | 12 ++++++++++-- .../personal-offer-form.component.html | 1 + .../personal-offer-form.component.ts | 5 +++++ ...ersonal-offer-other-structure-choice.component.ts | 3 ++- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 627d05f8b..187a4c49d 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -43,6 +43,7 @@ [nbSteps]="nbSteps" [personalOfferForm]="personalOfferForm" [currentStep]="currentPage" + (setHasOtherOffer)="setHasOtherOffer($event)" (pageValid)="validatePage($event)" ></app-personal-offer-form> </ng-container> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 2115c28b1..07de19462 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -47,6 +47,7 @@ export class FormViewComponent implements OnInit { // Personal Offers Form public personalOfferForm: FormGroup; + public hasOtherOffer: boolean = false; // Page and progress var public pagesValidation = []; @@ -350,6 +351,10 @@ export class FormViewComponent implements OnInit { return true; } + public setHasOtherOffer(flag: boolean): void { + this.hasOtherOffer = flag; + } + public endForm(type: formType): void { switch (type) { case formType.account: @@ -389,8 +394,11 @@ export class FormViewComponent implements OnInit { public savePersonalOfferForm(): void { this.personalOfferService.createPersonalOffer(this.structure._id, this.personalOfferForm.value).subscribe(() => { - // TODO root to the right screen - // this.router.navigateByUrl('form/structure'); + if (this.hasOtherOffer) { + this.router.navigateByUrl('form/structure'); + } else { + // this.router.navigateByUrl('form/structure'); + } }); } } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html index 90b94e46d..4a6a90f2e 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html @@ -15,6 +15,7 @@ <app-personal-offer-other-structure-choice [structureName]="structureName" [personalOfferForm]="personalOfferForm" + (setOtherOffer)="setOtherOffer($event)" (pageValid)="validPage()" ></app-personal-offer-other-structure-choice> </ng-container> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts index 8a134cf14..8e974e613 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts @@ -12,6 +12,7 @@ export class PersonalOfferFormComponent { @Input() currentStep: personalOfferFormStep; @Input() personalOfferForm: FormGroup; @Input() structureName: string; + @Output() setHasOtherOffer = new EventEmitter<boolean>(); @Output() pageValid = new EventEmitter<any>(); public personalOfferFormStep = personalOfferFormStep; @@ -30,4 +31,8 @@ export class PersonalOfferFormComponent { public validPage(): void { this.pageValid.emit(); } + + public setOtherOffer(flag: boolean): void { + this.setHasOtherOffer.emit(flag); + } } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts index bbfe053e8..3fe30b7dd 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts @@ -1,6 +1,5 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { Structure } from '../../../../models/structure.model'; @Component({ selector: 'app-personal-offer-other-structure-choice', @@ -10,11 +9,13 @@ import { Structure } from '../../../../models/structure.model'; export class PersonalOfferOtherStructureChoiceComponent { @Input() structureName: string; @Input() personalOfferForm: FormGroup; + @Output() setOtherOffer = new EventEmitter<boolean>(); @Output() pageValid = new EventEmitter<any>(); public choice: boolean; public onRadioChange(value: boolean): void { + this.setOtherOffer.emit(value); this.pageValid.emit(); } } -- GitLab From 569bb00c2fbbd7168ed54c86168539b6372a3b76 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 17:18:38 +0100 Subject: [PATCH 115/199] fix onInit on several screens --- .../structure-access-modality.component.ts | 6 ++++-- .../structure-accompaniment-choice.component.ts | 7 ++++++- .../structure-choice-completion.component.ts | 5 +++++ .../structure-contact-completion.component.ts | 8 ++++++-- .../structure-contact/structure-contact.component.ts | 4 +++- .../structure-description.component.ts | 9 ++++++--- .../structure-form/structure-form.component.html | 4 ++++ .../form-view/structure-form/structure-form.component.ts | 2 +- .../structure-hours/structure-hours.component.ts | 9 +++++++-- .../structure-name-and-address.component.ts | 9 +++++++-- .../structure-pmr/structure-pmr.component.ts | 9 +++++++-- .../structure-public-target.component.ts | 9 +++++++-- .../structure-type/structure-type.component.ts | 9 +++++++-- .../structure-wifi/structure-wifi.component.ts | 8 ++++++-- 14 files changed, 76 insertions(+), 22 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts index 6d1526e8f..e69eae7b8 100644 --- a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts @@ -12,9 +12,11 @@ export class StructureAccessModalityComponent implements OnInit { @Input() accessModality: Category; @Output() checkChange = new EventEmitter<any>(); @Output() inArray = new EventEmitter<any>(); - constructor() {} + @Output() validateForm = new EventEmitter<any>(); - ngOnInit(): void {} + ngOnInit(): void { + this.validateForm.emit(); + } public onCheckChange(event: boolean, accessModalityId: string, modality: string) { this.checkChange.emit({ diff --git a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts index 9846250d7..20d368437 100644 --- a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts +++ b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts @@ -6,9 +6,14 @@ import { FormGroup } from '@angular/forms'; templateUrl: './structure-accompaniment-choice.component.html', styleUrls: ['./structure-accompaniment-choice.component.scss'], }) -export class StructureAccompanimentChoiceComponent { +export class StructureAccompanimentChoiceComponent implements OnInit { @Input() structureForm: FormGroup; @Output() radioChange = new EventEmitter<any>(); + @Output() validateForm = new EventEmitter<any>(); + + ngOnInit(): void { + this.validateForm.emit(); + } public onRadioChange(name: string, value: boolean): void { this.radioChange.emit({ name, value }); diff --git a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts index ad643f99d..e01822112 100644 --- a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts +++ b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts @@ -9,6 +9,11 @@ import { FormGroup } from '@angular/forms'; export class StructureChoiceCompletionComponent { @Input() structureForm: FormGroup; @Output() radioChange = new EventEmitter<any>(); + @Output() validateForm = new EventEmitter<any>(); + + ngOnInit(): void { + this.validateForm.emit(); + } public onRadioChange(name: string, value: boolean): void { this.radioChange.emit({ name, value }); diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts index ce291934f..557a34274 100644 --- a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; @Component({ @@ -6,11 +6,15 @@ import { FormGroup } from '@angular/forms'; templateUrl: './structure-contact-completion.component.html', styleUrls: ['./structure-contact-completion.component.scss'], }) -export class StructureContactCompletionComponent { +export class StructureContactCompletionComponent implements OnInit { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; @Output() validateForm = new EventEmitter<any>(); + ngOnInit(): void { + this.validateForm.emit(); + } + public setValidationsForm(): void { this.validateForm.emit(); } diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts index 16d909878..b313f699a 100644 --- a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts +++ b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts @@ -13,7 +13,9 @@ export class StructureContactComponent implements OnInit { constructor(public utils: Utils) {} - ngOnInit(): void {} + ngOnInit(): void { + this.validateForm.emit(); + } public setValidationsForm(): void { this.validateForm.emit(); diff --git a/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts b/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts index 7ab5cfc03..433532060 100644 --- a/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts +++ b/src/app/form/form-view/structure-form/structure-description/structure-description.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { AbstractControl, FormGroup } from '@angular/forms'; @Component({ @@ -9,9 +9,12 @@ import { AbstractControl, FormGroup } from '@angular/forms'; export class StructureDescriptionComponent implements OnInit { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; - constructor() {} + @Output() validateForm = new EventEmitter<any>(); + + ngOnInit(): void { + this.validateForm.emit(); + } - ngOnInit(): void {} public getStructureControl(nameControl: string): AbstractControl { return this.structureForm.get(nameControl); } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index d5a6435da..64261012b 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -11,12 +11,14 @@ <div *ngIf="currentStep == structureFormStep.structureAccompanimentChoice"> <app-structure-accompaniment-choice [structureForm]="structureForm" + (validateForm)="setValidationsForm()" (radioChange)="onRadioChange($event)" ></app-structure-accompaniment-choice> </div> <div *ngIf="currentStep == structureFormStep.structureChoiceCompletion"> <app-structure-choice-completion [structureForm]="structureForm" + (validateForm)="setValidationsForm()" (radioChange)="onRadioChange($event)" ></app-structure-choice-completion> </div> @@ -37,6 +39,7 @@ <app-structure-access-modality [structureForm]="structureForm" [accessModality]="accessModality" + (validateForm)="setValidationsForm()" (inArray)="isInArray($event)" (checkChange)="onCheckChange($event)" ></app-structure-access-modality> @@ -45,6 +48,7 @@ <app-structure-hours [structureForm]="structureForm" [hoursForm]="hoursForm" + (validateForm)="setValidationsForm()" (hours)="updateHours($event)" (hoursError)="setHoursError()" ></app-structure-hours> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 59fc23d7a..7a7c8585b 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -155,7 +155,7 @@ export class StructureFormComponent implements OnChanges { name: "Modalités d'accueil", }; this.pagesValidation[structureFormStep.structureHours] = { - valid: this.hoursForm.get('errors') && this.structureForm.get('exceptionalClosures').valid, + valid: this.hoursForm.valid && this.structureForm.get('exceptionalClosures').valid, name: "Horaires d'ouverture", }; this.pagesValidation[structureFormStep.structurePmr] = { diff --git a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts index 998770e83..53e9ffb31 100644 --- a/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts +++ b/src/app/form/form-view/structure-form/structure-hours/structure-hours.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; @Component({ @@ -6,11 +6,16 @@ import { FormGroup } from '@angular/forms'; templateUrl: './structure-hours.component.html', styleUrls: ['./structure-hours.component.scss'], }) -export class StructureHoursComponent { +export class StructureHoursComponent implements OnInit { @Input() structureForm: FormGroup; @Input() hoursForm: FormGroup; @Output() hours = new EventEmitter<any>(); @Output() hoursError = new EventEmitter<any>(); + @Output() validateForm = new EventEmitter<any>(); + + ngOnInit(): void { + this.validateForm.emit(); + } public updateHours(value) { this.hours.emit(value); diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts index 532a5da30..54bc3cd65 100644 --- a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.ts @@ -1,4 +1,5 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { ThisReceiver } from '@angular/compiler'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { Address } from '../../../../models/address.model'; @@ -7,11 +8,15 @@ import { Address } from '../../../../models/address.model'; templateUrl: './structure-name-and-address.component.html', styleUrls: ['./structure-name-and-address.component.scss'], }) -export class StructureNameAndAddressComponent { +export class StructureNameAndAddressComponent implements OnInit { @Input() structureForm: FormGroup; @Output() validateForm = new EventEmitter<any>(); @Output() addressStructure = new EventEmitter<any>(); + ngOnInit(): void { + this.validateForm.emit(); + } + public setValidationsForm() { this.validateForm.emit(); } diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts index 78b8940f7..8568aa91c 100644 --- a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts +++ b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; @Component({ @@ -6,12 +6,17 @@ import { FormGroup } from '@angular/forms'; templateUrl: './structure-pmr.component.html', styleUrls: ['./structure-pmr.component.scss'], }) -export class StructurePmrComponent { +export class StructurePmrComponent implements OnInit { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; @Input() isPageValid: boolean; @Input() nextPage: Function; @Output() radioChange = new EventEmitter<any>(); + @Output() validateForm = new EventEmitter<any>(); + + ngOnInit(): void { + this.validateForm.emit(); + } public onRadioChange(name: string, value: boolean): void { this.radioChange.emit({ name, value }); diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts index 9eb6e7391..4c1eedb3f 100644 --- a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { Category } from '../../../../structure-list/models/category.model'; @@ -7,10 +7,15 @@ import { Category } from '../../../../structure-list/models/category.model'; templateUrl: './structure-public-target.component.html', styleUrls: ['./structure-public-target.component.scss'], }) -export class StructurePublicTargetComponent { +export class StructurePublicTargetComponent implements OnInit { @Input() structureForm: FormGroup; @Input() publics: Category; @Output() updateChoice = new EventEmitter<any>(); + @Output() validateForm = new EventEmitter<any>(); + + ngOnInit(): void { + this.validateForm.emit(); + } public updateChoicePublic(choice: string) { this.updateChoice.emit({ formControlName: 'publics', choice }); diff --git a/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts b/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts index af17810da..3678d301f 100644 --- a/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts +++ b/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; @Component({ @@ -6,10 +6,15 @@ import { FormGroup } from '@angular/forms'; templateUrl: './structure-type.component.html', styleUrls: ['./structure-type.component.scss'], }) -export class StructureTypeComponent { +export class StructureTypeComponent implements OnInit { @Input() structureForm: FormGroup; @Input() isEditMode; @Output() typeStructure = new EventEmitter<string>(); + @Output() validateForm = new EventEmitter<any>(); + + ngOnInit(): void { + this.validateForm.emit(); + } public setTypeStructure(value) { this.typeStructure.emit(value); diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts index c34290b0c..86019d03b 100644 --- a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts +++ b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; @Component({ @@ -6,7 +6,7 @@ import { FormGroup } from '@angular/forms'; templateUrl: './structure-wifi.component.html', styleUrls: ['./structure-wifi.component.scss'], }) -export class StructureWifiComponent { +export class StructureWifiComponent implements OnInit { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; @Input() isWifiChoosen: boolean; @@ -14,6 +14,10 @@ export class StructureWifiComponent { @Output() inArray = new EventEmitter<any>(); @Output() checkChange = new EventEmitter<any>(); + ngOnInit(): void { + this.validateForm.emit(); + } + public isInArray(accessModalityId: string, modality: string) { this.inArray.emit({ formControlName: accessModalityId, value: modality }); } -- GitLab From 13a4b8ce7c214eb32cc4e93ac320251787a45de0 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Wed, 23 Mar 2022 17:46:20 +0100 Subject: [PATCH 116/199] fix: add hasPersonalOffer --- src/app/form/form-view/form-view.component.ts | 1 + .../profile-job-selection/profile-job-selection.component.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index c7954d5c5..5d5db96cc 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -227,6 +227,7 @@ export class FormViewComponent implements OnInit { job: new FormGroup({ name: new FormControl('', [Validators.required]), validated: new FormControl(true, [Validators.required]), + hasPersonalOffer: new FormControl(true, [Validators.required]), }), structure: new FormControl('', [Validators.required]), }); diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts index dafce1a4a..86fc3cade 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts @@ -28,11 +28,13 @@ export class ProfileJobSelectionComponent implements OnInit { this.profileForm.get('job').setValue({ name: job.name, validated: false, + hasPersonalOffer: true, }); } else { this.profileForm.get('job').setValue({ name: '', validated: false, + hasPersonalOffer: true, }); } this.validateForm.emit(); -- GitLab From d369c470a8dbac3fdebebf28b7b7f09d5c00bf89 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 18:01:53 +0100 Subject: [PATCH 117/199] feat: add routing logic --- src/app/form/footer-form/footer-form.component.ts | 7 +++++++ src/app/form/form-view/form-view.component.html | 1 + src/app/form/form-view/form-view.component.ts | 15 ++++++++++++--- .../structure-form/structure-form.component.ts | 3 ++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 88ca332c5..c514ad282 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -111,6 +111,9 @@ export class FooterFormComponent implements OnChanges { if (this.isStructureChoiceValid()) { this.endForm.emit(this.currentForm); } + if (this.isStructureLastPage()) { + this.endForm.emit(this.currentForm); + } this.goToNextPage(); } @@ -122,6 +125,10 @@ export class FooterFormComponent implements OnChanges { ); } + private isStructureLastPage(): boolean { + return this.currentForm === formType.structure && this.currentStep === structureFormStep.mailSentInfo; + } + private isProfileLastpage(): boolean { return this.currentForm === formType.profile && this.currentStep === profileFormStep.profileJobSelection; } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 2e2b8176b..c4ecae2bc 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -44,6 +44,7 @@ [nbSteps]="nbSteps" [personalOfferForm]="personalOfferForm" [currentStep]="currentPage" + [structureName]="structure.structureName" (setHasOtherOffer)="setHasOtherOffer($event)" (pageValid)="validatePage($event)" ></app-personal-offer-form> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index c7954d5c5..90bb6cd52 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -359,6 +359,8 @@ export class FormViewComponent implements OnInit { this.structureService.joinStructure(this.structureForm.value._id, this.profile.email).subscribe((data) => { this.currentPage = structureFormStep.mailSentInfo; this.nbSteps = structureFormStep.mailSentInfo; + this.structure._id = this.structureForm.value._id; + this.structure.structureName = this.structureForm.value.structureName; }); } @@ -370,9 +372,16 @@ export class FormViewComponent implements OnInit { this.saveProfileForm(); break; case formType.structure: - // If structure already exist, join it - if (this.structureForm.value._id) { + // If structure already exist, join it. + // On first strike the structure._id is not set and is a key to differentiate with other case + if (this.structureForm.value._id && !this.structure._id) { this.linkStructureToUser(); + } else { + if (this.profileForm.value.hasPersonalOffer) { + this.router.navigateByUrl('form/personaloffer'); + } else { + this.router.navigateByUrl('/'); + } } break; case formType.personaloffer: @@ -407,7 +416,7 @@ export class FormViewComponent implements OnInit { if (this.hasOtherOffer) { this.router.navigateByUrl('form/structure'); } else { - // this.router.navigateByUrl('form/structure'); + //TODO } }); } diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 297b08044..eefbd8367 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -58,7 +58,8 @@ export class StructureFormComponent implements OnChanges { this.currentStep === structureFormStep.structureLabels || this.currentStep === structureFormStep.structureOtherServices || this.currentStep === structureFormStep.structureDescription || - this.currentStep === structureFormStep.structureCovidInfo + this.currentStep === structureFormStep.structureCovidInfo || + this.currentStep === structureFormStep.mailSentInfo ) { this.pageValid.emit(); } -- GitLab From 558024a3db47904024ffbd5cc90726d2f9c45f72 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 18:03:25 +0100 Subject: [PATCH 118/199] tags on digital help --- src/app/form/form-view/form-view.component.ts | 5 +++-- .../structure-digital-helping-accompaniment.component.ts | 3 +++ src/styles.scss | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index c7954d5c5..76be13fdd 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -154,7 +154,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureChoice; + this.currentPage = structureFormStep.structureDigitalHelpingAccompaniment; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); @@ -185,7 +185,8 @@ export class FormViewComponent implements OnInit { } public updateHours(form: FormGroup): void { - this.hoursForm = form; + // TODO : not working + this.hoursForm = form.value; } private createDay(day: Day): FormGroup { diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts index e6eb6883b..fcc8c4569 100644 --- a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts @@ -1,5 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; +import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; import { Category } from '../../../../structure-list/models/category.model'; @Component({ @@ -13,6 +14,8 @@ export class StructureDigitalHelpingAccompanimentComponent implements OnInit { @Output() updateChoice = new EventEmitter<any>(); @Output() validateForm = new EventEmitter<any>(); + public buttonTypeEnum = ButtonType; + ngOnInit(): void { this.validateForm.emit(); } diff --git a/src/styles.scss b/src/styles.scss index 45c9e72b5..9775b63ec 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -108,7 +108,7 @@ a { form p.notRequired { margin-top: 0px; font-style: italic; - color: $primary-color; + color: $grey-3; } /** Inputs **/ -- GitLab From 778295b79fb20ddaae5569c63e100268134ea670 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 18:12:41 +0100 Subject: [PATCH 119/199] fix onInit --- .../form-view/structure-form/structure-form.component.html | 6 +++++- .../structure-training-price.component.ts | 7 ++++++- .../structure-training-type.component.ts | 6 +++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 18fcb3924..3e753eb6e 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -91,11 +91,15 @@ </app-structure-public-target> </div> <div *ngIf="currentStep == structureFormStep.structureTrainingType"> - <app-structure-training-type [structureForm]="structureForm"></app-structure-training-type> + <app-structure-training-type + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + ></app-structure-training-type> </div> <div *ngIf="currentStep == structureFormStep.structureTrainingPrice"> <app-structure-training-price [structureForm]="structureForm" + (validateForm)="setValidationsForm()" (radioChange)="onRadioChange($event)" ></app-structure-training-price> </div> diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts index 034d9e118..033129f89 100644 --- a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts +++ b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts @@ -9,9 +9,14 @@ import { AbstractControl, FormGroup } from '@angular/forms'; export class StructureTrainingPriceComponent implements OnInit { @Input() structureForm: FormGroup; @Output() radioChange = new EventEmitter<any>(); + @Output() validateForm = new EventEmitter<any>(); + constructor() {} - ngOnInit(): void {} + ngOnInit(): void { + this.validateForm.emit(); + } + public getStructureControl(nameControl: string): AbstractControl { return this.structureForm.get(nameControl); } diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts index 16142948c..f26454d76 100644 --- a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts +++ b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts @@ -9,10 +9,14 @@ import { Category } from '../../../../structure-list/models/category.model'; }) export class StructureTrainingTypeComponent implements OnInit { @Input() structureForm: FormGroup; + @Output() validateForm = new EventEmitter<any>(); constructor() {} - ngOnInit(): void {} + ngOnInit(): void { + this.validateForm.emit(); + } + public setTrainingsFromCategories(categories: Category[]) { for (const categorie of categories) { const moduleIds: string[] = categorie.modules.map((module) => module.id); -- GitLab From e8eaa23348b9fe6ab7ceec49a3ef18a12cad7581 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 18:12:49 +0100 Subject: [PATCH 120/199] tags --- ...gital-helping-accompaniment.component.html | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html index a972f9f83..e7acb5f90 100644 --- a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.html @@ -4,20 +4,15 @@ <p>Facultatif</p> </div> - <div class="tags"> - <button - *ngFor="let accompaniment of proceduresAccompaniment.modules" - (click)="updateChoiceAccompaniment(accompaniment.id)" - [ngClass]="{ selectedChoice: isInArray(accompaniment.id) }" - > - <div fxLayout="row" fxLayoutAlign=" center"> - <svg class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> - </svg> - <div class="textBtn"> - {{ accompaniment.text }} - </div> - </div> - </button> + <div class="btn-grid"> + <span *ngFor="let accompaniment of proceduresAccompaniment.modules"> + <app-button + [ngClass]="{ selectedChoice: true }" + [extraClass]="isInArray(accompaniment.id) ? 'selected' : ''" + [style]="buttonTypeEnum.CheckButton" + [text]="accompaniment.text" + (action)="updateChoiceAccompaniment(accompaniment.id)" + ></app-button> + </span> </div> </form> -- GitLab From a61625afa4b307fda524866fb882750714d27fb8 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 18:13:44 +0100 Subject: [PATCH 121/199] feat: route to personal offer or not --- src/app/form/form-view/form-view.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 863fb050f..51891a737 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -378,7 +378,7 @@ export class FormViewComponent implements OnInit { if (this.structureForm.value._id && !this.structure._id) { this.linkStructureToUser(); } else { - if (this.profileForm.value.hasPersonalOffer) { + if (this.profileForm.value.job.hasPersonalOffer) { this.router.navigateByUrl('form/personaloffer'); } else { this.router.navigateByUrl('/'); -- GitLab From 2114ba8404ba6b47d0ac52071363e613da840133 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 18:16:06 +0100 Subject: [PATCH 122/199] fix icon books --- src/assets/form/sprite.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 967f2b729..63192d869 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -333,7 +333,7 @@ </linearGradient> </defs> </symbol> -<symbol id="accesLivresInformatiques" width="44" height="44" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 44 44"><path d="M7 10h30v17a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V10Z" fill="#fff"/><rect x="6.25" y="9.25" width="31.5" height="20.5" rx="2.75" stroke="#333" stroke-width="1.5"/><path d="M6 27a2 2 0 0 0 2 2h28a2 2 0 0 0 2-2H6Z" fill="#333"/><path d="M17 34h11" stroke="#333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M23.25 30v-.75h-1.5V30h1.5Zm-1.5 4a.75.75 0 0 0 1.5 0h-1.5Zm0-4V34h1.5V30h-1.5Z" fill="#333"/><path d="M22.371 13.626v-.012l.003-.042a1.798 1.798 0 0 1 .169-.651c.084-.174.206-.34.383-.461.175-.121.419-.21.766-.21H29.726v10.875H23.692c-.438 0-.783.114-1.05.298a1.557 1.557 0 0 0-.27.238V13.626ZM21.871 13.626v-.012l-.002-.042a1.795 1.795 0 0 0-.169-.651 1.164 1.164 0 0 0-.383-.461c-.176-.121-.42-.21-.767-.21H14.517v10.875H20.552c.438 0 .783.114 1.05.298.103.072.193.152.27.238V13.626Z" stroke="#DA3635" stroke-width=".5"/><path fill-rule="evenodd" clip-rule="evenodd" d="M14.265 13.955H13V25.09h6.754c.474 0 1.2.102 1.464.254.033.019.048.065.067.123.054.163.139.418.715.418.78 0 .78-.47.78-.47.32-.19.77-.325 1.406-.325H31V13.955h-1.026V23H14.265v-9.045Z" fill="#DA3635"/><rect x="15.738" y="15.546" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="15.546" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="15.738" y="17.932" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="17.932" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="15.738" y="20.318" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="20.318" width="4.686" height=".795" rx=".398" fill="#DA3635"/></symbol> +<symbol id="accesLivresInformatiques" width="44" height="44" fill="none" stroke="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 44 44"><path d="M7 10h30v17a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V10Z" fill="#fff"/><rect x="6.25" y="9.25" width="31.5" height="20.5" rx="2.75" stroke="#333" stroke-width="1.5"/><path d="M6 27a2 2 0 0 0 2 2h28a2 2 0 0 0 2-2H6Z" fill="#333"/><path d="M17 34h11" stroke="#333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M23.25 30v-.75h-1.5V30h1.5Zm-1.5 4a.75.75 0 0 0 1.5 0h-1.5Zm0-4V34h1.5V30h-1.5Z" fill="#333"/><path d="M22.371 13.626v-.012l.003-.042a1.798 1.798 0 0 1 .169-.651c.084-.174.206-.34.383-.461.175-.121.419-.21.766-.21H29.726v10.875H23.692c-.438 0-.783.114-1.05.298a1.557 1.557 0 0 0-.27.238V13.626ZM21.871 13.626v-.012l-.002-.042a1.795 1.795 0 0 0-.169-.651 1.164 1.164 0 0 0-.383-.461c-.176-.121-.42-.21-.767-.21H14.517v10.875H20.552c.438 0 .783.114 1.05.298.103.072.193.152.27.238V13.626Z" stroke="#DA3635" stroke-width=".5"/><path fill-rule="evenodd" clip-rule="evenodd" d="M14.265 13.955H13V25.09h6.754c.474 0 1.2.102 1.464.254.033.019.048.065.067.123.054.163.139.418.715.418.78 0 .78-.47.78-.47.32-.19.77-.325 1.406-.325H31V13.955h-1.026V23H14.265v-9.045Z" fill="#DA3635"/><rect x="15.738" y="15.546" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="15.546" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="15.738" y="17.932" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="17.932" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="15.738" y="20.318" width="4.686" height=".795" rx=".398" fill="#DA3635"/><rect x="23.594" y="20.318" width="4.686" height=".795" rx=".398" fill="#DA3635"/></symbol> <symbol id="print" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> <rect x="10" y="8" width="12" height="5" stroke-width="2" fill="none"/> -- GitLab From 2dc7dffefd97bace397394945970acaa27595816 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 18:21:12 +0100 Subject: [PATCH 123/199] public tags --- .../structure-public-target.component.html | 25 ++++++++----------- .../structure-public-target.component.ts | 3 +++ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html index 32b1c7a4b..872c51412 100644 --- a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html @@ -12,20 +12,15 @@ ></app-svg-icon> <span>Il faut renseigner au moins un champ</span> </p> - <div class="tags" *ngIf="publics"> - <button - *ngFor="let choice of publics.modules" - (click)="updateChoicePublic(choice.id)" - [ngClass]="{ selectedChoice: isInArray(choice.id) }" - > - <div fxLayout="row" fxLayoutAlign="center"> - <svg class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> - </svg> - <div class="textBtn"> - {{ choice.text }} - </div> - </div> - </button> + <div *ngIf="publics" class="btn-grid"> + <span *ngFor="let choice of publics.modules"> + <app-button + [ngClass]="{ selectedChoice: true }" + [extraClass]="isInArray(choice.id) ? 'selected' : ''" + [style]="buttonTypeEnum.CheckButton" + [text]="choice.text" + (action)="updateChoicePublic(choice.id)" + ></app-button> + </span> </div> </form> diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts index 4c1eedb3f..5e4aef1f3 100644 --- a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts @@ -1,5 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; +import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; import { Category } from '../../../../structure-list/models/category.model'; @Component({ @@ -13,6 +14,8 @@ export class StructurePublicTargetComponent implements OnInit { @Output() updateChoice = new EventEmitter<any>(); @Output() validateForm = new EventEmitter<any>(); + public buttonTypeEnum = ButtonType; + ngOnInit(): void { this.validateForm.emit(); } -- GitLab From c197d670a6a06acec7cfaedbc82562998ced6315 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Wed, 23 Mar 2022 18:31:06 +0100 Subject: [PATCH 124/199] css tags removed --- ...gital-helping-accompaniment.component.scss | 28 ------------------- .../structure-public-target.component.scss | 28 ------------------- 2 files changed, 56 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss index 6ae6c98b1..e69de29bb 100644 --- a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss @@ -1,28 +0,0 @@ -@import '../../../../../assets/scss/typography'; -@import '../../../../../assets/scss/color'; - -.tags { - padding: 8px; - button { - background: $grey-8; - border-radius: 20px; - margin: 4px; - max-width: 100%; - height: 40px; - padding: 0 13px; - @include lato-bold-14; - outline: none; - border: none; - cursor: pointer; - &.selectedChoice { - background: $green-1 !important; - color: $white; - } - } - svg { - width: 20px; - height: 10px; - margin-right: 4px; - stroke: $grey-8; - } -} diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss index 6ae6c98b1..e69de29bb 100644 --- a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss @@ -1,28 +0,0 @@ -@import '../../../../../assets/scss/typography'; -@import '../../../../../assets/scss/color'; - -.tags { - padding: 8px; - button { - background: $grey-8; - border-radius: 20px; - margin: 4px; - max-width: 100%; - height: 40px; - padding: 0 13px; - @include lato-bold-14; - outline: none; - border: none; - cursor: pointer; - &.selectedChoice { - background: $green-1 !important; - color: $white; - } - } - svg { - width: 20px; - height: 10px; - margin-right: 4px; - stroke: $grey-8; - } -} -- GitLab From 0a412a089d9d21f04b8c368103f3a3338fc1e783 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Wed, 23 Mar 2022 18:39:11 +0100 Subject: [PATCH 125/199] fix wifi + end strcut form --- .../form/footer-form/footer-form.component.ts | 10 ++++++++++ src/app/form/form-view/form-view.component.ts | 18 ++++++++++++------ .../personal-offer-training-type.component.ts | 1 - .../structure-form/structure-form.component.ts | 5 +++-- .../structure-training-type.component.html | 2 +- .../structure-training-type.component.ts | 7 ++----- .../structure-wifi.component.html | 8 +------- 7 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 5af116c68..448f64e6a 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -60,6 +60,7 @@ export class FooterFormComponent implements OnChanges { this.currentForm === formType.structure && this.currentStep === structureFormStep.structureCreationFinishedInfo ) { + console.log('form', this.form); this.isLastFormStep = true; } } @@ -108,6 +109,9 @@ export class FooterFormComponent implements OnChanges { if (this.isPersonalOfferpage()) { this.endForm.emit(this.currentForm); } + if (this.isStructureLastPage()) { + this.endForm.emit(this.currentForm); + } this.goToNextPage(); } @@ -121,4 +125,10 @@ export class FooterFormComponent implements OnChanges { this.currentStep === personalOfferFormStep.personalOfferStructureChoice ); } + + private isStructureLastPage(): boolean { + return ( + this.currentForm === formType.structure && this.currentStep === structureFormStep.structureCreationFinishedInfo + ); + } } diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 2115c28b1..1ef317fbb 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -153,7 +153,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureNameAndAddress; + this.currentPage = structureFormStep.structureTrainingType; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); @@ -276,11 +276,11 @@ export class FormViewComponent implements OnInit { otherDescription: new FormControl(structure.otherDescription), equipmentsAndServices: this.loadArrayForCheckbox(structure.equipmentsAndServices, false), publics: this.loadArrayForCheckbox(structure.publics, true), - baseSkills: this.loadArrayForCheckbox(structure.baseSkills, false), - accessRight: this.loadArrayForCheckbox(structure.accessRight, false), - parentingHelp: this.loadArrayForCheckbox(structure.parentingHelp, false), - socialAndProfessional: this.loadArrayForCheckbox(structure.socialAndProfessional, false), - digitalCultureSecurity: this.loadArrayForCheckbox(structure.digitalCultureSecurity, false), + baseSkills: new FormControl(structure.baseSkills), + accessRight: new FormControl(structure.accessRight), + parentingHelp: new FormControl(structure.parentingHelp), + socialAndProfessional: new FormControl(structure.socialAndProfessional), + digitalCultureSecurity: new FormControl(structure.digitalCultureSecurity), nbComputers: new FormControl( structure.equipmentsAndServices.includes('ordinateurs') ? structure.nbComputers : 0, [Validators.required, Validators.pattern(CustomRegExp.NO_NEGATIVE_NUMBER), Validators.min(0)] @@ -358,6 +358,7 @@ export class FormViewComponent implements OnInit { this.saveProfileForm(); break; case formType.structure: + this.saveStructureForm(); break; case formType.personaloffer: this.savePersonalOfferForm(); @@ -393,4 +394,9 @@ export class FormViewComponent implements OnInit { // this.router.navigateByUrl('form/structure'); }); } + public saveStructureForm(): void { + this.structureService.createStructure(this.structureForm.value, this.profile).subscribe(() => { + this.router.navigateByUrl(`acteurs?id=${this.structure._id}`); + }); + } } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts index 7cb85bbcf..4df5c0d30 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-training-type/personal-offer-training-type.component.ts @@ -1,6 +1,5 @@ import { Component, Input } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { Structure } from '../../../../models/structure.model'; import { Category } from '../../../../structure-list/models/category.model'; @Component({ diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 27a8acb21..fe867d32f 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -52,6 +52,7 @@ export class StructureFormComponent implements OnChanges { if (changes.currentStep) { //facultative steps if ( + this.currentStep === structureFormStep.structureHours || this.currentStep === structureFormStep.structureTrainingType || this.currentStep === structureFormStep.structureEquipments || this.currentStep === structureFormStep.structureLabels || @@ -201,7 +202,7 @@ export class StructureFormComponent implements OnChanges { name: 'Gratuité des ateliers', }; this.pagesValidation[structureFormStep.structureWifi] = { - valid: this.structureForm.get('equipmentsAndServices').valid && this.isWifiChoosen, + valid: this.structureForm.get('equipmentsAndServices').valid && this.isWifiChoosen !== null, name: 'Gratuité du wifi', }; this.pagesValidation[structureFormStep.structureEquipments] = { @@ -283,7 +284,7 @@ export class StructureFormComponent implements OnChanges { value: string; }): void { if (value === 'wifiEnAccesLibre') { - this.isWifiChoosen = true; + this.isWifiChoosen = event; } const formArray: FormArray = this.structureForm.get(formControlName) as FormArray; if (event) { diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.html b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.html index 27359cc02..8f33ae8f3 100644 --- a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.html +++ b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.html @@ -1,4 +1,4 @@ -<form [formGroup]="structureForm"> +<form [formGroup]="structureForm" *ngIf="structureForm"> <div class="title"> <h3>Quelles formations au numérique proposez-vous ?</h3> <p class="notRequired">Facultatif</p> diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts index 16142948c..5c2767c35 100644 --- a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts +++ b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { Category } from '../../../../structure-list/models/category.model'; @@ -7,12 +7,9 @@ import { Category } from '../../../../structure-list/models/category.model'; templateUrl: './structure-training-type.component.html', styleUrls: ['./structure-training-type.component.scss'], }) -export class StructureTrainingTypeComponent implements OnInit { +export class StructureTrainingTypeComponent { @Input() structureForm: FormGroup; - constructor() {} - - ngOnInit(): void {} public setTrainingsFromCategories(categories: Category[]) { for (const categorie of categories) { const moduleIds: string[] = categorie.modules.map((module) => module.id); diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html index 9db87f701..f20cf986b 100644 --- a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html +++ b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.html @@ -3,13 +3,7 @@ <h3>Le wifi est-il proposé en accès libre ?</h3> </div> <app-radio-form - [selectedOption]=" - isEditMode - ? isInArray('wifiEnAccesLibre', 'equipmentsAndServices') - : isWifiChoosen - ? isInArray('wifiEnAccesLibre', 'equipmentsAndServices') - : null - " + [selectedOption]="isWifiChoosen !== null ? isWifiChoosen : isInArray('wifiEnAccesLibre', 'equipmentsAndServices')" (selectedEvent)="onCheckChange($event, 'equipmentsAndServices', 'wifiEnAccesLibre')" > </app-radio-form> -- GitLab From b1ef5f9e75d6345fdc8aff25da461331c90c7d2d Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Wed, 23 Mar 2022 18:56:13 +0100 Subject: [PATCH 126/199] remove useless steps --- src/app/form/form-view/structure-form/structureFormStep.enum.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index b92efb461..5573fceb4 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -22,7 +22,5 @@ export enum structureFormStep { structureCovidInfo, structureConsent, structureCreationFinishedInfo, - structurePublicAccompaniment, // ? - structureCreationInfo, // ? mailSentInfo, } -- GitLab From b9555cc780a2162bb38b3fc00c7e563ceb198705 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 19:04:06 +0100 Subject: [PATCH 127/199] feat: create information step for personal offer --- .../information-step/information-step.component.html | 10 ++++++++++ .../information-step/information-step.component.ts | 2 ++ .../personal-offer-form.component.html | 6 ++++++ .../personal-offer-form.component.ts | 7 +++++++ .../personal-offer-form/personalOfferFormStep.enum.ts | 1 + src/assets/form/profileUpdated.svg | 5 +++++ src/assets/form/sprite.svg | 6 ++++++ 7 files changed, 37 insertions(+) create mode 100644 src/assets/form/profileUpdated.svg diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 596797d33..a591532dc 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -44,3 +44,13 @@ </p> </div> </ng-container> +<ng-container *ngIf="step === personalOfferFormStep.personalOfferFinishedInfo"> + <div class=""> + <h3>Merci, les informations de votre profil ont été mises à jour</h3> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#profileUpdated'"></use> + </svg> + <app-button (action)="nextPage()" [text]="'Voir mon compte'" [iconType]="'form'" [style]="buttonTypeEnum.Primary"> + </app-button> + </div> +</ng-container> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.ts b/src/app/form/form-view/global-components/information-step/information-step.component.ts index 504f7b7c8..be763e804 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.ts +++ b/src/app/form/form-view/global-components/information-step/information-step.component.ts @@ -1,5 +1,6 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { accountFormStep } from '../../account-form/accountFormStep.enum'; +import { personalOfferFormStep } from '../../personal-offer-form/personalOfferFormStep.enum'; import { profileFormStep } from '../../profile-form/profileFormStep.enum'; import { structureFormStep } from '../../structure-form/structureFormStep.enum'; @@ -16,6 +17,7 @@ export class InformationStepComponent { public accountFormStepEnum = accountFormStep; public profileFormStepEnum = profileFormStep; public structureFormStepEnum = structureFormStep; + public personalOfferFormStep = personalOfferFormStep; public nextPage(): void { this.goNext.emit(); diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html index 4a6a90f2e..f1a28cb5a 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html @@ -19,4 +19,10 @@ (pageValid)="validPage()" ></app-personal-offer-other-structure-choice> </ng-container> + <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferFinishedInfo"> + <app-information-step + [step]="personalOfferFormStep.personalOfferFinishedInfo" + (pageValid)="goToProfile()" + ></app-information-step> + </ng-container> </div> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts index 8e974e613..1d7f23858 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts @@ -1,5 +1,6 @@ import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core'; import { FormGroup } from '@angular/forms'; +import { Router } from '@angular/router'; import { personalOfferFormStep } from './personalOfferFormStep.enum'; @Component({ @@ -17,6 +18,8 @@ export class PersonalOfferFormComponent { public personalOfferFormStep = personalOfferFormStep; + constructor(private router: Router) {} + ngOnChanges(changes: SimpleChanges): void { if (changes.currentStep) { if ( @@ -35,4 +38,8 @@ export class PersonalOfferFormComponent { public setOtherOffer(flag: boolean): void { this.setHasOtherOffer.emit(flag); } + + public goToProfile(): void { + this.router.navigateByUrl('/profile'); + } } diff --git a/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts b/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts index d58b1aa7c..460ca8172 100644 --- a/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts +++ b/src/app/form/form-view/personal-offer-form/personalOfferFormStep.enum.ts @@ -2,4 +2,5 @@ export enum personalOfferFormStep { personalOfferAccompaniment, personalOfferTrainingType, personalOfferStructureChoice, + personalOfferFinishedInfo, } diff --git a/src/assets/form/profileUpdated.svg b/src/assets/form/profileUpdated.svg new file mode 100644 index 000000000..9ce82df23 --- /dev/null +++ b/src/assets/form/profileUpdated.svg @@ -0,0 +1,5 @@ +<svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M26 140H24.5C24.5 140.828 25.1716 141.5 26 141.5V140ZM83.5 87L83.5 85.5L83.5 87ZM103.426 88.0228L103.589 86.5318L103.426 88.0228ZM63.5739 88.0223L63.7373 89.5133L63.5739 88.0223ZM83.5 141.5C84.3284 141.5 85 140.828 85 140C85 139.172 84.3284 138.5 83.5 138.5V141.5ZM63.7373 89.5133C69.4973 88.882 76.0577 88.4999 83.5 88.5L83.5 85.5C75.9551 85.4999 69.2853 85.8873 63.4105 86.5312L63.7373 89.5133ZM83.5 88.5C90.9421 88.5001 97.5024 88.8825 103.262 89.5139L103.589 86.5318C97.7145 85.8878 91.0448 85.5001 83.5 85.5L83.5 88.5ZM27.5 140C27.5 127.476 30.5094 115.481 36.5387 106.319C42.5441 97.1935 51.5563 90.8484 63.7373 89.5133L63.4105 86.5312C50.2549 87.9731 40.4801 94.8727 34.0327 104.67C27.6093 114.43 24.5 127.036 24.5 140H27.5ZM83.5 138.5H26V141.5H83.5V138.5ZM129.642 100.23C123.32 92.8079 114.639 87.743 103.589 86.5318L103.262 89.5139C113.517 90.638 121.509 95.3091 127.358 102.176L129.642 100.23Z" fill="#696969"/> +<circle cx="84.0416" cy="63.4879" r="30.9879" fill="white" stroke="#696969" stroke-width="3" stroke-linejoin="round"/> +<path d="M154.686 93.624C151.223 90.5385 145.92 90.8517 142.842 94.3221L110.73 130.534L93.1433 116.368C89.5313 113.458 84.2499 114.036 81.3486 117.655C78.4489 121.272 79.0227 126.56 82.6326 129.468L106.442 148.646C109.928 151.453 114.998 151.027 117.968 147.678L155.382 105.486C158.458 102.018 158.147 96.7077 154.686 93.624Z" fill="#47C562" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> +</symbol> \ No newline at end of file diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 967f2b729..ca8e63eed 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -485,5 +485,11 @@ <path d="M161.686 108.624C158.223 105.539 152.92 105.852 149.842 109.322L117.73 145.534L100.143 131.368C96.5313 128.458 91.2499 129.036 88.3486 132.655C85.4489 136.272 86.0227 141.56 89.6326 144.468L113.442 163.646C116.928 166.453 121.998 166.027 124.968 162.678L162.382 120.486C165.458 117.018 165.147 111.708 161.686 108.624Z" fill="#47C562" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </symbol> +<symbol id="profileUpdated" width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M26 140H24.5C24.5 140.828 25.1716 141.5 26 141.5V140ZM83.5 87L83.5 85.5L83.5 87ZM103.426 88.0228L103.589 86.5318L103.426 88.0228ZM63.5739 88.0223L63.7373 89.5133L63.5739 88.0223ZM83.5 141.5C84.3284 141.5 85 140.828 85 140C85 139.172 84.3284 138.5 83.5 138.5V141.5ZM63.7373 89.5133C69.4973 88.882 76.0577 88.4999 83.5 88.5L83.5 85.5C75.9551 85.4999 69.2853 85.8873 63.4105 86.5312L63.7373 89.5133ZM83.5 88.5C90.9421 88.5001 97.5024 88.8825 103.262 89.5139L103.589 86.5318C97.7145 85.8878 91.0448 85.5001 83.5 85.5L83.5 88.5ZM27.5 140C27.5 127.476 30.5094 115.481 36.5387 106.319C42.5441 97.1935 51.5563 90.8484 63.7373 89.5133L63.4105 86.5312C50.2549 87.9731 40.4801 94.8727 34.0327 104.67C27.6093 114.43 24.5 127.036 24.5 140H27.5ZM83.5 138.5H26V141.5H83.5V138.5ZM129.642 100.23C123.32 92.8079 114.639 87.743 103.589 86.5318L103.262 89.5139C113.517 90.638 121.509 95.3091 127.358 102.176L129.642 100.23Z" fill="#696969"/> +<circle cx="84.0416" cy="63.4879" r="30.9879" fill="white" stroke="#696969" stroke-width="3" stroke-linejoin="round"/> +<path d="M154.686 93.624C151.223 90.5385 145.92 90.8517 142.842 94.3221L110.73 130.534L93.1433 116.368C89.5313 113.458 84.2499 114.036 81.3486 117.655C78.4489 121.272 79.0227 126.56 82.6326 129.468L106.442 148.646C109.928 151.453 114.998 151.027 117.968 147.678L155.382 105.486C158.458 102.018 158.147 96.7077 154.686 93.624Z" fill="#47C562" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> +</symbol> + </svg> -- GitLab From b2a2bb638ed4d76f8901757edc8f36565405afb4 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 20:32:44 +0100 Subject: [PATCH 128/199] feat: update information step --- .../form/footer-form/footer-form.component.ts | 12 +++---- .../account-form/account-form.component.html | 5 ++- src/app/form/form-view/form-view.component.ts | 32 ++++++++++--------- .../information-step.component.html | 28 +++++++++++----- .../information-step.component.scss | 12 +++++++ .../information-step.component.ts | 5 +++ .../personal-offer-form.component.html | 5 +-- .../personal-offer-form.component.scss | 3 ++ .../personal-offer-form.component.ts | 2 ++ .../profile-form/profile-form.component.html | 6 +++- .../profile-form/profile-form.component.ts | 2 ++ .../structure-form.component.html | 3 ++ .../structure-form.component.ts | 3 +- .../components/button/button.component.html | 1 + .../components/button/button.component.scss | 6 ++++ src/assets/form/profileUpdated.svg | 4 +-- src/assets/form/sprite.svg | 5 +-- 17 files changed, 96 insertions(+), 38 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 38047bc3b..9f1f89ae2 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -93,8 +93,8 @@ export class FooterFormComponent implements OnChanges { this.newsletterService.newsletterSubscribe(user.email).subscribe(() => {}); document.getElementsByClassName('page')[0].scrollTo(0, 0); } - if (this.isProfileLastpage()) { - this.endForm.emit({ type: this.currentForm }); + if (this.isProfileLastPage()) { + this.endForm.emit({ formType: this.currentForm }); } if (this.currentForm === formType.structure) { if (this.currentStep === structureFormStep.structureConsent) { @@ -107,13 +107,13 @@ export class FooterFormComponent implements OnChanges { } } if (this.isPersonalOfferpage()) { - this.endForm.emit({ type: this.currentForm }); + this.endForm.emit({ formType: this.currentForm }); } if (this.isStructureChoiceValid()) { - this.endForm.emit({ type: this.currentForm }); + this.endForm.emit({ formType: this.currentForm, formStep: this.currentStep }); } if (this.isStructureLastPage()) { - this.endForm.emit({ type: this.currentForm, formStep: this.currentStep }); + this.endForm.emit({ formType: this.currentForm, formStep: this.currentStep }); } this.goToNextPage(); } @@ -134,7 +134,7 @@ export class FooterFormComponent implements OnChanges { ); } - private isProfileLastpage(): boolean { + private isProfileLastPage(): boolean { return this.currentForm === formType.profile && this.currentStep === profileFormStep.profileJobSelection; } diff --git a/src/app/form/form-view/account-form/account-form.component.html b/src/app/form/form-view/account-form/account-form.component.html index 4f59cafff..170f966d1 100644 --- a/src/app/form/form-view/account-form/account-form.component.html +++ b/src/app/form/form-view/account-form/account-form.component.html @@ -23,6 +23,9 @@ ></app-account-newsletter> </ng-container> <ng-container *ngIf="currentStep === accountFormStepEnum.confirmEmailSentInfo"> - <app-information-step [step]="accountFormStepEnum.confirmEmailSentInfo"></app-information-step> + <app-information-step + [step]="accountFormStepEnum.confirmEmailSentInfo" + [formType]="formType" + ></app-information-step> </ng-container> </div> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index fc0b98b18..0cdefe66d 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -154,7 +154,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureTrainingType; + this.currentPage = structureFormStep.structureChoice; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); @@ -366,33 +366,35 @@ export class FormViewComponent implements OnInit { }); } - public endForm( - type: formType, - formStep?: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep - ): void { - switch (type) { + public endForm(type: { + formType: formType; + formStep?: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep; + }): void { + console.log(type); + switch (type.formType) { case formType.account: break; case formType.profile: this.saveProfileForm(); break; case formType.structure: - if (formStep === structureFormStep.structureCreationFinishedInfo) { - this.saveStructureForm(); + if (type.formStep === structureFormStep.mailSentInfo) { + if (this.profileForm.value.job.hasPersonalOffer) { + this.router.navigateByUrl('form/personaloffer'); + } else { + this.router.navigateByUrl('/'); + } } - if (formStep === structureFormStep.mailSentInfo) { + if (type.formStep === structureFormStep.structureChoice) { // If structure already exist, join it. // On first strike the structure._id is not set and is a key to differentiate with other case if (this.structureForm.value._id && !this.structure._id) { this.linkStructureToUser(); - } else { - if (this.profileForm.value.job.hasPersonalOffer) { - this.router.navigateByUrl('form/personaloffer'); - } else { - this.router.navigateByUrl('/'); - } } } + if (type.formStep === structureFormStep.structureCreationFinishedInfo) { + this.saveStructureForm(); + } break; case formType.personaloffer: this.savePersonalOfferForm(); diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index a591532dc..56a127c67 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -1,4 +1,4 @@ -<ng-container *ngIf="step === accountFormStepEnum.confirmEmailSentInfo"> +<ng-container *ngIf="formType === formTypeEnum.account && step === accountFormStepEnum.confirmEmailSentInfo"> <div class="information-step-container"> <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#emailVerification'"></use> @@ -9,7 +9,7 @@ </p> </div> </ng-container> -<ng-container *ngIf="step === profileFormStepEnum.profileBeginningInfo"> +<ng-container *ngIf="formType === formTypeEnum.profile && step === profileFormStepEnum.profileBeginningInfo"> <div fxLayout="column" fxLayoutGap="18px" class="information-step-container profile-skip"> <p> Pour compléter votre profil,<br /> @@ -21,7 +21,7 @@ <app-navigation-buttons (goNext)="nextPage()"></app-navigation-buttons> </div> </ng-container> -<ng-container *ngIf="step === structureFormStepEnum.mailSentInfo"> +<ng-container *ngIf="formType === formTypeEnum.structure && step === structureFormStepEnum.mailSentInfo"> <div class="information-step-container structure-display"> <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#emailVerification'"></use> @@ -33,7 +33,9 @@ <span>{{ structureName }}</span> </div> </ng-container> -<ng-container *ngIf="step === structureFormStepEnum.structureCreationFinishedInfo"> +<ng-container + *ngIf="formType === formTypeEnum.structure && step === structureFormStepEnum.structureCreationFinishedInfo" +> <div class="structureCreated"> <h3>La structure est désormais référencée sur Rés’in.</h3> <svg aria-hidden="true"> @@ -44,13 +46,23 @@ </p> </div> </ng-container> -<ng-container *ngIf="step === personalOfferFormStep.personalOfferFinishedInfo"> - <div class=""> +<ng-container + *ngIf="formType === formTypeEnum.personaloffer && step === personalOfferFormStep.personalOfferFinishedInfo" +> + <div class="information-step-container profile-updated no-max-width"> <h3>Merci, les informations de votre profil ont été mises à jour</h3> <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#profileUpdated'"></use> </svg> - <app-button (action)="nextPage()" [text]="'Voir mon compte'" [iconType]="'form'" [style]="buttonTypeEnum.Primary"> - </app-button> + <div class="btn"> + <app-button + [style]="buttonTypeEnum.Primary" + [extraClass]="'bigButton'" + [text]="'Voir mon compte'" + [iconType]="'form'" + (action)="nextPage()" + > + </app-button> + </div> </div> </ng-container> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.scss b/src/app/form/form-view/global-components/information-step/information-step.component.scss index d44231a5a..fda9eef1d 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.scss +++ b/src/app/form/form-view/global-components/information-step/information-step.component.scss @@ -7,6 +7,9 @@ justify-content: center; min-height: inherit; height: 450px; + &.no-max-width { + max-width: none; + } svg { width: 100%; max-width: 200px; @@ -48,6 +51,15 @@ max-width: 180px; } } + &.profile-updated { + .btn { + margin-top: 17px; + } + svg { + height: 180px; + width: 180px; + } + } } .structureCreated { display: flex; diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.ts b/src/app/form/form-view/global-components/information-step/information-step.component.ts index be763e804..efe2239f7 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.ts +++ b/src/app/form/form-view/global-components/information-step/information-step.component.ts @@ -1,5 +1,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; import { accountFormStep } from '../../account-form/accountFormStep.enum'; +import { formType } from '../../formType.enum'; import { personalOfferFormStep } from '../../personal-offer-form/personalOfferFormStep.enum'; import { profileFormStep } from '../../profile-form/profileFormStep.enum'; import { structureFormStep } from '../../structure-form/structureFormStep.enum'; @@ -11,13 +13,16 @@ import { structureFormStep } from '../../structure-form/structureFormStep.enum'; }) export class InformationStepComponent { @Input() step: number; + @Input() formType: formType; @Input() structureName?: string; @Output() goNext = new EventEmitter<any>(); + public formTypeEnum = formType; public accountFormStepEnum = accountFormStep; public profileFormStepEnum = profileFormStep; public structureFormStepEnum = structureFormStep; public personalOfferFormStep = personalOfferFormStep; + public buttonTypeEnum = ButtonType; public nextPage(): void { this.goNext.emit(); diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html index f1a28cb5a..77d5ac7f7 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.html @@ -1,4 +1,4 @@ -<div> +<div class="no-max-width"> <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferAccompaniment"> <app-personal-offer-accompaniment [structureName]="structureName" @@ -22,7 +22,8 @@ <ng-container *ngIf="currentStep === personalOfferFormStep.personalOfferFinishedInfo"> <app-information-step [step]="personalOfferFormStep.personalOfferFinishedInfo" - (pageValid)="goToProfile()" + [formType]="formTypeEnum.personaloffer" + (goNext)="goToProfile()" ></app-information-step> </ng-container> </div> diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss index e69de29bb..e5aaa88a0 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss @@ -0,0 +1,3 @@ +.no-max-width { + max-width: none; +} diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts index 1d7f23858..e4c626975 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts @@ -1,6 +1,7 @@ import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { Router } from '@angular/router'; +import { formType } from '../formType.enum'; import { personalOfferFormStep } from './personalOfferFormStep.enum'; @Component({ @@ -17,6 +18,7 @@ export class PersonalOfferFormComponent { @Output() pageValid = new EventEmitter<any>(); public personalOfferFormStep = personalOfferFormStep; + public formTypeEnum = formType; constructor(private router: Router) {} diff --git a/src/app/form/form-view/profile-form/profile-form.component.html b/src/app/form/form-view/profile-form/profile-form.component.html index 16e72d765..bd037bfc1 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.html +++ b/src/app/form/form-view/profile-form/profile-form.component.html @@ -1,6 +1,10 @@ <div class="no-max-width"> <ng-container *ngIf="currentStep === profileFormStepEnum.profileBeginningInfo"> - <app-information-step [step]="0" (goNext)="setValidationsForm()"></app-information-step> + <app-information-step + [step]="0" + (goNext)="setValidationsForm()" + [formType]="formTypeEnum.profile" + ></app-information-step> </ng-container> <ng-container *ngIf="currentStep === profileFormStepEnum.profileEmployerSelection"> <app-profile-employer-selection diff --git a/src/app/form/form-view/profile-form/profile-form.component.ts b/src/app/form/form-view/profile-form/profile-form.component.ts index fb652ab2f..92556aac9 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.ts +++ b/src/app/form/form-view/profile-form/profile-form.component.ts @@ -1,5 +1,6 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; +import { formType } from '../formType.enum'; import { profileFormStep } from './profileFormStep.enum'; @Component({ @@ -17,6 +18,7 @@ export class ProfileFormComponent { public isPageValid: boolean; public profileFormStepEnum = profileFormStep; public pagesValidation = []; + public formTypeEnum = formType; public setValidationsForm(): void { this.pagesValidation[profileFormStep.profileBeginningInfo] = { diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 3e753eb6e..3924c2c85 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -8,6 +8,7 @@ <ng-container *ngIf="currentStep === structureFormStep.mailSentInfo"> <app-information-step [step]="structureFormStep.mailSentInfo" + [formType]="formTypeEnum.structure" [structureName]="structureForm.value.structureName" (goNext)="setValidationsForm()" ></app-information-step> @@ -171,5 +172,7 @@ [structureForm]="structureForm" [isEditMode]="isEditMode" [step]="currentStep" + [formType]="formTypeEnum.structure" + [structureName]="structureForm.value.structureName" ></app-information-step> </div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 032e6da6f..14719cf6c 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -5,6 +5,7 @@ import { CategoryEnum } from '../../../shared/enum/category.enum'; import { Category } from '../../../structure-list/models/category.model'; import { Module } from '../../../structure-list/models/module.model'; import { SearchService } from '../../../structure-list/services/search.service'; +import { formType } from '../formType.enum'; import { structureFormStep } from './structureFormStep.enum'; @Component({ @@ -21,7 +22,7 @@ export class StructureFormComponent implements OnChanges { @Output() updateHoursForm = new EventEmitter<any>(); @Output() isNotExistingStructure = new EventEmitter<any>(); public structureFormStep = structureFormStep; - + public formTypeEnum = formType; public isPageValid: boolean; public pagesValidation = []; diff --git a/src/app/shared/components/button/button.component.html b/src/app/shared/components/button/button.component.html index 3ba6ef020..3065f92a4 100644 --- a/src/app/shared/components/button/button.component.html +++ b/src/app/shared/components/button/button.component.html @@ -35,6 +35,7 @@ (click)="doAction()" [disabled]="disabled" [ngClass]="{ disabled: disabled }" + [ngClass]="extraClass" > <div *ngIf="!iconBtn" class="text">{{ text }}</div> <div diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index f9d479174..dc69cd1f9 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -172,6 +172,12 @@ button { .fullWidth { width: 100%; } +.bigButton { + width: 280px !important; + .text { + width: inherit !important; + } +} .disabled { opacity: 0.4; cursor: not-allowed; diff --git a/src/assets/form/profileUpdated.svg b/src/assets/form/profileUpdated.svg index 9ce82df23..2eb9b1a92 100644 --- a/src/assets/form/profileUpdated.svg +++ b/src/assets/form/profileUpdated.svg @@ -1,5 +1,5 @@ <svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M26 140H24.5C24.5 140.828 25.1716 141.5 26 141.5V140ZM83.5 87L83.5 85.5L83.5 87ZM103.426 88.0228L103.589 86.5318L103.426 88.0228ZM63.5739 88.0223L63.7373 89.5133L63.5739 88.0223ZM83.5 141.5C84.3284 141.5 85 140.828 85 140C85 139.172 84.3284 138.5 83.5 138.5V141.5ZM63.7373 89.5133C69.4973 88.882 76.0577 88.4999 83.5 88.5L83.5 85.5C75.9551 85.4999 69.2853 85.8873 63.4105 86.5312L63.7373 89.5133ZM83.5 88.5C90.9421 88.5001 97.5024 88.8825 103.262 89.5139L103.589 86.5318C97.7145 85.8878 91.0448 85.5001 83.5 85.5L83.5 88.5ZM27.5 140C27.5 127.476 30.5094 115.481 36.5387 106.319C42.5441 97.1935 51.5563 90.8484 63.7373 89.5133L63.4105 86.5312C50.2549 87.9731 40.4801 94.8727 34.0327 104.67C27.6093 114.43 24.5 127.036 24.5 140H27.5ZM83.5 138.5H26V141.5H83.5V138.5ZM129.642 100.23C123.32 92.8079 114.639 87.743 103.589 86.5318L103.262 89.5139C113.517 90.638 121.509 95.3091 127.358 102.176L129.642 100.23Z" fill="#696969"/> <circle cx="84.0416" cy="63.4879" r="30.9879" fill="white" stroke="#696969" stroke-width="3" stroke-linejoin="round"/> -<path d="M154.686 93.624C151.223 90.5385 145.92 90.8517 142.842 94.3221L110.73 130.534L93.1433 116.368C89.5313 113.458 84.2499 114.036 81.3486 117.655C78.4489 121.272 79.0227 126.56 82.6326 129.468L106.442 148.646C109.928 151.453 114.998 151.027 117.968 147.678L155.382 105.486C158.458 102.018 158.147 96.7077 154.686 93.624Z" fill="#47C562" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> -</symbol> \ No newline at end of file +<path d="M154.686 93.624C151.223 90.5385 145.919 90.8517 142.842 94.3221L110.73 130.534L93.1433 116.368C89.5313 113.458 84.2499 114.036 81.3486 117.655C78.4489 121.272 79.0227 126.56 82.6326 129.468L106.442 148.646C109.928 151.453 114.998 151.027 117.968 147.678L155.382 105.486C158.458 102.018 158.147 96.7077 154.686 93.624Z" fill="#47C562" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> +</svg> diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index d1c223be3..88550ebb8 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -488,8 +488,9 @@ <symbol id="profileUpdated" width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M26 140H24.5C24.5 140.828 25.1716 141.5 26 141.5V140ZM83.5 87L83.5 85.5L83.5 87ZM103.426 88.0228L103.589 86.5318L103.426 88.0228ZM63.5739 88.0223L63.7373 89.5133L63.5739 88.0223ZM83.5 141.5C84.3284 141.5 85 140.828 85 140C85 139.172 84.3284 138.5 83.5 138.5V141.5ZM63.7373 89.5133C69.4973 88.882 76.0577 88.4999 83.5 88.5L83.5 85.5C75.9551 85.4999 69.2853 85.8873 63.4105 86.5312L63.7373 89.5133ZM83.5 88.5C90.9421 88.5001 97.5024 88.8825 103.262 89.5139L103.589 86.5318C97.7145 85.8878 91.0448 85.5001 83.5 85.5L83.5 88.5ZM27.5 140C27.5 127.476 30.5094 115.481 36.5387 106.319C42.5441 97.1935 51.5563 90.8484 63.7373 89.5133L63.4105 86.5312C50.2549 87.9731 40.4801 94.8727 34.0327 104.67C27.6093 114.43 24.5 127.036 24.5 140H27.5ZM83.5 138.5H26V141.5H83.5V138.5ZM129.642 100.23C123.32 92.8079 114.639 87.743 103.589 86.5318L103.262 89.5139C113.517 90.638 121.509 95.3091 127.358 102.176L129.642 100.23Z" fill="#696969"/> <circle cx="84.0416" cy="63.4879" r="30.9879" fill="white" stroke="#696969" stroke-width="3" stroke-linejoin="round"/> -<path d="M154.686 93.624C151.223 90.5385 145.92 90.8517 142.842 94.3221L110.73 130.534L93.1433 116.368C89.5313 113.458 84.2499 114.036 81.3486 117.655C78.4489 121.272 79.0227 126.56 82.6326 129.468L106.442 148.646C109.928 151.453 114.998 151.027 117.968 147.678L155.382 105.486C158.458 102.018 158.147 96.7077 154.686 93.624Z" fill="#47C562" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> -</symbol> +<path d="M154.686 93.624C151.223 90.5385 145.919 90.8517 142.842 94.3221L110.73 130.534L93.1433 116.368C89.5313 113.458 84.2499 114.036 81.3486 117.655C78.4489 121.272 79.0227 126.56 82.6326 129.468L106.442 148.646C109.928 151.453 114.998 151.027 117.968 147.678L155.382 105.486C158.458 102.018 158.147 96.7077 154.686 93.624Z" fill="#47C562" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> +</svg> + </svg> -- GitLab From ccb1a0127c3a3576d099ce47e0bcf0780f9f3ee8 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Wed, 23 Mar 2022 20:37:42 +0100 Subject: [PATCH 129/199] feat: update footer and progress bar for personaloffer --- src/app/form/footer-form/footer-form.component.ts | 10 ++++++---- .../progress-bar/progress-bar.component.html | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 9f1f89ae2..0cc80b3c6 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -63,11 +63,13 @@ export class FooterFormComponent implements OnChanges { console.log('form', this.form); this.isLastFormStep = true; } + if ( + this.currentForm === formType.personaloffer && + this.currentStep === personalOfferFormStep.personalOfferFinishedInfo + ) { + this.isNextFormTransition = true; + } } - - // if (changes.currentStep && this.isProfileLastpage()) { - // this.isNextFormTransition = true; - // } } public goToPreviousPage(): void { diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html index a32a9ce43..9ba02d9f8 100644 --- a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html @@ -2,6 +2,7 @@ <p *ngIf="formType === formTypeEnum.account">Création de compte</p> <p *ngIf="formType === formTypeEnum.profile">Création du profil</p> <p *ngIf="formType === formTypeEnum.structure">Création de la structure</p> + <p *ngIf="formType === formTypeEnum.personaloffer">Création d'offre de service</p> <div fxLayout="row" fxLayoutAlign="space-between center" fxLayoutGap="20px"> <label [ngClass]="{ validate: currentPage == nbPagesForm }" for="progressForm" >{{ progressStatus | number: '1.0-0' }}% -- GitLab From 06292c5bedf38309170a29967c159c87c56a3eba Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Thu, 24 Mar 2022 09:08:03 +0100 Subject: [PATCH 130/199] fix: max 100% for progress bar --- .../global-components/progress-bar/progress-bar.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html index 9ba02d9f8..7d9519939 100644 --- a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.html @@ -5,7 +5,7 @@ <p *ngIf="formType === formTypeEnum.personaloffer">Création d'offre de service</p> <div fxLayout="row" fxLayoutAlign="space-between center" fxLayoutGap="20px"> <label [ngClass]="{ validate: currentPage == nbPagesForm }" for="progressForm" - >{{ progressStatus | number: '1.0-0' }}% + >{{ progressStatus > 100 ? 100 : (progressStatus | number: '1.0-0') }}% </label> <progress id="progressForm" -- GitLab From fa187b0c146f6a7541a4156a37f337f56a0e4afe Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Thu, 24 Mar 2022 09:32:52 +0100 Subject: [PATCH 131/199] fix: personal offer save after selection --- .../profile-job-selection/profile-job-selection.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts index 86fc3cade..0eafdb7dd 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts @@ -27,8 +27,8 @@ export class ProfileJobSelectionComponent implements OnInit { if (!this.isUnexistingJob()) { this.profileForm.get('job').setValue({ name: job.name, - validated: false, - hasPersonalOffer: true, + validated: job.validated, + hasPersonalOffer: job.hasPersonalOffer, }); } else { this.profileForm.get('job').setValue({ -- GitLab From 3e4dd39506651aa20d1d5aef6647fb30dcb3cf73 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Thu, 24 Mar 2022 10:42:33 +0100 Subject: [PATCH 132/199] fix remote accompaniment --- src/app/form/form-view/form-view.component.ts | 5 +- .../information-step.component.html | 4 +- .../information-step.component.scss | 3 + .../structure-form.component.html | 353 +++++++++--------- .../structure-form.component.scss | 3 + 5 files changed, 190 insertions(+), 178 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index fc0b98b18..e09688996 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -154,7 +154,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureTrainingType; + this.currentPage = structureFormStep.structureType; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); @@ -275,7 +275,8 @@ export class FormViewComponent implements OnInit { accessModality: this.loadArrayForCheckbox(structure.accessModality, true), publicsAccompaniment: this.loadArrayForCheckbox(structure.publicsAccompaniment, false), proceduresAccompaniment: this.loadArrayForCheckbox(structure.proceduresAccompaniment, false), - remoteAccompaniment: new FormControl(structure.remoteAccompaniment, Validators.required), + //TODO remettre les accompagnements à distance + remoteAccompaniment: new FormControl(false), otherDescription: new FormControl(structure.otherDescription), equipmentsAndServices: this.loadArrayForCheckbox(structure.equipmentsAndServices, false), publics: this.loadArrayForCheckbox(structure.publics, true), diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 596797d33..91c58adb2 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -1,5 +1,5 @@ <ng-container *ngIf="step === accountFormStepEnum.confirmEmailSentInfo"> - <div class="information-step-container"> + <div class="information-step-container no-max-width"> <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#emailVerification'"></use> </svg> @@ -34,7 +34,7 @@ </div> </ng-container> <ng-container *ngIf="step === structureFormStepEnum.structureCreationFinishedInfo"> - <div class="structureCreated"> + <div class="structureCreated no-max-width"> <h3>La structure est désormais référencée sur Rés’in.</h3> <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#structureCreated'"></use> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.scss b/src/app/form/form-view/global-components/information-step/information-step.component.scss index d44231a5a..27d29ad2b 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.scss +++ b/src/app/form/form-view/global-components/information-step/information-step.component.scss @@ -1,4 +1,7 @@ @import '../../../../../assets/scss/typography'; +.no-max-width { + max-width: none; +} .information-step-container { display: flex; diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 3e753eb6e..43b17a8d7 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -1,175 +1,180 @@ -<ng-container *ngIf="currentStep === structureFormStep.structureChoice"> - <app-profile-structure-choice - [structureForm]="structureForm" - (validateForm)="setValidationsForm()" - (createStructure)="goToCreateStructure()" - ></app-profile-structure-choice> -</ng-container> -<ng-container *ngIf="currentStep === structureFormStep.mailSentInfo"> - <app-information-step - [step]="structureFormStep.mailSentInfo" - [structureName]="structureForm.value.structureName" - (goNext)="setValidationsForm()" - ></app-information-step> -</ng-container> -<div *ngIf="currentStep == structureFormStep.structureNameAndAddress"> - <app-structure-name-and-address - [structureForm]="structureForm" - (validateForm)="setValidationsForm()" - (addressStructure)="setAddressStructure($event)" - ></app-structure-name-and-address> -</div> -<div *ngIf="currentStep == structureFormStep.structureContact"> - <app-structure-contact [structureForm]="structureForm" (validateForm)="setValidationsForm()"></app-structure-contact> -</div> -<div *ngIf="currentStep == structureFormStep.structureAccompanimentChoice"> - <app-structure-accompaniment-choice - [structureForm]="structureForm" - (validateForm)="setValidationsForm()" - (radioChange)="onRadioChange($event)" - ></app-structure-accompaniment-choice> -</div> -<div *ngIf="currentStep == structureFormStep.structureChoiceCompletion"> - <app-structure-choice-completion - [structureForm]="structureForm" - (validateForm)="setValidationsForm()" - (radioChange)="onRadioChange($event)" - ></app-structure-choice-completion> -</div> -<div *ngIf="currentStep == structureFormStep.structureContactCompletion"> - <app-structure-contact-completion - [structureForm]="structureForm" - (validateForm)="setValidationsForm()" - ></app-structure-contact-completion> -</div> -<div *ngIf="currentStep == structureFormStep.structureType"> - <app-structure-type - [structureForm]="structureForm" - (validateForm)="setValidationsForm()" - (typeStructure)="setTypeStructure($event)" - ></app-structure-type> -</div> -<div *ngIf="currentStep == structureFormStep.structureAccessModality"> - <app-structure-access-modality - [structureForm]="structureForm" - [accessModality]="accessModality" - (validateForm)="setValidationsForm()" - (inArray)="isInArray($event)" - (checkChange)="onCheckChange($event)" - ></app-structure-access-modality> -</div> -<div *ngIf="currentStep == structureFormStep.structureHours"> - <app-structure-hours - [structureForm]="structureForm" - [hoursForm]="hoursForm" - (validateForm)="setValidationsForm()" - (hours)="updateHours($event)" - (hoursError)="setHoursError()" - ></app-structure-hours> -</div> -<div *ngIf="currentStep == structureFormStep.structurePmr"> - <app-structure-pmr [structureForm]="structureForm" (radioChange)="onRadioChange($event)"></app-structure-pmr> -</div> -<div *ngIf="currentStep == structureFormStep.structureWebAndSocialNetwork"> - <app-structure-web-and-social-network - [structureForm]="structureForm" - [showWebsite]="showWebsite" - [showSocialNetwork]="showSocialNetwork" - (toggleSocials)="toggleSocialNetwork()" - (toggleWebsite)="toggleWebSite()" - (validateForm)="setValidationsForm()" - > - </app-structure-web-and-social-network> -</div> -<div *ngIf="currentStep == structureFormStep.structurePublicTarget"> - <app-structure-public-target - [structureForm]="structureForm" - [publics]="publics" - (validateForm)="setValidationsForm()" - (updateChoice)="updateChoice($event)" - > - </app-structure-public-target> -</div> -<div *ngIf="currentStep == structureFormStep.structureTrainingType"> - <app-structure-training-type - [structureForm]="structureForm" - (validateForm)="setValidationsForm()" - ></app-structure-training-type> -</div> -<div *ngIf="currentStep == structureFormStep.structureTrainingPrice"> - <app-structure-training-price - [structureForm]="structureForm" - (validateForm)="setValidationsForm()" - (radioChange)="onRadioChange($event)" - ></app-structure-training-price> -</div> -<div *ngIf="currentStep == structureFormStep.structureWifi"> - <app-structure-wifi - [structureForm]="structureForm" - [isEditMode]="isEditMode" - [isWifiChoosen]="isWifiChoosen" - (validateForm)="setValidationsForm($event)" - (inArray)="isInArray($event)" - (checkChange)="onCheckChange($event)" - ></app-structure-wifi> -</div> -<div *ngIf="currentStep == structureFormStep.structureEquipments"> - <app-structure-equipments - [structureForm]="structureForm" - (validateForm)="setValidationsForm($event)" - [isEditMode]="isEditMode" - (inArray)="isInArray($event)" - ></app-structure-equipments> -</div> -<div *ngIf="currentStep == structureFormStep.structureLabels"> - <app-structure-labels - [structureForm]="structureForm" - (validateForm)="setValidationsForm($event)" - [isEditMode]="isEditMode" - ></app-structure-labels> -</div> -<div *ngIf="currentStep == structureFormStep.structureOtherServices"> - <app-structure-other-services - [structureForm]="structureForm" - (validateForm)="setValidationsForm($event)" - (inArray)="isInArray($event)" - [isEditMode]="isEditMode" - ></app-structure-other-services> -</div> -<div *ngIf="currentStep == structureFormStep.structureDigitalHelpingAccompaniment"> - <app-structure-digital-helping-accompaniment - [structureForm]="structureForm" - [proceduresAccompaniment]="proceduresAccompaniment" - (validateForm)="setValidationsForm($event)" - (updateChoice)="updateChoice($event)" - ></app-structure-digital-helping-accompaniment> -</div> -<div *ngIf="currentStep == structureFormStep.structureDescription"> - <app-structure-description - [structureForm]="structureForm" - (validateForm)="setValidationsForm($event)" - [isEditMode]="isEditMode" - ></app-structure-description> -</div> -<div *ngIf="currentStep == structureFormStep.structureCovidInfo"> - <app-structure-covid-info - [structureForm]="structureForm" - (validateForm)="setValidationsForm($event)" - [isEditMode]="isEditMode" - ></app-structure-covid-info> -</div> -<div *ngIf="currentStep == structureFormStep.structureConsent"> - <app-structure-consent - [structureForm]="structureForm" - [isEditMode]="isEditMode" - (onAcceptOpenData)="acceptOpenData($event)" - (onAcceptDataBeSaved)="acceptDataBeSaved($event)" - ></app-structure-consent> -</div> -<div *ngIf="currentStep == structureFormStep.structureCreationFinishedInfo"> - <app-information-step - [structureForm]="structureForm" - [isEditMode]="isEditMode" - [step]="currentStep" - ></app-information-step> +<div class="no-max-width"> + <ng-container *ngIf="currentStep === structureFormStep.structureChoice"> + <app-profile-structure-choice + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + (createStructure)="goToCreateStructure()" + ></app-profile-structure-choice> + </ng-container> + <ng-container *ngIf="currentStep === structureFormStep.mailSentInfo"> + <app-information-step + [step]="structureFormStep.mailSentInfo" + [structureName]="structureForm.value.structureName" + (goNext)="setValidationsForm()" + ></app-information-step> + </ng-container> + <div *ngIf="currentStep == structureFormStep.structureNameAndAddress"> + <app-structure-name-and-address + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + (addressStructure)="setAddressStructure($event)" + ></app-structure-name-and-address> + </div> + <div *ngIf="currentStep == structureFormStep.structureContact"> + <app-structure-contact + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + ></app-structure-contact> + </div> + <div *ngIf="currentStep == structureFormStep.structureAccompanimentChoice"> + <app-structure-accompaniment-choice + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + (radioChange)="onRadioChange($event)" + ></app-structure-accompaniment-choice> + </div> + <div *ngIf="currentStep == structureFormStep.structureChoiceCompletion"> + <app-structure-choice-completion + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + (radioChange)="onRadioChange($event)" + ></app-structure-choice-completion> + </div> + <div *ngIf="currentStep == structureFormStep.structureContactCompletion"> + <app-structure-contact-completion + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + ></app-structure-contact-completion> + </div> + <div *ngIf="currentStep == structureFormStep.structureType"> + <app-structure-type + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + (typeStructure)="setTypeStructure($event)" + ></app-structure-type> + </div> + <div *ngIf="currentStep == structureFormStep.structureAccessModality"> + <app-structure-access-modality + [structureForm]="structureForm" + [accessModality]="accessModality" + (validateForm)="setValidationsForm()" + (inArray)="isInArray($event)" + (checkChange)="onCheckChange($event)" + ></app-structure-access-modality> + </div> + <div *ngIf="currentStep == structureFormStep.structureHours"> + <app-structure-hours + [structureForm]="structureForm" + [hoursForm]="hoursForm" + (validateForm)="setValidationsForm()" + (hours)="updateHours($event)" + (hoursError)="setHoursError()" + ></app-structure-hours> + </div> + <div *ngIf="currentStep == structureFormStep.structurePmr"> + <app-structure-pmr [structureForm]="structureForm" (radioChange)="onRadioChange($event)"></app-structure-pmr> + </div> + <div *ngIf="currentStep == structureFormStep.structureWebAndSocialNetwork"> + <app-structure-web-and-social-network + [structureForm]="structureForm" + [showWebsite]="showWebsite" + [showSocialNetwork]="showSocialNetwork" + (toggleSocials)="toggleSocialNetwork()" + (toggleWebsite)="toggleWebSite()" + (validateForm)="setValidationsForm()" + > + </app-structure-web-and-social-network> + </div> + <div *ngIf="currentStep == structureFormStep.structurePublicTarget"> + <app-structure-public-target + [structureForm]="structureForm" + [publics]="publics" + (validateForm)="setValidationsForm()" + (updateChoice)="updateChoice($event)" + > + </app-structure-public-target> + </div> + <div *ngIf="currentStep == structureFormStep.structureTrainingType"> + <app-structure-training-type + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + ></app-structure-training-type> + </div> + <div *ngIf="currentStep == structureFormStep.structureTrainingPrice"> + <app-structure-training-price + [structureForm]="structureForm" + (validateForm)="setValidationsForm()" + (radioChange)="onRadioChange($event)" + ></app-structure-training-price> + </div> + <div *ngIf="currentStep == structureFormStep.structureWifi"> + <app-structure-wifi + [structureForm]="structureForm" + [isEditMode]="isEditMode" + [isWifiChoosen]="isWifiChoosen" + (validateForm)="setValidationsForm($event)" + (inArray)="isInArray($event)" + (checkChange)="onCheckChange($event)" + ></app-structure-wifi> + </div> + <div *ngIf="currentStep == structureFormStep.structureEquipments"> + <app-structure-equipments + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + (inArray)="isInArray($event)" + ></app-structure-equipments> + </div> + <div *ngIf="currentStep == structureFormStep.structureLabels"> + <app-structure-labels + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + ></app-structure-labels> + </div> + <div *ngIf="currentStep == structureFormStep.structureOtherServices"> + <app-structure-other-services + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + (inArray)="isInArray($event)" + [isEditMode]="isEditMode" + ></app-structure-other-services> + </div> + <div *ngIf="currentStep == structureFormStep.structureDigitalHelpingAccompaniment"> + <app-structure-digital-helping-accompaniment + [structureForm]="structureForm" + [proceduresAccompaniment]="proceduresAccompaniment" + (validateForm)="setValidationsForm($event)" + (updateChoice)="updateChoice($event)" + ></app-structure-digital-helping-accompaniment> + </div> + <div *ngIf="currentStep == structureFormStep.structureDescription"> + <app-structure-description + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + ></app-structure-description> + </div> + <div *ngIf="currentStep == structureFormStep.structureCovidInfo"> + <app-structure-covid-info + [structureForm]="structureForm" + (validateForm)="setValidationsForm($event)" + [isEditMode]="isEditMode" + ></app-structure-covid-info> + </div> + <div *ngIf="currentStep == structureFormStep.structureConsent"> + <app-structure-consent + [structureForm]="structureForm" + [isEditMode]="isEditMode" + (onAcceptOpenData)="acceptOpenData($event)" + (onAcceptDataBeSaved)="acceptDataBeSaved($event)" + ></app-structure-consent> + </div> + <div *ngIf="currentStep == structureFormStep.structureCreationFinishedInfo" class="no-max-width"> + <app-information-step + [structureForm]="structureForm" + [isEditMode]="isEditMode" + [step]="currentStep" + ></app-information-step> + </div> </div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.scss b/src/app/form/form-view/structure-form/structure-form.component.scss index e69de29bb..e5aaa88a0 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.scss +++ b/src/app/form/form-view/structure-form/structure-form.component.scss @@ -0,0 +1,3 @@ +.no-max-width { + max-width: none; +} -- GitLab From 83df68a0fb7e80549ab9aed8ee9c6a765bed4cba Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Thu, 24 Mar 2022 10:59:37 +0100 Subject: [PATCH 133/199] remove head --- .../information-step.component.html | 71 +++++++++---------- 1 file changed, 32 insertions(+), 39 deletions(-) diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index d850d832d..713032137 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -33,43 +33,36 @@ <span>{{ structureName }}</span> </div> </ng-container> -<<<<<<< HEAD -<ng-container *ngIf="step === structureFormStepEnum.structureCreationFinishedInfo"> +<ng-container + *ngIf="formType === formTypeEnum.structure && step === structureFormStepEnum.structureCreationFinishedInfo" +> <div class="structureCreated no-max-width"> - ======= - <ng-container - *ngIf="formType === formTypeEnum.structure && step === structureFormStepEnum.structureCreationFinishedInfo" - > - <div class="structureCreated"> - >>>>>>> fa187b0c146f6a7541a4156a37f337f56a0e4afe - <h3>La structure est désormais référencée sur Rés’in.</h3> - <svg aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#structureCreated'"></use> - </svg> - <p> - Les prochaines questions concernent les services que vous dispensez en tant qu’intervenant dans cette - structure. - </p> - </div> - </ng-container> - <ng-container - *ngIf="formType === formTypeEnum.personaloffer && step === personalOfferFormStep.personalOfferFinishedInfo" - > - <div class="information-step-container profile-updated no-max-width"> - <h3>Merci, les informations de votre profil ont été mises à jour</h3> - <svg aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#profileUpdated'"></use> - </svg> - <div class="btn"> - <app-button - [style]="buttonTypeEnum.Primary" - [extraClass]="'bigButton'" - [text]="'Voir mon compte'" - [iconType]="'form'" - (action)="nextPage()" - > - </app-button> - </div> - </div> - </ng-container></div -></ng-container> + <h3>La structure est désormais référencée sur Rés’in.</h3> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#structureCreated'"></use> + </svg> + <p> + Les prochaines questions concernent les services que vous dispensez en tant qu’intervenant dans cette structure. + </p> + </div> +</ng-container> +<ng-container + *ngIf="formType === formTypeEnum.personaloffer && step === personalOfferFormStep.personalOfferFinishedInfo" +> + <div class="information-step-container profile-updated no-max-width"> + <h3>Merci, les informations de votre profil ont été mises à jour</h3> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#profileUpdated'"></use> + </svg> + <div class="btn"> + <app-button + [style]="buttonTypeEnum.Primary" + [extraClass]="'bigButton'" + [text]="'Voir mon compte'" + [iconType]="'form'" + (action)="nextPage()" + > + </app-button> + </div> + </div> +</ng-container> -- GitLab From 09711fd14c911914d9615a6fd3183d7bce051f65 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Thu, 24 Mar 2022 11:08:11 +0100 Subject: [PATCH 134/199] fix: index and bad link --- src/app/form/form-view/form-view.component.ts | 2 +- .../structure-list-search.component.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index ca2992c53..256efe16f 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -154,7 +154,7 @@ export class FormViewComponent implements OnInit { } if (formType[this.routeParam] === formType.structure) { this.nbSteps = 24; - this.currentPage = structureFormStep.structureType; + this.currentPage = structureFormStep.structureChoice; this.currentFormType = formType.structure; this.structure = new Structure(); this.createStructureForm(this.structure); diff --git a/src/app/structure-list/components/structure-list-search/structure-list-search.component.html b/src/app/structure-list/components/structure-list-search/structure-list-search.component.html index e06fc7f14..cba1abd7f 100644 --- a/src/app/structure-list/components/structure-list-search/structure-list-search.component.html +++ b/src/app/structure-list/components/structure-list-search/structure-list-search.component.html @@ -85,7 +85,7 @@ [text]="'Filtres'" (action)="openModal(TypeModal.accompaniment)" ></app-button> - <a routerLink="/create-structure" tabindex="0">Ajouter une structure</a> + <a routerLink="/form/structure" tabindex="0">Ajouter une structure</a> </div> </div> <div class="footerSearchSection isntPhoneContent" fxLayout="row" fxLayoutAlign="space-between center"> @@ -120,6 +120,6 @@ </label> </div> </div> --> - <a routerLink="/create-structure" tabindex="0">Ajouter une structure</a> + <a routerLink="/form/structure" tabindex="0">Ajouter une structure</a> </div> </div> -- GitLab From fa88bdafca2c26ddb151e841412d4349edbb46dd Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Thu, 24 Mar 2022 11:33:13 +0100 Subject: [PATCH 135/199] fix: revert merge issue --- .../form/form-view/structure-form/structure-form.component.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 43b17a8d7..bb608bc80 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -11,6 +11,7 @@ [step]="structureFormStep.mailSentInfo" [structureName]="structureForm.value.structureName" (goNext)="setValidationsForm()" + [formType]="formTypeEnum.structure" ></app-information-step> </ng-container> <div *ngIf="currentStep == structureFormStep.structureNameAndAddress"> @@ -175,6 +176,7 @@ [structureForm]="structureForm" [isEditMode]="isEditMode" [step]="currentStep" + [formType]="formTypeEnum.structure" ></app-information-step> </div> </div> -- GitLab From 87a3432fb7aa4c2b32b9c326493672345cd1594c Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 24 Mar 2022 13:13:33 +0100 Subject: [PATCH 136/199] structure type tags --- .../structure-type-picker.component.html | 66 ++++++++----------- .../structure-type-picker.component.scss | 25 +------ .../structure-type-picker.component.ts | 3 + 3 files changed, 32 insertions(+), 62 deletions(-) diff --git a/src/app/shared/components/structure-type-picker/structure-type-picker.component.html b/src/app/shared/components/structure-type-picker/structure-type-picker.component.html index 937635b75..06583e10d 100644 --- a/src/app/shared/components/structure-type-picker/structure-type-picker.component.html +++ b/src/app/shared/components/structure-type-picker/structure-type-picker.component.html @@ -31,19 +31,15 @@ </svg> </div> </div> - <div *ngIf="showPublic" class="inputSection"> - <div class="tags"> - <button - *ngFor="let choice of getChoices(pickedType)" - (click)="pickChoice(choice)" - [ngClass]="{ selectedChoice: choice == pickedChoice }" - > - <svg *ngIf="choice == pickedChoice" class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> - </svg> - {{ getStructureTypeName(choice) }} - </button> - </div> + <div *ngIf="showPublic" class="btn-grid"> + <span *ngFor="let choice of getChoices(pickedType)"> + <app-button + [extraClass]="choice == pickedChoice ? 'selected' : ''" + [style]="buttonTypeEnum.CheckButton" + [text]="getStructureTypeName(choice)" + (action)="pickChoice(choice)" + ></app-button> + </span> </div> </div> </ng-container> @@ -72,19 +68,15 @@ </svg> </div> </div> - <div *ngIf="showPrivate" class="inputSection"> - <div class="tags"> - <button - *ngFor="let choice of getChoices(pickedType)" - (click)="pickChoice(choice)" - [ngClass]="{ selectedChoice: choice == pickedChoice }" - > - <svg *ngIf="choice == pickedChoice" class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> - </svg> - {{ getStructureTypeName(choice) }} - </button> - </div> + <div *ngIf="showPrivate" class="btn-grid"> + <span *ngFor="let choice of getChoices(pickedType)"> + <app-button + [extraClass]="choice == pickedChoice ? 'selected' : ''" + [style]="buttonTypeEnum.CheckButton" + [text]="getStructureTypeName(choice)" + (action)="pickChoice(choice)" + ></app-button> + </span> </div> </div> </ng-container> @@ -113,19 +105,15 @@ </svg> </div> </div> - <div *ngIf="showPrivateLucrative" class="inputSection"> - <div class="tags"> - <button - *ngFor="let choice of getChoices(pickedType)" - (click)="pickChoice(choice)" - [ngClass]="{ selectedChoice: choice == pickedChoice }" - > - <svg *ngIf="choice == pickedChoice" class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> - </svg> - {{ getStructureTypeName(choice) }} - </button> - </div> + <div *ngIf="showPrivateLucrative" class="btn-grid"> + <span *ngFor="let choice of getChoices(pickedType)"> + <app-button + [extraClass]="choice == pickedChoice ? 'selected' : ''" + [style]="buttonTypeEnum.CheckButton" + [text]="getStructureTypeName(choice)" + (action)="pickChoice(choice)" + ></app-button> + </span> </div> </div> </ng-container> diff --git a/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss b/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss index c68835c5c..08db2b920 100644 --- a/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss +++ b/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss @@ -7,24 +7,7 @@ button { outline: none; border: none; } -.tags { - padding: 15px; - width: calc(100% + 2px); - margin-left: -16px; - height: 100%; - button { - background: $grey-8; - text-align: center; - border-radius: 20px; - margin: 4px; - max-width: 100%; - white-space: nowrap; - height: 40px; - padding: 0 28px; - cursor: pointer; - @include lato-bold-14; - } -} + .selectedChoice { background: $green-1 !important; color: $white; @@ -106,12 +89,8 @@ svg { } } } - .inputSection { + .btn-grid { padding: 0px 15px 19px 12px; - svg { - border-right: 0; - padding-left: 16px; - } } .collapseHeader { .titleCollapse { diff --git a/src/app/shared/components/structure-type-picker/structure-type-picker.component.ts b/src/app/shared/components/structure-type-picker/structure-type-picker.component.ts index 31d97f35d..6013c6343 100644 --- a/src/app/shared/components/structure-type-picker/structure-type-picker.component.ts +++ b/src/app/shared/components/structure-type-picker/structure-type-picker.component.ts @@ -3,6 +3,7 @@ import { StructureType } from '../../../models/structure-type.model'; import { Structure } from '../../../models/structure.model'; import { StructureTypeService } from '../../../services/structure-type.service'; import { typeStructureEnum } from '../../enum/typeStructure.enum'; +import { ButtonType } from '../button/buttonType.enum'; export enum structureTypes { public = 'Publique', @@ -26,6 +27,8 @@ export class StructureTypePickerComponent implements OnInit { public showPrivate: boolean; public showPrivateLucrative: boolean; + public buttonTypeEnum = ButtonType; + constructor(private structureTypeService: StructureTypeService) {} ngOnInit() { -- GitLab From f1cc90ac840e4deac02e1a256545d3df7e2c3624 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Thu, 24 Mar 2022 13:24:53 +0100 Subject: [PATCH 137/199] feat: add new screen for structure-form --- .../information-step.component.html | 19 ++++++++++ .../information-step.component.scss | 35 +++++++++++++++++++ .../structure-form.component.html | 8 +++++ .../structure-form.component.ts | 3 +- .../structure-form/structureFormStep.enum.ts | 1 + src/assets/form/sprite.svg | 7 ++++ 6 files changed, 72 insertions(+), 1 deletion(-) diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 713032137..127bc40de 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -33,6 +33,25 @@ <span>{{ structureName }}</span> </div> </ng-container> +<ng-container *ngIf="formType === formTypeEnum.structure && step === structureFormStepEnum.structureFormTime"> + <div class="information-step-container structure-time no-max-width"> + <h3> + Nous vous proposons de prendre 10 minutes afin de renseigner les informations de la structure et la créer sur + Rés’in. + </h3> + <svg aria-hidden="true"> + <use [attr.xlink:href]="'assets/form/sprite.svg#formTime'"></use> + </svg> + <p>Informations dont il faut vous munir :</p> + <ul> + <li>les coordonnées de la structure</li> + + <li>les horaires d’ouverture</li> + + <li>la liste des formations dispensées dans la structure (optionnel)</li> + </ul> + </div> +</ng-container> <ng-container *ngIf="formType === formTypeEnum.structure && step === structureFormStepEnum.structureCreationFinishedInfo" > diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.scss b/src/app/form/form-view/global-components/information-step/information-step.component.scss index 110a4b1e2..7e5a39408 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.scss +++ b/src/app/form/form-view/global-components/information-step/information-step.component.scss @@ -1,4 +1,5 @@ @import '../../../../../assets/scss/typography'; +@import '../../../../../assets/scss/color'; .no-max-width { max-width: none; } @@ -54,6 +55,40 @@ max-width: 180px; } } + &.structure-time { + height: unset; + max-width: unset; + h3 { + @include lato-bold-24; + text-align: center; + } + + p { + @include lato-bold-18; + margin: 0; + width: 100%; + text-align: left; + } + ul { + width: 100%; + list-style: none; + padding: 0; + } + li { + @include lato-regular-18; + } + ul li::before { + content: '\2022'; + color: $red; + margin-right: 12px; + } + svg { + width: 100%; + height: 150px; + max-width: 150px; + margin-bottom: 24px; + } + } &.profile-updated { .btn { margin-top: 17px; diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index bb608bc80..5d92097d2 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -6,6 +6,14 @@ (createStructure)="goToCreateStructure()" ></app-profile-structure-choice> </ng-container> + <ng-container *ngIf="currentStep === structureFormStep.structureFormTime" class="no-max-width"> + <app-information-step + [step]="structureFormStep.structureFormTime" + [structureName]="structureForm.value.structureName" + (goNext)="setValidationsForm()" + [formType]="formTypeEnum.structure" + ></app-information-step> + </ng-container> <ng-container *ngIf="currentStep === structureFormStep.mailSentInfo"> <app-information-step [step]="structureFormStep.mailSentInfo" diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 14719cf6c..9d14cfa70 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -61,7 +61,8 @@ export class StructureFormComponent implements OnChanges { this.currentStep === structureFormStep.structureOtherServices || this.currentStep === structureFormStep.structureDescription || this.currentStep === structureFormStep.structureCovidInfo || - this.currentStep === structureFormStep.mailSentInfo + this.currentStep === structureFormStep.mailSentInfo || + this.currentStep === structureFormStep.structureFormTime ) { this.pageValid.emit(); } diff --git a/src/app/form/form-view/structure-form/structureFormStep.enum.ts b/src/app/form/form-view/structure-form/structureFormStep.enum.ts index 5573fceb4..288acebeb 100644 --- a/src/app/form/form-view/structure-form/structureFormStep.enum.ts +++ b/src/app/form/form-view/structure-form/structureFormStep.enum.ts @@ -4,6 +4,7 @@ export enum structureFormStep { structureContact, structureAccompanimentChoice, structureChoiceCompletion, + structureFormTime, structureContactCompletion, structureType, structureAccessModality, diff --git a/src/assets/form/sprite.svg b/src/assets/form/sprite.svg index 88550ebb8..6466afcd1 100644 --- a/src/assets/form/sprite.svg +++ b/src/assets/form/sprite.svg @@ -426,6 +426,13 @@ <path stroke="none" d="M13.083 17.458H10a.77.77 0 010-1.541h3.083a.77.77 0 110 1.541z" fill="#FAFAFA"></path> </symbol> +<symbol id="formTime" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="89.4997" cy="89.5" r="67.2273" fill="#EAF8FB" stroke="#348899" stroke-width="12"/> +<path opacity="0.35" d="M91.5 40C91.5 38.8954 90.6046 38 89.5 38C88.3954 38 87.5 38.8954 87.5 40H91.5ZM89.5 89.5H87.5C87.5 90.1511 87.817 90.7615 88.3496 91.1361L89.5 89.5ZM120.35 113.636C121.253 114.271 122.501 114.054 123.136 113.15C123.771 112.247 123.554 110.999 122.65 110.364L120.35 113.636ZM87.5 40V89.5H91.5V40H87.5ZM88.3496 91.1361L120.35 113.636L122.65 110.364L90.6504 87.8639L88.3496 91.1361Z" fill="#F35453"/> +<path d="M79.7677 103.84V110H56.9427V103.84H64.6427V83.6275C64.6427 83.1142 64.6519 82.6008 64.6702 82.0875C64.6886 81.5558 64.7161 81.0242 64.7527 80.4925L60.1877 84.2875C59.7844 84.5992 59.3811 84.7917 58.9777 84.865C58.5927 84.92 58.2261 84.92 57.8777 84.865C57.5294 84.7917 57.2177 84.6725 56.9427 84.5075C56.6677 84.3242 56.4661 84.1408 56.3377 83.9575L53.6427 80.3825L66.1277 69.905H73.1677V103.84H79.7677ZM113.57 89.9525C113.57 93.4542 113.194 96.4883 112.442 99.055C111.69 101.622 110.645 103.748 109.307 105.435C107.987 107.122 106.41 108.377 104.577 109.202C102.762 110.028 100.791 110.44 98.6645 110.44C96.5379 110.44 94.567 110.028 92.752 109.202C90.9554 108.377 89.397 107.122 88.077 105.435C86.757 103.748 85.7212 101.622 84.9695 99.055C84.2362 96.4883 83.8695 93.4542 83.8695 89.9525C83.8695 86.4508 84.2362 83.4167 84.9695 80.85C85.7212 78.2833 86.757 76.1567 88.077 74.47C89.397 72.7833 90.9554 71.5367 92.752 70.73C94.567 69.905 96.5379 69.4925 98.6645 69.4925C100.791 69.4925 102.762 69.905 104.577 70.73C106.41 71.5367 107.987 72.7833 109.307 74.47C110.645 76.1567 111.69 78.2833 112.442 80.85C113.194 83.4167 113.57 86.4508 113.57 89.9525ZM104.77 89.9525C104.77 87.1842 104.595 84.92 104.247 83.16C103.899 81.3817 103.431 79.9883 102.845 78.98C102.276 77.9717 101.625 77.2842 100.892 76.9175C100.159 76.5325 99.4162 76.34 98.6645 76.34C97.9129 76.34 97.1704 76.5325 96.437 76.9175C95.722 77.2842 95.0804 77.9717 94.512 78.98C93.962 79.9883 93.5129 81.3817 93.1645 83.16C92.8345 84.92 92.6695 87.1842 92.6695 89.9525C92.6695 92.7392 92.8345 95.0125 93.1645 96.7725C93.5129 98.5325 93.962 99.9258 94.512 100.952C95.0804 101.961 95.722 102.657 96.437 103.042C97.1704 103.409 97.9129 103.592 98.6645 103.592C99.4162 103.592 100.159 103.409 100.892 103.042C101.625 102.657 102.276 101.961 102.845 100.952C103.431 99.9258 103.899 98.5325 104.247 96.7725C104.595 95.0125 104.77 92.7392 104.77 89.9525ZM123.309 67.2925C124.299 68.8692 124.968 70.4917 125.316 72.16C125.665 73.8283 125.683 75.4783 125.371 77.11C125.078 78.7233 124.464 80.2725 123.529 81.7575C122.594 83.2425 121.347 84.59 119.789 85.8L117.094 84.205C116.855 84.0767 116.69 83.9208 116.599 83.7375C116.507 83.5358 116.461 83.3433 116.461 83.16C116.48 82.9583 116.525 82.775 116.599 82.61C116.69 82.4267 116.8 82.2708 116.929 82.1425C117.13 81.9225 117.35 81.62 117.589 81.235C117.827 80.85 118.047 80.4008 118.249 79.8875C118.45 79.3742 118.606 78.815 118.716 78.21C118.845 77.5867 118.89 76.9358 118.854 76.2575C118.817 75.5608 118.689 74.8458 118.469 74.1125C118.249 73.3608 117.891 72.6 117.396 71.83C116.993 71.1883 116.883 70.6383 117.066 70.18C117.268 69.7217 117.644 69.3917 118.194 69.19L123.309 67.2925Z" fill="#DA3635"/> +</symbol> + + <symbol id="handicap" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M14.6842 7.66864C16.614 7.66864 18.1784 6.06389 18.1784 4.08432C18.1784 2.10475 16.614 0.5 14.6842 0.5C12.7545 0.5 11.1901 2.10475 11.1901 4.08432C11.1901 6.06389 12.7545 7.66864 14.6842 7.66864Z" fill="#348899"/> <path stroke="none" d="M11.0934 16.9949C10.829 17.0917 10.5701 17.202 10.3177 17.3252C7.53826 18.6817 5.55162 21.5888 5.42994 25.0418C5.25658 29.9618 8.92462 34.0264 13.5426 34.1976C17.3702 34.3395 20.7328 31.7703 21.8737 28.0773L26.3538 29.5417C24.6038 35.2066 19.4074 39.2554 13.3723 39.0317C6.09047 38.7617 0.467055 32.3856 0.731958 24.8677C0.918664 19.5689 3.97543 15.0672 8.30382 12.9548C8.69872 12.7621 9.10428 12.5891 9.51938 12.4373L11.0934 16.9949Z" fill="#333333"/> -- GitLab From dbed885c0bf2d9601bfbd92ef42914d467a99e56 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 24 Mar 2022 13:25:26 +0100 Subject: [PATCH 138/199] structure labels gap --- .../structure-labels/structure-labels.component.html | 8 +------- .../structure-labels/structure-labels.component.scss | 4 ++-- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html index 0c265692f..523e55454 100644 --- a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html @@ -3,13 +3,7 @@ <h3>La structure est labellisée ?</h3> <p class="notRequired">Facultatif</p> </div> - <div - class="labelsQualifications" - *ngIf="labelsQualifications" - fxLayout="row wrap" - fxLayoutAlign="flex-start" - fxLayoutGap="10px" - > + <div class="labelsQualifications" *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutAlign="flex-start"> <app-checkbox-form *ngFor="let module of labelsQualifications.modules" [isChecked]="isInArray(module.id, labelsQualifications.id)" diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss index 72bea5b44..d1246f6aa 100644 --- a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.scss @@ -1,3 +1,3 @@ -.labelStep { - max-width: 800px; +.labelsQualifications { + gap: 0 8px; } -- GitLab From 8a2253e54983d8405e2a2e456052a80f14c171ba Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 24 Mar 2022 13:37:57 +0100 Subject: [PATCH 139/199] structure other services gap --- .../structure-other-services.component.html | 2 +- .../structure-other-services.component.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html index 32e2fba3e..8e26941b3 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html @@ -3,7 +3,7 @@ <h3>Quels autres services sont proposées par la structure ?</h3> <p class="notRequired">Facultatif</p> </div> - <div *ngIf="otherServices" fxLayout="column wrap" fxLayoutGap="5px" fxLayoutAlign="flex-start" class="otherServices"> + <div *ngIf="otherServices" fxLayout="column wrap" fxLayoutAlign="flex-start" class="otherServices"> <ng-container *ngFor="let module of otherServices.modules"> <app-checkbox-form *ngIf=" diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts index 424fbff4d..f45e03b41 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts @@ -19,6 +19,7 @@ export class StructureOtherServicesComponent implements OnInit { constructor(private searchService: SearchService) {} async ngOnInit(): Promise<void> { + this.validateForm.emit(); const equipmentsCategs = await this.searchService.getCategoriesMoreFilters().toPromise(); equipmentsCategs.forEach((categ) => { if (categ.id === CategoryEnum.equipmentsAndServices) { -- GitLab From 0570ff6d0150ded0b713e4d96839267ff25a3de5 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Thu, 24 Mar 2022 13:44:55 +0100 Subject: [PATCH 140/199] fix navigation structure --- .../form/footer-form/footer-form.component.ts | 20 +++++++++++++++++-- .../form/form-view/form-view.component.html | 1 + src/app/form/form-view/form-view.component.ts | 3 +++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 0cc80b3c6..0c04679b4 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -36,6 +36,8 @@ export class FooterFormComponent implements OnChanges { @Output() goPrev = new EventEmitter<any>(); @Output() endPage = new EventEmitter<any>(); @Output() endForm = new EventEmitter<any>(); + @Output() changeCurrentStep = new EventEmitter<any>(); + public isLastFormStep: boolean = false; public isNextFormTransition: boolean = false; public buttonTypeEnum = ButtonType; @@ -60,7 +62,6 @@ export class FooterFormComponent implements OnChanges { this.currentForm === formType.structure && this.currentStep === structureFormStep.structureCreationFinishedInfo ) { - console.log('form', this.form); this.isLastFormStep = true; } if ( @@ -99,12 +100,27 @@ export class FooterFormComponent implements OnChanges { this.endForm.emit({ formType: this.currentForm }); } if (this.currentForm === formType.structure) { + if (this.currentStep === structureFormStep.structureChoiceCompletion) { + const chooseCompleteStructInfo = this.form.get('choiceCompletion').value; + if (!chooseCompleteStructInfo) { + this.changeCurrentStep.emit(structureFormStep.structureContactCompletion); + return; + } + } + if (this.currentStep === structureFormStep.structureFormTime) { + this.changeCurrentStep.emit(structureFormStep.structureType); + return; + } + if (this.currentStep === structureFormStep.structureContactCompletion) { + //TODO Go to send mail page and send the mail + return; + } if (this.currentStep === structureFormStep.structureConsent) { const user: User = await this.profileService.getProfile(); this.structureService.createStructure(this.form.value, user).subscribe(() => {}); } if (this.currentStep === structureFormStep.structureCreationFinishedInfo) { - console.log('form', this.form.value); + // this.router.navigateByUrl(`/acteurs?id=6001a3b116b08100062e4167`); return; } } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index c4ecae2bc..59dce440d 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -61,5 +61,6 @@ (goNext)="nextPage()" (goPrev)="prevPage()" (endForm)="endForm($event)" + (changeCurrentStep)="setCurrentStep($event)" ></app-footer-form> </div> diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 256efe16f..8a82647bb 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -438,4 +438,7 @@ export class FormViewComponent implements OnInit { this.router.navigateByUrl(`acteurs?id=${this.structure._id}`); }); } + public setCurrentStep(step: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep): void { + this.currentPage = step; + } } -- GitLab From 5cebd8f8fafca0022bdfb81029248d9e04416481 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Thu, 24 Mar 2022 13:51:26 +0100 Subject: [PATCH 141/199] feat: review router --- .../form/footer-form/footer-form.component.ts | 17 ++++++++--------- src/app/form/form-view/form-view.component.html | 3 ++- src/app/form/form-view/form-view.component.ts | 17 ++++++++++------- .../structure-form/structure-form.component.ts | 1 + 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 0c04679b4..86eeb370d 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -1,7 +1,6 @@ -import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { Router } from '@angular/router'; -import { first } from 'rxjs/operators'; import { User } from '../../models/user.model'; import { ProfileService } from '../../profile/services/profile.service'; import { AuthService } from '../../services/auth.service'; @@ -32,6 +31,7 @@ export class FooterFormComponent implements OnChanges { @Input() linkedStructureId: Array<string> = null; @Input() acceptNewsletter: boolean; @Input() currentStep: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep; + @Input() hasOtherPersonalOffer: boolean; @Output() goNext = new EventEmitter<any>(); @Output() goPrev = new EventEmitter<any>(); @Output() endPage = new EventEmitter<any>(); @@ -58,15 +58,10 @@ export class FooterFormComponent implements OnChanges { if (this.currentStep === accountFormStep.confirmEmailSentInfo && this.currentForm === formType.account) { this.isLastFormStep = true; } - if ( - this.currentForm === formType.structure && - this.currentStep === structureFormStep.structureCreationFinishedInfo - ) { - this.isLastFormStep = true; - } if ( this.currentForm === formType.personaloffer && - this.currentStep === personalOfferFormStep.personalOfferFinishedInfo + this.currentStep === personalOfferFormStep.personalOfferFinishedInfo && + !this.hasOtherPersonalOffer ) { this.isNextFormTransition = true; } @@ -98,6 +93,7 @@ export class FooterFormComponent implements OnChanges { } if (this.isProfileLastPage()) { this.endForm.emit({ formType: this.currentForm }); + return; } if (this.currentForm === formType.structure) { if (this.currentStep === structureFormStep.structureChoiceCompletion) { @@ -126,12 +122,15 @@ export class FooterFormComponent implements OnChanges { } if (this.isPersonalOfferpage()) { this.endForm.emit({ formType: this.currentForm }); + return; } if (this.isStructureChoiceValid()) { this.endForm.emit({ formType: this.currentForm, formStep: this.currentStep }); + return; } if (this.isStructureLastPage()) { this.endForm.emit({ formType: this.currentForm, formStep: this.currentStep }); + return; } this.goToNextPage(); } diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index 59dce440d..ab8e2c7e4 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -45,7 +45,7 @@ [personalOfferForm]="personalOfferForm" [currentStep]="currentPage" [structureName]="structure.structureName" - (setHasOtherOffer)="setHasOtherOffer($event)" + (setHasOtherOffer)="setHasOtherPersonalOffer($event)" (pageValid)="validatePage($event)" ></app-personal-offer-form> </ng-container> @@ -58,6 +58,7 @@ [btnName]="['Précédent', 'Suivant']" [isValid]="isPageValid" [acceptNewsletter]="userAcceptNewsletter" + [hasOtherPersonalOffer]="hasOtherPersonalOffer" (goNext)="nextPage()" (goPrev)="prevPage()" (endForm)="endForm($event)" diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 8a82647bb..dda87e19b 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -47,7 +47,7 @@ export class FormViewComponent implements OnInit { // Personal Offers Form public personalOfferForm: FormGroup; - public hasOtherOffer: boolean = false; + public hasOtherPersonalOffer: boolean = false; // Page and progress var public pagesValidation = []; @@ -338,6 +338,7 @@ export class FormViewComponent implements OnInit { } public nextPage(): void { + console.log('ICI'); this.isPageValid = false; if (this.currentPage < this.nbSteps) { this.currentPage++; @@ -354,8 +355,8 @@ export class FormViewComponent implements OnInit { return true; } - public setHasOtherOffer(flag: boolean): void { - this.hasOtherOffer = flag; + public setHasOtherPersonalOffer(flag: boolean): void { + this.hasOtherPersonalOffer = flag; } public linkStructureToUser(): void { @@ -426,16 +427,18 @@ export class FormViewComponent implements OnInit { public savePersonalOfferForm(): void { this.personalOfferService.createPersonalOffer(this.structure._id, this.personalOfferForm.value).subscribe(() => { - if (this.hasOtherOffer) { + if (this.hasOtherPersonalOffer) { this.router.navigateByUrl('form/structure'); - } else { - //TODO } }); } public saveStructureForm(): void { this.structureService.createStructure(this.structureForm.value, this.profile).subscribe(() => { - this.router.navigateByUrl(`acteurs?id=${this.structure._id}`); + if (this.profileForm.value.job.hasPersonalOffer) { + this.router.navigateByUrl('form/personaloffer'); + } else { + this.router.navigateByUrl(`acteurs?id=${this.structure._id}`); + } }); } public setCurrentStep(step: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep): void { diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 9d14cfa70..1864a1b3f 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -54,6 +54,7 @@ export class StructureFormComponent implements OnChanges { if (changes.currentStep) { //facultative steps if ( + this.currentStep === structureFormStep.structureCreationFinishedInfo || this.currentStep === structureFormStep.structureHours || this.currentStep === structureFormStep.structureTrainingType || this.currentStep === structureFormStep.structureEquipments || -- GitLab From 4cc9579d6e03c263b53ab0c3ac006e972d2af37d Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 24 Mar 2022 16:55:35 +0100 Subject: [PATCH 142/199] structure equipments simplified and input aligned right --- .../structure-equipments.component.scss | 1 + .../structure-equipments.component.ts | 13 ++----------- .../structure-form/structure-form.component.html | 1 + 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss index 54bca3545..375b13de8 100644 --- a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss @@ -31,6 +31,7 @@ input { width: 56px; margin: 0 6px; + text-align: right; } input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts index d37984d28..465427857 100644 --- a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts @@ -1,8 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { AbstractControl, FormGroup } from '@angular/forms'; -import { Structure } from '../../../../models/structure.model'; import { Module } from '../../../../structure-list/models/module.model'; -import { SearchService } from '../../../../structure-list/services/search.service'; @Component({ selector: 'app-structure-equipments', @@ -12,18 +10,11 @@ import { SearchService } from '../../../../structure-list/services/search.servic export class StructureEquipmentsComponent implements OnInit { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; + @Input() equipmentsAndServices: { module: Module; openned: boolean }[]; @Output() validateForm = new EventEmitter<any>(); - public equipmentsAndServices: { module: Module; openned: boolean }[] = []; - - constructor(private searchService: SearchService) {} async ngOnInit(): Promise<void> { - const equipmentsCategs = await this.searchService.getCategoriesMoreFilters().toPromise(); - equipmentsCategs.forEach((categ) => { - categ.modules.forEach((c) => { - this.equipmentsAndServices.push({ module: c, openned: false }); - }); - }); + this.validateForm.emit(); } public getStructureControl(nameControl: string): AbstractControl { return this.structureForm.get(nameControl); diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 5d92097d2..aa2447d4f 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -129,6 +129,7 @@ <div *ngIf="currentStep == structureFormStep.structureEquipments"> <app-structure-equipments [structureForm]="structureForm" + [equipmentsAndServices]="equipmentsAndServices" (validateForm)="setValidationsForm($event)" [isEditMode]="isEditMode" (inArray)="isInArray($event)" -- GitLab From 4c048d5e7a286acacd170f0eaaf7349394844649 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Thu, 24 Mar 2022 16:59:35 +0100 Subject: [PATCH 143/199] fix: fix account type on info-step --- src/app/form/form-view/account-form/account-form.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/account-form/account-form.component.html b/src/app/form/form-view/account-form/account-form.component.html index 170f966d1..29570fc9f 100644 --- a/src/app/form/form-view/account-form/account-form.component.html +++ b/src/app/form/form-view/account-form/account-form.component.html @@ -25,7 +25,7 @@ <ng-container *ngIf="currentStep === accountFormStepEnum.confirmEmailSentInfo"> <app-information-step [step]="accountFormStepEnum.confirmEmailSentInfo" - [formType]="formType" + [formType]="formType.account" ></app-information-step> </ng-container> </div> -- GitLab From 28efb5ccc32c91ecc346bb6ff2ce319d67cbae0c Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 24 Mar 2022 17:08:13 +0100 Subject: [PATCH 144/199] equipment disabled class --- .../structure-equipments/structure-equipments.component.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss index 375b13de8..1df7195fb 100644 --- a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss @@ -1,6 +1,7 @@ @import '../../../../../assets/scss/typography'; @import '../../../../../assets/scss/color'; @import '../../../../../assets/scss/breakpoint'; + //section equipments controller .controller { border: 1px solid $grey-5; @@ -27,6 +28,10 @@ background-color: $grey-8; border-radius: 50%; cursor: pointer; + &.hide.disabled { + opacity: 0.4; + cursor: not-allowed; + } } input { width: 56px; -- GitLab From e342998cf8a6a98139ce1c9ac7f206a97c921a30 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 24 Mar 2022 17:13:24 +0100 Subject: [PATCH 145/199] typo --- .../structure-contact-completion.component.html | 2 +- .../structure-other-services.component.html | 2 +- .../structure-web-and-social-network.component.html | 2 +- .../address-autocomplete/address-autocomplete.component.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html index f7ecb28a9..53d0a92ed 100644 --- a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html @@ -1,7 +1,7 @@ <form [formGroup]="structureForm" *ngIf="structureForm" (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null"> <div class="title"> <h3>Quelle personne pourrait connaître ces informations ?</h3> - <p>Informations demandées : téléphone, email, accéssibilité PMR, type de public...</p> + <p>Informations demandées : téléphone, email, accessibilité PMR, type de public...</p> </div> <div class="form-group" fxLayout="column"> diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html index 8e26941b3..c953731ae 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html @@ -1,6 +1,6 @@ <form [formGroup]="structureForm" (keyup.enter)="(!isEditMode ? '' : null)"> <div class="title"> - <h3>Quels autres services sont proposées par la structure ?</h3> + <h3>Quels autres services sont proposés par la structure ?</h3> <p class="notRequired">Facultatif</p> </div> <div *ngIf="otherServices" fxLayout="column wrap" fxLayoutAlign="flex-start" class="otherServices"> diff --git a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html index 9f6482896..a71fe34c3 100644 --- a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html +++ b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.html @@ -25,7 +25,7 @@ <div fxLayout="row" fxLayoutGap="7px"> <input type="text" - placeholder="www.resin.grandlyon.com" + placeholder="resin.grandlyon.com" (input)="setValidationsForm()" formControlName="website" class="form-input" diff --git a/src/app/shared/components/address-autocomplete/address-autocomplete.component.html b/src/app/shared/components/address-autocomplete/address-autocomplete.component.html index c107fc916..682bbc7e0 100644 --- a/src/app/shared/components/address-autocomplete/address-autocomplete.component.html +++ b/src/app/shared/components/address-autocomplete/address-autocomplete.component.html @@ -3,7 +3,7 @@ <input id="search-address" type="text" - placeholder="ex: 20 rue du lac, Lyon" + placeholder="Exemple : 20 rue du lac, Lyon" (input)="onSearchChange($event.target.value)" class="form-input" autocomplete="off" -- GitLab From 664efe5d020aae6388aefc7772538a0f4f2f368b Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 24 Mar 2022 17:24:26 +0100 Subject: [PATCH 146/199] address css --- .../address-autocomplete.component.scss | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss b/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss index f1bcd5b25..84851a020 100644 --- a/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss +++ b/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss @@ -1,22 +1,26 @@ @import '../../../../assets/scss/color'; +input#search-address { + width: 400px; +} + .search-bar { display: flex; flex-direction: column; - * { - width: 400px; - } } .autocomplete-items { border: 0.0625rem solid #d4d4d4; box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.25); + box-sizing: border-box; border-top: none; border-bottom: none; z-index: 99; background-color: #fff; cursor: pointer; + width: 400px; max-height: 250px; overflow: auto; + padding-left: 16px; } .autocomplete-item { margin: 0; -- GitLab From 8bbe3a1563bc8e0365925e2c116d00188fcf5e04 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Thu, 24 Mar 2022 17:26:35 +0100 Subject: [PATCH 147/199] typo --- .../structure-training-price.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html index 3974d0557..8c075bd19 100644 --- a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html +++ b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.html @@ -1,6 +1,6 @@ <form [formGroup]="structureForm"> <div class="title"> - <h3>Ces ateliers sont-ils gratuits ?</h3> + <h3>Ces formations sont-elles gratuites ?</h3> </div> <app-radio-form [selectedOption]="getStructureControl('freeWorkShop').value" -- GitLab From 464f8536aa0d2d022c3e1904f0d002d5143db04b Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Fri, 25 Mar 2022 09:43:52 +0100 Subject: [PATCH 148/199] fix: broken changes --- .../form/form-view/structure-form/structure-form.component.ts | 2 +- .../structure-labels/structure-labels.component.ts | 2 +- .../structure-other-services.component.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 1864a1b3f..d4a956598 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -251,7 +251,7 @@ export class StructureFormComponent implements OnChanges { this.searchService.getCategoriesAccompaniment().subscribe((categories: Category[]) => { this.proceduresAccompaniment = categories[0]; }); - const equipmentsCategs = await this.searchService.getCategoriesMoreFilters().toPromise(); + const equipmentsCategs = await this.searchService.getCategoriesOthers().toPromise(); equipmentsCategs.forEach((categ) => { switch (categ.id) { case CategoryEnum.accessModality: { diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts index d639026f3..bbf6073cb 100644 --- a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts @@ -18,7 +18,7 @@ export class StructureLabelsComponent implements OnInit { constructor(private searchService: SearchService) {} async ngOnInit(): Promise<void> { - const equipmentsCategs = await this.searchService.getCategoriesMoreFilters().toPromise(); + const equipmentsCategs = await this.searchService.getCategoriesOthers().toPromise(); equipmentsCategs.forEach((categ) => { if (categ.id === CategoryEnum.labelsQualifications) { this.labelsQualifications = categ; diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts index f45e03b41..ee4244ef3 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts @@ -20,7 +20,7 @@ export class StructureOtherServicesComponent implements OnInit { async ngOnInit(): Promise<void> { this.validateForm.emit(); - const equipmentsCategs = await this.searchService.getCategoriesMoreFilters().toPromise(); + const equipmentsCategs = await this.searchService.getCategoriesOthers().toPromise(); equipmentsCategs.forEach((categ) => { if (categ.id === CategoryEnum.equipmentsAndServices) { this.otherServices = categ; -- GitLab From e212caa2ab53ad1f08b21996c7c54f6029d351c4 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 11:14:09 +0100 Subject: [PATCH 149/199] account css --- .../account-credentials.component.html | 25 ++++++++-------- .../account-credentials.component.scss | 29 +++++++++++++++++-- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html index eed6365da..706563e9b 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html @@ -41,8 +41,9 @@ <p class="special" [ngClass]="{ invalid: accountForm.get('password').invalid && accountForm.get('password').value }" - ></p> - <span class="passwordInfo">Le mot de passe doit contenir au minimum</span> + > + Le mot de passe doit contenir au minimum + </p> <ul> <li fxLayout="row" @@ -56,13 +57,13 @@ > <app-svg-icon *ngIf="accountForm.get('password').value.length >= 8" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="accountForm.get('password').value.length < 8" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -79,13 +80,13 @@ > <app-svg-icon *ngIf="checkIfPasswordHasSpecialChar(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="!checkIfPasswordHasSpecialChar(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -102,13 +103,13 @@ > <app-svg-icon *ngIf="checkIfPasswordHasLowerCase(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="!checkIfPasswordHasLowerCase(accountForm.get('password').value); s" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -125,13 +126,13 @@ > <app-svg-icon *ngIf="checkIfPasswordHasUpperCase(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="!checkIfPasswordHasUpperCase(accountForm.get('password').value); s" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -148,13 +149,13 @@ > <app-svg-icon *ngIf="checkIfPasswordHasDigit(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="!checkIfPasswordHasDigit(accountForm.get('password').value)" - [iconClass]="'validation-small'" + [iconClass]="'icon-16'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss index d2c25e18e..c600ea062 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss @@ -1,6 +1,31 @@ +@import '../../../../../assets/scss/color'; +@import '../../../../../assets/scss/typography'; + +p.special { + @include lato-regular-14; + color: $grey-3; + margin-top: 4px; + width: 280px; +} + ul { - padding: 0; + padding-left: 0; + margin: 0 0 8px 8px; li { - height: 30px; + display: flex; + margin: 7px 0 0 0; + font-size: small; + align-items: center; + p { + margin-top: unset; + margin-bottom: 0; + @include lato-regular-14; + } + &.valid { + color: $green; + } + &.invalid { + color: $orange-warning; + } } } -- GitLab From ac12929633b69fba33efeb6e2b2a3212331e5d06 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 11:26:28 +0100 Subject: [PATCH 150/199] btn secondary --- src/app/shared/components/button/button.component.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index d7a0d8420..1602fc38e 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -100,7 +100,7 @@ button { background: $white; border: 1px solid $grey-1; color: $grey-1; - font-size: 12px; + font-size: 14px; // @include btn-regular; &.withIcon { color: $grey-1; -- GitLab From a71fa513f63fe39ed3a95080f668d6a96e85b91e Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 11:26:38 +0100 Subject: [PATCH 151/199] employer selection --- .../profile-employer-selection.component.html | 2 +- .../profile-employer-selection.component.scss | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html index 8c44ffea1..0e5cb2e32 100644 --- a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.html @@ -1,6 +1,6 @@ <form [formGroup]="profileForm"> <div class="title"> - <h2>Qui vous emploie ?</h2> + <h3>Qui vous emploie ?</h3> <p>L’employeur demandé est celui qui figure sur votre fiche de paie (ou fiche de poste)</p> </div> <div class="search-structure"> diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss index d72dbd3db..0f00ce2e6 100644 --- a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss @@ -10,7 +10,6 @@ .search { width: 380px; border-radius: 20px; - padding: 0px 0px 0px 8px; margin: 4px 0px; .search-input { -- GitLab From 4eaa66b45a470a857b751c9ff1fe979d65f68cc0 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 11:29:33 +0100 Subject: [PATCH 152/199] job selection --- .../profile-job-selection/profile-job-selection.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html index 952f5d7f4..7bf4a9e30 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.html @@ -1,6 +1,6 @@ <form [formGroup]="profileForm"> <div class="title"> - <h2>Quelle est votre fonction ?</h2> + <h3>Quelle est votre fonction ?</h3> <p>Cette information sera visible sur votre profil public</p> </div> <div fxLayout="column" fxLayoutGap="32px"> -- GitLab From c5caecf9afa0e32282d1840e0aa0c57822c61108 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Fri, 25 Mar 2022 11:40:04 +0100 Subject: [PATCH 153/199] feat: add form profile handling after user account validation --- src/app/app-routing.module.ts | 11 +- src/app/app.module.ts | 2 - src/app/login/login.component.html | 5 +- src/app/login/login.component.scss | 3 +- src/app/login/login.component.ts | 80 +++++++++++++- .../user-verification.component.html | 74 ------------- .../user-verification.component.scss | 104 ------------------ .../user-verification.component.spec.ts | 27 ----- .../user-verification.component.ts | 65 ----------- 9 files changed, 90 insertions(+), 281 deletions(-) delete mode 100644 src/app/user-verification/user-verification.component.html delete mode 100644 src/app/user-verification/user-verification.component.scss delete mode 100644 src/app/user-verification/user-verification.component.spec.ts delete mode 100644 src/app/user-verification/user-verification.component.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 724fc85a5..7bc8c50b9 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -14,7 +14,6 @@ import { TempUserResolver } from './resolvers/temp-user.resolver'; import { StructureJoinComponent } from './structure-join/structure-join.component'; import { StructureDetailsComponent } from './structure-list/components/structure-details/structure-details.component'; import { StructureListComponent } from './structure-list/structure-list.component'; -import { UserVerificationComponent } from './user-verification/user-verification.component'; import { NewsletterSubscriptionComponent } from './newsletter-subscription/newsletter-subscription.component'; import { OrientationFormComponent } from './form/orientation-form/orientation-form.component'; import { StructureListPrintComponent } from './form/orientation-form/component/structure-list-print/structure-list-print.component'; @@ -58,7 +57,13 @@ const routes: Routes = [ }, { path: 'login', - component: LoginComponent, + children: [ + { + path: '', + component: LoginComponent, + }, + footerOutletRoute, + ], }, { path: 'structures', @@ -105,7 +110,7 @@ const routes: Routes = [ children: [ { path: '', - component: UserVerificationComponent, + component: LoginComponent, }, footerOutletRoute, ], diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 968ba5904..ad9e60d69 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -22,7 +22,6 @@ import { LegalNoticeComponent } from './legal-notice/legal-notice.component'; import { PageComponent } from './page/page.component'; import { ContactComponent } from './contact/contact.component'; import { FormComponent } from './form/structure-form/form.component'; -import { UserVerificationComponent } from './user-verification/user-verification.component'; import { AuthGuard } from './guards/auth.guard'; import { CustomHttpInterceptor } from './config/http-interceptor'; import { ResetEmailComponent } from './reset-email/reset-email.component'; @@ -61,7 +60,6 @@ import { LoginComponent } from './login/login.component'; LegalNoticeComponent, PageComponent, ContactComponent, - UserVerificationComponent, ResetEmailComponent, ResetPasswordComponent, FormComponent, diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html index 9ea661717..a74bc9467 100644 --- a/src/app/login/login.component.html +++ b/src/app/login/login.component.html @@ -2,9 +2,12 @@ <div class="loginPage"> <div class="form"> <div class="title"> - <h3>Connexion</h3> + <h3>{{ isWelcome ? 'Bienvenue !' : 'Connexion' }}</h3> <p>Saisissez votre email pour vous connecter</p> </div> + <p *ngIf="verificationIssue" class="incorrectId"> + Une erreur est survenue lors de la validation de votre email... Veuillez envoyer un mail au support. + </p> <form [formGroup]="loginForm" (ngSubmit)="onSubmit()"> <div class="form-group" fxLayout="column"> <label for="email">Identifiant</label> diff --git a/src/app/login/login.component.scss b/src/app/login/login.component.scss index f8409a416..de0ccfbec 100644 --- a/src/app/login/login.component.scss +++ b/src/app/login/login.component.scss @@ -2,13 +2,14 @@ @import '../../assets/scss/breakpoint'; @import '../../assets/scss/layout'; @import '../../assets/scss/typography'; +@import '../../assets/scss/layout'; .content { display: flex; flex-direction: column; align-items: center; justify-content: center; - height: 100%; + height: calc(100% - $footer-height); } .loginPage { width: 100%; diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts index f2d03c518..8a19ec138 100644 --- a/src/app/login/login.component.ts +++ b/src/app/login/login.component.ts @@ -1,8 +1,12 @@ import { Component, OnInit } from '@angular/core'; import { FormGroup, FormBuilder, Validators, AbstractControl } from '@angular/forms'; -import { ActivatedRoute, Router } from '@angular/router'; -import { first } from 'rxjs/operators'; +import { ActivatedRoute, Router, UrlSegment } from '@angular/router'; +import { combineLatest } from 'rxjs'; +import { first, map } from 'rxjs/operators'; +import { Structure } from '../models/structure.model'; +import { User } from '../models/user.model'; import { AuthService } from '../services/auth.service'; +import { StructureService } from '../services/structure.service'; import { ButtonType } from '../shared/components/button/buttonType.enum'; import { CustomRegExp } from '../utils/CustomRegExp'; @@ -18,9 +22,41 @@ export class LoginComponent implements OnInit { public authFailed = false; public isShowPassword = false; public buttonTypeEnum = ButtonType; - constructor(private formBuilder: FormBuilder, private router: Router, private authService: AuthService) {} + public isWelcome = false; + public userId: string; + public token: string; + public structure: Structure; + public verificationSuccess = false; + public verificationIssue = false; + + constructor( + private formBuilder: FormBuilder, + private router: Router, + private authService: AuthService, + private activatedRoute: ActivatedRoute, + private structureService: StructureService + ) {} ngOnInit(): void { + // Subscribe to routing for user + const urlParametrs = combineLatest([this.activatedRoute.parent.url, this.activatedRoute.queryParams]).pipe( + map((results) => ({ + url: results[0], + token: results[1].token, + })) + ); + + urlParametrs.subscribe((routeParams: { url: UrlSegment[]; token: string }) => { + // Write code to use routeParams and queryParams. + if (routeParams.url[0].path === 'users' && routeParams.url[1].path === 'verify' && routeParams.url[2]) { + this.isWelcome = true; + this.userId = routeParams.url[2].path; + this.token = routeParams.token; + this.sendVerification(); + } + }); + + // login form this.loginForm = this.formBuilder.group({ email: ['', [Validators.required, Validators.pattern(CustomRegExp.EMAIL)]], password: ['', [Validators.required, Validators.pattern(CustomRegExp.PASSWORD)]], @@ -49,7 +85,12 @@ export class LoginComponent implements OnInit { .pipe(first()) .subscribe( () => { - this.router.navigateByUrl('news'); + if (this.isWelcome) { + console.log('la ?'); + this.router.navigateByUrl('form/profile'); + } else { + this.router.navigateByUrl('news'); + } }, () => { this.loading = false; @@ -64,4 +105,35 @@ export class LoginComponent implements OnInit { public goToAccountCreation(): void { this.router.navigateByUrl('form/account'); } + + private sendVerification(): void { + this.authService.verifyUser(this.userId, this.token).subscribe( + (user: User) => { + if (user.structuresLink[0]) { + this.structureService.getStructure(user.structuresLink[0]).subscribe( + (structure) => { + structure.accountVerified = true; + this.structure = structure; + this.structureService.updateStructureAfterOwnerVerify(structure._id, user).subscribe( + () => { + this.verificationSuccess = true; + }, + () => { + this.verificationIssue = true; + } + ); + }, + () => { + this.verificationIssue = true; + } + ); + } else { + this.verificationSuccess = true; + } + }, + () => { + this.verificationIssue = true; + } + ); + } } diff --git a/src/app/user-verification/user-verification.component.html b/src/app/user-verification/user-verification.component.html deleted file mode 100644 index 67b0aa725..000000000 --- a/src/app/user-verification/user-verification.component.html +++ /dev/null @@ -1,74 +0,0 @@ -<div fxLayout="column" class="content-container full-screen"> - <p *ngIf="!verificationSuccess && !verificationIssue">Votre email est en cours de vérification ...</p> - <div class="formDiv" *ngIf="verificationSuccess"> - <div *ngIf="structure"> - <div class="title"> - <h1 class="title-form">Bravo, votre compte et votre structure ont bien été référencés !</h1> - </div> - <div class="structureInfoBlock" fxLayout="row" fxLayoutAlign="center"> - <div class="structureInfoContent" fxLayout="column"> - {{ structure.structureName }} - <span>{{ structure.structureType }}</span> - </div> - <div class="validateSvg"> - <svg class="validate" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#checkVector'"></use> - </svg> - </div> - </div> - <div class="btnSection" fxLayout="row" fxLayoutAlign="space-around center"> - <button - *ngIf="verificationSuccess" - class="btn" - routerLink="/acteurs" - [queryParams]="{ id: structure._id }" - [state]="{ data: structure }" - > - Voir ma structure - </button> - </div> - </div> - <div *ngIf="!structure"> - <div> - <h1 class="title-form">Une dernière validation de Rés'in et votre structure vous sera attribuée !</h1> - <div style="font-style: italic">Cela prendra 3 jours maximum si nous ne sommes pas le weekend ;)</div> - <svg class="formClock" aria-hidden="true"> - <use [attr.xlink:href]="'assets/form/sprite.svg#formClock'"></use> - </svg> - </div> - </div> - </div> - <p *ngIf="verificationIssue"> - Une erreur est survenue lors de la validation de votre email... Veuillez envoyer un mail au support. - </p> - <!-- formulaire --> - <div class="formDiv" *ngIf="!verificationIssue"> - <div *ngIf="!structure"> - En attendant, vous pouvez participer à l'amélioration de Rés'in en répondant à ces quelques questions - </div> - <div *ngIf="structure"> - Donnez nous votre avis: vous pouvez participer à l'amélioration de Rés'in en répondant à ces quelques questions - </div> - <div fxLayout="row" fxLayoutAlign="center center" fxLayoutGap="24px" [style.margin-top]="'50px'"> - <button class="button" routerLink="/acteurs">Je passe mon tour</button> - <a - *ngIf="structure" - target="_blank" - class="btn custom-link" - rel="noopener noreferrer" - [href]="'https://form.typeform.com/to/m7DV3CdW?typeform-medium=embed-snippet'" - > - Nous aider - </a> - <a - *ngIf="!structure" - target="_blank" - class="btn custom-link" - rel="noopener noreferrer" - [href]="'https://form.typeform.com/to/ASJH3B7Z?typeform-medium=embed-snippet'" - > - Nous aider - </a> - </div> - </div> -</div> diff --git a/src/app/user-verification/user-verification.component.scss b/src/app/user-verification/user-verification.component.scss deleted file mode 100644 index bd43cc10b..000000000 --- a/src/app/user-verification/user-verification.component.scss +++ /dev/null @@ -1,104 +0,0 @@ -@import '../../assets/scss/color'; -@import '../../assets/scss/typography'; -@import '../../assets/scss/breakpoint'; - -.content-container { - max-width: 960px; - padding: 18px; - margin: auto; -} - -.btn { - background: $primary-color; - border-radius: 4px; - outline: none; - cursor: pointer; - border: 0; - color: $white; - height: 40px; - width: 244px; - text-decoration: none; - font-size: 16px !important; -} -.btnSection { - @media #{$large-phone} { - position: fixed; - border-top: 1px solid $grey-4; - } - bottom: 0; - left: 0; - width: 100%; - text-align: center; - padding: 17px 0px; -} - -.tmp-form-link { - a { - color: $white !important; - } -} - -.custom-form { - width: 100%; - height: 480px; - border: none; -} - -// Override button style to be the same as typeform button -button { - margin: 0px; - border: none; - background: none; - max-width: 100%; - cursor: pointer; - text-decoration: underline; - font-size: 16px !important; - line-height: 32px !important; - min-height: 40px; - width: 244 !important; -} - -.formDiv { - max-width: 530px; - padding-bottom: 30px; - margin: 0 auto; -} - -.title-form { - font-size: 26px; -} - -.structureInfoBlock { - background: $green-1; - color: $white; - padding: 16px; - border-radius: 6px; - @include lato-bold-18; - .structureInfoContent { - width: 100%; - } - span { - font-style: italic; - @include lato-regular-14; - } - .validateSvg { - stroke: $white; - text-align: right; - svg { - height: 14px; - width: 14px; - } - } -} - -.formClock { - width: 100%; - height: 146px; - margin: 24px; -} - -.custom-link { - display: flex; - align-items: center; - justify-content: center; -} diff --git a/src/app/user-verification/user-verification.component.spec.ts b/src/app/user-verification/user-verification.component.spec.ts deleted file mode 100644 index 48c1ec0b0..000000000 --- a/src/app/user-verification/user-verification.component.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { UserVerificationComponent } from './user-verification.component'; - -describe('UserVerificationComponent', () => { - let component: UserVerificationComponent; - let fixture: ComponentFixture<UserVerificationComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [UserVerificationComponent], - imports: [RouterTestingModule, HttpClientTestingModule], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(UserVerificationComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/user-verification/user-verification.component.ts b/src/app/user-verification/user-verification.component.ts deleted file mode 100644 index 9af616e60..000000000 --- a/src/app/user-verification/user-verification.component.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; -import { Structure } from '../models/structure.model'; -import { User } from '../models/user.model'; -import { AuthService } from '../services/auth.service'; -import { StructureService } from '../services/structure.service'; - -@Component({ - selector: 'app-user-verification', - templateUrl: './user-verification.component.html', - styleUrls: ['./user-verification.component.scss'], -}) -export class UserVerificationComponent implements OnInit { - public userId: string; - public token: string; - public structure: Structure; - public verificationSuccess = false; - public verificationIssue = false; - - constructor( - private activatedRoute: ActivatedRoute, - private authService: AuthService, - private structureService: StructureService - ) { - this.activatedRoute.queryParams.subscribe((params) => { - this.token = params['token']; - }); - } - - ngOnInit(): void { - this.userId = this.activatedRoute.snapshot.paramMap.get('id'); - this.sendVerification(); - } - - private sendVerification(): void { - this.authService.verifyUser(this.userId, this.token).subscribe( - (user: User) => { - if (user.structuresLink[0]) { - this.structureService.getStructure(user.structuresLink[0]).subscribe( - (structure) => { - structure.accountVerified = true; - this.structure = structure; - this.structureService.updateStructureAfterOwnerVerify(structure._id, user).subscribe( - () => { - this.verificationSuccess = true; - }, - () => { - this.verificationIssue = true; - } - ); - }, - () => { - this.verificationIssue = true; - } - ); - } else { - this.verificationSuccess = true; - } - }, - () => { - this.verificationIssue = true; - } - ); - } -} -- GitLab From b8ad3f35eb62bd616629220a19b3e0068bcf06ad Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 11:41:24 +0100 Subject: [PATCH 154/199] profile structure choice --- .../profile-structure-choice.component.html | 2 +- .../profile-structure-choice.component.scss | 2 ++ src/app/shared/components/svg-icon/svg-icon.component.scss | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html index 58df7ce7f..c724b1661 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -41,7 +41,7 @@ <app-svg-icon class="form-icon" *ngIf="isSelectedStructure(structure)" - [iconClass]="'validation'" + [iconClass]="'icon-32'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss index e60b95059..e372c6784 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss @@ -99,4 +99,6 @@ .form-icon { margin: 0px 24px; + display: flex; + align-items: center; } diff --git a/src/app/shared/components/svg-icon/svg-icon.component.scss b/src/app/shared/components/svg-icon/svg-icon.component.scss index 1f45de51b..e485f73a9 100644 --- a/src/app/shared/components/svg-icon/svg-icon.component.scss +++ b/src/app/shared/components/svg-icon/svg-icon.component.scss @@ -24,7 +24,8 @@ height: 30px; } &.icon-32 { - width: 2em; + width: 32px; + height: 32px; } &.icon-75 { width: 4.688em; -- GitLab From 504b908f19834fc0149227fc054e52bdddd89391 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 11:47:56 +0100 Subject: [PATCH 155/199] tags bold --- src/app/shared/components/button/button.component.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index 1602fc38e..f1aa6814e 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -135,6 +135,7 @@ button { } &.checkButton { padding: 0px 14px; + font-weight: bold; div:first-child { padding: 0 14px; } -- GitLab From 09e52365a2ba5ab067f7b47047355216a693b352 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 11:52:22 +0100 Subject: [PATCH 156/199] feat: fix router on personaloffer --- src/app/form/form-view/form-view.component.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index dda87e19b..ddd4d1bd9 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -338,7 +338,6 @@ export class FormViewComponent implements OnInit { } public nextPage(): void { - console.log('ICI'); this.isPageValid = false; if (this.currentPage < this.nbSteps) { this.currentPage++; @@ -355,8 +354,8 @@ export class FormViewComponent implements OnInit { return true; } - public setHasOtherPersonalOffer(flag: boolean): void { - this.hasOtherPersonalOffer = flag; + public setHasOtherPersonalOffer(value: boolean): void { + this.hasOtherPersonalOffer = value; } public linkStructureToUser(): void { @@ -372,7 +371,6 @@ export class FormViewComponent implements OnInit { formType: formType; formStep?: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep; }): void { - console.log(type); switch (type.formType) { case formType.account: break; @@ -429,6 +427,8 @@ export class FormViewComponent implements OnInit { this.personalOfferService.createPersonalOffer(this.structure._id, this.personalOfferForm.value).subscribe(() => { if (this.hasOtherPersonalOffer) { this.router.navigateByUrl('form/structure'); + } else { + this.nextPage(); } }); } -- GitLab From ed28c90a3b561a1b8a5e35afc1b48ca253095bb6 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 11:55:02 +0100 Subject: [PATCH 157/199] big button removed --- .../information-step/information-step.component.html | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 127bc40de..88b9524f2 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -74,13 +74,7 @@ <use [attr.xlink:href]="'assets/form/sprite.svg#profileUpdated'"></use> </svg> <div class="btn"> - <app-button - [style]="buttonTypeEnum.Primary" - [extraClass]="'bigButton'" - [text]="'Voir mon compte'" - [iconType]="'form'" - (action)="nextPage()" - > + <app-button [style]="buttonTypeEnum.Primary" [text]="'Voir mon compte'" [iconType]="'form'" (action)="nextPage()"> </app-button> </div> </div> -- GitLab From e941f5cc964c0f44b00d0884b145bade0f9ec002 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 12:03:24 +0100 Subject: [PATCH 158/199] referencement question bold --- .../profile-structure-choice.component.scss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss index e372c6784..bb6363b41 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss @@ -92,9 +92,12 @@ } .create-text { - @include lato-regular-15; + @include lato-regular-14; color: $grey-1; margin: 8px 0px; + .question { + font-weight: bold; + } } .form-icon { -- GitLab From e08aa2b2fe5a65f0f963649bec5d518614a3d005 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 12:03:53 +0100 Subject: [PATCH 159/199] title labels --- .../structure-labels/structure-labels.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html index 523e55454..2531d13be 100644 --- a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.html @@ -1,6 +1,6 @@ <form [formGroup]="structureForm" class="labelStep" (keyup.enter)="(!isEditMode ? '' : null)"> <div class="title"> - <h3>La structure est labellisée ?</h3> + <h3>La structure est-elle labellisée ?</h3> <p class="notRequired">Facultatif</p> </div> <div class="labelsQualifications" *ngIf="labelsQualifications" fxLayout="row wrap" fxLayoutAlign="flex-start"> -- GitLab From 7e688596b79f0c955f268fce09df846f42087029 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 12:06:24 +0100 Subject: [PATCH 160/199] feat: add guard for personaloffer form --- .../form/form-view/form-view-routing.module.ts | 3 ++- src/app/form/form-view/form-view.module.ts | 2 ++ .../form/form-view/guards/personalOffer.guard.ts | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/app/form/form-view/guards/personalOffer.guard.ts diff --git a/src/app/form/form-view/form-view-routing.module.ts b/src/app/form/form-view/form-view-routing.module.ts index 5e4eec089..7a6b0dac1 100644 --- a/src/app/form/form-view/form-view-routing.module.ts +++ b/src/app/form/form-view/form-view-routing.module.ts @@ -3,6 +3,7 @@ import { Routes, RouterModule } from '@angular/router'; import { AuthGuard } from '../../guards/auth.guard'; import { AccountFormComponent } from './account-form/account-form.component'; import { FormViewComponent } from './form-view.component'; +import { PersonalOfferGuard } from './guards/personalOffer.guard'; import { PersonalOfferFormComponent } from './personal-offer-form/personal-offer-form.component'; import { ProfileFormComponent } from './profile-form/profile-form.component'; import { StructureFormComponent } from './structure-form/structure-form.component'; @@ -24,7 +25,7 @@ const routes: Routes = [ }, { path: 'personaloffer', - canActivate: [AuthGuard], + canActivate: [AuthGuard, PersonalOfferGuard], component: PersonalOfferFormComponent, }, { diff --git a/src/app/form/form-view/form-view.module.ts b/src/app/form/form-view/form-view.module.ts index 4a848a59b..76972b0cb 100644 --- a/src/app/form/form-view/form-view.module.ts +++ b/src/app/form/form-view/form-view.module.ts @@ -43,6 +43,7 @@ import { PersonalOfferAccompanimentComponent } from './personal-offer-form/perso import { PersonalOfferTrainingTypeComponent } from './personal-offer-form/personal-offer-training-type/personal-offer-training-type.component'; import { AccountNewsletterComponent } from './account-form/account-newsletter/account-newsletter.component'; import { StructureTrainingTypeComponent } from './structure-form/structure-training-type/structure-training-type.component'; +import { PersonalOfferGuard } from './guards/personalOffer.guard'; @NgModule({ declarations: [ @@ -90,5 +91,6 @@ import { StructureTrainingTypeComponent } from './structure-form/structure-train StructureTrainingTypeComponent, ], imports: [CommonModule, FormViewRoutingModule, SharedModule], + providers: [PersonalOfferGuard], }) export class FormViewModule {} diff --git a/src/app/form/form-view/guards/personalOffer.guard.ts b/src/app/form/form-view/guards/personalOffer.guard.ts new file mode 100644 index 000000000..32b7d71c2 --- /dev/null +++ b/src/app/form/form-view/guards/personalOffer.guard.ts @@ -0,0 +1,16 @@ +import { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router'; +import { Injectable } from '@angular/core'; +/** + * Guard to assert that we are coming from the structure form. Otherwise redirect to home + */ +@Injectable() +export class PersonalOfferGuard implements CanActivate { + constructor(private router: Router) {} + + canActivate(route: ActivatedRouteSnapshot): UrlTree | boolean { + if (route.routeConfig.path === 'personaloffer' && this.router.routerState.snapshot.url === '/form/structure') { + return true; + } + return this.router.parseUrl('/home'); + } +} -- GitLab From 2b26c24c9c1511aaf83fa475708a5c4c507af911 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 12:12:44 +0100 Subject: [PATCH 161/199] asterisk style --- .../structure-consent/structure-consent.component.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss index 0483593b1..9df02c794 100644 --- a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss +++ b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.scss @@ -1,9 +1,13 @@ @import '../../../../../assets/scss/typography'; +@import '../../../../../assets/scss/color'; h3 { @include lato-bold-18; margin-top: 1.5rem; } +.asterisk { + color: $primary-color; +} .informationEndForm { @include lato-regular-12; } -- GitLab From 08c96fa6d0b51d5bee4ff0ee3520f41f818d7c0f Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 12:23:38 +0100 Subject: [PATCH 162/199] account credentials spacing --- .../account-credentials/account-credentials.component.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss index c600ea062..5e1f2e290 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss @@ -4,7 +4,7 @@ p.special { @include lato-regular-14; color: $grey-3; - margin-top: 4px; + margin: 4px 0 8px 0; width: 280px; } @@ -13,7 +13,7 @@ ul { margin: 0 0 8px 8px; li { display: flex; - margin: 7px 0 0 0; + margin: 4px 0 0 0; font-size: small; align-items: center; p { -- GitLab From bb1501fa135ad76112d9214165fe9b0f77587418 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 12:27:45 +0100 Subject: [PATCH 163/199] email already in use --- .../account-credentials/account-credentials.component.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss index 5e1f2e290..eb99041e3 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.scss @@ -6,6 +6,9 @@ p.special { color: $grey-3; margin: 4px 0 8px 0; width: 280px; + &.invalid { + color: $orange-warning; + } } ul { -- GitLab From c19c6a8e8d6018ee672fb29d13023bad9571d933 Mon Sep 17 00:00:00 2001 From: Etienne LOUPIAS <eloupias@grandlyon.com> Date: Fri, 25 Mar 2022 12:32:35 +0100 Subject: [PATCH 164/199] feat(onboarding): add already selected on structure choice --- .../profile-structure-choice.component.html | 11 +++++++++-- .../profile-structure-choice.component.scss | 19 +++++++++++++++++++ .../profile-structure-choice.component.ts | 17 +++++++++++++++-- src/assets/scss/_typography.scss | 7 +++++++ 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html index 58df7ce7f..5e328eeb2 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -31,9 +31,15 @@ fxLayout="column" fxLayoutAlign="space-around" class="form-list" - [class]="isSelectedStructure(structure) ? 'item-selected' : ''" + [class]=" + structure['alreadySelected'] + ? 'already-selected' + : isSelectedStructure(structure) + ? 'item-selected' + : '' + " > - <div fxLayout="row" fxLayoutAlign="space-between"> + <div fxLayout="row" fxLayoutAlign="space-between center"> <div class="item-frame"> <div class="name">{{ structure.structureName }}</div> <div class="commune">{{ structure.address.commune }}</div> @@ -45,6 +51,7 @@ [type]="'form'" [icon]="'validate'" ></app-svg-icon> + <div *ngIf="structure['alreadySelected']" class="sticker">Déjà <br />sélectionnée</div> </div> </div> </div> diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss index e60b95059..73d3b0f80 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss @@ -72,6 +72,25 @@ background: $white; } } + + &.already-selected { + background: $grey-8; + border-color: $grey-8; + background: $grey-8; + + .sticker { + @include lato-regular-10; + font-weight: 700; + background: $white; + margin: 0px 10px; + width: 110px; + height: 32px; + text-align: center; + align-items: center; + display: flex; + place-content: center; + } + } } .item-frame { diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts index aa13abc65..0ea6eb920 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.ts @@ -1,6 +1,7 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { Structure } from '../../../../models/structure.model'; +import { ProfileService } from '../../../../profile/services/profile.service'; import { StructureService } from '../../../../services/structure.service'; import { ButtonType } from '../../../../shared/components/button/buttonType.enum'; import { Filter } from '../../../../structure-list/models/filter.model'; @@ -20,11 +21,17 @@ export class ProfileStructureChoiceComponent implements OnInit { public selectedStructureItem: Structure; public isAlreadySearching = false; public buttonTypeEnum = ButtonType; + public profileStructuresLink: string[] = []; - constructor(private structureService: StructureService) {} + constructor(private structureService: StructureService, private profileService: ProfileService) {} ngOnInit(): void { - this.getStructures(null); + this.isAlreadySearching = true; + this.profileService.getProfile().then((profile) => { + this.isAlreadySearching = false; + this.profileStructuresLink = profile.structuresLink; + this.getStructures(null); + }); } public onSearchChange(searchString: string) { @@ -38,6 +45,7 @@ export class ProfileStructureChoiceComponent implements OnInit { } public selectedResult(structure: Structure): void { + if (structure['alreadySelected']) return; if (this.selectedStructureItem) this.selectedStructureItem['selected'] = false; this.selectedStructureItem = structure; this.structureForm.patchValue({ _id: structure._id, structureName: structure.structureName }); @@ -53,6 +61,11 @@ export class ProfileStructureChoiceComponent implements OnInit { if (!this.isAlreadySearching) { this.isAlreadySearching = true; this.structureService.getStructuresByName(filters).subscribe((structures) => { + structures.forEach((structure) => { + if (this.profileStructuresLink.includes(structure._id)) { + structure['alreadySelected'] = true; + } + }); if (this.searchString == '') { structures.sort((a, b) => a.structureName.localeCompare(b.structureName)); } diff --git a/src/assets/scss/_typography.scss b/src/assets/scss/_typography.scss index 08025b32b..48a5c3642 100644 --- a/src/assets/scss/_typography.scss +++ b/src/assets/scss/_typography.scss @@ -2,6 +2,7 @@ $text-font: 'Lato', 'Helvetica', sans-serif; $footer-text-font: 'Arial', 'Helvetica', sans-serif; $title-font: 'Lato', 'Helvetica', sans-serif; +$font-size-xxxxsmall: 0.625em; // 10px $font-size-xxsmall: 0.75em; // 12px $font-size-xxismall: 0.8125em; // 13px $font-size-xsmall: 0.875em; // 14px @@ -189,6 +190,12 @@ h6, font-weight: normal; font-size: $font-size-xxsmall; } +@mixin lato-regular-10 { + font-family: $text-font; + font-style: normal; + font-weight: normal; + font-size: $font-size-xxxxsmall; +} @mixin text-ellipsis { overflow: hidden; -- GitLab From 006ba48383d1c74d7c72fb6c7f930839cdde0491 Mon Sep 17 00:00:00 2001 From: Etienne LOUPIAS <eloupias@grandlyon.com> Date: Fri, 25 Mar 2022 12:45:11 +0100 Subject: [PATCH 165/199] feat(onboarding): structure choice minor change --- .../profile-structure-choice.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html index 85fb2014c..68d436c7f 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -57,7 +57,7 @@ </div> <div class="item-frame"> <div class="create-text"> - Cette structure n’existe pas encore sur Res’in. + Cette structure n’existe pas encore sur Res’in.<br /> <span class="question">Souhaitez-vous la référencer ?</span> </div> <app-button -- GitLab From f7e830b4e796bdf07eacafe077679f0ff50934b9 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Fri, 25 Mar 2022 13:34:09 +0100 Subject: [PATCH 166/199] fix: progress bar sync --- src/app/form/form-view/form-view.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/form-view.component.html b/src/app/form/form-view/form-view.component.html index ab8e2c7e4..57097f410 100644 --- a/src/app/form/form-view/form-view.component.html +++ b/src/app/form/form-view/form-view.component.html @@ -2,7 +2,7 @@ <app-progress-bar [formType]="formType[routeParam]" [isEditMode]="isEditMode" - [currentPage]="currentPage" + [currentPage]="currentPage - 1" [nbSteps]="nbSteps" ></app-progress-bar> <div class="page"> -- GitLab From 25890090e845828bbe278f3d6058ba46e56ee978 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 13:47:15 +0100 Subject: [PATCH 167/199] feat: set scroll design on global --- .../post-modal-filters.component.scss | 10 ---------- .../modal-filter/modal-filter.component.scss | 12 ------------ .../structure-details.component.scss | 18 ------------------ .../structure-list.component.scss | 17 ----------------- src/styles.scss | 17 +++++++++++++++++ 5 files changed, 17 insertions(+), 57 deletions(-) diff --git a/src/app/post/components/post-modal-filters/post-modal-filters.component.scss b/src/app/post/components/post-modal-filters/post-modal-filters.component.scss index 4f8019213..c3f7806a7 100644 --- a/src/app/post/components/post-modal-filters/post-modal-filters.component.scss +++ b/src/app/post/components/post-modal-filters/post-modal-filters.component.scss @@ -35,16 +35,6 @@ } @include background-hash($grey-2); border: 1px solid $grey-4; - ::-webkit-scrollbar { - width: 16px; - } - ::-webkit-scrollbar-track { - background: $grey-8; - } - ::-webkit-scrollbar-thumb { - background: $grey; - border-radius: 6px; - } .body-wrap { @media #{$large-phone} { height: 100vh; diff --git a/src/app/structure-list/components/modal-filter/modal-filter.component.scss b/src/app/structure-list/components/modal-filter/modal-filter.component.scss index 41d21e1df..58425c1a5 100644 --- a/src/app/structure-list/components/modal-filter/modal-filter.component.scss +++ b/src/app/structure-list/components/modal-filter/modal-filter.component.scss @@ -50,18 +50,6 @@ padding: 0; } background: white; - ::-webkit-scrollbar { - width: 8px; - border-radius: 8px; - } - ::-webkit-scrollbar-track { - background: $grey-8; - border-radius: 8px; - } - ::-webkit-scrollbar-thumb { - background: $grey-4; - border-radius: 6px; - } .body-wrap { @media #{$large-phone} { height: 100vh; diff --git a/src/app/structure-list/components/structure-details/structure-details.component.scss b/src/app/structure-list/components/structure-details/structure-details.component.scss index 26198fbf8..9a39faedc 100644 --- a/src/app/structure-list/components/structure-details/structure-details.component.scss +++ b/src/app/structure-list/components/structure-details/structure-details.component.scss @@ -53,24 +53,6 @@ h3 { overflow-y: auto; scrollbar-gutter: stable; @include lato-regular-14; - - &::-webkit-scrollbar { - width: 8px; - } - /* Track */ - &::-webkit-scrollbar-track { - background: $scrollbar-track; - } - /* Handle */ - &::-webkit-scrollbar-thumb { - background: $scrollbar-thumb; - border-radius: 8px; - } - /* Handle on hover */ - &::-webkit-scrollbar-thumb:hover { - background: $grey-3; - border-radius: 8px; - } } .structure-buttons { diff --git a/src/app/structure-list/structure-list.component.scss b/src/app/structure-list/structure-list.component.scss index c98dceed0..a52dd4f03 100644 --- a/src/app/structure-list/structure-list.component.scss +++ b/src/app/structure-list/structure-list.component.scss @@ -6,23 +6,6 @@ .structureList-container { overflow-y: auto; scrollbar-gutter: stable; - &::-webkit-scrollbar { - width: 8px; - } - /* Track */ - &::-webkit-scrollbar-track { - background: $scrollbar-track; - } - /* Handle */ - &::-webkit-scrollbar-thumb { - background: $scrollbar-thumb; - border-radius: 8px; - } - /* Handle on hover */ - &::-webkit-scrollbar-thumb:hover { - background: $grey-3; - border-radius: 8px; - } } .listCard > p { diff --git a/src/styles.scss b/src/styles.scss index 596ab314d..dfb13aaca 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -26,6 +26,23 @@ body { background-color: $grey-8; min-height: 100vh; min-height: -webkit-fill-available; + ::-webkit-scrollbar { + width: 8px; + } + /* Track */ + ::-webkit-scrollbar-track { + background: $scrollbar-track; + } + /* Handle */ + ::-webkit-scrollbar-thumb { + background: $scrollbar-thumb; + border-radius: 8px; + } + /* Handle on hover */ + ::-webkit-scrollbar-thumb:hover { + background: $grey-3; + border-radius: 8px; + } } a { color: $default-link-color; -- GitLab From ab9cf7fd170ae0037bbcf6366d2f9b03737897f6 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 14:13:04 +0100 Subject: [PATCH 168/199] equipments vowel preposition --- .../structure-equipments.component.html | 2 +- .../structure-equipments.component.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html index a9677def6..dc9c33939 100644 --- a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.html @@ -11,7 +11,7 @@ <div fxLayout="column"> <div class="controllerHeader" fxLayout="row" fxLayoutAlign="space-between center"> <div class="flex-item"> - <p class="no-margin">Nombre de {{ equipment.module.text | lowercase }}</p> + <p class="no-margin">Nombre {{ formatEquipment(equipment.module.text) }}</p> </div> <div class="inputSection flex-item equipments" fxLayout="row" fxLayoutAlign="center center"> <ng-container *ngIf="equipment.module.id == 'ordinateurs'"> diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts index 465427857..7951a4504 100644 --- a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.ts @@ -13,12 +13,16 @@ export class StructureEquipmentsComponent implements OnInit { @Input() equipmentsAndServices: { module: Module; openned: boolean }[]; @Output() validateForm = new EventEmitter<any>(); + private vowels = ['a', 'e', 'i', 'o', 'u', 'y']; + async ngOnInit(): Promise<void> { this.validateForm.emit(); } + public getStructureControl(nameControl: string): AbstractControl { return this.structureForm.get(nameControl); } + public changeValueHandler(equipment: string, value = 0): void { let field = ''; if (equipment === 'ordinateurs') field = 'nbComputers'; @@ -30,7 +34,18 @@ export class StructureEquipmentsComponent implements OnInit { if (value === -1 && this.structureForm.value[field] === 0) return; this.getStructureControl(field).setValue(this.structureForm.value[field] + value); } + public setValidationsForm() { this.validateForm.emit(); } + + /** + * Check if first letter is a vowel and returns text with correct preposition + * @param equipment Equipment + * @returns "de tablalettres" | "d'imprimantes" + */ + public formatEquipment(equipment: string): string { + if (this.vowels.includes(equipment.toLocaleLowerCase()[0])) return `d'${equipment.toLocaleLowerCase()}`; + return `de ${equipment.toLocaleLowerCase()}`; + } } -- GitLab From 7af36ffe909c020c3d544b5184f9bc5db8bda385 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 14:37:46 +0100 Subject: [PATCH 169/199] icon 26 and centered --- .../account-credentials.component.html | 17 ++++++++--------- .../account-info/account-info.component.html | 12 ++++++------ .../components/svg-icon/svg-icon.component.scss | 6 ++++++ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html index 706563e9b..48726bb10 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html @@ -24,13 +24,13 @@ /> <app-svg-icon *ngIf="accountForm.get('email').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="accountForm.get('email').invalid && accountForm.get('email').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -171,21 +171,20 @@ autocomplete="on" /> <app-svg-icon - [iconClass]="'validation grey hover'" + [iconClass]="'icon-26 grey hover'" [type]="'form'" [icon]="'eyePassword'" (click)="showPassword()" ></app-svg-icon> - <app-svg-icon *ngIf="accountForm.get('password').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="accountForm.get('password').invalid && accountForm.get('password').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -202,20 +201,20 @@ autocomplete="on" /> <app-svg-icon - [iconClass]="'validation grey hover'" + [iconClass]="'icon-26 grey hover'" [type]="'form'" [icon]="'eyePassword'" (click)="showConfirmPassword()" ></app-svg-icon> <app-svg-icon *ngIf="accountForm.get('confirmPassword').valid && accountForm.get('confirmPassword').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="accountForm.get('confirmPassword').invalid && accountForm.get('confirmPassword').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.html b/src/app/form/form-view/account-form/account-info/account-info.component.html index 304f523c4..d99977dd3 100644 --- a/src/app/form/form-view/account-form/account-info/account-info.component.html +++ b/src/app/form/form-view/account-form/account-info/account-info.component.html @@ -13,13 +13,13 @@ <input type="text" (input)="setValidationsForm()" formControlName="name" class="form-input" /> <app-svg-icon *ngIf="accountForm.get('name').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="accountForm.get('name').invalid && accountForm.get('name').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -31,13 +31,13 @@ <input type="text" (input)="setValidationsForm()" formControlName="surname" class="form-input" /> <app-svg-icon *ngIf="accountForm.get('surname').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="accountForm.get('surname').invalid && accountForm.get('surname').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -54,13 +54,13 @@ /> <app-svg-icon *ngIf="accountForm.get('phone').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="accountForm.get('phone').invalid && accountForm.get('phone').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> diff --git a/src/app/shared/components/svg-icon/svg-icon.component.scss b/src/app/shared/components/svg-icon/svg-icon.component.scss index e485f73a9..72addb32c 100644 --- a/src/app/shared/components/svg-icon/svg-icon.component.scss +++ b/src/app/shared/components/svg-icon/svg-icon.component.scss @@ -1,4 +1,10 @@ @import '../../../../assets/scss/color'; + +:host { + display: flex; + align-items: center; +} + .icon { display: inline-block; height: 2em; -- GitLab From 47984a2c5916777fc40bd0625f082b3545d646f0 Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Fri, 25 Mar 2022 14:41:16 +0100 Subject: [PATCH 170/199] Add job and employer to user --- .../form/footer-form/footer-form.component.ts | 4 --- src/app/form/form-view/form-view.component.ts | 30 +++++++++---------- src/app/models/user.model.ts | 6 +++- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 86eeb370d..1459cd80f 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -115,10 +115,6 @@ export class FooterFormComponent implements OnChanges { const user: User = await this.profileService.getProfile(); this.structureService.createStructure(this.form.value, user).subscribe(() => {}); } - if (this.currentStep === structureFormStep.structureCreationFinishedInfo) { - // this.router.navigateByUrl(`/acteurs?id=6001a3b116b08100062e4167`); - return; - } } if (this.isPersonalOfferpage()) { this.endForm.emit({ formType: this.currentForm }); diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index dda87e19b..2be19721c 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -37,6 +37,7 @@ export class FormViewComponent implements OnInit { public userAcceptNewsletter: boolean; // Profile Form public profileForm: FormGroup; + public isPersonalOfferProfile: boolean; // Structure from public structureForm: FormGroup; @@ -255,12 +256,9 @@ export class FormViewComponent implements OnInit { Validators.required, Validators.pattern(CustomRegExp.PHONE), ]), - contactPersonFirstname: new FormControl(structure.contactPersonLastname, Validators.required), - contactPersonLastname: new FormControl(structure.contactPersonLastname, Validators.required), - contactPersonEmail: new FormControl(structure.contactPersonEmail, [ - Validators.required, - Validators.pattern(CustomRegExp.EMAIL), - ]), + contactPersonFirstname: new FormControl(structure.contactPersonLastname), + contactPersonLastname: new FormControl(structure.contactPersonLastname), + contactPersonEmail: new FormControl(structure.contactPersonEmail, [Validators.pattern(CustomRegExp.EMAIL)]), website: new FormControl(structure.website, Validators.pattern(CustomRegExp.WEBSITE)), facebook: new FormControl(structure.facebook, Validators.pattern(CustomRegExp.FACEBOOK)), twitter: new FormControl(structure.twitter, Validators.pattern(CustomRegExp.TWITTER)), @@ -310,6 +308,7 @@ export class FormViewComponent implements OnInit { ]), freeWorkShop: new FormControl(structure.freeWorkShop, [Validators.required]), dataShareConsentDate: new FormControl(structure.dataShareConsentDate), + personalOffers: new FormControl(structure.personalOffers), }); } public acceptReceiveNewsletter(isAccepted: boolean): void { @@ -338,7 +337,6 @@ export class FormViewComponent implements OnInit { } public nextPage(): void { - console.log('ICI'); this.isPageValid = false; if (this.currentPage < this.nbSteps) { this.currentPage++; @@ -368,11 +366,10 @@ export class FormViewComponent implements OnInit { }); } - public endForm(type: { + public async endForm(type: { formType: formType; formStep?: accountFormStep | profileFormStep | structureFormStep | personalOfferFormStep; - }): void { - console.log(type); + }): Promise<void> { switch (type.formType) { case formType.account: break; @@ -381,7 +378,9 @@ export class FormViewComponent implements OnInit { break; case formType.structure: if (type.formStep === structureFormStep.mailSentInfo) { - if (this.profileForm.value.job.hasPersonalOffer) { + const user = await this.profileService.getProfile(); + + if (user.job.hasPersonalOffer) { this.router.navigateByUrl('form/personaloffer'); } else { this.router.navigateByUrl('/'); @@ -432,12 +431,13 @@ export class FormViewComponent implements OnInit { } }); } - public saveStructureForm(): void { - this.structureService.createStructure(this.structureForm.value, this.profile).subscribe(() => { - if (this.profileForm.value.job.hasPersonalOffer) { + public async saveStructureForm(): Promise<void> { + const user = await this.profileService.getProfile(); + this.structureService.createStructure(this.structureForm.value, this.profile).subscribe((struct) => { + if (user.job.hasPersonalOffer) { this.router.navigateByUrl('form/personaloffer'); } else { - this.router.navigateByUrl(`acteurs?id=${this.structure._id}`); + this.router.navigateByUrl(`acteurs?id=${struct._id}`); } }); } diff --git a/src/app/models/user.model.ts b/src/app/models/user.model.ts index 4de0811de..29b6f3b96 100644 --- a/src/app/models/user.model.ts +++ b/src/app/models/user.model.ts @@ -1,3 +1,6 @@ +import { Employer } from './employer.model'; +import { Job } from './job.model'; + export class User { _id: string; email: string; @@ -12,7 +15,8 @@ export class User { pendingStructuresLink: string[] = []; profileImage: string; personalOffers: string[] = []; - + job: Job; + employer: Employer; constructor(obj?: any) { Object.assign(this, obj); } -- GitLab From 75199fcec6363e7541a6fbaa5bc69c75ee7971eb Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 15:13:44 +0100 Subject: [PATCH 171/199] hours fixed --- src/app/form/form-view/form-view.component.ts | 3 +-- .../structure-form/structure-form.component.ts | 11 ++++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index ddd4d1bd9..17fccef4e 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -185,8 +185,7 @@ export class FormViewComponent implements OnInit { } public updateHours(form: FormGroup): void { - // TODO : not working - this.hoursForm = form.value; + this.hoursForm = form; } private createDay(day: Day): FormGroup { diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index d4a956598..267320741 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -94,9 +94,9 @@ export class StructureFormComponent implements OnChanges { } public updateHours(form: FormGroup): void { - this.updateHoursForm.emit(form); - // TODO : validation not working, this.hoursForm.valid never true + this.hoursForm = form; this.setValidationsForm(); + this.updateHoursForm.emit(form); } public setHoursError(): void { @@ -336,9 +336,14 @@ export class StructureFormComponent implements OnChanges { return this.pagesValidation[index].valid; } this.isPageValid = this.pagesValidation[this.currentStep].valid; - if (this.isPageValid) this.pageValid.emit(); + if (this.isPageValid) { + this.pageValid.emit(); + } else { + this.pageValid.emit(false); + } return this.isPageValid; } + public getStructureControl(nameControl: string): AbstractControl { return this.structureForm.get(nameControl); } -- GitLab From 9e2a678863653d7dfdbf469637b3cc7696927d2a Mon Sep 17 00:00:00 2001 From: Etienne LOUPIAS <eloupias@grandlyon.com> Date: Fri, 25 Mar 2022 15:20:24 +0100 Subject: [PATCH 172/199] feat(onboarding): refacto autocomplete style for employer (and address) --- .../profile-employer-selection.component.scss | 18 +-------------- .../address-autocomplete.component.scss | 19 ---------------- src/styles.scss | 22 +++++++++++++++++++ 3 files changed, 23 insertions(+), 36 deletions(-) diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss index 0f00ce2e6..f22d92388 100644 --- a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss @@ -101,21 +101,5 @@ } } .autocomplete-items { - border: 0.0625rem solid #d4d4d4; - box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.25); - border-top: none; - border-bottom: none; - z-index: 99; - background-color: #fff; - cursor: pointer; - max-height: 250px; - overflow: auto; -} -.autocomplete-item { - margin: 0; - padding: 1em 0; -} -.autocomplete-item:hover { - background-color: #dee6ee; - cursor: pointer; + width: 296px; } diff --git a/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss b/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss index 7b5f0a562..20888f228 100644 --- a/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss +++ b/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss @@ -12,24 +12,5 @@ input#search-address { } } .autocomplete-items { - border: 0.0625rem solid #d4d4d4; - box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.25); - box-sizing: border-box; - border-top: none; - border-bottom: none; - z-index: 99; - background-color: #fff; - cursor: pointer; width: 400px; - max-height: 250px; - overflow: auto; - padding-left: 16px; -} -.autocomplete-item { - margin: 0; - padding: 1em 0; -} -.autocomplete-item:hover { - background-color: #dee6ee; - cursor: pointer; } diff --git a/src/styles.scss b/src/styles.scss index 596ab314d..e9b04795b 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -364,3 +364,25 @@ button { display: none !important; } } + +.autocomplete-items { + border: 0.0625rem solid #d4d4d4; + box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.25); + box-sizing: border-box; + border-top: none; + border-bottom: none; + z-index: 99; + background-color: #fff; + cursor: pointer; + max-height: 250px; + overflow: auto; + padding-left: 16px; +} +.autocomplete-item { + margin: 0; + padding: 1em 0; +} +.autocomplete-item:hover { + background-color: #dee6ee; + cursor: pointer; +} -- GitLab From 536d46844f5840005715ae361500f3da195957f5 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 15:44:35 +0100 Subject: [PATCH 173/199] access modality --- .../structure-access-modality.component.ts | 8 +++++--- .../structure-form/structure-form.component.html | 1 - 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts index e69eae7b8..ca5c95f29 100644 --- a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts @@ -11,7 +11,6 @@ export class StructureAccessModalityComponent implements OnInit { @Input() structureForm: FormGroup; @Input() accessModality: Category; @Output() checkChange = new EventEmitter<any>(); - @Output() inArray = new EventEmitter<any>(); @Output() validateForm = new EventEmitter<any>(); ngOnInit(): void { @@ -26,7 +25,10 @@ export class StructureAccessModalityComponent implements OnInit { }); } - public isInArray(accessModalityId: string, modality: string) { - this.inArray.emit({ formControlName: accessModalityId, value: modality }); + public isInArray(formControlName: string, term: string) { + if (this.structureForm.controls[formControlName].value) { + return this.structureForm.controls[formControlName].value.includes(term); + } + return false; } } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index aa2447d4f..fa629b741 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -67,7 +67,6 @@ [structureForm]="structureForm" [accessModality]="accessModality" (validateForm)="setValidationsForm()" - (inArray)="isInArray($event)" (checkChange)="onCheckChange($event)" ></app-structure-access-modality> </div> -- GitLab From d93114cf0dabf6dacab80b8e52eace73a9c3f5ee Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 15:51:28 +0100 Subject: [PATCH 174/199] structure labels simplified --- .../structure-access-modality.component.ts | 4 +-- .../structure-form.component.html | 4 ++- .../structure-labels.component.ts | 34 ++++++------------- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts index ca5c95f29..6f8439c4f 100644 --- a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts @@ -17,10 +17,10 @@ export class StructureAccessModalityComponent implements OnInit { this.validateForm.emit(); } - public onCheckChange(event: boolean, accessModalityId: string, modality: string) { + public onCheckChange(event: boolean, formControlName: string, modality: string) { this.checkChange.emit({ event, - formControlName: accessModalityId, + formControlName, value: modality, }); } diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index fa629b741..2f2e2b091 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -137,8 +137,10 @@ <div *ngIf="currentStep == structureFormStep.structureLabels"> <app-structure-labels [structureForm]="structureForm" - (validateForm)="setValidationsForm($event)" + [labelsQualifications]="labelsQualifications" [isEditMode]="isEditMode" + (checkChange)="onCheckChange($event)" + (validateForm)="setValidationsForm($event)" ></app-structure-labels> </div> <div *ngIf="currentStep == structureFormStep.structureOtherServices"> diff --git a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts index bbf6073cb..fe7918d9d 100644 --- a/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts +++ b/src/app/form/form-view/structure-form/structure-labels/structure-labels.component.ts @@ -1,7 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { FormArray, FormControl, FormGroup } from '@angular/forms'; -import { CategoryEnum } from '../../../../shared/enum/category.enum'; -import { SearchService } from '../../../../structure-list/services/search.service'; +import { FormGroup } from '@angular/forms'; +import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-labels', @@ -11,19 +10,12 @@ import { SearchService } from '../../../../structure-list/services/search.servic export class StructureLabelsComponent implements OnInit { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; + @Input() labelsQualifications: Category; @Output() validateForm = new EventEmitter<any>(); @Output() checkChange = new EventEmitter<any>(); - @Output() inArray = new EventEmitter<any>(); - public labelsQualifications; - constructor(private searchService: SearchService) {} async ngOnInit(): Promise<void> { - const equipmentsCategs = await this.searchService.getCategoriesOthers().toPromise(); - equipmentsCategs.forEach((categ) => { - if (categ.id === CategoryEnum.labelsQualifications) { - this.labelsQualifications = categ; - } - }); + this.validateForm.emit(); } // Check if a FormControl value is in FormArray public isInArray(term: string, formControlName: string): boolean { @@ -32,16 +24,12 @@ export class StructureLabelsComponent implements OnInit { } return false; } - public onCheckChange(event: boolean, formControlName: string, value: string): void { - const formArray: FormArray = this.structureForm.get(formControlName) as FormArray; - if (event) { - // Add a new control in the arrayForm - formArray.push(new FormControl(value)); - } else { - // Remove uncheck control in the arrayForm - const index = formArray.controls.findIndex((element) => element.value === value); - formArray.removeAt(index); - } - this.validateForm.emit(); + + public onCheckChange(event: boolean, formControlName: string, modality: string) { + this.checkChange.emit({ + event, + formControlName, + value: modality, + }); } } -- GitLab From 9dc25ec43be8dfca5c50c8e41b7904e083bb9938 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 16:04:01 +0100 Subject: [PATCH 175/199] feat: review --- .../information-step/information-step.component.html | 2 +- .../information-step/information-step.component.ts | 1 + .../structure-form/structure-form.component.html | 1 + .../form-view/structure-form/structure-form.component.ts | 8 +++++++- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.html b/src/app/form/form-view/global-components/information-step/information-step.component.html index 88b9524f2..c69aa917d 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.html +++ b/src/app/form/form-view/global-components/information-step/information-step.component.html @@ -60,7 +60,7 @@ <svg aria-hidden="true"> <use [attr.xlink:href]="'assets/form/sprite.svg#structureCreated'"></use> </svg> - <p> + <p *ngIf="hasPersonalOffer"> Les prochaines questions concernent les services que vous dispensez en tant qu’intervenant dans cette structure. </p> </div> diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.ts b/src/app/form/form-view/global-components/information-step/information-step.component.ts index efe2239f7..78932de96 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.ts +++ b/src/app/form/form-view/global-components/information-step/information-step.component.ts @@ -15,6 +15,7 @@ export class InformationStepComponent { @Input() step: number; @Input() formType: formType; @Input() structureName?: string; + @Input() hasPersonalOffer?: boolean; @Output() goNext = new EventEmitter<any>(); public formTypeEnum = formType; diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index aa2447d4f..79634b375 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -186,6 +186,7 @@ [isEditMode]="isEditMode" [step]="currentStep" [formType]="formTypeEnum.structure" + [hasPersonalOffer]="profile.job ? profile.job.hasPersonalOffer : false" ></app-information-step> </div> </div> diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 267320741..66bda6dfd 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -1,6 +1,8 @@ import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; import { AbstractControl, FormArray, FormControl, FormGroup, Validators } from '@angular/forms'; import { Address } from '../../../models/address.model'; +import { User } from '../../../models/user.model'; +import { ProfileService } from '../../../profile/services/profile.service'; import { CategoryEnum } from '../../../shared/enum/category.enum'; import { Category } from '../../../structure-list/models/category.model'; import { Module } from '../../../structure-list/models/module.model'; @@ -25,6 +27,7 @@ export class StructureFormComponent implements OnChanges { public formTypeEnum = formType; public isPageValid: boolean; public pagesValidation = []; + public profile: User; // Collapse var public showWebsite: boolean = false; @@ -48,7 +51,7 @@ export class StructureFormComponent implements OnChanges { public publicsAccompaniment: Category; public publics: Category; - constructor(private searchService: SearchService) {} + constructor(private searchService: SearchService, private profileService: ProfileService) {} ngOnChanges(changes: SimpleChanges): void { if (changes.currentStep) { @@ -72,6 +75,9 @@ export class StructureFormComponent implements OnChanges { ngOnInit(): void { this.setCategories(); + this.profileService.getProfile().then((user: User) => { + this.profile = user; + }); // if (this.isEditMode) { // this.showCollapse(structure); // } -- GitLab From 50f560279aaeb2cee704219ded7152a6981ad1c3 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 16:14:45 +0100 Subject: [PATCH 176/199] other services simplified --- .../structure-form.component.html | 5 ++- .../structure-other-services.component.html | 14 +++--- .../structure-other-services.component.ts | 43 +++++++------------ 3 files changed, 26 insertions(+), 36 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-form.component.html b/src/app/form/form-view/structure-form/structure-form.component.html index 2f2e2b091..3c1f33f38 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.html +++ b/src/app/form/form-view/structure-form/structure-form.component.html @@ -146,9 +146,10 @@ <div *ngIf="currentStep == structureFormStep.structureOtherServices"> <app-structure-other-services [structureForm]="structureForm" - (validateForm)="setValidationsForm($event)" - (inArray)="isInArray($event)" + [equipmentsAndServices]="equipmentsAndServices" [isEditMode]="isEditMode" + (validateForm)="setValidationsForm($event)" + (checkChange)="onCheckChange($event)" ></app-structure-other-services> </div> <div *ngIf="currentStep == structureFormStep.structureDigitalHelpingAccompaniment"> diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html index c953731ae..9b805decf 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.html @@ -3,8 +3,8 @@ <h3>Quels autres services sont proposés par la structure ?</h3> <p class="notRequired">Facultatif</p> </div> - <div *ngIf="otherServices" fxLayout="column wrap" fxLayoutAlign="flex-start" class="otherServices"> - <ng-container *ngFor="let module of otherServices.modules"> + <div *ngIf="equipmentsAndServices" fxLayout="column wrap" fxLayoutAlign="flex-start" class="otherServices"> + <ng-container *ngFor="let service of equipmentsAndServices"> <app-checkbox-form *ngIf=" [ @@ -12,12 +12,12 @@ 'reconditionnementsDeMateriel', 'accesLivresInformatiques', 'venteMaterielPrixSolidaire' - ].includes(module.id) + ].includes(service.module.id) " - [isChecked]="isInArray(module.id, 'equipmentsAndServices')" - [text]="module.text" - [iconSvg]="module.id" - (checkEvent)="onCheckChange($event, 'equipmentsAndServices', module.id)" + [isChecked]="isInArray('equipmentsAndServices', service.module.id)" + [text]="service.module.text" + [iconSvg]="service.module.id" + (checkEvent)="onCheckChange($event, 'equipmentsAndServices', service.module.id)" > </app-checkbox-form> </ng-container> diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts index ee4244ef3..ea886bc0e 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts @@ -1,7 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { FormArray, FormControl, FormGroup } from '@angular/forms'; -import { CategoryEnum } from '../../../../shared/enum/category.enum'; -import { SearchService } from '../../../../structure-list/services/search.service'; +import { FormGroup } from '@angular/forms'; +import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-other-services', @@ -11,36 +10,26 @@ import { SearchService } from '../../../../structure-list/services/search.servic export class StructureOtherServicesComponent implements OnInit { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; + @Input() equipmentsAndServices: Category; @Output() validateForm = new EventEmitter<any>(); - @Output() inArray = new EventEmitter<any>(); - - public otherServices; - - constructor(private searchService: SearchService) {} + @Output() checkChange = new EventEmitter<any>(); async ngOnInit(): Promise<void> { this.validateForm.emit(); - const equipmentsCategs = await this.searchService.getCategoriesOthers().toPromise(); - equipmentsCategs.forEach((categ) => { - if (categ.id === CategoryEnum.equipmentsAndServices) { - this.otherServices = categ; - } - }); - } - public isInArray(accessModalityId: string, modality: string) { - this.inArray.emit({ formControlName: accessModalityId, value: modality }); } - public onCheckChange(event: boolean, formControlName: string, value: string): void { - const formArray: FormArray = this.structureForm.get(formControlName) as FormArray; - if (event) { - // Add a new control in the arrayForm - formArray.push(new FormControl(value)); - } else { - // Remove uncheck control in the arrayForm - const index = formArray.controls.findIndex((element) => element.value === value); - formArray.removeAt(index); + public isInArray(formControlName: string, term: string) { + if (this.structureForm.controls[formControlName].value) { + return this.structureForm.controls[formControlName].value.includes(term); } - this.validateForm.emit(); + return false; + } + + public onCheckChange(event: boolean, formControlName: string, modality: string) { + this.checkChange.emit({ + event, + formControlName, + value: modality, + }); } } -- GitLab From 4317cd4f11c06ca21857563fdb8c7ba264bfdb60 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 16:29:30 +0100 Subject: [PATCH 177/199] icon size --- .../structure-access-modality.component.html | 7 +------ .../structure-contact-completion.component.html | 8 ++++---- .../structure-contact.component.html | 15 +++++---------- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html index 48abe3a85..91fc6fcf8 100644 --- a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.html @@ -4,12 +4,7 @@ <p>Plusieurs choix possibles</p> </div> <p class="missing-information" *ngIf="isEditMode && !structureForm.get('accessModality').valid"> - <app-svg-icon - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> + <app-svg-icon [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon"></app-svg-icon> <span>Il faut renseigner au moins un champ</span> </p> <div *ngIf="accessModality" fxLayout="row wrap" fxLayoutGap="16px" fxLayoutAlign="flex-start" class="welcomingTerms"> diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html index 53d0a92ed..7cde49d81 100644 --- a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.html @@ -17,7 +17,7 @@ /> <app-svg-icon *ngIf="structureForm.get('contactPersonFirstname').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> @@ -36,7 +36,7 @@ /> <app-svg-icon *ngIf="structureForm.get('contactPersonLastname').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> @@ -55,13 +55,13 @@ /> <app-svg-icon *ngIf="structureForm.get('contactPersonEmail').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="structureForm.get('contactPersonEmail').invalid && structureForm.get('contactPersonEmail').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html index 4341d9d76..30dbd27de 100644 --- a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html +++ b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.html @@ -6,12 +6,7 @@ class="missing-information" *ngIf="isEditMode && (!structureForm.get('contactPhone').valid || !structureForm.get('contactMail').valid)" > - <app-svg-icon - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> + <app-svg-icon [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon"></app-svg-icon> <span>Il faut renseigner tous les champs</span> </p> <div class="form-group" fxLayout="column"> @@ -25,13 +20,13 @@ /> <app-svg-icon *ngIf="structureForm.get('contactPhone').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="structureForm.get('contactPhone').invalid && structureForm.get('contactPhone').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> @@ -43,13 +38,13 @@ <input type="text" (input)="setValidationsForm()" formControlName="contactMail" class="form-input" /> <app-svg-icon *ngIf="structureForm.get('contactMail').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> <app-svg-icon *ngIf="structureForm.get('contactMail').invalid && structureForm.get('contactMail').value" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" ></app-svg-icon> -- GitLab From 081af6046e9fa60b5f56d01533291d1b3446bd47 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 16:29:43 +0100 Subject: [PATCH 178/199] validators contact person --- src/app/form/form-view/form-view.component.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 0b8e9491a..e22441ba0 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -255,9 +255,12 @@ export class FormViewComponent implements OnInit { Validators.required, Validators.pattern(CustomRegExp.PHONE), ]), - contactPersonFirstname: new FormControl(structure.contactPersonLastname), - contactPersonLastname: new FormControl(structure.contactPersonLastname), - contactPersonEmail: new FormControl(structure.contactPersonEmail, [Validators.pattern(CustomRegExp.EMAIL)]), + contactPersonFirstname: new FormControl(structure.contactPersonLastname, Validators.required), + contactPersonLastname: new FormControl(structure.contactPersonLastname, Validators.required), + contactPersonEmail: new FormControl(structure.contactPersonEmail, [ + Validators.pattern(CustomRegExp.EMAIL), + Validators.required, + ]), website: new FormControl(structure.website, Validators.pattern(CustomRegExp.WEBSITE)), facebook: new FormControl(structure.facebook, Validators.pattern(CustomRegExp.FACEBOOK)), twitter: new FormControl(structure.twitter, Validators.pattern(CustomRegExp.TWITTER)), -- GitLab From 523f0350980df158b104823c5bf78604dc9a1d00 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 16:36:04 +0100 Subject: [PATCH 179/199] icon size --- .../structure-name-and-address.component.html | 4 ++-- .../structure-pmr/structure-pmr.component.html | 7 +------ .../structure-public-target.component.html | 7 +------ .../structure-type/structure-type.component.html | 7 +------ 4 files changed, 5 insertions(+), 20 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html index 63e05c887..3b6b91a29 100644 --- a/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html +++ b/src/app/form/form-view/structure-form/structure-name-and-address/structure-name-and-address.component.html @@ -21,7 +21,7 @@ /> <app-svg-icon *ngIf="structureForm.get('structureName').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> @@ -37,7 +37,7 @@ ></app-address-autocomplete> <app-svg-icon *ngIf="structureForm.get('address').valid" - [iconClass]="'validation'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" class="validateIcon" diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html index 765300d08..e11b93fc8 100644 --- a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html +++ b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.html @@ -3,12 +3,7 @@ <h3>La structure est-elle accessible pour les personnes à mobilité réduite ?</h3> </div> <p class="missing-information" *ngIf="isEditMode && !structureForm.get('pmrAccess').valid"> - <app-svg-icon - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> + <app-svg-icon [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon"></app-svg-icon> <span>Il faut renseigner un champ</span> </p> <app-radio-form diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html index 872c51412..356631db6 100644 --- a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.html @@ -4,12 +4,7 @@ <p>Plusieurs choix possibles</p> </div> <p class="missing-information" *ngIf="isEditMode && !structureForm.get('publics').valid"> - <app-svg-icon - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> + <app-svg-icon [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon"></app-svg-icon> <span>Il faut renseigner au moins un champ</span> </p> <div *ngIf="publics" class="btn-grid"> diff --git a/src/app/form/form-view/structure-form/structure-type/structure-type.component.html b/src/app/form/form-view/structure-form/structure-type/structure-type.component.html index b49f34b07..631066a6b 100644 --- a/src/app/form/form-view/structure-form/structure-type/structure-type.component.html +++ b/src/app/form/form-view/structure-form/structure-type/structure-type.component.html @@ -4,12 +4,7 @@ <p>1 seul choix possible</p> </div> <p class="missing-information" *ngIf="isEditMode && !structureForm.get('structureType').valid"> - <app-svg-icon - [iconClass]="'validation'" - [type]="'form'" - [icon]="'notValidate'" - class="validationIcon" - ></app-svg-icon> + <app-svg-icon [iconClass]="'icon-26'" [type]="'form'" [icon]="'notValidate'" class="validationIcon"></app-svg-icon> <span>Il faut renseigner un champ</span> </p> <div class="type-picker"> -- GitLab From 2f9958464646e2eb808026047b0092afd93f8ad0 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 16:36:35 +0100 Subject: [PATCH 180/199] feat: review on account connexion --- .../account-credentials.component.html | 1 - .../form/structure-form/form.component.html | 5 -- src/app/login/login.component.html | 1 - src/app/login/login.component.scss | 4 + src/app/shared/components/index.ts | 6 -- .../signin-modal/signin-modal.component.html | 25 ------ .../signin-modal/signin-modal.component.scss | 21 ----- .../signin-modal.component.spec.ts | 26 ------ .../signin-modal/signin-modal.component.ts | 53 ------------ .../signup-modal/signup-modal.component.html | 63 -------------- .../signup-modal/signup-modal.component.scss | 84 ------------------- .../signup-modal.component.spec.ts | 28 ------- .../signup-modal/signup-modal.component.ts | 81 ------------------ 13 files changed, 4 insertions(+), 394 deletions(-) delete mode 100644 src/app/shared/components/signin-modal/signin-modal.component.html delete mode 100644 src/app/shared/components/signin-modal/signin-modal.component.scss delete mode 100644 src/app/shared/components/signin-modal/signin-modal.component.spec.ts delete mode 100644 src/app/shared/components/signin-modal/signin-modal.component.ts delete mode 100644 src/app/shared/components/signup-modal/signup-modal.component.html delete mode 100644 src/app/shared/components/signup-modal/signup-modal.component.scss delete mode 100644 src/app/shared/components/signup-modal/signup-modal.component.spec.ts delete mode 100644 src/app/shared/components/signup-modal/signup-modal.component.ts diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html index 48726bb10..6bf751e86 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.html @@ -37,7 +37,6 @@ </div> </div> <div class="form-group" fxLayout="column"> - <label for="password">Création de mot de passe</label> <p class="special" [ngClass]="{ invalid: accountForm.get('password').invalid && accountForm.get('password').value }" diff --git a/src/app/form/structure-form/form.component.html b/src/app/form/structure-form/form.component.html index a526561fe..64c56e835 100644 --- a/src/app/form/structure-form/form.component.html +++ b/src/app/form/structure-form/form.component.html @@ -1451,9 +1451,4 @@ Voir ma structure </button> </div> - <app-signup-modal - *ngIf="displaySignUp" - [openned]="isPopUpOpen" - (closed)="closeSignUpModal($event)" - ></app-signup-modal> </div> diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html index a74bc9467..b5cc818ea 100644 --- a/src/app/login/login.component.html +++ b/src/app/login/login.component.html @@ -21,7 +21,6 @@ </div> <div class="form-group password" fxLayout="column"> <label for="password">Mot de passe</label> - <div fxLayout="row" fxLayoutGap="13px"> <input [type]="isShowPassword ? 'text' : 'password'" diff --git a/src/app/login/login.component.scss b/src/app/login/login.component.scss index de0ccfbec..155a3d3d4 100644 --- a/src/app/login/login.component.scss +++ b/src/app/login/login.component.scss @@ -63,8 +63,12 @@ } input { width: 100%; + max-width: 301px; } &.password { + input { + max-width: 264px; + } p { @include lato-regular-14; color: $grey-3; diff --git a/src/app/shared/components/index.ts b/src/app/shared/components/index.ts index e16d787bb..17ea2c876 100644 --- a/src/app/shared/components/index.ts +++ b/src/app/shared/components/index.ts @@ -1,7 +1,5 @@ import { ButtonComponent } from './button/button.component'; import { LogoCardComponent } from './logo-card/logo-card.component'; -import { SignUpModalComponent } from './signup-modal/signup-modal.component'; -import { SignInModalComponent } from './signin-modal/signin-modal.component'; import { SvgIconComponent } from './svg-icon/svg-icon.component'; import { ValidatorFormComponent } from './validator-form/validator-form.component'; import { CreateAccountFormComponent } from './create-account-form/create-account-form.component'; @@ -24,8 +22,6 @@ export { SvgIconComponent, ButtonComponent, ValidatorFormComponent, - SignUpModalComponent, - SignInModalComponent, CreateAccountFormComponent, AddressAutocompleteComponent, StructureTypePickerComponent, @@ -47,8 +43,6 @@ export const SharedComponents = [ SvgIconComponent, ButtonComponent, ValidatorFormComponent, - SignUpModalComponent, - SignInModalComponent, CreateAccountFormComponent, AddressAutocompleteComponent, StructureTypePickerComponent, diff --git a/src/app/shared/components/signin-modal/signin-modal.component.html b/src/app/shared/components/signin-modal/signin-modal.component.html deleted file mode 100644 index a0d11538c..000000000 --- a/src/app/shared/components/signin-modal/signin-modal.component.html +++ /dev/null @@ -1,25 +0,0 @@ -<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 deleted file mode 100644 index 56e9e0482..000000000 --- a/src/app/shared/components/signin-modal/signin-modal.component.scss +++ /dev/null @@ -1,21 +0,0 @@ -@import '../../../../assets/scss/typography'; -@import '../../../../assets/scss/color'; - -.ico-close { - width: 100%; -} -h3 { - @include lato-bold-26; - color: $black; - margin-top: 0; -} -.form { - max-width: 391px; - margin: 0 32px; - width: 100%; -} -.emailAlreadyUse { - color: $orange-warning; - text-align: center; - margin-bottom: 10px; -} diff --git a/src/app/shared/components/signin-modal/signin-modal.component.spec.ts b/src/app/shared/components/signin-modal/signin-modal.component.spec.ts deleted file mode 100644 index 45e193fe1..000000000 --- a/src/app/shared/components/signin-modal/signin-modal.component.spec.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { SignInModalComponent } from './signin-modal.component'; - -describe('SignInModalComponent', () => { - let component: SignInModalComponent; - let fixture: ComponentFixture<SignInModalComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [SignInModalComponent], - imports: [HttpClientTestingModule], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(SignInModalComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/shared/components/signin-modal/signin-modal.component.ts b/src/app/shared/components/signin-modal/signin-modal.component.ts deleted file mode 100644 index 72f12a6f2..000000000 --- a/src/app/shared/components/signin-modal/signin-modal.component.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { FormGroup } from '@angular/forms'; -import { first } from 'rxjs/operators'; -import { User } from '../../../models/user.model'; -import { AuthService } from '../../../services/auth.service'; - -@Component({ - selector: 'app-signin-modal', - templateUrl: './signin-modal.component.html', - styleUrls: ['./signin-modal.component.scss'], -}) -export class SignInModalComponent implements OnInit { - public loading = false; - public submitted = false; - public success = false; - public userAlreadyExist = false; - - constructor(private authService: AuthService) {} - - @Input() public openned: boolean; - @Output() closed = new EventEmitter(); - - ngOnInit(): void {} - - public closeModal(): void { - this.closed.emit(); - } - - public onSubmit(form: FormGroup): void { - this.submitted = true; - - // stop here if form is invalid - if (form.invalid) { - return; - } - - this.loading = true; - this.authService - .register(new User(form.value)) - .pipe(first()) - .subscribe( - () => { - this.success = true; - }, - (error) => { - this.loading = false; - if (error.error.statusCode === 400) { - this.userAlreadyExist = true; - } - } - ); - } -} diff --git a/src/app/shared/components/signup-modal/signup-modal.component.html b/src/app/shared/components/signup-modal/signup-modal.component.html deleted file mode 100644 index 528bf45c4..000000000 --- a/src/app/shared/components/signup-modal/signup-modal.component.html +++ /dev/null @@ -1,63 +0,0 @@ -<div *ngIf="openned" class="modalBackground"> - <div class="modal"> - <div (clickOutside)="closeModal(false)" class="contentModal" fxLayout="column" fxLayoutAlign="space-around start"> - <div class="form"> - <div class="modalTitle"> - <h3>Se connecter</h3> - <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> - <form [formGroup]="loginForm" (ngSubmit)="onSubmit()"> - <div class="form-group" fxLayout="column"> - <label for="email">Courriel du compte</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 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="incorrectId" *ngIf="authFailed">Identifiant ou mot de passe invalide</div> - </div> - <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center"> - <button type="button" class="btn confirm" (click)="swithToResetPassword()">Mot de passe oublié</button> - <button - type="submit" - class="btn-primary" - [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 deleted file mode 100644 index bfe8550fe..000000000 --- a/src/app/shared/components/signup-modal/signup-modal.component.scss +++ /dev/null @@ -1,84 +0,0 @@ -@import '../../../../assets/scss/typography'; -@import '../../../../assets/scss/color'; -@import '../../../../assets/scss/buttons'; -@import '../../../../assets/scss/z-index'; -@import '../../../../assets/scss/hyperlink'; - -.modalTitle { - display: flex; - h3 { - margin-top: 6%; - width: 50%; - } - .ico-close { - width: 50%; - } -} - -.incorrectId { - color: $orange-warning; -} - -h3 { - @include lato-bold-26; - color: $black; - margin-top: 0; -} -.form { - max-width: 391px; - margin: 0 32px; - margin-bottom: 8%; -} - -.form-group { - margin-top: 26px; - .notValidate { - min-width: 26px; - width: 26px; - height: 40px; - } - label { - margin-bottom: 4px; - @include lato-regular-14; - color: $grey-2; - } - input { - width: 100%; - } - &.password { - margin-bottom: 39px; - p { - @include lato-regular-14; - color: $grey-3; - margin-top: 0; - margin-bottom: 4px; - &.invalid { - color: $orange-warning; - } - } - .eyePassword { - cursor: pointer; - width: 24px; - height: 40px; - stroke: $grey-3; - fill: $grey-3; - } - } -} -.footerModal { - button { - width: 100% !important; - &.invalid { - opacity: 0.4; - } - &.confirm { - font-size: 14px; - } - &.register { - background: $white; - border: 1px solid $grey-4; - color: $primary-color; - height: 38px; - } - } -} diff --git a/src/app/shared/components/signup-modal/signup-modal.component.spec.ts b/src/app/shared/components/signup-modal/signup-modal.component.spec.ts deleted file mode 100644 index af1e49062..000000000 --- a/src/app/shared/components/signup-modal/signup-modal.component.spec.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule } from '@angular/forms'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { SignUpModalComponent } from './signup-modal.component'; - -describe('SignUpModalComponent', () => { - let component: SignUpModalComponent; - let fixture: ComponentFixture<SignUpModalComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [SignUpModalComponent], - imports: [ReactiveFormsModule, RouterTestingModule, HttpClientTestingModule], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(SignUpModalComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/shared/components/signup-modal/signup-modal.component.ts b/src/app/shared/components/signup-modal/signup-modal.component.ts deleted file mode 100644 index 1ca87953b..000000000 --- a/src/app/shared/components/signup-modal/signup-modal.component.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { FormGroup, FormBuilder, Validators, AbstractControl } from '@angular/forms'; -import { ActivatedRoute, Router } from '@angular/router'; -import { first } from 'rxjs/operators'; -import { AuthService } from '../../../services/auth.service'; -import { CustomRegExp } from '../../../utils/CustomRegExp'; - -@Component({ - selector: 'app-signup-modal', - templateUrl: './signup-modal.component.html', - styleUrls: ['./signup-modal.component.scss'], -}) -export class SignUpModalComponent implements OnInit { - public loginForm: FormGroup; - public loading = false; - public submitted = false; - public authFailed = false; - public isShowPassword = false; - constructor( - private formBuilder: FormBuilder, - private route: ActivatedRoute, - private router: Router, - private authService: AuthService - ) {} - - @Input() public openned: boolean; - @Output() closed = new EventEmitter<boolean>(); - - ngOnInit(): void { - this.loginForm = this.formBuilder.group({ - email: ['', [Validators.required, Validators.pattern(CustomRegExp.EMAIL)]], - password: ['', [Validators.required, Validators.pattern(CustomRegExp.PASSWORD)]], - }); - } - - // getter for form fields - get f(): { [key: string]: AbstractControl } { - return this.loginForm.controls; - } - - public closeModal(): void { - this.closed.emit(true); - } - - public sendSwitchToSignIn(): void { - this.closed.emit(true); - this.router.navigate(['/create-structure']); - } - - public swithToResetPassword(): void { - this.closed.emit(true); - this.router.navigate(['/reset-password']); - } - - public onSubmit(): void { - this.submitted = true; - - // stop here if form is invalid - if (this.loginForm.invalid) { - return; - } - this.loading = true; - this.authService - .login(this.f.email.value, this.f.password.value) - .pipe(first()) - .subscribe( - () => { - this.router.navigate([this.router.url]); - this.closeModal(); - }, - () => { - this.loading = false; - this.authFailed = true; - } - ); - } - - public toggleShowPassword(): void { - this.isShowPassword = !this.isShowPassword; - } -} -- GitLab From 94d88bba6ef9a1217fedffdd92da7af1c595b27f Mon Sep 17 00:00:00 2001 From: "guilhem.carron" <gcarron@grandlyon.com> Date: Fri, 25 Mar 2022 16:36:55 +0100 Subject: [PATCH 181/199] Fix button prev + padding autocomplete list --- .../footer-form/footer-form.component.html | 4 ++-- .../form/footer-form/footer-form.component.ts | 18 ++++++++++++++++-- src/app/form/form-view/form-view.component.ts | 1 + src/styles.scss | 3 +-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.html b/src/app/form/footer-form/footer-form.component.html index 086411962..2c71ace5c 100644 --- a/src/app/form/footer-form/footer-form.component.html +++ b/src/app/form/footer-form/footer-form.component.html @@ -6,8 +6,8 @@ fxLayoutAlign="center center" > <app-button - *ngIf="displayPreviousButton && !isLastFormStep && !isNextFormTransition" - (action)="goToPreviousPage()" + *ngIf="!isLastFormStep && !isNextFormTransition && !isStructureLastPage() && !isPersonalOfferFirstPage()" + (action)="prevPage()" [text]="btnName[0]" [iconType]="'form'" [iconBtn]="'chevronLeft'" diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 1459cd80f..2cb8fcb2e 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -25,7 +25,6 @@ export class FooterFormComponent implements OnChanges { @Input() isClaimMode: boolean; @Input() isAccountMode: boolean; @Input() btnName: string[]; - @Input() displayPreviousButton: boolean = true; @Input() nbPagesForm: number; @Input() form: FormGroup; @Input() linkedStructureId: Array<string> = null; @@ -65,6 +64,10 @@ export class FooterFormComponent implements OnChanges { ) { this.isNextFormTransition = true; } + + if (this.currentForm === formType.structure && this.currentStep === structureFormStep.mailSentInfo) { + this.isLastFormStep = true; + } } } @@ -82,6 +85,14 @@ export class FooterFormComponent implements OnChanges { public goToHome(): void { this.router.navigateByUrl('news'); } + + public prevPage(): void { + if (this.currentForm === formType.structure && this.currentStep === structureFormStep.structureType) { + this.changeCurrentStep.emit(structureFormStep.structureFormTime); + return; + } + this.goToPreviousPage(); + } public async nextPage(): Promise<void> { if (this.currentForm === formType.account && this.currentStep === accountFormStep.accountNewsletter) { const user = new User(this.form.value); @@ -139,7 +150,7 @@ export class FooterFormComponent implements OnChanges { ); } - private isStructureLastPage(): boolean { + public isStructureLastPage(): boolean { return ( this.currentForm === formType.structure && (this.currentStep === structureFormStep.mailSentInfo || @@ -157,4 +168,7 @@ export class FooterFormComponent implements OnChanges { this.currentStep === personalOfferFormStep.personalOfferStructureChoice ); } + public isPersonalOfferFirstPage(): boolean { + return this.currentStep === personalOfferFormStep.personalOfferAccompaniment; + } } diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 0b8e9491a..0a6d3e20d 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -436,6 +436,7 @@ export class FormViewComponent implements OnInit { const user = await this.profileService.getProfile(); this.structureService.createStructure(this.structureForm.value, this.profile).subscribe((struct) => { if (user.job.hasPersonalOffer) { + this.structure = struct; this.router.navigateByUrl('form/personaloffer'); } else { this.router.navigateByUrl(`acteurs?id=${struct._id}`); diff --git a/src/styles.scss b/src/styles.scss index a5e572991..cd347352a 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -393,11 +393,10 @@ button { cursor: pointer; max-height: 250px; overflow: auto; - padding-left: 16px; } .autocomplete-item { margin: 0; - padding: 1em 0; + padding: 1em; } .autocomplete-item:hover { background-color: #dee6ee; -- GitLab From 663f8504da0a5375371e565b5820179e08efb551 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 16:53:18 +0100 Subject: [PATCH 182/199] collapse does not delete tags anymore --- .../structure-training-type.component.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts index bf5ca315a..040c7e499 100644 --- a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts +++ b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts @@ -11,8 +11,6 @@ export class StructureTrainingTypeComponent { @Input() structureForm: FormGroup; @Output() validateForm = new EventEmitter<any>(); - constructor() {} - ngOnInit(): void { this.validateForm.emit(); } -- GitLab From 20e890a5d222a045f51d0323e1e247fffe1ac9f2 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Fri, 25 Mar 2022 16:58:24 +0100 Subject: [PATCH 183/199] fix: button isssue on extraclass --- .../shared/components/button/button.component.html | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/app/shared/components/button/button.component.html b/src/app/shared/components/button/button.component.html index 82caae3b7..1f62c3554 100644 --- a/src/app/shared/components/button/button.component.html +++ b/src/app/shared/components/button/button.component.html @@ -42,9 +42,9 @@ type="{{ type }}" (click)="doAction()" [disabled]="disabled" - [ngClass]="{ disabled: disabled }" - [ngClass]="extraClass" + [ngClass]="{ disabled: disabled, extraClass }" > + {{ disabled }} <div *ngIf="!iconBtn" class="text">{{ text }}</div> <div *ngIf="iconBtn && iconPos === 'left'" @@ -86,7 +86,6 @@ </div> </button> </ng-container> - <ng-container *ngIf="style === buttonTypeEnum.Secondary"> <button class="btn-regular secondary" @@ -173,8 +172,7 @@ type="{{ type }}" (click)="doAction()" [disabled]="disabled" - [ngClass]="{ disabled: disabled }" - [ngClass]="extraClass" + [ngClass]="{ disabled: disabled, extraClass }" > <div>{{ text }}</div> </button> @@ -186,8 +184,7 @@ type="{{ type }}" (click)="doAction()" [disabled]="disabled" - [ngClass]="{ disabled: disabled }" - [ngClass]="extraClass" + [ngClass]="{ disabled: disabled, extraClass }" > <div fxLayout="row center" fxLayoutAlign="space-around center" fxLayoutGap="13px"> <app-svg-icon -- GitLab From 933439a36b7d65db85006a0f93c3fcb9d5047347 Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 17:13:28 +0100 Subject: [PATCH 184/199] address padding --- .../address-autocomplete.component.scss | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss b/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss index 20888f228..783129d4d 100644 --- a/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss +++ b/src/app/shared/components/address-autocomplete/address-autocomplete.component.scss @@ -12,5 +12,9 @@ input#search-address { } } .autocomplete-items { - width: 400px; + box-sizing: border-box; + width: 400; + p { + width: auto; + } } -- GitLab From eb73e8e3951df164b7dd1aa3e9eddc3975473240 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 17:21:11 +0100 Subject: [PATCH 185/199] feat: change route to structure --- src/app/profile/profile.component.ts | 2 +- src/app/structure-list/structure-list.component.ts | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/app/profile/profile.component.ts b/src/app/profile/profile.component.ts index 0a7e5aa9d..49d2d5cbe 100644 --- a/src/app/profile/profile.component.ts +++ b/src/app/profile/profile.component.ts @@ -35,7 +35,7 @@ export class ProfileComponent implements OnInit { } public addStructure(): void { - this.router.navigateByUrl('/create-structure'); + this.router.navigateByUrl('/form/structure'); } public logout(): void { diff --git a/src/app/structure-list/structure-list.component.ts b/src/app/structure-list/structure-list.component.ts index bf5cef388..ff5496110 100644 --- a/src/app/structure-list/structure-list.component.ts +++ b/src/app/structure-list/structure-list.component.ts @@ -5,6 +5,7 @@ import * as _ from 'lodash'; import { ActivatedRoute, Router } from '@angular/router'; import { StructureService } from '../services/structure.service'; import { ButtonType } from '../shared/components/button/buttonType.enum'; +import { AuthService } from '../services/auth.service'; @Component({ selector: 'app-structure-list', @@ -27,7 +28,12 @@ export class StructureListComponent implements OnChanges { private arrayChunked: Structure[][] = []; private chunck = 10; - constructor(private route: ActivatedRoute, private router: Router, private structureService: StructureService) { + constructor( + private route: ActivatedRoute, + private router: Router, + private structureService: StructureService, + private authService: AuthService + ) { this.route.queryParams.subscribe((queryParams) => { if (queryParams.id) { if (!this.structure) { @@ -58,7 +64,11 @@ export class StructureListComponent implements OnChanges { } public addStructure(): void { - this.router.navigate(['/create-structure']); + if (!this.authService.isLoggedIn()) { + this.router.navigateByUrl('/login'); + } else { + this.router.navigateByUrl('/form/structure'); + } } public showDetails(event: Structure): void { -- GitLab From 5c0abc239d3e46480a38ac00a7aaaf8354004da7 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 17:22:18 +0100 Subject: [PATCH 186/199] feat: remove log --- src/app/shared/components/button/button.component.html | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/shared/components/button/button.component.html b/src/app/shared/components/button/button.component.html index 1f62c3554..e8faf6fd6 100644 --- a/src/app/shared/components/button/button.component.html +++ b/src/app/shared/components/button/button.component.html @@ -44,7 +44,6 @@ [disabled]="disabled" [ngClass]="{ disabled: disabled, extraClass }" > - {{ disabled }} <div *ngIf="!iconBtn" class="text">{{ text }}</div> <div *ngIf="iconBtn && iconPos === 'left'" -- GitLab From 595eaca3626627a76b957ad6c8d5b1e253df2796 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 17:47:23 +0100 Subject: [PATCH 187/199] feat: review buttons --- src/app/login/login.component.html | 5 +-- .../components/button/button.component.html | 40 ++++--------------- .../components/button/button.component.scss | 2 +- 3 files changed, 11 insertions(+), 36 deletions(-) diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html index b5cc818ea..862405092 100644 --- a/src/app/login/login.component.html +++ b/src/app/login/login.component.html @@ -47,7 +47,7 @@ (action)="swithToResetPassword()" [text]="'Mot de passe oublié'" [style]="buttonTypeEnum.Secondary" - [extraClass]="'fullButton'" + [extraClass]="'fullWidth'" > </app-button> <app-button @@ -55,8 +55,7 @@ [text]="'Se connecter'" [disabled]="loginForm.invalid || loading" [style]="buttonTypeEnum.Primary" - [ngClass]="{ invalid: loginForm.invalid || loading }" - [extraClass]="'fullButton'" + [extraClass]="'fullWidth'" > </app-button> </div> diff --git a/src/app/shared/components/button/button.component.html b/src/app/shared/components/button/button.component.html index e8faf6fd6..c6b44274f 100644 --- a/src/app/shared/components/button/button.component.html +++ b/src/app/shared/components/button/button.component.html @@ -1,11 +1,5 @@ <ng-container *ngIf="style === buttonTypeEnum.Regular"> - <button - class="btn-regular" - type="{{ type }}" - (click)="doAction()" - [disabled]="disabled" - [ngClass]="{ disabled: disabled }" - > + <button class="btn-regular" type="{{ type }}" (click)="doAction()" [disabled]="disabled"> <div *ngIf="!iconBtn" class="text">{{ text }}</div> <div *ngIf="iconBtn && iconPos === 'left'" @@ -42,7 +36,7 @@ type="{{ type }}" (click)="doAction()" [disabled]="disabled" - [ngClass]="{ disabled: disabled, extraClass }" + [ngClass]="extraClass" > <div *ngIf="!iconBtn" class="text">{{ text }}</div> <div @@ -67,13 +61,7 @@ </ng-container> <ng-container *ngIf="style === buttonTypeEnum.modalPrimary"> - <button - class="btn-regular modal-primary" - type="{{ type }}" - (click)="doAction()" - [disabled]="disabled" - [ngClass]="{ disabled: disabled }" - > + <button class="btn-regular modal-primary" type="{{ type }}" (click)="doAction()" [disabled]="disabled"> <div *ngIf="!iconBtn" class="text">{{ text }}</div> <div *ngIf="iconBtn && iconPos === 'left'" fxLayout="row center" class="text" fxLayoutAlign="space-around center"> <app-svg-icon [type]="iconType" [icon]="iconBtn" [iconColor]="'currentColor'"></app-svg-icon> @@ -86,13 +74,7 @@ </button> </ng-container> <ng-container *ngIf="style === buttonTypeEnum.Secondary"> - <button - class="btn-regular secondary" - type="{{ type }}" - (click)="doAction()" - [disabled]="disabled" - [ngClass]="{ disabled: disabled }" - > + <button class="btn-regular secondary" type="{{ type }}" (click)="doAction()" [disabled]="disabled"> <div *ngIf="!iconBtn" [ngClass]="extraClass" class="text">{{ text }}</div> <div *ngIf="iconBtn && iconPos === 'left'" @@ -116,13 +98,7 @@ </ng-container> <ng-container *ngIf="style === buttonTypeEnum.ButtonPhone"> - <button - [disabled]="disabled" - class="btn-switch-phone" - type="{{ type }}" - (click)="doAction()" - [ngClass]="{ disabled: disabled }" - > + <button [disabled]="disabled" class="btn-switch-phone" type="{{ type }}" (click)="doAction()"> <div *ngIf="!iconBtn" class="text">{{ text }}</div> <div *ngIf="iconBtn" @@ -171,7 +147,7 @@ type="{{ type }}" (click)="doAction()" [disabled]="disabled" - [ngClass]="{ disabled: disabled, extraClass }" + [ngClass]="extraClass" > <div>{{ text }}</div> </button> @@ -183,7 +159,7 @@ type="{{ type }}" (click)="doAction()" [disabled]="disabled" - [ngClass]="{ disabled: disabled, extraClass }" + [ngClass]="extraClass" > <div fxLayout="row center" fxLayoutAlign="space-around center" fxLayoutGap="13px"> <app-svg-icon @@ -204,7 +180,7 @@ type="{{ type }}" (click)="doAction()" [disabled]="disabled" - [ngClass]="{ disabled: disabled, active: active }" + [ngClass]="{ active: active }" > <div *ngIf="iconBtn" class="text withIcon"> <app-svg-icon diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index f1aa6814e..c3baa6efc 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -250,7 +250,7 @@ button { background: $grey-1; } } -.disabled { +button:disabled { opacity: 0.4; cursor: not-allowed; } -- GitLab From 235aab24832af288efaccccc65cc782de9bc8e3a Mon Sep 17 00:00:00 2001 From: Bastien Dumont <bdumont@grandlyon.com> Date: Fri, 25 Mar 2022 18:02:51 +0100 Subject: [PATCH 188/199] collapse no longer removes values --- .../training-type-picker/training-type-picker.component.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.ts b/src/app/shared/components/training-type-picker/training-type-picker.component.ts index 5e8f6d30c..a82331982 100644 --- a/src/app/shared/components/training-type-picker/training-type-picker.component.ts +++ b/src/app/shared/components/training-type-picker/training-type-picker.component.ts @@ -64,9 +64,6 @@ export class TrainingTypePickerComponent implements OnInit { if (this.isCategorieExpanded(id)) { const index = this.categoriesExpanded.findIndex((categorieId) => categorieId === id); this.categoriesExpanded.splice(index, 1); - const selectedChoiceIndex = this.selectedChoices.findIndex((_categorie) => _categorie.id === id); - this.selectedChoices[selectedChoiceIndex].modules = []; - this.selectedType.emit(this.selectedChoices); } else { this.categoriesExpanded.push(id); } -- GitLab From e28f8366e199b133cf6572b7a26f6d25bf42c1ac Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 18:11:12 +0100 Subject: [PATCH 189/199] feat: review footer --- src/app/form/footer-form/footer-form.component.ts | 7 +++++-- src/app/form/form-view/form-view.component.ts | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 2cb8fcb2e..75a4eba56 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -52,7 +52,7 @@ export class FooterFormComponent implements OnChanges { public goToNextPage(): void { this.goNext.emit(); } - ngOnChanges(changes: SimpleChanges): void { + async ngOnChanges(changes: SimpleChanges): Promise<void> { if (changes.currentStep) { if (this.currentStep === accountFormStep.confirmEmailSentInfo && this.currentForm === formType.account) { this.isLastFormStep = true; @@ -66,7 +66,10 @@ export class FooterFormComponent implements OnChanges { } if (this.currentForm === formType.structure && this.currentStep === structureFormStep.mailSentInfo) { - this.isLastFormStep = true; + const user: User = await this.profileService.getProfile(); + if (!user.job.hasPersonalOffer) { + this.isLastFormStep = true; + } } } } diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index 49cce4fce..e5366508c 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -381,7 +381,6 @@ export class FormViewComponent implements OnInit { case formType.structure: if (type.formStep === structureFormStep.mailSentInfo) { const user = await this.profileService.getProfile(); - if (user.job.hasPersonalOffer) { this.router.navigateByUrl('form/personaloffer'); } else { -- GitLab From 1391ebe2ad4272c77b90ec357c9f1b4849bc6306 Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Fri, 25 Mar 2022 18:17:25 +0100 Subject: [PATCH 190/199] feat: review --- .../form/form-view/account-form/account-form.component.html | 2 +- .../form/form-view/account-form/account-form.component.scss | 3 +++ .../personal-offer-accompaniment.component.ts | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/app/form/form-view/account-form/account-form.component.html b/src/app/form/form-view/account-form/account-form.component.html index 29570fc9f..eda10b761 100644 --- a/src/app/form/form-view/account-form/account-form.component.html +++ b/src/app/form/form-view/account-form/account-form.component.html @@ -1,4 +1,4 @@ -<div> +<div class="no-max-width"> <ng-container *ngIf="currentStep === accountFormStepEnum.accountInfo"> <app-account-info [accountForm]="accountForm" diff --git a/src/app/form/form-view/account-form/account-form.component.scss b/src/app/form/form-view/account-form/account-form.component.scss index e69de29bb..e5aaa88a0 100644 --- a/src/app/form/form-view/account-form/account-form.component.scss +++ b/src/app/form/form-view/account-form/account-form.component.scss @@ -0,0 +1,3 @@ +.no-max-width { + max-width: none; +} diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts index 4fed25e15..afb36cba0 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-accompaniment/personal-offer-accompaniment.component.ts @@ -36,7 +36,7 @@ export class PersonalOfferAccompanimentComponent implements OnInit { public toogleResult(module: Module): void { if (this.isSelectedModule(module)) { const index = this.selectedModules.findIndex((_module) => _module.id === module.id); - this.selectedModules.splice(index); + this.selectedModules.splice(index, 1); } else { this.selectedModules.push(module); } -- GitLab From 8dbc98641208fd7a9a0b0c682e1d5ea1b1fee01b Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Fri, 25 Mar 2022 17:51:15 +0000 Subject: [PATCH 191/199] Fix/carto review --- src/app/map/components/map.component.scss | 4 ---- src/app/map/components/map.component.ts | 8 ------- src/app/models/structure.model.ts | 10 -------- .../components/button/button.component.html | 21 +++++++++++++++++ .../components/button/button.component.scss | 19 ++++++++++++++- .../components/button/buttonType.enum.ts | 1 + .../modal-confirmation.component.html | 8 +++++-- .../modal-confirmation.component.scss | 18 +++------------ .../components/card/card.component.scss | 1 + .../modal-filter/modal-filter.component.html | 18 +++++++++++++-- .../modal-filter/modal-filter.component.scss | 23 +++++++++++++++---- .../structure-list-search.component.scss | 12 +++++++++- .../structure-list.component.scss | 8 +++++++ 13 files changed, 103 insertions(+), 48 deletions(-) diff --git a/src/app/map/components/map.component.scss b/src/app/map/components/map.component.scss index b33ebc7ca..a699808a9 100644 --- a/src/app/map/components/map.component.scss +++ b/src/app/map/components/map.component.scss @@ -62,9 +62,6 @@ /*** POP-UP ***/ ::ng-deep .leaflet-popup { border-radius: 6px; - @include background-hash($grey-2); - border: 1px solid $grey-4; - padding: 0 0 4px 4px; bottom: -15px !important; h1 { color: $grey-1; @@ -112,7 +109,6 @@ } } ::ng-deep .leaflet-popup-content-wrapper { - box-shadow: unset; border-radius: 6px; } ::ng-deep .leaflet-popup-content { diff --git a/src/app/map/components/map.component.ts b/src/app/map/components/map.component.ts index f2883a9a8..cb88411cf 100644 --- a/src/app/map/components/map.component.ts +++ b/src/app/map/components/map.component.ts @@ -222,14 +222,6 @@ export class MapComponent implements OnChanges { '<p>' + structure.getLabelTypeStructure() + '</p>' + - (this.isOrientationForm - ? '' - : '<div>' + - '<span class="ico-dot-' + - cssAvailabilityClass + - '"></span><span>' + - structure.openDisplay() + - '</span></div>') + (this.isOrientationForm ? '<div class="pop-up orientation"><button type="button" class="orientationButton btnShowDetails"><span class="ico-gg-eye-alt eye"></span>Voir</button></div>' : '<div class="pop-up"><button type="button" class="btnShowDetails">Voir</button></div>') diff --git a/src/app/models/structure.model.ts b/src/app/models/structure.model.ts index 0ca192096..5f054a020 100644 --- a/src/app/models/structure.model.ts +++ b/src/app/models/structure.model.ts @@ -90,16 +90,6 @@ export class Structure { } } - public openDisplay(): string { - if (this.isOpen) { - return 'Ouvert actuellement'; - } else if (this.openedOn.day) { - return 'Fermé - Ouvre ' + this.hours.getDayTranslation(this.openedOn.day) + ' à ' + this.openedOn.schedule; - } else { - return 'Aucun horaire disponible'; - } - } - /** * Check if a structure has equipments */ diff --git a/src/app/shared/components/button/button.component.html b/src/app/shared/components/button/button.component.html index c6b44274f..aef5c8276 100644 --- a/src/app/shared/components/button/button.component.html +++ b/src/app/shared/components/button/button.component.html @@ -73,6 +73,27 @@ </div> </button> </ng-container> + +<ng-container *ngIf="style === buttonTypeEnum.modalSecondary"> + <button + class="btn-regular modal-secondary" + type="{{ type }}" + (click)="doAction()" + [disabled]="disabled" + [ngClass]="{ disabled: disabled }" + > + <div *ngIf="!iconBtn" class="text">{{ text }}</div> + <div *ngIf="iconBtn && iconPos === 'left'" fxLayout="row center" class="text" fxLayoutAlign="space-around center"> + <app-svg-icon [type]="iconType" [icon]="iconBtn" [iconColor]="'currentColor'"></app-svg-icon> + <span>{{ text }}</span> + </div> + <div *ngIf="iconBtn && iconPos === 'right'" fxLayout="row center" class="text" fxLayoutAlign="space-around center"> + <span>{{ text }}</span> + <app-svg-icon [type]="iconType" [icon]="iconBtn" [iconColor]="'currentColor'"></app-svg-icon> + </div> + </button> +</ng-container> + <ng-container *ngIf="style === buttonTypeEnum.Secondary"> <button class="btn-regular secondary" type="{{ type }}" (click)="doAction()" [disabled]="disabled"> <div *ngIf="!iconBtn" [ngClass]="extraClass" class="text">{{ text }}</div> diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index c3baa6efc..56e9707c1 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -70,7 +70,6 @@ button { } } &.modal-primary { - background: $primary-color; border: none; width: 100%; @include btn-bold; @@ -89,6 +88,24 @@ button { } } } + &.modal-secondary { + border: none; + width: 100%; + @include btn-regular; + .text { + display: flex; + text-align: center; + align-items: center; + justify-content: center; + text-align: center; + margin: auto; + color: $grey-1; + width: auto; + &.withIcon { + color: $grey-1; + } + } + } &.secondary { div:first-child { width: unset; diff --git a/src/app/shared/components/button/buttonType.enum.ts b/src/app/shared/components/button/buttonType.enum.ts index 58f1c760d..93b2cba45 100644 --- a/src/app/shared/components/button/buttonType.enum.ts +++ b/src/app/shared/components/button/buttonType.enum.ts @@ -9,5 +9,6 @@ export enum ButtonType { CheckButton, searchIcon, modalPrimary, + modalSecondary, TagCloudButton, } 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 fa91bb7c0..d5c3dc99c 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.html +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.html @@ -10,11 +10,15 @@ </div> <p>{{ content }}</p> <div class="footerModal" fxLayout="row" fxLayoutAlign="space-around center" fxLayoutGap="8px"> - <app-button (action)="closeModal(false)" [text]="'Annuler'" [style]="buttonTypeEnum.Secondary"></app-button> + <app-button + (action)="closeModal(false)" + [text]="'Annuler'" + [style]="buttonTypeEnum.modalSecondary" + ></app-button> <app-button (action)="closeModal(true)" [text]="customConfirmationText ? customConfirmationText : 'Confirmer'" - [style]="buttonTypeEnum.Primary" + [style]="buttonTypeEnum.modalPrimary" ></app-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 1cdff28c3..5cc9a355a 100644 --- a/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss +++ b/src/app/shared/components/modal-confirmation/modal-confirmation.component.scss @@ -32,22 +32,10 @@ } .footerModal { gap: 8px; + app-button { + flex: 1; + } } } } } - -::ng-deep .modal app-button { - margin-right: 0 !important; - .text { - width: 150px !important; - height: 36px !important; - padding: 8px 0 !important; - white-space: nowrap; - box-sizing: border-box; - } - .text:first-child { - font-size: 14px !important; - line-height: 18px !important; - } -} diff --git a/src/app/structure-list/components/card/card.component.scss b/src/app/structure-list/components/card/card.component.scss index 7d0eca6a0..0613c3804 100644 --- a/src/app/structure-list/components/card/card.component.scss +++ b/src/app/structure-list/components/card/card.component.scss @@ -36,6 +36,7 @@ .distanceStructure { @include lato-regular-16; color: $grey-3; + text-align: right; } } diff --git a/src/app/structure-list/components/modal-filter/modal-filter.component.html b/src/app/structure-list/components/modal-filter/modal-filter.component.html index f6e9bd320..ad48225b7 100644 --- a/src/app/structure-list/components/modal-filter/modal-filter.component.html +++ b/src/app/structure-list/components/modal-filter/modal-filter.component.html @@ -79,7 +79,14 @@ fxLayoutAlign="center center" [ngClass]="{ backDropModalFooter: getModalType() === 'moreFilters' }" > - <a class="reset" (click)="clearFilters()" tabindex="0">Effacer</a> + <div class="half-width"> + <app-button + [style]="buttonTypeEnum.modalSecondary" + [text]="'Effacer'" + (click)="clearFilters()" + tabindex="0" + ></app-button> + </div> <div class="half-width"> <app-button [style]="buttonTypeEnum.modalPrimary" @@ -151,7 +158,14 @@ [ngClass]="{ backDropModalFooter: getModalType() === 'moreFilters' }" *ngIf="getModalType() !== 'moreFilters'" > - <a class="reset" (click)="clearFilters()" tabindex="0">Effacer</a> + <div class="half-width"> + <app-button + [style]="buttonTypeEnum.modalSecondary" + [text]="'Effacer'" + (click)="clearFilters()" + tabindex="0" + ></app-button> + </div> <div class="half-width"> <app-button [style]="buttonTypeEnum.modalPrimary" diff --git a/src/app/structure-list/components/modal-filter/modal-filter.component.scss b/src/app/structure-list/components/modal-filter/modal-filter.component.scss index 58425c1a5..9117eaa70 100644 --- a/src/app/structure-list/components/modal-filter/modal-filter.component.scss +++ b/src/app/structure-list/components/modal-filter/modal-filter.component.scss @@ -7,16 +7,28 @@ @import '../../../../assets/scss/z-index'; .modalaccompaniment { - left: 205px; + left: 212px; + @media #{$large-desktop} { + left: 263px; + } } .modaltraining { - left: 305px; + left: 331px; + @media #{$large-desktop} { + left: 407px; + } } .modalpublic { - left: 405px; + left: 431px; + @media #{$large-desktop} { + left: 503px; + } } .modalequipments { - left: 505px; + left: 519px; + @media #{$large-desktop} { + left: 593px; + } } .maxModal .blockLigne { box-sizing: border-box; @@ -136,7 +148,7 @@ .footer { box-sizing: border-box; height: 50px; - padding: 0.5rem 0.5rem 0.5rem 0; + padding: 0.5rem; .reset { width: 45%; text-align: center; @@ -144,6 +156,7 @@ } .half-width { width: 50%; + padding: 0 4px; } } } diff --git a/src/app/structure-list/components/structure-list-search/structure-list-search.component.scss b/src/app/structure-list/components/structure-list-search/structure-list-search.component.scss index 4605ae0bc..989a130a3 100644 --- a/src/app/structure-list/components/structure-list-search/structure-list-search.component.scss +++ b/src/app/structure-list/components/structure-list-search/structure-list-search.component.scss @@ -20,6 +20,7 @@ input { @include lato-regular-13; @include input-search; + margin-top: unset; } .inputSearch { padding: 6px 10px 6px 6px; @@ -30,6 +31,7 @@ height: 36px; border-radius: 50px; margin-right: 0.25rem; + height: 40px; @media #{$large-desktop} { width: 300px; min-width: 250px; @@ -41,6 +43,7 @@ } .container { width: 100%; + height: 40px; .separation { border-right: solid 1px $grey-4; width: 5px; @@ -60,7 +63,7 @@ .btnSection { width: 100%; @media #{$large-tablet} { - justify-content: center !important; + display: contents !important; } button { background: $white; @@ -175,6 +178,12 @@ } } } +::ng-deep .btn-regular.tertiary { + height: 40px !important; + div { + line-height: normal; + } +} .last-button { margin-left: auto; } @@ -241,6 +250,7 @@ a { margin: 0.5rem 0 0 0; .title { margin-top: 5px; + color: $grey-3; } .reset-icon { padding-top: 0.2rem; diff --git a/src/app/structure-list/structure-list.component.scss b/src/app/structure-list/structure-list.component.scss index a52dd4f03..00dc7853e 100644 --- a/src/app/structure-list/structure-list.component.scss +++ b/src/app/structure-list/structure-list.component.scss @@ -30,6 +30,14 @@ border-bottom: unset !important; } +::ng-deep .btn-regular.secondary, +.btn-regular.secondary:hover { + margin-top: 8px; + .text { + height: 30px !important; + } +} + .structureList-details { position: absolute; top: 0; -- GitLab From 1ffc9ec7872038465f58cce1937b265bc097e514 Mon Sep 17 00:00:00 2001 From: Marlene Simondant <msimondant@grandlyon.com> Date: Fri, 25 Mar 2022 21:58:11 +0100 Subject: [PATCH 192/199] fix(carto): modal filters & add structure button styles --- .../components/modal-filter/modal-filter.component.scss | 8 ++++---- src/app/structure-list/structure-list.component.scss | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/structure-list/components/modal-filter/modal-filter.component.scss b/src/app/structure-list/components/modal-filter/modal-filter.component.scss index 9117eaa70..be2d034ef 100644 --- a/src/app/structure-list/components/modal-filter/modal-filter.component.scss +++ b/src/app/structure-list/components/modal-filter/modal-filter.component.scss @@ -9,25 +9,25 @@ .modalaccompaniment { left: 212px; @media #{$large-desktop} { - left: 263px; + left: 273px; } } .modaltraining { left: 331px; @media #{$large-desktop} { - left: 407px; + left: 417px; } } .modalpublic { left: 431px; @media #{$large-desktop} { - left: 503px; + left: 513px; } } .modalequipments { left: 519px; @media #{$large-desktop} { - left: 593px; + left: 603px; } } .maxModal .blockLigne { diff --git a/src/app/structure-list/structure-list.component.scss b/src/app/structure-list/structure-list.component.scss index 00dc7853e..c8037b9ca 100644 --- a/src/app/structure-list/structure-list.component.scss +++ b/src/app/structure-list/structure-list.component.scss @@ -34,7 +34,7 @@ .btn-regular.secondary:hover { margin-top: 8px; .text { - height: 30px !important; + height: 22px !important; } } -- GitLab From 3a0adddd6fa57204709fb5753b0111c3e1f96fa1 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Sun, 27 Mar 2022 20:34:44 +0200 Subject: [PATCH 193/199] feat: add small-text on add structure button --- .../shared/components/button/button.component.scss | 3 +++ src/app/structure-list/structure-list.component.html | 1 + src/app/structure-list/structure-list.component.scss | 11 +---------- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index 56e9707c1..61843219e 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -123,6 +123,9 @@ button { color: $grey-1; } } + .small-text { + height: 22px !important; + } } &.tertiary { div:first-child { diff --git a/src/app/structure-list/structure-list.component.html b/src/app/structure-list/structure-list.component.html index 8f5a9dfab..070db1154 100644 --- a/src/app/structure-list/structure-list.component.html +++ b/src/app/structure-list/structure-list.component.html @@ -10,6 +10,7 @@ (action)="addStructure()" [text]="'Ajouter une structure'" [style]="buttonTypeEnum.Secondary" + [extraClass]="'small-text'" ></app-button> </div> diff --git a/src/app/structure-list/structure-list.component.scss b/src/app/structure-list/structure-list.component.scss index c8037b9ca..da4cbbfb6 100644 --- a/src/app/structure-list/structure-list.component.scss +++ b/src/app/structure-list/structure-list.component.scss @@ -17,8 +17,7 @@ display: flex; flex-direction: row; align-items: center; - margin-left: 1rem; - margin-right: 0.5rem; + margin: 8px 16px; .nbStructuresLabel { @include lato-regular-14; color: $grey-3; @@ -30,14 +29,6 @@ border-bottom: unset !important; } -::ng-deep .btn-regular.secondary, -.btn-regular.secondary:hover { - margin-top: 8px; - .text { - height: 22px !important; - } -} - .structureList-details { position: absolute; top: 0; -- GitLab From 5741668a7da687ae99fcd3939aee42d6d2bbe79b Mon Sep 17 00:00:00 2001 From: Etienne LOUPIAS <eloupias@grandlyon.com> Date: Mon, 28 Mar 2022 08:35:29 +0200 Subject: [PATCH 194/199] fix(onboarding): structure choice styles --- .../profile-structure-choice.component.html | 2 +- .../profile-structure-choice.component.scss | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html index 68d436c7f..0c1388708 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.html @@ -47,7 +47,7 @@ <app-svg-icon class="form-icon" *ngIf="isSelectedStructure(structure)" - [iconClass]="'icon-32'" + [iconClass]="'icon-26'" [type]="'form'" [icon]="'validate'" ></app-svg-icon> diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss index 939b2085d..e238ad226 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss @@ -56,7 +56,7 @@ .form-list { cursor: pointer; - height: 76px; + height: 68px; border-width: 2px; border-style: solid; border-color: $white; @@ -107,7 +107,7 @@ @include lato-regular-13; font-style: italic; color: $grey-3; - margin: 6px 0px; + margin: 4px 0px; } .create-text { -- GitLab From 168ff2b33b42bb29539d156383ebedcf0c14e741 Mon Sep 17 00:00:00 2001 From: Etienne LOUPIAS <eloupias@grandlyon.com> Date: Mon, 28 Mar 2022 09:10:08 +0200 Subject: [PATCH 195/199] fix(onboarding): structure choice styles --- .../profile-structure-choice.component.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss index e238ad226..51521af1e 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss @@ -107,7 +107,7 @@ @include lato-regular-13; font-style: italic; color: $grey-3; - margin: 4px 0px; + margin: 4px 0px 0px 0px; } .create-text { -- GitLab From e7521d34b547861de53bef4569b69761c1a57e8b Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Mon, 28 Mar 2022 14:20:59 +0200 Subject: [PATCH 196/199] feat: cleaning profile --- .../profile-employer-selection.component.ts | 2 -- .../form-view/profile-form/profile-form.component.ts | 7 ------- .../profile-job-selection.component.ts | 11 ++++------- 3 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts index 4f9d25a74..f7a0a4c52 100644 --- a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.ts @@ -26,7 +26,6 @@ export class ProfileEmployerSelectionComponent { name: searchString, validated: false, }); - console.table(searchString); this.validateForm.emit(); } @@ -36,7 +35,6 @@ export class ProfileEmployerSelectionComponent { name: employer.name, validated: employer.validated, }); - this.employers = []; this.validateForm.emit(); } diff --git a/src/app/form/form-view/profile-form/profile-form.component.ts b/src/app/form/form-view/profile-form/profile-form.component.ts index 92556aac9..516d69c4a 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.ts +++ b/src/app/form/form-view/profile-form/profile-form.component.ts @@ -30,13 +30,6 @@ export class ProfileFormComponent { this.pagesValidation[profileFormStep.profileJobSelection] = { valid: this.profileForm.get('job').get('name').valid, }; - // this.pagesValidation[profileFormStep.profileStructureChoice] = { - // valid: this.profileForm.get('structure').valid, - // }; - // this.pagesValidation[profileFormStep.profileMailSentInfo] = { - // valid: true, - // }; - this.updatePageValid(); } diff --git a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts index 0eafdb7dd..2915e5442 100644 --- a/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts +++ b/src/app/form/form-view/profile-form/profile-job-selection/profile-job-selection.component.ts @@ -19,7 +19,10 @@ export class ProfileJobSelectionComponent implements OnInit { constructor(private profileService: ProfileService) {} ngOnInit(): void { - this.getJobs(); + // getJobs + this.profileService.getJobs().subscribe((jobs) => { + this.jobs = [...jobs, new Job({ name: 'Autre' })]; + }); } public selectedResult(job: Job): void { @@ -57,10 +60,4 @@ export class ProfileJobSelectionComponent implements OnInit { }); this.validateForm.emit(); } - - private getJobs() { - this.profileService.getJobs().subscribe((jobs) => { - this.jobs = [...jobs, new Job({ name: 'Autre' })]; - }); - } } -- GitLab From 72f034a6e36285146e3810aedf6aff4b5bd8d5f5 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Mon, 28 Mar 2022 14:37:46 +0200 Subject: [PATCH 197/199] clean code --- .../footer-form/footer-form.component.html | 13 ----- .../account-credentials.component.ts | 6 +- .../account-form/account-form.component.ts | 58 +++++-------------- .../account-info/account-info.component.html | 6 +- .../account-info/account-info.component.ts | 5 +- .../account-newsletter.component.scss | 0 .../account-newsletter.component.ts | 7 +-- ...ffer-other-structure-choice.component.scss | 0 ...-offer-other-structure-choice.component.ts | 1 - 9 files changed, 20 insertions(+), 76 deletions(-) delete mode 100644 src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.scss delete mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.scss diff --git a/src/app/form/footer-form/footer-form.component.html b/src/app/form/footer-form/footer-form.component.html index 2c71ace5c..e196d9891 100644 --- a/src/app/form/footer-form/footer-form.component.html +++ b/src/app/form/footer-form/footer-form.component.html @@ -13,21 +13,8 @@ [iconBtn]="'chevronLeft'" ></app-button> - <!-- <app-button *ngIf="hasFinishButton()" (action)="finishedModal()" [text]="btnName[2]" [iconBtn]="'flag'"></app-button> --> <app-button *ngIf="isLastFormStep" (action)="goToHome()" [text]="'Ok'" [style]="buttonTypeEnum.Primary"></app-button> - <!-- temp remove --> - <!-- <app-button - *ngIf="false" - (action)="nextPage()" - [text]="btnName[1]" - [iconBtn]="'chevronRight'" - [iconType]="'form'" - [iconPos]="'right'" - [style]="buttonTypeEnum.Primary" - > - </app-button> --> - <app-button *ngIf="!isLastFormStep && !isNextFormTransition" (action)="nextPage()" diff --git a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts index ab0c46344..b8b4821a1 100644 --- a/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts +++ b/src/app/form/form-view/account-form/account-credentials/account-credentials.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { User } from '../../../../models/user.model'; import { CustomRegExp } from '../../../../utils/CustomRegExp'; @@ -8,7 +8,7 @@ import { CustomRegExp } from '../../../../utils/CustomRegExp'; templateUrl: './account-credentials.component.html', styleUrls: ['./account-credentials.component.scss'], }) -export class AccountCredentialsComponent implements OnInit { +export class AccountCredentialsComponent { @Input() accountForm: FormGroup; @Input() isAccountMode: boolean; @Input() profile: User; @@ -17,9 +17,7 @@ export class AccountCredentialsComponent implements OnInit { public isShowConfirmPassword = false; public isShowPassword = false; - constructor() {} - ngOnInit(): void {} public showPassword(): void { this.isShowPassword = !this.isShowPassword; } diff --git a/src/app/form/form-view/account-form/account-form.component.ts b/src/app/form/form-view/account-form/account-form.component.ts index 872f9d1d2..ec76a5bf4 100644 --- a/src/app/form/form-view/account-form/account-form.component.ts +++ b/src/app/form/form-view/account-form/account-form.component.ts @@ -35,52 +35,20 @@ export class AccountFormComponent implements OnChanges { } } public setValidationsForm(): void { - if (this.isClaimMode) { - // this.pagesValidation[PageTypeEnum.summary] = { valid: true }; - this.pagesValidation[accountFormStep.accountInfo] = { - valid: - this.accountForm.get('surname').valid && - this.accountForm.get('name').valid && - this.accountForm.get('phone').valid, - }; - this.pagesValidation[accountFormStep.accountCredentials] = { - valid: - this.accountForm.get('email').valid && - this.accountForm.get('password').valid && - this.accountForm.get('confirmPassword').valid, - }; - this.updatePageValid(); - } else if (this.isAccountMode) { - this.pagesValidation[accountFormStep.accountInfo] = { - valid: - this.accountForm.get('surname').valid && - this.accountForm.get('name').valid && - this.accountForm.get('phone').valid, - }; - this.pagesValidation[accountFormStep.accountCredentials] = { - valid: - this.accountForm.get('email').valid && - this.accountForm.get('password').valid && - this.accountForm.get('confirmPassword').valid, - }; - this.updatePageValid(); - } else { - // this.pagesValidation[PageTypeEnum.summary] = { valid: true }; - this.pagesValidation[accountFormStep.accountInfo] = { - valid: - this.accountForm.get('surname').valid && - this.accountForm.get('name').valid && - this.accountForm.get('phone').valid, - }; - this.pagesValidation[accountFormStep.accountCredentials] = { - valid: - this.accountForm.get('email').valid && - this.accountForm.get('password').valid && - this.accountForm.get('confirmPassword').valid, - }; + this.pagesValidation[accountFormStep.accountInfo] = { + valid: + this.accountForm.get('surname').valid && + this.accountForm.get('name').valid && + this.accountForm.get('phone').valid, + }; + this.pagesValidation[accountFormStep.accountCredentials] = { + valid: + this.accountForm.get('email').valid && + this.accountForm.get('password').valid && + this.accountForm.get('confirmPassword').valid, + }; - this.updatePageValid(); - } + this.updatePageValid(); } public verifyUserExist(inputEmail): void { diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.html b/src/app/form/form-view/account-form/account-info/account-info.component.html index d99977dd3..d9a40b8a7 100644 --- a/src/app/form/form-view/account-form/account-info/account-info.component.html +++ b/src/app/form/form-view/account-form/account-info/account-info.component.html @@ -1,8 +1,4 @@ -<form - [formGroup]="accountForm" - *ngIf="accountForm && !profile" - (keyup.enter)="isPageValid && !isEditMode ? nextPage() : null" -> +<form [formGroup]="accountForm" *ngIf="accountForm && !profile"> <div class="title"> <h3>Qui êtes-vous ?</h3> <p>Vous pourrez choisir de rendre visibles ces informations sur votre profil public</p> diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.ts b/src/app/form/form-view/account-form/account-info/account-info.component.ts index 185a6f5c4..7c0075adc 100644 --- a/src/app/form/form-view/account-form/account-info/account-info.component.ts +++ b/src/app/form/form-view/account-form/account-info/account-info.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { User } from '../../../../models/user.model'; import { Utils } from '../../../../utils/utils'; @@ -8,7 +8,7 @@ import { Utils } from '../../../../utils/utils'; templateUrl: './account-info.component.html', styleUrls: ['./account-info.component.scss'], }) -export class AccountInfoComponent implements OnInit { +export class AccountInfoComponent { @Input() accountForm: FormGroup; @Input() isClaimMode: boolean; @Input() profile: User; @@ -17,7 +17,6 @@ export class AccountInfoComponent implements OnInit { constructor(public utils: Utils) {} - ngOnInit(): void {} public setValidationsForm() { this.validateForm.emit(); } diff --git a/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.scss b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.ts b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.ts index e3ed34404..ca3eaed43 100644 --- a/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.ts +++ b/src/app/form/form-view/account-form/account-newsletter/account-newsletter.component.ts @@ -1,19 +1,16 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { User } from '../../../../models/user.model'; @Component({ selector: 'app-account-newsletter', templateUrl: './account-newsletter.component.html', - styleUrls: ['./account-newsletter.component.scss'], }) -export class AccountNewsletterComponent implements OnInit { +export class AccountNewsletterComponent { @Input() accountForm: FormGroup; @Input() profile: User; @Output() acceptNewsletter = new EventEmitter<any>(); - constructor() {} - ngOnInit(): void {} public acceptReceiveNewsletter(accepts: boolean) { this.acceptNewsletter.emit(accepts); } diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.scss b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts index 3fe30b7dd..2c15fe9e0 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-other-structure-choice/personal-offer-other-structure-choice.component.ts @@ -4,7 +4,6 @@ import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-personal-offer-other-structure-choice', templateUrl: './personal-offer-other-structure-choice.component.html', - styleUrls: ['./personal-offer-other-structure-choice.component.scss'], }) export class PersonalOfferOtherStructureChoiceComponent { @Input() structureName: string; -- GitLab From a303eb33939f6d7d023e4ee871e5074287c8d0cc Mon Sep 17 00:00:00 2001 From: Yoan VALLET <ext.sopra.yvallet@grandlyon.com> Date: Mon, 28 Mar 2022 14:47:47 +0200 Subject: [PATCH 198/199] feat: set no-max-width to global in form-view --- .../form/form-view/account-form/account-form.component.scss | 3 --- .../form/form-view/account-form/account-form.component.ts | 1 - src/app/form/form-view/form-view.component.scss | 5 ++++- .../information-step/information-step.component.scss | 6 ------ .../personal-offer-form/personal-offer-form.component.scss | 3 --- .../personal-offer-form/personal-offer-form.component.ts | 1 - .../form/form-view/profile-form/profile-form.component.scss | 3 --- .../form/form-view/profile-form/profile-form.component.ts | 1 - .../form-view/structure-form/structure-form.component.scss | 3 --- .../form-view/structure-form/structure-form.component.ts | 1 - 10 files changed, 4 insertions(+), 23 deletions(-) delete mode 100644 src/app/form/form-view/account-form/account-form.component.scss delete mode 100644 src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss delete mode 100644 src/app/form/form-view/profile-form/profile-form.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-form.component.scss diff --git a/src/app/form/form-view/account-form/account-form.component.scss b/src/app/form/form-view/account-form/account-form.component.scss deleted file mode 100644 index e5aaa88a0..000000000 --- a/src/app/form/form-view/account-form/account-form.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -.no-max-width { - max-width: none; -} diff --git a/src/app/form/form-view/account-form/account-form.component.ts b/src/app/form/form-view/account-form/account-form.component.ts index 872f9d1d2..83324c68a 100644 --- a/src/app/form/form-view/account-form/account-form.component.ts +++ b/src/app/form/form-view/account-form/account-form.component.ts @@ -9,7 +9,6 @@ import { accountFormStep } from './accountFormStep.enum'; @Component({ selector: 'app-account-form', templateUrl: './account-form.component.html', - styleUrls: ['./account-form.component.scss'], }) export class AccountFormComponent implements OnChanges { @Input() nbSteps: number; diff --git a/src/app/form/form-view/form-view.component.scss b/src/app/form/form-view/form-view.component.scss index d9cedee76..301de21b4 100644 --- a/src/app/form/form-view/form-view.component.scss +++ b/src/app/form/form-view/form-view.component.scss @@ -14,10 +14,13 @@ background: $white; border-radius: 8px; border: 1px solid $grey-6; - padding: 32px 24px 32px 48px; + padding: 32px 48px; * { max-width: 600px; } + .no-max-width { + max-width: none; + } } ::ng-deep.title { diff --git a/src/app/form/form-view/global-components/information-step/information-step.component.scss b/src/app/form/form-view/global-components/information-step/information-step.component.scss index 7e5a39408..91ab20bfb 100644 --- a/src/app/form/form-view/global-components/information-step/information-step.component.scss +++ b/src/app/form/form-view/global-components/information-step/information-step.component.scss @@ -1,8 +1,5 @@ @import '../../../../../assets/scss/typography'; @import '../../../../../assets/scss/color'; -.no-max-width { - max-width: none; -} .information-step-container { display: flex; @@ -11,9 +8,6 @@ justify-content: center; min-height: inherit; height: 450px; - &.no-max-width { - max-width: none; - } svg { width: 100%; max-width: 200px; diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss deleted file mode 100644 index e5aaa88a0..000000000 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -.no-max-width { - max-width: none; -} diff --git a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts index e4c626975..90a861d08 100644 --- a/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts +++ b/src/app/form/form-view/personal-offer-form/personal-offer-form.component.ts @@ -7,7 +7,6 @@ import { personalOfferFormStep } from './personalOfferFormStep.enum'; @Component({ selector: 'app-personal-offer-form', templateUrl: './personal-offer-form.component.html', - styleUrls: ['./personal-offer-form.component.scss'], }) export class PersonalOfferFormComponent { @Input() nbSteps: number; diff --git a/src/app/form/form-view/profile-form/profile-form.component.scss b/src/app/form/form-view/profile-form/profile-form.component.scss deleted file mode 100644 index e5aaa88a0..000000000 --- a/src/app/form/form-view/profile-form/profile-form.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -.no-max-width { - max-width: none; -} diff --git a/src/app/form/form-view/profile-form/profile-form.component.ts b/src/app/form/form-view/profile-form/profile-form.component.ts index 516d69c4a..939bda237 100644 --- a/src/app/form/form-view/profile-form/profile-form.component.ts +++ b/src/app/form/form-view/profile-form/profile-form.component.ts @@ -6,7 +6,6 @@ import { profileFormStep } from './profileFormStep.enum'; @Component({ selector: 'app-profile-form', templateUrl: './profile-form.component.html', - styleUrls: ['./profile-form.component.scss'], }) export class ProfileFormComponent { @Input() profileForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-form.component.scss b/src/app/form/form-view/structure-form/structure-form.component.scss deleted file mode 100644 index e5aaa88a0..000000000 --- a/src/app/form/form-view/structure-form/structure-form.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -.no-max-width { - max-width: none; -} diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index 66bda6dfd..e92ac5e5b 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -13,7 +13,6 @@ import { structureFormStep } from './structureFormStep.enum'; @Component({ selector: 'app-structure-form', templateUrl: './structure-form.component.html', - styleUrls: ['./structure-form.component.scss'], }) export class StructureFormComponent implements OnChanges { @Input() nbSteps: number; -- GitLab From d65962ffd64fdc0b18d00496393d342b5966b6c0 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Mon, 28 Mar 2022 16:18:49 +0200 Subject: [PATCH 199/199] clean code --- .../account-info/account-info.component.scss | 0 .../account-info/account-info.component.ts | 1 - src/app/form/form-view/form-view.component.ts | 6 ++--- src/app/form/form-view/form-view.module.ts | 4 --- .../progress-bar/progress-bar.component.ts | 2 -- .../public-accompaniment.component.html | 1 - .../public-accompaniment.component.scss | 0 .../public-accompaniment.component.spec.ts | 25 ------------------- .../public-accompaniment.component.ts | 15 ----------- .../training-type.component.html | 1 - .../training-type.component.scss | 0 .../training-type.component.spec.ts | 25 ------------------- .../training-type/training-type.component.ts | 15 ----------- .../structure-access-modality.component.scss | 0 .../structure-access-modality.component.ts | 1 - ...ucture-accompaniment-choice.component.scss | 0 ...tructure-accompaniment-choice.component.ts | 1 - ...structure-choice-completion.component.scss | 0 .../structure-choice-completion.component.ts | 1 - .../structure-consent.component.ts | 5 +--- ...tructure-contact-completion.component.scss | 0 .../structure-contact-completion.component.ts | 1 - .../structure-contact.component.scss | 0 .../structure-contact.component.ts | 1 - .../structure-covid-info.component.scss | 1 - .../structure-covid-info.component.ts | 4 +-- .../structure-description.component.scss | 1 - ...gital-helping-accompaniment.component.scss | 0 ...digital-helping-accompaniment.component.ts | 1 - .../structure-form.component.ts | 12 +-------- .../structure-other-services.component.scss | 0 .../structure-other-services.component.ts | 1 - .../structure-pmr.component.scss | 0 .../structure-pmr/structure-pmr.component.ts | 1 - .../structure-public-target.component.scss | 0 .../structure-public-target.component.ts | 1 - .../structure-training-price.component.scss | 0 .../structure-training-price.component.ts | 3 --- .../structure-training-type.component.scss | 0 .../structure-training-type.component.ts | 1 - .../structure-type.component.scss | 0 .../structure-type.component.ts | 1 - .../structure-wifi.component.scss | 0 .../structure-wifi.component.ts | 1 - src/app/form/structure-form/form.component.ts | 2 +- 45 files changed, 7 insertions(+), 128 deletions(-) delete mode 100644 src/app/form/form-view/account-form/account-info/account-info.component.scss delete mode 100644 src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.html delete mode 100644 src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.scss delete mode 100644 src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.spec.ts delete mode 100644 src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.ts delete mode 100644 src/app/form/form-view/global-components/training-type/training-type.component.html delete mode 100644 src/app/form/form-view/global-components/training-type/training-type.component.scss delete mode 100644 src/app/form/form-view/global-components/training-type/training-type.component.spec.ts delete mode 100644 src/app/form/form-view/global-components/training-type/training-type.component.ts delete mode 100644 src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-contact/structure-contact.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-type/structure-type.component.scss delete mode 100644 src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.scss diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.scss b/src/app/form/form-view/account-form/account-info/account-info.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/account-form/account-info/account-info.component.ts b/src/app/form/form-view/account-form/account-info/account-info.component.ts index 7c0075adc..249b816b4 100644 --- a/src/app/form/form-view/account-form/account-info/account-info.component.ts +++ b/src/app/form/form-view/account-form/account-info/account-info.component.ts @@ -6,7 +6,6 @@ import { Utils } from '../../../../utils/utils'; @Component({ selector: 'app-account-info', templateUrl: './account-info.component.html', - styleUrls: ['./account-info.component.scss'], }) export class AccountInfoComponent { @Input() accountForm: FormGroup; diff --git a/src/app/form/form-view/form-view.component.ts b/src/app/form/form-view/form-view.component.ts index e5366508c..d5776889a 100644 --- a/src/app/form/form-view/form-view.component.ts +++ b/src/app/form/form-view/form-view.component.ts @@ -84,11 +84,9 @@ export class FormViewComponent implements OnInit { this.routeParam = this.router.routerState.snapshot.url.split('/')[2]; this.initPage(); - // this.isLoading = true; this.profileService.getProfile().then((user: User) => { this.profile = user; }); - // await this.setCategories(); // Check if it's a new structure or edit structure // this.isLoading = false; if (history.state.newUser) { @@ -108,6 +106,7 @@ export class FormViewComponent implements OnInit { this.linkedStructureId = data.user.pendingStructuresLink; this.currentPage = accountFormStep.accountInfo; } + //TODO: Edit mode // if (data.structure) { // this.isEditMode = true; // this.isWifiChoosen = true; @@ -160,6 +159,7 @@ export class FormViewComponent implements OnInit { this.structure = new Structure(); this.createStructureForm(this.structure); this.currentForm = this.structureForm; + //TODO: Edit mode // if (this.isEditMode) { // this.editForm = this.createStructureForm(structure); // } @@ -275,7 +275,7 @@ export class FormViewComponent implements OnInit { accessModality: this.loadArrayForCheckbox(structure.accessModality, true), publicsAccompaniment: this.loadArrayForCheckbox(structure.publicsAccompaniment, false), proceduresAccompaniment: this.loadArrayForCheckbox(structure.proceduresAccompaniment, false), - //TODO remettre les accompagnements à distance + //TODO: remettre ou migrer les données de accompagnements à distance remoteAccompaniment: new FormControl(false), otherDescription: new FormControl(structure.otherDescription), equipmentsAndServices: this.loadArrayForCheckbox(structure.equipmentsAndServices, false), diff --git a/src/app/form/form-view/form-view.module.ts b/src/app/form/form-view/form-view.module.ts index 76972b0cb..8d69c26d2 100644 --- a/src/app/form/form-view/form-view.module.ts +++ b/src/app/form/form-view/form-view.module.ts @@ -8,8 +8,6 @@ import { ProfileFormComponent } from './profile-form/profile-form.component'; import { PersonalOfferFormComponent } from './personal-offer-form/personal-offer-form.component'; import { InformationStepComponent } from './global-components/information-step/information-step.component'; import { AccountFormComponent } from './account-form/account-form.component'; -import { TrainingTypeComponent } from './global-components/training-type/training-type.component'; -import { PublicAccompanimentComponent } from './global-components/public-accompaniment/public-accompaniment.component'; import { ProfileEmployerSelectionComponent } from './profile-form/profile-employer-selection/profile-employer-selection.component'; import { ProfileJobSelectionComponent } from './profile-form/profile-job-selection/profile-job-selection.component'; import { ProfileStructureChoiceComponent } from './profile-form/profile-structure-choice/profile-structure-choice.component'; @@ -58,8 +56,6 @@ import { PersonalOfferGuard } from './guards/personalOffer.guard'; PersonalOfferOtherStructureChoiceComponent, InformationStepComponent, AccountFormComponent, - TrainingTypeComponent, - PublicAccompanimentComponent, ProfileEmployerSelectionComponent, ProfileJobSelectionComponent, ProfileStructureChoiceComponent, diff --git a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts index 9d0cb41f5..a6c49470c 100644 --- a/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts +++ b/src/app/form/form-view/global-components/progress-bar/progress-bar.component.ts @@ -14,8 +14,6 @@ export class ProgressBarComponent implements OnChanges { public progressStatus: number; public formTypeEnum = formType; - constructor() {} - ngOnChanges(changes: SimpleChanges): void { if (changes.currentPage) this.progressStatus = ((this.currentPage + 1) / this.nbSteps) * 100; } diff --git a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.html b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.html deleted file mode 100644 index 934916094..000000000 --- a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.html +++ /dev/null @@ -1 +0,0 @@ -<p>public-accompaniment works!</p> diff --git a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.scss b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.spec.ts b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.spec.ts deleted file mode 100644 index 39c47d7a3..000000000 --- a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PublicAccompanimentComponent } from './public-accompaniment.component'; - -describe('PublicAccompanimentComponent', () => { - let component: PublicAccompanimentComponent; - let fixture: ComponentFixture<PublicAccompanimentComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PublicAccompanimentComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PublicAccompanimentComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.ts b/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.ts deleted file mode 100644 index 58442f22f..000000000 --- a/src/app/form/form-view/global-components/public-accompaniment/public-accompaniment.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-public-accompaniment', - templateUrl: './public-accompaniment.component.html', - styleUrls: ['./public-accompaniment.component.scss'] -}) -export class PublicAccompanimentComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/src/app/form/form-view/global-components/training-type/training-type.component.html b/src/app/form/form-view/global-components/training-type/training-type.component.html deleted file mode 100644 index 33f30531e..000000000 --- a/src/app/form/form-view/global-components/training-type/training-type.component.html +++ /dev/null @@ -1 +0,0 @@ -<p>training-type works!</p> diff --git a/src/app/form/form-view/global-components/training-type/training-type.component.scss b/src/app/form/form-view/global-components/training-type/training-type.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/global-components/training-type/training-type.component.spec.ts b/src/app/form/form-view/global-components/training-type/training-type.component.spec.ts deleted file mode 100644 index 77c0a6c13..000000000 --- a/src/app/form/form-view/global-components/training-type/training-type.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { TrainingTypeComponent } from './training-type.component'; - -describe('TrainingTypeComponent', () => { - let component: TrainingTypeComponent; - let fixture: ComponentFixture<TrainingTypeComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ TrainingTypeComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(TrainingTypeComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/form/form-view/global-components/training-type/training-type.component.ts b/src/app/form/form-view/global-components/training-type/training-type.component.ts deleted file mode 100644 index 74dffff2a..000000000 --- a/src/app/form/form-view/global-components/training-type/training-type.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-training-type', - templateUrl: './training-type.component.html', - styleUrls: ['./training-type.component.scss'] -}) -export class TrainingTypeComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.scss b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts index 6f8439c4f..217afb1e3 100644 --- a/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts +++ b/src/app/form/form-view/structure-form/structure-access-modality/structure-access-modality.component.ts @@ -5,7 +5,6 @@ import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-access-modality', templateUrl: './structure-access-modality.component.html', - styleUrls: ['./structure-access-modality.component.scss'], }) export class StructureAccessModalityComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.scss b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts index 20d368437..1ba18bc45 100644 --- a/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts +++ b/src/app/form/form-view/structure-form/structure-accompaniment-choice/structure-accompaniment-choice.component.ts @@ -4,7 +4,6 @@ import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-accompaniment-choice', templateUrl: './structure-accompaniment-choice.component.html', - styleUrls: ['./structure-accompaniment-choice.component.scss'], }) export class StructureAccompanimentChoiceComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.scss b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts index e01822112..16eead91a 100644 --- a/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts +++ b/src/app/form/form-view/structure-form/structure-choice-completion/structure-choice-completion.component.ts @@ -4,7 +4,6 @@ import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-choice-completion', templateUrl: './structure-choice-completion.component.html', - styleUrls: ['./structure-choice-completion.component.scss'], }) export class StructureChoiceCompletionComponent { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts index e5e930c67..4e4b39549 100644 --- a/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts +++ b/src/app/form/form-view/structure-form/structure-consent/structure-consent.component.ts @@ -6,14 +6,11 @@ import { FormGroup } from '@angular/forms'; templateUrl: './structure-consent.component.html', styleUrls: ['./structure-consent.component.scss'], }) -export class StructureConsentComponent implements OnInit { +export class StructureConsentComponent { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; @Output() onAcceptDataBeSaved = new EventEmitter<any>(); @Output() onAcceptOpenData = new EventEmitter<any>(); - constructor() {} - - ngOnInit(): void {} public acceptDataBeSaved(event: boolean): void { this.onAcceptDataBeSaved.emit(event); diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.scss b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts index 557a34274..de25c3330 100644 --- a/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts +++ b/src/app/form/form-view/structure-form/structure-contact-completion/structure-contact-completion.component.ts @@ -4,7 +4,6 @@ import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-contact-completion', templateUrl: './structure-contact-completion.component.html', - styleUrls: ['./structure-contact-completion.component.scss'], }) export class StructureContactCompletionComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.scss b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts index b313f699a..441560ad0 100644 --- a/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts +++ b/src/app/form/form-view/structure-form/structure-contact/structure-contact.component.ts @@ -5,7 +5,6 @@ import { Utils } from '../../../../utils/utils'; @Component({ selector: 'app-structure-contact', templateUrl: './structure-contact.component.html', - styleUrls: ['./structure-contact.component.scss'], }) export class StructureContactComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss index 59cffc01f..1140b0dd0 100644 --- a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss +++ b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.scss @@ -1,5 +1,4 @@ .textareaBlock { - max-width: 600px; p { text-align: right; } diff --git a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts index 565623240..31987b257 100644 --- a/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts +++ b/src/app/form/form-view/structure-form/structure-covid-info/structure-covid-info.component.ts @@ -6,12 +6,10 @@ import { AbstractControl, FormGroup } from '@angular/forms'; templateUrl: './structure-covid-info.component.html', styleUrls: ['./structure-covid-info.component.scss'], }) -export class StructureCovidInfoComponent implements OnInit { +export class StructureCovidInfoComponent { @Input() structureForm: FormGroup; @Input() isEditMode: boolean; - constructor() {} - ngOnInit(): void {} public getStructureControl(nameControl: string): AbstractControl { return this.structureForm.get(nameControl); } diff --git a/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss b/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss index 50531f05b..442bc463d 100644 --- a/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss +++ b/src/app/form/form-view/structure-form/structure-description/structure-description.component.scss @@ -1,5 +1,4 @@ .introduceStructure { - max-width: 600px; p { text-align: right; } diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts index fcc8c4569..df8e7c18a 100644 --- a/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts +++ b/src/app/form/form-view/structure-form/structure-digital-helping-accompaniment/structure-digital-helping-accompaniment.component.ts @@ -6,7 +6,6 @@ import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-digital-helping-accompaniment', templateUrl: './structure-digital-helping-accompaniment.component.html', - styleUrls: ['./structure-digital-helping-accompaniment.component.scss'], }) export class StructureDigitalHelpingAccompanimentComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-form.component.ts b/src/app/form/form-view/structure-form/structure-form.component.ts index e92ac5e5b..1bf91cbfa 100644 --- a/src/app/form/form-view/structure-form/structure-form.component.ts +++ b/src/app/form/form-view/structure-form/structure-form.component.ts @@ -129,8 +129,8 @@ export class StructureFormComponent implements OnChanges { } public setValidationsForm(): void { - console.log(this.structureForm); if (this.isClaimMode) { + //TODO: check claim mode // this.pagesValidation[structureFormStep.structureConsent] = { valid: this.userAcceptSavedDate }; // this.updatePageValid(); // } else if (this.isAccountMode) { @@ -198,16 +198,6 @@ export class StructureFormComponent implements OnChanges { name: 'Aides au numérique', }; - // this.pagesValidation[structureFormStep.structureOtherAccompaniment] = { - // valid: this.structureForm.get('otherDescription').value, - // name: 'Autres démarches proposés', - // // TODO : update with new page name / remove - // }; - // this.pagesValidation[structureFormStep.structureRemoteAccompaniment] = { - // valid: this.structureForm.get('remoteAccompaniment').valid, - // name: 'Accompagnement à distance', - // // TODO : update with new page name / remove - // }; this.pagesValidation[structureFormStep.structureTrainingType] = { valid: true, name: 'Ateliers au numérique proposés', diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.scss b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts index ea886bc0e..3834fdc11 100644 --- a/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts +++ b/src/app/form/form-view/structure-form/structure-other-services/structure-other-services.component.ts @@ -5,7 +5,6 @@ import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-other-services', templateUrl: './structure-other-services.component.html', - styleUrls: ['./structure-other-services.component.scss'], }) export class StructureOtherServicesComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.scss b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts index 8568aa91c..615282115 100644 --- a/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts +++ b/src/app/form/form-view/structure-form/structure-pmr/structure-pmr.component.ts @@ -4,7 +4,6 @@ import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-pmr', templateUrl: './structure-pmr.component.html', - styleUrls: ['./structure-pmr.component.scss'], }) export class StructurePmrComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts index 5e4aef1f3..b9dd2f43a 100644 --- a/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts +++ b/src/app/form/form-view/structure-form/structure-public-target/structure-public-target.component.ts @@ -6,7 +6,6 @@ import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-public-target', templateUrl: './structure-public-target.component.html', - styleUrls: ['./structure-public-target.component.scss'], }) export class StructurePublicTargetComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.scss b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts index 033129f89..dcf22bdff 100644 --- a/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts +++ b/src/app/form/form-view/structure-form/structure-training-price/structure-training-price.component.ts @@ -4,15 +4,12 @@ import { AbstractControl, FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-training-price', templateUrl: './structure-training-price.component.html', - styleUrls: ['./structure-training-price.component.scss'], }) export class StructureTrainingPriceComponent implements OnInit { @Input() structureForm: FormGroup; @Output() radioChange = new EventEmitter<any>(); @Output() validateForm = new EventEmitter<any>(); - constructor() {} - ngOnInit(): void { this.validateForm.emit(); } diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.scss b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts index 040c7e499..8f58dc6c6 100644 --- a/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts +++ b/src/app/form/form-view/structure-form/structure-training-type/structure-training-type.component.ts @@ -5,7 +5,6 @@ import { Category } from '../../../../structure-list/models/category.model'; @Component({ selector: 'app-structure-training-type', templateUrl: './structure-training-type.component.html', - styleUrls: ['./structure-training-type.component.scss'], }) export class StructureTrainingTypeComponent { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-type/structure-type.component.scss b/src/app/form/form-view/structure-form/structure-type/structure-type.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts b/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts index 3678d301f..46d4e63e6 100644 --- a/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts +++ b/src/app/form/form-view/structure-form/structure-type/structure-type.component.ts @@ -4,7 +4,6 @@ import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-type', templateUrl: './structure-type.component.html', - styleUrls: ['./structure-type.component.scss'], }) export class StructureTypeComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.scss b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts index 86019d03b..b78192a39 100644 --- a/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts +++ b/src/app/form/form-view/structure-form/structure-wifi/structure-wifi.component.ts @@ -4,7 +4,6 @@ import { FormGroup } from '@angular/forms'; @Component({ selector: 'app-structure-wifi', templateUrl: './structure-wifi.component.html', - styleUrls: ['./structure-wifi.component.scss'], }) export class StructureWifiComponent implements OnInit { @Input() structureForm: FormGroup; diff --git a/src/app/form/structure-form/form.component.ts b/src/app/form/structure-form/form.component.ts index d7a796f9a..29e9ebb37 100644 --- a/src/app/form/structure-form/form.component.ts +++ b/src/app/form/structure-form/form.component.ts @@ -22,7 +22,7 @@ import { StructureWithOwners } from '../../models/structureWithOwners.model'; import { RouterListenerService } from '../../services/routerListener.service'; import { NewsletterService } from '../../services/newsletter.service'; import { Utils } from '../../utils/utils'; - +//TODO: Delete whole component when form refacto is done @Component({ selector: 'app-structure-form', templateUrl: './form.component.html', -- GitLab