diff options
| -rw-r--r-- | assets/style.scss | 27 | ||||
| -rw-r--r-- | src/lib.rs | 21 | 
2 files changed, 37 insertions, 11 deletions
diff --git a/assets/style.scss b/assets/style.scss index f781976..7bdffa0 100644 --- a/assets/style.scss +++ b/assets/style.scss @@ -143,7 +143,7 @@ p {    margin: 0;  } -.chats-list, .roster-list { +.chats-list, .roster-list, .settings-sidebar {    border-width: 0 2px 0 0;    border-color: black;    border-style: solid; @@ -155,6 +155,20 @@ p {    flex-direction: column;  } +.settings-sidebar { +  width: 200px; +  display: flex; +  flex-direction: column; +} + +.settings-sidebar>* { +  padding: 8px 16px; +} + +.settings-sidebar>.open, .settings-sidebar>*:hover { +  background: #00000060; +} +  .chats-list>*, .roster-list>*, .settings .header {    padding: 8px 16px;  } @@ -604,6 +618,17 @@ p {  .settings {    width: 75vw;    height: 75vh; +  display: flex; +  flex-direction: column; +} + +.settings-main { +  display: flex; +  flex: 1 1 auto; +} + +.settings-page { +  flex: 1 1 0;  }  .modal .overlay { @@ -1073,7 +1073,7 @@ pub fn Modal(on_background_click: impl Fn(MouseEvent) + 'static, children: Child      }  } -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, PartialEq, Eq)]  pub enum SettingsPage {      Account,      Chat, @@ -1096,17 +1096,17 @@ pub fn Settings() -> impl IntoView {                  </div>                  <div class="settings-main">                      <div class="settings-sidebar"> -                        <div on:click=move |_| show_settings.set(Some(SettingsPage::Account))>Account</div> -                        <div on:click=move |_| show_settings.set(Some(SettingsPage::Chat))>Chat</div> -                        <div on:click=move |_| show_settings.set(Some(SettingsPage::Privacy))>Privacy</div> -                        <div on:click=move |_| show_settings.set(Some(SettingsPage::Profile))>Profile</div> +                        <div class:open=move || *show_settings.read() == Some(SettingsPage::Account) on:click=move |_| show_settings.set(Some(SettingsPage::Account))>Account</div> +                        <div class:open=move || *show_settings.read() == Some(SettingsPage::Chat) on:click=move |_| show_settings.set(Some(SettingsPage::Chat))>Chat</div> +                        <div class:open=move || *show_settings.read() == Some(SettingsPage::Privacy) on:click=move |_| show_settings.set(Some(SettingsPage::Privacy))>Privacy</div> +                        <div class:open=move || *show_settings.read() == Some(SettingsPage::Profile) on:click=move |_| show_settings.set(Some(SettingsPage::Profile))>Profile</div>                      </div> -                    <div class="settings-main"> +                    <div class="settings-page">                          {move || if let Some(page) = show_settings.get() {                              match page {                              SettingsPage::Account => view! { <div>"account"</div> }.into_any(),                              SettingsPage::Chat => view! { <div>"chat"</div> }.into_any(), -                            SettingsPage::Profile => view! { <div>"profile"</div> }.into_any(), +                            SettingsPage::Profile => view! { <ProfileSettings /> }.into_any(),                              SettingsPage::Privacy => view! { <div>"privacy"</div> }.into_any(),                              }                          } else { @@ -1121,7 +1121,10 @@ pub fn Settings() -> impl IntoView {  #[component]  pub fn ProfileSettings() -> impl IntoView { -    view! {} +    view! { +        <form> +        </form> +    }  }  #[component] @@ -1796,8 +1799,6 @@ where          {              let store = self.inner.try_get_value().unwrap();              let mut store = store.store.write().unwrap(); -            debug!("got store"); -            debug!("got store 2");              if let Some((v, count)) = store.get_mut(&key) {                  *v = value.clone();                  *count += 1;  | 
