@@ -267,6 +295,57 @@ export class ThreadConfigPanel extends SubscribeMixin(LitElement) { }); } + private async _addTLV() { + const tlv = await showPromptDialog(this, { + title: this.hass.localize("ui.panel.config.thread.add_dataset"), + inputLabel: this.hass.localize( + "ui.panel.config.thread.add_dataset_label" + ), + confirmText: this.hass.localize( + "ui.panel.config.thread.add_dataset_button" + ), + }); + if (!tlv) { + return; + } + try { + await addThreadDataSet(this.hass, "manual", tlv); + } catch (err: any) { + showAlertDialog(this, { + title: "Error", + text: err.message || err, + }); + } + this._refresh(); + } + + private async _removeDataset(ev: Event) { + const dataset = (ev.currentTarget as any).networkDataset as ThreadDataSet; + const confirm = await showConfirmationDialog(this, { + title: this.hass.localize( + "ui.panel.config.thread.confirm_delete_dataset", + { name: dataset.network_name } + ), + text: this.hass.localize( + "ui.panel.config.thread.confirm_delete_dataset_text" + ), + destructive: true, + confirmText: this.hass.localize("ui.common.delete"), + }); + if (!confirm) { + return; + } + try { + await removeThreadDataSet(this.hass, dataset.dataset_id); + } catch (err: any) { + showAlertDialog(this, { + title: "Error", + text: err.message || err, + }); + } + this._refresh(); + } + static styles = [ haStyle, css` diff --git a/src/panels/config/integrations/integration-panels/zha/dialog-zha-reconfigure-device.ts b/src/panels/config/integrations/integration-panels/zha/dialog-zha-reconfigure-device.ts index 4c43266385..92d1d5840b 100644 --- a/src/panels/config/integrations/integration-panels/zha/dialog-zha-reconfigure-device.ts +++ b/src/panels/config/integrations/integration-panels/zha/dialog-zha-reconfigure-device.ts @@ -72,7 +72,7 @@ class DialogZHAReconfigureDevice extends LitElement { this.hass, this.hass.localize(`ui.dialogs.zha_reconfigure_device.heading`) + ": " + - (this._params?.device.user_given_name || this._params?.device.name) + (this._params.device.user_given_name || this._params.device.name) )} > ${!this._status diff --git a/src/panels/lovelace/cards/hui-gauge-card.ts b/src/panels/lovelace/cards/hui-gauge-card.ts index 975cea74d3..1da6503756 100644 --- a/src/panels/lovelace/cards/hui-gauge-card.ts +++ b/src/panels/lovelace/cards/hui-gauge-card.ts @@ -183,7 +183,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard { // new format let segments = this._config!.segments; if (segments) { - segments = [...segments].sort((a, b) => a?.from - b?.from); + segments = [...segments].sort((a, b) => a.from - b.from); for (let i = 0; i < segments.length; i++) { const segment = segments[i]; diff --git a/src/translations/en.json b/src/translations/en.json index 95875837c8..020ae10cb3 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -1038,9 +1038,9 @@ "restart": { "title": "Restart Home Assistant", "description": "Interrupts all running automations and scripts.", - "confirm_title": "Restart?", + "confirm_title": "Restart Home Assistant?", "confirm_description": "This will interrupt all running automations and scripts.", - "confirm_action": "Restart Home Assistant", + "confirm_action": "Restart", "failed": "Failed to restart Home Assistant" }, "reboot": { @@ -1801,7 +1801,7 @@ "reboot_moved_link": "Go to system page.", "processor": "Processor", "memory": "Memory", - "board": "Board", + "generic_hardware": "Generic Hardware", "documentation": "Documentation", "configure": "Configure", "documentation_description": "Find extra information about your device", @@ -3288,6 +3288,12 @@ "my_network": "My network", "no_preferred_network": "You don't have a preferred network yet.", "add_open_thread_border_router": "Add an OpenThread border router", + "add_dataset_from_tlv": "Add dataset from TLV", + "add_dataset": "Add Thread dataset", + "add_dataset_label": "Operational dataset TLV", + "add_dataset_button": "Add dataset", + "confirm_delete_dataset": "Delete {name} dataset?", + "confirm_delete_dataset_text": "This network will be removed from Home Assistant.", "no_border_routers": "No border routers found", "border_routers": "{count} border {count, plural,\n one {router}\n other {routers}\n}", "managed_by_home_assistant": "Managed by Home Assistant", diff --git a/yarn.lock b/yarn.lock index 7efa4408ed..21d3d0396c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1457,9 +1457,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^1.4.1": - version: 1.4.1 - resolution: "@eslint/eslintrc@npm:1.4.1" +"@eslint/eslintrc@npm:^2.0.0": + version: 2.0.0 + resolution: "@eslint/eslintrc@npm:2.0.0" dependencies: ajv: ^6.12.4 debug: ^4.3.2 @@ -1470,7 +1470,14 @@ __metadata: js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: cd3e5a8683db604739938b1c1c8b77927dc04fce3e28e0c88e7f2cd4900b89466baf83dfbad76b2b9e4d2746abdd00dd3f9da544d3e311633d8693f327d04cd7 + checksum: 31119c8ca06723d80384f18f5c78e0530d8e6306ad36379868650131a8b10dd7cffd7aff79a5deb3a2e9933660823052623d268532bae9538ded53d5b19a69a6 + languageName: node + linkType: hard + +"@eslint/js@npm:8.35.0": + version: 8.35.0 + resolution: "@eslint/js@npm:8.35.0" + checksum: 6687ceff659a6d617e37823f809dc9c4b096535961a81acead27d26b1a51a4cf608a5e59d831ddd57f24f6f8bb99340a4a0e19f9c99b390fbb4b275f51ed5f5e languageName: node linkType: hard @@ -8073,11 +8080,12 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.34.0": - version: 8.34.0 - resolution: "eslint@npm:8.34.0" +"eslint@npm:^8.35.0": + version: 8.35.0 + resolution: "eslint@npm:8.35.0" dependencies: - "@eslint/eslintrc": ^1.4.1 + "@eslint/eslintrc": ^2.0.0 + "@eslint/js": 8.35.0 "@humanwhocodes/config-array": ^0.11.8 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -8091,7 +8099,7 @@ __metadata: eslint-utils: ^3.0.0 eslint-visitor-keys: ^3.3.0 espree: ^9.4.0 - esquery: ^1.4.0 + esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 file-entry-cache: ^6.0.1 @@ -8118,7 +8126,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 4e13e9eb05ac2248efbb6acae0b2325091235d5c47ba91a4775c7d6760778cbcd358a773ebd42f4629d2ad89e27c02f5d66eb1f737d75d9f5fc411454f83b2e5 + checksum: 6212173691d90b1bc94dd3d640e1f210374b30c3905fc0a15e501cf71c6ca52aa3d80ea7a9a245adaaed26d6019169e01fb6881b3f2885b188d37069c749308c languageName: node linkType: hard @@ -8143,12 +8151,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" +"esquery@npm:^1.4.2": + version: 1.4.2 + resolution: "esquery@npm:1.4.2" dependencies: estraverse: ^5.1.0 - checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 + checksum: 2f4ad89c5aafaca61cc2c15e256190f0d6deb4791cae6552d3cb4b1eb8867958cdf27a56aaa3272ff17435e3eaa19ee0d4129fac336ca6373d7354d7b5da7966 languageName: node linkType: hard @@ -9625,7 +9633,7 @@ fsevents@~2.3.2: deep-clone-simple: ^1.1.1 deep-freeze: ^0.0.1 del: ^7.0.0 - eslint: ^8.34.0 + eslint: ^8.35.0 eslint-config-airbnb-base: ^15.0.0 eslint-config-airbnb-typescript: ^17.0.0 eslint-config-prettier: ^8.6.0 @@ -9692,7 +9700,7 @@ fsevents@~2.3.2: sortablejs: ^1.15.0 source-map-url: ^0.4.1 superstruct: ^1.0.3 - systemjs: ^6.13.0 + systemjs: ^6.14.0 tar: ^6.1.13 terser-webpack-plugin: ^5.3.6 tinykeys: ^1.4.0 @@ -9704,7 +9712,7 @@ fsevents@~2.3.2: vinyl-buffer: ^1.0.1 vinyl-source-stream: ^2.0.0 vis-data: ^7.1.4 - vis-network: ^9.1.2 + vis-network: ^9.1.4 vue: ^2.7.14 vue2-daterange-picker: ^0.6.8 webpack: =5.72.1 @@ -9712,7 +9720,7 @@ fsevents@~2.3.2: webpack-dev-server: ^4.11.1 webpack-manifest-plugin: ^5.0.0 webpackbar: ^5.0.2 - weekstart: ^1.1.0 + weekstart: ^2.0.0 workbox-build: ^6.5.4 workbox-cacheable-response: ^6.5.4 workbox-core: ^6.5.4 @@ -15048,10 +15056,10 @@ fsevents@~2.3.2: languageName: node linkType: hard -"systemjs@npm:^6.13.0": - version: 6.13.0 - resolution: "systemjs@npm:6.13.0" - checksum: df8d7374249778291f3a85278fdb3e1b9d81ac07767b0a7f9edeca0ee45d847c19bceb01522c817605e2908d32a4fcfed6bacd707bfb7bd577774ab900d3707d +"systemjs@npm:^6.14.0": + version: 6.14.0 + resolution: "systemjs@npm:6.14.0" + checksum: df82c38a5f23012dfee693e97dacfc48eef787a80cc41bc3bd594567ba9441c6392978841c6555d88df7451a2e22c8df9fcbf9c88c78f9f9b9027393ac38d84b languageName: node linkType: hard @@ -16065,18 +16073,18 @@ typescript@^3.8.3: languageName: node linkType: hard -"vis-network@npm:^9.1.2": - version: 9.1.2 - resolution: "vis-network@npm:9.1.2" +"vis-network@npm:^9.1.4": + version: 9.1.4 + resolution: "vis-network@npm:9.1.4" peerDependencies: "@egjs/hammerjs": ^2.0.0 component-emitter: ^1.3.0 keycharm: ^0.2.0 || ^0.3.0 || ^0.4.0 timsort: ^0.3.0 - uuid: ^3.4.0 || ^7.0.0 || ^8.0.0 + uuid: ^3.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 vis-data: ^7.0.0 vis-util: ^5.0.1 - checksum: 763bee104c9d69f6b229d10675f712f824568f28dd13540d35d0f1f1fc58fcb9dc27cc12da80f6e874076a7cb75793d168b49c3c7783f8cb06f57931d9edfe0e + checksum: 1c3ce02d251bf04ce3284301d597ee2630ad2a76de6c168c78df4dccf8ec4f4d058d67a1d78d507b763ff909d04d0d1afadcb3c3daf664e5090720b25a00aa2f languageName: node linkType: hard @@ -16419,10 +16427,10 @@ typescript@^3.8.3: languageName: node linkType: hard -"weekstart@npm:^1.1.0": - version: 1.1.0 - resolution: "weekstart@npm:1.1.0" - checksum: afce96e0b95809a30f00fa02b13a0927324d9f76b9c10ce6b3de9bbd5926615156f8a0526c63e2bd1cabdc8ec3da68b8df8d6608b6364ded11b5da300a8cfcb4 +"weekstart@npm:^2.0.0": + version: 2.0.0 + resolution: "weekstart@npm:2.0.0" + checksum: 9a27d7fe30d847997d50006c814e68ad9b105858a43029b2312bf5757dd49839865a64ad28345d2dcb1b9f25b72f0de81e23d8db50362890b253486defff69e6 languageName: node linkType: hard