Compare commits

...
Author SHA1 Message Date
J. Nick Koston dd00b51f21 Adjust WebSocket ping timeout to 15 seconds
5 seconds was too low to prevent the UI from reloading
when connecting the WebSocket during startup or on
a high latancy connection

This problem presented as the UI reloading over
and over again because it could never respond
to the ping in time on high latancy connections.

At startup it usually only did this once so it
went unnoticed in most cases.

This ping was added in #18934
2025-02-20 11:46:59 -06:00
J. Nick Koston 64b886eea0 Reduce size of address column on Bluetooth Advertisement monitor 2025-01-29 12:51:56 -06:00
Bram Kragten b95e87845f Merge branch 'rc' into dev 2025-01-29 16:46:26 +01:00
Bram Kragten bc49ebc489 Bumped version to 20250129.0 2025-01-29 16:38:25 +01:00
c97d0ce68a Add translations for backup agents encryption (#23938)
* Add translations for backup agents encryption

* Update src/translations/en.json

* Split class map

---------

Co-authored-by: Bram Kragten <[email protected]>
Co-authored-by: Paul Bottein <[email protected]>
2025-01-29 15:31:55 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
a0e7d6f1c6 Update dependency lint-staged to v15.4.3 (#23937)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-29 16:23:04 +01:00
Petar PetrovandGitHub 25d2a5ddac Open more-info on label click in echarts (#23921)
* Open more-info on label click in echarts

* check isExternalStatistic in energy devices click
2025-01-29 15:44:21 +01:00
Paul BotteinandGitHub a2f2d64f5c Allow to change encryption for each backup location (#23861)
* Add backup location settings page

* Add encryption settings

* Display unencrypted locations and backups

* Improve cloud detail page

* Fix encryption flag

* Fix restore backup

* Fix lint

* Fix translations

* Add warning

* Use agents in backup locations

* Feedback

* Use updated

* Improve encrypted/unencrypted status

* Improve code quality

* Remove hardcoded failed id

* Extend agent interface

* Use willupdate
2025-01-29 14:23:47 +01:00
Petar PetrovandGitHub fcdcbbda05 Fix statistics chart stacking and colors (#23922) 2025-01-29 12:46:59 +01:00
Paul BotteinandGitHub 4b5c7fc2de Only restore config and database for core install (#23935) 2025-01-29 12:46:30 +01:00
Paul BotteinandGitHub dd64d88afe Use handle icon for drag and drop in energy devices settings (#23933)
* Use handle icon for drag and drop in energy devices settings

* Remove import
2025-01-29 11:04:09 +00:00
WendelinandGitHub 5feffd08ff Fix backup time supporting-text (#23931) 2025-01-29 09:08:26 +01:00
karwostsandGitHub 543c7df3e0 Keyboard accessible menus in hass-tabs-subpage-data-table (#23927) 2025-01-29 08:23:27 +02:00
ildar170975andGitHub 167f859f2a fix padding for error-log-card (#23923)
make padding similar to system-log-card
2025-01-29 08:22:24 +02:00
J. Nick KostonandGitHub c7d9699a24 Include addresses of Bluetooth devices in the connection slots tooltip (#23928) 2025-01-29 08:21:34 +02:00
ildar170975andGitHub a638cf443d fix overflow for ha-map (#23929) 2025-01-29 08:19:00 +02:00
Patrick KortendickandGitHub 438d1c13ef Fix misspelling for humidifier card description (#23924) 2025-01-29 05:20:01 +00:00
J. Nick KostonandGitHub cc8869b9f9 Show scanner name in the Bluetooth Advertisement Monitor (#23926) 2025-01-28 13:07:16 -10:00
J. Nick KostonandGitHub cbdb7406ad Add support for showing Bluetooth connection slot allocations (#23899) 2025-01-28 06:52:21 -10:00
WendelinandGitHub f8d2560104 Revert "Add shortcut hint to assist dialog" (#23918)
Revert "Add shortcut hint to assist dialog (#23739)"

This reverts commit d121b33263.
2025-01-28 10:53:57 -05:00
Petar PetrovandGitHub cc48ae82d6 Fixes for echarts (#23906)
* show negative untracked energy again

* fix chart cards height

* fix timeline label width

* fix statistics chart legend

* fix layout of chart cards

* tweak timeline chart labels

* timeline label tweak

* css tweak

* fix legend colors in statistics chart

* dark mode fix

* fix for y axis with a long name

* listen for darkMode changes and update charts

* legend tweak for darkMode

* dark mode tweak

* hide insignificant echarts errors for now
2025-01-28 14:20:34 +00:00
karwostsandGitHub e1bda9b57d Use fixed positioning for ha-form-multi_select (#23781) 2025-01-28 15:13:19 +01:00
ildar170975andGitHub 89e9316a40 Fix typo & layout in ha-assist-chip (#23785)
* fix typo fot slot name

* make font-size same as for label

* remove unneeded margin-top
2025-01-28 15:04:12 +01:00
Paul BotteinandGitHub 85e4975206 Use name property when formatting backup location (#23916) 2025-01-28 13:53:02 +01:00
Ben RandallandGitHub 142faba04d Update settings button icon on tables to mdi-table-cog. (#23915)
Update settings button icon on tables to mdi-table-cog.

The cog icon is used in a lot of places to indicate settings and it's generally clear what it's intent is.  However, the cog icon used by tables very often appears very close by the triple dots menu or just in the top right corner so it's very easy to mistakenly press that button intending to press the menu button, or to press it when looking for the appropriate settings button.

This changes the icon used by these buttons from mdi-code to mdi-table-cog to help clarify the intent of the button.
2025-01-28 11:24:08 +02:00
karwostsandGitHub c1c6d71ccf Fix keyboard in automation-picker menus (#23867) 2025-01-28 09:39:03 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5204a565cf Update dependency eslint to v9.19.0 (#23914)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-28 09:37:55 +02:00
Petar PetrovandGitHub 05b8a48ba8 Looser layout limits for graph cards (#23910) 2025-01-28 09:36:20 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
41770a89b4 Update dependency element-internals-polyfill to v1.3.13 (#23912)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-27 16:46:14 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b7d14d7950 Update babel monorepo to v7.26.7 (#23911)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-27 17:34:34 +01:00
karwostsandGitHub 4ccef6f28b Fix millisecond attributes (#23909)
fix millisecond attributes
2025-01-27 17:25:37 +02:00
karwostsandGitHub d1be441455 Re-remove time picker for Energy (#23891)
* Re-remove time picker for Energy

* flip polarity
2025-01-27 14:11:08 +00:00
PhilippandGitHub b3391b34e4 Increase generic entity row touch target (#23894) 2025-01-27 15:52:32 +02:00
Abílio CostaandGitHub 9359e9d475 Reword incompatible media message (#23887) 2025-01-27 09:26:03 +02:00
Paul BotteinandGitHub 5453da75ea Reintroduce backup switch when updating core and addons (#23814) 2025-01-27 08:25:28 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
bc21877008 Bump actions/stale from 9.0.0 to 9.1.0 (#23903)
Bumps [actions/stale](https://github.com/actions/stale) from 9.0.0 to 9.1.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v9.0.0...v9.1.0)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 09:24:34 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c9956c65e9 Bump actions/setup-node from 4.1.0 to 4.2.0 (#23902)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4.1.0...v4.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 09:24:01 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
74814cc305 Update dependency @bundle-stats/plugin-webpack-filter to v4.18.2 (#23898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-26 18:42:16 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8f231d7b3e Update rspack monorepo to v1.2.2 (#23896)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-26 19:33:12 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5b6818d72d Update dependency lint-staged to v15.4.2 (#23889)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-26 19:32:59 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8c75865a02 Update vitest monorepo to v3.0.4 (#23897)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-26 19:32:39 +01:00
J. Nick KostonandGitHub 99d832ac77 Restore Bluetooth configuration panel (#23877)
* Restore Bluetooth configuration panel

* cleanup copypasta

* Apply suggestions from code review

* Update src/panels/config/integrations/integration-panels/bluetooth/bluetooth-config-dashboard-router.ts

* preen

* trim down updatePageEl
2025-01-26 08:11:21 +01:00
Simon LamonandGitHub 240e48f5c1 Include query params in url when default page is added (#23880)
Include query params if exists
2025-01-25 20:02:26 +01:00
Jan-Philipp BeneckeandGitHub 77fc11cda6 Use new improved save dialog when leaving script editor dirty (#23862)
* Use new improved save dialog when leaving script editor dirty

* Fix url
2025-01-25 19:14:47 +01:00
karwostsandGitHub f8f152f118 Add button filter to energy devices sortable (#23881)
Add filter to energy devices sortable
2025-01-25 18:42:05 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
20a67cf73c Update rspack monorepo to v1.2.1 (#23884)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 17:45:34 +01:00
ocreaseandGitHub dd11b3092e Preheating support in History Chart (#23878)
Use CLIMATE_HVAC_ACTION_TO_MODE to map hvac action to heat or cool so that history chart correctly shows preheating and defrosting as heat
2025-01-25 12:25:08 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7f3363621e Update dependency @bundle-stats/plugin-webpack-filter to v4.18.0 (#23879)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 12:20:46 +01:00
Jan-Philipp BeneckeandGitHub edce1901d7 Display year when automation was last triggered in automation list (#23864)
* Display year when automation was last triggered in automation list

* Use function
2025-01-24 17:13:01 +00:00
Jan-Philipp BeneckeandGitHub 546087066a Display year in entities list only when last year (#23865)
* Display year in entities list only when last year

* Make function

* Revert hyphen
2025-01-24 18:03:21 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
a95c589a06 Update vitest monorepo to v3.0.3 (#23870)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-24 17:59:35 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5f6da9d959 Update rspack monorepo to v1.2.0 (#23871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-24 17:59:00 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
bc94ca0a0a Pin dependency tslib to 2.8.1 (#23860)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-24 08:32:09 +02:00
Eric SternandGitHub dc8d483e8b Logbook card loading fix (#23853)
* the call to unsubscribe will never do anything

* await the subscription when subscribing to logbook

* removed unneeded if
wrapped call to subscribeLogbook in try/catch
remove return values from _subscribeLogbookPeriod
2025-01-24 08:31:30 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
a329553ce1 Update typescript-eslint monorepo to v8.21.0 (#23863)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-23 22:10:20 +01:00
Petar PetrovandGitHub 1f8cfdd0de Migrate from chart.js to echarts (#23809) 2025-01-23 15:51:48 +00:00
Paul BotteinandGitHub fd1f966216 20250109.2 (#23859) 2025-01-23 16:18:56 +01:00
Paul Bottein 243a2ce0e2 Bumped version to 20250109.2 2025-01-23 16:16:42 +01:00
Paul Bottein 77c1786171 Fix delete button for state content in iOS and Android (#23847) 2025-01-23 16:15:49 +01:00
Paul Bottein 7a7c204d74 Fix delete button for state content in iOS (#23839) 2025-01-23 16:15:48 +01:00
Paul Bottein dcb74ad2ee Fix backup data picker translations (#23826) 2025-01-23 16:15:47 +01:00
Paul BotteinandGitHub fd4c62a852 20250109.1 (#23858) 2025-01-23 14:26:04 +01:00
Paul Bottein bf1b0ac949 Bumped version to 20250109.1 2025-01-23 14:17:53 +01:00
c6f0c62fd6 Prevent race in dialog box (#23758)
Co-authored-by: Petar Petrov <[email protected]>
Co-authored-by: Wendelin <[email protected]>
2025-01-23 14:15:23 +01:00
WendelinandPaul Bottein ac98672cb7 Fix background (#23736) 2025-01-23 14:15:22 +01:00
Bram KragtenandPaul Bottein 6b471ba6e7 Fix background on cast devices (#23731) 2025-01-23 14:15:21 +01:00
Petar PetrovandPaul Bottein b28e7d2f06 Fix navigation from stacked dialogs with the same name (#23698)
* Fix navigation from stacked dialogs

* lint fix

* Keep only 1 instance per dialog tag in the stack
2025-01-23 14:15:20 +01:00
Simon LamonandPaul Bottein bf471eb8c3 Minor fixes for backup translations (#23691) 2025-01-23 14:15:19 +01:00
Petar PetrovandPaul Bottein 8c52bc3ffb Fix more-info chart rendering (#23619)
* Fix more-info chart rendering

* lint fix

* remove animation-container & _chartHeight

* don't change height on resize

* handle default height in ha-chart-base

* fix chart height in energy panel

* lint

* lint
2025-01-23 14:12:54 +01:00
Bram KragtenandPaul Bottein 54b328648a Match UI with core and don't allow restore config without db and vice … (#23553)
Match UI with core and dont allow restore config without db and vice versa
2025-01-23 13:59:37 +01:00
Jan-Philipp BeneckeandGitHub 62a9da2de2 Display year for created_at and modified_at of entities (#23772) 2025-01-23 13:36:23 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
25ff96b9bf Update dependency eslint-config-prettier to v10 (#23764)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-23 13:31:03 +02:00
Matthias AlphartandGitHub caeb616dc6 Don't check for promise when processing DataEntryFlowStep (#23759) 2025-01-23 13:27:19 +02:00
karwostsandGitHub fb79e2cfb2 Fix keyboard for ha-config-entities bulk menus (#23776)
Fix keyboard for ha-config-entities menus
2025-01-23 13:15:23 +02:00
Paul BotteinandGitHub 666316e44a Use area entities in area card for temperature and humidity (#23842)
Use area entities in area card for temperature and humidity instead of average
2025-01-23 12:26:58 +02:00
karwostsandGitHub 1532093426 Support offset on input_datetime time trigger (#23855)
* Support offset on input_datetime time trigger

* no time entities
2025-01-23 12:23:27 +02:00
Jan-Philipp BeneckeandGitHub 2effb0935c Add helper text to inputs of time pattern trigger (#23844) 2025-01-23 09:40:13 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
06a08bb4f2 Update dependency intl-messageformat to v10.7.14 (#23854)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-23 09:04:21 +02:00
Jan-Philipp BeneckeandGitHub 09102d34d6 Improve automation save dialog when leaving editor dirty (#23589)
* Improve automation save dialog when leaving editor dirty

* Make CI happy
2025-01-23 09:03:39 +02:00
27d683f6e8 Add additional backup schedule description (#23843)
* Add additional backup schedule description

* Use ha-icon-button for description

* Remove tip style

---------

Co-authored-by: Paul Bottein <[email protected]>
2025-01-22 20:17:50 +01:00
Paul BotteinandGitHub b89bd0be3b Fix delete button for state content in iOS and Android (#23847) 2025-01-22 14:25:06 +00:00
Paul BotteinandGitHub 51e6e6d230 Fix delete button for state content in iOS (#23839) 2025-01-22 08:16:35 -05:00
Norbert RittelandGitHub 9005f8faa9 Update hidden_explanation to include labels (#23473) 2025-01-22 09:52:53 +01:00
Jan-Philipp BeneckeandGitHub 7aa2abc9c2 Make add integration dialog keyboard accessible (#23829)
Make add integration keyboard accessible
2025-01-22 10:06:05 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
898fd51c7d Bump vite from 6.0.7 to 6.0.11 (#23834)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.0.7 to 6.0.11.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.0.11/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-22 10:04:27 +02:00
karwostsandGitHub b3141a0653 Remember selection "Don't Group" in data-tables (#23836) 2025-01-22 10:03:23 +02:00
Jan-Philipp BeneckeandGitHub 1025f73c36 Clear filter in add helper dialog when closing (#23832) 2025-01-21 21:40:52 +01:00
Simon LamonandGitHub 1cd44728df Temporarily disable Bluetooth panel to restore access to options flow, additional fixes (#23830) 2025-01-21 09:45:47 -10:00
Sören BeyeandGitHub eaab19fb8c Don't hide location entities that are "home" in the MapViewStrategy (#23462) 2025-01-21 20:14:04 +02:00
Paul BotteinandGitHub c4b2896fac Add label for add badge button in masonry and sidebar view (#23827)
Add label for add badge button in mansonry and sidebar view
2025-01-21 19:45:06 +02:00
ca2a9f9171 Initial bluetooth integration panel (#23531)
* Initial bluetooth device page

* Update src/panels/config/integrations/integration-panels/bluetooth/bluetooth-device-page.ts

Co-authored-by: J. Nick Koston <[email protected]>

* Update src/panels/config/integrations/integration-panels/bluetooth/bluetooth-device-page.ts

* Apply suggestions from code review

* Apply suggestions and implement dialog

* memoize

* Apply suggestions

* Clean up and fixes

* Adjust store usage

* Implement hassdialog

* Apply comments

---------

Co-authored-by: J. Nick Koston <[email protected]>
2025-01-21 19:43:33 +02:00
Paulus SchoutsenandGitHub 9e868e144d Allow storing temperature/humidity entities on an area (#23822)
* Allow storing temperature/humidity entities on an area

* Update objects after improved types
2025-01-21 17:37:51 +01:00
fcb6da55d8 Check if we can decrypt backup on download (#23756)
Co-authored-by: Kevin Cathcart <[email protected]>
Co-authored-by: Wendelin <[email protected]>
Co-authored-by: Wendelin <[email protected]>
2025-01-21 14:48:38 +01:00
Paul BotteinandGitHub 87907b98bd Fix backup data picker translations (#23826) 2025-01-21 13:17:33 +01:00
7535d66373 Add time option for backup schedule (#23757)
Co-authored-by: Wendelin <[email protected]>
2025-01-21 11:58:07 +01:00
e994e3565d Improve add cards dialog user experience (#23773)
Co-authored-by: Wendelin <[email protected]>
2025-01-21 09:53:28 +01:00
Jan-Philipp BeneckeandGitHub 562589a6cb Fix flickering media play button (#23778) 2025-01-21 09:09:15 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e87f6d6d5e Update vitest monorepo to v3.0.2 (#23812)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-21 09:07:51 +01:00
3feedb792a Multi textfield helper (#23649)
Co-authored-by: Bram Kragten <[email protected]>
2025-01-20 12:20:36 +01:00
fc290028c6 Update ha-assist-chat.ts (#23790)
Co-authored-by: Wendelin <[email protected]>
2025-01-20 09:20:14 +01:00
2f5fd6f0c7 Use destructive attribute from ha-button (#23786)
Co-authored-by: Wendelin <[email protected]>
2025-01-20 08:54:22 +01:00
ildar170975andGitHub 9a3ca59d77 Picture glance alignment fix (#23793) 2025-01-20 08:35:29 +01:00
f76c22cb5b system-log-card: make a header & card-content similar to error-log-card (#23799)
Co-authored-by: Wendelin <[email protected]>
2025-01-20 08:26:18 +01:00
dependabot[bot]andGitHub aad94624e2 Bump release-drafter/release-drafter from 6.0.0 to 6.1.0 (#23806) 2025-01-20 08:15:29 +01:00
renovate[bot]andGitHub 076ab91199 Update dependency intl-messageformat to v10.7.12 (#23807) 2025-01-20 08:12:59 +01:00
d121b33263 Add shortcut hint to assist dialog (#23739)
Co-authored-by: Wendelin <[email protected]>
2025-01-20 08:12:52 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
dbfcf310c3 Update vitest monorepo to v3 (major) (#23803)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-20 08:05:24 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
25ea6c2c55 Update dependency lint-staged to v15.4.1 (#23802)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-19 21:05:58 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b2b2c21477 Update dependency fs-extra to v11.3.0 (#23798)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-19 16:41:25 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
09777db549 Update dependency lint-staged to v15.4.0 (#23800)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-19 16:41:13 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
f108f65e39 Update dependency node-vibrant to v4.0.3 (#23797)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-19 16:41:04 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2ee9824bcc Update dependency node-vibrant to v4.0.2 (#23789)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-18 10:44:52 +00:00
Norbert RittelandGitHub 812461ea00 Add translatable string for "Learn how it works" (#23788)
* Add translatable string for "Learn how it works"

* Update assist-pref.ts adding localizable key
2025-01-18 11:37:22 +01:00
Jan-Philipp BeneckeandGitHub c430c28c2a Add missing localization on info page (#23787) 2025-01-18 11:36:00 +01:00
Jan-Philipp BeneckeandGitHub d67c463b98 Add clear button to Assist debug page (#23774)
* Add clear button to Assist debug page

* Move destructive to ha-button
2025-01-18 09:27:30 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8efaf2b031 Update typescript-eslint monorepo to v8.20.0 (#23771)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-17 08:30:15 +01:00
karwostsandGitHub 5b038a4fef Add missing localize (#23770) 2025-01-17 08:10:53 +01:00
karwostsandGitHub 2105793355 Don't close 2 dialogs from 1 escape keydown (more-info) (#23702) 2025-01-16 16:44:50 +01:00
WendelinandGitHub 21c2351137 Remove unused b64ToBlob (#23763) 2025-01-16 16:25:16 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ebd1bdd686 Update vaadinWebComponents monorepo to v24.6.2 (#23762)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-16 14:01:44 +01:00
05bd70dd64 Prevent race in dialog box (#23758)
Co-authored-by: Petar Petrov <[email protected]>
Co-authored-by: Wendelin <[email protected]>
2025-01-16 12:46:10 +01:00
Jan-Philipp BeneckeandGitHub e5d2f2d94b Make media play button in media browser more visible when hovering (#23760) 2025-01-16 10:53:16 +01:00
57edb86c5c Option to sort todo lists (#23579)
Co-authored-by: Wendelin <[email protected]>
2025-01-16 08:40:00 +00:00
Paulus SchoutsenandGitHub 173d60b913 Externalize ha-assist-chat styling (#23713) 2025-01-16 08:49:34 +01:00
WendelinandGitHub c17c1e4217 Use-consume-scene-editor (#23754)
* Add fullDevicesContext provider

* Use consume in ha-scene-editor

* Remove not needed device context and generate category
2025-01-15 17:06:59 +01:00
Paulus SchoutsenandGitHub d112872eb2 Add more info dialog for conversation agent (#23682)
* Add more info dialog for conversation agent

* Fixes

* Disable speech option for LLM testing

* Address comments

* New style more info

* Also reset errors on loading pipeline
2025-01-15 10:57:49 +01:00
WendelinandGitHub e54f178b02 Fix-ha-form-float-validate (#23751)
* Use autoCaseNoun for domainName

* Fix ha-form-float validate

* Revert "Use autoCaseNoun for domainName"

This reverts commit ff6855149b.
2025-01-15 09:54:38 +00:00
WendelinandGitHub 7960da1872 Use autoCaseNoun for domainName (#23748) 2025-01-15 10:52:03 +01:00
Simon LamonandGitHub 6288154c53 Fix cast views not showing a background (#23724) 2025-01-15 10:48:05 +01:00
Yosi LevyandGitHub 52d8e98cdb Overflow fix (#23652) 2025-01-15 08:52:20 +01:00
Jan-Philipp BeneckeandGitHub 1043db29be Add search to add helper dialog (#23728)
* Add search to add helper dialog

* Add missing scrollbar style

* Fix string

* Remove virtualizer & add alias
2025-01-15 09:13:08 +02:00
Jan-Philipp BeneckeandGitHub e6cc920781 Use ha-formfield in ha-form-boolean (#23737) 2025-01-14 20:11:55 +00:00
Jan-Philipp BeneckeandGitHub 8bc78ba793 Focus search input on dev tools statistics page when using search shortcut (#23738) 2025-01-14 21:05:01 +01:00
WendelinandGitHub e703750136 Add and fix stylistic eslint rules (#23735)
* Fix stylistic eslint rules

* Fix eslint issues
2025-01-14 21:00:14 +01:00
WendelinandGitHub 69a93ddb6e Fix background (#23736) 2025-01-14 14:41:43 +00:00
MimiandGitHub 630b48218b Make the title fonts consistent across different pages (#23688) 2025-01-14 11:30:41 +01:00
MimiandGitHub 54c78ecc4d Fix ERR_REQUIRE_ASYNC_MODULE error when executing gulp (#23687) 2025-01-14 11:29:34 +01:00
Bram KragtenandGitHub 57a17b8663 Fix background on cast devices (#23731) 2025-01-14 12:28:32 +02:00
Petar PetrovandGitHub d3e832c09b Fix more-info chart rendering (#23619)
* Fix more-info chart rendering

* lint fix

* remove animation-container & _chartHeight

* don't change height on resize

* handle default height in ha-chart-base

* fix chart height in energy panel

* lint

* lint
2025-01-14 11:24:52 +01:00
WendelinandGitHub abe8899f9b Update ts-eslint (#23723)
* Update ts-eslint

* Remove comments

* Remove unused ts-ignore

* Add undefined generic type instead of unknown

* Remove unused undefined type

* Fix type issues

* Use undefined instead of void for subscribed return type
2025-01-14 11:24:02 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
922cd72be4 Update dependency eslint to v9.18.0 (#23730)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-14 10:50:55 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3f4ee97ede Update dependency @lit-labs/virtualizer to v2.0.15 (#23729)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-14 10:50:02 +02:00
Petar PetrovandGitHub 6f9a385619 Fix navigation from stacked dialogs with the same name (#23698)
* Fix navigation from stacked dialogs

* lint fix

* Keep only 1 instance per dialog tag in the stack
2025-01-14 09:25:01 +01:00
karwostsandGitHub eda0ea077c Show yaml parsing errors in hui-element-editor (#23690) 2025-01-14 08:49:09 +02:00
Jan BouwhuisandGitHub 9934ea4b4f Replace label on refactored MQTT option flow button (#23317) 2025-01-13 20:47:26 +02:00
WendelinandGitHub cc42d958ce Update node-vibrant to v4 (#23718) 2025-01-13 14:18:04 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2e1efecdf7 Update dependency ua-parser-js to v2 (#22926)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 09:25:34 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5fead1b03a Bump actions/upload-artifact from 4.5.0 to 4.6.0 (#23714)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 09:19:48 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
730da177ef Update dependency jsdom to v26 (#23697)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 09:18:36 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
bd53d1076f Update dependency @codemirror/state to v6.5.1 (#23715)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 09:12:30 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e012a9e929 Update dependency glob to v11.0.1 (#23716)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 09:12:00 +01:00
Norbert RittelandGitHub 95ac8eb5ab Use consistent "More info" for To-do-lists and automations etc. (#23459) 2025-01-13 09:11:11 +01:00
libe.netandGitHub 6dbc04455f Newline behavior for date-range-picker history and logbook (#23710) 2025-01-13 08:45:38 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2b8fc04fdc Update dependency @codemirror/view to v6.36.2 (#23703)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-13 08:54:27 +02:00
ildar170975andGitHub 3baeb22423 Add outline for ha-color-picker (#23696)
Update ha-color-picker.ts
2025-01-13 08:53:44 +02:00
Simon LamonandGitHub aae4ba7341 No matching link found for developer-tools/action (#23700) 2025-01-12 15:37:30 +02:00
Simon LamonandGitHub 46d62d55a3 Fix history translation in backup (#23701) 2025-01-12 15:35:38 +02:00
Simon LamonandGitHub de027b6d93 Minor fixes for backup translations (#23691) 2025-01-12 09:24:35 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
f1cc02b40f Update dependency @octokit/rest to v21.1.0 (#23695)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-12 09:22:48 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
23c6155f9b Update dependency typescript to v5.7.3 (#23692)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-12 09:21:05 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b0e6c5dbaf Update dependency @codemirror/commands to v6.8.0 (#23689)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 20:59:37 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8cb4452126 Update dependency @octokit/plugin-retry to v7.1.3 (#23680)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 11:30:11 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
0cd0f65d51 Update dependency core-js to v3.40.0 (#23681)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-11 11:30:06 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3479879bd0 Bump softprops/action-gh-release from 2.1.0 to 2.2.1 (#23679)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.1.0 to 2.2.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2.1.0...v2.2.1)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-10 21:19:36 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
60b9fbced7 Update dependency @types/leaflet to v1.9.16 (#23675)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-10 18:21:37 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7496998a69 Update dependency @rsdoctor/rspack-plugin to v0.4.13 (#23672)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-10 18:21:32 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
c9db02ba2e Update vaadinWebComponents monorepo to v24.6.1 (#23673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-10 18:21:26 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
08737366fc Update dependency marked to v15.0.6 (#23660)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-10 09:20:35 +02:00
Petar PetrovandGitHub 707192feac Use statistics data in History graph card to fill gaps (#23612)
* Use statistics data in History graph card to fill gaps

* add convertStatisticsToHistory utility
2025-01-10 09:19:33 +02:00
Bram KragtenandGitHub 4b03caa01a Make timeout for save automation/script longer (#23665) 2025-01-09 16:39:19 -08:00
Bram Kragten 3ffbd435e0 Merge branch 'rc' 2025-01-09 21:02:43 +01:00
Bram Kragten 2e2f39adbd Bumped version to 20250109.0 2025-01-09 21:02:30 +01:00
Paul BotteinandBram Kragten 5e7f356707 Fix preferred agent for backup download (#23659) 2025-01-09 21:02:09 +01:00
GordandBram Kragten b02d0e58b1 Backup text changes for the english translation (#23656)
* Update backup text in en.json

* fix missing quote en.json
2025-01-09 21:02:08 +01:00
WendelinandBram Kragten c01d3aee41 Fix backup summary label position (#23655) 2025-01-09 21:02:07 +01:00
6dde7d6945 Fix backup translations key issues (#23654)
Co-authored-by: Wendelin <[email protected]>
2025-01-09 21:02:06 +01:00
Paul BotteinandBram Kragten 14c71f436e Remove ! from backup translation (#23648) 2025-01-09 21:02:06 +01:00
WendelinandBram Kragten 9acdd9f903 Voice assistants config: Filter unavailable assists (#23637)
Filter unavailable assists from num of assist devices.
2025-01-09 21:02:05 +01:00
karwostsandBram Kragten 12b2edaa65 Retain event data when moving/resizing schedule item (#23621)
* Retain event data when moving/resizing schedule item

* update from suggestion
2025-01-09 21:02:04 +01:00
Jan-Philipp BeneckeandBram Kragten d55d388046 Set fixed width for automation save dialog (#23618) 2025-01-09 21:02:03 +01:00
Petar PetrovandBram Kragten ec1dedcb6b Fix tooltip scrolling (#23616) 2025-01-09 21:02:02 +01:00
WendelinandBram Kragten d0fbba5063 Improve background-editor background-attachment alignment (#23615) 2025-01-09 21:02:01 +01:00
karwostsandBram Kragten 344e083ac6 Restore attributes removed from ha-entity-marker in ha-map (#23603)
* Restore attributes removed from ha-entity-marker in ha-map

* Use Reflect
2025-01-09 21:02:00 +01:00
0ee6548650 Add backup translations (#23365)
* Add translations

* Add summary and progress translations

* Add backups and settings translations

* Add backups page translations

* Add onboarding card translations

* Add settings translations

* Add details translations

* Translate delete

* Add data picker translations

* Use local add-ons

* Add encryption key translations

* Add new, generate and upload translations

* Add translations for restore backup

* Fix ts issue

* Add missing keys

---------

Co-authored-by: Paul Bottein <[email protected]>
2025-01-09 21:01:03 +01:00
Paul BotteinandGitHub 166633cfa8 Fix preferred agent for backup download (#23659) 2025-01-09 17:26:42 +01:00
WendelinandGitHub 853059ac73 Add tests for common/datetime (#23658) 2025-01-09 15:47:32 +01:00
WendelinandGitHub 31ed0f7bea Fix backup summary label position (#23655) 2025-01-09 14:49:49 +01:00
GordandGitHub 57388ae429 Backup text changes for the english translation (#23656)
* Update backup text in en.json

* fix missing quote en.json
2025-01-09 11:46:58 +00:00
20203a3cef Fix backup translations key issues (#23654)
Co-authored-by: Wendelin <[email protected]>
2025-01-09 09:26:34 +01:00
WendelinandGitHub 9ec9c7e56b Simplify dashboard background upload (#23633) 2025-01-09 09:25:09 +01:00
Paul BotteinandGitHub 788441499a Remove ! from backup translation (#23648) 2025-01-08 20:56:06 +00:00
Jan-Philipp BeneckeandGitHub 712817df65 Focus search input on integrations dashboard when using search shotcut (#23647)
Focus search input on integrations dashboard when using search shortcut
2025-01-08 20:29:51 +00:00
f8264e4500 Add backup translations (#23365)
* Add translations

* Add summary and progress translations

* Add backups and settings translations

* Add backups page translations

* Add onboarding card translations

* Add settings translations

* Add details translations

* Translate delete

* Add data picker translations

* Use local add-ons

* Add encryption key translations

* Add new, generate and upload translations

* Add translations for restore backup

* Fix ts issue

* Add missing keys

---------

Co-authored-by: Paul Bottein <[email protected]>
2025-01-08 21:05:28 +01:00
Norbert RittelandGitHub 50fa8dd269 Use ICU string for proper countdown via "1 minute" (#23636) 2025-01-08 17:41:02 +01:00
Petar PetrovandGitHub fc20716ff2 Decrease min_columns to 8 for hui-statistics-graph-card (#23639)
Increase min_columns to 8 for hui-statistics-graph-card
2025-01-08 17:39:19 +01:00
WendelinandGitHub c6aec2db7d Voice assistants config: Filter unavailable assists (#23637)
Filter unavailable assists from num of assist devices.
2025-01-08 17:22:43 +02:00
karwostsandGitHub f75f4b9733 Retain event data when moving/resizing schedule item (#23621)
* Retain event data when moving/resizing schedule item

* update from suggestion
2025-01-08 14:08:16 +00:00
b1acf9a057 Enable Statistics Graph card to integrate with Energy Dashboard (V2) (#23478)
* Simplify date subtraction

* Enable Statistics Graph card to integrate with Energy Dashboard

Adds boolean option `energy_date_selection` to Statistics Graph card. If
true, the graph will set its time range to that specified by an Energy
Date Picker card on the same dashboard, similar to the plots on the
Energy Dashboard.

* Revert UI addition

PR reviewer suggested it was too confusing, especially without
dynamically hiding the overridden days_to_show option.

* Remove boolean param energy_date_selection

and instead activate when collection_key is specified

* Revert "Remove boolean param energy_date_selection"

This reverts commit 95cebdbbe3.

* Don't assume !20903 has merged

* updates

* refresh when collection_key changes

---------

Co-authored-by: Andrew Reiter <[email protected]>
2025-01-08 15:36:19 +02:00
Norbert RittelandGitHub 221b3932ed Fix typo in "unprovison" key name and string for zwave (#23634)
* Fix typo in "unprovison" key name and string

* Fix "unprovison" in zwave_js-provisioned.ts
2025-01-08 15:35:07 +02:00
c50f701160 Show logbook component in more info for non-numeric values (#22997)
* if isNumeric ignore CONTINUOUS_DOMAINS

* use isNumeric  logic from history.ts

* removed check for stateObj.attributes.unit_of_measurement

* pass numericDevicesClasses to computeShowLogBookComponent

---------

Co-authored-by: Petar Petrov <[email protected]>
2025-01-08 08:17:39 +00:00
Norbert RittelandGitHub 85bebfc309 Fix two occurrences of lowercase "id" and two wrong uses of "an" (#23624)
Fix two lowercase "id" and two wrong uses of "an"
2025-01-07 21:04:05 +01:00
WendelinandGitHub 6e90afc5bd Improve background-editor background-attachment alignment (#23615) 2025-01-07 14:48:28 +01:00
Jan-Philipp BeneckeandGitHub e137e695ec Set fixed width for automation save dialog (#23618) 2025-01-07 14:13:19 +01:00
Petar PetrovandGitHub 7133dc5688 Fix tooltip scrolling (#23616) 2025-01-07 13:44:56 +01:00
Yosi LevyandGitHub 617480472e Minor RTL Fix (#23611)
Fixes
2025-01-07 11:59:25 +01:00
karwostsandGitHub 6ef799be60 Restore attributes removed from ha-entity-marker in ha-map (#23603)
* Restore attributes removed from ha-entity-marker in ha-map

* Use Reflect
2025-01-07 10:10:26 +02:00
Bram Kragten 9ff1ce3c96 Merge branch 'rc' 2025-01-06 18:13:49 +01:00
Norbert RittelandBram Kragten f53ac94e76 Add missing ui.panel.config.labels.headers.description (#23517)
The header "Description" for the Labels list only shows up as optional in a narrow view like on mobile.

This commit adds the missing string for proper localization.
2025-01-06 18:13:32 +01:00
Norbert RittelandBram Kragten 6d084813d5 Add missing localizations for Voice Assistants > Expose headers (#23452)
* Add missing localizations for Voice Assistants > Expose headers

* Add localizable labels to Icon and Remove columns

* Variant with all changes on a single line

* Prettier?

* Revert

* Line length limited to 80 chars
2025-01-06 18:13:31 +01:00
Bram Kragten 926f5e3cd8 Merge branch 'rc' 2025-01-06 18:10:30 +01:00
Bram Kragten befc650f81 Bumped version to 20250106.0 2025-01-06 18:10:12 +01:00
Bram Kragten 2019b8992e Fix tooltip more info (#23605) 2025-01-06 18:09:56 +01:00
Paul BotteinandBram Kragten 4d2e9f203f Improve error handling in backup status banner (#23604)
* Improve error handling in backup status banner

* Fix completion

* Fix loading

* Check attempt and completion date first
2025-01-06 18:09:55 +01:00
Bram Kragten 760d898de7 Remove backup toggle from supervisor addon page when update available (#23602) 2025-01-06 18:09:06 +01:00
Ville SkyttäandBram Kragten a755af96a6 Spelling and grammar fixes (#23598) 2025-01-06 18:06:42 +01:00
Norbert RittelandBram Kragten 046b90ae25 Add localizable "Filtering by config entry" for Entities and Devices (#23544)
* Add localizable "Filtering by config entry" to en.json

This commit adds two strings for localizing "Filtering by config entry" to the Entities panel and, referenced from there, to the Devices panel.

* Replace "Filtering by config entry" with localizable key

* Replace "Filtering by config entry" with localizable key

* Add missing comma

* Add missing }

* Add missing }
2025-01-06 18:06:41 +01:00
Norbert RittelandBram Kragten a3e8bcf848 Add ICU strings for proper singular / plural in Search fields (#23530)
It does not happen that often that the lists of devices, entities, helpers etc. are filtered down to a single item.

But in that case the labels currently use incorrect plural which is more irritating in some languages but also wrong in English.

This commit fixes this by adding ICU syntax to all six strings so these work properly in English and all derived translations.

For languages that need a different wording for `zero` this also helps translators in extending the ICU syntax for that case.
2025-01-06 18:05:49 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2cf1b7b6e6 Update dependency @octokit/auth-oauth-device to v7.1.2 (#23601)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-06 18:03:13 +01:00
Petar PetrovandBram Kragten 4b13dde92e Rename base sankey chart tag so it doesn't conflict with the custom card (#23600) 2025-01-06 18:00:38 +01:00
Bram KragtenandGitHub ebcee7680a Fix tooltip more info (#23605) 2025-01-06 17:56:38 +01:00
Paul BotteinandGitHub ffff7970f5 Improve error handling in backup status banner (#23604)
* Improve error handling in backup status banner

* Fix completion

* Fix loading

* Check attempt and completion date first
2025-01-06 17:30:37 +01:00
Bram KragtenandGitHub 2a2b6d33b8 Update bug_report.yml 2025-01-06 17:15:59 +01:00
Norbert RittelandGitHub 61ed889370 Add ICU strings for proper singular / plural in Search fields (#23530)
It does not happen that often that the lists of devices, entities, helpers etc. are filtered down to a single item.

But in that case the labels currently use incorrect plural which is more irritating in some languages but also wrong in English.

This commit fixes this by adding ICU syntax to all six strings so these work properly in English and all derived translations.

For languages that need a different wording for `zero` this also helps translators in extending the ICU syntax for that case.
2025-01-06 16:06:44 +01:00
Bram KragtenandGitHub 4cc95938c8 Remove backup toggle from supervisor addon page when update available (#23602) 2025-01-06 14:13:07 +01:00
Petar PetrovandGitHub 63c658e5b9 Rename base sankey chart tag so it doesn't conflict with the custom card (#23600) 2025-01-06 12:42:43 +00:00
Ville SkyttäandGitHub 3d1817a6b9 Spelling and grammar fixes (#23598) 2025-01-06 12:10:34 +01:00
Simon LamonandGitHub 8be2ca5392 Move python 3.12 to python 3.13 (#23585) 2025-01-06 09:31:13 +01:00
Norbert RittelandGitHub f043886273 Add localizable "Filtering by config entry" for Entities and Devices (#23544)
* Add localizable "Filtering by config entry" to en.json

This commit adds two strings for localizing "Filtering by config entry" to the Entities panel and, referenced from there, to the Devices panel.

* Replace "Filtering by config entry" with localizable key

* Replace "Filtering by config entry" with localizable key

* Add missing comma

* Add missing }

* Add missing }
2025-01-06 09:54:07 +02:00
Norbert RittelandGitHub ff75c89ed4 Add missing localizations for Voice Assistants > Expose headers (#23452)
* Add missing localizations for Voice Assistants > Expose headers

* Add localizable labels to Icon and Remove columns

* Variant with all changes on a single line

* Prettier?

* Revert

* Line length limited to 80 chars
2025-01-06 08:49:22 +02:00
Norbert RittelandGitHub a8803de6e3 Add missing ui.panel.config.labels.headers.description (#23517)
The header "Description" for the Labels list only shows up as optional in a narrow view like on mobile.

This commit adds the missing string for proper localization.
2025-01-06 08:47:37 +02:00
karwostsandGitHub e9f3f71be1 Option to hide create box on todo card (#23571) 2025-01-06 08:45:53 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
334c87b194 Update formatjs monorepo (#23592)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-05 21:02:31 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8db4a76bb9 Update dependency marked to v15.0.5 (#23591)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-05 20:59:42 +01:00
Bram Kragten 7aa2136c21 Merge branch 'rc' 2025-01-03 15:52:04 +01:00
Bram Kragten 47308e7b46 Add change of encryption key warning (#23570) 2025-01-03 15:51:39 +01:00
Bram KragtenandGitHub 87884ac747 Add change of encryption key warning (#23570) 2025-01-03 15:48:20 +01:00
Bram Kragten ec1fc09140 Bumped version to 20250103.0 2025-01-03 15:42:39 +01:00
Bram Kragten e2ad94469a Fix restoring backup during onboarding (#23569) 2025-01-03 15:41:56 +01:00
Bram Kragten 70541ec966 Fix restore progress check logic (#23568) 2025-01-03 15:41:55 +01:00
Bram Kragten 0bf64ee7f4 Backup onboarding: Show close button when welcome is skipped (#23567) 2025-01-03 15:41:54 +01:00
Bram Kragten 4ea0c83fbe Close restore dialog if done (#23566) 2025-01-03 15:41:53 +01:00
Bram Kragten d126e02747 fix error display upload backup (#23565) 2025-01-03 15:41:53 +01:00
Bram Kragten 102a9eeb61 Fix tabs subpage height on desktop (#23564)
fix tabs subpage height on desktop
2025-01-03 15:41:52 +01:00
Bram Kragten fc3e99e794 Update and add backup my links (#23556)
* Update and add backup my links
2025-01-03 15:41:51 +01:00
Bram Kragten 70953788cc Add back zopfli compression (#23555) 2025-01-03 15:41:50 +01:00
Bram KragtenandGitHub 4ffec51a5e Fix restoring backup during onboarding (#23569) 2025-01-03 15:26:50 +01:00
Bram KragtenandGitHub 71e10d5d8e Fix restore progress check logic (#23568) 2025-01-03 15:02:59 +01:00
Bram KragtenandGitHub cfbcb74ac2 Backup onboarding: Show close button when welcome is skipped (#23567) 2025-01-03 11:29:03 +01:00
Bram KragtenandGitHub 3ff5b832bc Close restore dialog if done (#23566) 2025-01-03 11:17:40 +01:00
Bram KragtenandGitHub 1faf024c5b fix error display upload backup (#23565) 2025-01-03 11:17:27 +01:00
Bram KragtenandGitHub 6d48e725c7 Fix tabs subpage height on desktop (#23564)
fix tabs subpage height on desktop
2025-01-03 11:08:00 +01:00
Bram KragtenandGitHub 052744e3d1 Update and add backup my links (#23556)
* Update and add backup my links
2025-01-02 16:18:34 +00:00
Bram KragtenandGitHub 2945a7b701 Add back zopfli compression (#23555) 2025-01-02 16:54:35 +01:00
Bram Kragten 6c9df587e7 Bumped version to 20250102.0 2025-01-02 16:18:11 +01:00
Bram Kragten 8f58681d83 always zoom timeline charts on x axis (#23554) 2025-01-02 16:17:04 +01:00
Bram Kragten 4a16d9bd44 Add show encryption key dialog (#23552) 2025-01-02 16:17:03 +01:00
Bram Kragten fcc9da6d85 Backup with db requires config, disabled next if no data is selected (#23549) 2025-01-02 16:17:02 +01:00
Bram Kragten e03dc2c382 Move local location backup setting (#23548) 2025-01-02 16:17:01 +01:00
Bram Kragten be967940a2 Add warning when no backup location is selected (#23550)
* Add warning when no backup location is selected

* Move to bottom
2025-01-02 16:16:04 +01:00
Bram Kragten 64ad37ed6a Update change encryption key dialog (#23551) 2025-01-02 16:15:35 +01:00
Bram Kragten 01bc45c78b Backup text updates (#23547) 2025-01-02 16:13:39 +01:00
MarcinandBram Kragten 2206644c47 Fix copy on button to clear the selected background image (#23546) 2025-01-02 16:13:38 +01:00
Bram Kragten 486038c426 Add space for the fab on datatable without tabs (#23545)
Add space for the fab on backups datatable
2025-01-02 16:13:38 +01:00
Sören BeyeandBram Kragten 711f721007 Changes to the valueText should also rescale ha-gauge text (#23536)
Changes to the valueText should also recenter ha-gauge text
2025-01-02 16:13:37 +01:00
PhilippandBram Kragten 3b8bc242fe Fix media management delete button misalignment (#23534) 2025-01-02 16:13:36 +01:00
karwostsandBram Kragten 7e80eed003 Display an error if saving new script times out (#23527)
* Display an error if saving new automation times out

* changes

* update

* string tweak

* Fix save failed for scripts
2025-01-02 16:13:35 +01:00
Bram Kragten a7ef498d75 Handle no cloud subscription better in backups (#23523) 2025-01-02 16:13:34 +01:00
Bram KragtenandGitHub caf8fdf4c7 Add show encryption key dialog (#23552) 2025-01-02 16:12:31 +01:00
Bram KragtenandGitHub f19ca78b89 always zoom timeline charts on x axis (#23554) 2025-01-02 16:11:50 +01:00
Bram KragtenandGitHub 0fba0e2850 Move local location backup setting (#23548) 2025-01-02 16:04:17 +01:00
PhilippandGitHub 15606a5a90 Fix media management delete button misalignment (#23534) 2025-01-02 15:03:04 +00:00
Sören BeyeandGitHub c7df147908 Changes to the valueText should also rescale ha-gauge text (#23536)
Changes to the valueText should also recenter ha-gauge text
2025-01-02 15:56:03 +01:00
Bram KragtenandGitHub 031658eef4 Match UI with core and don't allow restore config without db and vice … (#23553)
Match UI with core and dont allow restore config without db and vice versa
2025-01-02 15:53:57 +01:00
Bram KragtenandGitHub fa672ffbba Backup with db requires config, disabled next if no data is selected (#23549) 2025-01-02 15:38:11 +01:00
Bram KragtenandGitHub 34bcd5e71c Backup text updates (#23547) 2025-01-02 15:35:22 +01:00
Bram KragtenandGitHub 73854efa57 Update change encryption key dialog (#23551) 2025-01-02 15:13:53 +01:00
Bram KragtenandGitHub a371b842da Add warning when no backup location is selected (#23550)
* Add warning when no backup location is selected

* Move to bottom
2025-01-02 15:13:42 +01:00
karwostsandGitHub b439c5d213 Display an error if saving new script times out (#23527)
* Display an error if saving new automation times out

* changes

* update

* string tweak

* Fix save failed for scripts
2025-01-02 13:46:36 +01:00
MarcinandGitHub 04a9c67112 Fix copy on button to clear the selected background image (#23546) 2025-01-02 13:44:34 +01:00
Bram KragtenandGitHub 012bd0714c Add space for the fab on datatable without tabs (#23545)
Add space for the fab on backups datatable
2025-01-02 13:44:04 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4e10d140d9 Update Yarn to v4.6.0 (#23532)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-01 15:46:25 +01:00
Norbert RittelandGitHub 8df67b8eb1 Device info: Add localizable string for "Set up voice assistant" (#23533)
* Add localizable string for "Set up voice assistant" to en.json

* Replace "Set up voice assistant" with localizable string
2025-01-01 15:45:31 +01:00
Bram KragtenandGitHub fb09eba831 Handle no cloud subscription better in backups (#23523) 2024-12-31 22:39:50 +01:00
Bram Kragten a5de6ff3af Bumped version to 20241231.0 2024-12-31 20:23:30 +01:00
Bram Kragten 806cc2c608 Fix automation traces (#23524) 2024-12-31 20:21:41 +01:00
Bram Kragten 48a160f057 Use last completed automatic backup time instead of last available ba… (#23522)
* Use last completed automatic backup time instead of last available backup

* Update ha-backup-overview-summary.ts

* Update src/panels/config/backup/components/overview/ha-backup-overview-summary.ts

* Update ha-config-backup-overview.ts
2024-12-31 20:21:40 +01:00
Bram Kragten c697843c34 Update ha-backup-overview-summary.ts 2024-12-31 20:21:06 +01:00
Bram Kragten 317a2f5b21 Fix password incorrect check when restoring backup (#23525) 2024-12-31 20:18:15 +01:00
karwostsandBram Kragten 220011f15f Display an error if saving new automation times out (#23518) 2024-12-31 20:16:53 +01:00
karwostsandGitHub 35faeb651b Display an error if saving new automation times out (#23518) 2024-12-31 19:49:45 +01:00
Bram KragtenandGitHub 8daea5b565 Use last completed automatic backup time instead of last available ba… (#23522)
* Use last completed automatic backup time instead of last available backup

* Update ha-backup-overview-summary.ts

* Update src/panels/config/backup/components/overview/ha-backup-overview-summary.ts

* Update ha-config-backup-overview.ts
2024-12-31 18:14:16 +01:00
Bram KragtenandGitHub cd69c4c361 Fix password incorrect check when restoring backup (#23525) 2024-12-31 17:48:34 +01:00
Bram KragtenandGitHub eaab47a667 Fix automation traces (#23524) 2024-12-31 17:02:57 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
d08a28ab9e Update dependency lint-staged to v15.3.0 (#23521)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-31 14:36:01 +01:00
Bram Kragten e8af454705 Bumped version to 20241230.0 2024-12-30 19:44:56 +01:00
Petar PetrovandBram Kragten 713b5c7cf7 Add default border-radius values to .disabled-bar 2024-12-30 19:42:54 +01:00
Petar PetrovandBram Kragten 8b17286fb6 Revert "Automation/Script editor border-radius fix (#23267)"
This reverts commit e9b2a83411.
2024-12-30 19:42:40 +01:00
Bram Kragten f3705a7e1d Fix copy encryption key (#23515) 2024-12-30 19:41:01 +01:00
Bram Kragten d0123b2cce Fix overflow of backup agents (#23514) 2024-12-30 19:41:00 +01:00
Bram Kragten 884c22f92b Add fallback for devices without name (#23513) 2024-12-30 19:40:59 +01:00
Simon LamonandBram Kragten 700690474c Add script hide picker again (#23512) 2024-12-30 19:40:58 +01:00
Simon LamonandBram Kragten 4686808e53 Fix manual backup disabled with all backup locations (#23511) 2024-12-30 19:40:57 +01:00
Jan-Philipp BeneckeandBram Kragten cf1df712e4 Fix dialog header (#23507) 2024-12-30 19:40:56 +01:00
Timothy KistandBram Kragten c338e9cb30 Remove space at end of link from HAOS storage tip (#23492) 2024-12-30 19:40:55 +01:00
Petar PetrovandBram Kragten 8e8fd89d56 Fix custom DNS saving (#23477) 2024-12-30 19:40:55 +01:00
Petar PetrovandBram Kragten f1c360c550 Add getGridOptions to history and statistics graph cards (#23476) 2024-12-30 19:40:54 +01:00
Simon LamonandBram Kragten b429ecc376 Calendar trigger: Handle optional offset better (#23474)
Calendar empty offset
2024-12-30 19:39:50 +01:00
Petar PetrovandBram Kragten 6d8422513a Button to reset chart zoom (#23469) 2024-12-30 19:39:49 +01:00
Petar PetrovandBram Kragten cb0a48265a Fix helper dialog close and add failsafe for similar cases (#23468) 2024-12-30 19:39:48 +01:00
Simon LamonandBram Kragten c9082724a8 View background settings: Change transparancy to opacity (#23450) 2024-12-30 19:39:47 +01:00
Bram KragtenandGitHub 455cd0485e Fix overflow of backup agents (#23514) 2024-12-30 17:43:05 +01:00
Bram KragtenandGitHub f5ec2dcbe2 Fix copy encryption key (#23515) 2024-12-30 17:42:31 +01:00
Bram KragtenandGitHub 6b039a1073 Add fallback for devices without name (#23513) 2024-12-30 17:06:26 +01:00
Simon LamonandGitHub 94c03be7ae Add script hide picker again (#23512) 2024-12-30 16:21:22 +01:00
Simon LamonandGitHub 4bf0a23513 Fix manual backup disabled with all backup locations (#23511) 2024-12-30 11:05:00 +00:00
Bram KragtenandGitHub f01388473a Revert "Automation/Script editor border-radius fix (#23267)" (#23475) 2024-12-30 11:55:44 +01:00
Petar PetrovandGitHub 1d0c3da294 Add getGridOptions to history and statistics graph cards (#23476) 2024-12-30 11:54:00 +01:00
Petar PetrovandGitHub be849887a1 Button to reset chart zoom (#23469) 2024-12-30 11:52:52 +01:00
Petar PetrovandGitHub e1a6f6f0e3 Fix helper dialog close and add failsafe for similar cases (#23468) 2024-12-30 11:51:21 +01:00
Simon LamonandGitHub d0327915db View background settings: Change transparancy to opacity (#23450) 2024-12-30 11:49:08 +01:00
Jan-Philipp BeneckeandGitHub 351d318c89 Fix dialog header (#23507) 2024-12-30 11:12:31 +01:00
Timothy KistandGitHub 7d1ca2acf0 Remove space at end of link from HAOS storage tip (#23492) 2024-12-29 19:36:24 +01:00
Paulus Schoutsen fea83c0873 Bumped version to 20241229.0 2024-12-29 18:20:14 +00:00
karwostsandPaulus Schoutsen d3b4014182 Fix backups fab spacer (#23490) 2024-12-29 18:19:07 +00:00
Jan-Philipp BeneckeandPaulus Schoutsen 5c7fe04562 Fix header of config entry system options dialog (#23455)
Fix config entry system options dialog header
2024-12-29 18:19:06 +00:00
karwostsandPaulus Schoutsen 44e26c925b Fix dialog-person-detail tracker selection (#23454) 2024-12-29 18:19:05 +00:00
Jan-Philipp BeneckeandPaulus Schoutsen 205dd3f968 Fix chip spacing in automation/script save dialog (#23451) 2024-12-29 18:19:04 +00:00
Paulus Schoutsen 86133a0696 Fix typo in backups overview (#23446) 2024-12-29 18:19:03 +00:00
Bram KragtenandPaulus Schoutsen 2105db9104 change default of backup actions card feature to no backup (#23444) 2024-12-29 18:19:02 +00:00
karwostsandGitHub 49c377b1c4 Fix backups fab spacer (#23490) 2024-12-28 17:00:28 +00:00
Norbert RittelandGitHub 3fd3c8003a History: Improve explanation of selections by including labels as 4th option (#23479)
Improve explanation of selections by including labels as 4th option

This commit adds labels as the 4th option for data sources in history and the error message when you select 'Add current view as card' in that state from the overflow menu.
2024-12-27 20:03:18 +01:00
Petar PetrovandGitHub ccbb2704d1 Fix custom DNS saving (#23477) 2024-12-27 13:50:55 +00:00
Norbert RittelandGitHub 34218f08ef Replace most occurrences of "click" for touch-friendly wording (#23471)
* Replace most occurrences of "click" for touch-friendly wording

Home Assistant should avoid the term "click" or "clicking" as it can be used on (mobile) touch screen devices or with non-mechanical touch pads as well.

This commit changes most occurrences in en.json to either use "select" or "press" depending on context.

For "when you click on log out" it can be dropped completely.

* Change "select" to "press" for two more
2024-12-27 14:42:38 +01:00
Simon LamonandGitHub cf91e6a2a3 Calendar trigger: Handle optional offset better (#23474)
Calendar empty offset
2024-12-27 15:29:02 +02:00
Petar Petrov ab9759c6dd Add default border-radius values to .disabled-bar 2024-12-27 13:47:10 +01:00
Petar Petrov 95adbfcc12 Revert "Automation/Script editor border-radius fix (#23267)"
This reverts commit e9b2a83411.
2024-12-27 13:44:05 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1b9cbe434d Update dependency rspack-manifest-plugin to v5.0.3 (#23472)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-27 14:18:50 +02:00
918aa562c5 Improve description of Suspend connection option (#23470)
* Improve description of Suspend connection option

This removes the use of "we" which is kind of off as no person is involved in the process.

It also moves the word "suspend" in the headline and better explains the purpose.

* add comma

---------

Co-authored-by: Petar Petrov <[email protected]>
2024-12-27 11:27:06 +00:00
2ff0cb58bc Fix Energy-Dashboard unexpected Period Calculation (#23458)
* if not whole month, better use days for the period

* fix Type undefined error

* Update src/data/energy.ts

Co-authored-by: Petar Petrov <[email protected]>

---------

Co-authored-by: Petar Petrov <[email protected]>
2024-12-27 11:35:00 +02:00
Norbert RittelandGitHub a94460a0c7 Replace "Show settings" with just "Settings" for automations (#23466)
For automations / scenes / scripts the menu item to open the settings dialog is currently "Show settings".

The use of "Show" is misleading here as this usually pairs with "Hide". It's also inconsistent as for all other settings in Home Assistant the menu items, buttons or tooltips don't use "show".

Also note that it's just "Information" or "Traces" for similar other items in the same menu.
2024-12-27 10:40:23 +02:00
ildar170975andGitHub 60e57748f7 developer-tools-template: allow "select all" for "rendered" (#23456)
* Update developer-tools-template.ts

* Update developer-tools-template.ts

* remove extensions
2024-12-27 08:49:31 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
0ecb8a6866 Update dependency @codemirror/language to v6.10.8 (#23461)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-27 08:41:42 +02:00
Jan-Philipp BeneckeandGitHub d9dfea938e Fix header of config entry system options dialog (#23455)
Fix config entry system options dialog header
2024-12-26 16:18:54 +02:00
Norbert RittelandGitHub 6fe4f94d55 Fix misleading use of "hidden" and "not shown" for disabled entities (#23449)
* Fix misleading use of "hidden" for disabled entities

Entities can be either hidden (by turning off "Visible") or disabled (by turning off "Enabled"),

The stings file uses the very misleading key "hidden_entities" for the count of disabled entities plus the words "not shown" which also pair with "hidden" instead of "disabled".

This commit fixes this by using "disabled" for both the key and in the link shown here.

* Replace "hidden_entities" with "disabled_entities"

Entities can be either hidden (by turning off "Visible") or disabled (by turning off "Enabled"),

The strings file uses the very misleading key "hidden_entities" for the count of disabled entities plus the words "not shown" which also pair with "hidden" instead of "disabled".

This commit fixes this by using "disabled" for the key name as well.

* Re-add accidentally deleted comma
2024-12-26 16:16:50 +02:00
Norbert RittelandGitHub 01bec32fd6 Improve explanation of passive zones (#23443)
Currently the explanation for passive zones says that they "are not used as location for device trackers" which is misleading and does not fit the second sentence that says: "This is useful if you just want to use it for automations.

This commit clarifies that by changing to "not shown as" and fixes the plural / singular mismatch between the two sentences.
2024-12-26 16:14:53 +02:00
karwostsandGitHub 5453d6f7f5 Fix dialog-person-detail tracker selection (#23454) 2024-12-25 18:26:57 +00:00
Jan-Philipp BeneckeandGitHub a0799a409b Fix chip spacing in automation/script save dialog (#23451) 2024-12-25 11:56:26 +01:00
Bram KragtenandGitHub 704e7f279f change default of backup actions card feature to no backup (#23444) 2024-12-25 01:57:05 +01:00
Norbert RittelandGitHub 1daaf50773 Add missing localization for "Deselect all" button in (#23448)
* Add missing localization for "Deselect all" button to en.json

* Add code for localizing "Deselect all" to dialog-media-manage.ts
2024-12-25 01:56:26 +01:00
Paulus SchoutsenandGitHub 54eb7d169c Fix typo in backups overview (#23446) 2024-12-24 19:39:33 +01:00
Bram Kragten 33b410dea0 Update ha-backup-overview-summary.ts 2024-12-24 17:31:02 +01:00
Bram Kragten c05054e4ff Merge branch 'rc' 2024-12-24 16:24:59 +01:00
Bram Kragten f416b1b5da Merge branch 'dev' into rc 2024-12-24 16:23:46 +01:00
Bram Kragten 6a345d86a6 Bumped version to 20241224.0 2024-12-24 16:23:30 +01:00
Bram KragtenandGitHub a04e9b68bd Fixes for device quick bar (#23441)
Fixes #23432 and Fixes #23431
2024-12-24 17:22:06 +02:00
Bram KragtenandGitHub f7dbd38c2e Sort addons in backup by name (#23442)
* Sort addons in backup by name

* Update ha-backup-addons-picker.ts
2024-12-24 14:44:27 +00:00
Bram KragtenandGitHub 7150016375 fix missing credentials step (#23440) 2024-12-24 15:26:43 +01:00
Bram KragtenandGitHub c3507abd9c Guard for cloud integration not loaded (#23439) 2024-12-24 15:17:40 +01:00
Bram KragtenandGitHub fc8a8b28c2 await copy clipboard (#23438) 2024-12-24 15:15:17 +01:00
Bram KragtenandGitHub 637fe37ef4 Change emergency kit format (#23428)
* Change emergency kit format

* Update src/panels/config/backup/ha-config-backup-settings.ts

* review
2024-12-24 13:55:38 +00:00
Bram KragtenandGitHub 657bfc82ca Backup text updates (#23437)
* Backup text updates

* Update ha-config-backup-backups.ts
2024-12-24 13:50:03 +00:00
Bram KragtenandGitHub 44423812f4 Set defaults for background settings, restore old behavior (#23436)
Fixes https://github.com/home-assistant/frontend/issues/23421
2024-12-24 14:48:28 +01:00
Bram KragtenandGitHub a6a76155e5 Fix chart tooltips (#23435) 2024-12-24 08:47:40 -05:00
Bram KragtenandGitHub 8c18d816b6 Fix banner when first backup was unsuccessful (#23430)
* Fix banner when first backup was unsuccesful

* Update ha-backup-config-agents.ts

* remove fix widths
2024-12-24 08:45:43 -05:00
Bram KragtenandGitHub 361caafab9 fix saving new automation/script (#23433) 2024-12-24 08:44:23 -05:00
Jan-Philipp BeneckeandGitHub 94f679e387 Add area to automation/script save dialog (#23416)
Add area chip to automation/script save dialog
2024-12-24 11:21:03 +01:00
Bram Kragten 85bd6432a9 Update hui-generic-entity-row.ts 2024-12-24 10:19:38 +01:00
00c1dfa1d2 Add missing localizations to ha-script-trace.ts (#23418)
Co-authored-by: Bram Kragten <[email protected]>
2024-12-24 09:55:09 +01:00
Norbert RittelandGitHub fb72e1fb9c Wrong lowercase and adjacent space in dialog-media-manage.ts (#23372) 2024-12-24 09:54:26 +01:00
Yosi LevyandGitHub 152d2d0bdf Rtl fixes (#23425) 2024-12-24 09:42:26 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e06aa52a21 Update dependency ua-parser-js to v1.0.40 (#23427)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-24 10:17:47 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
49aa935490 Update dependency @braintree/sanitize-url to v7.1.1 (#23417)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-24 10:07:34 +02:00
Norbert RittelandGitHub cead1e355d Fix missing localization of "Message" field in Cloud > Try text-to-speech dialog (#23422)
* Add missing "Message" string for cloud tts dialog to en.json

The field label for the Message field in the Cloud > Try text-to-speech dialog is missing localization.

This commit adds the necessary localizable string.

* Update dialog-cloud-tts-try.ts to include localizable string
2024-12-24 10:05:31 +02:00
Norbert RittelandGitHub edc99b5d6c Lovelace - Resources: Add localizable string for "Delete" column header (#23404) 2024-12-23 21:39:10 +01:00
Simon LamonandGitHub b38963b214 Fix allow-svg attribute (#23415) 2024-12-23 21:37:24 +01:00
Charles GarwoodandGitHub 0d99531855 Grammar fix for assign category dialog (#23412) 2024-12-23 21:36:41 +01:00
Simon LamonandGitHub 9cde7637ca Weekly backup on tuesday: spelling mistake (#23410) 2024-12-23 21:36:17 +01:00
Paul BotteinandGitHub edc08994b3 Format scheduled backup time using locale settings (#23407) 2024-12-23 17:40:12 +01:00
Paul BotteinandGitHub fc0907ef72 Fix skeleton in dark mode (#23406)
* Fix skeleton in dark mode

* Fix
2024-12-23 15:23:44 +00:00
Bram Kragten bdb28246fc Update ha-config-backup-overview.ts 2024-12-23 16:16:22 +01:00
Bram KragtenandGitHub 0582798cde Fix backup summary content not centered (#23405) 2024-12-23 15:07:07 +00:00
Bram KragtenandGitHub e7d9032cc4 20241223.1 (#23402) 2024-12-23 15:38:28 +01:00
Simon LamonandBram Kragten 331385794c View background settings: Change radio buttons to dropdowns (#23403) 2024-12-23 15:30:46 +01:00
Simon LamonandGitHub 8e71bd7e82 View background settings: Change radio buttons to dropdowns (#23403) 2024-12-23 15:30:17 +01:00
Bram Kragten 664cc9b33d Bumped version to 20241223.1 2024-12-23 15:26:30 +01:00
6757cda7f0 Text changes backups (#23397)
* Text changes backups

* Update dialog-change-backup-encryption-key.ts

* Update ha-backup-config-agents.ts

* Update header margin

---------

Co-authored-by: Paul Bottein <[email protected]>
2024-12-23 14:26:18 +00:00
Bram KragtenandGitHub 97e6313890 Min height list items backups detail smaller (#23398) 2024-12-23 15:08:00 +01:00
Norbert RittelandGitHub 3cfba7b960 Replace "State" with "Status" for consistency with Entity picker (#23399)
The Filters pane for entities contains a "Status" section which gives several options to narrow down the list of entities, including "Disabled".

For devices, however, the matching selector is currently labelled "State", although it has "Disabled" as the only choice.

This conflicts with the device / entity state definition in HA and is inconsistent, getting worse in translations.
2024-12-23 15:06:50 +01:00
Paul BotteinandGitHub 5fb384ad31 Backup status banner improvement (#23400)
* Improve overdue backups and don't consider backup with failed agents as success

* Improve margin and loader

* Improve margin

* Show agent name if only one off site location is configured
2024-12-23 15:06:36 +01:00
Bram KragtenandGitHub 76cb9ce807 Change sidebar header color (#23401) 2024-12-23 14:04:19 +00:00
Norbert RittelandGitHub 0e61596f5c Replace "Add" button with "Create" in Create floor / area dialogs (#23395) 2024-12-23 14:25:14 +01:00
Bram KragtenandGitHub 061b6af812 Fix search bar styling (#23396) 2024-12-23 14:23:51 +01:00
Bram KragtenandGitHub fd95ab5518 Revert "Bump softprops/action-gh-release from 2.1.0 to 2.2.0" (#23393)
Revert "Bump softprops/action-gh-release from 2.1.0 to 2.2.0 (#23300)"

This reverts commit 65458538a7.
2024-12-23 11:59:05 +00:00
Bram KragtenandGitHub a7cacbbbe6 20241223.0 (#23392) 2024-12-23 12:23:14 +01:00
Bram Kragten 5a0225b86a fix merge 2024-12-23 12:07:28 +01:00
Bram Kragten 8b79fc5848 Merge branch 'master' into dev 2024-12-23 12:00:53 +01:00
Bram Kragten 5513da51a8 Bumped version to 20241223.0 2024-12-23 11:58:57 +01:00
Bram KragtenandGitHub 56f9165323 Move order of restore around (#23391) 2024-12-23 10:56:54 +00:00
Paul BotteinandGitHub 6afcd4d770 Add icon and description for network mount locations (#23390)
* Use custom icon and name for network storage

* Add note to local backup location dialog
2024-12-23 11:53:31 +01:00
Bram KragtenandGitHub 52e1f9315e Fix selection mode backups on mobile (#23389)
* Fix selection mode backups on mobile

* Update ha-config-backup-details.ts

* unselect when deleting
2024-12-23 11:45:23 +01:00
Steve RepsherandGitHub a00f645921 Revert "Add node_modules cache in ci (#22826)" (#23370)
This reverts commit 4655929fed.
2024-12-23 11:27:04 +01:00
Bram KragtenandGitHub faf3bb2644 Swap setup python and verfify version (#23388) 2024-12-23 10:09:38 +01:00
Bram KragtenandGitHub 31d98ec935 Always show HA toggle in backup data settings (#23387) 2024-12-23 09:37:50 +01:00
Mark StewardandGitHub 7d0a269f1b Use null instead of default, to avoid stomping on netmask (#23382) 2024-12-23 09:22:11 +01:00
karwostsandGitHub 147098f0fd ha-form-multi_select accessibility improvements (#21023) 2024-12-23 09:21:27 +01:00
dependabot[bot]andGitHub d4cbfd9583 Bump actions/upload-artifact from 4.4.3 to 4.5.0 (#23386) 2024-12-23 08:33:48 +01:00
Norbert RittelandGitHub a35ba38a2d Make quotation marks localizable in Add badge dialog (#23383)
* Add quotation and question marks to en.json for localization

Currently the quotation marks are hard-coded. This commit puts them into the strings file and adds the missing question mark at the end.

* Remove hard-coded quotation marks from hui-dialog-create-badge.ts
2024-12-23 06:38:18 +01:00
8fa36c8226 Add stream preview element to generic camera (#21463)
Co-authored-by: Bram Kragten <[email protected]>
2024-12-22 17:14:29 +00:00
karwostsandGitHub 5ccc3365fe Show all disabled helpers in config/helpers (#23377) 2024-12-22 18:04:16 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
dcf97d4667 Update dependency @codemirror/view to v6.36.1 (#23381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-22 17:25:32 +01:00
Petar PetrovandGitHub 4b7acbb766 Energy Sankey chart card (#23002)
* WIP: sankey chart

* basic sankey chart

* dynamic size of last section

* basic energy-sankey card

* add floors, areas & passthrough

* order by floor level, add colors & exess energy nodes

* tweak nodes

* add tooltips and better layout and responsiveness

* WIP vertical layout

* fix height when not in sections

* handle labels in vertical mode

* remove from energy dashboard for now

* lint fix

* PR comments

* use ResizeController instead of ResizeObserver

* look up device area

* code clarity improvement
2024-12-22 17:25:13 +01:00
7900eb4054 View background settings (#23133)
Co-authored-by: karwosts <[email protected]>
Co-authored-by: Bram Kragten <[email protected]>
2024-12-22 16:19:54 +00:00
Bram Kragten 53caef8f92 Update developer-tools-statistics.ts 2024-12-22 17:06:46 +01:00
Jan-Philipp BeneckeandGitHub 14bebc76b0 Add toggle switch for exposing of new entities to Assist (#23127) 2024-12-22 16:06:13 +00:00
Norbert RittelandGitHub 8b6382448f Use "limit" instead of "mode" for Numeric state trigger and condition (#23360) 2024-12-22 17:00:48 +01:00
5cd6f22e99 Add category and labels to automation/script save and rename dialog (#23240)
Co-authored-by: Bram Kragten <[email protected]>
2024-12-22 16:59:04 +01:00
WendelinandGitHub 523c38a83e Add tests for common/config (#23349)
* Add tests for common/config

* Revert version dev hook
2024-12-22 16:05:17 +01:00
WendelinandGitHub 0a28bbdd72 Improve picture select crop error handling (#23352)
* Improve crop editor error handling

* Add tests for data/image_upload

* Fix tests imports
2024-12-22 15:45:37 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e58bef7795 Update dependency globals to v15.14.0 (#23375)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-21 15:36:45 +00:00
Bram KragtenandGitHub d403532fc1 Fix link on all backups button (#23374) 2024-12-21 16:35:00 +01:00
karwostsandGitHub 4de8b562bd Ability to show map icons for geolocation sources (#23247) 2024-12-21 16:29:53 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
31e85836f0 Update CodeMirror (#23369)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-21 16:29:06 +01:00
Franck NijhofandGitHub e1359781a5 Add state completion support for Assist Satellite entities (#23371) 2024-12-21 10:17:59 +01:00
Paul BotteinandGitHub 379bc3a4e3 Add links to backup overview settings (#23368) 2024-12-20 21:12:05 +01:00
Bram KragtenandGitHub b3b0006ba3 Filter backups by type (#23366)
* filter backups by type

* Add filter pane

* Make sure we show all when you click show all
2024-12-20 20:52:11 +01:00
Paul Bottein 33df805168 Revert "Add overview settings link to backup settings sections"
This reverts commit fad435ea10.
2024-12-20 18:21:24 +01:00
Paul Bottein fad435ea10 Add overview settings link to backup settings sections 2024-12-20 18:20:20 +01:00
Bram KragtenandGitHub b35f9944ea Change backup restore flow (#23354)
* Change backup restore flow

* adapt and finish

* Update dialog-restore-backup.ts
2024-12-20 16:39:44 +01:00
Paul BotteinandGitHub dc799bf691 Don't allow user to choose cloud if ha settings is not set (#23364) 2024-12-20 16:39:35 +01:00
Simon LamonandGitHub 1f7929bb3d Rspack v1.1.8 (#23363) 2024-12-20 16:20:25 +01:00
Paul BotteinandGitHub fb228dc918 Multiple backup adjustments (#23361)
* Always show welcome screen during onboarding

* Fix content overflow in dialog

* Rename copies to backups, drop 7 days

* Remove including new and learn more button

* Some other fixes

* Allow changing default local location from new backup page

* Dont show addon version in settings and onboarding

* Add margin for ios

* Display old encryption key before change

* Refactor descriptipn
2024-12-20 15:52:55 +01:00
WendelinandGitHub c66f5e2d8a Fix spacing of markdown textfield helpers (#23359) 2024-12-20 15:41:09 +01:00
ildar170975andGitHub d71b29d089 border-radius fixes for state-badge (#23212) 2024-12-20 15:06:03 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Simon Lamon
6b230b6142 Lock file maintenance (#23337)
* Lock file maintenance

* Resolve codemirror in current version

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Simon Lamon <[email protected]>
2024-12-20 13:16:23 +00:00
Paul BotteinandGitHub c532a9023a Revert remove hass debug connection in dev (#23356) 2024-12-20 14:05:33 +01:00
Paul BotteinandGitHub ecc704e6ac Fix duplicate agents ids during onboarding (#23357)
Fix duplicate agents ids during onboardind
2024-12-20 13:04:32 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
907299b139 Update dependency @codemirror/language to v6.10.7 (#23350)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-20 13:02:03 +01:00
WendelinandGitHub 37aa2bd869 Improve onboarding backup restore (#23340)
* Improve onboarding backup restore

* Fix onboarding backup restore

* Fix restoring value in onboarding-restore-backup
2024-12-20 12:13:16 +01:00
Petar PetrovandGitHub f1f53b9f24 Set default netmask when parsing an address (#23348) 2024-12-20 11:28:12 +01:00
Paul BotteinandGitHub 49d9c7f392 Update icons for backups (#23351) 2024-12-20 11:27:49 +01:00
karwostsandGitHub 65860a3142 Allow selecting previously uploaded image for picture upload (#23072) 2024-12-20 10:55:24 +01:00
ildar170975andGitHub 3b52d3d302 Fix visibility for shown entities on device card (2) (#23198) 2024-12-20 10:44:57 +01:00
Steve RepsherandGitHub 2fe6203eae Remove leftover packages from Rollup builds (#23344) 2024-12-19 15:16:08 -05:00
Paul BotteinandGitHub 92b02e39c9 Add overview summary for backups (#23343) 2024-12-19 19:54:50 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b693fd1edc Update dependency @rsdoctor/rspack-plugin to v0.4.12 (#23341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-19 17:21:23 +02:00
b84e00b312 Unit Test for shiftDateRange (#23324)
Unit Test for Pull 23228

Co-authored-by: Wendelin <[email protected]>
2024-12-19 15:42:31 +01:00
karwostsandGitHub 973fd51639 Sortable energy individual devices (#23330)
* Sortable energy individual devices

* change key fn
2024-12-19 15:51:56 +02:00
Simon LamonandGitHub e0494ccb57 Introduce a target picker for the logbook card (#23007)
* target picker logbookcard wip

* migration

* fixes

* change property

* Update src/panels/lovelace/cards/hui-logbook-card.ts

* prettier
2024-12-19 14:41:32 +01:00
Paul BotteinandGitHub 95559cbc2a Setup backup overview page (#23331)
* Add overview page

* Remove configure button

* Reorganize files

* Add backups summary

* Add settings overview

* Fixes

* Update wording

* Setup onboarding before creating a backup
2024-12-19 13:37:05 +00:00
Paul BotteinandGitHub 3da13b823a Only show local addons folder settings if at least one addon is local (#23333)
Only show local addons folder settings if an addon is local
2024-12-19 14:29:35 +01:00
Paul BotteinandGitHub c022871ead Add none option for backup addons (#23335) 2024-12-19 11:26:17 +01:00
MimiandGitHub c4fcbf0613 Optimize the style of hui-energy-period-selector (#23332) 2024-12-19 07:29:32 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
79921745a8 Update dependency magic-string to v0.30.17 (#23339)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-19 09:09:24 +02:00
Paul BotteinandGitHub 40a4255045 Rename backup strategy (#23329)
* Rename backup strategy

* Feedback
2024-12-18 18:02:42 +01:00
Petar PetrovandGitHub 2d902a0688 Fix integrations dialog (#23328)
* Fix integrations dialog

* tweak comments
2024-12-18 15:53:30 +01:00
Petar PetrovandGitHub 8a46ef6168 Improve chart zoom (#23326) 2024-12-18 15:50:34 +01:00
karwostsandGitHub ba3d37b550 Fix costs in energy csv download (#23322) 2024-12-18 08:46:55 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
88d0247217 Update dependency marked to v15.0.4 (#23323)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-18 08:33:06 +02:00
Krisjanis LejejsandGitHub 1c076d22a6 Add MFA login flow support for cloud component (#23188)
* Add MFA login flow support for cloud component

* Update MFA login in voice assistant setup flow

* Sync errors with core

* Add translations to the TOTP dialog
2024-12-17 20:55:07 +01:00
JulianandGitHub 0ecdae2551 Fix inconsistency in Thermostat and Humidifier card names (#22416) 2024-12-17 19:15:35 +01:00
6f8ba6afac Date-range-picker Design to use Prev and Next Buttons in History and Logbook on mobiles (#23228)
* date-range-picker prev and next design

* correct width and margins

* logbook width correction

* Update src/components/ha-date-range-picker.ts

Co-authored-by: Wendelin <[email protected]>

* Update src/components/ha-date-range-picker.ts

Co-authored-by: Wendelin <[email protected]>

* Update src/components/ha-date-range-picker.ts

Co-authored-by: Wendelin <[email protected]>

* changes from comments

* share date-range logic for energy and history / logbook

* switch to energy-dashboard timespan-function

* changed shiftDateRange to differenceInMilliseconds

* used gap instead margin-right

---------

Co-authored-by: Wendelin <[email protected]>
2024-12-17 17:40:32 +01:00
Bram KragtenandGitHub ad1c32a880 Only use pipelines that have the default coversation agent (#23320)
only use pipelines that have the default coversation agent
2024-12-17 17:50:29 +02:00
Petar PetrovandGitHub 48819a59e7 Fix new automation dialog in Firefox (#23319) 2024-12-17 15:00:00 +01:00
Bram Kragten 2718801c69 Update light-color-rgb-picker.ts 2024-12-17 14:47:38 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2b43f5f8c8 Update dependency eslint to v9.17.0 (#23316)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-17 09:18:31 +02:00
Paul BotteinandGitHub 0ef23cd712 Remove backup toggle on the update more info dialog (#23314) 2024-12-16 15:47:19 +00:00
Petar PetrovandGitHub 7370d1e0dd Fix touch control of chart zoom (#23302)
* Fix touch control of chart zoom

* fix
2024-12-16 16:03:32 +01:00
karwostsandGitHub da7d3e118c Allow for deleting image_upload images in media panel (#23086) 2024-12-16 16:36:50 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
d4188d9aee Update dependency terser-webpack-plugin to v5.3.11 (#23313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-16 16:27:27 +02:00
8722157623 Focus on card search input when adding new card (#23309)
* Focus on card search input when adding new card

* Update src/panels/lovelace/editor/card-editor/hui-card-picker.ts

Co-authored-by: Simon Lamon <[email protected]>

* update and fix

* not on mobile

---------

Co-authored-by: Petar Petrov <[email protected]>
Co-authored-by: Simon Lamon <[email protected]>
Co-authored-by: Bram Kragten <[email protected]>
2024-12-16 15:54:29 +02:00
Petar PetrovandGitHub 6e2f0d8c9b Enable chart animations (#23311) 2024-12-16 14:37:31 +01:00
Paul BotteinandGitHub 08459394a6 Add backup sync status in detail page (#23312) 2024-12-16 14:36:59 +01:00
Jan-Philipp BeneckeandGitHub ee292f900f For consistency align close button to the left in ha-dialog (#23284) 2024-12-16 15:35:06 +02:00
Steve RepsherandGitHub 3aaf08ac03 Defer loading of fallback domain icons (#23298) 2024-12-16 15:22:53 +02:00
Paul BotteinandGitHub d31f4a5f1d Improve backup onboarding (#23282)
* Sort agents, enable cloud and local by default

* Enable cloud by default

* Improve wording

* Hide fab if onboarding is not complete

* Add recommended settings

* Use one step encryption key during onboarding

* Add description for cloud

* Update change encryption key dialog
2024-12-16 14:08:51 +01:00
Bram KragtenandGitHub 875ab0cb97 Cloud login: Wait with navigate until confirm action is done (#23310)
Wait with navigate until confirm action is done
2024-12-16 13:08:30 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
678af025ac Update vaadinWebComponents monorepo to v24.6.0 (#23306)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-16 13:41:31 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1fd38d085f Update dependency @lokalise/node-api to v13 (#23299)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-16 13:39:35 +01:00
Paul BotteinandGitHub ec324ab09f Disable backup by default for update more info (#23307) 2024-12-16 12:24:09 +01:00
Paul BotteinandGitHub efcd57934a Improve backup data-table on mobile (#23283)
* Improve backup data-table on mobile

* Group by default

* Fix top-header slot on mobile
2024-12-16 12:23:17 +01:00
Norbert RittelandGitHub 1efe61445f Fix typo "dasboard" and missing hyphen in en.json (#23303)
Add the missing "h" to "Choose a dasboard"
Add the missing hyphen to "auto generated"
2024-12-16 09:44:17 +01:00
WendelinandGitHub 6db9bf800a Fix ha-button-menu menuCorner attribute (#23301)
Fix menuCorner attribute
2024-12-16 09:47:36 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
65458538a7 Bump softprops/action-gh-release from 2.1.0 to 2.2.0 (#23300)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-16 08:04:32 +01:00
Norbert RittelandGitHub 9ddeb3734f Fix grammar mismatch in OAuth description (#23297) 2024-12-15 21:45:40 +01:00
Steve RepsherandGitHub c89fc188a5 Remove fixed device class icons (#23291) 2024-12-14 16:15:10 +01:00
Norbert RittelandGitHub d366471058 Make Device Condition description consistent with Trigger and Action (#23293)
Make device Condition description consistent with Trigger and Action

The first item in the lists of the triggers, conditions and actions is always the device type:

- When something happens to a device. Great way to start.
- Set of conditions provided by your device. Great way to start
- Do something on a device. Great way to start.

The condition does use "your" instead of "a" which is inconsistent and sounds irritating. As there are usually many different devices in a setup the use of "a" is much preferred as the actual device is picked up at the next step.

This commit makes the condition string consistent by replacing "your" with "a".
2024-12-14 16:14:24 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
9951c162a1 Update dependency eslint-import-resolver-webpack to v0.13.10 (#23292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-14 09:23:38 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
0c7d689b5a Update dependency lint-staged to v15.2.11 (#23289)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-13 20:23:43 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
655ce05efe Update dependency magic-string to v0.30.15 (#23287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-13 08:44:33 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2a6e562d37 Update rspack monorepo to v1.1.6 (#23288)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-13 08:44:10 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
98d1954812 Update formatjs monorepo (#23269)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 17:49:02 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
72a2f54598 Update dependency @codemirror/view to v6.35.3 (#23280)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 17:47:25 +01:00
47cf17ab50 Improve piper audio generation (#23281)
* Improve piper audio generation

* update logic

---------

Co-authored-by: Bram Kragten <[email protected]>
2024-12-12 17:41:11 +01:00
WendelinandGitHub d2ec24f32a Automation/Script editor add settings,category overflow actions (#23272)
* Add settings, category actions

* Add script category and settings actions

* Correct overflow actions order

* Use consume instead of subscribe
2024-12-12 17:40:52 +01:00
Bram KragtenandGitHub 69ed736080 Add missing translations to voice wizard (#23278) 2024-12-12 17:38:53 +01:00
WendelinandGitHub 7d3c77008d Mobile styles for backup summary (#23276)
* Add mobile backup summary styles

* revert padding
2024-12-12 17:02:51 +01:00
WendelinandGitHub 27dbabc6bf Fix create custom backup twice on dialog-new-backup (#23279) 2024-12-12 15:55:07 +00:00
WendelinandGitHub 27ce395d68 Common-color-tests (#23258) 2024-12-12 14:44:17 +01:00
Steve RepsherandGitHub 145a536156 Remove unused polyfills and adjust support for Intl.getCanonicalLocales (#23264) 2024-12-12 15:07:50 +02:00
ildar170975andGitHub e9b2a83411 Automation/Script editor border-radius fix (#23267)
* Update ha-automation-action-row.ts

* Update ha-automation-condition-row.ts

* Update ha-automation-trigger-row.ts

* Update ha-script-field-row.ts

* Update ha-script-field-row.ts

* Update ha-automation-condition-row.ts

* Update ha-automation-trigger-row.ts

* Update ha-automation-action-row.ts

* Update ha-automation-trigger-row.ts

* Update ha-automation-condition-row.ts

* Update ha-automation-action-row.ts

* Update ha-script-field-row.ts
2024-12-12 15:03:19 +02:00
784b7e4d04 Add zoom & pan to charts (#23183)
Co-authored-by: Bram Kragten <[email protected]>
2024-12-12 13:40:47 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
f4bf999ae2 Update dependency @codemirror/state to v6.5.0 (#23277)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-12 12:37:43 +00:00
Petar PetrovandGitHub 9c04f57e35 Fix getting custom config parameters for Z-Wave JS (#23244) 2024-12-12 13:37:22 +01:00
Petar PetrovandGitHub f0ddc408e8 Remove custom TimeLineScale for chartjs (#23270) 2024-12-12 12:43:22 +01:00
Petar PetrovandGitHub df4d5a4567 Simplify dialog history logic (#23271) 2024-12-12 12:41:57 +01:00
Bram KragtenandGitHub 0a413cba03 Fix more dialogs (#23273)
* Remove unneeded close dialog calls

* more
2024-12-12 09:00:38 +00:00
Bram KragtenandGitHub 7e2217b542 Fix navigate timing when dialogs where opened (#23261)
* Fix navigate timing when dialogs where opened

* Revert navigate changes
2024-12-12 08:35:34 +00:00
Petar PetrovandGitHub 93947d76a2 Fix navigate with replace when there are open dialogs (#23268) 2024-12-12 09:25:33 +01:00
Petar PetrovandGitHub 18cce45b88 Fix for auto closing dialogs on navigate (#23262) 2024-12-11 22:47:23 +01:00
86f1af6682 Merge feature branch with backup changes to dev (#23239)
* Add dialog to upload a backup file (#22405)

* Add dialog to upload a backup file

* Prosess feedback

* Remoe unused definition

* Early pushout of changes to the backup panel (#22321)

* Eary pushout of changes to the backup panel

* Add location icons

* Path is optional

* Set backupSlug from route

* No need for subscription mixin

* update

* Reorder

* init details

* Fix import

* Improve backup screen and navigation (#22827)

* Add location page

* Start dashboard

* Move list to dashboard

* Add mocked config page

* Fix hardcoded boolean

* Add summary card

* Use new format for BackupAgent

* Use new API

* Rename to ha-backup-summary-card

* Use new api

* Fix backup agents

* Rename backup slug to backup id (#22876)

* Add delete backup action to datatable (#22867)

* Create generate backup dialog (#22866)

Co-authored-by: Bram Kragten <[email protected]>

* Add backup details page (#22884)

* Add new backup dialog to choose between automatic and manual (#22895)

Co-authored-by: Simon Lamon <[email protected]>

* Improve download backup (#22905)

* Rename remove to delete in backup websocket type (#22902)

* Use bytes for backup size (#22909)

* Use default backup instead of automatic backup (#22915)

* Update generate backup api (#22943)

Use new backup api for generate backup

* Improve details page for new backup (#22946)

* Add content of backup in detail page

* Add restore button

* Add note

* Use disabled

* Fix backup generate

* Use options to WS command backup/restore (#22950)

* Add addons picker in generate backup dialog (#22951)

* Add addons picker in generate backup dialog

* Change condition

* Fix label

* Fix local addons

* Review

* Add local addon in addon mode is all

* Fix local addon folder

* Use addon picker inside data picker

* Fetch addons info in detail page

* Fetch addon inside component

* Rename agents picker

* Restrict generate backup content for core backup (#22958)

* Fix addon mode all

* Use event to check if a backup is in progress (#22960)

* Use event to check if a backup is in progress

* Update src/panels/config/backup/ha-config-backup-dashboard.ts

Co-authored-by: Bram Kragten <[email protected]>

---------

Co-authored-by: Bram Kragten <[email protected]>

* Force enable home assistant settings when history is selected in backup (#22961)

* Backup default config (#22954)

* WIP default config

* Add addons

* save data

* add icon

* basics of change encryption key

* Update dialog-change-backup-password.ts

* use default config when manually triggering default backup

* limit to hassio

* enforce encryption key, manual use manual one

* Update ha-config-backup-dashboard.ts

* Add suggested password and copy buttons

* Add download emergency kit button

* review

* fix

* Update ha-config-backup-default-config.ts

* Update ha-config-backup-default-config.ts

* Update default backup settings (#23109)

* Only display addons and folder for hassio (#23118)

* Use new backup dashboard page for hassio backup (#23161)

* Add support for copies and days for backup retention (#23128)

* Add upload dialog for backup (#23139)

* Improve generate backup dialog (#23167)

* Propose to use encryption key if available when restoring a backup (#23164)

Co-authored-by: Bram Kragten <[email protected]>

* Add encryption key onboarding (#23180)

* Fix attributes broken by the warning fixes (#23182)

* Don't allow any more eslint warnings (#23181)

* Use dedicated endpoint to generate backup with default settings (#23224)

* Add onboarding dialog for backups (#23225)

* Add onboarding flow for backups

* Add welcome screen

* Add progress and status for backup dashboard (#23222)

* Handle backup state

* Add summary card

* Use difference in days

* Rename local backups and show icon (#23238)

* Improve backup onboarding (#23241)

* Do not navigate to config page after onboarding

* Use casita image and center text

* fix lint

* Rename stored and default to strategy backup

* Update

* Fix icon and add type in datatable

* Use strategy in more places

* Fix list item overflow

---------

Co-authored-by: Joakim Sørensen <[email protected]>
Co-authored-by: Bram Kragten <[email protected]>
Co-authored-by: Simon Lamon <[email protected]>
Co-authored-by: Petar Petrov <[email protected]>
2024-12-11 15:52:37 -05:00
Bram KragtenandGitHub c8f58c7bc9 Prevent leaving the editor if there are unsaved changes (#23170)
* Prevent leaving the editor if there are unsaved changes

* Process code review

* use first composePath target

* fix function calls

* Use query instead

* Remove id on sidebar

* suggestions

---------

Co-authored-by: Bram Kragten <[email protected]>
2024-12-11 16:58:25 +01:00
WendelinandGitHub e5e168803a Remove not needed admin checks (#23259) 2024-12-11 16:50:35 +01:00
Bram Kragten 3436a023f6 suggestions 2024-12-11 16:08:03 +01:00
Jan-Philipp BeneckeandBram Kragten 84322a21fe Remove id on sidebar 2024-12-11 15:59:46 +01:00
Jan-Philipp BeneckeandBram Kragten ec20f7e2c4 Use query instead 2024-12-11 15:59:46 +01:00
Jan-Philipp BeneckeandBram Kragten 3579d82e8e fix function calls 2024-12-11 15:59:46 +01:00
Jan-Philipp BeneckeandBram Kragten 70532ac3bf use first composePath target 2024-12-11 15:59:46 +01:00
Jan-Philipp BeneckeandBram Kragten 96b9d25bc5 Process code review 2024-12-11 15:59:46 +01:00
Jan-Philipp BeneckeandBram Kragten 91777d45b0 Prevent leaving the editor if there are unsaved changes 2024-12-11 15:59:46 +01:00
0582b8430d Update developer-tools-template.ts: add independent scrollbars for left & right panels for large screens (#23242)
* Update developer-tools-template.ts

* whitespace in pre

Co-authored-by: Petar Petrov <[email protected]>

* prettier

* Update developer-tools-template.ts

* Update developer-tools-template.ts

* prettier

* prettier!!!!

* prettier again

* prettier fight

* prettier

Co-authored-by: Wendelin <[email protected]>

* prettier

* prettier

---------

Co-authored-by: Petar Petrov <[email protected]>
Co-authored-by: Wendelin <[email protected]>
2024-12-11 15:25:39 +02:00
Bram KragtenandGitHub 63d97398c1 Fix dialog navigation by making navigate() async (#23254)
* Fix dialog navigation by making `navigate()` async

* close all dialogs on `navigate`

* log warning when navigation is blocked

* fix
2024-12-11 14:13:20 +01:00
Steve RepsherandGitHub 3552417b39 Compress legacy build and shared static files using Brotli (#23233)
* Revert "Remove Zopfli compression (#23157)"

This reverts commit 4092f56ea5.

* Revert "Fix compression of hassio builds (#21869)"

This reverts commit b69f0964c9.

* Compress legacy build and shared static files using Brotli
2024-12-11 15:05:17 +02:00
Petar Petrov a6cbbfe1a4 fix 2024-12-11 13:59:47 +02:00
Petar Petrov 48f5d17060 log warning when navigation is blocked 2024-12-11 13:36:47 +02:00
Petar Petrov c713106948 close all dialogs on navigate 2024-12-11 13:35:09 +02:00
Petar Petrov 142e674020 Fix dialog navigation by making navigate() async 2024-12-11 11:56:32 +02:00
e4fc21c991 Move view to another dashboard (#23245)
* Add move view to dashboard

* Remove unneeded return in error flow

* Update src/panels/lovelace/editor/select-dashboard/hui-dialog-select-dashboard.ts

Co-authored-by: Petar Petrov <[email protected]>

* Update src/panels/lovelace/editor/select-dashboard/hui-dialog-select-dashboard.ts

Co-authored-by: Petar Petrov <[email protected]>

* Use ha-list-item for button-menu

---------

Co-authored-by: Petar Petrov <[email protected]>
2024-12-11 10:30:57 +02:00
Simon LamonandGitHub f688780677 Combine Edit in yaml and Edit in visual editor (2/2) (#23143)
* yaml / visual part 2

* clean up

* ci
2024-12-11 09:49:15 +02:00
Simon LamonandGitHub 0ce98a86e6 Combine Edit in yaml and Edit in visual editor (1/2) (#23142)
* yaml / visual part 1

* clean up

* clean up
2024-12-11 09:48:10 +02:00
Jan-Philipp BeneckeandGitHub bf624f5ca7 Intercept default search shortcut and focus our search input on data table pages (#23209)
Intercept default search shortcut on data table pages
2024-12-11 09:34:27 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ce5ce37de7 Update formatjs monorepo (#23250)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-11 07:36:33 +01:00
da727d3a3a Added "Media player volume slider" card feature. (#23199)
* Added "Media player volume" card feature.

* Make sure the feature is not displayed on unsupported players

Co-authored-by: Petar Petrov <[email protected]>

* Renamed to Media player volume *slider*

* Missed one rename.

---------

Co-authored-by: Simon Zumbrunnen <[email protected]>
Co-authored-by: Petar Petrov <[email protected]>
2024-12-10 13:36:56 +00:00
Paul BotteinandGitHub 9d83cc6988 Use list item for integration quality scale (#23236) 2024-12-10 13:33:21 +02:00
Petar PetrovandGitHub ed625d4e0b Simplify dialog navigation to fix back button (#23220)
* Simplify dialog navigation to fix back btn

* add back comment

* manage dialog stack in the manager instead of history

* handle dialogs that refuse to close
2024-12-10 13:26:57 +02:00
WendelinandGitHub 84157c8ea5 Extract assist-chat out of voice-command-dialog (#23184) 2024-12-10 13:23:48 +02:00
WendelinandGitHub 8f19c0abb0 Use localStorage with Web Storage API (#23172) 2024-12-10 11:14:15 +01:00
WendelinandGitHub 008647aa7a Fix landingpage, supervisor release permission (#23223) 2024-12-10 10:51:25 +01:00
WendelinandGitHub b86d6021da Revert "Update developer-tools-template.ts: add independent scrollbars for left & right panels for large screens" (#23237)
Revert "Update developer-tools-template.ts: add independent scrollbars for le…"

This reverts commit d1c981bc19.
2024-12-10 09:47:40 +00:00
Steve RepsherandGitHub 98af479fd3 Drop support for IE 11 and Samsung 4 (#23234) 2024-12-10 10:35:33 +01:00
d1c981bc19 Update developer-tools-template.ts: add independent scrollbars for left & right panels for large screens (#17765)
* Update developer-tools-template.ts

* Update developer-tools-template.ts

* fix overflow

* Update src/panels/developer-tools/template/developer-tools-template.ts

Co-authored-by: Wendelin <[email protected]>

* Update src/panels/developer-tools/template/developer-tools-template.ts

Co-authored-by: Wendelin <[email protected]>

* Update developer-tools-template.ts

* Update src/panels/developer-tools/template/developer-tools-template.ts

Co-authored-by: Wendelin <[email protected]>

* Update developer-tools-template.ts

* prettier

* Update developer-tools-template.ts

* Update developer-tools-template.ts

* prettier

* Update developer-tools-template.ts

* prettier

* prettier

* Update developer-tools-template.ts

* prettier

* prettier

* prettier

* Update developer-tools-template.ts

---------

Co-authored-by: Wendelin <[email protected]>
2024-12-10 10:11:48 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1b0e53d3d9 Bump nanoid from 3.3.7 to 3.3.8 (#23235)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-10 09:21:23 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
0d49927541 Update dependency @codemirror/view to v6.35.2 (#23232)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-10 08:30:36 +01:00
Charles GarwoodandGitHub 9e8d452438 Fix typo in translations build script (#23227)
* Fix typo in build script
2024-12-09 18:23:23 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ddd646007e Update dependency @codemirror/view to v6.35.1 (#23221)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-09 17:18:38 +01:00
Norbert RittelandGitHub 787fba82bd Improve "Restore?" option for Timer helpers (#23213)
When creating or editing a Timer helper the option "Restore?" can be ticked by the user.

This should not be a question but rather just the option itself and in addition this should better explain its purpose as there is a full line of text possible.

This commit fixes this by adding a similar explanation as for a Counter helpers, following the explanation in the online docs.
2024-12-09 16:43:48 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1393a3ade8 Update vaadinWebComponents monorepo to v24.5.5 (#23219)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-09 11:37:34 +01:00
ildar170975andGitHub bf24d67066 Fix "Integration entries" page for yaml-based integrations (#23201)
* Update ha-config-integration-page.ts

* prettier
2024-12-09 09:06:18 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9774deef6d Bump actions/cache from 4.1.2 to 4.2.0 (#23217)
Bumps [actions/cache](https://github.com/actions/cache) from 4.1.2 to 4.2.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4.1.2...v4.2.0)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-09 08:52:56 +02:00
Paulus SchoutsenandGitHub 8390c6e29b Fix voice debug link (#23214) 2024-12-08 22:32:43 +01:00
c78d371a9c Correct overwriting integration labelling on integrations page (#23206)
* Update ha-config-integration-page.ts

fixes #22776

* update icon color

---------

Co-authored-by: Petar Petrov <[email protected]>
2024-12-08 17:21:34 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7750299a66 Update dependency @types/leaflet to v1.9.15 (#23202)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-07 22:33:51 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
43f31dd455 Update dependency prettier to v3.4.2 (#23195)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-07 09:54:27 +01:00
karwostsandGitHub df21900341 No script entities in scenes (#23192) 2024-12-07 02:45:25 +01:00
Paul BotteinandGitHub 6934f0626c Fix boolean attributes (#23189) 2024-12-06 18:39:34 +01:00
Paul BotteinandGitHub ea5bf17780 Fix has-secondary attribute (#23187) 2024-12-06 15:16:33 +00:00
Bram KragtenandGitHub 0b7af715a8 Fix label selector when required (#23186) 2024-12-06 15:14:30 +00:00
Petar PetrovandGitHub 8579bee053 Don't allow any more eslint warnings (#23181) 2024-12-06 14:58:04 +01:00
Petar PetrovandGitHub 400ddbf625 Fix attributes broken by the warning fixes (#23182) 2024-12-06 14:56:42 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5fdefc0c20 Update dependency @rsdoctor/rspack-plugin to v0.4.11 (#23175)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-06 12:57:02 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
c72c74828e Update rspack monorepo to v1.1.5 (#23176)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-06 11:23:31 +01:00
Petar PetrovandGitHub e0b157d280 Remove @web/dev-server (#23179) 2024-12-06 09:54:28 +00:00
Petar PetrovandGitHub e02736b4e2 ZwaveJS: Handle S2 inclusion via Inclusion Controller (#23100) 2024-12-06 11:32:45 +02:00
Petar PetrovandGitHub af049274d9 Cleanup unused WDS deps and config (#23155)
* Cleanup unused WDS deps and config

* fix
2024-12-06 09:57:46 +01:00
Petar PetrovandGitHub 7a12fd2853 Fix ALL the eslint warnings (#23165)
* Fix many lint warnings

* Fix ALL lint warnings

* small fix

* type fixes
2024-12-06 09:55:07 +01:00
Paul BotteinandGitHub f724d8e7a9 Fix text color in ha-md-select in dark mode (#23174) 2024-12-06 09:19:56 +01:00
Bram KragtenandGitHub 0d7e0df194 Add localisation to voice wizard (#23169)
* Add localization to voice wizard

* more
2024-12-06 09:11:17 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7d567bc386 Update vitest monorepo to v2.1.8 (#23166)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 17:33:14 +01:00
karwostsandGitHub ad52386ae0 Missing horiz swing mode import (#23168) 2024-12-05 16:02:55 +00:00
Paul BotteinandGitHub 512fee47b6 Improve trigger and action description for conversation (#23141) 2024-12-05 17:01:04 +01:00
Petar PetrovandGitHub 4092f56ea5 Remove Zopfli compression (#23157) 2024-12-05 14:01:25 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
926972cce6 Update vitest monorepo to v2.1.7 (#23156)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 12:58:37 +02:00
Bram KragtenandGitHub d51eea7bb6 Voice addon install: try to find discovered flow (#23146) 2024-12-05 10:14:06 +01:00
karwostsandGitHub a3ca889ca3 Location selector: Move location on map click (#22198)
* Add button to location-selector to move marker to current view

* move on click

* double-click handling
2024-12-05 08:55:53 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
a7406b3201 Update dependency globals to v15.13.0 (#23148)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 08:20:38 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b54057cc4b Update dependency chart.js to v4.4.7 (#23145)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-05 08:20:09 +02:00
Petar PetrovandGitHub d77dd5300e Require underscore for private methods (#23138) 2024-12-04 15:05:49 +01:00
WendelinandGitHub 9396d5cf8c Automate supervisor & landing-page release (#22959)
* Automate supervisor & landing-page release

* Add no prerelease condition to supervisor/landing-page release

* Prepare release workflow for testing

* Add release permissions to create PR

* Add supervisor, landingpage release to assets

* Create test draft release to test

* Fix hassio release path

* Fix workflow permission for test reasons

* Revert test settings
2024-12-04 14:41:21 +01:00
WendelinandGitHub a78ddb50fd Fix time input with helper text width (#23134)
* Fix time input with helper text width

* Make time input help text always newline

* Put helper text out of base-time-input
2024-12-04 13:25:31 +00:00
Bram KragtenandGitHub 64e8b636b9 Use action instead of selected for select entity row (#23135) 2024-12-04 13:57:55 +01:00
WendelinandGitHub 2c604ff946 Add red delete button to delete zone confirmation dialog (#23136) 2024-12-04 12:55:12 +00:00
Paul BotteinandGitHub f8ce7c2ce1 Don't use duration formatting for second unit (#23132)
Don't use duration formatting for sec unit
2024-12-04 13:17:47 +01:00
af1622e306 Show unit for number domains (#23101)
* Show unit for number domains

* Remove duplicated code

* Allow monetary formatting

Co-authored-by: Petar Petrov <[email protected]>

* Update src/common/entity/compute_state_display.ts

---------

Co-authored-by: Petar Petrov <[email protected]>
2024-12-04 11:25:29 +00:00
Jan-Philipp BeneckeandGitHub 3c03dfb322 Revert translation change for device quick bar (#23131) 2024-12-04 11:43:50 +01:00
Jan-Philipp BeneckeandGitHub 697a99f913 Show in assist pipeline debug when intent is preferred and processed locally (#23115) 2024-12-04 09:52:48 +01:00
Paul BotteinandGitHub 06925f0716 Reduce button target zone in media player more info (#23130) 2024-12-04 09:40:41 +01:00
Jan-Philipp BeneckeandGitHub afcfdb5140 Explicitly set file name for camera snapshot (#23124)
* Explicitly set file name for camera snapshot

* Process code review
2024-12-04 08:52:53 +02:00
Jan ČermákandGitHub 6126280f2d Fix Markdown cards in Grid not taking full height (#23121)
The implementation of show_empty property in #21379 introduced
regression which causes Markdown cards rendered within a Grid card to
not take full height of its space. This is because a visible card is now
forced to have "display: block", while without that it's rendered as
"display: inline".

As the CSSStyleDeclaration.style mandates string type, it's not possible
to delete or null the value. Setting it to an empty string seems to do
the trick as well and the linter is happy too.

Fixes #23119
2024-12-03 17:33:59 +01:00
Paul BotteinandGitHub 8e6f4886e8 Fix create section on iOS (#23123) 2024-12-03 17:16:52 +02:00
WendelinandGitHub 480de9ef03 Remove static font from ha-badge (#23120) 2024-12-03 14:15:59 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
614c4ec404 Update dependency @rsdoctor/rspack-plugin to v0.4.10 (#23108)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-03 15:07:54 +02:00
WendelinandGitHub d43291ae52 Fix ha-target-picker hideTitle (#23116) 2024-12-03 13:05:05 +00:00
Petar PetrovandGitHub 7c486ec969 ZWaveJS: abort S2 bootstrapping when inclusion is canceled (#23106) 2024-12-03 13:56:17 +01:00
Bram KragtenandGitHub 19f54b6ba2 Voice local: Small refactor and return when local already exists (#23113) 2024-12-03 12:01:54 +01:00
WendelinandGitHub 97cc9f9ab9 Simplify mediaBrowserPreferredLayout @storage (#23107) 2024-12-03 11:37:23 +01:00
MarcinandGitHub a104d38fc9 Updated English translations for scene editor. (#23110) 2024-12-03 10:25:56 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2582023ab2 Update dependency eslint to v9.16.0 (#23105)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-03 08:50:48 +02:00
Jan-Philipp BeneckeandGitHub e731f060f1 Add device search to quick bar (#23095)
* Add device search to quick bar

* Process code review
2024-12-03 08:50:07 +02:00
WendelinandGitHub c3942d244d Add automatic retry to stream logs (#23098) 2024-12-02 21:30:51 +01:00
Bram KragtenandGitHub f4ef4c628a Voice wizard local: Add error message, fix hostname (#23103)
Add error message, fix hostname
2024-12-02 14:48:24 -05:00
a0f3e4f785 Add a label filter (#23081)
* Label filter

* adjust height

* ci

* Update src/components/ha-filter-labels.ts

---------

Co-authored-by: Petar Petrov <[email protected]>
2024-12-02 15:41:41 +00:00
Norbert RittelandGitHub 2c13c5a18c Change "Low-carbon energy consumed" to "… electricity …" (#23096)
The Energy card allows the user to monitor the "Grid carbon footprint" which is visualized by the "Low-carbon energy consumed" gauge.

But this does not cover the carbon emissions of the gas consumption that might be shown right next to it, just the electrical energy from the grid.

So the labeling is very misleading in that context – not even considering energy consumed by oil or wood burned in addition.

Therefore this needs to be changed to use "electricity" just like the description already does.
2024-12-02 17:32:56 +02:00
Paul BotteinandGitHub 22cfd40ccc Don't show alert in voice assistant dialog (#23097) 2024-12-02 14:35:41 +01:00
5c7d9b3fa3 Made it easier to test the frontend against an existing core instance. (#23062)
* Made it easier to test the frontend against an existing core instance.

* Ensured that script works regardless of current working dir

* Use consistent quote style

* Also allow using variables in hassUrl override

* Improved the default behavior of the script

* more consistent variable naming

* don't install a global dependency

* documented caching wierdness where if you switch core endpoints the old one remains in use

* Simplified some code

* improved documentation

---------

Co-authored-by: Petar Petrov <[email protected]>
2024-12-02 13:27:36 +00:00
WendelinandGitHub 55b6aa09d9 Save scene before switching to live edit (#23094)
Save scene changes before live edit, align delete icons for entities.
2024-12-02 15:24:03 +02:00
Robert MacWhaandGitHub 96395dd5e1 Store Media Browser view in localStorage (#23061)
feat: store preferredLayout in localStorage
2024-12-02 14:02:13 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7191edd3c6 Update dependency marked to v15.0.3 (#23088)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-02 11:58:59 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
6169379f4c Bump relative-ci/agent-action from 2.1.13 to 2.1.14 (#23089)
Bumps [relative-ci/agent-action](https://github.com/relative-ci/agent-action) from 2.1.13 to 2.1.14.
- [Release notes](https://github.com/relative-ci/agent-action/releases)
- [Commits](https://github.com/relative-ci/agent-action/compare/v2.1.13...v2.1.14)

---
updated-dependencies:
- dependency-name: relative-ci/agent-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 11:57:33 +01:00
Alex JurkiewiczandGitHub 5500dd1332 history-graph-card-editor: Correct hours_to_show validation (#23090)
history-graph-card-editor: Correct hours_to_show validation

Allow all floating point numbers from 0 up.

Fixes #15933.
2024-12-02 12:48:12 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5c681896f3 Update dependency @codemirror/language to v6.10.6 (#23092)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-02 12:45:19 +02:00
Norbert RittelandGitHub d826113319 Change "Energy usage" to "Electricity usage" (#23091)
The energy dashboard tracks the total energy of a home, including the gas consumption in a separate graph (if configured).

The topmost graph is currently labeled "Energy usage" but it does only cover the electricity consumption and production. Also note the "Energy distribution" next to it includes gas, too.

Thus the title is misleading and needs to be changed to "Electricity usage" to make this clearer.
2024-12-02 12:30:56 +02:00
f72b298f97 Init new scenes in live edit mode (#23051)
* Init new scenes in live edit mode

* Update src/panels/config/scene/ha-scene-editor.ts

Co-authored-by: Simon Lamon <[email protected]>

* imports

---------

Co-authored-by: Simon Lamon <[email protected]>
2024-12-02 11:18:03 +01:00
90b7cad7ac Add shortcut to open the voice assist dialog (#23082)
* Add shortcut to open the voice assist dialog

* Add tip

* Only show dialog when enabled

* Update src/translations/en.json

---------

Co-authored-by: Petar Petrov <[email protected]>
2024-12-02 09:26:27 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e0239486bc Update dependency element-internals-polyfill to v1.3.12 (#23077)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-01 12:13:29 +01:00
Norbert RittelandGitHub e10fb3c168 Fix inconsistent "remove" in description of refresh tokens (#23073)
As Refresh tokens are created in HA the corresponding verb is "delete", not "remove".

All buttons and menu items in this context use the correct verb, except for the description which contains "remove", twice.

This commit fixes that.
2024-11-30 22:32:00 +01:00
Norbert RittelandGitHub 5ee8bee6dc Remove the misleading word "updates" from system options (#23069)
Remove the misleading word "update" from system options

The second option in the system options dialog for integrations uses the word "updates" in both the headline and the explanation.

This is highly misleading as it sounds like polling for firmware updates for many device integrations.

Therefore the words "(state) changes" should be used instead.
2024-11-30 17:07:37 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4b678ffb41 Update dependency @codemirror/language to v6.10.5 (#23070)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-30 16:44:46 +01:00
Norbert RittelandGitHub 82c23026b3 Correctly match "Remove" to "Add" within Energy dashboard (#23068)
In Home Assistant the action "Add" should always pair with "Remove", like "Create" does with "Delete".
This commit addresses all mismatched pairs in the Energy dashboard.

In addition the grammar of device_consumption_energy is fixed by using the consistent "energy consumption" word pair.
2024-11-30 16:44:09 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Simon Lamon
94b7b60fe0 Update dependency prettier to v3.4.1 (#23053)
* Update dependency prettier to v3.4.1

* Prettier rule

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Simon Lamon <[email protected]>
2024-11-29 16:55:54 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
e1553a7ccf Update dependency magic-string to v0.30.14 (#23052)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-29 17:40:33 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
fb0ca49742 Update vitest monorepo to v2.1.6 (#23060)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-29 16:55:18 +02:00
Norbert RittelandGitHub 97015788a2 Correctly pair 'remove' with 'add' in description of To-do list card (#23044)
When using 'Add' in HA this should always pair with 'Remove', like 'Create' with 'Delete'.

The To-do list card introduces an inconsistent third word by using 'clear' instead of 'remove'.

This fixes this and also properly capitalizes "To-do list" as it's name like in all other Dashboard card types.
2024-11-29 08:35:45 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
0cf05ea2cc Update dependency @types/chromecast-caf-receiver to v6.0.20 (#23049)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-28 21:11:24 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
acbe77c0d6 Update Yarn to v4.5.3 (#23046)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-28 18:57:25 +01:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
bede8c66c5 Update dependency @rsdoctor/rspack-plugin to v0.4.9 (#23043)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-28 13:58:28 +01:00
Norbert RittelandGitHub de87aee15b Replace add_zone with create_zone in ha-config-zone.ts (#23041)
* Replace add_zone with create_zone in ha-config-zone.ts

The action button is the only inconsistent item here now.

* Remove orphaned "add_zone" string
2024-11-28 14:46:29 +02:00
WendelinandGitHub 36312cc273 Simplify depends_on_cloud translation (#23042) 2024-11-28 13:24:44 +02:00
WendelinandGitHub 3120184d63 Add internal, legacy to IQS (#23040) 2024-11-28 13:23:53 +02:00
WendelinandGitHub a1be9d923e Fix iqs naming and docs link anchor (#23036) 2024-11-28 09:58:34 +02:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7dee34ca75 Update dependency @codemirror/language to v6.10.4 (#23031)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-28 06:19:06 +01:00
karwostsandGitHub f7c8c6e3e8 Dont floor duration for milliseconds (#23028)
* Dont floor duration for milliseconds

* remove ms
2024-11-27 17:27:03 +00:00
Paul BotteinandGitHub 3411967fd9 Only use duration poly-fill when necessary (#23030) 2024-11-27 17:13:29 +01:00
WendelinandGitHub 125805d6d1 Fix platinum color and spacing of integration logo (#23029) 2024-11-27 16:27:53 +01:00
1110 changed files with 39345 additions and 24757 deletions
+10 -16
View File
@@ -4,13 +4,12 @@
# - released in the last year + current alpha/beta versions
# - Firefox extended support release (ESR)
# - with global utilization at or above 0.5%
# - must support dynamic import of ES modules
# - exclude browsers no longer being maintained
# - exclude dead browsers (no security maintenance for 2+ years)
# - exclude KaiOS, QQ, and UC browsers due to lack of sufficient feature support data
unreleased versions
last 1 year
Firefox ESR
>= 0.5% and supports es6-module-dynamic-import
>= 0.5%
not dead
not KaiOS > 0
not QQAndroid > 0
@@ -20,23 +19,18 @@ not UCAndroid > 0
# Legacy builds are served when modern requirements are not met and support browsers:
# - released in the last 7 years + current alpha/beta versionss
# - with global utilization at or above 0.05%
# The lattermost query ensures that support for popular old browsers is not dropped too early
# (e.g. IE 11, Android 4.4, or Samsung 4).
#
# In addition, legacy browsers must support some minimum features that cannot be polyfilled:
# - ES5 (strict mode)
# - web sockets to communicate with backend
# - inline SVG used widely in buttons, widgets, etc.
# - custom events used for most user interactions
# - CSS flexbox used in the majority of the layout
# Nearly all of these are redundant with the above rules.
# As of May 2023, only web sockets must be added to the query.
# - exclude dead browsers (no security maintenance for 2+ years)
# - exclude Opera Mini which does not support web sockets
unreleased versions
last 7 years
>= 0.05% and supports websockets
>= 0.05%
not dead
not op_mini all
[legacy-sw]
# Same as legacy plus supports service workers
unreleased versions
last 7 years
>= 0.05% and supports websockets and supports serviceworkers
>= 0.05% and supports serviceworkers
not dead
not op_mini all
+1 -2
View File
@@ -1,5 +1,4 @@
# 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/devcontainers/python:1-3.13
ENV \
DEBIAN_FRONTEND=noninteractive \
+2 -2
View File
@@ -7,7 +7,7 @@ body:
value: |
Make sure you are running the [latest version of Home Assistant][releases] before reporting an issue.
If you have a feature or enhancement request for the frontend, please [start an discussion][fr] instead of creating an issue.
If you have a feature or enhancement request for the frontend, please [start a discussion][fr] instead of creating an issue.
**Please do not report issues for custom cards.**
@@ -74,7 +74,7 @@ body:
If known, otherwise leave blank.
- type: input
attributes:
label: In which browser are you experiencing the issue with?
label: In which browser are you experiencing the issue?
placeholder: Google Chrome 88.0.4324.150
description: >
Provide the full name and don't forget to add the version!
+1 -1
View File
@@ -2,7 +2,7 @@ blank_issues_enabled: false
contact_links:
- name: Request a feature for the UI / Dashboards
url: https://github.com/home-assistant/frontend/discussions/category_choices
about: Request an new feature for the Home Assistant frontend.
about: Request a new feature for the Home Assistant frontend.
- name: Report a bug that is NOT related to the UI / Dashboards
url: https://github.com/home-assistant/core/issues
about: This is the issue tracker for our frontend. Please report other issues in the backend ("core") repository.
+2 -2
View File
@@ -26,7 +26,7 @@ jobs:
ref: dev
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
@@ -62,7 +62,7 @@ jobs:
ref: master
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
+9 -39
View File
@@ -26,24 +26,18 @@ jobs:
- name: Check out files from GitHub
uses: actions/[email protected]
- name: Setup Node
id: setup-node
uses: actions/[email protected]
uses: actions/[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- uses: actions/[email protected]
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: "node_modules"
key: ${{ runner.os }}-yarn-${{ hashFiles('.yarnrc.yml') }}-${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-yarn-${{ hashFiles('.yarnrc.yml') }}-${{ steps.setup-node.outputs.node-version }}
- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable
- name: Check for duplicate dependencies
run: yarn dedupe --check
- name: Build resources
run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data gather-gallery-pages
- name: Setup lint cache
uses: actions/cache@v4.1.2
uses: actions/cache@v4.2.0
with:
path: |
node_modules/.cache/prettier
@@ -66,19 +60,11 @@ jobs:
- name: Check out files from GitHub
uses: actions/[email protected]
- name: Setup Node
id: setup-node
uses: actions/[email protected]
uses: actions/[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- uses: actions/[email protected]
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: "node_modules"
key: ${{ runner.os }}-yarn-${{ hashFiles('.yarnrc.yml') }}-${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-yarn-${{ hashFiles('.yarnrc.yml') }}-${{ steps.setup-node.outputs.node-version }}
- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable
- name: Build resources
run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data
@@ -92,26 +78,18 @@ jobs:
- name: Check out files from GitHub
uses: actions/[email protected]
- name: Setup Node
id: setup-node
uses: actions/[email protected]
uses: actions/[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- uses: actions/[email protected]
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: "node_modules"
key: ${{ runner.os }}-yarn-${{ hashFiles('.yarnrc.yml') }}-${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-yarn-${{ hashFiles('.yarnrc.yml') }}-${{ steps.setup-node.outputs.node-version }}
- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable
- name: Build Application
run: ./node_modules/.bin/gulp build-app
env:
IS_TEST: "true"
- name: Upload bundle stats
uses: actions/upload-artifact@v4.4.3
uses: actions/upload-artifact@v4.6.0
with:
name: frontend-bundle-stats
path: build/stats/*.json
@@ -124,26 +102,18 @@ jobs:
- name: Check out files from GitHub
uses: actions/[email protected]
- name: Setup Node
id: setup-node
uses: actions/[email protected]
uses: actions/[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- uses: actions/[email protected]
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: "node_modules"
key: ${{ runner.os }}-yarn-${{ hashFiles('.yarnrc.yml') }}-${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('yarn.lock') }}
restore-keys: ${{ runner.os }}-yarn-${{ hashFiles('.yarnrc.yml') }}-${{ steps.setup-node.outputs.node-version }}
- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable
- name: Build Application
run: ./node_modules/.bin/gulp build-hassio
env:
IS_TEST: "true"
- name: Upload bundle stats
uses: actions/upload-artifact@v4.4.3
uses: actions/upload-artifact@v4.6.0
with:
name: supervisor-bundle-stats
path: build/stats/*.json
+2 -2
View File
@@ -27,7 +27,7 @@ jobs:
ref: dev
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
@@ -63,7 +63,7 @@ jobs:
ref: master
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
uses: actions/[email protected]
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
+1 -1
View File
@@ -24,7 +24,7 @@ jobs:
uses: actions/[email protected]
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
+4 -4
View File
@@ -6,7 +6,7 @@ on:
- cron: "0 1 * * *"
env:
PYTHON_VERSION: "3.12"
PYTHON_VERSION: "3.13"
NODE_OPTIONS: --max_old_space_size=6144
permissions:
@@ -28,7 +28,7 @@ jobs:
python-version: ${{ env.PYTHON_VERSION }}
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
@@ -57,14 +57,14 @@ jobs:
run: tar -czvf translations.tar.gz translations
- name: Upload build artifacts
uses: actions/upload-artifact@v4.4.3
uses: actions/upload-artifact@v4.6.0
with:
name: wheels
path: dist/home_assistant_frontend*.whl
if-no-files-found: error
- name: Upload translations
uses: actions/upload-artifact@v4.4.3
uses: actions/upload-artifact@v4.6.0
with:
name: translations
path: translations.tar.gz
+1 -1
View File
@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Send bundle stats and build information to RelativeCI
uses: relative-ci/[email protected]3
uses: relative-ci/[email protected]4
with:
key: ${{ secrets[format('RELATIVE_CI_KEY_{0}_{1}', matrix.bundle, matrix.build)] }}
token: ${{ github.token }}
+1 -1
View File
@@ -18,6 +18,6 @@ jobs:
pull-requests: read
runs-on: ubuntu-latest
steps:
- uses: release-drafter/release-drafter@v6.0.0
- uses: release-drafter/release-drafter@v6.1.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+11 -11
View File
@@ -6,7 +6,7 @@ on:
- published
env:
PYTHON_VERSION: "3.12"
PYTHON_VERSION: "3.13"
NODE_OPTIONS: --max_old_space_size=6144
# Set default workflow permissions
@@ -25,16 +25,16 @@ jobs:
- name: Checkout the repository
uses: actions/[email protected]
- name: Verify version
uses: home-assistant/actions/helpers/verify-version@master
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Verify version
uses: home-assistant/actions/helpers/verify-version@master
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
@@ -55,7 +55,7 @@ jobs:
script/release
- name: Upload release assets
uses: softprops/action-gh-release@v2.1.0
uses: softprops/action-gh-release@v2.2.1
with:
files: |
dist/*.whl
@@ -76,7 +76,7 @@ jobs:
- name: Build wheels
uses: home-assistant/[email protected]
with:
abi: cp312
abi: cp313
tag: musllinux_1_2
arch: amd64
wheels-key: ${{ secrets.WHEELS_KEY }}
@@ -92,7 +92,7 @@ jobs:
- name: Checkout the repository
uses: actions/[email protected]
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
@@ -107,7 +107,7 @@ jobs:
- name: Tar folder
run: tar -czf landing-page/home_assistant_frontend_landingpage-${{ github.event.release.tag_name }}.tar.gz -C landing-page/dist .
- name: Upload release asset
uses: softprops/action-gh-release@v2.1.0
uses: softprops/action-gh-release@v2.2.1
with:
files: landing-page/home_assistant_frontend_landingpage-${{ github.event.release.tag_name }}.tar.gz
@@ -121,7 +121,7 @@ jobs:
- name: Checkout the repository
uses: actions/[email protected]
- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v4.2.0
with:
node-version-file: ".nvmrc"
cache: yarn
@@ -136,6 +136,6 @@ jobs:
- name: Tar folder
run: tar -czf hassio/home_assistant_frontend_supervisor-${{ github.event.release.tag_name }}.tar.gz -C hassio/build .
- name: Upload release asset
uses: softprops/action-gh-release@v2.1.0
uses: softprops/action-gh-release@v2.2.1
with:
files: hassio/home_assistant_frontend_supervisor-${{ github.event.release.tag_name }}.tar.gz
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 90 days stale policy
uses: actions/stale@v9.0.0
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 90
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -6,4 +6,4 @@ enableGlobalCache: false
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.5.2.cjs
yarnPath: .yarn/releases/yarn-4.6.0.cjs
@@ -5,7 +5,7 @@ import paths from "../paths.cjs";
const POLYFILL_DIR = join(paths.polymer_dir, "src/resources/polyfills");
// List of polyfill keys with supported browser targets for the functionality
const PolyfillSupport = {
const polyfillSupport = {
// Note states and shadowRoot properties should be supported.
"element-internals": {
android: 90,
@@ -18,17 +18,6 @@ const PolyfillSupport = {
safari: 17.4,
samsung: 15.0,
},
"element-append": {
android: 54,
chrome: 54,
edge: 17,
firefox: 49,
ios: 10.0,
opera: 41,
opera_mobile: 41,
safari: 10.0,
samsung: 6.0,
},
"element-getattributenames": {
android: 61,
chrome: 61,
@@ -51,27 +40,18 @@ const PolyfillSupport = {
safari: 12.0,
samsung: 10.0,
},
fetch: {
android: 42,
chrome: 42,
edge: 14,
firefox: 39,
ios: 10.3,
opera: 29,
opera_mobile: 29,
safari: 10.1,
samsung: 4.0,
},
// FormatJS polyfill detects fix for https://bugs.chromium.org/p/v8/issues/detail?id=10682,
// so adjusted to several months after that was marked fixed
"intl-getcanonicallocales": {
android: 54,
chrome: 54,
edge: 16,
android: 90,
chrome: 90,
edge: 90,
firefox: 48,
ios: 10.3,
opera: 41,
opera_mobile: 41,
opera: 76,
opera_mobile: 64,
safari: 10.1,
samsung: 6.0,
samsung: 15.0,
},
"intl-locale": {
android: 74,
@@ -87,17 +67,6 @@ const PolyfillSupport = {
"intl-other": {
// Not specified (i.e. always try polyfill) since compatibility depends on supported locales
},
proxy: {
android: 49,
chrome: 49,
edge: 12,
firefox: 18,
ios: 10.0,
opera: 36,
opera_mobile: 36,
safari: 10.0,
samsung: 5.0,
},
"resize-observer": {
android: 64,
chrome: 64,
@@ -115,8 +84,6 @@ const PolyfillSupport = {
// corresponding polyfill key and actual module to import
const polyfillMap = {
global: {
fetch: { key: "fetch", module: "unfetch/polyfill" },
Proxy: { key: "proxy", module: "proxy-polyfill" },
ResizeObserver: {
key: "resize-observer",
module: join(POLYFILL_DIR, "resize-observer.ts"),
@@ -128,7 +95,7 @@ const polyfillMap = {
module: "element-internals-polyfill",
},
...Object.fromEntries(
["append", "getAttributeNames", "toggleAttribute"].map((prop) => {
["getAttributeNames", "toggleAttribute"].map((prop) => {
const key = `element-${prop.toLowerCase()}`;
return [prop, { key, module: join(POLYFILL_DIR, `${key}.ts`) }];
})
@@ -168,7 +135,7 @@ export default defineProvider(
const resolvePolyfill = createMetaResolver(polyfillMap);
return {
name: "custom-polyfill",
polyfills: PolyfillSupport,
polyfills: polyfillSupport,
usageGlobal(meta, utils) {
const polyfill = resolvePolyfill(meta);
if (polyfill && shouldInjectPolyfill(polyfill.desc.key)) {
+5
View File
@@ -53,6 +53,11 @@ module.exports.definedVars = ({ isProdBuild, latestBuild, defineOverlay }) => ({
__SUPERVISOR__: false,
__BACKWARDS_COMPAT__: false,
__STATIC_PATH__: "/static/",
__HASS_URL__: `\`${
"HASS_URL" in process.env
? process.env["HASS_URL"]
: "${location.protocol}//${location.host}"
}\``,
"process.env.NODE_ENV": JSON.stringify(
isProdBuild ? "production" : "development"
),
-3
View File
@@ -5,9 +5,6 @@ const paths = require("./paths.cjs");
const isTrue = (value) => value === "1" || value?.toLowerCase() === "true";
module.exports = {
useWDS() {
return isTrue(process.env.WDS);
},
isProdBuild() {
return (
process.env.NODE_ENV === "production" || module.exports.isStatsBuild()
+1 -1
View File
@@ -9,7 +9,7 @@ export default [
"import/extensions": "off",
"import/no-dynamic-require": "off",
"global-require": "off",
"@typescript-eslint/no-var-requires": "off",
"@typescript-eslint/no-require-imports": "off",
"prefer-arrow-callback": "off",
},
},
+1 -2
View File
@@ -8,7 +8,6 @@ import "./gen-icons-json.js";
import "./locale-data.js";
import "./service-worker.js";
import "./translations.js";
import "./wds.js";
import "./rspack.js";
gulp.task(
@@ -26,7 +25,7 @@ gulp.task(
"build-locale-data"
),
"copy-static-app",
env.useWDS() ? "wds-watch-app" : "rspack-watch-app"
"rspack-watch-app"
)
);
+47 -29
View File
@@ -15,54 +15,72 @@ const brotliOptions = {
};
const zopfliOptions = { threshold: 150 };
const compressDistBrotli = (rootDir, modernDir, compressServiceWorker = true) =>
const compressModern = (rootDir, modernDir, compress) =>
gulp
.src(
[
`${modernDir}/**/${filesGlob}`,
compressServiceWorker ? `${rootDir}/sw-modern.js` : undefined,
].filter(Boolean),
{
base: rootDir,
}
)
.pipe(brotli(brotliOptions))
.src([`${modernDir}/**/${filesGlob}`, `${rootDir}/sw-modern.js`], {
base: rootDir,
allowEmpty: true,
})
.pipe(compress === "zopfli" ? zopfli(zopfliOptions) : brotli(brotliOptions))
.pipe(gulp.dest(rootDir));
const compressDistZopfli = (rootDir, modernDir, compressModern = false) =>
const compressOther = (rootDir, modernDir, compress) =>
gulp
.src(
[
`${rootDir}/**/${filesGlob}`,
compressModern ? undefined : `!${modernDir}/**/${filesGlob}`,
`!${modernDir}/**/${filesGlob}`,
`!${rootDir}/{sw-modern,service_worker}.js`,
`${rootDir}/{authorize,onboarding}.html`,
].filter(Boolean),
{ base: rootDir }
],
{ base: rootDir, allowEmpty: true }
)
.pipe(zopfli(zopfliOptions))
.pipe(compress === "zopfli" ? zopfli(zopfliOptions) : brotli(brotliOptions))
.pipe(gulp.dest(rootDir));
const compressAppBrotli = () =>
compressDistBrotli(paths.app_output_root, paths.app_output_latest);
const compressHassioBrotli = () =>
compressDistBrotli(
const compressAppModernBrotli = () =>
compressModern(paths.app_output_root, paths.app_output_latest, "brotli");
const compressAppModernZopfli = () =>
compressModern(paths.app_output_root, paths.app_output_latest, "zopfli");
const compressHassioModernBrotli = () =>
compressModern(
paths.hassio_output_root,
paths.hassio_output_latest,
false
"brotli"
);
const compressAppZopfli = () =>
compressDistZopfli(paths.app_output_root, paths.app_output_latest);
const compressHassioZopfli = () =>
compressDistZopfli(
const compressHassioModernZopfli = () =>
compressModern(
paths.hassio_output_root,
paths.hassio_output_latest,
true
"zopfli"
);
gulp.task("compress-app", gulp.parallel(compressAppBrotli, compressAppZopfli));
const compressAppOtherBrotli = () =>
compressOther(paths.app_output_root, paths.app_output_latest, "brotli");
const compressAppOtherZopfli = () =>
compressOther(paths.app_output_root, paths.app_output_latest, "zopfli");
const compressHassioOtherBrotli = () =>
compressOther(paths.hassio_output_root, paths.hassio_output_latest, "brotli");
const compressHassioOtherZopfli = () =>
compressOther(paths.hassio_output_root, paths.hassio_output_latest, "zopfli");
gulp.task(
"compress-app",
gulp.parallel(
compressAppModernBrotli,
compressAppOtherBrotli,
compressAppModernZopfli,
compressAppOtherZopfli
)
);
gulp.task(
"compress-hassio",
gulp.parallel(compressHassioBrotli, compressHassioZopfli)
gulp.parallel(
compressHassioModernBrotli,
compressHassioOtherBrotli,
compressHassioModernZopfli,
compressHassioOtherZopfli
)
);
+4 -18
View File
@@ -11,7 +11,6 @@ import { minify } from "html-minifier-terser";
import template from "lodash.template";
import { dirname, extname, resolve } from "node:path";
import { htmlMinifierOptions, terserOptions } from "../bundle.cjs";
import env from "../env.cjs";
import paths from "../paths.cjs";
// macOS companion app has no way to obtain the Safari version used by WKWebView,
@@ -56,7 +55,6 @@ const getCommonTemplateVars = () => {
{ ignorePatch: true, allowHigherVersions: true }
);
return {
useWDS: env.useWDS(),
modernRegex: compileRegex(browserRegexes.concat(haMacOSRegex)).toString(),
};
};
@@ -92,13 +90,11 @@ const minifyHtml = (content, ext) => {
};
// Function to generate a dev task for each project's configuration
// Note Currently WDS paths are hard-coded to only work for app
const genPagesDevTask =
(
pageEntries,
inputRoot,
outputRoot,
useWDS = false,
inputSub = "src/html",
publicRoot = ""
) =>
@@ -109,17 +105,13 @@ const genPagesDevTask =
resolve(inputRoot, inputSub, `${page}.template`),
{
...commonVars,
latestEntryJS: entries.map((entry) =>
useWDS
? `http://localhost:8000/src/entrypoints/${entry}.ts`
: `${publicRoot}/frontend_latest/${entry}.js`
latestEntryJS: entries.map(
(entry) => `${publicRoot}/frontend_latest/${entry}.js`
),
es5EntryJS: entries.map(
(entry) => `${publicRoot}/frontend_es5/${entry}.js`
),
latestCustomPanelJS: useWDS
? "http://localhost:8000/src/entrypoints/custom-panel.ts"
: `${publicRoot}/frontend_latest/custom-panel.js`,
latestCustomPanelJS: `${publicRoot}/frontend_latest/custom-panel.js`,
es5CustomPanelJS: `${publicRoot}/frontend_es5/custom-panel.js`,
}
);
@@ -176,12 +168,7 @@ const APP_PAGE_ENTRIES = {
gulp.task(
"gen-pages-app-dev",
genPagesDevTask(
APP_PAGE_ENTRIES,
paths.polymer_dir,
paths.app_output_root,
env.useWDS()
)
genPagesDevTask(APP_PAGE_ENTRIES, paths.polymer_dir, paths.app_output_root)
);
gulp.task(
@@ -287,7 +274,6 @@ gulp.task(
HASSIO_PAGE_ENTRIES,
paths.hassio_dir,
paths.hassio_output_root,
undefined,
"src",
paths.hassio_publicPath
)
@@ -66,7 +66,7 @@ gulp.task("fetch-nightly-translations", async function () {
tokenAuth = JSON.parse(await readFile(TOKEN_FILE, "utf-8"));
} catch {
if (!allowTokenSetup) {
console.log("No token found so build wil continue with English only");
console.log("No token found so build will continue with English only");
return;
}
const auth = createOAuthDeviceAuth({
-12
View File
@@ -67,12 +67,6 @@ function copyPolyfills(staticDir) {
);
}
function copyLoaderJS(staticDir) {
const staticPath = genStaticPath(staticDir);
copyFileDir(npmPath("systemjs/dist/s.min.js"), staticPath("js"));
copyFileDir(npmPath("systemjs/dist/s.min.js.map"), staticPath("js"));
}
function copyFonts(staticDir) {
const staticPath = genStaticPath(staticDir);
// Local fonts
@@ -140,8 +134,6 @@ gulp.task("copy-static-app", async () => {
const staticDir = paths.app_output_static;
// Basic static files
fs.copySync(polyPath("public"), paths.app_output_root);
copyLoaderJS(staticDir);
copyPolyfills(staticDir);
copyFonts(staticDir);
copyTranslations(staticDir);
@@ -164,8 +156,6 @@ gulp.task("copy-static-demo", async () => {
);
// Copy demo static files
fs.copySync(path.resolve(paths.demo_dir, "public"), paths.demo_output_root);
copyLoaderJS(paths.demo_output_static);
copyPolyfills(paths.demo_output_static);
copyMapPanel(paths.demo_output_static);
copyFonts(paths.demo_output_static);
@@ -179,8 +169,6 @@ gulp.task("copy-static-cast", async () => {
fs.copySync(polyPath("public/static"), paths.cast_output_static);
// Copy cast static files
fs.copySync(path.resolve(paths.cast_dir, "public"), paths.cast_output_root);
copyLoaderJS(paths.cast_output_static);
copyPolyfills(paths.cast_output_static);
copyMapPanel(paths.cast_output_static);
copyFonts(paths.cast_output_static);
+17
View File
@@ -0,0 +1,17 @@
import "./app.js";
import "./cast.js";
import "./clean.js";
import "./compress.js";
import "./demo.js";
import "./download-translations.js";
import "./entry-html.js";
import "./fetch-nightly-translations.js";
import "./gallery.js";
import "./gather-static.js";
import "./gen-icons-json.js";
import "./hassio.js";
import "./landing-page.js";
import "./locale-data.js";
import "./rspack.js";
import "./service-worker.js";
import "./translations.js";
-10
View File
@@ -1,10 +0,0 @@
import gulp from "gulp";
import { startDevServer } from "@web/dev-server";
gulp.task("wds-watch-app", async () => {
startDevServer({
config: {
watch: true,
},
});
});
+1 -1
View File
@@ -25,7 +25,7 @@ Home Assistant Cast is made up of two separate applications:
### Setting dev variables
Open `src/cast/dev_const.ts` and change `CAST_DEV_APP_ID` to the ID of the app you just created. And set the `CAST_DEV_HASS_URL` to the url of you development machine.
Open `src/cast/dev_const.ts` and change `CAST_DEV_APP_ID` to the ID of the app you just created. And set the `CAST_DEV_HASS_URL` to the url of your development machine.
### Changing configuration
-1
View File
@@ -7,7 +7,6 @@
<%= renderTemplate("../../../src/html/_style_base.html.template") %>
<style>
body {
background-color: white;
font-size: initial;
}
</style>
+54 -56
View File
@@ -3,7 +3,7 @@ import "@material/mwc-list/mwc-list";
import type { ActionDetail } from "@material/mwc-list/mwc-list";
import { mdiCast, mdiCastConnected, mdiViewDashboard } from "@mdi/js";
import type { Auth, Connection } from "home-assistant-js-websocket";
import type { CSSResultGroup, TemplateResult } from "lit";
import type { TemplateResult } from "lit";
import { LitElement, css, html } from "lit";
import { customElement, property, state } from "lit/decorators";
import type { CastManager } from "../../../../src/cast/cast_manager";
@@ -203,74 +203,72 @@ class HcCast extends LitElement {
}
this.connection.close();
location.reload();
} catch (err: any) {
} catch (_err: any) {
alert("Unable to log out!");
}
}
static get styles(): CSSResultGroup {
return css`
.center-item {
display: flex;
justify-content: space-around;
}
static styles = css`
.center-item {
display: flex;
justify-content: space-around;
}
.action-item {
display: flex;
align-items: center;
justify-content: space-between;
}
.action-item {
display: flex;
align-items: center;
justify-content: space-between;
}
.question {
position: relative;
padding: 8px 16px;
}
.question {
position: relative;
padding: 8px 16px;
}
.question:before {
border-radius: 4px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
pointer-events: none;
content: "";
background-color: var(--primary-color);
opacity: 0.12;
will-change: opacity;
}
.question:before {
border-radius: 4px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
pointer-events: none;
content: "";
background-color: var(--primary-color);
opacity: 0.12;
will-change: opacity;
}
.connection,
.connection a {
color: var(--secondary-text-color);
}
.connection,
.connection a {
color: var(--secondary-text-color);
}
mwc-button ha-svg-icon {
margin-right: 8px;
margin-inline-end: 8px;
margin-inline-start: initial;
height: 18px;
}
mwc-button ha-svg-icon {
margin-right: 8px;
margin-inline-end: 8px;
margin-inline-start: initial;
height: 18px;
}
ha-list-item ha-icon,
ha-list-item ha-svg-icon {
padding: 12px;
color: var(--secondary-text-color);
}
ha-list-item ha-icon,
ha-list-item ha-svg-icon {
padding: 12px;
color: var(--secondary-text-color);
}
:host([hide-icons]) ha-icon {
display: none;
}
:host([hide-icons]) ha-icon {
display: none;
}
.spacer {
flex: 1;
}
.spacer {
flex: 1;
}
.card-content a {
color: var(--primary-color);
}
`;
}
.card-content a {
color: var(--primary-color);
}
`;
}
declare global {
+28 -30
View File
@@ -13,7 +13,7 @@ import {
ERR_INVALID_HTTPS_TO_HTTP,
getAuth,
} from "home-assistant-js-websocket";
import type { CSSResultGroup, TemplateResult } from "lit";
import type { TemplateResult } from "lit";
import { css, html, LitElement } from "lit";
import { customElement, state } from "lit/decorators";
import type { CastManager } from "../../../../src/cast/cast_manager";
@@ -215,7 +215,7 @@ export class HcConnect extends LitElement {
let url: URL;
try {
url = new URL(value);
} catch (err: any) {
} catch (_err: any) {
this.error = "Invalid URL";
return;
}
@@ -252,7 +252,7 @@ export class HcConnect extends LitElement {
this.loading = false;
return;
} finally {
// Clear url if we have a auth callback in url.
// Clear url if we have an auth callback in url.
if (location.search.includes("auth_callback=1")) {
history.replaceState(null, "", location.pathname);
}
@@ -288,41 +288,39 @@ export class HcConnect extends LitElement {
try {
saveTokens(null);
location.reload();
} catch (err: any) {
} catch (_err: any) {
alert("Unable to log out!");
}
}
static get styles(): CSSResultGroup {
return css`
.card-content a {
color: var(--primary-color);
}
.card-actions a {
text-decoration: none;
}
.error {
color: red;
font-weight: bold;
}
static styles = css`
.card-content a {
color: var(--primary-color);
}
.card-actions a {
text-decoration: none;
}
.error {
color: red;
font-weight: bold;
}
.error a {
color: darkred;
}
.error a {
color: darkred;
}
mwc-button ha-svg-icon {
margin-left: 8px;
}
mwc-button ha-svg-icon {
margin-left: 8px;
}
.spacer {
flex: 1;
}
.spacer {
flex: 1;
}
ha-textfield {
width: 100%;
}
`;
}
ha-textfield {
width: 100%;
}
`;
}
declare global {
+87 -89
View File
@@ -1,6 +1,6 @@
import type { Auth, Connection, HassUser } from "home-assistant-js-websocket";
import { getUser } from "home-assistant-js-websocket";
import type { CSSResultGroup, TemplateResult } from "lit";
import type { TemplateResult } from "lit";
import { css, html, LitElement } from "lit";
import { customElement, property } from "lit/decorators";
import "../../../../src/components/ha-card";
@@ -63,96 +63,94 @@ class HcLayout extends LitElement {
}
}
static get styles(): CSSResultGroup {
return css`
static styles = css`
:host {
display: flex;
min-height: 100%;
align-items: center;
justify-content: center;
flex-direction: column;
}
ha-card {
display: flex;
width: 100%;
max-width: 500px;
}
.layout {
display: flex;
flex-direction: column;
}
.card-header {
color: var(--ha-card-header-color, var(--primary-text-color));
font-family: var(--ha-card-header-font-family, inherit);
font-size: var(--ha-card-header-font-size, 24px);
letter-spacing: -0.012em;
line-height: 32px;
padding: 24px 16px 16px;
display: block;
margin: 0;
}
.hero {
border-radius: 4px 4px 0 0;
}
.subtitle {
font-size: 14px;
color: var(--secondary-text-color);
line-height: initial;
}
.subtitle a {
color: var(--secondary-text-color);
}
:host ::slotted(.card-content:not(:first-child)),
slot:not(:first-child)::slotted(.card-content) {
padding-top: 0px;
margin-top: -8px;
}
:host ::slotted(.section-header) {
font-weight: 500;
padding: 4px 16px;
text-transform: uppercase;
}
:host ::slotted(.card-content) {
padding: 16px;
flex: 1;
}
:host ::slotted(.card-actions) {
border-top: 1px solid #e8e8e8;
padding: 5px 16px;
display: flex;
}
img {
width: 100%;
}
.footer {
text-align: center;
font-size: 12px;
padding: 8px 0 24px;
color: var(--secondary-text-color);
}
.footer a {
color: var(--secondary-text-color);
}
@media all and (max-width: 500px) {
:host {
display: flex;
min-height: 100%;
align-items: center;
justify-content: center;
flex-direction: column;
justify-content: flex-start;
min-height: 90%;
margin-bottom: 30px;
}
ha-card {
display: flex;
width: 100%;
max-width: 500px;
}
.layout {
display: flex;
flex-direction: column;
}
.card-header {
color: var(--ha-card-header-color, var(--primary-text-color));
font-family: var(--ha-card-header-font-family, inherit);
font-size: var(--ha-card-header-font-size, 24px);
letter-spacing: -0.012em;
line-height: 32px;
padding: 24px 16px 16px;
display: block;
margin: 0;
}
.hero {
border-radius: 4px 4px 0 0;
}
.subtitle {
font-size: 14px;
color: var(--secondary-text-color);
line-height: initial;
}
.subtitle a {
color: var(--secondary-text-color);
}
:host ::slotted(.card-content:not(:first-child)),
slot:not(:first-child)::slotted(.card-content) {
padding-top: 0px;
margin-top: -8px;
}
:host ::slotted(.section-header) {
font-weight: 500;
padding: 4px 16px;
text-transform: uppercase;
}
:host ::slotted(.card-content) {
padding: 16px;
flex: 1;
}
:host ::slotted(.card-actions) {
border-top: 1px solid #e8e8e8;
padding: 5px 16px;
display: flex;
}
img {
width: 100%;
}
.footer {
text-align: center;
font-size: 12px;
padding: 8px 0 24px;
color: var(--secondary-text-color);
}
.footer a {
color: var(--secondary-text-color);
}
@media all and (max-width: 500px) {
:host {
justify-content: flex-start;
min-height: 90%;
margin-bottom: 30px;
}
}
`;
}
}
`;
}
declare global {
+24 -26
View File
@@ -1,4 +1,4 @@
import type { CSSResultGroup, TemplateResult } from "lit";
import type { TemplateResult } from "lit";
import { css, html, LitElement } from "lit";
import { customElement, property } from "lit/decorators";
import type { HomeAssistant } from "../../../../src/types";
@@ -24,31 +24,29 @@ class HcLaunchScreen extends LitElement {
`;
}
static get styles(): CSSResultGroup {
return css`
:host {
display: block;
height: 100vh;
background-color: #f2f4f9;
font-size: 24px;
}
.container {
display: flex;
flex-direction: column;
text-align: center;
align-items: center;
height: 100%;
justify-content: space-evenly;
}
img {
max-width: 80%;
object-fit: cover;
}
.status {
color: #1d2126;
}
`;
}
static styles = css`
:host {
display: block;
height: 100vh;
background-color: #f2f4f9;
font-size: 24px;
}
.container {
display: flex;
flex-direction: column;
text-align: center;
align-items: center;
height: 100%;
justify-content: space-evenly;
}
img {
max-width: 80%;
object-fit: cover;
}
.status {
color: #1d2126;
}
`;
}
declare global {
+19 -28
View File
@@ -1,10 +1,4 @@
import {
css,
type CSSResultGroup,
html,
LitElement,
type TemplateResult,
} from "lit";
import { css, html, LitElement, type TemplateResult } from "lit";
import { customElement, property } from "lit/decorators";
import { fireEvent } from "../../../../src/common/dom/fire_event";
import type { LovelaceConfig } from "../../../../src/data/lovelace/config/types";
@@ -14,6 +8,7 @@ import "../../../../src/panels/lovelace/views/hui-view";
import "../../../../src/panels/lovelace/views/hui-view-container";
import type { HomeAssistant } from "../../../../src/types";
import "./hc-launch-screen";
import "../../../../src/panels/lovelace/views/hui-view-background";
(window as any).loadCardHelpers = () =>
import("../../../../src/panels/lovelace/custom-card-helpers");
@@ -25,9 +20,9 @@ class HcLovelace extends LitElement {
@property({ attribute: false })
public lovelaceConfig!: LovelaceConfig;
@property() public viewPath?: string | number | null;
@property({ attribute: false }) public viewPath?: string | number | null;
@property() public urlPath: string | null = null;
@property({ attribute: false }) public urlPath: string | null = null;
protected render(): TemplateResult {
const index = this._viewIndex;
@@ -57,11 +52,9 @@ class HcLovelace extends LitElement {
const background = viewConfig.background || this.lovelaceConfig.background;
return html`
<hui-view-container
.hass=${this.hass}
.background=${background}
.theme=${viewConfig.theme}
>
<hui-view-container .hass=${this.hass} .theme=${viewConfig.theme}>
<hui-view-background .hass=${this.hass} .background=${background}>
</hui-view-background>
<hui-view
.hass=${this.hass}
.lovelace=${lovelace}
@@ -118,20 +111,18 @@ class HcLovelace extends LitElement {
return undefined;
}
static get styles(): CSSResultGroup {
return css`
hui-view-container {
display: flex;
position: relative;
min-height: 100vh;
box-sizing: border-box;
}
hui-view {
flex: 1 1 100%;
max-width: 100%;
}
`;
}
static styles = css`
hui-view-container {
display: flex;
position: relative;
min-height: 100vh;
box-sizing: border-box;
}
hui-view-container > * {
flex: 1 1 100%;
max-width: 100%;
}
`;
}
export interface CastViewChanged {
+5 -5
View File
@@ -144,10 +144,10 @@ export class HcMain extends HassElement {
}
if (senderId) {
this.sendMessage(senderId, status);
this._sendMessage(senderId, status);
} else {
for (const sender of castContext.getSenders()) {
this.sendMessage(sender.id, status);
this._sendMessage(sender.id, status);
}
}
}
@@ -164,10 +164,10 @@ export class HcMain extends HassElement {
};
if (senderId) {
this.sendMessage(senderId, error);
this._sendMessage(senderId, error);
} else {
for (const sender of castContext.getSenders()) {
this.sendMessage(sender.id, error);
this._sendMessage(sender.id, error);
}
}
}
@@ -394,7 +394,7 @@ export class HcMain extends HassElement {
}
}
private sendMessage(senderId: string, response: any) {
private _sendMessage(senderId: string, response: any) {
castContext.sendCustomMessage(CAST_NS, senderId, response);
}
}
+1 -1
View File
@@ -3,7 +3,7 @@ import type { Lovelace } from "../../../src/panels/lovelace/types";
import { energyEntities } from "../stubs/entities";
import type { DemoConfig } from "./types";
export const demoConfigs: Array<() => Promise<DemoConfig>> = [
export const demoConfigs: (() => Promise<DemoConfig>)[] = [
() => import("./sections").then((mod) => mod.demoSections),
() => import("./arsaboo").then((mod) => mod.demoArsaboo),
() => import("./teachingbirds").then((mod) => mod.demoTeachingbirds),
+29 -33
View File
@@ -1,5 +1,4 @@
import { mdiTelevision } from "@mdi/js";
import type { CSSResultGroup } from "lit";
import { css, html, LitElement, nothing } from "lit";
import { customElement, state } from "lit/decorators";
import type { CastManager } from "../../../src/cast/cast_manager";
@@ -46,7 +45,6 @@ class CastDemoRow extends LitElement implements LovelaceRow {
this.requestUpdate();
});
mgr.castContext.addEventListener(
// eslint-disable-next-line no-undef
cast.framework.CastContextEventType.SESSION_STATE_CHANGED,
(ev) => {
// On Android, opening a new session always results in SESSION_RESUMED.
@@ -68,37 +66,35 @@ class CastDemoRow extends LitElement implements LovelaceRow {
this.style.display = this._castManager ? "" : "none";
}
static get styles(): CSSResultGroup {
return css`
:host {
display: flex;
align-items: center;
}
ha-svg-icon {
padding: 8px;
color: var(--paper-item-icon-color);
}
.flex {
flex: 1;
overflow: hidden;
margin-left: 16px;
display: flex;
justify-content: space-between;
align-items: center;
}
.name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
google-cast-launcher {
cursor: pointer;
display: inline-block;
height: 24px;
width: 24px;
}
`;
}
static styles = css`
:host {
display: flex;
align-items: center;
}
ha-svg-icon {
padding: 8px;
color: var(--paper-item-icon-color);
}
.flex {
flex: 1;
overflow: hidden;
margin-left: 16px;
display: flex;
justify-content: space-between;
align-items: center;
}
.name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
google-cast-launcher {
cursor: pointer;
display: inline-block;
height: 24px;
width: 24px;
}
`;
}
declare global {
+2 -1
View File
@@ -26,12 +26,13 @@ export class HADemoCard extends LitElement implements LovelaceCard {
@state() private _switching = false;
private _hidden = localStorage.hide_demo_card;
private _hidden = window.localStorage.getItem("hide_demo_card");
public getCardSize() {
return this._hidden ? 0 : 2;
}
// eslint-disable-next-line @typescript-eslint/no-empty-function
public setConfig(_config: LovelaceCardConfig) {}
protected render() {
+1
View File
@@ -131,6 +131,7 @@ export const mockHistory = (mockHass: MockHomeAssistant) => {
});
}, 1);
// eslint-disable-next-line @typescript-eslint/no-empty-function
return () => {};
}
);
+1 -1
View File
@@ -43,7 +43,7 @@ customElements.whenDefined("hui-root").then(() => {
const index = (ev as CustomEvent).detail.index;
try {
await setDemoConfig(this.hass, this.lovelace!, index);
} catch (err: any) {
} catch (_err: any) {
setDemoConfig(this.hass, this.lovelace!, selectedDemoConfigIndex);
alert("Failed to switch config :-(");
}
@@ -15,6 +15,7 @@ export const mockPersistentNotification = (hass: MockHomeAssistant) => {
},
},
} as PersistentNotificationMessage);
// eslint-disable-next-line @typescript-eslint/no-empty-function
return () => {};
});
};
+3 -3
View File
@@ -15,7 +15,7 @@ import type { MockHomeAssistant } from "../../../src/fake_data/provide_hass";
const generateMeanStatistics = (
start: Date,
end: Date,
// eslint-disable-next-line @typescript-eslint/default-param-last
// eslint-disable-next-line default-param-last
period: "5minute" | "hour" | "day" | "month" = "hour",
initValue: number,
maxDiff: number
@@ -52,7 +52,7 @@ const generateMeanStatistics = (
const generateSumStatistics = (
start: Date,
end: Date,
// eslint-disable-next-line @typescript-eslint/default-param-last
// eslint-disable-next-line default-param-last
period: "5minute" | "hour" | "day" | "month" = "hour",
initValue: number,
maxDiff: number
@@ -89,7 +89,7 @@ const generateSumStatistics = (
const generateCurvedStatistics = (
start: Date,
end: Date,
// eslint-disable-next-line @typescript-eslint/default-param-last
// eslint-disable-next-line default-param-last
_period: "5minute" | "hour" | "day" | "month" = "hour",
initValue: number,
maxDiff: number,
+1
View File
@@ -11,6 +11,7 @@ export const mockTemplate = (hass: MockHomeAssistant) => {
result: msg.template,
listeners: { all: false, domains: [], entities: [], time: false },
});
// eslint-disable-next-line @typescript-eslint/no-empty-function
return () => {};
});
};
+1
View File
@@ -22,5 +22,6 @@ export const mockTodo = (hass: MockHomeAssistant) => {
},
] as TodoItem[],
}));
// eslint-disable-next-line @typescript-eslint/no-empty-function
hass.mockWS("todo/item/subscribe", (_msg, _hass) => () => {});
};
+47 -23
View File
@@ -7,10 +7,10 @@ import { fileURLToPath } from "node:url";
import js from "@eslint/js";
import { FlatCompat } from "@eslint/eslintrc";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const _filename = fileURLToPath(import.meta.url);
const _dirname = path.dirname(_filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
baseDirectory: _dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});
@@ -18,8 +18,9 @@ const compat = new FlatCompat({
export default [
...compat.extends(
"airbnb-base",
"airbnb-typescript/base",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/strict",
"plugin:@typescript-eslint/stylistic",
"plugin:wc/recommended",
"plugin:lit/all",
"plugin:lit-a11y/recommended",
@@ -50,8 +51,6 @@ export default [
ecmaFeatures: {
modules: true,
},
project: "./tsconfig.json",
},
},
@@ -114,12 +113,10 @@ export default [
"@typescript-eslint/no-shadow": ["error"],
"@typescript-eslint/naming-convention": [
"off",
"error",
{
selector: "default",
format: ["camelCase", "snake_case"],
leadingUnderscore: "allow",
trailingUnderscore: "allow",
selector: ["objectLiteralProperty", "objectLiteralMethod"],
format: null,
},
{
selector: ["variable"],
@@ -127,38 +124,65 @@ export default [
leadingUnderscore: "allow",
trailingUnderscore: "allow",
},
{
selector: ["variable"],
modifiers: ["exported"],
format: ["camelCase", "PascalCase", "UPPER_CASE"],
},
{
selector: "typeLike",
format: ["PascalCase"],
},
{
selector: "method",
modifiers: ["public"],
format: ["camelCase"],
leadingUnderscore: "forbid",
},
{
selector: "method",
modifiers: ["private"],
format: ["camelCase"],
leadingUnderscore: "require",
},
],
"@typescript-eslint/no-unused-vars": "off",
"unused-imports/no-unused-vars": [
"@typescript-eslint/no-unused-vars": [
"error",
{
vars: "all",
varsIgnorePattern: "^_",
args: "after-used",
args: "all",
argsIgnorePattern: "^_",
caughtErrors: "all",
caughtErrorsIgnorePattern: "^_",
destructuredArrayIgnorePattern: "^_",
varsIgnorePattern: "^_",
ignoreRestSiblings: true,
},
],
"unused-imports/no-unused-imports": "error",
"lit/attribute-names": "warn",
"lit/attribute-names": "error",
"lit/attribute-value-entities": "off",
"lit/no-template-map": "off",
"lit/no-native-attributes": "warn",
"lit/no-this-assign-in-render": "warn",
"lit/no-native-attributes": "error",
"lit/no-this-assign-in-render": "error",
"lit-a11y/click-events-have-key-events": ["off"],
"lit-a11y/no-autofocus": "off",
"lit-a11y/alt-text": "warn",
"lit-a11y/anchor-is-valid": "warn",
"lit-a11y/role-has-required-aria-attrs": "warn",
"lit-a11y/alt-text": "error",
"lit-a11y/anchor-is-valid": "error",
"lit-a11y/role-has-required-aria-attrs": "error",
"@typescript-eslint/consistent-type-imports": "error",
"@typescript-eslint/no-import-type-side-effects": "error",
camelcase: "off",
"@typescript-eslint/no-dynamic-delete": "off",
"@typescript-eslint/no-empty-object-type": [
"error",
{
allowInterfaces: "always",
allowObjectTypes: "always",
},
],
"no-use-before-define": "off",
},
},
];
@@ -9,6 +9,7 @@ import "../../../src/components/ha-card";
@customElement("demo-black-white-row")
class DemoBlackWhiteRow extends LitElement {
// eslint-disable-next-line lit/no-native-attributes
@property() title!: string;
@property() value?: any;
+2 -1
View File
@@ -18,7 +18,8 @@ class DemoCard extends LitElement {
@property({ attribute: false }) public config!: DemoCardConfig;
@property({ type: Boolean }) public showConfig = false;
@property({ attribute: "show-config", type: Boolean })
public showConfig = false;
@state() private _size?: number;
+2 -2
View File
@@ -44,11 +44,11 @@ class DemoCards extends LitElement {
`;
}
_showConfigToggled(ev) {
private _showConfigToggled(ev) {
this._showConfig = ev.target.checked;
}
_darkThemeToggled(ev) {
private _darkThemeToggled(ev) {
applyThemesOnElement(this._container, { themes: {} } as any, "default", {
dark: ev.target.checked,
});
+4 -3
View File
@@ -10,9 +10,10 @@ import type { HomeAssistant } from "../../../src/types";
class DemoMoreInfo extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@property() public entityId!: string;
@property({ attribute: false }) public entityId!: string;
@property({ type: Boolean }) public showConfig = false;
@property({ attribute: "show-config", type: Boolean })
public showConfig = false;
render() {
const state = this._getState(this.entityId, this.hass.states);
@@ -23,7 +24,7 @@ class DemoMoreInfo extends LitElement {
<state-card-content
.stateObj=${state}
.hass=${this.hass}
inDialog
in-dialog
></state-card-content>
<more-info-content
+2 -2
View File
@@ -58,11 +58,11 @@ class DemoMoreInfos extends LitElement {
}
`;
_showConfigToggled(ev) {
private _showConfigToggled(ev) {
this._showConfig = ev.target.checked;
}
_darkThemeToggled(ev) {
private _darkThemeToggled(ev) {
applyThemesOnElement(
this.shadowRoot!.querySelector("#container"),
{
+1 -1
View File
@@ -182,7 +182,7 @@ class HaGallery extends LitElement {
}
}
_menuTapped() {
private _menuTapped() {
this._drawer.open = !this._drawer.open;
}
@@ -42,7 +42,7 @@ In most cases, Create can be paired with Delete, and Add can be paired with Remo
## Add
An already-exisiting item.
An already-existing item.
For example:
+18 -20
View File
@@ -177,26 +177,24 @@ export class DemoAutomationDescribeAction extends LitElement {
this._action = ev.detail.isValid ? ev.detail.value : undefined;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.action {
padding: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
span {
margin-right: 16px;
}
ha-yaml-editor {
width: 50%;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.action {
padding: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
span {
margin-right: 16px;
}
ha-yaml-editor {
width: 50%;
}
`;
}
declare global {
@@ -98,26 +98,24 @@ export class DemoAutomationDescribeCondition extends LitElement {
this._condition = ev.detail.isValid ? ev.detail.value : undefined;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.condition {
padding: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
span {
margin-right: 16px;
}
ha-yaml-editor {
width: 50%;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.condition {
padding: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
span {
margin-right: 16px;
}
ha-yaml-editor {
width: 50%;
}
`;
}
declare global {
@@ -121,26 +121,24 @@ export class DemoAutomationDescribeTrigger extends LitElement {
this._trigger = ev.detail.isValid ? ev.detail.value : undefined;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.trigger {
padding: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
span {
margin-right: 16px;
}
ha-yaml-editor {
width: 50%;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.trigger {
padding: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
span {
margin-right: 16px;
}
ha-yaml-editor {
width: 50%;
}
`;
}
declare global {
@@ -63,11 +63,6 @@ class DemoHaAutomationEditorAction extends LitElement {
}
protected render(): TemplateResult {
const valueChanged = (ev) => {
const sampleIdx = ev.target.sampleIdx;
this.data[sampleIdx] = ev.detail.value;
this.requestUpdate();
};
return html`
<div class="options">
<ha-formfield label="Disabled">
@@ -92,7 +87,7 @@ class DemoHaAutomationEditorAction extends LitElement {
.actions=${this.data[sampleIdx]}
.sampleIdx=${sampleIdx}
.disabled=${this._disabled}
@value-changed=${valueChanged}
@value-changed=${this._handleValueChange}
></ha-automation-action>
`
)}
@@ -102,6 +97,12 @@ class DemoHaAutomationEditorAction extends LitElement {
`;
}
private _handleValueChange(ev) {
const sampleIdx = ev.target.sampleIdx;
this.data[sampleIdx] = ev.detail.value;
this.requestUpdate();
}
private _handleOptionChange(ev) {
this[`_${ev.target.name}`] = ev.target.checked;
}
@@ -1,4 +1,3 @@
/* eslint-disable lit/no-template-arrow */
import type { TemplateResult } from "lit";
import { LitElement, html, css } from "lit";
import { customElement, state } from "lit/decorators";
@@ -104,11 +103,6 @@ export class DemoAutomationEditorCondition extends LitElement {
}
protected render(): TemplateResult {
const valueChanged = (ev) => {
const sampleIdx = ev.target.sampleIdx;
this.data[sampleIdx] = ev.detail.value;
this.requestUpdate();
};
return html`
<div class="options">
<ha-formfield label="Disabled">
@@ -133,7 +127,7 @@ export class DemoAutomationEditorCondition extends LitElement {
.conditions=${this.data[sampleIdx]}
.sampleIdx=${sampleIdx}
.disabled=${this._disabled}
@value-changed=${valueChanged}
@value-changed=${this._handleValueChange}
></ha-automation-condition>
`
)}
@@ -143,6 +137,12 @@ export class DemoAutomationEditorCondition extends LitElement {
`;
}
private _handleValueChange(ev) {
const sampleIdx = ev.target.sampleIdx;
this.data[sampleIdx] = ev.detail.value;
this.requestUpdate();
}
private _handleOptionChange(ev) {
this[`_${ev.target.name}`] = ev.target.checked;
}
@@ -149,11 +149,6 @@ export class DemoAutomationEditorTrigger extends LitElement {
}
protected render(): TemplateResult {
const valueChanged = (ev) => {
const sampleIdx = ev.target.sampleIdx;
this.data[sampleIdx] = ev.detail.value;
this.requestUpdate();
};
return html`
<div class="options">
<ha-formfield label="Disabled">
@@ -178,7 +173,7 @@ export class DemoAutomationEditorTrigger extends LitElement {
.triggers=${this.data[sampleIdx]}
.sampleIdx=${sampleIdx}
.disabled=${this._disabled}
@value-changed=${valueChanged}
@value-changed=${this._handleValueChange}
></ha-automation-trigger>
`
)}
@@ -188,6 +183,12 @@ export class DemoAutomationEditorTrigger extends LitElement {
`;
}
private _handleValueChange(ev) {
const sampleIdx = ev.target.sampleIdx;
this.data[sampleIdx] = ev.detail.value;
this.requestUpdate();
}
private _handleOptionChange(ev) {
this[`_${ev.target.name}`] = ev.target.checked;
}
+14 -16
View File
@@ -58,22 +58,20 @@ export class DemoAutomationTraceTimeline extends LitElement {
hass.updateTranslations("config", "en");
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px;
}
.card-content {
display: flex;
}
button {
position: absolute;
top: 0;
right: 0;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px;
}
.card-content {
display: flex;
}
button {
position: absolute;
top: 0;
right: 0;
}
`;
}
declare global {
+34 -31
View File
@@ -31,22 +31,17 @@ export class DemoAutomationTrace extends LitElement {
<hat-script-graph
.trace=${trace.trace}
.selected=${this._selected[idx]}
@graph-node-selected=${(ev) => {
this._selected = { ...this._selected, [idx]: ev.detail.path };
}}
@graph-node-selected=${this._handleGraphNodeSelected}
.sampleIdx=${idx}
></hat-script-graph>
<hat-trace-timeline
allowPick
allow-pick
.hass=${this.hass}
.trace=${trace.trace}
.logbookEntries=${trace.logbookEntries}
.selectedPath=${this._selected[idx]}
@value-changed=${(ev) => {
this._selected = {
...this._selected,
[idx]: ev.detail.value,
};
}}
@value-changed=${this._handleTimelineValueChanged}
.sampleIdx=${idx}
></hat-trace-timeline>
<button @click=${() => console.log(trace)}>Log trace</button>
</div>
@@ -63,28 +58,36 @@ export class DemoAutomationTrace extends LitElement {
hass.updateTranslations("config", "en");
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px;
}
.card-content {
display: flex;
}
.card-content > * {
margin-right: 16px;
}
.card-content > *:last-child {
margin-right: 0;
}
button {
position: absolute;
top: 0;
right: 0;
}
`;
private _handleTimelineValueChanged(ev) {
const sampleIdx = ev.target.sampleIdx;
this._selected = { ...this._selected, [sampleIdx]: ev.detail.value };
}
private _handleGraphNodeSelected(ev) {
const sampleIdx = ev.target.sampleIdx;
this._selected = { ...this._selected, [sampleIdx]: ev.detail.path };
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px;
}
.card-content {
display: flex;
}
.card-content > * {
margin-right: 16px;
}
.card-content > *:last-child {
margin-right: 0;
}
button {
position: absolute;
top: 0;
right: 0;
}
`;
}
declare global {
+10 -10
View File
@@ -19,7 +19,7 @@ The alert offers four severity levels that set a distinctive icon and color.
</ha-alert>
<ha-alert alert-type="warning">
This is an warning alert — check it out!
This is a warning alert — check it out!
</ha-alert>
<ha-alert alert-type="info">
@@ -27,7 +27,7 @@ The alert offers four severity levels that set a distinctive icon and color.
</ha-alert>
<ha-alert alert-type="success">
This is an success alert — check it out!
This is a success alert — check it out!
</ha-alert>
**Note:** This component is by <a href="https://mui.com/components/alert/" rel="noopener noreferrer" target="_blank">MUI</a> and is not documented in the <a href="https://material.io" rel="noopener noreferrer" target="_blank">Material Design guidelines</a>.
@@ -95,7 +95,7 @@ Actions must have a tab index of 0 so that they can be reached by keyboard-only
</ha-alert>
<ha-alert alert-type="warning">
This is an warning alert — check it out!
This is a warning alert — check it out!
</ha-alert>
<ha-alert alert-type="info">
@@ -103,7 +103,7 @@ Actions must have a tab index of 0 so that they can be reached by keyboard-only
</ha-alert>
<ha-alert alert-type="success">
This is an success alert — check it out!
This is a success alert — check it out!
</ha-alert>
```html
@@ -122,37 +122,37 @@ Actions must have a tab index of 0 so that they can be reached by keyboard-only
The `title ` option should not be used without a description.
<ha-alert alert-type="success" title="Success">
This is an success alert — check it out!
This is a success alert — check it out!
</ha-alert>
```html
<ha-alert alert-type="success" title="Success">
This is an success alert — check it out!
This is a success alert — check it out!
</ha-alert>
```
**Dismissable**
<ha-alert alert-type="success" dismissable>
This is an success alert — check it out!
This is a success alert — check it out!
</ha-alert>
```html
<ha-alert alert-type="success" dismissable>
This is an success alert — check it out!
This is a success alert — check it out!
</ha-alert>
```
**Slotted action**
<ha-alert alert-type="success">
This is an success alert — check it out!
This is a success alert — check it out!
<mwc-button slot="action" label="Undo"></mwc-button>
</ha-alert>
```html
<ha-alert alert-type="success">
This is an success alert — check it out!
This is a success alert — check it out!
<mwc-button slot="action" label="Undo"></mwc-button>
</ha-alert>
```
+38 -40
View File
@@ -177,46 +177,44 @@ export class DemoHaAlert extends LitElement {
);
}
static get styles() {
return css`
:host {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.dark,
.light {
display: block;
background-color: var(--primary-background-color);
padding: 0 50px;
}
ha-card {
margin: 24px auto;
}
ha-alert {
display: block;
margin: 24px 0;
}
.condition {
padding: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
.image {
display: inline-flex;
height: 100%;
align-items: center;
}
img {
max-height: 24px;
width: 24px;
}
mwc-button {
--mdc-theme-primary: var(--primary-text-color);
}
`;
}
static styles = css`
:host {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.dark,
.light {
display: block;
background-color: var(--primary-background-color);
padding: 0 50px;
}
ha-card {
margin: 24px auto;
}
ha-alert {
display: block;
margin: 24px 0;
}
.condition {
padding: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
.image {
display: inline-flex;
height: 100%;
align-items: center;
}
img {
max-height: 24px;
width: 24px;
}
mwc-button {
--mdc-theme-primary: var(--primary-text-color);
}
`;
}
declare global {
+12 -14
View File
@@ -63,20 +63,18 @@ export class DemoHaBar extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.warning {
--ha-bar-primary-color: var(--warning-color);
}
.error {
--ha-bar-primary-color: var(--error-color);
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.warning {
--ha-bar-primary-color: var(--warning-color);
}
.error {
--ha-bar-primary-color: var(--error-color);
}
`;
}
declare global {
+11 -13
View File
@@ -103,19 +103,17 @@ export class DemoHaChips extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.card-content {
display: flex;
flex-direction: column;
align-items: flex-start;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.card-content {
display: flex;
flex-direction: column;
align-items: flex-start;
}
`;
}
declare global {
@@ -48,14 +48,12 @@ export class DemoHaCircularProgress extends LitElement {
></ha-card>`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
`;
}
declare global {
@@ -14,12 +14,12 @@ import "../../../../src/components/ha-card";
import "../../../../src/components/ha-svg-icon";
import "../../../../src/components/ha-control-button-group";
type Button = {
interface Button {
label: string;
icon?: string;
class?: string;
disabled?: boolean;
};
}
const buttons: Button[] = [
{
@@ -35,10 +35,10 @@ const buttons: Button[] = [
},
];
type ButtonGroup = {
interface ButtonGroup {
vertical?: boolean;
class?: string;
};
}
const buttonGroups: ButtonGroup[] = [
{},
@@ -137,53 +137,51 @@ export class DemoHaBarButton extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--control-button-icon-color: var(--primary-color);
--control-button-background-color: var(--primary-color);
--control-button-background-opacity: 0.2;
--control-button-border-radius: 18px;
height: 100px;
width: 100px;
}
.custom-group {
--control-button-group-thickness: 100px;
--control-button-group-border-radius: 36px;
--control-button-group-spacing: 20px;
}
.custom-group ha-control-button {
--control-button-border-radius: 18px;
--mdc-icon-size: 32px;
}
.vertical-buttons {
height: 300px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
p.title {
margin-bottom: 12px;
}
.vertical-switches > *:not(:last-child) {
margin-right: 4px;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--control-button-icon-color: var(--primary-color);
--control-button-background-color: var(--primary-color);
--control-button-background-opacity: 0.2;
--control-button-border-radius: 18px;
height: 100px;
width: 100px;
}
.custom-group {
--control-button-group-thickness: 100px;
--control-button-group-border-radius: 36px;
--control-button-group-spacing: 20px;
}
.custom-group ha-control-button {
--control-button-border-radius: 18px;
--mdc-icon-size: 32px;
}
.vertical-buttons {
height: 300px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
p.title {
margin-bottom: 12px;
}
.vertical-switches > *:not(:last-child) {
margin-right: 4px;
}
`;
}
declare global {
@@ -133,39 +133,37 @@ export class DemoHaCircularSlider extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
p.title {
margin-bottom: 12px;
}
ha-control-circular-slider {
--control-circular-slider-color: #ff9800;
}
ha-control-circular-slider[inverted] {
--control-circular-slider-color: #2196f3;
}
ha-control-circular-slider[dual] {
--control-circular-slider-high-color: #2196f3;
--control-circular-slider-low-color: #ff9800;
}
.field {
display: flex;
flex-direction: row;
align-items: center;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
p.title {
margin-bottom: 12px;
}
ha-control-circular-slider {
--control-circular-slider-color: #ff9800;
}
ha-control-circular-slider[inverted] {
--control-circular-slider-color: #2196f3;
}
ha-control-circular-slider[dual] {
--control-circular-slider-high-color: #2196f3;
--control-circular-slider-low-color: #ff9800;
}
.field {
display: flex;
flex-direction: row;
align-items: center;
}
`;
}
declare global {
@@ -73,32 +73,30 @@ export class DemoHarControlNumberButtons extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
color: #2196f3;
--control-number-buttons-color: #2196f3;
--control-number-buttons-background-color: #2196f3;
--control-number-buttons-background-opacity: 0.1;
--control-number-buttons-thickness: 100px;
--control-number-buttons-border-radius: 36px;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
color: #2196f3;
--control-number-buttons-color: #2196f3;
--control-number-buttons-background-color: #2196f3;
--control-number-buttons-background-opacity: 0.1;
--control-number-buttons-thickness: 100px;
--control-number-buttons-border-radius: 36px;
}
`;
}
declare global {
@@ -8,19 +8,19 @@ import "../../../../src/components/ha-control-select-menu";
import "../../../../src/components/ha-list-item";
import "../../../../src/components/ha-svg-icon";
type SelectMenuOptions = {
interface SelectMenuOptions {
label: string;
value: string;
icon?: string;
};
}
type SelectMenu = {
interface SelectMenu {
label: string;
icon: string;
class?: string;
disabled?: boolean;
options: SelectMenuOptions[];
};
}
const selects: SelectMenu[] = [
{
@@ -112,32 +112,30 @@ export class DemoHaControlSelectMenu extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--control-button-icon-color: var(--primary-color);
--control-button-background-color: var(--primary-color);
--control-button-background-opacity: 0.2;
--control-button-border-radius: 18px;
height: 100px;
width: 100px;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--control-button-icon-color: var(--primary-color);
--control-button-background-color: var(--primary-color);
--control-button-background-opacity: 0.2;
--control-button-border-radius: 18px;
height: 100px;
width: 100px;
}
`;
}
declare global {
@@ -168,42 +168,40 @@ export class DemoHaControlSelect extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--mdc-icon-size: 24px;
--control-select-color: var(--state-fan-active-color);
--control-select-thickness: 130px;
--control-select-border-radius: 36px;
}
.vertical-selects {
height: 300px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
p.title {
margin-bottom: 12px;
}
.vertical-selects > *:not(:last-child) {
margin-right: 4px;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--mdc-icon-size: 24px;
--control-select-color: var(--state-fan-active-color);
--control-select-thickness: 130px;
--control-select-border-radius: 36px;
}
.vertical-selects {
height: 300px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
p.title {
margin-bottom: 12px;
}
.vertical-selects > *:not(:last-child) {
margin-right: 4px;
}
`;
}
declare global {
@@ -131,43 +131,41 @@ export class DemoHaBarSlider extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--control-slider-color: #ffcf4c;
--control-slider-background: #ffcf4c;
--control-slider-background-opacity: 0.2;
--control-slider-thickness: 130px;
--control-slider-border-radius: 36px;
}
.vertical-sliders {
height: 300px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
p.title {
margin-bottom: 12px;
}
.vertical-sliders > *:not(:last-child) {
margin-right: 4px;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--control-slider-color: #ffcf4c;
--control-slider-background: #ffcf4c;
--control-slider-background-opacity: 0.2;
--control-slider-thickness: 130px;
--control-slider-border-radius: 36px;
}
.vertical-sliders {
height: 300px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
p.title {
margin-bottom: 12px;
}
.vertical-sliders > *:not(:last-child) {
margin-right: 4px;
}
`;
}
declare global {
@@ -99,44 +99,42 @@ export class DemoHaControlSwitch extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--control-switch-on-color: var(--green-color);
--control-switch-off-color: var(--red-color);
--control-switch-thickness: 130px;
--control-switch-border-radius: 36px;
--control-switch-padding: 6px;
--mdc-icon-size: 24px;
}
.vertical-switches {
height: 300px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
p.title {
margin-bottom: 12px;
}
.vertical-switches > *:not(:last-child) {
margin-right: 4px;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-top: 0;
margin-bottom: 8px;
}
p {
margin: 0;
}
label {
font-weight: 600;
}
.custom {
--control-switch-on-color: var(--green-color);
--control-switch-off-color: var(--red-color);
--control-switch-thickness: 130px;
--control-switch-border-radius: 36px;
--control-switch-padding: 6px;
--mdc-icon-size: 24px;
}
.vertical-switches {
height: 300px;
display: flex;
flex-direction: row;
justify-content: space-between;
}
p.title {
margin-bottom: 12px;
}
.vertical-switches > *:not(:last-child) {
margin-right: 4px;
}
`;
}
declare global {
@@ -143,13 +143,11 @@ export class DemoHaExpansionPanel extends LitElement {
`;
}
static get styles() {
return css`
ha-expansion-panel {
margin: -16px;
}
`;
}
static styles = css`
ha-expansion-panel {
margin: -16px;
}
`;
}
declare global {
+7 -9
View File
@@ -20,7 +20,7 @@ export class DemoHaFaded extends LitElement {
<ha-faded><span>${LONG_TEXT}</span></ha-faded>
<h3>No text</h3>
<ha-faded><span></span></ha-faded>
<h3>Smal text</h3>
<h3>Small text</h3>
<ha-faded><span>${SMALL_TEXT}</span></ha-faded>
<h3>Long text in markdown</h3>
<ha-faded>
@@ -61,14 +61,12 @@ export class DemoHaFaded extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
`;
}
declare global {
+26 -12
View File
@@ -124,6 +124,8 @@ const AREAS: AreaRegistryEntry[] = [
picture: null,
aliases: [],
labels: [],
temperature_entity_id: null,
humidity_entity_id: null,
created_at: 0,
modified_at: 0,
},
@@ -135,6 +137,8 @@ const AREAS: AreaRegistryEntry[] = [
picture: null,
aliases: [],
labels: [],
temperature_entity_id: null,
humidity_entity_id: null,
created_at: 0,
modified_at: 0,
},
@@ -146,6 +150,8 @@ const AREAS: AreaRegistryEntry[] = [
picture: null,
aliases: [],
labels: [],
temperature_entity_id: null,
humidity_entity_id: null,
created_at: 0,
modified_at: 0,
},
@@ -489,14 +495,8 @@ class DemoHaForm extends LitElement {
.title=${info.title}
.value=${this.data[idx]}
.disabled=${this.disabled[idx]}
@submitted=${() => {
this.disabled[idx] = true;
this.requestUpdate();
setTimeout(() => {
this.disabled[idx] = false;
this.requestUpdate();
}, 2000);
}}
@submitted=${this._handleSubmit}
.sampleIdx=${idx}
>
${["light", "dark"].map(
(slot) => html`
@@ -511,10 +511,8 @@ class DemoHaForm extends LitElement {
.computeLabel=${(schema) =>
translations[schema.name] || schema.name}
.computeHelper=${() => "Helper text"}
@value-changed=${(e) => {
this.data[idx] = e.detail.value;
this.requestUpdate();
}}
@value-changed=${this._handleValueChanged}
.sampleIdx=${idx}
></ha-form>
`
)}
@@ -523,6 +521,22 @@ class DemoHaForm extends LitElement {
})}
`;
}
private _handleValueChanged(ev) {
const sampleIdx = ev.target.sampleIdx;
this.data[sampleIdx] = ev.detail.value;
this.requestUpdate();
}
private _handleSubmit(ev) {
const sampleIdx = ev.target.sampleIdx;
this.disabled[sampleIdx] = true;
this.requestUpdate();
setTimeout(() => {
this.disabled[sampleIdx] = false;
this.requestUpdate();
}, 2000);
}
}
declare global {
@@ -76,7 +76,7 @@ export class DemoHaHsColorPicker extends LitElement {
@change=${this._saturationChanged}
>
</ha-slider>
<p>Color Brighness : ${this.brightness}</p>
<p>Color Brightness : ${this.brightness}</p>
<ha-slider
labeled
step="1"
@@ -91,27 +91,25 @@ export class DemoHaHsColorPicker extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.card-content {
display: flex;
align-items: center;
flex-direction: column;
}
ha-hs-color-picker {
width: 400px;
}
.value {
font-size: 22px;
font-weight: bold;
margin: 0 0 12px 0;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
.card-content {
display: flex;
align-items: center;
flex-direction: column;
}
ha-hs-color-picker {
width: 400px;
}
.value {
font-size: 22px;
font-weight: bold;
margin: 0 0 12px 0;
}
`;
}
declare global {
+17 -19
View File
@@ -95,25 +95,23 @@ export class DemoHaLabelBadge extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-left: 16px;
background-color: var(--markdown-code-background-color);
padding: 8px;
}
.badge {
display: flex;
flex-direction: row;
margin-bottom: 16px;
align-items: center;
}
`;
}
static styles = css`
ha-card {
max-width: 600px;
margin: 24px auto;
}
pre {
margin-left: 16px;
background-color: var(--markdown-code-background-color);
padding: 8px;
}
.badge {
display: flex;
flex-direction: row;
margin-bottom: 16px;
align-items: center;
}
`;
}
declare global {
+17 -9
View File
@@ -1,4 +1,3 @@
/* eslint-disable lit/no-template-arrow */
import "@material/mwc-button";
import type { TemplateResult } from "lit";
import { css, html, LitElement } from "lit";
@@ -124,6 +123,8 @@ const AREAS: AreaRegistryEntry[] = [
picture: null,
aliases: [],
labels: [],
temperature_entity_id: null,
humidity_entity_id: null,
created_at: 0,
modified_at: 0,
},
@@ -135,6 +136,8 @@ const AREAS: AreaRegistryEntry[] = [
picture: null,
aliases: [],
labels: [],
temperature_entity_id: null,
humidity_entity_id: null,
created_at: 0,
modified_at: 0,
},
@@ -146,6 +149,8 @@ const AREAS: AreaRegistryEntry[] = [
picture: null,
aliases: [],
labels: [],
temperature_entity_id: null,
humidity_entity_id: null,
created_at: 0,
modified_at: 0,
},
@@ -591,13 +596,6 @@ class DemoHaSelector extends LitElement implements ProvideHassElement {
</div>
${SCHEMAS.map((info, idx) => {
const data = this.data[idx];
const valueChanged = (ev) => {
this.data[idx] = {
...data,
[ev.target.key]: ev.detail.value,
};
this.requestUpdate();
};
return html`
<demo-black-white-row .title=${info.name}>
${["light", "dark"].map((slot) =>
@@ -614,7 +612,8 @@ class DemoHaSelector extends LitElement implements ProvideHassElement {
.value=${data[key] ?? value!.default}
.disabled=${this._disabled}
.required=${this._required}
@value-changed=${valueChanged}
@value-changed=${this._handleValueChanged}
.sampleIdx=${idx}
.helper=${this._helper ? "Helper text" : undefined}
></ha-selector>
</ha-settings-row>
@@ -627,6 +626,15 @@ class DemoHaSelector extends LitElement implements ProvideHassElement {
`;
}
private _handleValueChanged(ev) {
const idx = ev.target.sampleIdx;
this.data[idx] = {
...this.data[idx],
[ev.target.key]: ev.detail.value,
};
this.requestUpdate();
}
private _handleOptionChange(ev) {
this[`_${ev.target.name}`] = ev.target.checked;
}
+19 -21
View File
@@ -48,27 +48,25 @@ export class DemoHaTip extends LitElement {
);
}
static get styles() {
return css`
:host {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.dark,
.light {
display: block;
background-color: var(--primary-background-color);
padding: 0 50px;
}
ha-tip {
margin-bottom: 14px;
}
ha-card {
margin: 24px auto;
}
`;
}
static styles = css`
:host {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.dark,
.light {
display: block;
background-color: var(--primary-background-color);
padding: 0 50px;
}
ha-tip {
margin-bottom: 14px;
}
ha-card {
margin: 24px auto;
}
`;
}
declare global {
@@ -100,32 +100,30 @@ export class DemoDateTimeDateTimeNumeric extends LitElement {
`;
}
static get styles() {
return css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
static styles = css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
declare global {
@@ -100,32 +100,30 @@ export class DemoDateTimeDateTimeSeconds extends LitElement {
`;
}
static get styles() {
return css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
static styles = css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
declare global {
@@ -100,32 +100,30 @@ export class DemoDateTimeDateTimeShortYear extends LitElement {
`;
}
static get styles() {
return css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
static styles = css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
declare global {
+23 -25
View File
@@ -100,32 +100,30 @@ export class DemoDateTimeDateTimeShort extends LitElement {
`;
}
static get styles() {
return css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
static styles = css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
declare global {
+23 -25
View File
@@ -100,32 +100,30 @@ export class DemoDateTimeDateTime extends LitElement {
`;
}
static get styles() {
return css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
static styles = css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 900px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
declare global {
+19 -21
View File
@@ -90,28 +90,26 @@ export class DemoDateTimeDate extends LitElement {
`;
}
static get styles() {
return css`
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 600px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
static styles = css`
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 600px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
declare global {
+23 -25
View File
@@ -100,32 +100,30 @@ export class DemoDateTimeTimeSeconds extends LitElement {
`;
}
static get styles() {
return css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 600px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
static styles = css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 600px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
declare global {
+23 -25
View File
@@ -100,32 +100,30 @@ export class DemoDateTimeTimeWeekday extends LitElement {
`;
}
static get styles() {
return css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 800px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
static styles = css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 800px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
declare global {
+23 -25
View File
@@ -100,32 +100,30 @@ export class DemoDateTimeTime extends LitElement {
`;
}
static get styles() {
return css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 600px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
static styles = css`
ha-control-select {
max-width: 800px;
margin: 12px auto;
}
.header {
font-weight: bold;
}
.center {
text-align: center;
}
.container {
max-width: 600px;
margin: 12px auto;
display: flex;
align-items: center;
justify-content: space-evenly;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
.container > div {
flex-grow: 1;
width: 20%;
}
`;
}
declare global {
+14
View File
@@ -4,6 +4,7 @@ import { customElement, query } from "lit/decorators";
import { CoverEntityFeature } from "../../../../src/data/cover";
import { LightColorMode } from "../../../../src/data/light";
import { LockEntityFeature } from "../../../../src/data/lock";
import { MediaPlayerEntityFeature } from "../../../../src/data/media-player";
import { VacuumEntityFeature } from "../../../../src/data/vacuum";
import { getEntity } from "../../../../src/fake_data/entity";
import { provideHass } from "../../../../src/fake_data/provide_hass";
@@ -28,6 +29,10 @@ const ENTITIES = [
device_class: "lock",
supported_features: LockEntityFeature.OPEN,
}),
getEntity("media_player", "living_room", "playing", {
friendly_name: "Living room speaker",
supported_features: MediaPlayerEntityFeature.VOLUME_SET,
}),
getEntity("climate", "thermostat", "heat", {
current_temperature: 73,
min_temp: 45,
@@ -197,6 +202,15 @@ const CONFIGS = [
- type: "lock-open-door"
`,
},
{
heading: "Media player volume slider feature",
config: `
- type: tile
entity: media_player.living_room
features:
- type: "media-player-volume-slider"
`,
},
{
heading: "Vacuum commands feature",
config: `
+11 -13
View File
@@ -321,13 +321,13 @@ function createEntity(
};
}
type EntityRowData = {
interface EntityRowData {
stateObj: HassEntity;
entity_id: string;
state: string;
device_class?: string;
domain: string;
};
}
function createRowData(stateObj: HassEntity): EntityRowData {
return {
@@ -429,17 +429,15 @@ export class DemoEntityState extends LitElement {
`;
}
static get styles() {
return css`
.color {
display: block;
height: 20px;
width: 20px;
border-radius: 10px;
background-color: rgb(--color);
}
`;
}
static styles = css`
.color {
display: block;
height: 20px;
width: 20px;
border-radius: 10px;
background-color: rgb(--color);
}
`;
}
declare global {
+6 -8
View File
@@ -76,14 +76,12 @@ export class DemoMiscMarkdown extends LitElement {
`;
}
static get styles() {
return css`
ha-card {
margin: 12px;
padding: 12px;
}
`;
}
static styles = css`
ha-card {
margin: 12px;
padding: 12px;
}
`;
}
declare global {
+18 -20
View File
@@ -135,12 +135,12 @@ const configFlows: DataEntryFlowProgressExtended[] = [
},
];
const configEntries: Array<{
const configEntries: {
items: ConfigEntryExtended[];
is_custom?: boolean;
disabled?: boolean;
highlight?: string;
}> = [
}[] = [
{ items: [loadedEntry] },
{ items: [configPanelEntry] },
{ items: [optionsFlowEntry] },
@@ -349,26 +349,24 @@ export class DemoIntegrationCard extends LitElement {
this.isCloud = !this.isCloud;
}
static get styles() {
return css`
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
grid-gap: 8px 8px;
padding: 8px 16px 16px;
margin-bottom: 16px;
}
static styles = css`
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
grid-gap: 8px 8px;
padding: 8px 16px 16px;
margin-bottom: 16px;
}
.container > * {
max-width: 500px;
}
.container > * {
max-width: 500px;
}
ha-formfield {
margin: 8px 0;
display: block;
}
`;
}
ha-formfield {
margin: 8px 0;
display: block;
}
`;
}
declare global {
+1 -13
View File
@@ -1,16 +1,4 @@
import { globIterate } from "glob";
import { availableParallelism } from "node:os";
import "./build-scripts/gulp/index.mjs";
process.env.UV_THREADPOOL_SIZE = availableParallelism();
const gulpImports = [];
for await (const gulpModule of globIterate("build-scripts/gulp/*.?(c|m)js", {
dotRelative: true,
})) {
gulpImports.push(import(gulpModule));
}
// Since all tasks are currently registered with gulp.task(), this is enough
// If any are converted to named exports, need to loop and aggregate exports here
await Promise.all(gulpImports);
+30 -32
View File
@@ -1,7 +1,7 @@
import type { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
import "@material/mwc-list/mwc-list-item";
import { mdiDotsVertical } from "@mdi/js";
import type { CSSResultGroup, PropertyValues, TemplateResult } from "lit";
import type { PropertyValues, TemplateResult } from "lit";
import { css, html, LitElement, nothing } from "lit";
import { customElement, property, state } from "lit/decorators";
import memoizeOne from "memoize-one";
@@ -136,7 +136,7 @@ export class HassioAddonStore extends LitElement {
this._manageRepositories(repositoryUrl);
}
this.addEventListener("hass-api-called", (ev) => this.apiCalled(ev));
this.addEventListener("hass-api-called", (ev) => this._apiCalled(ev));
this._loadData();
}
@@ -179,7 +179,7 @@ export class HassioAddonStore extends LitElement {
}
}
private apiCalled(ev) {
private _apiCalled(ev) {
if (ev.detail.success) {
this._loadData();
}
@@ -211,35 +211,33 @@ export class HassioAddonStore extends LitElement {
this._filter = e.detail.value;
}
static get styles(): CSSResultGroup {
return css`
hassio-addon-repository {
margin-top: 24px;
}
.search {
position: sticky;
top: 0;
z-index: 2;
}
search-input {
display: block;
--mdc-text-field-fill-color: var(--sidebar-background-color);
--mdc-text-field-idle-line-color: var(--divider-color);
}
.advanced {
padding: 12px;
display: flex;
flex-wrap: wrap;
color: var(--primary-text-color);
}
.advanced a {
margin-left: 0.5em;
margin-inline-start: 0.5em;
margin-inline-end: initial;
color: var(--primary-color);
}
`;
}
static styles = css`
hassio-addon-repository {
margin-top: 24px;
}
.search {
position: sticky;
top: 0;
z-index: 2;
}
search-input {
display: block;
--mdc-text-field-fill-color: var(--sidebar-background-color);
--mdc-text-field-idle-line-color: var(--divider-color);
}
.advanced {
padding: 12px;
display: flex;
flex-wrap: wrap;
color: var(--primary-text-color);
}
.advanced a {
margin-left: 0.5em;
margin-inline-start: 0.5em;
margin-inline-end: initial;
color: var(--primary-color);
}
`;
}
declare global {
@@ -299,7 +299,7 @@ class HassioAddonConfig extends LitElement {
if (this.addon.schema && this._canShowSchema && !this._yamlMode) {
this._valid = true;
this._configHasChanged = true;
this._options! = ev.detail.value;
this._options = ev.detail.value;
} else {
this._configHasChanged = true;
this._valid = ev.detail.isValid;
@@ -151,7 +151,7 @@ class HassioAddonNetwork extends LitElement {
private async _configChanged(ev: CustomEvent): Promise<void> {
this._configHasChanged = true;
this._config! = ev.detail.value;
this._config = ev.detail.value;
}
private async _resetTapped(ev: CustomEvent): Promise<void> {
+11 -11
View File
@@ -58,7 +58,7 @@ export class HassioBackups extends LitElement {
@property({ type: Boolean }) public narrow = false;
@property({ type: Boolean }) public isWide = false;
@property({ attribute: "is-wide", type: Boolean }) public isWide = false;
@state() private _selectedBackups: string[] = [];
@@ -74,7 +74,7 @@ export class HassioBackups extends LitElement {
public connectedCallback(): void {
super.connectedCallback();
if (this.hass && this._firstUpdatedCalled) {
this.fetchBackups();
this._fetchBackups();
}
}
@@ -107,7 +107,7 @@ export class HassioBackups extends LitElement {
protected firstUpdated(changedProperties: PropertyValues): void {
super.firstUpdated(changedProperties);
if (this.hass && this.isConnected) {
this.fetchBackups();
this._fetchBackups();
}
this._firstUpdatedCalled = true;
}
@@ -198,7 +198,7 @@ export class HassioBackups extends LitElement {
@selection-changed=${this._handleSelectionChanged}
clickable
selectable
hasFab
has-fab
.mainPage=${!atLeastVersion(this.hass.config.version, 2021, 12)}
back-path=${atLeastVersion(this.hass.config.version, 2022, 5)
? "/config/system"
@@ -280,7 +280,7 @@ export class HassioBackups extends LitElement {
private _handleAction(ev: CustomEvent<ActionDetail>) {
switch (ev.detail.index) {
case 0:
this.fetchBackups();
this._fetchBackups();
break;
case 1:
showHassioBackupLocationDialog(this, { supervisor: this.supervisor });
@@ -303,13 +303,13 @@ export class HassioBackups extends LitElement {
showHassioBackupDialog(this, {
slug,
supervisor: this.supervisor,
onDelete: () => this.fetchBackups(),
onDelete: () => this._fetchBackups(),
}),
reloadBackup: () => this.fetchBackups(),
reloadBackup: () => this._fetchBackups(),
});
}
private async fetchBackups() {
private async _fetchBackups() {
this._isLoading = true;
await reloadHassioBackups(this.hass);
this._backups = await fetchHassioBackups(this.hass);
@@ -341,7 +341,7 @@ export class HassioBackups extends LitElement {
});
return;
}
await this.fetchBackups();
await this._fetchBackups();
this._dataTable.clearSelection();
}
@@ -350,7 +350,7 @@ export class HassioBackups extends LitElement {
showHassioBackupDialog(this, {
slug,
supervisor: this.supervisor,
onDelete: () => this.fetchBackups(),
onDelete: () => this._fetchBackups(),
});
}
@@ -366,7 +366,7 @@ export class HassioBackups extends LitElement {
}
showHassioCreateBackupDialog(this, {
supervisor: this.supervisor!,
onCreate: () => this.fetchBackups(),
onCreate: () => this._fetchBackups(),
});
}
+89 -86
View File
@@ -1,5 +1,5 @@
import { mdiHelpCircle } from "@mdi/js";
import type { CSSResultGroup, TemplateResult } from "lit";
import type { TemplateResult } from "lit";
import { css, html, LitElement } from "lit";
import { customElement, property } from "lit/decorators";
import "../../../src/components/ha-svg-icon";
@@ -9,23 +9,24 @@ import type { HomeAssistant } from "../../../src/types";
class HassioCardContent extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
// eslint-disable-next-line lit/no-native-attributes
@property() public title!: string;
@property() public description?: string;
@property({ type: Boolean }) public available = true;
@property({ type: Boolean }) public showTopbar = false;
@property({ attribute: false }) public showTopbar = false;
@property() public topbarClass?: string;
@property({ attribute: false }) public topbarClass?: string;
@property() public iconTitle?: string;
@property({ attribute: false }) public iconTitle?: string;
@property() public iconClass?: string;
@property({ attribute: false }) public iconClass?: string;
@property() public icon = mdiHelpCircle;
@property() public iconImage?: string;
@property({ attribute: false }) public iconImage?: string;
protected render(): TemplateResult {
return html`
@@ -35,7 +36,11 @@ class HassioCardContent extends LitElement {
${this.iconImage
? html`
<div class="icon_image ${this.iconClass}">
<img src=${this.iconImage} .title=${this.iconTitle} />
<img
src=${this.iconImage}
.title=${this.iconTitle}
alt=${this.iconTitle ?? ""}
/>
<div></div>
</div>
`
@@ -59,86 +64,84 @@ class HassioCardContent extends LitElement {
`;
}
static get styles(): CSSResultGroup {
return css`
:host {
direction: ltr;
}
static styles = css`
:host {
direction: ltr;
}
ha-svg-icon {
margin-right: 24px;
margin-left: 8px;
margin-top: 12px;
float: left;
color: var(--secondary-text-color);
}
ha-svg-icon.update {
color: var(--warning-color);
}
ha-svg-icon.running,
ha-svg-icon.installed {
color: var(--success-color);
}
ha-svg-icon.hassupdate,
ha-svg-icon.backup {
color: var(--paper-item-icon-color);
}
ha-svg-icon.not_available {
color: var(--error-color);
}
.title {
color: var(--primary-text-color);
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.addition {
color: var(--secondary-text-color);
overflow: hidden;
position: relative;
height: 2.4em;
line-height: 1.2em;
}
.icon_image img {
max-height: 40px;
max-width: 40px;
margin-top: 4px;
margin-right: 16px;
float: left;
}
.icon_image.stopped,
.icon_image.not_available {
filter: grayscale(1);
}
.dot {
position: absolute;
background-color: var(--warning-color);
width: 12px;
height: 12px;
top: 8px;
right: 8px;
border-radius: 50%;
}
.topbar {
position: absolute;
width: 100%;
height: 2px;
top: 0;
left: 0;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
}
.topbar.installed {
background-color: var(--primary-color);
}
.topbar.update {
background-color: var(--accent-color);
}
.topbar.unavailable {
background-color: var(--error-color);
}
`;
}
ha-svg-icon {
margin-right: 24px;
margin-left: 8px;
margin-top: 12px;
float: left;
color: var(--secondary-text-color);
}
ha-svg-icon.update {
color: var(--warning-color);
}
ha-svg-icon.running,
ha-svg-icon.installed {
color: var(--success-color);
}
ha-svg-icon.hassupdate,
ha-svg-icon.backup {
color: var(--paper-item-icon-color);
}
ha-svg-icon.not_available {
color: var(--error-color);
}
.title {
color: var(--primary-text-color);
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.addition {
color: var(--secondary-text-color);
overflow: hidden;
position: relative;
height: 2.4em;
line-height: 1.2em;
}
.icon_image img {
max-height: 40px;
max-width: 40px;
margin-top: 4px;
margin-right: 16px;
float: left;
}
.icon_image.stopped,
.icon_image.not_available {
filter: grayscale(1);
}
.dot {
position: absolute;
background-color: var(--warning-color);
width: 12px;
height: 12px;
top: 8px;
right: 8px;
border-radius: 50%;
}
.topbar {
position: absolute;
width: 100%;
height: 2px;
top: 0;
left: 0;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
}
.topbar.installed {
background-color: var(--primary-color);
}
.topbar.update {
background-color: var(--accent-color);
}
.topbar.unavailable {
background-color: var(--error-color);
}
`;
}
declare global {
+20 -3
View File
@@ -1,7 +1,7 @@
import { mdiFolderUpload } from "@mdi/js";
import type { TemplateResult } from "lit";
import { html, LitElement } from "lit";
import { customElement, state } from "lit/decorators";
import { customElement, property, state } from "lit/decorators";
import { fireEvent } from "../../../src/common/dom/fire_event";
import "../../../src/components/ha-circular-progress";
import "../../../src/components/ha-file-upload";
@@ -10,10 +10,12 @@ import { uploadBackup } from "../../../src/data/hassio/backup";
import { extractApiErrorMessage } from "../../../src/data/hassio/common";
import { showAlertDialog } from "../../../src/dialogs/generic/show-dialog-box";
import type { HomeAssistant } from "../../../src/types";
import type { LocalizeFunc } from "../../../src/common/translations/localize";
declare global {
interface HASSDomEvents {
"backup-uploaded": { backup: HassioBackup };
"backup-cleared": undefined;
}
}
@@ -21,6 +23,8 @@ declare global {
export class HassioUploadBackup extends LitElement {
public hass?: HomeAssistant;
@property({ attribute: false }) public localize?: LocalizeFunc;
@state() public value: string | null = null;
@state() private _uploading = false;
@@ -32,13 +36,26 @@ export class HassioUploadBackup extends LitElement {
.uploading=${this._uploading}
.icon=${mdiFolderUpload}
accept="application/x-tar"
label="Upload backup"
supports="Supports .TAR files"
.label=${this.localize?.(
"ui.panel.page-onboarding.restore.upload_backup"
) || "Upload backup"}
.supports=${this.localize?.(
"ui.panel.page-onboarding.restore.upload_supports"
) || "Supports .TAR files"}
.secondary=${this.localize?.(
"ui.panel.page-onboarding.restore.upload_drop"
) || "Or drop your file here"}
@file-picked=${this._uploadFile}
@files-cleared=${this._clear}
></ha-file-upload>
`;
}
private _clear() {
this.value = null;
fireEvent(this, "backup-cleared");
}
private async _uploadFile(ev) {
const file = ev.detail.files[0];
@@ -1,5 +1,5 @@
import { mdiFolder, mdiPuzzle } from "@mdi/js";
import type { CSSResultGroup, TemplateResult } from "lit";
import type { TemplateResult } from "lit";
import { LitElement, css, html, nothing } from "lit";
import { customElement, property, query } from "lit/decorators";
import { atLeastVersion } from "../../../src/common/config/version";
@@ -65,7 +65,7 @@ const _computeAddons = (addons): AddonCheckboxItem[] =>
@customElement("supervisor-backup-content")
export class SupervisorBackupContent extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@property({ attribute: false }) public hass?: HomeAssistant;
@property({ attribute: false }) public localize?: LocalizeFunc;
@@ -73,23 +73,24 @@ export class SupervisorBackupContent extends LitElement {
@property({ attribute: false }) public backup?: HassioBackupDetail;
@property() public backupType: HassioBackupDetail["type"] = "full";
@property({ attribute: false })
public backupType: HassioBackupDetail["type"] = "full";
@property({ attribute: false }) public folders?: CheckboxItem[];
@property({ attribute: false }) public addons?: AddonCheckboxItem[];
@property({ type: Boolean }) public homeAssistant = false;
@property({ attribute: false }) public homeAssistant = false;
@property({ type: Boolean }) public backupHasPassword = false;
@property({ attribute: false }) public backupHasPassword = false;
@property({ type: Boolean }) public onboarding = false;
@property() public backupName = "";
@property({ attribute: false }) public backupName = "";
@property() public backupPassword = "";
@property({ attribute: false }) public backupPassword = "";
@property() public confirmBackupPassword = "";
@property({ attribute: false }) public confirmBackupPassword = "";
@query("ha-textfield, ha-radio, ha-checkbox", true) private _focusTarget;
@@ -185,13 +186,14 @@ export class SupervisorBackupContent extends LitElement {
.iconPath=${mdiHomeAssistant}
.version=${this.backup
? this.backup.homeassistant
: this.hass.config.version}
: this.hass?.config.version}
>
</supervisor-formfield-label>`}
>
<ha-checkbox
.checked=${this.homeAssistant}
@change=${this.toggleHomeAssistant}
.checked=${this.onboarding || this.homeAssistant}
.disabled=${this.onboarding}
@change=${this._toggleHomeAssistant}
>
</ha-checkbox>
</ha-formfield>`
@@ -277,63 +279,61 @@ export class SupervisorBackupContent extends LitElement {
`;
}
private toggleHomeAssistant() {
private _toggleHomeAssistant() {
this.homeAssistant = !this.homeAssistant;
}
static get styles(): CSSResultGroup {
return css`
.partial-picker ha-formfield {
display: block;
}
.partial-picker ha-checkbox {
--mdc-checkbox-touch-target-size: 32px;
}
.partial-picker {
display: block;
margin: 0px -6px;
}
supervisor-formfield-label {
display: inline-flex;
align-items: center;
}
hr {
border-color: var(--divider-color);
border-bottom: none;
margin: 16px 0;
}
.details {
color: var(--secondary-text-color);
}
.section-content {
display: flex;
flex-direction: column;
margin-left: 30px;
margin-inline-start: 30px;
margin-inline-end: initial;
}
ha-formfield.password {
display: block;
margin: 0 -14px -16px;
}
.backup-types {
display: flex;
margin-left: -13px;
margin-inline-start: -13px;
margin-inline-end: initial;
}
.sub-header {
margin-top: 8px;
}
`;
}
static styles = css`
.partial-picker ha-formfield {
display: block;
}
.partial-picker ha-checkbox {
--mdc-checkbox-touch-target-size: 32px;
}
.partial-picker {
display: block;
margin: 0px -6px;
}
supervisor-formfield-label {
display: inline-flex;
align-items: center;
}
hr {
border-color: var(--divider-color);
border-bottom: none;
margin: 16px 0;
}
.details {
color: var(--secondary-text-color);
}
.section-content {
display: flex;
flex-direction: column;
margin-left: 30px;
margin-inline-start: 30px;
margin-inline-end: initial;
}
ha-formfield.password {
display: block;
margin: 0 -14px -16px;
}
.backup-types {
display: flex;
margin-left: -13px;
margin-inline-start: -13px;
margin-inline-end: initial;
}
.sub-header {
margin-top: 8px;
}
`;
public backupDetails():
| HassioPartialBackupCreateParams
| HassioFullBackupCreateParams {
const data: any = {};
if (!this.backup) {
if (!this.backup && this.hass) {
data.name =
this.backupName ||
formatDate(new Date(), this.hass.locale, this.hass.config);
@@ -363,7 +363,9 @@ export class SupervisorBackupContent extends LitElement {
if (folders?.length) {
data.folders = folders;
}
data.homeassistant = this.homeAssistant;
// onboarding needs at least homeassistant to restore
data.homeassistant = this.onboarding || this.homeAssistant;
return data;
}
@@ -385,6 +387,7 @@ export class SupervisorBackupContent extends LitElement {
.iconPath=${section === "addons" ? mdiPuzzle : mdiFolder}
.imageUrl=${section === "addons" &&
!this.onboarding &&
this.hass &&
atLeastVersion(this.hass.config.version, 0, 105) &&
addons?.get(item.slug)?.icon
? `/api/hassio/addons/${item.slug}/icon`

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