iobroker.webui 1.19.2 → 1.19.4

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.
package/README.md CHANGED
@@ -129,6 +129,12 @@ runtime.html?screenName=screen2
129
129
  Placeholder for next versions:
130
130
  ### __WORK IN PROGRESS__
131
131
  -->
132
+ ### 1.19.4 (2024-11-03)
133
+ - copy & paste events
134
+
135
+ ### 1.19.3 (2024-11-03)
136
+ - support null value
137
+
132
138
  ### 1.19.2 (2024-11-03)
133
139
  - use name in classlist
134
140
 
package/io-package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "webui",
4
- "version": "1.19.2",
4
+ "version": "1.19.4",
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.19.4": {
33
+ "en": "copy & paste events",
34
+ "de": "kopieren und einfügen von ereignissen",
35
+ "ru": "копировать события",
36
+ "pt": "copiar e colar eventos",
37
+ "nl": "gebeurtenissen kopiëren & plakken",
38
+ "fr": "copier & coller les événements",
39
+ "it": "copia & incolla eventi",
40
+ "es": "copy \" paste events",
41
+ "pl": "kopiowanie i wklejanie zdarzeń",
42
+ "uk": "скопіювати та вставляти події",
43
+ "zh-cn": "复制粘贴事件( p)"
44
+ },
45
+ "1.19.3": {
46
+ "en": "support null value",
47
+ "de": "unterstützungswert",
48
+ "ru": "нулевое значение",
49
+ "pt": "suporte valor nulo",
50
+ "nl": "steun nulwaarde",
51
+ "fr": "support valeur null",
52
+ "it": "supporto valore null",
53
+ "es": "valor nulo",
54
+ "pl": "wartość null wsparcia",
55
+ "uk": "підтримка значення null",
56
+ "zh-cn": "支持无效值"
57
+ },
32
58
  "1.19.2": {
33
59
  "en": "use name in classlist",
34
60
  "de": "name in der klassenliste verwenden",
@@ -93,32 +119,6 @@
93
119
  "pl": "naprawić nieprawidłowy korzeń cieni używany",
94
120
  "uk": "виправити неправильний корінь тіні",
95
121
  "zh-cn": "修正所使用的阴影根"
96
- },
97
- "1.18.3": {
98
- "en": "small typo fix",
99
- "de": "kleine typo fix",
100
- "ru": "маленький тайфун",
101
- "pt": "pequena correção de tipo",
102
- "nl": "kleine typfout",
103
- "fr": "petite correction typographique",
104
- "it": "piccolo typo fix",
105
- "es": "pequeño neumático",
106
- "pl": "mała literówka fix",
107
- "uk": "маленький типофікс",
108
- "zh-cn": "小类型修复"
109
- },
110
- "1.18.2": {
111
- "en": "better refcatoring",
112
- "de": "besser refcatoring",
113
- "ru": "лучший хладагент",
114
- "pt": "melhor refcatoring",
115
- "nl": "betere refcatoring",
116
- "fr": "mieux réfcatorer",
117
- "it": "migliore refcatoring",
118
- "es": "mejor refcatoring",
119
- "pl": "lepsza rekatalizacja",
120
- "uk": "кращий рефторинг",
121
- "zh-cn": "更好的还原"
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.19.2",
3
+ "version": "1.19.4",
4
4
  "description": "ioBroker webui",
5
5
  "type": "module",
6
6
  "main": "dist/backend/main.js",
@@ -58,7 +58,7 @@
58
58
  "@node-projects/web-component-designer-codeview-monaco": "^0.1.32",
59
59
  "@node-projects/web-component-designer-htmlparserservice-nodehtmlparser": "^0.1.11",
60
60
  "@node-projects/web-component-designer-stylesheetservice-css-tools": "^0.1.10",
61
- "@node-projects/web-component-designer-visualization-addons": "^0.1.92",
61
+ "@node-projects/web-component-designer-visualization-addons": "^0.1.95",
62
62
  "@node-projects/web-component-designer-widgets-wunderbaum": "^0.1.29",
63
63
  "@types/json-schema": "^7.0.15",
64
64
  "@web/dev-server": "^0.4.6",
package/www/index.html CHANGED
@@ -213,7 +213,7 @@
213
213
  </button>
214
214
  <button data-command="save" title="save" disabled><img src="./node_modules/@node-projects/web-component-designer/assets/icons/save.svg"></button>
215
215
  <div style="margin-left: 30px;">
216
- webui - 1.19.2 - 2624c53
216
+ webui - 1.19.4 - 6c32167
217
217
  </div>
218
218
  <button style="margin-left: 30px;" data-command="paste" title="paste" disabled><img
219
219
  src="./node_modules/@node-projects/web-component-designer/assets/icons/paste.svg"></button>
@@ -1,5 +1,5 @@
1
1
  import { BaseCustomWebComponentConstructorAppend, css, html } from "@node-projects/base-custom-webcomponent";
2
- import { ContextMenu, PropertiesHelper } from "@node-projects/web-component-designer";
2
+ import { ContextMenu, copyTextToClipboard, getTextFromClipboard, PropertiesHelper } from "@node-projects/web-component-designer";
3
3
  import { ParameterEditor } from "./ParameterEditor.js";
4
4
  import { BlocklyScriptEditor } from "../blockly/BlocklyScriptEditor.js";
5
5
  import { SimpleScriptEditor } from "./SimpleScriptEditor.js";
@@ -41,7 +41,7 @@ export class EventAssignment extends BaseCustomWebComponentConstructorAppend {
41
41
  }`;
42
42
  static template = html `
43
43
  <template repeat:item="[[this.events]]">
44
- <div @click="[[this._ctxMenu(event, item)]]" @contextmenu="[[this._ctxMenu(event, item)]]" class="rect" css:background-color="[[this._getScriptTypeColor(item)]]"></div>
44
+ <div @click="[[this._ctxMenu(event, item)]]" @contextmenu="[[this._ctxMenu(event, item)]]" class="rect" title="[[this._getScriptType(item)]]" css:background-color="[[this._getScriptTypeColor(item)]]"></div>
45
45
  <a @click="[[this._showContextMenuAssignScript(event, item, false)]]" @contextmenu="[[this._ctxMenu(event, item)]]" title="[[item.name]]">[[item.name]]</a>
46
46
  <div>[[this._createControlsForScript(item)]]</div>
47
47
  </template>
@@ -209,8 +209,23 @@ export class EventAssignment extends BaseCustomWebComponentConstructorAppend {
209
209
  const evtType = this._getScriptType(eventItem);
210
210
  if (evtType == 'empty')
211
211
  this._showContextMenuAssignScript(e, eventItem, true);
212
- else if (evtType != 'none')
213
- ContextMenu.show([{ title: 'remove', action: () => { this.selectedItems[0].removeAttribute('@' + eventItem.name); this._bindingsRefresh(); } }], e);
212
+ else if (evtType != 'none') {
213
+ let ctxMenu = [
214
+ {
215
+ title: 'remove',
216
+ action: () => { this.selectedItems[0].removeAttribute('@' + eventItem.name); this._bindingsRefresh(); }
217
+ }, {
218
+ title: '-'
219
+ }, {
220
+ title: 'copy',
221
+ action: () => { copyTextToClipboard(this.selectedItems[0].getAttribute('@' + eventItem.name)); }
222
+ }, {
223
+ title: 'paste',
224
+ action: async () => { this.selectedItems[0].setAttribute('@' + eventItem.name, await getTextFromClipboard()); }
225
+ }
226
+ ];
227
+ ContextMenu.show(ctxMenu, e);
228
+ }
214
229
  else
215
230
  this._showContextMenuAssignScript(e, eventItem, true);
216
231
  }
@@ -259,6 +274,17 @@ export class EventAssignment extends BaseCustomWebComponentConstructorAppend {
259
274
  action: () => { this.selectedItems[0].removeAttribute('@' + eventItem.name); this._bindingsRefresh(); }
260
275
  });
261
276
  }
277
+ if (evtType != 'empty') {
278
+ ctxMenu.push({
279
+ title: '-'
280
+ }, {
281
+ title: 'copy',
282
+ action: () => { copyTextToClipboard(this.selectedItems[0].getAttribute('@' + eventItem.name)); }
283
+ }, {
284
+ title: 'paste',
285
+ action: async () => { this.selectedItems[0].setAttribute('@' + eventItem.name, await getTextFromClipboard()); }
286
+ });
287
+ }
262
288
  return ctxMenu;
263
289
  }
264
290
  async _showContextMenuAssignScript(event, eventItem, isCtxMenu) {
@@ -310,6 +310,8 @@ export class ScriptSystem {
310
310
  return elements;
311
311
  }
312
312
  async getValue(value, outerContext) {
313
+ if (value == null)
314
+ return null;
313
315
  if (typeof value === 'object') {
314
316
  switch (value.source) {
315
317
  case 'property': {