@things-factory/auth-ui 7.0.1-alpha.88 → 7.0.1-alpha.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/auth-style-sign.ts +29 -18
- package/client/components/abstract-auth-page.ts +41 -22
- package/client/components/abstract-password-reset.ts +11 -9
- package/client/components/abstract-sign.ts +138 -0
- package/client/components/change-password.ts +2 -2
- package/client/components/contact-us.ts +18 -16
- package/client/components/create-domain-popup.ts +11 -7
- package/client/components/create-role.ts +8 -20
- package/client/components/create-user.ts +8 -16
- package/client/components/credential-manager.ts +64 -0
- package/client/components/invite-customer.ts +7 -12
- package/client/components/invite-user.ts +2 -7
- package/client/components/ownership-transfer-popup.ts +3 -3
- package/client/components/partner-role-editor.ts +9 -15
- package/client/components/profile-component.ts +124 -7
- package/client/components/role-privilege-editor.ts +10 -17
- package/client/components/user-role-editor.ts +27 -38
- package/client/entries/auth/activate.ts +17 -17
- package/client/entries/auth/checkin.ts +15 -19
- package/client/entries/auth/forgot-password.ts +8 -6
- package/client/entries/auth/result.ts +13 -12
- package/client/entries/auth/signup.ts +20 -24
- package/client/entries/oauth2/oauth2-decision-error-page.ts +2 -2
- package/client/entries/oauth2/oauth2-decision-page.ts +60 -55
- package/client/entries/public/home.ts +40 -18
- package/client/pages/app-binding/app-binding.ts +5 -9
- package/client/pages/app-binding/app-bindings.ts +2 -2
- package/client/pages/appliance/appliance.ts +6 -9
- package/client/pages/appliance/home.ts +3 -3
- package/client/pages/appliance/register.ts +1 -1
- package/client/pages/application/application.ts +30 -14
- package/client/pages/application/applications.ts +4 -12
- package/client/pages/application/register.ts +1 -1
- package/client/pages/attribute/attribute-set-management.ts +2 -0
- package/client/pages/auth-provider/auth-provider-management.ts +2 -0
- package/client/pages/domain/domain-management.ts +2 -0
- package/client/pages/user/user-management.ts +5 -5
- package/dist-client/auth-style-sign.js +29 -18
- package/dist-client/auth-style-sign.js.map +1 -1
- package/dist-client/components/abstract-auth-page.d.ts +4 -4
- package/dist-client/components/abstract-auth-page.js +40 -22
- package/dist-client/components/abstract-auth-page.js.map +1 -1
- package/dist-client/components/abstract-password-reset.d.ts +3 -2
- package/dist-client/components/abstract-password-reset.js +10 -9
- package/dist-client/components/abstract-password-reset.js.map +1 -1
- package/dist-client/components/abstract-sign.d.ts +3 -0
- package/dist-client/components/abstract-sign.js +110 -0
- package/dist-client/components/abstract-sign.js.map +1 -1
- package/dist-client/components/change-password.js +2 -2
- package/dist-client/components/change-password.js.map +1 -1
- package/dist-client/components/contact-us.d.ts +4 -4
- package/dist-client/components/contact-us.js +17 -16
- package/dist-client/components/contact-us.js.map +1 -1
- package/dist-client/components/create-domain-popup.d.ts +1 -1
- package/dist-client/components/create-domain-popup.js +11 -7
- package/dist-client/components/create-domain-popup.js.map +1 -1
- package/dist-client/components/create-role.d.ts +1 -1
- package/dist-client/components/create-role.js +7 -19
- package/dist-client/components/create-role.js.map +1 -1
- package/dist-client/components/create-user.js +6 -14
- package/dist-client/components/create-user.js.map +1 -1
- package/dist-client/components/credential-manager.d.ts +11 -0
- package/dist-client/components/credential-manager.js +64 -0
- package/dist-client/components/credential-manager.js.map +1 -0
- package/dist-client/components/invite-customer.js +5 -7
- package/dist-client/components/invite-customer.js.map +1 -1
- package/dist-client/components/invite-user.js +2 -7
- package/dist-client/components/invite-user.js.map +1 -1
- package/dist-client/components/ownership-transfer-popup.d.ts +1 -1
- package/dist-client/components/ownership-transfer-popup.js +3 -3
- package/dist-client/components/ownership-transfer-popup.js.map +1 -1
- package/dist-client/components/partner-role-editor.js +9 -15
- package/dist-client/components/partner-role-editor.js.map +1 -1
- package/dist-client/components/profile-component.d.ts +6 -0
- package/dist-client/components/profile-component.js +111 -7
- package/dist-client/components/profile-component.js.map +1 -1
- package/dist-client/components/role-privilege-editor.js +10 -17
- package/dist-client/components/role-privilege-editor.js.map +1 -1
- package/dist-client/components/user-role-editor.d.ts +2 -0
- package/dist-client/components/user-role-editor.js +26 -37
- package/dist-client/components/user-role-editor.js.map +1 -1
- package/dist-client/entries/auth/activate.d.ts +2 -1
- package/dist-client/entries/auth/activate.js +16 -17
- package/dist-client/entries/auth/activate.js.map +1 -1
- package/dist-client/entries/auth/checkin.d.ts +2 -2
- package/dist-client/entries/auth/checkin.js +13 -16
- package/dist-client/entries/auth/checkin.js.map +1 -1
- package/dist-client/entries/auth/forgot-password.d.ts +2 -1
- package/dist-client/entries/auth/forgot-password.js +7 -6
- package/dist-client/entries/auth/forgot-password.js.map +1 -1
- package/dist-client/entries/auth/result.d.ts +2 -2
- package/dist-client/entries/auth/result.js +12 -12
- package/dist-client/entries/auth/result.js.map +1 -1
- package/dist-client/entries/auth/signup.js +19 -24
- package/dist-client/entries/auth/signup.js.map +1 -1
- package/dist-client/entries/oauth2/oauth2-decision-error-page.d.ts +1 -1
- package/dist-client/entries/oauth2/oauth2-decision-error-page.js +2 -2
- package/dist-client/entries/oauth2/oauth2-decision-error-page.js.map +1 -1
- package/dist-client/entries/oauth2/oauth2-decision-page.d.ts +1 -1
- package/dist-client/entries/oauth2/oauth2-decision-page.js +59 -54
- package/dist-client/entries/oauth2/oauth2-decision-page.js.map +1 -1
- package/dist-client/entries/public/home.d.ts +3 -2
- package/dist-client/entries/public/home.js +40 -18
- package/dist-client/entries/public/home.js.map +1 -1
- package/dist-client/pages/app-binding/app-binding.d.ts +1 -1
- package/dist-client/pages/app-binding/app-binding.js +4 -9
- package/dist-client/pages/app-binding/app-binding.js.map +1 -1
- package/dist-client/pages/app-binding/app-bindings.js +2 -2
- package/dist-client/pages/app-binding/app-bindings.js.map +1 -1
- package/dist-client/pages/appliance/appliance.d.ts +1 -1
- package/dist-client/pages/appliance/appliance.js +5 -9
- package/dist-client/pages/appliance/appliance.js.map +1 -1
- package/dist-client/pages/appliance/home.js +3 -3
- package/dist-client/pages/appliance/home.js.map +1 -1
- package/dist-client/pages/appliance/register.js +1 -1
- package/dist-client/pages/appliance/register.js.map +1 -1
- package/dist-client/pages/application/application.js +26 -13
- package/dist-client/pages/application/application.js.map +1 -1
- package/dist-client/pages/application/applications.js +4 -12
- package/dist-client/pages/application/applications.js.map +1 -1
- package/dist-client/pages/application/register.js +1 -1
- package/dist-client/pages/application/register.js.map +1 -1
- package/dist-client/pages/attribute/attribute-set-management.d.ts +1 -0
- package/dist-client/pages/attribute/attribute-set-management.js +1 -0
- package/dist-client/pages/attribute/attribute-set-management.js.map +1 -1
- package/dist-client/pages/auth-provider/auth-provider-management.d.ts +1 -0
- package/dist-client/pages/auth-provider/auth-provider-management.js +1 -0
- package/dist-client/pages/auth-provider/auth-provider-management.js.map +1 -1
- package/dist-client/pages/domain/domain-management.d.ts +1 -0
- package/dist-client/pages/domain/domain-management.js +1 -0
- package/dist-client/pages/domain/domain-management.js.map +1 -1
- package/dist-client/pages/user/user-management.d.ts +1 -0
- package/dist-client/pages/user/user-management.js +4 -5
- package/dist-client/pages/user/user-management.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -10
- package/translations/en.json +1 -0
- package/translations/ja.json +1 -0
- package/translations/ko.json +1 -0
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
- package/views/auth-page.html +2 -2
- package/views/oauth2-page.html +3 -3
|
@@ -57,15 +57,12 @@ class Application extends connect(store)(PageView) {
|
|
|
57
57
|
border: var(--border-dark-color);
|
|
58
58
|
border-radius: var(--border-radius);
|
|
59
59
|
margin: var(--input-margin);
|
|
60
|
-
padding:
|
|
60
|
+
padding: 9px;
|
|
61
61
|
font: var(--input-font);
|
|
62
62
|
flex: 1;
|
|
63
63
|
}
|
|
64
64
|
select:focus,
|
|
65
65
|
input:focus,
|
|
66
|
-
button {
|
|
67
|
-
outline: none;
|
|
68
|
-
}
|
|
69
66
|
form {
|
|
70
67
|
max-width: var(--content-container-max-width);
|
|
71
68
|
}
|
|
@@ -106,13 +103,18 @@ class Application extends connect(store)(PageView) {
|
|
|
106
103
|
}
|
|
107
104
|
[button-in-field] {
|
|
108
105
|
position: absolute;
|
|
109
|
-
top:
|
|
110
|
-
right:
|
|
106
|
+
top: 16px;
|
|
107
|
+
right: 2px;
|
|
108
|
+
padding: 0;
|
|
109
|
+
border-radius: 0;
|
|
111
110
|
}
|
|
112
111
|
[input-hint] {
|
|
113
112
|
font: var(--input-hint-font);
|
|
114
113
|
color: var(--input-hint-color);
|
|
115
114
|
}
|
|
115
|
+
[danger] {
|
|
116
|
+
--md-theme-primary: var(--md-danger-button-primary-color);
|
|
117
|
+
}
|
|
116
118
|
|
|
117
119
|
@media screen and (max-width: 480px) {
|
|
118
120
|
[field] {
|
|
@@ -140,7 +142,7 @@ class Application extends connect(store)(PageView) {
|
|
|
140
142
|
|
|
141
143
|
return html`
|
|
142
144
|
<div>
|
|
143
|
-
<h2><
|
|
145
|
+
<h2><md-icon>apps</md-icon> ${app.name}</h2>
|
|
144
146
|
<p page-description>${app.description}</p>
|
|
145
147
|
</div>
|
|
146
148
|
|
|
@@ -171,7 +173,10 @@ class Application extends connect(store)(PageView) {
|
|
|
171
173
|
<div field grid-span>
|
|
172
174
|
<label for="type-selector">type</label>
|
|
173
175
|
<select id="type-selector" name="type">
|
|
174
|
-
${APPLICATION_TYPES.map(
|
|
176
|
+
${APPLICATION_TYPES.map(
|
|
177
|
+
type =>
|
|
178
|
+
html`<option value="${app.type}" ?selected="${type === app.type ? true : false}">${type}</option>`
|
|
179
|
+
)}
|
|
175
180
|
</select>
|
|
176
181
|
</div>
|
|
177
182
|
|
|
@@ -203,15 +208,20 @@ class Application extends connect(store)(PageView) {
|
|
|
203
208
|
<div field grid-span>
|
|
204
209
|
<label for="auth-url">auth URL</label>
|
|
205
210
|
<input id="auth-url" type="text" .value=${app.authUrl} readonly />
|
|
206
|
-
<
|
|
211
|
+
<md-text-button dense button-in-field clipboard-copy @click=${e => e.preventDefault()}
|
|
212
|
+
>copy</md-text-button
|
|
213
|
+
>
|
|
207
214
|
The endpoint for authorization server. This is used to get the authorization code.
|
|
208
215
|
</div>
|
|
209
216
|
|
|
210
217
|
<div field grid-span>
|
|
211
218
|
<label for="access-token-url">access token URL</label>
|
|
212
219
|
<input id="access-token-url" type="text" .value=${app.accessTokenUrl} readonly />
|
|
213
|
-
<
|
|
214
|
-
|
|
220
|
+
<md-text-button dense button-in-field clipboard-copy @click=${e => e.preventDefault()}
|
|
221
|
+
>copy</md-text-button
|
|
222
|
+
>
|
|
223
|
+
The endpoint for authentication server. This is used to exchange the authorization code for an access
|
|
224
|
+
token.
|
|
215
225
|
</div>
|
|
216
226
|
</div>
|
|
217
227
|
</fieldset>
|
|
@@ -224,20 +234,26 @@ class Application extends connect(store)(PageView) {
|
|
|
224
234
|
<div field grid-span>
|
|
225
235
|
<label for="app-key">appKey</label>
|
|
226
236
|
<input id="app-key" type="text" .value=${app.appKey} readonly />
|
|
227
|
-
<
|
|
237
|
+
<md-text-button dense button-in-field clipboard-copy @click=${e => e.preventDefault()}
|
|
238
|
+
>copy</md-text-button
|
|
239
|
+
>
|
|
228
240
|
</div>
|
|
229
241
|
|
|
230
242
|
<div field grid-span>
|
|
231
243
|
<label for="app-secret">appSecret</label>
|
|
232
244
|
<input id="app-secret" type="text" .value=${app.appSecret} readonly />
|
|
233
|
-
<
|
|
245
|
+
<md-text-button dense button-in-field clipboard-copy @click=${e => e.preventDefault()}
|
|
246
|
+
>copy</md-text-button
|
|
247
|
+
>
|
|
234
248
|
</div>
|
|
235
249
|
</div>
|
|
236
250
|
</fieldset>
|
|
237
251
|
</div>
|
|
238
252
|
|
|
239
253
|
<div class="button-container">
|
|
240
|
-
<button danger @click=${this.deleteApplication.bind(this)}
|
|
254
|
+
<button danger @click=${this.deleteApplication.bind(this)}>
|
|
255
|
+
<md-icon>delete_forever</md-icon>delete this app
|
|
256
|
+
</button>
|
|
241
257
|
<button @click=${this.updateApplication.bind(this)}><md-icon>save</md-icon>update</button>
|
|
242
258
|
<button><md-icon>passkey</md-icon>generate new secret</button>
|
|
243
259
|
</div>
|
|
@@ -17,7 +17,7 @@ class Applications extends connect(store)(PageView) {
|
|
|
17
17
|
overflow: auto;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
md-outlined-button {
|
|
21
21
|
float: right;
|
|
22
22
|
margin-top: var(--margin-default);
|
|
23
23
|
}
|
|
@@ -99,17 +99,10 @@ class Applications extends connect(store)(PageView) {
|
|
|
99
99
|
return html`
|
|
100
100
|
<div>
|
|
101
101
|
<h2>Registered Applications</h2>
|
|
102
|
-
<p page-description>
|
|
103
|
-
|
|
104
|
-
</p>
|
|
105
|
-
<mwc-button
|
|
106
|
-
raised
|
|
107
|
-
@click=${e => navigate('application-register')}
|
|
108
|
-
label="register new application"
|
|
109
|
-
></mwc-button>
|
|
102
|
+
<p page-description>What type of app are you building?<br />Choose the app type that best suits the audience you’re building for.</p>
|
|
103
|
+
<md-elevated-button @click=${e => navigate('application-register')}>register new application</md-elevated-button>
|
|
110
104
|
</div>
|
|
111
105
|
|
|
112
|
-
<!-- <div> -->
|
|
113
106
|
<table>
|
|
114
107
|
<tr>
|
|
115
108
|
<th>app name</th>
|
|
@@ -134,8 +127,7 @@ class Applications extends connect(store)(PageView) {
|
|
|
134
127
|
)}
|
|
135
128
|
</table>
|
|
136
129
|
|
|
137
|
-
<
|
|
138
|
-
<!-- </div> -->
|
|
130
|
+
<md-outlined-button @click=${e => navigate('app-bindings')}>bound applications ..</md-outlined-button>
|
|
139
131
|
`
|
|
140
132
|
}
|
|
141
133
|
|
|
@@ -165,7 +165,7 @@ class ApplicationRegister extends connect(store)(PageView) {
|
|
|
165
165
|
<input id="email" type="text" name="email" />
|
|
166
166
|
</div>
|
|
167
167
|
|
|
168
|
-
<
|
|
168
|
+
<md-elevated-button grid-span @click=${this.createApplication.bind(this)}>register</md-elevated-button>
|
|
169
169
|
</div>
|
|
170
170
|
</form>
|
|
171
171
|
</div>
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
2
|
+
|
|
1
3
|
import '@things-factory/component-ui'
|
|
2
4
|
import '../../components/invite-user'
|
|
3
5
|
import '../../components/ownership-transfer-popup'
|
|
@@ -99,10 +101,10 @@ class UserManagement extends PageView {
|
|
|
99
101
|
return html`
|
|
100
102
|
${!user.activated
|
|
101
103
|
? html`
|
|
102
|
-
<
|
|
104
|
+
<md-icon>do_disturb</md-icon>
|
|
103
105
|
${user.name}
|
|
104
106
|
`
|
|
105
|
-
: html` ${user.owner ? html` <
|
|
107
|
+
: html` ${user.owner ? html` <md-icon>supervisor_account</md-icon> ` : ''} ${user.name} `}
|
|
106
108
|
`
|
|
107
109
|
}}
|
|
108
110
|
.contentRenderer=${user =>
|
|
@@ -116,9 +118,7 @@ class UserManagement extends PageView {
|
|
|
116
118
|
></user-role-editor>`}
|
|
117
119
|
></quick-find-list>
|
|
118
120
|
|
|
119
|
-
${this.currentTab === USER_TYPES.USER
|
|
120
|
-
? html`<invite-user @invitationCompleted=${this.refreshUsers.bind(this)}></invite-user>`
|
|
121
|
-
: ''}
|
|
121
|
+
${this.currentTab === USER_TYPES.USER ? html`<invite-user @invitationCompleted=${this.refreshUsers.bind(this)}></invite-user>` : ''}
|
|
122
122
|
`
|
|
123
123
|
}
|
|
124
124
|
|
|
@@ -70,34 +70,45 @@ export const AUTH_STYLE_SIGN = css `
|
|
|
70
70
|
text-align: left;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
.
|
|
73
|
+
.submit-buttons-container {
|
|
74
|
+
grid-column: 1 / -1;
|
|
75
|
+
text-align: center;
|
|
76
|
+
|
|
77
|
+
display: flex;
|
|
78
|
+
align-items: center;
|
|
79
|
+
gap: 10px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.fingerprint {
|
|
83
|
+
color: var(--md-sys-color-primary-container);
|
|
84
|
+
border: 1.5px solid var(--md-sys-color-primary-container);
|
|
85
|
+
border-radius: 20%;
|
|
86
|
+
width: 36px;
|
|
87
|
+
height: 36px;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.field md-filled-text-field {
|
|
91
|
+
grid-column: 1 / -1;
|
|
74
92
|
width: 100%;
|
|
75
|
-
--mdc-theme-primary: var(--auth-input-color);
|
|
76
|
-
--mdc-theme-error: #fdd55f;
|
|
77
|
-
--mdc-text-field-fill-color: transparent;
|
|
78
|
-
--mdc-text-field-ink-color: var(--auth-input-color);
|
|
79
|
-
--mdc-text-field-label-ink-color: var(--auth-input-color);
|
|
80
|
-
--mdc-text-field-idle-line-color: var(--auth-input-color);
|
|
81
|
-
--mdc-text-field-hover-line-color: var(--auth-input-color);
|
|
82
|
-
font: var(--auth-input-font);
|
|
83
93
|
}
|
|
84
94
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
--mdc-theme-on-primary: var(--primary-color);
|
|
88
|
-
--mdc-button-horizontal-padding: var(--padding-default);
|
|
89
|
-
--mdc-button-ink-color: var(--primary-color);
|
|
95
|
+
md-text-button,
|
|
96
|
+
md-elevated-button {
|
|
90
97
|
grid-column: 1 / -1;
|
|
98
|
+
flex: 1;
|
|
91
99
|
}
|
|
92
100
|
|
|
93
101
|
.wrap .link {
|
|
94
102
|
text-decoration: none;
|
|
95
103
|
justify-self: flex-start;
|
|
96
|
-
color: var(--auth-title-color);
|
|
97
104
|
}
|
|
98
105
|
|
|
99
|
-
.wrap .link
|
|
100
|
-
--
|
|
106
|
+
.wrap .link md-text-button {
|
|
107
|
+
--md-text-button-label-text-color: var(--md-sys-color-primary-container);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.wrap .link md-icon {
|
|
111
|
+
color: var(--md-sys-color-primary-container);
|
|
101
112
|
}
|
|
102
113
|
|
|
103
114
|
#locale-area {
|
|
@@ -110,7 +121,7 @@ export const AUTH_STYLE_SIGN = css `
|
|
|
110
121
|
display: flex;
|
|
111
122
|
align-items: center;
|
|
112
123
|
color: var(--theme-white-color);
|
|
113
|
-
--
|
|
124
|
+
--md-icon-size: 16px;
|
|
114
125
|
}
|
|
115
126
|
|
|
116
127
|
#locale-selector {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-style-sign.js","sourceRoot":"","sources":["../client/auth-style-sign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"auth-style-sign.js","sourceRoot":"","sources":["../client/auth-style-sign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4LjC,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport const AUTH_STYLE_SIGN = css`\n :host {\n display: flex;\n background-color: var(--auth-background);\n }\n\n :host *:focus {\n outline: none;\n }\n\n :host * {\n box-sizing: border-box;\n }\n\n ::placeholder {\n color: var(--opacity-light-color);\n font: var(--auth-input-font);\n }\n .wrap {\n display: block;\n width: 450px;\n min-width: 350px;\n margin: 0 auto;\n padding-bottom: 100px;\n text-align: center;\n }\n .auth-brand {\n color: #fff;\n }\n .auth-brand img {\n margin: 15% auto 5px auto;\n width: 100px;\n border: 3px solid var(--theme-white-color);\n border-radius: 25px;\n box-shadow: var(--box-shadow);\n }\n .name {\n display: block;\n font: var(--auth-brand-name);\n text-shadow: var(--auth-brand-name-shadow);\n }\n .auth-brand .welcome-msg {\n font: var(--auth-brand-welcome-msg);\n }\n .auth-form {\n display: grid;\n grid-gap: var(--margin-default);\n grid-template-columns: 1fr 1fr;\n }\n\n form {\n grid-column: 1 / -1;\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: var(--margin-default);\n align-items: center;\n }\n\n h3 {\n grid-column: 1 / -1;\n margin: 50px 0 0 0;\n font: var(--auth-title-font);\n color: var(--auth-title-color);\n text-transform: uppercase;\n }\n\n .field {\n grid-column: 1 / -1;\n text-align: left;\n }\n\n .submit-buttons-container {\n grid-column: 1 / -1;\n text-align: center;\n\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .fingerprint {\n color: var(--md-sys-color-primary-container);\n border: 1.5px solid var(--md-sys-color-primary-container);\n border-radius: 20%;\n width: 36px;\n height: 36px;\n }\n\n .field md-filled-text-field {\n grid-column: 1 / -1;\n width: 100%;\n }\n\n md-text-button,\n md-elevated-button {\n grid-column: 1 / -1;\n flex: 1;\n }\n\n .wrap .link {\n text-decoration: none;\n justify-self: flex-start;\n }\n\n .wrap .link md-text-button {\n --md-text-button-label-text-color: var(--md-sys-color-primary-container);\n }\n\n .wrap .link md-icon {\n color: var(--md-sys-color-primary-container);\n }\n\n #locale-area {\n display: flex;\n grid-column: 1 / -1;\n padding: 0 var(--padding-default);\n }\n\n #locale-area > label {\n display: flex;\n align-items: center;\n color: var(--theme-white-color);\n --md-icon-size: 16px;\n }\n\n #locale-selector {\n font-size: 16px;\n width: 100%;\n }\n\n #locale-selector {\n --i18n-selector-field-border: none;\n --i18n-selector-field-background-color: none;\n --i18n-selector-field-font-size: 14px;\n --i18n-selector-field-color: var(--theme-white-color);\n }\n\n .lottie-container {\n width: 100%;\n height: 300px;\n position: absolute;\n left: 0;\n bottom: 0;\n pointer-events: none;\n }\n .lottie-container lottie-player {\n position: absolute;\n bottom: -6%;\n width: 100%;\n height: auto;\n }\n\n @media (max-width: 450px) {\n .wrap {\n width: 85%;\n min-width: 320px;\n }\n .auth-form {\n grid-template-columns: 1fr;\n }\n .auth-brand img {\n margin: 12% auto 5px auto;\n width: 75px;\n }\n h3 {\n margin: 15px 0 0 0;\n }\n .lottie-container {\n overflow: hidden;\n height: 200px;\n pointer-events: none;\n }\n .lottie-container lottie-player {\n width: 1200px;\n left: -30%;\n }\n }\n\n @media screen and (min-width: 1400px) {\n .wrap {\n padding-bottom: 150px;\n }\n }\n @media screen and (min-width: 2500px) {\n .wrap {\n padding-bottom: 280px;\n }\n }\n`\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import '@material/
|
|
2
|
-
import '@material/
|
|
3
|
-
import '@material/
|
|
4
|
-
import '@material/
|
|
1
|
+
import '@material/web/icon/icon.js';
|
|
2
|
+
import '@material/web/button/elevated-button.js';
|
|
3
|
+
import '@material/web/button/text-button.js';
|
|
4
|
+
import '@material/web/textfield/filled-text-field.js';
|
|
5
5
|
import '@operato/lottie-player';
|
|
6
6
|
import '@operato/i18n/ox-i18n.js';
|
|
7
7
|
import '@operato/i18n/ox-i18n-selector.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import '@material/
|
|
3
|
-
import '@material/
|
|
4
|
-
import '@material/
|
|
5
|
-
import '@material/
|
|
2
|
+
import '@material/web/icon/icon.js';
|
|
3
|
+
import '@material/web/button/elevated-button.js';
|
|
4
|
+
import '@material/web/button/text-button.js';
|
|
5
|
+
import '@material/web/textfield/filled-text-field.js';
|
|
6
6
|
import '@operato/lottie-player';
|
|
7
7
|
import '@operato/i18n/ox-i18n.js';
|
|
8
8
|
import '@operato/i18n/ox-i18n-selector.js';
|
|
@@ -18,7 +18,7 @@ export class AbstractAuthPage extends localize(i18next)(LitElement) {
|
|
|
18
18
|
const { disableUserFavoredLanguage, languages } = this.data || {};
|
|
19
19
|
var { icon, title, description } = this.applicationMeta;
|
|
20
20
|
return html `
|
|
21
|
-
<div class="content">
|
|
21
|
+
<div class="content md-typescale-display-medium">
|
|
22
22
|
<div class="wrap">
|
|
23
23
|
<div class="auth-brand">
|
|
24
24
|
<img src=${icon} />
|
|
@@ -43,7 +43,7 @@ export class AbstractAuthPage extends localize(i18next)(LitElement) {
|
|
|
43
43
|
${this.links}
|
|
44
44
|
${!disableUserFavoredLanguage
|
|
45
45
|
? html ` <div id="locale-area">
|
|
46
|
-
<label for="locale-selector"><
|
|
46
|
+
<label for="locale-selector"><md-icon>language</md-icon></label>
|
|
47
47
|
<ox-i18n-selector
|
|
48
48
|
id="locale-selector"
|
|
49
49
|
value=${i18next.language || 'en-US'}
|
|
@@ -60,7 +60,9 @@ export class AbstractAuthPage extends localize(i18next)(LitElement) {
|
|
|
60
60
|
</div>
|
|
61
61
|
</div>
|
|
62
62
|
|
|
63
|
-
<
|
|
63
|
+
<md-icon-button class="home" @click=${e => (window.location.href = '/')}
|
|
64
|
+
><md-icon>home</md-icon></md-icon-button
|
|
65
|
+
>
|
|
64
66
|
<ox-snack-bar id="snackbar" level="error" .message=${this.message}></ox-snack-bar>
|
|
65
67
|
|
|
66
68
|
${isSafari()
|
|
@@ -76,7 +78,7 @@ export class AbstractAuthPage extends localize(i18next)(LitElement) {
|
|
|
76
78
|
firstUpdated() {
|
|
77
79
|
setTimeout(() => {
|
|
78
80
|
;
|
|
79
|
-
this.renderRoot.querySelector('
|
|
81
|
+
this.renderRoot.querySelector('md-filled-text-field').focus();
|
|
80
82
|
}, 100);
|
|
81
83
|
this.formEl.reset = () => {
|
|
82
84
|
this.formElements.filter(el => !(el.hidden || el.type == 'hidden')).forEach(el => (el.value = ''));
|
|
@@ -94,34 +96,36 @@ export class AbstractAuthPage extends localize(i18next)(LitElement) {
|
|
|
94
96
|
get formfields() {
|
|
95
97
|
var _a;
|
|
96
98
|
const email = ((_a = this.data) === null || _a === void 0 ? void 0 : _a.email) || '';
|
|
99
|
+
// .validationMessage=${String(i18next.t('text.invalid-email'))}
|
|
97
100
|
return html `
|
|
98
101
|
<input id="redirectTo" type="hidden" name="redirectTo" .value=${this.redirectTo || '/'} />
|
|
99
102
|
|
|
100
103
|
<div class="field">
|
|
101
|
-
<
|
|
104
|
+
<md-filled-text-field
|
|
102
105
|
name="email"
|
|
103
106
|
type="email"
|
|
104
107
|
label=${String(i18next.t('field.email'))}
|
|
105
108
|
required
|
|
106
109
|
.value=${email}
|
|
107
|
-
.validationMessage=${String(i18next.t('text.invalid-email'))}
|
|
108
110
|
autocomplete="username"
|
|
109
111
|
autocapitalize="off"
|
|
110
|
-
|
|
112
|
+
><md-icon slot="leading-icon">mail</md-icon></md-filled-text-field
|
|
113
|
+
>
|
|
111
114
|
</div>
|
|
112
115
|
<div class="field">
|
|
113
|
-
<
|
|
116
|
+
<md-filled-text-field
|
|
114
117
|
name="password"
|
|
115
118
|
type="password"
|
|
116
119
|
label=${String(i18next.t('field.password'))}
|
|
117
120
|
autocomplete="current-password"
|
|
118
121
|
required
|
|
119
|
-
|
|
122
|
+
><md-icon slot="leading-icon">vpn_key</md-icon></md-filled-text-field
|
|
123
|
+
>
|
|
120
124
|
</div>
|
|
121
125
|
|
|
122
|
-
<
|
|
126
|
+
<md-elevated-button class="ui" type="submit" raised @click=${e => this._onSubmit(e)}>
|
|
123
127
|
<ox-i18n msgid="field.${this.pageName}"> </ox-i18n>
|
|
124
|
-
</
|
|
128
|
+
</md-elevated-button>
|
|
125
129
|
`;
|
|
126
130
|
}
|
|
127
131
|
get links() {
|
|
@@ -130,16 +134,25 @@ export class AbstractAuthPage extends localize(i18next)(LitElement) {
|
|
|
130
134
|
${!disableUserSignupProcess
|
|
131
135
|
? html `
|
|
132
136
|
<a class="link" href="/auth/signup">
|
|
133
|
-
<
|
|
137
|
+
<md-text-button>
|
|
138
|
+
<md-icon slot="icon">add_task</md-icon>
|
|
139
|
+
<ox-i18n msgid="field.sign up"></ox-i18n>
|
|
140
|
+
</md-text-button>
|
|
134
141
|
</a>
|
|
135
142
|
<a class="link" href="/auth/forgot-password">
|
|
136
|
-
<
|
|
143
|
+
<md-text-button>
|
|
144
|
+
<md-icon slot="icon">lock_open</md-icon>
|
|
145
|
+
<ox-i18n msgid="field.forgot-password"></ox-i18n>
|
|
146
|
+
</md-text-button>
|
|
137
147
|
</a>
|
|
138
148
|
`
|
|
139
149
|
: nothing}
|
|
140
150
|
${ssoLinks.map(sso => html `
|
|
141
151
|
<a class="link" href=${sso.link}>
|
|
142
|
-
<
|
|
152
|
+
<md-text-button>
|
|
153
|
+
<md-icon slot="icon">badge</md-icon>
|
|
154
|
+
${i18next.t('label.signin with', { title: sso.title })}
|
|
155
|
+
</md-text-button>
|
|
143
156
|
</a>
|
|
144
157
|
`)}
|
|
145
158
|
`;
|
|
@@ -196,17 +209,22 @@ AbstractAuthPage.styles = [
|
|
|
196
209
|
height: 100vh;
|
|
197
210
|
height: 100dvh;
|
|
198
211
|
}
|
|
212
|
+
|
|
199
213
|
.content {
|
|
200
214
|
flex: 1;
|
|
201
215
|
overflow: auto;
|
|
202
216
|
}
|
|
203
217
|
|
|
204
|
-
|
|
218
|
+
.home {
|
|
205
219
|
position: absolute;
|
|
220
|
+
padding: var(--padding-dufault, 9px);
|
|
221
|
+
left: 20px;
|
|
206
222
|
top: 10px;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
223
|
+
color: var(--theme-white-color);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
div.field {
|
|
227
|
+
margin-bottom: var(--margin-default);
|
|
210
228
|
}
|
|
211
229
|
|
|
212
230
|
[hidden] {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-auth-page.js","sourceRoot":"","sources":["../../client/components/abstract-auth-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/mwc-button'\nimport '@material/mwc-icon'\nimport '@material/mwc-icon-button'\nimport '@material/mwc-textfield'\nimport '@operato/lottie-player'\nimport '@operato/i18n/ox-i18n.js'\nimport '@operato/i18n/ox-i18n-selector.js'\nimport '@operato/layout/ox-snack-bar.js'\n\nimport { css, html, LitElement, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { isSafari } from '@operato/utils'\n\nimport { AUTH_STYLE_SIGN } from '../auth-style-sign.js'\n\nexport abstract class AbstractAuthPage extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n position: relative;\n overflow: hidden;\n\n display: flex;\n flex-direction: row;\n\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n }\n .content {\n flex: 1;\n overflow: auto;\n }\n\n [home] {\n position: absolute;\n top: 10px;\n left: 10px;\n font-size: 2em;\n color: white;\n }\n\n [hidden] {\n display: none;\n }\n\n #snackbar {\n width: 100%;\n z-index: 10;\n }\n\n @media print {\n :host {\n width: 100%;\n height: 100%;\n min-height: 100vh;\n min-height: 100dvh;\n }\n }\n `,\n AUTH_STYLE_SIGN\n ]\n\n @property({ type: Object }) data: any\n @property({ type: String }) message?: string\n @property({ type: Object }) detail: any\n @property({ type: String }) redirectTo?: string\n\n @query('#form') formEl!: HTMLFormElement\n\n private _applicationMeta?: {\n icon: string\n title: string\n description: string\n }\n\n render() {\n const { disableUserFavoredLanguage, languages } = this.data || {}\n var { icon, title, description } = this.applicationMeta\n\n return html`\n <div class=\"content\">\n <div class=\"wrap\">\n <div class=\"auth-brand\">\n <img src=${icon} />\n <strong class=\"name\">${title}</strong>\n <span class=\"welcome-msg\">${description}</span>\n </div>\n\n <div class=\"auth-form\">\n <h3><ox-i18n msgid=\"title.${this.pageName}\"></ox-i18n></h3>\n\n <form\n id=\"form\"\n action=\"${this.actionUrl}\"\n method=\"post\"\n @keypress=${e => {\n if (e.key == 'Enter') this._onSubmit(e)\n }}\n >\n ${this.formfields}\n </form>\n ${this.links}\n ${!disableUserFavoredLanguage\n ? html` <div id=\"locale-area\">\n <label for=\"locale-selector\"><mwc-icon>language</mwc-icon></label>\n <ox-i18n-selector\n id=\"locale-selector\"\n value=${i18next.language || 'en-US'}\n .languages=${languages}\n @change=${e => {\n var locale = e.detail\n if (!locale) return\n\n i18next.changeLanguage(locale)\n }}\n ></ox-i18n-selector>\n </div>`\n : nothing}\n </div>\n </div>\n\n <mwc-icon-button home icon=\"home\" @click=${e => (window.location.href = '/')}></mwc-icon-button>\n <ox-snack-bar id=\"snackbar\" level=\"error\" .message=${this.message}></ox-snack-bar>\n\n ${isSafari()\n ? html``\n : html`\n <div class=\"lottie-container\">\n <lottie-player autoplay loop src=\"../../assets/images/background-animation.json\"></lottie-player>\n </div>\n `}\n </div>\n `\n }\n\n firstUpdated() {\n setTimeout(() => {\n ;(this.renderRoot.querySelector('mwc-textfield') as any).focus()\n }, 100)\n\n this.formEl.reset = () => {\n this.formElements.filter(el => !(el.hidden || el.type == 'hidden')).forEach(el => (el.value = ''))\n }\n }\n\n updated(changed) {\n if (changed.has('data') && this.data) {\n this.message = this.data.message\n this.redirectTo = this.data.redirectTo\n }\n }\n\n abstract get pageName(): string\n abstract get actionUrl(): string\n\n get formElements(): HTMLInputElement[] {\n return Array.from(this.formEl.querySelectorAll('[name]'))\n }\n\n get formfields() {\n const email = this.data?.email || ''\n\n return html`\n <input id=\"redirectTo\" type=\"hidden\" name=\"redirectTo\" .value=${this.redirectTo || '/'} />\n\n <div class=\"field\">\n <mwc-textfield\n name=\"email\"\n type=\"email\"\n label=${String(i18next.t('field.email'))}\n required\n .value=${email}\n .validationMessage=${String(i18next.t('text.invalid-email'))}\n autocomplete=\"username\"\n autocapitalize=\"off\"\n ></mwc-textfield>\n </div>\n <div class=\"field\">\n <mwc-textfield\n name=\"password\"\n type=\"password\"\n label=${String(i18next.t('field.password'))}\n autocomplete=\"current-password\"\n required\n ></mwc-textfield>\n </div>\n\n <mwc-button class=\"ui\" type=\"submit\" raised @click=${e => this._onSubmit(e)}>\n <ox-i18n msgid=\"field.${this.pageName}\"> </ox-i18n>\n </mwc-button>\n `\n }\n\n get links() {\n const { disableUserSignupProcess, ssoLinks = [] } = this.data || {}\n\n return html`\n ${!disableUserSignupProcess\n ? html`\n <a class=\"link\" href=\"/auth/signup\">\n <mwc-button icon=\"add_task\"><ox-i18n msgid=\"field.sign up\"></ox-i18n></mwc-button>\n </a>\n <a class=\"link\" href=\"/auth/forgot-password\">\n <mwc-button icon=\"lock_open\"><ox-i18n msgid=\"field.forgot-password\"></ox-i18n></mwc-button>\n </a>\n `\n : nothing}\n ${ssoLinks.map(\n sso => html`\n <a class=\"link\" href=${sso.link}>\n <mwc-button icon=\"badge\">${i18next.t('label.signin with', { title: sso.title })}</mwc-button>\n </a>\n `\n )}\n `\n }\n\n async _onSubmit(e) {\n if (this.checkValidity()) {\n this.submit()\n }\n }\n\n checkValidity() {\n return this.formElements.every(el => el.checkValidity())\n }\n\n abstract submit()\n\n showSnackbar({ level, message, timer = 3000 }: { level?: string; message?: string; timer?: number } = {}) {\n const snackbar = this.renderRoot.querySelector('#snackbar') as HTMLElement & {\n level: string\n message: string\n active: boolean\n }\n\n if (level) snackbar.level = level\n if (message) snackbar.message = message\n snackbar.active = true\n\n if (timer > -1)\n setTimeout(() => {\n this.hideSnackbar()\n }, timer)\n }\n\n hideSnackbar() {\n const snackbar = this.renderRoot.querySelector('#snackbar') as HTMLElement & {\n level: string\n message: string\n active: boolean\n }\n\n snackbar.active = false\n }\n\n get applicationMeta() {\n if (!this._applicationMeta) {\n var iconLink: HTMLLinkElement | null = document.querySelector('link[rel=\"application-icon\"]')\n var titleMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-name\"]')\n var descriptionMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-description\"]')\n\n this._applicationMeta = {\n icon: iconLink?.href || '',\n title: titleMeta?.content || 'Things Factory',\n description: descriptionMeta?.content || 'Reimagining Software'\n }\n }\n\n return this._applicationMeta\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"abstract-auth-page.js","sourceRoot":"","sources":["../../client/components/abstract-auth-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\nimport '@material/web/button/text-button.js'\nimport '@material/web/textfield/filled-text-field.js'\n\nimport '@operato/lottie-player'\nimport '@operato/i18n/ox-i18n.js'\nimport '@operato/i18n/ox-i18n-selector.js'\nimport '@operato/layout/ox-snack-bar.js'\n\nimport { css, html, LitElement, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { isSafari } from '@operato/utils'\n\nimport { AUTH_STYLE_SIGN } from '../auth-style-sign.js'\n\nexport abstract class AbstractAuthPage extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n position: relative;\n overflow: hidden;\n\n display: flex;\n flex-direction: row;\n\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n }\n\n .content {\n flex: 1;\n overflow: auto;\n }\n\n .home {\n position: absolute;\n padding: var(--padding-dufault, 9px);\n left: 20px;\n top: 10px;\n color: var(--theme-white-color);\n }\n\n div.field {\n margin-bottom: var(--margin-default);\n }\n\n [hidden] {\n display: none;\n }\n\n #snackbar {\n width: 100%;\n z-index: 10;\n }\n\n @media print {\n :host {\n width: 100%;\n height: 100%;\n min-height: 100vh;\n min-height: 100dvh;\n }\n }\n `,\n AUTH_STYLE_SIGN\n ]\n\n @property({ type: Object }) data: any\n @property({ type: String }) message?: string\n @property({ type: Object }) detail: any\n @property({ type: String }) redirectTo?: string\n\n @query('#form') formEl!: HTMLFormElement\n\n private _applicationMeta?: {\n icon: string\n title: string\n description: string\n }\n\n render() {\n const { disableUserFavoredLanguage, languages } = this.data || {}\n var { icon, title, description } = this.applicationMeta\n\n return html`\n <div class=\"content md-typescale-display-medium\">\n <div class=\"wrap\">\n <div class=\"auth-brand\">\n <img src=${icon} />\n <strong class=\"name\">${title}</strong>\n <span class=\"welcome-msg\">${description}</span>\n </div>\n\n <div class=\"auth-form\">\n <h3><ox-i18n msgid=\"title.${this.pageName}\"></ox-i18n></h3>\n\n <form\n id=\"form\"\n action=\"${this.actionUrl}\"\n method=\"post\"\n @keypress=${e => {\n if (e.key == 'Enter') this._onSubmit(e)\n }}\n >\n ${this.formfields}\n </form>\n ${this.links}\n ${!disableUserFavoredLanguage\n ? html` <div id=\"locale-area\">\n <label for=\"locale-selector\"><md-icon>language</md-icon></label>\n <ox-i18n-selector\n id=\"locale-selector\"\n value=${i18next.language || 'en-US'}\n .languages=${languages}\n @change=${e => {\n var locale = e.detail\n if (!locale) return\n\n i18next.changeLanguage(locale)\n }}\n ></ox-i18n-selector>\n </div>`\n : nothing}\n </div>\n </div>\n\n <md-icon-button class=\"home\" @click=${e => (window.location.href = '/')}\n ><md-icon>home</md-icon></md-icon-button\n >\n <ox-snack-bar id=\"snackbar\" level=\"error\" .message=${this.message}></ox-snack-bar>\n\n ${isSafari()\n ? html``\n : html`\n <div class=\"lottie-container\">\n <lottie-player autoplay loop src=\"../../assets/images/background-animation.json\"></lottie-player>\n </div>\n `}\n </div>\n `\n }\n\n firstUpdated() {\n setTimeout(() => {\n ;(this.renderRoot.querySelector('md-filled-text-field') as any).focus()\n }, 100)\n\n this.formEl.reset = () => {\n this.formElements.filter(el => !(el.hidden || el.type == 'hidden')).forEach(el => (el.value = ''))\n }\n }\n\n updated(changed) {\n if (changed.has('data') && this.data) {\n this.message = this.data.message\n this.redirectTo = this.data.redirectTo\n }\n }\n\n abstract get pageName(): string\n abstract get actionUrl(): string\n\n get formElements(): HTMLInputElement[] {\n return Array.from(this.formEl.querySelectorAll('[name]'))\n }\n\n get formfields() {\n const email = this.data?.email || ''\n // .validationMessage=${String(i18next.t('text.invalid-email'))}\n\n return html`\n <input id=\"redirectTo\" type=\"hidden\" name=\"redirectTo\" .value=${this.redirectTo || '/'} />\n\n <div class=\"field\">\n <md-filled-text-field\n name=\"email\"\n type=\"email\"\n label=${String(i18next.t('field.email'))}\n required\n .value=${email}\n autocomplete=\"username\"\n autocapitalize=\"off\"\n ><md-icon slot=\"leading-icon\">mail</md-icon></md-filled-text-field\n >\n </div>\n <div class=\"field\">\n <md-filled-text-field\n name=\"password\"\n type=\"password\"\n label=${String(i18next.t('field.password'))}\n autocomplete=\"current-password\"\n required\n ><md-icon slot=\"leading-icon\">vpn_key</md-icon></md-filled-text-field\n >\n </div>\n\n <md-elevated-button class=\"ui\" type=\"submit\" raised @click=${e => this._onSubmit(e)}>\n <ox-i18n msgid=\"field.${this.pageName}\"> </ox-i18n>\n </md-elevated-button>\n `\n }\n\n get links() {\n const { disableUserSignupProcess, ssoLinks = [] } = this.data || {}\n\n return html`\n ${!disableUserSignupProcess\n ? html`\n <a class=\"link\" href=\"/auth/signup\">\n <md-text-button>\n <md-icon slot=\"icon\">add_task</md-icon>\n <ox-i18n msgid=\"field.sign up\"></ox-i18n>\n </md-text-button>\n </a>\n <a class=\"link\" href=\"/auth/forgot-password\">\n <md-text-button>\n <md-icon slot=\"icon\">lock_open</md-icon>\n <ox-i18n msgid=\"field.forgot-password\"></ox-i18n>\n </md-text-button>\n </a>\n `\n : nothing}\n ${ssoLinks.map(\n sso => html`\n <a class=\"link\" href=${sso.link}>\n <md-text-button>\n <md-icon slot=\"icon\">badge</md-icon>\n ${i18next.t('label.signin with', { title: sso.title })}\n </md-text-button>\n </a>\n `\n )}\n `\n }\n\n async _onSubmit(e) {\n if (this.checkValidity()) {\n this.submit()\n }\n }\n\n checkValidity() {\n return this.formElements.every(el => el.checkValidity())\n }\n\n abstract submit()\n\n showSnackbar({ level, message, timer = 3000 }: { level?: string; message?: string; timer?: number } = {}) {\n const snackbar = this.renderRoot.querySelector('#snackbar') as HTMLElement & {\n level: string\n message: string\n active: boolean\n }\n\n if (level) snackbar.level = level\n if (message) snackbar.message = message\n snackbar.active = true\n\n if (timer > -1)\n setTimeout(() => {\n this.hideSnackbar()\n }, timer)\n }\n\n hideSnackbar() {\n const snackbar = this.renderRoot.querySelector('#snackbar') as HTMLElement & {\n level: string\n message: string\n active: boolean\n }\n\n snackbar.active = false\n }\n\n get applicationMeta() {\n if (!this._applicationMeta) {\n var iconLink: HTMLLinkElement | null = document.querySelector('link[rel=\"application-icon\"]')\n var titleMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-name\"]')\n var descriptionMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-description\"]')\n\n this._applicationMeta = {\n icon: iconLink?.href || '',\n title: titleMeta?.content || 'Things Factory',\n description: descriptionMeta?.content || 'Reimagining Software'\n }\n }\n\n return this._applicationMeta\n }\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import '@material/
|
|
2
|
-
import '@material/
|
|
1
|
+
import '@material/web/icon/icon.js';
|
|
2
|
+
import '@material/web/button/elevated-button.js';
|
|
3
|
+
import '@material/web/textfield/filled-text-field.js';
|
|
3
4
|
import '@operato/lottie-player';
|
|
4
5
|
import '../components/profile-component';
|
|
5
6
|
import '@operato/i18n/ox-i18n.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import '@material/
|
|
3
|
-
import '@material/
|
|
2
|
+
import '@material/web/icon/icon.js';
|
|
3
|
+
import '@material/web/button/elevated-button.js';
|
|
4
|
+
import '@material/web/textfield/filled-text-field.js';
|
|
4
5
|
import '@operato/lottie-player';
|
|
5
6
|
import '../components/profile-component';
|
|
6
7
|
import '@operato/i18n/ox-i18n.js';
|
|
@@ -43,7 +44,7 @@ export class AbstractPasswordReset extends AbstractAuthPage {
|
|
|
43
44
|
>
|
|
44
45
|
<input name="token" type="hidden" .value=${this.token || ''} required />
|
|
45
46
|
<div class="field">
|
|
46
|
-
<
|
|
47
|
+
<md-filled-text-field
|
|
47
48
|
name="password"
|
|
48
49
|
type="password"
|
|
49
50
|
label=${String(i18next.t('label.password'))}
|
|
@@ -55,26 +56,26 @@ export class AbstractPasswordReset extends AbstractAuthPage {
|
|
|
55
56
|
this.confirmPass.setAttribute('pattern', val.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '[$&]'));
|
|
56
57
|
}}
|
|
57
58
|
required
|
|
58
|
-
></
|
|
59
|
+
></md-filled-text-field>
|
|
59
60
|
</div>
|
|
60
61
|
|
|
61
62
|
<div class="field">
|
|
62
|
-
<
|
|
63
|
+
<md-filled-text-field
|
|
63
64
|
id="confirm-password"
|
|
64
65
|
name="confirm-password"
|
|
65
66
|
type="password"
|
|
66
67
|
label=${String(i18next.t('field.confirm password'))}
|
|
67
68
|
required
|
|
68
|
-
></
|
|
69
|
+
></md-filled-text-field>
|
|
69
70
|
</div>
|
|
70
71
|
|
|
71
|
-
<
|
|
72
|
+
<md-elevated-button id="submit-button" type="submit" @click=${e => this._onSubmit(e)}>
|
|
72
73
|
<ox-i18n msgid="${this.submitButtonLabel}"></ox-i18n>
|
|
73
|
-
</
|
|
74
|
+
</md-elevated-button>
|
|
74
75
|
|
|
75
76
|
${!disableUserFavoredLanguage
|
|
76
77
|
? html ` <div id="locale-area">
|
|
77
|
-
<label for="locale-selector"><
|
|
78
|
+
<label for="locale-selector"><md-icon>language</md-icon></label>
|
|
78
79
|
<ox-i18n-selector
|
|
79
80
|
id="locale-selector"
|
|
80
81
|
value=${i18next.language || 'en-US'}
|