More Info History: Scrollbar Style (#6790)

This commit is contained in:
Zack Arnett 2020-09-04 13:56:48 -05:00 committed by GitHub
parent aa5e20df05
commit 349a5f52b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 363 additions and 349 deletions

View File

@ -43,6 +43,7 @@ import {
getExternalConfig, getExternalConfig,
} from "../external_app/external_config"; } from "../external_app/external_config";
import { actionHandler } from "../panels/lovelace/common/directives/action-handler-directive"; import { actionHandler } from "../panels/lovelace/common/directives/action-handler-directive";
import { haStyleScrollbar } from "../resources/styles";
import type { HomeAssistant, PanelInfo } from "../types"; import type { HomeAssistant, PanelInfo } from "../types";
import "./ha-icon"; import "./ha-icon";
import "./ha-menu-button"; import "./ha-menu-button";
@ -249,6 +250,7 @@ class HaSidebar extends LitElement {
</div> </div>
<paper-listbox <paper-listbox
attr-for-selected="data-panel" attr-for-selected="data-panel"
class="ha-scrollbar"
.selected=${hass.panelUrl} .selected=${hass.panelUrl}
@focusin=${this._listboxFocusIn} @focusin=${this._listboxFocusIn}
@focusout=${this._listboxFocusOut} @focusout=${this._listboxFocusOut}
@ -677,294 +679,283 @@ class HaSidebar extends LitElement {
`; `;
} }
static get styles(): CSSResult { static get styles(): CSSResult[] {
return css` return [
:host { haStyleScrollbar,
height: 100%; css`
display: block; :host {
overflow: hidden; height: 100%;
-ms-user-select: none; display: block;
-webkit-user-select: none; overflow: hidden;
-moz-user-select: none; -ms-user-select: none;
border-right: 1px solid var(--divider-color); -webkit-user-select: none;
background-color: var(--sidebar-background-color); -moz-user-select: none;
width: 64px; border-right: 1px solid var(--divider-color);
} background-color: var(--sidebar-background-color);
:host([expanded]) { width: 64px;
width: calc(256px + env(safe-area-inset-left)); }
} :host([expanded]) {
:host([rtl]) { width: calc(256px + env(safe-area-inset-left));
border-right: 0; }
border-left: 1px solid var(--divider-color); :host([rtl]) {
} border-right: 0;
.menu { border-left: 1px solid var(--divider-color);
box-sizing: border-box; }
height: 65px; .menu {
display: flex; box-sizing: border-box;
padding: 0 8.5px; height: 65px;
border-bottom: 1px solid transparent; display: flex;
white-space: nowrap; padding: 0 8.5px;
font-weight: 400; border-bottom: 1px solid transparent;
color: var(--primary-text-color); white-space: nowrap;
border-bottom: 1px solid var(--divider-color); font-weight: 400;
background-color: var(--primary-background-color); color: var(--primary-text-color);
font-size: 20px; border-bottom: 1px solid var(--divider-color);
align-items: center; background-color: var(--primary-background-color);
padding-left: calc(8.5px + env(safe-area-inset-left)); font-size: 20px;
} align-items: center;
:host([rtl]) .menu { padding-left: calc(8.5px + env(safe-area-inset-left));
padding-left: 8.5px; }
padding-right: calc(8.5px + env(safe-area-inset-right)); :host([rtl]) .menu {
} padding-left: 8.5px;
:host([expanded]) .menu { padding-right: calc(8.5px + env(safe-area-inset-right));
width: calc(256px + env(safe-area-inset-left)); }
} :host([expanded]) .menu {
:host([rtl][expanded]) .menu { width: calc(256px + env(safe-area-inset-left));
width: calc(256px + env(safe-area-inset-right)); }
} :host([rtl][expanded]) .menu {
.menu mwc-icon-button { width: calc(256px + env(safe-area-inset-right));
color: var(--sidebar-icon-color); }
} .menu mwc-icon-button {
:host([expanded]) .menu mwc-icon-button { color: var(--sidebar-icon-color);
margin-right: 23px; }
} :host([expanded]) .menu mwc-icon-button {
:host([expanded][rtl]) .menu mwc-icon-button { margin-right: 23px;
margin-right: 0px; }
margin-left: 23px; :host([expanded][rtl]) .menu mwc-icon-button {
} margin-right: 0px;
margin-left: 23px;
}
.title { .title {
width: 100%; width: 100%;
display: none; display: none;
} }
:host([expanded]) .title { :host([expanded]) .title {
display: initial; display: initial;
} }
.title mwc-button { .title mwc-button {
width: 100%; width: 100%;
} }
paper-listbox::-webkit-scrollbar { paper-listbox {
width: 0.4rem; padding: 4px 0;
height: 0.4rem; display: flex;
} flex-direction: column;
box-sizing: border-box;
height: calc(100% - 196px - env(safe-area-inset-bottom));
overflow-x: hidden;
background: none;
margin-left: env(safe-area-inset-left);
}
paper-listbox::-webkit-scrollbar-thumb { :host([rtl]) paper-listbox {
-webkit-border-radius: 4px; margin-left: initial;
border-radius: 4px; margin-right: env(safe-area-inset-right);
background: var(--scrollbar-thumb-color); }
}
paper-listbox { a {
padding: 4px 0; text-decoration: none;
display: flex; color: var(--sidebar-text-color);
flex-direction: column; font-weight: 500;
box-sizing: border-box; font-size: 14px;
height: calc(100% - 196px - env(safe-area-inset-bottom)); position: relative;
overflow-y: auto; display: block;
overflow-x: hidden; outline: 0;
scrollbar-color: var(--scrollbar-thumb-color) transparent; }
scrollbar-width: thin;
background: none;
margin-left: env(safe-area-inset-left);
}
:host([rtl]) paper-listbox { paper-icon-item {
margin-left: initial; box-sizing: border-box;
margin-right: env(safe-area-inset-right); margin: 4px 8px;
} padding-left: 12px;
border-radius: 4px;
--paper-item-min-height: 40px;
width: 48px;
}
:host([expanded]) paper-icon-item {
width: 240px;
}
:host([rtl]) paper-icon-item {
padding-left: auto;
padding-right: 12px;
}
a { ha-icon[slot="item-icon"],
text-decoration: none; ha-svg-icon[slot="item-icon"] {
color: var(--sidebar-text-color); color: var(--sidebar-icon-color);
font-weight: 500; }
font-size: 14px;
position: relative;
display: block;
outline: 0;
}
paper-icon-item { .iron-selected paper-icon-item::before,
box-sizing: border-box; a:not(.iron-selected):focus::before {
margin: 4px 8px; border-radius: 4px;
padding-left: 12px; position: absolute;
border-radius: 4px; top: 0;
--paper-item-min-height: 40px; right: 0;
width: 48px; bottom: 0;
} left: 0;
:host([expanded]) paper-icon-item { pointer-events: none;
width: 240px; content: "";
} transition: opacity 15ms linear;
:host([rtl]) paper-icon-item { will-change: opacity;
padding-left: auto; }
padding-right: 12px; .iron-selected paper-icon-item::before {
} background-color: var(--sidebar-selected-icon-color);
opacity: 0.12;
}
a:not(.iron-selected):focus::before {
background-color: currentColor;
opacity: var(--dark-divider-opacity);
margin: 4px 8px;
}
.iron-selected paper-icon-item:focus::before,
.iron-selected:focus paper-icon-item::before {
opacity: 0.2;
}
ha-icon[slot="item-icon"], .iron-selected paper-icon-item[pressed]:before {
ha-svg-icon[slot="item-icon"] { opacity: 0.37;
color: var(--sidebar-icon-color); }
}
.iron-selected paper-icon-item::before, paper-icon-item span {
a:not(.iron-selected):focus::before { color: var(--sidebar-text-color);
border-radius: 4px; font-weight: 500;
position: absolute; font-size: 14px;
top: 0; }
right: 0;
bottom: 0;
left: 0;
pointer-events: none;
content: "";
transition: opacity 15ms linear;
will-change: opacity;
}
.iron-selected paper-icon-item::before {
background-color: var(--sidebar-selected-icon-color);
opacity: 0.12;
}
a:not(.iron-selected):focus::before {
background-color: currentColor;
opacity: var(--dark-divider-opacity);
margin: 4px 8px;
}
.iron-selected paper-icon-item:focus::before,
.iron-selected:focus paper-icon-item::before {
opacity: 0.2;
}
.iron-selected paper-icon-item[pressed]:before { a.iron-selected paper-icon-item ha-icon,
opacity: 0.37; a.iron-selected paper-icon-item ha-svg-icon {
} color: var(--sidebar-selected-icon-color);
}
paper-icon-item span { a.iron-selected .item-text {
color: var(--sidebar-text-color); color: var(--sidebar-selected-text-color);
font-weight: 500; }
font-size: 14px;
}
a.iron-selected paper-icon-item ha-icon, paper-icon-item .item-text {
a.iron-selected paper-icon-item ha-svg-icon { display: none;
color: var(--sidebar-selected-icon-color); max-width: calc(100% - 56px);
} }
:host([expanded]) paper-icon-item .item-text {
display: block;
}
a.iron-selected .item-text { .divider {
color: var(--sidebar-selected-text-color); bottom: 112px;
} padding: 10px 0;
}
.divider::before {
content: " ";
display: block;
height: 1px;
background-color: var(--divider-color);
}
.notifications-container {
display: flex;
margin-left: env(safe-area-inset-left);
}
:host([rtl]) .notifications-container {
margin-left: initial;
margin-right: env(safe-area-inset-right);
}
.notifications {
cursor: pointer;
}
.notifications .item-text {
flex: 1;
}
.profile {
margin-left: env(safe-area-inset-left);
}
:host([rtl]) .profile {
margin-left: initial;
margin-right: env(safe-area-inset-right);
}
.profile paper-icon-item {
padding-left: 4px;
}
:host([rtl]) .profile paper-icon-item {
padding-left: auto;
padding-right: 4px;
}
.profile .item-text {
margin-left: 8px;
}
:host([rtl]) .profile .item-text {
margin-right: 8px;
}
paper-icon-item .item-text { .notification-badge {
display: none; min-width: 20px;
max-width: calc(100% - 56px); box-sizing: border-box;
} border-radius: 50%;
:host([expanded]) paper-icon-item .item-text { font-weight: 400;
display: block; background-color: var(--accent-color);
} line-height: 20px;
text-align: center;
padding: 0px 6px;
color: var(--text-accent-color, var(--text-primary-color));
}
ha-svg-icon + .notification-badge {
position: absolute;
bottom: 14px;
left: 26px;
font-size: 0.65em;
}
.divider { .spacer {
bottom: 112px; flex: 1;
padding: 10px 0; pointer-events: none;
} }
.divider::before {
content: " ";
display: block;
height: 1px;
background-color: var(--divider-color);
}
.notifications-container {
display: flex;
margin-left: env(safe-area-inset-left);
}
:host([rtl]) .notifications-container {
margin-left: initial;
margin-right: env(safe-area-inset-right);
}
.notifications {
cursor: pointer;
}
.notifications .item-text {
flex: 1;
}
.profile {
margin-left: env(safe-area-inset-left);
}
:host([rtl]) .profile {
margin-left: initial;
margin-right: env(safe-area-inset-right);
}
.profile paper-icon-item {
padding-left: 4px;
}
:host([rtl]) .profile paper-icon-item {
padding-left: auto;
padding-right: 4px;
}
.profile .item-text {
margin-left: 8px;
}
:host([rtl]) .profile .item-text {
margin-right: 8px;
}
.notification-badge { .subheader {
min-width: 20px; color: var(--sidebar-text-color);
box-sizing: border-box; font-weight: 500;
border-radius: 50%; font-size: 14px;
font-weight: 400; padding: 16px;
background-color: var(--accent-color); white-space: nowrap;
line-height: 20px; }
text-align: center;
padding: 0px 6px;
color: var(--text-accent-color, var(--text-primary-color));
}
ha-svg-icon + .notification-badge {
position: absolute;
bottom: 14px;
left: 26px;
font-size: 0.65em;
}
.spacer { .dev-tools {
flex: 1; display: flex;
pointer-events: none; flex-direction: row;
} justify-content: space-between;
padding: 0 8px;
width: 256px;
box-sizing: border-box;
}
.subheader { .dev-tools a {
color: var(--sidebar-text-color); color: var(--sidebar-icon-color);
font-weight: 500; }
font-size: 14px;
padding: 16px;
white-space: nowrap;
}
.dev-tools { .tooltip {
display: flex; display: none;
flex-direction: row; position: absolute;
justify-content: space-between; opacity: 0.9;
padding: 0 8px; border-radius: 2px;
width: 256px; white-space: nowrap;
box-sizing: border-box; color: var(--sidebar-background-color);
} background-color: var(--sidebar-text-color);
padding: 4px;
font-weight: 500;
}
.dev-tools a { :host([rtl]) .menu mwc-icon-button {
color: var(--sidebar-icon-color); -webkit-transform: scaleX(-1);
} transform: scaleX(-1);
}
.tooltip { `,
display: none; ];
position: absolute;
opacity: 0.9;
border-radius: 2px;
white-space: nowrap;
color: var(--sidebar-background-color);
background-color: var(--sidebar-text-color);
padding: 4px;
font-weight: 500;
}
:host([rtl]) .menu mwc-icon-button {
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
}
`;
} }
} }

View File

@ -21,6 +21,7 @@ import { computeRTL, emitRTLDirection } from "../../common/util/compute_rtl";
import "../../components/ha-circular-progress"; import "../../components/ha-circular-progress";
import "../../components/ha-icon"; import "../../components/ha-icon";
import { LogbookEntry } from "../../data/logbook"; import { LogbookEntry } from "../../data/logbook";
import { haStyleScrollbar } from "../../resources/styles";
import { HomeAssistant } from "../../types"; import { HomeAssistant } from "../../types";
@customElement("ha-logbook") @customElement("ha-logbook")
@ -73,7 +74,7 @@ class HaLogbook extends LitElement {
return html` return html`
<div <div
class="container ${classMap({ class="container ha-scrollbar ${classMap({
narrow: this.narrow, narrow: this.narrow,
rtl: this._rtl, rtl: this._rtl,
"no-name": this.noName, "no-name": this.noName,
@ -184,103 +185,106 @@ class HaLogbook extends LitElement {
}); });
} }
static get styles(): CSSResult { static get styles(): CSSResult[] {
return css` return [
:host { haStyleScrollbar,
display: block; css`
height: 100%; :host {
} display: block;
height: 100%;
}
.rtl { .rtl {
direction: ltr; direction: ltr;
} }
.entry-container { .entry-container {
width: 100%; width: 100%;
} }
.entry { .entry {
display: flex; display: flex;
width: 100%; width: 100%;
line-height: 2em; line-height: 2em;
padding: 8px 16px; padding: 8px 16px;
box-sizing: border-box; box-sizing: border-box;
border-top: 1px solid border-top: 1px solid
var(--mdc-dialog-scroll-divider-color, rgba(0, 0, 0, 0.12)); var(--mdc-dialog-scroll-divider-color, rgba(0, 0, 0, 0.12));
} }
.time { .time {
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
width: 65px; width: 65px;
flex-shrink: 0; flex-shrink: 0;
font-size: 12px; font-size: 12px;
color: var(--secondary-text-color); color: var(--secondary-text-color);
} }
.date { .date {
margin: 8px 0; margin: 8px 0;
padding: 0 16px; padding: 0 16px;
} }
.narrow .date { .narrow .date {
padding: 0 8px; padding: 0 8px;
} }
.rtl .date { .rtl .date {
direction: rtl; direction: rtl;
} }
.icon-message { .icon-message {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.no-entries { .no-entries {
text-align: center; text-align: center;
} }
ha-icon { ha-icon {
margin: 0 8px 0 16px; margin: 0 8px 0 16px;
flex-shrink: 0; flex-shrink: 0;
color: var(--primary-text-color); color: var(--primary-text-color);
} }
.message { .message {
color: var(--primary-text-color); color: var(--primary-text-color);
} }
.no-name .item-message { .no-name .item-message {
text-transform: capitalize; text-transform: capitalize;
} }
a { a {
color: var(--primary-color); color: var(--primary-color);
} }
.uni-virtualizer-host { .uni-virtualizer-host {
display: block; display: block;
position: relative; position: relative;
contain: strict; contain: strict;
height: 100%; height: 100%;
overflow: auto; overflow: auto;
} }
.uni-virtualizer-host > * { .uni-virtualizer-host > * {
box-sizing: border-box; box-sizing: border-box;
} }
.narrow .entry { .narrow .entry {
flex-direction: column; flex-direction: column;
line-height: 1.5; line-height: 1.5;
padding: 8px; padding: 8px;
} }
.narrow .icon-message ha-icon { .narrow .icon-message ha-icon {
margin-left: 0; margin-left: 0;
} }
`; `,
];
} }
} }

View File

@ -320,3 +320,22 @@ export const haStyleDialog = css`
color: var(--error-color); color: var(--error-color);
} }
`; `;
export const haStyleScrollbar = css`
.ha-scrollbar::-webkit-scrollbar {
width: 0.4rem;
height: 0.4rem;
}
.ha-scrollbar::-webkit-scrollbar-thumb {
-webkit-border-radius: 4px;
border-radius: 4px;
background: var(--scrollbar-thumb-color);
}
.ha-scrollbar {
overflow-y: auto;
scrollbar-color: var(--scrollbar-thumb-color) transparent;
scrollbar-width: thin;
}
`;