Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions hassio/src/dialogs/network/dialog-hassio-network.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import "../../../../src/components/ha-list";
import "../../../../src/components/ha-list-item";
import "../../../../src/components/ha-password-field";
import "../../../../src/components/ha-radio";
import "../../../../src/components/ha-tab-group";
import "../../../../src/components/ha-tab-group-tab";
import "../../../../src/components/ha-textfield";
import type { HaTextField } from "../../../../src/components/ha-textfield";
import { extractApiErrorMessage } from "../../../../src/data/hassio/common";
Expand All @@ -36,7 +38,6 @@ import type { HassDialog } from "../../../../src/dialogs/make-dialog-manager";
import { haStyleDialog } from "../../../../src/resources/styles";
import type { HomeAssistant } from "../../../../src/types";
import type { HassioNetworkDialogParams } from "./show-dialog-network";
import "../../../../src/components/sl-tab-group";

const IP_VERSIONS = ["ipv4", "ipv6"];

Expand Down Expand Up @@ -114,19 +115,19 @@ export class DialogHassioNetwork
></ha-icon-button>
</ha-header-bar>
${this._interfaces.length > 1
? html`<sl-tab-group @sl-tab-show=${this._handleTabActivated}
? html`<ha-tab-group @wa-tab-show=${this._handleTabActivated}
>${this._interfaces.map(
(device, index) =>
html`<sl-tab
html`<ha-tab-group-tab
slot="nav"
.id=${device.interface}
.panel=${index.toString()}
.active=${this._curTabIndex === index}
>
${device.interface}
</sl-tab>`
</ha-tab-group-tab>`
)}
</sl-tab-group>`
</ha-tab-group>`
: ""}
</div>
${cache(this._renderTab())}
Expand Down Expand Up @@ -627,10 +628,10 @@ export class DialogHassioNetwork
--mdc-list-side-padding: 10px;
}

sl-tab {
ha-tab-group-tab {
flex: 1;
}
sl-tab::part(base) {
ha-tab-group-tab::part(base) {
width: 100%;
justify-content: center;
}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"@fullcalendar/list": "6.1.19",
"@fullcalendar/luxon3": "6.1.19",
"@fullcalendar/timegrid": "6.1.19",
"@home-assistant/webawesome": "3.0.0-beta.4.ha.1",
"@home-assistant/webawesome": "3.0.0-beta.4.ha.2",
"@lezer/highlight": "1.2.1",
"@lit-labs/motion": "1.0.9",
"@lit-labs/observers": "2.0.6",
Expand Down
44 changes: 44 additions & 0 deletions src/components/ha-tab-group-tab.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import Tab from "@home-assistant/webawesome/dist/components/tab/tab";
import { css, type CSSResultGroup } from "lit";
import { customElement } from "lit/decorators";

@customElement("ha-tab-group-tab")
// @ts-ignore
export class HaTabGroupTab extends Tab {
static get styles(): CSSResultGroup {
return [
Tab.styles,
css`
:host {
font-size: var(--ha-font-size-m);
--wa-color-brand-on-quiet: var(
--ha-tab-active-text-color,
var(--primary-color)
);
2
--wa-color-neutral-on-quiet: var(--wa-color-brand-on-quiet);
opacity: 0.8;

color: inherit;
}

:host([active]:not([disabled])) {
opacity: 1;
}

@media (hover: hover) {
:host(:hover:not([disabled]):not([active])) .tab {
color: var(--wa-color-brand-on-quiet);
}
}
`,
];
}
}

declare global {
interface HTMLElementTagNameMap {
// @ts-ignore
"ha-tab-group-tab": HaTabGroupTab;
}
}
65 changes: 65 additions & 0 deletions src/components/ha-tab-group.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import TabGroup from "@home-assistant/webawesome/dist/components/tab-group/tab-group";
import { css, type CSSResultGroup } from "lit";
import { customElement, property } from "lit/decorators";
import { DragScrollController } from "../common/controllers/drag-scroll-controller";

@customElement("ha-tab-group")
export class HaTabGroup extends TabGroup {
private _dragScrollController = new DragScrollController(this, {
selector: ".nav",
});

@property({ attribute: "tab-tag" }) override tabTag = "ha-tab-group-tab";

@property({ attribute: "tab-only", type: Boolean }) tabOnly = true;

protected override handleClick(event: MouseEvent) {
if (this._dragScrollController.scrolled) {
return;
}
super.handleClick(event);
}

static get styles(): CSSResultGroup {
return [
TabGroup.styles,
css`
:host {
--track-width: 2px;
--track-color: var(--ha-tab-track-color, var(--divider-color));
--indicator-color: var(
--ha-tab-indicator-color,
var(--primary-color)
);
--wa-color-neutral-on-quiet: var(--indicator-color);
}

.tab-group-top ::slotted(ha-tab-group-tab[active]) {
border-block-end: solid var(--track-width) var(--indicator-color);
margin-block-end: calc(-1 * var(--track-width));
}

.tab-group-start ::slotted(ha-tab-group-tab[active]) {
border-inline-end: solid var(--track-width) var(--indicator-color);
margin-inline-end: calc(-1 * var(--track-width));
}

.tab-group-end ::slotted(ha-tab-group-tab[active]) {
border-inline-start: solid var(--track-width) var(--indicator-color);
margin-inline-start: calc(-1 * var(--track-width));
}

.scroll-button::part(base):hover {
background-color: transparent;
}
`,
];
}
}

declare global {
interface HTMLElementTagNameMap {
// @ts-ignore
"ha-tab-group": HaTabGroup;
}
}
88 changes: 0 additions & 88 deletions src/components/sl-tab-group.ts

This file was deleted.

17 changes: 9 additions & 8 deletions src/dialogs/more-info/controls/more-info-weather.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type { CSSResultGroup, PropertyValues } from "lit";
import { LitElement, css, html, nothing } from "lit";
import { customElement, property, state } from "lit/decorators";
import memoizeOne from "memoize-one";
import { DragScrollController } from "../../../common/controllers/drag-scroll-controller";
import { formatDateWeekdayShort } from "../../../common/datetime/format_date";
import { formatTime } from "../../../common/datetime/format_time";
import { formatNumber } from "../../../common/number/format_number";
Expand All @@ -11,8 +12,9 @@ import "../../../components/ha-relative-time";
import "../../../components/ha-spinner";
import "../../../components/ha-state-icon";
import "../../../components/ha-svg-icon";
import "../../../components/ha-tab-group";
import "../../../components/ha-tab-group-tab";
import "../../../components/ha-tooltip";
import "../../../components/sl-tab-group";
import type {
ForecastEvent,
ModernForecastType,
Expand All @@ -30,7 +32,6 @@ import {
weatherSVGStyles,
} from "../../../data/weather";
import type { HomeAssistant } from "../../../types";
import { DragScrollController } from "../../../common/controllers/drag-scroll-controller";

@customElement("more-info-weather")
class MoreInfoWeather extends LitElement {
Expand Down Expand Up @@ -299,18 +300,18 @@ class MoreInfoWeather extends LitElement {
${this.hass.localize("ui.card.weather.forecast")}:
</div>
${supportedForecasts?.length > 1
? html`<sl-tab-group @sl-tab-show=${this._handleForecastTypeChanged}>
? html`<ha-tab-group @wa-tab-show=${this._handleForecastTypeChanged}>
${supportedForecasts.map(
(forecastType) =>
html`<sl-tab
html`<ha-tab-group-tab
slot="nav"
.panel=${forecastType}
.active=${this._forecastType === forecastType}
>
${this.hass!.localize(`ui.card.weather.${forecastType}`)}
</sl-tab>`
</ha-tab-group-tab>`
)}
</sl-tab-group>`
</ha-tab-group>`
: nothing}
<div class="forecast">
${forecast?.length
Expand Down Expand Up @@ -419,11 +420,11 @@ class MoreInfoWeather extends LitElement {
font-size: 1.2em;
}

sl-tab {
ha-tab-group-tab {
flex: 1;
}

sl-tab::part(base) {
ha-tab-group-tab::part(base) {
width: 100%;
justify-content: center;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { fireEvent } from "../../../../../common/dom/fire_event";
import "../../../../../components/ha-code-editor";
import "../../../../../components/ha-dialog";
import "../../../../../components/ha-dialog-header";
import "../../../../../components/ha-tab-group";
import "../../../../../components/ha-tab-group-tab";
import type { ZHADevice, ZHAGroup } from "../../../../../data/zha";
import { fetchBindableDevices, fetchGroups } from "../../../../../data/zha";
import { haStyleDialog } from "../../../../../resources/styles";
Expand Down Expand Up @@ -103,21 +105,21 @@ class DialogZHAManageZigbeeDevice extends LitElement {
>
${this.hass.localize("ui.dialogs.zha_manage_device.heading")}
</span>
<sl-tab-group @sl-tab-show=${this._handleTabChanged}>
<ha-tab-group @wa-tab-show=${this._handleTabChanged}>
${tabs.map(
(tab) => html`
<sl-tab
<ha-tab-group-tab
slot="nav"
.panel=${tab}
.active=${this._currTab === tab}
>
${this.hass.localize(
`ui.dialogs.zha_manage_device.tabs.${tab}`
)}
</sl-tab>
</ha-tab-group-tab>
`
)}
</sl-tab-group>
</ha-tab-group>
</ha-dialog-header>
<div class="content" tabindex="-1" dialogInitialFocus>
${cache(
Expand Down Expand Up @@ -229,10 +231,10 @@ class DialogZHAManageZigbeeDevice extends LitElement {
}
}

sl-tab {
ha-tab-group-tab {
flex: 1;
}
sl-tab::part(base) {
ha-tab-group-tab::part(base) {
width: 100%;
justify-content: center;
}
Expand Down
Loading
Loading