mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-26 10:46:35 +00:00
Tile card fixes with vertical layout (#15202)
This commit is contained in:
parent
d2886b1ea7
commit
b591c75377
@ -16,6 +16,7 @@ import { styleMap } from "lit/directives/style-map";
|
|||||||
import { computeCssColor } from "../../../common/color/compute-color";
|
import { computeCssColor } from "../../../common/color/compute-color";
|
||||||
import { hsv2rgb, rgb2hex, rgb2hsv } from "../../../common/color/convert-color";
|
import { hsv2rgb, rgb2hex, rgb2hsv } from "../../../common/color/convert-color";
|
||||||
import { DOMAINS_TOGGLE } from "../../../common/const";
|
import { DOMAINS_TOGGLE } from "../../../common/const";
|
||||||
|
import { stopPropagation } from "../../../common/dom/stop_propagation";
|
||||||
import { computeDomain } from "../../../common/entity/compute_domain";
|
import { computeDomain } from "../../../common/entity/compute_domain";
|
||||||
import { computeStateDisplay } from "../../../common/entity/compute_state_display";
|
import { computeStateDisplay } from "../../../common/entity/compute_state_display";
|
||||||
import { stateActive } from "../../../common/entity/state_active";
|
import { stateActive } from "../../../common/entity/state_active";
|
||||||
@ -260,12 +261,12 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
|
|||||||
const entityId = this._config.entity;
|
const entityId = this._config.entity;
|
||||||
const stateObj = entityId ? this.hass.states[entityId] : undefined;
|
const stateObj = entityId ? this.hass.states[entityId] : undefined;
|
||||||
|
|
||||||
const vertical = this._config.vertical ? "tile-vertical" : "";
|
const tileClasses = { vertical: Boolean(this._config.vertical) };
|
||||||
|
|
||||||
if (!stateObj) {
|
if (!stateObj) {
|
||||||
return html`
|
return html`
|
||||||
<ha-card class="disabled">
|
<ha-card class="disabled">
|
||||||
<div class="tile ${vertical}">
|
<div class="tile ${classMap(tileClasses)}">
|
||||||
<div class="icon-container">
|
<div class="icon-container">
|
||||||
<ha-tile-icon class="icon" .iconPath=${mdiHelp}></ha-tile-icon>
|
<ha-tile-icon class="icon" .iconPath=${mdiHelp}></ha-tile-icon>
|
||||||
<ha-tile-badge
|
<ha-tile-badge
|
||||||
@ -312,13 +313,33 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
|
|||||||
return html`
|
return html`
|
||||||
<ha-card style=${styleMap(style)} class=${classMap({ active })}>
|
<ha-card style=${styleMap(style)} class=${classMap({ active })}>
|
||||||
${this._shouldRenderRipple ? html`<mwc-ripple></mwc-ripple>` : null}
|
${this._shouldRenderRipple ? html`<mwc-ripple></mwc-ripple>` : null}
|
||||||
<div class="tile ${vertical}">
|
<div
|
||||||
|
class="tile ${classMap(tileClasses)}"
|
||||||
|
@action=${this._handleAction}
|
||||||
|
.actionHandler=${actionHandler()}
|
||||||
|
role="button"
|
||||||
|
tabindex="0"
|
||||||
|
@mousedown=${this.handleRippleActivate}
|
||||||
|
@mouseup=${this.handleRippleDeactivate}
|
||||||
|
@mouseenter=${this.handleRippleMouseEnter}
|
||||||
|
@mouseleave=${this.handleRippleMouseLeave}
|
||||||
|
@touchstart=${this.handleRippleActivate}
|
||||||
|
@touchend=${this.handleRippleDeactivate}
|
||||||
|
@touchcancel=${this.handleRippleDeactivate}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
class="icon-container"
|
class="icon-container"
|
||||||
role="button"
|
role="button"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
@action=${this._handleIconAction}
|
@action=${this._handleIconAction}
|
||||||
.actionHandler=${actionHandler()}
|
.actionHandler=${actionHandler()}
|
||||||
|
@mousedown=${stopPropagation}
|
||||||
|
@mouseup=${stopPropagation}
|
||||||
|
@mouseenter=${stopPropagation}
|
||||||
|
@mouseleave=${stopPropagation}
|
||||||
|
@touchstart=${stopPropagation}
|
||||||
|
@touchend=${stopPropagation}
|
||||||
|
@touchcancel=${stopPropagation}
|
||||||
>
|
>
|
||||||
${imageUrl
|
${imageUrl
|
||||||
? html`
|
? html`
|
||||||
@ -351,17 +372,6 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
|
|||||||
class="info"
|
class="info"
|
||||||
.primary=${name}
|
.primary=${name}
|
||||||
.secondary=${stateDisplay}
|
.secondary=${stateDisplay}
|
||||||
@action=${this._handleAction}
|
|
||||||
.actionHandler=${actionHandler()}
|
|
||||||
role="button"
|
|
||||||
tabindex="0"
|
|
||||||
@mousedown=${this.handleRippleActivate}
|
|
||||||
@mouseup=${this.handleRippleDeactivate}
|
|
||||||
@mouseenter=${this.handleRippleMouseEnter}
|
|
||||||
@mouseleave=${this.handleRippleMouseLeave}
|
|
||||||
@touchstart=${this.handleRippleActivate}
|
|
||||||
@touchend=${this.handleRippleDeactivate}
|
|
||||||
@touchcancel=${this.handleRippleDeactivate}
|
|
||||||
></ha-tile-info>
|
></ha-tile-info>
|
||||||
</div>
|
</div>
|
||||||
${supportedFeatures?.length
|
${supportedFeatures?.length
|
||||||
@ -412,7 +422,7 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
|
|||||||
--tile-color: var(--state-inactive-color);
|
--tile-color: var(--state-inactive-color);
|
||||||
-webkit-tap-highlight-color: transparent;
|
-webkit-tap-highlight-color: transparent;
|
||||||
}
|
}
|
||||||
ha-card:has(ha-tile-info:focus-visible) {
|
ha-card:has(.tile:focus-visible) {
|
||||||
border-color: var(--tile-color);
|
border-color: var(--tile-color);
|
||||||
box-shadow: 0 0 0 1px var(--tile-color);
|
box-shadow: 0 0 0 1px var(--tile-color);
|
||||||
}
|
}
|
||||||
@ -437,10 +447,19 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
|
|||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.tile-vertical {
|
.vertical {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
.vertical .icon-container {
|
||||||
|
margin-top: 12px;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-inline-start: initial;
|
||||||
|
margin-inline-end: initial;
|
||||||
|
}
|
||||||
|
.vertical .info {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
.icon-container {
|
.icon-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
flex: none;
|
flex: none;
|
||||||
@ -469,6 +488,7 @@ export class HuiTileCard extends LitElement implements LovelaceCard {
|
|||||||
min-width: 0;
|
min-width: 0;
|
||||||
min-height: 40px;
|
min-height: 40px;
|
||||||
transition: background-color 180ms ease-in-out;
|
transition: background-color 180ms ease-in-out;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
@ -503,6 +503,7 @@ export interface TileCardConfig extends LovelaceCardConfig {
|
|||||||
icon?: string;
|
icon?: string;
|
||||||
color?: string;
|
color?: string;
|
||||||
show_entity_picture?: string;
|
show_entity_picture?: string;
|
||||||
|
vertical?: boolean;
|
||||||
tap_action?: ActionConfig;
|
tap_action?: ActionConfig;
|
||||||
icon_tap_action?: ActionConfig;
|
icon_tap_action?: ActionConfig;
|
||||||
features?: LovelaceTileFeatureConfig[];
|
features?: LovelaceTileFeatureConfig[];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user