1 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5 | return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6 | };
|
7 | import { LitElement, html, css, customElement, property, query } from 'lit-element/lit-element.js';
|
8 | import { _ } from '@kano/i18n/dist/index.js';
|
9 | import './kwc-auth.js';
|
10 | import * as icons from './icons.js';
|
11 | const headerImage = `url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIxIiBoZWlnaHQ9IjU3IiB2aWV3Qm94PSIwIDAgMjIxIDU3IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDApIj4KPHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMTMyIDEyLjlDMTMyIDcuMzAwMDEgMTM2LjYgMi43MDAwMSAxNDIuMiAyLjcwMDAxQzE0Ny44IDIuNzAwMDEgMTUyLjQgNy4zMDAwMSAxNTIuNCAxMi45QzE1Mi40IDE4LjUgMTQ3LjggMjMuMSAxNDIuMiAyMy4xQzEzNi42IDIzLjEgMTMyIDE4LjUgMTMyIDEyLjlaTTE0OS42IDEyLjlDMTQ5LjYgOC44MDAwMSAxNDYuMyA1LjUwMDAxIDE0Mi4yIDUuNTAwMDFDMTM4LjEgNS41MDAwMSAxMzQuOCA4LjgwMDAxIDEzNC44IDEyLjlDMTM0LjggMTcgMTM4LjEgMjAuMyAxNDIuMiAyMC4zQzE0Ni4zIDIwLjMgMTQ5LjYgMTcgMTQ5LjYgMTIuOVoiIGZpbGw9IiNGRjY5MDAiLz4KPHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMTM4LjQgMTIuOUMxMzguNCAxMC44IDE0MC4xIDkgMTQyLjMgOUMxNDQuNCA5IDE0Ni4yIDEwLjcgMTQ2LjIgMTIuOUMxNDYuMiAxNS4xIDE0NC41IDE2LjggMTQyLjMgMTYuOEMxNDAuMSAxNi44IDEzOC40IDE1IDEzOC40IDEyLjlaTTE0My4zIDEyLjlDMTQzLjMgMTIuMyAxNDIuOCAxMS44IDE0Mi4yIDExLjhDMTQxLjYgMTEuOCAxNDEuMSAxMi4zIDE0MS4xIDEyLjlDMTQxLjEgMTMuNSAxNDEuNiAxNCAxNDIuMiAxNEMxNDIuOCAxNCAxNDMuMyAxMy41IDE0My4zIDEyLjlaIiBmaWxsPSIjRkY2OTAwIi8+CjxwYXRoIG9wYWNpdHk9IjAuNiIgZD0iTTE4OS4xIDI2LjJDMTg5LjEgMjMuMyAxOTEuNCAyMSAxOTQuMyAyMUMxOTcuMiAyMSAxOTkuNSAyMy4zIDE5OS41IDI2LjJDMTk5LjUgMjkuMSAxOTcuMiAzMS40IDE5NC4zIDMxLjRDMTkxLjQgMzEuNCAxODkuMSAyOS4xIDE4OS4xIDI2LjJaTTE5NS44IDI2LjJDMTk1LjggMjUuNCAxOTUuMiAyNC44IDE5NC40IDI0LjhDMTkzLjYgMjQuOCAxOTMgMjUuNCAxOTMgMjYuMkMxOTMgMjcgMTkzLjYgMjcuNiAxOTQuNCAyNy42QzE5NS4yIDI3LjYgMTk1LjggMjcgMTk1LjggMjYuMloiIGZpbGw9IiNGRjY5MDAiLz4KPHBhdGggb3BhY2l0eT0iMC42IiBkPSJNNjguNSAyNS40QzcwLjEgMjUuNCA3MS41IDI0LjEgNzEuNSAyMi40VjExLjVDNzEuNSA5LjkgNzAuMiA4LjUgNjguNSA4LjVDNjYuOSA4LjUgNjUuNSA5LjggNjUuNSAxMS41VjIyLjRDNjUuNSAyNC4xIDY2LjggMjUuNCA2OC41IDI1LjRaIiBmaWxsPSIjRkY2OTAwIi8+CjxnIG9wYWNpdHk9IjAuNiI+CjxwYXRoIG9wYWNpdHk9IjAuNiIgZD0iTTEyNS40IDE5LjdDMTI1LjQgMjEuNCAxMjQuMSAyMi43IDEyMi40IDIyLjdDMTIwLjcgMjIuNyAxMTkuNCAyMS40IDExOS40IDE5LjdDMTE5LjQgMTggMTIwLjcgMTYuNyAxMjIuNCAxNi43QzEyNC4xIDE2LjcgMTI1LjQgMTguMSAxMjUuNCAxOS43WiIgZmlsbD0iI0ZGNjkwMCIvPgo8L2c+CjxwYXRoIGQ9Ik0yMTQuMSAwVjQuNkMyMTQuMSA2LjIgMjE1LjQgNy42IDIxNy4xIDcuNkMyMTguOCA3LjYgMjIwLjEgNi4zIDIyMC4xIDQuNlYwSDIxNC4xWiIgZmlsbD0iIzY3NjdFQyIvPgo8cGF0aCBkPSJNMTMyIDEyLjlDMTMyIDcuMzAwMDEgMTM2LjYgMi43MDAwMSAxNDIuMiAyLjcwMDAxQzE0Ny44IDIuNzAwMDEgMTUyLjQgNy4zMDAwMSAxNTIuNCAxMi45QzE1Mi40IDE4LjUgMTQ3LjggMjMuMSAxNDIuMiAyMy4xQzEzNi42IDIzLjEgMTMyIDE4LjUgMTMyIDEyLjlaTTE0OS42IDEyLjlDMTQ5LjYgOC44MDAwMSAxNDYuMyA1LjUwMDAxIDE0Mi4yIDUuNTAwMDFDMTM4LjEgNS41MDAwMSAxMzQuOCA4LjgwMDAxIDEzNC44IDEyLjlDMTM0LjggMTcgMTM4LjEgMjAuMyAxNDIuMiAyMC4zQzE0Ni4zIDIwLjMgMTQ5LjYgMTcgMTQ5LjYgMTIuOVoiIGZpbGw9IiNGRjY5MDAiLz4KPHBhdGggZD0iTTEzOC40IDEyLjlDMTM4LjQgMTAuOCAxNDAuMSA5IDE0Mi4zIDlDMTQ0LjQgOSAxNDYuMiAxMC43IDE0Ni4yIDEyLjlDMTQ2LjIgMTUuMSAxNDQuNSAxNi44IDE0Mi4zIDE2LjhDMTQwLjEgMTYuOCAxMzguNCAxNSAxMzguNCAxMi45Wk0xNDMuMyAxMi45QzE0My4zIDEyLjMgMTQyLjggMTEuOCAxNDIuMiAxMS44QzE0MS42IDExLjggMTQxLjEgMTIuMyAxNDEuMSAxMi45QzE0MS4xIDEzLjUgMTQxLjYgMTQgMTQyLjIgMTRDMTQyLjggMTQgMTQzLjMgMTMuNSAxNDMuMyAxMi45WiIgZmlsbD0iI0ZGNjkwMCIvPgo8cGF0aCBkPSJNMTg5LjEgMjYuMkMxODkuMSAyMy4zIDE5MS40IDIxIDE5NC4zIDIxQzE5Ny4yIDIxIDE5OS41IDIzLjMgMTk5LjUgMjYuMkMxOTkuNSAyOS4xIDE5Ny4yIDMxLjQgMTk0LjMgMzEuNEMxOTEuNCAzMS40IDE4OS4xIDI5LjEgMTg5LjEgMjYuMlpNMTk1LjggMjYuMkMxOTUuOCAyNS40IDE5NS4yIDI0LjggMTk0LjQgMjQuOEMxOTMuNiAyNC44IDE5MyAyNS40IDE5MyAyNi4yQzE5MyAyNyAxOTMuNiAyNy42IDE5NC40IDI3LjZDMTk1LjIgMjcuNiAxOTUuOCAyNyAxOTUuOCAyNi4yWiIgZmlsbD0iI0ZGNjkwMCIvPgo8cGF0aCBkPSJNNjguNSAyNS40QzcwLjEgMjUuNCA3MS41IDI0LjEgNzEuNSAyMi40VjExLjVDNzEuNSA5LjkgNzAuMiA4LjUgNjguNSA4LjVDNjYuOSA4LjUgNjUuNSA5LjggNjUuNSAxMS41VjIyLjRDNjUuNSAyNC4xIDY2LjggMjUuNCA2OC41IDI1LjRaIiBmaWxsPSIjRkY2OTAwIi8+CjxwYXRoIGQ9Ik0xMjUuNCAxOS43QzEyNS40IDIxLjQgMTI0LjEgMjIuNyAxMjIuNCAyMi43QzEyMC43IDIyLjcgMTE5LjQgMjEuNCAxMTkuNCAxOS43QzExOS40IDE4IDEyMC43IDE2LjcgMTIyLjQgMTYuN0MxMjQuMSAxNi43IDEyNS40IDE4LjEgMTI1LjQgMTkuN1oiIGZpbGw9IiNGRjY5MDAiLz4KPHBhdGggZD0iTTAgMFY4LjRDMCAxMCAxLjMgMTEuNCAzIDExLjRDNC43IDExLjQgNiAxMC4xIDYgOC40VjBIMFoiIGZpbGw9IiNGRkIzMDAiLz4KPHBhdGggZD0iTTEzMiAxMi45QzEzMiA3LjMwMDAxIDEzNi42IDIuNzAwMDEgMTQyLjIgMi43MDAwMUMxNDcuOCAyLjcwMDAxIDE1Mi40IDcuMzAwMDEgMTUyLjQgMTIuOUMxNTIuNCAxOC41IDE0Ny44IDIzLjEgMTQyLjIgMjMuMUMxMzYuNiAyMy4xIDEzMiAxOC41IDEzMiAxMi45Wk0xNDkuNiAxMi45QzE0OS42IDguODAwMDEgMTQ2LjMgNS41MDAwMSAxNDIuMiA1LjUwMDAxQzEzOC4xIDUuNTAwMDEgMTM0LjggOC44MDAwMSAxMzQuOCAxMi45QzEzNC44IDE3IDEzOC4xIDIwLjMgMTQyLjIgMjAuM0MxNDYuMyAyMC4zIDE0OS42IDE3IDE0OS42IDEyLjlaIiBmaWxsPSIjRUY1Mjg1Ii8+CjxwYXRoIGQ9Ik0xMzguNCAxMi45QzEzOC40IDEwLjggMTQwLjEgOSAxNDIuMyA5QzE0NC40IDkgMTQ2LjIgMTAuNyAxNDYuMiAxMi45QzE0Ni4yIDE1LjEgMTQ0LjUgMTYuOCAxNDIuMyAxNi44QzE0MC4xIDE2LjggMTM4LjQgMTUgMTM4LjQgMTIuOVpNMTQzLjMgMTIuOUMxNDMuMyAxMi4zIDE0Mi44IDExLjggMTQyLjIgMTEuOEMxNDEuNiAxMS44IDE0MS4xIDEyLjMgMTQxLjEgMTIuOUMxNDEuMSAxMy41IDE0MS42IDE0IDE0Mi4yIDE0QzE0Mi44IDE0IDE0My4zIDEzLjUgMTQzLjMgMTIuOVoiIGZpbGw9IiNGRkIzMDAiLz4KPHBhdGggZD0iTTE4OS4xIDI2LjJDMTg5LjEgMjMuMyAxOTEuNCAyMSAxOTQuMyAyMUMxOTcuMiAyMSAxOTkuNSAyMy4zIDE5OS41IDI2LjJDMTk5LjUgMjkuMSAxOTcuMiAzMS40IDE5NC4zIDMxLjRDMTkxLjQgMzEuNCAxODkuMSAyOS4xIDE4OS4xIDI2LjJaTTE5NS44IDI2LjJDMTk1LjggMjUuNCAxOTUuMiAyNC44IDE5NC40IDI0LjhDMTkzLjYgMjQuOCAxOTMgMjUuNCAxOTMgMjYuMkMxOTMgMjcgMTkzLjYgMjcuNiAxOTQuNCAyNy42QzE5NS4yIDI3LjYgMTk1LjggMjcgMTk1LjggMjYuMloiIGZpbGw9IiNGRkIzMDAiLz4KPHBhdGggZD0iTTY4LjUgMjUuNEM3MC4xIDI1LjQgNzEuNSAyNC4xIDcxLjUgMjIuNFYxMS41QzcxLjUgOS45IDcwLjIgOC41IDY4LjUgOC41QzY2LjkgOC41IDY1LjUgOS44IDY1LjUgMTEuNVYyMi40QzY1LjUgMjQuMSA2Ni44IDI1LjQgNjguNSAyNS40WiIgZmlsbD0iI0ZGNjkwMCIvPgo8cGF0aCBkPSJNNzUuOTAwMiA0NS42QzcwLjMwMDIgNDUuNiA2NS43MDAyIDUwLjIgNjUuNzAwMiA1NS44SDY4LjUwMDJINzIuMDAwMkg3NC44MDAySDc2LjkwMDJINzkuNzAwMkg4My4yMDAySDg2LjAwMDJDODYuMTAwMiA1MC4yIDgxLjUwMDIgNDUuNiA3NS45MDAyIDQ1LjZaIiBmaWxsPSIjMDBDOUIyIi8+CjxwYXRoIGQ9Ik0yMTMuNiA1NlY1MS44QzIxMy42IDUwLjEgMjEyLjIgNDguNyAyMTAuNSA0OC43QzIwOC44IDQ4LjcgMjA3LjQgNTAuMSAyMDcuNCA1MS44VjU2SDIxMy42WiIgZmlsbD0iI0ZGNjkwMCIvPgo8cGF0aCBkPSJNMTI1LjQgMTkuN0MxMjUuNCAyMS40IDEyNC4xIDIyLjcgMTIyLjQgMjIuN0MxMjAuNyAyMi43IDExOS40IDIxLjQgMTE5LjQgMTkuN0MxMTkuNCAxOCAxMjAuNyAxNi43IDEyMi40IDE2LjdDMTI0LjEgMTYuNyAxMjUuNCAxOC4xIDEyNS40IDE5LjdaIiBmaWxsPSIjMDBDOUIyIi8+CjxwYXRoIGQ9Ik0xNzUuNSAwVjYuNUMxNzUuNSA4LjEgMTc2LjggOS41IDE3OC41IDkuNUMxODAuMSA5LjUgMTgxLjUgOC4yIDE4MS41IDYuNVYwSDE3NS41WiIgZmlsbD0iI0ZGNjkwMCIvPgo8cGF0aCBkPSJNNDMuNjAwNCAxMi45QzQ1LjIwMDQgMTEuMyA0Ni4xMDA0IDkuMSA0Ni4xMDA0IDYuOEM0Ni4xMDA0IDQuNSA0NS4yMDA0IDIuMyA0My42MDA0IDAuN0w0My4wMDA0IDBIMzguODAwNEMzOS4yMDA0IDAuOCAzOS43MDA0IDEuNSA0MC40MDA0IDIuMkw0MS4zMDA0IDMuMUM0Mi4zMDA0IDQuMSA0Mi44MDA0IDUuNCA0Mi44MDA0IDYuOEM0Mi44MDA0IDguMiA0Mi4zMDA0IDkuNSA0MS4zMDA0IDEwLjVMNDAuOTAwNCAxMC45QzM5LjMwMDQgMTIuNSAzOC40MDA0IDE0LjcgMzguNDAwNCAxN0MzOC40MDA0IDE5LjMgMzkuMzAwNCAyMS41IDQwLjkwMDQgMjMuMUM0MS42MDA0IDIzLjggNDIuNjAwNCAyMy44IDQzLjMwMDQgMjMuMUM0NC4wMDA0IDIyLjQgNDQuMDAwNCAyMS40IDQzLjMwMDQgMjAuN0M0Mi4zMDA0IDE5LjcgNDEuODAwNCAxOC40IDQxLjgwMDQgMTdDNDEuODAwNCAxNS42IDQyLjMwMDQgMTQuMyA0My4zMDA0IDEzLjNMNDMuNjAwNCAxMi45WiIgZmlsbD0iIzY3NjdFQyIvPgo8cGF0aCBkPSJNMTQ1LjIgNTZWNTAuOVY0MS40QzE0NS4yIDM5LjggMTQzLjkgMzguNSAxNDIuMyAzOC41QzE0MC43IDM4LjUgMTM5LjQgMzkuOCAxMzkuNCA0MS40VjUwLjlWNTZIMTQ1LjJaIiBmaWxsPSIjNjc2N0VDIi8+CjxwYXRoIGQ9Ik0xNzYuNSA1Mi4xQzE3Ni41IDUzLjUgMTc2IDU0LjggMTc1IDU1LjhMMTc0LjkgNTUuOUgxNzkuMUMxNzkuNyA1NC43IDE4MCA1My40IDE4MCA1Mi4xQzE4MCA0OS44IDE3OS4xIDQ3LjYgMTc3LjUgNDZDMTc2LjggNDUuMyAxNzUuOCA0NS4zIDE3NS4xIDQ2QzE3NC40IDQ2LjcgMTc0LjQgNDcuNyAxNzUuMSA0OC40QzE3NiA0OS40IDE3Ni41IDUwLjcgMTc2LjUgNTIuMVoiIGZpbGw9IiMwMEM5QjIiLz4KPHBhdGggZD0iTTExNy45IDU2VjM2LjVDMTE3LjkgMzQuOSAxMTYuNiAzMy41IDExNC45IDMzLjVDMTEzLjMgMzMuNSAxMTEuOSAzNC44IDExMS45IDM2LjVWNTZIMTE3LjlaIiBmaWxsPSIjRkY2OTAwIi8+CjxwYXRoIGQ9Ik0zNiA1Ni4xVjQ0LjNDMzYgNDIuNyAzNC43IDQxLjMgMzMgNDEuM0MzMS40IDQxLjMgMzAgNDIuNiAzMCA0NC4zVjU2LjFIMzZaIiBmaWxsPSIjRkY2OTAwIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iMjIwLjEiIGhlaWdodD0iNTYuMSIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K')`;
|
12 | let AuthView = class AuthView extends LitElement {
|
13 | constructor() {
|
14 | super(...arguments);
|
15 | this.view = { id: '' };
|
16 | this.views = new Map();
|
17 | this.headerText = '';
|
18 | this.allowExit = false;
|
19 | }
|
20 | set flowDefinition(value) {
|
21 | if (this.flowDefinition) {
|
22 | throw new Error('Cant define twice');
|
23 | }
|
24 | value.forEach(el => {
|
25 | this.views.set(el.id, el);
|
26 | });
|
27 | this.view = this.views.get('login') || value[0];
|
28 | }
|
29 | static get styles() {
|
30 | return [
|
31 | css `
|
32 | :host {
|
33 | display: block;
|
34 | font-family: "proxima", Helvetica, Arial, sans-serif;
|
35 | }
|
36 | kwc-auth {
|
37 | height: 100%;
|
38 | }
|
39 | h1,
|
40 | h2,
|
41 | h3,
|
42 | h4,
|
43 | p,
|
44 | a,
|
45 | input {
|
46 | line-height: 1em;
|
47 | }
|
48 |
|
49 | h2, h3 {
|
50 | color: #414a51;
|
51 | text-align: left;
|
52 | }
|
53 | h2 {
|
54 | font-size: 24px;
|
55 | }
|
56 |
|
57 | h3 {
|
58 | font-size: 20px;
|
59 | }
|
60 |
|
61 | p {
|
62 | font-size: 20px;
|
63 | margin: 0;
|
64 | }
|
65 |
|
66 | p.color-grey {
|
67 | color: #9FA4A8;
|
68 | }
|
69 |
|
70 | a {
|
71 | color: #FF6900;
|
72 | text-decoration: none;
|
73 | }
|
74 |
|
75 | button {
|
76 | text-align: center;
|
77 | margin-top: 20px;
|
78 | }
|
79 | .play {
|
80 | width: 100%;
|
81 | height: 100%;
|
82 | background-color: #2C3D4E;
|
83 | }
|
84 | .page-content,
|
85 | .login-page {
|
86 | display: flex;
|
87 | flex-flow: column;
|
88 | width: 100%;
|
89 | margin: 0 auto;
|
90 | max-width: 420px;
|
91 | align-items: stretch;
|
92 | flex-grow: 1;
|
93 | justify-content: space-between;
|
94 | }
|
95 | .page-content {
|
96 | height: calc(100vh - 56px);
|
97 | padding-top: 20px;
|
98 | box-sizing: border-box;
|
99 | }
|
100 | .login-page {
|
101 | background-color: var(--color-black);
|
102 | max-width: 100%;
|
103 | height: 100vh;
|
104 | }
|
105 | .login-page__container {
|
106 | display: flex;
|
107 | flex-flow: column;
|
108 | align-items: stretch;
|
109 | justify-content: center;
|
110 | height: 100%;
|
111 | }
|
112 | .login-page__container kwc-auth {
|
113 | height: auto;
|
114 | width: 100%;
|
115 | max-width: 360px;
|
116 | }
|
117 | .login-page footer {
|
118 | max-width: 420px;
|
119 | align-self: center;
|
120 | }
|
121 | .back-button {
|
122 | display: flex;
|
123 | }
|
124 | .back-button a {
|
125 | display: flex;
|
126 | align-items: center;
|
127 | color: #414A51;
|
128 | font-weight: bold;
|
129 | text-decoration: none;
|
130 | }
|
131 | .back-button a img {
|
132 | margin-right: 10px;
|
133 | }
|
134 | .back-button:hover a {
|
135 | color: #2a3035;
|
136 | text-decoration: underline;
|
137 | cursor: pointer;
|
138 | }
|
139 | header {
|
140 | position: relative;
|
141 | height: 56px;
|
142 | width: 100%;
|
143 | background-color: #D95000;
|
144 | display: flex;
|
145 | flex-direction: column;
|
146 | justify-content: center;
|
147 | overflow: hidden;
|
148 | background-color: #E9EBEC;
|
149 | background-repeat: no-repeat;
|
150 | background-position: calc(100% - 6px) 0px;
|
151 | background-size: contain;
|
152 | }
|
153 | .header-content {
|
154 | display: flex;
|
155 | align-items: center;
|
156 | position: relative;
|
157 | max-width: 420px;
|
158 | width: 420px;
|
159 | margin: 0 auto;
|
160 | box-sizing: border-box;
|
161 | padding: 0 10px;
|
162 | }
|
163 | header h3,
|
164 | header img {
|
165 | display: inline-block;
|
166 | color: #434A50;
|
167 | font-size: 24px;
|
168 | margin: 0;
|
169 | }
|
170 | .world-logo {
|
171 | width: 56px;
|
172 | margin-right: 12px;
|
173 | }
|
174 | footer {
|
175 | width: 100%;
|
176 | border-top: 1px solid #E9EBEC;
|
177 | text-align: center;
|
178 | max-height: 60px;
|
179 | align-self: flex-end;
|
180 | flex-grow: 0;
|
181 | margin-top: 18px;
|
182 | box-sizing: border-box;
|
183 | }
|
184 | footer a {
|
185 | display: inline-block;
|
186 | color: darkgray;
|
187 | text-decoration: none;
|
188 | padding: 14px 10px 20px;
|
189 | font-weight: bold;
|
190 | }
|
191 | footer a:hover {
|
192 | text-decoration: underline;
|
193 | }
|
194 | .button-wrapper {
|
195 | text-align: center;
|
196 | }
|
197 |
|
198 | @media (max-width: 600px) {
|
199 | header {
|
200 | display: flex;
|
201 | flex-direction: row;
|
202 | align-items: center;
|
203 | }
|
204 | .login-page__container {
|
205 | height: 100vh;
|
206 | box-sizing: border-box;
|
207 | }
|
208 | .login-page__container kwc-auth {
|
209 | height: inherit;
|
210 | width: 100%;
|
211 | max-width: none;
|
212 | }
|
213 | .login-page footer {
|
214 | max-width: none;
|
215 | align-self: center;
|
216 | }
|
217 | }
|
218 | `,
|
219 | ];
|
220 | }
|
221 | headerTemplate() {
|
222 | const { id } = this.view;
|
223 | const privacyHeader = _('UPDATED_PRIVACY_SETTINGS', 'We’ve updated our privacy settings');
|
224 | const signupHeader = _('SIGNUP', 'Signup');
|
225 | let header = html ``;
|
226 | switch (id) {
|
227 | case 'username':
|
228 | header = this.headerContentTemplate(signupHeader);
|
229 | break;
|
230 | case 'update-username':
|
231 | header = this.headerContentTemplate(privacyHeader);
|
232 | break;
|
233 | case 'password':
|
234 | header = this.headerContentTemplate(signupHeader);
|
235 | break;
|
236 | case 'email':
|
237 | header = this.headerContentTemplate(signupHeader);
|
238 | break;
|
239 | case 'update-email':
|
240 | header = this.headerContentTemplate(privacyHeader);
|
241 | break;
|
242 | case 'success':
|
243 | header = this.headerContentTemplate(_('WELCOME_TO_KANO', 'Welcome to Kano'));
|
244 | break;
|
245 | case 'forgot-username':
|
246 | header = this.headerContentTemplate(signupHeader);
|
247 | break;
|
248 | case 'forgot-password':
|
249 | header = this.headerContentTemplate(signupHeader);
|
250 | break;
|
251 | case 'forgot-email':
|
252 | header = this.headerContentTemplate(signupHeader);
|
253 | break;
|
254 | default:
|
255 | break;
|
256 | }
|
257 | return html `
|
258 | <header id="header" style="background-image:${headerImage}" >
|
259 | ${header}
|
260 | </header>
|
261 | `;
|
262 | }
|
263 | backButtonTemplate() {
|
264 | if (typeof this.view.backButton === 'undefined') {
|
265 | return;
|
266 | }
|
267 | const button = this.view.backButton;
|
268 | return html `
|
269 | <div class="back-button">
|
270 | <a @click=${() => this.changeTemplate(button.link)} >
|
271 | <img src=${icons.back} />
|
272 | ${button.text}
|
273 | </a>
|
274 | </div>
|
275 | `;
|
276 | }
|
277 | headerContentTemplate(text) {
|
278 | const showButton = typeof this.view.backButton !== 'undefined';
|
279 | return html `
|
280 | <div class="header-content">
|
281 | ${showButton ? this.backButtonTemplate() : this.header(text)}
|
282 | </div>
|
283 | `;
|
284 | }
|
285 | header(text) {
|
286 | return html `
|
287 | <img src=${icons.world} class="world-logo" />
|
288 | <h3>${text}</h3>
|
289 | `;
|
290 | }
|
291 | handleClick(id) {
|
292 | this.changeTemplate(id);
|
293 | }
|
294 | handleChangeView(e) {
|
295 | this.changeTemplate(e.detail.nextView);
|
296 | }
|
297 | changeTemplate(id) {
|
298 | this.view = this.views.get(id) || { id: 'login' };
|
299 | this.dispatchEvent(new CustomEvent('view-changed', { detail: this.view, bubbles: true, composed: true }));
|
300 | }
|
301 | renderTemplate() {
|
302 | switch (this.view.id) {
|
303 | case 'play':
|
304 | return html `
|
305 | <div class="play"></div>
|
306 | `;
|
307 | case 'login':
|
308 | return html `
|
309 | <div class="login-page">
|
310 | <div class="login-page__container">
|
311 | <kwc-auth
|
312 | .view='${this.view.id}'
|
313 | .locale='${this.locale}'
|
314 | @changeView=${this.handleChangeView}
|
315 | @login=${this.handleLogin}
|
316 | ></kwc-auth>
|
317 | </div>
|
318 | </div>
|
319 | `;
|
320 | default:
|
321 | return html `
|
322 | ${this.headerTemplate()}
|
323 | <div class="page-content page-content--${this.view.id}">
|
324 | <kwc-auth
|
325 | .view='${this.view.id}'
|
326 | .locale='${this.locale}'
|
327 | .allowExit=${this.allowExit}
|
328 | @changeView=${this.handleChangeView}
|
329 | @submit-username=${this.handleSubmitUsername}
|
330 | @submit-password=${this.handleSubmitPassword}
|
331 | @login=${this.handleLogin}
|
332 | @register=${this.handleRegister}
|
333 | @update-username=${this.handleUpdateUsername}
|
334 | @update-email=${this.handleUpdateEmail}
|
335 | @forgot-password=${this.handleForgotPassword}
|
336 | @forgot-username=${this.handleForgotUsername}
|
337 | @forgot-email=${this.handleForgotEmail}
|
338 | @finished-flow=${this.handleFinishedFlow}
|
339 | @exit=${this.handleExit}
|
340 | ></kwc-auth>
|
341 | </div>
|
342 | `;
|
343 | }
|
344 | }
|
345 | render() {
|
346 | return this.renderTemplate();
|
347 | }
|
348 | validateForm(form) {
|
349 | return form && form.username && form.password && form.email;
|
350 | }
|
351 | getActions() {
|
352 | if (!this.actions) {
|
353 | throw new Error('Could not configure auth: actions id not defined');
|
354 | }
|
355 | return this.actions;
|
356 | }
|
357 | setLoading(state) {
|
358 | const el = this.authElement;
|
359 | if (!el) {
|
360 | return;
|
361 | }
|
362 | el.loading = state;
|
363 | }
|
364 | displayError(message, getter) {
|
365 | const auth = this.authElement;
|
366 | if (!auth) {
|
367 | return;
|
368 | }
|
369 | const el = getter(auth);
|
370 | if (!el) {
|
371 | return;
|
372 | }
|
373 | el.error = message || _('SOMETHING_WENT_WRONG', 'Something went wrong, please try again later');
|
374 | }
|
375 | wrapTask(task) {
|
376 | this.setLoading(true);
|
377 | return task()
|
378 | .then((v) => {
|
379 | this.setLoading(false);
|
380 | return v;
|
381 | })
|
382 | .catch((e) => {
|
383 | this.setLoading(false);
|
384 | throw e;
|
385 | });
|
386 | }
|
387 | handleSubmitUsername(e) {
|
388 | return this.wrapTask(() => {
|
389 | return this.getActions().checkUsernameAvailability(e.detail)
|
390 | .then(() => this.changeTemplate('password'))
|
391 | .catch((e) => this.displayError(e.message, (el) => el.username));
|
392 | });
|
393 | }
|
394 | handleSubmitPassword() {
|
395 | return this.wrapTask(() => {
|
396 | return new Promise((resolve) => setTimeout(resolve, 500))
|
397 | .then(() => this.changeTemplate('email'));
|
398 | });
|
399 | }
|
400 | handleLogin(e) {
|
401 |
|
402 | this.displayError(' ', (el) => el.login);
|
403 | return this.wrapTask(() => {
|
404 | return this.getActions().login(e.detail)
|
405 | .then((user) => {
|
406 | if (user.attributes && user.attributes.username && user.attributes.username === 'invalid') {
|
407 | this.changeTemplate('update-username');
|
408 | }
|
409 | else if (user.attributes && user.attributes.email && (user.attributes.email === 'invalid' || user.attributes.email === 'removed')) {
|
410 | this.changeTemplate('update-email');
|
411 | }
|
412 | else {
|
413 | this.changeTemplate('play');
|
414 | }
|
415 | })
|
416 | .catch((e) => {
|
417 | this.displayError(e.message, (el) => el.login);
|
418 | });
|
419 | });
|
420 | }
|
421 | handleRegister(e) {
|
422 | return this.wrapTask(() => {
|
423 | return this.getActions().register(e.detail.form)
|
424 | .then(() => this.changeTemplate('success'))
|
425 | .catch((e) => {
|
426 |
|
427 | this.displayError(e.message, (el) => el.forgotPassword);
|
428 | });
|
429 | });
|
430 | }
|
431 | handleUpdateUsername(e) {
|
432 | return this.wrapTask(() => {
|
433 | return this.getActions().updateUsername(e.detail)
|
434 | .then(() => this.changeTemplate('update-email'))
|
435 | .catch((e) => this.displayError(e.message, (el) => el.username));
|
436 | });
|
437 | }
|
438 | handleUpdateEmail(e) {
|
439 | return this.wrapTask(() => {
|
440 | return this.getActions().updateEmail(e.detail)
|
441 | .then(() => this.changeTemplate('play'))
|
442 | .catch((e) => this.displayError(e.message, (el) => el.email));
|
443 | });
|
444 | }
|
445 | handleForgotPassword(e) {
|
446 | return this.wrapTask(() => {
|
447 | return this.getActions().forgotPassword(e.detail)
|
448 | .then(() => this.changeTemplate('login'))
|
449 | .catch((e) => this.displayError(e.message, (el) => el.forgotPassword));
|
450 | });
|
451 | }
|
452 | handleForgotUsername(e) {
|
453 | return this.wrapTask(() => {
|
454 | return this.getActions().forgotUsername(e.detail)
|
455 | .then(() => this.changeTemplate('login'))
|
456 | .catch((e) => this.displayError(e.message, (el) => el.forgotUsername));
|
457 | });
|
458 | }
|
459 | handleForgotEmail(e) {
|
460 | this.getActions().forgotEmail(e.detail)
|
461 | .then(() => this.changeTemplate('play'));
|
462 | }
|
463 | handleFinishedFlow() {
|
464 | this.getActions().finish()
|
465 | .then(() => this.changeTemplate('play'));
|
466 | }
|
467 | handleResendEmail() {
|
468 | this.getActions().resendEmail('userId')
|
469 | .then(() => this.changeTemplate('play'));
|
470 | }
|
471 | handleExit() {
|
472 | this.getActions().exit();
|
473 | }
|
474 | };
|
475 | __decorate([
|
476 | property({ type: Object })
|
477 | ], AuthView.prototype, "view", void 0);
|
478 | __decorate([
|
479 | property({ type: String })
|
480 | ], AuthView.prototype, "headerText", void 0);
|
481 | __decorate([
|
482 | property({ type: Boolean })
|
483 | ], AuthView.prototype, "allowExit", void 0);
|
484 | __decorate([
|
485 | query('kwc-auth')
|
486 | ], AuthView.prototype, "authElement", void 0);
|
487 | AuthView = __decorate([
|
488 | customElement('kwc-auth-example')
|
489 | ], AuthView);
|
490 | export { AuthView };
|
491 | export default AuthView;
|
492 |
|
\ | No newline at end of file |