This commit is contained in:
AlphaX-Projects 2022-03-10 21:28:27 +01:00 committed by GitHub
parent 15295cb441
commit b19f7120bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,10 +1,15 @@
import { LitElement, html, css } from 'lit' import { LitElement, html, css } from 'lit'
import { connect } from 'pwa-helpers' import { connect } from 'pwa-helpers'
import { store } from '../store.js' import { store } from '../store.js'
import { doLogout } from '../redux/app/actions/login'
import '@material/mwc-icon' import '@material/mwc-icon'
import '@polymer/paper-ripple' import '@polymer/paper-ripple'
import { doLogout } from '../redux/app/actions/login' import '@vaadin/icon'
import '@vaadin/icons'
import '../functional-components/side-menu.js'
import '../functional-components/side-menu-item.js'
class SidenavMenu extends connect(store)(LitElement) { class SidenavMenu extends connect(store)(LitElement) {
static get properties() { static get properties() {
@ -17,174 +22,24 @@ class SidenavMenu extends connect(store)(LitElement) {
static get styles() { static get styles() {
return [ return [
css` css`
.mcd-menu { * {
--item-selected-color: var(--nav-selected-color);
--item-selected-color-text: var(--nav-selected-color-text);
--item-color-active: var(--nav-color-active);
--item-color-hover: var(--nav-color-hover);
--item-text-color: var(--nav-text-color);
--item-icon-color: var(--nav-icon-color);
--item-border-color: var(--nav-border-color);
--item-border-selected-color: var(--nav-border-selected-color);
}
.s-menu {
list-style: none; list-style: none;
padding: 0px 0px; padding: 0px 0px;
background: var(--sidetopbar); background: var(--sidetopbar);
border-radius: 2px; border-radius: 2px;
width: 100%; width: 100%;
outline: none; border-top: 1px solid var(--border);
}
.mcd-menu li {
position: relative;
line-height: 48px;
outline: none;
padding: 2px;
list-style: none;
}
.mcd-menu li a {
display: block;
text-decoration: none;
padding-left: 20px;
color: var(--mainmenutext);
text-align: left;
height: 48px;
position: relative;
border-bottom: 1px solid var(--border);
outline: none;
}
.mcd-menu li a mwc-icon {
float: left;
margin: 0 10px 0 0;
padding-top: 12px;
padding-right: 9px;
}
.mcd-menu li a span {
display: block;
text-transform: uppercase;
outline: none;
}
.mcd-menu li a small {
display: block;
font-size: 10px;
outline: none;
}
.mcd-menu li:hover > a mwc-icon {
opacity: 1;
}
.mcd-menu li:hover a span {
opacity: 1;
outline: none;
}
.mcd-menu li:hover > a {
background: var(--menuhover);
color: var(--mainmenutexthover);
}
.mcd-menu li a.active {
position: relative;
color: #515151;
background-color: var(--menuactive);
outline: none;
}
.mcd-menu li a.active:before {
content: "";
position: absolute;
top: 42%;
left: 0;
border-left: 5px solid #515151;
border-top: 5px solid transparent;
border-bottom: 5px solid transparent;
outline: none;
}
.mcd-menu li a.active:after {
content: "";
position: absolute;
top: 42%;
right: 0;
border-right: 5px solid #515151;
border-top: 5px solid transparent;
border-bottom: 5px solid transparent;
outline: none;
}
.mcd-menu li ul,
.mcd-menu li ul li ul {
position: absolute;
height: auto;
min-width: 240px;
padding: 0;
margin: 0;
background: #FFF;
opacity: 0;
visibility: hidden;
transition: all 300ms linear;
-o-transition: all 300ms linear;
-ms-transition: all 300ms linear;
-moz-transition: all 300ms linear;
-webkit-transition: all 300ms linear;
z-index: 999999999;
left:280px;
top: 0px;
border-left: 4px solid #515151;
outline: none;
}
.mcd-menu li ul:before {
content: "";
position: absolute;
top: 25px;
left: -9px;
border-right: 5px solid #515151;
border-bottom: 5px solid transparent;
border-top: 5px solid transparent;
outline: none;
}
.mcd-menu li:hover > ul,
.mcd-menu li ul li:hover > ul {
display: block;
opacity: 1;
visibility: visible;
left:260px;
outline: none;
}
.mcd-menu li ul li a {
text-align: left;
border: 0;
border-bottom: 1px solid var(--border);
height: auto;
outline: none;
}
.mcd-menu li ul li a mwc-icon {
display: inline-block;
margin: 0 10px 0 0;
}
.mcd-menu li ul li ul {
left: 230px;
top: 0;
border: 0;
border-left: 4px solid #515151;
outline: none;
}
.mcd-menu li ul li ul:before {
content: "";
position: absolute;
top: 15px;
left: -9px;
border-right: 5px solid #515151;
border-bottom: 5px solid transparent;
border-top: 5px solid transparent;
outline: none;
}
.mcd-menu li ul li:hover > ul {
top: 0px;
left: 200px;
outline: none; outline: none;
} }
` `
@ -198,44 +53,46 @@ class SidenavMenu extends connect(store)(LitElement) {
render() { render() {
return html` return html`
<div> <div class="s-menu">
<ul class="mcd-menu"> <side-menu>
${this.urls.map(myPlugin => myPlugin.menus.length === 0 ? html` <side-menu-item label="MINTING DETAILS" href="/app/minting">
<li> <vaadin-icon icon="vaadin:info-circle" slot="icon"></vaadin-icon>
<paper-ripple></paper-ripple> </side-menu-item>
<a href="/app/${myPlugin.url}"> <side-menu-item label="WALLETS" href="/app/wallet" selected>
<mwc-icon>${myPlugin.icon}</mwc-icon> <vaadin-icon icon="vaadin:wallet" slot="icon"></vaadin-icon>
<span>${myPlugin.title}</span> </side-menu-item>
</a> <side-menu-item label="SEND COIN" href="/app/send-coin">
</li> <vaadin-icon icon="vaadin:coin-piles" slot="icon"></vaadin-icon>
` : html` </side-menu-item>
<li> <side-menu-item label="TRADE PORTAL" href="/app/trade-portal">
<paper-ripple></paper-ripple> <vaadin-icon icon="vaadin:bullets" slot="icon"></vaadin-icon>
<a href="/app/${myPlugin.url}"> </side-menu-item>
<mwc-icon>${myPlugin.icon}</mwc-icon> <side-menu-item label="REWARD SHARE" href="/app/reward-share">
<span>${myPlugin.title}</span> <vaadin-icon icon="vaadin:share-square" slot="icon"></vaadin-icon>
</a> </side-menu-item>
<side-menu-item label="NAME REGISTRATION" href="/app/name-registration">
<ul> <vaadin-icon icon="vaadin:user-check" slot="icon"></vaadin-icon>
${myPlugin.menus.map(myMenu => html` </side-menu-item>
<li> <side-menu-item label="WEBSITES" href="/app/websites">
<paper-ripple></paper-ripple> <vaadin-icon icon="vaadin:desktop" slot="icon"></vaadin-icon>
<a href="/app/${myMenu.url}"> </side-menu-item>
<mwc-icon>${myMenu.icon}</mwc-icon> <side-menu-item label="DATA MANAGEMENT" href="/app/data-management">
<span>${myMenu.title}</span> <vaadin-icon icon="vaadin:database" slot="icon"></vaadin-icon>
</a> </side-menu-item>
</li> <side-menu-item label="Q-CHAT" href="/app/q-chat">
`)} <vaadin-icon icon="vaadin:chat" slot="icon"></vaadin-icon>
</ul> </side-menu-item>
</li> <side-menu-item label="GROUP MANAGEMENT" href="/app/group-management">
`)} <vaadin-icon icon="vaadin:group" slot="icon"></vaadin-icon>
<li @click=${ e => this.logout(e)}> </side-menu-item>
<a href="javascript:void(0)"> <side-menu-item label="PUZZLES" href="/app/puzzles">
<mwc-icon>exit_to_app</mwc-icon> <vaadin-icon icon="vaadin:puzzle-piece" slot="icon"></vaadin-icon>
<span>LOGOUT</span> </side-menu-item>
</a> ${this.renderNodeManagement()}
</li> <side-menu-item label="LOGOUT" href="javascript:void(0)" @click=${ e => this.logout(e)}>
</ul> <vaadin-icon icon="vaadin:sign-out" slot="icon"></vaadin-icon>
</side-menu-item>
</side-menu>
</div> </div>
` `
} }
@ -244,6 +101,20 @@ class SidenavMenu extends connect(store)(LitElement) {
// ... // ...
} }
renderNodeManagement() {
const checkNodeManagement = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
if (checkNodeManagement.enableManagement = true) {
return html`
<side-menu-item label="NODE MANAGEMENT" href="/app/node-management">
<vaadin-icon icon="vaadin:cloud" slot="icon"></vaadin-icon>
</side-menu-item>
`
} else {
return html`
`
}
}
stateChanged(state) { stateChanged(state) {
this.config = state.config this.config = state.config
this.urls = state.app.registeredUrls this.urls = state.app.registeredUrls