Skip to content

Commit

Permalink
Update admin overview to react to new notifications (#88)
Browse files Browse the repository at this point in the history
  • Loading branch information
kirahsapong committed Jun 28, 2023
1 parent 7218273 commit 854cdd7
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 78 deletions.
152 changes: 76 additions & 76 deletions src/components/Header/Header.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Component, createEffect, createSignal } from 'solid-js';
import { Component, createEffect, createRoot, createSignal } from 'solid-js';
import TBDBrackets from '../../assets/tbd-brackets.svg';
import './Header.scss';
import { A } from '@solidjs/router';
Expand All @@ -8,84 +8,84 @@ import NotifyBlock, { NotifyBlockContent } from '../NotifyBlock/NotifyBlock';
import { store, updateStore } from '../../utils/store';

const Header: Component<{ username: string }> = (props) => {
const [ hasApplications, setHasApplications ] = createSignal(false);
const [ hasSubmissions, setHasSubmissions ] = createSignal(false);

createEffect(() => {
const [ hasApplications, setHasApplications ] = createSignal(false);
const [ hasSubmissions, setHasSubmissions ] = createSignal(false);
createEffect(() => {
setHasApplications(!!store.applications?.length);
}, [store.applications]);

createEffect(() => {
}, [store.applications]);
createEffect(() => {
setHasSubmissions(store.submissions && !!Object.values(store.submissions)?.length);
}, [store.submissions]);
}, [store.submissions]);

return (
<header>
<div class="header">
<div>
<div class="header-logo">
<img src={TBDBrackets} alt="TBD logo" width="60"/>
<span class="header-logo-title">
<span class="header-logo-title-username">{props.username}</span>
<span>SSI Admin Console</span>
</span>
</div>
</div>
<div class="secondary-nav">
<a
target="_blank"
href="https://developer.tbd.website/docs/apis/ssi-service/"
class="primary-button">
Docs <Icon svg={ExternalArrow} />
</a>
<div class="secondary-nav-menu">
<button title="Notifications menu" class="secondary-nav-menu-icon" classList={{"has-notification": hasApplications() || hasSubmissions()}}>
<Icon svg={Bell} />
</button>
<div class="secondary-nav-menu-submenu notifications-submenu">
<ul>
{notifications(hasApplications(), hasSubmissions())?.map(notification =>
<li><NotifyBlock content={notification} /></li>
)}
</ul>
</div>
</div>
<div class="secondary-nav-menu">
<button title="Create menu" class="secondary-nav-menu-icon">
<Icon svg={Plus} /><Icon svg={ChevronDown} />
</button>
<div class="secondary-nav-menu-submenu create-submenu">
<ul>
{createMenu && createMenu.map(createItem =>
<li>
<A href={createItem.href}>
<div>
<Icon svg={Plus} /> {createItem.title}
</div>
<Icon svg={ArrowRight} />
</A>
</li>
)}
</ul>
</div>
</div>
</div>
</div>
<div class="primary-nav">
<nav>
<ul>
{routes.map(route => (
<li>
<A href={route.path} end={route.path === '/'}>
{route.name}
</A>
</li>
))}
</ul>
</nav>
</div>
</header>
)
return (
<header>
<div class="header">
<div>
<div class="header-logo">
<img src={TBDBrackets} alt="TBD logo" width="60"/>
<span class="header-logo-title">
<span class="header-logo-title-username">{props.username}</span>
<span>SSI Admin Console</span>
</span>
</div>
</div>
<div class="secondary-nav">
<a
target="_blank"
href="https://developer.tbd.website/docs/apis/ssi-service/"
class="primary-button">
Docs <Icon svg={ExternalArrow} />
</a>
<div class="secondary-nav-menu">
<button title="Notifications menu" class="secondary-nav-menu-icon" classList={{"has-notification": hasApplications() || hasSubmissions()}}>
<Icon svg={Bell} />
</button>
<div class="secondary-nav-menu-submenu notifications-submenu">
<ul>
{notifications(hasApplications(), hasSubmissions())?.map(notification =>
<li><NotifyBlock content={notification} /></li>
)}
</ul>
</div>
</div>
<div class="secondary-nav-menu">
<button title="Create menu" class="secondary-nav-menu-icon">
<Icon svg={Plus} /><Icon svg={ChevronDown} />
</button>
<div class="secondary-nav-menu-submenu create-submenu">
<ul>
{createMenu && createMenu.map(createItem =>
<li>
<A href={createItem.href}>
<div>
<Icon svg={Plus} /> {createItem.title}
</div>
<Icon svg={ArrowRight} />
</A>
</li>
)}
</ul>
</div>
</div>
</div>
</div>
<div class="primary-nav">
<nav>
<ul>
{routes.map(route => (
<li>
<A href={route.path} end={route.path === '/'}>
{route.name}
</A>
</li>
))}
</ul>
</nav>
</div>
</header>
)
}

export default Header;
Expand Down
16 changes: 14 additions & 2 deletions src/pages/Admin/AdminOverview/AdminOverview.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Component } from "solid-js";
import { Component, createEffect, createSignal } from "solid-js";
import AvatarPerson from "../../../assets/avatar-person.svg";
import SearchCheckmark from "../../../assets/search-checkmark.svg";
import GroupPeople from "../../../assets/group-people.svg";
Expand All @@ -7,14 +7,26 @@ import Card, { CardContent } from "../../../components/Card/Card";
import NotifyBlock from "../../../components/NotifyBlock/NotifyBlock";
import "./AdminOverview.scss";
import { notifications } from "../../../components/Header/Header";
import { store, updateStore } from "@/utils/store";

const AdminOverview: Component = () => {
const [ hasApplications, setHasApplications ] = createSignal(false);
const [ hasSubmissions, setHasSubmissions ] = createSignal(false);

createEffect(() => {
setHasApplications(!!store.applications?.length);
}, [store.applications]);

createEffect(() => {
setHasSubmissions(store.submissions && !!Object.values(store.submissions)?.length);
}, [store.submissions]);

return (
<div class="admin-overview">
<div class="info-panel">
<h1>SSI Admin Console</h1>
<div class="info-panel-inbox">
{notifications && notifications.map(notification =>
{notifications(hasApplications(), hasSubmissions())?.map(notification =>
<NotifyBlock content={notification} />
)}
</div>
Expand Down

0 comments on commit 854cdd7

Please sign in to comment.