leptos-components 0.2.9

RustLangES leptos components
Documentation
use components_core::{BASE_CLASS, concat};
use leptos::prelude::*;
use leptos::{IntoView, component, view};

mod search;

pub use search::{Filter, InputSearch};

#[component]
pub fn Input(
    #[prop(into)] has_error: ReadSignal<bool>,
    #[prop(into)] disabled: ReadSignal<bool>,
    #[prop(into, optional)] class: String,
    #[prop(into, optional)] error_message: String,
    #[prop(into)] icon: Option<Children>,
) -> impl IntoView {
    let input_class = crate::tw!(
        concat!(BASE_CLASS, "-input"),
        has_error
            .get()
            .then_some(concat!(BASE_CLASS, "-input--error")),
        class
    );

    view! {
        <div class={concat!(BASE_CLASS, "-input__container")}>
            <div class=input_class>
                {icon.map(|icon| view! { <span class={concat!(BASE_CLASS, "-input__icon")}>{icon()}</span> })}
                <input
                    class={concat!(BASE_CLASS, "-input__inner")}
                    disabled=disabled.get()
                />
            </div>
            {has_error.get().then_some(
                view! { <span class={concat!(BASE_CLASS, "-input__error")}>{error_message}</span> }
            )}
        </div>
    }
}