From b5f1ca169567f47b3976de5b4c5a2b1ce37656d5 Mon Sep 17 00:00:00 2001 From: Alexander van Saase Date: Mon, 2 Oct 2023 20:18:15 +0200 Subject: Introduce support for disabling a `checkbox` --- style/src/checkbox.rs | 3 +++ style/src/theme.rs | 40 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) (limited to 'style') diff --git a/style/src/checkbox.rs b/style/src/checkbox.rs index d96ea4ad..82c1766f 100644 --- a/style/src/checkbox.rs +++ b/style/src/checkbox.rs @@ -24,4 +24,7 @@ pub trait StyleSheet { /// Produces the hovered [`Appearance`] of a checkbox. fn hovered(&self, style: &Self::Style, is_checked: bool) -> Appearance; + + /// Produces the disabled [`Appearance`] of a checkbox. + fn disabled(&self, style: &Self::Style, is_checked: bool) -> Appearance; } diff --git a/style/src/theme.rs b/style/src/theme.rs index 8d1ff237..e003a93b 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -319,7 +319,7 @@ impl checkbox::StyleSheet for Theme { Checkbox::Secondary => checkbox_appearance( palette.background.base.text, palette.background.base, - palette.background.base, + palette.background.weak, is_checked, ), Checkbox::Success => checkbox_appearance( @@ -355,7 +355,7 @@ impl checkbox::StyleSheet for Theme { Checkbox::Secondary => checkbox_appearance( palette.background.base.text, palette.background.weak, - palette.background.base, + palette.background.weak, is_checked, ), Checkbox::Success => checkbox_appearance( @@ -373,6 +373,42 @@ impl checkbox::StyleSheet for Theme { Checkbox::Custom(custom) => custom.hovered(self, is_checked), } } + + fn disabled( + &self, + style: &Self::Style, + is_checked: bool, + ) -> checkbox::Appearance { + let palette = self.extended_palette(); + + match style { + Checkbox::Primary => checkbox_appearance( + palette.primary.strong.text, + palette.background.weak, + palette.background.strong, + is_checked, + ), + Checkbox::Secondary => checkbox_appearance( + palette.background.strong.color, + palette.background.weak, + palette.background.weak, + is_checked, + ), + Checkbox::Success => checkbox_appearance( + palette.success.base.text, + palette.background.weak, + palette.success.weak, + is_checked, + ), + Checkbox::Danger => checkbox_appearance( + palette.danger.base.text, + palette.background.weak, + palette.danger.weak, + is_checked, + ), + Checkbox::Custom(custom) => custom.active(self, is_checked), + } + } } fn checkbox_appearance( -- cgit