use leptos::{html::Input, prelude::*};
use web_sys::File;
#[component]
pub fn FileSelect(
#[prop(into, optional)] class: Signal,
#[prop(into, optional)] style: Signal,
on_file_select: F,
children: Children,
) -> impl IntoView
where
F: Fn(File) + 'static,
{
let file_input = NodeRef::::new();
let select_file = move |_| {
if let Some(file_input) = file_input.get() {
file_input.click()
}
};
let on_change = move |_| {
if let Some(file_input) = file_input.get() {
if let Some(files) = file_input.files() {
if let Some(file) = files.get(0) {
on_file_select(file);
}
}
}
};
view! {
{children()}
}
}