Skip to content

Commit 7cc4175

Browse files
enkodellcmckaragoz
andauthored
Range Slider (#255)
* MudRangeSlider * MudRangeSlider Update * Fix Margin / absolute Position Issue, for size and layout. Default Value and Upper Value to Min / Max if they were not defined by the parameter. * Docs Enhancement * Add Gap, Display, Fix click * rename GAP, update SCSS * SCSS Rebuild * Update README.md for RangeSlider * Firefox CSS Fix --------- Co-authored-by: mckaragoz <[email protected]>
1 parent 9d46ab4 commit 7cc4175

File tree

14 files changed

+608
-3
lines changed

14 files changed

+608
-3
lines changed

CodeBeam.MudBlazor.Extensions/CodeBeam.MudBlazor.Extensions.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="7.0.1.*" />
4040
</ItemGroup>
4141

42-
<!--Uncomment it on development and debug to generate min.css on rebuild-->
42+
<!--Uncomment it on development and debug to compile scss and generate min.css on rebuild-->
4343
<!--This sections causes to fail auto deployment to CloudFlare-->
4444
<!--<Target Name="ToolRestore" BeforeTargets="PreBuildEvent">
4545
<Exec Command="dotnet tool restore" StandardOutputImportance="high" />
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
@namespace MudExtensions
2+
@inherits MudComponentBase
3+
@using System.Globalization
4+
@typeparam T
5+
@{
6+
var width = CalculateWidth().ToString(CultureInfo.InvariantCulture);
7+
var left = CalculateLeft().ToString(CultureInfo.InvariantCulture);
8+
var upperLeft = (CalculateWidth() + CalculateLeft()).ToString(CultureInfo.InvariantCulture);
9+
}
10+
<div class="@Classname" style="@Style">
11+
@if (ChildContent != null)
12+
{
13+
<MudText Typo="Typo.body1">@ChildContent</MudText>
14+
}
15+
16+
<div class="@(Range ? "mud-slider-container mud-range-container" : "mud-slider-container")">
17+
18+
@if (Variant == Variant.Filled)
19+
{
20+
<div class="mud-slider-inner-container">
21+
<div class="mud-slider-filled" style="@(Range ? $"width:{width}%; margin-left:{left}%;" : $"width:{width}%;")"></div>
22+
</div>
23+
}
24+
25+
@if (TickMarks)
26+
{
27+
<div class="mud-slider-inner-container">
28+
@SliderTickMarks()
29+
</div>
30+
}
31+
32+
@if (Range)
33+
{
34+
<input class="mud-slider-input" aria-valuenow="@UpperValue" aria-valuemin="@_min" aria-valuemax="@_max" role="slider" @attributes="UserAttributes" type="range" min="@_min" max="@_max" step="@_step" disabled="@(Disabled || _userInvalidatedRange)"
35+
@bind-value="@UpperText" @bind-value:event="@((Immediate ? "oninput" : "onchange"))" />
36+
37+
@SliderValueLabel(upperLeft, UpperValue?.ToString())
38+
}
39+
40+
<input class="mud-slider-input" aria-valuenow="@Value" aria-valuemin="@_min" aria-valuemax="@_max" role="slider" @attributes="UserAttributes" type="range" min="@_min" max="@_max" step="@_step" disabled="@(Disabled || _userInvalidatedRange)"
41+
@bind-value="@Text" @bind-value:event="@((Immediate ? "oninput" : "onchange"))" />
42+
43+
@SliderValueLabel(left, Value?.ToString())
44+
45+
46+
</div>
47+
48+
@if (Display)
49+
{
50+
<MudText Typo="Typo.body1" Class="mud-range-display">@DisplayText</MudText>
51+
}
52+
</div>
53+
54+
@if (_userInvalidatedRange)
55+
{
56+
_userInvalidatedRange = false;
57+
StateHasChanged();
58+
}
59+
60+
@code
61+
{
62+
private RenderFragment SliderValueLabel(string left, string value)
63+
{
64+
@if (ValueLabel)
65+
{
66+
return @<div class="mud-slider-value-label" style="@($"left:{left}%;")">
67+
@value
68+
</div>;
69+
}
70+
return null;
71+
}
72+
73+
private RenderFragment SliderTickMarks()
74+
{
75+
return @<div class="mud-slider-tickmarks">
76+
@for (int i = 0; i < _tickMarkCount; i++)
77+
{
78+
int current = i;
79+
80+
<div class="d-flex flex-column relative">
81+
<span class="mud-slider-track-tick" />
82+
@if (TickMarkLabels != null && current < TickMarkLabels.Length)
83+
{
84+
<MudText Class="mud-slider-track-tick-label" Typo="Typo.body2">@TickMarkLabels[current]</MudText>
85+
}
86+
</div>
87+
}
88+
</div>;
89+
}
90+
}

0 commit comments

Comments
 (0)