use yew::prelude::*;
#[derive(Clone, Debug, PartialEq, Properties)]
pub struct FileUploadProperties {
#[prop_or_default]
pub children: Html,
#[prop_or_default]
pub drag_over: bool,
#[prop_or_default]
pub r#ref: NodeRef,
}
#[function_component(FileUpload)]
pub fn file_upload(props: &FileUploadProperties) -> Html {
let mut class = classes!("pf-v5-c-file-upload");
if props.drag_over {
class.push(classes!("pf-m-drag-hover"));
}
html! (
<div {class} ref={props.r#ref.clone()}>
{ props.children.clone() }
</div>
)
}
#[derive(Clone, Debug, PartialEq, Properties)]
pub struct FileUploadSelectProperties {
#[prop_or_default]
pub children: Html,
}
#[function_component(FileUploadSelect)]
pub fn file_upload_select(props: &FileUploadSelectProperties) -> Html {
html!(
<div class="pf-v5-c-file-upload__file-select">
{ props.children.clone() }
</div>
)
}
#[derive(Clone, Debug, PartialEq, Properties)]
pub struct FileUploadDetailsProperties {
#[prop_or_default]
pub children: Html,
#[prop_or_default]
pub processing: bool,
#[prop_or_default]
pub invalid: bool,
}
#[function_component(FileUploadDetails)]
pub fn file_upload_select(props: &FileUploadDetailsProperties) -> Html {
html!(
<div class="pf-v5-c-file-upload__file-details">
{ props.children.clone() }
if props.processing {
<div class="pf-v5-c-file-upload__file-details-spinner">
<span
class="pf-v5-c-spinner pf-m-lg"
role="progressbar"
aria-label="Loading..."
>
<span class="pf-v5-c-spinner__clipper"></span>
<span class="pf-v5-c-spinner__lead-ball"></span>
<span class="pf-v5-c-spinner__tail-ball"></span>
</span>
</div>
}
</div>
)
}