Skip to main content

edc_web_components/pages/
new_asset_page.rs

1use crate::components::CreateAsset;
2use patternfly_yew::prelude::*;
3use yew::prelude::*;
4
5#[derive(Clone, Debug, PartialEq, Properties)]
6pub struct NewAssetPageProps {
7  #[prop_or("New Asset".to_string())]
8  pub title: String,
9  #[prop_or(Some("The data you hold, before any of it is offered.".to_string()))]
10  pub tag_line: Option<String>,
11  #[prop_or_default]
12  pub company_name: Option<String>,
13  #[prop_or_default]
14  pub company_logo_url: Option<String>,
15  pub on_create: Callback<()>,
16  #[prop_or_default]
17  pub dcterm_types: Option<Vec<(String, String)>>,
18}
19
20#[component]
21pub fn NewAssetPage(props: &NewAssetPageProps) -> Html {
22  let tag_line = props
23    .tag_line
24    .as_ref()
25    .map(|tag_line| html!(<p>{ tag_line }</p>))
26    .unwrap_or_default();
27
28  html!(
29    <>
30      <Title level={Level::H2} size={Size::XXXLarge}>{ &props.title }</Title>
31      { tag_line }
32      <CreateAsset
33        on_create={props.on_create.clone()}
34        company_name={props.company_name.clone()}
35        company_logo_url={props.company_logo_url.clone()}
36        dcterm_types={props.dcterm_types.clone()}
37      />
38    </>
39  )
40}