@@ -76,7 +76,7 @@ export class UmbMemberWorkspaceViewMemberElement extends UmbLitElement implement
7676 <uui- input
7777 slot= "editor"
7878 name = "newPassword"
79- label = "New password"
79+ label = ${ this . localize . term ( 'user_passwordEnterNew' ) }
8080 type= "password"
8181 @input = ${ ( ) => this . #onPasswordUpdate( ) } > </ uui- input>
8282 </ umb- property- layout>
@@ -89,6 +89,7 @@ export class UmbMemberWorkspaceViewMemberElement extends UmbLitElement implement
8989 type = "password"
9090 @input = ${ ( ) => this . #onPasswordUpdate( ) } > </ uui- input>
9191 </ umb- property- layout>
92+
9293 ${ when ( this . _newPasswordError , ( ) => html `<p class= "validation-error" > ${ this . _newPasswordError } </ p> ` ) }
9394 ` ;
9495 }
@@ -122,75 +123,83 @@ export class UmbMemberWorkspaceViewMemberElement extends UmbLitElement implement
122123 @click = ${ this . #onNewPasswordCancel} > </ uui- butto n>
123124 </ div>
124125 ` ,
125- ( ) =>
126- html ` <uui- butto n
126+ ( ) => html `
127+ <uui- butto n
127128 slot= "editor"
128129 label = ${ this . localize . term ( 'general_changePassword' ) }
129130 look= "secondary"
130- @click = ${ ( ) => ( this . _showChangePasswordForm = true ) } > </ uui- butto n> ` ,
131+ @click = ${ ( ) => ( this . _showChangePasswordForm = true ) } > </ uui- butto n>
132+ ` ,
131133 ) }
132134 </ umb- property- layout>
133135 ` ;
134136 }
135137
136138 #renderLeftColumn( ) {
137139 if ( ! this . _workspaceContext ) return ;
138- return html ` <div id= "left-column" >
139- <uui- box>
140- <umb- property- layout label= ${ this . localize . term ( 'general_username' ) } mand ato ry>
141- <uui- input
142- slot= "editor"
143- name = "login"
144- label= "${ this . localize . term ( 'general_username' ) } "
145- value= ${ this . _workspaceContext . username }
146- @input = ${ ( e : Event ) => this . #onChange( 'username' , ( e . target as HTMLInputElement ) . value ) } > </ uui- input>
147- </ umb- property- layout>
148-
149- <umb- property- layout label= ${ this . localize . term ( 'general_email' ) } mand ato ry>
150- <uui- input
151- slot= "editor"
152- name = "email"
153- label= "${ this . localize . term ( 'general_email' ) } "
154- @input = ${ ( e : Event ) => this . #onChange( 'email' , ( e . target as HTMLInputElement ) . value ) }
155- value= ${ this . _workspaceContext . email } > </ uui- input>
156- </ umb- property- layout>
157140
158- ${ this . #renderPasswordInput( ) }
159-
160- <umb- property- layout label= ${ this . localize . term ( 'content_membergroup' ) } >
161- <umb- input- member- group
162- slot= "editor"
163- @change = ${ this . #onGroupsUpdated}
164- .selection = ${ this . _workspaceContext . memberGroups } > </ umb- input- member- group>
165- </ umb- property- layout>
166-
167- <umb- property- layout label= ${ this . localize . term ( 'user_stateApproved' ) } >
168- <uui- to ggle
169- slot= "editor"
170- .checked = ${ this . _workspaceContext . isApproved }
171- @change = ${ ( e : UUIBooleanInputEvent ) => this . #onChange( 'isApproved' , e . target . checked ) } >
172- </ uui- to ggle>
173- </ umb- property- layout>
141+ return html `
142+ <div id= "left-column" >
143+ <uui- box>
144+ <umb- property- layout label= ${ this . localize . term ( 'general_username' ) } mand ato ry>
145+ <uui- input
146+ slot= "editor"
147+ name = "login"
148+ label= ${ this . localize . term ( 'general_username' ) }
149+ value= ${ this . _workspaceContext . username }
150+ required
151+ required- message= ${ this . localize . term ( 'user_loginnameRequired' ) }
152+ @input = ${ ( e : Event ) => this . #onChange( 'username' , ( e . target as HTMLInputElement ) . value ) } > </ uui- input>
153+ </ umb- property- layout>
154+
155+ <umb- property- layout label= ${ this . localize . term ( 'general_email' ) } mand ato ry>
156+ <uui- input
157+ slot= "editor"
158+ name = "email"
159+ label= ${ this . localize . term ( 'general_email' ) }
160+ value= ${ this . _workspaceContext . email }
161+ required
162+ required- message= ${ this . localize . term ( 'user_emailRequired' ) }
163+ @input = ${ ( e : Event ) => this . #onChange( 'email' , ( e . target as HTMLInputElement ) . value ) } > </ uui- input>
164+ </ umb- property- layout>
165+
166+ ${ this . #renderPasswordInput( ) }
167+
168+ <umb- property- layout label= ${ this . localize . term ( 'content_membergroup' ) } >
169+ <umb- input- member- group
170+ slot= "editor"
171+ @change = ${ this . #onGroupsUpdated}
172+ .selection = ${ this . _workspaceContext . memberGroups } > </ umb- input- member- group>
173+ </ umb- property- layout>
174174
175- <umb- property- layout label= ${ this . localize . term ( 'user_stateLockedOut' ) } >
176- <uui- to ggle
177- ?dis abled= ${ this . _isNew || ! this . _workspaceContext . isLockedOut }
178- slot= "editor"
179- .checked = ${ this . _workspaceContext . isLockedOut }
180- @change = ${ ( e : UUIBooleanInputEvent ) => this . #onChange( 'isLockedOut' , e . target . checked ) } >
181- </ uui- to ggle>
182- </ umb- property- layout>
175+ <umb- property- layout label= ${ this . localize . term ( 'user_stateApproved' ) } >
176+ <uui- to ggle
177+ slot= "editor"
178+ .checked = ${ this . _workspaceContext . isApproved }
179+ @change = ${ ( e : UUIBooleanInputEvent ) => this . #onChange( 'isApproved' , e . target . checked ) } >
180+ </ uui- to ggle>
181+ </ umb- property- layout>
183182
184- <umb- property- layout label= ${ this . localize . term ( 'member_2fa' ) } >
185- <uui- to ggle
186- ?dis abled= ${ this . _isNew || ! this . _workspaceContext . isTwoFactorEnabled }
187- slot= "editor"
188- .checked = ${ this . _workspaceContext . isTwoFactorEnabled }
189- @change = ${ ( e : UUIBooleanInputEvent ) => this . #onChange( 'isTwoFactorEnabled' , e . target . checked ) } >
190- </ uui- to ggle>
191- </ umb- property- layout>
192- </ uui- box>
193- </ div> ` ;
183+ <umb- property- layout label= ${ this . localize . term ( 'user_stateLockedOut' ) } >
184+ <uui- to ggle
185+ slot= "editor"
186+ ?dis abled= ${ this . _isNew || ! this . _workspaceContext . isLockedOut }
187+ .checked = ${ this . _workspaceContext . isLockedOut }
188+ @change = ${ ( e : UUIBooleanInputEvent ) => this . #onChange( 'isLockedOut' , e . target . checked ) } >
189+ </ uui- to ggle>
190+ </ umb- property- layout>
191+
192+ <umb- property- layout label= ${ this . localize . term ( 'member_2fa' ) } >
193+ <uui- to ggle
194+ slot= "editor"
195+ ?dis abled= ${ this . _isNew || ! this . _workspaceContext . isTwoFactorEnabled }
196+ .checked = ${ this . _workspaceContext . isTwoFactorEnabled }
197+ @change = ${ ( e : UUIBooleanInputEvent ) => this . #onChange( 'isTwoFactorEnabled' , e . target . checked ) } >
198+ </ uui- to ggle>
199+ </ umb- property- layout>
200+ </ uui- box>
201+ </ div>
202+ ` ;
194203 }
195204
196205 #renderRightColumn( ) {
@@ -200,27 +209,27 @@ export class UmbMemberWorkspaceViewMemberElement extends UmbLitElement implement
200209 <div id= "right-column" >
201210 <uui- box>
202211 <div class= "general-item" >
203- <umb- localize class = "headline" key = "user_failedPasswor dAttempts"> Failed login attempts </ umb- localize>
212+ <strong > < umb- localize key= "user_failedPasswordAttempts" > Failed login attempts </ umb- localize> < / strong >
204213 <span> ${ this . _workspaceContext . failedPasswordAttempts } </ span>
205214 </ div>
206215 <div class= "general-item" >
207- <umb- localize class = "headline" key = "user_lastLockoutDate"> Last lockout date </ umb- localize>
216+ <strong > < umb- localize key= "user_lastLockoutDate" > Last lockout date </ umb- localize> < / strong >
208217 <span>
209218 ${ this . _workspaceContext . lastLockOutDate
210219 ? this . localize . date ( this . _workspaceContext . lastLockOutDate , TimeFormatOptions )
211220 : this . localize . term ( 'general_never' ) }
212221 </ span>
213222 </ div>
214223 <div class= "general-item" >
215- <umb- localize class = "headline" key = "user_lastLogin"> Last login </ umb- localize>
224+ <strong > < umb- localize key= "user_lastLogin" > Last login </ umb- localize> < / strong >
216225 <span>
217226 ${ this . _workspaceContext . lastLoginDate
218227 ? this . localize . date ( this . _workspaceContext . lastLoginDate , TimeFormatOptions )
219228 : this . localize . term ( 'general_never' ) }
220229 </ span>
221230 </ div>
222231 <div class= "general-item" >
223- <umb- localize class = "headline" key = "user_passwor dChangedGeneric"> Password changed </ umb- localize>
232+ <strong > < umb- localize key= "user_passwordChangedGeneric" > Password changed </ umb- localize> < / strong >
224233 <span>
225234 ${ this . _workspaceContext . lastPasswordChangeDate
226235 ? this . localize . date ( this . _workspaceContext . lastPasswordChangeDate , TimeFormatOptions )
@@ -237,13 +246,11 @@ export class UmbMemberWorkspaceViewMemberElement extends UmbLitElement implement
237246 }
238247
239248 override render ( ) {
240- if ( ! this . _workspaceContext ) {
241- return html `<div> Not found </ div> ` ;
242- }
243-
244- return html ` <umb- body- layout header- fit- height>
245- <div id= "main" > ${ this . #renderLeftColumn( ) } ${ this . #renderRightColumn( ) } </ div>
246- </ umb- body- layout> ` ;
249+ return html `
250+ <umb- body- layout header- fit- height>
251+ <div id= "main" > ${ this . #renderLeftColumn( ) } ${ this . #renderRightColumn( ) } </ div>
252+ </ umb- body- layout>
253+ ` ;
247254 }
248255
249256 static override styles = [
@@ -289,12 +296,10 @@ export class UmbMemberWorkspaceViewMemberElement extends UmbLitElement implement
289296 flex-direction : column;
290297 gap : var (--uui-size-space-1 );
291298 }
299+
292300 .general-item : not (: last-child ) {
293301 margin-bottom : var (--uui-size-space-6 );
294302 }
295- .general-item .headline {
296- font-weight : bold;
297- }
298303 ` ,
299304 ] ;
300305}
0 commit comments