@iobroker/adapter-react-v5 7.0.1 → 7.1.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 (314) hide show
  1. package/Components/404.d.ts +3 -2
  2. package/Components/404.js +16 -15
  3. package/Components/ColorPicker.d.ts +22 -8
  4. package/Components/ColorPicker.js +34 -17
  5. package/Components/ComplexCron.js +24 -24
  6. package/Components/CopyToClipboard.d.ts +10 -1
  7. package/Components/CopyToClipboard.js +17 -8
  8. package/Components/CustomModal.d.ts +1 -1
  9. package/Components/CustomModal.js +8 -8
  10. package/Components/FileBrowser.d.ts +11 -11
  11. package/Components/FileBrowser.js +173 -164
  12. package/Components/FileViewer.js +34 -23
  13. package/Components/Icon.d.ts +16 -2
  14. package/Components/Icon.js +19 -8
  15. package/Components/IconPicker.js +10 -14
  16. package/Components/IconSelector.d.ts +1 -1
  17. package/Components/IconSelector.js +64 -74
  18. package/Components/Image.d.ts +8 -4
  19. package/Components/Image.js +13 -32
  20. package/Components/Loader.d.ts +2 -2
  21. package/Components/Loader.js +244 -241
  22. package/Components/Loaders/MV.d.ts +6 -1
  23. package/Components/Loaders/MV.js +23 -7
  24. package/Components/Loaders/PT.d.ts +7 -2
  25. package/Components/Loaders/PT.js +123 -110
  26. package/Components/Loaders/Vendor.d.ts +2 -2
  27. package/Components/Loaders/Vendor.js +22 -14
  28. package/Components/Logo.js +16 -18
  29. package/Components/MDUtils.d.ts +1 -1
  30. package/Components/MDUtils.js +8 -4
  31. package/Components/ObjectBrowser.d.ts +49 -38
  32. package/Components/ObjectBrowser.js +757 -494
  33. package/Components/Router.d.ts +1 -3
  34. package/Components/Router.js +3 -1
  35. package/Components/SaveCloseButtons.d.ts +3 -3
  36. package/Components/SaveCloseButtons.js +3 -3
  37. package/Components/Schedule.d.ts +15 -15
  38. package/Components/Schedule.js +177 -154
  39. package/Components/SelectWithIcon.d.ts +2 -2
  40. package/Components/SelectWithIcon.js +45 -34
  41. package/Components/SimpleCron/index.js +83 -43
  42. package/Components/TabContainer.js +2 -2
  43. package/Components/TabContent.js +1 -1
  44. package/Components/TabHeader.js +1 -1
  45. package/Components/TableResize.d.ts +2 -2
  46. package/Components/TableResize.js +5 -5
  47. package/Components/TextWithIcon.d.ts +1 -1
  48. package/Components/TextWithIcon.js +10 -8
  49. package/Components/ToggleThemeMenu.d.ts +2 -2
  50. package/Components/ToggleThemeMenu.js +3 -3
  51. package/Components/TreeTable.d.ts +18 -18
  52. package/Components/TreeTable.js +76 -72
  53. package/Components/UploadImage.d.ts +2 -2
  54. package/Components/UploadImage.js +330 -326
  55. package/Components/Utils.d.ts +42 -22
  56. package/Components/Utils.js +66 -65
  57. package/Components/withWidth.d.ts +2 -2
  58. package/Components/withWidth.js +10 -6
  59. package/Dialogs/ComplexCron.d.ts +2 -2
  60. package/Dialogs/ComplexCron.js +3 -3
  61. package/Dialogs/Confirm.d.ts +4 -4
  62. package/Dialogs/Confirm.js +18 -8
  63. package/Dialogs/Cron.d.ts +3 -3
  64. package/Dialogs/Cron.js +21 -17
  65. package/Dialogs/Error.d.ts +3 -3
  66. package/Dialogs/Error.js +6 -4
  67. package/Dialogs/Message.d.ts +3 -3
  68. package/Dialogs/Message.js +6 -4
  69. package/Dialogs/SelectFile.d.ts +4 -4
  70. package/Dialogs/SelectFile.js +6 -4
  71. package/Dialogs/SelectID.d.ts +12 -10
  72. package/Dialogs/SelectID.js +12 -8
  73. package/Dialogs/SimpleCron.d.ts +2 -2
  74. package/Dialogs/SimpleCron.js +2 -2
  75. package/Dialogs/TextInput.d.ts +2 -2
  76. package/Dialogs/TextInput.js +3 -3
  77. package/GenericApp.d.ts +19 -13
  78. package/GenericApp.js +177 -134
  79. package/LICENSE +22 -22
  80. package/LegacyConnection.d.ts +240 -248
  81. package/LegacyConnection.js +500 -525
  82. package/Prompt.js +7 -7
  83. package/README.md +1239 -1166
  84. package/Theme.d.ts +1 -1
  85. package/Theme.js +9 -12
  86. package/assets/devices.json +1 -0
  87. package/assets/lamp_ceiling.svg +8 -8
  88. package/assets/lamp_table.svg +7 -7
  89. package/assets/no_icon.svg +9 -9
  90. package/assets/rooms.json +1 -0
  91. package/craco-module-federation.js +62 -71
  92. package/i18n/de.json +434 -431
  93. package/i18n/en.json +434 -431
  94. package/i18n/es.json +434 -431
  95. package/i18n/fr.json +434 -431
  96. package/i18n/it.json +434 -431
  97. package/i18n/nl.json +434 -431
  98. package/i18n/pl.json +434 -431
  99. package/i18n/pt.json +434 -431
  100. package/i18n/ru.json +434 -431
  101. package/i18n/uk.json +434 -431
  102. package/i18n/zh-cn.json +434 -431
  103. package/i18n.d.ts +26 -19
  104. package/i18n.js +28 -22
  105. package/icons/IconAdapter.js +2 -2
  106. package/icons/IconAlias.js +2 -2
  107. package/icons/IconChannel.js +2 -2
  108. package/icons/IconClearFilter.js +2 -2
  109. package/icons/IconClosed.js +2 -2
  110. package/icons/IconCopy.js +2 -2
  111. package/icons/IconDevice.js +2 -2
  112. package/icons/IconDocument.js +2 -2
  113. package/icons/IconDocumentReadOnly.js +2 -2
  114. package/icons/IconExpert.js +2 -2
  115. package/icons/IconFx.js +2 -2
  116. package/icons/IconInstance.js +2 -2
  117. package/icons/IconLogout.js +2 -2
  118. package/icons/IconNoIcon.js +2 -2
  119. package/icons/IconOpen.d.ts +2 -2
  120. package/icons/IconOpen.js +2 -2
  121. package/icons/IconProps.d.ts +4 -3
  122. package/icons/IconState.d.ts +2 -2
  123. package/icons/IconState.js +2 -2
  124. package/index.css +56 -55
  125. package/modulefederation.admin.config.js +31 -31
  126. package/package.json +5 -5
  127. package/src/AdminConnection.tsx +3 -3
  128. package/src/Components/404.tsx +122 -121
  129. package/src/Components/ColorPicker.tsx +343 -315
  130. package/src/Components/ComplexCron.tsx +544 -507
  131. package/src/Components/CopyToClipboard.tsx +178 -165
  132. package/src/Components/CustomModal.tsx +170 -163
  133. package/src/Components/FileBrowser.tsx +2550 -2414
  134. package/src/Components/FileViewer.tsx +412 -393
  135. package/src/Components/Icon.tsx +238 -210
  136. package/src/Components/IconPicker.tsx +165 -149
  137. package/src/Components/IconSelector.tsx +2220 -2202
  138. package/src/Components/Image.tsx +193 -176
  139. package/src/Components/Loader.tsx +328 -304
  140. package/src/Components/Logo.tsx +176 -166
  141. package/src/Components/MDUtils.tsx +104 -100
  142. package/src/Components/ObjectBrowser.tsx +8935 -8032
  143. package/src/Components/Router.tsx +90 -90
  144. package/src/Components/SaveCloseButtons.tsx +117 -113
  145. package/src/Components/Schedule.tsx +1962 -1724
  146. package/src/Components/SelectWithIcon.tsx +239 -197
  147. package/src/Components/TabContainer.tsx +57 -55
  148. package/src/Components/TabContent.tsx +38 -37
  149. package/src/Components/TabHeader.tsx +20 -19
  150. package/src/Components/TableResize.tsx +274 -259
  151. package/src/Components/TextWithIcon.tsx +159 -148
  152. package/src/Components/ToggleThemeMenu.tsx +52 -34
  153. package/src/Components/TreeTable.tsx +1002 -919
  154. package/src/Components/UploadImage.tsx +631 -599
  155. package/src/Components/Utils.tsx +1802 -1794
  156. package/src/Components/loader.css +231 -222
  157. package/src/Components/withWidth.tsx +32 -21
  158. package/src/Connection.tsx +5 -7
  159. package/src/Dialogs/ComplexCron.tsx +123 -129
  160. package/src/Dialogs/Confirm.tsx +185 -162
  161. package/src/Dialogs/Cron.tsx +192 -182
  162. package/src/Dialogs/Error.tsx +67 -72
  163. package/src/Dialogs/Message.tsx +73 -71
  164. package/src/Dialogs/SelectFile.tsx +280 -270
  165. package/src/Dialogs/SelectID.tsx +310 -298
  166. package/src/Dialogs/SimpleCron.tsx +100 -100
  167. package/src/Dialogs/TextInput.tsx +99 -107
  168. package/src/GenericApp.tsx +1076 -976
  169. package/src/LegacyConnection.tsx +3719 -3589
  170. package/src/Prompt.tsx +22 -20
  171. package/src/Theme.tsx +472 -479
  172. package/src/icons/IconAdapter.tsx +22 -20
  173. package/src/icons/IconAlias.tsx +22 -20
  174. package/src/icons/IconChannel.tsx +60 -21
  175. package/src/icons/IconClearFilter.tsx +24 -22
  176. package/src/icons/IconClosed.tsx +22 -17
  177. package/src/icons/IconCopy.tsx +21 -16
  178. package/src/icons/IconDevice.tsx +126 -27
  179. package/src/icons/IconDocument.tsx +22 -17
  180. package/src/icons/IconDocumentReadOnly.tsx +27 -18
  181. package/src/icons/IconExpert.tsx +26 -18
  182. package/src/icons/IconFx.tsx +38 -36
  183. package/src/icons/IconInstance.tsx +22 -20
  184. package/src/icons/IconLogout.tsx +32 -30
  185. package/src/icons/IconNoIcon.tsx +21 -19
  186. package/src/icons/IconOpen.tsx +22 -17
  187. package/src/icons/IconProps.tsx +16 -15
  188. package/src/icons/IconState.tsx +38 -17
  189. package/src/index.css +56 -55
  190. package/tasks.js +91 -0
  191. package/types.d.ts +141 -134
  192. package/Components/Loaders/PT.css +0 -109
  193. package/Components/Loaders/Vendor.css +0 -13
  194. package/Components/loader.css +0 -222
  195. package/Components/types.d.ts +0 -82
  196. package/assets/devices/Alarm Systems.svg +0 -19
  197. package/assets/devices/Amplifier.svg +0 -22
  198. package/assets/devices/Awnings.svg +0 -5
  199. package/assets/devices/Battery Status.svg +0 -5
  200. package/assets/devices/Ceiling Spotlights.svg +0 -16
  201. package/assets/devices/Chandelier.svg +0 -7
  202. package/assets/devices/Climate.svg +0 -12
  203. package/assets/devices/Coffee Makers.svg +0 -6
  204. package/assets/devices/Cold Water.svg +0 -31
  205. package/assets/devices/Computer.svg +0 -21
  206. package/assets/devices/Consumption.svg +0 -8
  207. package/assets/devices/Curtains.svg +0 -43
  208. package/assets/devices/Dishwashers.svg +0 -12
  209. package/assets/devices/Doors.svg +0 -6
  210. package/assets/devices/Doorstep.svg +0 -35
  211. package/assets/devices/Dryer.svg +0 -14
  212. package/assets/devices/Fan.svg +0 -20
  213. package/assets/devices/Floor Lamps.svg +0 -5
  214. package/assets/devices/Garage Doors.svg +0 -9
  215. package/assets/devices/Gates.svg +0 -32
  216. package/assets/devices/Hairdryer.svg +0 -23
  217. package/assets/devices/Handle.svg +0 -6
  218. package/assets/devices/Hanging Lamps.svg +0 -9
  219. package/assets/devices/Heater.svg +0 -44
  220. package/assets/devices/Hoods.svg +0 -12
  221. package/assets/devices/Hot Water.svg +0 -10
  222. package/assets/devices/Humidity.svg +0 -41
  223. package/assets/devices/Iron.svg +0 -5
  224. package/assets/devices/Irrigation.svg +0 -23
  225. package/assets/devices/Led Strip.svg +0 -31
  226. package/assets/devices/Light.svg +0 -30
  227. package/assets/devices/Lightings.svg +0 -46
  228. package/assets/devices/Lock.svg +0 -19
  229. package/assets/devices/Louvre.svg +0 -7
  230. package/assets/devices/Mowing Machine.svg +0 -9
  231. package/assets/devices/Music.svg +0 -13
  232. package/assets/devices/Outdoor Blinds.svg +0 -7
  233. package/assets/devices/People.svg +0 -19
  234. package/assets/devices/Pool.svg +0 -8
  235. package/assets/devices/Power Consumption.svg +0 -13
  236. package/assets/devices/Printer.svg +0 -10
  237. package/assets/devices/Pump.svg +0 -10
  238. package/assets/devices/Receiver.svg +0 -19
  239. package/assets/devices/Sconces.svg +0 -10
  240. package/assets/devices/Security.svg +0 -34
  241. package/assets/devices/Shading.svg +0 -5
  242. package/assets/devices/Shutters.svg +0 -11
  243. package/assets/devices/SmokeDetector.svg +0 -13
  244. package/assets/devices/Sockets.svg +0 -13
  245. package/assets/devices/Speaker.svg +0 -35
  246. package/assets/devices/Stove.svg +0 -12
  247. package/assets/devices/Table Lamps.svg +0 -12
  248. package/assets/devices/Temperature Sensors.svg +0 -28
  249. package/assets/devices/Tv.svg +0 -8
  250. package/assets/devices/Vacuum Cleaner.svg +0 -16
  251. package/assets/devices/Ventilation.svg +0 -12
  252. package/assets/devices/Washing Machines.svg +0 -16
  253. package/assets/devices/Water Consumption.svg +0 -6
  254. package/assets/devices/Water Heater.svg +0 -8
  255. package/assets/devices/Water.svg +0 -40
  256. package/assets/devices/Weather.svg +0 -28
  257. package/assets/devices/Window.svg +0 -8
  258. package/assets/rooms/Anteroom.svg +0 -53
  259. package/assets/rooms/Attic.svg +0 -21
  260. package/assets/rooms/Balcony.svg +0 -13
  261. package/assets/rooms/Barn.svg +0 -6
  262. package/assets/rooms/Basement.svg +0 -5
  263. package/assets/rooms/Bathroom.svg +0 -38
  264. package/assets/rooms/Bedroom.svg +0 -5
  265. package/assets/rooms/Boiler Room.svg +0 -13
  266. package/assets/rooms/Carport.svg +0 -17
  267. package/assets/rooms/Cellar.svg +0 -89
  268. package/assets/rooms/Chamber.svg +0 -9
  269. package/assets/rooms/Corridor.svg +0 -53
  270. package/assets/rooms/Dining Area.svg +0 -37
  271. package/assets/rooms/Dining Room.svg +0 -37
  272. package/assets/rooms/Dining.svg +0 -37
  273. package/assets/rooms/Dressing Room.svg +0 -5
  274. package/assets/rooms/Driveway.svg +0 -15
  275. package/assets/rooms/Entrance.svg +0 -44
  276. package/assets/rooms/Equipment Room.svg +0 -15
  277. package/assets/rooms/Front Yard.svg +0 -64
  278. package/assets/rooms/Gallery.svg +0 -14
  279. package/assets/rooms/Garage.svg +0 -20
  280. package/assets/rooms/Garden.svg +0 -13
  281. package/assets/rooms/Ground Floor.svg +0 -95
  282. package/assets/rooms/Guest Bathroom.svg +0 -33
  283. package/assets/rooms/Guest Room.svg +0 -5
  284. package/assets/rooms/Gym.svg +0 -5
  285. package/assets/rooms/Hall.svg +0 -19
  286. package/assets/rooms/Home Theater.svg +0 -8
  287. package/assets/rooms/Kitchen.svg +0 -18
  288. package/assets/rooms/Laundry Room.svg +0 -12
  289. package/assets/rooms/Living Area.svg +0 -11
  290. package/assets/rooms/Living Room.svg +0 -10
  291. package/assets/rooms/Locker Room.svg +0 -17
  292. package/assets/rooms/Nursery.svg +0 -5
  293. package/assets/rooms/Office.svg +0 -8
  294. package/assets/rooms/Outdoors.svg +0 -7
  295. package/assets/rooms/Playroom.svg +0 -6
  296. package/assets/rooms/Pool.svg +0 -8
  297. package/assets/rooms/Rear Wall.svg +0 -30
  298. package/assets/rooms/Second Floor.svg +0 -95
  299. package/assets/rooms/Shed.svg +0 -16
  300. package/assets/rooms/Sleeping Area.svg +0 -22
  301. package/assets/rooms/Stairway.svg +0 -5
  302. package/assets/rooms/Stairwell.svg +0 -15
  303. package/assets/rooms/Storeroom.svg +0 -5
  304. package/assets/rooms/Summer House.svg +0 -27
  305. package/assets/rooms/Swimming Pool.svg +0 -21
  306. package/assets/rooms/Terrace.svg +0 -7
  307. package/assets/rooms/Toilet.svg +0 -10
  308. package/assets/rooms/Upstairs.svg +0 -6
  309. package/assets/rooms/Wardrobe.svg +0 -60
  310. package/assets/rooms/Washroom.svg +0 -20
  311. package/assets/rooms/Wc.svg +0 -10
  312. package/assets/rooms/Windscreen.svg +0 -60
  313. package/assets/rooms/Workshop.svg +0 -23
  314. package/assets/rooms/Workspace.svg +0 -8
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  /**
3
- * Copyright 2019-2023 Denis Haev (bluefox) <dogafox@gmail.com>
3
+ * Copyright 2019-2024 Denis Haev (bluefox) <dogafox@gmail.com>
4
4
  *
5
5
  * MIT License
6
6
  *
7
- * */
7
+ */
8
8
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
9
  if (k2 === undefined) k2 = k;
10
10
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -54,7 +54,9 @@ class DialogConfirm extends react_1.Component {
54
54
  }
55
55
  let suppress = false;
56
56
  if (this.props.suppressQuestionMinutes) {
57
- suppress = parseInt((window._localStorage || window.localStorage).getItem(this.props.dialogName), 10) || 0;
57
+ suppress =
58
+ parseInt((window._localStorage || window.localStorage).getItem(this.props.dialogName), 10) ||
59
+ 0;
58
60
  if (!suppress) {
59
61
  suppress = false;
60
62
  }
@@ -71,17 +73,21 @@ class DialogConfirm extends react_1.Component {
71
73
  if (this.state.suppress) {
72
74
  (window._localStorage || window.localStorage).setItem(this.props.dialogName, Date.now() + (this.props.suppressQuestionMinutes || 2) * 60000);
73
75
  }
74
- this.props.onClose && this.props.onClose(true);
76
+ if (this.props.onClose) {
77
+ this.props.onClose(true);
78
+ }
75
79
  }
76
80
  handleCancel() {
77
- this.props.onClose && this.props.onClose(false);
81
+ if (this.props.onClose) {
82
+ this.props.onClose(false);
83
+ }
78
84
  }
79
85
  render() {
80
86
  if (typeof this.state.suppress === 'number') {
81
87
  setTimeout(() => this.props.onClose && this.props.onClose(true), 100);
82
88
  return null;
83
89
  }
84
- return react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: "md", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: (event, reason) => {
90
+ return (react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: "md", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: (event, reason) => {
85
91
  if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {
86
92
  this.handleCancel();
87
93
  }
@@ -92,10 +98,14 @@ class DialogConfirm extends react_1.Component {
92
98
  this.props.icon || null,
93
99
  this.props.text,
94
100
  this.props.suppressQuestionMinutes ? react_1.default.createElement("br", null) : null,
95
- this.props.suppressQuestionMinutes ? react_1.default.createElement(material_1.FormControlLabel, { sx: { '& .FormControlLabel-label': styles.suppress, '&.FormControlLabel-root': styles.suppressRoot }, control: react_1.default.createElement(material_1.Checkbox, { id: `ar_dialog_confirm_suppress_${this.props.dialogName || ''}`, checked: !!this.state.suppress, onChange: () => this.setState({ suppress: !this.state.suppress }) }), label: this.props.suppressText || i18n_1.default.t('ra_Suppress question for next %s minutes', (this.props.suppressQuestionMinutes || 2).toString()) }) : null)),
101
+ this.props.suppressQuestionMinutes ? (react_1.default.createElement(material_1.FormControlLabel, { sx: {
102
+ '& .FormControlLabel-label': styles.suppress,
103
+ '&.FormControlLabel-root': styles.suppressRoot,
104
+ }, control: react_1.default.createElement(material_1.Checkbox, { id: `ar_dialog_confirm_suppress_${this.props.dialogName || ''}`, checked: !!this.state.suppress, onChange: () => this.setState({ suppress: !this.state.suppress }) }), label: this.props.suppressText ||
105
+ i18n_1.default.t('ra_Suppress question for next %s minutes', (this.props.suppressQuestionMinutes || 2).toString()) })) : null)),
96
106
  react_1.default.createElement(material_1.DialogActions, null,
97
107
  react_1.default.createElement(material_1.Button, { id: `ar_dialog_confirm_ok_${this.props.dialogName || ''}`, variant: "contained", onClick: () => this.handleOk(), color: "primary", autoFocus: true, startIcon: react_1.default.createElement(icons_material_1.Check, null) }, this.props.ok || i18n_1.default.t('ra_Ok')),
98
- react_1.default.createElement(material_1.Button, { id: `ar_dialog_confirm_cancel_${this.props.dialogName || ''}`, variant: "contained", onClick: () => this.handleCancel(), color: "grey", startIcon: react_1.default.createElement(icons_material_1.Close, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel'))));
108
+ react_1.default.createElement(material_1.Button, { id: `ar_dialog_confirm_cancel_${this.props.dialogName || ''}`, variant: "contained", onClick: () => this.handleCancel(), color: "grey", startIcon: react_1.default.createElement(icons_material_1.Close, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel')))));
99
109
  }
100
110
  }
101
111
  exports.default = DialogConfirm;
package/Dialogs/Cron.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import { IobTheme } from '../types';
1
+ import React, { type JSX } from 'react';
2
+ import type { IobTheme } from '../types';
3
3
  interface DialogCronProps {
4
4
  onClose: () => void;
5
5
  onOk: (cron: string) => void;
@@ -24,6 +24,6 @@ declare class DialogCron extends React.Component<DialogCronProps, DialogCronStat
24
24
  handleCancel(): void;
25
25
  handleOk(): void;
26
26
  setMode(mode: 'simple' | 'complex' | 'wizard'): void;
27
- render(): React.JSX.Element;
27
+ render(): JSX.Element;
28
28
  }
29
29
  export default DialogCron;
package/Dialogs/Cron.js CHANGED
@@ -54,11 +54,15 @@ class DialogCron extends react_1.default.Component {
54
54
  }
55
55
  this.state = {
56
56
  cron,
57
- mode: this.props.simple ? 'simple' :
58
- (this.props.complex ? 'complex' :
59
- ((typeof cron === 'object' || cron[0] === '{') && !this.props.noWizard ?
60
- 'wizard' :
61
- ((0, SimpleCron_1.cron2state)(this.props.cron || '* * * * *') ? 'simple' : 'complex'))),
57
+ mode: this.props.simple
58
+ ? 'simple'
59
+ : this.props.complex
60
+ ? 'complex'
61
+ : (typeof cron === 'object' || cron[0] === '{') && !this.props.noWizard
62
+ ? 'wizard'
63
+ : (0, SimpleCron_1.cron2state)(this.props.cron || '* * * * *')
64
+ ? 'simple'
65
+ : 'complex',
62
66
  };
63
67
  }
64
68
  handleCancel() {
@@ -72,25 +76,25 @@ class DialogCron extends react_1.default.Component {
72
76
  this.setState({ mode });
73
77
  }
74
78
  render() {
75
- return react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: "md", fullWidth: true, sx: { '& .MuiDialog-paper': styles.dialogPaper }, open: !0, "aria-labelledby": "cron-dialog-title" },
79
+ return (react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: "md", fullWidth: true, sx: { '& .MuiDialog-paper': styles.dialogPaper }, open: !0, "aria-labelledby": "cron-dialog-title" },
76
80
  react_1.default.createElement(material_1.DialogTitle, { id: "cron-dialog-title" }, this.props.title || i18n_1.default.t('ra_Define schedule...')),
77
81
  react_1.default.createElement(material_1.DialogContent, { style: { height: '100%', overflow: 'hidden' } },
78
- (this.props.simple && this.props.complex) || (!this.props.simple && !this.props.complex) ? react_1.default.createElement("div", null,
79
- !this.props.simple && !this.props.complex && !this.props.noWizard && react_1.default.createElement(react_1.default.Fragment, null,
82
+ (this.props.simple && this.props.complex) || (!this.props.simple && !this.props.complex) ? (react_1.default.createElement("div", null,
83
+ !this.props.simple && !this.props.complex && !this.props.noWizard && (react_1.default.createElement(react_1.default.Fragment, null,
80
84
  react_1.default.createElement(material_1.Radio, { key: "wizard", checked: this.state.mode === 'wizard', onChange: () => this.setMode('wizard') }),
81
- react_1.default.createElement("label", { onClick: () => this.setMode('wizard'), style: this.state.mode !== 'wizard' ? { color: 'lightgrey' } : {} }, i18n_1.default.t('sc_wizard'))),
82
- ((!this.props.simple && !this.props.complex) || this.props.simple) && react_1.default.createElement(react_1.default.Fragment, null,
85
+ react_1.default.createElement("label", { onClick: () => this.setMode('wizard'), style: this.state.mode !== 'wizard' ? { color: 'lightgrey' } : {} }, i18n_1.default.t('sc_wizard')))),
86
+ ((!this.props.simple && !this.props.complex) || this.props.simple) && (react_1.default.createElement(react_1.default.Fragment, null,
83
87
  react_1.default.createElement(material_1.Radio, { key: "simple", checked: this.state.mode === 'simple', onChange: () => this.setMode('simple') }),
84
- react_1.default.createElement("label", { onClick: () => this.setMode('simple'), style: this.state.mode !== 'simple' ? { color: 'lightgrey' } : {} }, i18n_1.default.t('sc_simple'))),
85
- ((!this.props.simple && !this.props.complex) || this.props.complex) && react_1.default.createElement(react_1.default.Fragment, null,
88
+ react_1.default.createElement("label", { onClick: () => this.setMode('simple'), style: this.state.mode !== 'simple' ? { color: 'lightgrey' } : {} }, i18n_1.default.t('sc_simple')))),
89
+ ((!this.props.simple && !this.props.complex) || this.props.complex) && (react_1.default.createElement(react_1.default.Fragment, null,
86
90
  react_1.default.createElement(material_1.Radio, { key: "complex", checked: this.state.mode === 'complex', onChange: () => this.setMode('complex') }),
87
- react_1.default.createElement("label", { onClick: () => this.setMode('complex'), style: this.state.mode !== 'complex' ? { color: 'lightgrey' } : {} }, i18n_1.default.t('sc_cron')))) : null,
88
- this.state.mode === 'simple' && react_1.default.createElement(SimpleCron_1.default, { cronExpression: this.state.cron, onChange: cron => this.setState({ cron }), language: i18n_1.default.getLanguage() }),
89
- this.state.mode === 'wizard' && react_1.default.createElement(Schedule_1.default, { theme: this.props.theme, schedule: this.state.cron, onChange: (cron) => this.setState({ cron }) }),
90
- this.state.mode === 'complex' && react_1.default.createElement(ComplexCron_1.default, { cronExpression: this.state.cron, onChange: cron => this.setState({ cron }), language: i18n_1.default.getLanguage() })),
91
+ react_1.default.createElement("label", { onClick: () => this.setMode('complex'), style: this.state.mode !== 'complex' ? { color: 'lightgrey' } : {} }, i18n_1.default.t('sc_cron')))))) : null,
92
+ this.state.mode === 'simple' && (react_1.default.createElement(SimpleCron_1.default, { cronExpression: this.state.cron, onChange: cron => this.setState({ cron }), language: i18n_1.default.getLanguage() })),
93
+ this.state.mode === 'wizard' && (react_1.default.createElement(Schedule_1.default, { theme: this.props.theme, schedule: this.state.cron, onChange: (cron) => this.setState({ cron }) })),
94
+ this.state.mode === 'complex' && (react_1.default.createElement(ComplexCron_1.default, { cronExpression: this.state.cron, onChange: cron => this.setState({ cron }), language: i18n_1.default.getLanguage() }))),
91
95
  react_1.default.createElement(material_1.DialogActions, null,
92
96
  react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => this.handleOk(), color: "primary", startIcon: react_1.default.createElement(icons_material_1.Check, null) }, this.props.ok || i18n_1.default.t('ra_Ok')),
93
- react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => this.handleCancel(), color: "grey", startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel'))));
97
+ react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => this.handleCancel(), color: "grey", startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel')))));
94
98
  }
95
99
  }
96
100
  exports.default = DialogCron;
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * MIT License
5
5
  *
6
- * */
7
- import React, { Component } from 'react';
6
+ */
7
+ import React, { Component, type JSX } from 'react';
8
8
  interface DialogErrorProps {
9
9
  title?: string;
10
10
  text: string | React.JSX.Element;
@@ -13,6 +13,6 @@ interface DialogErrorProps {
13
13
  }
14
14
  declare class DialogError extends Component<DialogErrorProps> {
15
15
  handleOk(): void;
16
- render(): React.JSX.Element;
16
+ render(): JSX.Element;
17
17
  }
18
18
  export default DialogError;
package/Dialogs/Error.js CHANGED
@@ -31,7 +31,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
31
31
  *
32
32
  * MIT License
33
33
  *
34
- * */
34
+ */
35
35
  // please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined
36
36
  const react_1 = __importStar(require("react"));
37
37
  const material_1 = require("@mui/material");
@@ -39,15 +39,17 @@ const icons_material_1 = require("@mui/icons-material");
39
39
  const i18n_1 = __importDefault(require("../i18n"));
40
40
  class DialogError extends react_1.Component {
41
41
  handleOk() {
42
- this.props.onClose && this.props.onClose();
42
+ if (this.props.onClose) {
43
+ this.props.onClose();
44
+ }
43
45
  }
44
46
  render() {
45
- return react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: "sm", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: () => this.handleOk(), "aria-labelledby": "alert-dialog-title", "aria-describedby": "alert-dialog-description" },
47
+ return (react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: "sm", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: () => this.handleOk(), "aria-labelledby": "alert-dialog-title", "aria-describedby": "alert-dialog-description" },
46
48
  react_1.default.createElement(material_1.DialogTitle, { id: "ar_alert_dialog_title" }, this.props.title || i18n_1.default.t('ra_Error')),
47
49
  react_1.default.createElement(material_1.DialogContent, null,
48
50
  react_1.default.createElement(material_1.DialogContentText, { id: "ar_alert_dialog_description" }, this.props.text || i18n_1.default.t('ra_Unknown error!'))),
49
51
  react_1.default.createElement(material_1.DialogActions, null,
50
- react_1.default.createElement(material_1.Button, { id: "ar_dialog_error_ok", variant: "contained", onClick: () => this.handleOk(), color: "primary", autoFocus: true, startIcon: react_1.default.createElement(icons_material_1.Check, null) }, i18n_1.default.t('ra_Ok'))));
52
+ react_1.default.createElement(material_1.Button, { id: "ar_dialog_error_ok", variant: "contained", onClick: () => this.handleOk(), color: "primary", autoFocus: true, startIcon: react_1.default.createElement(icons_material_1.Check, null) }, i18n_1.default.t('ra_Ok')))));
51
53
  }
52
54
  }
53
55
  exports.default = DialogError;
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * MIT License
5
5
  *
6
- * */
7
- import React, { Component } from 'react';
6
+ */
7
+ import React, { Component, type JSX } from 'react';
8
8
  interface DialogMessageProps {
9
9
  title?: string;
10
10
  text: string | React.JSX.Element;
@@ -15,6 +15,6 @@ interface DialogMessageProps {
15
15
  }
16
16
  declare class DialogMessage extends Component<DialogMessageProps> {
17
17
  handleOk(): void;
18
- render(): React.JSX.Element;
18
+ render(): JSX.Element;
19
19
  }
20
20
  export default DialogMessage;
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * MIT License
6
6
  *
7
- * */
7
+ */
8
8
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
9
  if (k2 === undefined) k2 = k;
10
10
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -39,17 +39,19 @@ const icons_material_1 = require("@mui/icons-material");
39
39
  const i18n_1 = __importDefault(require("../i18n"));
40
40
  class DialogMessage extends react_1.Component {
41
41
  handleOk() {
42
- this.props.onClose && this.props.onClose();
42
+ if (this.props.onClose) {
43
+ this.props.onClose();
44
+ }
43
45
  }
44
46
  render() {
45
- return react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: "sm", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: () => this.handleOk(), "aria-labelledby": "ar_dialog_message_title", "aria-describedby": "ar_dialog_message_description" },
47
+ return (react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: "sm", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: () => this.handleOk(), "aria-labelledby": "ar_dialog_message_title", "aria-describedby": "ar_dialog_message_description" },
46
48
  react_1.default.createElement(material_1.DialogTitle, { id: "ar_dialog_message_title" }, this.props.title || i18n_1.default.t('ra_Message')),
47
49
  react_1.default.createElement(material_1.DialogContent, null,
48
50
  react_1.default.createElement(material_1.DialogContentText, { id: "ar_dialog_message_description" },
49
51
  react_1.default.createElement("span", { style: { marginRight: this.props.icon ? 8 : 0 } }, this.props.icon || null),
50
52
  this.props.text)),
51
53
  react_1.default.createElement(material_1.DialogActions, null,
52
- react_1.default.createElement(material_1.Button, { id: "ar_dialog_message_ok", variant: "contained", onClick: () => this.handleOk(), color: "primary", autoFocus: true, startIcon: react_1.default.createElement(icons_material_1.Close, null) }, this.props.ok || i18n_1.default.t('ra_Close'))));
54
+ react_1.default.createElement(material_1.Button, { id: "ar_dialog_message_ok", variant: "contained", onClick: () => this.handleOk(), color: "primary", autoFocus: true, startIcon: react_1.default.createElement(icons_material_1.Close, null) }, this.props.ok || i18n_1.default.t('ra_Close')))));
53
55
  }
54
56
  }
55
57
  exports.default = DialogMessage;
@@ -1,6 +1,6 @@
1
- import React from 'react';
1
+ import React, { type JSX } from 'react';
2
2
  import type { Connection } from '@iobroker/socket-client';
3
- import { IobTheme } from '../types';
3
+ import type { IobTheme } from '../types';
4
4
  interface DialogSelectFileProps {
5
5
  /** where to store settings in localStorage * @property {string} [title] The dialog title; default: Please select object ID... (translated) */
6
6
  dialogName?: string;
@@ -10,7 +10,7 @@ interface DialogSelectFileProps {
10
10
  multiSelect?: boolean;
11
11
  /** Image prefix. Normally, admin has '../..' and the web has '../' */
12
12
  imagePrefix?: string;
13
- /** @deprectaed Image prefix */
13
+ /** @deprecated Image prefix */
14
14
  prefix?: string;
15
15
  /** Show the expert button? */
16
16
  showExpertButton?: boolean;
@@ -78,6 +78,6 @@ declare class DialogSelectFile extends React.Component<DialogSelectFileProps, Di
78
78
  constructor(props: DialogSelectFileProps);
79
79
  handleCancel(): void;
80
80
  handleOk(): void;
81
- render(): React.JSX.Element;
81
+ render(): JSX.Element;
82
82
  }
83
83
  export default DialogSelectFile;
@@ -55,7 +55,7 @@ class DialogSelectFile extends react_1.default.Component {
55
55
  try {
56
56
  this.filters = JSON.parse(filters);
57
57
  }
58
- catch (e) {
58
+ catch (_a) {
59
59
  this.filters = {};
60
60
  }
61
61
  if (props.filters) {
@@ -77,7 +77,9 @@ class DialogSelectFile extends react_1.default.Component {
77
77
  this.props.onClose();
78
78
  }
79
79
  handleOk() {
80
- this.props.onOk(this.props.multiSelect || !Array.isArray(this.state.selected) ? this.state.selected : this.state.selected[0] || '');
80
+ this.props.onOk(this.props.multiSelect || !Array.isArray(this.state.selected)
81
+ ? this.state.selected
82
+ : this.state.selected[0] || '');
81
83
  this.props.onClose();
82
84
  }
83
85
  render() {
@@ -103,7 +105,7 @@ class DialogSelectFile extends react_1.default.Component {
103
105
  else {
104
106
  title = this.props.title || i18n_1.default.t('ra_Please select file...');
105
107
  }
106
- return react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: false, sx: { '& .MuiDialog-paper': Object.assign(Object.assign({}, styles.dialog), styles.dialogMobile) }, fullWidth: true, open: !0, "aria-labelledby": "ar_dialog_selectfile_title" },
108
+ return (react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: false, sx: { '& .MuiDialog-paper': Object.assign(Object.assign({}, styles.dialog), styles.dialogMobile) }, fullWidth: true, open: !0, "aria-labelledby": "ar_dialog_selectfile_title" },
107
109
  react_1.default.createElement(material_1.DialogTitle, { id: "ar_dialog_selectfile_title", sx: { '&.MuiDialogTitle-root': styles.titleRoot } }, title),
108
110
  react_1.default.createElement(material_1.DialogContent, { style: Object.assign(Object.assign({}, styles.content), styles.contentMobile) },
109
111
  react_1.default.createElement(FileBrowser_1.default, { ready: true, imagePrefix: this.props.imagePrefix || this.props.prefix || '../', allowUpload: !!this.props.allowUpload, allowDownload: this.props.allowDownload !== false, allowCreateFolder: !!this.props.allowCreateFolder, allowDelete: !!this.props.allowDelete, allowView: this.props.allowView !== false, showViewTypeButton: this.props.showViewTypeButton !== false, showToolbar: this.props.showToolbar !== false, limitPath: this.props.limitPath, filterFiles: this.props.filterFiles, filterByType: this.props.filterByType, selected: this.props.selected, restrictToFolder: this.props.restrictToFolder, allowNonRestricted: this.props.allowNonRestricted, onSelect: (selected, isDoubleClick, isFolder) => {
@@ -111,7 +113,7 @@ class DialogSelectFile extends react_1.default.Component {
111
113
  }, t: this.props.t || i18n_1.default.t, lang: this.props.lang || i18n_1.default.getLanguage(), socket: this.props.socket, themeType: this.props.themeType, themeName: this.props.themeName, theme: this.props.theme, showExpertButton: this.props.showExpertButton, expertMode: this.props.expertMode, showTypeSelector: this.props.showTypeSelector })),
112
114
  react_1.default.createElement(material_1.DialogActions, null,
113
115
  react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => this.handleOk(), startIcon: react_1.default.createElement(icons_material_1.Check, null), disabled: !this.state.selected.length, color: "primary" }, this.props.ok || i18n_1.default.t('ra_Ok')),
114
- react_1.default.createElement(material_1.Button, { color: "grey", variant: "contained", onClick: () => this.handleCancel(), startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel'))));
116
+ react_1.default.createElement(material_1.Button, { color: "grey", variant: "contained", onClick: () => this.handleCancel(), startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel')))));
115
117
  }
116
118
  }
117
119
  exports.default = DialogSelectFile;
@@ -3,11 +3,11 @@
3
3
  *
4
4
  * MIT License
5
5
  *
6
- * */
7
- import React, { Component } from 'react';
6
+ */
7
+ import { Component, type JSX } from 'react';
8
8
  import type Connection from '../Connection';
9
- import { ObjectBrowserColumn, ObjectBrowserCustomFilter, ObjectBrowserType } from '../Components/types';
10
- import { IobTheme } from '../types';
9
+ import type { ObjectBrowserColumn, ObjectBrowserCustomFilter, ObjectBrowserType } from '../Components/types';
10
+ import type { IobTheme } from '../types';
11
11
  export interface SelectIDFilters {
12
12
  id?: string;
13
13
  name?: string;
@@ -28,7 +28,7 @@ interface DialogSelectIDProps {
28
28
  foldersFirst?: boolean;
29
29
  /** Path prefix for images (default: '.') */
30
30
  imagePrefix?: string;
31
- /** @deprecated: same as imagePrefix */
31
+ /** @deprecated same as imagePrefix */
32
32
  prefix?: string;
33
33
  /** Show the expert button */
34
34
  showExpertButton?: boolean;
@@ -66,10 +66,12 @@ interface DialogSelectIDProps {
66
66
  onClose: () => void;
67
67
  /** Handler that is called when the user presses OK. */
68
68
  onOk: (selected: string | string[] | undefined, name: string) => void;
69
- /** Function to filter out all unnecessary objects. Can be string or function.
70
- It cannot be used together with "types".
71
- Example for function: `obj => obj.common?.type === 'boolean'` to show only boolean states
72
- In case of string, it must look like `obj.common && obj.common.type === 'boolean'` */
69
+ /**
70
+ * Function to filter out all unnecessary objects. Can be string or function.
71
+ * It cannot be used together with "types".
72
+ * Example for function: `obj => obj.common?.type === 'boolean'` to show only boolean states
73
+ * In case of string, it must look like `obj.common && obj.common.type === 'boolean'`
74
+ */
73
75
  filterFunc?: string | ((obj: ioBroker.Object) => boolean);
74
76
  /** predefined filter fields, like {"id":"","name":"","room":"","func":"","role":"level","type":"","custom":""} */
75
77
  filters?: SelectIDFilters;
@@ -87,6 +89,6 @@ declare class DialogSelectID extends Component<DialogSelectIDProps, DialogSelect
87
89
  constructor(props: DialogSelectIDProps);
88
90
  handleCancel(): void;
89
91
  handleOk(): void;
90
- render(): React.JSX.Element;
92
+ render(): JSX.Element;
91
93
  }
92
94
  export default DialogSelectID;
@@ -31,7 +31,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
31
31
  *
32
32
  * MIT License
33
33
  *
34
- * */
34
+ */
35
35
  // please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined
36
36
  const react_1 = __importStar(require("react"));
37
37
  const material_1 = require("@mui/material");
@@ -47,7 +47,7 @@ class DialogSelectID extends react_1.Component {
47
47
  try {
48
48
  this.filters = JSON.parse(filters);
49
49
  }
50
- catch (e) {
50
+ catch (_a) {
51
51
  this.filters = {};
52
52
  }
53
53
  if (props.filters) {
@@ -61,10 +61,9 @@ class DialogSelectID extends react_1.Component {
61
61
  if (props.filterFunc) {
62
62
  if (typeof props.filterFunc === 'string') {
63
63
  try {
64
- // eslint-disable-next-line no-new-func
65
64
  this.filterFunc = new Function('obj', props.filterFunc);
66
65
  }
67
- catch (e) {
66
+ catch (_b) {
68
67
  console.error(`Cannot parse filter function: "obj => ${props.filterFunc}"`);
69
68
  this.filterFunc = undefined;
70
69
  }
@@ -93,7 +92,8 @@ class DialogSelectID extends react_1.Component {
93
92
  react_1.default.createElement("span", { key: "selected" },
94
93
  i18n_1.default.t('ra_Selected'),
95
94
  "\u00A0"),
96
- react_1.default.createElement("span", { key: "id", style: { fontWeight: 'bold', fontStyle: 'italic' } }, (this.state.name || this.state.selected) + (this.state.name ? ` [${this.state.selected}]` : '')),
95
+ react_1.default.createElement("span", { key: "id", style: { fontWeight: 'bold', fontStyle: 'italic' } }, (this.state.name || this.state.selected[0]) +
96
+ (this.state.name ? ` [${this.state.selected[0]}]` : '')),
97
97
  ];
98
98
  }
99
99
  else {
@@ -108,7 +108,7 @@ class DialogSelectID extends react_1.Component {
108
108
  else {
109
109
  title = this.props.title || i18n_1.default.t('ra_Please select object ID...');
110
110
  }
111
- return react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: false, sx: {
111
+ return (react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: false, sx: {
112
112
  '& .MuiDialog-paper': {
113
113
  height: '95%',
114
114
  p: '4px',
@@ -131,7 +131,11 @@ class DialogSelectID extends react_1.Component {
131
131
  } },
132
132
  react_1.default.createElement(ObjectBrowser_1.default, { foldersFirst: this.props.foldersFirst, imagePrefix: this.props.imagePrefix || this.props.prefix, dateFormat: this.props.dateFormat, defaultFilters: this.filters, dialogName: this.dialogName, isFloatComma: this.props.isFloatComma, showExpertButton: this.props.showExpertButton !== undefined ? this.props.showExpertButton : true, expertMode: this.props.expertMode,
133
133
  // style={{ width: '100%', height: '100%' }}
134
- columns: this.props.columns || ['name', 'type', 'role', 'room', 'func', 'val'], types: this.props.types ? (Array.isArray(this.props.types) ? this.props.types : [this.props.types]) : ['state'], root: this.props.root, t: i18n_1.default.t, lang: this.props.lang || i18n_1.default.getLanguage(), socket: this.props.socket, selected: this.state.selected, multiSelect: this.props.multiSelect, notEditable: this.props.notEditable === undefined ? true : this.props.notEditable,
134
+ columns: this.props.columns || ['name', 'type', 'role', 'room', 'func', 'val'], types: this.props.types
135
+ ? Array.isArray(this.props.types)
136
+ ? this.props.types
137
+ : [this.props.types]
138
+ : ['state'], root: this.props.root, t: i18n_1.default.t, lang: this.props.lang || i18n_1.default.getLanguage(), socket: this.props.socket, selected: this.state.selected, multiSelect: this.props.multiSelect, notEditable: this.props.notEditable === undefined ? true : this.props.notEditable,
135
139
  // name={this.state.name}
136
140
  themeName: this.props.themeName, themeType: this.props.themeType, theme: this.props.theme, customFilter: this.props.customFilter, onFilterChanged: (filterConfig) => {
137
141
  this.filters = filterConfig;
@@ -153,7 +157,7 @@ class DialogSelectID extends react_1.Component {
153
157
  }, filterFunc: this.filterFunc, title: "", classes: {} })),
154
158
  react_1.default.createElement(material_1.DialogActions, null,
155
159
  react_1.default.createElement(material_1.Button, { id: `ar_dialog_selectid_ok_${this.props.dialogName || ''}`, variant: "contained", onClick: () => this.handleOk(), startIcon: react_1.default.createElement(icons_material_1.Check, null), disabled: !this.state.selected.length, color: "primary" }, this.props.ok || i18n_1.default.t('ra_Ok')),
156
- react_1.default.createElement(material_1.Button, { id: `ar_dialog_selectid_cancel_${this.props.dialogName || ''}`, color: "grey", variant: "contained", onClick: () => this.handleCancel(), startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel'))));
160
+ react_1.default.createElement(material_1.Button, { id: `ar_dialog_selectid_cancel_${this.props.dialogName || ''}`, color: "grey", variant: "contained", onClick: () => this.handleCancel(), startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel')))));
157
161
  }
158
162
  }
159
163
  exports.default = DialogSelectID;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { type JSX } from 'react';
2
2
  interface DialogCronProps {
3
3
  onClose: () => void;
4
4
  onOk: (cron: string) => void;
@@ -14,6 +14,6 @@ declare class DialogSimpleCron extends React.Component<DialogCronProps, DialogCr
14
14
  constructor(props: DialogCronProps);
15
15
  handleCancel(): void;
16
16
  handleOk(): void;
17
- render(): React.JSX.Element;
17
+ render(): JSX.Element;
18
18
  }
19
19
  export default DialogSimpleCron;
@@ -39,13 +39,13 @@ class DialogSimpleCron extends react_1.default.Component {
39
39
  this.props.onClose();
40
40
  }
41
41
  render() {
42
- return react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: "md", fullWidth: true, sx: { '& .MuiDialog-paper': styles.dialogPaper }, open: !0, "aria-labelledby": "cron-dialog-title" },
42
+ return (react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: "md", fullWidth: true, sx: { '& .MuiDialog-paper': styles.dialogPaper }, open: !0, "aria-labelledby": "cron-dialog-title" },
43
43
  react_1.default.createElement(material_1.DialogTitle, { id: "cron-dialog-title" }, this.props.title || i18n_1.default.t('ra_Define CRON...')),
44
44
  react_1.default.createElement(material_1.DialogContent, { style: { height: '100%', overflow: 'hidden' } },
45
45
  react_1.default.createElement(SimpleCron_1.default, { cronExpression: this.state.cron, onChange: cron => this.setState({ cron }), language: i18n_1.default.getLanguage() })),
46
46
  react_1.default.createElement(material_1.DialogActions, null,
47
47
  react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => this.handleOk(), color: "primary", startIcon: react_1.default.createElement(icons_material_1.Check, null) }, this.props.ok || i18n_1.default.t('ra_Ok')),
48
- react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => this.handleCancel(), color: "grey", startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel'))));
48
+ react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => this.handleCancel(), color: "grey", startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel')))));
49
49
  }
50
50
  }
51
51
  exports.default = DialogSimpleCron;
@@ -1,3 +1,3 @@
1
- import React from 'react';
2
- declare const _default: (props: Record<string, any>) => React.JSX.Element;
1
+ import { type JSX } from 'react';
2
+ declare const _default: (props: Record<string, any>) => JSX.Element /** The text replacement callback */;
3
3
  export default _default;
@@ -11,11 +11,11 @@ const withWidth_1 = __importDefault(require("../Components/withWidth"));
11
11
  function TextInput(props) {
12
12
  const [text, setText] = react_1.default.useState(props.input || props.value || '');
13
13
  const [error, setError] = react_1.default.useState('');
14
- return react_1.default.createElement(material_1.Dialog, { open: !0, onClose: () => props.onClose(null), "aria-labelledby": "form-dialog-title", fullWidth: props.fullWidth !== undefined ? props.fullWidth : false },
14
+ return (react_1.default.createElement(material_1.Dialog, { open: !0, onClose: () => props.onClose(null), "aria-labelledby": "form-dialog-title", fullWidth: props.fullWidth !== undefined ? props.fullWidth : false },
15
15
  react_1.default.createElement(material_1.DialogTitle, { id: "form-dialog-title" }, props.titleText),
16
16
  react_1.default.createElement(material_1.DialogContent, null,
17
17
  react_1.default.createElement(material_1.DialogContentText, null, props.promptText),
18
- react_1.default.createElement(material_1.TextField, { variant: "standard", autoFocus: true, margin: "dense", error: !!error, helperText: error === true || !error ? '' : error, value: text, label: props.labelText || '', type: props.type || 'text', onKeyUp: e => e.charCode === 13 && text && props.onClose(text), onChange: e => {
18
+ react_1.default.createElement(material_1.TextField, { variant: "standard", autoFocus: true, margin: "dense", error: !!error, helperText: error === true || !error ? '' : error, value: text, label: props.labelText || '', type: props.type || 'text', onKeyUp: e => e.code === 'Enter' && text && props.onClose(text), onChange: e => {
19
19
  let _error = '';
20
20
  if (props.verify) {
21
21
  _error = !props.verify(e.target.value);
@@ -30,6 +30,6 @@ function TextInput(props) {
30
30
  }, fullWidth: true })),
31
31
  react_1.default.createElement(material_1.DialogActions, null,
32
32
  react_1.default.createElement(material_1.Button, { variant: "contained", disabled: !text || !!error, onClick: () => props.onClose(text), color: "primary", startIcon: react_1.default.createElement(icons_material_1.Check, null) }, props.applyText || i18n_1.default.t('ra_Ok')),
33
- react_1.default.createElement(material_1.Button, { color: "grey", variant: "contained", onClick: () => props.onClose(null), startIcon: react_1.default.createElement(icons_material_1.Close, null) }, props.cancelText || i18n_1.default.t('ra_Cancel'))));
33
+ react_1.default.createElement(material_1.Button, { color: "grey", variant: "contained", onClick: () => props.onClose(null), startIcon: react_1.default.createElement(icons_material_1.Close, null) }, props.cancelText || i18n_1.default.t('ra_Cancel')))));
34
34
  }
35
35
  exports.default = (0, withWidth_1.default)()(TextInput);
package/GenericApp.d.ts CHANGED
@@ -3,11 +3,11 @@
3
3
  *
4
4
  * MIT License
5
5
  *
6
- * */
7
- import React from 'react';
8
- import { AdminConnection } from '@iobroker/socket-client';
6
+ */
7
+ import React, { type JSX } from 'react';
8
+ import { type AdminConnection } from '@iobroker/socket-client';
9
9
  import Router from './Components/Router';
10
- import { GenericAppProps, GenericAppState, GenericAppSettings, ThemeName, ThemeType, IobTheme, Width } from './types';
10
+ import type { GenericAppProps, GenericAppState, GenericAppSettings, ThemeName, ThemeType, IobTheme, Width } from './types';
11
11
  declare global {
12
12
  /** If config has been changed */
13
13
  var changed: boolean;
@@ -42,11 +42,12 @@ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TStat
42
42
  constructor(props: TProps, settings?: GenericAppSettings);
43
43
  /**
44
44
  * Checks if this connection is running in a web adapter and not in an admin.
45
+ *
45
46
  * @returns True if running in a web adapter or in a socketio adapter.
46
47
  */
47
48
  static isWeb(): boolean;
48
49
  showAlert(message: string, type?: 'info' | 'warning' | 'error' | 'success'): void;
49
- renderAlertSnackbar(): React.JSX.Element;
50
+ renderAlertSnackbar(): JSX.Element;
50
51
  onSystemConfigChanged: (id: string, obj: ioBroker.AnyObject | null | undefined) => void;
51
52
  /**
52
53
  * Called immediately after a component is mounted. Setting state here will trigger re-rendering.
@@ -62,14 +63,14 @@ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TStat
62
63
  private onResize;
63
64
  /**
64
65
  * Gets the width depending on the window inner width.
65
- * @returns {import('./types').Width}
66
66
  */
67
67
  static getWidth(): Width;
68
68
  /**
69
69
  * Get a theme
70
+ *
70
71
  * @param name Theme name
71
72
  */
72
- createTheme(name?: ThemeName | null | undefined): IobTheme;
73
+ createTheme(name?: ThemeName | null): IobTheme;
73
74
  /**
74
75
  * Get the theme name
75
76
  */
@@ -82,11 +83,10 @@ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TStat
82
83
  onToggleExpertMode(_expertMode: boolean): void;
83
84
  /**
84
85
  * Changes the current theme
85
- * */
86
+ */
86
87
  toggleTheme(newThemeName?: ThemeName): void;
87
88
  /**
88
89
  * Gets the system configuration.
89
- * @returns {Promise<ioBroker.OtherObject>}
90
90
  */
91
91
  getSystemConfig(): Promise<ioBroker.SystemConfigObject>;
92
92
  /**
@@ -123,12 +123,13 @@ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TStat
123
123
  /**
124
124
  * Gets called after the settings are loaded.
125
125
  * You may override this if needed.
126
+ *
127
+ * @param settings instance settings from native part
126
128
  * @param encryptedNative optional list of fields to be decrypted
127
129
  */
128
130
  onPrepareLoad(settings: Record<string, any>, encryptedNative?: string[]): void;
129
131
  /**
130
132
  * Gets the extendable instances.
131
- * @returns {Promise<any[]>}
132
133
  */
133
134
  getExtendableInstances(): Promise<ioBroker.InstanceObject[]>;
134
135
  /**
@@ -141,13 +142,14 @@ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TStat
141
142
  }[]>;
142
143
  /**
143
144
  * Saves the settings to the server.
145
+ *
144
146
  * @param isClose True if the user is closing the dialog.
145
147
  */
146
148
  onSave(isClose?: boolean): void;
147
149
  /**
148
150
  * Renders the toast.
149
151
  */
150
- renderToast(): React.JSX.Element;
152
+ renderToast(): JSX.Element | null;
151
153
  /**
152
154
  * Closes the dialog.
153
155
  */
@@ -158,11 +160,13 @@ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TStat
158
160
  renderError(): React.JSX.Element | null;
159
161
  /**
160
162
  * Checks if the configuration has changed.
161
- * @param {Record<string, any>} [native] the new state
163
+ *
164
+ * @param native the new state
162
165
  */
163
166
  getIsChanged(native: Record<string, any>): boolean;
164
167
  /**
165
168
  * Gets called when loading the configuration.
169
+ *
166
170
  * @param newNative The new configuration object.
167
171
  */
168
172
  onLoadConfig(newNative: Record<string, any>): void;
@@ -177,6 +181,7 @@ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TStat
177
181
  private _updateNativeValue;
178
182
  /**
179
183
  * Update the native value
184
+ *
180
185
  * @param attr The attribute name with dots as delimiter.
181
186
  * @param value The new value.
182
187
  * @param cb Callback which will be called upon completion.
@@ -188,7 +193,8 @@ declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TStat
188
193
  showError(text: string | React.JSX.Element): void;
189
194
  /**
190
195
  * Sets the toast to be shown.
191
- * @param {string} toast
196
+ *
197
+ * @param toast Text to be shown.
192
198
  */
193
199
  showToast(toast: string | React.JSX.Element): void;
194
200
  /**