mirror of
https://github.com/home-assistant/frontend.git
synced 2025-09-02 13:00:27 +00:00
Compare commits
1 Commits
fix-backgr
...
manual-vie
Author | SHA1 | Date | |
---|---|---|---|
![]() |
539472bd96 |
@@ -1,5 +1,5 @@
|
|||||||
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.148.1/containers/python-3/.devcontainer/base.Dockerfile
|
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.148.1/containers/python-3/.devcontainer/base.Dockerfile
|
||||||
FROM mcr.microsoft.com/devcontainers/python:3.12
|
FROM mcr.microsoft.com/vscode/devcontainers/python:0-3.11
|
||||||
|
|
||||||
ENV \
|
ENV \
|
||||||
DEBIAN_FRONTEND=noninteractive \
|
DEBIAN_FRONTEND=noninteractive \
|
||||||
|
@@ -5,7 +5,6 @@
|
|||||||
"context": ".."
|
"context": ".."
|
||||||
},
|
},
|
||||||
"appPort": "8124:8123",
|
"appPort": "8124:8123",
|
||||||
"postCreateCommand": "sudo apt update && sudo apt upgrade -y && sudo apt install -y libpcap-dev",
|
|
||||||
"postStartCommand": "script/bootstrap",
|
"postStartCommand": "script/bootstrap",
|
||||||
"containerEnv": {
|
"containerEnv": {
|
||||||
"WORKSPACE_DIRECTORY": "${containerWorkspaceFolder}"
|
"WORKSPACE_DIRECTORY": "${containerWorkspaceFolder}"
|
||||||
|
8
.github/workflows/cast_deployment.yaml
vendored
8
.github/workflows/cast_deployment.yaml
vendored
@@ -21,12 +21,12 @@ jobs:
|
|||||||
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
ref: dev
|
ref: dev
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
@@ -57,12 +57,12 @@ jobs:
|
|||||||
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
ref: master
|
ref: master
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
|
22
.github/workflows/ci.yaml
vendored
22
.github/workflows/ci.yaml
vendored
@@ -24,9 +24,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
@@ -37,7 +37,7 @@ jobs:
|
|||||||
- name: Build resources
|
- name: Build resources
|
||||||
run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data gather-gallery-pages
|
run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data gather-gallery-pages
|
||||||
- name: Setup lint cache
|
- name: Setup lint cache
|
||||||
uses: actions/cache@v4.0.2
|
uses: actions/cache@v3.3.3
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
node_modules/.cache/prettier
|
node_modules/.cache/prettier
|
||||||
@@ -58,9 +58,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
@@ -76,9 +76,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
@@ -89,7 +89,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
IS_TEST: "true"
|
IS_TEST: "true"
|
||||||
- name: Upload bundle stats
|
- name: Upload bundle stats
|
||||||
uses: actions/upload-artifact@v4.3.1
|
uses: actions/upload-artifact@v4.1.0
|
||||||
with:
|
with:
|
||||||
name: frontend-bundle-stats
|
name: frontend-bundle-stats
|
||||||
path: build/stats/*.json
|
path: build/stats/*.json
|
||||||
@@ -100,9 +100,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
@@ -113,7 +113,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
IS_TEST: "true"
|
IS_TEST: "true"
|
||||||
- name: Upload bundle stats
|
- name: Upload bundle stats
|
||||||
uses: actions/upload-artifact@v4.3.1
|
uses: actions/upload-artifact@v4.1.0
|
||||||
with:
|
with:
|
||||||
name: supervisor-bundle-stats
|
name: supervisor-bundle-stats
|
||||||
path: build/stats/*.json
|
path: build/stats/*.json
|
||||||
|
2
.github/workflows/codeql-analysis.yml
vendored
2
.github/workflows/codeql-analysis.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
# We must fetch at least the immediate parents so that if this is
|
# We must fetch at least the immediate parents so that if this is
|
||||||
# a pull request then we can checkout the head.
|
# a pull request then we can checkout the head.
|
||||||
|
8
.github/workflows/demo_deployment.yaml
vendored
8
.github/workflows/demo_deployment.yaml
vendored
@@ -22,12 +22,12 @@ jobs:
|
|||||||
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
ref: dev
|
ref: dev
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
@@ -58,12 +58,12 @@ jobs:
|
|||||||
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
with:
|
with:
|
||||||
ref: master
|
ref: master
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
|
4
.github/workflows/design_deployment.yaml
vendored
4
.github/workflows/design_deployment.yaml
vendored
@@ -16,10 +16,10 @@ jobs:
|
|||||||
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
|
4
.github/workflows/design_preview.yaml
vendored
4
.github/workflows/design_preview.yaml
vendored
@@ -21,10 +21,10 @@ jobs:
|
|||||||
if: github.repository == 'home-assistant/frontend' && contains(github.event.pull_request.labels.*.name, 'needs design preview')
|
if: github.repository == 'home-assistant/frontend' && contains(github.event.pull_request.labels.*.name, 'needs design preview')
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files from GitHub
|
- name: Check out files from GitHub
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
|
10
.github/workflows/nightly.yaml
vendored
10
.github/workflows/nightly.yaml
vendored
@@ -6,7 +6,7 @@ on:
|
|||||||
- cron: "0 1 * * *"
|
- cron: "0 1 * * *"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
PYTHON_VERSION: "3.12"
|
PYTHON_VERSION: "3.11"
|
||||||
NODE_OPTIONS: --max_old_space_size=6144
|
NODE_OPTIONS: --max_old_space_size=6144
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the repository
|
- name: Checkout the repository
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
|
|
||||||
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
@@ -28,7 +28,7 @@ jobs:
|
|||||||
python-version: ${{ env.PYTHON_VERSION }}
|
python-version: ${{ env.PYTHON_VERSION }}
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
@@ -57,14 +57,14 @@ jobs:
|
|||||||
run: tar -czvf translations.tar.gz translations
|
run: tar -czvf translations.tar.gz translations
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v4.3.1
|
uses: actions/upload-artifact@v4.1.0
|
||||||
with:
|
with:
|
||||||
name: wheels
|
name: wheels
|
||||||
path: dist/home_assistant_frontend*.whl
|
path: dist/home_assistant_frontend*.whl
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Upload translations
|
- name: Upload translations
|
||||||
uses: actions/upload-artifact@v4.3.1
|
uses: actions/upload-artifact@v4.1.0
|
||||||
with:
|
with:
|
||||||
name: translations
|
name: translations
|
||||||
path: translations.tar.gz
|
path: translations.tar.gz
|
||||||
|
2
.github/workflows/release-drafter.yaml
vendored
2
.github/workflows/release-drafter.yaml
vendored
@@ -18,6 +18,6 @@ jobs:
|
|||||||
pull-requests: read
|
pull-requests: read
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: release-drafter/release-drafter@v6.0.0
|
- uses: release-drafter/release-drafter@v5
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
8
.github/workflows/release.yaml
vendored
8
.github/workflows/release.yaml
vendored
@@ -6,7 +6,7 @@ on:
|
|||||||
- published
|
- published
|
||||||
|
|
||||||
env:
|
env:
|
||||||
PYTHON_VERSION: "3.12"
|
PYTHON_VERSION: "3.11"
|
||||||
NODE_OPTIONS: --max_old_space_size=6144
|
NODE_OPTIONS: --max_old_space_size=6144
|
||||||
|
|
||||||
# Set default workflow permissions
|
# Set default workflow permissions
|
||||||
@@ -23,7 +23,7 @@ jobs:
|
|||||||
contents: write # Required to upload release assets
|
contents: write # Required to upload release assets
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the repository
|
- name: Checkout the repository
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
|
|
||||||
- name: Verify version
|
- name: Verify version
|
||||||
uses: home-assistant/actions/helpers/verify-version@master
|
uses: home-assistant/actions/helpers/verify-version@master
|
||||||
@@ -34,7 +34,7 @@ jobs:
|
|||||||
python-version: ${{ env.PYTHON_VERSION }}
|
python-version: ${{ env.PYTHON_VERSION }}
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v4.0.2
|
uses: actions/setup-node@v4.0.1
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: yarn
|
cache: yarn
|
||||||
@@ -55,7 +55,7 @@ jobs:
|
|||||||
script/release
|
script/release
|
||||||
|
|
||||||
- name: Upload release assets
|
- name: Upload release assets
|
||||||
uses: softprops/action-gh-release@v2.0.4
|
uses: softprops/action-gh-release@v0.1.15
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
dist/*.whl
|
dist/*.whl
|
||||||
|
2
.github/workflows/translations.yaml
vendored
2
.github/workflows/translations.yaml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the repository
|
- name: Checkout the repository
|
||||||
uses: actions/checkout@v4.1.2
|
uses: actions/checkout@v4.1.1
|
||||||
|
|
||||||
- name: Upload Translations
|
- name: Upload Translations
|
||||||
run: |
|
run: |
|
||||||
|
@@ -1,18 +0,0 @@
|
|||||||
diff --git a/dist/hls.light.mjs b/dist/hls.light.mjs
|
|
||||||
index eed9d788fafdb159975e1a2eb08ac88ba9c9ac33..ace881935e6665946f1c8110ebd2f739cde4427e 100644
|
|
||||||
--- a/dist/hls.light.mjs
|
|
||||||
+++ b/dist/hls.light.mjs
|
|
||||||
@@ -20523,9 +20523,9 @@ class Hls {
|
|
||||||
}
|
|
||||||
Hls.defaultConfig = void 0;
|
|
||||||
|
|
||||||
-var KeySystemFormats = empty.KeySystemFormats;
|
|
||||||
-var KeySystems = empty.KeySystems;
|
|
||||||
-var SubtitleStreamController = empty.SubtitleStreamController;
|
|
||||||
-var TimelineController = empty.TimelineController;
|
|
||||||
+var KeySystemFormats = empty;
|
|
||||||
+var KeySystems = empty;
|
|
||||||
+var SubtitleStreamController = empty;
|
|
||||||
+var TimelineController = empty;
|
|
||||||
export { AbrController, AttrList, Cues as AudioStreamController, Cues as AudioTrackController, BasePlaylistController, BaseSegment, BaseStreamController, BufferController, Cues as CMCDController, CapLevelController, ChunkMetadata, ContentSteeringController, DateRange, Cues as EMEController, ErrorActionFlags, ErrorController, ErrorDetails, ErrorTypes, Events, FPSController, Fragment, Hls, HlsSkip, HlsUrlParameters, KeySystemFormats, KeySystems, Level, LevelDetails, LevelKey, LoadStats, MetadataSchema, NetworkErrorAction, Part, PlaylistLevelType, SubtitleStreamController, Cues as SubtitleTrackController, TimelineController, Hls as default, getMediaSource, isMSESupported, isSupported };
|
|
||||||
//# sourceMappingURL=hls.light.mjs.map
|
|
39
.yarn/patches/sortablejs-npm-1.15.0-f3a393abcc.patch
Normal file
39
.yarn/patches/sortablejs-npm-1.15.0-f3a393abcc.patch
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
diff --git a/modular/sortable.complete.esm.js b/modular/sortable.complete.esm.js
|
||||||
|
index 02e9f2d6bebeb430fe6e7c1cc3f9c3c9df051f14..bb8268b0844a1faa4108cc92c0be2a3dbaf23f83 100644
|
||||||
|
--- a/modular/sortable.complete.esm.js
|
||||||
|
+++ b/modular/sortable.complete.esm.js
|
||||||
|
@@ -1657,7 +1657,7 @@ Sortable.prototype =
|
||||||
|
target = parent; // store last element
|
||||||
|
}
|
||||||
|
/* jshint boss:true */
|
||||||
|
- while (parent = parent.parentNode);
|
||||||
|
+ while (parent = parent.parentNode || parent.getRootNode().host);
|
||||||
|
}
|
||||||
|
|
||||||
|
_unhideGhostForTarget();
|
||||||
|
diff --git a/modular/sortable.core.esm.js b/modular/sortable.core.esm.js
|
||||||
|
index b04c8b4634f7c6b4ef1aadbb48afe6564306dea9..39a107163c8c336ebd669b5ea8a936af87e1c1e7 100644
|
||||||
|
--- a/modular/sortable.core.esm.js
|
||||||
|
+++ b/modular/sortable.core.esm.js
|
||||||
|
@@ -1657,7 +1657,7 @@ Sortable.prototype =
|
||||||
|
target = parent; // store last element
|
||||||
|
}
|
||||||
|
/* jshint boss:true */
|
||||||
|
- while (parent = parent.parentNode);
|
||||||
|
+ while (parent = parent.parentNode || parent.getRootNode().host);
|
||||||
|
}
|
||||||
|
|
||||||
|
_unhideGhostForTarget();
|
||||||
|
diff --git a/modular/sortable.esm.js b/modular/sortable.esm.js
|
||||||
|
index 6ec7ed1bb557e21c2578200161e989c65d23150b..0a05475a22904472fac6c13f524c674da76584b0 100644
|
||||||
|
--- a/modular/sortable.esm.js
|
||||||
|
+++ b/modular/sortable.esm.js
|
||||||
|
@@ -1657,7 +1657,7 @@ Sortable.prototype =
|
||||||
|
target = parent; // store last element
|
||||||
|
}
|
||||||
|
/* jshint boss:true */
|
||||||
|
- while (parent = parent.parentNode);
|
||||||
|
+ while (parent = parent.parentNode || parent.getRootNode().host);
|
||||||
|
}
|
||||||
|
|
||||||
|
_unhideGhostForTarget();
|
@@ -1,73 +0,0 @@
|
|||||||
diff --git a/modular/sortable.core.esm.js b/modular/sortable.core.esm.js
|
|
||||||
index 93ba17509e2e8583ab241fea6845fbe714c584a2..de0651ddb5dced30d36f7d764da0dd0b441f523f 100644
|
|
||||||
--- a/modular/sortable.core.esm.js
|
|
||||||
+++ b/modular/sortable.core.esm.js
|
|
||||||
@@ -1461,7 +1461,7 @@ Sortable.prototype = /** @lends Sortable.prototype */{
|
|
||||||
}
|
|
||||||
target = parent; // store last element
|
|
||||||
}
|
|
||||||
- /* jshint boss:true */ while (parent = parent.parentNode);
|
|
||||||
+ /* jshint boss:true */ while (parent = parent.parentNode || parent.getRootNode().host);
|
|
||||||
}
|
|
||||||
_unhideGhostForTarget();
|
|
||||||
}
|
|
||||||
@@ -1781,11 +1781,16 @@ Sortable.prototype = /** @lends Sortable.prototype */{
|
|
||||||
}
|
|
||||||
if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {
|
|
||||||
capture();
|
|
||||||
- if (elLastChild && elLastChild.nextSibling) {
|
|
||||||
- // the last draggable element is not the last node
|
|
||||||
- el.insertBefore(dragEl, elLastChild.nextSibling);
|
|
||||||
- } else {
|
|
||||||
- el.appendChild(dragEl);
|
|
||||||
+ try {
|
|
||||||
+ if (elLastChild && elLastChild.nextSibling) {
|
|
||||||
+ // the last draggable element is not the last node
|
|
||||||
+ el.insertBefore(dragEl, elLastChild.nextSibling);
|
|
||||||
+ } else {
|
|
||||||
+ el.appendChild(dragEl);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ catch(err) {
|
|
||||||
+ return completed(false);
|
|
||||||
}
|
|
||||||
parentEl = el; // actualization
|
|
||||||
|
|
||||||
@@ -1802,7 +1807,13 @@ Sortable.prototype = /** @lends Sortable.prototype */{
|
|
||||||
targetRect = getRect(target);
|
|
||||||
if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {
|
|
||||||
capture();
|
|
||||||
- el.insertBefore(dragEl, firstChild);
|
|
||||||
+ try {
|
|
||||||
+ el.insertBefore(dragEl, firstChild);
|
|
||||||
+ }
|
|
||||||
+ catch(err) {
|
|
||||||
+ return completed(false);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
parentEl = el; // actualization
|
|
||||||
|
|
||||||
changed();
|
|
||||||
@@ -1849,12 +1860,17 @@ Sortable.prototype = /** @lends Sortable.prototype */{
|
|
||||||
_silent = true;
|
|
||||||
setTimeout(_unsilent, 30);
|
|
||||||
capture();
|
|
||||||
- if (after && !nextSibling) {
|
|
||||||
- el.appendChild(dragEl);
|
|
||||||
- } else {
|
|
||||||
- target.parentNode.insertBefore(dragEl, after ? nextSibling : target);
|
|
||||||
- }
|
|
||||||
|
|
||||||
+ try {
|
|
||||||
+ if (after && !nextSibling) {
|
|
||||||
+ el.appendChild(dragEl);
|
|
||||||
+ } else {
|
|
||||||
+ target.parentNode.insertBefore(dragEl, after ? nextSibling : target);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ catch(err) {
|
|
||||||
+ return completed(false);
|
|
||||||
+ }
|
|
||||||
// Undo chrome's scroll adjustment (has no effect on other browsers)
|
|
||||||
if (scrolledPastTop) {
|
|
||||||
scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);
|
|
File diff suppressed because one or more lines are too long
@@ -6,4 +6,4 @@ enableGlobalCache: false
|
|||||||
|
|
||||||
nodeLinker: node-modules
|
nodeLinker: node-modules
|
||||||
|
|
||||||
yarnPath: .yarn/releases/yarn-4.1.1.cjs
|
yarnPath: .yarn/releases/yarn-4.0.2.cjs
|
||||||
|
@@ -115,9 +115,7 @@ gulp.task("webpack-prod-app", () =>
|
|||||||
|
|
||||||
gulp.task("webpack-dev-server-demo", () =>
|
gulp.task("webpack-dev-server-demo", () =>
|
||||||
runDevServer({
|
runDevServer({
|
||||||
compiler: webpack(
|
compiler: webpack(bothBuilds(createDemoConfig, { isProdBuild: false })),
|
||||||
createDemoConfig({ isProdBuild: false, latestBuild: true })
|
|
||||||
),
|
|
||||||
contentBase: paths.demo_output_root,
|
contentBase: paths.demo_output_root,
|
||||||
port: 8090,
|
port: 8090,
|
||||||
})
|
})
|
||||||
@@ -133,9 +131,7 @@ gulp.task("webpack-prod-demo", () =>
|
|||||||
|
|
||||||
gulp.task("webpack-dev-server-cast", () =>
|
gulp.task("webpack-dev-server-cast", () =>
|
||||||
runDevServer({
|
runDevServer({
|
||||||
compiler: webpack(
|
compiler: webpack(bothBuilds(createCastConfig, { isProdBuild: false })),
|
||||||
createCastConfig({ isProdBuild: false, latestBuild: true })
|
|
||||||
),
|
|
||||||
contentBase: paths.cast_output_root,
|
contentBase: paths.cast_output_root,
|
||||||
port: 8080,
|
port: 8080,
|
||||||
// Accessible from the network, because that's how Cast hits it.
|
// Accessible from the network, because that's how Cast hits it.
|
||||||
@@ -178,9 +174,8 @@ gulp.task("webpack-prod-hassio", () =>
|
|||||||
|
|
||||||
gulp.task("webpack-dev-server-gallery", () =>
|
gulp.task("webpack-dev-server-gallery", () =>
|
||||||
runDevServer({
|
runDevServer({
|
||||||
compiler: webpack(
|
// We don't use the es5 build, but the dev server will fuck up the publicPath if we don't
|
||||||
createGalleryConfig({ isProdBuild: false, latestBuild: true })
|
compiler: webpack(bothBuilds(createGalleryConfig, { isProdBuild: false })),
|
||||||
),
|
|
||||||
contentBase: paths.gallery_output_root,
|
contentBase: paths.gallery_output_root,
|
||||||
port: 8100,
|
port: 8100,
|
||||||
listenHost: "0.0.0.0",
|
listenHost: "0.0.0.0",
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 9.8 KiB |
@@ -31,11 +31,11 @@ import "./hc-layout";
|
|||||||
|
|
||||||
@customElement("hc-cast")
|
@customElement("hc-cast")
|
||||||
class HcCast extends LitElement {
|
class HcCast extends LitElement {
|
||||||
@property({ attribute: false }) public auth!: Auth;
|
@property() public auth!: Auth;
|
||||||
|
|
||||||
@property({ attribute: false }) public connection!: Connection;
|
@property() public connection!: Connection;
|
||||||
|
|
||||||
@property({ attribute: false }) public castManager!: CastManager;
|
@property() public castManager!: CastManager;
|
||||||
|
|
||||||
@state() private askWrite = false;
|
@state() private askWrite = false;
|
||||||
|
|
||||||
@@ -241,8 +241,6 @@ class HcCast extends LitElement {
|
|||||||
|
|
||||||
mwc-button ha-svg-icon {
|
mwc-button ha-svg-icon {
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
margin-inline-end: 8px;
|
|
||||||
margin-inline-start: initial;
|
|
||||||
height: 18px;
|
height: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,13 +10,13 @@ import "../../../../src/components/ha-card";
|
|||||||
|
|
||||||
@customElement("hc-layout")
|
@customElement("hc-layout")
|
||||||
class HcLayout extends LitElement {
|
class HcLayout extends LitElement {
|
||||||
@property() public subtitle?: string;
|
@property() public subtitle?: string | undefined;
|
||||||
|
|
||||||
@property({ attribute: false }) public auth?: Auth;
|
@property() public auth?: Auth;
|
||||||
|
|
||||||
@property({ attribute: false }) public connection?: Connection;
|
@property() public connection?: Connection;
|
||||||
|
|
||||||
@property({ attribute: false }) public user?: HassUser;
|
@property() public user?: HassUser;
|
||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
return html`
|
return html`
|
||||||
|
@@ -12,8 +12,8 @@ class HcLaunchScreen extends LitElement {
|
|||||||
return html`
|
return html`
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<img
|
<img
|
||||||
alt="Nabu Casa logo on left, Home Assistant logo on right, and red heart in center"
|
alt="Home Assistant logo on left, Nabu Casa logo on right, and red heart in center"
|
||||||
src="https://cast.home-assistant.io/images/nabu-loves-hass.png"
|
src="https://www.home-assistant.io/images/blog/2018-09-thinking-big/social.png"
|
||||||
/>
|
/>
|
||||||
<div class="status">
|
<div class="status">
|
||||||
${this.hass ? "Connected" : "Not Connected"}
|
${this.hass ? "Connected" : "Not Connected"}
|
||||||
@@ -28,23 +28,23 @@ class HcLaunchScreen extends LitElement {
|
|||||||
:host {
|
:host {
|
||||||
display: block;
|
display: block;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
background-color: #f2f4f9;
|
padding-top: 64px;
|
||||||
|
background-color: white;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
.container {
|
.container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
align-items: center;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: space-evenly;
|
|
||||||
}
|
}
|
||||||
img {
|
img {
|
||||||
max-width: 80%;
|
width: 717px;
|
||||||
object-fit: cover;
|
height: 376px;
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
.status {
|
.status {
|
||||||
color: #1d2126;
|
padding-right: 54px;
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
@@ -17,7 +17,7 @@ class HcLovelace extends LitElement {
|
|||||||
@property({ attribute: false })
|
@property({ attribute: false })
|
||||||
public lovelaceConfig!: LovelaceConfig;
|
public lovelaceConfig!: LovelaceConfig;
|
||||||
|
|
||||||
@property() public viewPath?: string | number | null;
|
@property() public viewPath?: string | number;
|
||||||
|
|
||||||
@property() public urlPath: string | null = null;
|
@property() public urlPath: string | null = null;
|
||||||
|
|
||||||
@@ -93,9 +93,6 @@ class HcLovelace extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private get _viewIndex() {
|
private get _viewIndex() {
|
||||||
if (this.viewPath === null) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
const selectedView = this.viewPath;
|
const selectedView = this.viewPath;
|
||||||
const selectedViewInt = parseInt(selectedView as string, 10);
|
const selectedViewInt = parseInt(selectedView as string, 10);
|
||||||
for (let i = 0; i < this.lovelaceConfig.views.length; i++) {
|
for (let i = 0; i < this.lovelaceConfig.views.length; i++) {
|
||||||
|
@@ -51,10 +51,10 @@ export class HcMain extends HassElement {
|
|||||||
|
|
||||||
@state() private _lovelacePath: string | number | null = null;
|
@state() private _lovelacePath: string | number | null = null;
|
||||||
|
|
||||||
@state() private _urlPath?: string | null;
|
|
||||||
|
|
||||||
@state() private _error?: string;
|
@state() private _error?: string;
|
||||||
|
|
||||||
|
@state() private _urlPath?: string | null;
|
||||||
|
|
||||||
private _hassUUID?: string;
|
private _hassUUID?: string;
|
||||||
|
|
||||||
private _unsubLovelace?: UnsubscribeFunc;
|
private _unsubLovelace?: UnsubscribeFunc;
|
||||||
@@ -81,7 +81,7 @@ export class HcMain extends HassElement {
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
!this._lovelaceConfig ||
|
!this._lovelaceConfig ||
|
||||||
this._urlPath === undefined ||
|
this._lovelacePath === null ||
|
||||||
// Guard against part of HA not being loaded yet.
|
// Guard against part of HA not being loaded yet.
|
||||||
!this.hass ||
|
!this.hass ||
|
||||||
!this.hass.states ||
|
!this.hass.states ||
|
||||||
@@ -99,8 +99,8 @@ export class HcMain extends HassElement {
|
|||||||
<hc-lovelace
|
<hc-lovelace
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
.lovelaceConfig=${this._lovelaceConfig}
|
.lovelaceConfig=${this._lovelaceConfig}
|
||||||
.urlPath=${this._urlPath}
|
|
||||||
.viewPath=${this._lovelacePath}
|
.viewPath=${this._lovelacePath}
|
||||||
|
.urlPath=${this._urlPath}
|
||||||
@config-refresh=${this._generateDefaultLovelaceConfig}
|
@config-refresh=${this._generateDefaultLovelaceConfig}
|
||||||
></hc-lovelace>
|
></hc-lovelace>
|
||||||
`;
|
`;
|
||||||
@@ -205,6 +205,7 @@ export class HcMain extends HassElement {
|
|||||||
expires_in: 0,
|
expires_in: 0,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
this._hassUUID = msg.hassUUID;
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
const errorMessage = this._getErrorMessage(err);
|
const errorMessage = this._getErrorMessage(err);
|
||||||
this._error = errorMessage;
|
this._error = errorMessage;
|
||||||
@@ -224,17 +225,6 @@ export class HcMain extends HassElement {
|
|||||||
this.hass.connection.close();
|
this.hass.connection.close();
|
||||||
}
|
}
|
||||||
this.initializeHass(auth, connection);
|
this.initializeHass(auth, connection);
|
||||||
if (this._hassUUID !== msg.hassUUID) {
|
|
||||||
this._hassUUID = msg.hassUUID;
|
|
||||||
this._lovelaceConfig = undefined;
|
|
||||||
this._urlPath = undefined;
|
|
||||||
this._lovelacePath = null;
|
|
||||||
if (this._unsubLovelace) {
|
|
||||||
this._unsubLovelace();
|
|
||||||
this._unsubLovelace = undefined;
|
|
||||||
}
|
|
||||||
resourcesLoaded = false;
|
|
||||||
}
|
|
||||||
this._error = undefined;
|
this._error = undefined;
|
||||||
this._sendStatus();
|
this._sendStatus();
|
||||||
}
|
}
|
||||||
@@ -243,7 +233,7 @@ export class HcMain extends HassElement {
|
|||||||
this._showDemo = false;
|
this._showDemo = false;
|
||||||
// We should not get this command before we are connected.
|
// We should not get this command before we are connected.
|
||||||
// Means a client got out of sync. Let's send status to them.
|
// Means a client got out of sync. Let's send status to them.
|
||||||
if (!this.hass?.connected) {
|
if (!this.hass) {
|
||||||
this._sendStatus(msg.senderId!);
|
this._sendStatus(msg.senderId!);
|
||||||
this._error = "Cannot show Lovelace because we're not connected.";
|
this._error = "Cannot show Lovelace because we're not connected.";
|
||||||
this._sendError(
|
this._sendError(
|
||||||
@@ -270,7 +260,7 @@ export class HcMain extends HassElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._error = undefined;
|
this._error = undefined;
|
||||||
if (msg.urlPath === "lovelace" || msg.urlPath === undefined) {
|
if (msg.urlPath === "lovelace") {
|
||||||
msg.urlPath = null;
|
msg.urlPath = null;
|
||||||
}
|
}
|
||||||
this._lovelacePath = msg.viewPath;
|
this._lovelacePath = msg.viewPath;
|
||||||
@@ -285,7 +275,7 @@ export class HcMain extends HassElement {
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
this._urlPath = "energy";
|
this._urlPath = "energy";
|
||||||
this._lovelacePath = null;
|
this._lovelacePath = 0;
|
||||||
this._sendStatus();
|
this._sendStatus();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -294,7 +284,6 @@ export class HcMain extends HassElement {
|
|||||||
this._lovelaceConfig = undefined;
|
this._lovelaceConfig = undefined;
|
||||||
if (this._unsubLovelace) {
|
if (this._unsubLovelace) {
|
||||||
this._unsubLovelace();
|
this._unsubLovelace();
|
||||||
this._unsubLovelace = undefined;
|
|
||||||
}
|
}
|
||||||
const llColl = atLeastVersion(this.hass.connection.haVersion, 0, 107)
|
const llColl = atLeastVersion(this.hass.connection.haVersion, 0, 107)
|
||||||
? getLovelaceCollection(this.hass.connection, msg.urlPath)
|
? getLovelaceCollection(this.hass.connection, msg.urlPath)
|
||||||
|
@@ -4,7 +4,6 @@ import { energyEntities } from "../stubs/entities";
|
|||||||
import { DemoConfig } from "./types";
|
import { DemoConfig } from "./types";
|
||||||
|
|
||||||
export const demoConfigs: Array<() => Promise<DemoConfig>> = [
|
export const demoConfigs: Array<() => Promise<DemoConfig>> = [
|
||||||
() => import("./sections").then((mod) => mod.demoSections),
|
|
||||||
() => import("./arsaboo").then((mod) => mod.demoArsaboo),
|
() => import("./arsaboo").then((mod) => mod.demoArsaboo),
|
||||||
() => import("./teachingbirds").then((mod) => mod.demoTeachingbirds),
|
() => import("./teachingbirds").then((mod) => mod.demoTeachingbirds),
|
||||||
() => import("./kernehed").then((mod) => mod.demoKernehed),
|
() => import("./kernehed").then((mod) => mod.demoKernehed),
|
||||||
|
@@ -1,16 +0,0 @@
|
|||||||
import { html } from "lit";
|
|
||||||
import { DemoConfig } from "../types";
|
|
||||||
|
|
||||||
export const demoLovelaceDescription: DemoConfig["description"] = (
|
|
||||||
localize
|
|
||||||
) => html`
|
|
||||||
<p>
|
|
||||||
${localize("ui.panel.page-demo.config.sections.description", {
|
|
||||||
blog_post: html`<a
|
|
||||||
href="https://www.home-assistant.io/blog/2024/03/04/dashboard-chapter-1/"
|
|
||||||
target="_blank"
|
|
||||||
>${localize("ui.panel.page-demo.config.sections.description_blog_post")}
|
|
||||||
</a>`,
|
|
||||||
})}
|
|
||||||
</p>
|
|
||||||
`;
|
|
@@ -1,474 +0,0 @@
|
|||||||
import { convertEntities } from "../../../../src/fake_data/entity";
|
|
||||||
import { DemoConfig } from "../types";
|
|
||||||
|
|
||||||
export const demoEntitiesSections: DemoConfig["entities"] = () =>
|
|
||||||
convertEntities({
|
|
||||||
"cover.living_room_garden_shutter": {
|
|
||||||
entity_id: "cover.living_room_garden_shutter",
|
|
||||||
state: "open",
|
|
||||||
attributes: {
|
|
||||||
current_position: 100,
|
|
||||||
device_class: "shutter",
|
|
||||||
friendly_name: "Living room garden shutter",
|
|
||||||
supported_features: 15,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"cover.living_room_graveyard_shutter": {
|
|
||||||
entity_id: "cover.living_room_graveyard_shutter",
|
|
||||||
state: "open",
|
|
||||||
attributes: {
|
|
||||||
current_position: 100,
|
|
||||||
device_class: "shutter",
|
|
||||||
friendly_name: "Living room graveyard shutter",
|
|
||||||
supported_features: 15,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"cover.living_room_left_shutter": {
|
|
||||||
entity_id: "cover.living_room_left_shutter",
|
|
||||||
state: "open",
|
|
||||||
attributes: {
|
|
||||||
current_position: 100,
|
|
||||||
device_class: "shutter",
|
|
||||||
friendly_name: "Living room left shutter",
|
|
||||||
supported_features: 15,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"cover.living_room_right_shutter": {
|
|
||||||
entity_id: "cover.living_room_right_shutter",
|
|
||||||
state: "open",
|
|
||||||
attributes: {
|
|
||||||
current_position: 100,
|
|
||||||
device_class: "shutter",
|
|
||||||
friendly_name: "Living room right shutter",
|
|
||||||
supported_features: 15,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"light.floor_lamp": {
|
|
||||||
entity_id: "light.floor_lamp",
|
|
||||||
state: "on",
|
|
||||||
attributes: {
|
|
||||||
min_color_temp_kelvin: 2000,
|
|
||||||
max_color_temp_kelvin: 6535,
|
|
||||||
min_mireds: 153,
|
|
||||||
max_mireds: 500,
|
|
||||||
supported_color_modes: ["color_temp", "xy"],
|
|
||||||
color_mode: "color_temp",
|
|
||||||
brightness: 178,
|
|
||||||
color_temp_kelvin: 2583,
|
|
||||||
color_temp: 387,
|
|
||||||
hs_color: [28.664, 69.597],
|
|
||||||
rgb_color: [255, 162, 77],
|
|
||||||
xy_color: [0.538, 0.389],
|
|
||||||
icon: "mdi:floor-lamp",
|
|
||||||
friendly_name: "Floor lamp",
|
|
||||||
supported_features: 44,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"light.living_room_spotlights": {
|
|
||||||
entity_id: "light.living_room_spotlights",
|
|
||||||
state: "on",
|
|
||||||
attributes: {
|
|
||||||
supported_color_modes: ["brightness"],
|
|
||||||
color_mode: "brightness",
|
|
||||||
brightness: 126,
|
|
||||||
icon: "mdi:ceiling-light-multiple",
|
|
||||||
friendly_name: "Living room spotlights",
|
|
||||||
supported_features: 32,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"light.bar_lamp": {
|
|
||||||
entity_id: "light.bar_lamp",
|
|
||||||
state: "on",
|
|
||||||
attributes: {
|
|
||||||
min_color_temp_kelvin: 2202,
|
|
||||||
max_color_temp_kelvin: 4504,
|
|
||||||
min_mireds: 222,
|
|
||||||
max_mireds: 454,
|
|
||||||
effect_list: ["None", "candle"],
|
|
||||||
supported_color_modes: ["color_temp"],
|
|
||||||
effect: null,
|
|
||||||
color_mode: null,
|
|
||||||
brightness: null,
|
|
||||||
color_temp_kelvin: null,
|
|
||||||
color_temp: null,
|
|
||||||
hs_color: null,
|
|
||||||
rgb_color: null,
|
|
||||||
xy_color: null,
|
|
||||||
mode: "normal",
|
|
||||||
dynamics: "none",
|
|
||||||
icon: "mdi:lightbulb-variant",
|
|
||||||
friendly_name: "Bar lamp",
|
|
||||||
supported_features: 44,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.living_room_temperature": {
|
|
||||||
entity_id: "sensor.living_room_temperature",
|
|
||||||
state: "22.8",
|
|
||||||
attributes: {
|
|
||||||
state_class: "measurement",
|
|
||||||
unit_of_measurement: "°C",
|
|
||||||
device_class: "temperature",
|
|
||||||
friendly_name: "Living room Temperature",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"media_player.living_room_nest_mini": {
|
|
||||||
entity_id: "media_player.living_room_nest_mini",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
device_class: "speaker",
|
|
||||||
friendly_name: "Living room Nest Mini",
|
|
||||||
supported_features: 152461,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"cover.kitchen_shutter": {
|
|
||||||
entity_id: "cover.kitchen_shutter",
|
|
||||||
state: "open",
|
|
||||||
attributes: {
|
|
||||||
current_position: 100,
|
|
||||||
device_class: "shutter",
|
|
||||||
friendly_name: "Kitchen shutter ",
|
|
||||||
supported_features: 15,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"light.kitchen_spotlights": {
|
|
||||||
entity_id: "light.kitchen_spotlights",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
supported_color_modes: ["brightness"],
|
|
||||||
color_mode: null,
|
|
||||||
brightness: null,
|
|
||||||
icon: "mdi:ceiling-light-multiple",
|
|
||||||
friendly_name: "Kitchen spotlights ",
|
|
||||||
supported_features: 32,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"light.worktop_spotlights": {
|
|
||||||
entity_id: "light.worktop_spotlights",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
supported_color_modes: ["brightness"],
|
|
||||||
color_mode: null,
|
|
||||||
brightness: null,
|
|
||||||
icon: "mdi:ceiling-light-multiple",
|
|
||||||
friendly_name: "Worktop spotlights ",
|
|
||||||
supported_features: 32,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"binary_sensor.fridge_door": {
|
|
||||||
entity_id: "binary_sensor.fridge_door",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
device_class: "door",
|
|
||||||
icon: "mdi:fridge",
|
|
||||||
friendly_name: "Fridge door",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"media_player.kitchen_nest_audio": {
|
|
||||||
entity_id: "media_player.kitchen_nest_audio",
|
|
||||||
state: "on",
|
|
||||||
attributes: {
|
|
||||||
device_class: "speaker",
|
|
||||||
friendly_name: "Kitchen Nest Audio",
|
|
||||||
supported_features: 152461,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"binary_sensor.tesla_wall_connector_vehicle_connected": {
|
|
||||||
entity_id: "binary_sensor.tesla_wall_connector_vehicle_connected",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
device_class: "plug",
|
|
||||||
friendly_name: "Wall Connector Vehicle connected",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.tesla_wall_connector_session_energy": {
|
|
||||||
entity_id: "sensor.tesla_wall_connector_session_energy",
|
|
||||||
state: "16.3",
|
|
||||||
attributes: {
|
|
||||||
state_class: "total_increasing",
|
|
||||||
unit_of_measurement: "kWh",
|
|
||||||
device_class: "energy",
|
|
||||||
friendly_name: "Tesla Wall Connector Session energy",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.electric_meter_power": {
|
|
||||||
entity_id: "sensor.electric_meter_power",
|
|
||||||
state: "797.86",
|
|
||||||
attributes: {
|
|
||||||
state_class: "measurement",
|
|
||||||
unit_of_measurement: "W",
|
|
||||||
device_class: "power",
|
|
||||||
icon: "mdi:meter-electric",
|
|
||||||
friendly_name: "Electric meter Power",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.eletric_meter_voltage": {
|
|
||||||
entity_id: "sensor.eletric_meter_voltage",
|
|
||||||
state: "232.19",
|
|
||||||
attributes: {
|
|
||||||
state_class: "measurement",
|
|
||||||
unit_of_measurement: "V",
|
|
||||||
device_class: "voltage",
|
|
||||||
friendly_name: "Electric meter voltage",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.electricity_maps_grid_fossil_fuel_percentage": {
|
|
||||||
entity_id: "sensor.electricity_maps_grid_fossil_fuel_percentage",
|
|
||||||
state: "9.84",
|
|
||||||
attributes: {
|
|
||||||
state_class: "measurement",
|
|
||||||
country_code: "FR",
|
|
||||||
unit_of_measurement: "%",
|
|
||||||
attribution: "Data provided by Electricity Maps",
|
|
||||||
icon: "mdi:barrel",
|
|
||||||
friendly_name: "Electricity Maps Grid fossil fuel percentage",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.electricity_maps_co2_intensity": {
|
|
||||||
entity_id: "sensor.electricity_maps_co2_intensity",
|
|
||||||
state: "62.0",
|
|
||||||
attributes: {
|
|
||||||
state_class: "measurement",
|
|
||||||
country_code: "FR",
|
|
||||||
unit_of_measurement: "gCO2eq/kWh",
|
|
||||||
attribution: "Data provided by Electricity Maps",
|
|
||||||
friendly_name: "Electricity Maps CO2 intensity",
|
|
||||||
icon: "mdi:molecule-co2",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sun.sun": {
|
|
||||||
entity_id: "sun.sun",
|
|
||||||
state: "above_horizon",
|
|
||||||
attributes: {
|
|
||||||
next_dawn: "2024-03-05T05:50:21.964405+00:00",
|
|
||||||
next_dusk: "2024-03-04T18:08:54.311334+00:00",
|
|
||||||
next_midnight: "2024-03-05T00:00:00+00:00",
|
|
||||||
next_noon: "2024-03-05T12:00:05+00:00",
|
|
||||||
next_rising: "2024-03-05T06:23:42.739159+00:00",
|
|
||||||
next_setting: "2024-03-04T17:35:26.271171+00:00",
|
|
||||||
elevation: 30.38,
|
|
||||||
azimuth: 204.42,
|
|
||||||
rising: false,
|
|
||||||
friendly_name: "Sun",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.rain": {
|
|
||||||
entity_id: "sensor.moon_phase",
|
|
||||||
state: "7.2",
|
|
||||||
attributes: {
|
|
||||||
state_class: "total_increasing",
|
|
||||||
unit_of_measurement: "mm",
|
|
||||||
device_class: "precipitation",
|
|
||||||
friendly_name: "Rain",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"climate.ground_floor": {
|
|
||||||
entity_id: "climate.ground_floor",
|
|
||||||
state: "heat",
|
|
||||||
attributes: {
|
|
||||||
hvac_modes: ["auto", "heat", "off"],
|
|
||||||
min_temp: 7,
|
|
||||||
max_temp: 35,
|
|
||||||
preset_modes: [
|
|
||||||
"comfort",
|
|
||||||
"away",
|
|
||||||
"eco",
|
|
||||||
"frost_protection",
|
|
||||||
"external",
|
|
||||||
"home",
|
|
||||||
],
|
|
||||||
current_temperature: 20.8,
|
|
||||||
temperature: 21,
|
|
||||||
preset_mode: "comfort",
|
|
||||||
icon: "mdi:home-floor-0",
|
|
||||||
friendly_name: "Ground floor Thermostat",
|
|
||||||
supported_features: 401,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"climate.first_floor": {
|
|
||||||
entity_id: "climate.first_floor",
|
|
||||||
state: "heat",
|
|
||||||
attributes: {
|
|
||||||
hvac_modes: ["auto", "heat", "off"],
|
|
||||||
min_temp: 7,
|
|
||||||
max_temp: 35,
|
|
||||||
preset_modes: [
|
|
||||||
"comfort",
|
|
||||||
"away",
|
|
||||||
"eco",
|
|
||||||
"frost_protection",
|
|
||||||
"external",
|
|
||||||
"home",
|
|
||||||
],
|
|
||||||
current_temperature: 21.7,
|
|
||||||
temperature: 21,
|
|
||||||
preset_mode: "comfort",
|
|
||||||
icon: "mdi:home-floor-1",
|
|
||||||
friendly_name: "First floor Thermostat",
|
|
||||||
supported_features: 401,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"cover.study_shutter": {
|
|
||||||
entity_id: "cover.study_shutter",
|
|
||||||
state: "open",
|
|
||||||
attributes: {
|
|
||||||
current_position: 100,
|
|
||||||
device_class: "shutter",
|
|
||||||
friendly_name: "Study shutter",
|
|
||||||
supported_features: 15,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"light.study_spotlights": {
|
|
||||||
entity_id: "light.study_spotlights",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
supported_color_modes: ["brightness"],
|
|
||||||
color_mode: null,
|
|
||||||
brightness: null,
|
|
||||||
icon: "mdi:ceiling-light-multiple",
|
|
||||||
friendly_name: "Study spotlights",
|
|
||||||
supported_features: 32,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"media_player.study_nest_hub": {
|
|
||||||
entity_id: "media_player.study_nest_hub",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
friendly_name: "Study Nest Hub",
|
|
||||||
supported_features: 152461,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.standing_desk_height": {
|
|
||||||
entity_id: "sensor.standing_desk_height",
|
|
||||||
state: "72",
|
|
||||||
attributes: {
|
|
||||||
unit_of_measurement: "cm",
|
|
||||||
icon: "mdi:tape-measure",
|
|
||||||
friendly_name: "Standing desk Height",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"light.outdoor_light": {
|
|
||||||
entity_id: "light.outdoor_light",
|
|
||||||
state: "on",
|
|
||||||
attributes: {
|
|
||||||
supported_color_modes: ["brightness"],
|
|
||||||
color_mode: null,
|
|
||||||
brightness: 255,
|
|
||||||
icon: "mdi:outdoor-lamp",
|
|
||||||
friendly_name: "Outdoor light",
|
|
||||||
supported_features: 32,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"light.flood_light": {
|
|
||||||
entity_id: "light.flood_light",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
effect_list: ["None", "candle"],
|
|
||||||
supported_color_modes: ["brightness"],
|
|
||||||
effect: null,
|
|
||||||
color_mode: null,
|
|
||||||
brightness: null,
|
|
||||||
mode: "normal",
|
|
||||||
dynamics: "none",
|
|
||||||
icon: "mdi:light-flood-down",
|
|
||||||
friendly_name: "Flood light",
|
|
||||||
supported_features: 44,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.outdoor_motion_sensor_temperature": {
|
|
||||||
entity_id: "sensor.outdoor_motion_sensor_temperature",
|
|
||||||
state: "10.2",
|
|
||||||
attributes: {
|
|
||||||
state_class: "measurement",
|
|
||||||
unit_of_measurement: "°C",
|
|
||||||
device_class: "temperature",
|
|
||||||
friendly_name: "Outdoor motion sensor Temperature",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"binary_sensor.outdoor_motion_sensor_motion": {
|
|
||||||
entity_id: "binary_sensor.outdoor_motion_sensor_motion",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
device_class: "motion",
|
|
||||||
friendly_name: "Outdoor motion sensor Motion",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sensor.outdoor_motion_sensor_illuminance": {
|
|
||||||
entity_id: "sensor.outdoor_motion_sensor_illuminance",
|
|
||||||
state: "555",
|
|
||||||
attributes: {
|
|
||||||
state_class: "measurement",
|
|
||||||
light_level: 27444,
|
|
||||||
unit_of_measurement: "lx",
|
|
||||||
device_class: "illuminance",
|
|
||||||
friendly_name: "Outdoor motion sensor Illuminance",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"automation.home_assistant_auto_update": {
|
|
||||||
entity_id: "automation.home_assistant_auto_update",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
id: "1700669321947",
|
|
||||||
last_triggered: "2024-02-29T18:02:05.343139+00:00",
|
|
||||||
mode: "queued",
|
|
||||||
current: 0,
|
|
||||||
max: 50,
|
|
||||||
icon: "mdi:auto-mode",
|
|
||||||
friendly_name: "Home Assistant Auto-update",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"update.home_assistant_operating_system_update": {
|
|
||||||
entity_id: "update.home_assistant_operating_system_update",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
auto_update: false,
|
|
||||||
installed_version: "12.1",
|
|
||||||
in_progress: false,
|
|
||||||
latest_version: "12.1",
|
|
||||||
release_summary: null,
|
|
||||||
release_url:
|
|
||||||
"https://github.com/home-assistant/operating-system/commits/dev",
|
|
||||||
skipped_version: null,
|
|
||||||
title: "Home Assistant Operating System",
|
|
||||||
entity_picture:
|
|
||||||
"https://brands.home-assistant.io/homeassistant/icon.png",
|
|
||||||
friendly_name: "Home Assistant Operating System Update",
|
|
||||||
supported_features: 3,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"update.home_assistant_supervisor_update": {
|
|
||||||
entity_id: "update.home_assistant_supervisor_update",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
auto_update: true,
|
|
||||||
installed_version: "2024.02.2",
|
|
||||||
in_progress: false,
|
|
||||||
latest_version: "2024.02.2",
|
|
||||||
release_summary: null,
|
|
||||||
release_url:
|
|
||||||
"https://github.com/home-assistant/supervisor/commits/main",
|
|
||||||
skipped_version: null,
|
|
||||||
title: "Home Assistant Supervisor",
|
|
||||||
entity_picture: "https://brands.home-assistant.io/hassio/icon.png",
|
|
||||||
friendly_name: "Home Assistant Supervisor Update",
|
|
||||||
supported_features: 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"update.home_assistant_core_update": {
|
|
||||||
entity_id: "update.home_assistant_supervisor_update",
|
|
||||||
state: "off",
|
|
||||||
attributes: {
|
|
||||||
auto_update: false,
|
|
||||||
installed_version: "2024.4.0",
|
|
||||||
in_progress: false,
|
|
||||||
latest_version: "2024.4.0",
|
|
||||||
release_summary: null,
|
|
||||||
release_url: "https://github.com/home-assistant/core/commits/dev",
|
|
||||||
skipped_version: null,
|
|
||||||
title: "Home Assistant Core",
|
|
||||||
entity_picture:
|
|
||||||
"https://brands.home-assistant.io/homeassistant/icon.png",
|
|
||||||
friendly_name: "Home Assistant Core Update",
|
|
||||||
supported_features: 11,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
@@ -1,14 +0,0 @@
|
|||||||
import { DemoConfig } from "../types";
|
|
||||||
import { demoLovelaceDescription } from "./description";
|
|
||||||
import { demoEntitiesSections } from "./entities";
|
|
||||||
import { demoLovelaceSections } from "./lovelace";
|
|
||||||
|
|
||||||
export const demoSections: DemoConfig = {
|
|
||||||
authorName: "Home Assistant",
|
|
||||||
authorUrl: "https://github.com/home-assistant/frontend/",
|
|
||||||
name: "Home Demo",
|
|
||||||
description: demoLovelaceDescription,
|
|
||||||
lovelace: demoLovelaceSections,
|
|
||||||
entities: demoEntitiesSections,
|
|
||||||
theme: () => ({}),
|
|
||||||
};
|
|
@@ -1,281 +0,0 @@
|
|||||||
import { DemoConfig } from "../types";
|
|
||||||
|
|
||||||
export const demoLovelaceSections: DemoConfig["lovelace"] = () => ({
|
|
||||||
title: "Home Assistant Demo",
|
|
||||||
views: [
|
|
||||||
{
|
|
||||||
type: "sections",
|
|
||||||
title: "Demo",
|
|
||||||
path: "home",
|
|
||||||
icon: "mdi:home-assistant",
|
|
||||||
sections: [
|
|
||||||
{
|
|
||||||
title: "Welcome 👋",
|
|
||||||
cards: [{ type: "custom:ha-demo-card" }],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
cards: [
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "cover.living_room_garden_shutter",
|
|
||||||
name: "Garden",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "cover.living_room_graveyard_shutter",
|
|
||||||
name: "Rear",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "cover.living_room_left_shutter",
|
|
||||||
name: "Left",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "cover.living_room_right_shutter",
|
|
||||||
name: "Right",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "light.floor_lamp",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "light.living_room_spotlights",
|
|
||||||
name: "Spotlights",
|
|
||||||
features: [
|
|
||||||
{
|
|
||||||
type: "light-brightness",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "light.bar_lamp",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
graph: "line",
|
|
||||||
type: "sensor",
|
|
||||||
entity: "sensor.living_room_temperature",
|
|
||||||
detail: 1,
|
|
||||||
name: "Temperature",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "media_player.living_room_nest_mini",
|
|
||||||
name: "Nest Mini",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
title: "🛋️ Living room ",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "grid",
|
|
||||||
cards: [
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "cover.kitchen_shutter",
|
|
||||||
name: "Shutter",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "light.kitchen_spotlights",
|
|
||||||
name: "Spotlights",
|
|
||||||
features: [
|
|
||||||
{
|
|
||||||
type: "light-brightness",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "light.worktop_spotlights",
|
|
||||||
name: "Worktop",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "binary_sensor.fridge_door",
|
|
||||||
name: "Fridge",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "media_player.kitchen_nest_audio",
|
|
||||||
name: "Nest Audio",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
title: "👩🍳 Kitchen",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "grid",
|
|
||||||
cards: [
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "binary_sensor.tesla_wall_connector_vehicle_connected",
|
|
||||||
name: "EV",
|
|
||||||
icon: "mdi:car",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "sensor.tesla_wall_connector_session_energy",
|
|
||||||
name: "Last charge",
|
|
||||||
color: "green",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "sensor.electric_meter_power",
|
|
||||||
color: "deep-orange",
|
|
||||||
name: "Home power",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "sensor.eletric_meter_voltage",
|
|
||||||
name: "Voltage",
|
|
||||||
color: "deep-orange",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "sensor.electricity_maps_grid_fossil_fuel_percentage",
|
|
||||||
name: "Fossil fuel",
|
|
||||||
color: "brown",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "sensor.electricity_maps_co2_intensity",
|
|
||||||
name: "CO2 Intensity",
|
|
||||||
color: "dark-grey",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
title: "⚡️ Energy",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "grid",
|
|
||||||
cards: [
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "sun.sun",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "sensor.rain",
|
|
||||||
color: "blue",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
features: [
|
|
||||||
{
|
|
||||||
type: "target-temperature",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
type: "tile",
|
|
||||||
name: "Downstairs",
|
|
||||||
entity: "climate.ground_floor",
|
|
||||||
state_content: ["preset_mode", "current_temperature"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
features: [
|
|
||||||
{
|
|
||||||
type: "target-temperature",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
type: "tile",
|
|
||||||
name: "Upstairs",
|
|
||||||
entity: "climate.first_floor",
|
|
||||||
state_content: ["preset_mode", "current_temperature"],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
title: "🌤️ Climate",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "grid",
|
|
||||||
cards: [
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "cover.study_shutter",
|
|
||||||
name: "Shutter",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "light.study_spotlights",
|
|
||||||
name: "Spotlights",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "media_player.study_nest_hub",
|
|
||||||
name: "Nest Hub",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "sensor.standing_desk_height",
|
|
||||||
name: "Desk",
|
|
||||||
color: "brown",
|
|
||||||
icon: "mdi:desk",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
title: "🧑💻 Study",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "grid",
|
|
||||||
cards: [
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "light.outdoor_light",
|
|
||||||
name: "Door light",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "light.flood_light",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
graph: "line",
|
|
||||||
type: "sensor",
|
|
||||||
entity: "sensor.outdoor_motion_sensor_temperature",
|
|
||||||
detail: 1,
|
|
||||||
name: "Temperature",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "binary_sensor.outdoor_motion_sensor_motion",
|
|
||||||
name: "Motion",
|
|
||||||
color: "blue",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "sensor.outdoor_motion_sensor_illuminance",
|
|
||||||
color: "amber",
|
|
||||||
name: "Illuminance",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
title: "🌳 Outdoor",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "grid",
|
|
||||||
cards: [
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "automation.home_assistant_auto_update",
|
|
||||||
name: "Auto-update",
|
|
||||||
color: "green",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "update.home_assistant_operating_system_update",
|
|
||||||
name: "OS",
|
|
||||||
icon: "mdi:home-assistant",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "update.home_assistant_supervisor_update",
|
|
||||||
icon: "mdi:home-assistant",
|
|
||||||
name: "Supervisor",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "tile",
|
|
||||||
entity: "update.home_assistant_core_update",
|
|
||||||
name: "Core",
|
|
||||||
icon: "mdi:home-assistant",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
title: "🎉 Updates",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
@@ -1,4 +1,3 @@
|
|||||||
import { TemplateResult } from "lit";
|
|
||||||
import { LocalizeFunc } from "../../../src/common/translations/localize";
|
import { LocalizeFunc } from "../../../src/common/translations/localize";
|
||||||
import { LovelaceConfig } from "../../../src/data/lovelace/config/types";
|
import { LovelaceConfig } from "../../../src/data/lovelace/config/types";
|
||||||
import { Entity } from "../../../src/fake_data/entity";
|
import { Entity } from "../../../src/fake_data/entity";
|
||||||
@@ -8,9 +7,6 @@ export interface DemoConfig {
|
|||||||
name: string;
|
name: string;
|
||||||
authorName: string;
|
authorName: string;
|
||||||
authorUrl: string;
|
authorUrl: string;
|
||||||
description?:
|
|
||||||
| string
|
|
||||||
| ((localize: LocalizeFunc) => string | TemplateResult<1>);
|
|
||||||
lovelace: (localize: LocalizeFunc) => LovelaceConfig;
|
lovelace: (localize: LocalizeFunc) => LovelaceConfig;
|
||||||
entities: (localize: LocalizeFunc) => Entity[];
|
entities: (localize: LocalizeFunc) => Entity[];
|
||||||
theme: () => Record<string, string> | null;
|
theme: () => Record<string, string> | null;
|
||||||
|
@@ -39,51 +39,32 @@ export class HADemoCard extends LitElement implements LovelaceCard {
|
|||||||
<div class="picker">
|
<div class="picker">
|
||||||
<div class="label">
|
<div class="label">
|
||||||
${this._switching
|
${this._switching
|
||||||
? html`
|
? html`<ha-circular-progress
|
||||||
<ha-circular-progress indeterminate></ha-circular-progress>
|
indeterminate
|
||||||
`
|
></ha-circular-progress>`
|
||||||
: until(
|
: until(
|
||||||
selectedDemoConfig.then(
|
selectedDemoConfig.then(
|
||||||
(conf) => html`
|
(conf) => html`
|
||||||
${conf.name}
|
${conf.name}
|
||||||
<small>
|
<small>
|
||||||
${this.hass.localize(
|
<a target="_blank" href=${conf.authorUrl}>
|
||||||
"ui.panel.page-demo.cards.demo.demo_by",
|
${this.hass.localize(
|
||||||
{
|
"ui.panel.page-demo.cards.demo.demo_by",
|
||||||
name: html`
|
{ name: conf.authorName }
|
||||||
<a target="_blank" href=${conf.authorUrl}>
|
)}
|
||||||
${conf.authorName}
|
</a>
|
||||||
</a>
|
|
||||||
`,
|
|
||||||
}
|
|
||||||
)}
|
|
||||||
</small>
|
</small>
|
||||||
`
|
`
|
||||||
),
|
),
|
||||||
""
|
""
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<mwc-button @click=${this._nextConfig} .disabled=${this._switching}>
|
<mwc-button @click=${this._nextConfig} .disabled=${this._switching}>
|
||||||
${this.hass.localize("ui.panel.page-demo.cards.demo.next_demo")}
|
${this.hass.localize("ui.panel.page-demo.cards.demo.next_demo")}
|
||||||
</mwc-button>
|
</mwc-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content small-hidden">
|
||||||
<p class="small-hidden">
|
${this.hass.localize("ui.panel.page-demo.cards.demo.introduction")}
|
||||||
${this.hass.localize("ui.panel.page-demo.cards.demo.introduction")}
|
|
||||||
</p>
|
|
||||||
${until(
|
|
||||||
selectedDemoConfig.then((conf) => {
|
|
||||||
if (typeof conf.description === "function") {
|
|
||||||
return conf.description(this.hass.localize);
|
|
||||||
}
|
|
||||||
if (conf.description) {
|
|
||||||
return html`<p>${conf.description}</p>`;
|
|
||||||
}
|
|
||||||
return nothing;
|
|
||||||
}),
|
|
||||||
nothing
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="actions small-hidden">
|
<div class="actions small-hidden">
|
||||||
<a href="https://www.home-assistant.io" target="_blank">
|
<a href="https://www.home-assistant.io" target="_blank">
|
||||||
@@ -127,7 +108,6 @@ export class HADemoCard extends LitElement implements LovelaceCard {
|
|||||||
css`
|
css`
|
||||||
a {
|
a {
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
display: inline-block;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.actions a {
|
.actions a {
|
||||||
@@ -135,11 +115,7 @@ export class HADemoCard extends LitElement implements LovelaceCard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
padding: 0 16px;
|
padding: 16px;
|
||||||
}
|
|
||||||
|
|
||||||
.content p {
|
|
||||||
margin: 16px 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.picker {
|
.picker {
|
||||||
@@ -162,8 +138,9 @@ export class HADemoCard extends LitElement implements LovelaceCard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.actions {
|
.actions {
|
||||||
padding: 0px 8px 4px 8px;
|
padding-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media only screen and (max-width: 500px) {
|
||||||
.small-hidden {
|
.small-hidden {
|
||||||
display: none;
|
display: none;
|
||||||
|
@@ -17,14 +17,12 @@ import { energyEntities } from "./stubs/entities";
|
|||||||
import { mockEntityRegistry } from "./stubs/entity_registry";
|
import { mockEntityRegistry } from "./stubs/entity_registry";
|
||||||
import { mockEvents } from "./stubs/events";
|
import { mockEvents } from "./stubs/events";
|
||||||
import { mockFrontend } from "./stubs/frontend";
|
import { mockFrontend } from "./stubs/frontend";
|
||||||
import { mockIcons } from "./stubs/icons";
|
|
||||||
import { mockHistory } from "./stubs/history";
|
import { mockHistory } from "./stubs/history";
|
||||||
import { mockLovelace } from "./stubs/lovelace";
|
import { mockLovelace } from "./stubs/lovelace";
|
||||||
import { mockMediaPlayer } from "./stubs/media_player";
|
import { mockMediaPlayer } from "./stubs/media_player";
|
||||||
import { mockPersistentNotification } from "./stubs/persistent_notification";
|
import { mockPersistentNotification } from "./stubs/persistent_notification";
|
||||||
import { mockRecorder } from "./stubs/recorder";
|
import { mockRecorder } from "./stubs/recorder";
|
||||||
import { mockTodo } from "./stubs/todo";
|
import { mockTodo } from "./stubs/todo";
|
||||||
import { mockSensor } from "./stubs/sensor";
|
|
||||||
import { mockSystemLog } from "./stubs/system_log";
|
import { mockSystemLog } from "./stubs/system_log";
|
||||||
import { mockTemplate } from "./stubs/template";
|
import { mockTemplate } from "./stubs/template";
|
||||||
import { mockTranslations } from "./stubs/translations";
|
import { mockTranslations } from "./stubs/translations";
|
||||||
@@ -52,13 +50,11 @@ export class HaDemo extends HomeAssistantAppEl {
|
|||||||
mockHistory(hass);
|
mockHistory(hass);
|
||||||
mockRecorder(hass);
|
mockRecorder(hass);
|
||||||
mockTodo(hass);
|
mockTodo(hass);
|
||||||
mockSensor(hass);
|
|
||||||
mockSystemLog(hass);
|
mockSystemLog(hass);
|
||||||
mockTemplate(hass);
|
mockTemplate(hass);
|
||||||
mockEvents(hass);
|
mockEvents(hass);
|
||||||
mockMediaPlayer(hass);
|
mockMediaPlayer(hass);
|
||||||
mockFrontend(hass);
|
mockFrontend(hass);
|
||||||
mockIcons(hass);
|
|
||||||
mockEnergy(hass);
|
mockEnergy(hass);
|
||||||
mockPersistentNotification(hass);
|
mockPersistentNotification(hass);
|
||||||
mockConfigEntries(hass);
|
mockConfigEntries(hass);
|
||||||
@@ -72,8 +68,6 @@ export class HaDemo extends HomeAssistantAppEl {
|
|||||||
id: "sensor.co2_intensity",
|
id: "sensor.co2_intensity",
|
||||||
name: null,
|
name: null,
|
||||||
icon: null,
|
icon: null,
|
||||||
labels: [],
|
|
||||||
categories: {},
|
|
||||||
platform: "co2signal",
|
platform: "co2signal",
|
||||||
hidden_by: null,
|
hidden_by: null,
|
||||||
entity_category: null,
|
entity_category: null,
|
||||||
@@ -90,8 +84,6 @@ export class HaDemo extends HomeAssistantAppEl {
|
|||||||
id: "sensor.co2_intensity",
|
id: "sensor.co2_intensity",
|
||||||
name: null,
|
name: null,
|
||||||
icon: null,
|
icon: null,
|
||||||
labels: [],
|
|
||||||
categories: {},
|
|
||||||
platform: "co2signal",
|
platform: "co2signal",
|
||||||
hidden_by: null,
|
hidden_by: null,
|
||||||
entity_category: null,
|
entity_category: null,
|
||||||
|
@@ -4,11 +4,4 @@ import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
|
|||||||
export const mockAreaRegistry = (
|
export const mockAreaRegistry = (
|
||||||
hass: MockHomeAssistant,
|
hass: MockHomeAssistant,
|
||||||
data: AreaRegistryEntry[] = []
|
data: AreaRegistryEntry[] = []
|
||||||
) => {
|
) => hass.mockWS("config/area_registry/list", () => data);
|
||||||
hass.mockWS("config/area_registry/list", () => data);
|
|
||||||
const areas = {};
|
|
||||||
data.forEach((area) => {
|
|
||||||
areas[area.area_id] = area;
|
|
||||||
});
|
|
||||||
hass.updateHass({ areas });
|
|
||||||
};
|
|
||||||
|
@@ -10,7 +10,6 @@ export const mockConfigEntries = (hass: MockHomeAssistant) => {
|
|||||||
supports_options: false,
|
supports_options: false,
|
||||||
supports_remove_device: false,
|
supports_remove_device: false,
|
||||||
supports_unload: true,
|
supports_unload: true,
|
||||||
supports_reconfigure: true,
|
|
||||||
pref_disable_new_entities: false,
|
pref_disable_new_entities: false,
|
||||||
pref_disable_polling: false,
|
pref_disable_polling: false,
|
||||||
disabled_by: null,
|
disabled_by: null,
|
||||||
|
@@ -4,11 +4,4 @@ import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
|
|||||||
export const mockDeviceRegistry = (
|
export const mockDeviceRegistry = (
|
||||||
hass: MockHomeAssistant,
|
hass: MockHomeAssistant,
|
||||||
data: DeviceRegistryEntry[] = []
|
data: DeviceRegistryEntry[] = []
|
||||||
) => {
|
) => hass.mockWS("config/device_registry/list", () => data);
|
||||||
hass.mockWS("config/device_registry/list", () => data);
|
|
||||||
const devices = {};
|
|
||||||
data.forEach((device) => {
|
|
||||||
devices[device.id] = device;
|
|
||||||
});
|
|
||||||
hass.updateHass({ devices });
|
|
||||||
};
|
|
||||||
|
@@ -1,7 +0,0 @@
|
|||||||
import { FloorRegistryEntry } from "../../../src/data/floor_registry";
|
|
||||||
import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
|
|
||||||
|
|
||||||
export const mockFloorRegistry = (
|
|
||||||
hass: MockHomeAssistant,
|
|
||||||
data: FloorRegistryEntry[] = []
|
|
||||||
) => hass.mockWS("config/floor_registry/list", () => data);
|
|
@@ -1,33 +0,0 @@
|
|||||||
import { IconCategory } from "../../../src/data/icons";
|
|
||||||
import { ENTITY_COMPONENT_ICONS } from "../../../src/fake_data/entity_component_icons";
|
|
||||||
import { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
|
|
||||||
|
|
||||||
export const mockIcons = (hass: MockHomeAssistant) => {
|
|
||||||
hass.mockWS(
|
|
||||||
"frontend/get_icons",
|
|
||||||
async ({
|
|
||||||
category,
|
|
||||||
integration,
|
|
||||||
}: {
|
|
||||||
category: IconCategory;
|
|
||||||
integration?: string;
|
|
||||||
}) => {
|
|
||||||
if (integration) {
|
|
||||||
try {
|
|
||||||
const response = await fetch(
|
|
||||||
`https://raw.githubusercontent.com/home-assistant/core/dev/homeassistant/components/${integration}/icons.json`
|
|
||||||
).then((resp) => resp.json());
|
|
||||||
return { resources: { [integration]: response[category] || {} } };
|
|
||||||
} catch {
|
|
||||||
return { resources: {} };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (category === "entity_component") {
|
|
||||||
return {
|
|
||||||
resources: ENTITY_COMPONENT_ICONS,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return { resources: {} };
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
@@ -1,7 +0,0 @@
|
|||||||
import { LabelRegistryEntry } from "../../../src/data/label_registry";
|
|
||||||
import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
|
|
||||||
|
|
||||||
export const mockLabelRegistry = (
|
|
||||||
hass: MockHomeAssistant,
|
|
||||||
data: LabelRegistryEntry[] = []
|
|
||||||
) => hass.mockWS("config/label_registry/list", () => data);
|
|
@@ -1,58 +0,0 @@
|
|||||||
import { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
|
|
||||||
|
|
||||||
export const mockSensor = (hass: MockHomeAssistant) => {
|
|
||||||
hass.mockWS("sensor/numeric_device_classes", () => [
|
|
||||||
{
|
|
||||||
numeric_device_classes: [
|
|
||||||
"volume_storage",
|
|
||||||
"gas",
|
|
||||||
"data_size",
|
|
||||||
"irradiance",
|
|
||||||
"wind_speed",
|
|
||||||
"volatile_organic_compounds",
|
|
||||||
"volatile_organic_compounds_parts",
|
|
||||||
"voltage",
|
|
||||||
"frequency",
|
|
||||||
"precipitation_intensity",
|
|
||||||
"volume",
|
|
||||||
"precipitation",
|
|
||||||
"battery",
|
|
||||||
"nitrogen_dioxide",
|
|
||||||
"speed",
|
|
||||||
"signal_strength",
|
|
||||||
"pm1",
|
|
||||||
"nitrous_oxide",
|
|
||||||
"atmospheric_pressure",
|
|
||||||
"data_rate",
|
|
||||||
"temperature",
|
|
||||||
"power_factor",
|
|
||||||
"aqi",
|
|
||||||
"current",
|
|
||||||
"volume_flow_rate",
|
|
||||||
"humidity",
|
|
||||||
"duration",
|
|
||||||
"ozone",
|
|
||||||
"distance",
|
|
||||||
"pressure",
|
|
||||||
"pm25",
|
|
||||||
"weight",
|
|
||||||
"energy",
|
|
||||||
"carbon_monoxide",
|
|
||||||
"apparent_power",
|
|
||||||
"illuminance",
|
|
||||||
"energy_storage",
|
|
||||||
"moisture",
|
|
||||||
"power",
|
|
||||||
"water",
|
|
||||||
"carbon_dioxide",
|
|
||||||
"ph",
|
|
||||||
"reactive_power",
|
|
||||||
"monetary",
|
|
||||||
"nitrogen_monoxide",
|
|
||||||
"pm10",
|
|
||||||
"sound_pressure",
|
|
||||||
"sulphur_dioxide",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
};
|
|
@@ -21,5 +21,4 @@ export const mockTodo = (hass: MockHomeAssistant) => {
|
|||||||
},
|
},
|
||||||
] as TodoItem[],
|
] as TodoItem[],
|
||||||
}));
|
}));
|
||||||
hass.mockWS("todo/item/subscribe", (_msg, _hass) => () => {});
|
|
||||||
};
|
};
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { Button } from "@material/mwc-button";
|
import { Button } from "@material/mwc-button";
|
||||||
import { html, LitElement, css, TemplateResult, nothing } from "lit";
|
import { html, LitElement, css, TemplateResult } from "lit";
|
||||||
import { customElement, property } from "lit/decorators";
|
import { customElement, property } from "lit/decorators";
|
||||||
import { applyThemesOnElement } from "../../../src/common/dom/apply_themes_on_element";
|
import { applyThemesOnElement } from "../../../src/common/dom/apply_themes_on_element";
|
||||||
import { fireEvent } from "../../../src/common/dom/fire_event";
|
import { fireEvent } from "../../../src/common/dom/fire_event";
|
||||||
@@ -9,7 +9,7 @@ import "../../../src/components/ha-card";
|
|||||||
class DemoBlackWhiteRow extends LitElement {
|
class DemoBlackWhiteRow extends LitElement {
|
||||||
@property() title!: string;
|
@property() title!: string;
|
||||||
|
|
||||||
@property() value?: any;
|
@property() value!: any;
|
||||||
|
|
||||||
@property({ type: Boolean }) public disabled = false;
|
@property({ type: Boolean }) public disabled = false;
|
||||||
|
|
||||||
@@ -45,9 +45,7 @@ class DemoBlackWhiteRow extends LitElement {
|
|||||||
</mwc-button>
|
</mwc-button>
|
||||||
</div>
|
</div>
|
||||||
</ha-card>
|
</ha-card>
|
||||||
${this.value
|
<pre>${JSON.stringify(this.value, undefined, 2)}</pre>
|
||||||
? html`<pre>${JSON.stringify(this.value, undefined, 2)}</pre>`
|
|
||||||
: nothing}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
@@ -13,7 +13,7 @@ export interface DemoCardConfig {
|
|||||||
class DemoCard extends LitElement {
|
class DemoCard extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
|
|
||||||
@property({ attribute: false }) public config!: DemoCardConfig;
|
@property() public config!: DemoCardConfig;
|
||||||
|
|
||||||
@property({ type: Boolean }) public showConfig = false;
|
@property({ type: Boolean }) public showConfig = false;
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@ import "../ha-demo-options";
|
|||||||
|
|
||||||
@customElement("demo-cards")
|
@customElement("demo-cards")
|
||||||
class DemoCards extends LitElement {
|
class DemoCards extends LitElement {
|
||||||
@property({ attribute: false }) public configs!: DemoCardConfig[];
|
@property() public configs!: DemoCardConfig[];
|
||||||
|
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
|
|
||||||
|
@@ -1,19 +1,19 @@
|
|||||||
import { LitElement, css, html } from "lit";
|
import { LitElement, css, html } from "lit";
|
||||||
import { customElement, property, state } from "lit/decorators";
|
import { customElement, property } from "lit/decorators";
|
||||||
import { applyThemesOnElement } from "../../../src/common/dom/apply_themes_on_element";
|
import { applyThemesOnElement } from "../../../src/common/dom/apply_themes_on_element";
|
||||||
import "../../../src/components/ha-formfield";
|
import "../../../src/components/ha-formfield";
|
||||||
import "../../../src/components/ha-switch";
|
import "../../../src/components/ha-switch";
|
||||||
import { HomeAssistant } from "../../../src/types";
|
|
||||||
import "../ha-demo-options";
|
|
||||||
import "./demo-more-info";
|
import "./demo-more-info";
|
||||||
|
import "../ha-demo-options";
|
||||||
|
import { HomeAssistant } from "../../../src/types";
|
||||||
|
|
||||||
@customElement("demo-more-infos")
|
@customElement("demo-more-infos")
|
||||||
class DemoMoreInfos extends LitElement {
|
class DemoMoreInfos extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
|
|
||||||
@property({ type: Array }) public entities!: string[];
|
@property() public entities!: [];
|
||||||
|
|
||||||
@state() private _showConfig = false;
|
@property({ attribute: false }) _showConfig: boolean = false;
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return html`
|
return html`
|
||||||
|
@@ -17,7 +17,6 @@ export const basicTrace: DemoTrace = {
|
|||||||
{
|
{
|
||||||
path: "trigger/0",
|
path: "trigger/0",
|
||||||
timestamp: "2021-03-25T04:36:51.223693+00:00",
|
timestamp: "2021-03-25T04:36:51.223693+00:00",
|
||||||
changed_variables: {},
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"condition/0": [
|
"condition/0": [
|
||||||
|
@@ -17,7 +17,6 @@ export const motionLightTrace: DemoTrace = {
|
|||||||
{
|
{
|
||||||
path: "trigger/0",
|
path: "trigger/0",
|
||||||
timestamp: "2021-03-25T04:36:51.223693+00:00",
|
timestamp: "2021-03-25T04:36:51.223693+00:00",
|
||||||
changed_variables: {},
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"action/0": [
|
"action/0": [
|
||||||
|
@@ -21,10 +21,10 @@ const ENTITIES = [
|
|||||||
}),
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
const conditions: Condition[] = [
|
const conditions = [
|
||||||
{ condition: "and", conditions: [] },
|
{ condition: "and" },
|
||||||
{ condition: "not", conditions: [] },
|
{ condition: "not" },
|
||||||
{ condition: "or", conditions: [] },
|
{ condition: "or" },
|
||||||
{ condition: "state", entity_id: "light.kitchen", state: "on" },
|
{ condition: "state", entity_id: "light.kitchen", state: "on" },
|
||||||
{
|
{
|
||||||
condition: "numeric_state",
|
condition: "numeric_state",
|
||||||
@@ -34,11 +34,11 @@ const conditions: Condition[] = [
|
|||||||
above: 20,
|
above: 20,
|
||||||
},
|
},
|
||||||
{ condition: "sun", after: "sunset" },
|
{ condition: "sun", after: "sunset" },
|
||||||
{ condition: "sun", after: "sunrise", before_offset: 3600 },
|
{ condition: "sun", after: "sunrise", offset: "-01:00" },
|
||||||
{ condition: "zone", entity_id: "device_tracker.person", zone: "zone.home" },
|
{ condition: "zone", entity_id: "device_tracker.person", zone: "zone.home" },
|
||||||
{ condition: "trigger", id: "motion" },
|
{ condition: "trigger", id: "motion" },
|
||||||
{ condition: "time" },
|
{ condition: "time" },
|
||||||
{ condition: "template", value_template: "" },
|
{ condition: "template" },
|
||||||
];
|
];
|
||||||
|
|
||||||
const initialCondition: Condition = {
|
const initialCondition: Condition = {
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
import { css, html, LitElement, nothing } from "lit";
|
import { css, html, LitElement, nothing } from "lit";
|
||||||
import { customElement, property } from "lit/decorators";
|
import { customElement, property } from "lit/decorators";
|
||||||
import "../../../../src/components/ha-card";
|
import "../../../../src/components/ha-card";
|
||||||
|
import "../../../../src/components/trace/hat-script-graph";
|
||||||
import "../../../../src/components/trace/hat-trace-timeline";
|
import "../../../../src/components/trace/hat-trace-timeline";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import { HomeAssistant } from "../../../../src/types";
|
import { HomeAssistant } from "../../../../src/types";
|
||||||
@@ -55,7 +56,6 @@ export class DemoAutomationTraceTimeline extends LitElement {
|
|||||||
super.firstUpdated(changedProps);
|
super.firstUpdated(changedProps);
|
||||||
const hass = provideHass(this);
|
const hass = provideHass(this);
|
||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("config", "en");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles() {
|
static get styles() {
|
||||||
|
@@ -60,7 +60,6 @@ export class DemoAutomationTrace extends LitElement {
|
|||||||
super.firstUpdated(changedProps);
|
super.firstUpdated(changedProps);
|
||||||
const hass = provideHass(this);
|
const hass = provideHass(this);
|
||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("config", "en");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles() {
|
static get styles() {
|
||||||
|
@@ -162,7 +162,7 @@ export class DemoHaBarButton extends LitElement {
|
|||||||
}
|
}
|
||||||
.custom-group {
|
.custom-group {
|
||||||
--control-button-group-thickness: 100px;
|
--control-button-group-thickness: 100px;
|
||||||
--control-button-group-border-radius: 36px;
|
--control-button-group-border-radius: 18px;
|
||||||
--control-button-group-spacing: 20px;
|
--control-button-group-spacing: 20px;
|
||||||
}
|
}
|
||||||
.custom-group ha-control-button {
|
.custom-group ha-control-button {
|
||||||
|
@@ -94,7 +94,7 @@ export class DemoHarControlNumberButtons extends LitElement {
|
|||||||
--control-number-buttons-background-color: #2196f3;
|
--control-number-buttons-background-color: #2196f3;
|
||||||
--control-number-buttons-background-opacity: 0.1;
|
--control-number-buttons-background-opacity: 0.1;
|
||||||
--control-number-buttons-thickness: 100px;
|
--control-number-buttons-thickness: 100px;
|
||||||
--control-number-buttons-border-radius: 36px;
|
--control-number-buttons-border-radius: 24px;
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
@@ -186,8 +186,8 @@ export class DemoHaControlSelect extends LitElement {
|
|||||||
.custom {
|
.custom {
|
||||||
--mdc-icon-size: 24px;
|
--mdc-icon-size: 24px;
|
||||||
--control-select-color: var(--state-fan-active-color);
|
--control-select-color: var(--state-fan-active-color);
|
||||||
--control-select-thickness: 130px;
|
--control-select-thickness: 100px;
|
||||||
--control-select-border-radius: 36px;
|
--control-select-border-radius: 24px;
|
||||||
}
|
}
|
||||||
.vertical-selects {
|
.vertical-selects {
|
||||||
height: 300px;
|
height: 300px;
|
||||||
|
@@ -150,8 +150,8 @@ export class DemoHaBarSlider extends LitElement {
|
|||||||
--control-slider-color: #ffcf4c;
|
--control-slider-color: #ffcf4c;
|
||||||
--control-slider-background: #ffcf4c;
|
--control-slider-background: #ffcf4c;
|
||||||
--control-slider-background-opacity: 0.2;
|
--control-slider-background-opacity: 0.2;
|
||||||
--control-slider-thickness: 130px;
|
--control-slider-thickness: 100px;
|
||||||
--control-slider-border-radius: 36px;
|
--control-slider-border-radius: 24px;
|
||||||
}
|
}
|
||||||
.vertical-sliders {
|
.vertical-sliders {
|
||||||
height: 300px;
|
height: 300px;
|
||||||
|
@@ -117,8 +117,8 @@ export class DemoHaControlSwitch extends LitElement {
|
|||||||
.custom {
|
.custom {
|
||||||
--control-switch-on-color: var(--green-color);
|
--control-switch-on-color: var(--green-color);
|
||||||
--control-switch-off-color: var(--red-color);
|
--control-switch-off-color: var(--red-color);
|
||||||
--control-switch-thickness: 130px;
|
--control-switch-thickness: 100px;
|
||||||
--control-switch-border-radius: 36px;
|
--control-switch-border-radius: 24px;
|
||||||
--control-switch-padding: 6px;
|
--control-switch-padding: 6px;
|
||||||
--mdc-icon-size: 24px;
|
--mdc-icon-size: 24px;
|
||||||
}
|
}
|
||||||
|
@@ -10,7 +10,6 @@ import { mockHassioSupervisor } from "../../../../demo/src/stubs/hassio_supervis
|
|||||||
import { computeInitialHaFormData } from "../../../../src/components/ha-form/compute-initial-ha-form-data";
|
import { computeInitialHaFormData } from "../../../../src/components/ha-form/compute-initial-ha-form-data";
|
||||||
import "../../../../src/components/ha-form/ha-form";
|
import "../../../../src/components/ha-form/ha-form";
|
||||||
import type { HaFormSchema } from "../../../../src/components/ha-form/types";
|
import type { HaFormSchema } from "../../../../src/components/ha-form/types";
|
||||||
import type { AreaRegistryEntry } from "../../../../src/data/area_registry";
|
|
||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import { HomeAssistant } from "../../../../src/types";
|
import { HomeAssistant } from "../../../../src/types";
|
||||||
@@ -59,7 +58,6 @@ const DEVICES = [
|
|||||||
hw_version: null,
|
hw_version: null,
|
||||||
via_device_id: null,
|
via_device_id: null,
|
||||||
serial_number: null,
|
serial_number: null,
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
area_id: "backyard",
|
area_id: "backyard",
|
||||||
@@ -78,7 +76,6 @@ const DEVICES = [
|
|||||||
hw_version: null,
|
hw_version: null,
|
||||||
via_device_id: null,
|
via_device_id: null,
|
||||||
serial_number: null,
|
serial_number: null,
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
area_id: null,
|
area_id: null,
|
||||||
@@ -97,37 +94,27 @@ const DEVICES = [
|
|||||||
hw_version: null,
|
hw_version: null,
|
||||||
via_device_id: null,
|
via_device_id: null,
|
||||||
serial_number: null,
|
serial_number: null,
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const AREAS: AreaRegistryEntry[] = [
|
const AREAS = [
|
||||||
{
|
{
|
||||||
area_id: "backyard",
|
area_id: "backyard",
|
||||||
floor_id: null,
|
|
||||||
name: "Backyard",
|
name: "Backyard",
|
||||||
icon: null,
|
|
||||||
picture: null,
|
picture: null,
|
||||||
aliases: [],
|
aliases: [],
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
area_id: "bedroom",
|
area_id: "bedroom",
|
||||||
floor_id: null,
|
|
||||||
name: "Bedroom",
|
name: "Bedroom",
|
||||||
icon: "mdi:bed",
|
|
||||||
picture: null,
|
picture: null,
|
||||||
aliases: [],
|
aliases: [],
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
area_id: "livingroom",
|
area_id: "livingroom",
|
||||||
floor_id: null,
|
|
||||||
name: "Livingroom",
|
name: "Livingroom",
|
||||||
icon: "mdi:sofa",
|
|
||||||
picture: null,
|
picture: null,
|
||||||
aliases: [],
|
aliases: [],
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@@ -9,7 +9,6 @@ import { mockEntityRegistry } from "../../../../demo/src/stubs/entity_registry";
|
|||||||
import { mockHassioSupervisor } from "../../../../demo/src/stubs/hassio_supervisor";
|
import { mockHassioSupervisor } from "../../../../demo/src/stubs/hassio_supervisor";
|
||||||
import "../../../../src/components/ha-selector/ha-selector";
|
import "../../../../src/components/ha-selector/ha-selector";
|
||||||
import "../../../../src/components/ha-settings-row";
|
import "../../../../src/components/ha-settings-row";
|
||||||
import type { AreaRegistryEntry } from "../../../../src/data/area_registry";
|
|
||||||
import { BlueprintInput } from "../../../../src/data/blueprint";
|
import { BlueprintInput } from "../../../../src/data/blueprint";
|
||||||
import { showDialog } from "../../../../src/dialogs/make-dialog-manager";
|
import { showDialog } from "../../../../src/dialogs/make-dialog-manager";
|
||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
@@ -17,10 +16,6 @@ import { provideHass } from "../../../../src/fake_data/provide_hass";
|
|||||||
import { ProvideHassElement } from "../../../../src/mixins/provide-hass-lit-mixin";
|
import { ProvideHassElement } from "../../../../src/mixins/provide-hass-lit-mixin";
|
||||||
import type { HomeAssistant } from "../../../../src/types";
|
import type { HomeAssistant } from "../../../../src/types";
|
||||||
import "../../components/demo-black-white-row";
|
import "../../components/demo-black-white-row";
|
||||||
import { FloorRegistryEntry } from "../../../../src/data/floor_registry";
|
|
||||||
import { LabelRegistryEntry } from "../../../../src/data/label_registry";
|
|
||||||
import { mockFloorRegistry } from "../../../../demo/src/stubs/floor_registry";
|
|
||||||
import { mockLabelRegistry } from "../../../../demo/src/stubs/label_registry";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("alarm_control_panel", "alarm", "disarmed", {
|
getEntity("alarm_control_panel", "alarm", "disarmed", {
|
||||||
@@ -59,7 +54,6 @@ const DEVICES = [
|
|||||||
hw_version: null,
|
hw_version: null,
|
||||||
via_device_id: null,
|
via_device_id: null,
|
||||||
serial_number: null,
|
serial_number: null,
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
area_id: "backyard",
|
area_id: "backyard",
|
||||||
@@ -78,7 +72,6 @@ const DEVICES = [
|
|||||||
hw_version: null,
|
hw_version: null,
|
||||||
via_device_id: null,
|
via_device_id: null,
|
||||||
serial_number: null,
|
serial_number: null,
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
area_id: null,
|
area_id: null,
|
||||||
@@ -97,76 +90,27 @@ const DEVICES = [
|
|||||||
hw_version: null,
|
hw_version: null,
|
||||||
via_device_id: null,
|
via_device_id: null,
|
||||||
serial_number: null,
|
serial_number: null,
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const AREAS: AreaRegistryEntry[] = [
|
const AREAS = [
|
||||||
{
|
{
|
||||||
area_id: "backyard",
|
area_id: "backyard",
|
||||||
floor_id: "ground",
|
|
||||||
name: "Backyard",
|
name: "Backyard",
|
||||||
icon: null,
|
|
||||||
picture: null,
|
picture: null,
|
||||||
aliases: [],
|
aliases: [],
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
area_id: "bedroom",
|
area_id: "bedroom",
|
||||||
floor_id: "first",
|
|
||||||
name: "Bedroom",
|
name: "Bedroom",
|
||||||
icon: "mdi:bed",
|
|
||||||
picture: null,
|
picture: null,
|
||||||
aliases: [],
|
aliases: [],
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
area_id: "livingroom",
|
area_id: "livingroom",
|
||||||
floor_id: "ground",
|
|
||||||
name: "Livingroom",
|
name: "Livingroom",
|
||||||
icon: "mdi:sofa",
|
|
||||||
picture: null,
|
picture: null,
|
||||||
aliases: [],
|
aliases: [],
|
||||||
labels: [],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const FLOORS: FloorRegistryEntry[] = [
|
|
||||||
{
|
|
||||||
floor_id: "ground",
|
|
||||||
name: "Ground floor",
|
|
||||||
level: 0,
|
|
||||||
icon: null,
|
|
||||||
aliases: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
floor_id: "first",
|
|
||||||
name: "First floor",
|
|
||||||
level: 1,
|
|
||||||
icon: "mdi:numeric-1",
|
|
||||||
aliases: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
floor_id: "second",
|
|
||||||
name: "Second floor",
|
|
||||||
level: 2,
|
|
||||||
icon: "mdi:numeric-2",
|
|
||||||
aliases: [],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const LABELS: LabelRegistryEntry[] = [
|
|
||||||
{
|
|
||||||
label_id: "energy",
|
|
||||||
name: "Energy",
|
|
||||||
icon: null,
|
|
||||||
color: "yellow",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label_id: "entertainment",
|
|
||||||
name: "Entertainment",
|
|
||||||
icon: "mdi:popcorn",
|
|
||||||
color: "blue",
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -177,12 +121,7 @@ const SCHEMAS: {
|
|||||||
{
|
{
|
||||||
name: "One of each",
|
name: "One of each",
|
||||||
input: {
|
input: {
|
||||||
label: { name: "Label", selector: { label: {} } },
|
|
||||||
floor: { name: "Floor", selector: { floor: {} } },
|
|
||||||
area: { name: "Area", selector: { area: {} } },
|
|
||||||
device: { name: "Device", selector: { device: {} } },
|
|
||||||
entity: { name: "Entity", selector: { entity: {} } },
|
entity: { name: "Entity", selector: { entity: {} } },
|
||||||
target: { name: "Target", selector: { target: {} } },
|
|
||||||
state: {
|
state: {
|
||||||
name: "State",
|
name: "State",
|
||||||
selector: { state: { entity_id: "alarm_control_panel.alarm" } },
|
selector: { state: { entity_id: "alarm_control_panel.alarm" } },
|
||||||
@@ -191,12 +130,15 @@ const SCHEMAS: {
|
|||||||
name: "Attribute",
|
name: "Attribute",
|
||||||
selector: { attribute: { entity_id: "" } },
|
selector: { attribute: { entity_id: "" } },
|
||||||
},
|
},
|
||||||
|
device: { name: "Device", selector: { device: {} } },
|
||||||
config_entry: {
|
config_entry: {
|
||||||
name: "Integration",
|
name: "Integration",
|
||||||
selector: { config_entry: {} },
|
selector: { config_entry: {} },
|
||||||
},
|
},
|
||||||
duration: { name: "Duration", selector: { duration: {} } },
|
duration: { name: "Duration", selector: { duration: {} } },
|
||||||
addon: { name: "Addon", selector: { addon: {} } },
|
addon: { name: "Addon", selector: { addon: {} } },
|
||||||
|
area: { name: "Area", selector: { area: {} } },
|
||||||
|
target: { name: "Target", selector: { target: {} } },
|
||||||
number_box: {
|
number_box: {
|
||||||
name: "Number Box",
|
name: "Number Box",
|
||||||
selector: {
|
selector: {
|
||||||
@@ -329,14 +271,6 @@ const SCHEMAS: {
|
|||||||
selector: { color_temp: {} },
|
selector: { color_temp: {} },
|
||||||
},
|
},
|
||||||
color_rgb: { name: "Color", selector: { color_rgb: {} } },
|
color_rgb: { name: "Color", selector: { color_rgb: {} } },
|
||||||
qr_code: {
|
|
||||||
name: "QR Code",
|
|
||||||
selector: { qr_code: { data: "https://home-assistant.io" } },
|
|
||||||
},
|
|
||||||
constant: {
|
|
||||||
name: "Constant",
|
|
||||||
selector: { constant: { value: true, label: "Yes!" } },
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -345,8 +279,6 @@ const SCHEMAS: {
|
|||||||
entity: { name: "Entity", selector: { entity: { multiple: true } } },
|
entity: { name: "Entity", selector: { entity: { multiple: true } } },
|
||||||
device: { name: "Device", selector: { device: { multiple: true } } },
|
device: { name: "Device", selector: { device: { multiple: true } } },
|
||||||
area: { name: "Area", selector: { area: { multiple: true } } },
|
area: { name: "Area", selector: { area: { multiple: true } } },
|
||||||
floor: { name: "Floor", selector: { floor: { multiple: true } } },
|
|
||||||
label: { name: "Label", selector: { label: { multiple: true } } },
|
|
||||||
select: {
|
select: {
|
||||||
name: "Select Multiple",
|
name: "Select Multiple",
|
||||||
selector: {
|
selector: {
|
||||||
@@ -403,8 +335,6 @@ class DemoHaSelector extends LitElement implements ProvideHassElement {
|
|||||||
mockDeviceRegistry(hass, DEVICES);
|
mockDeviceRegistry(hass, DEVICES);
|
||||||
mockConfigEntries(hass);
|
mockConfigEntries(hass);
|
||||||
mockAreaRegistry(hass, AREAS);
|
mockAreaRegistry(hass, AREAS);
|
||||||
mockFloorRegistry(hass, FLOORS);
|
|
||||||
mockLabelRegistry(hass, LABELS);
|
|
||||||
mockHassioSupervisor(hass);
|
mockHassioSupervisor(hass);
|
||||||
hass.mockWS("auth/sign_path", (params) => params);
|
hass.mockWS("auth/sign_path", (params) => params);
|
||||||
hass.mockWS("media_player/browse_media", this._browseMedia);
|
hass.mockWS("media_player/browse_media", this._browseMedia);
|
||||||
@@ -567,7 +497,7 @@ class DemoHaSelector extends LitElement implements ProvideHassElement {
|
|||||||
this.requestUpdate();
|
this.requestUpdate();
|
||||||
};
|
};
|
||||||
return html`
|
return html`
|
||||||
<demo-black-white-row .title=${info.name}>
|
<demo-black-white-row .title=${info.name} .value=${this.data[idx]}>
|
||||||
${["light", "dark"].map((slot) =>
|
${["light", "dark"].map((slot) =>
|
||||||
Object.entries(info.input).map(
|
Object.entries(info.input).map(
|
||||||
([key, value]) => html`
|
([key, value]) => html`
|
||||||
@@ -600,8 +530,8 @@ class DemoHaSelector extends LitElement implements ProvideHassElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static styles = css`
|
static styles = css`
|
||||||
ha-settings-row {
|
ha-selector {
|
||||||
--paper-item-body-two-line-min-height: 0;
|
width: 60;
|
||||||
}
|
}
|
||||||
.options {
|
.options {
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("alarm_control_panel", "alarm", "disarmed", {
|
getEntity("alarm_control_panel", "alarm", "disarmed", {
|
||||||
@@ -85,7 +84,6 @@ class DemoAlarmPanelEntity extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("light", "bed_light", "on", {
|
getEntity("light", "bed_light", "on", {
|
||||||
@@ -147,7 +146,6 @@ class DemoArea extends LitElement {
|
|||||||
entity_id: "binary_sensor.kitchen_door",
|
entity_id: "binary_sensor.kitchen_door",
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("light", "controller_1", "on", {
|
getEntity("light", "controller_1", "on", {
|
||||||
@@ -67,7 +66,6 @@ class DemoConditional extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("light", "bed_light", "on", {
|
getEntity("light", "bed_light", "on", {
|
||||||
@@ -324,7 +323,6 @@ class DemoEntities extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("light", "bed_light", "on", {
|
getEntity("light", "bed_light", "on", {
|
||||||
@@ -83,7 +82,6 @@ class DemoButtonEntity extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("device_tracker", "demo_paulus", "work", {
|
getEntity("device_tracker", "demo_paulus", "work", {
|
||||||
@@ -11,7 +10,7 @@ const ENTITIES = [
|
|||||||
latitude: 32.877105,
|
latitude: 32.877105,
|
||||||
longitude: 117.232185,
|
longitude: 117.232185,
|
||||||
gps_accuracy: 91,
|
gps_accuracy: 91,
|
||||||
battery: 25,
|
battery: 71,
|
||||||
friendly_name: "Paulus",
|
friendly_name: "Paulus",
|
||||||
}),
|
}),
|
||||||
getEntity("device_tracker", "demo_anne_therese", "school", {
|
getEntity("device_tracker", "demo_anne_therese", "school", {
|
||||||
@@ -19,7 +18,7 @@ const ENTITIES = [
|
|||||||
latitude: 32.877105,
|
latitude: 32.877105,
|
||||||
longitude: 117.232185,
|
longitude: 117.232185,
|
||||||
gps_accuracy: 91,
|
gps_accuracy: 91,
|
||||||
battery: 50,
|
battery: 71,
|
||||||
friendly_name: "Anne Therese",
|
friendly_name: "Anne Therese",
|
||||||
}),
|
}),
|
||||||
getEntity("device_tracker", "demo_home_boy", "home", {
|
getEntity("device_tracker", "demo_home_boy", "home", {
|
||||||
@@ -27,7 +26,7 @@ const ENTITIES = [
|
|||||||
latitude: 32.877105,
|
latitude: 32.877105,
|
||||||
longitude: 117.232185,
|
longitude: 117.232185,
|
||||||
gps_accuracy: 91,
|
gps_accuracy: 91,
|
||||||
battery: 75,
|
battery: 71,
|
||||||
friendly_name: "Home Boy",
|
friendly_name: "Home Boy",
|
||||||
}),
|
}),
|
||||||
getEntity("light", "bed_light", "on", {
|
getEntity("light", "bed_light", "on", {
|
||||||
@@ -39,53 +38,21 @@ const ENTITIES = [
|
|||||||
getEntity("light", "ceiling_lights", "off", {
|
getEntity("light", "ceiling_lights", "off", {
|
||||||
friendly_name: "Ceiling Lights",
|
friendly_name: "Ceiling Lights",
|
||||||
}),
|
}),
|
||||||
getEntity("sensor", "battery_1", 20, {
|
|
||||||
device_class: "battery",
|
|
||||||
friendly_name: "Battery 1",
|
|
||||||
unit_of_measurement: "%",
|
|
||||||
}),
|
|
||||||
getEntity("sensor", "battery_2", 35, {
|
|
||||||
device_class: "battery",
|
|
||||||
friendly_name: "Battery 2",
|
|
||||||
unit_of_measurement: "%",
|
|
||||||
}),
|
|
||||||
getEntity("sensor", "battery_3", 40, {
|
|
||||||
device_class: "battery",
|
|
||||||
friendly_name: "Battery 3",
|
|
||||||
unit_of_measurement: "%",
|
|
||||||
}),
|
|
||||||
getEntity("sensor", "battery_4", 80, {
|
|
||||||
device_class: "battery",
|
|
||||||
friendly_name: "Battery 4",
|
|
||||||
unit_of_measurement: "%",
|
|
||||||
}),
|
|
||||||
getEntity("input_number", "min_battery_level", 30, {
|
|
||||||
mode: "slider",
|
|
||||||
step: 10,
|
|
||||||
min: 0,
|
|
||||||
max: 100,
|
|
||||||
icon: "mdi:battery-alert-variant",
|
|
||||||
friendly_name: "Minimum Battery Level",
|
|
||||||
unit_of_measurement: "%",
|
|
||||||
}),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const CONFIGS = [
|
const CONFIGS = [
|
||||||
{
|
{
|
||||||
heading: "Unfiltered entities",
|
heading: "Unfiltered controller",
|
||||||
config: `
|
config: `
|
||||||
- type: entities
|
- type: entities
|
||||||
entities:
|
entities:
|
||||||
- device_tracker.demo_anne_therese
|
- light.bed_light
|
||||||
- device_tracker.demo_home_boy
|
- light.ceiling_lights
|
||||||
- device_tracker.demo_paulus
|
- light.kitchen_lights
|
||||||
- light.bed_light
|
|
||||||
- light.ceiling_lights
|
|
||||||
- light.kitchen_lights
|
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
heading: "On and home entities",
|
heading: "Filtered entities card",
|
||||||
config: `
|
config: `
|
||||||
- type: entity-filter
|
- type: entity-filter
|
||||||
entities:
|
entities:
|
||||||
@@ -95,28 +62,9 @@ const CONFIGS = [
|
|||||||
- light.bed_light
|
- light.bed_light
|
||||||
- light.ceiling_lights
|
- light.ceiling_lights
|
||||||
- light.kitchen_lights
|
- light.kitchen_lights
|
||||||
conditions:
|
state_filter:
|
||||||
- condition: state
|
- "on"
|
||||||
state:
|
- home
|
||||||
- "on"
|
|
||||||
- home
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: "Same state as Bed Light",
|
|
||||||
config: `
|
|
||||||
- type: entity-filter
|
|
||||||
entities:
|
|
||||||
- device_tracker.demo_anne_therese
|
|
||||||
- device_tracker.demo_home_boy
|
|
||||||
- device_tracker.demo_paulus
|
|
||||||
- light.bed_light
|
|
||||||
- light.ceiling_lights
|
|
||||||
- light.kitchen_lights
|
|
||||||
conditions:
|
|
||||||
- condition: state
|
|
||||||
state:
|
|
||||||
- light.bed_light
|
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -130,11 +78,9 @@ const CONFIGS = [
|
|||||||
- light.bed_light
|
- light.bed_light
|
||||||
- light.ceiling_lights
|
- light.ceiling_lights
|
||||||
- light.kitchen_lights
|
- light.kitchen_lights
|
||||||
conditions:
|
state_filter:
|
||||||
- condition: state
|
- "on"
|
||||||
state:
|
- not_home
|
||||||
- "on"
|
|
||||||
- home
|
|
||||||
card:
|
card:
|
||||||
type: entities
|
type: entities
|
||||||
title: Custom Title
|
title: Custom Title
|
||||||
@@ -152,101 +98,15 @@ const CONFIGS = [
|
|||||||
- light.bed_light
|
- light.bed_light
|
||||||
- light.ceiling_lights
|
- light.ceiling_lights
|
||||||
- light.kitchen_lights
|
- light.kitchen_lights
|
||||||
conditions:
|
state_filter:
|
||||||
- condition: state
|
- "on"
|
||||||
state:
|
- not_home
|
||||||
- "on"
|
|
||||||
- home
|
|
||||||
card:
|
card:
|
||||||
type: glance
|
type: glance
|
||||||
show_state: true
|
show_state: true
|
||||||
title: Custom Title
|
title: Custom Title
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
heading:
|
|
||||||
"Filtered entities by battery attribute (< '30') using state filter",
|
|
||||||
config: `
|
|
||||||
- type: entity-filter
|
|
||||||
entities:
|
|
||||||
- device_tracker.demo_anne_therese
|
|
||||||
- device_tracker.demo_home_boy
|
|
||||||
- device_tracker.demo_paulus
|
|
||||||
state_filter:
|
|
||||||
- operator: <
|
|
||||||
attribute: battery
|
|
||||||
value: "30"
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: "Unfiltered number entities",
|
|
||||||
config: `
|
|
||||||
- type: entities
|
|
||||||
entities:
|
|
||||||
- input_number.min_battery_level
|
|
||||||
- sensor.battery_1
|
|
||||||
- sensor.battery_3
|
|
||||||
- sensor.battery_2
|
|
||||||
- sensor.battery_4
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: "Battery lower than 50%",
|
|
||||||
config: `
|
|
||||||
- type: entity-filter
|
|
||||||
entities:
|
|
||||||
- sensor.battery_1
|
|
||||||
- sensor.battery_3
|
|
||||||
- sensor.battery_2
|
|
||||||
- sensor.battery_4
|
|
||||||
conditions:
|
|
||||||
- condition: numeric_state
|
|
||||||
below: 50
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: "Battery lower than min battery level",
|
|
||||||
config: `
|
|
||||||
- type: entity-filter
|
|
||||||
entities:
|
|
||||||
- sensor.battery_1
|
|
||||||
- sensor.battery_3
|
|
||||||
- sensor.battery_2
|
|
||||||
- sensor.battery_4
|
|
||||||
conditions:
|
|
||||||
- condition: numeric_state
|
|
||||||
below: input_number.min_battery_level
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: "Battery between min battery level and 70%",
|
|
||||||
config: `
|
|
||||||
- type: entity-filter
|
|
||||||
entities:
|
|
||||||
- sensor.battery_1
|
|
||||||
- sensor.battery_3
|
|
||||||
- sensor.battery_2
|
|
||||||
- sensor.battery_4
|
|
||||||
conditions:
|
|
||||||
- condition: numeric_state
|
|
||||||
above: input_number.min_battery_level
|
|
||||||
below: 70
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: "Error: Entities must be specified",
|
|
||||||
config: `
|
|
||||||
- type: entity-filter
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: "Error: Incorrect filter config",
|
|
||||||
config: `
|
|
||||||
- type: entity-filter
|
|
||||||
entities:
|
|
||||||
- sensor.gas_station_lowest_price
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
@customElement("demo-lovelace-entity-filter-card")
|
@customElement("demo-lovelace-entity-filter-card")
|
||||||
@@ -263,7 +123,6 @@ class DemoEntityFilter extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("sensor", "brightness", "12", {}),
|
getEntity("sensor", "brightness", "12", {}),
|
||||||
@@ -129,7 +128,6 @@ class DemoGaugeEntity extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("device_tracker", "demo_paulus", "home", {
|
getEntity("device_tracker", "demo_paulus", "home", {
|
||||||
@@ -239,7 +238,6 @@ class DemoGlanceEntity extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4,7 +4,6 @@ import { mockHistory } from "../../../../demo/src/stubs/history";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("light", "kitchen_lights", "on", {
|
getEntity("light", "kitchen_lights", "on", {
|
||||||
@@ -215,7 +214,6 @@ class DemoStack extends LitElement {
|
|||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockHistory(hass);
|
mockHistory(hass);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("light", "bed_light", "on", {
|
getEntity("light", "bed_light", "on", {
|
||||||
@@ -77,7 +76,6 @@ class DemoLightEntity extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -65,23 +65,15 @@ const CONFIGS = [
|
|||||||
>> ...by using additional greater-than signs right next to each other...
|
>> ...by using additional greater-than signs right next to each other...
|
||||||
> > > ...or with spaces between arrows.
|
> > > ...or with spaces between arrows.
|
||||||
|
|
||||||
> [!NOTE]
|
> **Warning** Hey there
|
||||||
> This is a GitHub note alert
|
> This is a warning with a title
|
||||||
|
|
||||||
> [!TIP]
|
> **Note**
|
||||||
> This is a GitHub tip alert
|
> This is a note
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> **Note**
|
||||||
> This is a GitHub important alert
|
> This is a multiline note
|
||||||
|
> Lorem ipsum...
|
||||||
> [!WARNING]
|
|
||||||
> This is a GitHub warning alert
|
|
||||||
|
|
||||||
> [!CAUTION]
|
|
||||||
> This is a GitHub caution alert
|
|
||||||
|
|
||||||
> [!TIP]
|
|
||||||
> - This is a list entry in GitHub tip alert
|
|
||||||
|
|
||||||
## Lists
|
## Lists
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("light", "bed_light", "on", {
|
getEntity("light", "bed_light", "on", {
|
||||||
@@ -139,7 +138,6 @@ class DemoPictureElements extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("light", "kitchen_lights", "on", {
|
getEntity("light", "kitchen_lights", "on", {
|
||||||
@@ -94,7 +93,6 @@ class DemoPictureEntity extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("switch", "decorative_lights", "on", {
|
getEntity("switch", "decorative_lights", "on", {
|
||||||
@@ -135,7 +134,6 @@ class DemoPictureGlance extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { createPlantEntities } from "../../data/plants";
|
import { createPlantEntities } from "../../data/plants";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const CONFIGS = [
|
const CONFIGS = [
|
||||||
{
|
{
|
||||||
@@ -44,7 +43,6 @@ export class DemoPlantEntity extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(createPlantEntities());
|
hass.addEntities(createPlantEntities());
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ import { customElement, query } from "lit/decorators";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("climate", "ecobee", "auto", {
|
getEntity("climate", "ecobee", "auto", {
|
||||||
@@ -36,45 +35,6 @@ const ENTITIES = [
|
|||||||
friendly_name: "Nest",
|
friendly_name: "Nest",
|
||||||
supported_features: 43,
|
supported_features: 43,
|
||||||
}),
|
}),
|
||||||
getEntity("climate", "overkiz_radiator", "heat", {
|
|
||||||
current_temperature: 18,
|
|
||||||
min_temp: 7,
|
|
||||||
max_temp: 35,
|
|
||||||
temperature: 20,
|
|
||||||
hvac_modes: ["heat", "auto", "off"],
|
|
||||||
friendly_name: "Overkiz radiator",
|
|
||||||
supported_features: 17,
|
|
||||||
preset_mode: "comfort",
|
|
||||||
preset_modes: [
|
|
||||||
"none",
|
|
||||||
"frost_protection",
|
|
||||||
"eco",
|
|
||||||
"comfort",
|
|
||||||
"comfort-1",
|
|
||||||
"comfort-2",
|
|
||||||
"auto",
|
|
||||||
"boost",
|
|
||||||
"external",
|
|
||||||
"prog",
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
getEntity("climate", "overkiz_towel_dryer", "heat", {
|
|
||||||
current_temperature: null,
|
|
||||||
min_temp: 7,
|
|
||||||
max_temp: 35,
|
|
||||||
hvac_modes: ["heat", "off"],
|
|
||||||
friendly_name: "Overkiz towel dryer",
|
|
||||||
supported_features: 16,
|
|
||||||
preset_mode: "eco",
|
|
||||||
preset_modes: [
|
|
||||||
"none",
|
|
||||||
"frost_protection",
|
|
||||||
"eco",
|
|
||||||
"comfort",
|
|
||||||
"comfort-1",
|
|
||||||
"comfort-2",
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
getEntity("climate", "sensibo", "fan_only", {
|
getEntity("climate", "sensibo", "fan_only", {
|
||||||
current_temperature: null,
|
current_temperature: null,
|
||||||
temperature: null,
|
temperature: null,
|
||||||
@@ -85,9 +45,7 @@ const ENTITIES = [
|
|||||||
friendly_name: "Sensibo purifier",
|
friendly_name: "Sensibo purifier",
|
||||||
fan_modes: ["low", "high"],
|
fan_modes: ["low", "high"],
|
||||||
fan_mode: "low",
|
fan_mode: "low",
|
||||||
swing_modes: ["on", "off", "both", "vertical", "horizontal"],
|
supported_features: 9,
|
||||||
swing_mode: "vertical",
|
|
||||||
supported_features: 41,
|
|
||||||
}),
|
}),
|
||||||
getEntity("climate", "unavailable", "unavailable", {
|
getEntity("climate", "unavailable", "unavailable", {
|
||||||
supported_features: 43,
|
supported_features: 43,
|
||||||
@@ -100,6 +58,8 @@ const CONFIGS = [
|
|||||||
config: `
|
config: `
|
||||||
- type: thermostat
|
- type: thermostat
|
||||||
entity: climate.ecobee
|
entity: climate.ecobee
|
||||||
|
- type: thermostat
|
||||||
|
entity: climate.nest
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -109,66 +69,6 @@ const CONFIGS = [
|
|||||||
entity: climate.nest
|
entity: climate.nest
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
heading: "Feature example",
|
|
||||||
config: `
|
|
||||||
- type: thermostat
|
|
||||||
entity: climate.overkiz_radiator
|
|
||||||
features:
|
|
||||||
- type: climate-hvac-modes
|
|
||||||
hvac_modes:
|
|
||||||
- heat
|
|
||||||
- 'off'
|
|
||||||
- auto
|
|
||||||
- type: climate-preset-modes
|
|
||||||
style: icons
|
|
||||||
preset_modes:
|
|
||||||
- none
|
|
||||||
- frost_protection
|
|
||||||
- eco
|
|
||||||
- comfort
|
|
||||||
- comfort-1
|
|
||||||
- comfort-2
|
|
||||||
- auto
|
|
||||||
- boost
|
|
||||||
- external
|
|
||||||
- prog
|
|
||||||
- type: climate-preset-modes
|
|
||||||
style: dropdown
|
|
||||||
preset_modes:
|
|
||||||
- none
|
|
||||||
- frost_protection
|
|
||||||
- eco
|
|
||||||
- comfort
|
|
||||||
- comfort-1
|
|
||||||
- comfort-2
|
|
||||||
- auto
|
|
||||||
- boost
|
|
||||||
- external
|
|
||||||
- prog
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: "Preset only example",
|
|
||||||
config: `
|
|
||||||
- type: thermostat
|
|
||||||
entity: climate.overkiz_towel_dryer
|
|
||||||
features:
|
|
||||||
- type: climate-hvac-modes
|
|
||||||
hvac_modes:
|
|
||||||
- heat
|
|
||||||
- 'off'
|
|
||||||
- type: climate-preset-modes
|
|
||||||
style: icons
|
|
||||||
preset_modes:
|
|
||||||
- none
|
|
||||||
- frost_protection
|
|
||||||
- eco
|
|
||||||
- comfort
|
|
||||||
- comfort-1
|
|
||||||
- comfort-2
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
heading: "Fan only example",
|
heading: "Fan only example",
|
||||||
config: `
|
config: `
|
||||||
@@ -184,14 +84,6 @@ const CONFIGS = [
|
|||||||
fan_modes:
|
fan_modes:
|
||||||
- low
|
- low
|
||||||
- high
|
- high
|
||||||
- type: climate-swing-modes
|
|
||||||
style: icons
|
|
||||||
swing_modes:
|
|
||||||
- 'on'
|
|
||||||
- 'off'
|
|
||||||
- 'both'
|
|
||||||
- 'vertical'
|
|
||||||
- 'horizontal'
|
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -224,7 +116,6 @@ class DemoThermostatEntity extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -6,7 +6,6 @@ import { VacuumEntityFeature } from "../../../../src/data/vacuum";
|
|||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("switch", "tv_outlet", "on", {
|
getEntity("switch", "tv_outlet", "on", {
|
||||||
@@ -80,18 +79,6 @@ const CONFIGS = [
|
|||||||
color: pink
|
color: pink
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
heading: "Whole tile tap action",
|
|
||||||
config: `
|
|
||||||
- type: tile
|
|
||||||
entity: switch.tv_outlet
|
|
||||||
color: pink
|
|
||||||
tap_action:
|
|
||||||
action: toggle
|
|
||||||
icon_tap_action:
|
|
||||||
action: none
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
heading: "Unknown entity",
|
heading: "Unknown entity",
|
||||||
config: `
|
config: `
|
||||||
@@ -185,7 +172,6 @@ class DemoTile extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4,7 +4,6 @@ import { provideHass } from "../../../../src/fake_data/provide_hass";
|
|||||||
import "../../components/demo-cards";
|
import "../../components/demo-cards";
|
||||||
import { getEntity } from "../../../../src/fake_data/entity";
|
import { getEntity } from "../../../../src/fake_data/entity";
|
||||||
import { mockTodo } from "../../../../demo/src/stubs/todo";
|
import { mockTodo } from "../../../../demo/src/stubs/todo";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("todo", "shopping_list", "2", {
|
getEntity("todo", "shopping_list", "2", {
|
||||||
@@ -48,7 +47,6 @@ class DemoTodoListEntity extends LitElement {
|
|||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("lovelace", "en");
|
hass.updateTranslations("lovelace", "en");
|
||||||
hass.addEntities(ENTITIES);
|
hass.addEntities(ENTITIES);
|
||||||
mockIcons(hass);
|
|
||||||
|
|
||||||
mockTodo(hass);
|
mockTodo(hass);
|
||||||
}
|
}
|
||||||
|
@@ -11,7 +11,6 @@ import "../../../../src/components/data-table/ha-data-table";
|
|||||||
import type { DataTableColumnContainer } from "../../../../src/components/data-table/ha-data-table";
|
import type { DataTableColumnContainer } from "../../../../src/components/data-table/ha-data-table";
|
||||||
import "../../../../src/components/entity/state-badge";
|
import "../../../../src/components/entity/state-badge";
|
||||||
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
import { provideHass } from "../../../../src/fake_data/provide_hass";
|
||||||
import { mockIcons } from "../../../../demo/src/stubs/icons";
|
|
||||||
import { HomeAssistant } from "../../../../src/types";
|
import { HomeAssistant } from "../../../../src/types";
|
||||||
|
|
||||||
const SENSOR_DEVICE_CLASSES = [
|
const SENSOR_DEVICE_CLASSES = [
|
||||||
@@ -54,7 +53,6 @@ const SENSOR_DEVICE_CLASSES = [
|
|||||||
"volatile_organic_compounds_parts",
|
"volatile_organic_compounds_parts",
|
||||||
"voltage",
|
"voltage",
|
||||||
"volume",
|
"volume",
|
||||||
"volume_flow_rate",
|
|
||||||
"water",
|
"water",
|
||||||
"weight",
|
"weight",
|
||||||
"wind_speed",
|
"wind_speed",
|
||||||
@@ -292,7 +290,6 @@ const ENTITIES: HassEntity[] = [
|
|||||||
createEntity("water_heater.high_demand", "high_demand"),
|
createEntity("water_heater.high_demand", "high_demand"),
|
||||||
createEntity("water_heater.heat_pump", "heat_pump"),
|
createEntity("water_heater.heat_pump", "heat_pump"),
|
||||||
createEntity("water_heater.gas", "gas"),
|
createEntity("water_heater.gas", "gas"),
|
||||||
createEntity("select.speed", "ridiculous_speed"),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
function createEntity(
|
function createEntity(
|
||||||
@@ -347,7 +344,6 @@ export class DemoEntityState extends LitElement {
|
|||||||
title: "Icon",
|
title: "Icon",
|
||||||
template: (entry) => html`
|
template: (entry) => html`
|
||||||
<state-badge
|
<state-badge
|
||||||
.hass=${hass}
|
|
||||||
.stateObj=${entry.stateObj}
|
.stateObj=${entry.stateObj}
|
||||||
.stateColor=${true}
|
.stateColor=${true}
|
||||||
></state-badge>
|
></state-badge>
|
||||||
@@ -399,17 +395,6 @@ export class DemoEntityState extends LitElement {
|
|||||||
protected firstUpdated(changedProps) {
|
protected firstUpdated(changedProps) {
|
||||||
super.firstUpdated(changedProps);
|
super.firstUpdated(changedProps);
|
||||||
const hass = provideHass(this);
|
const hass = provideHass(this);
|
||||||
mockIcons(hass);
|
|
||||||
hass.updateHass({
|
|
||||||
entities: {
|
|
||||||
"select.speed": {
|
|
||||||
entity_id: "select.speed",
|
|
||||||
translation_key: "speed",
|
|
||||||
platform: "demo",
|
|
||||||
labels: [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
hass.updateTranslations(null, "en");
|
hass.updateTranslations(null, "en");
|
||||||
hass.updateTranslations("config", "en");
|
hass.updateTranslations("config", "en");
|
||||||
}
|
}
|
||||||
|
@@ -31,7 +31,6 @@ const createConfigEntry = (
|
|||||||
supports_options: false,
|
supports_options: false,
|
||||||
supports_remove_device: false,
|
supports_remove_device: false,
|
||||||
supports_unload: true,
|
supports_unload: true,
|
||||||
supports_reconfigure: true,
|
|
||||||
disabled_by: null,
|
disabled_by: null,
|
||||||
pref_disable_new_entities: false,
|
pref_disable_new_entities: false,
|
||||||
pref_disable_polling: false,
|
pref_disable_polling: false,
|
||||||
@@ -199,8 +198,6 @@ const createEntityRegistryEntries = (
|
|||||||
has_entity_name: false,
|
has_entity_name: false,
|
||||||
unique_id: "updater",
|
unique_id: "updater",
|
||||||
options: null,
|
options: null,
|
||||||
labels: [],
|
|
||||||
categories: {},
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -224,7 +221,6 @@ const createDeviceRegistryEntries = (
|
|||||||
name_by_user: null,
|
name_by_user: null,
|
||||||
disabled_by: null,
|
disabled_by: null,
|
||||||
configuration_url: null,
|
configuration_url: null,
|
||||||
labels: [],
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@@ -11,7 +11,7 @@ import "../../components/demo-more-infos";
|
|||||||
import { ClimateEntityFeature } from "../../../../src/data/climate";
|
import { ClimateEntityFeature } from "../../../../src/data/climate";
|
||||||
|
|
||||||
const ENTITIES = [
|
const ENTITIES = [
|
||||||
getEntity("climate", "radiator", "heat", {
|
getEntity("climate", "thermostat", "heat", {
|
||||||
friendly_name: "Basic heater",
|
friendly_name: "Basic heater",
|
||||||
hvac_modes: ["heat", "off"],
|
hvac_modes: ["heat", "off"],
|
||||||
hvac_mode: "heat",
|
hvac_mode: "heat",
|
||||||
@@ -80,24 +80,6 @@ const ENTITIES = [
|
|||||||
max_humidity: 100,
|
max_humidity: 100,
|
||||||
humidity: 50,
|
humidity: 50,
|
||||||
}),
|
}),
|
||||||
getEntity("climate", "towel_dryer", "heat", {
|
|
||||||
friendly_name: "Preset only heater",
|
|
||||||
hvac_modes: ["heat", "off"],
|
|
||||||
hvac_mode: "heat",
|
|
||||||
preset_modes: [
|
|
||||||
"none",
|
|
||||||
"frost_protection",
|
|
||||||
"eco",
|
|
||||||
"comfort",
|
|
||||||
"comfort-1",
|
|
||||||
"comfort-2",
|
|
||||||
],
|
|
||||||
preset_mode: "eco",
|
|
||||||
current_temperature: null,
|
|
||||||
min_temp: 7,
|
|
||||||
max_temp: 35,
|
|
||||||
supported_features: ClimateEntityFeature.PRESET_MODE,
|
|
||||||
}),
|
|
||||||
getEntity("climate", "unavailable", "unavailable", {
|
getEntity("climate", "unavailable", "unavailable", {
|
||||||
friendly_name: "Unavailable heater",
|
friendly_name: "Unavailable heater",
|
||||||
hvac_modes: ["heat", "off"],
|
hvac_modes: ["heat", "off"],
|
||||||
|
@@ -243,8 +243,6 @@ export class HassioAddonStore extends LitElement {
|
|||||||
}
|
}
|
||||||
.advanced a {
|
.advanced a {
|
||||||
margin-left: 0.5em;
|
margin-left: 0.5em;
|
||||||
margin-inline-start: 0.5em;
|
|
||||||
margin-inline-end: initial;
|
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
@@ -250,9 +250,7 @@ class HassioAddonDashboard extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (path === "uninstall") {
|
if (path === "uninstall") {
|
||||||
if (this.isConnected) {
|
window.history.back();
|
||||||
navigate(this._backPath);
|
|
||||||
}
|
|
||||||
} else if (path === "install") {
|
} else if (path === "install") {
|
||||||
this.addon = await fetchHassioAddonInfo(this.hass, this.addon!.slug);
|
this.addon = await fetchHassioAddonInfo(this.hass, this.addon!.slug);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -1188,13 +1188,11 @@ class HassioAddonInfo extends LitElement {
|
|||||||
}
|
}
|
||||||
.addon-header {
|
.addon-header {
|
||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
padding-inline-start: 8px;
|
|
||||||
padding-inline-end: initial;
|
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
color: var(--ha-card-header-color, --primary-text-color);
|
color: var(--ha-card-header-color, --primary-text-color);
|
||||||
}
|
}
|
||||||
.addon-version {
|
.addon-version {
|
||||||
float: var(--float-end);
|
float: right;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
@@ -1263,7 +1261,6 @@ class HassioAddonInfo extends LitElement {
|
|||||||
.card-actions {
|
.card-actions {
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
display: flex;
|
display: flex;
|
||||||
direction: var(--direction);
|
|
||||||
}
|
}
|
||||||
.changelog {
|
.changelog {
|
||||||
display: contents;
|
display: contents;
|
||||||
|
@@ -395,8 +395,6 @@ export class HassioBackups extends LitElement {
|
|||||||
.selected-txt {
|
.selected-txt {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding-left: 16px;
|
padding-left: 16px;
|
||||||
padding-inline-start: 16px;
|
|
||||||
padding-inline-end: initial;
|
|
||||||
color: var(--primary-text-color);
|
color: var(--primary-text-color);
|
||||||
}
|
}
|
||||||
.table-header .selected-txt {
|
.table-header .selected-txt {
|
||||||
@@ -407,8 +405,6 @@ export class HassioBackups extends LitElement {
|
|||||||
}
|
}
|
||||||
.header-toolbar .header-btns {
|
.header-toolbar .header-btns {
|
||||||
margin-right: -12px;
|
margin-right: -12px;
|
||||||
margin-inline-end: -12px;
|
|
||||||
margin-inline-start: initial;
|
|
||||||
}
|
}
|
||||||
.header-btns > mwc-button,
|
.header-btns > mwc-button,
|
||||||
.header-btns > ha-icon-button {
|
.header-btns > ha-icon-button {
|
||||||
|
@@ -60,10 +60,6 @@ class HassioCardContent extends LitElement {
|
|||||||
|
|
||||||
static get styles(): CSSResultGroup {
|
static get styles(): CSSResultGroup {
|
||||||
return css`
|
return css`
|
||||||
:host {
|
|
||||||
direction: ltr;
|
|
||||||
}
|
|
||||||
|
|
||||||
ha-svg-icon {
|
ha-svg-icon {
|
||||||
margin-right: 24px;
|
margin-right: 24px;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
|
@@ -72,7 +72,7 @@ const _computeAddons = (addons): AddonCheckboxItem[] =>
|
|||||||
export class SupervisorBackupContent extends LitElement {
|
export class SupervisorBackupContent extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
|
|
||||||
@property({ attribute: false }) public localize?: LocalizeFunc;
|
@property() public localize?: LocalizeFunc;
|
||||||
|
|
||||||
@property({ attribute: false }) public supervisor?: Supervisor;
|
@property({ attribute: false }) public supervisor?: Supervisor;
|
||||||
|
|
||||||
@@ -316,8 +316,6 @@ export class SupervisorBackupContent extends LitElement {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-left: 30px;
|
margin-left: 30px;
|
||||||
margin-inline-start: 30px;
|
|
||||||
margin-inline-end: initial;
|
|
||||||
}
|
}
|
||||||
ha-formfield.password {
|
ha-formfield.password {
|
||||||
display: block;
|
display: block;
|
||||||
@@ -326,8 +324,6 @@ export class SupervisorBackupContent extends LitElement {
|
|||||||
.backup-types {
|
.backup-types {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-left: -13px;
|
margin-left: -13px;
|
||||||
margin-inline-start: -13px;
|
|
||||||
margin-inline-end: initial;
|
|
||||||
}
|
}
|
||||||
.sub-header {
|
.sub-header {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
|
@@ -37,8 +37,6 @@ class SupervisorFormfieldLabel extends LitElement {
|
|||||||
}
|
}
|
||||||
.label {
|
.label {
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
margin-inline-end: 4px;
|
|
||||||
margin-inline-start: initial;
|
|
||||||
}
|
}
|
||||||
.version {
|
.version {
|
||||||
color: var(--secondary-text-color);
|
color: var(--secondary-text-color);
|
||||||
@@ -47,8 +45,6 @@ class SupervisorFormfieldLabel extends LitElement {
|
|||||||
max-height: 22px;
|
max-height: 22px;
|
||||||
max-width: 22px;
|
max-width: 22px;
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
margin-inline-end: 8px;
|
|
||||||
margin-inline-start: initial;
|
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
@@ -64,8 +64,6 @@ class SupervisorMetric extends LitElement {
|
|||||||
.value {
|
.value {
|
||||||
width: 48px;
|
width: 48px;
|
||||||
padding-right: 4px;
|
padding-right: 4px;
|
||||||
padding-inline-start: initial;
|
|
||||||
padding-inline-end: 4px;
|
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
@@ -27,7 +27,8 @@ const SCHEMA = memoizeOne(
|
|||||||
class HassioBackupLocationDialog extends LitElement {
|
class HassioBackupLocationDialog extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
|
|
||||||
@state() private _dialogParams?: HassioBackupLocationDialogParams;
|
@property({ attribute: false })
|
||||||
|
public _dialogParams?: HassioBackupLocationDialogParams;
|
||||||
|
|
||||||
@state() private _data?: { default_backup_mount: string | null };
|
@state() private _data?: { default_backup_mount: string | null };
|
||||||
|
|
||||||
|
@@ -138,9 +138,6 @@ class HassioCreateBackupDialog extends LitElement {
|
|||||||
haStyle,
|
haStyle,
|
||||||
haStyleDialog,
|
haStyleDialog,
|
||||||
css`
|
css`
|
||||||
:host {
|
|
||||||
direction: var(--direction);
|
|
||||||
}
|
|
||||||
ha-circular-progress {
|
ha-circular-progress {
|
||||||
display: block;
|
display: block;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@@ -154,16 +154,12 @@ class HassioHardwareDialog extends LitElement {
|
|||||||
ha-icon-button {
|
ha-icon-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 16px;
|
right: 16px;
|
||||||
inset-inline-end: 16px;
|
|
||||||
inset-inline-start: initial;
|
|
||||||
top: 10px;
|
top: 10px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: var(--primary-text-color);
|
color: var(--primary-text-color);
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
margin: 18px 42px 0 18px;
|
margin: 18px 42px 0 18px;
|
||||||
margin-inline-start: 18px;
|
|
||||||
margin-inline-end: 42px;
|
|
||||||
color: var(--primary-text-color);
|
color: var(--primary-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -597,8 +597,6 @@ export class DialogHassioNetwork
|
|||||||
|
|
||||||
mwc-button.scan {
|
mwc-button.scan {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
margin-inline-start: 8px;
|
|
||||||
margin-inline-end: initial;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
|
@@ -229,8 +229,6 @@ class HassioRegistriesDialog extends LitElement {
|
|||||||
ha-icon-button {
|
ha-icon-button {
|
||||||
color: var(--error-color);
|
color: var(--error-color);
|
||||||
margin-right: -10px;
|
margin-right: -10px;
|
||||||
margin-inline-end: -10px;
|
|
||||||
margin-inline-start: initial;
|
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
import "@material/mwc-button/mwc-button";
|
import "@material/mwc-button/mwc-button";
|
||||||
import { mdiDelete, mdiDeleteOff } from "@mdi/js";
|
import { mdiDelete, mdiDeleteOff } from "@mdi/js";
|
||||||
|
import "@polymer/paper-item/paper-item";
|
||||||
|
import "@polymer/paper-item/paper-item-body";
|
||||||
import "@lrnwebcomponents/simple-tooltip/simple-tooltip";
|
import "@lrnwebcomponents/simple-tooltip/simple-tooltip";
|
||||||
import { css, CSSResultGroup, html, LitElement, nothing } from "lit";
|
import { css, CSSResultGroup, html, LitElement, nothing } from "lit";
|
||||||
import { customElement, property, query, state } from "lit/decorators";
|
import { customElement, property, query, state } from "lit/decorators";
|
||||||
@@ -25,8 +27,6 @@ import type { HomeAssistant } from "../../../../src/types";
|
|||||||
import { HassioRepositoryDialogParams } from "./show-dialog-repositories";
|
import { HassioRepositoryDialogParams } from "./show-dialog-repositories";
|
||||||
import type { HaTextField } from "../../../../src/components/ha-textfield";
|
import type { HaTextField } from "../../../../src/components/ha-textfield";
|
||||||
import "../../../../src/components/ha-textfield";
|
import "../../../../src/components/ha-textfield";
|
||||||
import "../../../../src/components/ha-list-new";
|
|
||||||
import "../../../../src/components/ha-list-item-new";
|
|
||||||
|
|
||||||
@customElement("dialog-hassio-repositories")
|
@customElement("dialog-hassio-repositories")
|
||||||
class HassioRepositoriesDialog extends LitElement {
|
class HassioRepositoriesDialog extends LitElement {
|
||||||
@@ -106,46 +106,44 @@ class HassioRepositoriesDialog extends LitElement {
|
|||||||
? html`<ha-alert alert-type="error">${this._error}</ha-alert>`
|
? html`<ha-alert alert-type="error">${this._error}</ha-alert>`
|
||||||
: ""}
|
: ""}
|
||||||
<div class="form">
|
<div class="form">
|
||||||
<ha-list-new>
|
${repositories.length
|
||||||
${repositories.length
|
? repositories.map(
|
||||||
? repositories.map(
|
(repo) => html`
|
||||||
(repo) => html`
|
<paper-item class="option">
|
||||||
<ha-list-item-new class="option">
|
<paper-item-body three-line>
|
||||||
${repo.name}
|
<div>${repo.name}</div>
|
||||||
<div slot="supporting-text">
|
<div secondary>${repo.maintainer}</div>
|
||||||
<div>${repo.maintainer}</div>
|
<div secondary>${repo.url}</div>
|
||||||
<div>${repo.url}</div>
|
</paper-item-body>
|
||||||
</div>
|
<div class="delete">
|
||||||
<div class="delete" slot="end">
|
<ha-icon-button
|
||||||
<ha-icon-button
|
.label=${this._dialogParams!.supervisor.localize(
|
||||||
.label=${this._dialogParams!.supervisor.localize(
|
"dialog.repositories.remove"
|
||||||
"dialog.repositories.remove"
|
)}
|
||||||
)}
|
.disabled=${usedRepositories.includes(repo.slug)}
|
||||||
.disabled=${usedRepositories.includes(repo.slug)}
|
.slug=${repo.slug}
|
||||||
.slug=${repo.slug}
|
.path=${usedRepositories.includes(repo.slug)
|
||||||
.path=${usedRepositories.includes(repo.slug)
|
? mdiDeleteOff
|
||||||
? mdiDeleteOff
|
: mdiDelete}
|
||||||
: mdiDelete}
|
@click=${this._removeRepository}
|
||||||
@click=${this._removeRepository}
|
>
|
||||||
>
|
</ha-icon-button>
|
||||||
</ha-icon-button>
|
<simple-tooltip
|
||||||
<simple-tooltip
|
animation-delay="0"
|
||||||
animation-delay="0"
|
position="bottom"
|
||||||
position="bottom"
|
offset="1"
|
||||||
offset="1"
|
>
|
||||||
>
|
${this._dialogParams!.supervisor.localize(
|
||||||
${this._dialogParams!.supervisor.localize(
|
usedRepositories.includes(repo.slug)
|
||||||
usedRepositories.includes(repo.slug)
|
? "dialog.repositories.used"
|
||||||
? "dialog.repositories.used"
|
: "dialog.repositories.remove"
|
||||||
: "dialog.repositories.remove"
|
)}
|
||||||
)}
|
</simple-tooltip>
|
||||||
</simple-tooltip>
|
</div>
|
||||||
</div>
|
</paper-item>
|
||||||
</ha-list-item-new>
|
`
|
||||||
`
|
)
|
||||||
)
|
: html`<paper-item> No repositories </paper-item>`}
|
||||||
: html`<ha-list-item-new> No repositories </ha-list-item-new>`}
|
|
||||||
</ha-list-new>
|
|
||||||
<div class="layout horizontal bottom">
|
<div class="layout horizontal bottom">
|
||||||
<ha-textfield
|
<ha-textfield
|
||||||
class="flex-auto"
|
class="flex-auto"
|
||||||
@@ -197,8 +195,6 @@ class HassioRepositoriesDialog extends LitElement {
|
|||||||
}
|
}
|
||||||
mwc-button {
|
mwc-button {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
margin-inline-start: 8px;
|
|
||||||
margin-inline-end: initial;
|
|
||||||
}
|
}
|
||||||
ha-circular-progress {
|
ha-circular-progress {
|
||||||
display: block;
|
display: block;
|
||||||
@@ -208,9 +204,6 @@ class HassioRepositoriesDialog extends LitElement {
|
|||||||
div.delete ha-icon-button {
|
div.delete ha-icon-button {
|
||||||
color: var(--error-color);
|
color: var(--error-color);
|
||||||
}
|
}
|
||||||
ha-list-item-new {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@@ -360,7 +360,7 @@ class HassioIngressView extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.main-title {
|
.main-title {
|
||||||
margin: var(--margin-title);
|
margin: 0 0 0 24px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
@@ -19,14 +19,10 @@ export const hassioStyle = css`
|
|||||||
letter-spacing: var(--paper-font-headline_-_letter-spacing);
|
letter-spacing: var(--paper-font-headline_-_letter-spacing);
|
||||||
line-height: var(--paper-font-headline_-_line-height);
|
line-height: var(--paper-font-headline_-_line-height);
|
||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
padding-inline-start: 8px;
|
|
||||||
padding-inline-end: initial;
|
|
||||||
}
|
}
|
||||||
.description {
|
.description {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
padding-inline-start: 8px;
|
|
||||||
padding-inline-end: initial;
|
|
||||||
}
|
}
|
||||||
.card-group {
|
.card-group {
|
||||||
display: grid;
|
display: grid;
|
||||||
|
@@ -73,8 +73,6 @@ class HassioSystem extends LitElement {
|
|||||||
color: var(--primary-text-color);
|
color: var(--primary-text-color);
|
||||||
font-size: 2em;
|
font-size: 2em;
|
||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
padding-inline-start: 8px;
|
|
||||||
padding-inline-end: initial;
|
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
}
|
}
|
||||||
hassio-supervisor-log {
|
hassio-supervisor-log {
|
||||||
|
@@ -2,7 +2,7 @@ export default {
|
|||||||
"*.?(c|m){js,ts}": [
|
"*.?(c|m){js,ts}": [
|
||||||
"eslint --cache --cache-strategy=content --cache-location=node_modules/.cache/eslint/.eslintcache --fix",
|
"eslint --cache --cache-strategy=content --cache-location=node_modules/.cache/eslint/.eslintcache --fix",
|
||||||
"prettier --cache --write",
|
"prettier --cache --write",
|
||||||
"lit-analyzer --quiet",
|
"lit-analyzer",
|
||||||
],
|
],
|
||||||
"*.{json,css,md,markdown,html,y?aml}": "prettier --cache --write",
|
"*.{json,css,md,markdown,html,y?aml}": "prettier --cache --write",
|
||||||
"translations/*/*.json": (files) =>
|
"translations/*/*.json": (files) =>
|
||||||
|
147
package.json
147
package.json
@@ -25,36 +25,36 @@
|
|||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.24.1",
|
"@babel/runtime": "7.23.8",
|
||||||
"@braintree/sanitize-url": "7.0.1",
|
"@braintree/sanitize-url": "7.0.0",
|
||||||
"@codemirror/autocomplete": "6.15.0",
|
"@codemirror/autocomplete": "6.12.0",
|
||||||
"@codemirror/commands": "6.3.3",
|
"@codemirror/commands": "6.3.3",
|
||||||
"@codemirror/language": "6.10.1",
|
"@codemirror/language": "6.10.0",
|
||||||
"@codemirror/legacy-modes": "6.3.3",
|
"@codemirror/legacy-modes": "6.3.3",
|
||||||
"@codemirror/search": "6.5.6",
|
"@codemirror/search": "6.5.5",
|
||||||
"@codemirror/state": "6.4.1",
|
"@codemirror/state": "6.4.0",
|
||||||
"@codemirror/view": "6.26.1",
|
"@codemirror/view": "6.23.0",
|
||||||
"@egjs/hammerjs": "2.0.17",
|
"@egjs/hammerjs": "2.0.17",
|
||||||
"@formatjs/intl-datetimeformat": "6.12.3",
|
"@formatjs/intl-datetimeformat": "6.12.0",
|
||||||
"@formatjs/intl-displaynames": "6.6.6",
|
"@formatjs/intl-displaynames": "6.6.4",
|
||||||
"@formatjs/intl-getcanonicallocales": "2.3.0",
|
"@formatjs/intl-getcanonicallocales": "2.3.0",
|
||||||
"@formatjs/intl-listformat": "7.5.5",
|
"@formatjs/intl-listformat": "7.5.3",
|
||||||
"@formatjs/intl-locale": "3.4.5",
|
"@formatjs/intl-locale": "3.4.3",
|
||||||
"@formatjs/intl-numberformat": "8.10.1",
|
"@formatjs/intl-numberformat": "8.9.0",
|
||||||
"@formatjs/intl-pluralrules": "5.2.12",
|
"@formatjs/intl-pluralrules": "5.2.10",
|
||||||
"@formatjs/intl-relativetimeformat": "11.2.12",
|
"@formatjs/intl-relativetimeformat": "11.2.10",
|
||||||
"@fullcalendar/core": "6.1.11",
|
"@fullcalendar/core": "6.1.10",
|
||||||
"@fullcalendar/daygrid": "6.1.11",
|
"@fullcalendar/daygrid": "6.1.10",
|
||||||
"@fullcalendar/interaction": "6.1.11",
|
"@fullcalendar/interaction": "6.1.10",
|
||||||
"@fullcalendar/list": "6.1.11",
|
"@fullcalendar/list": "6.1.10",
|
||||||
"@fullcalendar/luxon3": "6.1.11",
|
"@fullcalendar/luxon3": "6.1.10",
|
||||||
"@fullcalendar/timegrid": "6.1.11",
|
"@fullcalendar/timegrid": "6.1.10",
|
||||||
"@lezer/highlight": "1.2.0",
|
"@lezer/highlight": "1.2.0",
|
||||||
"@lit-labs/context": "0.4.1",
|
"@lit-labs/context": "0.4.1",
|
||||||
"@lit-labs/motion": "1.0.7",
|
"@lit-labs/motion": "1.0.6",
|
||||||
"@lit-labs/observers": "2.0.2",
|
"@lit-labs/observers": "2.0.2",
|
||||||
"@lit-labs/virtualizer": "2.0.12",
|
"@lit-labs/virtualizer": "2.0.12",
|
||||||
"@lrnwebcomponents/simple-tooltip": "8.0.2",
|
"@lrnwebcomponents/simple-tooltip": "7.0.18",
|
||||||
"@material/chips": "=14.0.0-canary.53b3cad2f.0",
|
"@material/chips": "=14.0.0-canary.53b3cad2f.0",
|
||||||
"@material/data-table": "=14.0.0-canary.53b3cad2f.0",
|
"@material/data-table": "=14.0.0-canary.53b3cad2f.0",
|
||||||
"@material/mwc-base": "0.27.0",
|
"@material/mwc-base": "0.27.0",
|
||||||
@@ -72,7 +72,6 @@
|
|||||||
"@material/mwc-radio": "0.27.0",
|
"@material/mwc-radio": "0.27.0",
|
||||||
"@material/mwc-ripple": "0.27.0",
|
"@material/mwc-ripple": "0.27.0",
|
||||||
"@material/mwc-select": "0.27.0",
|
"@material/mwc-select": "0.27.0",
|
||||||
"@material/mwc-snackbar": "0.27.0",
|
|
||||||
"@material/mwc-switch": "0.27.0",
|
"@material/mwc-switch": "0.27.0",
|
||||||
"@material/mwc-tab": "0.27.0",
|
"@material/mwc-tab": "0.27.0",
|
||||||
"@material/mwc-tab-bar": "0.27.0",
|
"@material/mwc-tab-bar": "0.27.0",
|
||||||
@@ -81,16 +80,17 @@
|
|||||||
"@material/mwc-top-app-bar": "0.27.0",
|
"@material/mwc-top-app-bar": "0.27.0",
|
||||||
"@material/mwc-top-app-bar-fixed": "0.27.0",
|
"@material/mwc-top-app-bar-fixed": "0.27.0",
|
||||||
"@material/top-app-bar": "=14.0.0-canary.53b3cad2f.0",
|
"@material/top-app-bar": "=14.0.0-canary.53b3cad2f.0",
|
||||||
"@material/web": "=1.3.0",
|
"@material/web": "=1.1.1",
|
||||||
"@mdi/js": "7.4.47",
|
"@mdi/js": "7.4.47",
|
||||||
"@mdi/svg": "7.4.47",
|
"@mdi/svg": "7.4.47",
|
||||||
"@polymer/paper-item": "3.0.1",
|
"@polymer/paper-item": "3.0.1",
|
||||||
"@polymer/paper-listbox": "3.0.1",
|
"@polymer/paper-listbox": "3.0.1",
|
||||||
"@polymer/paper-tabs": "3.1.0",
|
"@polymer/paper-tabs": "3.1.0",
|
||||||
|
"@polymer/paper-toast": "3.0.1",
|
||||||
"@polymer/polymer": "3.5.1",
|
"@polymer/polymer": "3.5.1",
|
||||||
"@thomasloven/round-slider": "0.6.0",
|
"@thomasloven/round-slider": "0.6.0",
|
||||||
"@vaadin/combo-box": "24.3.10",
|
"@vaadin/combo-box": "24.3.3",
|
||||||
"@vaadin/vaadin-themable-mixin": "24.3.10",
|
"@vaadin/vaadin-themable-mixin": "24.3.3",
|
||||||
"@vibrant/color": "3.2.1-alpha.1",
|
"@vibrant/color": "3.2.1-alpha.1",
|
||||||
"@vibrant/core": "3.2.1-alpha.1",
|
"@vibrant/core": "3.2.1-alpha.1",
|
||||||
"@vibrant/quantizer-mmcq": "3.2.1-alpha.1",
|
"@vibrant/quantizer-mmcq": "3.2.1-alpha.1",
|
||||||
@@ -98,28 +98,28 @@
|
|||||||
"@webcomponents/scoped-custom-element-registry": "0.0.9",
|
"@webcomponents/scoped-custom-element-registry": "0.0.9",
|
||||||
"@webcomponents/webcomponentsjs": "2.8.0",
|
"@webcomponents/webcomponentsjs": "2.8.0",
|
||||||
"app-datepicker": "5.1.1",
|
"app-datepicker": "5.1.1",
|
||||||
"chart.js": "4.4.2",
|
"chart.js": "4.4.1",
|
||||||
"color-name": "2.0.0",
|
|
||||||
"comlink": "4.4.1",
|
"comlink": "4.4.1",
|
||||||
"core-js": "3.36.1",
|
"core-js": "3.35.0",
|
||||||
"cropperjs": "1.6.1",
|
"cropperjs": "1.6.1",
|
||||||
"date-fns": "2.30.0",
|
"date-fns": "2.30.0",
|
||||||
"date-fns-tz": "2.0.1",
|
"date-fns-tz": "2.0.0",
|
||||||
"deep-clone-simple": "1.1.1",
|
"deep-clone-simple": "1.1.1",
|
||||||
"deep-freeze": "0.0.1",
|
"deep-freeze": "0.0.1",
|
||||||
"element-internals-polyfill": "1.3.10",
|
"element-internals-polyfill": "1.3.10",
|
||||||
"fuse.js": "7.0.0",
|
"fuse.js": "7.0.0",
|
||||||
"google-timezones-json": "1.2.0",
|
"google-timezones-json": "1.2.0",
|
||||||
"hls.js": "patch:hls.js@npm%3A1.5.7#~/.yarn/patches/hls.js-npm-1.5.7-f5bbd3d060.patch",
|
"gridstack": "10.0.1",
|
||||||
"home-assistant-js-websocket": "9.2.1",
|
"hls.js": "1.5.1",
|
||||||
|
"home-assistant-js-websocket": "9.1.0",
|
||||||
"idb-keyval": "6.2.1",
|
"idb-keyval": "6.2.1",
|
||||||
"intl-messageformat": "10.5.11",
|
"intl-messageformat": "10.5.8",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"leaflet": "1.9.4",
|
"leaflet": "1.9.4",
|
||||||
"leaflet-draw": "1.0.4",
|
"leaflet-draw": "1.0.4",
|
||||||
"lit": "2.8.0",
|
"lit": "2.8.0",
|
||||||
"luxon": "3.4.4",
|
"luxon": "3.4.4",
|
||||||
"marked": "12.0.1",
|
"marked": "11.1.1",
|
||||||
"memoize-one": "6.0.0",
|
"memoize-one": "6.0.0",
|
||||||
"node-vibrant": "3.2.1-alpha.1",
|
"node-vibrant": "3.2.1-alpha.1",
|
||||||
"proxy-polyfill": "0.3.2",
|
"proxy-polyfill": "0.3.2",
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
"rrule": "2.8.1",
|
"rrule": "2.8.1",
|
||||||
"sortablejs": "1.15.2",
|
"sortablejs": "1.15.2",
|
||||||
"stacktrace-js": "2.0.2",
|
"stacktrace-js": "2.0.2",
|
||||||
"superstruct": "1.0.4",
|
"superstruct": "1.0.3",
|
||||||
"tinykeys": "2.1.0",
|
"tinykeys": "2.1.0",
|
||||||
"tsparticles-engine": "2.12.0",
|
"tsparticles-engine": "2.12.0",
|
||||||
"tsparticles-preset-links": "2.12.0",
|
"tsparticles-preset-links": "2.12.0",
|
||||||
@@ -147,20 +147,20 @@
|
|||||||
"workbox-precaching": "7.0.0",
|
"workbox-precaching": "7.0.0",
|
||||||
"workbox-routing": "7.0.0",
|
"workbox-routing": "7.0.0",
|
||||||
"workbox-strategies": "7.0.0",
|
"workbox-strategies": "7.0.0",
|
||||||
"xss": "1.0.15"
|
"xss": "1.0.14"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.24.3",
|
"@babel/core": "7.23.7",
|
||||||
"@babel/helper-define-polyfill-provider": "0.6.1",
|
"@babel/helper-define-polyfill-provider": "0.4.4",
|
||||||
"@babel/plugin-proposal-decorators": "7.24.1",
|
"@babel/plugin-proposal-decorators": "7.23.7",
|
||||||
"@babel/plugin-transform-runtime": "7.24.3",
|
"@babel/plugin-transform-runtime": "7.23.7",
|
||||||
"@babel/preset-env": "7.24.3",
|
"@babel/preset-env": "7.23.8",
|
||||||
"@babel/preset-typescript": "7.24.1",
|
"@babel/preset-typescript": "7.23.3",
|
||||||
"@bundle-stats/plugin-webpack-filter": "4.12.2",
|
"@bundle-stats/plugin-webpack-filter": "4.8.4",
|
||||||
"@koa/cors": "5.0.0",
|
"@koa/cors": "5.0.0",
|
||||||
"@lokalise/node-api": "12.3.0",
|
"@lokalise/node-api": "12.1.0",
|
||||||
"@octokit/auth-oauth-device": "7.0.1",
|
"@octokit/auth-oauth-device": "6.0.1",
|
||||||
"@octokit/plugin-retry": "7.0.3",
|
"@octokit/plugin-retry": "6.0.1",
|
||||||
"@octokit/rest": "20.0.2",
|
"@octokit/rest": "20.0.2",
|
||||||
"@open-wc/dev-server-hmr": "0.1.4",
|
"@open-wc/dev-server-hmr": "0.1.4",
|
||||||
"@rollup/plugin-babel": "6.0.4",
|
"@rollup/plugin-babel": "6.0.4",
|
||||||
@@ -170,63 +170,62 @@
|
|||||||
"@rollup/plugin-replace": "5.0.5",
|
"@rollup/plugin-replace": "5.0.5",
|
||||||
"@types/babel__plugin-transform-runtime": "7.9.5",
|
"@types/babel__plugin-transform-runtime": "7.9.5",
|
||||||
"@types/chromecast-caf-receiver": "6.0.13",
|
"@types/chromecast-caf-receiver": "6.0.13",
|
||||||
"@types/chromecast-caf-sender": "1.0.9",
|
"@types/chromecast-caf-sender": "1.0.8",
|
||||||
"@types/color-name": "1.1.3",
|
|
||||||
"@types/glob": "8.1.0",
|
"@types/glob": "8.1.0",
|
||||||
"@types/html-minifier-terser": "7.0.2",
|
"@types/html-minifier-terser": "7.0.2",
|
||||||
"@types/js-yaml": "4.0.9",
|
"@types/js-yaml": "4.0.9",
|
||||||
"@types/leaflet": "1.9.8",
|
"@types/leaflet": "1.9.8",
|
||||||
"@types/leaflet-draw": "1.0.11",
|
"@types/leaflet-draw": "1.0.11",
|
||||||
"@types/luxon": "3.4.2",
|
"@types/luxon": "3.4.1",
|
||||||
"@types/mocha": "10.0.6",
|
"@types/mocha": "10.0.6",
|
||||||
"@types/qrcode": "1.5.5",
|
"@types/qrcode": "1.5.5",
|
||||||
"@types/serve-handler": "6.1.4",
|
"@types/serve-handler": "6.1.4",
|
||||||
"@types/sortablejs": "1.15.8",
|
"@types/sortablejs": "1.15.7",
|
||||||
"@types/tar": "6.1.11",
|
"@types/tar": "6.1.10",
|
||||||
"@types/ua-parser-js": "0.7.39",
|
"@types/ua-parser-js": "0.7.39",
|
||||||
"@types/webspeechapi": "0.0.29",
|
"@types/webspeechapi": "0.0.29",
|
||||||
"@typescript-eslint/eslint-plugin": "7.4.0",
|
"@typescript-eslint/eslint-plugin": "6.18.1",
|
||||||
"@typescript-eslint/parser": "7.4.0",
|
"@typescript-eslint/parser": "6.18.1",
|
||||||
"@web/dev-server": "0.1.38",
|
"@web/dev-server": "0.1.38",
|
||||||
"@web/dev-server-rollup": "0.4.1",
|
"@web/dev-server-rollup": "0.4.1",
|
||||||
"babel-loader": "9.1.3",
|
"babel-loader": "9.1.3",
|
||||||
"babel-plugin-template-html-minifier": "4.1.0",
|
"babel-plugin-template-html-minifier": "4.1.0",
|
||||||
"chai": "5.1.0",
|
"chai": "5.0.0",
|
||||||
"del": "7.1.0",
|
"del": "7.1.0",
|
||||||
"eslint": "8.57.0",
|
"eslint": "8.56.0",
|
||||||
"eslint-config-airbnb-base": "15.0.0",
|
"eslint-config-airbnb-base": "15.0.0",
|
||||||
"eslint-config-airbnb-typescript": "18.0.0",
|
"eslint-config-airbnb-typescript": "17.1.0",
|
||||||
"eslint-config-prettier": "9.1.0",
|
"eslint-config-prettier": "9.1.0",
|
||||||
"eslint-import-resolver-webpack": "0.13.8",
|
"eslint-import-resolver-webpack": "0.13.8",
|
||||||
"eslint-plugin-disable": "2.0.3",
|
"eslint-plugin-disable": "2.0.3",
|
||||||
"eslint-plugin-import": "2.29.1",
|
"eslint-plugin-import": "2.29.1",
|
||||||
"eslint-plugin-lit": "1.11.0",
|
"eslint-plugin-lit": "1.11.0",
|
||||||
"eslint-plugin-lit-a11y": "4.1.2",
|
"eslint-plugin-lit-a11y": "4.1.1",
|
||||||
"eslint-plugin-unused-imports": "3.1.0",
|
"eslint-plugin-unused-imports": "3.0.0",
|
||||||
"eslint-plugin-wc": "2.0.4",
|
"eslint-plugin-wc": "2.0.4",
|
||||||
"fancy-log": "2.0.0",
|
"fancy-log": "2.0.0",
|
||||||
"fs-extra": "11.2.0",
|
"fs-extra": "11.2.0",
|
||||||
"glob": "10.3.10",
|
"glob": "10.3.10",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-flatmap": "1.0.2",
|
"gulp-flatmap": "1.0.2",
|
||||||
"gulp-json-transform": "0.5.0",
|
"gulp-json-transform": "0.4.8",
|
||||||
"gulp-merge-json": "2.2.1",
|
"gulp-merge-json": "2.1.2",
|
||||||
"gulp-rename": "2.0.0",
|
"gulp-rename": "2.0.0",
|
||||||
"gulp-zopfli-green": "6.0.1",
|
"gulp-zopfli-green": "6.0.1",
|
||||||
"html-minifier-terser": "7.2.0",
|
"html-minifier-terser": "7.2.0",
|
||||||
"husky": "9.0.11",
|
"husky": "8.0.3",
|
||||||
"instant-mocha": "1.5.2",
|
"instant-mocha": "1.5.2",
|
||||||
"jszip": "3.10.1",
|
"jszip": "3.10.1",
|
||||||
"lint-staged": "15.2.2",
|
"lint-staged": "15.2.0",
|
||||||
"lit-analyzer": "2.0.3",
|
"lit-analyzer": "2.0.3",
|
||||||
"lodash.template": "4.5.0",
|
"lodash.template": "4.5.0",
|
||||||
"magic-string": "0.30.8",
|
"magic-string": "0.30.5",
|
||||||
"map-stream": "0.0.7",
|
"map-stream": "0.0.7",
|
||||||
"mocha": "10.3.0",
|
"mocha": "10.2.0",
|
||||||
"object-hash": "3.0.0",
|
"object-hash": "3.0.0",
|
||||||
"open": "10.1.0",
|
"open": "10.0.3",
|
||||||
"pinst": "3.0.0",
|
"pinst": "3.0.0",
|
||||||
"prettier": "3.2.5",
|
"prettier": "3.2.2",
|
||||||
"rollup": "2.79.1",
|
"rollup": "2.79.1",
|
||||||
"rollup-plugin-string": "3.0.0",
|
"rollup-plugin-string": "3.0.0",
|
||||||
"rollup-plugin-terser": "7.0.2",
|
"rollup-plugin-terser": "7.0.2",
|
||||||
@@ -235,19 +234,19 @@
|
|||||||
"sinon": "17.0.1",
|
"sinon": "17.0.1",
|
||||||
"source-map-url": "0.4.1",
|
"source-map-url": "0.4.1",
|
||||||
"systemjs": "6.14.3",
|
"systemjs": "6.14.3",
|
||||||
"tar": "6.2.1",
|
"tar": "6.2.0",
|
||||||
"terser-webpack-plugin": "5.3.10",
|
"terser-webpack-plugin": "5.3.10",
|
||||||
"transform-async-modules-webpack-plugin": "1.0.4",
|
"transform-async-modules-webpack-plugin": "1.0.2",
|
||||||
"ts-lit-plugin": "2.0.2",
|
"ts-lit-plugin": "2.0.2",
|
||||||
"typescript": "5.4.3",
|
"typescript": "5.3.3",
|
||||||
"vinyl-buffer": "1.0.1",
|
"vinyl-buffer": "1.0.1",
|
||||||
"vinyl-source-stream": "2.0.0",
|
"vinyl-source-stream": "2.0.0",
|
||||||
"webpack": "5.91.0",
|
"webpack": "5.89.0",
|
||||||
"webpack-cli": "5.1.4",
|
"webpack-cli": "5.1.4",
|
||||||
"webpack-dev-server": "5.0.4",
|
"webpack-dev-server": "4.15.1",
|
||||||
"webpack-manifest-plugin": "5.0.0",
|
"webpack-manifest-plugin": "5.0.0",
|
||||||
"webpack-stats-plugin": "1.1.3",
|
"webpack-stats-plugin": "1.1.3",
|
||||||
"webpackbar": "6.0.1",
|
"webpackbar": "6.0.0",
|
||||||
"workbox-build": "7.0.0"
|
"workbox-build": "7.0.0"
|
||||||
},
|
},
|
||||||
"_comment": "Polymer 3.2 contained a bug, fixed in https://github.com/Polymer/polymer/pull/5569, add as patch",
|
"_comment": "Polymer 3.2 contained a bug, fixed in https://github.com/Polymer/polymer/pull/5569, add as patch",
|
||||||
@@ -257,8 +256,8 @@
|
|||||||
"lit": "2.8.0",
|
"lit": "2.8.0",
|
||||||
"clean-css": "5.3.3",
|
"clean-css": "5.3.3",
|
||||||
"@lit/reactive-element": "1.6.3",
|
"@lit/reactive-element": "1.6.3",
|
||||||
"sortablejs@1.15.2": "patch:sortablejs@npm%3A1.15.2#~/.yarn/patches/sortablejs-npm-1.15.2-73347ae85a.patch",
|
"sortablejs@1.15.0": "patch:sortablejs@npm%3A1.15.0#./.yarn/patches/sortablejs-npm-1.15.0-f3a393abcc.patch",
|
||||||
"leaflet-draw@1.0.4": "patch:leaflet-draw@npm%3A1.0.4#./.yarn/patches/leaflet-draw-npm-1.0.4-0ca0ebcf65.patch"
|
"leaflet-draw@1.0.4": "patch:leaflet-draw@npm%3A1.0.4#./.yarn/patches/leaflet-draw-npm-1.0.4-0ca0ebcf65.patch"
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@4.1.1"
|
"packageManager": "yarn@4.0.2"
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 7.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 19 KiB |
Binary file not shown.
Before Width: | Height: | Size: 8.6 KiB |
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 6.2 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user