mirror of
https://github.com/home-assistant/frontend.git
synced 2025-10-01 07:49:39 +00:00
Compare commits
17 Commits
20230125.0
...
restructur
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d60639f99d | ||
![]() |
693b621dd5 | ||
![]() |
d96bb9cf20 | ||
![]() |
ec2d498334 | ||
![]() |
c9b1b92e70 | ||
![]() |
a4a2e1b99e | ||
![]() |
b31af60397 | ||
![]() |
01facc2254 | ||
![]() |
8b4587785c | ||
![]() |
89623aa7ec | ||
![]() |
afb9e826ef | ||
![]() |
ac075e44cc | ||
![]() |
fcf6bfc457 | ||
![]() |
3951646c7f | ||
![]() |
be6aabe23e | ||
![]() |
25f7a0602a | ||
![]() |
34ed446cd2 |
@@ -1,13 +1,20 @@
|
|||||||
{
|
{
|
||||||
"name": "Home Assistant Frontend",
|
"name": "Home Assistant Frontend",
|
||||||
"build": {
|
"image": "mcr.microsoft.com/devcontainers/python:0-3.10",
|
||||||
"dockerfile": "Dockerfile",
|
|
||||||
"context": ".."
|
|
||||||
},
|
|
||||||
"appPort": "8124:8123",
|
"appPort": "8124:8123",
|
||||||
"postCreateCommand": "script/bootstrap",
|
"postCreateCommand": "script/bootstrap",
|
||||||
"containerEnv": {
|
"containerEnv": {
|
||||||
"WORKSPACE_DIRECTORY": "${containerWorkspaceFolder}"
|
"WORKSPACE_DIRECTORY": "${containerWorkspaceFolder}",
|
||||||
|
"DEVCONTAINER": "true"
|
||||||
|
},
|
||||||
|
"remoteUser": "vscode",
|
||||||
|
"remoteEnv": {
|
||||||
|
"PATH": "${containerEnv:PATH}:${containerWorkspaceFolder}/node_modules/.bin:/home/vscode/.local/bin"
|
||||||
|
},
|
||||||
|
"features": {
|
||||||
|
"ghcr.io/devcontainers/features/node:1": {
|
||||||
|
"version": "16"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"customizations": {
|
"customizations": {
|
||||||
"vscode": {
|
"vscode": {
|
@@ -1,13 +0,0 @@
|
|||||||
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.148.1/containers/python-3/.devcontainer/base.Dockerfile
|
|
||||||
FROM mcr.microsoft.com/vscode/devcontainers/python:0-3.10
|
|
||||||
|
|
||||||
ENV \
|
|
||||||
DEBIAN_FRONTEND=noninteractive \
|
|
||||||
DEVCONTAINER=true \
|
|
||||||
PATH=$PATH:./node_modules/.bin
|
|
||||||
|
|
||||||
# Install nvm
|
|
||||||
COPY .nvmrc /tmp/.nvmrc
|
|
||||||
RUN \
|
|
||||||
su vscode -c \
|
|
||||||
"source /usr/local/share/nvm/nvm.sh && nvm install $(cat /tmp/.nvmrc) 2>&1"
|
|
24
package.json
24
package.json
@@ -27,7 +27,7 @@
|
|||||||
"@braintree/sanitize-url": "^6.0.0",
|
"@braintree/sanitize-url": "^6.0.0",
|
||||||
"@codemirror/autocomplete": "^6.4.0",
|
"@codemirror/autocomplete": "^6.4.0",
|
||||||
"@codemirror/commands": "^6.1.3",
|
"@codemirror/commands": "^6.1.3",
|
||||||
"@codemirror/language": "^6.3.2",
|
"@codemirror/language": "^6.4.0",
|
||||||
"@codemirror/legacy-modes": "^6.3.1",
|
"@codemirror/legacy-modes": "^6.3.1",
|
||||||
"@codemirror/search": "^6.2.3",
|
"@codemirror/search": "^6.2.3",
|
||||||
"@codemirror/state": "^6.2.0",
|
"@codemirror/state": "^6.2.0",
|
||||||
@@ -105,13 +105,13 @@
|
|||||||
"date-fns-tz": "^1.3.7",
|
"date-fns-tz": "^1.3.7",
|
||||||
"deep-clone-simple": "^1.1.1",
|
"deep-clone-simple": "^1.1.1",
|
||||||
"deep-freeze": "^0.0.1",
|
"deep-freeze": "^0.0.1",
|
||||||
"fuse.js": "^6.0.0",
|
"fuse.js": "^6.6.2",
|
||||||
"google-timezones-json": "^1.0.2",
|
"google-timezones-json": "^1.0.2",
|
||||||
"hammerjs": "^2.0.8",
|
"hammerjs": "^2.0.8",
|
||||||
"hls.js": "^1.3.1",
|
"hls.js": "^1.3.1",
|
||||||
"home-assistant-js-websocket": "^8.0.1",
|
"home-assistant-js-websocket": "^8.0.1",
|
||||||
"idb-keyval": "^5.1.3",
|
"idb-keyval": "^5.1.3",
|
||||||
"intl-messageformat": "^9.9.1",
|
"intl-messageformat": "^10.2.5",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
"leaflet": "^1.7.1",
|
"leaflet": "^1.7.1",
|
||||||
"leaflet-draw": "^1.0.4",
|
"leaflet-draw": "^1.0.4",
|
||||||
@@ -122,13 +122,13 @@
|
|||||||
"proxy-polyfill": "^0.3.2",
|
"proxy-polyfill": "^0.3.2",
|
||||||
"punycode": "^2.3.0",
|
"punycode": "^2.3.0",
|
||||||
"qr-scanner": "^1.3.0",
|
"qr-scanner": "^1.3.0",
|
||||||
"qrcode": "^1.4.4",
|
"qrcode": "^1.5.1",
|
||||||
"regenerator-runtime": "^0.13.11",
|
"regenerator-runtime": "^0.13.11",
|
||||||
"resize-observer-polyfill": "^1.5.1",
|
"resize-observer-polyfill": "^1.5.1",
|
||||||
"roboto-fontface": "^0.10.0",
|
"roboto-fontface": "^0.10.0",
|
||||||
"rrule": "^2.7.1",
|
"rrule": "^2.7.1",
|
||||||
"sortablejs": "^1.14.0",
|
"sortablejs": "^1.14.0",
|
||||||
"superstruct": "^0.15.2",
|
"superstruct": "^1.0.3",
|
||||||
"tinykeys": "^1.1.3",
|
"tinykeys": "^1.1.3",
|
||||||
"tsparticles": "^1.34.0",
|
"tsparticles": "^1.34.0",
|
||||||
"unfetch": "^4.1.0",
|
"unfetch": "^4.1.0",
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
"@babel/preset-typescript": "^7.18.6",
|
"@babel/preset-typescript": "^7.18.6",
|
||||||
"@koa/cors": "^3.1.0",
|
"@koa/cors": "^3.1.0",
|
||||||
"@octokit/auth-oauth-device": "^4.0.2",
|
"@octokit/auth-oauth-device": "^4.0.2",
|
||||||
"@octokit/rest": "^19.0.5",
|
"@octokit/rest": "^19.0.7",
|
||||||
"@open-wc/dev-server-hmr": "^0.0.2",
|
"@open-wc/dev-server-hmr": "^0.0.2",
|
||||||
"@rollup/plugin-babel": "^5.2.1",
|
"@rollup/plugin-babel": "^5.2.1",
|
||||||
"@rollup/plugin-commonjs": "^11.1.0",
|
"@rollup/plugin-commonjs": "^11.1.0",
|
||||||
@@ -176,12 +176,12 @@
|
|||||||
"@types/leaflet-draw": "^1",
|
"@types/leaflet-draw": "^1",
|
||||||
"@types/marked": "^4",
|
"@types/marked": "^4",
|
||||||
"@types/mocha": "^8",
|
"@types/mocha": "^8",
|
||||||
"@types/qrcode": "^1.4.2",
|
"@types/qrcode": "^1.5.0",
|
||||||
"@types/sortablejs": "^1",
|
"@types/sortablejs": "^1",
|
||||||
"@types/tar": "^6",
|
"@types/tar": "^6",
|
||||||
"@types/webspeechapi": "^0.0.29",
|
"@types/webspeechapi": "^0.0.29",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.46.1",
|
"@typescript-eslint/eslint-plugin": "^5.46.1",
|
||||||
"@typescript-eslint/parser": "^5.44.0",
|
"@typescript-eslint/parser": "^5.49.0",
|
||||||
"@web/dev-server": "^0.0.24",
|
"@web/dev-server": "^0.0.24",
|
||||||
"@web/dev-server-rollup": "^0.2.11",
|
"@web/dev-server-rollup": "^0.2.11",
|
||||||
"babel-loader": "^9.1.0",
|
"babel-loader": "^9.1.0",
|
||||||
@@ -190,7 +190,7 @@
|
|||||||
"eslint": "^7.32.0",
|
"eslint": "^7.32.0",
|
||||||
"eslint-config-airbnb-base": "^14.2.1",
|
"eslint-config-airbnb-base": "^14.2.1",
|
||||||
"eslint-config-airbnb-typescript": "^14.0.0",
|
"eslint-config-airbnb-typescript": "^14.0.0",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^8.6.0",
|
||||||
"eslint-import-resolver-webpack": "^0.13.1",
|
"eslint-import-resolver-webpack": "^0.13.1",
|
||||||
"eslint-plugin-disable": "^2.0.1",
|
"eslint-plugin-disable": "^2.0.1",
|
||||||
"eslint-plugin-import": "^2.24.2",
|
"eslint-plugin-import": "^2.24.2",
|
||||||
@@ -203,7 +203,7 @@
|
|||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
"gulp-flatmap": "^1.0.2",
|
"gulp-flatmap": "^1.0.2",
|
||||||
"gulp-json-transform": "^0.4.6",
|
"gulp-json-transform": "^0.4.6",
|
||||||
"gulp-merge-json": "^1.3.1",
|
"gulp-merge-json": "^2.1.2",
|
||||||
"gulp-rename": "^2.0.0",
|
"gulp-rename": "^2.0.0",
|
||||||
"gulp-zopfli-green": "^3.0.1",
|
"gulp-zopfli-green": "^3.0.1",
|
||||||
"html-minifier": "^4.0.0",
|
"html-minifier": "^4.0.0",
|
||||||
@@ -237,10 +237,10 @@
|
|||||||
"vinyl-buffer": "^1.0.1",
|
"vinyl-buffer": "^1.0.1",
|
||||||
"vinyl-source-stream": "^2.0.0",
|
"vinyl-source-stream": "^2.0.0",
|
||||||
"webpack": "^5.55.1",
|
"webpack": "^5.55.1",
|
||||||
"webpack-cli": "^4.8.0",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.11.1",
|
"webpack-dev-server": "^4.11.1",
|
||||||
"webpack-manifest-plugin": "^4.0.2",
|
"webpack-manifest-plugin": "^4.0.2",
|
||||||
"webpackbar": "^5.0.0-3",
|
"webpackbar": "^5.0.2",
|
||||||
"workbox-build": "^6.5.4"
|
"workbox-build": "^6.5.4"
|
||||||
},
|
},
|
||||||
"_comment": "Polymer 3.2 contained a bug, fixed in https://github.com/Polymer/polymer/pull/5569, add as patch",
|
"_comment": "Polymer 3.2 contained a bug, fixed in https://github.com/Polymer/polymer/pull/5569, add as patch",
|
||||||
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "home-assistant-frontend"
|
name = "home-assistant-frontend"
|
||||||
version = "20230125.0"
|
version = "20230128.0"
|
||||||
license = {text = "Apache-2.0"}
|
license = {text = "Apache-2.0"}
|
||||||
description = "The Home Assistant frontend"
|
description = "The Home Assistant frontend"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
@@ -133,6 +133,7 @@ class StatisticsChart extends LitElement {
|
|||||||
|
|
||||||
return html`
|
return html`
|
||||||
<ha-chart-base
|
<ha-chart-base
|
||||||
|
.hass=${this.hass}
|
||||||
.data=${this._chartData}
|
.data=${this._chartData}
|
||||||
.options=${this._chartOptions}
|
.options=${this._chartOptions}
|
||||||
.chartType=${this.chartType}
|
.chartType=${this.chartType}
|
||||||
|
@@ -1,6 +1,11 @@
|
|||||||
/* eslint-disable lit/prefer-static-styles */
|
/* eslint-disable lit/prefer-static-styles */
|
||||||
import "@material/mwc-button/mwc-button";
|
import "@material/mwc-button/mwc-button";
|
||||||
import { mdiClose, mdiMicrophone, mdiSend } from "@mdi/js";
|
import {
|
||||||
|
mdiClose,
|
||||||
|
mdiHelpCircleOutline,
|
||||||
|
mdiMicrophone,
|
||||||
|
mdiSend,
|
||||||
|
} from "@mdi/js";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
CSSResultGroup,
|
CSSResultGroup,
|
||||||
@@ -27,6 +32,7 @@ import {
|
|||||||
} from "../../data/conversation";
|
} from "../../data/conversation";
|
||||||
import { haStyleDialog } from "../../resources/styles";
|
import { haStyleDialog } from "../../resources/styles";
|
||||||
import type { HomeAssistant } from "../../types";
|
import type { HomeAssistant } from "../../types";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
|
|
||||||
interface Message {
|
interface Message {
|
||||||
who: string;
|
who: string;
|
||||||
@@ -102,6 +108,17 @@ export class HaVoiceCommandDialog extends LitElement {
|
|||||||
.label=${this.hass.localize("ui.common.close")}
|
.label=${this.hass.localize("ui.common.close")}
|
||||||
.path=${mdiClose}
|
.path=${mdiClose}
|
||||||
></ha-icon-button>
|
></ha-icon-button>
|
||||||
|
<a
|
||||||
|
href=${documentationUrl(this.hass, "/docs/assist/")}
|
||||||
|
slot="actionItems"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferer"
|
||||||
|
>
|
||||||
|
<ha-icon-button
|
||||||
|
.label=${this.hass.localize("ui.common.help")}
|
||||||
|
.path=${mdiHelpCircleOutline}
|
||||||
|
></ha-icon-button>
|
||||||
|
</a>
|
||||||
</ha-header-bar>
|
</ha-header-bar>
|
||||||
</div>
|
</div>
|
||||||
<div class="messages">
|
<div class="messages">
|
||||||
@@ -400,6 +417,9 @@ export class HaVoiceCommandDialog extends LitElement {
|
|||||||
--mdc-theme-on-primary: var(--primary-text-color);
|
--mdc-theme-on-primary: var(--primary-text-color);
|
||||||
--mdc-theme-primary: var(--mdc-theme-surface);
|
--mdc-theme-primary: var(--mdc-theme-surface);
|
||||||
}
|
}
|
||||||
|
ha-header-bar a {
|
||||||
|
color: var(--primary-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
ha-textfield {
|
ha-textfield {
|
||||||
display: block;
|
display: block;
|
||||||
@@ -487,6 +507,11 @@ export class HaVoiceCommandDialog extends LitElement {
|
|||||||
color: var(--text-primary-color);
|
color: var(--text-primary-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.input {
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.interimTranscript {
|
.interimTranscript {
|
||||||
color: var(--secondary-text-color);
|
color: var(--secondary-text-color);
|
||||||
}
|
}
|
||||||
|
@@ -410,6 +410,7 @@ class HaConfigHardware extends SubscribeMixin(LitElement) {
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<ha-chart-base
|
<ha-chart-base
|
||||||
|
.hass=${this.hass}
|
||||||
.data=${{
|
.data=${{
|
||||||
datasets: [
|
datasets: [
|
||||||
{
|
{
|
||||||
@@ -441,6 +442,7 @@ class HaConfigHardware extends SubscribeMixin(LitElement) {
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<ha-chart-base
|
<ha-chart-base
|
||||||
|
.hass=${this.hass}
|
||||||
.data=${{
|
.data=${{
|
||||||
datasets: [
|
datasets: [
|
||||||
{
|
{
|
||||||
|
@@ -96,7 +96,7 @@ class DialogTagDetail
|
|||||||
></ha-textfield>
|
></ha-textfield>
|
||||||
${!this._params.entry
|
${!this._params.entry
|
||||||
? html`<ha-textfield
|
? html`<ha-textfield
|
||||||
.value=${this._id}
|
.value=${this._id || ""}
|
||||||
.configValue=${"id"}
|
.configValue=${"id"}
|
||||||
@input=${this._valueChanged}
|
@input=${this._valueChanged}
|
||||||
.label=${this.hass!.localize(
|
.label=${this.hass!.localize(
|
||||||
@@ -236,7 +236,7 @@ class DialogTagDetail
|
|||||||
await new Promise((resolve) => {
|
await new Promise((resolve) => {
|
||||||
imageObj.onload = resolve;
|
imageObj.onload = resolve;
|
||||||
});
|
});
|
||||||
context.drawImage(
|
context?.drawImage(
|
||||||
imageObj,
|
imageObj,
|
||||||
canvas.width / 3,
|
canvas.width / 3,
|
||||||
canvas.height / 3,
|
canvas.height / 3,
|
||||||
|
@@ -87,6 +87,7 @@ export class HuiEnergyDevicesGraphCard
|
|||||||
})}"
|
})}"
|
||||||
>
|
>
|
||||||
<ha-chart-base
|
<ha-chart-base
|
||||||
|
.hass=${this.hass}
|
||||||
.data=${this._chartData}
|
.data=${this._chartData}
|
||||||
.options=${this._createOptions(this.hass.locale)}
|
.options=${this._createOptions(this.hass.locale)}
|
||||||
.height=${(this._chartData?.datasets[0]?.data.length || 0) * 28 +
|
.height=${(this._chartData?.datasets[0]?.data.length || 0) * 28 +
|
||||||
|
@@ -106,6 +106,7 @@ export class HuiEnergyGasGraphCard
|
|||||||
})}"
|
})}"
|
||||||
>
|
>
|
||||||
<ha-chart-base
|
<ha-chart-base
|
||||||
|
.hass=${this.hass}
|
||||||
.data=${this._chartData}
|
.data=${this._chartData}
|
||||||
.options=${this._createOptions(
|
.options=${this._createOptions(
|
||||||
this._start,
|
this._start,
|
||||||
|
@@ -105,6 +105,7 @@ export class HuiEnergySolarGraphCard
|
|||||||
})}"
|
})}"
|
||||||
>
|
>
|
||||||
<ha-chart-base
|
<ha-chart-base
|
||||||
|
.hass=${this.hass}
|
||||||
.data=${this._chartData}
|
.data=${this._chartData}
|
||||||
.options=${this._createOptions(
|
.options=${this._createOptions(
|
||||||
this._start,
|
this._start,
|
||||||
|
@@ -99,6 +99,7 @@ export class HuiEnergyUsageGraphCard
|
|||||||
})}"
|
})}"
|
||||||
>
|
>
|
||||||
<ha-chart-base
|
<ha-chart-base
|
||||||
|
.hass=${this.hass}
|
||||||
.data=${this._chartData}
|
.data=${this._chartData}
|
||||||
.options=${this._createOptions(
|
.options=${this._createOptions(
|
||||||
this._start,
|
this._start,
|
||||||
|
@@ -106,6 +106,7 @@ export class HuiEnergyWaterGraphCard
|
|||||||
})}"
|
})}"
|
||||||
>
|
>
|
||||||
<ha-chart-base
|
<ha-chart-base
|
||||||
|
.hass=${this.hass}
|
||||||
.data=${this._chartData}
|
.data=${this._chartData}
|
||||||
.options=${this._createOptions(
|
.options=${this._createOptions(
|
||||||
this._start,
|
this._start,
|
||||||
|
@@ -77,7 +77,7 @@ export class HaLongLivedAccessTokenDialog extends LitElement {
|
|||||||
await new Promise((resolve) => {
|
await new Promise((resolve) => {
|
||||||
imageObj.onload = resolve;
|
imageObj.onload = resolve;
|
||||||
});
|
});
|
||||||
context.drawImage(
|
context?.drawImage(
|
||||||
imageObj,
|
imageObj,
|
||||||
canvas.width / 3,
|
canvas.width / 3,
|
||||||
canvas.height / 3,
|
canvas.height / 3,
|
||||||
|
@@ -803,7 +803,7 @@
|
|||||||
"nothing_found": "Nothing found!"
|
"nothing_found": "Nothing found!"
|
||||||
},
|
},
|
||||||
"voice_command": {
|
"voice_command": {
|
||||||
"title": "Assistant",
|
"title": "Assist",
|
||||||
"did_not_hear": "Home Assistant did not hear anything",
|
"did_not_hear": "Home Assistant did not hear anything",
|
||||||
"did_not_understand": "Didn't quite get that",
|
"did_not_understand": "Didn't quite get that",
|
||||||
"found": "I found the following for you:",
|
"found": "I found the following for you:",
|
||||||
|
Reference in New Issue
Block a user