iobroker.mywebui 1.56.1 → 1.58.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 (222) hide show
  1. package/default-controls/controls/navigation/app-bar.control +1 -1
  2. package/default-controls/controls/navigation/menu-item.control +1 -1
  3. package/default-controls/controls/navigation/sidebar.control +1 -1
  4. package/dist/backend/3d-editor-integration.js +1 -1
  5. package/dist/backend/ImportmapCreator.js +1 -1
  6. package/dist/backend/UploadHelper.js +1 -1
  7. package/dist/backend/main.js +1 -1
  8. package/io-package.json +1 -1
  9. package/package.json +1 -1
  10. package/www/3d-editor/js/Animation.js +1 -1
  11. package/www/3d-editor/js/AnimationResizer.js +1 -1
  12. package/www/3d-editor/js/Command.js +1 -1
  13. package/www/3d-editor/js/Config.js +1 -1
  14. package/www/3d-editor/js/Editor.js +1 -1
  15. package/www/3d-editor/js/EditorControls.js +1 -1
  16. package/www/3d-editor/js/GLTFImportDialog.js +1 -1
  17. package/www/3d-editor/js/History.js +1 -1
  18. package/www/3d-editor/js/Loader.js +1 -1
  19. package/www/3d-editor/js/LoaderUtils.js +1 -1
  20. package/www/3d-editor/js/Menubar.Add.js +1 -1
  21. package/www/3d-editor/js/Menubar.Edit.js +1 -1
  22. package/www/3d-editor/js/Menubar.File.js +1 -1
  23. package/www/3d-editor/js/Menubar.Help.js +1 -1
  24. package/www/3d-editor/js/Menubar.Render.js +1 -1
  25. package/www/3d-editor/js/Menubar.Status.js +1 -1
  26. package/www/3d-editor/js/Menubar.View.js +1 -1
  27. package/www/3d-editor/js/Menubar.js +1 -1
  28. package/www/3d-editor/js/Player.js +1 -1
  29. package/www/3d-editor/js/Resizer.js +1 -1
  30. package/www/3d-editor/js/Script.js +1 -1
  31. package/www/3d-editor/js/Selector.js +1 -1
  32. package/www/3d-editor/js/Sidebar.Geometry.BoxGeometry.js +1 -1
  33. package/www/3d-editor/js/Sidebar.Geometry.BufferGeometry.js +1 -1
  34. package/www/3d-editor/js/Sidebar.Geometry.CapsuleGeometry.js +1 -1
  35. package/www/3d-editor/js/Sidebar.Geometry.CircleGeometry.js +1 -1
  36. package/www/3d-editor/js/Sidebar.Geometry.CylinderGeometry.js +1 -1
  37. package/www/3d-editor/js/Sidebar.Geometry.DodecahedronGeometry.js +1 -1
  38. package/www/3d-editor/js/Sidebar.Geometry.ExtrudeGeometry.js +1 -1
  39. package/www/3d-editor/js/Sidebar.Geometry.IcosahedronGeometry.js +1 -1
  40. package/www/3d-editor/js/Sidebar.Geometry.LatheGeometry.js +1 -1
  41. package/www/3d-editor/js/Sidebar.Geometry.Modifiers.js +1 -1
  42. package/www/3d-editor/js/Sidebar.Geometry.OctahedronGeometry.js +1 -1
  43. package/www/3d-editor/js/Sidebar.Geometry.PlaneGeometry.js +1 -1
  44. package/www/3d-editor/js/Sidebar.Geometry.RingGeometry.js +1 -1
  45. package/www/3d-editor/js/Sidebar.Geometry.ShapeGeometry.js +1 -1
  46. package/www/3d-editor/js/Sidebar.Geometry.SphereGeometry.js +1 -1
  47. package/www/3d-editor/js/Sidebar.Geometry.TetrahedronGeometry.js +1 -1
  48. package/www/3d-editor/js/Sidebar.Geometry.TextGeometry.js +1 -1
  49. package/www/3d-editor/js/Sidebar.Geometry.TorusGeometry.js +1 -1
  50. package/www/3d-editor/js/Sidebar.Geometry.TorusKnotGeometry.js +1 -1
  51. package/www/3d-editor/js/Sidebar.Geometry.TubeGeometry.js +1 -1
  52. package/www/3d-editor/js/Sidebar.Geometry.js +1 -1
  53. package/www/3d-editor/js/Sidebar.Material.BooleanProperty.js +1 -1
  54. package/www/3d-editor/js/Sidebar.Material.ColorProperty.js +1 -1
  55. package/www/3d-editor/js/Sidebar.Material.ConstantProperty.js +1 -1
  56. package/www/3d-editor/js/Sidebar.Material.MapProperty.js +1 -1
  57. package/www/3d-editor/js/Sidebar.Material.NumberProperty.js +1 -1
  58. package/www/3d-editor/js/Sidebar.Material.Program.js +1 -1
  59. package/www/3d-editor/js/Sidebar.Material.RangeValueProperty.js +1 -1
  60. package/www/3d-editor/js/Sidebar.Material.js +1 -1
  61. package/www/3d-editor/js/Sidebar.Object.js +1 -1
  62. package/www/3d-editor/js/Sidebar.Project.App.js +1 -1
  63. package/www/3d-editor/js/Sidebar.Project.Materials.js +1 -1
  64. package/www/3d-editor/js/Sidebar.Project.Renderer.js +1 -1
  65. package/www/3d-editor/js/Sidebar.Project.Resources.js +1 -1
  66. package/www/3d-editor/js/Sidebar.Project.js +1 -1
  67. package/www/3d-editor/js/Sidebar.Properties.js +1 -1
  68. package/www/3d-editor/js/Sidebar.Scene.js +1 -1
  69. package/www/3d-editor/js/Sidebar.Script.js +1 -1
  70. package/www/3d-editor/js/Sidebar.Settings.History.js +1 -1
  71. package/www/3d-editor/js/Sidebar.Settings.Shortcuts.js +1 -1
  72. package/www/3d-editor/js/Sidebar.Settings.js +1 -1
  73. package/www/3d-editor/js/Sidebar.js +1 -1
  74. package/www/3d-editor/js/Storage.js +1 -1
  75. package/www/3d-editor/js/Strings.js +1 -1
  76. package/www/3d-editor/js/TextureParametersDialog.js +1 -1
  77. package/www/3d-editor/js/Toolbar.js +1 -1
  78. package/www/3d-editor/js/Viewport.Controls.js +1 -1
  79. package/www/3d-editor/js/Viewport.Info.js +1 -1
  80. package/www/3d-editor/js/Viewport.Pathtracer.js +1 -1
  81. package/www/3d-editor/js/Viewport.ViewHelper.js +1 -1
  82. package/www/3d-editor/js/Viewport.XR.js +1 -1
  83. package/www/3d-editor/js/Viewport.js +1 -1
  84. package/www/3d-editor/js/commands/AddObjectCommand.js +1 -1
  85. package/www/3d-editor/js/commands/AddScriptCommand.js +1 -1
  86. package/www/3d-editor/js/commands/Commands.js +1 -1
  87. package/www/3d-editor/js/commands/MoveObjectCommand.js +1 -1
  88. package/www/3d-editor/js/commands/MultiCmdsCommand.js +1 -1
  89. package/www/3d-editor/js/commands/RemoveObjectCommand.js +1 -1
  90. package/www/3d-editor/js/commands/RemoveScriptCommand.js +1 -1
  91. package/www/3d-editor/js/commands/SetColorCommand.js +1 -1
  92. package/www/3d-editor/js/commands/SetGeometryCommand.js +1 -1
  93. package/www/3d-editor/js/commands/SetGeometryValueCommand.js +1 -1
  94. package/www/3d-editor/js/commands/SetMaterialColorCommand.js +1 -1
  95. package/www/3d-editor/js/commands/SetMaterialCommand.js +1 -1
  96. package/www/3d-editor/js/commands/SetMaterialMapCommand.js +1 -1
  97. package/www/3d-editor/js/commands/SetMaterialRangeCommand.js +1 -1
  98. package/www/3d-editor/js/commands/SetMaterialValueCommand.js +1 -1
  99. package/www/3d-editor/js/commands/SetMaterialVectorCommand.js +1 -1
  100. package/www/3d-editor/js/commands/SetPositionCommand.js +1 -1
  101. package/www/3d-editor/js/commands/SetRotationCommand.js +1 -1
  102. package/www/3d-editor/js/commands/SetScaleCommand.js +1 -1
  103. package/www/3d-editor/js/commands/SetSceneCommand.js +1 -1
  104. package/www/3d-editor/js/commands/SetScriptValueCommand.js +1 -1
  105. package/www/3d-editor/js/commands/SetShadowValueCommand.js +1 -1
  106. package/www/3d-editor/js/commands/SetTextureParametersCommand.js +1 -1
  107. package/www/3d-editor/js/commands/SetUuidCommand.js +1 -1
  108. package/www/3d-editor/js/commands/SetValueCommand.js +1 -1
  109. package/www/dist/frontend/bundle/chunk-3C6XC7RW.js +1 -1
  110. package/www/dist/frontend/bundle/chunk-43HEBO5G.js +3 -3
  111. package/www/dist/frontend/bundle/chunk-5MUGMRXU.js +1 -1
  112. package/www/dist/frontend/bundle/chunk-5UBRCTRX.js +3 -3
  113. package/www/dist/frontend/bundle/chunk-65A3PNMG.js +1 -1
  114. package/www/dist/frontend/bundle/chunk-7CWDQGAG.js +3 -3
  115. package/www/dist/frontend/bundle/chunk-7PT7IGUJ.js +3 -3
  116. package/www/dist/frontend/bundle/chunk-AI5PDLDE.js +2 -2
  117. package/www/dist/frontend/bundle/chunk-AWKVUUKN.js +2 -2
  118. package/www/dist/frontend/bundle/chunk-B6NXWGSB.js +1 -1
  119. package/www/dist/frontend/bundle/chunk-BHSHNRXW.js +1 -1
  120. package/www/dist/frontend/bundle/chunk-BVONDEOL.js +3 -3
  121. package/www/dist/frontend/bundle/chunk-DNCD2F6X.js +2 -2
  122. package/www/dist/frontend/bundle/chunk-FHF6DL5U.js +1 -1
  123. package/www/dist/frontend/bundle/chunk-FO56TEZH.js +3 -3
  124. package/www/dist/frontend/bundle/chunk-GLQNGCFL.js +1 -1
  125. package/www/dist/frontend/bundle/chunk-JBDSDK2C.js +3 -3
  126. package/www/dist/frontend/bundle/chunk-K6IV7LKW.js +1 -1
  127. package/www/dist/frontend/bundle/chunk-KY73TL6O.js +3 -3
  128. package/www/dist/frontend/bundle/chunk-MECWXZRN.js +1 -1
  129. package/www/dist/frontend/bundle/chunk-NQ7L7KNT.js +3 -3
  130. package/www/dist/frontend/bundle/chunk-P7EOR36H.js +1 -1
  131. package/www/dist/frontend/bundle/chunk-PJYK24KZ.js +1 -1
  132. package/www/dist/frontend/bundle/chunk-QJJGP23I.js +1 -1
  133. package/www/dist/frontend/bundle/chunk-QV4IBWXA.js +1 -1
  134. package/www/dist/frontend/bundle/chunk-R6IQDPAP.js +3 -3
  135. package/www/dist/frontend/bundle/chunk-SE6N4ZEN.js +1 -1
  136. package/www/dist/frontend/bundle/chunk-SQHXO2IT.js +3 -3
  137. package/www/dist/frontend/bundle/chunk-UIP324PP.js +1 -1
  138. package/www/dist/frontend/bundle/chunk-V4C5FGJL.js +3 -3
  139. package/www/dist/frontend/bundle/chunk-WED7CGWA.js +2 -2
  140. package/www/dist/frontend/bundle/chunk-WQ5H5LTG.js +3 -3
  141. package/www/dist/frontend/bundle/chunk-WU54NCEU.js +1 -1
  142. package/www/dist/frontend/bundle/chunk-XFO5FUCN.js +1 -1
  143. package/www/dist/frontend/bundle/chunk-YUSK4FN3.js +2 -2
  144. package/www/dist/frontend/bundle/chunk-Z34BSG5O.js +3 -3
  145. package/www/dist/frontend/bundle/common/IobrokerHandler.js +1 -1
  146. package/www/dist/frontend/bundle/runtime/CustomControls.js +1 -1
  147. package/www/dist/frontend/bundle/runtime/ScreenViewer.js +1 -1
  148. package/www/dist/frontend/bundle/runtime/controls.js +4 -4
  149. package/www/dist/frontend/bundle/runtime/init.js +3 -3
  150. package/www/dist/frontend/common/Common.globals.js +1 -1
  151. package/www/dist/frontend/common/IobrokerHandler.js +1 -1
  152. package/www/dist/frontend/common/Runtime.js +1 -1
  153. package/www/dist/frontend/config/CommandHandling.js +1 -1
  154. package/www/dist/frontend/config/ConfigureWebcomponentDesigner.js +1 -1
  155. package/www/dist/frontend/config/DockHelper.js +1 -1
  156. package/www/dist/frontend/config/IobrokerWebui3DDriveEngine.js +1 -1
  157. package/www/dist/frontend/config/IobrokerWebui3DScreenEditor.js +3 -3
  158. package/www/dist/frontend/config/IobrokerWebui3DScreenPropertiesPanel.js +3 -3
  159. package/www/dist/frontend/config/IobrokerWebui3DScreenViewer.js +3 -3
  160. package/www/dist/frontend/config/IobrokerWebuiAppShell.js +3 -3
  161. package/www/dist/frontend/config/IobrokerWebuiBindingsEditor.js +1 -1
  162. package/www/dist/frontend/config/IobrokerWebuiConfirmationWrapper.js +3 -3
  163. package/www/dist/frontend/config/IobrokerWebuiControlPropertiesEditor.js +3 -3
  164. package/www/dist/frontend/config/IobrokerWebuiDynamicPropsEditor.js +1 -1
  165. package/www/dist/frontend/config/IobrokerWebuiEventAssignment.js +1 -1
  166. package/www/dist/frontend/config/IobrokerWebuiIconsView.js +3 -3
  167. package/www/dist/frontend/config/IobrokerWebuiMonacoEditor.js +3 -3
  168. package/www/dist/frontend/config/IobrokerWebuiPropertyGrid.js +1 -1
  169. package/www/dist/frontend/config/IobrokerWebuiScreenEditor.js +1 -1
  170. package/www/dist/frontend/config/IobrokerWebuiScreensView.js +2 -2
  171. package/www/dist/frontend/config/IobrokerWebuiSignalPropertyEditor.js +1 -1
  172. package/www/dist/frontend/config/IobrokerWebuiSolutionExplorer.js +3 -3
  173. package/www/dist/frontend/config/IobrokerWebuiTranslationEditor.js +1 -1
  174. package/www/dist/frontend/config/IobrokerWebuiWidgetGallery.js +3 -3
  175. package/www/dist/frontend/helper/DialogHelper.js +3 -3
  176. package/www/dist/frontend/helper/EsprimaHelper.js +1 -1
  177. package/www/dist/frontend/helper/Helper.js +1 -1
  178. package/www/dist/frontend/helper/LayoutHelper.js +1 -1
  179. package/www/dist/frontend/helper/XmlHelper.js +1 -1
  180. package/www/dist/frontend/helper/ZipHelper.js +1 -1
  181. package/www/dist/frontend/runtime/AnimationService.js +1 -1
  182. package/www/dist/frontend/runtime/CustomControls.js +1 -1
  183. package/www/dist/frontend/runtime/DynamicElementProperties.js +1 -1
  184. package/www/dist/frontend/runtime/HabPanelLikeMenu.js +3 -3
  185. package/www/dist/frontend/runtime/NavigationShell.js +1 -1
  186. package/www/dist/frontend/runtime/ScreenViewer.js +2 -2
  187. package/www/dist/frontend/runtime/TranslateableText.js +2 -2
  188. package/www/dist/frontend/runtime/VisibilityService.js +1 -1
  189. package/www/dist/frontend/runtime/controls.js +1 -1
  190. package/www/dist/frontend/runtime/init.js +1 -1
  191. package/www/dist/frontend/scripting/IobrokerWebuiScriptSystem.js +1 -1
  192. package/www/dist/frontend/scripting/blockly/OpenScreen.js +1 -1
  193. package/www/dist/frontend/scripting/blockly/webuiBlocklyToolbox.js +1 -1
  194. package/www/dist/frontend/services/DynamicPropertiesHelper.js +1 -1
  195. package/www/dist/frontend/services/IobrokerWebuiBindableLocalObjectsService.js +1 -1
  196. package/www/dist/frontend/services/IobrokerWebuiBindableObjectDragDropService.js +1 -1
  197. package/www/dist/frontend/services/IobrokerWebuiBindableObjectsForPropertiesService.js +1 -1
  198. package/www/dist/frontend/services/IobrokerWebuiBindableObjectsService.js +1 -1
  199. package/www/dist/frontend/services/IobrokerWebuiConfigButtonProvider.js +1 -1
  200. package/www/dist/frontend/services/IobrokerWebuiCopyPasteService.js +1 -1
  201. package/www/dist/frontend/services/IobrokerWebuiCustomControlEventsService.js +1 -1
  202. package/www/dist/frontend/services/IobrokerWebuiCustomElementContextMenu.js +1 -1
  203. package/www/dist/frontend/services/IobrokerWebuiDemoProviderService.js +1 -1
  204. package/www/dist/frontend/services/IobrokerWebuiDynamicPropertiesService.js +1 -1
  205. package/www/dist/frontend/services/IobrokerWebuiEventsService.js +1 -1
  206. package/www/dist/frontend/services/IobrokerWebuiExternalDragDropService.js +1 -1
  207. package/www/dist/frontend/services/IobrokerWebuiLitPropertiesService.js +1 -1
  208. package/www/dist/frontend/services/IobrokerWebuiPropertiesService.js +1 -1
  209. package/www/dist/frontend/services/IobrokerWebuiPropertyGroupsService.js +1 -1
  210. package/www/dist/frontend/services/IobrokerWebuiRefactorService.js +1 -1
  211. package/www/dist/frontend/services/IobrokerWebuiScreenContextMenu.js +1 -1
  212. package/www/dist/frontend/services/IobrokerWebuiSpecialPropertiesService.js +1 -1
  213. package/www/dist/frontend/services/IobrokerWebuiSpectrumEditorService.js +1 -1
  214. package/www/dist/frontend/services/IobrokerWebuiVisibilityPropertiesService.js +1 -1
  215. package/www/dist/frontend/services/LayoutComponentsPropertiesService.js +1 -1
  216. package/www/dist/frontend/widgets/OrthoFlowLineTool.js +1 -1
  217. package/www/dist/frontend/widgets/customElementsObserver.js +1 -1
  218. package/www/dist/frontend/widgets/importWidgetFiles.js +1 -1
  219. package/www/dist/frontend/widgets/importWidgetFilesRuntime.js +1 -1
  220. package/www/dist/frontend/widgets/layout-components.js +1 -1
  221. package/www/dist/frontend/widgets/layout-placement-services.js +1 -1
  222. package/www/dist/frontend/widgets/testElement.js +1 -1
@@ -1 +1 @@
1
- {"properties": {"caption": {"type": "string", "default": ""}, "icon": {"type": "string", "default": ""}, "bgColor": {"type": "color", "default": "#222222"}}, "settings": {"width": "100%", "height": "48px"}, "html": "<div id=\"bar\" class=\"bar\"><img id=\"barIcon\" class=\"bar-icon\" alt=\"\"/><span id=\"barCap\" class=\"bar-cap\"></span></div>", "style": ":host{display:block;width:100%;height:100%;}\n.bar{display:flex;align-items:center;gap:12px;height:100%;padding:0 12px 0 56px;color:#fff;box-sizing:border-box;}\n.bar-icon{height:30px;width:auto;}\n.bar-cap{font-size:16px;font-weight:600;}", "script": "export function init(instance){\n instance._bindingsRefresh();\n const cfg = (window.IOB && window.IOB.config && window.IOB.config.appBar) || {};\n const resolveImg = (img) => { if(!img) return ''; if(/^(https?:|data:|blob:|\\/)/.test(img)) return img; try{ return (window.IOB&&window.IOB.imagePrefix?window.IOB.imagePrefix:'')+img; }catch(e){ return img; } };\n const upd = () => {\n const bar = instance._getDomElement('bar');\n const ic = instance._getDomElement('barIcon');\n const cap = instance._getDomElement('barCap');\n if (bar) bar.style.background = instance.bgColor || cfg.bgColor || '#222222';\n const icon = instance.icon || cfg.icon;\n if (ic){ if(icon){ ic.src=resolveImg(icon); ic.style.display=''; } else ic.style.display='none'; }\n if (cap) cap.textContent = instance.caption || cfg.caption || '';\n };\n instance._assignEvent('caption-changed', upd);\n instance._assignEvent('icon-changed', upd);\n instance._assignEvent('bg-color-changed', upd);\n upd();\n}"}
1
+ {"properties": {"caption": {"type": "string", "default": ""}, "icon": {"type": "string", "default": ""}, "bgColor": {"type": "color", "default": ""}}, "settings": {"width": "100%", "height": "48px"}, "html": "<div id=\"bar\" class=\"bar\"><img id=\"barIcon\" class=\"bar-icon\" alt=\"\" style=\"display:none;\"/><span id=\"barCap\" class=\"bar-cap\"></span></div>", "style": ":host{display:block;width:100%;height:100%;}\n.bar{display:flex;align-items:center;gap:12px;height:100%;padding:0 16px 0 60px;color:#fff;box-sizing:border-box;background:var(--bar-bg,linear-gradient(90deg,#1e3c72 0%,#2a5298 100%));box-shadow:0 2px 12px rgba(0,0,0,.25);}\n.bar-icon{height:30px;width:auto;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3));}\n.bar-cap{font-size:17px;font-weight:600;letter-spacing:.3px;}", "script": "export function init(instance){\n instance._bindingsRefresh();\n const resolveImg = (img) => { if(!img) return ''; if(/^(https?:|data:|blob:|\\/)/.test(img)) return img; try{ return (window.IOB&&window.IOB.imagePrefix?window.IOB.imagePrefix:'')+img; }catch(e){ return img; } };\n const cfg = (window.IOB && window.IOB.config && window.IOB.config.appBar) || {};\n const upd = () => {\n const bar=instance._getDomElement('bar'), ic=instance._getDomElement('barIcon'), cap=instance._getDomElement('barCap');\n const bg = instance.bgColor || cfg.bgColor;\n if(bg) instance.style.setProperty('--bar-bg', bg);\n const icon = instance.icon || cfg.icon;\n if(ic){ if(icon){ ic.src=resolveImg(icon); ic.style.display=''; } else ic.style.display='none'; }\n if(cap) cap.textContent = instance.caption || cfg.caption || '';\n };\n instance._assignEvent('caption-changed', upd);\n instance._assignEvent('icon-changed', upd);\n instance._assignEvent('bg-color-changed', upd);\n upd();\n}"}
@@ -1 +1 @@
1
- {"properties": {"screenName": {"type": "string", "default": ""}, "title": {"type": "string", "default": "Item"}, "image": {"type": "string", "default": ""}, "selected": {"type": "boolean", "default": "false"}, "compact": {"type": "boolean", "default": "false"}}, "settings": {"width": "220px", "height": "44px"}, "html": "<div id=\"mi\" class=\"mi\"><img id=\"miImg\" class=\"mi-img\" alt=\"\"/><span id=\"miLabel\" class=\"mi-label\"></span></div>", "style": ":host{display:block;color:inherit;}\n.mi{display:flex;align-items:center;gap:12px;padding:11px 12px;cursor:pointer;white-space:nowrap;overflow:hidden;transition:background .12s;box-sizing:border-box;}\n.mi:hover{background:rgba(255,255,255,.08);}\n.mi.selected{background:var(--nav-selected-bg,rgba(255,255,255,.16));}\n.mi-img{width:24px;height:24px;object-fit:contain;flex-shrink:0;}\n.mi-label{overflow:hidden;text-overflow:ellipsis;}\n.mi.compact .mi-label{display:none;}", "script": "export function init(instance){\n instance._bindingsRefresh();\n const resolveImg = (img) => { if(!img) return ''; if(/^(https?:|data:|blob:|\\/)/.test(img)) return img; try{ return (window.IOB&&window.IOB.imagePrefix?window.IOB.imagePrefix:'')+img; }catch(e){ return img; } };\n const upd = () => {\n const img = instance._getDomElement('miImg');\n const lbl = instance._getDomElement('miLabel');\n const mi = instance._getDomElement('mi');\n if (img){ if(instance.image){ img.src=resolveImg(instance.image); img.style.display=''; } else { img.style.display='none'; } }\n if (lbl) lbl.textContent = instance.title || instance.screenName || '';\n if (mi){ mi.classList.toggle('selected', instance.selected===true || instance.selected==='true'); mi.classList.toggle('compact', instance.compact===true || instance.compact==='true'); }\n };\n instance._assignEvent('title-changed', upd);\n instance._assignEvent('image-changed', upd);\n instance._assignEvent('screen-name-changed', upd);\n instance._assignEvent('selected-changed', upd);\n instance._assignEvent('compact-changed', upd);\n const mi = instance._getDomElement('mi');\n if (mi) mi.addEventListener('click', () => {\n if (instance.screenName && window.IOB && window.IOB.changeView) window.IOB.changeView.emit(instance.screenName);\n instance.dispatchEvent(new CustomEvent('menuitemclick',{bubbles:true,composed:true,detail:{screenName:instance.screenName}}));\n });\n upd();\n}"}
1
+ {"properties": {"screenName": {"type": "string", "default": ""}, "title": {"type": "string", "default": "Item"}, "image": {"type": "string", "default": ""}, "selected": {"type": "boolean", "default": "false"}, "compact": {"type": "boolean", "default": "false"}}, "settings": {"width": "220px", "height": "48px"}, "html": "<div id=\"mi\" class=\"mi\"><span id=\"miIcon\" class=\"mi-icon\">▸</span><img id=\"miImg\" class=\"mi-img\" alt=\"\" style=\"display:none;\"/><span id=\"miLabel\" class=\"mi-label\"></span></div>", "style": ":host{display:block;color:inherit;}\n.mi{display:flex;align-items:center;gap:13px;margin:4px 10px;padding:10px 13px;cursor:pointer;white-space:nowrap;overflow:hidden;border-radius:10px;border:1px solid transparent;background:var(--mi-bg,rgba(255,255,255,.06));color:var(--mi-fg,rgba(255,255,255,.9));transition:background .18s,border-color .18s,transform .12s,box-shadow .18s;box-sizing:border-box;}\n.mi:hover{background:var(--mi-hover,rgba(255,255,255,.14));border-color:rgba(255,255,255,.18);transform:translateX(2px);}\n.mi.selected{background:var(--mi-active,linear-gradient(135deg,rgba(33,150,243,.38),rgba(33,150,243,.16)));border-color:var(--mi-active-border,rgba(33,150,243,.55));box-shadow:0 2px 10px rgba(33,150,243,.22);}\n.mi.selected .mi-label{color:var(--mi-active-fg,#fff);}\n.mi.selected .mi-icon{background:var(--mi-active-fg,rgba(255,255,255,.9));color:var(--mi-active-icon,#1976d2);}\n.mi-img{width:24px;height:24px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35));}\n.mi-icon{width:26px;height:26px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:rgba(255,255,255,.13);font-size:13px;line-height:1;}\n.mi-label{overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500;letter-spacing:.2px;}\n.mi.compact{margin:5px auto;padding:9px 0;justify-content:center;gap:0;width:44px;}\n.mi.compact .mi-label{display:none;}", "script": "export function init(instance){\n instance._bindingsRefresh();\n const resolveImg = (img) => { if(!img) return ''; if(/^(https?:|data:|blob:|\\/)/.test(img)) return img; try{ return (window.IOB&&window.IOB.imagePrefix?window.IOB.imagePrefix:'')+img; }catch(e){ return img; } };\n const upd = () => {\n const img=instance._getDomElement('miImg'), ic=instance._getDomElement('miIcon'), lbl=instance._getDomElement('miLabel'), mi=instance._getDomElement('mi');\n const hasImg = !!instance.image;\n if(img){ if(hasImg){ img.src=resolveImg(instance.image); img.style.display=''; } else img.style.display='none'; }\n if(ic){ ic.style.display = hasImg ? 'none' : ''; ic.textContent = (instance.title||instance.screenName||'?').trim().charAt(0).toUpperCase() || '▸'; }\n if(lbl) lbl.textContent = instance.title || instance.screenName || '';\n if(mi){ mi.classList.toggle('selected', instance.selected===true||instance.selected==='true'); mi.classList.toggle('compact', instance.compact===true||instance.compact==='true'); }\n };\n instance._assignEvent('title-changed', upd);\n instance._assignEvent('image-changed', upd);\n instance._assignEvent('screen-name-changed', upd);\n instance._assignEvent('selected-changed', upd);\n instance._assignEvent('compact-changed', upd);\n const mi=instance._getDomElement('mi');\n if(mi) mi.addEventListener('click', () => {\n if(instance.screenName && window.IOB && window.IOB.changeView) window.IOB.changeView.emit(instance.screenName);\n instance.dispatchEvent(new CustomEvent('menuitemclick',{bubbles:true,composed:true,detail:{screenName:instance.screenName}}));\n });\n upd();\n}"}
@@ -1 +1 @@
1
- {"properties": {}, "settings": {"width": "220px", "height": "100%"}, "html": "<div id=\"sb\" class=\"sb\"><div id=\"sbHdr\" class=\"sb-hdr\"></div><div id=\"sbItems\" class=\"sb-items\"></div></div>", "style": ":host{display:block;width:100%;height:100%;background:var(--nav-bg,#1b1b1b);color:var(--nav-fg,#ddd);box-sizing:border-box;}\n.sb{display:flex;flex-direction:column;height:100%;width:100%;}\n.sb-hdr{padding:12px;font-weight:700;border-bottom:1px solid rgba(255,255,255,.1);white-space:nowrap;overflow:hidden;}\n.sb-items{flex:1;overflow:auto;}", "script": "export function init(instance){\n instance._bindingsRefresh();\n const IOB = window.IOB;\n const cfg = (IOB && IOB.config && IOB.config.navigation) || {};\n const isDesigner = !!document.querySelector('iobroker-webui-app-shell');\n const sb=instance._getDomElement('sb'), hdr=instance._getDomElement('sbHdr'), items=instance._getDomElement('sbItems');\n if (hdr){ hdr.textContent=cfg.menuHeaderText||''; hdr.style.display=cfg.menuHeaderText?'':'none'; if(cfg.menuHeaderTextColor) hdr.style.color=cfg.menuHeaderTextColor; }\n if (sb){ if(cfg.bgColor) instance.style.setProperty('--nav-bg',cfg.bgColor); if(cfg.textColor) instance.style.setProperty('--nav-fg',cfg.textColor); }\n\n let state='expanded'; const ICONS_W=56; let burger=null; let hasItems=false;\n const navWidth = cfg.menuWidth ? (/^\\d+$/.test(String(cfg.menuWidth))?cfg.menuWidth+'px':String(cfg.menuWidth)) : '220px';\n const setActive=(name)=>{ if(items) items.querySelectorAll('webui-navigation-menu-item').forEach(mi=>{ mi.selected=(mi.screenName===name); }); };\n const navTo=(name)=>{ if(IOB&&IOB.changeView) IOB.changeView.emit(name); setActive(name); if(cfg.hideAfterSelection) setState('hidden'); };\n\n async function loadEntries(){\n if(!IOB||!IOB.getAllNames) return [];\n const names=await IOB.getAllNames('screen').catch(()=>[]);\n const list=[];\n for(const n of names){ const o=await IOB.getWebuiObject('screen',n).catch(()=>null); const nv=o&&o.settings&&o.settings.navigation; if(nv&&nv.show) list.push({name:n,title:nv.title||n,order:parseFloat(nv.order)||0,image:nv.image||''}); }\n list.sort((a,b)=>a.order-b.order); return list;\n }\n async function render(){\n const list=await loadEntries(); hasItems=list.length>0;\n if(items){ items.innerHTML='';\n for(const e of list){ const mi=document.createElement('webui-navigation-menu-item'); mi.screenName=e.name; mi.title=e.title; mi.image=e.image; mi.addEventListener('menuitemclick',()=>navTo(e.name)); items.appendChild(mi); }\n }\n if(!isDesigner && hasItems && !cfg.hideMenu) applyRuntimeLayout(); else if(!isDesigner) { const v=document.getElementById('viewer'); if(v){ v.style.left='0'; v.style.width='100%'; } instance.style.display='none'; }\n }\n function applyRuntimeLayout(){\n const ab=document.getElementById('__nav-appbar-host'); const top=ab?ab.offsetHeight:0;\n instance.style.cssText=`position:fixed;left:0;bottom:0;top:${top}px;z-index:99999;overflow:hidden;transition:width .2s,transform .2s;background:${cfg.bgColor||'#1b1b1b'};color:${cfg.textColor||'#ddd'};`;\n if(!burger){ burger=document.createElement('div'); burger.textContent='☰'; const inBar=top>0; burger.style.cssText=`position:fixed;top:${inBar?0:8}px;left:${inBar?0:8}px;z-index:100002;width:${inBar?top:40}px;height:${inBar?top:40}px;display:flex;align-items:center;justify-content:center;font-size:22px;cursor:pointer;${inBar?'':'border-radius:6px;'}background:${cfg.showButtonBg||(inBar?'transparent':'rgba(0,0,0,.45)')};color:${cfg.showButtonColor||'#fff'};`; burger.onclick=cycle; document.body.appendChild(burger); }\n setState(state);\n }\n function setState(s){\n state=s; const v=document.getElementById('viewer'); const top=parseInt(instance.style.top)||0; let left='0px';\n const compact=(state==='icons');\n if(items) items.querySelectorAll('webui-navigation-menu-item').forEach(mi=>mi.compact=compact);\n if(state==='expanded'){ instance.style.width=navWidth; instance.style.transform='translateX(0)'; if(hdr)hdr.style.display=cfg.menuHeaderText?'':'none'; left=navWidth; }\n else if(state==='icons'){ instance.style.width=ICONS_W+'px'; instance.style.transform='translateX(0)'; if(hdr)hdr.style.display='none'; left=ICONS_W+'px'; }\n else { instance.style.transform='translateX(-110%)'; left='0px'; }\n if(v){ v.style.left=left; v.style.width=`calc(100% - ${left})`; v.style.top=top+'px'; v.style.height=`calc(100% - ${top}px)`; }\n }\n function cycle(){ const o=['expanded','icons','hidden']; let n=o[(o.indexOf(state)+1)%o.length]; if(n==='hidden'&&cfg.doNotHideCompletely)n='icons'; setState(n); }\n\n render();\n if(IOB&&IOB.changeView) IOB.changeView.on(v=>setActive(v));\n const sv=document.getElementById('viewer'); if(sv&&sv.screenName) setActive(sv.screenName);\n}"}
1
+ {"properties": {}, "settings": {"width": "220px", "height": "100%"}, "html": "<div id=\"sb\" class=\"sb\"><div id=\"sbHdr\" class=\"sb-hdr\"></div><div id=\"sbItems\" class=\"sb-items\"></div></div>", "style": ":host{display:block;width:100%;height:100%;box-sizing:border-box;}\n.sb{display:flex;flex-direction:column;height:100%;width:100%;background:var(--sb-bg,linear-gradient(180deg,#1e3c72 0%,#2a5298 100%));color:var(--sb-fg,rgba(255,255,255,.9));box-shadow:2px 0 18px rgba(0,0,0,.28);box-sizing:border-box;}\n.sb-hdr{padding:18px 16px 14px;font-weight:700;font-size:16px;letter-spacing:.5px;color:var(--sb-hdr-fg,#fff);border-bottom:1px solid rgba(255,255,255,.12);white-space:nowrap;overflow:hidden;}\n.sb-items{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 0;}\n.sb-items::-webkit-scrollbar{width:6px;}\n.sb-items::-webkit-scrollbar-thumb{background:rgba(255,255,255,.3);border-radius:3px;}", "script": "export function init(instance){\n instance._bindingsRefresh();\n const IOB = window.IOB;\n const cfg = (IOB && IOB.config && IOB.config.navigation) || {};\n const isDesigner = !!document.querySelector('iobroker-webui-app-shell');\n const hdr=instance._getDomElement('sbHdr'), items=instance._getDomElement('sbItems');\n if(cfg.bgColor) instance.style.setProperty('--sb-bg', cfg.bgColor);\n if(cfg.textColor){ instance.style.setProperty('--sb-fg', cfg.textColor); instance.style.setProperty('--mi-fg', cfg.textColor); }\n if(cfg.menuHeaderTextColor) instance.style.setProperty('--sb-hdr-fg', cfg.menuHeaderTextColor);\n if(cfg.bgColorSelected){ instance.style.setProperty('--mi-active', cfg.bgColorSelected); instance.style.setProperty('--mi-active-icon', cfg.bgColorSelected); }\n if(cfg.textColorSelected) instance.style.setProperty('--mi-active-fg', cfg.textColorSelected);\n if(hdr){ hdr.textContent=cfg.menuHeaderText||''; hdr.style.display=cfg.menuHeaderText?'':'none'; }\n let state='expanded'; const ICONS_W=64; let burger=null; let hasItems=false;\n const navWidth = cfg.menuWidth ? (/^\\d+$/.test(String(cfg.menuWidth))?cfg.menuWidth+'px':String(cfg.menuWidth)) : '220px';\n const setActive=(name)=>{ if(items) items.querySelectorAll('webui-navigation-menu-item').forEach(mi=>{ mi.selected=(mi.screenName===name); }); };\n const navTo=(name)=>{ if(IOB&&IOB.changeView) IOB.changeView.emit(name); setActive(name); if(cfg.hideAfterSelection) setState('hidden'); };\n async function loadEntries(){\n if(!IOB||!IOB.getAllNames) return [];\n const names=await IOB.getAllNames('screen').catch(()=>[]);\n const list=[];\n for(const n of names){ const o=await IOB.getWebuiObject('screen',n).catch(()=>null); const nv=o&&o.settings&&o.settings.navigation; if(nv&&nv.show) list.push({name:n,title:nv.title||n,order:parseFloat(nv.order)||0,image:nv.image||''}); }\n list.sort((a,b)=>a.order-b.order); return list;\n }\n async function render(){\n const list=await loadEntries(); hasItems=list.length>0;\n if(items){ items.innerHTML='';\n for(const e of list){ const mi=document.createElement('webui-navigation-menu-item'); mi.screenName=e.name; mi.title=e.title; mi.image=e.image; mi.addEventListener('menuitemclick',()=>navTo(e.name)); items.appendChild(mi); }\n }\n if(!isDesigner){ if(hasItems && !cfg.hideMenu) applyRuntimeLayout(); else { const v=document.getElementById('viewer'); if(v){ v.style.left='0'; v.style.width='100%'; } instance.style.display='none'; } }\n }\n function applyRuntimeLayout(){\n const ab=document.getElementById('__nav-appbar-host'); const top=ab?ab.offsetHeight:0;\n instance.style.position='fixed'; instance.style.left='0'; instance.style.bottom='0'; instance.style.top=top+'px';\n instance.style.zIndex='99999'; instance.style.overflow='hidden'; instance.style.transition='width .2s ease,transform .2s ease';\n if(!burger){ burger=document.createElement('div'); burger.id='__nav-burger'; burger.textContent='☰'; const inBar=top>0; burger.style.cssText='position:fixed;top:'+(inBar?0:8)+'px;left:'+(inBar?0:8)+'px;z-index:100002;width:'+(inBar?top:42)+'px;height:'+(inBar?top:42)+'px;display:flex;align-items:center;justify-content:center;font-size:22px;cursor:pointer;'+(inBar?'':'border-radius:8px;')+'background:'+(cfg.showButtonBg||(inBar?'transparent':'rgba(0,0,0,.45)'))+';color:'+(cfg.showButtonColor||'#fff')+';transition:background .15s;'; burger.onclick=cycle; document.body.appendChild(burger); }\n setState(state);\n }\n function setState(s){\n state=s; const v=document.getElementById('viewer'); const top=parseInt(instance.style.top)||0; let left='0px';\n const compact=(state==='icons');\n if(items) items.querySelectorAll('webui-navigation-menu-item').forEach(mi=>mi.compact=compact);\n if(state==='expanded'){ instance.style.width=navWidth; instance.style.transform='translateX(0)'; if(hdr)hdr.style.display=cfg.menuHeaderText?'':'none'; left=navWidth; }\n else if(state==='icons'){ instance.style.width=ICONS_W+'px'; instance.style.transform='translateX(0)'; if(hdr)hdr.style.display='none'; left=ICONS_W+'px'; }\n else { instance.style.transform='translateX(-110%)'; left='0px'; }\n if(v){ v.style.left=left; v.style.width='calc(100% - '+left+')'; v.style.top=top+'px'; v.style.height='calc(100% - '+top+'px)'; }\n }\n function cycle(){ const o=['expanded','icons','hidden']; let n=o[(o.indexOf(state)+1)%o.length]; if(n==='hidden'&&cfg.doNotHideCompletely)n='icons'; setState(n); }\n render();\n if(IOB&&IOB.changeView) IOB.changeView.on(v=>setActive(v));\n const sv=document.getElementById('viewer'); if(sv&&sv.screenName) setActive(sv.screenName);\n}"}