Skip to main content

orbital_base_components/form/rules/
numeric_stepper.rs

1use std::ops::Deref;
2
3use leptos::prelude::*;
4
5use super::{FieldValidationState, Rule};
6
7#[derive(Debug, Default, PartialEq, Clone, Copy)]
8pub enum NumericStepperRuleTrigger {
9    #[default]
10    Change,
11}
12
13pub struct NumericStepperRule<T>(Rule<T, NumericStepperRuleTrigger>);
14
15impl<T> NumericStepperRule<T> {
16    pub fn validator(
17        f: impl Fn(&T, 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: NumericStepperRuleTrigger) -> Self {
26        Self(Rule::with_trigger(self.0, trigger))
27    }
28}
29
30impl<T> Deref for NumericStepperRule<T> {
31    type Target = Rule<T, NumericStepperRuleTrigger>;
32
33    fn deref(&self) -> &Self::Target {
34        &self.0
35    }
36}