Merge branch 'rc'

This commit is contained in:
Bram Kragten 2024-02-05 14:45:51 +01:00
commit 50e559487d
17 changed files with 2227 additions and 2211 deletions

View File

@ -18,6 +18,6 @@ jobs:
pull-requests: read pull-requests: read
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: release-drafter/release-drafter@v5 - uses: release-drafter/release-drafter@v6.0.0
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

File diff suppressed because one or more lines are too long

View File

@ -6,4 +6,4 @@ enableGlobalCache: false
nodeLinker: node-modules nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.0.2.cjs yarnPath: .yarn/releases/yarn-4.1.0.cjs

View File

@ -29,7 +29,7 @@
"@braintree/sanitize-url": "7.0.0", "@braintree/sanitize-url": "7.0.0",
"@codemirror/autocomplete": "6.12.0", "@codemirror/autocomplete": "6.12.0",
"@codemirror/commands": "6.3.3", "@codemirror/commands": "6.3.3",
"@codemirror/language": "6.10.0", "@codemirror/language": "6.10.1",
"@codemirror/legacy-modes": "6.3.3", "@codemirror/legacy-modes": "6.3.3",
"@codemirror/search": "6.5.5", "@codemirror/search": "6.5.5",
"@codemirror/state": "6.4.0", "@codemirror/state": "6.4.0",
@ -51,7 +51,7 @@
"@fullcalendar/timegrid": "6.1.10", "@fullcalendar/timegrid": "6.1.10",
"@lezer/highlight": "1.2.0", "@lezer/highlight": "1.2.0",
"@lit-labs/context": "0.4.1", "@lit-labs/context": "0.4.1",
"@lit-labs/motion": "1.0.6", "@lit-labs/motion": "1.0.7",
"@lit-labs/observers": "2.0.2", "@lit-labs/observers": "2.0.2",
"@lit-labs/virtualizer": "2.0.12", "@lit-labs/virtualizer": "2.0.12",
"@lrnwebcomponents/simple-tooltip": "8.0.0", "@lrnwebcomponents/simple-tooltip": "8.0.0",
@ -89,8 +89,8 @@
"@polymer/paper-toast": "3.0.1", "@polymer/paper-toast": "3.0.1",
"@polymer/polymer": "3.5.1", "@polymer/polymer": "3.5.1",
"@thomasloven/round-slider": "0.6.0", "@thomasloven/round-slider": "0.6.0",
"@vaadin/combo-box": "24.3.4", "@vaadin/combo-box": "24.3.5",
"@vaadin/vaadin-themable-mixin": "24.3.4", "@vaadin/vaadin-themable-mixin": "24.3.5",
"@vibrant/color": "3.2.1-alpha.1", "@vibrant/color": "3.2.1-alpha.1",
"@vibrant/core": "3.2.1-alpha.1", "@vibrant/core": "3.2.1-alpha.1",
"@vibrant/quantizer-mmcq": "3.2.1-alpha.1", "@vibrant/quantizer-mmcq": "3.2.1-alpha.1",
@ -212,13 +212,13 @@
"gulp-rename": "2.0.0", "gulp-rename": "2.0.0",
"gulp-zopfli-green": "6.0.1", "gulp-zopfli-green": "6.0.1",
"html-minifier-terser": "7.2.0", "html-minifier-terser": "7.2.0",
"husky": "9.0.7", "husky": "9.0.10",
"instant-mocha": "1.5.2", "instant-mocha": "1.5.2",
"jszip": "3.10.1", "jszip": "3.10.1",
"lint-staged": "15.2.0", "lint-staged": "15.2.1",
"lit-analyzer": "2.0.3", "lit-analyzer": "2.0.3",
"lodash.template": "4.5.0", "lodash.template": "4.5.0",
"magic-string": "0.30.5", "magic-string": "0.30.6",
"map-stream": "0.0.7", "map-stream": "0.0.7",
"mocha": "10.2.0", "mocha": "10.2.0",
"object-hash": "3.0.0", "object-hash": "3.0.0",
@ -240,7 +240,7 @@
"typescript": "5.3.3", "typescript": "5.3.3",
"vinyl-buffer": "1.0.1", "vinyl-buffer": "1.0.1",
"vinyl-source-stream": "2.0.0", "vinyl-source-stream": "2.0.0",
"webpack": "5.90.0", "webpack": "5.90.1",
"webpack-cli": "5.1.4", "webpack-cli": "5.1.4",
"webpack-dev-server": "4.15.1", "webpack-dev-server": "4.15.1",
"webpack-manifest-plugin": "5.0.0", "webpack-manifest-plugin": "5.0.0",
@ -258,5 +258,5 @@
"sortablejs@1.15.2": "patch:sortablejs@npm%3A1.15.2#~/.yarn/patches/sortablejs-npm-1.15.2-73347ae85a.patch", "sortablejs@1.15.2": "patch:sortablejs@npm%3A1.15.2#~/.yarn/patches/sortablejs-npm-1.15.2-73347ae85a.patch",
"leaflet-draw@1.0.4": "patch:leaflet-draw@npm%3A1.0.4#./.yarn/patches/leaflet-draw-npm-1.0.4-0ca0ebcf65.patch" "leaflet-draw@1.0.4": "patch:leaflet-draw@npm%3A1.0.4#./.yarn/patches/leaflet-draw-npm-1.0.4-0ca0ebcf65.patch"
}, },
"packageManager": "yarn@4.0.2" "packageManager": "yarn@4.1.0"
} }

View File

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

View File

@ -797,7 +797,7 @@ export class HaDataTable extends LitElement {
.mdc-data-table__cell--icon-button:first-child { .mdc-data-table__cell--icon-button:first-child {
padding-left: 16px; padding-left: 16px;
padding-inline-start: 16px; padding-inline-start: 16px;
padding-inline-end: initial; // 8px? padding-inline-end: initial;
} }
.mdc-data-table__cell--overflow-menu:last-child, .mdc-data-table__cell--overflow-menu:last-child,
@ -806,7 +806,7 @@ export class HaDataTable extends LitElement {
.mdc-data-table__cell--icon-button:last-child { .mdc-data-table__cell--icon-button:last-child {
padding-right: 16px; padding-right: 16px;
padding-inline-end: 16px; padding-inline-end: 16px;
padding-inline-start: initial; // 8px? padding-inline-start: initial;
} }
.mdc-data-table__cell--overflow-menu, .mdc-data-table__cell--overflow-menu,
.mdc-data-table__header-cell--overflow-menu { .mdc-data-table__header-cell--overflow-menu {

View File

@ -77,6 +77,7 @@ export default class HaAutomationAction extends LitElement {
return html` return html`
<ha-sortable <ha-sortable
handle-selector=".handle" handle-selector=".handle"
draggable-selector="ha-automation-action-row"
.disabled=${!this._showReorder || this.disabled} .disabled=${!this._showReorder || this.disabled}
@item-moved=${this._actionMoved} @item-moved=${this._actionMoved}
group="actions" group="actions"
@ -112,30 +113,29 @@ export default class HaAutomationAction extends LitElement {
</ha-automation-action-row> </ha-automation-action-row>
` `
)} )}
<div class="buttons">
<ha-button
outlined
.disabled=${this.disabled}
.label=${this.hass.localize(
"ui.panel.config.automation.editor.actions.add"
)}
@click=${this._addActionDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
<ha-button
.disabled=${this.disabled}
.label=${this.hass.localize(
"ui.panel.config.automation.editor.actions.add_building_block"
)}
@click=${this._addActionBuildingBlockDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
</div> </div>
</div> </div>
</ha-sortable> </ha-sortable>
<div class="buttons">
<ha-button
outlined
.disabled=${this.disabled}
.label=${this.hass.localize(
"ui.panel.config.automation.editor.actions.add"
)}
@click=${this._addActionDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
<ha-button
.disabled=${this.disabled}
.label=${this.hass.localize(
"ui.panel.config.automation.editor.actions.add_building_block"
)}
@click=${this._addActionBuildingBlockDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
</div>
`; `;
} }
@ -269,14 +269,11 @@ export default class HaAutomationAction extends LitElement {
return css` return css`
.actions { .actions {
padding: 16px; padding: 16px;
margin: -16px -16px 0px -16px; margin: -16px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 16px; gap: 16px;
} }
.actions:not(:has(ha-automation-action-row)) {
margin: -16px;
}
.sortable-ghost { .sortable-ghost {
background: none; background: none;
border-radius: var(--ha-card-border-radius, 12px); border-radius: var(--ha-card-border-radius, 12px);
@ -304,6 +301,7 @@ export default class HaAutomationAction extends LitElement {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 8px; gap: 8px;
order: 1;
} }
`; `;
} }

View File

@ -122,6 +122,7 @@ export class HaChooseAction extends LitElement implements ActionElement {
return html` return html`
<ha-sortable <ha-sortable
handle-selector=".handle" handle-selector=".handle"
draggable-selector=".option"
.disabled=${!this._showReorder || this.disabled} .disabled=${!this._showReorder || this.disabled}
group="choose-options" group="choose-options"
.path=${[...(this.path ?? []), "choose"]} .path=${[...(this.path ?? []), "choose"]}
@ -277,18 +278,21 @@ export class HaChooseAction extends LitElement implements ActionElement {
</div> </div>
` `
)} )}
<div class="buttons">
<ha-button
outlined
.label=${this.hass.localize(
"ui.panel.config.automation.editor.actions.type.choose.add_option"
)}
.disabled=${this.disabled}
@click=${this._addOption}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
</div>
</div> </div>
</ha-sortable> </ha-sortable>
<ha-button
outlined
.label=${this.hass.localize(
"ui.panel.config.automation.editor.actions.type.choose.add_option"
)}
.disabled=${this.disabled}
@click=${this._addOption}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
${this._showDefault || action.default ${this._showDefault || action.default
? html` ? html`
<h2> <h2>
@ -505,14 +509,11 @@ export class HaChooseAction extends LitElement implements ActionElement {
css` css`
.options { .options {
padding: 16px; padding: 16px;
margin: -16px -16px 0px -16px; margin: -16px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 16px; gap: 16px;
} }
.options:not(:has(.option)) {
margin: -16px;
}
.sortable-ghost { .sortable-ghost {
background: none; background: none;
border-radius: var(--ha-card-border-radius, 12px); border-radius: var(--ha-card-border-radius, 12px);
@ -562,6 +563,12 @@ export class HaChooseAction extends LitElement implements ActionElement {
pointer-events: none; pointer-events: none;
height: 24px; height: 24px;
} }
.buttons {
display: flex;
flex-wrap: wrap;
gap: 8px;
order: 1;
}
`, `,
]; ];
} }

View File

@ -117,6 +117,7 @@ export default class HaAutomationCondition extends LitElement {
return html` return html`
<ha-sortable <ha-sortable
handle-selector=".handle" handle-selector=".handle"
draggable-selector="ha-automation-condition-row"
.disabled=${!this._showReorder || this.disabled} .disabled=${!this._showReorder || this.disabled}
@item-moved=${this._conditionMoved} @item-moved=${this._conditionMoved}
group="conditions" group="conditions"
@ -152,29 +153,29 @@ export default class HaAutomationCondition extends LitElement {
</ha-automation-condition-row> </ha-automation-condition-row>
` `
)} )}
<div class="buttons">
<ha-button
outlined
.disabled=${this.disabled}
.label=${this.hass.localize(
"ui.panel.config.automation.editor.conditions.add"
)}
@click=${this._addConditionDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
<ha-button
.disabled=${this.disabled}
.label=${this.hass.localize(
"ui.panel.config.automation.editor.conditions.add_building_block"
)}
@click=${this._addConditionBuildingBlockDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
</div>
</div> </div>
</ha-sortable> </ha-sortable>
<div class="buttons">
<ha-button
outlined
.disabled=${this.disabled}
.label=${this.hass.localize(
"ui.panel.config.automation.editor.conditions.add"
)}
@click=${this._addConditionDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
<ha-button
.disabled=${this.disabled}
.label=${this.hass.localize(
"ui.panel.config.automation.editor.conditions.add_building_block"
)}
@click=${this._addConditionBuildingBlockDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
</div>
`; `;
} }
@ -294,14 +295,11 @@ export default class HaAutomationCondition extends LitElement {
return css` return css`
.conditions { .conditions {
padding: 16px; padding: 16px;
margin: -16px -16px 0px -16px; margin: -16px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 16px; gap: 16px;
} }
.conditions:not(:has(ha-automation-condition-row)) {
margin: -16px;
}
.sortable-ghost { .sortable-ghost {
background: none; background: none;
border-radius: var(--ha-card-border-radius, 12px); border-radius: var(--ha-card-border-radius, 12px);
@ -313,6 +311,9 @@ export default class HaAutomationCondition extends LitElement {
display: block; display: block;
scroll-margin-top: 48px; scroll-margin-top: 48px;
} }
.buttons {
order: 1;
}
ha-svg-icon { ha-svg-icon {
height: 20px; height: 20px;
} }

View File

@ -74,6 +74,7 @@ export default class HaAutomationTrigger extends LitElement {
return html` return html`
<ha-sortable <ha-sortable
handle-selector=".handle" handle-selector=".handle"
draggable-selector="ha-automation-trigger-row"
.disabled=${!this._showReorder || this.disabled} .disabled=${!this._showReorder || this.disabled}
@item-moved=${this._triggerMoved} @item-moved=${this._triggerMoved}
group="triggers" group="triggers"
@ -108,18 +109,20 @@ export default class HaAutomationTrigger extends LitElement {
</ha-automation-trigger-row> </ha-automation-trigger-row>
` `
)} )}
<div class="buttons">
<ha-button
outlined
.label=${this.hass.localize(
"ui.panel.config.automation.editor.triggers.add"
)}
.disabled=${this.disabled}
@click=${this._addTriggerDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
</div>
</div> </div>
</ha-sortable> </ha-sortable>
<ha-button
outlined
.label=${this.hass.localize(
"ui.panel.config.automation.editor.triggers.add"
)}
.disabled=${this.disabled}
@click=${this._addTriggerDialog}
>
<ha-svg-icon .path=${mdiPlus} slot="icon"></ha-svg-icon>
</ha-button>
`; `;
} }
@ -243,14 +246,11 @@ export default class HaAutomationTrigger extends LitElement {
return css` return css`
.triggers { .triggers {
padding: 16px; padding: 16px;
margin: -16px -16px 0px -16px; margin: -16px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 16px; gap: 16px;
} }
.triggers:not(:has(ha-automation-trigger-row)) {
margin: -16px;
}
.sortable-ghost { .sortable-ghost {
background: none; background: none;
border-radius: var(--ha-card-border-radius, 12px); border-radius: var(--ha-card-border-radius, 12px);
@ -274,6 +274,12 @@ export default class HaAutomationTrigger extends LitElement {
pointer-events: none; pointer-events: none;
height: 24px; height: 24px;
} }
.buttons {
display: flex;
flex-wrap: wrap;
gap: 8px;
order: 1;
}
`; `;
} }
} }

View File

@ -169,7 +169,7 @@ export class DialogLovelaceDashboardDetail extends LitElement {
}, },
{ {
name: "icon", name: "icon",
required: true, required: false,
selector: { selector: {
icon: {}, icon: {},
}, },

View File

@ -574,6 +574,9 @@ export class HassioNetwork extends LitElement {
display: block; display: block;
margin-top: 16px; margin-top: 16px;
} }
ha-expansion-panel ha-textfield:last-child {
margin-bottom: 16px;
}
mwc-list-item { mwc-list-item {
--mdc-list-side-padding: 10px; --mdc-list-side-padding: 10px;
} }

View File

@ -624,7 +624,7 @@ class HaPanelHistory extends SubscribeMixin(LitElement) {
} }
private _targetsChanged(ev) { private _targetsChanged(ev) {
this._targetPickerValue = ev.detail.value; this._targetPickerValue = ev.detail.value || {};
this._updatePath(); this._updatePath();
} }

View File

@ -302,6 +302,8 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
iconColorCSS, iconColorCSS,
css` css`
ha-card { ha-card {
--state-inactive-color: var(--paper-item-icon-color, #44739e);
--state-color: var(--paper-item-icon-color, #44739e);
--mdc-ripple-color: var(--state-color); --mdc-ripple-color: var(--state-color);
cursor: pointer; cursor: pointer;
display: flex; display: flex;
@ -325,9 +327,8 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
width: 40%; width: 40%;
height: auto; height: auto;
max-height: 80%; max-height: 80%;
color: var(--state-color, var(--paper-item-icon-color, #44739e)); color: var(--state-color);
--mdc-icon-size: 100%; --mdc-icon-size: 100%;
--state-inactive-color: var(--paper-item-icon-color, #44739e);
transition: transform 180ms ease-in-out; transition: transform 180ms ease-in-out;
} }

View File

@ -35,7 +35,7 @@ export class HuiEmptyStateCard extends LitElement implements LovelaceCard {
)} )}
</div> </div>
<div class="card-actions"> <div class="card-actions">
<a href="/config/integrations"> <a href="/config/integrations/dashboard">
<mwc-button> <mwc-button>
${this.hass.localize( ${this.hass.localize(
"ui.panel.lovelace.cards.empty_state.go_to_integrations_page" "ui.panel.lovelace.cards.empty_state.go_to_integrations_page"

View File

@ -4742,8 +4742,8 @@
"extra_information": "Size: {size}, S/N: {serial}", "extra_information": "Size: {size}, S/N: {serial}",
"select_device": "Select new data disk", "select_device": "Select new data disk",
"no_devices_title": "No suitable storage found", "no_devices_title": "No suitable storage found",
"no_devices_text": "There is no suitable external device found. The storage capacity of the external data disk must be larger than the storage capacity of the existing disk", "no_devices_text": "There is no suitable external device found. The storage capacity of the external data disk must be larger than the storage capacity of the existing disk.",
"moving_desc": "Rebooting and moving data disk. Please have patience", "moving_desc": "Rebooting and moving data disk. Please have patience.",
"moving": "Moving data disk", "moving": "Moving data disk",
"loading_devices": "Loading devices", "loading_devices": "Loading devices",
"cancel": "[%key:ui::common::cancel%]", "cancel": "[%key:ui::common::cancel%]",

3556
yarn.lock

File diff suppressed because it is too large Load Diff