@matter-server/dashboard 1.1.8-alpha.0-20260707-c552b9d → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/README.md +30 -1
  2. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts +6 -0
  3. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.d.ts.map +1 -1
  4. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js +55 -2
  5. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-thread.js.map +1 -1
  6. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts +6 -0
  7. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.d.ts.map +1 -1
  8. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js +53 -3
  9. package/dist/esm/components/dialogs/commission-node-dialog/commission-node-wifi.js.map +1 -1
  10. package/dist/esm/components/dialogs/fabric-label-dialog/fabric-label-dialog.d.ts +29 -0
  11. package/dist/esm/components/dialogs/fabric-label-dialog/fabric-label-dialog.d.ts.map +1 -0
  12. package/dist/esm/components/dialogs/fabric-label-dialog/fabric-label-dialog.js +112 -0
  13. package/dist/esm/components/dialogs/fabric-label-dialog/fabric-label-dialog.js.map +6 -0
  14. package/dist/esm/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.d.ts +8 -0
  15. package/dist/esm/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.d.ts.map +1 -0
  16. package/dist/esm/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.js +17 -0
  17. package/dist/esm/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.js.map +6 -0
  18. package/dist/esm/components/dialogs/settings/settings-dialog.d.ts +28 -0
  19. package/dist/esm/components/dialogs/settings/settings-dialog.d.ts.map +1 -1
  20. package/dist/esm/components/dialogs/settings/settings-dialog.js +496 -105
  21. package/dist/esm/components/dialogs/settings/settings-dialog.js.map +1 -1
  22. package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts +6 -0
  23. package/dist/esm/pages/cluster-commands/base-cluster-commands.d.ts.map +1 -1
  24. package/dist/esm/pages/cluster-commands/base-cluster-commands.js +8 -0
  25. package/dist/esm/pages/cluster-commands/base-cluster-commands.js.map +1 -1
  26. package/dist/esm/pages/cluster-commands/clusters/access-control-commands.d.ts.map +1 -1
  27. package/dist/esm/pages/cluster-commands/clusters/access-control-commands.js +21 -7
  28. package/dist/esm/pages/cluster-commands/clusters/access-control-commands.js.map +1 -1
  29. package/dist/esm/pages/cluster-commands/clusters/avsum-commands.d.ts.map +1 -1
  30. package/dist/esm/pages/cluster-commands/clusters/avsum-commands.js +34 -13
  31. package/dist/esm/pages/cluster-commands/clusters/avsum-commands.js.map +1 -1
  32. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.d.ts.map +1 -1
  33. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.js +17 -11
  34. package/dist/esm/pages/cluster-commands/clusters/basic-information-commands.js.map +1 -1
  35. package/dist/esm/pages/cluster-commands/clusters/binding-commands.d.ts.map +1 -1
  36. package/dist/esm/pages/cluster-commands/clusters/binding-commands.js +24 -9
  37. package/dist/esm/pages/cluster-commands/clusters/binding-commands.js.map +1 -1
  38. package/dist/esm/pages/cluster-commands/clusters/icd-management-commands.d.ts +54 -0
  39. package/dist/esm/pages/cluster-commands/clusters/icd-management-commands.d.ts.map +1 -0
  40. package/dist/esm/pages/cluster-commands/clusters/icd-management-commands.js +514 -0
  41. package/dist/esm/pages/cluster-commands/clusters/icd-management-commands.js.map +6 -0
  42. package/dist/esm/pages/cluster-commands/index.d.ts +1 -0
  43. package/dist/esm/pages/cluster-commands/index.d.ts.map +1 -1
  44. package/dist/esm/pages/cluster-commands/index.js +1 -0
  45. package/dist/esm/pages/cluster-commands/index.js.map +1 -1
  46. package/dist/esm/pages/components/node-details.d.ts +2 -0
  47. package/dist/esm/pages/components/node-details.d.ts.map +1 -1
  48. package/dist/esm/pages/components/node-details.js +43 -2
  49. package/dist/esm/pages/components/node-details.js.map +1 -1
  50. package/dist/esm/pages/components/server-details.d.ts +4 -0
  51. package/dist/esm/pages/components/server-details.d.ts.map +1 -1
  52. package/dist/esm/pages/components/server-details.js +50 -2
  53. package/dist/esm/pages/components/server-details.js.map +1 -1
  54. package/dist/esm/pages/matter-cluster-view.d.ts.map +1 -1
  55. package/dist/esm/pages/matter-cluster-view.js +1 -1
  56. package/dist/esm/pages/matter-cluster-view.js.map +1 -1
  57. package/dist/esm/pages/matter-network-view.d.ts +2 -0
  58. package/dist/esm/pages/matter-network-view.d.ts.map +1 -1
  59. package/dist/esm/pages/matter-network-view.js +23 -0
  60. package/dist/esm/pages/matter-network-view.js.map +1 -1
  61. package/dist/esm/pages/matter-server-view.d.ts.map +1 -1
  62. package/dist/esm/pages/matter-server-view.js +35 -1
  63. package/dist/esm/pages/matter-server-view.js.map +1 -1
  64. package/dist/esm/pages/network/border-router-store.d.ts +11 -4
  65. package/dist/esm/pages/network/border-router-store.d.ts.map +1 -1
  66. package/dist/esm/pages/network/border-router-store.js +39 -0
  67. package/dist/esm/pages/network/border-router-store.js.map +1 -1
  68. package/dist/esm/pages/network/network-details.d.ts +11 -1
  69. package/dist/esm/pages/network/network-details.d.ts.map +1 -1
  70. package/dist/esm/pages/network/network-details.js +305 -3
  71. package/dist/esm/pages/network/network-details.js.map +1 -1
  72. package/dist/esm/pages/network/network-types.d.ts +3 -183
  73. package/dist/esm/pages/network/network-types.d.ts.map +1 -1
  74. package/dist/esm/pages/network/network-types.js +1 -10
  75. package/dist/esm/pages/network/network-types.js.map +2 -2
  76. package/dist/esm/pages/network/network-utils.d.ts +19 -171
  77. package/dist/esm/pages/network/network-utils.d.ts.map +1 -1
  78. package/dist/esm/pages/network/network-utils.js +118 -510
  79. package/dist/esm/pages/network/network-utils.js.map +2 -2
  80. package/dist/esm/pages/network/thread-graph.d.ts +23 -1
  81. package/dist/esm/pages/network/thread-graph.d.ts.map +1 -1
  82. package/dist/esm/pages/network/thread-graph.js +187 -10
  83. package/dist/esm/pages/network/thread-graph.js.map +1 -1
  84. package/dist/esm/util/duration.d.ts +8 -0
  85. package/dist/esm/util/duration.d.ts.map +1 -0
  86. package/dist/esm/util/duration.js +25 -0
  87. package/dist/esm/util/duration.js.map +6 -0
  88. package/dist/esm/util/icd.d.ts +54 -0
  89. package/dist/esm/util/icd.d.ts.map +1 -0
  90. package/dist/esm/util/icd.js +139 -0
  91. package/dist/esm/util/icd.js.map +6 -0
  92. package/dist/web/js/{attribute-write-dialog-Bk3AWMoZ.js → attribute-write-dialog-Bu7d1xMh.js} +1 -1
  93. package/dist/web/js/{command-invoke-dialog-H8A7dCFd.js → command-invoke-dialog-BK7MYWq-.js} +1 -1
  94. package/dist/web/js/{commission-node-dialog-GIvqBYGw.js → commission-node-dialog-BeRg7rEp.js} +5 -5
  95. package/dist/web/js/{commission-node-existing-DglV5NXP.js → commission-node-existing-ugSNvMcK.js} +2 -2
  96. package/dist/web/js/{commission-node-thread-DzrHWt8R.js → commission-node-thread-CT_Qbe1U.js} +53 -4
  97. package/dist/web/js/{commission-node-wifi-DWQ9mxqk.js → commission-node-wifi-Bx1nhWl4.js} +48 -5
  98. package/dist/web/js/{dialog-box-CsqgNzj2.js → dialog-box-DolVvXoK.js} +1 -1
  99. package/dist/web/js/fabric-label-dialog-D4NlfZS9.js +94 -0
  100. package/dist/web/js/fire_event-CJVsUQ4T.js +18 -0
  101. package/dist/web/js/main.js +101 -22
  102. package/dist/web/js/{matter-dashboard-app-BrbVPiqG.js → matter-dashboard-app-DMIDxj8f.js} +3118 -944
  103. package/dist/web/js/{node-acl-add-dialog-COL4myAw.js → node-acl-add-dialog-8qtV5Lx-.js} +1 -1
  104. package/dist/web/js/{node-binding-dialog-_Odw2AGk.js → node-binding-dialog-B75AcGPb.js} +1 -1
  105. package/dist/web/js/{node-label-dialog-D6hA1gVX.js → node-label-dialog-QxhxDvAP.js} +1 -1
  106. package/dist/web/js/settings-dialog-CeBkVje3.js +980 -0
  107. package/package.json +4 -4
  108. package/src/components/dialogs/commission-node-dialog/commission-node-thread.ts +64 -3
  109. package/src/components/dialogs/commission-node-dialog/commission-node-wifi.ts +62 -4
  110. package/src/components/dialogs/fabric-label-dialog/fabric-label-dialog.ts +109 -0
  111. package/src/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.ts +16 -0
  112. package/src/components/dialogs/settings/settings-dialog.ts +526 -118
  113. package/src/pages/cluster-commands/base-cluster-commands.ts +11 -0
  114. package/src/pages/cluster-commands/clusters/access-control-commands.ts +21 -7
  115. package/src/pages/cluster-commands/clusters/avsum-commands.ts +34 -13
  116. package/src/pages/cluster-commands/clusters/basic-information-commands.ts +17 -12
  117. package/src/pages/cluster-commands/clusters/binding-commands.ts +26 -10
  118. package/src/pages/cluster-commands/clusters/icd-management-commands.ts +551 -0
  119. package/src/pages/cluster-commands/index.ts +1 -0
  120. package/src/pages/components/node-details.ts +46 -2
  121. package/src/pages/components/server-details.ts +55 -2
  122. package/src/pages/matter-cluster-view.ts +4 -3
  123. package/src/pages/matter-network-view.ts +25 -0
  124. package/src/pages/matter-server-view.ts +37 -1
  125. package/src/pages/network/border-router-store.ts +51 -4
  126. package/src/pages/network/network-details.ts +379 -3
  127. package/src/pages/network/network-types.ts +19 -193
  128. package/src/pages/network/network-utils.ts +125 -803
  129. package/src/pages/network/thread-graph.ts +241 -13
  130. package/src/util/duration.ts +24 -0
  131. package/src/util/icd.ts +197 -0
  132. package/dist/web/js/fire_event-BEdDUG4R.js +0 -168
  133. package/dist/web/js/settings-dialog-DUmZpfSq.js +0 -606
package/README.md CHANGED
@@ -111,13 +111,42 @@ A connection with neither tag is bidirectional: both nodes see each other.
111
111
 
112
112
  #### Data Sources
113
113
 
114
- Thread devices maintain two tables:
114
+ Thread devices itself maintain two tables:
115
115
 
116
116
  1. **Neighbor Table** (0/53/7): Direct RF neighbors visible to the device. All Thread devices have this.
117
117
  2. **Route Table** (0/53/8): Routing paths to other nodes. Only routers maintain this table.
118
118
 
119
119
  The visualization combines both tables directly from the devices to provide the most complete picture of your network.
120
120
 
121
+ Additionally, if REST-APIs or network credentials are available on the Matter Server we also query the Border routers directly to get more detailed information (see below) and combine it with the device tables.
122
+
123
+ ### Thread Diagnostics from Border Routers
124
+
125
+ Beyond what your own commissioned devices report, the dashboard can build a much fuller Thread mesh by
126
+ asking the Thread **Border Routers** directly — including routers and children that aren't on your
127
+ Matter fabric. Border Routers are discovered automatically on your LAN; querying their diagnostics
128
+ needs a way into each Thread network:
129
+
130
+ - **Store the network's credentials.** Open **Settings** (cog icon) and add the Thread network's
131
+ operational dataset. A dataset that includes the network key lets the server query that network's
132
+ Border Routers directly (over Thread's MeshCoP protocol). You can store **several networks** — one
133
+ entry per Thread network (e.g. your own, plus a Home Assistant, Apple, or Google network you also
134
+ have the dataset for) — and the dashboard will show each network's mesh.
135
+ - **Some Border Routers need no credentials.** OpenThread-based Border Routers (e.g. the Home
136
+ Assistant add-on) expose a local API the dashboard can read directly, so their network populates
137
+ even without a stored dataset.
138
+ - Networks with neither a stored dataset nor a readable Border Router are listed but show no per-node
139
+ diagnostics.
140
+
141
+ **First view is live, then cached.** The first time you open the Thread network view in a session, the
142
+ data is collected live from the Border Routers. This takes a moment: nodes **pop in progressively over
143
+ about 20 seconds** as each responds — so an initially sparse mesh filling itself out is normal, not an
144
+ error. Once collected, results are **cached** and shown instantly on later views. Use the refresh
145
+ button to re-collect the latest data on demand.
146
+
147
+ This whole subsystem is optional and can be turned off by the server operator (`--disable-thread-diagnostics`);
148
+ Matter-over-Thread commissioning still works either way.
149
+
121
150
  ### Update Connections
122
151
 
123
152
  Click the refresh button in the device details panel to update network data:
@@ -4,6 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import "@material/web/progress/circular-progress";
7
+ import "@material/web/select/outlined-select";
8
+ import "@material/web/select/select-option";
7
9
  import "@material/web/textfield/outlined-text-field";
8
10
  import { MatterClient } from "@matter-server/ws-client";
9
11
  import { LitElement } from "lit";
@@ -12,10 +14,14 @@ export declare class CommissionNodeThread extends LitElement {
12
14
  static styles: import("lit").CSSResult;
13
15
  client: MatterClient;
14
16
  private _loading;
17
+ private _credentials;
18
+ private _selectedId;
15
19
  private _datasetField;
16
20
  private _pairingCodeField;
17
21
  private _pairingFocused;
18
22
  private _credsFocused;
23
+ connectedCallback(): void;
24
+ private _loadCredentials;
19
25
  protected updated(): void;
20
26
  private _maybeAutofocus;
21
27
  protected render(): import("lit-html").TemplateResult<1>;
@@ -1 +1 @@
1
- {"version":3,"file":"commission-node-thread.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/commission-node-dialog/commission-node-thread.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,0CAA0C,CAAC;AAClD,OAAO,6CAA6C,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAMrD,OAAO,sBAAsB,CAAC;AAE9B,qBACa,oBAAqB,SAAQ,UAAU;IAChD,OAAgB,MAAM,0BA8BpB;IAGK,MAAM,EAAG,YAAY,CAAC;IAG7B,OAAO,CAAC,QAAQ,CAAkB;IAGlC,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAE9B,UAAmB,OAAO,IAAI,IAAI,CAEjC;YAEa,eAAe;IAY7B,UAAmB,MAAM,yCA4BxB;YAEa,iBAAiB;YAuBjB,eAAe;CAWhC;AAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,aAAa;QACnB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC7C;CACJ"}
1
+ {"version":3,"file":"commission-node-thread.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/commission-node-dialog/commission-node-thread.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,0CAA0C,CAAC;AAClD,OAAO,sCAAsC,CAAC;AAC9C,OAAO,oCAAoC,CAAC;AAC5C,OAAO,6CAA6C,CAAC;AAErD,OAAO,EAAyB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAMrD,OAAO,sBAAsB,CAAC;AAE9B,qBACa,oBAAqB,SAAQ,UAAU;IAChD,OAAgB,MAAM,0BA8BpB;IAGK,MAAM,EAAG,YAAY,CAAC;IAG7B,OAAO,CAAC,QAAQ,CAAkB;IAGlC,OAAO,CAAC,YAAY,CAAsC;IAG1D,OAAO,CAAC,WAAW,CAAqB;IAGxC,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAErB,iBAAiB,IAAI,IAAI,CAGjC;YAEa,gBAAgB;IAgB9B,UAAmB,OAAO,IAAI,IAAI,CAEjC;YAEa,eAAe;IAY7B,UAAmB,MAAM,yCAuDxB;YAEa,iBAAiB;YAuBjB,eAAe;CAgBhC;AAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,aAAa;QACnB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC7C;CACJ"}
@@ -15,6 +15,8 @@ var __decorateClass = (decorators, target, key, kind) => {
15
15
  */
16
16
  import { consume } from "@lit/context";
17
17
  import "@material/web/progress/circular-progress";
18
+ import "@material/web/select/outlined-select";
19
+ import "@material/web/select/select-option";
18
20
  import "@material/web/textfield/outlined-text-field";
19
21
  import { mdiAccessPoint } from "@mdi/js";
20
22
  import { LitElement, css, html, nothing } from "lit";
@@ -28,9 +30,27 @@ let CommissionNodeThread = class extends LitElement {
28
30
  constructor() {
29
31
  super(...arguments);
30
32
  this._loading = false;
33
+ this._credentials = null;
34
+ this._selectedId = "default";
31
35
  this._pairingFocused = false;
32
36
  this._credsFocused = false;
33
37
  }
38
+ connectedCallback() {
39
+ super.connectedCallback();
40
+ void this._loadCredentials().catch((err) => console.warn("Failed to load credentials:", err));
41
+ }
42
+ async _loadCredentials() {
43
+ if (this._credentials !== null) return;
44
+ if (!this.client || this.client.serverInfo.schema_version < 12) return;
45
+ try {
46
+ this._credentials = await this.client.getAllCredentials();
47
+ if (!(this.client.serverInfo.thread_credentials_set ?? false)) {
48
+ const firstNamed = this._credentials.thread.find((e) => e.id !== "default");
49
+ if (firstNamed !== void 0) this._selectedId = firstNamed.id;
50
+ }
51
+ } catch {
52
+ }
53
+ }
34
54
  updated() {
35
55
  void this._maybeAutofocus().catch((err) => console.warn("Autofocus failed:", err));
36
56
  }
@@ -46,7 +66,10 @@ let CommissionNodeThread = class extends LitElement {
46
66
  }
47
67
  }
48
68
  render() {
49
- if (!this.client.serverInfo.thread_credentials_set) {
69
+ const defaultSet = this.client.serverInfo.thread_credentials_set ?? false;
70
+ const threadList = this._credentials?.thread ?? [];
71
+ const selectable = threadList.filter((e) => e.id !== "default" || defaultSet);
72
+ if (selectable.length === 0) {
50
73
  return html`<md-outlined-text-field
51
74
  label="Thread dataset"
52
75
  .disabled="${this._loading}"
@@ -59,6 +82,7 @@ let CommissionNodeThread = class extends LitElement {
59
82
  >Set Thread Dataset</md-outlined-button
60
83
  >${this._loading ? html` <md-circular-progress indeterminate></md-circular-progress> ` : nothing}`;
61
84
  }
85
+ const showPicker = selectable.length > 1;
62
86
  return html`<div class="cred-chip">
63
87
  <ha-svg-icon .path=${mdiAccessPoint}></ha-svg-icon>
64
88
  <span>Thread network set</span>
@@ -67,6 +91,24 @@ let CommissionNodeThread = class extends LitElement {
67
91
  Edit in Settings
68
92
  </button>
69
93
  </div>
94
+ ${showPicker ? html`<md-outlined-select
95
+ label="Thread network"
96
+ .disabled=${this._loading}
97
+ .value=${this._selectedId}
98
+ @change=${(e) => {
99
+ this._selectedId = e.target.value;
100
+ }}
101
+ >
102
+ ${selectable.map(
103
+ (entry) => html`
104
+ <md-select-option value=${entry.id}>
105
+ <div slot="headline">${entry.networkName || entry.id}</div>
106
+ </md-select-option>
107
+ `
108
+ )}
109
+ </md-outlined-select>
110
+ <br />
111
+ <br />` : nothing}
70
112
  <md-outlined-text-field label="Pairing code" .disabled="${this._loading}"> </md-outlined-text-field>
71
113
  <br />
72
114
  <br />
@@ -97,9 +139,14 @@ let CommissionNodeThread = class extends LitElement {
97
139
  }
98
140
  }
99
141
  async _commissionNode() {
142
+ if (!this._pairingCodeField.value) {
143
+ showAlertDialog({ title: "Validation error", text: "Pairing code is required" });
144
+ return;
145
+ }
100
146
  this._loading = true;
101
147
  try {
102
- const node = await this.client.commissionWithCode(this._pairingCodeField.value, false);
148
+ const opts = this._selectedId !== "default" ? { threadDatasetId: this._selectedId } : void 0;
149
+ const node = await this.client.commissionWithCode(this._pairingCodeField.value, false, opts);
103
150
  fireEvent(this, "node-commissioned", node);
104
151
  } catch (err) {
105
152
  showAlertDialog({ title: "Error commissioning node", text: err.message });
@@ -146,6 +193,12 @@ __decorateClass([
146
193
  __decorateClass([
147
194
  state()
148
195
  ], CommissionNodeThread.prototype, "_loading", 2);
196
+ __decorateClass([
197
+ state()
198
+ ], CommissionNodeThread.prototype, "_credentials", 2);
199
+ __decorateClass([
200
+ state()
201
+ ], CommissionNodeThread.prototype, "_selectedId", 2);
149
202
  __decorateClass([
150
203
  query("md-outlined-text-field[label='Thread dataset']")
151
204
  ], CommissionNodeThread.prototype, "_datasetField", 2);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/dialogs/commission-node-dialog/commission-node-thread.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -4,6 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import "@material/web/progress/circular-progress";
7
+ import "@material/web/select/outlined-select";
8
+ import "@material/web/select/select-option";
7
9
  import "@material/web/textfield/outlined-text-field";
8
10
  import { MatterClient } from "@matter-server/ws-client";
9
11
  import { LitElement } from "lit";
@@ -12,11 +14,15 @@ export declare class CommissionNodeWifi extends LitElement {
12
14
  static styles: import("lit").CSSResult;
13
15
  client: MatterClient;
14
16
  private _loading;
17
+ private _credentials;
18
+ private _selectedId;
15
19
  private _ssidField;
16
20
  private _passwordField;
17
21
  private _pairingCodeField;
18
22
  private _pairingFocused;
19
23
  private _credsFocused;
24
+ connectedCallback(): void;
25
+ private _loadCredentials;
20
26
  protected updated(): void;
21
27
  private _maybeAutofocus;
22
28
  protected render(): import("lit-html").TemplateResult<1>;
@@ -1 +1 @@
1
- {"version":3,"file":"commission-node-wifi.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/commission-node-dialog/commission-node-wifi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,0CAA0C,CAAC;AAClD,OAAO,6CAA6C,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAMrD,OAAO,sBAAsB,CAAC;AAE9B,qBACa,kBAAmB,SAAQ,UAAU;IAC9C,OAAgB,MAAM,0BA8BpB;IAGK,MAAM,EAAG,YAAY,CAAC;IAG7B,OAAO,CAAC,QAAQ,CAAkB;IAGlC,OAAO,CAAC,UAAU,CAAuB;IAEzC,OAAO,CAAC,cAAc,CAAuB;IAE7C,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAE9B,UAAmB,OAAO,IAAI,IAAI,CAEjC;YAEa,eAAe;IAY7B,UAAmB,MAAM,yCA8BxB;YAEa,mBAAmB;YAqBnB,eAAe;CAehC;AAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,aAAa;QACnB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC7C;CACJ"}
1
+ {"version":3,"file":"commission-node-wifi.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/commission-node-dialog/commission-node-wifi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,0CAA0C,CAAC;AAClD,OAAO,sCAAsC,CAAC;AAC9C,OAAO,oCAAoC,CAAC;AAC5C,OAAO,6CAA6C,CAAC;AAErD,OAAO,EAAyB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAMrD,OAAO,sBAAsB,CAAC;AAE9B,qBACa,kBAAmB,SAAQ,UAAU;IAC9C,OAAgB,MAAM,0BA8BpB;IAGK,MAAM,EAAG,YAAY,CAAC;IAG7B,OAAO,CAAC,QAAQ,CAAkB;IAGlC,OAAO,CAAC,YAAY,CAAsC;IAG1D,OAAO,CAAC,WAAW,CAAqB;IAGxC,OAAO,CAAC,UAAU,CAAuB;IAEzC,OAAO,CAAC,cAAc,CAAuB;IAE7C,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAErB,iBAAiB,IAAI,IAAI,CAGjC;YAEa,gBAAgB;IAgB9B,UAAmB,OAAO,IAAI,IAAI,CAEjC;YAEa,eAAe;IAY7B,UAAmB,MAAM,yCA0DxB;YAEa,mBAAmB;YAqBnB,eAAe;CAgBhC;AAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,aAAa;QACnB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC7C;CACJ"}
@@ -15,6 +15,8 @@ var __decorateClass = (decorators, target, key, kind) => {
15
15
  */
16
16
  import { consume } from "@lit/context";
17
17
  import "@material/web/progress/circular-progress";
18
+ import "@material/web/select/outlined-select";
19
+ import "@material/web/select/select-option";
18
20
  import "@material/web/textfield/outlined-text-field";
19
21
  import { mdiWifi } from "@mdi/js";
20
22
  import { LitElement, css, html, nothing } from "lit";
@@ -28,9 +30,27 @@ let CommissionNodeWifi = class extends LitElement {
28
30
  constructor() {
29
31
  super(...arguments);
30
32
  this._loading = false;
33
+ this._credentials = null;
34
+ this._selectedId = "default";
31
35
  this._pairingFocused = false;
32
36
  this._credsFocused = false;
33
37
  }
38
+ connectedCallback() {
39
+ super.connectedCallback();
40
+ void this._loadCredentials().catch((err) => console.warn("Failed to load credentials:", err));
41
+ }
42
+ async _loadCredentials() {
43
+ if (this._credentials !== null) return;
44
+ if (!this.client || this.client.serverInfo.schema_version < 12) return;
45
+ try {
46
+ this._credentials = await this.client.getAllCredentials();
47
+ if (!(this.client.serverInfo.wifi_credentials_set ?? false)) {
48
+ const firstNamed = this._credentials.wifi.find((e) => e.id !== "default");
49
+ if (firstNamed !== void 0) this._selectedId = firstNamed.id;
50
+ }
51
+ } catch {
52
+ }
53
+ }
34
54
  updated() {
35
55
  void this._maybeAutofocus().catch((err) => console.warn("Autofocus failed:", err));
36
56
  }
@@ -46,7 +66,10 @@ let CommissionNodeWifi = class extends LitElement {
46
66
  }
47
67
  }
48
68
  render() {
49
- if (!this.client.serverInfo.wifi_credentials_set) {
69
+ const defaultSet = this.client.serverInfo.wifi_credentials_set ?? false;
70
+ const wifiList = this._credentials?.wifi ?? [];
71
+ const selectable = wifiList.filter((e) => e.id !== "default" || defaultSet);
72
+ if (selectable.length === 0) {
50
73
  return html`<md-outlined-text-field
51
74
  label="SSID"
52
75
  .disabled="${this._loading}"
@@ -61,14 +84,34 @@ let CommissionNodeWifi = class extends LitElement {
61
84
  >Set WiFi Credentials</md-outlined-button
62
85
  >${this._loading ? html`<md-circular-progress indeterminate></md-circular-progress>` : nothing}`;
63
86
  }
87
+ const showPicker = selectable.length > 1;
88
+ const chipLabel = defaultSet ? this.client.serverInfo.wifi_ssid ?? "network set" : "network set";
64
89
  return html`<div class="cred-chip">
65
90
  <ha-svg-icon .path=${mdiWifi}></ha-svg-icon>
66
- <span>WiFi: ${this.client.serverInfo.wifi_ssid ?? "network set"}</span>
91
+ <span>WiFi: ${chipLabel}</span>
67
92
  <span class="sep">·</span>
68
93
  <button class="edit-link" @click=${() => fireEvent(this, "request-settings", {})}>
69
94
  Edit in Settings
70
95
  </button>
71
96
  </div>
97
+ ${showPicker ? html`<md-outlined-select
98
+ label="WiFi network"
99
+ .disabled=${this._loading}
100
+ .value=${this._selectedId}
101
+ @change=${(e) => {
102
+ this._selectedId = e.target.value;
103
+ }}
104
+ >
105
+ ${selectable.map(
106
+ (entry) => html`
107
+ <md-select-option value=${entry.id}>
108
+ <div slot="headline">${entry.ssid || entry.id}</div>
109
+ </md-select-option>
110
+ `
111
+ )}
112
+ </md-outlined-select>
113
+ <br />
114
+ <br />` : nothing}
72
115
  <md-outlined-text-field label="Pairing code" .disabled="${this._loading}"> </md-outlined-text-field>
73
116
  <br />
74
117
  <br />
@@ -103,7 +146,8 @@ let CommissionNodeWifi = class extends LitElement {
103
146
  return;
104
147
  }
105
148
  this._loading = true;
106
- const node = await this.client.commissionWithCode(this._pairingCodeField.value, false);
149
+ const opts = this._selectedId !== "default" ? { wifiCredentialsId: this._selectedId } : void 0;
150
+ const node = await this.client.commissionWithCode(this._pairingCodeField.value, false, opts);
107
151
  fireEvent(this, "node-commissioned", node);
108
152
  } catch (err) {
109
153
  showAlertDialog({ title: "Error commissioning node", text: err.message });
@@ -150,6 +194,12 @@ __decorateClass([
150
194
  __decorateClass([
151
195
  state()
152
196
  ], CommissionNodeWifi.prototype, "_loading", 2);
197
+ __decorateClass([
198
+ state()
199
+ ], CommissionNodeWifi.prototype, "_credentials", 2);
200
+ __decorateClass([
201
+ state()
202
+ ], CommissionNodeWifi.prototype, "_selectedId", 2);
153
203
  __decorateClass([
154
204
  query("md-outlined-text-field[label='SSID']")
155
205
  ], CommissionNodeWifi.prototype, "_ssidField", 2);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/dialogs/commission-node-dialog/commission-node-wifi.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "@material/web/button/text-button";
7
+ import "@material/web/dialog/dialog";
8
+ import "@material/web/textfield/outlined-text-field";
9
+ import type { MatterClient } from "@matter-server/ws-client";
10
+ import { LitElement } from "lit";
11
+ export declare class FabricLabelDialog extends LitElement {
12
+ client: MatterClient;
13
+ currentLabel: string;
14
+ onSaved?: () => void;
15
+ private _fabricLabel;
16
+ private _saving;
17
+ protected firstUpdated(): void;
18
+ protected render(): import("lit-html").TemplateResult<1>;
19
+ private _handleInput;
20
+ private _close;
21
+ private _handleClosed;
22
+ private _save;
23
+ }
24
+ declare global {
25
+ interface HTMLElementTagNameMap {
26
+ "fabric-label-dialog": FabricLabelDialog;
27
+ }
28
+ }
29
+ //# sourceMappingURL=fabric-label-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fabric-label-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/fabric-label-dialog/fabric-label-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,kCAAkC,CAAC;AAC1C,OAAO,6BAA6B,CAAC;AACrC,OAAO,6CAA6C,CAAC;AAGrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAOvC,qBACa,iBAAkB,SAAQ,UAAU;IAEtC,MAAM,EAAG,YAAY,CAAC;IAGtB,YAAY,EAAE,MAAM,CAAM;IAG1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAG5B,OAAO,CAAC,YAAY,CAAc;IAGlC,OAAO,CAAC,OAAO,CAAkB;IAEjC,UAAmB,YAAY,SAE9B;IAED,UAAmB,MAAM,yCAqBxB;IAED,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,aAAa;YAIP,KAAK;CA2BtB;AAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAC;KAC5C;CACJ"}
@@ -0,0 +1,112 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result) __defProp(target, key, result);
9
+ return result;
10
+ };
11
+ /**
12
+ * @license
13
+ * Copyright 2026 Open Home Foundation
14
+ * SPDX-License-Identifier: Apache-2.0
15
+ */
16
+ import "@material/web/button/text-button";
17
+ import "@material/web/dialog/dialog";
18
+ import "@material/web/textfield/outlined-text-field";
19
+ import { html, LitElement } from "lit";
20
+ import { customElement, property, state } from "lit/decorators.js";
21
+ import { preventDefault } from "../../../util/prevent_default.js";
22
+ import { showAlertDialog } from "../../dialog-box/show-dialog-box.js";
23
+ const MAX_FABRIC_LABEL_LENGTH = 32;
24
+ let FabricLabelDialog = class extends LitElement {
25
+ constructor() {
26
+ super(...arguments);
27
+ this.currentLabel = "";
28
+ this._fabricLabel = "";
29
+ this._saving = false;
30
+ }
31
+ firstUpdated() {
32
+ this._fabricLabel = this.currentLabel;
33
+ }
34
+ render() {
35
+ return html`
36
+ <md-dialog open @cancel=${preventDefault} @closed=${this._handleClosed}>
37
+ <div slot="headline">Edit Fabric Label</div>
38
+ <div slot="content">
39
+ <md-outlined-text-field
40
+ label="Fabric Label"
41
+ .value=${this._fabricLabel}
42
+ @input=${this._handleInput}
43
+ maxlength=${MAX_FABRIC_LABEL_LENGTH}
44
+ ?disabled=${this._saving}
45
+ supporting-text="Max ${MAX_FABRIC_LABEL_LENGTH} characters. Applies to the whole fabric."
46
+ style="width: 100%; margin-top: 8px;"
47
+ ></md-outlined-text-field>
48
+ </div>
49
+ <div slot="actions">
50
+ <md-text-button @click=${this._close} ?disabled=${this._saving}>Cancel</md-text-button>
51
+ <md-text-button @click=${this._save} ?disabled=${this._saving}>Save</md-text-button>
52
+ </div>
53
+ </md-dialog>
54
+ `;
55
+ }
56
+ _handleInput(e) {
57
+ this._fabricLabel = e.target.value;
58
+ }
59
+ _close() {
60
+ this.shadowRoot.querySelector("md-dialog").close();
61
+ }
62
+ _handleClosed() {
63
+ this.parentNode.removeChild(this);
64
+ }
65
+ async _save() {
66
+ this._saving = true;
67
+ try {
68
+ await this.client.setDefaultFabricLabel(this._fabricLabel);
69
+ const expected = (this._fabricLabel.trim() || "HomeAssistant").substring(0, MAX_FABRIC_LABEL_LENGTH);
70
+ const current = await this.client.getFabricLabel();
71
+ if (current !== expected) {
72
+ showAlertDialog({
73
+ title: "Failed to set fabric label",
74
+ text: "Could not set the fabric label \u2014 see the server log for details."
75
+ });
76
+ return;
77
+ }
78
+ this.onSaved?.();
79
+ this._close();
80
+ } catch (error) {
81
+ const errorMessage = error instanceof Error ? error.message : String(error);
82
+ showAlertDialog({
83
+ title: "Failed to set fabric label",
84
+ text: errorMessage
85
+ });
86
+ } finally {
87
+ this._saving = false;
88
+ }
89
+ }
90
+ };
91
+ __decorateClass([
92
+ property({ attribute: false })
93
+ ], FabricLabelDialog.prototype, "client", 2);
94
+ __decorateClass([
95
+ property({ attribute: false })
96
+ ], FabricLabelDialog.prototype, "currentLabel", 2);
97
+ __decorateClass([
98
+ property({ attribute: false })
99
+ ], FabricLabelDialog.prototype, "onSaved", 2);
100
+ __decorateClass([
101
+ state()
102
+ ], FabricLabelDialog.prototype, "_fabricLabel", 2);
103
+ __decorateClass([
104
+ state()
105
+ ], FabricLabelDialog.prototype, "_saving", 2);
106
+ FabricLabelDialog = __decorateClass([
107
+ customElement("fabric-label-dialog")
108
+ ], FabricLabelDialog);
109
+ export {
110
+ FabricLabelDialog
111
+ };
112
+ //# sourceMappingURL=fabric-label-dialog.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/dialogs/fabric-label-dialog/fabric-label-dialog.ts"],
4
+ "mappings": ";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO;AACP,OAAO;AACP,OAAO;AAIP,SAAS,MAAM,kBAAkB;AACjC,SAAS,eAAe,UAAU,aAAa;AAC/C,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAEhC,MAAM,0BAA0B;AAGzB,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAA3C;AAAA;AAKH,SAAO,eAAuB;AAM9B,SAAQ,eAAuB;AAG/B,SAAQ,UAAmB;AAAA;AAAA,EAER,eAAe;AAC9B,SAAK,eAAe,KAAK;AAAA,EAC7B;AAAA,EAEmB,SAAS;AACxB,WAAO;AAAA,sCACuB,cAAc,YAAY,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,iCAKjD,KAAK,YAAY;AAAA,iCACjB,KAAK,YAAY;AAAA,oCACd,uBAAuB;AAAA,oCACvB,KAAK,OAAO;AAAA,+CACD,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,6CAKzB,KAAK,MAAM,cAAc,KAAK,OAAO;AAAA,6CACrC,KAAK,KAAK,cAAc,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA,EAI7E;AAAA,EAEQ,aAAa,GAAU;AAC3B,SAAK,eAAgB,EAAE,OAA+B;AAAA,EAC1D;AAAA,EAEQ,SAAS;AACb,SAAK,WAAY,cAAwB,WAAW,EAAG,MAAM;AAAA,EACjE;AAAA,EAEQ,gBAAgB;AACpB,SAAK,WAAY,YAAY,IAAI;AAAA,EACrC;AAAA,EAEA,MAAc,QAAQ;AAClB,SAAK,UAAU;AACf,QAAI;AACA,YAAM,KAAK,OAAO,sBAAsB,KAAK,YAAY;AAGzD,YAAM,YAAY,KAAK,aAAa,KAAK,KAAK,iBAAiB,UAAU,GAAG,uBAAuB;AACnG,YAAM,UAAU,MAAM,KAAK,OAAO,eAAe;AACjD,UAAI,YAAY,UAAU;AACtB,wBAAgB;AAAA,UACZ,OAAO;AAAA,UACP,MAAM;AAAA,QACV,CAAC;AACD;AAAA,MACJ;AACA,WAAK,UAAU;AACf,WAAK,OAAO;AAAA,IAChB,SAAS,OAAO;AACZ,YAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC1E,sBAAgB;AAAA,QACZ,OAAO;AAAA,QACP,MAAM;AAAA,MACV,CAAC;AAAA,IACL,UAAE;AACE,WAAK,UAAU;AAAA,IACnB;AAAA,EACJ;AACJ;AAhFW;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GADrB,kBAEF;AAGA;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GAJrB,kBAKF;AAGA;AAAA,EADN,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GAPrB,kBAQF;AAGC;AAAA,EADP,MAAM;AAAA,GAVE,kBAWD;AAGA;AAAA,EADP,MAAM;AAAA,GAbE,kBAcD;AAdC,oBAAN;AAAA,EADN,cAAc,qBAAqB;AAAA,GACvB;",
5
+ "names": []
6
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MatterClient } from "@matter-server/ws-client";
7
+ export declare const showFabricLabelDialog: (client: MatterClient, currentLabel: string, onSaved?: () => void) => Promise<void>;
8
+ //# sourceMappingURL=show-fabric-label-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-fabric-label-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAO,MAAM,qBAAqB,WAAkB,YAAY,gBAAgB,MAAM,YAAY,MAAM,IAAI,kBAO3G,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ const showFabricLabelDialog = async (client, currentLabel, onSaved) => {
7
+ await import("./fabric-label-dialog.js");
8
+ const dialog = document.createElement("fabric-label-dialog");
9
+ dialog.client = client;
10
+ dialog.currentLabel = currentLabel;
11
+ dialog.onSaved = onSaved;
12
+ document.querySelector("matter-dashboard-app")?.renderRoot.appendChild(dialog);
13
+ };
14
+ export {
15
+ showFabricLabelDialog
16
+ };
17
+ //# sourceMappingURL=show-fabric-label-dialog.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/dialogs/fabric-label-dialog/show-fabric-label-dialog.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQO,MAAM,wBAAwB,OAAO,QAAsB,cAAsB,YAAyB;AAC7G,QAAM,OAAO,0BAA0B;AACvC,QAAM,SAAS,SAAS,cAAc,qBAAqB;AAC3D,SAAO,SAAS;AAChB,SAAO,eAAe;AACtB,SAAO,UAAU;AACjB,WAAS,cAAc,sBAAsB,GAAG,WAAW,YAAY,MAAM;AACjF;",
5
+ "names": []
6
+ }
@@ -23,23 +23,51 @@ export declare class SettingsDialog extends LitElement {
23
23
  private _expandedRow;
24
24
  private _credLoading;
25
25
  private _showPassword;
26
+ private _creds?;
27
+ private _wifiEditId;
28
+ private _wifiAdding;
29
+ private _threadEditId;
30
+ private _threadAdding;
31
+ private _credError;
26
32
  private _wifiSsidField;
27
33
  private _wifiPasswordField;
34
+ private _wifiIdField?;
28
35
  private _threadDatasetField;
36
+ private _threadIdField?;
37
+ private get _supportsCredentialLists();
29
38
  connectedCallback(): void;
30
39
  disconnectedCallback(): void;
31
40
  firstUpdated(): void;
41
+ private _loadCredentials;
32
42
  private _close;
33
43
  private _handleClosed;
34
44
  private _onDevToggle;
35
45
  private _copyDevLink;
36
46
  private _toggleExpand;
47
+ private _resetCredForms;
37
48
  private _cancelCred;
38
49
  private _togglePassword;
50
+ private _editWifi;
51
+ private _addWifi;
52
+ private _cancelWifiForm;
53
+ private _editThread;
54
+ private _addThread;
55
+ private _cancelThreadForm;
56
+ /** Mirror the server's id validation. Returns the trimmed id, or null after setting an inline error. */
57
+ private _validateNewCredId;
39
58
  private _saveWifi;
40
59
  private _removeWifi;
41
60
  private _saveThread;
42
61
  private _removeThread;
62
+ private _renderCredError;
63
+ private _renderWifiList;
64
+ private _renderWifiEntry;
65
+ private _renderWifiForm;
66
+ private _renderThreadList;
67
+ private _renderThreadEntry;
68
+ private _renderThreadForm;
69
+ private _renderLegacyWifi;
70
+ private _renderLegacyThread;
43
71
  protected render(): import("lit-html").TemplateResult<1>;
44
72
  static styles: import("lit").CSSResult;
45
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/settings/settings-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,oCAAoC,CAAC;AAC5C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,6BAA6B,CAAC;AAIrC,OAAO,6CAA6C,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAMrD,OAAO,oCAAoC,CAAC;AAE5C,OAAO,wBAAwB,CAAC;AAEhC,qBACa,cAAe,SAAQ,UAAU;IAEnC,MAAM,EAAG,YAAY,CAAC;IAG7B,SAAS,CAAC,KAAK,SAAK;IAEX,OAAO,CAAC,QAAQ,CAAyB;IAElD,OAAO,CAAC,eAAe,CAAC,CAAa;IAEE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEvD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAEb,OAAO,CAAC,cAAc,CAAuB;IACzC,OAAO,CAAC,kBAAkB,CAAuB;IAChD,OAAO,CAAC,mBAAmB,CAAuB;IAExE,iBAAiB,SAKzB;IAEQ,oBAAoB,SAG5B;IAEQ,YAAY,SAUpB;IAED,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;YAIT,SAAS;YAuBT,WAAW;YAaX,WAAW;YAwBX,aAAa;IAa3B,UAAmB,MAAM,yCA2IxB;IAED,OAAgB,MAAM,0BAkIpB;CACL;AAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,qBAAqB;QAC3B,iBAAiB,EAAE,cAAc,CAAC;KACrC;CACJ"}
1
+ {"version":3,"file":"settings-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/dialogs/settings/settings-dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,oCAAoC,CAAC;AAC5C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,6BAA6B,CAAC;AAIrC,OAAO,6CAA6C,CAAC;AAErD,OAAO,EAAyB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAMrD,OAAO,oCAAoC,CAAC;AAE5C,OAAO,wBAAwB,CAAC;AAEhC,qBACa,cAAe,SAAQ,UAAU;IAEnC,MAAM,EAAG,YAAY,CAAC;IAG7B,SAAS,CAAC,KAAK,SAAK;IAEX,OAAO,CAAC,QAAQ,CAAyB;IAElD,OAAO,CAAC,eAAe,CAAC,CAAa;IAEE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEvD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,MAAM,CAAC,CAAwB;IAEvC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAuB;IAExB,OAAO,CAAC,cAAc,CAAuB;IACzC,OAAO,CAAC,kBAAkB,CAAuB;IACvD,OAAO,CAAC,YAAY,CAAC,CAAsB;IACpC,OAAO,CAAC,mBAAmB,CAAuB;IACvD,OAAO,CAAC,cAAc,CAAC,CAAsB;IAEvE,OAAO,KAAK,wBAAwB,GAEnC;IAEQ,iBAAiB,SAKzB;IAEQ,oBAAoB,SAG5B;IAEQ,YAAY,SAWpB;YAEa,gBAAgB;IAa9B,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,iBAAiB;IAMzB,wGAAwG;IACxG,OAAO,CAAC,kBAAkB;YAkBZ,SAAS;YAiCT,WAAW;YAaX,WAAW;YA6BX,aAAa;IAa3B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,gBAAgB;IAsDxB,OAAO,CAAC,eAAe;IA2CvB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,kBAAkB;IAqD1B,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,iBAAiB;IAsDzB,OAAO,CAAC,mBAAmB;IA6C3B,UAAmB,MAAM,yCAiDxB;IAED,OAAgB,MAAM,0BAwLpB;CACL;AAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACZ,UAAU,qBAAqB;QAC3B,iBAAiB,EAAE,cAAc,CAAC;KACrC;CACJ"}