show first visible view on default (#6567)

Co-authored-by: Bram Kragten <mail@bramkragten.nl>
This commit is contained in:
Ian Richardson 2020-09-11 15:10:36 -05:00 committed by GitHub
parent f18913b5a0
commit dd1bf7b49d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,12 +1,13 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@material/mwc-list/mwc-list-item"; import "@material/mwc-list/mwc-list-item";
import type { RequestSelectedDetail } from "@material/mwc-list/mwc-list-item";
import { import {
mdiDotsVertical,
mdiMicrophone,
mdiPlus,
mdiClose, mdiClose,
mdiPencil, mdiDotsVertical,
mdiHelpCircle, mdiHelpCircle,
mdiMicrophone,
mdiPencil,
mdiPlus,
} from "@mdi/js"; } from "@mdi/js";
import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-header/app-header";
import "@polymer/app-layout/app-scroll-effects/effects/waterfall"; import "@polymer/app-layout/app-scroll-effects/effects/waterfall";
@ -17,9 +18,9 @@ import {
css, css,
CSSResult, CSSResult,
html, html,
internalProperty,
LitElement, LitElement,
property, property,
internalProperty,
PropertyValues, PropertyValues,
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
@ -28,16 +29,17 @@ import memoizeOne from "memoize-one";
import { isComponentLoaded } from "../../common/config/is_component_loaded"; import { isComponentLoaded } from "../../common/config/is_component_loaded";
import { fireEvent } from "../../common/dom/fire_event"; import { fireEvent } from "../../common/dom/fire_event";
import scrollToTarget from "../../common/dom/scroll-to-target"; import scrollToTarget from "../../common/dom/scroll-to-target";
import { shouldHandleRequestSelectedEvent } from "../../common/mwc/handle-request-selected-event";
import { navigate } from "../../common/navigate"; import { navigate } from "../../common/navigate";
import { computeRTLDirection } from "../../common/util/compute_rtl"; import { computeRTLDirection } from "../../common/util/compute_rtl";
import { debounce } from "../../common/util/debounce"; import { debounce } from "../../common/util/debounce";
import { afterNextRender } from "../../common/util/render-status"; import { afterNextRender } from "../../common/util/render-status";
import "../../components/ha-button-menu"; import "../../components/ha-button-menu";
import "../../components/ha-icon"; import "../../components/ha-icon";
import "../../components/ha-svg-icon";
import "../../components/ha-icon-button-arrow-next"; import "../../components/ha-icon-button-arrow-next";
import "../../components/ha-icon-button-arrow-prev"; import "../../components/ha-icon-button-arrow-prev";
import "../../components/ha-menu-button"; import "../../components/ha-menu-button";
import "../../components/ha-svg-icon";
import type { import type {
LovelaceConfig, LovelaceConfig,
LovelacePanelConfig, LovelacePanelConfig,
@ -58,8 +60,6 @@ import type { Lovelace } from "./types";
import "./views/hui-panel-view"; import "./views/hui-panel-view";
import type { HUIPanelView } from "./views/hui-panel-view"; import type { HUIPanelView } from "./views/hui-panel-view";
import { HUIView } from "./views/hui-view"; import { HUIView } from "./views/hui-view";
import type { RequestSelectedDetail } from "@material/mwc-list/mwc-list-item";
import { shouldHandleRequestSelectedEvent } from "../../common/mwc/handle-request-selected-event";
class HUIRoot extends LitElement { class HUIRoot extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant; @property({ attribute: false }) public hass!: HomeAssistant;
@ -382,6 +382,15 @@ class HUIRoot extends LitElement {
`; `;
} }
private _isVisible = (view: LovelaceViewConfig) =>
Boolean(
this._editMode ||
view.visible === undefined ||
view.visible === true ||
(Array.isArray(view.visible) &&
view.visible.some((show) => show.user === this.hass!.user?.id))
);
protected updated(changedProperties: PropertyValues): void { protected updated(changedProperties: PropertyValues): void {
super.updated(changedProperties); super.updated(changedProperties);
@ -407,9 +416,14 @@ class HUIRoot extends LitElement {
if (changedProperties.has("route")) { if (changedProperties.has("route")) {
const views = this.config.views; const views = this.config.views;
if (!viewPath && views.length) { if (!viewPath && views.length) {
navigate(this, `${this.route!.prefix}/${views[0].path || 0}`, true); newSelectView = views.findIndex(this._isVisible);
newSelectView = 0; navigate(
this,
`${this.route!.prefix}/${views[newSelectView].path || newSelectView}`,
true
);
} else if (viewPath === "hass-unused-entities") { } else if (viewPath === "hass-unused-entities") {
newSelectView = "hass-unused-entities"; newSelectView = "hass-unused-entities";
} else if (viewPath) { } else if (viewPath) {
@ -449,8 +463,14 @@ class HUIRoot extends LitElement {
this.lovelace!.mode === "storage" && this.lovelace!.mode === "storage" &&
viewPath === "hass-unused-entities" viewPath === "hass-unused-entities"
) { ) {
navigate(this, `${this.route?.prefix}/${views[0]?.path || 0}`); newSelectView = views.findIndex(this._isVisible);
newSelectView = 0; navigate(
this,
`${this.route!.prefix}/${
views[newSelectView].path || newSelectView
}`,
true
);
} }
} }