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