based/src/ui/htmx/selector.rs
2025-01-15 18:53:55 +01:00

34 lines
1.4 KiB
Rust

pub enum Selector {
/// A CSS query selector of the element
Query(String),
/// this element itself
This,
/// closest <CSS selector> which will find the closest ancestor element or itself, that matches the given CSS selector.
Closest(String),
/// find <CSS selector> which will find the first child descendant element that matches the given CSS selector
Find(String),
/// next which resolves to element.nextElementSibling
Next,
/// next <CSS selector> which will scan the DOM forward for the first element that matches the given CSS selector.
NextQuery(String),
/// previous which resolves to element.previousElementSibling
Previous,
/// previous <CSS selector> which will scan the DOM backwards for the first element that matches the given CSS selector.
PreviousQuery(String),
}
impl Selector {
#[must_use]
pub fn to_value(&self) -> String {
match self {
Self::Query(query) => query.clone(),
Self::This => "this".to_owned(),
Self::Closest(css) => format!("closest {css}"),
Self::Find(css) => format!("find {css}"),
Self::Next => "next".to_owned(),
Self::NextQuery(css) => format!("next {css}"),
Self::Previous => "previous".to_owned(),
Self::PreviousQuery(css) => format!("previous {css}"),
}
}
}