impulse_thaw/spin_button/
rule.rs1
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}