mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-19 15:26:36 +00:00
show first visible view on default (#6567)
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
This commit is contained in:
parent
f18913b5a0
commit
dd1bf7b49d
@ -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
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user