Compare commits

...

24 Commits

Author SHA1 Message Date
Paul Bottein
261cc6598d Add conditional form schema 2023-06-08 16:38:07 +02:00
Paul Bottein
8580d3f9bf Bumped version to 20230608.0 2023-06-08 15:08:18 +02:00
Bram Kragten
6d29b764d3 Integration page fixes (#16822) 2023-06-08 14:11:52 +02:00
Joakim Sørensen
78cff3a921 Use menu_options instead of menu_issues for translation (#16823) 2023-06-08 11:13:12 +00:00
Paul Bottein
e3c312feaf Sort related entities by name (#16821) 2023-06-08 13:01:46 +02:00
Paul Bottein
31e4166248 Make to full integration card header clickable (#16819) 2023-06-08 10:42:26 +02:00
Bram Kragten
0442e3e06e Bumped version to 20230607.0 2023-06-07 12:15:32 +02:00
english-ra
0a8252c16a Fixed issue where the cursor would not change to grabbing when a user… (#16808) 2023-06-07 09:44:54 +00:00
puddly
0a62d711f2 Allow the ZHA serial port path to wrap if it is too long (#16806)
Allow the serial port path to wrap if it is too long
2023-06-07 11:34:17 +02:00
karwosts
d7c3ff3e9d Fix cancel button in automation row alias rename dialog (#16810) 2023-06-07 11:27:50 +02:00
renovate[bot]
2767f866f3 Update dependency @octokit/plugin-retry to v5 (#16803)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-06 19:53:57 +00:00
renovate[bot]
040d5af0aa Update dependency eslint to v8.42.0 (#16789)
* Update dependency eslint to v8.42.0

* Update resize-observer.polyfill.ts

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
2023-06-06 19:44:54 +00:00
renovate[bot]
06c6e312b0 Update workbox monorepo to v7 (major) (#16747)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-06 21:41:04 +02:00
renovate[bot]
841dffe563 Update Yarn to v3.6.0 (#16759)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-06 21:39:10 +02:00
renovate[bot]
a41e0d446f Update vaadinWebComponents monorepo to v24.0.8 (#16768)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-06 21:38:08 +02:00
renovate[bot]
9a0f24cd8b Update dependency @lrnwebcomponents/simple-tooltip to v7.0.2 (#16758)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-06 21:37:20 +02:00
puddly
2e531a9006 Add channel 26 to ZHA channel changing dialog dropdown (#16801)
Add 26 to list of valid ZHA network channels
2023-06-06 19:31:50 +00:00
karwosts
76255f2efb Fix ha-devices-picker when changing or deleting devices (#16739) 2023-06-06 21:28:07 +02:00
karwosts
19fc92419a Add miscellaneous UI elements for translation (#16797) 2023-06-06 16:37:58 +02:00
Bram Kragten
e7c2625cf1 Bumped version to 20230606.0 2023-06-06 16:32:45 +02:00
Bram Kragten
c39fdcda6e Fix 403 on state-badge connect (#16795) 2023-06-06 13:42:45 +02:00
Paul Bottein
fd1381ab3b Update history chart when entity change in the more info dialog (#16794) 2023-06-06 11:14:11 +02:00
Paul Bottein
7b8f4d1e72 Fix label for cover button mode (#16791) 2023-06-06 09:07:53 +02:00
renovate[bot]
b0a278df97 Update dependency @octokit/plugin-retry to v4.1.6 (#16788)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-06 01:25:59 -04:00
30 changed files with 825 additions and 654 deletions

File diff suppressed because one or more lines are too long

View File

@@ -8,4 +8,4 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"
yarnPath: .yarn/releases/yarn-3.5.1.cjs
yarnPath: .yarn/releases/yarn-3.6.0.cjs

View File

@@ -51,7 +51,7 @@
"@lit-labs/context": "0.3.2",
"@lit-labs/motion": "1.0.3",
"@lit-labs/virtualizer": "2.0.2",
"@lrnwebcomponents/simple-tooltip": "7.0.0",
"@lrnwebcomponents/simple-tooltip": "7.0.2",
"@material/chips": "=14.0.0-canary.53b3cad2f.0",
"@material/data-table": "=14.0.0-canary.53b3cad2f.0",
"@material/mwc-button": "0.27.0",
@@ -92,8 +92,8 @@
"@polymer/paper-toast": "3.0.1",
"@polymer/polymer": "3.5.1",
"@thomasloven/round-slider": "0.6.0",
"@vaadin/combo-box": "24.0.7",
"@vaadin/vaadin-themable-mixin": "24.0.7",
"@vaadin/combo-box": "24.0.8",
"@vaadin/vaadin-themable-mixin": "24.0.8",
"@vibrant/color": "3.2.1-alpha.1",
"@vibrant/core": "3.2.1-alpha.1",
"@vibrant/quantizer-mmcq": "3.2.1-alpha.1",
@@ -140,12 +140,12 @@
"vue": "2.7.14",
"vue2-daterange-picker": "0.6.8",
"weekstart": "2.0.0",
"workbox-cacheable-response": "6.6.0",
"workbox-core": "6.6.0",
"workbox-expiration": "6.6.0",
"workbox-precaching": "6.6.0",
"workbox-routing": "6.6.0",
"workbox-strategies": "6.6.0",
"workbox-cacheable-response": "7.0.0",
"workbox-core": "7.0.0",
"workbox-expiration": "7.0.0",
"workbox-precaching": "7.0.0",
"workbox-routing": "7.0.0",
"workbox-strategies": "7.0.0",
"xss": "1.0.14"
},
"devDependencies": {
@@ -156,7 +156,7 @@
"@babel/preset-typescript": "7.21.5",
"@koa/cors": "4.0.0",
"@octokit/auth-oauth-device": "4.0.4",
"@octokit/plugin-retry": "4.1.5",
"@octokit/plugin-retry": "5.0.0",
"@octokit/rest": "19.0.11",
"@open-wc/dev-server-hmr": "0.1.4",
"@rollup/plugin-babel": "6.0.3",
@@ -188,7 +188,7 @@
"babel-plugin-template-html-minifier": "4.1.0",
"chai": "4.3.7",
"del": "7.0.0",
"eslint": "8.41.0",
"eslint": "8.42.0",
"eslint-config-airbnb-base": "15.0.0",
"eslint-config-airbnb-typescript": "17.0.0",
"eslint-config-prettier": "8.8.0",
@@ -243,7 +243,7 @@
"webpack-dev-server": "4.15.0",
"webpack-manifest-plugin": "5.0.0",
"webpackbar": "5.0.2",
"workbox-build": "6.6.0"
"workbox-build": "7.0.0"
},
"_comment": "Polymer 3.2 contained a bug, fixed in https://github.com/Polymer/polymer/pull/5569, add as patch",
"resolutions": {
@@ -255,5 +255,5 @@
"trailingComma": "es5",
"arrowParens": "always"
},
"packageManager": "yarn@3.5.1"
"packageManager": "yarn@3.6.0"
}

View File

@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "home-assistant-frontend"
version = "20230605.0"
version = "20230608.0"
license = {text = "Apache-2.0"}
description = "The Home Assistant frontend"
readme = "README.md"

View File

@@ -111,10 +111,10 @@ class HaDevicesPicker extends LitElement {
event.stopPropagation();
const curValue = (event.currentTarget as any).curValue;
const newValue = event.detail.value;
if (newValue === curValue || newValue !== "") {
if (newValue === curValue) {
return;
}
if (newValue === "") {
if (newValue === undefined) {
this._updateDevices(
this._currentDevices.filter((dev) => dev !== curValue)
);

View File

@@ -38,6 +38,31 @@ export class StateBadge extends LitElement {
@state() private _iconStyle: { [name: string]: string | undefined } = {};
connectedCallback(): void {
super.connectedCallback();
if (
this.hasUpdated &&
this.overrideImage === undefined &&
(this.stateObj?.attributes.entity_picture ||
this.stateObj?.attributes.entity_picture_local)
) {
// Update image on connect, so we get new auth token
this.requestUpdate("stateObj");
}
}
disconnectedCallback() {
super.disconnectedCallback();
if (
this.overrideImage === undefined &&
(this.stateObj?.attributes.entity_picture ||
this.stateObj?.attributes.entity_picture_local)
) {
// Clear image on disconnect so we don't fetch with old auth when we reconnect
this.style.backgroundImage = "";
}
}
private get _stateColor() {
const domain = this.stateObj
? computeStateDomain(this.stateObj)

View File

@@ -0,0 +1,74 @@
import {
css,
CSSResultGroup,
html,
LitElement,
nothing,
PropertyValues,
} from "lit";
import { customElement, property } from "lit/decorators";
import type { HomeAssistant } from "../../types";
import "./ha-form";
import type {
HaFormDataContainer,
HaFormElement,
HaFormConditionalSchema,
HaFormSchema,
} from "./types";
@customElement("ha-form-conditional")
export class HaFormConditional extends LitElement implements HaFormElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@property({ attribute: false }) public data!: HaFormDataContainer;
@property({ attribute: false }) public schema!: HaFormConditionalSchema;
@property({ type: Boolean }) public disabled = false;
@property() public computeLabel?: (
schema: HaFormSchema,
data?: HaFormDataContainer
) => string;
@property() public computeHelper?: (schema: HaFormSchema) => string;
protected updated(changedProps: PropertyValues): void {
if (changedProps.has("schema") || changedProps.has("data")) {
this.toggleAttribute("hidden", !this.schema.condition(this.data));
}
}
protected render() {
if (!this.schema.condition(this.data)) {
return nothing;
}
return html`
<ha-form
.hass=${this.hass}
.data=${this.data}
.schema=${this.schema.schema}
.disabled=${this.disabled}
.computeLabel=${this.computeLabel}
.computeHelper=${this.computeHelper}
></ha-form>
`;
}
static get styles(): CSSResultGroup {
return css`
:host([hidden]) {
display: none !important;
}
:host ha-form {
display: block;
}
`;
}
}
declare global {
interface HTMLElementTagNameMap {
"ha-form-conditional": HaFormConditional;
}
}

View File

@@ -21,6 +21,7 @@ const LOAD_ELEMENTS = {
float: () => import("./ha-form-float"),
grid: () => import("./ha-form-grid"),
expandable: () => import("./ha-form-expandable"),
conditional: () => import("./ha-form-conditional"),
integer: () => import("./ha-form-integer"),
multi_select: () => import("./ha-form-multi_select"),
positive_time_period_dict: () =>
@@ -189,12 +190,13 @@ export class HaForm extends LitElement implements HaFormElement {
static get styles(): CSSResultGroup {
return css`
.root {
display: grid;
row-gap: 24px;
}
.root > * {
display: block;
}
.root > *:not([own-margin]):not(:last-child) {
margin-bottom: 24px;
}
ha-alert[own-margin] {
margin-bottom: 4px;
}

View File

@@ -13,7 +13,8 @@ export type HaFormSchema =
| HaFormTimeSchema
| HaFormSelector
| HaFormGridSchema
| HaFormExpandableSchema;
| HaFormExpandableSchema
| HaFormConditionalSchema;
export interface HaFormBaseSchema {
name: string;
@@ -47,6 +48,13 @@ export interface HaFormExpandableSchema extends HaFormBaseSchema {
schema: readonly HaFormSchema[];
}
export interface HaFormConditionalSchema extends HaFormBaseSchema {
type: "conditional";
name: "";
condition: (data: HaFormDataContainer) => boolean;
schema: readonly HaFormSchema[];
}
export interface HaFormSelector extends HaFormBaseSchema {
type?: never;
selector: Selector;
@@ -99,7 +107,10 @@ export interface HaFormTimeSchema extends HaFormBaseSchema {
export type SchemaUnion<
SchemaArray extends readonly HaFormSchema[],
Schema = SchemaArray[number]
> = Schema extends HaFormGridSchema | HaFormExpandableSchema
> = Schema extends
| HaFormGridSchema
| HaFormExpandableSchema
| HaFormConditionalSchema
? SchemaUnion<Schema["schema"]>
: Schema;

View File

@@ -1,6 +1,10 @@
import "@material/mwc-list/mwc-list";
import { mdiDevices, mdiPaletteSwatch, mdiSofa } from "@mdi/js";
import { HassEntity } from "home-assistant-js-websocket";
import {
mdiAlertCircleOutline,
mdiDevices,
mdiPaletteSwatch,
mdiSofa,
} from "@mdi/js";
import {
css,
CSSResultGroup,
@@ -11,10 +15,11 @@ import {
} from "lit";
import { customElement, property, state } from "lit/decorators";
import { styleMap } from "lit/directives/style-map";
import memoizeOne from "memoize-one";
import { fireEvent } from "../common/dom/fire_event";
import { caseInsensitiveStringCompare } from "../common/string/compare";
import { Blueprints, fetchBlueprints } from "../data/blueprint";
import { ConfigEntry, getConfigEntries } from "../data/config_entries";
import { SceneEntity } from "../data/scene";
import { findRelated, ItemType, RelatedResult } from "../data/search";
import { haStyle } from "../resources/styles";
import { HomeAssistant } from "../types";
@@ -72,13 +77,55 @@ export class HaRelatedItems extends LitElement {
}
}
private _relatedEntities = memoizeOne((entityIds: string[]) =>
this._toEntities(entityIds)
);
private _relatedAutomations = memoizeOne((automationEntityIds: string[]) =>
this._toEntities(automationEntityIds)
);
private _relatedScripts = memoizeOne((scriptEntityIds: string[]) =>
this._toEntities(scriptEntityIds)
);
private _relatedGroups = memoizeOne((groupEntityIds: string[]) =>
this._toEntities(groupEntityIds)
);
private _relatedScenes = memoizeOne((sceneEntityIds: string[]) =>
this._toEntities(sceneEntityIds)
);
private _toEntities = (entityIds: string[]) =>
entityIds
.map((entityId) => this.hass.states[entityId])
.filter((entity) => entity)
.sort((a, b) =>
caseInsensitiveStringCompare(
a.attributes.friendly_name ?? a.entity_id,
b.attributes.friendly_name ?? b.entity_id,
this.hass.language
)
);
protected render() {
if (!this._related) {
return nothing;
}
if (Object.keys(this._related).length === 0) {
return html`
${this.hass.localize("ui.components.related-items.no_related_found")}
<mwc-list>
<ha-list-item hasMeta graphic="icon" noninteractive>
<ha-svg-icon
.path=${mdiAlertCircleOutline}
slot="graphic"
></ha-svg-icon>
${this.hass.localize(
"ui.components.related-items.no_related_found"
)}
</ha-list-item>
</mwc-list>
`;
}
return html`
@@ -92,7 +139,7 @@ export class HaRelatedItems extends LitElement {
(configEntry) => configEntry.entry_id === relatedConfigEntryId
);
if (!entry) {
return "";
return nothing;
}
return html`
<a
@@ -117,7 +164,7 @@ export class HaRelatedItems extends LitElement {
`;
})}</mwc-list
>`
: ""}
: nothing}
${this._related.device
? html`<h3>
${this.hass.localize("ui.components.related-items.device")}
@@ -125,7 +172,7 @@ export class HaRelatedItems extends LitElement {
${this._related.device.map((relatedDeviceId) => {
const device = this.hass.devices[relatedDeviceId];
if (!device) {
return "";
return nothing;
}
return html`
<a
@@ -144,7 +191,7 @@ export class HaRelatedItems extends LitElement {
`;
})} </mwc-list>
`
: ""}
: nothing}
${this._related.area
? html`<h3>
${this.hass.localize("ui.components.related-items.area")}
@@ -153,7 +200,7 @@ export class HaRelatedItems extends LitElement {
>${this._related.area.map((relatedAreaId) => {
const area = this.hass.areas[relatedAreaId];
if (!area) {
return "";
return nothing;
}
return html`
<a
@@ -183,21 +230,16 @@ export class HaRelatedItems extends LitElement {
`;
})}</mwc-list
>`
: ""}
: nothing}
${this._related.entity
? html`
<h3>${this.hass.localize("ui.components.related-items.entity")}</h3>
<mwc-list>
${this._related.entity.map((entityId) => {
const entity: HassEntity | undefined =
this.hass.states[entityId];
if (!entity) {
return "";
}
return html`
${this._relatedEntities(this._related.entity).map(
(entity) => html`
<ha-list-item
@click=${this._openMoreInfo}
.entityId=${entityId}
.entityId=${entity.entity_id}
hasMeta
graphic="icon"
>
@@ -208,24 +250,20 @@ export class HaRelatedItems extends LitElement {
${entity.attributes.friendly_name || entity.entity_id}
<ha-icon-next slot="meta"></ha-icon-next>
</ha-list-item>
`;
})}
`
)}
</mwc-list>
`
: ""}
: nothing}
${this._related.group
? html`
<h3>${this.hass.localize("ui.components.related-items.group")}</h3>
<mwc-list>
${this._related.group.map((groupId) => {
const group: HassEntity | undefined = this.hass.states[groupId];
if (!group) {
return "";
}
return html`
${this._relatedGroups(this._related.group).map(
(group) => html`
<ha-list-item
@click=${this._openMoreInfo}
.entityId=${groupId}
.entityId=${group.entity_id}
hasMeta
graphic="icon"
>
@@ -236,25 +274,20 @@ export class HaRelatedItems extends LitElement {
${group.attributes.friendly_name || group.entity_id}
<ha-icon-next slot="meta"></ha-icon-next>
</ha-list-item>
`;
})}
`
)}
</mwc-list>
`
: ""}
: nothing}
${this._related.scene
? html`
<h3>${this.hass.localize("ui.components.related-items.scene")}</h3>
<mwc-list>
${this._related.scene.map((sceneId) => {
const scene: SceneEntity | undefined =
this.hass.states[sceneId];
if (!scene) {
return "";
}
return html`
${this._relatedScenes(this._related.scene).map(
(scene) => html`
<ha-list-item
@click=${this._openMoreInfo}
.entityId=${sceneId}
.entityId=${scene.entity_id}
hasMeta
graphic="icon"
>
@@ -265,11 +298,11 @@ export class HaRelatedItems extends LitElement {
${scene.attributes.friendly_name || scene.entity_id}
<ha-icon-next slot="meta"></ha-icon-next>
</ha-list-item>
`;
})}
`
)}
</mwc-list>
`
: ""}
: nothing}
${this._related.automation_blueprint
? html`
<h3>
@@ -298,23 +331,18 @@ export class HaRelatedItems extends LitElement {
})}
</mwc-list>
`
: ""}
: nothing}
${this._related.automation
? html`
<h3>
${this.hass.localize("ui.components.related-items.automation")}
</h3>
<mwc-list>
${this._related.automation.map((automationId) => {
const automation: HassEntity | undefined =
this.hass.states[automationId];
if (!automation) {
return "";
}
return html`
${this._relatedAutomations(this._related.automation).map(
(automation) => html`
<ha-list-item
@click=${this._openMoreInfo}
.entityId=${automationId}
.entityId=${automation.entity_id}
hasMeta
graphic="icon"
>
@@ -326,11 +354,11 @@ export class HaRelatedItems extends LitElement {
automation.entity_id}
<ha-icon-next slot="meta"></ha-icon-next>
</ha-list-item>
`;
})}
`
)}
</mwc-list>
`
: ""}
: nothing}
${this._related.script_blueprint
? html`
<h3>
@@ -359,21 +387,16 @@ export class HaRelatedItems extends LitElement {
})}
</mwc-list>
`
: ""}
: nothing}
${this._related.script
? html`
<h3>${this.hass.localize("ui.components.related-items.script")}</h3>
<mwc-list>
${this._related.script.map((scriptId) => {
const script: HassEntity | undefined =
this.hass.states[scriptId];
if (!script) {
return "";
}
return html`
${this._relatedScripts(this._related.script).map(
(script) => html`
<ha-list-item
@click=${this._openMoreInfo}
.entityId=${scriptId}
.entityId=${script.entity_id}
hasMeta
graphic="icon"
>
@@ -384,11 +407,11 @@ export class HaRelatedItems extends LitElement {
${script.attributes.friendly_name || script.entity_id}
<ha-icon-next slot="meta"></ha-icon-next>
</ha-list-item>
`;
})}
`
)}
</mwc-list>
`
: ""}
: nothing}
`;
}

View File

@@ -471,6 +471,11 @@ export class HaMap extends ReactiveElement {
background: #090909;
--map-filter: invert(0.9) hue-rotate(170deg) grayscale(0.7);
}
#map:active {
cursor: grabbing;
cursor: -moz-grabbing;
cursor: -webkit-grabbing;
}
.light {
color: #000000;
}

View File

@@ -195,7 +195,7 @@ class MoreInfoCover extends LitElement {
<ha-icon-button
.label=${this.hass.localize(
`ui.dialogs.more_info_control.cover.switch_mode.${
this._mode || "position"
this._mode === "position" ? "button" : "position"
}`
)}
.path=${this._mode === "position"

View File

@@ -192,7 +192,8 @@ export class MoreInfoHistory extends LitElement {
}
}
}
if (!isComponentLoaded(this.hass, "history") || this._subscribed) {
if (!isComponentLoaded(this.hass, "history")) {
return;
}
if (this._subscribed) {

View File

@@ -524,17 +524,19 @@ export default class HaAutomationActionRow extends LitElement {
defaultValue: this.action.alias,
confirmText: this.hass.localize("ui.common.submit"),
});
const value = { ...this.action };
if (!alias) {
delete value.alias;
} else {
value.alias = alias;
}
fireEvent(this, "value-changed", {
value,
});
if (this._yamlMode) {
this._yamlEditor?.setValue(value);
if (alias !== null) {
const value = { ...this.action };
if (alias === "") {
delete value.alias;
} else {
value.alias = alias;
}
fireEvent(this, "value-changed", {
value,
});
if (this._yamlMode) {
this._yamlEditor?.setValue(value);
}
}
}

View File

@@ -471,16 +471,17 @@ export default class HaAutomationConditionRow extends LitElement {
defaultValue: this.condition.alias,
confirmText: this.hass.localize("ui.common.submit"),
});
const value = { ...this.condition };
if (!alias) {
delete value.alias;
} else {
value.alias = alias;
if (alias !== null) {
const value = { ...this.condition };
if (alias === "") {
delete value.alias;
} else {
value.alias = alias;
}
fireEvent(this, "value-changed", {
value,
});
}
fireEvent(this, "value-changed", {
value,
});
}
public expand() {

View File

@@ -581,17 +581,19 @@ export default class HaAutomationTriggerRow extends LitElement {
confirmText: this.hass.localize("ui.common.submit"),
});
const value = { ...this.trigger };
if (!alias) {
delete value.alias;
} else {
value.alias = alias;
}
fireEvent(this, "value-changed", {
value,
});
if (this._yamlMode) {
this._yamlEditor?.setValue(value);
if (alias !== null) {
const value = { ...this.trigger };
if (alias === "") {
delete value.alias;
} else {
value.alias = alias;
}
fireEvent(this, "value-changed", {
value,
});
if (this._yamlMode) {
this._yamlEditor?.setValue(value);
}
}
}

View File

@@ -224,8 +224,12 @@ export class HaConfigDeviceDashboard extends LitElement {
this.hass,
deviceEntityLookup[device.id]
),
model: device.model || "<unknown>",
manufacturer: device.manufacturer || "<unknown>",
model:
device.model ||
`<${localize("ui.panel.config.devices.data_table.unknown")}>`,
manufacturer:
device.manufacturer ||
`<${localize("ui.panel.config.devices.data_table.unknown")}>`,
area:
device.area_id && areaLookup[device.area_id]
? areaLookup[device.area_id].name

View File

@@ -266,7 +266,7 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
path=${mdiPackageVariant}
></ha-svg-icon>
${this.hass.localize(
"ui.panel.config.integrations.config_entry.provided_by_custom_integration"
"ui.panel.config.integrations.config_entry.custom_integration"
)}</ha-alert
>`
: ""}
@@ -422,7 +422,7 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
.flow=${flow}
@click=${this._continueFlow}
.label=${this.hass.localize(
"config_entry.disabled_by.config_entry"
"ui.panel.config.integrations.configure"
)}
></ha-button>
</ha-list-item>`

View File

@@ -65,28 +65,28 @@ export class HaIntegrationCard extends LitElement {
"debug-logging": Boolean(debugLoggingEnabled),
})}
>
<ha-integration-header
.hass=${this.hass}
.domain=${this.domain}
.localizedDomainName=${this.items[0].localized_domain_name}
.banner=${state !== "loaded"
? this.hass.localize(
`ui.panel.config.integrations.config_entry.state.${state}`
)
: debugLoggingEnabled
? this.hass.localize(
"ui.panel.config.integrations.config_entry.debug_logging_enabled"
)
: undefined}
.manifest=${this.manifest}
>
<a
href=${`/config/integrations/integration/${this.domain}`}
slot="header-button"
<a href=${`/config/integrations/integration/${this.domain}`}>
<ha-integration-header
.hass=${this.hass}
.domain=${this.domain}
.localizedDomainName=${this.items[0].localized_domain_name}
.banner=${state !== "loaded"
? this.hass.localize(
`ui.panel.config.integrations.config_entry.state.${state}`
)
: debugLoggingEnabled
? this.hass.localize(
"ui.panel.config.integrations.config_entry.debug_logging_enabled"
)
: undefined}
.manifest=${this.manifest}
>
<ha-icon-button .path=${mdiCogOutline}></ha-icon-button>
</a>
</ha-integration-header>
<ha-icon-button
slot="header-button"
.path=${mdiCogOutline}
></ha-icon-button>
</ha-integration-header>
</a>
${this._renderSingleEntry()}
</ha-card>
@@ -249,7 +249,7 @@ export class HaIntegrationCard extends LitElement {
}
a {
text-decoration: none;
color: var(--primary-color);
color: var(--primary-text-color);
}
a ha-icon-button {
color: var(--secondary-text-color);

View File

@@ -50,7 +50,7 @@ export class HaIntegrationHeader extends LitElement {
icons.push([
mdiPackageVariant,
this.hass.localize(
"ui.panel.config.integrations.config_entry.provided_by_custom_integration"
"ui.panel.config.integrations.config_entry.custom_integration"
),
]);
}

View File

@@ -84,7 +84,7 @@ export class HaIntegrationListItem extends ListItemBase {
><ha-svg-icon .path=${mdiPackageVariant}></ha-svg-icon
><simple-tooltip animation-delay="0" position="left"
>${this.hass.localize(
"ui.panel.config.integrations.config_entry.provided_by_custom_integration"
"ui.panel.config.integrations.config_entry.custom_integration"
)}</simple-tooltip
></span
>`

View File

@@ -30,6 +30,7 @@ const VALID_CHANNELS = [
23,
24,
25,
26,
];
@customElement("dialog-zha-change-channel")

View File

@@ -375,11 +375,6 @@ class ZHAConfigDashboard extends LitElement {
max-width: 500px;
}
.network-settings > div {
word-break: break-all;
margin-top: 2px;
}
.network-settings ha-settings-row {
padding-left: 0;
padding-right: 0;
@@ -387,6 +382,13 @@ class ZHAConfigDashboard extends LitElement {
--paper-item-body-two-line-min-height: 55px;
}
.network-settings ha-settings-row span[slot="heading"] {
white-space: normal;
word-break: break-all;
text-indent: -1em;
padding-left: 1em;
}
.network-settings ha-settings-row ha-icon-button {
margin-top: -16px;
margin-bottom: -16px;

View File

@@ -217,7 +217,7 @@ export const showRepairsFlowDialog = (
return hass.localize(
`component.${issue.domain}.issues.${
issue.translation_key || issue.issue_id
}.fix_flow.step.${step.step_id}.menu_issues.${option}`,
}.fix_flow.step.${step.step_id}.menu_options.${option}`,
step.description_placeholders
);
},

View File

@@ -71,33 +71,43 @@ class HaPanelDevStatistics extends SubscribeMixin(LitElement) {
private _columns = memoizeOne(
(localize): DataTableColumnContainer => ({
displayName: {
title: "Name",
title: localize(
"ui.panel.developer-tools.tabs.statistics.data_table.name"
),
sortable: true,
filterable: true,
grows: true,
},
statistic_id: {
title: "Statistic id",
title: localize(
"ui.panel.developer-tools.tabs.statistics.data_table.statistic_id"
),
sortable: true,
filterable: true,
hidden: this.narrow,
width: "20%",
},
statistics_unit_of_measurement: {
title: "Statistics unit",
title: localize(
"ui.panel.developer-tools.tabs.statistics.data_table.statistics_unit"
),
sortable: true,
filterable: true,
width: "10%",
forceLTR: true,
},
source: {
title: "Source",
title: localize(
"ui.panel.developer-tools.tabs.statistics.data_table.source"
),
sortable: true,
filterable: true,
width: "10%",
},
issues: {
title: "Issue",
title: localize(
"ui.panel.developer-tools.tabs.statistics.data_table.issue"
),
sortable: true,
filterable: true,
direction: "asc",

View File

@@ -1,6 +1,5 @@
import { html, LitElement, nothing } from "lit";
import { customElement, property, state } from "lit/decorators";
import memoizeOne from "memoize-one";
import {
array,
assert,
@@ -13,7 +12,10 @@ import {
} from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/ha-form/ha-form";
import type { SchemaUnion } from "../../../../components/ha-form/types";
import type {
HaFormSchema,
SchemaUnion,
} from "../../../../components/ha-form/types";
import type { HomeAssistant } from "../../../../types";
import type { GaugeCardConfig } from "../../cards/types";
import type { LovelaceCardEditor } from "../../types";
@@ -41,6 +43,75 @@ const cardConfigStruct = assign(
})
);
const SCHEMA = [
{
name: "entity",
selector: {
entity: {
domain: ["counter", "input_number", "number", "sensor"],
},
},
},
{
name: "",
type: "grid",
schema: [
{ name: "name", selector: { text: {} } },
{ name: "unit", selector: { text: {} } },
],
},
{ name: "theme", selector: { theme: {} } },
{
name: "",
type: "grid",
schema: [
{
name: "min",
default: DEFAULT_MIN,
selector: { number: { mode: "box" } },
},
{
name: "max",
default: DEFAULT_MAX,
selector: { number: { mode: "box" } },
},
],
},
{
name: "",
type: "grid",
schema: [
{ name: "needle", selector: { boolean: {} } },
{ name: "show_severity", selector: { boolean: {} } },
],
},
{
name: "",
type: "conditional",
condition: (data) => !!data.show_severity,
schema: [
{
name: "severity",
type: "grid",
schema: [
{
name: "green",
selector: { number: { mode: "box" } },
},
{
name: "yellow",
selector: { number: { mode: "box" } },
},
{
name: "red",
selector: { number: { mode: "box" } },
},
],
},
],
},
] as const satisfies readonly HaFormSchema[];
@customElement("hui-gauge-card-editor")
export class HuiGaugeCardEditor
extends LitElement
@@ -55,81 +126,11 @@ export class HuiGaugeCardEditor
this._config = config;
}
private _schema = memoizeOne(
(showSeverity: boolean) =>
[
{
name: "entity",
selector: {
entity: {
domain: ["counter", "input_number", "number", "sensor"],
},
},
},
{
name: "",
type: "grid",
schema: [
{ name: "name", selector: { text: {} } },
{ name: "unit", selector: { text: {} } },
],
},
{ name: "theme", selector: { theme: {} } },
{
name: "",
type: "grid",
schema: [
{
name: "min",
default: DEFAULT_MIN,
selector: { number: { mode: "box" } },
},
{
name: "max",
default: DEFAULT_MAX,
selector: { number: { mode: "box" } },
},
],
},
{
name: "",
type: "grid",
schema: [
{ name: "needle", selector: { boolean: {} } },
{ name: "show_severity", selector: { boolean: {} } },
],
},
...(showSeverity
? ([
{
name: "severity",
type: "grid",
schema: [
{
name: "green",
selector: { number: { mode: "box" } },
},
{
name: "yellow",
selector: { number: { mode: "box" } },
},
{
name: "red",
selector: { number: { mode: "box" } },
},
],
},
] as const)
: []),
] as const
);
protected render() {
if (!this.hass || !this._config) {
return nothing;
}
const schema = this._schema(this._config!.severity !== undefined);
const data = {
show_severity: this._config!.severity !== undefined,
...this._config,
@@ -139,7 +140,7 @@ export class HuiGaugeCardEditor
<ha-form
.hass=${this.hass}
.data=${data}
.schema=${schema}
.schema=${SCHEMA}
.computeLabel=${this._computeLabelCallback}
@value-changed=${this._valueChanged}
></ha-form>
@@ -153,7 +154,7 @@ export class HuiGaugeCardEditor
config = {
...config,
severity: {
green: config.green || config.severity?.green || 0,
green: config.green || config.severity?.green,
yellow: config.yellow || config.severity?.yellow || 0,
red: config.red || config.severity?.red || 0,
},
@@ -170,9 +171,7 @@ export class HuiGaugeCardEditor
fireEvent(this, "config-changed", { config });
}
private _computeLabelCallback = (
schema: SchemaUnion<ReturnType<typeof this._schema>>
) => {
private _computeLabelCallback = (schema: SchemaUnion<typeof SCHEMA>) => {
switch (schema.name) {
case "name":
return this.hass!.localize(

View File

@@ -802,7 +802,7 @@ class HUIRoot extends LitElement {
}
if (this._yamlMode) {
showAlertDialog(this, {
text: "The edit UI is not available when in YAML mode.",
text: this.hass!.localize("ui.panel.lovelace.editor.yaml_unsupported"),
});
return;
}

View File

@@ -2,7 +2,6 @@ export const loadPolyfillIfNeeded = async () => {
try {
// eslint-disable-next-line no-new
new ResizeObserver(() => {});
return;
} catch (e) {
window.ResizeObserver = (
await import(

View File

@@ -3062,7 +3062,8 @@
"battery": "Battery",
"disabled_by": "Disabled",
"no_devices": "No devices",
"no_integration": "No integration"
"no_integration": "No integration",
"unknown": "unknown"
},
"delete": "Delete",
"confirm_delete": "Are you sure you want to delete this device?",
@@ -3319,7 +3320,7 @@
"device": "device"
}
},
"provided_by_custom_integration": "Provided by a custom integration",
"custom_integration": "Custom integration",
"depends_on_cloud": "Depends on the cloud",
"yaml_only": "Needs manual configuration",
"disabled_polling": "Automatic polling for updated data disabled",
@@ -4284,6 +4285,7 @@
},
"editor": {
"header": "Edit UI",
"yaml_unsupported": "The edit UI is not available when in YAML mode.",
"menu": {
"open": "Open dashboard menu",
"raw_editor": "Raw configuration editor",
@@ -5269,7 +5271,14 @@
"clear": "Delete all old statistic data for this entity"
}
},
"adjust_sum": "Adjust sum"
"adjust_sum": "Adjust sum",
"data_table": {
"name": "Name",
"statistic_id": "Statistic id",
"statistics_unit": "Statistics unit",
"source": "Source",
"issue": "Issue"
}
},
"yaml": {
"title": "YAML",

422
yarn.lock
View File

@@ -1587,10 +1587,10 @@ __metadata:
languageName: node
linkType: hard
"@eslint/js@npm:8.41.0":
version: 8.41.0
resolution: "@eslint/js@npm:8.41.0"
checksum: af013d70fe8d0429cdf5cd8b5dcc6fc384ed026c1eccb0cfe30f5849b968ab91645111373fd1b83282b38955b1bdfbe667c1a7dbda3b06cae753521223cad775
"@eslint/js@npm:8.42.0":
version: 8.42.0
resolution: "@eslint/js@npm:8.42.0"
checksum: 750558843ac458f7da666122083ee05306fc087ecc1e5b21e7e14e23885775af6c55bcc92283dff1862b7b0d8863ec676c0f18c7faf1219c722fe91a8ece56b6
languageName: node
linkType: hard
@@ -1791,14 +1791,14 @@ __metadata:
languageName: node
linkType: hard
"@humanwhocodes/config-array@npm:^0.11.8":
version: 0.11.8
resolution: "@humanwhocodes/config-array@npm:0.11.8"
"@humanwhocodes/config-array@npm:^0.11.10":
version: 0.11.10
resolution: "@humanwhocodes/config-array@npm:0.11.10"
dependencies:
"@humanwhocodes/object-schema": ^1.2.1
debug: ^4.1.1
minimatch: ^3.0.5
checksum: 0fd6b3c54f1674ce0a224df09b9c2f9846d20b9e54fabae1281ecfc04f2e6ad69bf19e1d6af6a28f88e8aa3990168b6cb9e1ef755868c3256a630605ec2cb1d3
checksum: 1b1302e2403d0e35bc43e66d67a2b36b0ad1119efc704b5faff68c41f791a052355b010fb2d27ef022670f550de24cd6d08d5ecf0821c16326b7dcd0ee5d5d8a
languageName: node
linkType: hard
@@ -2108,12 +2108,12 @@ __metadata:
languageName: node
linkType: hard
"@lrnwebcomponents/simple-tooltip@npm:7.0.0":
version: 7.0.0
resolution: "@lrnwebcomponents/simple-tooltip@npm:7.0.0"
"@lrnwebcomponents/simple-tooltip@npm:7.0.2":
version: 7.0.2
resolution: "@lrnwebcomponents/simple-tooltip@npm:7.0.2"
dependencies:
lit: ^2.7.2
checksum: 2db3b2d07cceecbf4869f24d47800d2f3fadb2d3d671ecd79664019fe3fc4cf757052a3a14ca8f8d2719e459d65c26509df8f6a1719d36cbb6a1ae51a789653b
lit: ^2.7.4
checksum: 2f8642c7b503e6093d01b5fcadea461de062c9380df6454f04a08e5b8f4ef36e0cbd52a9f0842238554f6881802895fb442f21c0a4b6345bebd99b43f18a366c
languageName: node
linkType: hard
@@ -3349,15 +3349,15 @@ __metadata:
languageName: node
linkType: hard
"@octokit/plugin-retry@npm:4.1.5":
version: 4.1.5
resolution: "@octokit/plugin-retry@npm:4.1.5"
"@octokit/plugin-retry@npm:5.0.0":
version: 5.0.0
resolution: "@octokit/plugin-retry@npm:5.0.0"
dependencies:
"@octokit/types": ^9.0.0
bottleneck: ^2.15.3
peerDependencies:
"@octokit/core": ">=3"
checksum: 37272a0dd2fea5025797bb0f6812899c048468b3ef35c0413154230ef0d5c3e323a76bb9eb971ea5ba498f68407711507336852783443397a185a9a75b28b06c
checksum: 3ffea3da379f724f476ba053de3b43c6509684c33cd7a5015b936ea77324cf5801259e20867ab5dccee07af6c23000ccb13c924ce4eef1f4d28e69e4c9056beb
languageName: node
linkType: hard
@@ -4779,110 +4779,110 @@ __metadata:
languageName: node
linkType: hard
"@vaadin/combo-box@npm:24.0.7":
version: 24.0.7
resolution: "@vaadin/combo-box@npm:24.0.7"
"@vaadin/combo-box@npm:24.0.8":
version: 24.0.8
resolution: "@vaadin/combo-box@npm:24.0.8"
dependencies:
"@open-wc/dedupe-mixin": ^1.3.0
"@polymer/polymer": ^3.0.0
"@vaadin/component-base": ~24.0.7
"@vaadin/field-base": ~24.0.7
"@vaadin/input-container": ~24.0.7
"@vaadin/item": ~24.0.7
"@vaadin/lit-renderer": ~24.0.7
"@vaadin/overlay": ~24.0.7
"@vaadin/vaadin-lumo-styles": ~24.0.7
"@vaadin/vaadin-material-styles": ~24.0.7
"@vaadin/vaadin-themable-mixin": ~24.0.7
checksum: cadd2f701c3134da8ad3128427ca55a6158b5e3bc1df78e7a6da63986fafdf1ed9e79f3bbb8a21501da072cac1c69c24a8bfa8e59e3291a7ab8f31afb28a0b14
"@vaadin/component-base": ~24.0.8
"@vaadin/field-base": ~24.0.8
"@vaadin/input-container": ~24.0.8
"@vaadin/item": ~24.0.8
"@vaadin/lit-renderer": ~24.0.8
"@vaadin/overlay": ~24.0.8
"@vaadin/vaadin-lumo-styles": ~24.0.8
"@vaadin/vaadin-material-styles": ~24.0.8
"@vaadin/vaadin-themable-mixin": ~24.0.8
checksum: 14bea4c273a96393e8cd3338f0aee6da417026d5712adc82e4dc7f2964e9ccb3b338f950788bc22ec7e7805ababb98f624d44415d969788c0ea896cdc7480084
languageName: node
linkType: hard
"@vaadin/component-base@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/component-base@npm:24.0.7"
"@vaadin/component-base@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/component-base@npm:24.0.8"
dependencies:
"@open-wc/dedupe-mixin": ^1.3.0
"@polymer/polymer": ^3.0.0
"@vaadin/vaadin-development-mode-detector": ^2.0.0
"@vaadin/vaadin-usage-statistics": ^2.1.0
lit: ^2.0.0
checksum: 8498c05582f6b919be655a76d7580a4fcc528e0a7f2a2a9cfccc2f0736920dfd3f99280c17293efaa2c52edee1642321eb575ff4f5d62c9877afe0d38df6ca2c
checksum: 6406ee2f2bdca164a15480f870611caa91f4b5cfd083de2b838ddf2e6438415d1fce236edebfc8509057ee64f1f1c59712af49e2b41d938a6fa6bc6593b0b00e
languageName: node
linkType: hard
"@vaadin/field-base@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/field-base@npm:24.0.7"
"@vaadin/field-base@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/field-base@npm:24.0.8"
dependencies:
"@open-wc/dedupe-mixin": ^1.3.0
"@polymer/polymer": ^3.0.0
"@vaadin/component-base": ~24.0.7
"@vaadin/component-base": ~24.0.8
lit: ^2.0.0
checksum: c9032cf15cada54fd0563ea3d8adc8970330c51819afeb76c1289da44594f9b0df1a9c5c0c33f25d71f692630b3fba07ce2f146c88f3e324b18bbf1b8c2c15d5
checksum: 7603960e86e705ead7bddaa24252cf733b43b8f08a4b0d4f7c7941f01a2c45fc6a8a50d98ccc49a50a5e1e40b7bbd6327db6762a6fa449a3b31c2934d46f64b0
languageName: node
linkType: hard
"@vaadin/icon@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/icon@npm:24.0.7"
"@vaadin/icon@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/icon@npm:24.0.8"
dependencies:
"@polymer/polymer": ^3.0.0
"@vaadin/component-base": ~24.0.7
"@vaadin/vaadin-lumo-styles": ~24.0.7
"@vaadin/vaadin-themable-mixin": ~24.0.7
"@vaadin/component-base": ~24.0.8
"@vaadin/vaadin-lumo-styles": ~24.0.8
"@vaadin/vaadin-themable-mixin": ~24.0.8
lit: ^2.0.0
checksum: 09ccb17b6476c7a2d2964b49e02fc7b73a8e90fd8040de51092897e401a98fb11d27125a8bd1f2ad08f3180c06d3f5d5d414e71daefbaaac5e4f11e26f13e09d
checksum: bfec0d0048649817dd40f5aec2ad3c94d51557161c5af5f04aebadf56d6546b34a5b29013008207e71deaa4ccf9aad0b5a82beb00541f246cb0707396b72e327
languageName: node
linkType: hard
"@vaadin/input-container@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/input-container@npm:24.0.7"
"@vaadin/input-container@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/input-container@npm:24.0.8"
dependencies:
"@polymer/polymer": ^3.0.0
"@vaadin/component-base": ~24.0.7
"@vaadin/vaadin-lumo-styles": ~24.0.7
"@vaadin/vaadin-material-styles": ~24.0.7
"@vaadin/vaadin-themable-mixin": ~24.0.7
checksum: a86e20890f8e193c09018b2c111e5616191b563ea111cb8199b2a923956865f7e28920cd3824c353f72ad902f05e7f74b43bed30d755c542e39b22b31355a02c
"@vaadin/component-base": ~24.0.8
"@vaadin/vaadin-lumo-styles": ~24.0.8
"@vaadin/vaadin-material-styles": ~24.0.8
"@vaadin/vaadin-themable-mixin": ~24.0.8
checksum: d323b2e5b74c72107a9cb6f833bd20b09b2f419d2fbac45136acd535e50ac78d216779ed56aaf510fc73d28677e850d2ed2588f44189289687625cb51a0617d2
languageName: node
linkType: hard
"@vaadin/item@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/item@npm:24.0.7"
"@vaadin/item@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/item@npm:24.0.8"
dependencies:
"@open-wc/dedupe-mixin": ^1.3.0
"@polymer/polymer": ^3.0.0
"@vaadin/component-base": ~24.0.7
"@vaadin/vaadin-lumo-styles": ~24.0.7
"@vaadin/vaadin-material-styles": ~24.0.7
"@vaadin/vaadin-themable-mixin": ~24.0.7
checksum: 12150979ff1789ab05737bc36ccf4c4b305523031398c7c32709b8e04bf7a42c73f9e833bf91c883f2769408352a109283917731d36cf900f2f7e3be9c822f59
"@vaadin/component-base": ~24.0.8
"@vaadin/vaadin-lumo-styles": ~24.0.8
"@vaadin/vaadin-material-styles": ~24.0.8
"@vaadin/vaadin-themable-mixin": ~24.0.8
checksum: 7d2ebcd7b9a04dd093c22fdf4e5fe8e37f96c5bafd480f4cd69471d12d675d8fd966f3cea2b82f3fb7bd3f77a1d1f05cc07d7799345df0885ad3cea63d579c20
languageName: node
linkType: hard
"@vaadin/lit-renderer@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/lit-renderer@npm:24.0.7"
"@vaadin/lit-renderer@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/lit-renderer@npm:24.0.8"
dependencies:
lit: ^2.0.0
checksum: 12493343c19cf0b5e1495ca7d1d7542cc67caffdf06e13ebbc69f3cdf493b149d49ece1bcc0c23c944978f4ac2c061ab8f7103784fb6177ad4f121b2083aa371
checksum: d624c779e2b4682923322cb952255490b5f58f392bfd24121fffc347f8cb89be9e90de760c24e846bc98e0f9bb76b658ed99a5446dfaa8f81e61270f8adcf06f
languageName: node
linkType: hard
"@vaadin/overlay@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/overlay@npm:24.0.7"
"@vaadin/overlay@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/overlay@npm:24.0.8"
dependencies:
"@open-wc/dedupe-mixin": ^1.3.0
"@polymer/polymer": ^3.0.0
"@vaadin/component-base": ~24.0.7
"@vaadin/vaadin-lumo-styles": ~24.0.7
"@vaadin/vaadin-material-styles": ~24.0.7
"@vaadin/vaadin-themable-mixin": ~24.0.7
checksum: 256c3472b57045211be9c9021d0236443197d4cde0b52c496560e57b68e61f3d221a99ea24c7113a4a29f348984188bf1399e4aec16e3e653f0992a66a879394
"@vaadin/component-base": ~24.0.8
"@vaadin/vaadin-lumo-styles": ~24.0.8
"@vaadin/vaadin-material-styles": ~24.0.8
"@vaadin/vaadin-themable-mixin": ~24.0.8
checksum: f274cfd0cd2bd0f2a75b0f4f494e1d82e0947d7faaa8cb791801c0b2aa90020113ece50fa9736dc59015436ea07c053261efa096ca39ed458c072a7fb98b8110
languageName: node
linkType: hard
@@ -4893,34 +4893,34 @@ __metadata:
languageName: node
linkType: hard
"@vaadin/vaadin-lumo-styles@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/vaadin-lumo-styles@npm:24.0.7"
"@vaadin/vaadin-lumo-styles@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/vaadin-lumo-styles@npm:24.0.8"
dependencies:
"@polymer/polymer": ^3.0.0
"@vaadin/icon": ~24.0.7
"@vaadin/vaadin-themable-mixin": ~24.0.7
checksum: 54b711d9b028a2792884c3f7ff655b12cedfc94a7c615966fb3cf5bc6098d684b54c91e45a86756b9abb3e325b98f38fa77adc003d635979abe3e1e16117f436
"@vaadin/icon": ~24.0.8
"@vaadin/vaadin-themable-mixin": ~24.0.8
checksum: 351516cf34d95d3800f82d067ef8c539d67a8cde4c0becbc5bc2467f805999c3ba66d9ba3e493aff3708cde3684be937ed766828af7ad956c9ec48f6209650f7
languageName: node
linkType: hard
"@vaadin/vaadin-material-styles@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/vaadin-material-styles@npm:24.0.7"
"@vaadin/vaadin-material-styles@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/vaadin-material-styles@npm:24.0.8"
dependencies:
"@polymer/polymer": ^3.0.0
"@vaadin/vaadin-themable-mixin": ~24.0.7
checksum: 74528c370cfc624635d312f088a4d1cc341115d9e60c6433caecbcf40b63b7078e267d056a1d389ee4d841535d784e6e38c1ba356c29837ec0a3fd21b2858051
"@vaadin/vaadin-themable-mixin": ~24.0.8
checksum: 667719adb4efbf9544025a2c59887a359321190e15c5cd902f17c53b7138a23720ddbf0986b2315884163c92e61c1847419844b604651efb0118bc985af47645
languageName: node
linkType: hard
"@vaadin/vaadin-themable-mixin@npm:24.0.7, @vaadin/vaadin-themable-mixin@npm:~24.0.7":
version: 24.0.7
resolution: "@vaadin/vaadin-themable-mixin@npm:24.0.7"
"@vaadin/vaadin-themable-mixin@npm:24.0.8, @vaadin/vaadin-themable-mixin@npm:~24.0.8":
version: 24.0.8
resolution: "@vaadin/vaadin-themable-mixin@npm:24.0.8"
dependencies:
"@open-wc/dedupe-mixin": ^1.3.0
lit: ^2.0.0
checksum: 03bbff9b0caa7d236ecaa39224b42a548054a4032ec83667ac98485441e0277bfc0179e1020a2015dffd601c341742df371fe33870477a07da1e41bc048df408
checksum: 5ffcacd49f2f42e01fee55033375ebcf46e93abcb2c7df02b460b635dfb3d7bef5629e7fdafb0813027a4239d6e11ff1ddca31f9281abf5a5f08db8c5418807d
languageName: node
linkType: hard
@@ -8164,15 +8164,15 @@ __metadata:
languageName: node
linkType: hard
"eslint@npm:8.41.0":
version: 8.41.0
resolution: "eslint@npm:8.41.0"
"eslint@npm:8.42.0":
version: 8.42.0
resolution: "eslint@npm:8.42.0"
dependencies:
"@eslint-community/eslint-utils": ^4.2.0
"@eslint-community/regexpp": ^4.4.0
"@eslint/eslintrc": ^2.0.3
"@eslint/js": 8.41.0
"@humanwhocodes/config-array": ^0.11.8
"@eslint/js": 8.42.0
"@humanwhocodes/config-array": ^0.11.10
"@humanwhocodes/module-importer": ^1.0.1
"@nodelib/fs.walk": ^1.2.8
ajv: ^6.10.0
@@ -8209,7 +8209,7 @@ __metadata:
text-table: ^0.2.0
bin:
eslint: bin/eslint.js
checksum: 09979a6f8451dcc508a7005b6670845c8a518376280b3fd96657a406b8b6ef29d0e480d1ba11b4eb48da93d607e0c55c9b877676fe089d09973ec152354e23b2
checksum: 07105397b5f2ff4064b983b8971e8c379ec04b1dfcc9d918976b3e00377189000161dac991d82ba14f8759e466091b8c71146f602930ca810c290ee3fcb3faf0
languageName: node
linkType: hard
@@ -9639,7 +9639,7 @@ __metadata:
"@lit-labs/context": 0.3.2
"@lit-labs/motion": 1.0.3
"@lit-labs/virtualizer": 2.0.2
"@lrnwebcomponents/simple-tooltip": 7.0.0
"@lrnwebcomponents/simple-tooltip": 7.0.2
"@material/chips": =14.0.0-canary.53b3cad2f.0
"@material/data-table": =14.0.0-canary.53b3cad2f.0
"@material/mwc-button": 0.27.0
@@ -9669,7 +9669,7 @@ __metadata:
"@mdi/js": 7.2.96
"@mdi/svg": 7.2.96
"@octokit/auth-oauth-device": 4.0.4
"@octokit/plugin-retry": 4.1.5
"@octokit/plugin-retry": 5.0.0
"@octokit/rest": 19.0.11
"@open-wc/dev-server-hmr": 0.1.4
"@polymer/app-layout": 3.1.0
@@ -9707,8 +9707,8 @@ __metadata:
"@types/webspeechapi": 0.0.29
"@typescript-eslint/eslint-plugin": 5.59.8
"@typescript-eslint/parser": 5.59.8
"@vaadin/combo-box": 24.0.7
"@vaadin/vaadin-themable-mixin": 24.0.7
"@vaadin/combo-box": 24.0.8
"@vaadin/vaadin-themable-mixin": 24.0.8
"@vibrant/color": 3.2.1-alpha.1
"@vibrant/core": 3.2.1-alpha.1
"@vibrant/quantizer-mmcq": 3.2.1-alpha.1
@@ -9730,7 +9730,7 @@ __metadata:
deep-clone-simple: 1.1.1
deep-freeze: 0.0.1
del: 7.0.0
eslint: 8.41.0
eslint: 8.42.0
eslint-config-airbnb-base: 15.0.0
eslint-config-airbnb-typescript: 17.0.0
eslint-config-prettier: 8.8.0
@@ -9816,13 +9816,13 @@ __metadata:
webpack-manifest-plugin: 5.0.0
webpackbar: 5.0.2
weekstart: 2.0.0
workbox-build: 6.6.0
workbox-cacheable-response: 6.6.0
workbox-core: 6.6.0
workbox-expiration: 6.6.0
workbox-precaching: 6.6.0
workbox-routing: 6.6.0
workbox-strategies: 6.6.0
workbox-build: 7.0.0
workbox-cacheable-response: 7.0.0
workbox-core: 7.0.0
workbox-expiration: 7.0.0
workbox-precaching: 7.0.0
workbox-routing: 7.0.0
workbox-strategies: 7.0.0
xss: 1.0.14
languageName: unknown
linkType: soft
@@ -11474,7 +11474,7 @@ __metadata:
languageName: node
linkType: hard
"lit@npm:2.7.5, lit@npm:^2.0.0, lit@npm:^2.0.0-rc.2, lit@npm:^2.2.1, lit@npm:^2.7.0, lit@npm:^2.7.2, lit@npm:^2.7.4":
"lit@npm:2.7.5, lit@npm:^2.0.0, lit@npm:^2.0.0-rc.2, lit@npm:^2.2.1, lit@npm:^2.7.0, lit@npm:^2.7.4":
version: 2.7.5
resolution: "lit@npm:2.7.5"
dependencies:
@@ -16455,28 +16455,28 @@ __metadata:
languageName: node
linkType: hard
"workbox-background-sync@npm:6.6.0":
version: 6.6.0
resolution: "workbox-background-sync@npm:6.6.0"
"workbox-background-sync@npm:7.0.0":
version: 7.0.0
resolution: "workbox-background-sync@npm:7.0.0"
dependencies:
idb: ^7.0.1
workbox-core: 6.6.0
checksum: ac2990110643aef62ca0be54e962296de7b09593b0262bd09fe4893978a42fa1f256c6d989ed472a31ae500b2255b80c6678530a6024eafb0b2f3a93a3c94a5f
workbox-core: 7.0.0
checksum: 79b64416563761d36b91342d6ce2618d1c984bebcd511ce56b80098127e42c676d4831dd566a0a80a6bb52a618ad815b277ce6b310e4a5c5043e7394829d30c6
languageName: node
linkType: hard
"workbox-broadcast-update@npm:6.6.0":
version: 6.6.0
resolution: "workbox-broadcast-update@npm:6.6.0"
"workbox-broadcast-update@npm:7.0.0":
version: 7.0.0
resolution: "workbox-broadcast-update@npm:7.0.0"
dependencies:
workbox-core: 6.6.0
checksum: 46a74b3b703244eb363e1731a2d6fe1fb2cd9b82d454733dfc6941fd35b76a852685f56db92408383ac50d564c2fd4282f0c6c4db60ba9beb5f311ea8f944dc7
workbox-core: 7.0.0
checksum: eee5c09fd78b3439348c7c92013f63700f14004d46161f19b0daf0d01303c6785f0953b746258cfb2627932108631370c8fa52ec5b526177cd528ae02530370e
languageName: node
linkType: hard
"workbox-build@npm:6.6.0":
version: 6.6.0
resolution: "workbox-build@npm:6.6.0"
"workbox-build@npm:7.0.0":
version: 7.0.0
resolution: "workbox-build@npm:7.0.0"
dependencies:
"@apideck/better-ajv-errors": ^0.3.1
"@babel/core": ^7.11.1
@@ -16500,148 +16500,148 @@ __metadata:
strip-comments: ^2.0.1
tempy: ^0.6.0
upath: ^1.2.0
workbox-background-sync: 6.6.0
workbox-broadcast-update: 6.6.0
workbox-cacheable-response: 6.6.0
workbox-core: 6.6.0
workbox-expiration: 6.6.0
workbox-google-analytics: 6.6.0
workbox-navigation-preload: 6.6.0
workbox-precaching: 6.6.0
workbox-range-requests: 6.6.0
workbox-recipes: 6.6.0
workbox-routing: 6.6.0
workbox-strategies: 6.6.0
workbox-streams: 6.6.0
workbox-sw: 6.6.0
workbox-window: 6.6.0
checksum: cd1a6c413659c2fd66f4438012f65b211cc748bb594c79bf0d9a60de0cefff3f8a4a23ab06f32c62064c37397ffffc1b77d3328658b7556ea7ff88e57f6ee4fd
workbox-background-sync: 7.0.0
workbox-broadcast-update: 7.0.0
workbox-cacheable-response: 7.0.0
workbox-core: 7.0.0
workbox-expiration: 7.0.0
workbox-google-analytics: 7.0.0
workbox-navigation-preload: 7.0.0
workbox-precaching: 7.0.0
workbox-range-requests: 7.0.0
workbox-recipes: 7.0.0
workbox-routing: 7.0.0
workbox-strategies: 7.0.0
workbox-streams: 7.0.0
workbox-sw: 7.0.0
workbox-window: 7.0.0
checksum: f230463833a8b6d1beadbfb4db5526d1b6b047ffa23abcd2afdc306510e1f3f942a74d1c59c76ee371a326bb2fe616ced05d0c53aefee5902c68a3f31faa27dc
languageName: node
linkType: hard
"workbox-cacheable-response@npm:6.6.0":
version: 6.6.0
resolution: "workbox-cacheable-response@npm:6.6.0"
"workbox-cacheable-response@npm:7.0.0":
version: 7.0.0
resolution: "workbox-cacheable-response@npm:7.0.0"
dependencies:
workbox-core: 6.6.0
checksum: 9e4e00c53679fd2020874cbdf54bb17560fd12353120ea08ca6213e5a11bf08139072616d79f5f8ab80d09f00efde94b003fe9bf5b6e23815be30d7aca760835
workbox-core: 7.0.0
checksum: c9d834b25564ee01dd4df17b1f27e61160a3b610f40c0e297a9973712878fe617e168e3b1541c7b70b0de3828cb4b62de3088424b4a2872ed5a106e7e777772f
languageName: node
linkType: hard
"workbox-core@npm:6.6.0":
version: 6.6.0
resolution: "workbox-core@npm:6.6.0"
checksum: 7d773a866b73a733780c52b895f9cf7bec926c9187395c307174deefba9a0a2fcd1edce0d1ca12b8a6c95ca9cf7755ccc1885b03bc82ebcfc4843e015bd84d7b
"workbox-core@npm:7.0.0":
version: 7.0.0
resolution: "workbox-core@npm:7.0.0"
checksum: ca64872f9ce59ee1f3f32a5ecbde36377081a221930c6f925e2c0d7fe39d3fdc309166c430d56d972eba4f7c40d2e7e91a0020699a0745790fbef578ff8f34f6
languageName: node
linkType: hard
"workbox-expiration@npm:6.6.0":
version: 6.6.0
resolution: "workbox-expiration@npm:6.6.0"
"workbox-expiration@npm:7.0.0":
version: 7.0.0
resolution: "workbox-expiration@npm:7.0.0"
dependencies:
idb: ^7.0.1
workbox-core: 6.6.0
checksum: b100b9c512754bc3e1a9c7c7d20d215d72c601a7b956333ca7753704a771a9f00e1732e9b774da4549bae390dd3cd138c6392f6a25fd67f7dcd84f89b0df7e9c
workbox-core: 7.0.0
checksum: 3d7cce573111bfb32f35d97ea95d5016ac42bdc0f3ab5096e5c0fd799dd466ccc3cbfdbdeab4e7158923ae3e406f2002add01e5c9369f9c3e2623e41bc04b324
languageName: node
linkType: hard
"workbox-google-analytics@npm:6.6.0":
version: 6.6.0
resolution: "workbox-google-analytics@npm:6.6.0"
"workbox-google-analytics@npm:7.0.0":
version: 7.0.0
resolution: "workbox-google-analytics@npm:7.0.0"
dependencies:
workbox-background-sync: 6.6.0
workbox-core: 6.6.0
workbox-routing: 6.6.0
workbox-strategies: 6.6.0
checksum: 7b287da7517ae416aae8ea1494830bb517a29ab9786b2a8b8bf98971377b83715070e784399065ab101d4bba381ab0abbb8bd0962b3010bc01f54fdafb0b6702
workbox-background-sync: 7.0.0
workbox-core: 7.0.0
workbox-routing: 7.0.0
workbox-strategies: 7.0.0
checksum: defb12c3f4cf924aef8c647724c32d1100042447aed20128702815eba0f6d55ba6dde6557036dc13d68c0ab0570188757136bd453823fe25f2fa541cb18b8e0c
languageName: node
linkType: hard
"workbox-navigation-preload@npm:6.6.0":
version: 6.6.0
resolution: "workbox-navigation-preload@npm:6.6.0"
"workbox-navigation-preload@npm:7.0.0":
version: 7.0.0
resolution: "workbox-navigation-preload@npm:7.0.0"
dependencies:
workbox-core: 6.6.0
checksum: d254465648e45ec6b6d7c3471354336501901d3872622ea9ba1aa1f935d4d52941d0f92fa6c06e7363e10dbac4874d5d4bff7d99cbe094925046f562a37e88cc
workbox-core: 7.0.0
checksum: 329018003ce44812d37f1e168960abe34c7ac4b8cd1c8f86da172e73919fb51ba94a63db3b4024614066bf1ea38e1a89839eafd46eed9a13015dd4cf6fcd056c
languageName: node
linkType: hard
"workbox-precaching@npm:6.6.0":
version: 6.6.0
resolution: "workbox-precaching@npm:6.6.0"
"workbox-precaching@npm:7.0.0":
version: 7.0.0
resolution: "workbox-precaching@npm:7.0.0"
dependencies:
workbox-core: 6.6.0
workbox-routing: 6.6.0
workbox-strategies: 6.6.0
checksum: 62e5ee2e40568a56d4131bba461623579f56b9bd273aa7d2805e43151057f413c2ef32fb3d007aff0a5ac3ad84d5feae87408284249a487a5d51c3775c46c816
workbox-core: 7.0.0
workbox-routing: 7.0.0
workbox-strategies: 7.0.0
checksum: 311b1c4a162e976e0a41e36e6a96eb64fea381eda538d8a9ae962d4f39c5ba420617753aac44e19105de19aef5242c9c68a09226d144ca3cf62738fc9f491f5d
languageName: node
linkType: hard
"workbox-range-requests@npm:6.6.0":
version: 6.6.0
resolution: "workbox-range-requests@npm:6.6.0"
"workbox-range-requests@npm:7.0.0":
version: 7.0.0
resolution: "workbox-range-requests@npm:7.0.0"
dependencies:
workbox-core: 6.6.0
checksum: a55d1a364b2155548695dc8f6f85baade196d7d1bec980bcdbda80236803b14167995a81b944cffe932a94c4d556466773121afe3661a6f0a13403cbe96d8d9f
workbox-core: 7.0.0
checksum: 04f6d7921a8a4a024b0bf0049a592ebedcdd285a52d1b8714e0a53efc936339dac39c3a5b5b6db9a3356b9f3ed1876024403260ec426cf9dc65e3b7ba5464914
languageName: node
linkType: hard
"workbox-recipes@npm:6.6.0":
version: 6.6.0
resolution: "workbox-recipes@npm:6.6.0"
"workbox-recipes@npm:7.0.0":
version: 7.0.0
resolution: "workbox-recipes@npm:7.0.0"
dependencies:
workbox-cacheable-response: 6.6.0
workbox-core: 6.6.0
workbox-expiration: 6.6.0
workbox-precaching: 6.6.0
workbox-routing: 6.6.0
workbox-strategies: 6.6.0
checksum: f2ecf38502260703e4b0dcef67e3ac26d615f2c90f6d863ca7308db52454f67934ba842fd577ee807d9f510f1a277fd66af7caf57d39e50a181d05dbb3e550a7
workbox-cacheable-response: 7.0.0
workbox-core: 7.0.0
workbox-expiration: 7.0.0
workbox-precaching: 7.0.0
workbox-routing: 7.0.0
workbox-strategies: 7.0.0
checksum: 253d50a315855917ca6683d6a3e910ac3c6f8915a8bcc80a7f15f277db7f48dc288c0ec2d9cdc64390bdd50446e66910246f384ce19f46688db97c715b323123
languageName: node
linkType: hard
"workbox-routing@npm:6.6.0":
version: 6.6.0
resolution: "workbox-routing@npm:6.6.0"
"workbox-routing@npm:7.0.0":
version: 7.0.0
resolution: "workbox-routing@npm:7.0.0"
dependencies:
workbox-core: 6.6.0
checksum: 7a70b836196eb67332d33a94c0b57859781fe869e81a9c95452d3f4f368d3199f8c3da632dbc10425fde902a1930cf8cfd83f6434ad2b586904ce68cd9f35c6d
workbox-core: 7.0.0
checksum: 9ea5b00fde5d90819e29ebf6d4aec3b84abec97854eb333c71b83548f1ba12b7f92d764a159f23cfa9e8164940e7b7136536fc0477784560cf2108d8dfe7f83b
languageName: node
linkType: hard
"workbox-strategies@npm:6.6.0":
version: 6.6.0
resolution: "workbox-strategies@npm:6.6.0"
"workbox-strategies@npm:7.0.0":
version: 7.0.0
resolution: "workbox-strategies@npm:7.0.0"
dependencies:
workbox-core: 6.6.0
checksum: 236232a77fb4a4847d1e9ae6c7c9bd9c6b9449209baab9d8d90f78240326a9c0f69551b408ebf9e76610d86da15563bf27439b7e885a7bac01dfd08047c0dd7b
workbox-core: 7.0.0
checksum: 4f20604e762fb43b32a16d60e014d14c0933300083c109a95251c06c65c25c9d78ab16bbe638b64435911d4a01ae5f7c28c7e78d611a122ee6453be2c42a87dc
languageName: node
linkType: hard
"workbox-streams@npm:6.6.0":
version: 6.6.0
resolution: "workbox-streams@npm:6.6.0"
"workbox-streams@npm:7.0.0":
version: 7.0.0
resolution: "workbox-streams@npm:7.0.0"
dependencies:
workbox-core: 6.6.0
workbox-routing: 6.6.0
checksum: 64a295e48e44e3fa4743b5baec646fc9117428e7592033475e38c461e45c294910712f322c32417d354b22999902ef8035119e070e61e159e531d878d991fc33
workbox-core: 7.0.0
workbox-routing: 7.0.0
checksum: e2975eb773bcf765c9cc8166936a9a2aaec2609fcddc178cbf6b2da54a113c4e2e62cbd257104861ea21b80c2a051936d62249f06d2414072405147f5181c0ef
languageName: node
linkType: hard
"workbox-sw@npm:6.6.0":
version: 6.6.0
resolution: "workbox-sw@npm:6.6.0"
checksum: bb5f8695de02f89c7955465dcbd568299915565008dc8a068c5d19c1347f75d417640b9f61590e16b169b703e77d02f8b1e10c4b241f74f43cfe76175bfa5fed
"workbox-sw@npm:7.0.0":
version: 7.0.0
resolution: "workbox-sw@npm:7.0.0"
checksum: f2673bc3f73ef5a54349eb7c4c63aefb7dfe6b6492947851ffa44079efdbfff07a26e68a0f7ea3801e03ab3fdc29acdc36cd315b9fbdb8a60963c7cb95f2de43
languageName: node
linkType: hard
"workbox-window@npm:6.6.0":
version: 6.6.0
resolution: "workbox-window@npm:6.6.0"
"workbox-window@npm:7.0.0":
version: 7.0.0
resolution: "workbox-window@npm:7.0.0"
dependencies:
"@types/trusted-types": ^2.0.2
workbox-core: 6.6.0
checksum: bb1dd031c1525317ceffbdc3e4f502a70dce461fd6355146e1050c1090f3c640bf65edf42a5d2a3b91b4d0c313df32c1405d88bf701d44c0e3ebc492cd77fe14
workbox-core: 7.0.0
checksum: 486ceaf2c04953cd73fe04760929a9c42818b57fffbbaca3fc9065cfd6bf3f5a571d2ea78db177e548a98041c8752faa360dda8eaf0f10b8638ef3eb1b696b13
languageName: node
linkType: hard