style of advanced page

This commit is contained in:
Tykayn 2022-03-01 15:38:04 +01:00 committed by tykayn
parent c3433440d7
commit 1f04f12f1e
9 changed files with 176 additions and 136 deletions

View File

@ -1,8 +1,8 @@
<form [formGroup]="form" class="form-advanced-config"> <form [formGroup]="form" class="form-advanced-config">
<div class="rounded-block max_count_of_answers"> <div class="rounded-block max_count_of_answers">
<h3 class="title is-3"> <h2 class="title-advanced">
{{ 'advanced.limit_title' | translate }} {{ 'advanced.limit_title' | translate }}
</h3> </h2>
<div *ngIf="form.value.hasMaxCountOfAnswers"> <div *ngIf="form.value.hasMaxCountOfAnswers">
<label for="maxCountOfAnswers"> <label for="maxCountOfAnswers">
{{ 'advanced.limit_label' | translate }} {{ 'advanced.limit_label' | translate }}
@ -10,7 +10,6 @@
<input <input
#maxCountOfAnswers #maxCountOfAnswers
id="maxCountOfAnswers" id="maxCountOfAnswers"
matInput
type="number" type="number"
formControlName="maxCountOfAnswers" formControlName="maxCountOfAnswers"
required required
@ -18,28 +17,18 @@
</div> </div>
</div> </div>
<div class="rounded-block"> <div class="rounded-block">
<h3 class="title is-3"> <h2 class="title-advanced">
{{ 'advanced.custom_link' | translate }} {{ 'advanced.custom_link' | translate }}
</h3> </h2>
<label for="custom_url"> <label for="custom_url">
{{ 'advanced.custom_label' | translate }} {{ 'advanced.custom_label' | translate }}
</label> </label>
<p class="description small-text"> <p class="description small-text">
{{ 'advanced.custom_desc' | translate }} {{ 'advanced.custom_desc' | translate }}
</p> </p>
<br />
<div class="domain-custom-box"> <div class="domain-custom-box">
<div class="domain">{{ domain_url }}</div> <div class="domain">{{ domain_url }}</div>
<input <input class="inline-input" #custom_url id="custom_url" formControlName="custom_url" required />
class="inline-input"
#custom_url
matInput
id="custom_url"
placeholder="Url"
formControlName="custom_url"
required
/>
</div> </div>
<button <button
*ngIf="form.controls.custom_url.value && display_regen_slug" *ngIf="form.controls.custom_url.value && display_regen_slug"
@ -49,16 +38,15 @@
<i class="fa fa-recycle"></i> régénérer <i class="fa fa-recycle"></i> régénérer
</button> </button>
</div> </div>
<br />
<div class="rounded-block"> <div class="rounded-block">
<h3 class="title is-3"> <h2 class="title-advanced">
{{ 'advanced.password_title' | translate }} {{ 'advanced.password_title' | translate }}
</h3> </h2>
<p>
{{ 'advanced.password_title' | translate }}
</p>
<div class="password-box"> <div class="password-box">
<label for="password_first">
{{ 'advanced.password_label' | translate }}
</label>
<input <input
id="password_first" id="password_first"
[type]="displayClearPassword ? 'text' : 'password'" [type]="displayClearPassword ? 'text' : 'password'"
@ -67,6 +55,7 @@
/> />
<button <button
class="button" class="button"
*ngIf="display_password_clear_button"
[ngClass]="{ 'is-primary': displayClearPassword, 'is-info': !displayClearPassword }" [ngClass]="{ 'is-primary': displayClearPassword, 'is-info': !displayClearPassword }"
(click)="displayClearPassword = !displayClearPassword" (click)="displayClearPassword = !displayClearPassword"
> >
@ -74,16 +63,19 @@
<i class="fa fa-eye" *ngIf="!displayClearPassword"></i> <i class="fa fa-eye" *ngIf="!displayClearPassword"></i>
<i class="fa fa-eye-slash" *ngIf="displayClearPassword"></i> <i class="fa fa-eye-slash" *ngIf="displayClearPassword"></i>
</button> </button>
<label for="password_repeat">
{{ 'advanced.password_label_repeat' | translate }}
</label>
<input <input
#password #password
id="password" id="password_repeat"
matInput
[type]="displayClearPassword ? 'text' : 'password'" [type]="displayClearPassword ? 'text' : 'password'"
formControlName="password_repeat" formControlName="password_repeat"
required required
/> />
<button <button
class="button" class="button"
*ngIf="display_password_clear_button"
[ngClass]="{ 'is-primary': displayClearPassword, 'is-info': !displayClearPassword }" [ngClass]="{ 'is-primary': displayClearPassword, 'is-info': !displayClearPassword }"
(click)="displayClearPassword = !displayClearPassword" (click)="displayClearPassword = !displayClearPassword"
> >
@ -91,14 +83,17 @@
<i class="fa fa-eye" *ngIf="!displayClearPassword"></i> <i class="fa fa-eye" *ngIf="!displayClearPassword"></i>
<i class="fa fa-eye-slash" *ngIf="displayClearPassword"></i> <i class="fa fa-eye-slash" *ngIf="displayClearPassword"></i>
</button> </button>
<div class="pass-validation" *ngIf="form.value.password == form.value.password_repeat"> <div
class="pass-validation"
*ngIf="form.value.password.length && form.value.password == form.value.password_repeat"
>
<p class="pass-validation-text"> <p class="pass-validation-text">
<img class="icon" aria-hidden="true" src="assets/icons/check-grey-round.svg" /> <img class="icon" aria-hidden="true" src="assets/icons/check-grey-round.svg" />
{{ 'advanced.password_validation_ok' | translate }} {{ 'advanced.password_validation_ok' | translate }}
</p> </p>
</div> </div>
<div class="visibility_password_results"> <div class="visibility_password_results">
<label for="areResultsPublic" class="aside-label"> <label for="areResultsPublic" class="aside-label" id="label_areResultsPublic">
<input type="checkbox" formControlName="areResultsPublic" id="areResultsPublic" /> <input type="checkbox" formControlName="areResultsPublic" id="areResultsPublic" />
<span class="label-text"> <span class="label-text">
{{ 'advanced.password_display_without' | translate }} {{ 'advanced.password_display_without' | translate }}
@ -108,43 +103,62 @@
</div> </div>
</div> </div>
<div class="rounded-block permissions-modification"> <div class="rounded-block permissions-modification">
<h3 class="title is-3"> <h2 class="title-advanced">
{{ 'advanced.allowances_title' | translate }} {{ 'advanced.allowances_title' | translate }}
</h3> </h2>
<div class="choice"> <div class="choice">
<label for="self_can_change_answers"> <label for="self_can_change_answers" class="aside-label">
{{ 'advanced.allowances_own' | translate }}
</label>
<input type="radio" formControlName="whoCanChangeAnswers" value="self" id="self_can_change_answers" /> <input type="radio" formControlName="whoCanChangeAnswers" value="self" id="self_can_change_answers" />
<span class="label-text">
{{ 'advanced.allowances_own' | translate }}
</span>
</label>
</div> </div>
<div class="choice"> <div class="choice">
<label for="everybody_can_change_answers"> <label for="everybody_can_change_answers" class="aside-label">
{{ 'advanced.allowances_all' | translate }}
</label>
<input <input
type="radio" type="radio"
formControlName="whoCanChangeAnswers" formControlName="whoCanChangeAnswers"
value="everybody" value="everybody"
id="everybody_can_change_answers" id="everybody_can_change_answers"
/> />
<span class="label-text">
{{ 'advanced.allowances_all' | translate }}
</span>
</label>
</div>
<div class="choice">
<label for="none_can_change_answers" class="aside-label">
<input type="radio" formControlName="whoCanChangeAnswers" value="none" id="none_can_change_answers" />
<span class="label-text">
{{ 'advanced.allowances_none' | translate }}
</span>
</label>
</div> </div>
<hr /> <hr />
<div class="choice"> <div class="choice">
<label for="none_can_change_answers"> <label for="creator_can_change_answers" class="aside-label" id="label_creator_can_change_answers">
{{ 'advanced.allowances_none' | translate }} <input
type="radio"
formControlName="whoCanChangeAnswers"
value="creator"
id="creator_can_change_answers"
/>
<span class="label-text">
{{ 'advanced.allowances_creator' | translate }}
</span>
</label> </label>
<input type="radio" formControlName="whoCanChangeAnswers" value="none" id="none_can_change_answers" />
</div> </div>
</div> </div>
<div class="rounded-block notifications"> <div class="rounded-block notifications">
<h3 class="title is-3"> <h2 class="title-advanced">
{{ 'advanced.notifications_title' | translate }} {{ 'advanced.notifications_title' | translate }}
</h3> </h2>
<p> <p>
{{ 'advanced.notifications_description' | translate }} {{ 'advanced.notifications_description' | translate }}
</p> </p>
<div class="choice"> <div class="choice">
<label for="areResultsPublic" class="aside-label"> <label for="areResultsPublic" class="notifications-description aside-label">
<input <input
type="checkbox" type="checkbox"
formControlName="isOwnerNotifiedByEmailOnNewComment" formControlName="isOwnerNotifiedByEmailOnNewComment"
@ -156,7 +170,7 @@
</label> </label>
</div> </div>
<div class="choice"> <div class="choice">
<label for="areResultsPublic" class="aside-label"> <label for="isOwnerNotifiedByEmailOnNewVote" class="aside-label areResultsPublic">
<input <input
type="checkbox" type="checkbox"
formControlName="isOwnerNotifiedByEmailOnNewVote" formControlName="isOwnerNotifiedByEmailOnNewVote"
@ -179,7 +193,6 @@
<input <input
#expiresDaysDelay #expiresDaysDelay
id="expiresDaysDelay" id="expiresDaysDelay"
matInput
type="number" type="number"
formControlName="expiresDaysDelay" formControlName="expiresDaysDelay"
required required
@ -187,58 +200,54 @@
</div> </div>
<div class="rounded-box"></div> <div class="rounded-box"></div>
<div class="rounded-box"> <div class="rounded-box">
<h3 class="title is-3"> <h2 class="title-advanced">
{{ 'advanced.password_title' | translate }} {{ 'advanced.password_title' | translate }}
</h3> </h2>
<mat-checkbox class="is-not-flex" formControlName="isProtectedByPassword"> <mat-checkbox class="is-not-flex" formControlName="isProtectedByPassword">
{{ 'advanced.password_label' | translate }} {{ 'advanced.password_label' | translate }}
</mat-checkbox> </mat-checkbox>
</div> </div>
<h3 class="title is-3"> <h2 class="title-advanced">
<i class="fa fa-envelope-open"></i> <i class="fa fa-envelope-open"></i>
Notifications Notifications
</h3> </h2>
<mat-checkbox class="is-not-flex" formControlName="isOwnerNotifiedByEmailOnNewVote"> <mat-checkbox class="is-not-flex" formControlName="isOwnerNotifiedByEmailOnNewVote">
Vous recevrez un mail à chaque nouvelle participation Vous recevrez un mail à chaque nouvelle participation
</mat-checkbox> </mat-checkbox>
<br />
<mat-checkbox class="is-not-flex" formControlName="isOwnerNotifiedByEmailOnNewComment"> <mat-checkbox class="is-not-flex" formControlName="isOwnerNotifiedByEmailOnNewComment">
Vous recevrez un mail à chaque nouveau commentaire Vous recevrez un mail à chaque nouveau commentaire
</mat-checkbox> </mat-checkbox>
<div class="proposed-answers"> <div class="proposed-answers">
<h3 class="title is-3"> <h2 class="title-advanced">
<i class="fa fa-check-square"></i> <i class="fa fa-check-square"></i>
Réponses proposées Réponses proposées
</h3> </h2>
<mat-checkbox class="is-not-flex" formControlName="isYesAnswerAvailable"> <mat-checkbox class="is-not-flex" formControlName="isYesAnswerAvailable">
La réponse « oui » sera disponible La réponse « oui » sera disponible
<img class="image is-24x24 pull-right" src="assets/img/icon_voter_YES.svg" /> <img class="image is-24x24 pull-right" src="assets/img/icon_voter_YES.svg" />
</mat-checkbox> </mat-checkbox>
<br />
<mat-checkbox class="is-not-flex" formControlName="isMaybeAnswerAvailable"> <mat-checkbox class="is-not-flex" formControlName="isMaybeAnswerAvailable">
La réponse « peut-être » sera disponible La réponse « peut-être » sera disponible
<img class="image is-24x24 pull-right" src="assets/img/icon_voter_MAYBE.svg" /> <img class="image is-24x24 pull-right" src="assets/img/icon_voter_MAYBE.svg" />
</mat-checkbox> </mat-checkbox>
<br />
<mat-checkbox class="is-not-flex" formControlName="isNoAnswerAvailable"> <mat-checkbox class="is-not-flex" formControlName="isNoAnswerAvailable">
La réponse « non » sera disponible La réponse « non » sera disponible
<img class="image is-24x24 pull-right" src="assets/img/icon_voter_NO.svg" /> <img class="image is-24x24 pull-right" src="assets/img/icon_voter_NO.svg" />
</mat-checkbox> </mat-checkbox>
</div> </div>
<h3 class="title is-3"> <h2 class="title-advanced">
<i class="fa fa-user-secret"></i> <i class="fa fa-user-secret"></i>
Restrictions visiteurs Restrictions visiteurs
</h3> </h2>
<mat-checkbox class="is-not-flex" formControlName="allowComments"> <mat-checkbox class="is-not-flex" formControlName="allowComments">
Autoriser les commentaires Autoriser les commentaires
</mat-checkbox> </mat-checkbox>
<mat-checkbox class="is-not-flex" formControlName="hideResults"> <mat-checkbox class="is-not-flex" formControlName="hideResults">
Cacher les résultats au public Cacher les résultats au public
</mat-checkbox> </mat-checkbox>
<br />
<mat-checkbox class="is-not-flex" formControlName="hasMaxCountOfAnswers"> <mat-checkbox class="is-not-flex" formControlName="hasMaxCountOfAnswers">
Nombre de réponses limitées à ce nombre. Nombre de réponses limitées à ce nombre.
</mat-checkbox> </mat-checkbox>
@ -283,9 +292,9 @@
</p> </p>
</fieldset> </fieldset>
<div class="rounded-block propose_expire_input" *ngIf="environment.propose_expire_input"> <div class="rounded-block propose_expire_input" *ngIf="environment.propose_expire_input">
<h3 class="title is-3"> <h2 class="title-advanced">
Saisissez la date de fin de votre sondage Saisissez la date de fin de votre sondage
</h3> </h2>
<p> <p>
Par défaut votre sondage prendra fin {{ environment.expiresDaysDelay }} jours après le dernier jour Par défaut votre sondage prendra fin {{ environment.expiresDaysDelay }} jours après le dernier jour
sélectionné dans vos propositions sélectionné dans vos propositions

View File

@ -1,67 +1,49 @@
@import '../../../../../styles/variables'; @import '../../../../../styles/variables';
.mat-checkbox { .form-advanced-config {
img { label {
margin-left: 1em; margin: 4px 0;
font-weight: bold;
font-size: 14px;
line-height: 16px;
} }
} input,
.aside-label { textarea {
min-height: 1.5rem;
width: 100%;
display: inline-block;
margin-left: 0.5em;
line-height: 2.5rem;
img,
input {
float: left;
min-height: 1.5rem;
margin-right: 1rem;
}
margin-bottom: 0.5rem;
}
input,
textarea {
margin-top: 0.5em; margin-top: 0.5em;
margin-bottom: 1.5em;
width: 100%; width: 100%;
&[type='checkbox'] {
width: 1.5rem;
height: 1.5rem;
border-radius: 0.5rem;
border: solid 1px $font_color;
float: left;
} }
+ label { #maxCountOfAnswers {
height: 1.5rem; margin-bottom: 0;
width: 90%;
display: inline-block;
margin-left: 0.5em;
float: left;
clear: right;
} }
}
.domain-custom-box { .domain-custom-box {
border-radius: 3px; border-radius: 3px;
height: 1.5em; height: 2.7rem;
width: 100%; width: 100%;
display: block; display: block;
padding: 0; padding: 0;
margin: 0 0 1rem; margin: 0;
border: 1px solid #4e4c59;
background: #fff;
.domain { .domain {
border: solid 1px #eee; border: solid 1px #eee;
padding: 0.5rem; border-radius: 0;
padding-left: 1rem;
line-height: 2.5rem;
text-align: left;
float: left; float: left;
width: 40%; min-width: 40%;
max-width: 45%;
background: #ddd; background: #ddd;
text-align: right; height: 2.55rem;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
color: #767486;
}
} }
.inline-input { #custom_url {
border: solid 1px #ddd !important;
padding: 0.5rem; padding: 0.5rem;
display: inline-block; display: inline-block;
background: #fff; background: #fff;
@ -69,20 +51,57 @@ textarea {
float: left; float: left;
width: 59%; width: 59%;
line-height: 1.5rem; line-height: 1.5rem;
overflow: hidden;
text-overflow: ellipsis;
border: 0 !important;
}
.title-advanced {
font-size: 20px !important;
line-height: 23px !important;
color: $secondary_color;
margin-bottom: 1rem;
}
.password-box {
label {
margin-left: 0;
}
} }
} }
.permissions-modification { .pass-validation-text {
color: #767486;
line-height: 1.25rem;
font-size: 12px;
margin-bottom: 1rem;
img {
margin-right: 1rem;
float: left;
}
}
.aside-label {
line-height: 1.25rem;
min-height: 2.5rem;
input { input {
height: 1.5rem; height: 1.5rem;
width: 1.5rem; width: 1.5rem;
margin-right: 1rem; margin-right: 1rem;
margin-top: 0;
float: left;
clear: left;
} }
label { .label-text {
float: right; line-height: 1.5rem;
width: 90%; margin-left: 0;
float: left;
width: 85%;
}
&#label_areResultsPublic,
&#label_none_can_change_answers,
&.areResultsPublic {
margin-bottom: -1rem !important;
} }
} }
.pass-validation-text {
@extend .aside-label; #label_creator_can_change_answers {
line-height: 1.6rem; margin-top: 1rem;
} }

View File

@ -18,7 +18,8 @@ export class AdvancedConfigComponent implements OnInit {
@Input() @Input()
public form: FormGroup; public form: FormGroup;
domain_url: string; domain_url: string;
display_regen_slug: boolean = false; display_regen_slug: boolean = environment.display_regen_slug;
display_password_clear_button: boolean = environment.display_password_clear_button;
constructor(public pollService: PollService) {} constructor(public pollService: PollService) {}
ngOnInit(): void { ngOnInit(): void {

View File

@ -1,10 +1,10 @@
<app-stepper [step_current]="5" [step_max]="pollService.step_max"></app-stepper> <app-stepper [step_current]="5" [step_max]="pollService.step_max"></app-stepper>
<div class="step"> <div class="step step-five">
<div class="min-height"> <div class="min-height">
<section class="supplement"> <section class="supplement">
<app-errors-list [form]="pollService.form"></app-errors-list> <app-errors-list [form]="pollService.form"></app-errors-list>
<div class="advanced-config"> <div class="advanced-config">
<h1 class="title is-3"> <h1 class="title-step title is-1">
{{ 'advanced.title' | translate }} {{ 'advanced.title' | translate }}
</h1> </h1>
<p class="decription"> <p class="decription">

View File

@ -1,5 +1,13 @@
@import '../../../../../../styles/variables'; @import '../../../../../../styles/variables';
.advanced-config { .step-five {
margin-bottom: 2em; .title-step {
font-weight: bold;
font-size: 32px;
line-height: 37px;
margin-bottom: 1rem !important;
}
.decription {
margin-bottom: 2rem;
}
} }

View File

@ -148,9 +148,9 @@
"password_validation_ok": "Vos mots de passe sont identiques", "password_validation_ok": "Vos mots de passe sont identiques",
"password_display_without": "Les résultats sont visibles sans mot de passe", "password_display_without": "Les résultats sont visibles sans mot de passe",
"allowances_title": "Permissions", "allowances_title": "Permissions",
"allowances_all": "Tou·te·s les sondé·e·s peuvent modifier tous les votes",
"allowances_own": "Chaque sondé·e peut modifier son propre vote", "allowances_own": "Chaque sondé·e peut modifier son propre vote",
"allowances_none": "Aucun vote ne peut être modifié", "allowances_none": "Aucun vote ne peut être modifié",
"allowances_all": "Tou·te·s les sondé·e·s peuvent modifier tous les votes",
"allowances_creator": "Seul·e le ou la créateur·rice du sondage peut voir les résultats", "allowances_creator": "Seul·e le ou la créateur·rice du sondage peut voir les résultats",
"notifications_title": "Notifications", "notifications_title": "Notifications",
"notifications_vote": "Recevoir un e-mail à chaque participation", "notifications_vote": "Recevoir un e-mail à chaque participation",

View File

@ -34,6 +34,8 @@ export const environment = {
display_header_create_button: false, display_header_create_button: false,
display_menu_creation: false, display_menu_creation: false,
display_routes: false, display_routes: false,
display_password_clear_button: false,
display_regen_slug: false,
enable_colored_weekend_days: false, enable_colored_weekend_days: false,
expiresDaysDelay: 30, expiresDaysDelay: 30,
frontDomain: productionBaseUrl, frontDomain: productionBaseUrl,

View File

@ -33,6 +33,8 @@ export const environment = {
creation_display_proposals_time_slices: false, creation_display_proposals_time_slices: false,
creation_email_is_required: true, creation_email_is_required: true,
display_header_create_button: false, display_header_create_button: false,
display_password_clear_button: false,
display_regen_slug: false,
display_menu_creation: false, display_menu_creation: false,
display_routes: false, // demo paths to test polls display_routes: false, // demo paths to test polls
enable_colored_weekend_days: false, // color differently the weekend days enable_colored_weekend_days: false, // color differently the weekend days

View File

@ -44,7 +44,7 @@ input,
select, select,
.select { .select {
font-size: 1rem !important; font-size: 1rem !important;
line-height: 1.25rem; line-height: 40px;
border: solid 1px $font-color !important; border: solid 1px $font-color !important;
border-radius: 4px; border-radius: 4px;
@extend .clickable; @extend .clickable;
@ -58,8 +58,7 @@ input,
select, select,
textarea { textarea {
@extend .clickable; @extend .clickable;
margin-bottom: 1rem; padding: 0.25rem 0.25rem 0.25rem 1rem;
padding: 0.25rem;
&:active, &:active,
&:focus, &:focus,