edc-web-components 0.8.0

A Rust Web Components with patternfly-yew client for EDC
Documentation
use yew::prelude::*;

#[derive(Clone, PartialEq)]
pub struct MyDidProviderState {
  my_did: String,
}

impl MyDidProviderState {
  pub fn my_did(&self) -> &str {
    &self.my_did
  }
}

#[derive(Properties, PartialEq)]
pub struct MyDidProviderContextProviderProps {
  #[prop_or_default]
  pub children: Html,
  pub my_did: String,
}

#[component]
pub fn MyDidProviderContextProvider(props: &MyDidProviderContextProviderProps) -> Html {
  let my_did_provider_context = use_state(move || MyDidProviderState {
    my_did: props.my_did.clone(),
  });

  use_effect_with(
    (props.my_did.clone(), my_did_provider_context.setter()),
    |(my_did, my_did_provider_context_setter)| {
      my_did_provider_context_setter.set(MyDidProviderState {
        my_did: my_did.clone(),
      });
    },
  );

  html! {
    <ContextProvider<MyDidProviderState> context={(*my_did_provider_context).clone()}>
      { props.children.clone() }
    </ContextProvider<MyDidProviderState>>
  }
}

#[hook]
pub fn use_my_did_provider_context() -> Option<MyDidProviderState> {
  use_context::<MyDidProviderState>()
}