Skip to content

Commit 853f34a

Browse files
committed
limits calls to updateSlider
1 parent 2fbe973 commit 853f34a

File tree

1 file changed

+61
-4
lines changed

1 file changed

+61
-4
lines changed

src/Core/Components/Slider/FluentSlider.razor.cs

Lines changed: 61 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)