orbital_base_components/form/rules/
numeric_stepper.rs1use 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}