@@ -17,7 +17,9 @@ public partial class MudRangeSlider<T> : MudComponentBase where T : struct, INum
1717 private readonly ParameterState < T > _value ;
1818 private readonly ParameterState < T > _upperValue ;
1919 private readonly ParameterState < T ? > _slideableMin ;
20+ private readonly ParameterState < T ? > _slideableUpperMin ;
2021 private readonly ParameterState < T ? > _slideableMax ;
22+ private readonly ParameterState < T ? > _slideableLowerMax ;
2123
2224 /// <summary>
2325 ///
@@ -36,9 +38,15 @@ public MudRangeSlider()
3638 _slideableMin = registerScope . RegisterParameter < T ? > ( nameof ( SlideableMin ) )
3739 . WithParameter ( ( ) => SlideableMin )
3840 . WithChangeHandler ( OnSlideableMinChanged ) ;
41+ _slideableUpperMin = registerScope . RegisterParameter < T ? > ( nameof ( SlideableUpperMin ) )
42+ . WithParameter ( ( ) => SlideableUpperMin )
43+ . WithChangeHandler ( OnSlideableUpperMinChanged ) ;
3944 _slideableMax = registerScope . RegisterParameter < T ? > ( nameof ( SlideableMax ) )
4045 . WithParameter ( ( ) => SlideableMax )
4146 . WithChangeHandler ( OnSlideableMaxChanged ) ;
47+ _slideableLowerMax = registerScope . RegisterParameter < T ? > ( nameof ( SlideableLowerMax ) )
48+ . WithParameter ( ( ) => SlideableLowerMax )
49+ . WithChangeHandler ( OnSlideableLowerMaxChanged ) ;
4250 }
4351
4452 private async Task OnValueParameterChanged ( )
@@ -52,6 +60,11 @@ private async Task OnValueParameterChanged()
5260 {
5361 await _value . SetValueAsync ( ( T ) _slideableMin . Value ) ;
5462 }
63+
64+ if ( _slideableLowerMax . Value != null && _slideableLowerMax . Value < _value . Value )
65+ {
66+ await _value . SetValueAsync ( ( T ) _slideableLowerMax . Value ) ;
67+ }
5568 }
5669
5770 private async Task OnUpperValueParameterChanged ( )
@@ -65,6 +78,11 @@ private async Task OnUpperValueParameterChanged()
6578 {
6679 await _upperValue . SetValueAsync ( ( T ) _slideableMax . Value ) ;
6780 }
81+
82+ if ( _slideableUpperMin . Value != null && _upperValue . Value < _slideableUpperMin . Value )
83+ {
84+ await _upperValue . SetValueAsync ( ( T ) _slideableUpperMin . Value ) ;
85+ }
6886 }
6987
7088 private async Task OnSlideableMinChanged ( )
@@ -73,6 +91,19 @@ private async Task OnSlideableMinChanged()
7391 {
7492 await _value . SetValueAsync ( ( T ) _slideableMin . Value ) ;
7593 }
94+
95+ if ( _slideableMin . Value != null && _upperValue . Value < _slideableMin . Value )
96+ {
97+ await _upperValue . SetValueAsync ( ( T ) _slideableMin . Value ) ;
98+ }
99+ }
100+
101+ private async Task OnSlideableUpperMinChanged ( )
102+ {
103+ if ( _slideableUpperMin . Value != null && _upperValue . Value < _slideableUpperMin . Value )
104+ {
105+ await _upperValue . SetValueAsync ( ( T ) _slideableUpperMin . Value ) ;
106+ }
76107 }
77108
78109 private async Task OnSlideableMaxChanged ( )
@@ -81,6 +112,19 @@ private async Task OnSlideableMaxChanged()
81112 {
82113 await _upperValue . SetValueAsync ( ( T ) _slideableMax . Value ) ;
83114 }
115+
116+ if ( _slideableMax . Value != null && _slideableMax . Value < _value . Value )
117+ {
118+ await _value . SetValueAsync ( ( T ) _slideableMax . Value ) ;
119+ }
120+ }
121+
122+ private async Task OnSlideableLowerMaxChanged ( )
123+ {
124+ if ( _slideableLowerMax . Value != null && _slideableLowerMax . Value < _value . Value )
125+ {
126+ await _value . SetValueAsync ( ( T ) _slideableLowerMax . Value ) ;
127+ }
84128 }
85129
86130 /// <summary>
@@ -129,6 +173,13 @@ private async Task OnSlideableMaxChanged()
129173 [ Category ( CategoryTypes . Slider . Validation ) ]
130174 public T ? SlideableMin { get ; set ; }
131175
176+ /// <summary>
177+ /// The minimum value the upper slider thumb can have.
178+ /// </summary>
179+ [ Parameter ]
180+ [ Category ( CategoryTypes . Slider . Validation ) ]
181+ public T ? SlideableUpperMin { get ; set ; }
182+
132183 /// <summary>
133184 /// The maximum allowed value of the slider. Should not be equal to min.
134185 /// </summary>
@@ -137,12 +188,19 @@ private async Task OnSlideableMaxChanged()
137188 public T Max { get ; set ; } = T . CreateTruncating ( 100 ) ;
138189
139190 /// <summary>
140- /// The minimum value can slider thumb has.
191+ /// The maximum value can slider thumb has.
141192 /// </summary>
142193 [ Parameter ]
143194 [ Category ( CategoryTypes . Slider . Validation ) ]
144195 public T ? SlideableMax { get ; set ; }
145196
197+ /// <summary>
198+ /// The maximum value the lower slider thumb can have.
199+ /// </summary>
200+ [ Parameter ]
201+ [ Category ( CategoryTypes . Slider . Validation ) ]
202+ public T ? SlideableLowerMax { get ; set ; }
203+
146204 /// <summary>
147205 /// The minimum distance between the upper and lower values
148206 /// </summary>
0 commit comments