Commit bc2dcc7f authored by Hugo SUBTIL's avatar Hugo SUBTIL
Browse files

Merge branch 'dev' into 'master'

Dev

See merge request !187
parents eb18978c 0c835e14
Pipeline #19899 passed with stage
in 3 minutes and 53 seconds
......@@ -2,6 +2,33 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [1.11.0](https://forge.grandlyon.com///compare/v1.10.0...v1.11.0) (2022-01-12)
### Features
* refactor of reset password and change password ([e90b4a5](https://forge.grandlyon.com///commit/e90b4a5234b33bd6ab2c407c7157876b707a0009))
* **create-structure:** add alert when structure info is deprecated in structure modification modules ([f03fd00](https://forge.grandlyon.com///commit/f03fd00b0d4e979100ae23177d2386f6550dd02e))
* **map:** temp remove of france service makers. Use instead default makers ([c6f1a68](https://forge.grandlyon.com///commit/c6f1a68947d9f94ef6c9cde9d47cdc0f9205f626))
* design refacto for form, pop-up, carto and password-reset ([60337f9](https://forge.grandlyon.com///commit/60337f91071cb501cd80eb9914a564506d1c9a22))
* **newsletter:** admin can now see newsletter recipients at first loading ([8fa515a](https://forge.grandlyon.com///commit/8fa515acbe59fa0436a8b3017769d27dcbc2386f))
* add structure description shaping ([f01e39f](https://forge.grandlyon.com///commit/f01e39fbd60cdab1c4b7977102ba0027494f8c0b))
* **carto:** add 'Conseillers numérique' display on map and code refactor for pin style ([dbddccf](https://forge.grandlyon.com///commit/dbddccf4d66865a28c6ed1e445c2b5f08265a809))
* handle 0 as default of equipments ([a265f8d](https://forge.grandlyon.com///commit/a265f8de8cf8c86bf23a26523a4d5a49641100b6))
### Bug Fixes
* **profile:** update remove user from structure style ([6f56bee](https://forge.grandlyon.com///commit/6f56beec1a2e046e2ad29117021d392b693201b6))
* **structure-form:** add missing info alert in structure modification categories ([f959d45](https://forge.grandlyon.com///commit/f959d4594140bb9cb7e5e4964c2364379def9a74))
* **structure-form:** update internet add/remove items text ([d161279](https://forge.grandlyon.com///commit/d1612790d77d6e685f84831f64eaed30b85776f0))
* add space after ':' ([813fdc0](https://forge.grandlyon.com///commit/813fdc0e1d9b2d1ea24207f6e0b21deef2de272e))
* borken link un profil for editing structure and .gitlabci rollback ([f3e5884](https://forge.grandlyon.com///commit/f3e5884cb98c8d28802e80b3adeb84f279059bd2))
* fix create-structure typo ([46a8475](https://forge.grandlyon.com///commit/46a8475deead58480aaac8830a285588e99f1cc6))
* typo in title tag ([5f51a8f](https://forge.grandlyon.com///commit/5f51a8fa62b9983a5df0768656c1f599f0b4964b))
* **cicd:** add stop cmd for deploy job ([7c19cd0](https://forge.grandlyon.com///commit/7c19cd089c6104b8551a1cca57a6dd473a1bd616))
* **news:** fix scroll position when going on an article page ([1a9bd9d](https://forge.grandlyon.com///commit/1a9bd9d63ebf7155eee1a7495a1682e976d14c95))
## [1.10.0](https://forge.grandlyon.com///compare/v1.9.1...v1.10.0) (2021-12-22)
......
{
"name": "pamn",
"version": "1.10.0",
"version": "1.11.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
......
{
"name": "pamn",
"version": "1.10.0",
"version": "1.11.0",
"scripts": {
"ng": "ng",
"start": "ng serve --configuration=fr --proxy-config proxy.conf.json",
......
<div fxLayout="column" fxLayoutGap="5px" fxLayoutAlign="center center" class="userBlock">
<h2>Gestion abonnement newsletter</h2>
<div fxLayout="row">
<div fxLayout="row" fxLayoutGap="20px" fxLayoutAlign="center center">
<button (click)="copySubscription()">Copier les adresses dans le presse papier</button>
<button (click)="searchSubscribedEmail('')">Afficher tous les inscrits</button>
</div>
<div fxLayout="row">Il y a actuellement {{ subscriptionsCount }} abonnés à la newsletter.</div>
<div fxLayout="row">
......
......@@ -7,12 +7,4 @@ import { Component } from '@angular/core';
})
export class FooterComponent {
constructor() {}
public openLegalNotice(): void {
console.log('openLegalNotice');
}
public openContactDialog(): void {
console.log('openContactDialog');
}
}
......@@ -130,11 +130,11 @@
<p>Ces informations ne seront pas visibles sur la plateforme</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 ? 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>
<h4>Sinon, inscrivez-vous en suivant le formulaire ci-dessous :</h4>
</div>
<div class="form-group" fxLayout="column">
<label for="surname">Nom</label>
......@@ -243,16 +243,17 @@
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'"
[iconClass]="'validation-small'"
[type]="'form'"
[icon]="'validate'"
></app-svg-icon>
<app-svg-icon
*ngIf="accountForm.get('password').value.length < 8"
[iconClass]="'validation'"
[iconClass]="'validation-small'"
[type]="'form'"
[icon]="'notValidate'"
></app-svg-icon>
......@@ -266,18 +267,38 @@
>
<app-svg-icon
*ngIf="checkIfPasswordHasSpecialChar(accountForm.get('password').value)"
[iconClass]="'validation'"
[iconClass]="'validation-small'"
[type]="'form'"
[icon]="'validate'"
></app-svg-icon>
<app-svg-icon
*ngIf="!checkIfPasswordHasSpecialChar(accountForm.get('password').value)"
[iconClass]="'validation'"
[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),
......@@ -286,13 +307,13 @@
>
<app-svg-icon
*ngIf="checkIfPasswordHasUpperCase(accountForm.get('password').value)"
[iconClass]="'validation'"
[iconClass]="'validation-small'"
[type]="'form'"
[icon]="'validate'"
></app-svg-icon>
<app-svg-icon
*ngIf="!checkIfPasswordHasUpperCase(accountForm.get('password').value); s"
[iconClass]="'validation'"
[iconClass]="'validation-small'"
[type]="'form'"
[icon]="'notValidate'"
></app-svg-icon>
......@@ -306,20 +327,20 @@
>
<app-svg-icon
*ngIf="checkIfPasswordHasDigit(accountForm.get('password').value)"
[iconClass]="'validation'"
[iconClass]="'validation-small'"
[type]="'form'"
[icon]="'validate'"
></app-svg-icon>
<app-svg-icon
*ngIf="!checkIfPasswordHasDigit(accountForm.get('password').value)"
[iconClass]="'validation'"
[iconClass]="'validation-small'"
[type]="'form'"
[icon]="'notValidate'"
></app-svg-icon>
<p>un chiffre</p>
</li>
</ul>
<div fxLayout="row" fxLayoutGap="13px">
<div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px">
<input
[type]="isShowPassword ? 'text' : 'password'"
formControlName="password"
......@@ -350,7 +371,7 @@
</div>
<div class="form-group" fxLayout="column">
<label for="confirmPassword">Vérification du mot de passe</label>
<div fxLayout="row" fxLayoutGap="13px">
<div fxLayout="row" fxLayoutAlign="none center" fxLayoutGap="13px">
<input
[type]="isShowConfirmPassword ? 'text' : 'password'"
formControlName="confirmPassword"
......@@ -389,6 +410,18 @@
<div class="title">
<h3>Quelle structure voulez-vous réferencer ?</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">
......@@ -429,6 +462,20 @@
<div class="title">
<h3>Comment joindre votre structure ?</h3>
</div>
<p
class="missing-information"
*ngIf="
isEditMode && (!getStructureControl('contactPhone').valid || !getStructureControl('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">
......@@ -476,6 +523,15 @@
<h3>Quel type de structure ?</h3>
<p>1 seul choix possible</p>
</div>
<p class="missing-information" *ngIf="isEditMode && !getStructureControl('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]="
......@@ -490,6 +546,15 @@
<h3>Quelles sont les modalités d'accueil ?</h3>
<p>Plusieurs choix possibles</p>
</div>
<p class="missing-information" *ngIf="isEditMode && !getStructureControl('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">
<app-checkbox-form
*ngFor="let module of accessModality.modules"
......@@ -502,40 +567,53 @@
</div>
</div>
<div *ngIf="currentPage == pageTypeEnum.structureHours" class="page">
<div class="title">
<h3>Quels sont les horaires d'ouverture ?</h3>
<p class="notRequired">facultatif</p>
</div>
<app-hour-picker
*ngIf="hoursForm"
(updateForm)="updateHours($event)"
(updateFormError)="setHoursError()"
[structureInput]="hoursForm"
></app-hour-picker>
<div class="nextTitle">
<h3>Avez-vous des précisions à apporter sur les horaires ?</h3>
<p class="notRequired">facultatif</p>
<div class="section">
<div class="title">
<h3>Quels sont les horaires d'ouverture ?</h3>
<p class="notRequired">facultatif</p>
</div>
<app-hour-picker
*ngIf="hoursForm"
(updateForm)="updateHours($event)"
(updateFormError)="setHoursError()"
[structureInput]="hoursForm"
></app-hour-picker>
</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>
{{
getStructureControl('exceptionalClosures').value
? getStructureControl('exceptionalClosures').value.length
: 0
}}/500
</p>
<div>
<div class="title">
<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>
{{
getStructureControl('exceptionalClosures').value
? getStructureControl('exceptionalClosures').value.length
: 0
}}/500
</p>
</div>
</div>
</div>
<div *ngIf="currentPage == pageTypeEnum.structurePmr" class="page">
<div class="title">
<h3>Est-ce accessible pour les personnes à mobilité réduite ?</h3>
</div>
<p class="missing-information" *ngIf="isEditMode && !getStructureControl('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]="getStructureControl('pmrAccess').value"
(selectedEvent)="onRadioBtnChange('pmrAccess', $event)"
......@@ -550,7 +628,10 @@
<div class="collapse" [ngClass]="{ notCollapsed: !showWebsite }">
<div fxLayout="column">
<div class="collapseHeader" fxLayout="row" fxLayoutAlign=" center" (click)="toggleWebSite()">
<div class="titleCollapse">J’ajoute un site web</div>
<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>
......@@ -593,7 +674,14 @@
<div class="collapse" [ngClass]="{ notCollapsed: !showSocialNetwork }">
<div fxLayout="column">
<div class="collapseHeader" fxLayout="row" fxLayoutAlign=" center" (click)="toggleSocialNetwork()">
<div class="titleCollapse">J’ajoute les réseaux sociaux</div>
<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>
......@@ -612,7 +700,7 @@
<input
type="text"
(input)="setValidationsForm()"
placeholder="facebook.com/resonum"
placeholder="facebook.com/resin"
formControlName="facebook"
class="form-input withIcon"
/>
......@@ -644,7 +732,7 @@
<input
type="text"
(input)="setValidationsForm()"
placeholder="twitter.com/resonum"
placeholder="twitter.com/resin"
formControlName="twitter"
class="form-input withIcon"
/>
......@@ -677,7 +765,7 @@
type="text"
(input)="setValidationsForm()"
formControlName="instagram"
placeholder="instagram.com/resonum"
placeholder="instagram.com/resin"
class="form-input withIcon"
/>
......@@ -710,7 +798,7 @@
type="text"
(input)="setValidationsForm()"
formControlName="linkedin"
placeholder="linkedin.com/in/resonum"
placeholder="linkedin.com/in/resin"
class="form-input withIcon"
/>
<app-svg-icon
......@@ -742,6 +830,15 @@
<h3>Quel public peut venir vous consulter ?</h3>
<p>Plusieurs choix possibles</p>
</div>
<p class="missing-information" *ngIf="isEditMode && !getStructureControl('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"
......@@ -862,6 +959,15 @@
<div class="title">
<h3>Proposez vous un accompagnement à distance ?</h3>
</div>
<p class="missing-information" *ngIf="isEditMode && !getStructureControl('remoteAccompaniment').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]="getStructureControl('remoteAccompaniment').value"
(selectedEvent)="onRadioBtnChange('remoteAccompaniment', $event)"
......@@ -957,7 +1063,14 @@
fxLayoutAlign=" center"
(click)="toggleEquipmentsServices(equipment)"
>
<div class="titleCollapse">{{ equipment.module.text }}</div>
<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>
<div class="logo">
<svg class="show" aria-hidden="true">
<use [attr.xlink:href]="'assets/form/sprite.svg#show'"></use>
......@@ -976,6 +1089,7 @@
type="number"
(input)="setValidationsForm()"
formControlName="nbComputers"
min="0"
class="form-input nbEquipment"
/>
<app-svg-icon
......@@ -998,6 +1112,7 @@
type="number"
(input)="setValidationsForm()"
formControlName="nbTablets"
min="0"
class="form-input nbEquipment"
/>
<app-svg-icon
......@@ -1020,6 +1135,7 @@
type="number"
(input)="setValidationsForm()"
formControlName="nbPrinters"
min="0"
class="form-input nbEquipment"
/>
<app-svg-icon
......@@ -1042,6 +1158,7 @@
type="number"
(input)="setValidationsForm()"
formControlName="nbNumericTerminal"
min="0"
class="form-input nbEquipment"
/>
<app-svg-icon
......@@ -1064,6 +1181,7 @@
type="number"
(input)="setValidationsForm()"
formControlName="nbScanners"
min="0"
class="form-input nbEquipment"
/>
<app-svg-icon
......@@ -1168,20 +1286,23 @@
</div>
</form>
<div *ngIf="currentPage == pageTypeEnum.cgu" class="page">
<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 class="section">
<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>
<app-checkbox-form
[isChecked]="userAcceptSavedDate"
[text]="'J\'accepte'"
(checkEvent)="acceptDataBeSaved($event)"
>
</app-checkbox-form>
<div *ngIf="!profile">
<div class="title">
<h3>Acceptez-vous de recevoir des mails d'informations de la part de Res'in ?</h3>
......
......@@ -13,6 +13,11 @@
h3 {
margin: 0;
}
h4 {
margin-bottom: 16px;
}
.form {
background: white;
width: 100vw;
......@@ -158,7 +163,7 @@ h3 {
}
}
.title {
margin-bottom: 26px;
margin-bottom: 10px;
}
.nextTitle {
margin-bottom: 10px;
......@@ -187,6 +192,7 @@ h3 {
}
}
&.notRequired {
margin-top: 0px;
font-style: italic;
color: $secondary-color;
}
......@@ -296,15 +302,16 @@ h3 {
display: flex;
margin-left: 1%;
font-size: small;
align-items: center;
p {
margin-left: 10px;
margin-top: 12px;
margin-top: unset;
}
&.valid {
color: $green;
}
&.invalid {
color: $red;
color: $orange-warning;
}
}
.addressRow {
......@@ -432,6 +439,10 @@ img {
width: 100%;
@include cn-bold-16;
color: $grey-2;
p {
color: $grey-2;
@include cn-bold-16;
}
}
.collapseHeader {
height: 65px;
......@@ -446,6 +457,9 @@ img {
height: 100%;
fill: $grey-1;
}
}
.logo,
.titleCollapse {
.hide {
display: block;
}
......@@ -562,3 +576,16 @@ img {
max-width: 530px;
margin: 0 auto;
}
.section {
padding-bottom: 2rem;
}
.missing-information {
display: flex;
color: $orange-warning;
span {
margin-top: 12px;
margin-left: 1%;