impulse_thaw/spin_button/
rule.rs

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