Update sidebar

This commit is contained in:
Paulus Schoutsen 2016-03-14 23:52:56 -07:00
parent a310a4026a
commit cabf477867
4 changed files with 86 additions and 57 deletions

View File

@ -8,7 +8,7 @@
"license": "MIT",
"private": true,
"devDependencies": {
"polymer": "Polymer/polymer#~1.2.4",
"polymer": "Polymer/polymer#~1.3.1",
"pikaday": "1.4",
"leaflet-map": "1.2.0",
"iron-elements": "PolymerElements/iron-elements#~1.0.8",

View File

@ -1,6 +1,7 @@
<link rel='import' href='../../bower_components/polymer/polymer.html'>
<link rel='import' href='../../bower_components/paper-header-panel/paper-header-panel.html'>
<link rel='import' href='../../bower_components/paper-toolbar/paper-toolbar.html'>
<link rel='import' href='../../bower_components/paper-menu/paper-menu.html'>
<link rel='import' href='../../bower_components/iron-icon/iron-icon.html'>
<link rel='import' href='../../bower_components/paper-item/paper-item.html'>
<link rel='import' href='../../bower_components/paper-item/paper-icon-item.html'>
@ -10,6 +11,14 @@
<dom-module id='ha-sidebar'>
<style>
:host {
--sidebar-text: {
opacity: var(--dark-primary-opacity);
font-weight: 500;
font-size: 14px;
}
}
.sidenav {
-ms-user-select: none;
-webkit-user-select: none;
@ -17,29 +26,49 @@
}
paper-toolbar {
--paper-toolbar-title: {
text-align: left;
margin-left: 0px !important;
};
--paper-toolbar-background: #fff;
--paper-toolbar-color: #000;
opacity: var(--dark-primary-opacity);
border-bottom: 1px solid #e0e0e0;
}
div.title {
text-align: left;
margin-left: 24px !important;
}
div.menu {
color: var(--secondary-text-color);
margin-top: 8px;
paper-menu {
padding-bottom: 0;
}
paper-icon-item {
padding-left: 24px;
cursor: pointer;
font-weight: 500;
--paper-icon-item: {
cursor: pointer;
}
--paper-item-icon: {
color: #000;
opacity: var(--dark-secondary-opacity);
};
--paper-item-selected: {
color: var(--default-primary-color);
background-color: #e8e8e8;
opacity: 1;
}
}
paper-icon-item.iron-selected {
--paper-item-icon: {
color: var(--default-primary-color);
opacity: 1;
};
}
paper-icon-item.selected {
color: var(--default-primary-color);
background-color: #f0f0f0;
paper-icon-item .item-text {
@apply(--sidebar-text);
}
paper-icon-item.iron-selected .item-text {
opacity: 1;
}
paper-icon-item.logout {
@ -47,78 +76,92 @@
}
.divider {
border-top: 1px solid #e0e0e0;
height: 1px;
background-color: #000;
margin: 4px 0;
opacity: var(--dark-divider-opacity)
}
.text {
.streaming {
@apply(--sidebar-text);
}
.subheader {
@apply(--sidebar-text);
padding: 16px;
font-size: 14px;
font-weight: 500;
}
.dev-tools {
padding: 0 8px;
opacity: var(--dark-secondary-opacity);
}
</style>
<template>
<paper-header-panel mode='scroll' class='sidenav fit'>
<paper-toolbar>
<!-- forces paper toolbar to style title appropriate -->
<paper-icon-button icon='mdi:menu' hidden$='[[!narrow]]' on-tap='toggleMenu'></paper-icon-button>
<div class="title">Home Assistant</div>
<paper-icon-button icon='mdi:chevron-left' hidden$='[[narrow]]' on-tap='toggleMenu'></paper-icon-button>
</paper-toolbar>
<div class='menu'>
<paper-menu attr-for-selected='data-panel' selected='[[selected]]' on-iron-select='menuSelect'>
<paper-icon-item on-tap='menuClicked' data-panel='states'>
<iron-icon item-icon icon='mdi:apps'></iron-icon> States
<iron-icon item-icon icon='mdi:apps'></iron-icon>
<span class='item-text'>States</span>
</paper-icon-item>
<paper-icon-item on-tap='menuClicked' data-panel='map'>
<iron-icon item-icon icon='mdi:account-location'></iron-icon>
Map
<span class='item-text'>Map</span>
</paper-icon-item>
<template is='dom-if' if='[[hasHistoryComponent]]'>
<paper-icon-item on-tap='menuClicked' data-panel='history'>
<iron-icon item-icon icon='mdi:poll-box'></iron-icon>
History
<span class='item-text'>History</span>
</paper-icon-item>
</template>
<template is='dom-if' if='[[hasLogbookComponent]]'>
<paper-icon-item on-tap='menuClicked' data-panel='logbook'>
<iron-icon item-icon icon='mdi:format-list-bulleted-type'></iron-icon>
Logbook
<span class='item-text'>Logbook</span>
</paper-icon-item>
</template>
<paper-icon-item on-tap='menuClicked' data-panel='logout' class='logout'>
<iron-icon item-icon icon='mdi:exit-to-app'></iron-icon>
Log Out
<span class='item-text'>Log Out</span>
</paper-icon-item>
</paper-menu>
<paper-item class='divider horizontal layout justified'>
<div>Streaming updates</div>
<div>
<div class='divider'></div>
<paper-item class='horizontal layout justified'>
<div class='streaming'>Streaming updates</div>
<stream-status></stream-status>
</paper-item>
<div class='text label divider'>Developer Tools</div>
<div class='divider'></div>
<div class='subheader'>Developer Tools</div>
<div class='dev-tools layout horizontal justified'>
<paper-icon-button
icon='mdi:remote' data-panel='devService'
on-tap='handleDevClick'></paper-icon-button>
on-tap='menuClicked'></paper-icon-button>
<paper-icon-button
icon='mdi:code-tags' data-panel='devState'
on-tap='handleDevClick'></paper-icon-button>
on-tap='menuClicked'></paper-icon-button>
<paper-icon-button
icon='mdi:radio-tower' data-panel='devEvent'
on-tap='handleDevClick'></paper-icon-button>
on-tap='menuClicked'></paper-icon-button>
<paper-icon-button
icon='mdi:file-xml' data-panel='devTemplate'
on-tap='handleDevClick'></paper-icon-button>
on-tap='menuClicked'></paper-icon-button>
<paper-icon-button
icon='mdi:information-outline' data-panel='devInfo'
on-tap='handleDevClick'></paper-icon-button>
on-tap='menuClicked'></paper-icon-button>
</div>
</div>
</paper-header-panel>

View File

@ -26,10 +26,14 @@ export default new Polymer({
type: String,
},
narrow: {
type: Boolean,
},
selected: {
type: String,
bindNuclear: navigationGetters.activePane,
observer: 'selectedChanged',
// observer: 'selectedChanged',
},
hasHistoryComponent: {
@ -43,20 +47,8 @@ export default new Polymer({
},
},
selectedChanged(newVal) {
if (document.activeElement) {
document.activeElement.blur();
}
const menuItems = this.querySelectorAll('.menu [data-panel]');
for (let idx = 0; idx < menuItems.length; idx++) {
if (menuItems[idx].getAttribute('data-panel') === newVal) {
menuItems[idx].classList.add('selected');
} else {
menuItems[idx].classList.remove('selected');
}
}
menuSelect(ev) {
this.updateStyles();
},
menuClicked(ev) {
@ -74,12 +66,6 @@ export default new Polymer({
}
},
handleDevClick(ev) {
// prevent it from highlighting first menu item
document.activeElement.blur();
this.menuClicked(ev);
},
toggleMenu() {
this.fire('close-menu');
},

View File

@ -28,7 +28,7 @@
force-narrow='[[computeForceNarrow(narrow, showSidebar)]]'
responsive-width='0' disable-swipe='[[isSelectedMap]]'
disable-edge-swipe='[[isSelectedMap]]'>
<ha-sidebar drawer></ha-sidebar>
<ha-sidebar drawer narrow='[[narrow]]'></ha-sidebar>
<template is='dom-if' if='[[isSelectedStates]]'>
<partial-cards main narrow='[[narrow]]' show-menu='[[showSidebar]]'></partial-cards>