orbital_base_components/form/rules/
switch.rs1use std::ops::Deref;
2
3use leptos::prelude::*;
4
5use super::{FieldValidationState, Rule};
6
7#[derive(Debug, Default, PartialEq, Clone, Copy)]
8pub enum SwitchRuleTrigger {
9 #[default]
10 Change,
11}
12
13pub struct SwitchRule(Rule<bool, SwitchRuleTrigger>);
14
15impl SwitchRule {
16 pub fn validator(
17 f: impl Fn(&bool, Signal<Option<String>>) -> Result<(), FieldValidationState>
18 + Send
19 + Sync
20 + 'static,
21 ) -> Self {
22 Self(Rule::validator(f))
23 }
24
25 pub fn with_trigger(self, trigger: SwitchRuleTrigger) -> Self {
26 Self(Rule::with_trigger(self.0, trigger))
27 }
28}
29
30impl Deref for SwitchRule {
31 type Target = Rule<bool, SwitchRuleTrigger>;
32
33 fn deref(&self) -> &Self::Target {
34 &self.0
35 }
36}