Skip to content

Commit ceb287e

Browse files
authored
Add keyboard focus visual indicator for slider v2 (#486)
1 parent f9f717e commit ceb287e

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

Material.Styles/Resources/Themes/Slider.axaml

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@
3131
</ControlTemplate>
3232
</Setter>
3333

34+
<Style Selector="^:focus-visible /template/ Border#PART_HoverEffect">
35+
<Setter Property="Opacity" Value="0.20" />
36+
</Style>
37+
3438
<Style Selector="^ /template/ Panel#PART_RootPanel">
3539
<Setter Property="HorizontalAlignment" Value="Center" />
3640
<Setter Property="VerticalAlignment" Value="Center" />
@@ -120,14 +124,14 @@
120124
Name="PART_Positioner">
121125
<Border Name="PART_ContentContainer">
122126
<!-- TODO: Fix positioner
123-
Seems like TransformedBounds property is gone, we need something else that
124-
can be refreshed at every frame and contains component position data -->
127+
Seems like TransformedBounds property is gone, we need something else that
128+
can be refreshed at every frame and contains component position data -->
125129
<!--
126130
<Border.RenderTransform>
127-
<MultiBinding Converter="{StaticResource AutoCorrectPositionConverter}">
128-
<Binding ElementName="PART_Positioner" Path="TransformedBounds" />
129-
<Binding Path="$parent[TopLevel].Bounds" />
130-
</MultiBinding>
131+
<MultiBinding Converter="{StaticResource AutoCorrectPositionConverter}">
132+
<Binding ElementName="PART_Positioner" Path="TransformedBounds" />
133+
<Binding Path="$parent[TopLevel].Bounds" />
134+
</MultiBinding>
131135
</Border.RenderTransform>-->
132136

133137
<ContentPresenter Name="PART_ContentPresenter" />
@@ -292,6 +296,7 @@
292296
<ControlTheme x:Key="MaterialSlider" TargetType="Slider">
293297
<Setter Property="Background" Value="Transparent" />
294298
<Setter Property="BorderBrush" Value="Transparent" />
299+
<Setter Property="Focusable" Value="False"/>
295300
<Setter Property="Foreground" Value="{DynamicResource MaterialPrimaryMidBrush}" />
296301
<Setter Property="ClipToBounds" Value="False" />
297302
<Setter Property="Template">
@@ -302,8 +307,8 @@
302307
BorderThickness="{TemplateBinding BorderThickness}">
303308
<Panel Name="PART_RootPanel">
304309
<!-- I have no idea how to reorder tick bar in between track and thumb
305-
The tricky way might works by using ProgressBar as track (only visual, no hit test)
306-
and then make transparent the track (the interactable one). -->
310+
The tricky way might works by using ProgressBar as track (only visual, no hit test)
311+
and then make transparent the track (the interactable one). -->
307312
<ProgressBar Name="PART_ProgressLayer"
308313
Minimum="{TemplateBinding Minimum}"
309314
Maximum="{TemplateBinding Maximum}"
@@ -324,13 +329,16 @@
324329
Minimum="{TemplateBinding Minimum}"
325330
Value="{TemplateBinding Value}">
326331
<Track.DecreaseButton>
327-
<RepeatButton Name="PART_DecreaseButton" Theme="{StaticResource MaterialEmptyRepeatButton}" />
332+
<RepeatButton Name="PART_DecreaseButton" Theme="{StaticResource MaterialEmptyRepeatButton}"
333+
Focusable="False"/>
328334
</Track.DecreaseButton>
329335
<Track.IncreaseButton>
330-
<RepeatButton Name="PART_IncreaseButton" Theme="{StaticResource MaterialEmptyRepeatButton}" />
336+
<RepeatButton Name="PART_IncreaseButton" Theme="{StaticResource MaterialEmptyRepeatButton}"
337+
Focusable="False"/>
331338
</Track.IncreaseButton>
332339
<Track.Thumb>
333-
<Thumb Name="PART_SliderThumb" />
340+
<Thumb Name="PART_SliderThumb"
341+
Focusable="True"/>
334342
</Track.Thumb>
335343
</Track>
336344
</Panel>
@@ -420,7 +428,7 @@
420428
<Setter Property="ActiveBrush" Value="{DynamicResource MaterialCardBackgroundBrush}" />
421429
</Style>
422430
</ControlTheme>
423-
431+
424432
<ControlTheme x:Key="{x:Type Slider}" TargetType="Slider"
425433
BasedOn="{StaticResource MaterialSlider}" />
426434

@@ -471,6 +479,10 @@
471479
</Setter>
472480
</Style>
473481

482+
<Style Selector="^:focus /template/ Ellipse#PART_HoverEffect">
483+
<Setter Property="Opacity" Value="0.20" />
484+
</Style>
485+
474486
<Style Selector="^:pointerover /template/ Ellipse#PART_HoverEffect">
475487
<Setter Property="Opacity" Value="0.24" />
476488
</Style>
@@ -507,6 +519,7 @@
507519
<!-- Legacy slider theme (material v1, refer link: https://material.io/archive/guidelines/components/sliders.html) -->
508520
<ControlTheme x:Key="MaterialSliderV1"
509521
TargetType="Slider">
522+
<Setter Property="Focusable" Value="False"/>
510523
<Setter Property="Template">
511524
<ControlTemplate>
512525
<Border Name="PART_RootBorder"
@@ -521,13 +534,13 @@
521534
Maximum="{TemplateBinding Maximum}"
522535
Value="{TemplateBinding Value}">
523536
<Track.DecreaseButton>
524-
<RepeatButton Name="PART_DecreaseButton" Theme="{StaticResource MaterialEmptyRepeatButton}" />
537+
<RepeatButton Name="PART_DecreaseButton" Theme="{StaticResource MaterialEmptyRepeatButton}"/>
525538
</Track.DecreaseButton>
526539
<Track.IncreaseButton>
527-
<RepeatButton Name="PART_IncreaseButton" Theme="{StaticResource MaterialEmptyRepeatButton}" />
540+
<RepeatButton Name="PART_IncreaseButton" Theme="{StaticResource MaterialEmptyRepeatButton}"/>
528541
</Track.IncreaseButton>
529542
<Track.Thumb>
530-
<Thumb Name="PART_SliderThumb" />
543+
<Thumb Name="PART_SliderThumb"/>
531544
</Track.Thumb>
532545
</Track>
533546
</Panel>

0 commit comments

Comments
 (0)