@things-factory/auth-ui 7.0.1-alpha.97 → 7.0.1-beta.0

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 (114) hide show
  1. package/client/auth-style-sign.ts +2 -2
  2. package/client/components/abstract-sign.ts +8 -0
  3. package/client/components/contact-us.ts +4 -2
  4. package/client/components/create-domain-popup.ts +2 -2
  5. package/client/components/create-role.ts +15 -5
  6. package/client/components/create-user.ts +16 -6
  7. package/client/components/delete-user-popup.ts +1 -1
  8. package/client/components/domain-switch.ts +1 -1
  9. package/client/components/my-login-history.ts +1 -1
  10. package/client/components/ownership-transfer-popup.ts +1 -1
  11. package/client/components/partner-info-card.ts +2 -2
  12. package/client/components/partner-role-editor.ts +5 -3
  13. package/client/components/profile-component.ts +8 -6
  14. package/client/components/role-privilege-editor.ts +5 -5
  15. package/client/components/user-role-editor.ts +5 -5
  16. package/client/entries/auth/activate.ts +2 -2
  17. package/client/entries/auth/checkin.ts +3 -3
  18. package/client/entries/auth/forgot-password.ts +7 -3
  19. package/client/entries/auth/result.ts +4 -4
  20. package/client/entries/auth/signup.ts +23 -5
  21. package/client/entries/oauth2/oauth2-decision-page.ts +2 -2
  22. package/client/pages/app-binding/app-binding.ts +10 -4
  23. package/client/pages/app-binding/app-bindings.ts +2 -2
  24. package/client/pages/appliance/appliance.ts +10 -5
  25. package/client/pages/appliance/home.ts +3 -3
  26. package/client/pages/appliance/register.ts +2 -2
  27. package/client/pages/application/application.ts +2 -2
  28. package/client/pages/application/applications.ts +7 -3
  29. package/client/pages/application/register.ts +2 -2
  30. package/client/pages/attribute/attribute-set-item-list.ts +14 -6
  31. package/client/pages/partner/partner-management.ts +1 -1
  32. package/client/pages/profile.ts +1 -1
  33. package/client/pages/role/role-management.ts +4 -5
  34. package/client/pages/user/user-management.ts +4 -2
  35. package/client/themes/auth-theme.css +4 -4
  36. package/dist-client/auth-style-sign.js +2 -2
  37. package/dist-client/auth-style-sign.js.map +1 -1
  38. package/dist-client/components/abstract-sign.js +9 -0
  39. package/dist-client/components/abstract-sign.js.map +1 -1
  40. package/dist-client/components/contact-us.js +4 -2
  41. package/dist-client/components/contact-us.js.map +1 -1
  42. package/dist-client/components/create-domain-popup.js +2 -2
  43. package/dist-client/components/create-domain-popup.js.map +1 -1
  44. package/dist-client/components/create-role.js +14 -4
  45. package/dist-client/components/create-role.js.map +1 -1
  46. package/dist-client/components/create-user.js +14 -4
  47. package/dist-client/components/create-user.js.map +1 -1
  48. package/dist-client/components/delete-user-popup.js +1 -1
  49. package/dist-client/components/delete-user-popup.js.map +1 -1
  50. package/dist-client/components/domain-switch.js +1 -1
  51. package/dist-client/components/domain-switch.js.map +1 -1
  52. package/dist-client/components/my-login-history.js +1 -1
  53. package/dist-client/components/my-login-history.js.map +1 -1
  54. package/dist-client/components/ownership-transfer-popup.js +1 -1
  55. package/dist-client/components/ownership-transfer-popup.js.map +1 -1
  56. package/dist-client/components/partner-info-card.js +2 -2
  57. package/dist-client/components/partner-info-card.js.map +1 -1
  58. package/dist-client/components/partner-role-editor.js +5 -3
  59. package/dist-client/components/partner-role-editor.js.map +1 -1
  60. package/dist-client/components/profile-component.d.ts +1 -0
  61. package/dist-client/components/profile-component.js +11 -6
  62. package/dist-client/components/profile-component.js.map +1 -1
  63. package/dist-client/components/role-privilege-editor.js +5 -5
  64. package/dist-client/components/role-privilege-editor.js.map +1 -1
  65. package/dist-client/components/user-role-editor.js +5 -5
  66. package/dist-client/components/user-role-editor.js.map +1 -1
  67. package/dist-client/entries/auth/activate.js +2 -2
  68. package/dist-client/entries/auth/activate.js.map +1 -1
  69. package/dist-client/entries/auth/checkin.js +3 -3
  70. package/dist-client/entries/auth/checkin.js.map +1 -1
  71. package/dist-client/entries/auth/forgot-password.js +8 -3
  72. package/dist-client/entries/auth/forgot-password.js.map +1 -1
  73. package/dist-client/entries/auth/result.js +4 -4
  74. package/dist-client/entries/auth/result.js.map +1 -1
  75. package/dist-client/entries/auth/signup.js +23 -4
  76. package/dist-client/entries/auth/signup.js.map +1 -1
  77. package/dist-client/entries/oauth2/oauth2-decision-page.js +2 -2
  78. package/dist-client/entries/oauth2/oauth2-decision-page.js.map +1 -1
  79. package/dist-client/pages/app-binding/app-binding.js +10 -4
  80. package/dist-client/pages/app-binding/app-binding.js.map +1 -1
  81. package/dist-client/pages/app-binding/app-bindings.js +2 -2
  82. package/dist-client/pages/app-binding/app-bindings.js.map +1 -1
  83. package/dist-client/pages/appliance/appliance.js +10 -5
  84. package/dist-client/pages/appliance/appliance.js.map +1 -1
  85. package/dist-client/pages/appliance/home.js +3 -3
  86. package/dist-client/pages/appliance/home.js.map +1 -1
  87. package/dist-client/pages/appliance/register.js +2 -2
  88. package/dist-client/pages/appliance/register.js.map +1 -1
  89. package/dist-client/pages/application/application.js +2 -2
  90. package/dist-client/pages/application/application.js.map +1 -1
  91. package/dist-client/pages/application/applications.js +7 -3
  92. package/dist-client/pages/application/applications.js.map +1 -1
  93. package/dist-client/pages/application/register.js +2 -2
  94. package/dist-client/pages/application/register.js.map +1 -1
  95. package/dist-client/pages/attribute/attribute-set-item-list.js +14 -5
  96. package/dist-client/pages/attribute/attribute-set-item-list.js.map +1 -1
  97. package/dist-client/pages/partner/partner-management.js +1 -1
  98. package/dist-client/pages/partner/partner-management.js.map +1 -1
  99. package/dist-client/pages/profile.js +1 -1
  100. package/dist-client/pages/profile.js.map +1 -1
  101. package/dist-client/pages/role/role-management.js +3 -3
  102. package/dist-client/pages/role/role-management.js.map +1 -1
  103. package/dist-client/pages/user/user-management.js +4 -2
  104. package/dist-client/pages/user/user-management.js.map +1 -1
  105. package/dist-client/themes/auth-theme.css +4 -4
  106. package/dist-client/tsconfig.tsbuildinfo +1 -1
  107. package/dist-server/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +4 -4
  109. package/translations/en.json +1 -0
  110. package/translations/ja.json +1 -0
  111. package/translations/ko.json +1 -1
  112. package/translations/ms.json +1 -0
  113. package/translations/zh.json +1 -0
  114. package/views/auth-page.html +2 -1
@@ -81,8 +81,8 @@ export const AUTH_STYLE_SIGN = css`
81
81
  }
82
82
 
83
83
  .fingerprint {
84
- color: var(--md-sys-color-primary-container);
85
- border: 1.5px solid var(--md-sys-color-primary-container);
84
+ color: var(--md-sys-color-on-primary-container);
85
+ border: 1.5px solid var(--md-sys-color-on-primary-container);
86
86
  border-radius: 20%;
87
87
  width: 36px;
88
88
  height: 36px;
@@ -58,6 +58,14 @@ export abstract class AbstractSign extends AbstractAuthPage {
58
58
  .value=${email}
59
59
  autocomplete="username"
60
60
  autocapitalize="off"
61
+ @input=${(e: Event) => {
62
+ const target = e.target as HTMLInputElement
63
+ if (target.validity.typeMismatch) {
64
+ target.setCustomValidity(i18next.t('text.invalid-email'))
65
+ } else {
66
+ target.setCustomValidity('')
67
+ }
68
+ }}
61
69
  ><md-icon slot="leading-icon">mail</md-icon></md-filled-text-field
62
70
  >
63
71
  </div>
@@ -17,7 +17,7 @@ export class ContactUs extends localize(i18next)(LitElement) {
17
17
  return [
18
18
  css`
19
19
  :host {
20
- --md-theme-primary: var(--primary-color);
20
+ --md-theme-primary: var(--md-sys-color-primary);
21
21
  }
22
22
 
23
23
  * {
@@ -85,7 +85,9 @@ export class ContactUs extends localize(i18next)(LitElement) {
85
85
  }}
86
86
  ></md-filled-text-field>
87
87
  </div>
88
- <md-elevated-button slot="primaryAction" type="submit" @click=${e => this._submit(e)}>${i18next.t('button.submit')}</md-elevated-button>
88
+ <md-elevated-button slot="primaryAction" type="submit" @click=${e => this._submit(e)}
89
+ >${i18next.t('button.submit')}</md-elevated-button
90
+ >
89
91
  <md-text-button slot="secondaryAction" dialogAction="cancel">${i18next.t('button.cancel')}</md-text-button>
90
92
  </md-dialog>
91
93
  `
@@ -17,7 +17,7 @@ class CreateDomainPopup extends localize(i18next)(LitElement) {
17
17
  :host {
18
18
  display: flex;
19
19
  flex-direction: column;
20
- background-color: var(--main-section-background-color);
20
+ background-color: var(--md-sys-color-background);
21
21
  padding: var(--padding-wide);
22
22
  overflow: auto;
23
23
  }
@@ -45,7 +45,7 @@ class CreateDomainPopup extends localize(i18next)(LitElement) {
45
45
  border-radius: var(--border-radius);
46
46
  margin: var(--input-margin);
47
47
  padding: var(--input-padding);
48
- background-color: var(--theme-white-color);
48
+ background-color: var(--md-sys-color-surface);
49
49
  font: var(--input-font);
50
50
 
51
51
  flex: 1;
@@ -13,7 +13,7 @@ class CreateRole extends localize(i18next)(LitElement) {
13
13
  static styles = css`
14
14
  :host {
15
15
  --md-text-field-fill-color: var(--theme-white-color);
16
- background-color: var(--theme-white-color);
16
+ background-color: var(--md-sys-color-surface);
17
17
  margin: var(--margin-wide) 0;
18
18
  padding: var(--padding-wide);
19
19
  border-radius: var(--border-radius);
@@ -50,10 +50,20 @@ class CreateRole extends localize(i18next)(LitElement) {
50
50
 
51
51
  render() {
52
52
  return html`
53
- <md-filled-text-field type="text" name="name" label=${String(i18next.t('label.x name', { x: i18next.t('label.role') }))}></md-filled-text-field>
54
- <md-filled-text-field type="text" name="description" label=${String(i18next.t('label.x description', { x: i18next.t('label.role') }))}></md-filled-text-field>
55
-
56
- <md-outlined-button @click=${this.onCreateRole.bind(this)}>${String(i18next.t('button.create'))}</md-outlined-button>
53
+ <md-filled-text-field
54
+ type="text"
55
+ name="name"
56
+ label=${String(i18next.t('label.x name', { x: i18next.t('label.role') }))}
57
+ ></md-filled-text-field>
58
+ <md-filled-text-field
59
+ type="text"
60
+ name="description"
61
+ label=${String(i18next.t('label.x description', { x: i18next.t('label.role') }))}
62
+ ></md-filled-text-field>
63
+
64
+ <md-outlined-button @click=${this.onCreateRole.bind(this)}
65
+ >${String(i18next.t('button.create'))}</md-outlined-button
66
+ >
57
67
  `
58
68
  }
59
69
 
@@ -8,7 +8,7 @@ class CreateUser extends LitElement {
8
8
  static styles = css`
9
9
  :host {
10
10
  --md-text-field-fill-color: var(--theme-white-color);
11
- background-color: var(--theme-white-color);
11
+ background-color: var(--md-sys-color-surface);
12
12
  margin: var(--margin-wide) 0;
13
13
  padding: var(--padding-wide);
14
14
  border-radius: var(--border-radius);
@@ -45,11 +45,21 @@ class CreateUser extends LitElement {
45
45
 
46
46
  render() {
47
47
  return html`
48
- <md-outlined-text-field type="text" name="name" label=${String(i18next.t('label.x name', { x: i18next.t('label.user') }))}></md-outlined-text-field>
49
-
50
- <md-outlined-text-field type="email" name="email" label=${String(i18next.t('field.email'))}></md-outlined-text-field>
51
-
52
- <md-outlined-button @click=${this.onCreateUser.bind(this)}>${String(i18next.t('button.create'))}</md-outlined-button>
48
+ <md-outlined-text-field
49
+ type="text"
50
+ name="name"
51
+ label=${String(i18next.t('label.x name', { x: i18next.t('label.user') }))}
52
+ ></md-outlined-text-field>
53
+
54
+ <md-outlined-text-field
55
+ type="email"
56
+ name="email"
57
+ label=${String(i18next.t('field.email'))}
58
+ ></md-outlined-text-field>
59
+
60
+ <md-outlined-button @click=${this.onCreateUser.bind(this)}
61
+ >${String(i18next.t('button.create'))}</md-outlined-button
62
+ >
53
63
  `
54
64
  }
55
65
 
@@ -27,7 +27,7 @@ export class DeleteUserPopup extends localize(i18next)(LitElement) {
27
27
 
28
28
  label {
29
29
  font: bold 14px var(--theme-font);
30
- color: var(--primary-color);
30
+ color: var(--md-sys-color-primary);
31
31
  }
32
32
 
33
33
  input {
@@ -41,7 +41,7 @@ export class DomainSwitch extends connect(store)(LitElement) {
41
41
  span,
42
42
  select {
43
43
  flex: 1;
44
- color: var(--secondary-color);
44
+ color: var(--md-sys-color-secondary);
45
45
  font: bold 14px/20px var(--theme-font);
46
46
  }
47
47
 
@@ -14,7 +14,7 @@ class MyLoginHistory extends LitElement {
14
14
  :host {
15
15
  display: flex;
16
16
  flex-direction: column;
17
- background-color: var(--main-section-background-color);
17
+ background-color: var(--md-sys-color-background);
18
18
  padding: var(--padding-wide);
19
19
  overflow: auto;
20
20
  }
@@ -15,7 +15,7 @@ class OwnershipTransferPopup extends localize(i18next)(LitElement) {
15
15
  :host {
16
16
  display: flex;
17
17
  flex-direction: column;
18
- background-color: var(--main-section-background-color);
18
+ background-color: var(--md-sys-color-background);
19
19
  padding: var(--padding-wide);
20
20
  overflow: auto;
21
21
  }
@@ -21,7 +21,7 @@ export class PartnerInfoCard extends LitElement {
21
21
  display: flex;
22
22
  max-height: 45vh;
23
23
  flex-direction: row;
24
- background-color: var(--theme-white-color);
24
+ background-color: var(--md-sys-color-surface-variant);
25
25
  margin: 0;
26
26
  padding: 0;
27
27
  border-radius: var(--border-radius);
@@ -31,7 +31,7 @@ export class PartnerInfoCard extends LitElement {
31
31
  [field-2column] {
32
32
  overflow: auto;
33
33
  flex: 1;
34
- background-color: var(--theme-white-color);
34
+ background-color: var(--md-sys-color-surface-variant);
35
35
  padding: var(--padding-default);
36
36
  border-radius: var(--border-radius);
37
37
  display: grid;
@@ -21,10 +21,10 @@ class PartnerRoleEditor extends localize(i18next)(LitElement) {
21
21
  display: flex;
22
22
  flex-direction: column;
23
23
 
24
- border: 1px solid var(--primary-color);
24
+ border: 1px solid var(--md-sys-color-primary);
25
25
  padding: var(--padding-default);
26
26
  font: normal 15px var(--theme-font);
27
- color: var(--secondary-color);
27
+ color: var(--md-sys-color-secondary);
28
28
  }
29
29
 
30
30
  md-elevated-button {
@@ -52,7 +52,9 @@ class PartnerRoleEditor extends localize(i18next)(LitElement) {
52
52
 
53
53
  <div class="button-container">
54
54
  <md-elevated-button @click=${this.onSave}>${i18next.t('button.save')}</md-elevated-button>
55
- <md-elevated-button @click=${this.onTerminateContract} danger>${i18next.t('button.terminate contract')}</md-elevated-button>
55
+ <md-elevated-button @click=${this.onTerminateContract} danger
56
+ >${i18next.t('button.terminate contract')}</md-elevated-button
57
+ >
56
58
  </div>
57
59
  `
58
60
  }
@@ -19,7 +19,7 @@ export class ProfileComponent extends localize(i18next)(LitElement) {
19
19
  css`
20
20
  :host {
21
21
  display: block;
22
- background-color: var(--main-section-background-color);
22
+ background-color: var(--md-sys-color-background);
23
23
  padding: 15px 0;
24
24
  }
25
25
  .wrap {
@@ -53,7 +53,7 @@ export class ProfileComponent extends localize(i18next)(LitElement) {
53
53
  background: url(/assets/images/icon-profile.png) center top no-repeat;
54
54
  margin: var(--profile-icon-margin);
55
55
  padding: 180px 20px 20px 20px;
56
- color: var(--secondary-color);
56
+ color: var(--md-sys-color-secondary);
57
57
  font: var(--header-bar-title);
58
58
  text-align: center;
59
59
  }
@@ -69,7 +69,7 @@ export class ProfileComponent extends localize(i18next)(LitElement) {
69
69
 
70
70
  label {
71
71
  font: bold 14px var(--theme-font);
72
- color: var(--primary-color);
72
+ color: var(--md-sys-color-primary);
73
73
  text-transform: capitalize;
74
74
  grid-column: 1;
75
75
  }
@@ -101,13 +101,14 @@ export class ProfileComponent extends localize(i18next)(LitElement) {
101
101
  }
102
102
 
103
103
  footer a {
104
- color: var(--primary-color);
104
+ color: var(--md-sys-color-primary);
105
105
  text-decoration: none;
106
106
  font-weight: bold;
107
107
  }
108
108
  `
109
109
  ]
110
110
 
111
+ @property({ type: String }) userId?: string
111
112
  @property({ type: String }) email?: string
112
113
  @property({ type: String }) name?: string
113
114
 
@@ -128,9 +129,11 @@ export class ProfileComponent extends localize(i18next)(LitElement) {
128
129
 
129
130
  setCredential(credential) {
130
131
  if (credential) {
132
+ this.userId = credential.id
131
133
  this.name = credential.name
132
134
  this.email = credential.email
133
135
  } else {
136
+ this.userId = ''
134
137
  this.name = ''
135
138
  this.email = ''
136
139
  }
@@ -251,7 +254,7 @@ export class ProfileComponent extends localize(i18next)(LitElement) {
251
254
  'Content-Type': 'application/json',
252
255
  Accept: 'application/json'
253
256
  },
254
- body: JSON.stringify({ email: this.email }),
257
+ body: JSON.stringify({ id: this.userId }),
255
258
  credentials: 'include'
256
259
  })
257
260
 
@@ -272,7 +275,6 @@ export class ProfileComponent extends localize(i18next)(LitElement) {
272
275
  name: this.applicationMeta.title
273
276
  },
274
277
  user: {
275
- /* options.user.id must be the user's email */
276
278
  id: Uint8Array.from(base64url.toBuffer(options.user.id)).buffer,
277
279
  name: options.user.name,
278
280
  displayName: options.user.displayName
@@ -16,16 +16,16 @@ class RolePrivilegeEditor extends localize(i18next)(LitElement) {
16
16
  display: flex;
17
17
  flex-direction: column;
18
18
 
19
- border: 1px solid var(--primary-color);
19
+ border: 1px solid var(--md-sys-color-primary);
20
20
  font: normal 15px var(--theme-font);
21
- color: var(--secondary-color);
21
+ color: var(--md-sys-color-secondary);
22
22
  }
23
23
  div {
24
24
  margin: var(--margin-default);
25
25
  }
26
26
  ul {
27
27
  flex: 1;
28
- background-color: var(--theme-white-color);
28
+ background-color: var(--md-sys-color-surface-variant);
29
29
  overflow: auto;
30
30
  display: grid;
31
31
  grid-template-columns: 1fr 1fr;
@@ -53,14 +53,14 @@ class RolePrivilegeEditor extends localize(i18next)(LitElement) {
53
53
 
54
54
  md-elevated-button {
55
55
  margin: 5px;
56
- background-color: var(--theme-white-color);
56
+ background-color: var(--md-sys-color-surface-variant);
57
57
  }
58
58
 
59
59
  [danger] {
60
60
  --md-theme-primary: var(--md-danger-button-primary-color);
61
61
  }
62
62
  md-outlined-button {
63
- background-color: var(--theme-white-color);
63
+ background-color: var(--md-sys-color-surface-variant);
64
64
  }
65
65
 
66
66
  @media screen and (max-width: 480px) {
@@ -26,9 +26,9 @@ class UserRoleEditor extends connect(store)(LitElement) {
26
26
  display: flex;
27
27
  flex-direction: column;
28
28
 
29
- border: 1px solid var(--primary-color);
29
+ border: 1px solid var(--md-sys-color-primary);
30
30
  font: normal 15px var(--theme-font);
31
- color: var(--secondary-color);
31
+ color: var(--md-sys-color-secondary);
32
32
  }
33
33
  ul {
34
34
  flex: 1;
@@ -46,7 +46,7 @@ class UserRoleEditor extends connect(store)(LitElement) {
46
46
  input[readonly] {
47
47
  border: none;
48
48
  background-color: transparent;
49
- color: var(--secondary-color);
49
+ color: var(--md-sys-color-secondary);
50
50
  font: var(--input-font);
51
51
  }
52
52
  li {
@@ -58,7 +58,7 @@ class UserRoleEditor extends connect(store)(LitElement) {
58
58
  [detail] md-icon {
59
59
  --md-icon-size: var(--fontsize-default);
60
60
  vertical-align: middle;
61
- color: var(--primary-color);
61
+ color: var(--md-sys-color-primary);
62
62
  }
63
63
  [detail] li {
64
64
  display: flex;
@@ -76,7 +76,7 @@ class UserRoleEditor extends connect(store)(LitElement) {
76
76
  }
77
77
 
78
78
  md-outlined-button {
79
- background-color: var(--theme-white-color);
79
+ background-color: var(--md-sys-color-surface-variant);
80
80
  }
81
81
 
82
82
  @media screen and (max-width: 480px) {
@@ -70,9 +70,9 @@ export class AuthActivate extends localize(i18next)(LitElement) {
70
70
 
71
71
  md-elevated-button {
72
72
  --md-theme-primary: var(--auth-button-background-color);
73
- --md-theme-on-primary: var(--primary-color);
73
+ --md-theme-on-primary: var(--md-sys-color-primary);
74
74
  --md-button-horizontal-padding: var(--padding-default);
75
- --md-button-ink-color: var(--primary-color);
75
+ --md-button-ink-color: var(--md-sys-color-primary);
76
76
  }
77
77
 
78
78
  contact-us {
@@ -26,7 +26,7 @@ export class AuthCheckIn extends localize(i18next)(LitElement) {
26
26
  height: 100dvh;
27
27
  }
28
28
  .header {
29
- background-color: var(--primary-color);
29
+ background-color: var(--md-sys-color-primary);
30
30
  height: var(--checkin-header-height);
31
31
  }
32
32
  .content {
@@ -37,7 +37,7 @@ export class AuthCheckIn extends localize(i18next)(LitElement) {
37
37
  .domains {
38
38
  margin: var(--margin-wide) 0;
39
39
  padding: 0;
40
- background-color: var(--theme-white-color);
40
+ background-color: var(--md-sys-color-surface);
41
41
  border-radius: var(--border-radius);
42
42
  border: var(--border-dark-color);
43
43
  list-style: none;
@@ -47,7 +47,7 @@ export class AuthCheckIn extends localize(i18next)(LitElement) {
47
47
  margin-bottom: -1px;
48
48
  padding: var(--padding-default) var(--padding-wide);
49
49
  font-size: 18px;
50
- color: var(--secondary-color);
50
+ color: var(--md-sys-color-secondary);
51
51
  text-align: left;
52
52
 
53
53
  cursor: pointer;
@@ -28,7 +28,6 @@ export class ForgotPassword extends AbstractAuthPage {
28
28
  const email = this.data?.email || ''
29
29
 
30
30
  return html`
31
- <input id="email" name="email" type="hidden" required .value=${email} />
32
31
  <div class="field">
33
32
  <md-filled-text-field
34
33
  name="email"
@@ -36,8 +35,13 @@ export class ForgotPassword extends AbstractAuthPage {
36
35
  label=${String(i18next.t('label.email'))}
37
36
  .value=${email}
38
37
  required
39
- @input=${e => {
40
- this.emailInput.value = e.target.value
38
+ @input=${(e: Event) => {
39
+ const target = e.target as HTMLInputElement
40
+ if (target.validity.typeMismatch) {
41
+ target.setCustomValidity(i18next.t('text.invalid-email'))
42
+ } else {
43
+ target.setCustomValidity('')
44
+ }
41
45
  }}
42
46
  ></md-filled-text-field>
43
47
  </div>
@@ -61,14 +61,14 @@ export class AuthResult extends localize(i18next)(LitElement) {
61
61
  background: url(/assets/images/icon-profile.png) center top no-repeat;
62
62
  margin: var(--profile-icon-margin);
63
63
  padding: 180px 20px 20px 20px;
64
- color: var(--secondary-color);
64
+ color: var(--md-sys-color-secondary);
65
65
  font: var(--header-bar-title);
66
66
  text-align: center;
67
67
  }
68
68
 
69
69
  label {
70
70
  font: bold 14px var(--theme-font);
71
- color: var(--primary-color);
71
+ color: var(--md-sys-color-primary);
72
72
  }
73
73
  #button-area {
74
74
  border-top: 1px dashed rgba(0, 0, 0, 0.1);
@@ -76,9 +76,9 @@ export class AuthResult extends localize(i18next)(LitElement) {
76
76
  }
77
77
  md-elevated-button {
78
78
  --md-theme-primary: var(--auth-button-background-color);
79
- --md-theme-on-primary: var(--primary-color);
79
+ --md-theme-on-primary: var(--md-sys-color-primary);
80
80
  --md-button-horizontal-padding: var(--padding-default);
81
- --md-button-ink-color: var(--primary-color);
81
+ --md-button-ink-color: var(--md-sys-color-primary);
82
82
  }
83
83
  .lottie-container {
84
84
  width: 100%;
@@ -31,7 +31,13 @@ export class AuthSignup extends AbstractSign {
31
31
 
32
32
  return html`
33
33
  <div class="field">
34
- <md-filled-text-field name="name" type="text" label=${String(i18next.t('field.name'))} .value=${name} required></md-filled-text-field>
34
+ <md-filled-text-field
35
+ name="name"
36
+ type="text"
37
+ label=${String(i18next.t('field.name'))}
38
+ .value=${name}
39
+ required
40
+ ></md-filled-text-field>
35
41
  </div>
36
42
  <div class="field">
37
43
  <md-filled-text-field
@@ -40,11 +46,17 @@ export class AuthSignup extends AbstractSign {
40
46
  label=${String(i18next.t('field.email'))}
41
47
  required
42
48
  .value=${email}
49
+ autocapitalize="off"
43
50
  @input=${(e: Event) => {
44
- const target = e.target as HTMLFormElement
45
- target.setCustomValidity(i18next.t('text.invalid-email'))
51
+ const target = e.target as HTMLInputElement
52
+ if (target.validity.typeMismatch) {
53
+ target.setCustomValidity(i18next.t('text.invalid-email'))
54
+ } else {
55
+ target.setCustomValidity('')
56
+ }
46
57
  }}
47
- ></md-filled-text-field>
58
+ ><md-icon slot="leading-icon">mail</md-icon></md-filled-text-field
59
+ >
48
60
  </div>
49
61
  <div class="field">
50
62
  <md-filled-text-field
@@ -64,7 +76,13 @@ export class AuthSignup extends AbstractSign {
64
76
  >
65
77
  </div>
66
78
  <div class="field">
67
- <md-filled-text-field id="confirm-password" name="confirm-password" type="password" label=${String(i18next.t('field.confirm password'))} required>
79
+ <md-filled-text-field
80
+ id="confirm-password"
81
+ name="confirm-password"
82
+ type="password"
83
+ label=${String(i18next.t('field.confirm password'))}
84
+ required
85
+ >
68
86
  ></md-filled-text-field
69
87
  >
70
88
  </div>
@@ -19,11 +19,11 @@ class OAuth2DecisionPage extends LitElement {
19
19
  display: flex;
20
20
  flex-direction: column;
21
21
 
22
- border: 1px solid var(--primary-color);
22
+ border: 1px solid var(--md-sys-color-primary);
23
23
  margin: var(--margin-default);
24
24
  padding: var(--padding-default);
25
25
  font: normal 15px var(--theme-font);
26
- color: var(--secondary-color);
26
+ color: var(--md-sys-color-secondary);
27
27
  }
28
28
 
29
29
  [field-2column] {
@@ -22,7 +22,7 @@ class AppBinding extends connect(store)(PageView) {
22
22
 
23
23
  position: relative;
24
24
 
25
- background-color: var(--main-section-background-color);
25
+ background-color: var(--md-sys-color-background);
26
26
  padding: var(--padding-wide);
27
27
  }
28
28
  h2 {
@@ -70,7 +70,7 @@ class AppBinding extends connect(store)(PageView) {
70
70
  max-width: var(--content-container-max-width);
71
71
  }
72
72
  [fieldset-container] {
73
- background-color: var(--theme-white-color);
73
+ background-color: var(--md-sys-color-surface);
74
74
  margin: var(--margin-wide) 0 var(--margin-default) 0;
75
75
  padding: var(--padding-default);
76
76
  border-radius: var(--border-radius);
@@ -237,7 +237,10 @@ class AppBinding extends connect(store)(PageView) {
237
237
  <input id="access-token" type="text" .value=${this.accessToken || ''} readonly />
238
238
  <button button-in-field clipboard-copy @click=${e => e.preventDefault()}>copy</button>
239
239
  ${accessTokenExp
240
- ? html`<div input-hint>expired in ${new Date(accessTokenExp).toLocaleString()} : ${asyncReplace(this.expTimer(accessTokenExp))}</div>`
240
+ ? html`<div input-hint>
241
+ expired in ${new Date(accessTokenExp).toLocaleString()} :
242
+ ${asyncReplace(this.expTimer(accessTokenExp))}
243
+ </div>`
241
244
  : html``}
242
245
  </div>
243
246
 
@@ -246,7 +249,10 @@ class AppBinding extends connect(store)(PageView) {
246
249
  <input id="refresh-token" type="text" .value=${binding.refreshToken || ''} readonly />
247
250
  <button button-in-field clipboard-copy @click=${e => e.preventDefault()}>copy</button>
248
251
  ${refreshTokenExp
249
- ? html`<div input-hint>expired in ${new Date(refreshTokenExp).toLocaleString()} : ${asyncReplace(this.expTimer(refreshTokenExp))}</div>`
252
+ ? html`<div input-hint>
253
+ expired in ${new Date(refreshTokenExp).toLocaleString()} :
254
+ ${asyncReplace(this.expTimer(refreshTokenExp))}
255
+ </div>`
250
256
  : html``}
251
257
  </div>
252
258
  </div>
@@ -11,7 +11,7 @@ class AppBindings extends connect(store)(PageView) {
11
11
  static styles = [
12
12
  css`
13
13
  :host {
14
- background-color: var(--main-section-background-color);
14
+ background-color: var(--md-sys-color-background);
15
15
  padding: var(--padding-wide);
16
16
 
17
17
  overflow: auto;
@@ -62,7 +62,7 @@ class AppBindings extends connect(store)(PageView) {
62
62
  color: var(--td-color);
63
63
  }
64
64
  td a {
65
- color: var(--primary-color);
65
+ color: var(--md-sys-color-primary);
66
66
  font: bold 16px var(--theme-font);
67
67
 
68
68
  display: block;
@@ -21,7 +21,7 @@ class Appliance extends connect(store)(PageView) {
21
21
  flex-direction: column;
22
22
  overflow-y: auto;
23
23
 
24
- background-color: var(--main-section-background-color);
24
+ background-color: var(--md-sys-color-background);
25
25
  padding: var(--padding-wide);
26
26
  }
27
27
  h2 {
@@ -58,7 +58,7 @@ class Appliance extends connect(store)(PageView) {
58
58
  max-width: var(--content-container-max-width);
59
59
  }
60
60
  [fieldset-container] {
61
- background-color: var(--theme-white-color);
61
+ background-color: var(--md-sys-color-surface);
62
62
  margin: var(--margin-wide) 0 var(--margin-default) 0;
63
63
  padding: var(--padding-default);
64
64
  border-radius: var(--border-radius);
@@ -201,10 +201,13 @@ class Appliance extends connect(store)(PageView) {
201
201
  <div field grid-span>
202
202
  <label for="access-token">${i18next.t('label.access token')}</label>
203
203
  <input id="access-token" type="text" .value=${appliance.accessToken} readonly />
204
- <button button-in-field clipboard-copy @click=${e => e.preventDefault()}>${i18next.t('button.copy')}</button>
204
+ <button button-in-field clipboard-copy @click=${e => e.preventDefault()}>
205
+ ${i18next.t('button.copy')}
206
+ </button>
205
207
  ${accessTokenExp
206
208
  ? html`<div input-hint>
207
- ${i18next.t('text.token expiry time')} ${new Date(accessTokenExp * 1000).toLocaleString()} : ${asyncReplace(this.expTimer(accessTokenExp))}
209
+ ${i18next.t('text.token expiry time')} ${new Date(accessTokenExp * 1000).toLocaleString()} :
210
+ ${asyncReplace(this.expTimer(accessTokenExp))}
208
211
  </div>`
209
212
  : html``}
210
213
  </div>
@@ -213,7 +216,9 @@ class Appliance extends connect(store)(PageView) {
213
216
  </div>
214
217
 
215
218
  <button @click=${this.deleteAppliance.bind(this)}>${i18next.t('button.delete this appliance')}</button>
216
- <button @click=${this.generateApplianceSecret.bind(this)}>${i18next.t('button.generate new access token')}</button>
219
+ <button @click=${this.generateApplianceSecret.bind(this)}>
220
+ ${i18next.t('button.generate new access token')}
221
+ </button>
217
222
  <button @click=${this.updateAppliance.bind(this)}>${i18next.t('button.update')}</button>
218
223
  </form>
219
224
  `
@@ -11,7 +11,7 @@ class Appliances extends connect(store)(PageView) {
11
11
  static styles = [
12
12
  css`
13
13
  :host {
14
- background-color: var(--main-section-background-color);
14
+ background-color: var(--md-sys-color-background);
15
15
  padding: var(--padding-wide);
16
16
 
17
17
  overflow: auto;
@@ -96,8 +96,8 @@ class Appliances extends connect(store)(PageView) {
96
96
  <div>
97
97
  <h2>Registered Appliances</h2>
98
98
  <p page-description>
99
- What type of appliance are you building?<br />Choose the app type that best suits the audience you’re building for. The appliance type can’t be changed after
100
- it’s created.
99
+ What type of appliance are you building?<br />Choose the app type that best suits the audience you’re building
100
+ for. The appliance type can’t be changed after it’s created.
101
101
  </p>
102
102
  <md-elevated-button @click=${e => navigate('appliance-register')}>register new appliance</md-elevated-button>
103
103
  </div>