iobroker.webui 1.26.0 → 1.27.1

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 (28) hide show
  1. package/README.md +8 -0
  2. package/io-package.json +27 -27
  3. package/package.json +12 -12
  4. package/www/dist/frontend/common/Common.globals.d.ts +1 -0
  5. package/www/dist/frontend/config/IobrokerWebuiScreenEditor.js +30 -6
  6. package/www/dist/frontend/helper/XmlHelper.js +1 -1
  7. package/www/dist/frontend/runtime/ScreenViewer.js +7 -9
  8. package/www/index.html +1 -1
  9. package/www/node_modules/@iobroker/webcomponent-selectid-dialog/dist/iobrokerSelectId.es.js +19640 -18926
  10. package/www/node_modules/@iobroker/webcomponent-selectid-dialog/dist/selectIdHelper.js +3 -1
  11. package/www/node_modules/@iobroker/webcomponent-selectid-dialog/dist/socket.iob.js +1 -1
  12. package/www/node_modules/@node-projects/web-component-designer/dist/elements/item/DesignItem.js +8 -41
  13. package/www/node_modules/@node-projects/web-component-designer/dist/elements/services/DefaultServiceBootstrap.js +2 -0
  14. package/www/node_modules/@node-projects/web-component-designer/dist/elements/services/designItemService/BaseCustomWebcomponentDesignItemService.js +2 -1
  15. package/www/node_modules/@node-projects/web-component-designer/dist/elements/services/designItemService/DesignItemService.js +27 -1
  16. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/blockly/components/fields/FieldObjectId.js +6 -0
  17. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/components/BindingsEditor.js +1 -1
  18. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/components/SimpleScriptEditor.js +10 -0
  19. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/components/VisualizationPropertyGrid.js +6 -0
  20. package/www/node_modules/@node-projects/web-component-designer-visualization-addons/dist/helpers/BindingsHelper.js +53 -0
  21. package/www/node_modules/@node-projects/web-component-designer-widgets-wunderbaum/dist/widgets/WunderbaumOptions.js +2 -0
  22. package/www/node_modules/blockly/blockly_compressed.js +67 -67
  23. package/www/node_modules/blockly/blocks_compressed.js +1 -1
  24. package/www/node_modules/blockly/javascript_compressed.js +15 -15
  25. package/www/node_modules/dock-spawn-ts/lib/es5/dock-spawn-ts.js +1 -1
  26. package/www/node_modules/dock-spawn-ts/lib/js/DockManager.js +1 -1
  27. package/www/node_modules/wunderbaum/dist/wunderbaum.css +9 -0
  28. package/www/node_modules/wunderbaum/dist/wunderbaum.esm.min.js +26 -26
package/README.md CHANGED
@@ -133,6 +133,14 @@ runtime.html?screenName=screen2
133
133
  Placeholder for next versions:
134
134
  ### __WORK IN PROGRESS__
135
135
  -->
136
+ ### 1.27.1 (2025-03-30)
137
+ - fix xml import
138
+
139
+ ### 1.27.0 (2025-03-30)
140
+ - edit string in visu property grid
141
+ - bindings to properties did not work (in designer)
142
+ - html setting did not work sometimes
143
+
136
144
  ### 1.26.0 (2025-03-04)
137
145
  - fix error in screenviewer
138
146
  - update npms
package/io-package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "webui",
4
- "version": "1.26.0",
4
+ "version": "1.27.1",
5
5
  "titleLang": {
6
6
  "en": "webui",
7
7
  "de": "webui",
@@ -29,6 +29,32 @@
29
29
  "zh-cn": "使用万维网传送器的高锰用户接口"
30
30
  },
31
31
  "news": {
32
+ "1.27.1": {
33
+ "en": "fix xml import",
34
+ "de": "xml importieren",
35
+ "ru": "xml импортировать",
36
+ "pt": "corrigir a importação xml",
37
+ "nl": "xml-import herstellen",
38
+ "fr": "correction de l'importation de xml",
39
+ "it": "correzione xml importazione",
40
+ "es": "fijar importación xml",
41
+ "pl": "fix import xml",
42
+ "uk": "виправлено імпорт xml",
43
+ "zh-cn": "修正 xml 导入"
44
+ },
45
+ "1.27.0": {
46
+ "en": "edit string in visu property grid\nbindings to properties did not work (in designer)\nhtml setting did not work sometimes",
47
+ "de": "string in visu-eigenschaftsgitter bearbeiten\nbindungen an eigenschaften funktionierten nicht (im designer)\nhtml einstellung funktioniert nicht manchmal",
48
+ "ru": "редактировать строки в сетке свойств visu\nпривязка к свойствам не сработала (в конструкторе)\nhtml-настройка иногда не работает",
49
+ "pt": "edit string in visu property grid\nligações a propriedades não funcionou (em designer)\nconfiguração html não funcionou às vezes",
50
+ "nl": "tekenreeks bewerken in visu eigenschap raster\nbindingen aan eigenschappen werkten niet (in ontwerper)\nhtml-instelling werkte soms niet",
51
+ "fr": "modifier la chaîne dans la grille de propriétés visu\nles fixations aux propriétés ne fonctionnaient pas (en designer)\nle réglage html ne fonctionnait pas parfois",
52
+ "it": "modifica stringa nella griglia di proprietà visu\nleganti a proprietà non ha funzionato (in progettista)\nhtml impostazione non ha funzionato a volte",
53
+ "es": "cadena de edición en la red de propiedades visu\nvinculantes para propiedades no funcionaron (en diseñador)\nhtml setting did not work sometimes",
54
+ "pl": "edytuj ciąg w siatce właściwości visu\nwiązania do nieruchomości nie działa (w projektancie)\nustawienia html nie działały czasami",
55
+ "uk": "редагувати рядок в мережі visu\nобов’язки до властивостей не працювали (у дизайнеру)\nналаштування html не працює іноді",
56
+ "zh-cn": "在粘着属性网格中编辑字符串\n约束属性无效( 设计者)\nhtml 设置有时行不通"
57
+ },
32
58
  "1.26.0": {
33
59
  "en": "fix error in screenviewer\nupdate npms\nrename global styles\nallow styling of dialog",
34
60
  "de": "fehler in screenviewer beheben\naktualisierung von npms\numbenennen global styles\ndie gestaltung des dialogs ermöglichen",
@@ -93,32 +119,6 @@
93
119
  "pl": "przełącz ponownie na stary moduł shims (błąd w nowym)",
94
120
  "uk": "повторно переключіть до старих модулів (error in new)",
95
121
  "zh-cn": "再次切换到旧模块shims( 错误在新模块中)"
96
- },
97
- "1.24.3": {
98
- "en": "first load of css bindings\nfix get box quads with slots\nfix es module shims",
99
- "de": "erste belastung von css bindungen\nfix get box quads mit schlitzen\nfix es modul shims",
100
- "ru": "первая нагрузка css связывания\nисправление получить коробка квады с слотами\nфиксация эс модуль shims",
101
- "pt": "primeira carga de ligações css\ncorrigir get box quads com slots\ncorrigir es módulo shims",
102
- "nl": "eerste belasting van css bindingen\nfix box quads met slots\nfix es module shims",
103
- "fr": "première charge de fixations css\nfixer obtenir des quads de boîte avec des fentes\nfixer les shims du module es",
104
- "it": "primo carico di attacchi css\nfix ottenere scatola quads con slot\nfix es modulo shims",
105
- "es": "primera carga de fijación de css\nfijar conseguir cuádruples de caja con ranuras\nfijar es módulo shims",
106
- "pl": "pierwsze obciążenie wiązania css\nfix get box quads with slots\nfix es module shims",
107
- "uk": "перше навантаження css зв'язування\nзакріпити ящик квадроцикли з слотами\nзакріпити es модуль шім",
108
- "zh-cn": "首先装入 css 绑定\n固定带插槽的框形\n修补 e 模块 shims"
109
- },
110
- "1.24.2": {
111
- "en": "revert back es module shims, leads to errors",
112
- "de": "zurückkehren es modul shims, führt zu fehlern",
113
- "ru": "возвращать назад эс-модульные шимы, приводит к ошибкам",
114
- "pt": "reverter para trás es módulo shims, leva a erros",
115
- "nl": "terug te keren es module shims, leidt tot fouten",
116
- "fr": "retour du module es shims, conduit à des erreurs",
117
- "it": "revert back es modulo shims, conduce a errori",
118
- "es": "revert back es module shims, leads to errors",
119
- "pl": "revert es module shims, prowadzi do błędów",
120
- "uk": "перевернути назад es модуль шімів, призводить до помилок",
121
- "zh-cn": "返回 es 模块 shims, 导致错误"
122
122
  }
123
123
  },
124
124
  "icon": "logo.png",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.webui",
3
- "version": "1.26.0",
3
+ "version": "1.27.1",
4
4
  "description": "ioBroker webui",
5
5
  "type": "module",
6
6
  "main": "dist/backend/main.js",
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@iobroker/adapter-core": "^3.2.3",
47
- "@types/node": "^22.13.9"
47
+ "@types/node": "^22.13.14"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@adobe/css-tools": "4.4.2",
@@ -52,32 +52,32 @@
52
52
  "@alcalzone/release-script-plugin-iobroker": "^3.7.2",
53
53
  "@alcalzone/release-script-plugin-license": "^3.7.0",
54
54
  "@blockly/zoom-to-fit": "^6.0.12",
55
- "@iobroker/socket-client": "^4.0.21",
56
- "@iobroker/testing": "^5.0.3",
57
- "@iobroker/webcomponent-selectid-dialog": "^1.0.3",
55
+ "@iobroker/socket-client": "^4.1.0",
56
+ "@iobroker/testing": "^5.0.4",
57
+ "@iobroker/webcomponent-selectid-dialog": "^1.0.7",
58
58
  "@node-projects/base-custom-webcomponent": "0.29.0",
59
59
  "@node-projects/lean-he-esm": "^3.3.0",
60
60
  "@node-projects/node-html-parser-esm": "^6.2.0",
61
61
  "@node-projects/propertygrid.webcomponent": "^1.3.0",
62
62
  "@node-projects/splitview.webcomponent": "^1.0.1",
63
- "@node-projects/web-component-designer": "^0.1.245",
63
+ "@node-projects/web-component-designer": "^0.1.247",
64
64
  "@node-projects/web-component-designer-codeview-monaco": "^0.1.33",
65
65
  "@node-projects/web-component-designer-htmlparserservice-nodehtmlparser": "^0.1.11",
66
66
  "@node-projects/web-component-designer-stylesheetservice-css-tools": "^0.1.10",
67
- "@node-projects/web-component-designer-visualization-addons": "^0.1.113",
68
- "@node-projects/web-component-designer-widgets-wunderbaum": "^0.1.32",
67
+ "@node-projects/web-component-designer-visualization-addons": "^0.1.116",
68
+ "@node-projects/web-component-designer-widgets-wunderbaum": "^0.1.33",
69
69
  "@types/json-schema": "^7.0.15",
70
70
  "@web/dev-server": "^0.4.6",
71
- "blockly": "^11.2.1",
71
+ "blockly": "^11.2.2",
72
72
  "chai": "^5.2.0",
73
73
  "chai-as-promised": "^8.0.1",
74
74
  "construct-style-sheets-polyfill": "^3.1.0",
75
75
  "cross-env": "^7.0.3",
76
76
  "dayjs": "^1.11.13",
77
77
  "del": "^8.0.0",
78
- "dock-spawn-ts": "^3.2.1",
78
+ "dock-spawn-ts": "^3.3.0",
79
79
  "es-module-shims": "2.0.10",
80
- "eslint": "^9.21.0",
80
+ "eslint": "^9.23.0",
81
81
  "esprima-next": "^6.0.3",
82
82
  "glob-stream": "^8.0.2",
83
83
  "gulp": "^5.0.0",
@@ -94,6 +94,6 @@
94
94
  "tslib": "^2.8.1",
95
95
  "typescript": "^5.8.2",
96
96
  "typescript-json-schema": "^0.65.1",
97
- "wunderbaum": "0.12.1"
97
+ "wunderbaum": "0.13.0"
98
98
  }
99
99
  }
@@ -51,6 +51,7 @@ declare var RUNTIME: {
51
51
  height?: string;
52
52
  left?: string;
53
53
  top?: string;
54
+ cssClass?: string;
54
55
  }): Promise<void>;
55
56
  runSimpleScriptCommand<T extends import('../scripting/IobrokerWebuiScriptCommands.js').WebuiScriptCommands>(scriptCommand: T): Promise<void>;
56
57
  getParentScreen(screen: BaseScreenViewerAndControl, parentlevel?: number): BaseScreenViewerAndControl;
@@ -1,5 +1,5 @@
1
1
  import { BaseCustomWebComponentConstructorAppend, css, html } from "@node-projects/base-custom-webcomponent";
2
- import { DocumentContainer, } from "@node-projects/web-component-designer";
2
+ import { DocumentContainer, PropertiesHelper, } from "@node-projects/web-component-designer";
3
3
  import { iobrokerHandler } from "../common/IobrokerHandler.js";
4
4
  export const defaultNewStyle = `:host {
5
5
  }
@@ -117,19 +117,43 @@ export class IobrokerWebuiScreenEditor extends BaseCustomWebComponentConstructor
117
117
  if (this.#bindingsEnabled != value) {
118
118
  this.#bindingsEnabled == value;
119
119
  if (value) {
120
- this._webuiBindings = window.appShell.bindingsHelper.applyAllBindings(this.documentContainer.designerView.designerCanvas.rootDesignItem.element.shadowRoot, this.relativeBindingsPrefix, null);
120
+ this.applyBindings();
121
121
  }
122
122
  else {
123
- this._webuiBindings?.forEach(x => x());
124
- this._styleBindings?.forEach(x => x());
123
+ this.removeBindings();
125
124
  }
126
125
  }
127
126
  }
128
127
  relativeBindingsPrefix = '';
129
128
  applyBindings() {
130
129
  this.removeBindings();
131
- if (this.bindingsEnabled)
132
- this._webuiBindings = window.appShell.bindingsHelper.applyAllBindings(this.documentContainer.designerView.designerCanvas.rootDesignItem.element.shadowRoot, this.relativeBindingsPrefix, null);
130
+ if (this.bindingsEnabled) {
131
+ try {
132
+ for (let p in this.properties) {
133
+ Object.defineProperty(this.documentContainer.designerView.designerCanvas.rootDesignItem.element, p, {
134
+ get() {
135
+ return this['_' + p];
136
+ },
137
+ set(newValue) {
138
+ if (this['_' + p] !== newValue) {
139
+ this['_' + p] = newValue;
140
+ this._bindingsRefresh(p);
141
+ this.documentContainer.designerView.designerCanvas.rootDesignItem.element.dispatchEvent(new CustomEvent(PropertiesHelper.camelToDashCase(p) + '-changed', { detail: { newValue } }));
142
+ }
143
+ },
144
+ enumerable: true,
145
+ configurable: true,
146
+ });
147
+ if (this.properties[p].default) {
148
+ this.documentContainer.designerView.designerCanvas.rootDesignItem.element['_' + p] = this.properties[p].default;
149
+ }
150
+ }
151
+ }
152
+ catch (err) {
153
+ console.warn("applyBindings()", err);
154
+ }
155
+ this._webuiBindings = window.appShell.bindingsHelper.applyAllBindings(this.documentContainer.designerView.designerCanvas.rootDesignItem.element.shadowRoot, this.relativeBindingsPrefix, this.documentContainer.designerView.designerCanvas.rootDesignItem.element);
156
+ }
133
157
  }
134
158
  removeBindings() {
135
159
  this._webuiBindings?.forEach(x => x());
@@ -44,7 +44,7 @@ export function parseXml(xml) {
44
44
  else {
45
45
  let tx = childNode.textContent;
46
46
  if (tx[0] === '\n' && tx.endsWith('\n'))
47
- tx = tx.substring(1, tx.length - 2);
47
+ tx = tx.substring(1, tx.length - 1);
48
48
  else if (tx[0] === '\n')
49
49
  tx = tx.substring(1);
50
50
  else if (tx.endsWith('\n'))
@@ -194,21 +194,19 @@ let ScreenViewer = class ScreenViewer extends BaseCustomWebComponentConstructorA
194
194
  this.shadowRoot.adoptedStyleSheets = [ScreenViewer_1.styleIfFromScreen, ...this._rootShadow.adoptedStyleSheets];
195
195
  }
196
196
  let myDocument;
197
- //@ts-ignore
198
197
  if (Document.parseHTMLUnsafe && !isFirefox) {
199
- //@ts-ignore
200
- myDocument = Document.parseHTMLUnsafe(html);
198
+ this._rootShadow.setHTMLUnsafe(html);
201
199
  }
202
200
  else {
203
201
  //@ts-ignore
204
202
  myDocument = new DOMParser().parseFromString(html, 'text/html', { includeShadowRoots: true });
203
+ const fragment = document.createDocumentFragment();
204
+ for (const n of myDocument.head.childNodes)
205
+ fragment.appendChild(n);
206
+ for (const n of myDocument.body.childNodes)
207
+ fragment.appendChild(n);
208
+ this._rootShadow.appendChild(fragment);
205
209
  }
206
- const fragment = document.createDocumentFragment();
207
- for (const n of myDocument.head.childNodes)
208
- fragment.appendChild(n);
209
- for (const n of myDocument.body.childNodes)
210
- fragment.appendChild(n);
211
- this._rootShadow.appendChild(fragment);
212
210
  const res = window.appShell.bindingsHelper.applyAllBindings(this._rootShadow, this.relativeSignalsPath, this);
213
211
  if (this._iobBindings)
214
212
  this._iobBindings.push(...res);
package/www/index.html CHANGED
@@ -218,7 +218,7 @@
218
218
  </button>
219
219
  <button data-command="save" title="save" disabled><img src="./node_modules/@node-projects/web-component-designer/assets/icons/save.svg"></button>
220
220
  <div style="margin-left: 30px;">
221
- webui - 1.26.0 - 9c446b2
221
+ webui - 1.27.1 - 88f34da
222
222
  </div>
223
223
  <button style="margin-left: 30px;" data-command="paste" title="paste" disabled><img
224
224
  src="./node_modules/@node-projects/web-component-designer/assets/icons/paste.svg"></button>