Merge pull request #6211 from home-assistant/dev

This commit is contained in:
Paulus Schoutsen 2020-06-22 16:18:06 -07:00 committed by GitHub
commit d22eaa1318
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
126 changed files with 1445 additions and 876 deletions

View File

@ -34,10 +34,8 @@ jobs:
run: yarn install run: yarn install
env: env:
CI: true CI: true
- name: Build icons - name: Build resources
run: ./node_modules/.bin/gulp gen-icons-json run: ./node_modules/.bin/gulp gen-icons-json build-translations gather-gallery-demos
- name: Build translations
run: ./node_modules/.bin/gulp build-translations
- name: Run eslint - name: Run eslint
run: ./node_modules/.bin/eslint '{**/src,src}/**/*.{js,ts,html}' --ignore-path .gitignore run: ./node_modules/.bin/eslint '{**/src,src}/**/*.{js,ts,html}' --ignore-path .gitignore
- name: Run tsc - name: Run tsc

View File

@ -57,7 +57,7 @@ module.exports.babelOptions = ({ latestBuild }) => ({
].filter(Boolean), ].filter(Boolean),
plugins: [ plugins: [
// Part of ES2018. Converts {...a, b: 2} to Object.assign({}, a, {b: 2}) // Part of ES2018. Converts {...a, b: 2} to Object.assign({}, a, {b: 2})
[ !latestBuild && [
"@babel/plugin-proposal-object-rest-spread", "@babel/plugin-proposal-object-rest-spread",
{ loose: true, useBuiltIns: true }, { loose: true, useBuiltIns: true },
], ],
@ -73,7 +73,7 @@ module.exports.babelOptions = ({ latestBuild }) => ({
require("@babel/plugin-proposal-class-properties").default, require("@babel/plugin-proposal-class-properties").default,
{ loose: true }, { loose: true },
], ],
], ].filter(Boolean),
}); });
// Are already ES5, cause warnings when babelified. // Are already ES5, cause warnings when babelified.

View File

@ -1,7 +1,10 @@
// Run demo develop mode // Run demo develop mode
const gulp = require("gulp"); const gulp = require("gulp");
const fs = require("fs");
const path = require("path");
const env = require("../env"); const env = require("../env");
const paths = require("../paths");
require("./clean.js"); require("./clean.js");
require("./translations.js"); require("./translations.js");
@ -12,6 +15,31 @@ require("./service-worker.js");
require("./entry-html.js"); require("./entry-html.js");
require("./rollup.js"); require("./rollup.js");
gulp.task("gather-gallery-demos", async function gatherDemos() {
const files = await fs.promises.readdir(
path.resolve(paths.gallery_dir, "src/demos")
);
let content = "export const DEMOS = {\n";
for (const file of files) {
const demoId = path.basename(file, ".ts");
const demoPath = "../src/demos/" + demoId;
content += ` "${demoId}": () => import("${demoPath}"),\n`;
}
content += "};";
const galleryBuild = path.resolve(paths.gallery_dir, "build");
fs.mkdirSync(galleryBuild, { recursive: true });
fs.writeFileSync(
path.resolve(galleryBuild, "import-demos.ts"),
content,
"utf-8"
);
});
gulp.task( gulp.task(
"develop-gallery", "develop-gallery",
gulp.series( gulp.series(
@ -20,7 +48,11 @@ gulp.task(
}, },
"clean-gallery", "clean-gallery",
"translations-enable-merge-backend", "translations-enable-merge-backend",
gulp.parallel("gen-icons-json", "build-translations"), gulp.parallel(
"gen-icons-json",
"build-translations",
"gather-gallery-demos"
),
"copy-static-gallery", "copy-static-gallery",
"gen-index-gallery-dev", "gen-index-gallery-dev",
env.useRollup() ? "rollup-dev-server-gallery" : "webpack-dev-server-gallery" env.useRollup() ? "rollup-dev-server-gallery" : "webpack-dev-server-gallery"
@ -35,7 +67,11 @@ gulp.task(
}, },
"clean-gallery", "clean-gallery",
"translations-enable-merge-backend", "translations-enable-merge-backend",
gulp.parallel("gen-icons-json", "build-translations"), gulp.parallel(
"gen-icons-json",
"build-translations",
"gather-gallery-demos"
),
"copy-static-gallery", "copy-static-gallery",
env.useRollup() ? "rollup-prod-gallery" : "webpack-prod-gallery", env.useRollup() ? "rollup-prod-gallery" : "webpack-prod-gallery",
"gen-index-gallery-prod" "gen-index-gallery-prod"

View File

@ -37,14 +37,13 @@
<body> <body>
<%= renderTemplate('_js_base') %> <%= renderTemplate('_js_base') %>
<script type="module" crossorigin="use-credentials"> <script>
import "<%= latestLauncherJS %>"; import("<%= latestLauncherJS %>");
window.latestJS = true;
</script> </script>
<script nomodule> <script>
(function() { if (!window.latestJS) {
// // Safari 10.1 supports type=module but ignores nomodule, so we add this check.
if (!isS101) {
<% if (useRollup) { %> <% if (useRollup) { %>
_ls("/static/js/s.min.js").onload = function() { _ls("/static/js/s.min.js").onload = function() {
System.import("<%= es5LauncherJS %>"); System.import("<%= es5LauncherJS %>");
@ -53,7 +52,6 @@
_ls("<%= es5LauncherJS %>"); _ls("<%= es5LauncherJS %>");
<% } %> <% } %>
} }
})();
</script> </script>
<hc-layout subtitle="FAQ"> <hc-layout subtitle="FAQ">
@ -253,7 +251,7 @@ http:
<script> <script>
var _gaq = [["_setAccount", "UA-57927901-9"], ["_trackPageview"]]; var _gaq = [["_setAccount", "UA-57927901-9"], ["_trackPageview"]];
(function(d, t) { (function (d, t) {
var g = d.createElement(t), var g = d.createElement(t),
s = d.getElementsByTagName(t)[0]; s = d.getElementsByTagName(t)[0];
g.src = g.src =

View File

@ -28,14 +28,13 @@
<hc-connect></hc-connect> <hc-connect></hc-connect>
<script type="module" crossorigin="use-credentials"> <script>
import "<%= latestLauncherJS %>"; import("<%= latestLauncherJS %>");
window.latestJS = true;
</script> </script>
<script nomodule> <script>
(function() { if (!window.latestJS) {
// // Safari 10.1 supports type=module but ignores nomodule, so we add this check.
if (!isS101) {
<% if (useRollup) { %> <% if (useRollup) { %>
_ls("/static/js/s.min.js").onload = function() { _ls("/static/js/s.min.js").onload = function() {
System.import("<%= es5LauncherJS %>"); System.import("<%= es5LauncherJS %>");
@ -44,7 +43,6 @@
_ls("<%= es5LauncherJS %>"); _ls("<%= es5LauncherJS %>");
<% } %> <% } %>
} }
})();
</script> </script>
<script> <script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

View File

@ -1,5 +1,4 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-spinner/paper-spinner-lite";
import { import {
css, css,
CSSResult, CSSResult,
@ -10,6 +9,7 @@ import {
} from "lit-element"; } from "lit-element";
import { until } from "lit-html/directives/until"; import { until } from "lit-html/directives/until";
import "../../../src/components/ha-card"; import "../../../src/components/ha-card";
import "../../../src/components/ha-circular-progress";
import { LovelaceCardConfig } from "../../../src/data/lovelace"; import { LovelaceCardConfig } from "../../../src/data/lovelace";
import { MockHomeAssistant } from "../../../src/fake_data/provide_hass"; import { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
import { Lovelace, LovelaceCard } from "../../../src/panels/lovelace/types"; import { Lovelace, LovelaceCard } from "../../../src/panels/lovelace/types";
@ -49,7 +49,7 @@ export class HADemoCard extends LitElement implements LovelaceCard {
<div class="picker"> <div class="picker">
<div class="label"> <div class="label">
${this._switching ${this._switching
? html` <paper-spinner-lite active></paper-spinner-lite> ` ? html`<ha-circular-progress active></ha-circular-progress>`
: until( : until(
selectedDemoConfig.then( selectedDemoConfig.then(
(conf) => html` (conf) => html`

View File

@ -86,12 +86,13 @@
<%= renderTemplate('_js_base') %> <%= renderTemplate('_js_base') %>
<%= renderTemplate('_preload_roboto') %> <%= renderTemplate('_preload_roboto') %>
<script type="module" src="<%= latestDemoJS %>"></script> <script>
import("<%= latestDemoJS %>");
window.latestJS = true;
</script>
<script nomodule> <script>
(function() { if (!window.latestJS) {
// // Safari 10.1 supports type=module but ignores nomodule, so we add this check.
if (!isS101) {
<% if (useRollup) { %> <% if (useRollup) { %>
_ls("/static/js/s.min.js").onload = function() { _ls("/static/js/s.min.js").onload = function() {
System.import("<%= es5DemoJS %>"); System.import("<%= es5DemoJS %>");
@ -100,12 +101,11 @@
_ls("<%= es5DemoJS %>"); _ls("<%= es5DemoJS %>");
<% } %> <% } %>
} }
})();
</script> </script>
<script> <script>
var _gaq = [["_setAccount", "UA-57927901-5"], ["_trackPageview"]]; var _gaq = [["_setAccount", "UA-57927901-5"], ["_trackPageview"]];
(function(d, t) { (function (d, t) {
var g = d.createElement(t), var g = d.createElement(t),
s = d.getElementsByTagName(t)[0]; s = d.getElementsByTagName(t)[0];
g.src = g.src =

View File

@ -11,9 +11,7 @@ import { PolymerElement } from "@polymer/polymer/polymer-element";
import "../../src/components/ha-card"; import "../../src/components/ha-card";
import "../../src/managers/notification-manager"; import "../../src/managers/notification-manager";
import "../../src/styles/polymer-ha-style"; import "../../src/styles/polymer-ha-style";
import { DEMOS } from "../build/import-demos";
// eslint-disable-next-line no-undef
const DEMOS = require.context("./demos", true, /^(.*\.(ts$))[^.]*$/im);
const fixPath = (path) => path.substr(2, path.length - 5); const fixPath = (path) => path.substr(2, path.length - 5);
@ -163,7 +161,7 @@ class HaGallery extends PolymerElement {
}, },
_demos: { _demos: {
type: Array, type: Array,
value: DEMOS.keys().map(fixPath), value: Object.keys(DEMOS),
}, },
_lovelaceDemos: { _lovelaceDemos: {
type: Array, type: Array,
@ -210,7 +208,7 @@ class HaGallery extends PolymerElement {
while (root.lastChild) root.removeChild(root.lastChild); while (root.lastChild) root.removeChild(root.lastChild);
if (demo) { if (demo) {
DEMOS(`./${demo}.ts`); DEMOS[demo]();
const el = document.createElement(demo); const el = document.createElement(demo);
root.appendChild(el); root.appendChild(el);
} }

View File

@ -22,7 +22,7 @@ import "../../../src/layouts/hass-tabs-subpage";
import "../../../src/layouts/loading-screen"; import "../../../src/layouts/loading-screen";
import { HomeAssistant, Route } from "../../../src/types"; import { HomeAssistant, Route } from "../../../src/types";
import { showRepositoriesDialog } from "../dialogs/repositories/show-dialog-repositories"; import { showRepositoriesDialog } from "../dialogs/repositories/show-dialog-repositories";
import { supervisorTabs } from "../hassio-panel"; import { supervisorTabs } from "../hassio-tabs";
import "./hassio-addon-repository"; import "./hassio-addon-repository";
const sortRepos = (a: HassioAddonRepository, b: HassioAddonRepository) => { const sortRepos = (a: HassioAddonRepository, b: HassioAddonRepository) => {

View File

@ -1,4 +1,3 @@
import "@polymer/paper-spinner/paper-spinner-lite";
import { import {
css, css,
CSSResult, CSSResult,
@ -12,6 +11,7 @@ import { HassioAddonDetails } from "../../../../src/data/hassio/addon";
import { haStyle } from "../../../../src/resources/styles"; import { haStyle } from "../../../../src/resources/styles";
import { HomeAssistant } from "../../../../src/types"; import { HomeAssistant } from "../../../../src/types";
import { hassioStyle } from "../../resources/hassio-style"; import { hassioStyle } from "../../resources/hassio-style";
import "../../../../src/components/ha-circular-progress";
import "./hassio-addon-audio"; import "./hassio-addon-audio";
import "./hassio-addon-config"; import "./hassio-addon-config";
import "./hassio-addon-network"; import "./hassio-addon-network";
@ -24,7 +24,7 @@ class HassioAddonConfigDashboard extends LitElement {
protected render(): TemplateResult { protected render(): TemplateResult {
if (!this.addon) { if (!this.addon) {
return html` <paper-spinner-lite active></paper-spinner-lite> `; return html`<ha-circular-progress active></ha-circular-progress>`;
} }
return html` return html`
<div class="content"> <div class="content">

View File

@ -1,4 +1,3 @@
import "@polymer/paper-spinner/paper-spinner-lite";
import { import {
css, css,
CSSResult, CSSResult,
@ -14,6 +13,7 @@ import {
HassioAddonDetails, HassioAddonDetails,
} from "../../../../src/data/hassio/addon"; } from "../../../../src/data/hassio/addon";
import "../../../../src/layouts/loading-screen"; import "../../../../src/layouts/loading-screen";
import "../../../../src/components/ha-circular-progress";
import { haStyle } from "../../../../src/resources/styles"; import { haStyle } from "../../../../src/resources/styles";
import { HomeAssistant } from "../../../../src/types"; import { HomeAssistant } from "../../../../src/types";
import { hassioStyle } from "../../resources/hassio-style"; import { hassioStyle } from "../../resources/hassio-style";
@ -35,7 +35,7 @@ class HassioAddonDocumentationDashboard extends LitElement {
protected render(): TemplateResult { protected render(): TemplateResult {
if (!this.addon) { if (!this.addon) {
return html` <paper-spinner-lite active></paper-spinner-lite> `; return html`<ha-circular-progress active></ha-circular-progress>`;
} }
return html` return html`
<div class="content"> <div class="content">

View File

@ -4,7 +4,6 @@ import {
mdiInformationVariant, mdiInformationVariant,
mdiMathLog, mdiMathLog,
} from "@mdi/js"; } from "@mdi/js";
import "@polymer/paper-spinner/paper-spinner-lite";
import { import {
css, css,
CSSResult, CSSResult,
@ -20,6 +19,7 @@ import {
HassioAddonDetails, HassioAddonDetails,
} from "../../../src/data/hassio/addon"; } from "../../../src/data/hassio/addon";
import "../../../src/layouts/hass-tabs-subpage"; import "../../../src/layouts/hass-tabs-subpage";
import "../../../src/components/ha-circular-progress";
import type { PageNavigation } from "../../../src/layouts/hass-tabs-subpage"; import type { PageNavigation } from "../../../src/layouts/hass-tabs-subpage";
import { haStyle } from "../../../src/resources/styles"; import { haStyle } from "../../../src/resources/styles";
import { HomeAssistant, Route } from "../../../src/types"; import { HomeAssistant, Route } from "../../../src/types";
@ -56,7 +56,7 @@ class HassioAddonDashboard extends LitElement {
protected render(): TemplateResult { protected render(): TemplateResult {
if (!this.addon) { if (!this.addon) {
return html` <paper-spinner-lite active></paper-spinner-lite> `; return html`<ha-circular-progress active></ha-circular-progress>`;
} }
const addonTabs: PageNavigation[] = [ const addonTabs: PageNavigation[] = [

View File

@ -1,4 +1,3 @@
import "@polymer/paper-spinner/paper-spinner-lite";
import { import {
css, css,
CSSResult, CSSResult,
@ -9,6 +8,7 @@ import {
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import { HassioAddonDetails } from "../../../../src/data/hassio/addon"; import { HassioAddonDetails } from "../../../../src/data/hassio/addon";
import "../../../../src/components/ha-circular-progress";
import { haStyle } from "../../../../src/resources/styles"; import { haStyle } from "../../../../src/resources/styles";
import { HomeAssistant } from "../../../../src/types"; import { HomeAssistant } from "../../../../src/types";
import { hassioStyle } from "../../resources/hassio-style"; import { hassioStyle } from "../../resources/hassio-style";
@ -24,7 +24,7 @@ class HassioAddonInfoDashboard extends LitElement {
protected render(): TemplateResult { protected render(): TemplateResult {
if (!this.addon) { if (!this.addon) {
return html` <paper-spinner-lite active></paper-spinner-lite> `; return html`<ha-circular-progress active></ha-circular-progress>`;
} }
return html` return html`

View File

@ -1,4 +1,3 @@
import "@polymer/paper-spinner/paper-spinner-lite";
import { import {
css, css,
CSSResult, CSSResult,
@ -9,6 +8,7 @@ import {
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import { HassioAddonDetails } from "../../../../src/data/hassio/addon"; import { HassioAddonDetails } from "../../../../src/data/hassio/addon";
import "../../../../src/components/ha-circular-progress";
import { haStyle } from "../../../../src/resources/styles"; import { haStyle } from "../../../../src/resources/styles";
import { HomeAssistant } from "../../../../src/types"; import { HomeAssistant } from "../../../../src/types";
import { hassioStyle } from "../../resources/hassio-style"; import { hassioStyle } from "../../resources/hassio-style";
@ -22,7 +22,7 @@ class HassioAddonLogDashboard extends LitElement {
protected render(): TemplateResult { protected render(): TemplateResult {
if (!this.addon) { if (!this.addon) {
return html` <paper-spinner-lite active></paper-spinner-lite> `; return html` <ha-circular-progress active></ha-circular-progress> `;
} }
return html` return html`
<div class="content"> <div class="content">

View File

@ -15,7 +15,7 @@ import {
import "../../../src/layouts/hass-tabs-subpage"; import "../../../src/layouts/hass-tabs-subpage";
import { haStyle } from "../../../src/resources/styles"; import { haStyle } from "../../../src/resources/styles";
import { HomeAssistant, Route } from "../../../src/types"; import { HomeAssistant, Route } from "../../../src/types";
import { supervisorTabs } from "../hassio-panel"; import { supervisorTabs } from "../hassio-tabs";
import "./hassio-addons"; import "./hassio-addons";
import "./hassio-update"; import "./hassio-update";

View File

@ -5,7 +5,7 @@ import "@polymer/paper-input/paper-input";
import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import type { PaperInputElement } from "@polymer/paper-input/paper-input";
import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item";
import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item-body";
import "@polymer/paper-spinner/paper-spinner"; import "../../../../src/components/ha-circular-progress";
import { import {
css, css,
CSSResult, CSSResult,
@ -108,7 +108,7 @@ class HassioRepositoriesDialog extends LitElement {
></paper-input> ></paper-input>
<mwc-button @click=${this._addRepository}> <mwc-button @click=${this._addRepository}>
${this._prosessing ${this._prosessing
? html`<paper-spinner active></paper-spinner>` ? html`<ha-circular-progress active></ha-circular-progress>`
: "Add"} : "Add"}
</mwc-button> </mwc-button>
</div> </div>

View File

@ -1,4 +1,3 @@
import { mdiBackupRestore, mdiCogs, mdiStore, mdiViewDashboard } from "@mdi/js";
import { import {
customElement, customElement,
html, html,
@ -12,33 +11,9 @@ import {
HassioSupervisorInfo, HassioSupervisorInfo,
HassioInfo, HassioInfo,
} from "../../src/data/hassio/supervisor"; } from "../../src/data/hassio/supervisor";
import type { PageNavigation } from "../../src/layouts/hass-tabs-subpage";
import { HomeAssistant, Route } from "../../src/types"; import { HomeAssistant, Route } from "../../src/types";
import "./hassio-panel-router"; import "./hassio-panel-router";
export const supervisorTabs: PageNavigation[] = [
{
name: "Dashboard",
path: `/hassio/dashboard`,
iconPath: mdiViewDashboard,
},
{
name: "Add-on store",
path: `/hassio/store`,
iconPath: mdiStore,
},
{
name: "Snapshots",
path: `/hassio/snapshots`,
iconPath: mdiBackupRestore,
},
{
name: "System",
path: `/hassio/system`,
iconPath: mdiCogs,
},
];
@customElement("hassio-panel") @customElement("hassio-panel")
class HassioPanel extends LitElement { class HassioPanel extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant; @property({ attribute: false }) public hass!: HomeAssistant;

25
hassio/src/hassio-tabs.ts Normal file
View File

@ -0,0 +1,25 @@
import { mdiBackupRestore, mdiCogs, mdiStore, mdiViewDashboard } from "@mdi/js";
import type { PageNavigation } from "../../src/layouts/hass-tabs-subpage";
export const supervisorTabs: PageNavigation[] = [
{
name: "Dashboard",
path: `/hassio/dashboard`,
iconPath: mdiViewDashboard,
},
{
name: "Add-on store",
path: `/hassio/store`,
iconPath: mdiStore,
},
{
name: "Snapshots",
path: `/hassio/snapshots`,
iconPath: mdiBackupRestore,
},
{
name: "System",
path: `/hassio/system`,
iconPath: mdiCogs,
},
];

View File

@ -37,7 +37,7 @@ import { haStyle } from "../../../src/resources/styles";
import { HomeAssistant, Route } from "../../../src/types"; import { HomeAssistant, Route } from "../../../src/types";
import "../components/hassio-card-content"; import "../components/hassio-card-content";
import { showHassioSnapshotDialog } from "../dialogs/snapshot/show-dialog-hassio-snapshot"; import { showHassioSnapshotDialog } from "../dialogs/snapshot/show-dialog-hassio-snapshot";
import { supervisorTabs } from "../hassio-panel"; import { supervisorTabs } from "../hassio-tabs";
import { hassioStyle } from "../resources/hassio-style"; import { hassioStyle } from "../resources/hassio-style";
interface CheckboxItem { interface CheckboxItem {

View File

@ -18,7 +18,7 @@ import {
import "../../../src/layouts/hass-tabs-subpage"; import "../../../src/layouts/hass-tabs-subpage";
import { haStyle } from "../../../src/resources/styles"; import { haStyle } from "../../../src/resources/styles";
import { HomeAssistant, Route } from "../../../src/types"; import { HomeAssistant, Route } from "../../../src/types";
import { supervisorTabs } from "../hassio-panel"; import { supervisorTabs } from "../hassio-tabs";
import { hassioStyle } from "../resources/hassio-style"; import { hassioStyle } from "../resources/hassio-style";
import "./hassio-host-info"; import "./hassio-host-info";
import "./hassio-supervisor-info"; import "./hassio-supervisor-info";

View File

@ -26,6 +26,7 @@
"@fullcalendar/core": "^5.0.0-beta.2", "@fullcalendar/core": "^5.0.0-beta.2",
"@fullcalendar/daygrid": "^5.0.0-beta.2", "@fullcalendar/daygrid": "^5.0.0-beta.2",
"@material/chips": "7.0.0-canary.d92d8c93e.0", "@material/chips": "7.0.0-canary.d92d8c93e.0",
"@material/circular-progress": "7.0.0-canary.d92d8c93e.0",
"@material/mwc-button": "^0.15.0", "@material/mwc-button": "^0.15.0",
"@material/mwc-checkbox": "^0.15.0", "@material/mwc-checkbox": "^0.15.0",
"@material/mwc-dialog": "^0.15.0", "@material/mwc-dialog": "^0.15.0",
@ -47,7 +48,6 @@
"@polymer/iron-image": "^3.0.1", "@polymer/iron-image": "^3.0.1",
"@polymer/iron-input": "^3.0.1", "@polymer/iron-input": "^3.0.1",
"@polymer/iron-label": "^3.0.1", "@polymer/iron-label": "^3.0.1",
"@polymer/iron-media-query": "^3.0.1",
"@polymer/iron-overlay-behavior": "^3.0.2", "@polymer/iron-overlay-behavior": "^3.0.2",
"@polymer/iron-resizable-behavior": "^3.0.1", "@polymer/iron-resizable-behavior": "^3.0.1",
"@polymer/paper-card": "^3.0.1", "@polymer/paper-card": "^3.0.1",
@ -65,7 +65,6 @@
"@polymer/paper-radio-group": "^3.0.1", "@polymer/paper-radio-group": "^3.0.1",
"@polymer/paper-ripple": "^3.0.1", "@polymer/paper-ripple": "^3.0.1",
"@polymer/paper-slider": "^3.0.1", "@polymer/paper-slider": "^3.0.1",
"@polymer/paper-spinner": "^3.0.2",
"@polymer/paper-styles": "^3.0.1", "@polymer/paper-styles": "^3.0.1",
"@polymer/paper-tabs": "^3.0.1", "@polymer/paper-tabs": "^3.0.1",
"@polymer/paper-toast": "^3.0.1", "@polymer/paper-toast": "^3.0.1",
@ -188,7 +187,7 @@
"sinon": "^7.3.1", "sinon": "^7.3.1",
"source-map-url": "^0.4.0", "source-map-url": "^0.4.0",
"systemjs": "^6.3.2", "systemjs": "^6.3.2",
"terser-webpack-plugin": "^1.2.3", "terser-webpack-plugin": "^3.0.6",
"ts-lit-plugin": "^1.1.10", "ts-lit-plugin": "^1.1.10",
"ts-mocha": "^6.0.0", "ts-mocha": "^6.0.0",
"typescript": "^3.8.3", "typescript": "^3.8.3",

View File

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup( setup(
name="home-assistant-frontend", name="home-assistant-frontend",
version="20200620.0", version="20200622.0",
description="The Home Assistant frontend", description="The Home Assistant frontend",
url="https://github.com/home-assistant/home-assistant-polymer", url="https://github.com/home-assistant/home-assistant-polymer",
author="The Home Assistant Authors", author="The Home Assistant Authors",

View File

@ -1,5 +1,5 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-spinner/paper-spinner"; import "../ha-circular-progress";
import { html } from "@polymer/polymer/lib/utils/html-tag"; import { html } from "@polymer/polymer/lib/utils/html-tag";
/* eslint-plugin-disable lit */ /* eslint-plugin-disable lit */
import { PolymerElement } from "@polymer/polymer/polymer-element"; import { PolymerElement } from "@polymer/polymer/polymer-element";
@ -51,7 +51,9 @@ class HaProgressButton extends PolymerElement {
<slot></slot> <slot></slot>
</mwc-button> </mwc-button>
<template is="dom-if" if="[[progress]]"> <template is="dom-if" if="[[progress]]">
<div class="progress"><paper-spinner active=""></paper-spinner></div> <div class="progress">
<ha-circular-progress active size="small"></ha-circular-progress>
</div>
</template> </template>
</div> </div>
`; `;

View File

@ -0,0 +1,85 @@
import {
LitElement,
TemplateResult,
property,
svg,
html,
customElement,
unsafeCSS,
SVGTemplateResult,
} from "lit-element";
// @ts-ignore
import progressStyles from "@material/circular-progress/dist/mdc.circular-progress.min.css";
import { classMap } from "lit-html/directives/class-map";
@customElement("ha-circular-progress")
export class HaCircularProgress extends LitElement {
@property({ type: Boolean })
public active = false;
@property()
public alt = "Loading";
@property()
public size: "small" | "medium" | "large" = "medium";
protected render(): TemplateResult | void {
let indeterminatePart: SVGTemplateResult;
if (this.size === "small") {
indeterminatePart = svg`
<svg class="mdc-circular-progress__indeterminate-circle-graphic" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="8.75" stroke-dasharray="54.978" stroke-dashoffset="27.489"/>
</svg>`;
} else if (this.size === "large") {
indeterminatePart = svg`
<svg class="mdc-circular-progress__indeterminate-circle-graphic" viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg">
<circle cx="24" cy="24" r="18" stroke-dasharray="113.097" stroke-dashoffset="56.549"/>
</svg>`;
} else {
// medium
indeterminatePart = svg`
<svg class="mdc-circular-progress__indeterminate-circle-graphic" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<circle cx="16" cy="16" r="12.5" stroke-dasharray="78.54" stroke-dashoffset="39.27"/>
</svg>`;
}
// ignoring prettier as it will introduce unwanted whitespace
// We have not implemented the determinate support of mdc circular progress.
// prettier-ignore
return html`
<div
class="mdc-circular-progress ${classMap({
"mdc-circular-progress--indeterminate": this.active,
[`mdc-circular-progress--${this.size}`]: true,
})}"
role="progressbar"
aria-label=${this.alt}
aria-valuemin="0"
aria-valuemax="1"
>
<div class="mdc-circular-progress__indeterminate-container">
<div class="mdc-circular-progress__spinner-layer">
<div class="mdc-circular-progress__circle-clipper mdc-circular-progress__circle-left">
${indeterminatePart}
</div><div class="mdc-circular-progress__gap-patch">
${indeterminatePart}
</div><div class="mdc-circular-progress__circle-clipper mdc-circular-progress__circle-right">
${indeterminatePart}
</div>
</div>
</div>
</div>
`;
}
static get styles() {
return unsafeCSS(progressStyles);
}
}
declare global {
interface HTMLElementTagNameMap {
"ha-circular-progress": HaCircularProgress;
}
}

View File

@ -1,24 +0,0 @@
import { html } from "@polymer/polymer/lib/utils/html-tag";
/* eslint-plugin-disable lit */
import { PolymerElement } from "@polymer/polymer/polymer-element";
import "./ha-label-badge";
class HaDemoBadge extends PolymerElement {
static get template() {
return html`
<style>
:host {
--ha-label-badge-color: #dac90d;
}
</style>
<ha-label-badge
icon="hass:emoticon"
label="Demo"
description=""
></ha-label-badge>
`;
}
}
customElements.define("ha-demo-badge", HaDemoBadge);

View File

@ -6,7 +6,6 @@ import {
mdiMenu, mdiMenu,
mdiViewDashboard, mdiViewDashboard,
} from "@mdi/js"; } from "@mdi/js";
import "@polymer/app-layout/app-toolbar/app-toolbar";
import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-item/paper-icon-item";
import type { PaperIconItemElement } from "@polymer/paper-item/paper-icon-item"; import type { PaperIconItemElement } from "@polymer/paper-item/paper-icon-item";
import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item";
@ -16,6 +15,7 @@ import {
CSSResult, CSSResult,
eventOptions, eventOptions,
html, html,
customElement,
LitElement, LitElement,
property, property,
PropertyValues, PropertyValues,
@ -109,9 +109,7 @@ const computePanels = (hass: HomeAssistant): [PanelInfo[], PanelInfo[]] => {
return [beforeSpacer, afterSpacer]; return [beforeSpacer, afterSpacer];
}; };
/* @customElement("ha-sidebar")
* @appliesMixin LocalizeMixin
*/
class HaSidebar extends LitElement { class HaSidebar extends LitElement {
@property() public hass!: HomeAssistant; @property() public hass!: HomeAssistant;
@ -749,5 +747,3 @@ declare global {
"ha-sidebar": HaSidebar; "ha-sidebar": HaSidebar;
} }
} }
customElements.define("ha-sidebar", HaSidebar);

View File

@ -1,4 +1,4 @@
import "@polymer/paper-spinner/paper-spinner"; import "./ha-circular-progress";
import { html } from "@polymer/polymer/lib/utils/html-tag"; import { html } from "@polymer/polymer/lib/utils/html-tag";
/* eslint-plugin-disable lit */ /* eslint-plugin-disable lit */
import { PolymerElement } from "@polymer/polymer/polymer-element"; import { PolymerElement } from "@polymer/polymer/polymer-element";

View File

@ -10,6 +10,7 @@ import {
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import "../../components/dialog/ha-paper-dialog"; import "../../components/dialog/ha-paper-dialog";
import "../../components/ha-circular-progress";
import "../../components/ha-switch"; import "../../components/ha-switch";
import "../../components/ha-formfield"; import "../../components/ha-formfield";
import type { HaSwitch } from "../../components/ha-switch"; import type { HaSwitch } from "../../components/ha-switch";
@ -75,7 +76,7 @@ class DialogConfigEntrySystemOptions extends LitElement {
${this._loading ${this._loading
? html` ? html`
<div class="init-spinner"> <div class="init-spinner">
<paper-spinner-lite active></paper-spinner-lite> <ha-circular-progress active></ha-circular-progress>
</div> </div>
` `
: html` : html`

View File

@ -1,7 +1,7 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable";
import "../../components/ha-icon-button"; import "../../components/ha-icon-button";
import "@polymer/paper-spinner/paper-spinner"; import "../../components/ha-circular-progress";
import "@polymer/paper-tooltip/paper-tooltip"; import "@polymer/paper-tooltip/paper-tooltip";
import type { UnsubscribeFunc } from "home-assistant-js-websocket"; import type { UnsubscribeFunc } from "home-assistant-js-websocket";
import { import {

View File

@ -1,5 +1,5 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-spinner/paper-spinner"; import "../../components/ha-circular-progress";
import "@polymer/paper-tooltip/paper-tooltip"; import "@polymer/paper-tooltip/paper-tooltip";
import { import {
css, css,
@ -76,7 +76,7 @@ class StepFlowForm extends LitElement {
${this._loading ${this._loading
? html` ? html`
<div class="submit-spinner"> <div class="submit-spinner">
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
</div> </div>
` `
: html` : html`

View File

@ -1,4 +1,3 @@
import "@polymer/paper-spinner/paper-spinner-lite";
import { import {
css, css,
CSSResult, CSSResult,
@ -8,6 +7,7 @@ import {
property, property,
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import "../../components/ha-circular-progress";
@customElement("step-flow-loading") @customElement("step-flow-loading")
class StepFlowLoading extends LitElement { class StepFlowLoading extends LitElement {
@ -17,7 +17,7 @@ class StepFlowLoading extends LitElement {
return html` return html`
<div class="init-spinner"> <div class="init-spinner">
${this.label ? html` <div>${this.label}</div> ` : ""} ${this.label ? html` <div>${this.label}</div> ` : ""}
<paper-spinner-lite active></paper-spinner-lite> <ha-circular-progress active></ha-circular-progress>
</div> </div>
`; `;
} }
@ -28,7 +28,7 @@ class StepFlowLoading extends LitElement {
padding: 50px 100px; padding: 50px 100px;
text-align: center; text-align: center;
} }
paper-spinner-lite { ha-circular-progress {
margin-top: 16px; margin-top: 16px;
} }
`; `;

View File

@ -1,6 +1,5 @@
import "@polymer/paper-item/paper-icon-item"; import "@polymer/paper-item/paper-icon-item";
import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item-body";
import "@polymer/paper-spinner/paper-spinner-lite";
import Fuse from "fuse.js"; import Fuse from "fuse.js";
import { import {
css, css,

View File

@ -2,7 +2,7 @@ import "@material/mwc-button";
import "@polymer/iron-flex-layout/iron-flex-layout-classes"; import "@polymer/iron-flex-layout/iron-flex-layout-classes";
import "@polymer/iron-input/iron-input"; import "@polymer/iron-input/iron-input";
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import "@polymer/paper-spinner/paper-spinner"; import "../../../components/ha-circular-progress";
import { html } from "@polymer/polymer/lib/utils/html-tag"; import { html } from "@polymer/polymer/lib/utils/html-tag";
/* eslint-plugin-disable lit */ /* eslint-plugin-disable lit */
import { PolymerElement } from "@polymer/polymer/polymer-element"; import { PolymerElement } from "@polymer/polymer/polymer-element";
@ -38,7 +38,7 @@ class MoreInfoConfigurator extends PolymerElement {
height: 41px; height: 41px;
} }
paper-spinner { ha-circular-progress {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 20px; margin-right: 20px;
@ -75,11 +75,11 @@ class MoreInfoConfigurator extends PolymerElement {
disabled="[[isConfiguring]]" disabled="[[isConfiguring]]"
on-click="submitClicked" on-click="submitClicked"
> >
<paper-spinner <ha-circular-progress
active="[[isConfiguring]]" active="[[isConfiguring]]"
hidden="[[!isConfiguring]]" hidden="[[!isConfiguring]]"
alt="Configuring" alt="Configuring"
></paper-spinner> ></ha-circular-progress>
[[stateObj.attributes.submit_caption]] [[stateObj.attributes.submit_caption]]
</mwc-button> </mwc-button>
</p> </p>

View File

@ -52,7 +52,7 @@
<%= renderTemplate('_js_base') %> <%= renderTemplate('_js_base') %>
<%= renderTemplate('_preload_roboto') %> <%= renderTemplate('_preload_roboto') %>
<script> <script crossorigin="use-credentials">
import("<%= latestCoreJS %>"); import("<%= latestCoreJS %>");
import("<%= latestAppJS %>"); import("<%= latestAppJS %>");
window.customPanelJS = "<%= latestCustomPanelJS %>"; window.customPanelJS = "<%= latestCustomPanelJS %>";

View File

@ -1,7 +1,7 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-spinner/paper-spinner-lite";
import { css, CSSResult, html, LitElement, property } from "lit-element"; import { css, CSSResult, html, LitElement, property } from "lit-element";
import { removeInitSkeleton } from "../util/init-skeleton"; import { removeInitSkeleton } from "../util/init-skeleton";
import "../components/ha-circular-progress";
class HaInitPage extends LitElement { class HaInitPage extends LitElement {
@property({ type: Boolean }) public error = false; @property({ type: Boolean }) public error = false;
@ -28,7 +28,7 @@ class HaInitPage extends LitElement {
: ""} : ""}
` `
: html` : html`
<paper-spinner-lite active></paper-spinner-lite> <ha-circular-progress active></ha-circular-progress>
<p>Loading data</p> <p>Loading data</p>
`} `}
</div> </div>
@ -52,7 +52,7 @@ class HaInitPage extends LitElement {
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
paper-spinner-lite { ha-circular-progress {
margin-top: 9px; margin-top: 9px;
} }
a { a {

View File

@ -1,5 +1,4 @@
import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/app-layout/app-toolbar/app-toolbar";
import "@polymer/paper-spinner/paper-spinner-lite";
import { import {
css, css,
CSSResultArray, CSSResultArray,
@ -9,6 +8,7 @@ import {
property, property,
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import "../components/ha-circular-progress";
import "../components/ha-menu-button"; import "../components/ha-menu-button";
import "../components/ha-icon-button-arrow-prev"; import "../components/ha-icon-button-arrow-prev";
import { haStyle } from "../resources/styles"; import { haStyle } from "../resources/styles";
@ -39,7 +39,7 @@ class HassLoadingScreen extends LitElement {
`} `}
</app-toolbar> </app-toolbar>
<div class="content"> <div class="content">
<paper-spinner-lite active></paper-spinner-lite> <ha-circular-progress active></ha-circular-progress>
</div> </div>
`; `;
} }

View File

@ -147,6 +147,8 @@ export class HassRouterPage extends UpdatingElement {
? routeOptions.load() ? routeOptions.load()
: Promise.resolve(); : Promise.resolve();
let showLoadingScreenTimeout: undefined | number;
// Check when loading the page source failed. // Check when loading the page source failed.
loadProm.catch((err) => { loadProm.catch((err) => {
// eslint-disable-next-line // eslint-disable-next-line
@ -158,7 +160,13 @@ export class HassRouterPage extends UpdatingElement {
} }
// Removes either loading screen or the panel // Removes either loading screen or the panel
if (this.lastChild) {
this.removeChild(this.lastChild!); this.removeChild(this.lastChild!);
}
if (showLoadingScreenTimeout) {
clearTimeout(showLoadingScreenTimeout);
}
// Show error screen // Show error screen
const errorEl = document.createElement("hass-error-screen"); const errorEl = document.createElement("hass-error-screen");
@ -177,7 +185,7 @@ export class HassRouterPage extends UpdatingElement {
// That way we won't have a double fast flash on fast connections. // That way we won't have a double fast flash on fast connections.
let created = false; let created = false;
setTimeout(() => { showLoadingScreenTimeout = window.setTimeout(() => {
if (created || this._currentPage !== newPage) { if (created || this._currentPage !== newPage) {
return; return;
} }

View File

@ -2,20 +2,20 @@ import "@polymer/app-layout/app-drawer-layout/app-drawer-layout";
import type { AppDrawerLayoutElement } from "@polymer/app-layout/app-drawer-layout/app-drawer-layout"; import type { AppDrawerLayoutElement } from "@polymer/app-layout/app-drawer-layout/app-drawer-layout";
import "@polymer/app-layout/app-drawer/app-drawer"; import "@polymer/app-layout/app-drawer/app-drawer";
import type { AppDrawerElement } from "@polymer/app-layout/app-drawer/app-drawer"; import type { AppDrawerElement } from "@polymer/app-layout/app-drawer/app-drawer";
import "@polymer/iron-media-query/iron-media-query";
import { import {
css, css,
CSSResult, CSSResult,
html, html,
LitElement, LitElement,
property, property,
customElement,
PropertyValues, PropertyValues,
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import { listenMediaQuery } from "../common/dom/media_query";
import { fireEvent } from "../common/dom/fire_event"; import { fireEvent } from "../common/dom/fire_event";
import { toggleAttribute } from "../common/dom/toggle_attribute"; import { toggleAttribute } from "../common/dom/toggle_attribute";
import { showNotificationDrawer } from "../dialogs/notifications/show-notification-drawer"; import { showNotificationDrawer } from "../dialogs/notifications/show-notification-drawer";
import type { PolymerChangedEvent } from "../polymer-types";
import type { HomeAssistant, Route } from "../types"; import type { HomeAssistant, Route } from "../types";
import "./partial-panel-resolver"; import "./partial-panel-resolver";
@ -29,6 +29,7 @@ declare global {
} }
} }
@customElement("home-assistant-main")
class HomeAssistantMain extends LitElement { class HomeAssistantMain extends LitElement {
@property() public hass!: HomeAssistant; @property() public hass!: HomeAssistant;
@ -49,11 +50,6 @@ class HomeAssistantMain extends LitElement {
!sidebarNarrow || NON_SWIPABLE_PANELS.indexOf(hass.panelUrl) !== -1; !sidebarNarrow || NON_SWIPABLE_PANELS.indexOf(hass.panelUrl) !== -1;
return html` return html`
<iron-media-query
query="(max-width: 870px)"
@query-matches-changed=${this._narrowChanged}
></iron-media-query>
<app-drawer-layout <app-drawer-layout
fullbleed fullbleed
.forceNarrow=${sidebarNarrow} .forceNarrow=${sidebarNarrow}
@ -108,6 +104,10 @@ class HomeAssistantMain extends LitElement {
narrow: this.narrow!, narrow: this.narrow!,
}); });
}); });
listenMediaQuery("(max-width: 870px)", (matches) => {
this.narrow = matches;
});
} }
protected updated(changedProps: PropertyValues) { protected updated(changedProps: PropertyValues) {
@ -131,10 +131,6 @@ class HomeAssistantMain extends LitElement {
} }
} }
private _narrowChanged(ev: PolymerChangedEvent<boolean>) {
this.narrow = ev.detail.value;
}
private get _sidebarNarrow() { private get _sidebarNarrow() {
return this.narrow || this.hass.dockedSidebar === "always_hidden"; return this.narrow || this.hass.dockedSidebar === "always_hidden";
} }
@ -170,4 +166,8 @@ class HomeAssistantMain extends LitElement {
} }
} }
customElements.define("home-assistant-main", HomeAssistantMain); declare global {
interface HTMLElementTagNameMap {
"home-assistant-main": HomeAssistantMain;
}
}

View File

@ -1,5 +1,5 @@
import "@polymer/app-route/app-location"; import "@polymer/app-route/app-location";
import { html, property, PropertyValues } from "lit-element"; import { html, property, PropertyValues, customElement } from "lit-element";
import { navigate } from "../common/navigate"; import { navigate } from "../common/navigate";
import { getStorageDefaultPanelUrlPath } from "../data/panel"; import { getStorageDefaultPanelUrlPath } from "../data/panel";
import "../resources/custom-card-support"; import "../resources/custom-card-support";
@ -12,6 +12,7 @@ import {
import "./ha-init-page"; import "./ha-init-page";
import "./home-assistant-main"; import "./home-assistant-main";
@customElement("home-assistant")
export class HomeAssistantAppEl extends HassElement { export class HomeAssistantAppEl extends HassElement {
@property() private _route?: Route; @property() private _route?: Route;
@ -138,4 +139,8 @@ export class HomeAssistantAppEl extends HassElement {
} }
} }
customElements.define("home-assistant", HomeAssistantAppEl); declare global {
interface HTMLElementTagNameMap {
"home-assistant": HomeAssistantAppEl;
}
}

View File

@ -1,4 +1,3 @@
import "@polymer/paper-spinner/paper-spinner-lite";
import { import {
css, css,
CSSResult, CSSResult,
@ -7,11 +6,12 @@ import {
LitElement, LitElement,
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import "../components/ha-circular-progress";
@customElement("loading-screen") @customElement("loading-screen")
class LoadingScreen extends LitElement { class LoadingScreen extends LitElement {
protected render(): TemplateResult { protected render(): TemplateResult {
return html` <paper-spinner-lite active></paper-spinner-lite> `; return html` <ha-circular-progress active></ha-circular-progress> `;
} }
static get styles(): CSSResult { static get styles(): CSSResult {

View File

@ -2,7 +2,7 @@ import "@material/mwc-button";
import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable";
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import type { PaperInputElement } from "@polymer/paper-input/paper-input";
import "@polymer/paper-spinner/paper-spinner"; import "../../../../components/ha-circular-progress";
import { import {
css, css,
CSSResult, CSSResult,
@ -132,10 +132,10 @@ class DialogThingtalk extends LitElement {
Skip Skip
</mwc-button> </mwc-button>
<mwc-button @click="${this._generate}" .disabled=${this._submitting}> <mwc-button @click="${this._generate}" .disabled=${this._submitting}>
<paper-spinner <ha-circular-progress
?active="${this._submitting}" ?active="${this._submitting}"
alt="Creating your automation..." alt="Creating your automation..."
></paper-spinner> ></ha-circular-progress>
Create automation Create automation
</mwc-button> </mwc-button>
</div> </div>
@ -245,15 +245,15 @@ class DialogThingtalk extends LitElement {
mwc-button.left { mwc-button.left {
margin-right: auto; margin-right: auto;
} }
mwc-button paper-spinner { mwc-button ha-circular-progress {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 20px; margin-right: 20px;
} }
paper-spinner { ha-circular-progress {
display: none; display: none;
} }
paper-spinner[active] { ha-circular-progress[active] {
display: block; display: block;
} }
.error { .error {

View File

@ -1,6 +1,6 @@
import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item";
import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item-body";
import "@polymer/paper-spinner/paper-spinner"; import "../../../../components/ha-circular-progress";
import { html, LitElement, property, PropertyValues } from "lit-element"; import { html, LitElement, property, PropertyValues } from "lit-element";
import "../../../../components/ha-card"; import "../../../../components/ha-card";
import "../../../../components/ha-switch"; import "../../../../components/ha-switch";
@ -119,7 +119,7 @@ export class CloudWebhooks extends LitElement {
${this._progress.includes(entry.webhook_id) ${this._progress.includes(entry.webhook_id)
? html` ? html`
<div class="progress"> <div class="progress">
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
</div> </div>
` `
: this._cloudHooks![entry.webhook_id] : this._cloudHooks![entry.webhook_id]

View File

@ -1,6 +1,6 @@
import { fireEvent } from "../../../common/dom/fire_event"; import { fireEvent } from "../../../common/dom/fire_event";
import { EntityRegistryEntry } from "../../../data/entity_registry"; import { EntityRegistryEntry } from "../../../data/entity_registry";
import { DialogEntityEditor } from "./dialog-entity-editor"; import type { DialogEntityEditor } from "./dialog-entity-editor";
export interface EntityRegistryDetailDialogParams { export interface EntityRegistryDetailDialogParams {
entry?: EntityRegistryEntry; entry?: EntityRegistryEntry;

View File

@ -2,7 +2,7 @@ import "@material/mwc-button";
import "@polymer/paper-dropdown-menu/paper-dropdown-menu"; import "@polymer/paper-dropdown-menu/paper-dropdown-menu";
import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-listbox/paper-listbox";
import "@polymer/paper-spinner/paper-spinner"; import "../../components/ha-circular-progress";
import { html } from "@polymer/polymer/lib/utils/html-tag"; import { html } from "@polymer/polymer/lib/utils/html-tag";
/* eslint-plugin-disable lit */ /* eslint-plugin-disable lit */
import { PolymerElement } from "@polymer/polymer/polymer-element"; import { PolymerElement } from "@polymer/polymer/polymer-element";
@ -65,7 +65,10 @@ class HaEntityConfig extends PolymerElement {
</template> </template>
<template is="dom-if" if="[[computeShowSpinner(formState)]]"> <template is="dom-if" if="[[computeShowSpinner(formState)]]">
<paper-spinner active="" alt="[[formState]]"></paper-spinner> <ha-circular-progress
active=""
alt="[[formState]]"
></ha-circular-progress>
[[formState]] [[formState]]
</template> </template>
</div> </div>

View File

@ -1,4 +1,4 @@
import "@polymer/paper-spinner/paper-spinner"; import "../../../components/ha-circular-progress";
import { import {
css, css,
CSSResult, CSSResult,
@ -46,7 +46,7 @@ class SystemHealthCard extends LitElement {
sections.push( sections.push(
html` html`
<div class="loading-container"> <div class="loading-container">
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
</div> </div>
` `
); );

View File

@ -1,6 +1,6 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "../../../../../components/ha-icon-button"; import "../../../../../components/ha-icon-button";
import "@polymer/paper-spinner/paper-spinner"; import "../../../../../components/ha-circular-progress";
import { import {
css, css,
CSSResult, CSSResult,
@ -97,7 +97,10 @@ class ZHAAddDevicesPage extends LitElement {
"ui.panel.config.zha.add_device_page.spinner" "ui.panel.config.zha.add_device_page.spinner"
)} )}
</h1> </h1>
<paper-spinner active alt="Searching"></paper-spinner> <ha-circular-progress
active
alt="Searching"
></ha-circular-progress>
` `
: html` : html`
<div> <div>
@ -226,7 +229,7 @@ class ZHAAddDevicesPage extends LitElement {
.error { .error {
color: var(--google-red-500); color: var(--google-red-500);
} }
paper-spinner { ha-circular-progress {
padding: 20px; padding: 20px;
} }
.searching { .searching {

View File

@ -1,7 +1,7 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import type { PaperInputElement } from "@polymer/paper-input/paper-input"; import type { PaperInputElement } from "@polymer/paper-input/paper-input";
import "@polymer/paper-spinner/paper-spinner"; import "../../../../../components/ha-circular-progress";
import { import {
css, css,
CSSResult, CSSResult,
@ -104,12 +104,12 @@ export class ZHAAddGroupPage extends LitElement {
@click="${this._createGroup}" @click="${this._createGroup}"
class="button" class="button"
> >
<paper-spinner <ha-circular-progress
?active="${this._processingAdd}" ?active="${this._processingAdd}"
alt="${this.hass!.localize( alt="${this.hass!.localize(
"ui.panel.config.zha.groups.creating_group" "ui.panel.config.zha.groups.creating_group"
)}" )}"
></paper-spinner> ></ha-circular-progress>
${this.hass!.localize( ${this.hass!.localize(
"ui.panel.config.zha.groups.create" "ui.panel.config.zha.groups.create"
)}</mwc-button )}</mwc-button
@ -171,15 +171,15 @@ export class ZHAAddGroupPage extends LitElement {
ha-config-section *:last-child { ha-config-section *:last-child {
padding-bottom: 24px; padding-bottom: 24px;
} }
mwc-button paper-spinner { mwc-button ha-circular-progress {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 20px; margin-right: 20px;
} }
paper-spinner { ha-circular-progress {
display: none; display: none;
} }
paper-spinner[active] { ha-circular-progress[active] {
display: block; display: block;
} }
.paper-dialog-buttons { .paper-dialog-buttons {

View File

@ -1,6 +1,6 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "../../../../../components/ha-icon-button"; import "../../../../../components/ha-icon-button";
import "@polymer/paper-spinner/paper-spinner"; import "../../../../../components/ha-circular-progress";
import { import {
css, css,
CSSResult, CSSResult,
@ -166,12 +166,12 @@ export class ZHAGroupPage extends LitElement {
@click="${this._removeMembersFromGroup}" @click="${this._removeMembersFromGroup}"
class="button" class="button"
> >
<paper-spinner <ha-circular-progress
?active="${this._processingRemove}" ?active="${this._processingRemove}"
alt=${this.hass.localize( alt=${this.hass.localize(
"ui.panel.config.zha.groups.removing_members" "ui.panel.config.zha.groups.removing_members"
)} )}
></paper-spinner> ></ha-circular-progress>
${this.hass!.localize( ${this.hass!.localize(
"ui.panel.config.zha.groups.remove_members" "ui.panel.config.zha.groups.remove_members"
)}</mwc-button )}</mwc-button
@ -201,12 +201,12 @@ export class ZHAGroupPage extends LitElement {
@click="${this._addMembersToGroup}" @click="${this._addMembersToGroup}"
class="button" class="button"
> >
<paper-spinner <ha-circular-progress
?active="${this._processingAdd}" ?active="${this._processingAdd}"
alt=${this.hass.localize( alt=${this.hass.localize(
"ui.panel.config.zha.groups.adding_members" "ui.panel.config.zha.groups.adding_members"
)} )}
></paper-spinner> ></ha-circular-progress>
${this.hass!.localize( ${this.hass!.localize(
"ui.panel.config.zha.groups.add_members" "ui.panel.config.zha.groups.add_members"
)}</mwc-button )}</mwc-button
@ -309,15 +309,15 @@ export class ZHAGroupPage extends LitElement {
text-decoration: none; text-decoration: none;
} }
mwc-button paper-spinner { mwc-button ha-circular-progress {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 20px; margin-right: 20px;
} }
paper-spinner { ha-circular-progress {
display: none; display: none;
} }
paper-spinner[active] { ha-circular-progress[active] {
display: block; display: block;
} }
.paper-dialog-buttons { .paper-dialog-buttons {

View File

@ -1,5 +1,5 @@
import "../../../../../components/ha-icon-button"; import "../../../../../components/ha-icon-button";
import "@polymer/paper-spinner/paper-spinner"; import "../../../../../components/ha-circular-progress";
import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { UnsubscribeFunc } from "home-assistant-js-websocket";
import { import {
css, css,
@ -92,7 +92,7 @@ export class ZwaveNetwork extends LitElement {
` `
: this._networkStatus.state === ZWAVE_NETWORK_STATE_STARTED : this._networkStatus.state === ZWAVE_NETWORK_STATE_STARTED
? html` ? html`
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
${this.hass!.localize( ${this.hass!.localize(
"ui.panel.config.zwave.network_status.network_starting" "ui.panel.config.zwave.network_status.network_starting"
)}<br /> )}<br />

View File

@ -1,7 +1,7 @@
import "../../../components/ha-icon-button"; import "../../../components/ha-icon-button";
import "@polymer/paper-item/paper-item"; import "@polymer/paper-item/paper-item";
import "@polymer/paper-item/paper-item-body"; import "@polymer/paper-item/paper-item-body";
import "@polymer/paper-spinner/paper-spinner"; import "../../../components/ha-circular-progress";
import { import {
css, css,
CSSResult, CSSResult,
@ -47,7 +47,7 @@ export class SystemLogCard extends LitElement {
${this._items === undefined ${this._items === undefined
? html` ? html`
<div class="loading-container"> <div class="loading-container">
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
</div> </div>
` `
: html` : html`

View File

@ -112,7 +112,11 @@ export class HaConfigServerControl extends LitElement {
)} )}
</mwc-button> </mwc-button>
` `
: html` <paper-spinner active></paper-spinner> `} : html`
<ha-circular-progress
active
></ha-circular-progress>
`}
</div> </div>
` `
: html` : html`

View File

@ -1,6 +1,6 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import "@polymer/paper-spinner/paper-spinner"; import "../../../components/ha-circular-progress";
import { import {
css, css,
CSSResult, CSSResult,
@ -138,7 +138,7 @@ export class DialogAddUser extends LitElement {
${this._loading ${this._loading
? html` ? html`
<div slot="primaryAction" class="submit-spinner"> <div slot="primaryAction" class="submit-spinner">
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
</div> </div>
` `
: html` : html`

View File

@ -1,4 +1,4 @@
import "@polymer/paper-spinner/paper-spinner"; import "../../../components/ha-circular-progress";
import { timeOut } from "@polymer/polymer/lib/utils/async"; import { timeOut } from "@polymer/polymer/lib/utils/async";
import { Debouncer } from "@polymer/polymer/lib/utils/debounce"; import { Debouncer } from "@polymer/polymer/lib/utils/debounce";
import { html } from "@polymer/polymer/lib/utils/html-tag"; import { html } from "@polymer/polymer/lib/utils/html-tag";
@ -92,10 +92,11 @@ class HaPanelDevTemplate extends LocalizeMixin(PolymerElement) {
</div> </div>
<div class="render-pane"> <div class="render-pane">
<paper-spinner <ha-circular-progress
class="render-spinner" class="render-spinner"
active="[[rendering]]" active="[[rendering]]"
></paper-spinner> size="small"
></ha-circular-progress>
<pre class$="[[computeRenderedClasses(error)]]">[[processed]]</pre> <pre class$="[[computeRenderedClasses(error)]]">[[processed]]</pre>
</div> </div>
</div> </div>

View File

@ -11,7 +11,7 @@ import { HomeAssistant } from "../../types";
import type { DateRangePickerRanges } from "../../components/ha-date-range-picker"; import type { DateRangePickerRanges } from "../../components/ha-date-range-picker";
import "../../components/ha-date-range-picker"; import "../../components/ha-date-range-picker";
import { fetchDate, computeHistory } from "../../data/history"; import { fetchDate, computeHistory } from "../../data/history";
import "@polymer/paper-spinner/paper-spinner"; import "../../components/ha-circular-progress";
class HaPanelHistory extends LitElement { class HaPanelHistory extends LitElement {
@property() hass!: HomeAssistant; @property() hass!: HomeAssistant;
@ -73,10 +73,10 @@ class HaPanelHistory extends LitElement {
></ha-date-range-picker> ></ha-date-range-picker>
</div> </div>
${this._isLoading ${this._isLoading
? html`<paper-spinner ? html`<ha-circular-progress
active active
alt=${this.hass.localize("ui.common.loading")} alt=${this.hass.localize("ui.common.loading")}
></paper-spinner>` ></ha-circular-progress>`
: html` : html`
<state-history-charts <state-history-charts
.hass=${this.hass} .hass=${this.hass}
@ -190,7 +190,7 @@ class HaPanelHistory extends LitElement {
.content { .content {
padding: 0 16px 16px; padding: 0 16px 16px;
} }
paper-spinner { ha-circular-progress {
position: absolute; position: absolute;
left: 50%; left: 50%;
top: 50%; top: 50%;

View File

@ -2,7 +2,7 @@ import "@polymer/app-layout/app-header-layout/app-header-layout";
import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-header/app-header";
import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/app-layout/app-toolbar/app-toolbar";
import "../../components/ha-icon-button"; import "../../components/ha-icon-button";
import "@polymer/paper-spinner/paper-spinner"; import "../../components/ha-circular-progress";
import { computeRTL } from "../../common/util/compute_rtl"; import { computeRTL } from "../../common/util/compute_rtl";
import "../../components/entity/ha-entity-picker"; import "../../components/entity/ha-entity-picker";
import "../../components/ha-menu-button"; import "../../components/ha-menu-button";
@ -105,10 +105,10 @@ export class HaPanelLogbook extends LitElement {
</div> </div>
${this._isLoading ${this._isLoading
? html`<paper-spinner ? html`<ha-circular-progress
active active
alt=${this.hass.localize("ui.common.loading")} alt=${this.hass.localize("ui.common.loading")}
></paper-spinner>` ></ha-circular-progress>`
: html`<ha-logbook : html`<ha-logbook
.hass=${this.hass} .hass=${this.hass}
.entries=${this._entries} .entries=${this._entries}
@ -239,7 +239,7 @@ export class HaPanelLogbook extends LitElement {
margin-right: 0; margin-right: 0;
} }
paper-spinner { ha-circular-progress {
position: absolute; position: absolute;
left: 50%; left: 50%;
top: 50%; top: 50%;

View File

@ -10,10 +10,10 @@ import {
PropertyValues, PropertyValues,
} from "lit-element"; } from "lit-element";
import "../../../components/ha-card"; import "../../../components/ha-card";
import "../../../components/ha-circular-progress";
import { HomeAssistant } from "../../../types"; import { HomeAssistant } from "../../../types";
import { LovelaceCard } from "../types"; import { LovelaceCard } from "../types";
import { LovelaceCardConfig } from "../../../data/lovelace"; import { LovelaceCardConfig } from "../../../data/lovelace";
import "@polymer/paper-spinner/paper-spinner-lite";
import { fireEvent } from "../../../common/dom/fire_event"; import { fireEvent } from "../../../common/dom/fire_event";
import { STATE_NOT_RUNNING } from "home-assistant-js-websocket"; import { STATE_NOT_RUNNING } from "home-assistant-js-websocket";
@ -47,7 +47,7 @@ export class HuiStartingCard extends LitElement implements LovelaceCard {
return html` return html`
<div class="content"> <div class="content">
<paper-spinner-lite active></paper-spinner-lite> <ha-circular-progress active></ha-circular-progress>
${this.hass.localize("ui.panel.lovelace.cards.starting.description")} ${this.hass.localize("ui.panel.lovelace.cards.starting.description")}
</div> </div>
`; `;
@ -59,7 +59,7 @@ export class HuiStartingCard extends LitElement implements LovelaceCard {
display: block; display: block;
height: calc(100vh - 64px); height: calc(100vh - 64px);
} }
paper-spinner-lite { ha-circular-progress {
padding-bottom: 20px; padding-bottom: 20px;
} }
.content { .content {

View File

@ -140,11 +140,11 @@ export class HuiCardEditor extends LitElement {
<div class="gui-editor"> <div class="gui-editor">
${this._loading ${this._loading
? html` ? html`
<paper-spinner <ha-circular-progress
active active
alt="Loading" alt="Loading"
class="center margin-bot" class="center margin-bot"
></paper-spinner> ></ha-circular-progress>
` `
: this._configElement} : this._configElement}
</div> </div>
@ -303,7 +303,7 @@ export class HuiCardEditor extends LitElement {
.warning { .warning {
color: #ffa726; color: #ffa726;
} }
paper-spinner { ha-circular-progress {
display: block; display: block;
margin: auto; margin: auto;
} }

View File

@ -210,7 +210,7 @@ export class HuiCardPicker extends LitElement {
this._renderCardElement(card), this._renderCardElement(card),
html` html`
<div class="card spinner"> <div class="card spinner">
<paper-spinner active alt="Loading"></paper-spinner> <ha-circular-progress active alt="Loading"></ha-circular-progress>
</div> </div>
` `
)}`, )}`,

View File

@ -17,6 +17,7 @@ import type {
LovelaceViewConfig, LovelaceViewConfig,
} from "../../../../data/lovelace"; } from "../../../../data/lovelace";
import { haStyleDialog } from "../../../../resources/styles"; import { haStyleDialog } from "../../../../resources/styles";
import "../../../../components/ha-circular-progress";
import type { HomeAssistant } from "../../../../types"; import type { HomeAssistant } from "../../../../types";
import { showSaveSuccessToast } from "../../../../util/toast-saved-success"; import { showSaveSuccessToast } from "../../../../util/toast-saved-success";
import { addCard, replaceCard } from "../config-util"; import { addCard, replaceCard } from "../config-util";
@ -167,10 +168,10 @@ export class HuiDialogEditCard extends LitElement {
></hui-card-preview> ></hui-card-preview>
${this._error ${this._error
? html` ? html`
<paper-spinner <ha-circular-progress
active active
alt="Can't update card" alt="Can't update card"
></paper-spinner> ></ha-circular-progress>
` `
: ``} : ``}
</div> </div>
@ -205,7 +206,10 @@ export class HuiDialogEditCard extends LitElement {
> >
${this._saving ${this._saving
? html` ? html`
<paper-spinner active alt="Saving"></paper-spinner> <ha-circular-progress
active
alt="Saving"
></ha-circular-progress>
` `
: this.hass!.localize("ui.common.save")} : this.hass!.localize("ui.common.save")}
</mwc-button> </mwc-button>
@ -286,7 +290,7 @@ export class HuiDialogEditCard extends LitElement {
} }
} }
mwc-button paper-spinner { mwc-button ha-circular-progress {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 20px; margin-right: 20px;
@ -303,7 +307,7 @@ export class HuiDialogEditCard extends LitElement {
.element-preview { .element-preview {
position: relative; position: relative;
} }
.element-preview paper-spinner { .element-preview ha-circular-progress {
top: 50%; top: 50%;
left: 50%; left: 50%;
position: absolute; position: absolute;

View File

@ -111,7 +111,10 @@ export class HuiDialogSuggestCard extends LitElement {
<mwc-button ?disabled="${this._saving}" @click="${this._save}"> <mwc-button ?disabled="${this._saving}" @click="${this._save}">
${this._saving ${this._saving
? html` ? html`
<paper-spinner active alt="Saving"></paper-spinner> <ha-circular-progress
active
alt="Saving"
></ha-circular-progress>
` `
: this.hass!.localize( : this.hass!.localize(
"ui.panel.lovelace.editor.suggest_card.add" "ui.panel.lovelace.editor.suggest_card.add"
@ -143,7 +146,7 @@ export class HuiDialogSuggestCard extends LitElement {
ha-paper-dialog { ha-paper-dialog {
max-width: 845px; max-width: 845px;
} }
mwc-button paper-spinner { mwc-button ha-circular-progress {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 20px; margin-right: 20px;

View File

@ -1,6 +1,6 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable";
import "@polymer/paper-spinner/paper-spinner"; import "../../../components/ha-circular-progress";
import { import {
css, css,
CSSResult, CSSResult,
@ -118,10 +118,10 @@ export class HuiSaveConfig extends LitElement {
?disabled="${this._saving}" ?disabled="${this._saving}"
@click="${this._saveConfig}" @click="${this._saveConfig}"
> >
<paper-spinner <ha-circular-progress
?active="${this._saving}" ?active="${this._saving}"
alt="Saving" alt="Saving"
></paper-spinner> ></ha-circular-progress>
${this.hass!.localize( ${this.hass!.localize(
"ui.panel.lovelace.editor.save_config.save" "ui.panel.lovelace.editor.save_config.save"
)} )}
@ -195,13 +195,13 @@ export class HuiSaveConfig extends LitElement {
ha-paper-dialog { ha-paper-dialog {
max-width: 650px; max-width: 650px;
} }
paper-spinner { ha-circular-progress {
display: none; display: none;
} }
paper-spinner[active] { ha-circular-progress[active] {
display: block; display: block;
} }
mwc-button paper-spinner { mwc-button ha-circular-progress {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 20px; margin-right: 20px;

View File

@ -1,6 +1,5 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable";
import "@polymer/paper-spinner/paper-spinner";
import { import {
css, css,
CSSResult, CSSResult,
@ -11,6 +10,7 @@ import {
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import "../../../../components/dialog/ha-paper-dialog"; import "../../../../components/dialog/ha-paper-dialog";
import "../../../../components/ha-circular-progress";
import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog";
import type { LovelaceConfig } from "../../../../data/lovelace"; import type { LovelaceConfig } from "../../../../data/lovelace";
import { haStyleDialog } from "../../../../resources/styles"; import { haStyleDialog } from "../../../../resources/styles";
@ -75,10 +75,10 @@ export class HuiDialogEditLovelace extends LitElement {
?disabled="${!this._config || this._saving}" ?disabled="${!this._config || this._saving}"
@click="${this._save}" @click="${this._save}"
> >
<paper-spinner <ha-circular-progress
?active="${this._saving}" ?active="${this._saving}"
alt="Saving" alt="Saving"
></paper-spinner> ></ha-circular-progress>
${this.hass!.localize("ui.common.save")}</mwc-button ${this.hass!.localize("ui.common.save")}</mwc-button
> >
</div> </div>
@ -148,15 +148,15 @@ export class HuiDialogEditLovelace extends LitElement {
ha-paper-dialog { ha-paper-dialog {
max-width: 650px; max-width: 650px;
} }
mwc-button paper-spinner { mwc-button ha-circular-progress {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 20px; margin-right: 20px;
} }
paper-spinner { ha-circular-progress {
display: none; display: none;
} }
paper-spinner[active] { ha-circular-progress[active] {
display: block; display: block;
} }
`, `,

View File

@ -1,7 +1,6 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable";
import "../../../../components/ha-icon-button"; import "../../../../components/ha-icon-button";
import "@polymer/paper-spinner/paper-spinner";
import "@polymer/paper-tabs/paper-tab"; import "@polymer/paper-tabs/paper-tab";
import "@polymer/paper-tabs/paper-tabs"; import "@polymer/paper-tabs/paper-tabs";
import { import {
@ -16,6 +15,7 @@ import {
import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event"; import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event";
import { navigate } from "../../../../common/navigate"; import { navigate } from "../../../../common/navigate";
import "../../../../components/dialog/ha-paper-dialog"; import "../../../../components/dialog/ha-paper-dialog";
import "../../../../components/ha-circular-progress";
import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog"; import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialog";
import type { import type {
LovelaceBadgeConfig, LovelaceBadgeConfig,
@ -199,10 +199,10 @@ export class HuiDialogEditView extends LitElement {
?disabled="${!this._config || this._saving}" ?disabled="${!this._config || this._saving}"
@click="${this._save}" @click="${this._save}"
> >
<paper-spinner <ha-circular-progress
?active="${this._saving}" ?active="${this._saving}"
alt="Saving" alt="Saving"
></paper-spinner> ></ha-circular-progress>
${this.hass!.localize("ui.common.save")}</mwc-button ${this.hass!.localize("ui.common.save")}</mwc-button
> >
</div> </div>
@ -369,7 +369,7 @@ export class HuiDialogEditView extends LitElement {
text-transform: uppercase; text-transform: uppercase;
border-bottom: 1px solid rgba(0, 0, 0, 0.1); border-bottom: 1px solid rgba(0, 0, 0, 0.1);
} }
mwc-button paper-spinner { mwc-button ha-circular-progress {
width: 14px; width: 14px;
height: 14px; height: 14px;
margin-right: 20px; margin-right: 20px;
@ -377,10 +377,10 @@ export class HuiDialogEditView extends LitElement {
mwc-button.warning { mwc-button.warning {
margin-right: auto; margin-right: auto;
} }
paper-spinner { ha-circular-progress {
display: none; display: none;
} }
paper-spinner[active] { ha-circular-progress[active] {
display: block; display: block;
} }
paper-dialog-scrollable { paper-dialog-scrollable {

View File

@ -1,4 +1,4 @@
import "@polymer/paper-spinner/paper-spinner"; import "../../../components/ha-circular-progress";
import { HassEntity } from "home-assistant-js-websocket"; import { HassEntity } from "home-assistant-js-websocket";
import { import {
css, css,
@ -74,7 +74,7 @@ export class HuiGraphHeaderFooter extends LitElement
if (!this._coordinates) { if (!this._coordinates) {
return html` return html`
<div class="container"> <div class="container">
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
</div> </div>
`; `;
} }
@ -164,7 +164,7 @@ export class HuiGraphHeaderFooter extends LitElement
static get styles(): CSSResult { static get styles(): CSSResult {
return css` return css`
paper-spinner { ha-circular-progress {
position: absolute; position: absolute;
top: calc(50% - 28px); top: calc(50% - 28px);
} }

View File

@ -3,7 +3,7 @@ import "@polymer/app-layout/app-header-layout/app-header-layout";
import "@polymer/app-layout/app-header/app-header"; import "@polymer/app-layout/app-header/app-header";
import "@polymer/app-layout/app-toolbar/app-toolbar"; import "@polymer/app-layout/app-toolbar/app-toolbar";
import "../../components/ha-icon-button"; import "../../components/ha-icon-button";
import "@polymer/paper-spinner/paper-spinner"; import "../../components/ha-circular-progress";
import { safeDump, safeLoad } from "js-yaml"; import { safeDump, safeLoad } from "js-yaml";
import { import {
css, css,

View File

@ -1,5 +1,5 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-spinner/paper-spinner"; import "../../components/ha-circular-progress";
import { html } from "@polymer/polymer/lib/utils/html-tag"; import { html } from "@polymer/polymer/lib/utils/html-tag";
/* eslint-plugin-disable lit */ /* eslint-plugin-disable lit */
import { PolymerElement } from "@polymer/polymer/polymer-element"; import { PolymerElement } from "@polymer/polymer/polymer-element";
@ -54,7 +54,7 @@ class HaDialogShowAudioMessage extends LocalizeMixin(PolymerElement) {
[[localize('ui.panel.mailbox.playback_title')]] [[localize('ui.panel.mailbox.playback_title')]]
<div class="icon"> <div class="icon">
<template is="dom-if" if="[[_loading]]"> <template is="dom-if" if="[[_loading]]">
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
</template> </template>
<ha-icon-button <ha-icon-button
id="delicon" id="delicon"

View File

@ -1,6 +1,6 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-dialog/paper-dialog"; import "@polymer/paper-dialog/paper-dialog";
import "@polymer/paper-spinner/paper-spinner"; import "../../components/ha-circular-progress";
import { html } from "@polymer/polymer/lib/utils/html-tag"; import { html } from "@polymer/polymer/lib/utils/html-tag";
/* eslint-plugin-disable lit */ /* eslint-plugin-disable lit */
import { PolymerElement } from "@polymer/polymer/polymer-element"; import { PolymerElement } from "@polymer/polymer/polymer-element";
@ -71,7 +71,7 @@ class HaChangePasswordCard extends LocalizeMixin(PolymerElement) {
</div> </div>
<div class="card-actions"> <div class="card-actions">
<template is="dom-if" if="[[_loading]]"> <template is="dom-if" if="[[_loading]]">
<div><paper-spinner active></paper-spinner></div> <div><ha-circular-progress active></ha-circular-progress></div>
</template> </template>
<template is="dom-if" if="[[!_loading]]"> <template is="dom-if" if="[[!_loading]]">
<mwc-button on-click="_changePassword" <mwc-button on-click="_changePassword"

View File

@ -1,6 +1,6 @@
import "@material/mwc-button"; import "@material/mwc-button";
import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable"; import "@polymer/paper-dialog-scrollable/paper-dialog-scrollable";
import "@polymer/paper-spinner/paper-spinner"; import "../../components/ha-circular-progress";
import { html } from "@polymer/polymer/lib/utils/html-tag"; import { html } from "@polymer/polymer/lib/utils/html-tag";
/* eslint-plugin-disable lit */ /* eslint-plugin-disable lit */
import { PolymerElement } from "@polymer/polymer/polymer-element"; import { PolymerElement } from "@polymer/polymer/polymer-element";
@ -70,7 +70,7 @@ class HaMfaModuleSetupFlow extends LocalizeMixin(EventsMixin(PolymerElement)) {
</template> </template>
<template is="dom-if" if="[[!_step]]"> <template is="dom-if" if="[[!_step]]">
<div class="init-spinner"> <div class="init-spinner">
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
</div> </div>
</template> </template>
<template is="dom-if" if="[[_step]]"> <template is="dom-if" if="[[_step]]">
@ -125,7 +125,7 @@ class HaMfaModuleSetupFlow extends LocalizeMixin(EventsMixin(PolymerElement)) {
<template is="dom-if" if="[[_equals(_step.type, 'form')]]"> <template is="dom-if" if="[[_equals(_step.type, 'form')]]">
<template is="dom-if" if="[[_loading]]"> <template is="dom-if" if="[[_loading]]">
<div class="submit-spinner"> <div class="submit-spinner">
<paper-spinner active></paper-spinner> <ha-circular-progress active></ha-circular-progress>
</div> </div>
</template> </template>
<template is="dom-if" if="[[!_loading]]"> <template is="dom-if" if="[[!_loading]]">

View File

@ -60,12 +60,6 @@ documentContainer.innerHTML = `<custom-style>
--paper-grey-200: #eeeeee; /* for ha-date-picker-style */ --paper-grey-200: #eeeeee; /* for ha-date-picker-style */
--paper-grey-500: #9e9e9e; /* --label-badge-grey */ --paper-grey-500: #9e9e9e; /* --label-badge-grey */
/* for paper-spinner */
--google-red-500: #db4437;
--google-blue-500: #4285f4;
--google-green-500: #0f9d58;
--google-yellow-500: #f4b400;
/* for paper-slider */ /* for paper-slider */
--paper-green-400: #66bb6a; --paper-green-400: #66bb6a;
--paper-blue-400: #42a5f5; --paper-blue-400: #42a5f5;

View File

@ -1,7 +1,6 @@
import { css } from "lit-element"; import { css } from "lit-element";
export const derivedStyles = { export const derivedStyles = {
"paper-spinner-color": "var(--primary-color)",
"error-state-color": "var(--error-color)", "error-state-color": "var(--error-color)",
"state-icon-unavailable-color": "var(--disabled-text-color)", "state-icon-unavailable-color": "var(--disabled-text-color)",
"sidebar-text-color": "var(--primary-text-color)", "sidebar-text-color": "var(--primary-text-color)",

View File

@ -1142,6 +1142,9 @@
} }
} }
}, },
"mqtt": {
"title": "MQTT"
},
"person": { "person": {
"caption": "Persone", "caption": "Persone",
"description": "Bestuur die persone wat Home Assistant op spoor.", "description": "Bestuur die persone wat Home Assistant op spoor.",
@ -1377,9 +1380,6 @@
"events": { "events": {
"title": "Gebeure" "title": "Gebeure"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"title": "Dienste" "title": "Dienste"
}, },

View File

@ -920,6 +920,9 @@
} }
} }
}, },
"mqtt": {
"title": "MQTT"
},
"person": { "person": {
"detail": { "detail": {
"device_tracker_pick": "اختر جهاز لتتبع" "device_tracker_pick": "اختر جهاز لتتبع"
@ -1045,9 +1048,6 @@
"events": { "events": {
"title": "أحداث" "title": "أحداث"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"title": "الخدمات" "title": "الخدمات"
}, },

View File

@ -939,6 +939,9 @@
"cant_edit_yaml": "Използвате Lovelace в YAML режим, следователно не можете да управлявате ресурсите си чрез потребителския интерфейс. Управлявайте ги в configuration.yaml." "cant_edit_yaml": "Използвате Lovelace в YAML режим, следователно не можете да управлявате ресурсите си чрез потребителския интерфейс. Управлявайте ги в configuration.yaml."
} }
}, },
"mqtt": {
"title": "MQTT"
},
"person": { "person": {
"caption": "Хора", "caption": "Хора",
"description": "Управлявайте хората, които следите от Home Assistant.", "description": "Управлявайте хората, които следите от Home Assistant.",
@ -1092,9 +1095,6 @@
"events": { "events": {
"title": "Събития" "title": "Събития"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"title": "Услуги" "title": "Услуги"
}, },

View File

@ -240,9 +240,23 @@
}, },
"panel": { "panel": {
"config": { "config": {
"automation": {
"editor": {
"triggers": {
"type": {
"mqtt": {
"label": "MQTT"
}
}
}
}
},
"cloud": { "cloud": {
"caption": "Home Assistant Cloud" "caption": "Home Assistant Cloud"
}, },
"mqtt": {
"title": "MQTT"
},
"zwave": { "zwave": {
"caption": "Z-Wave", "caption": "Z-Wave",
"node_config": { "node_config": {
@ -255,9 +269,6 @@
"events": { "events": {
"title": "Događanja" "title": "Događanja"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"title": "Usluge" "title": "Usluge"
}, },

View File

@ -506,6 +506,11 @@
"clear": "Esborra", "clear": "Esborra",
"show_areas": "Mostra àrees" "show_areas": "Mostra àrees"
}, },
"date-range-picker": {
"end_date": "Data final",
"select": "Selecciona",
"start_date": "Data inici"
},
"device-picker": { "device-picker": {
"clear": "Esborra", "clear": "Esborra",
"device": "Dispositiu", "device": "Dispositiu",
@ -695,6 +700,7 @@
"zha_device_info": { "zha_device_info": {
"buttons": { "buttons": {
"add": "Afegeix dispositius a través d'aquest dispositiu", "add": "Afegeix dispositius a través d'aquest dispositiu",
"clusters": "Gestiona clústers",
"reconfigure": "Reconfigurar dispositiu", "reconfigure": "Reconfigurar dispositiu",
"remove": "Eliminar dispositiu", "remove": "Eliminar dispositiu",
"zigbee_information": "Signatura Zigbee del dispositiu" "zigbee_information": "Signatura Zigbee del dispositiu"
@ -1557,6 +1563,20 @@
} }
} }
}, },
"mqtt": {
"button": "Configura",
"description_listen": "Escolta d'un tòpic",
"description_publish": "Publicació d'un paquet",
"listening_to": "Escoltant a",
"message_received": "Missatge {id} rebut a {topic} a les {time}:",
"payload": "Dades/missatge (plantilla permesa)",
"publish": "Publica",
"start_listening": "Comença a escoltar",
"stop_listening": "Deixa d'escoltar",
"subscribe_to": "Tòpic al qual subscriure's",
"title": "MQTT",
"topic": "tòpic"
},
"person": { "person": {
"add_person": "Afegeix persona", "add_person": "Afegeix persona",
"caption": "Persones", "caption": "Persones",
@ -1979,19 +1999,6 @@
"title": "Esdeveniments", "title": "Esdeveniments",
"type": "Tipus d'esdeveniment" "type": "Tipus d'esdeveniment"
}, },
"mqtt": {
"description_listen": "Escolta d'un tòpic",
"description_publish": "Publicació d'un paquet",
"listening_to": "Escoltant a",
"message_received": "Missatge {id} rebut a {topic} a les {time}:",
"payload": "Dades/missatge (plantilla permesa)",
"publish": "Publica",
"start_listening": "Comença a escoltar",
"stop_listening": "Deixa d'escoltar",
"subscribe_to": "Tòpic al qual subscriure's",
"title": "MQTT",
"topic": "tòpic"
},
"services": { "services": {
"alert_parsing_yaml": "S'ha produït un error analitzant el codi YAML: {data}", "alert_parsing_yaml": "S'ha produït un error analitzant el codi YAML: {data}",
"call_service": "Crida servei", "call_service": "Crida servei",
@ -2035,11 +2042,23 @@
}, },
"history": { "history": {
"period": "Període", "period": "Període",
"ranges": {
"last_week": "La setmana passada",
"this_week": "Aquesta setmana",
"today": "Avui",
"yesterday": "Ahir"
},
"showing_entries": "Mostrant entrades de" "showing_entries": "Mostrant entrades de"
}, },
"logbook": { "logbook": {
"entries_not_found": "No s'han trobat entrades al registre.", "entries_not_found": "No s'han trobat entrades al registre.",
"period": "Període", "period": "Període",
"ranges": {
"last_week": "La setmana passada",
"this_week": "Aquesta setmana",
"today": "Avui",
"yesterday": "Ahir"
},
"showing_entries": "Mostrant entrades de" "showing_entries": "Mostrant entrades de"
}, },
"lovelace": { "lovelace": {

View File

@ -1541,6 +1541,19 @@
} }
} }
}, },
"mqtt": {
"description_listen": "Naslouchat tématu",
"description_publish": "Publikovat paket",
"listening_to": "Naslouchám",
"message_received": "Zpráva {id} přijata na {topic} v {time} :",
"payload": "Obsah",
"publish": "Publikovat",
"start_listening": "Začít naslouchat",
"stop_listening": "Přestat naslouchat",
"subscribe_to": "Téma k odběru",
"title": "MQTT",
"topic": "téma"
},
"person": { "person": {
"add_person": "Přidat osobu", "add_person": "Přidat osobu",
"caption": "Osoby", "caption": "Osoby",
@ -1947,19 +1960,6 @@
"title": "Události", "title": "Události",
"type": "Typ události" "type": "Typ události"
}, },
"mqtt": {
"description_listen": "Naslouchat tématu",
"description_publish": "Publikovat paket",
"listening_to": "Naslouchám",
"message_received": "Zpráva {id} přijata na {topic} v {time} :",
"payload": "Obsah",
"publish": "Publikovat",
"start_listening": "Začít naslouchat",
"stop_listening": "Přestat naslouchat",
"subscribe_to": "Téma k odběru",
"title": "MQTT",
"topic": "téma"
},
"services": { "services": {
"alert_parsing_yaml": "Chyba při parsování YAML: {data}", "alert_parsing_yaml": "Chyba při parsování YAML: {data}",
"call_service": "Zavolat službu", "call_service": "Zavolat službu",

View File

@ -780,6 +780,9 @@
} }
} }
}, },
"mqtt": {
"title": "MQTT"
},
"person": { "person": {
"caption": "Pobl", "caption": "Pobl",
"description": "Rheoli'r pobl mae Home Assistant yn tracio.", "description": "Rheoli'r pobl mae Home Assistant yn tracio.",
@ -935,9 +938,6 @@
"events": { "events": {
"title": "Digwyddiadau" "title": "Digwyddiadau"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"title": "Gwasanaethau" "title": "Gwasanaethau"
}, },

View File

@ -1557,6 +1557,19 @@
} }
} }
}, },
"mqtt": {
"description_listen": "Lyt til et emne",
"description_publish": "Udsend en pakke",
"listening_to": "Lytter til",
"message_received": "Besked {id} er modtaget på {topic} kl. {time}:",
"payload": "Payload (skabelon tilladt)",
"publish": "Udsend",
"start_listening": "Start med at lytte",
"stop_listening": "Stop med at lytte",
"subscribe_to": "Emne at abonnere på",
"title": "MQTT",
"topic": "emne"
},
"person": { "person": {
"add_person": "Tilføj person", "add_person": "Tilføj person",
"caption": "Personer", "caption": "Personer",
@ -1952,19 +1965,6 @@
"title": "Hændelser", "title": "Hændelser",
"type": "Hændelsestype" "type": "Hændelsestype"
}, },
"mqtt": {
"description_listen": "Lyt til et emne",
"description_publish": "Udsend en pakke",
"listening_to": "Lytter til",
"message_received": "Besked {id} er modtaget på {topic} kl. {time}:",
"payload": "Payload (skabelon tilladt)",
"publish": "Udsend",
"start_listening": "Start med at lytte",
"stop_listening": "Stop med at lytte",
"subscribe_to": "Emne at abonnere på",
"title": "MQTT",
"topic": "emne"
},
"services": { "services": {
"alert_parsing_yaml": "Fejl under afkodning af YAML: {data}", "alert_parsing_yaml": "Fejl under afkodning af YAML: {data}",
"call_service": "Kald tjeneste", "call_service": "Kald tjeneste",

View File

@ -1551,6 +1551,19 @@
} }
} }
}, },
"mqtt": {
"description_listen": "Auf einen Topic hören",
"description_publish": "Ein Paket veröffentlichen",
"listening_to": "Anhören von",
"message_received": "Nachricht {id} empfangen auf {topic} um {time}:",
"payload": "Payload (Vorlage erlaubt)",
"publish": "Veröffentlichen",
"start_listening": "Anfangen zuzuhören",
"stop_listening": "Aufhören zuzuhören",
"subscribe_to": "Topic abonnieren",
"title": "MQTT",
"topic": "Topic"
},
"person": { "person": {
"add_person": "Person hinzufügen", "add_person": "Person hinzufügen",
"caption": "Personen", "caption": "Personen",
@ -1968,19 +1981,6 @@
"title": "Ereignisse", "title": "Ereignisse",
"type": "Ereignistyp" "type": "Ereignistyp"
}, },
"mqtt": {
"description_listen": "Auf einen Topic hören",
"description_publish": "Ein Paket veröffentlichen",
"listening_to": "Anhören von",
"message_received": "Nachricht {id} empfangen auf {topic} um {time}:",
"payload": "Payload (Vorlage erlaubt)",
"publish": "Veröffentlichen",
"start_listening": "Anfangen zuzuhören",
"stop_listening": "Aufhören zuzuhören",
"subscribe_to": "Topic abonnieren",
"title": "MQTT",
"topic": "Topic"
},
"services": { "services": {
"alert_parsing_yaml": "Fehler beim Parsen von YAML: {data}", "alert_parsing_yaml": "Fehler beim Parsen von YAML: {data}",
"call_service": "Dienst ausführen", "call_service": "Dienst ausführen",

View File

@ -1319,6 +1319,19 @@
} }
} }
}, },
"mqtt": {
"description_listen": "Ακούστε ένα θέμα",
"description_publish": "Δημοσιεύστε ένα πακέτο",
"listening_to": "Ακούγοντας το",
"message_received": "Το μήνυμα {id} ελήφθη στο {topic} στις {time}:",
"payload": "Τιμή φορτίου (επιτρέπεται το πρότυπο)",
"publish": "Δημοσιεύστε",
"start_listening": "Ξεκινήστε να ακούτε",
"stop_listening": "Σταματήστε να ακούτε",
"subscribe_to": "Θέμα για το οποίο θα εγγραφείτε",
"title": "MQTT",
"topic": "θέμα"
},
"person": { "person": {
"add_person": "Προσθέστε Άτομο", "add_person": "Προσθέστε Άτομο",
"caption": "Άτομα", "caption": "Άτομα",
@ -1651,19 +1664,6 @@
"title": "Γεγονότα", "title": "Γεγονότα",
"type": "Τύπος συμβάντος" "type": "Τύπος συμβάντος"
}, },
"mqtt": {
"description_listen": "Ακούστε ένα θέμα",
"description_publish": "Δημοσιεύστε ένα πακέτο",
"listening_to": "Ακούγοντας το",
"message_received": "Το μήνυμα {id} ελήφθη στο {topic} στις {time}:",
"payload": "Τιμή φορτίου (επιτρέπεται το πρότυπο)",
"publish": "Δημοσιεύστε",
"start_listening": "Ξεκινήστε να ακούτε",
"stop_listening": "Σταματήστε να ακούτε",
"subscribe_to": "Θέμα για το οποίο θα εγγραφείτε",
"title": "MQTT",
"topic": "θέμα"
},
"services": { "services": {
"alert_parsing_yaml": "Σφάλμα ανάλυσης του YAML: {data}", "alert_parsing_yaml": "Σφάλμα ανάλυσης του YAML: {data}",
"call_service": "Κάλεσμα υπηρεσίας", "call_service": "Κάλεσμα υπηρεσίας",

View File

@ -506,6 +506,11 @@
"clear": "Clear", "clear": "Clear",
"show_areas": "Show areas" "show_areas": "Show areas"
}, },
"date-range-picker": {
"end_date": "End date",
"select": "Select",
"start_date": "Start date"
},
"device-picker": { "device-picker": {
"clear": "Clear", "clear": "Clear",
"device": "Device", "device": "Device",
@ -695,6 +700,7 @@
"zha_device_info": { "zha_device_info": {
"buttons": { "buttons": {
"add": "Add Devices via this device", "add": "Add Devices via this device",
"clusters": "Manage Clusters",
"reconfigure": "Reconfigure Device", "reconfigure": "Reconfigure Device",
"remove": "Remove Device", "remove": "Remove Device",
"zigbee_information": "Zigbee device signature" "zigbee_information": "Zigbee device signature"
@ -1557,6 +1563,20 @@
} }
} }
}, },
"mqtt": {
"button": "Configure",
"description_listen": "Listen to a topic",
"description_publish": "Publish a packet",
"listening_to": "Listening to",
"message_received": "Message {id} received on {topic} at {time}:",
"payload": "Payload (template allowed)",
"publish": "Publish",
"start_listening": "Start listening",
"stop_listening": "Stop listening",
"subscribe_to": "Topic to subscribe to",
"title": "MQTT",
"topic": "topic"
},
"person": { "person": {
"add_person": "Add Person", "add_person": "Add Person",
"caption": "Persons", "caption": "Persons",
@ -1979,19 +1999,6 @@
"title": "Events", "title": "Events",
"type": "Event Type" "type": "Event Type"
}, },
"mqtt": {
"description_listen": "Listen to a topic",
"description_publish": "Publish a packet",
"listening_to": "Listening to",
"message_received": "Message {id} received on {topic} at {time}:",
"payload": "Payload (template allowed)",
"publish": "Publish",
"start_listening": "Start listening",
"stop_listening": "Stop listening",
"subscribe_to": "Topic to subscribe to",
"title": "MQTT",
"topic": "topic"
},
"services": { "services": {
"alert_parsing_yaml": "Error parsing YAML: {data}", "alert_parsing_yaml": "Error parsing YAML: {data}",
"call_service": "Call Service", "call_service": "Call Service",
@ -2035,11 +2042,23 @@
}, },
"history": { "history": {
"period": "Period", "period": "Period",
"ranges": {
"last_week": "Last week",
"this_week": "This week",
"today": "Today",
"yesterday": "Yesterday"
},
"showing_entries": "Showing entries for" "showing_entries": "Showing entries for"
}, },
"logbook": { "logbook": {
"entries_not_found": "No logbook entries found.", "entries_not_found": "No logbook entries found.",
"period": "Period", "period": "Period",
"ranges": {
"last_week": "Last week",
"this_week": "This week",
"today": "Today",
"yesterday": "Yesterday"
},
"showing_entries": "Showing entries for" "showing_entries": "Showing entries for"
}, },
"lovelace": { "lovelace": {

View File

@ -172,6 +172,18 @@
"no_issues": "Ne estas novaj aferoj!", "no_issues": "Ne estas novaj aferoj!",
"refresh": "Refreŝigi" "refresh": "Refreŝigi"
}, },
"mqtt": {
"description_listen": "Aŭskulti temon",
"description_publish": "Publikigi pakaĵon",
"listening_to": "Aŭskulti",
"message_received": "Mesaĝo {id} ricevita sur {topic} je {time} :",
"payload": "Pagŝarĝo (ŝablono permesita)",
"publish": "Publikigi",
"start_listening": "Komenci aŭskulti",
"stop_listening": "Halti aŭskulti",
"subscribe_to": "Temo por aboni",
"topic": "temo"
},
"scene": { "scene": {
"activated": "Aktivigita sceno {name}.", "activated": "Aktivigita sceno {name}.",
"caption": "Scenoj", "caption": "Scenoj",
@ -316,18 +328,6 @@
"subscribe_to": "Evento por aboni", "subscribe_to": "Evento por aboni",
"type": "Eventa Tipo" "type": "Eventa Tipo"
}, },
"mqtt": {
"description_listen": "Aŭskulti temon",
"description_publish": "Publikigi pakaĵon",
"listening_to": "Aŭskulti",
"message_received": "Mesaĝo {id} ricevita sur {topic} je {time} :",
"payload": "Pagŝarĝo (ŝablono permesita)",
"publish": "Publikigi",
"start_listening": "Komenci aŭskulti",
"stop_listening": "Halti aŭskulti",
"subscribe_to": "Temo por aboni",
"topic": "temo"
},
"services": { "services": {
"alert_parsing_yaml": "Eraro dum analizado de YAML: {data}", "alert_parsing_yaml": "Eraro dum analizado de YAML: {data}",
"call_service": "Voka Servo", "call_service": "Voka Servo",

View File

@ -955,7 +955,7 @@
"start": "Inicio" "start": "Inicio"
}, },
"mqtt": { "mqtt": {
"label": "MQTT", "label": "",
"payload": "Payload (opcional)", "payload": "Payload (opcional)",
"topic": "Topic" "topic": "Topic"
}, },
@ -1551,6 +1551,19 @@
} }
} }
}, },
"mqtt": {
"description_listen": "Escuchar un tema",
"description_publish": "Publicar un paquete",
"listening_to": "Escuchando a",
"message_received": "Mensaje {id} recibido el {topic} a las {time} :",
"payload": "Carga útil (plantilla permitida)",
"publish": "Publicar",
"start_listening": "Comenzar a escuchar",
"stop_listening": "Deja de escuchar",
"subscribe_to": "Tema para suscribirse",
"title": "",
"topic": "tema"
},
"person": { "person": {
"add_person": "Agregar persona", "add_person": "Agregar persona",
"caption": "Personas", "caption": "Personas",
@ -1964,19 +1977,6 @@
"title": "Eventos", "title": "Eventos",
"type": "Tipo de evento" "type": "Tipo de evento"
}, },
"mqtt": {
"description_listen": "Escuchar un tema",
"description_publish": "Publicar un paquete",
"listening_to": "Escuchando a",
"message_received": "Mensaje {id} recibido el {topic} a las {time} :",
"payload": "Carga útil (plantilla permitida)",
"publish": "Publicar",
"start_listening": "Comenzar a escuchar",
"stop_listening": "Deja de escuchar",
"subscribe_to": "Tema para suscribirse",
"title": "",
"topic": "tema"
},
"services": { "services": {
"alert_parsing_yaml": "Error al analizar YAML: {data}", "alert_parsing_yaml": "Error al analizar YAML: {data}",
"call_service": "Llamar al Servico", "call_service": "Llamar al Servico",

View File

@ -506,6 +506,11 @@
"clear": "Limpiar", "clear": "Limpiar",
"show_areas": "Mostrar áreas" "show_areas": "Mostrar áreas"
}, },
"date-range-picker": {
"end_date": "Fecha de finalización",
"select": "Seleccione",
"start_date": "Fecha de inicio"
},
"device-picker": { "device-picker": {
"clear": "Limpiar", "clear": "Limpiar",
"device": "Dispositivo", "device": "Dispositivo",
@ -695,6 +700,7 @@
"zha_device_info": { "zha_device_info": {
"buttons": { "buttons": {
"add": "Añadir dispositivos a través de este dispositivo", "add": "Añadir dispositivos a través de este dispositivo",
"clusters": "Administrar clústeres",
"reconfigure": "Reconfigurar dispositivo", "reconfigure": "Reconfigurar dispositivo",
"remove": "Eliminar dispositivos", "remove": "Eliminar dispositivos",
"zigbee_information": "Firma del dispositivo Zigbee" "zigbee_information": "Firma del dispositivo Zigbee"
@ -1557,6 +1563,20 @@
} }
} }
}, },
"mqtt": {
"button": "Configurar",
"description_listen": "Escuchar un tema",
"description_publish": "Publicar un paquete",
"listening_to": "Escuchando",
"message_received": "Mensaje {id} recibido en {topic} a las {time}:",
"payload": "Payload (plantilla permitida)",
"publish": "Publicar",
"start_listening": "Empezar a escuchar",
"stop_listening": "Dejar de escuchar",
"subscribe_to": "Tema al que suscribirse",
"title": "MQTT",
"topic": "tema"
},
"person": { "person": {
"add_person": "Añadir persona", "add_person": "Añadir persona",
"caption": "Personas", "caption": "Personas",
@ -1979,19 +1999,6 @@
"title": "Eventos", "title": "Eventos",
"type": "Tipo de evento" "type": "Tipo de evento"
}, },
"mqtt": {
"description_listen": "Escuchar un tema",
"description_publish": "Publicar un paquete",
"listening_to": "Escuchando",
"message_received": "Mensaje {id} recibido en {topic} a las {time}:",
"payload": "Payload (plantilla permitida)",
"publish": "Publicar",
"start_listening": "Empezar a escuchar",
"stop_listening": "Dejar de escuchar",
"subscribe_to": "Tema al que suscribirse",
"title": "MQTT",
"topic": "tema"
},
"services": { "services": {
"alert_parsing_yaml": "Error al analizar YAML: {data}", "alert_parsing_yaml": "Error al analizar YAML: {data}",
"call_service": "Llamar servicio", "call_service": "Llamar servicio",
@ -2035,11 +2042,23 @@
}, },
"history": { "history": {
"period": "Periodo", "period": "Periodo",
"ranges": {
"last_week": "La semana pasada",
"this_week": "Esta semana",
"today": "Hoy",
"yesterday": "Ayer"
},
"showing_entries": "Mostrando entradas del" "showing_entries": "Mostrando entradas del"
}, },
"logbook": { "logbook": {
"entries_not_found": "No se han encontrado entradas en el registro.", "entries_not_found": "No se han encontrado entradas en el registro.",
"period": "Periodo", "period": "Periodo",
"ranges": {
"last_week": "La semana pasada",
"this_week": "Esta semana",
"today": "Hoy",
"yesterday": "Ayer"
},
"showing_entries": "Mostrando entradas del" "showing_entries": "Mostrando entradas del"
}, },
"lovelace": { "lovelace": {

View File

@ -1223,6 +1223,16 @@
"refresh": "Värskenda", "refresh": "Värskenda",
"title": "Logid" "title": "Logid"
}, },
"mqtt": {
"description_listen": "Kuula teemat",
"listening_to": "Kuulamas",
"publish": "Avalda",
"start_listening": "Alusta kuulamist",
"stop_listening": "Lõpeta kuulamine",
"subscribe_to": "Teema, mida tellida",
"title": "MQTT",
"topic": "teema"
},
"person": { "person": {
"add_person": "Lisa isik", "add_person": "Lisa isik",
"caption": "Isikud", "caption": "Isikud",
@ -1534,16 +1544,6 @@
"title": "Sündmused", "title": "Sündmused",
"type": "Sündmuse tüüp" "type": "Sündmuse tüüp"
}, },
"mqtt": {
"description_listen": "Kuula teemat",
"listening_to": "Kuulamas",
"publish": "Avalda",
"start_listening": "Alusta kuulamist",
"stop_listening": "Lõpeta kuulamine",
"subscribe_to": "Teema, mida tellida",
"title": "MQTT",
"topic": "teema"
},
"services": { "services": {
"alert_parsing_yaml": "Viga YAML'i parsimisel: {data}", "alert_parsing_yaml": "Viga YAML'i parsimisel: {data}",
"call_service": "Kutsu teenus", "call_service": "Kutsu teenus",

View File

@ -569,6 +569,9 @@
"new": "Integrazio berri bat konfiguratu", "new": "Integrazio berri bat konfiguratu",
"none": "Ez dago ezer konfiguratuta" "none": "Ez dago ezer konfiguratuta"
}, },
"mqtt": {
"title": "MQTT"
},
"person": { "person": {
"caption": "Pertsonak", "caption": "Pertsonak",
"description": "Kudeatu Home Assistantek jarraituko dituen pertsonak.", "description": "Kudeatu Home Assistantek jarraituko dituen pertsonak.",
@ -620,9 +623,6 @@
"events": { "events": {
"title": "Gertaerak" "title": "Gertaerak"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"title": "Zerbitzuak" "title": "Zerbitzuak"
}, },

View File

@ -755,6 +755,9 @@
"homeassistant": { "homeassistant": {
"label": "Home Assistant" "label": "Home Assistant"
}, },
"mqtt": {
"label": "MQTT"
},
"numeric_state": { "numeric_state": {
"label": "حالت عددی" "label": "حالت عددی"
}, },
@ -1154,6 +1157,11 @@
} }
} }
}, },
"mqtt": {
"publish": "Publica",
"subscribe_to": "Subiect pentru abonare",
"title": "MQTT"
},
"person": { "person": {
"add_person": "Adauga Persoana", "add_person": "Adauga Persoana",
"caption": "افراد", "caption": "افراد",
@ -1362,11 +1370,6 @@
"events": { "events": {
"title": "رویدادها" "title": "رویدادها"
}, },
"mqtt": {
"publish": "Publica",
"subscribe_to": "Subiect pentru abonare",
"title": "MQTT"
},
"services": { "services": {
"call_service": "Apeleaza serviciul", "call_service": "Apeleaza serviciul",
"column_description": "Descriere", "column_description": "Descriere",

View File

@ -1557,6 +1557,19 @@
} }
} }
}, },
"mqtt": {
"description_listen": "Kuuntele aihetta",
"description_publish": "Julkaise paketti",
"listening_to": "Kuunnellaan",
"message_received": "Viesti {id} vastaanotettu aiheessa {topic} {time}:",
"payload": "Tietosisältö (malli sallittu)",
"publish": "Julkaise",
"start_listening": "Aloita kuuntelu",
"stop_listening": "Lopeta kuuntelu",
"subscribe_to": "Tilaa aihe",
"title": "MQTT",
"topic": "aihe"
},
"person": { "person": {
"add_person": "Lisää henkilö", "add_person": "Lisää henkilö",
"caption": "Henkilöt", "caption": "Henkilöt",
@ -1979,19 +1992,6 @@
"title": "Tapahtumat", "title": "Tapahtumat",
"type": "Tapahtumatyyppi" "type": "Tapahtumatyyppi"
}, },
"mqtt": {
"description_listen": "Kuuntele aihetta",
"description_publish": "Julkaise paketti",
"listening_to": "Kuunnellaan",
"message_received": "Viesti {id} vastaanotettu aiheessa {topic} {time}:",
"payload": "Tietosisältö (malli sallittu)",
"publish": "Julkaise",
"start_listening": "Aloita kuuntelu",
"stop_listening": "Lopeta kuuntelu",
"subscribe_to": "Tilaa aihe",
"title": "MQTT",
"topic": "aihe"
},
"services": { "services": {
"alert_parsing_yaml": "Virhe jäsennetettäessä YAML:ää: {data}", "alert_parsing_yaml": "Virhe jäsennetettäessä YAML:ää: {data}",
"call_service": "Kutsu palvelua", "call_service": "Kutsu palvelua",

View File

@ -506,6 +506,11 @@
"clear": "Effacer", "clear": "Effacer",
"show_areas": "Afficher les pièces" "show_areas": "Afficher les pièces"
}, },
"date-range-picker": {
"end_date": "Date de fin",
"select": "Sélectionner",
"start_date": "Date de début"
},
"device-picker": { "device-picker": {
"clear": "Effacer", "clear": "Effacer",
"device": "Appareil", "device": "Appareil",
@ -695,6 +700,7 @@
"zha_device_info": { "zha_device_info": {
"buttons": { "buttons": {
"add": "Ajouter des appareils", "add": "Ajouter des appareils",
"clusters": "Gérer les clusters",
"reconfigure": "Reconfigurer l'appareil", "reconfigure": "Reconfigurer l'appareil",
"remove": "Supprimer l'appareil", "remove": "Supprimer l'appareil",
"zigbee_information": "Informations Zigbee" "zigbee_information": "Informations Zigbee"
@ -1557,6 +1563,20 @@
} }
} }
}, },
"mqtt": {
"button": "Configurer",
"description_listen": "Écouter un sujet",
"description_publish": "Publier un paquet",
"listening_to": "Écouter",
"message_received": "Message {id} reçu sur {topic} à {time} :",
"payload": "Payload (modèle autorisé)",
"publish": "Publier",
"start_listening": "Commencer à écouter",
"stop_listening": "Arrêter d'écouter",
"subscribe_to": "Sujet auquel s'abonner",
"title": "MQTT",
"topic": "sujet"
},
"person": { "person": {
"add_person": "Ajouter une personne", "add_person": "Ajouter une personne",
"caption": "Personnes", "caption": "Personnes",
@ -1979,19 +1999,6 @@
"title": "Événements", "title": "Événements",
"type": "Type d'événement" "type": "Type d'événement"
}, },
"mqtt": {
"description_listen": "Écouter un sujet",
"description_publish": "Publier un paquet",
"listening_to": "Écouter",
"message_received": "Message {id} reçu sur {topic} à {time} :",
"payload": "Payload (modèle autorisé)",
"publish": "Publier",
"start_listening": "Commencer à écouter",
"stop_listening": "Arrêter d'écouter",
"subscribe_to": "Sujet auquel s'abonner",
"title": "MQTT",
"topic": "sujet"
},
"services": { "services": {
"alert_parsing_yaml": "Erreur d'analyse de YAML : {data}", "alert_parsing_yaml": "Erreur d'analyse de YAML : {data}",
"call_service": "Appeler le service", "call_service": "Appeler le service",
@ -2035,11 +2042,23 @@
}, },
"history": { "history": {
"period": "Période", "period": "Période",
"ranges": {
"last_week": "La semaine dernière",
"this_week": "Cette semaine",
"today": "Aujourd'hui",
"yesterday": "Hier"
},
"showing_entries": "Afficher les entrées pour" "showing_entries": "Afficher les entrées pour"
}, },
"logbook": { "logbook": {
"entries_not_found": "Aucune entrée trouvée dans le journal.", "entries_not_found": "Aucune entrée trouvée dans le journal.",
"period": "Période", "period": "Période",
"ranges": {
"last_week": "La semaine dernière",
"this_week": "Cette semaine",
"today": "Aujourd'hui",
"yesterday": "Hier"
},
"showing_entries": "Afficher les entrées pour le" "showing_entries": "Afficher les entrées pour le"
}, },
"lovelace": { "lovelace": {

View File

@ -491,6 +491,9 @@
"none_found": "Keine Integrationen gefunden", "none_found": "Keine Integrationen gefunden",
"none_found_detail": "Passen Sie Ihre Suchkriterien an." "none_found_detail": "Passen Sie Ihre Suchkriterien an."
}, },
"mqtt": {
"title": "MQTT"
},
"users": { "users": {
"caption": "Benutzer", "caption": "Benutzer",
"editor": { "editor": {
@ -501,13 +504,6 @@
"caption": "Z-Wave" "caption": "Z-Wave"
} }
}, },
"developer-tools": {
"tabs": {
"mqtt": {
"title": "MQTT"
}
}
},
"history": { "history": {
"period": "Periode" "period": "Periode"
}, },

View File

@ -471,11 +471,15 @@
}, },
"common": { "common": {
"and": "וגם", "and": "וגם",
"back": "חזור",
"cancel": "ביטול", "cancel": "ביטול",
"delete": "מחיקה", "delete": "מחיקה",
"error_required": "חובה",
"loading": "טוען", "loading": "טוען",
"menu": "תפריט",
"next": "הבא", "next": "הבא",
"no": "לא", "no": "לא",
"overflow_menu": "תפריט גולש",
"previous": "הקודם", "previous": "הקודם",
"refresh": "רענן", "refresh": "רענן",
"save": "שמור", "save": "שמור",
@ -488,6 +492,7 @@
"device-picker": { "device-picker": {
"clear": "נקה", "clear": "נקה",
"device": "התקן", "device": "התקן",
"no_area": "אין אזור",
"show_devices": "הצג התקנים" "show_devices": "הצג התקנים"
}, },
"entity": { "entity": {
@ -530,17 +535,39 @@
"close": "סגור" "close": "סגור"
}, },
"helper_settings": { "helper_settings": {
"generic": {
"icon": "סמל",
"name": "שם"
},
"input_datetime": { "input_datetime": {
"date": "תאריך", "date": "תאריך",
"datetime": "תאריך ושעה", "datetime": "תאריך ושעה",
"time": "זמן" "time": "זמן"
}, },
"input_number": {
"box": "שדה קלט",
"max": "ערך מקסימאלי",
"min": "ערך מינימלי",
"mode": "מצב תצוגה",
"slider": "סליידר",
"step": "גודל צעד",
"unit_of_measurement": "יחידת מידה"
},
"input_select": { "input_select": {
"add": "הוסף", "add": "הוסף",
"add_option": "הוסף אפשרות", "add_option": "הוסף אפשרות",
"no_options": "אין עדיין אפשרויות.", "no_options": "אין עדיין אפשרויות.",
"options": "אפשרויות" "options": "אפשרויות"
} },
"input_text": {
"max": "אורך מקסימאלי",
"min": "אורך מינימלי",
"mode": "מצב תצוגה",
"password": "סיסמה",
"pattern": "דפוס Regex לצורך אימות בצד הלקוח",
"text": "טקסט"
},
"required_error_msg": "שדה זה הוא חובה"
}, },
"more_info_control": { "more_info_control": {
"dismiss": "סגור", "dismiss": "סגור",
@ -629,6 +656,8 @@
"notification_toast": { "notification_toast": {
"connection_lost": "החיבור אבד. מתחבר מחדש...", "connection_lost": "החיבור אבד. מתחבר מחדש...",
"service_call_failed": "נכשלה הקריאה לשירות {service} .", "service_call_failed": "נכשלה הקריאה לשירות {service} .",
"started": "Home Assistant עלה!",
"starting": "Home Assistant בעלייה, ייתכן שלא הכל יהיה זמין עד שהעליה תסתיים",
"triggered": "הופעל {שם}" "triggered": "הופעל {שם}"
}, },
"panel": { "panel": {
@ -653,8 +682,12 @@
}, },
"description": "סקירה של כל האזורים בביתך", "description": "סקירה של כל האזורים בביתך",
"editor": { "editor": {
"area_id": "מזהה אזור",
"create": "צור", "create": "צור",
"delete": "מחק", "delete": "מחק",
"name": "שם",
"name_required": "שם הוא חובה",
"unknown_error": "שגיאה לא ידועה",
"update": "עדכון" "update": "עדכון"
}, },
"picker": { "picker": {
@ -687,6 +720,7 @@
"label": "עיכוב" "label": "עיכוב"
}, },
"device_id": { "device_id": {
"action": "פעולה",
"extra_fields": { "extra_fields": {
"code": "קוד" "code": "קוד"
}, },
@ -728,6 +762,7 @@
"label": "וגם" "label": "וגם"
}, },
"device": { "device": {
"condition": "תנאי",
"extra_fields": { "extra_fields": {
"above": "מעל", "above": "מעל",
"below": "מתחת", "below": "מתחת",
@ -787,6 +822,8 @@
"introduction": "השתמש/י באוטומציות להפיח חיים בביתך.", "introduction": "השתמש/י באוטומציות להפיח חיים בביתך.",
"load_error_not_editable": "רק אוטומציה ב automations.yaml ניתנים לעריכה.", "load_error_not_editable": "רק אוטומציה ב automations.yaml ניתנים לעריכה.",
"load_error_unknown": "שגיאה בטעינת האוטומציה ( {err_no} ).", "load_error_unknown": "שגיאה בטעינת האוטומציה ( {err_no} ).",
"move_down": "הזז למטה",
"move_up": "הזז למעלה",
"save": "שמור", "save": "שמור",
"triggers": { "triggers": {
"add": "הוספת טריגר", "add": "הוספת טריגר",
@ -805,7 +842,8 @@
"below": "מתחת", "below": "מתחת",
"for": "משך" "for": "משך"
}, },
"label": "התקן" "label": "התקן",
"trigger": "טריגר"
}, },
"event": { "event": {
"event_data": "נתוני אירוע", "event_data": "נתוני אירוע",
@ -1096,6 +1134,7 @@
"different_include": "יתכן דרך דומיין, גלובלי או כלול אחר.", "different_include": "יתכן דרך דומיין, גלובלי או כלול אחר.",
"pick_attribute": "בחר תכונה לדריסה", "pick_attribute": "בחר תכונה לדריסה",
"picker": { "picker": {
"entity": "ישות",
"header": "התאמה אישית", "header": "התאמה אישית",
"introduction": "כוונן תכונות של כל ישות. ההתאמות הנוספות שנוספו / ייכנסו לתוקף באופן מיידי. התאמות אישיות שהוסרו ייכנסו לתוקף כאשר הישות תעודכן." "introduction": "כוונן תכונות של כל ישות. ההתאמות הנוספות שנוספו / ייכנסו לתוקף באופן מיידי. התאמות אישיות שהוסרו ייכנסו לתוקף כאשר הישות תעודכן."
}, },
@ -1127,12 +1166,16 @@
"integration": "אינטגרציה", "integration": "אינטגרציה",
"manufacturer": "יצרן", "manufacturer": "יצרן",
"model": "מודל", "model": "מודל",
"no_area": "אין אזור",
"no_devices": "אין התקנים" "no_devices": "אין התקנים"
}, },
"delete": "מחיקה", "delete": "מחיקה",
"description": "ניהול התקנים מחוברים", "description": "ניהול התקנים מחוברים",
"device_info": "פרטי התקן", "device_info": "פרטי התקן",
"device_not_found": "ההתקן לא נמצא.", "device_not_found": "ההתקן לא נמצא.",
"entities": {
"disabled_entities": "+{count} {count, plural,\n one {disabled entity}\n other {disabled entities}\n}"
},
"no_devices": "אין התקנים", "no_devices": "אין התקנים",
"unknown_error": "שגיאה לא ידועה", "unknown_error": "שגיאה לא ידועה",
"unnamed_device": "התקן ללא שם" "unnamed_device": "התקן ללא שם"
@ -1163,11 +1206,14 @@
}, },
"header": "הגדר את Home Assistant", "header": "הגדר את Home Assistant",
"helpers": { "helpers": {
"caption": "עוזרים",
"description": "רכיבים שיכולים לסייע בבניית אוטומציות.",
"dialog": { "dialog": {
"add_platform": "הוסף {platform}", "add_platform": "הוסף {platform}",
"create": "צור" "create": "צור"
}, },
"picker": { "picker": {
"add_helper": "הוסף עוזר",
"headers": { "headers": {
"editable": "ניתן לעריכה", "editable": "ניתן לעריכה",
"entity_id": "מזהה ישות", "entity_id": "מזהה ישות",
@ -1176,14 +1222,18 @@
} }
}, },
"types": { "types": {
"input_boolean": "החלף מצב",
"input_datetime": "תאריך ו/או שעה", "input_datetime": "תאריך ו/או שעה",
"input_number": "מספר", "input_number": "מספר",
"input_select": "תיבת בחירה",
"input_text": "טקסט" "input_text": "טקסט"
} }
}, },
"info": { "info": {
"built_using": "נבנה באמצעות", "built_using": "נבנה באמצעות",
"caption": "מידע",
"custom_uis": "ממשקי משתמש מותאמים אישית:", "custom_uis": "ממשקי משתמש מותאמים אישית:",
"description": "מידע על ההתקנה של Home Assistant שלך",
"developed_by": "פותח על ידי חבורה של אנשים מדהימים.", "developed_by": "פותח על ידי חבורה של אנשים מדהימים.",
"documentation": "תיעוד", "documentation": "תיעוד",
"frontend": "frontend-ui", "frontend": "frontend-ui",
@ -1199,6 +1249,11 @@
"system_health_error": "רכיב ה System Health אינו טעון. הוסף 'system_health:' ל - configuration.yaml", "system_health_error": "רכיב ה System Health אינו טעון. הוסף 'system_health:' ל - configuration.yaml",
"title": "מידע" "title": "מידע"
}, },
"integration_panel_move": {
"link_integration_page": "עמוד אינטגרציות",
"missing_zha": "חסר את לוח התצורה של ZHA? הוא הועבר לכניסה של ZHA בדף {integrations_page} .",
"missing_zwave": "חסר את לוח התצורה של Z-Wave? הוא הועבר לכניסה של Z-Wave בכרטיסייה {integrations_page} ."
},
"integrations": { "integrations": {
"add_integration": "הוסף אינטגרציה", "add_integration": "הוסף אינטגרציה",
"caption": "אינטגרציות", "caption": "אינטגרציות",
@ -1256,7 +1311,9 @@
}, },
"introduction": "כאן ניתן להגדיר את הרכיבים ואת ה Home Assistant. לא הכל ניתן להגדיר את ממשק המשתמש עדיין, אבל אנחנו עובדים על זה.", "introduction": "כאן ניתן להגדיר את הרכיבים ואת ה Home Assistant. לא הכל ניתן להגדיר את ממשק המשתמש עדיין, אבל אנחנו עובדים על זה.",
"logs": { "logs": {
"caption": "יומנים",
"clear": "נקה", "clear": "נקה",
"description": "צפה ביומני Home Assistant",
"details": "פרטי יומן האירועים ({level})", "details": "פרטי יומן האירועים ({level})",
"load_full_log": "טען את הלוג המלא של Home Assistant", "load_full_log": "טען את הלוג המלא של Home Assistant",
"loading_log": "טוען יומן שגיאות ...", "loading_log": "טוען יומן שגיאות ...",
@ -1333,6 +1390,19 @@
} }
} }
}, },
"mqtt": {
"description_listen": "האזנה לנושא",
"description_publish": "פרסם חבילה",
"listening_to": "האזנה ל",
"message_received": "הודעה {id} התקבלה ב- {topic} בשעה {time}:",
"payload": "תוכן (תומך בתבניות)",
"publish": "פרסם",
"start_listening": "התחל להאזין",
"stop_listening": "הפסק להאזין",
"subscribe_to": "נושא להירשם אליו",
"title": "MQTT",
"topic": "נושא"
},
"person": { "person": {
"add_person": "הוסף אדם", "add_person": "הוסף אדם",
"caption": "אנשים", "caption": "אנשים",
@ -1440,6 +1510,11 @@
"core": "טען מחדש את הליבה", "core": "טען מחדש את הליבה",
"group": "טען מחדש קבוצות", "group": "טען מחדש קבוצות",
"heading": "טען מחדש קונפיגורציה", "heading": "טען מחדש קונפיגורציה",
"input_boolean": "טען מחדש input boolean",
"input_datetime": "טען מחדש input date time",
"input_number": "טען מחדש input number",
"input_select": "טען מחדש input selects",
"input_text": "טען מחדש input text",
"introduction": "חלקים מסוימים של Home Assistant יכולים להטען מחדש ללא צורך בהפעלה מחדש.\nטעינה מחדש תשנה את הקונפיגורציה הנוכחית ותטען קונפיגורציה חדשה.", "introduction": "חלקים מסוימים של Home Assistant יכולים להטען מחדש ללא צורך בהפעלה מחדש.\nטעינה מחדש תשנה את הקונפיגורציה הנוכחית ותטען קונפיגורציה חדשה.",
"scene": "טען מחדש סצנות", "scene": "טען מחדש סצנות",
"script": "טען מחדש סקריפטים" "script": "טען מחדש סקריפטים"
@ -1496,15 +1571,20 @@
"name": "שם", "name": "שם",
"system": "מערכת" "system": "מערכת"
} }
} },
"users_privileges_note": "קבוצת המשתמשים הינה עבודה בעיצומה. המשתמש לא יוכל לנהל את המופע באמצעות ממשק המשתמש. אנו עדיין בודקים את כל נקודות הקצה של ממשק ה- API כדי לוודא שהם מגבילים נכון את הגישה למנהלים."
}, },
"zha": { "zha": {
"add_device_page": { "add_device_page": {
"discovered_text": "מכשירים יופיעו כאן לאחר שהתגלו.",
"discovery_text": ". המכשירים שהתגלו יופיעו כאן. עקוב אחר ההוראות עבור ההתקנים שלך והצב את ההתקנים במצב תיאום.", "discovery_text": ". המכשירים שהתגלו יופיעו כאן. עקוב אחר ההוראות עבור ההתקנים שלך והצב את ההתקנים במצב תיאום.",
"header": "אוטומציית Zigbee - הוספת התקנים", "header": "אוטומציית Zigbee - הוספת התקנים",
"no_devices_found": "לא נמצאו התקנים כלשהם, וודאו שהם במצב צימוד והקפידו שיהיו דולקים בזמן הגילוי.",
"pairing_mode": "ודא שהמכשירים שלך במצב צימוד. בדוק את הוראות המכשיר שלך כיצד לבצע זאת.",
"search_again": "חפש שוב", "search_again": "חפש שוב",
"spinner": "מחפש מכשירי ZHA Zigbee..." "spinner": "מחפש מכשירי ZHA Zigbee..."
}, },
"button": "הגדר",
"caption": "ZHA", "caption": "ZHA",
"cluster_attributes": { "cluster_attributes": {
"attributes_of_cluster": "תכונות של האשכול שנבחר", "attributes_of_cluster": "תכונות של האשכול שנבחר",
@ -1538,6 +1618,9 @@
"header": "ניהול רשת", "header": "ניהול רשת",
"introduction": "פקודות שמשפיעות על הרשת כולה" "introduction": "פקודות שמשפיעות על הרשת כולה"
}, },
"network": {
"caption": "רשת"
},
"node_management": { "node_management": {
"header": "ניהול התקן", "header": "ניהול התקן",
"help_node_dropdown": "בחר התקן להצגת האפשרויות.", "help_node_dropdown": "בחר התקן להצגת האפשרויות.",
@ -1547,6 +1630,7 @@
} }
}, },
"zwave": { "zwave": {
"button": "הגדר",
"caption": "Z-Wave", "caption": "Z-Wave",
"common": { "common": {
"index": "אינדקס", "index": "אינדקס",
@ -1579,6 +1663,22 @@
"set_wakeup": "בחירת מרווח פעולה", "set_wakeup": "בחירת מרווח פעולה",
"true": "True" "true": "True"
}, },
"node_management": {
"entities": "ישויות היחידה",
"entity_info": "מידע על הישות",
"exclude_entity": "אל תכלול ישות זו ב Home Assistant",
"group": "קְבוּצָה",
"header": "ניהול יחידות Z-Wave",
"introduction": "הפעל פקודות Z-Wave המשפיעות על יחידה בודדת. בחר יחידה כדי לראות רשימה של פקודות זמינות.",
"node_group_associations": "קישורי קבוצת היחידה",
"node_protection": "הגנת יחידה",
"node_to_control": "יחידה לניהול",
"nodes": "יחידות",
"nodes_hint": "בחר יחידה כדי להציג אפשרויות ליחידה",
"pooling_intensity": "עוצמת דגימה",
"protection": "הגנה",
"set_protection": "הגדרת הגנה"
},
"ozw_log": { "ozw_log": {
"header": "יומן OZW", "header": "יומן OZW",
"introduction": "צפה ביומן. 0 הוא המינימום (טוען יומן שלם) ו -1000 הוא המקסימום. הטעינה תציג יומן סטטי והסוף יתעדכן אוטומטית במספר האחרון שצוין של שורות היומן." "introduction": "צפה ביומן. 0 הוא המינימום (טוען יומן שלם) ו -1000 הוא המקסימום. הטעינה תציג יומן סטטי והסוף יתעדכן אוטומטית במספר האחרון שצוין של שורות היומן."
@ -1588,6 +1688,8 @@
"add_node_secure": "הוסף רכיב מאובטח", "add_node_secure": "הוסף רכיב מאובטח",
"cancel_command": "ביטול פקודה", "cancel_command": "ביטול פקודה",
"heal_network": "ריפוי רשת", "heal_network": "ריפוי רשת",
"node_info": "מידע על היחידה",
"refresh_entity": "רענן ישות",
"remove_node": "הסר רכיב", "remove_node": "הסר רכיב",
"save_config": "שמור קונפיגורציה", "save_config": "שמור קונפיגורציה",
"soft_reset": "איפוס רך", "soft_reset": "איפוס רך",
@ -1627,19 +1729,6 @@
"title": "אירועים", "title": "אירועים",
"type": "סוג אירוע" "type": "סוג אירוע"
}, },
"mqtt": {
"description_listen": "האזנה לנושא",
"description_publish": "פרסם חבילה",
"listening_to": "האזנה ל",
"message_received": "הודעה {id} התקבלה ב- {topic} בשעה {time}:",
"payload": "תוכן (תומך בתבניות)",
"publish": "פרסם",
"start_listening": "התחל להאזין",
"stop_listening": "הפסק להאזין",
"subscribe_to": "נושא להירשם אליו",
"title": "MQTT",
"topic": "נושא"
},
"services": { "services": {
"alert_parsing_yaml": "שגיאה בניתוח YAML: {data}", "alert_parsing_yaml": "שגיאה בניתוח YAML: {data}",
"call_service": "קריאה לשירות", "call_service": "קריאה לשירות",
@ -1711,6 +1800,10 @@
"add_item": "הוסף פריט", "add_item": "הוסף פריט",
"checked_items": "פריטים מסומנים", "checked_items": "פריטים מסומנים",
"clear_items": "נקה פריטים מסומנים" "clear_items": "נקה פריטים מסומנים"
},
"starting": {
"description": "Home Assistant בעלייה. אנא המתן...",
"header": "Home Assistant בעלייה..."
} }
}, },
"changed_toast": { "changed_toast": {
@ -1984,7 +2077,8 @@
"attribute_not_found": "השדה {attribute} אינו זמין ב־{entity}", "attribute_not_found": "השדה {attribute} אינו זמין ב־{entity}",
"entity_non_numeric": "הישות אינה מספרית: {entity}", "entity_non_numeric": "הישות אינה מספרית: {entity}",
"entity_not_found": "הישות אינה זמינה: {entity}", "entity_not_found": "הישות אינה זמינה: {entity}",
"entity_unavailable": "כרגע {entity} אינו זמין" "entity_unavailable": "כרגע {entity} אינו זמין",
"starting": "Home Assistant בעלייה, ייתכן שלא הכל יהיה זמין"
} }
}, },
"mailbox": { "mailbox": {
@ -1997,6 +2091,8 @@
"abort_intro": "הכניסה בוטלה", "abort_intro": "הכניסה בוטלה",
"authorizing_client": "אתה עומד לתת גישה ל{clientId} עבור הHome Assistant שלך.", "authorizing_client": "אתה עומד לתת גישה ל{clientId} עבור הHome Assistant שלך.",
"form": { "form": {
"error": "שגיאה: {error}",
"next": "הבא",
"providers": { "providers": {
"command_line": { "command_line": {
"abort": { "abort": {
@ -2082,6 +2178,7 @@
} }
} }
}, },
"start_over": "התחל מחדש",
"unknown_error": "משהו השתבש", "unknown_error": "משהו השתבש",
"working": "אנא המתן" "working": "אנא המתן"
}, },

View File

@ -311,6 +311,9 @@
"logs": { "logs": {
"title": "लॉग्स" "title": "लॉग्स"
}, },
"mqtt": {
"title": "MQTT"
},
"script": { "script": {
"picker": { "picker": {
"headers": { "headers": {
@ -352,9 +355,6 @@
"events": { "events": {
"title": "घटनाओं" "title": "घटनाओं"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"title": "सेवाएं" "title": "सेवाएं"
}, },

View File

@ -1056,6 +1056,9 @@
"logs": { "logs": {
"title": "Logovi" "title": "Logovi"
}, },
"mqtt": {
"title": "MQTT"
},
"person": { "person": {
"caption": "Osobe", "caption": "Osobe",
"description": "Upravljajte osobama koje Home Assistant prati.", "description": "Upravljajte osobama koje Home Assistant prati.",
@ -1298,9 +1301,6 @@
"events": { "events": {
"title": "Događaji" "title": "Događaji"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"alert_parsing_yaml": "Greška pri analiziranju YAML-a: {data}", "alert_parsing_yaml": "Greška pri analiziranju YAML-a: {data}",
"column_parameter": "Parametar", "column_parameter": "Parametar",

View File

@ -1548,6 +1548,19 @@
} }
} }
}, },
"mqtt": {
"description_listen": "Téma figyelése",
"description_publish": "Csomag közzététele",
"listening_to": "Figyelés:",
"message_received": "Üzenet ({id}) érkezett a(z) {topic} témában {time}-kor:",
"payload": "Payload (sablon megengedett)",
"publish": "Közzététel",
"start_listening": "Figyelés indítása",
"stop_listening": "Figyelés befejezése",
"subscribe_to": "Feliratkozás erre a témára",
"title": "MQTT",
"topic": "téma"
},
"person": { "person": {
"add_person": "Személy hozzáadása", "add_person": "Személy hozzáadása",
"caption": "Személyek", "caption": "Személyek",
@ -1930,19 +1943,6 @@
"title": "Események", "title": "Események",
"type": "Esemény típusa" "type": "Esemény típusa"
}, },
"mqtt": {
"description_listen": "Téma figyelése",
"description_publish": "Csomag közzététele",
"listening_to": "Figyelés:",
"message_received": "Üzenet ({id}) érkezett a(z) {topic} témában {time}-kor:",
"payload": "Payload (sablon megengedett)",
"publish": "Közzététel",
"start_listening": "Figyelés indítása",
"stop_listening": "Figyelés befejezése",
"subscribe_to": "Feliratkozás erre a témára",
"title": "MQTT",
"topic": "téma"
},
"services": { "services": {
"alert_parsing_yaml": "Hiba a YAML elemzésekor: {data}", "alert_parsing_yaml": "Hiba a YAML elemzésekor: {data}",
"call_service": "Szolgáltatás meghívása", "call_service": "Szolgáltatás meghívása",

View File

@ -840,6 +840,9 @@
"logs": { "logs": {
"title": "log-եր" "title": "log-եր"
}, },
"mqtt": {
"title": "MQTT"
},
"person": { "person": {
"caption": "Անձինք", "caption": "Անձինք",
"description": "Կառավարել այն անձանց, որոնք հետապնդում են Home Assistant-ին:", "description": "Կառավարել այն անձանց, որոնք հետապնդում են Home Assistant-ին:",
@ -965,9 +968,6 @@
"events": { "events": {
"title": "Իրադարձություններ" "title": "Իրադարձություններ"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"title": "Սերվիսներ" "title": "Սերվիսներ"
}, },

View File

@ -776,6 +776,9 @@
"none": "Belum ada yang dikonfigurasi" "none": "Belum ada yang dikonfigurasi"
}, },
"introduction": "Tempat ini bisa digunakan untuk mengonfigurasi komponen dan Home Assistant. Belum semua dapat dikonfigurasikan melalui UI, kami sedang mengusahakannya.", "introduction": "Tempat ini bisa digunakan untuk mengonfigurasi komponen dan Home Assistant. Belum semua dapat dikonfigurasikan melalui UI, kami sedang mengusahakannya.",
"mqtt": {
"title": "MQTT"
},
"person": { "person": {
"caption": "Orang", "caption": "Orang",
"description": "Kelola orang yang Home Assistant lacak", "description": "Kelola orang yang Home Assistant lacak",
@ -821,9 +824,6 @@
"events": { "events": {
"title": "Peristiwa" "title": "Peristiwa"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"title": "Layanan" "title": "Layanan"
}, },

View File

@ -1182,6 +1182,9 @@
} }
} }
}, },
"mqtt": {
"title": "MQTT"
},
"person": { "person": {
"add_person": "Bæta við persónu", "add_person": "Bæta við persónu",
"caption": "Persónur", "caption": "Persónur",
@ -1401,9 +1404,6 @@
"events": { "events": {
"title": "Viðburðir" "title": "Viðburðir"
}, },
"mqtt": {
"title": "MQTT"
},
"services": { "services": {
"call_service": "Kalla í þjónustu", "call_service": "Kalla í þjónustu",
"column_description": "Lýsing", "column_description": "Lýsing",

View File

@ -506,6 +506,11 @@
"clear": "Cancella", "clear": "Cancella",
"show_areas": "Mostra le aree" "show_areas": "Mostra le aree"
}, },
"date-range-picker": {
"end_date": "Data di fine",
"select": "Selezionare",
"start_date": "Data di inizio"
},
"device-picker": { "device-picker": {
"clear": "Cancella", "clear": "Cancella",
"device": "Dispositivo", "device": "Dispositivo",
@ -695,6 +700,7 @@
"zha_device_info": { "zha_device_info": {
"buttons": { "buttons": {
"add": "Aggiungi dispositivi tramite questo dispositivo", "add": "Aggiungi dispositivi tramite questo dispositivo",
"clusters": "Gestisci i cluster",
"reconfigure": "Riconfigura dispositivo", "reconfigure": "Riconfigura dispositivo",
"remove": "Rimuovi dispositivo", "remove": "Rimuovi dispositivo",
"zigbee_information": "Firma del dispositivo Zigbee" "zigbee_information": "Firma del dispositivo Zigbee"
@ -1557,6 +1563,20 @@
} }
} }
}, },
"mqtt": {
"button": "Configura",
"description_listen": "Ascoltare un argomento",
"description_publish": "Pubblicare un pacchetto",
"listening_to": "Ascolto di",
"message_received": "Messaggio {id} ricevuto su {topic} alle {time}:",
"payload": "Payload (modello consentito)",
"publish": "Pubblicare",
"start_listening": "Inizia ad ascoltare",
"stop_listening": "Interrompere l'ascolto",
"subscribe_to": "Argomento a cui iscriversi",
"title": "MQTT",
"topic": "argomento"
},
"person": { "person": {
"add_person": "Aggiungi persona", "add_person": "Aggiungi persona",
"caption": "Persone", "caption": "Persone",
@ -1979,19 +1999,6 @@
"title": "Eventi", "title": "Eventi",
"type": "Tipo di Evento" "type": "Tipo di Evento"
}, },
"mqtt": {
"description_listen": "Ascoltare un argomento",
"description_publish": "Pubblicare un pacchetto",
"listening_to": "Ascolto di",
"message_received": "Messaggio {id} ricevuto su {topic} alle {time}:",
"payload": "Payload (modello consentito)",
"publish": "Pubblicare",
"start_listening": "Inizia ad ascoltare",
"stop_listening": "Interrompere l'ascolto",
"subscribe_to": "Argomento a cui iscriversi",
"title": "MQTT",
"topic": "argomento"
},
"services": { "services": {
"alert_parsing_yaml": "Errore durante l'analisi di YAML: {data}", "alert_parsing_yaml": "Errore durante l'analisi di YAML: {data}",
"call_service": "Chiama il Servizio", "call_service": "Chiama il Servizio",
@ -2035,11 +2042,23 @@
}, },
"history": { "history": {
"period": "Periodo", "period": "Periodo",
"ranges": {
"last_week": "Settimana scorsa",
"this_week": "Questa settimana",
"today": "Oggi",
"yesterday": "Ieri"
},
"showing_entries": "Visualizzazione delle voci per" "showing_entries": "Visualizzazione delle voci per"
}, },
"logbook": { "logbook": {
"entries_not_found": "Non sono state trovate voci nel registro.", "entries_not_found": "Non sono state trovate voci nel registro.",
"period": "Periodo", "period": "Periodo",
"ranges": {
"last_week": "Settimana scorsa",
"this_week": "Questa settimana",
"today": "Oggi",
"yesterday": "Ieri"
},
"showing_entries": "Visualizzazione delle voci per" "showing_entries": "Visualizzazione delle voci per"
}, },
"lovelace": { "lovelace": {

View File

@ -981,6 +981,18 @@
} }
} }
}, },
"mqtt": {
"description_listen": "トピックをリッスン",
"description_publish": "パケットをパブリッシュ",
"listening_to": "リッスンします",
"payload": "ペイロード (テンプレート可)",
"publish": "パブリッシュ",
"start_listening": "リッスンを開始",
"stop_listening": "リッスンを停止",
"subscribe_to": "サブスクライブするトピック",
"title": "MQTT",
"topic": "トピック"
},
"person": { "person": {
"caption": "人", "caption": "人",
"description": "Home Assistant を追跡している人の管理。", "description": "Home Assistant を追跡している人の管理。",
@ -1174,18 +1186,6 @@
"title": "イベント", "title": "イベント",
"type": "イベントの種類" "type": "イベントの種類"
}, },
"mqtt": {
"description_listen": "トピックをリッスン",
"description_publish": "パケットをパブリッシュ",
"listening_to": "リッスンします",
"payload": "ペイロード (テンプレート可)",
"publish": "パブリッシュ",
"start_listening": "リッスンを開始",
"stop_listening": "リッスンを停止",
"subscribe_to": "サブスクライブするトピック",
"title": "MQTT",
"topic": "トピック"
},
"services": { "services": {
"alert_parsing_yaml": "YAMLの解析エラー: {error}", "alert_parsing_yaml": "YAMLの解析エラー: {error}",
"call_service": "サービスを呼ぶ", "call_service": "サービスを呼ぶ",

View File

@ -1557,6 +1557,19 @@
} }
} }
}, },
"mqtt": {
"description_listen": "토픽 내용 들어보기",
"description_publish": "패킷 발행",
"listening_to": "토픽 청취 중",
"message_received": "{time} 에 {id} 메시지가 {topic} 에 수신되었습니다.",
"payload": "페이로드 (템플릿 허용)",
"publish": "발행",
"start_listening": "청취 시작",
"stop_listening": "그만 듣기",
"subscribe_to": "청취할 토픽",
"title": "MQTT",
"topic": "토픽"
},
"person": { "person": {
"add_person": "구성원 추가하기", "add_person": "구성원 추가하기",
"caption": "구성원", "caption": "구성원",
@ -1979,19 +1992,6 @@
"title": "이벤트", "title": "이벤트",
"type": "이벤트 유형" "type": "이벤트 유형"
}, },
"mqtt": {
"description_listen": "토픽 내용 들어보기",
"description_publish": "패킷 발행",
"listening_to": "토픽 청취 중",
"message_received": "{time} 에 {id} 메시지가 {topic} 에 수신되었습니다.",
"payload": "페이로드 (템플릿 허용)",
"publish": "발행",
"start_listening": "청취 시작",
"stop_listening": "그만 듣기",
"subscribe_to": "청취할 토픽",
"title": "MQTT",
"topic": "토픽"
},
"services": { "services": {
"alert_parsing_yaml": "YAML 구문 분석 오류: {data}", "alert_parsing_yaml": "YAML 구문 분석 오류: {data}",
"call_service": "서비스 호출", "call_service": "서비스 호출",

Some files were not shown because too many files have changed in this diff Show More