@iobroker/adapter-react-v5 7.0.2 → 7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/Components/404.d.ts +3 -2
  2. package/Components/404.js +3 -2
  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 +135 -152
  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 +21 -18
  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 +20 -7
  26. package/Components/Loaders/Vendor.d.ts +2 -2
  27. package/Components/Loaders/Vendor.js +15 -7
  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 +40 -39
  32. package/Components/ObjectBrowser.js +550 -435
  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 +25 -21
  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 +128 -85
  79. package/LegacyConnection.d.ts +240 -248
  80. package/LegacyConnection.js +500 -525
  81. package/README.md +1264 -1171
  82. package/Theme.d.ts +1 -1
  83. package/Theme.js +9 -12
  84. package/assets/devices.json +1 -0
  85. package/assets/rooms.json +1 -0
  86. package/craco-module-federation.js +3 -12
  87. package/i18n/de.json +434 -434
  88. package/i18n/en.json +434 -434
  89. package/i18n/es.json +434 -434
  90. package/i18n/fr.json +434 -434
  91. package/i18n/it.json +434 -434
  92. package/i18n/nl.json +434 -434
  93. package/i18n/pl.json +434 -434
  94. package/i18n/pt.json +434 -434
  95. package/i18n/ru.json +434 -434
  96. package/i18n/uk.json +434 -434
  97. package/i18n/zh-cn.json +434 -434
  98. package/i18n.d.ts +26 -19
  99. package/i18n.js +28 -22
  100. package/icons/IconAdapter.js +2 -2
  101. package/icons/IconAlias.js +2 -2
  102. package/icons/IconChannel.js +2 -2
  103. package/icons/IconClearFilter.js +2 -2
  104. package/icons/IconClosed.js +2 -2
  105. package/icons/IconCopy.js +2 -2
  106. package/icons/IconDevice.js +2 -2
  107. package/icons/IconDocument.js +2 -2
  108. package/icons/IconDocumentReadOnly.js +2 -2
  109. package/icons/IconExpert.js +2 -2
  110. package/icons/IconFx.js +2 -2
  111. package/icons/IconInstance.js +2 -2
  112. package/icons/IconLogout.js +2 -2
  113. package/icons/IconNoIcon.js +2 -2
  114. package/icons/IconOpen.d.ts +2 -2
  115. package/icons/IconOpen.js +2 -2
  116. package/icons/IconProps.d.ts +4 -3
  117. package/icons/IconState.d.ts +2 -2
  118. package/icons/IconState.js +2 -2
  119. package/index.css +3 -2
  120. package/package.json +4 -4
  121. package/src/Components/404.tsx +32 -31
  122. package/src/Components/ColorPicker.tsx +142 -114
  123. package/src/Components/ComplexCron.tsx +174 -137
  124. package/src/Components/CopyToClipboard.tsx +22 -9
  125. package/src/Components/CustomModal.tsx +76 -69
  126. package/src/Components/FileBrowser.tsx +959 -852
  127. package/src/Components/FileViewer.tsx +146 -127
  128. package/src/Components/Icon.tsx +80 -52
  129. package/src/Components/IconPicker.tsx +83 -67
  130. package/src/Components/IconSelector.tsx +159 -141
  131. package/src/Components/Image.tsx +43 -26
  132. package/src/Components/Loader.tsx +56 -32
  133. package/src/Components/Logo.tsx +62 -52
  134. package/src/Components/MDUtils.tsx +10 -6
  135. package/src/Components/ObjectBrowser.tsx +3198 -2478
  136. package/src/Components/Router.tsx +11 -11
  137. package/src/Components/SaveCloseButtons.tsx +43 -39
  138. package/src/Components/Schedule.tsx +1091 -853
  139. package/src/Components/SelectWithIcon.tsx +135 -93
  140. package/src/Components/TabContainer.tsx +22 -20
  141. package/src/Components/TabContent.tsx +13 -12
  142. package/src/Components/TabHeader.tsx +10 -9
  143. package/src/Components/TableResize.tsx +52 -37
  144. package/src/Components/TextWithIcon.tsx +30 -19
  145. package/src/Components/ToggleThemeMenu.tsx +31 -13
  146. package/src/Components/TreeTable.tsx +468 -385
  147. package/src/Components/UploadImage.tsx +153 -121
  148. package/src/Components/Utils.tsx +135 -127
  149. package/src/Components/loader.css +40 -31
  150. package/src/Components/withWidth.tsx +23 -12
  151. package/src/Connection.tsx +1 -3
  152. package/src/Dialogs/ComplexCron.tsx +55 -61
  153. package/src/Dialogs/Confirm.tsx +88 -65
  154. package/src/Dialogs/Cron.tsx +122 -112
  155. package/src/Dialogs/Error.tsx +37 -42
  156. package/src/Dialogs/Message.tsx +39 -37
  157. package/src/Dialogs/SelectFile.tsx +95 -85
  158. package/src/Dialogs/SelectID.tsx +141 -129
  159. package/src/Dialogs/SimpleCron.tsx +44 -44
  160. package/src/Dialogs/TextInput.tsx +60 -68
  161. package/src/GenericApp.tsx +342 -242
  162. package/src/LegacyConnection.tsx +972 -842
  163. package/src/Prompt.tsx +3 -1
  164. package/src/Theme.tsx +19 -26
  165. package/src/icons/IconAdapter.tsx +16 -14
  166. package/src/icons/IconAlias.tsx +16 -14
  167. package/src/icons/IconChannel.tsx +55 -16
  168. package/src/icons/IconClearFilter.tsx +17 -15
  169. package/src/icons/IconClosed.tsx +16 -11
  170. package/src/icons/IconCopy.tsx +16 -11
  171. package/src/icons/IconDevice.tsx +121 -22
  172. package/src/icons/IconDocument.tsx +16 -11
  173. package/src/icons/IconDocumentReadOnly.tsx +21 -12
  174. package/src/icons/IconExpert.tsx +20 -12
  175. package/src/icons/IconFx.tsx +16 -14
  176. package/src/icons/IconInstance.tsx +16 -14
  177. package/src/icons/IconLogout.tsx +20 -18
  178. package/src/icons/IconNoIcon.tsx +16 -14
  179. package/src/icons/IconOpen.tsx +17 -12
  180. package/src/icons/IconProps.tsx +4 -3
  181. package/src/icons/IconState.tsx +34 -13
  182. package/src/index.css +3 -2
  183. package/tasks.js +91 -0
  184. package/types.d.ts +141 -0
  185. package/Components/Loaders/PT.css +0 -109
  186. package/Components/Loaders/Vendor.css +0 -13
  187. package/Components/loader.css +0 -222
  188. package/Components/types.d.ts +0 -82
  189. package/assets/devices/Alarm Systems.svg +0 -19
  190. package/assets/devices/Amplifier.svg +0 -22
  191. package/assets/devices/Awnings.svg +0 -5
  192. package/assets/devices/Battery Status.svg +0 -5
  193. package/assets/devices/Ceiling Spotlights.svg +0 -16
  194. package/assets/devices/Chandelier.svg +0 -7
  195. package/assets/devices/Climate.svg +0 -12
  196. package/assets/devices/Coffee Makers.svg +0 -6
  197. package/assets/devices/Cold Water.svg +0 -31
  198. package/assets/devices/Computer.svg +0 -21
  199. package/assets/devices/Consumption.svg +0 -8
  200. package/assets/devices/Curtains.svg +0 -43
  201. package/assets/devices/Dishwashers.svg +0 -12
  202. package/assets/devices/Doors.svg +0 -6
  203. package/assets/devices/Doorstep.svg +0 -35
  204. package/assets/devices/Dryer.svg +0 -14
  205. package/assets/devices/Fan.svg +0 -20
  206. package/assets/devices/Floor Lamps.svg +0 -5
  207. package/assets/devices/Garage Doors.svg +0 -9
  208. package/assets/devices/Gates.svg +0 -32
  209. package/assets/devices/Hairdryer.svg +0 -23
  210. package/assets/devices/Handle.svg +0 -6
  211. package/assets/devices/Hanging Lamps.svg +0 -9
  212. package/assets/devices/Heater.svg +0 -44
  213. package/assets/devices/Hoods.svg +0 -12
  214. package/assets/devices/Hot Water.svg +0 -10
  215. package/assets/devices/Humidity.svg +0 -41
  216. package/assets/devices/Iron.svg +0 -5
  217. package/assets/devices/Irrigation.svg +0 -23
  218. package/assets/devices/Led Strip.svg +0 -31
  219. package/assets/devices/Light.svg +0 -30
  220. package/assets/devices/Lightings.svg +0 -46
  221. package/assets/devices/Lock.svg +0 -19
  222. package/assets/devices/Louvre.svg +0 -7
  223. package/assets/devices/Mowing Machine.svg +0 -9
  224. package/assets/devices/Music.svg +0 -13
  225. package/assets/devices/Outdoor Blinds.svg +0 -7
  226. package/assets/devices/People.svg +0 -19
  227. package/assets/devices/Pool.svg +0 -8
  228. package/assets/devices/Power Consumption.svg +0 -13
  229. package/assets/devices/Printer.svg +0 -10
  230. package/assets/devices/Pump.svg +0 -10
  231. package/assets/devices/Receiver.svg +0 -19
  232. package/assets/devices/Sconces.svg +0 -10
  233. package/assets/devices/Security.svg +0 -34
  234. package/assets/devices/Shading.svg +0 -5
  235. package/assets/devices/Shutters.svg +0 -11
  236. package/assets/devices/SmokeDetector.svg +0 -13
  237. package/assets/devices/Sockets.svg +0 -13
  238. package/assets/devices/Speaker.svg +0 -35
  239. package/assets/devices/Stove.svg +0 -12
  240. package/assets/devices/Table Lamps.svg +0 -12
  241. package/assets/devices/Temperature Sensors.svg +0 -28
  242. package/assets/devices/Tv.svg +0 -8
  243. package/assets/devices/Vacuum Cleaner.svg +0 -16
  244. package/assets/devices/Ventilation.svg +0 -12
  245. package/assets/devices/Washing Machines.svg +0 -16
  246. package/assets/devices/Water Consumption.svg +0 -6
  247. package/assets/devices/Water Heater.svg +0 -8
  248. package/assets/devices/Water.svg +0 -40
  249. package/assets/devices/Weather.svg +0 -28
  250. package/assets/devices/Window.svg +0 -8
  251. package/assets/rooms/Anteroom.svg +0 -53
  252. package/assets/rooms/Attic.svg +0 -21
  253. package/assets/rooms/Balcony.svg +0 -13
  254. package/assets/rooms/Barn.svg +0 -6
  255. package/assets/rooms/Basement.svg +0 -5
  256. package/assets/rooms/Bathroom.svg +0 -38
  257. package/assets/rooms/Bedroom.svg +0 -5
  258. package/assets/rooms/Boiler Room.svg +0 -13
  259. package/assets/rooms/Carport.svg +0 -17
  260. package/assets/rooms/Cellar.svg +0 -89
  261. package/assets/rooms/Chamber.svg +0 -9
  262. package/assets/rooms/Corridor.svg +0 -53
  263. package/assets/rooms/Dining Area.svg +0 -37
  264. package/assets/rooms/Dining Room.svg +0 -37
  265. package/assets/rooms/Dining.svg +0 -37
  266. package/assets/rooms/Dressing Room.svg +0 -5
  267. package/assets/rooms/Driveway.svg +0 -15
  268. package/assets/rooms/Entrance.svg +0 -44
  269. package/assets/rooms/Equipment Room.svg +0 -15
  270. package/assets/rooms/Front Yard.svg +0 -64
  271. package/assets/rooms/Gallery.svg +0 -14
  272. package/assets/rooms/Garage.svg +0 -20
  273. package/assets/rooms/Garden.svg +0 -13
  274. package/assets/rooms/Ground Floor.svg +0 -95
  275. package/assets/rooms/Guest Bathroom.svg +0 -33
  276. package/assets/rooms/Guest Room.svg +0 -5
  277. package/assets/rooms/Gym.svg +0 -5
  278. package/assets/rooms/Hall.svg +0 -19
  279. package/assets/rooms/Home Theater.svg +0 -8
  280. package/assets/rooms/Kitchen.svg +0 -18
  281. package/assets/rooms/Laundry Room.svg +0 -12
  282. package/assets/rooms/Living Area.svg +0 -11
  283. package/assets/rooms/Living Room.svg +0 -10
  284. package/assets/rooms/Locker Room.svg +0 -17
  285. package/assets/rooms/Nursery.svg +0 -5
  286. package/assets/rooms/Office.svg +0 -8
  287. package/assets/rooms/Outdoors.svg +0 -7
  288. package/assets/rooms/Playroom.svg +0 -6
  289. package/assets/rooms/Pool.svg +0 -8
  290. package/assets/rooms/Rear Wall.svg +0 -30
  291. package/assets/rooms/Second Floor.svg +0 -95
  292. package/assets/rooms/Shed.svg +0 -16
  293. package/assets/rooms/Sleeping Area.svg +0 -22
  294. package/assets/rooms/Stairway.svg +0 -5
  295. package/assets/rooms/Stairwell.svg +0 -15
  296. package/assets/rooms/Storeroom.svg +0 -5
  297. package/assets/rooms/Summer House.svg +0 -27
  298. package/assets/rooms/Swimming Pool.svg +0 -21
  299. package/assets/rooms/Terrace.svg +0 -7
  300. package/assets/rooms/Toilet.svg +0 -10
  301. package/assets/rooms/Upstairs.svg +0 -6
  302. package/assets/rooms/Wardrobe.svg +0 -60
  303. package/assets/rooms/Washroom.svg +0 -20
  304. package/assets/rooms/Wc.svg +0 -10
  305. package/assets/rooms/Windscreen.svg +0 -60
  306. package/assets/rooms/Workshop.svg +0 -23
  307. package/assets/rooms/Workspace.svg +0 -8
@@ -5,10 +5,12 @@
5
5
  *
6
6
  **/
7
7
 
8
- .logo-background-light, .logo-background-colored {
8
+ .logo-background-light,
9
+ .logo-background-colored {
9
10
  background: white;
10
11
  }
11
- .logo-background-dark, .logo-background-blue {
12
+ .logo-background-dark,
13
+ .logo-background-blue {
12
14
  background: black;
13
15
  }
14
16
  .logo-div {
@@ -16,15 +18,15 @@
16
18
  top: 50%;
17
19
  left: 50%;
18
20
  -ms-transform: translateX(-50%) translateY(-50%);
19
- -webkit-transform: translate(-50%,-50%);
20
- transform: translate(-50%,-50%);
21
+ -webkit-transform: translate(-50%, -50%);
22
+ transform: translate(-50%, -50%);
21
23
  overflow: hidden;
22
24
  border-radius: 50%;
23
25
  z-index: 2;
24
26
  }
25
27
  .logo-border {
26
28
  /*border-color: #164477;*/
27
- border-top-color: #3399CC;
29
+ border-top-color: #3399cc;
28
30
  border-left-color: #164477;
29
31
  border-bottom-color: #164477;
30
32
  border-right-color: #164477;
@@ -48,14 +50,14 @@
48
50
  height: 60%;
49
51
  top: 20%;
50
52
  left: 42%;
51
- background: #3399CC;
53
+ background: #3399cc;
52
54
  }
53
55
  .logo-i-top {
54
56
  position: absolute;
55
57
  width: 14.5%;
56
58
  height: 4%;
57
59
  left: 42%;
58
- background: #3399CC;
60
+ background: #3399cc;
59
61
  border-radius: 100%;
60
62
  }
61
63
  .logo-back {
@@ -68,13 +70,13 @@
68
70
  0% {
69
71
  width: 230px;
70
72
  height: 230px;
71
- transform: translate(-50%,-50%) scale(1);
72
- opacity: 1
73
+ transform: translate(-50%, -50%) scale(1);
74
+ opacity: 1;
73
75
  }
74
76
  99% {
75
77
  width: 230px;
76
78
  height: 230px;
77
- transform: translate(-50%,-50%) scale(10);
79
+ transform: translate(-50%, -50%) scale(10);
78
80
  opacity: 0;
79
81
  }
80
82
  100% {
@@ -83,13 +85,18 @@
83
85
  opacity: 0;
84
86
  }
85
87
  }
86
- @keyframes logo-spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } }
88
+ @keyframes logo-spin {
89
+ 100% {
90
+ -webkit-transform: rotate(360deg);
91
+ transform: rotate(360deg);
92
+ }
93
+ }
87
94
  @keyframes logo-color-inside-light {
88
95
  0% {
89
- background: #FEFEFE;
96
+ background: #fefefe;
90
97
  }
91
98
  100% {
92
- background: #3399CC;
99
+ background: #3399cc;
93
100
  }
94
101
  }
95
102
  @keyframes logo-color-inside-dark {
@@ -97,15 +104,15 @@
97
104
  background: #030303;
98
105
  }
99
106
  100% {
100
- background: #3399CC;
107
+ background: #3399cc;
101
108
  }
102
109
  }
103
110
  @keyframes logo-color-inside-colored {
104
111
  0% {
105
- background: #FEFEFE;
112
+ background: #fefefe;
106
113
  }
107
114
  100% {
108
- background: #3399CC;
115
+ background: #3399cc;
109
116
  }
110
117
  }
111
118
  @keyframes logo-color-inside-blue {
@@ -113,27 +120,27 @@
113
120
  background: #030303;
114
121
  }
115
122
  100% {
116
- background: #3399CC;
123
+ background: #3399cc;
117
124
  }
118
125
  }
119
126
 
120
127
  @keyframes logo-color-outside-light {
121
128
  0% {
122
- border-color: #FEFEFE;
129
+ border-color: #fefefe;
123
130
  }
124
131
  100% {
125
- border-top-color: #3399CC;
132
+ border-top-color: #3399cc;
126
133
  border-left-color: #164477;
127
134
  border-bottom-color: #164477;
128
135
  border-right-color: #164477;
129
136
  }
130
137
  }
131
- @keyframes logo-color-outside-dark {
138
+ @keyframes logo-color-outside-dark {
132
139
  0% {
133
140
  border-color: #040404;
134
141
  }
135
142
  100% {
136
- border-top-color: #3399CC;
143
+ border-top-color: #3399cc;
137
144
  border-left-color: #164477;
138
145
  border-bottom-color: #164477;
139
146
  border-right-color: #164477;
@@ -141,21 +148,21 @@
141
148
  }
142
149
  @keyframes logo-color-outside-colored {
143
150
  0% {
144
- border-color: #FEFEFE;
151
+ border-color: #fefefe;
145
152
  }
146
153
  100% {
147
- border-top-color: #3399CC;
154
+ border-top-color: #3399cc;
148
155
  border-left-color: #164477;
149
156
  border-bottom-color: #164477;
150
157
  border-right-color: #164477;
151
158
  }
152
159
  }
153
- @keyframes logo-color-outside-blue {
160
+ @keyframes logo-color-outside-blue {
154
161
  0% {
155
162
  border-color: #040404;
156
163
  }
157
164
  100% {
158
- border-top-color: #3399CC;
165
+ border-top-color: #3399cc;
159
166
  border-left-color: #164477;
160
167
  border-bottom-color: #164477;
161
168
  border-right-color: #164477;
@@ -163,17 +170,19 @@
163
170
  }
164
171
 
165
172
  .logo-animate-wait {
166
- animation: logo-color-outside 1.5s, logo-spin 1.5s linear infinite;
173
+ animation:
174
+ logo-color-outside 1.5s,
175
+ logo-spin 1.5s linear infinite;
167
176
  }
168
177
 
169
178
  .logo-animate-grow-light {
170
- background: #DDD;
179
+ background: #ddd;
171
180
  }
172
181
  .logo-animate-grow-dark {
173
182
  background: #1d1d1d;
174
183
  }
175
184
  .logo-animate-grow-colored {
176
- background: #DDD;
185
+ background: #ddd;
177
186
  }
178
187
  .logo-animate-grow-blue {
179
188
  background: #1d1d1d;
@@ -186,8 +195,8 @@
186
195
  top: 50%;
187
196
  left: 50%;
188
197
  -ms-transform: translateX(-50%) translateY(-50%);
189
- -webkit-transform: translate(-50%,-50%);
190
- transform: translate(-50%,-50%);
198
+ -webkit-transform: translate(-50%, -50%);
199
+ transform: translate(-50%, -50%);
191
200
  width: 245px;
192
201
  height: 245px;
193
202
  border-radius: 50%;
@@ -219,4 +228,4 @@
219
228
  }
220
229
  .logo-animate-color-outside-blue {
221
230
  animation: logo-color-outside-blue 1.5s;
222
- }
231
+ }
@@ -1,21 +1,32 @@
1
- import React, { JSXElementConstructor } from 'react';
1
+ import React, { type JSXElementConstructor, type JSX } from 'react';
2
2
  import { useTheme } from '@mui/material/styles';
3
- import { Breakpoint, useMediaQuery } from '@mui/material';
3
+ import { type Breakpoint, useMediaQuery } from '@mui/material';
4
4
 
5
- function useWidth() {
5
+ function useWidth(): Breakpoint {
6
6
  const theme = useTheme();
7
7
  const keys = [...theme.breakpoints.keys].reverse();
8
- return keys.reduce((output: Breakpoint | null, key: Breakpoint) => {
9
- // eslint-disable-next-line react-hooks/rules-of-hooks
10
- const matches = useMediaQuery(theme.breakpoints.up(key));
11
- return !output && matches ? key : output;
12
- }, null) || 'xs';
8
+ return (
9
+ keys.reduce((output: Breakpoint | null, key: Breakpoint) => {
10
+ // eslint-disable-next-line react-hooks/rules-of-hooks
11
+ const matches = useMediaQuery(theme.breakpoints.up(key));
12
+ return !output && matches ? key : output;
13
+ }, null) || 'xs'
14
+ );
13
15
  }
14
16
 
15
17
  // FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth
16
- const withWidth = () => (WrappedComponent: JSXElementConstructor<any>) => (props: Record<string, any>) => {
17
- const width = useWidth();
18
- return <WrappedComponent {...props} width={width} />;
19
- };
18
+ function withWidth() {
19
+ return (WrappedComponent: JSXElementConstructor<any>) => {
20
+ return function AnyComponent(props: Record<string, any>): JSX.Element {
21
+ const width = useWidth();
22
+ return (
23
+ <WrappedComponent
24
+ {...props}
25
+ width={width}
26
+ />
27
+ );
28
+ };
29
+ };
30
+ }
20
31
 
21
32
  export default withWidth;
@@ -1,6 +1,4 @@
1
- import {
2
- Connection, PROGRESS, ERRORS, PERMISSION_ERROR,
3
- } from '@iobroker/socket-client';
1
+ import { Connection, PROGRESS, ERRORS, PERMISSION_ERROR } from '@iobroker/socket-client';
4
2
 
5
3
  export { PROGRESS, ERRORS, PERMISSION_ERROR };
6
4
 
@@ -1,18 +1,8 @@
1
- import React from 'react';
1
+ import React, { type JSX } from 'react';
2
2
 
3
- import {
4
- Button,
5
- DialogTitle,
6
- DialogContent,
7
- DialogActions,
8
- Dialog,
9
- } from '@mui/material';
3
+ import { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';
10
4
 
11
- import {
12
- Check as IconOk,
13
- Cancel as IconCancel,
14
- Delete as IconClear,
15
- } from '@mui/icons-material';
5
+ import { Check as IconOk, Cancel as IconCancel, Delete as IconClear } from '@mui/icons-material';
16
6
 
17
7
  import ComplexCron from '../Components/ComplexCron';
18
8
 
@@ -60,69 +50,73 @@ class DialogComplexCron extends React.Component<DialogCronProps, DialogCronState
60
50
  }
61
51
  }
62
52
 
63
- this.state = {
53
+ this.state = {
64
54
  cron,
65
55
  };
66
56
  }
67
57
 
68
- handleCancel() {
58
+ handleCancel(): void {
69
59
  this.props.onClose();
70
60
  }
71
61
 
72
- handleOk() {
62
+ handleOk(): void {
73
63
  this.props.onOk(this.state.cron);
74
64
  this.props.onClose();
75
65
  }
76
66
 
77
- handleClear() {
67
+ handleClear(): void {
78
68
  this.props.onOk(false);
79
69
  this.props.onClose();
80
70
  }
81
71
 
82
- render() {
83
- return <Dialog
84
- onClose={() => {}}
85
- maxWidth="md"
86
- fullWidth
87
- sx={{ '& .MuiDialog-paper': styles.dialogPaper }}
88
- open={!0}
89
- aria-labelledby="cron-dialog-title"
90
- >
91
- <DialogTitle id="cron-dialog-title">{this.props.title || I18n.t('ra_Define schedule...')}</DialogTitle>
92
- <DialogContent style={{ height: '100%', overflow: 'hidden' }}>
93
- <ComplexCron
94
- cronExpression={this.state.cron}
95
- onChange={cron => this.setState({ cron })}
96
- language={I18n.getLanguage()}
97
- />
98
- </DialogContent>
99
- <DialogActions>
100
- {!!this.props.clearButton && <Button
101
- color="grey"
102
- variant="contained"
103
- onClick={() => this.handleClear()}
104
- startIcon={<IconClear />}
105
- >
106
- {this.props.clear || I18n.t('ra_Clear')}
107
- </Button>}
108
- <Button
109
- variant="contained"
110
- onClick={() => this.handleOk()}
111
- color="primary"
112
- startIcon={<IconOk />}
113
- >
114
- {this.props.ok || I18n.t('ra_Ok')}
115
- </Button>
116
- <Button
117
- color="grey"
118
- variant="contained"
119
- onClick={() => this.handleCancel()}
120
- startIcon={<IconCancel />}
121
- >
122
- {this.props.cancel || I18n.t('ra_Cancel')}
123
- </Button>
124
- </DialogActions>
125
- </Dialog>;
72
+ render(): JSX.Element {
73
+ return (
74
+ <Dialog
75
+ onClose={() => {}}
76
+ maxWidth="md"
77
+ fullWidth
78
+ sx={{ '& .MuiDialog-paper': styles.dialogPaper }}
79
+ open={!0}
80
+ aria-labelledby="cron-dialog-title"
81
+ >
82
+ <DialogTitle id="cron-dialog-title">{this.props.title || I18n.t('ra_Define schedule...')}</DialogTitle>
83
+ <DialogContent style={{ height: '100%', overflow: 'hidden' }}>
84
+ <ComplexCron
85
+ cronExpression={this.state.cron}
86
+ onChange={cron => this.setState({ cron })}
87
+ language={I18n.getLanguage()}
88
+ />
89
+ </DialogContent>
90
+ <DialogActions>
91
+ {!!this.props.clearButton && (
92
+ <Button
93
+ color="grey"
94
+ variant="contained"
95
+ onClick={() => this.handleClear()}
96
+ startIcon={<IconClear />}
97
+ >
98
+ {this.props.clear || I18n.t('ra_Clear')}
99
+ </Button>
100
+ )}
101
+ <Button
102
+ variant="contained"
103
+ onClick={() => this.handleOk()}
104
+ color="primary"
105
+ startIcon={<IconOk />}
106
+ >
107
+ {this.props.ok || I18n.t('ra_Ok')}
108
+ </Button>
109
+ <Button
110
+ color="grey"
111
+ variant="contained"
112
+ onClick={() => this.handleCancel()}
113
+ startIcon={<IconCancel />}
114
+ >
115
+ {this.props.cancel || I18n.t('ra_Cancel')}
116
+ </Button>
117
+ </DialogActions>
118
+ </Dialog>
119
+ );
126
120
  }
127
121
  }
128
122
 
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Copyright 2019-2023 Denis Haev (bluefox) <dogafox@gmail.com>
2
+ * Copyright 2019-2024 Denis Haev (bluefox) <dogafox@gmail.com>
3
3
  *
4
4
  * MIT License
5
5
  *
6
- * */
6
+ */
7
7
 
8
8
  // please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined
9
- import React, { Component } from 'react';
9
+ import React, { Component, type JSX } from 'react';
10
10
 
11
11
  import {
12
12
  Button,
@@ -19,10 +19,7 @@ import {
19
19
  Checkbox,
20
20
  } from '@mui/material';
21
21
 
22
- import {
23
- Check as IconCheck,
24
- Close as IconClose,
25
- } from '@mui/icons-material';
22
+ import { Check as IconCheck, Close as IconClose } from '@mui/icons-material';
26
23
 
27
24
  import I18n from '../i18n';
28
25
 
@@ -73,7 +70,9 @@ class DialogConfirm extends Component<DialogConfirmProps, DialogConfirmState> {
73
70
  let suppress: number | boolean = false;
74
71
 
75
72
  if (this.props.suppressQuestionMinutes) {
76
- suppress = parseInt(((window as any)._localStorage || window.localStorage).getItem(this.props.dialogName), 10) || 0;
73
+ suppress =
74
+ parseInt(((window as any)._localStorage || window.localStorage).getItem(this.props.dialogName), 10) ||
75
+ 0;
77
76
 
78
77
  if (!suppress) {
79
78
  suppress = false;
@@ -88,74 +87,98 @@ class DialogConfirm extends Component<DialogConfirmProps, DialogConfirmState> {
88
87
  };
89
88
  }
90
89
 
91
- handleOk() {
90
+ handleOk(): void {
92
91
  if (this.state.suppress) {
93
- ((window as any)._localStorage || window.localStorage).setItem(this.props.dialogName, Date.now() + (this.props.suppressQuestionMinutes || 2) * 60000);
92
+ ((window as any)._localStorage || window.localStorage).setItem(
93
+ this.props.dialogName,
94
+ Date.now() + (this.props.suppressQuestionMinutes || 2) * 60000,
95
+ );
96
+ }
97
+ if (this.props.onClose) {
98
+ this.props.onClose(true);
94
99
  }
95
- this.props.onClose && this.props.onClose(true);
96
100
  }
97
101
 
98
- handleCancel() {
99
- this.props.onClose && this.props.onClose(false);
102
+ handleCancel(): void {
103
+ if (this.props.onClose) {
104
+ this.props.onClose(false);
105
+ }
100
106
  }
101
107
 
102
- render() {
108
+ render(): JSX.Element | null {
103
109
  if (typeof this.state.suppress === 'number') {
104
110
  setTimeout(() => this.props.onClose && this.props.onClose(true), 100);
105
111
  return null;
106
112
  }
107
113
 
108
- return <Dialog
109
- open={!0}
110
- maxWidth="md"
111
- fullWidth={this.props.fullWidth !== undefined ? this.props.fullWidth : true}
112
- onClose={(event, reason) => {
113
- if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {
114
- this.handleCancel();
115
- }
116
- }}
117
- aria-labelledby="ar_confirmation_dialog_title"
118
- aria-describedby="ar_confirmation_dialog_description"
119
- >
120
- <DialogTitle id="ar_confirmation_dialog_title">{this.props.title || I18n.t('ra_Are you sure?')}</DialogTitle>
121
- <DialogContent>
122
- <DialogContentText id="ar_confirmation_dialog_description">
123
- {this.props.icon || null}
124
- {this.props.text}
125
- {this.props.suppressQuestionMinutes ? <br /> : null}
126
- {this.props.suppressQuestionMinutes ? <FormControlLabel
127
- sx={{ '& .FormControlLabel-label': styles.suppress, '&.FormControlLabel-root': styles.suppressRoot }}
128
- control={<Checkbox
129
- id={`ar_dialog_confirm_suppress_${this.props.dialogName || ''}`}
130
- checked={!!this.state.suppress}
131
- onChange={() => this.setState({ suppress: !this.state.suppress })}
132
- />}
133
- label={this.props.suppressText || I18n.t('ra_Suppress question for next %s minutes', (this.props.suppressQuestionMinutes || 2).toString())}
134
- /> : null}
135
- </DialogContentText>
136
- </DialogContent>
137
- <DialogActions>
138
- <Button
139
- id={`ar_dialog_confirm_ok_${this.props.dialogName || ''}`}
140
- variant="contained"
141
- onClick={() => this.handleOk()}
142
- color="primary"
143
- autoFocus
144
- startIcon={<IconCheck />}
145
- >
146
- {this.props.ok || I18n.t('ra_Ok')}
147
- </Button>
148
- <Button
149
- id={`ar_dialog_confirm_cancel_${this.props.dialogName || ''}`}
150
- variant="contained"
151
- onClick={() => this.handleCancel()}
152
- color="grey"
153
- startIcon={<IconClose />}
154
- >
155
- {this.props.cancel || I18n.t('ra_Cancel')}
156
- </Button>
157
- </DialogActions>
158
- </Dialog>;
114
+ return (
115
+ <Dialog
116
+ open={!0}
117
+ maxWidth="md"
118
+ fullWidth={this.props.fullWidth !== undefined ? this.props.fullWidth : true}
119
+ onClose={(event, reason) => {
120
+ if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {
121
+ this.handleCancel();
122
+ }
123
+ }}
124
+ aria-labelledby="ar_confirmation_dialog_title"
125
+ aria-describedby="ar_confirmation_dialog_description"
126
+ >
127
+ <DialogTitle id="ar_confirmation_dialog_title">
128
+ {this.props.title || I18n.t('ra_Are you sure?')}
129
+ </DialogTitle>
130
+ <DialogContent>
131
+ <DialogContentText id="ar_confirmation_dialog_description">
132
+ {this.props.icon || null}
133
+ {this.props.text}
134
+ {this.props.suppressQuestionMinutes ? <br /> : null}
135
+ {this.props.suppressQuestionMinutes ? (
136
+ <FormControlLabel
137
+ sx={{
138
+ '& .FormControlLabel-label': styles.suppress,
139
+ '&.FormControlLabel-root': styles.suppressRoot,
140
+ }}
141
+ control={
142
+ <Checkbox
143
+ id={`ar_dialog_confirm_suppress_${this.props.dialogName || ''}`}
144
+ checked={!!this.state.suppress}
145
+ onChange={() => this.setState({ suppress: !this.state.suppress })}
146
+ />
147
+ }
148
+ label={
149
+ this.props.suppressText ||
150
+ I18n.t(
151
+ 'ra_Suppress question for next %s minutes',
152
+ (this.props.suppressQuestionMinutes || 2).toString(),
153
+ )
154
+ }
155
+ />
156
+ ) : null}
157
+ </DialogContentText>
158
+ </DialogContent>
159
+ <DialogActions>
160
+ <Button
161
+ id={`ar_dialog_confirm_ok_${this.props.dialogName || ''}`}
162
+ variant="contained"
163
+ onClick={() => this.handleOk()}
164
+ color="primary"
165
+ autoFocus
166
+ startIcon={<IconCheck />}
167
+ >
168
+ {this.props.ok || I18n.t('ra_Ok')}
169
+ </Button>
170
+ <Button
171
+ id={`ar_dialog_confirm_cancel_${this.props.dialogName || ''}`}
172
+ variant="contained"
173
+ onClick={() => this.handleCancel()}
174
+ color="grey"
175
+ startIcon={<IconClose />}
176
+ >
177
+ {this.props.cancel || I18n.t('ra_Cancel')}
178
+ </Button>
179
+ </DialogActions>
180
+ </Dialog>
181
+ );
159
182
  }
160
183
  }
161
184