File tree Expand file tree Collapse file tree 3 files changed +34
-12
lines changed Expand file tree Collapse file tree 3 files changed +34
-12
lines changed Original file line number Diff line number Diff line change 1
1
use dioxus:: prelude:: * ;
2
- use freya_elements:: elements as dioxus_elements;
2
+ use freya_elements:: {
3
+ elements as dioxus_elements,
4
+ events:: KeyboardEvent ,
5
+ } ;
3
6
use freya_hooks:: {
4
7
use_applied_theme,
8
+ use_focus,
5
9
CheckboxTheme ,
6
10
CheckboxThemeWith ,
7
11
} ;
@@ -68,30 +72,46 @@ pub fn Checkbox(
68
72
/// Theme override.
69
73
theme : Option < CheckboxThemeWith > ,
70
74
) -> Element {
75
+ let focus = use_focus ( ) ;
71
76
let CheckboxTheme {
77
+ border_fill,
72
78
unselected_fill,
73
79
selected_fill,
74
80
selected_icon_fill,
75
81
} = use_applied_theme ! ( & theme, checkbox) ;
76
- let ( fill , border ) = if selected {
82
+ let ( inner_fill , outer_fill ) = if selected {
77
83
( selected_fill. as_ref ( ) , selected_fill. as_ref ( ) )
78
84
} else {
79
85
( "transparent" , unselected_fill. as_ref ( ) )
80
86
} ;
87
+ let border = if focus. is_selected ( ) {
88
+ format ! ( "4 solid {}" , border_fill)
89
+ } else {
90
+ "none" . to_string ( )
91
+ } ;
92
+
93
+ let onkeydown = move |_: KeyboardEvent | { } ;
81
94
82
95
rsx ! (
83
96
rect {
84
- width: "18" ,
85
- height: "18" ,
86
- padding: "4" ,
87
- main_align: "center" ,
88
- cross_align: "center" ,
97
+ border,
98
+ border_align: "outer" ,
89
99
corner_radius: "4" ,
90
- border: "2 solid {border}" ,
91
- background: "{fill}" ,
92
- if selected {
93
- TickIcon {
94
- fill: selected_icon_fill
100
+ rect {
101
+ a11y_id: focus. attribute( ) ,
102
+ width: "18" ,
103
+ height: "18" ,
104
+ padding: "4" ,
105
+ main_align: "center" ,
106
+ cross_align: "center" ,
107
+ corner_radius: "4" ,
108
+ border: "2 solid {outer_fill}" ,
109
+ background: "{inner_fill}" ,
110
+ onkeydown,
111
+ if selected {
112
+ TickIcon {
113
+ fill: selected_icon_fill
114
+ }
95
115
}
96
116
}
97
117
}
Original file line number Diff line number Diff line change @@ -180,6 +180,7 @@ pub(crate) const BASE_THEME: Theme = Theme {
180
180
unselected_fill : cow_borrowed ! ( "key(solid)" ) ,
181
181
selected_fill : cow_borrowed ! ( "key(primary)" ) ,
182
182
selected_icon_fill : cow_borrowed ! ( "key(secondary)" ) ,
183
+ border_fill : cow_borrowed ! ( "key(surface)" ) ,
183
184
} ,
184
185
menu_item : MenuItemTheme {
185
186
hover_background : cow_borrowed ! ( "key(focused_surface)" ) ,
Original file line number Diff line number Diff line change @@ -482,6 +482,7 @@ define_theme! {
482
482
unselected_fill: str ,
483
483
selected_fill: str ,
484
484
selected_icon_fill: str ,
485
+ border_fill: str ,
485
486
}
486
487
}
487
488
You can’t perform that action at this time.
0 commit comments