orbital-date-pickers 0.1.1

Date and time picker components for Orbital
Documentation
use leptos::prelude::*;

#[component]
pub fn ClockNumber(
    label: String,
    selected: Signal<bool>,
    disabled: Signal<bool>,
    left: String,
    top: String,
    aria_label: String,
    on_select: Callback<()>,
) -> impl IntoView {
    view! {
        <div class="orb-picker-time-clock__number-slot" style:left=left style:top=top>
            <button
                type="button"
                class=move || {
                    let mut classes = vec!["orb-picker-time-clock__number".to_string()];
                    if selected.get() {
                        classes.push("orb-picker-time-clock__number--selected".to_string());
                    }
                    if disabled.get() {
                        classes.push("orb-picker-time-clock__number--disabled".to_string());
                    }
                    classes.join(" ")
                }
                aria-label=aria_label
                aria-selected=move || selected.get()
                disabled=move || disabled.get()
                on:click=move |ev: leptos::ev::MouseEvent| {
                    ev.stop_propagation();
                    if !disabled.get_untracked() {
                        on_select.run(());
                    }
                }
            >
                {label}
            </button>
        </div>
    }
}