diff options
Diffstat (limited to 'client/src/app/+signup/shared')
9 files changed, 122 insertions, 69 deletions
diff --git a/client/src/app/+signup/shared/shared-signup.module.ts b/client/src/app/+signup/shared/shared-signup.module.ts index f8b224c71..0aa08f3e2 100644 --- a/client/src/app/+signup/shared/shared-signup.module.ts +++ b/client/src/app/+signup/shared/shared-signup.module.ts | |||
@@ -3,6 +3,8 @@ import { SharedFormModule } from '@app/shared/shared-forms' | |||
3 | import { SharedGlobalIconModule } from '@app/shared/shared-icons' | 3 | import { SharedGlobalIconModule } from '@app/shared/shared-icons' |
4 | import { SharedMainModule } from '@app/shared/shared-main' | 4 | import { SharedMainModule } from '@app/shared/shared-main' |
5 | import { SharedUsersModule } from '@app/shared/shared-users' | 5 | import { SharedUsersModule } from '@app/shared/shared-users' |
6 | import { SignupMascotComponent } from './signup-mascot.component' | ||
7 | import { SignupStepTitleComponent } from './signup-step-title.component' | ||
6 | import { SignupSuccessComponent } from './signup-success.component' | 8 | import { SignupSuccessComponent } from './signup-success.component' |
7 | 9 | ||
8 | @NgModule({ | 10 | @NgModule({ |
@@ -14,7 +16,9 @@ import { SignupSuccessComponent } from './signup-success.component' | |||
14 | ], | 16 | ], |
15 | 17 | ||
16 | declarations: [ | 18 | declarations: [ |
17 | SignupSuccessComponent | 19 | SignupSuccessComponent, |
20 | SignupStepTitleComponent, | ||
21 | SignupMascotComponent | ||
18 | ], | 22 | ], |
19 | 23 | ||
20 | exports: [ | 24 | exports: [ |
@@ -22,7 +26,9 @@ import { SignupSuccessComponent } from './signup-success.component' | |||
22 | SharedFormModule, | 26 | SharedFormModule, |
23 | SharedGlobalIconModule, | 27 | SharedGlobalIconModule, |
24 | 28 | ||
25 | SignupSuccessComponent | 29 | SignupSuccessComponent, |
30 | SignupStepTitleComponent, | ||
31 | SignupMascotComponent | ||
26 | ], | 32 | ], |
27 | 33 | ||
28 | providers: [ | 34 | providers: [ |
diff --git a/client/src/app/+signup/shared/signup-mascot.component.scss b/client/src/app/+signup/shared/signup-mascot.component.scss new file mode 100644 index 000000000..5eebfb014 --- /dev/null +++ b/client/src/app/+signup/shared/signup-mascot.component.scss | |||
@@ -0,0 +1,11 @@ | |||
1 | @use '_variables' as *; | ||
2 | @use '_mixins' as *; | ||
3 | |||
4 | .root { | ||
5 | display: inline-block; | ||
6 | width: 270px; | ||
7 | } | ||
8 | |||
9 | div ::ng-deep svg { | ||
10 | color: pvar(--mainColor); | ||
11 | } | ||
diff --git a/client/src/app/+signup/shared/signup-mascot.component.ts b/client/src/app/+signup/shared/signup-mascot.component.ts new file mode 100644 index 000000000..a96ccffee --- /dev/null +++ b/client/src/app/+signup/shared/signup-mascot.component.ts | |||
@@ -0,0 +1,29 @@ | |||
1 | import { Component, Input } from '@angular/core' | ||
2 | import { DomSanitizer } from '@angular/platform-browser' | ||
3 | |||
4 | const images = { | ||
5 | about: require('!!raw-loader?!../../../assets/images/mascot/register/about.svg').default, | ||
6 | terms: require('!!raw-loader?!../../../assets/images/mascot/register/terms.svg').default, | ||
7 | success: require('!!raw-loader?!../../../assets/images/mascot/register/success.svg').default, | ||
8 | channel: require('!!raw-loader?!../../../assets/images/mascot/register/channel.svg').default, | ||
9 | account: require('!!raw-loader?!../../../assets/images/mascot/register/account.svg').default | ||
10 | } | ||
11 | |||
12 | export type MascotImageName = keyof typeof images | ||
13 | |||
14 | @Component({ | ||
15 | selector: 'my-signup-mascot', | ||
16 | styleUrls: [ './signup-mascot.component.scss' ], | ||
17 | template: `<div class="root" [innerHTML]="html"></div>` | ||
18 | }) | ||
19 | export class SignupMascotComponent { | ||
20 | @Input() imageName: MascotImageName | ||
21 | |||
22 | constructor (private sanitize: DomSanitizer) { | ||
23 | |||
24 | } | ||
25 | |||
26 | get html () { | ||
27 | return this.sanitize.bypassSecurityTrustHtml(images[this.imageName]) | ||
28 | } | ||
29 | } | ||
diff --git a/client/src/app/+signup/shared/signup-step-title.component.html b/client/src/app/+signup/shared/signup-step-title.component.html new file mode 100644 index 000000000..9cf4c4826 --- /dev/null +++ b/client/src/app/+signup/shared/signup-step-title.component.html | |||
@@ -0,0 +1,9 @@ | |||
1 | <div class="step-content-title"> | ||
2 | <my-signup-mascot [imageName]="mascotImageName"></my-signup-mascot> | ||
3 | |||
4 | <h2> | ||
5 | <ng-content></ng-content> | ||
6 | </h2> | ||
7 | |||
8 | <div class="step-content-title-separator"></div> | ||
9 | </div> | ||
diff --git a/client/src/app/+signup/shared/signup-step-title.component.scss b/client/src/app/+signup/shared/signup-step-title.component.scss new file mode 100644 index 000000000..1e0cb2440 --- /dev/null +++ b/client/src/app/+signup/shared/signup-step-title.component.scss | |||
@@ -0,0 +1,23 @@ | |||
1 | @use '_variables' as *; | ||
2 | @use '_mixins' as *; | ||
3 | |||
4 | .step-content-title { | ||
5 | text-align: center; | ||
6 | margin: auto; | ||
7 | margin-bottom: 45px; | ||
8 | |||
9 | h2 { | ||
10 | font-size: 32px; | ||
11 | font-weight: normal; | ||
12 | max-width: 300px; | ||
13 | margin: 15px auto 0; | ||
14 | } | ||
15 | } | ||
16 | |||
17 | .step-content-title-separator { | ||
18 | height: 6px; | ||
19 | width: 60px; | ||
20 | border-radius: 4px; | ||
21 | background-color: pvar(--mainColor); | ||
22 | margin: 5px auto 0; | ||
23 | } | ||
diff --git a/client/src/app/+signup/shared/signup-step-title.component.ts b/client/src/app/+signup/shared/signup-step-title.component.ts new file mode 100644 index 000000000..9664eb7f3 --- /dev/null +++ b/client/src/app/+signup/shared/signup-step-title.component.ts | |||
@@ -0,0 +1,12 @@ | |||
1 | import { Component, Input } from '@angular/core' | ||
2 | import { MascotImageName } from './signup-mascot.component' | ||
3 | |||
4 | @Component({ | ||
5 | selector: 'my-signup-step-title', | ||
6 | templateUrl: './signup-step-title.component.html', | ||
7 | styleUrls: [ './signup-step-title.component.scss' ] | ||
8 | }) | ||
9 | export class SignupStepTitleComponent { | ||
10 | @Input() mascotImageName: MascotImageName | ||
11 | |||
12 | } | ||
diff --git a/client/src/app/+signup/shared/signup-success.component.html b/client/src/app/+signup/shared/signup-success.component.html index d66e8b568..c14889c72 100644 --- a/client/src/app/+signup/shared/signup-success.component.html +++ b/client/src/app/+signup/shared/signup-success.component.html | |||
@@ -1,20 +1,22 @@ | |||
1 | <!-- Thanks: Amit Singh Sansoya from https://codepen.io/amit3200/pen/zWMJOO --> | 1 | <my-signup-step-title mascotImageName="success" i18n> |
2 | <strong>Welcome</strong> | ||
3 | <div>on {{ instanceName }}</div> | ||
4 | </my-signup-step-title> | ||
2 | 5 | ||
3 | <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 130.2 130.2"> | 6 | <div class="alert pt-alert-primary"> |
4 | <circle class="path circle" fill="none" stroke="#73AF55" stroke-width="6" stroke-miterlimit="10" cx="65.1" cy="65.1" r="62.1"/> | 7 | <p i18n>Your account has been created!</p> |
5 | <polyline class="path check" fill="none" stroke="#73AF55" stroke-width="6" stroke-linecap="round" stroke-miterlimit="10" points="100.2,40.2 51.5,88.8 29.8,67.5 "/> | ||
6 | </svg> | ||
7 | 8 | ||
8 | <p i18n class="bottom-message">Welcome to PeerTube!</p> | 9 | <p i18n *ngIf="requiresEmailVerification"> |
9 | 10 | <strong>Check your emails</strong> to validate your account and complete your inscription. | |
10 | <div *ngIf="message" class="alert alert-success"> | ||
11 | <p>{{ message }}</p> | ||
12 | |||
13 | <p i18n> | ||
14 | If you need help to use PeerTube, you can have a look at the <a href="https://docs.joinpeertube.org/use-setup-account" target="_blank" rel="noopener noreferrer">documentation</a>. | ||
15 | </p> | 11 | </p> |
16 | 12 | ||
17 | <p i18n> | 13 | <ng-container *ngIf="!requiresEmailVerification"> |
18 | To help moderators and other users to know <strong>who you are</strong>, don't forget to <a routerLink="/my-account/settings">set up your account profile</a> by adding an <strong>avatar</strong> and a <strong>description</strong>. | 14 | <p i18n> |
19 | </p> | 15 | If you need help to use PeerTube, you can have a look at the <a class="link-orange" href="https://docs.joinpeertube.org/use-setup-account" target="_blank" rel="noopener noreferrer">documentation</a>. |
16 | </p> | ||
17 | |||
18 | <p i18n> | ||
19 | To help moderators and other users to know <strong>who you are</strong>, don't forget to <a class="link-orange" routerLink="/my-account/settings">set up your account profile</a> by adding an <strong>avatar</strong> and a <strong>description</strong>. | ||
20 | </p> | ||
21 | </ng-container> | ||
20 | </div> | 22 | </div> |
diff --git a/client/src/app/+signup/shared/signup-success.component.scss b/client/src/app/+signup/shared/signup-success.component.scss index b302366e2..918349ba0 100644 --- a/client/src/app/+signup/shared/signup-success.component.scss +++ b/client/src/app/+signup/shared/signup-success.component.scss | |||
@@ -1,54 +1,6 @@ | |||
1 | svg { | ||
2 | width: 100px; | ||
3 | display: block; | ||
4 | margin: 40px auto 0; | ||
5 | } | ||
6 | |||
7 | .path { | ||
8 | stroke-dasharray: 1000; | ||
9 | stroke-dashoffset: 0; | ||
10 | |||
11 | &.circle { | ||
12 | animation: dash .9s ease-in-out; | ||
13 | } | ||
14 | |||
15 | &.line { | ||
16 | stroke-dashoffset: 1000; | ||
17 | animation: dash .9s .35s ease-in-out forwards; | ||
18 | } | ||
19 | |||
20 | &.check { | ||
21 | stroke-dashoffset: -100; | ||
22 | animation: dash-check .9s .35s ease-in-out forwards; | ||
23 | } | ||
24 | } | ||
25 | |||
26 | .bottom-message { | ||
27 | text-align: center; | ||
28 | margin: 20px 0 60px; | ||
29 | font-size: 1.25em; | ||
30 | color: #73AF55; | ||
31 | } | ||
32 | |||
33 | .alert { | 1 | .alert { |
34 | font-size: 15px; | 2 | font-size: 18px; |
3 | max-width: 900px; | ||
35 | text-align: center; | 4 | text-align: center; |
36 | } | 5 | margin: auto; |
37 | |||
38 | @keyframes dash { | ||
39 | 0% { | ||
40 | stroke-dashoffset: 1000; | ||
41 | } | ||
42 | 100% { | ||
43 | stroke-dashoffset: 0; | ||
44 | } | ||
45 | } | ||
46 | |||
47 | @keyframes dash-check { | ||
48 | 0% { | ||
49 | stroke-dashoffset: -100; | ||
50 | } | ||
51 | 100% { | ||
52 | stroke-dashoffset: 900; | ||
53 | } | ||
54 | } | 6 | } |
diff --git a/client/src/app/+signup/shared/signup-success.component.ts b/client/src/app/+signup/shared/signup-success.component.ts index 19fb5922a..a03f3819d 100644 --- a/client/src/app/+signup/shared/signup-success.component.ts +++ b/client/src/app/+signup/shared/signup-success.component.ts | |||
@@ -1,4 +1,5 @@ | |||
1 | import { Component, Input } from '@angular/core' | 1 | import { Component, Input } from '@angular/core' |
2 | import { ServerService } from '@app/core' | ||
2 | 3 | ||
3 | @Component({ | 4 | @Component({ |
4 | selector: 'my-signup-success', | 5 | selector: 'my-signup-success', |
@@ -6,5 +7,13 @@ import { Component, Input } from '@angular/core' | |||
6 | styleUrls: [ './signup-success.component.scss' ] | 7 | styleUrls: [ './signup-success.component.scss' ] |
7 | }) | 8 | }) |
8 | export class SignupSuccessComponent { | 9 | export class SignupSuccessComponent { |
9 | @Input() message: string | 10 | @Input() requiresEmailVerification: boolean |
11 | |||
12 | constructor (private serverService: ServerService) { | ||
13 | |||
14 | } | ||
15 | |||
16 | get instanceName () { | ||
17 | return this.serverService.getHTMLConfig().instance.name | ||
18 | } | ||
10 | } | 19 | } |