@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.
Files changed (143) hide show
  1. package/client/auth-style-sign.ts +29 -18
  2. package/client/components/abstract-auth-page.ts +41 -22
  3. package/client/components/abstract-password-reset.ts +11 -9
  4. package/client/components/abstract-sign.ts +138 -0
  5. package/client/components/change-password.ts +2 -2
  6. package/client/components/contact-us.ts +18 -16
  7. package/client/components/create-domain-popup.ts +11 -7
  8. package/client/components/create-role.ts +8 -20
  9. package/client/components/create-user.ts +8 -16
  10. package/client/components/credential-manager.ts +64 -0
  11. package/client/components/invite-customer.ts +7 -12
  12. package/client/components/invite-user.ts +2 -7
  13. package/client/components/ownership-transfer-popup.ts +3 -3
  14. package/client/components/partner-role-editor.ts +9 -15
  15. package/client/components/profile-component.ts +124 -7
  16. package/client/components/role-privilege-editor.ts +10 -17
  17. package/client/components/user-role-editor.ts +27 -38
  18. package/client/entries/auth/activate.ts +17 -17
  19. package/client/entries/auth/checkin.ts +15 -19
  20. package/client/entries/auth/forgot-password.ts +8 -6
  21. package/client/entries/auth/result.ts +13 -12
  22. package/client/entries/auth/signup.ts +20 -24
  23. package/client/entries/oauth2/oauth2-decision-error-page.ts +2 -2
  24. package/client/entries/oauth2/oauth2-decision-page.ts +60 -55
  25. package/client/entries/public/home.ts +40 -18
  26. package/client/pages/app-binding/app-binding.ts +5 -9
  27. package/client/pages/app-binding/app-bindings.ts +2 -2
  28. package/client/pages/appliance/appliance.ts +6 -9
  29. package/client/pages/appliance/home.ts +3 -3
  30. package/client/pages/appliance/register.ts +1 -1
  31. package/client/pages/application/application.ts +30 -14
  32. package/client/pages/application/applications.ts +4 -12
  33. package/client/pages/application/register.ts +1 -1
  34. package/client/pages/attribute/attribute-set-management.ts +2 -0
  35. package/client/pages/auth-provider/auth-provider-management.ts +2 -0
  36. package/client/pages/domain/domain-management.ts +2 -0
  37. package/client/pages/user/user-management.ts +5 -5
  38. package/dist-client/auth-style-sign.js +29 -18
  39. package/dist-client/auth-style-sign.js.map +1 -1
  40. package/dist-client/components/abstract-auth-page.d.ts +4 -4
  41. package/dist-client/components/abstract-auth-page.js +40 -22
  42. package/dist-client/components/abstract-auth-page.js.map +1 -1
  43. package/dist-client/components/abstract-password-reset.d.ts +3 -2
  44. package/dist-client/components/abstract-password-reset.js +10 -9
  45. package/dist-client/components/abstract-password-reset.js.map +1 -1
  46. package/dist-client/components/abstract-sign.d.ts +3 -0
  47. package/dist-client/components/abstract-sign.js +110 -0
  48. package/dist-client/components/abstract-sign.js.map +1 -1
  49. package/dist-client/components/change-password.js +2 -2
  50. package/dist-client/components/change-password.js.map +1 -1
  51. package/dist-client/components/contact-us.d.ts +4 -4
  52. package/dist-client/components/contact-us.js +17 -16
  53. package/dist-client/components/contact-us.js.map +1 -1
  54. package/dist-client/components/create-domain-popup.d.ts +1 -1
  55. package/dist-client/components/create-domain-popup.js +11 -7
  56. package/dist-client/components/create-domain-popup.js.map +1 -1
  57. package/dist-client/components/create-role.d.ts +1 -1
  58. package/dist-client/components/create-role.js +7 -19
  59. package/dist-client/components/create-role.js.map +1 -1
  60. package/dist-client/components/create-user.js +6 -14
  61. package/dist-client/components/create-user.js.map +1 -1
  62. package/dist-client/components/credential-manager.d.ts +11 -0
  63. package/dist-client/components/credential-manager.js +64 -0
  64. package/dist-client/components/credential-manager.js.map +1 -0
  65. package/dist-client/components/invite-customer.js +5 -7
  66. package/dist-client/components/invite-customer.js.map +1 -1
  67. package/dist-client/components/invite-user.js +2 -7
  68. package/dist-client/components/invite-user.js.map +1 -1
  69. package/dist-client/components/ownership-transfer-popup.d.ts +1 -1
  70. package/dist-client/components/ownership-transfer-popup.js +3 -3
  71. package/dist-client/components/ownership-transfer-popup.js.map +1 -1
  72. package/dist-client/components/partner-role-editor.js +9 -15
  73. package/dist-client/components/partner-role-editor.js.map +1 -1
  74. package/dist-client/components/profile-component.d.ts +6 -0
  75. package/dist-client/components/profile-component.js +111 -7
  76. package/dist-client/components/profile-component.js.map +1 -1
  77. package/dist-client/components/role-privilege-editor.js +10 -17
  78. package/dist-client/components/role-privilege-editor.js.map +1 -1
  79. package/dist-client/components/user-role-editor.d.ts +2 -0
  80. package/dist-client/components/user-role-editor.js +26 -37
  81. package/dist-client/components/user-role-editor.js.map +1 -1
  82. package/dist-client/entries/auth/activate.d.ts +2 -1
  83. package/dist-client/entries/auth/activate.js +16 -17
  84. package/dist-client/entries/auth/activate.js.map +1 -1
  85. package/dist-client/entries/auth/checkin.d.ts +2 -2
  86. package/dist-client/entries/auth/checkin.js +13 -16
  87. package/dist-client/entries/auth/checkin.js.map +1 -1
  88. package/dist-client/entries/auth/forgot-password.d.ts +2 -1
  89. package/dist-client/entries/auth/forgot-password.js +7 -6
  90. package/dist-client/entries/auth/forgot-password.js.map +1 -1
  91. package/dist-client/entries/auth/result.d.ts +2 -2
  92. package/dist-client/entries/auth/result.js +12 -12
  93. package/dist-client/entries/auth/result.js.map +1 -1
  94. package/dist-client/entries/auth/signup.js +19 -24
  95. package/dist-client/entries/auth/signup.js.map +1 -1
  96. package/dist-client/entries/oauth2/oauth2-decision-error-page.d.ts +1 -1
  97. package/dist-client/entries/oauth2/oauth2-decision-error-page.js +2 -2
  98. package/dist-client/entries/oauth2/oauth2-decision-error-page.js.map +1 -1
  99. package/dist-client/entries/oauth2/oauth2-decision-page.d.ts +1 -1
  100. package/dist-client/entries/oauth2/oauth2-decision-page.js +59 -54
  101. package/dist-client/entries/oauth2/oauth2-decision-page.js.map +1 -1
  102. package/dist-client/entries/public/home.d.ts +3 -2
  103. package/dist-client/entries/public/home.js +40 -18
  104. package/dist-client/entries/public/home.js.map +1 -1
  105. package/dist-client/pages/app-binding/app-binding.d.ts +1 -1
  106. package/dist-client/pages/app-binding/app-binding.js +4 -9
  107. package/dist-client/pages/app-binding/app-binding.js.map +1 -1
  108. package/dist-client/pages/app-binding/app-bindings.js +2 -2
  109. package/dist-client/pages/app-binding/app-bindings.js.map +1 -1
  110. package/dist-client/pages/appliance/appliance.d.ts +1 -1
  111. package/dist-client/pages/appliance/appliance.js +5 -9
  112. package/dist-client/pages/appliance/appliance.js.map +1 -1
  113. package/dist-client/pages/appliance/home.js +3 -3
  114. package/dist-client/pages/appliance/home.js.map +1 -1
  115. package/dist-client/pages/appliance/register.js +1 -1
  116. package/dist-client/pages/appliance/register.js.map +1 -1
  117. package/dist-client/pages/application/application.js +26 -13
  118. package/dist-client/pages/application/application.js.map +1 -1
  119. package/dist-client/pages/application/applications.js +4 -12
  120. package/dist-client/pages/application/applications.js.map +1 -1
  121. package/dist-client/pages/application/register.js +1 -1
  122. package/dist-client/pages/application/register.js.map +1 -1
  123. package/dist-client/pages/attribute/attribute-set-management.d.ts +1 -0
  124. package/dist-client/pages/attribute/attribute-set-management.js +1 -0
  125. package/dist-client/pages/attribute/attribute-set-management.js.map +1 -1
  126. package/dist-client/pages/auth-provider/auth-provider-management.d.ts +1 -0
  127. package/dist-client/pages/auth-provider/auth-provider-management.js +1 -0
  128. package/dist-client/pages/auth-provider/auth-provider-management.js.map +1 -1
  129. package/dist-client/pages/domain/domain-management.d.ts +1 -0
  130. package/dist-client/pages/domain/domain-management.js +1 -0
  131. package/dist-client/pages/domain/domain-management.js.map +1 -1
  132. package/dist-client/pages/user/user-management.d.ts +1 -0
  133. package/dist-client/pages/user/user-management.js +4 -5
  134. package/dist-client/pages/user/user-management.js.map +1 -1
  135. package/dist-client/tsconfig.tsbuildinfo +1 -1
  136. package/package.json +5 -10
  137. package/translations/en.json +1 -0
  138. package/translations/ja.json +1 -0
  139. package/translations/ko.json +1 -0
  140. package/translations/ms.json +1 -0
  141. package/translations/zh.json +1 -0
  142. package/views/auth-page.html +2 -2
  143. 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: var(--input-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: 24px;
110
- right: 4px;
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><mwc-icon>apps</mwc-icon>&nbsp;${app.name}</h2>
145
+ <h2><md-icon>apps</md-icon>&nbsp;${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(type => html`<option value="${app.type}" ?selected="${type === app.type ? true : false}">${type}</option>`)}
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
- <mwc-button dense unelevated button-in-field clipboard-copy @click=${e => e.preventDefault()} label="copy"></mwc-button>
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
- <mwc-button dense unelevated button-in-field clipboard-copy @click=${e => e.preventDefault()} label="copy"></mwc-button>
214
- The endpoint for authentication server. This is used to exchange the authorization code for an access token.
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
- <mwc-button dense unelevated button-in-field clipboard-copy @click=${e => e.preventDefault()} label="copy"></mwc-button>
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
- <mwc-button dense unelevated button-in-field clipboard-copy @click=${e => e.preventDefault()} label="copy"></mwc-button>
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)}><md-icon>delete_forever</md-icon>delete this app</button>
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
- [outlined] {
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
- What type of app are you building?<br />Choose the app type that best suits the audience you’re building for.
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
- <mwc-button outlined @click=${e => navigate('app-bindings')} label="bound applications .."></mwc-button>
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
- <mwc-button grid-span @click=${this.createApplication.bind(this)} raised label="register"></mwc-button>
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 '@operato/data-grist'
2
4
  import '@operato/context/ox-context-page-toolbar.js'
3
5
  import './attribute-set-item-list.js'
@@ -1,3 +1,5 @@
1
+ import '@material/web/icon/icon.js'
2
+
1
3
  import '@operato/data-grist'
2
4
  import '@operato/context/ox-context-page-toolbar.js'
3
5
 
@@ -1,3 +1,5 @@
1
+ import '@material/web/icon/icon.js'
2
+
1
3
  import '@operato/data-grist/ox-grist.js'
2
4
  import '@operato/data-grist/ox-filters-form.js'
3
5
  import '@operato/context/ox-context-page-toolbar.js'
@@ -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
- <mwc-icon>do_disturb</mwc-icon>
104
+ <md-icon>do_disturb</md-icon>
103
105
  ${user.name}
104
106
  `
105
- : html` ${user.owner ? html` <mwc-icon>supervisor_account</mwc-icon> ` : ''} ${user.name} `}
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
- .field mwc-textfield {
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
- mwc-button {
86
- --mdc-theme-primary: var(--auth-button-background-color);
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 > mwc-button {
100
- --mdc-theme-primary: var(--auth-title-color);
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
- --mdc-icon-size: 16px;
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiLjC,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 .field mwc-textfield {\n width: 100%;\n --mdc-theme-primary: var(--auth-input-color);\n --mdc-theme-error: #fdd55f;\n --mdc-text-field-fill-color: transparent;\n --mdc-text-field-ink-color: var(--auth-input-color);\n --mdc-text-field-label-ink-color: var(--auth-input-color);\n --mdc-text-field-idle-line-color: var(--auth-input-color);\n --mdc-text-field-hover-line-color: var(--auth-input-color);\n font: var(--auth-input-font);\n }\n\n mwc-button {\n --mdc-theme-primary: var(--auth-button-background-color);\n --mdc-theme-on-primary: var(--primary-color);\n --mdc-button-horizontal-padding: var(--padding-default);\n --mdc-button-ink-color: var(--primary-color);\n grid-column: 1 / -1;\n }\n\n .wrap .link {\n text-decoration: none;\n justify-self: flex-start;\n color: var(--auth-title-color);\n }\n\n .wrap .link > mwc-button {\n --mdc-theme-primary: var(--auth-title-color);\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 --mdc-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
+ {"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/mwc-button';
2
- import '@material/mwc-icon';
3
- import '@material/mwc-icon-button';
4
- import '@material/mwc-textfield';
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/mwc-button';
3
- import '@material/mwc-icon';
4
- import '@material/mwc-icon-button';
5
- import '@material/mwc-textfield';
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"><mwc-icon>language</mwc-icon></label>
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
- <mwc-icon-button home icon="home" @click=${e => (window.location.href = '/')}></mwc-icon-button>
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('mwc-textfield').focus();
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
- <mwc-textfield
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
- ></mwc-textfield>
112
+ ><md-icon slot="leading-icon">mail</md-icon></md-filled-text-field
113
+ >
111
114
  </div>
112
115
  <div class="field">
113
- <mwc-textfield
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
- ></mwc-textfield>
122
+ ><md-icon slot="leading-icon">vpn_key</md-icon></md-filled-text-field
123
+ >
120
124
  </div>
121
125
 
122
- <mwc-button class="ui" type="submit" raised @click=${e => this._onSubmit(e)}>
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
- </mwc-button>
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
- <mwc-button icon="add_task"><ox-i18n msgid="field.sign up"></ox-i18n></mwc-button>
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
- <mwc-button icon="lock_open"><ox-i18n msgid="field.forgot-password"></ox-i18n></mwc-button>
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
- <mwc-button icon="badge">${i18next.t('label.signin with', { title: sso.title })}</mwc-button>
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
- [home] {
218
+ .home {
205
219
  position: absolute;
220
+ padding: var(--padding-dufault, 9px);
221
+ left: 20px;
206
222
  top: 10px;
207
- left: 10px;
208
- font-size: 2em;
209
- color: white;
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/mwc-button';
2
- import '@material/mwc-textfield';
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/mwc-button';
3
- import '@material/mwc-textfield';
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
- <mwc-textfield
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
- ></mwc-textfield>
59
+ ></md-filled-text-field>
59
60
  </div>
60
61
 
61
62
  <div class="field">
62
- <mwc-textfield
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
- ></mwc-textfield>
69
+ ></md-filled-text-field>
69
70
  </div>
70
71
 
71
- <mwc-button id="submit-button" type="submit" raised @click=${e => this._onSubmit(e)}>
72
+ <md-elevated-button id="submit-button" type="submit" @click=${e => this._onSubmit(e)}>
72
73
  <ox-i18n msgid="${this.submitButtonLabel}"></ox-i18n>
73
- </mwc-button>
74
+ </md-elevated-button>
74
75
 
75
76
  ${!disableUserFavoredLanguage
76
77
  ? html ` <div id="locale-area">
77
- <label for="locale-selector"><mwc-icon>language</mwc-icon></label>
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'}