@@ -24,17 +24,64 @@ public partial class FluentSlider<TValue> : FluentInputBase<TValue>, IAsyncDispo
2424 /// <summary />
2525 private IJSObjectReference ? _jsModule { get ; set ; }
2626
27+ private TValue ? max ;
28+ private TValue ? min ;
29+ private bool updateSliderThumb = false ;
30+ private bool userChangedValue = false ;
31+
2732 /// <summary>
2833 /// Gets or sets the slider's minimal value.
2934 /// </summary>
3035 [ Parameter , EditorRequired ]
31- public TValue ? Min { get ; set ; }
36+ public TValue ? Min
37+ {
38+ get => min ;
39+ set
40+ {
41+ if ( min != value )
42+ {
43+ min = value ;
44+ updateSliderThumb = true ;
45+ }
46+ }
47+ }
3248
3349 /// <summary>
3450 /// Gets or sets the slider's maximum value.
3551 /// </summary>
3652 [ Parameter , EditorRequired ]
37- public TValue ? Max { get ; set ; }
53+ public TValue ? Max
54+ {
55+ get => max ;
56+ set
57+ {
58+ if ( max != value )
59+ {
60+ max = value ;
61+ updateSliderThumb = true ;
62+ }
63+ }
64+ }
65+
66+ public override TValue ? Value
67+ {
68+ get => base . Value ;
69+ set
70+ {
71+ if ( base . Value != value )
72+ {
73+ base . Value = value ;
74+ if ( userChangedValue )
75+ {
76+ userChangedValue = false ;
77+ }
78+ else
79+ {
80+ updateSliderThumb = true ;
81+ }
82+ }
83+ }
84+ }
3885
3986 /// <summary>
4087 /// Gets or sets the slider's step value.
@@ -68,13 +115,23 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
68115 }
69116 else
70117 {
71- if ( _jsModule is not null )
118+ if ( updateSliderThumb )
72119 {
73- await _jsModule ! . InvokeVoidAsync ( "updateSlider" , Element ) ;
120+ updateSliderThumb = false ;
121+ if ( _jsModule is not null )
122+ {
123+ await _jsModule ! . InvokeVoidAsync ( "updateSlider" , Element ) ;
124+ }
74125 }
75126 }
76127 }
77128
129+ protected override Task ChangeHandlerAsync ( ChangeEventArgs e )
130+ {
131+ userChangedValue = true ;
132+ return base . ChangeHandlerAsync ( e ) ;
133+ }
134+
78135 protected override string ? ClassValue
79136 {
80137 get
0 commit comments