use super::{ChoiceField, CustomField, FileField, TextField};
use crate::schema::condition::{Condition, Watched};
#[cfg(feature = "rich-text")]
use crate::schema::fields::RichTextField;
macro_rules! form_visibility {
($builder:ident) => {
impl<F: crate::schema::EditsRecords> $builder<F> {
pub fn hidden_on_create(mut self) -> Self {
self.0.hidden.create = true;
self
}
pub fn hidden_on_edit(mut self) -> Self {
self.0.hidden.edit = true;
self
}
}
};
}
macro_rules! conditional_disable {
($builder:ident) => {
impl<F> $builder<F> {
pub fn disabled_when(
mut self,
watched: &impl Watched<F>,
values: impl IntoIterator<Item = impl Into<String>>,
) -> Self {
self.0.disabling = Some(Condition::new(watched, values));
self
}
}
};
}
form_visibility!(TextField);
form_visibility!(ChoiceField);
form_visibility!(FileField);
form_visibility!(CustomField);
#[cfg(feature = "rich-text")]
form_visibility!(RichTextField);
conditional_disable!(TextField);
conditional_disable!(ChoiceField);
conditional_disable!(FileField);
conditional_disable!(CustomField);