Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
33d9bf4
[ci skip] Translation update
homeassistant Jan 31, 2020
edfdd0d
Styling zone menu (#4684)
bramkragten Jan 31, 2020
f82b62f
🐛 fix tabindex for default entity more-info actions (#4697)
iantrich Jan 31, 2020
33176d8
[ci skip] Translation update
homeassistant Feb 1, 2020
3215437
Fixes add-on audio selector (#4648)
ludeeus Feb 1, 2020
f5dec3c
Change map settings icon (#4701)
bramkragten Feb 1, 2020
25f5bf0
Fix ingress add-on not started dialog showing twice (#4716)
balloob Feb 1, 2020
b082828
Forward haptic events to parent window (#4719)
balloob Feb 1, 2020
f9d64e5
[ci skip] Translation update
homeassistant Feb 2, 2020
3fdcc1c
[ci skip] Translation update
homeassistant Feb 3, 2020
cbe4782
fix loading groups (#4727)
dmulcahey Feb 3, 2020
ad676d7
Fix theme on sensor card (#4724)
ludeeus Feb 3, 2020
24c591f
Convert Hass.io add-on options to YAML (#4717)
balloob Feb 3, 2020
82ff444
Confirm when resetting hassio optoins (#4718)
balloob Feb 3, 2020
ccc42da
[ci skip] Translation update
homeassistant Feb 4, 2020
42cbe86
Fix passive color radius and fix switch label clicks (#4703)
bramkragten Feb 4, 2020
c54b474
Hide automations from generated UI (#4748)
balloob Feb 4, 2020
862044c
Hassio styling tweaks (#4749)
bramkragten Feb 4, 2020
f1a1654
Use icon image where available (#4721)
ludeeus Feb 4, 2020
004ff58
Update hassio-style.ts
bramkragten Feb 4, 2020
1bf82f2
Tweak badge focus padding (#4750)
bramkragten Feb 4, 2020
4aa49f6
Remove unused classmap
bramkragten Feb 4, 2020
cdf6e9e
🐛 properly format timestamps in glance card (#4602)
iantrich Feb 4, 2020
788c490
Update update headers in hassio (#4751)
balloob Feb 4, 2020
e0376c8
Fix hassio audio
balloob Feb 4, 2020
7758ddb
Fix theming with derived styles (#4758)
bramkragten Feb 4, 2020
107f428
Sensor Card Fill feature (#4745)
zsarnett Feb 5, 2020
cb0d91d
[ci skip] Translation update
homeassistant Feb 5, 2020
8518f77
Rename hass.io panel to supervisor
bramkragten Feb 5, 2020
aac7dba
Update Material Design Icons to v4.9.95 (#4764)
Feb 5, 2020
c7f7ef2
Fixes removing audio device (#4763)
bramkragten Feb 5, 2020
2e4c73c
Convert Media Control Card to Typescript (#4761)
zsarnett Feb 5, 2020
e01f1cf
More info scroll fix (#4774)
bramkragten Feb 5, 2020
c72105d
[ci skip] Translation update
homeassistant Feb 6, 2020
2e47aa1
Update Edit Footer for Cards (#4752)
zsarnett Feb 6, 2020
c977f22
Show seconds in the UI (#4765)
KapJI Feb 6, 2020
d1703ba
[ci skip] Translation update
homeassistant Feb 7, 2020
15e7b81
Add integrations to dev info page (#4800)
balloob Feb 7, 2020
8a4c52a
Filter battery sensors from generated UI (#4799)
balloob Feb 7, 2020
e5387e5
Fall back to use handler if translations broken (#4777)
balloob Feb 7, 2020
e0565c3
[ci skip] Translation update
homeassistant Feb 8, 2020
7d91515
Style tweaks (#4766)
bramkragten Feb 8, 2020
9e11fe8
[ci skip] Translation update
homeassistant Feb 9, 2020
0c8ac17
[ci skip] Translation update
homeassistant Feb 10, 2020
f791412
Spelling (#4806)
namadori Feb 10, 2020
cc6686a
Fix typo (#4779)
revolter Feb 10, 2020
ba4e194
Theme update refetch themes (#4812)
balloob Feb 10, 2020
4613d8b
[logbook] configure flex container to display entries correctly on mo…
KapJI Feb 10, 2020
981c798
💄 match alarm panel icon coloring to card's (#4825)
iantrich Feb 10, 2020
e7e8dff
Graceful fallback if translations for device automations are missing …
emontnemery Feb 10, 2020
2c006e9
Use original id to remove entity (#4829)
bramkragten Feb 10, 2020
88bdf7c
[ci skip] Translation update
homeassistant Feb 11, 2020
8cee5c7
[logbook] fix period dropdown animation (#4834)
KapJI Feb 11, 2020
d052b9e
Update en.json (#4835)
balloob Feb 11, 2020
9fce600
Add lozalization to more-info-vacuum (#4793)
edenhaus Feb 11, 2020
1437b4c
Fix media control card styling (#4845)
bramkragten Feb 11, 2020
d48a4e0
[logbook] implement shouldUpdate (#4832)
KapJI Feb 11, 2020
fb9d7ac
[ci skip] Translation update
homeassistant Feb 12, 2020
a952902
[logbook] fix margins for RTL languages (#4852)
KapJI Feb 12, 2020
4cdc476
Fix tap firing twice on iOS (#4841)
bramkragten Feb 12, 2020
c5aa000
Check for null target_temp (#4842)
bramkragten Feb 12, 2020
0b8700f
Hide zone edit button for non admins (#4840)
bramkragten Feb 12, 2020
49422c3
Fix translations for update button config entry system options (#4837)
bramkragten Feb 12, 2020
4ea11bd
Bumped version to 20200212.0
bramkragten Feb 12, 2020
78102f5
Merge branch 'master' into dev
bramkragten Feb 12, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 64 additions & 58 deletions hassio/src/addon-store/hassio-addon-repository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,79 +39,85 @@ class HassioAddonRepositoryEl extends LitElement {
protected render(): TemplateResult {
const repo = this.repo;
const addons = this._getAddons(this.addons, this.filter);
const ha105pluss = this._computeHA105plus;

if (this.filter && addons.length < 1) {
return html`
<div class="card-group">
<div class="title">
<div class="description">
No results found in "${repo.name}"
</div>
</div>
<div class="content">
<p class="description">
No results found in "${repo.name}"
</p>
</div>
`;
}
return html`
<div class="card-group">
<div class="title">
<div class="content">
<h1>
${repo.name}
<div class="description">
Maintained by ${repo.maintainer}<br />
<a class="repo" href=${repo.url} target="_blank">${repo.url}</a>
</div>
</h1>
<p class="description">
Maintained by ${repo.maintainer}<br />
<a class="repo" href=${repo.url} target="_blank">${repo.url}</a>
</p>
<div class="card-group">
${addons.map(
(addon) => html`
<paper-card
.addon=${addon}
class=${addon.available ? "" : "not_available"}
@click=${this._addonTapped}
>
<div class="card-content">
<hassio-card-content
.hass=${this.hass}
.title=${addon.name}
.description=${addon.description}
.available=${addon.available}
.icon=${addon.installed && addon.installed !== addon.version
? "hassio:arrow-up-bold-circle"
: "hassio:puzzle"}
.iconTitle=${addon.installed
? addon.installed !== addon.version
? "New version available"
: "Add-on is installed"
: addon.available
? "Add-on is not installed"
: "Add-on is not available on your system"}
.iconClass=${addon.installed
? addon.installed !== addon.version
? "update"
: "installed"
: !addon.available
? "not_available"
: ""}
.iconImage=${ha105pluss && addon.icon
? `/api/hassio/addons/${addon.slug}/icon`
: undefined}
.showTopbar=${addon.installed || !addon.available}
.topbarClass=${addon.installed
? addon.installed !== addon.version
? "update"
: "installed"
: !addon.available
? "unavailable"
: ""}
></hassio-card-content>
</div>
</paper-card>
`
)}
</div>

${addons.map(
(addon) => html`
<paper-card
.addon=${addon}
class=${addon.available ? "" : "not_available"}
@click=${this.addonTapped}
>
<div class="card-content">
<hassio-card-content
.hass=${this.hass}
.title=${addon.name}
.description=${addon.description}
.available=${addon.available}
.icon=${this.computeIcon(addon)}
.iconTitle=${this.computeIconTitle(addon)}
.iconClass=${this.computeIconClass(addon)}
></hassio-card-content>
</div>
</paper-card>
`
)}
</div>
`;
}

private computeIcon(addon) {
return addon.installed && addon.installed !== addon.version
? "hassio:arrow-up-bold-circle"
: "hassio:puzzle";
}

private computeIconTitle(addon) {
if (addon.installed) {
return addon.installed !== addon.version
? "New version available"
: "Add-on is installed";
}
return addon.available
? "Add-on is not installed"
: "Add-on is not available on your system";
}

private computeIconClass(addon) {
if (addon.installed) {
return addon.installed !== addon.version ? "update" : "installed";
}
return !addon.available ? "not_available" : "";
private _addonTapped(ev) {
navigate(this, `/hassio/addon/${ev.currentTarget.addon.slug}`);
}

private addonTapped(ev) {
navigate(this, `/hassio/addon/${ev.currentTarget.addon.slug}`);
private get _computeHA105plus(): boolean {
const [major, minor] = this.hass.config.version.split(".", 2);
return Number(major) > 0 || (major === "0" && Number(minor) >= 105);
}

static get styles(): CSSResultArray {
Expand Down
108 changes: 55 additions & 53 deletions hassio/src/addon-store/hassio-repositories-editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,61 +36,63 @@ class HassioRepositoriesEditor extends LitElement {
protected render(): TemplateResult {
const repos = this._sortedRepos(this.repos);
return html`
<div class="card-group">
<div class="title">
<div class="content">
<h1>
Repositories
<div class="description">
Configure which add-on repositories to fetch data from:
</div>
</div>
${// Use repeat so that the fade-out from call-service-api-button
// stays with the correct repo after we add/delete one.
repeat(
repos,
(repo) => repo.slug,
(repo) => html`
<paper-card>
<div class="card-content">
<hassio-card-content
.hass=${this.hass}
.title=${repo.name}
.description=${repo.url}
icon="hassio:github-circle"
></hassio-card-content>
</div>
<div class="card-actions">
<ha-call-api-button
path="hassio/supervisor/options"
.hass=${this.hass}
.data=${this.computeRemoveRepoData(repos, repo.url)}
class="warning"
>
Remove
</ha-call-api-button>
</div>
</paper-card>
`
)}
</h1>
<p class="description">
Configure which add-on repositories to fetch data from:
</p>
<div class="card-group">
${// Use repeat so that the fade-out from call-service-api-button
// stays with the correct repo after we add/delete one.
repeat(
repos,
(repo) => repo.slug,
(repo) => html`
<paper-card>
<div class="card-content">
<hassio-card-content
.hass=${this.hass}
.title=${repo.name}
.description=${repo.url}
icon="hassio:github-circle"
></hassio-card-content>
</div>
<div class="card-actions">
<ha-call-api-button
path="hassio/supervisor/options"
.hass=${this.hass}
.data=${this.computeRemoveRepoData(repos, repo.url)}
class="warning"
>
Remove
</ha-call-api-button>
</div>
</paper-card>
`
)}

<paper-card>
<div class="card-content add">
<iron-icon icon="hassio:github-circle"></iron-icon>
<paper-input
label="Add new repository by URL"
.value=${this._repoUrl}
@value-changed=${this._urlChanged}
></paper-input>
</div>
<div class="card-actions">
<ha-call-api-button
path="hassio/supervisor/options"
.hass=${this.hass}
.data=${this.computeAddRepoData(repos, this._repoUrl)}
>
Add
</ha-call-api-button>
</div>
</paper-card>
<paper-card>
<div class="card-content add">
<iron-icon icon="hassio:github-circle"></iron-icon>
<paper-input
label="Add new repository by URL"
.value=${this._repoUrl}
@value-changed=${this._urlChanged}
></paper-input>
</div>
<div class="card-actions">
<ha-call-api-button
path="hassio/supervisor/options"
.hass=${this.hass}
.data=${this.computeAddRepoData(repos, this._repoUrl)}
>
Add
</ha-call-api-button>
</div>
</paper-card>
</div>
</div>
`;
}
Expand Down
38 changes: 18 additions & 20 deletions hassio/src/addon-view/hassio-addon-audio.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class HassioAddonAudio extends LitElement {

<paper-dropdown-menu
label="Input"
@selected-item-changed=${this._setInputDevice}
@iron-select=${this._setInputDevice}
>
<paper-listbox
slot="dropdown-content"
Expand All @@ -61,14 +61,16 @@ class HassioAddonAudio extends LitElement {
${this._inputDevices &&
this._inputDevices.map((item) => {
return html`
<paper-item device=${item.device}>${item.name}</paper-item>
<paper-item device=${item.device || ""}
>${item.name}</paper-item
>
`;
})}
</paper-listbox>
</paper-dropdown-menu>
<paper-dropdown-menu
label="Output"
@selected-item-changed=${this._setOutputDevice}
@iron-select=${this._setOutputDevice}
>
<paper-listbox
slot="dropdown-content"
Expand All @@ -78,7 +80,9 @@ class HassioAddonAudio extends LitElement {
${this._outputDevices &&
this._outputDevices.map((item) => {
return html`
<paper-item device=${item.device}>${item.name}</paper-item>
<paper-item device=${item.device || ""}
>${item.name}</paper-item
>
`;
})}
</paper-listbox>
Expand Down Expand Up @@ -123,17 +127,13 @@ class HassioAddonAudio extends LitElement {
}

private _setInputDevice(ev): void {
const device = ev.detail.device;
if (device) {
this._selectedInput = device;
}
const device = ev.detail.item.getAttribute("device");
this._selectedInput = device || null;
}

private _setOutputDevice(ev): void {
const device = ev.detail.device;
if (device) {
this._selectedOutput = device;
}
const device = ev.detail.item.getAttribute("device");
this._selectedOutput = device || null;
}

private async _addonChanged(): Promise<void> {
Expand All @@ -143,13 +143,11 @@ class HassioAddonAudio extends LitElement {
return;
}

const noDevice: HassioHardwareAudioDevice[] = [
{ device: undefined, name: "-" },
];
const noDevice: HassioHardwareAudioDevice = { device: null, name: "-" };

try {
const { audio } = await fetchHassioHardwareAudio(this.hass);
const inupt = Object.keys(audio.input).map((key) => ({
const input = Object.keys(audio.input).map((key) => ({
device: key,
name: audio.input[key],
}));
Expand All @@ -158,12 +156,12 @@ class HassioAddonAudio extends LitElement {
name: audio.output[key],
}));

this._inputDevices = noDevice.concat(inupt);
this._outputDevices = noDevice.concat(output);
this._inputDevices = [noDevice, ...input];
this._outputDevices = [noDevice, ...output];
} catch {
this._error = "Failed to fetch audio hardware";
this._inputDevices = noDevice;
this._outputDevices = noDevice;
this._inputDevices = [noDevice];
this._outputDevices = [noDevice];
}
}

Expand Down
Loading