1
1
using Microsoft . AspNetCore . Components ;
2
2
using Microsoft . AspNetCore . Components . Web ;
3
3
using MudBlazor ;
4
+ using MudBlazor . State ;
4
5
using MudBlazor . Utilities ;
5
6
6
7
namespace MudExtensions
@@ -11,6 +12,19 @@ namespace MudExtensions
11
12
/// <typeparam name="T"></typeparam>
12
13
public partial class MudPasswordField < T > : MudDebouncedInput < T >
13
14
{
15
+ /// <summary>
16
+ /// MudPasswordField constructor.
17
+ /// </summary>
18
+ public MudPasswordField ( )
19
+ {
20
+ using var registerScope = CreateRegisterScope ( ) ;
21
+ _passwordMode = registerScope . RegisterParameter < bool > ( nameof ( PasswordMode ) )
22
+ . WithParameter ( ( ) => PasswordMode )
23
+ . WithEventCallback ( ( ) => PasswordModeChanged ) ;
24
+ }
25
+
26
+ private readonly ParameterState < bool > _passwordMode ;
27
+
14
28
/// <summary>
15
29
///
16
30
/// </summary>
@@ -22,10 +36,11 @@ public partial class MudPasswordField<T> : MudDebouncedInput<T>
22
36
/// <summary>
23
37
///
24
38
/// </summary>
25
- public MudInputExtended < string ? > InputReference { get ; private set ; } = new ( ) ;
26
- InputType _passwordInput = InputType . Password ;
27
- string ? _passwordIcon = Icons . Material . Filled . VisibilityOff ;
28
- bool _passwordMode = true ;
39
+ public MudInputExtended < string ? > InputReference { get ; private set ; } = null ! ;
40
+ private InputType GetPasswordInputType ( ) => _passwordMode . Value ? InputType . Password : InputType . Text ;
41
+ private string ? GetPasswordIcon ( ) => _passwordMode . Value ? Icons . Material . Filled . VisibilityOff : Icons . Material . Filled . Visibility ;
42
+ //InputType _passwordInput = InputType.Password;
43
+ //string? _passwordIcon = Icons.Material.Filled.VisibilityOff;
29
44
30
45
[ CascadingParameter ( Name = "Standalone" ) ]
31
46
internal bool StandaloneEx { get ; set ; } = true ;
@@ -152,30 +167,7 @@ private async Task OnMaskedValueChanged(string s)
152
167
/// If true, masks text with password mode.
153
168
/// </summary>
154
169
[ Parameter ]
155
- public bool PasswordMode
156
- {
157
- get => _passwordMode ;
158
- set
159
- {
160
- if ( _passwordMode == value )
161
- {
162
- return ;
163
- }
164
- _passwordMode = value ;
165
- if ( _passwordMode )
166
- {
167
- _passwordInput = InputType . Password ;
168
- _passwordIcon = Icons . Material . Filled . VisibilityOff ;
169
- }
170
- else
171
- {
172
- _passwordInput = InputType . Text ;
173
- _passwordIcon = Icons . Material . Filled . Visibility ;
174
- }
175
-
176
- PasswordModeChanged . InvokeAsync ( value ) . CatchAndLog ( ) ;
177
- }
178
- }
170
+ public bool PasswordMode { get ; set ; } = true ;
179
171
180
172
/// <summary>
181
173
/// Fires when password mode changed.
@@ -189,7 +181,7 @@ public bool PasswordMode
189
181
/// <returns></returns>
190
182
protected async Task AdornmentClick ( )
191
183
{
192
- PasswordMode = ! PasswordMode ;
184
+ await _passwordMode . SetValueAsync ( ! _passwordMode . Value ) ;
193
185
await OnAdornmentClick . InvokeAsync ( ) ;
194
186
}
195
187
0 commit comments