@iobroker/adapter-react-v5 7.0.2 → 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 (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 +1234 -1170
  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 +1 -1
  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 +21 -19
  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
@@ -1,11 +1,9 @@
1
1
  import React, { Component } from 'react';
2
2
 
3
- import {
4
- FormControl, InputLabel, MenuItem, Select,
5
- } from '@mui/material';
6
- import { InputProps } from '@mui/material/Input';
3
+ import { FormControl, InputLabel, MenuItem, Select } from '@mui/material';
4
+ import type { InputProps } from '@mui/material/Input';
7
5
 
8
- import { ThemeType, Translate } from '../types';
6
+ import type { ThemeType, Translate } from '../types';
9
7
 
10
8
  import Icon from './Icon';
11
9
  import Utils from './Utils';
@@ -67,29 +65,27 @@ class SelectWithIcon extends Component<SelectWithIconProps, SelectWithIconState>
67
65
 
68
66
  let list: TextWithIconItem[];
69
67
  if (Array.isArray(props.list || props.options)) {
70
- list = ((props.list || props.options) as ioBroker.Object[])
71
- .map(obj => ({
72
- name: Utils.getObjectNameFromObj(obj, props.lang)
73
- .replace('system.group.', '')
74
- .replace('system.user.', '')
75
- .replace('enum.rooms.', '')
76
- .replace('enum.functions.', ''),
77
- value: obj._id,
78
- icon: obj.common?.icon,
79
- color: obj.common?.color,
80
- }));
68
+ list = ((props.list || props.options) as ioBroker.Object[]).map(obj => ({
69
+ name: Utils.getObjectNameFromObj(obj, props.lang)
70
+ .replace('system.group.', '')
71
+ .replace('system.user.', '')
72
+ .replace('enum.rooms.', '')
73
+ .replace('enum.functions.', ''),
74
+ value: obj._id,
75
+ icon: obj.common?.icon,
76
+ color: obj.common?.color,
77
+ }));
81
78
  } else {
82
- list = Object.values((props.list || props.options) as Record<string, ioBroker.Object>)
83
- .map(obj => ({
84
- name: Utils.getObjectNameFromObj(obj, props.lang)
85
- .replace('system.group.', '')
86
- .replace('system.user.', '')
87
- .replace('enum.rooms.', '')
88
- .replace('enum.functions.', ''),
89
- value: obj._id,
90
- icon: obj.common?.icon,
91
- color: obj.common?.color,
92
- }));
79
+ list = Object.values((props.list || props.options) as Record<string, ioBroker.Object>).map(obj => ({
80
+ name: Utils.getObjectNameFromObj(obj, props.lang)
81
+ .replace('system.group.', '')
82
+ .replace('system.user.', '')
83
+ .replace('enum.rooms.', '')
84
+ .replace('enum.functions.', ''),
85
+ value: obj._id,
86
+ icon: obj.common?.icon,
87
+ color: obj.common?.color,
88
+ }));
93
89
  }
94
90
 
95
91
  if (props.different && props.value === props.different) {
@@ -105,92 +101,138 @@ class SelectWithIcon extends Component<SelectWithIconProps, SelectWithIconState>
105
101
  };
106
102
  }
107
103
 
108
- render() {
104
+ render(): React.JSX.Element {
109
105
  if (this.props.allowNone && !this.state.list.find(obj => obj.value === '')) {
110
- this.timeout = this.timeout || setTimeout(() => {
111
- this.timeout = null;
112
- const list = JSON.parse(JSON.stringify(this.state.list));
113
- list.unshift({ value: '', name: I18n.t('ra_none') });
114
- this.setState({ list });
115
- }, 100);
106
+ this.timeout =
107
+ this.timeout ||
108
+ setTimeout(() => {
109
+ this.timeout = null;
110
+ const list = JSON.parse(JSON.stringify(this.state.list));
111
+ list.unshift({ value: '', name: I18n.t('ra_none') });
112
+ this.setState({ list });
113
+ }, 100);
116
114
  } else if (!this.props.allowNone && this.state.list.find(obj => obj.value === '')) {
117
- this.timeout = this.timeout || setTimeout(() => {
118
- this.timeout = null;
119
- const list = JSON.parse(JSON.stringify(this.state.list));
120
- const i = this.state.list.findIndex(obj => obj.value === '');
121
- list.splice(i, 1);
122
- this.setState({ list });
123
- }, 100);
115
+ this.timeout =
116
+ this.timeout ||
117
+ setTimeout(() => {
118
+ this.timeout = null;
119
+ const list = JSON.parse(JSON.stringify(this.state.list));
120
+ const i = this.state.list.findIndex(obj => obj.value === '');
121
+ list.splice(i, 1);
122
+ this.setState({ list });
123
+ }, 100);
124
124
  }
125
125
 
126
- const item = this.state.list.find(it => it.value === this.props.value || (this.props.removePrefix && it.value.replace(this.props.removePrefix, '') === this.props.value));
126
+ const item = this.state.list.find(
127
+ it =>
128
+ it.value === this.props.value ||
129
+ (this.props.removePrefix && it.value.replace(this.props.removePrefix, '') === this.props.value),
130
+ );
127
131
 
128
- const style = this.props.value === this.props.different ? {} : {
129
- color: item?.color || undefined,
130
- backgroundColor: Utils.getInvertedColor(item?.color || '', this.props.themeType),
131
- };
132
+ const style =
133
+ this.props.value === this.props.different
134
+ ? {}
135
+ : {
136
+ color: item?.color || undefined,
137
+ backgroundColor: Utils.getInvertedColor(item?.color || '', this.props.themeType),
138
+ };
132
139
 
133
140
  if (this.props.dense && this.props.style) {
134
141
  Object.assign(style, this.props.style);
135
142
  }
136
143
 
137
- const select = <Select
138
- variant="standard"
139
- disabled={this.props.disabled}
140
- value={this.props.value}
141
- inputProps={this.props.inputProps}
142
- renderValue={(/* value */) => <span>
143
- {item?.icon ? <Icon src={item?.icon} style={styles.icon} /> : null}
144
- {item?.name}
145
- </span>}
146
- sx={{
147
- '&.MuiSelect-root': this.props.value === this.props.different ? styles.different : {},
148
- }}
149
- classes={{
150
- root: this.props.dense ? this.props.className : '',
151
- }}
152
- style={style}
153
- onChange={el => {
154
- if (this.props.different && el.target.value !== this.props.different) {
155
- let pos = null;
156
- for (let i = 0; i < this.state.list.length; i++) {
157
- if (this.state.list[i].value === this.props.different) {
158
- pos = i;
159
- break;
144
+ const select = (
145
+ <Select
146
+ variant="standard"
147
+ disabled={this.props.disabled}
148
+ value={this.props.value}
149
+ slotProps={{
150
+ input: this.props.inputProps,
151
+ }}
152
+ renderValue={
153
+ (/* value */) => (
154
+ <span>
155
+ {item?.icon ? (
156
+ <Icon
157
+ src={item?.icon}
158
+ style={styles.icon}
159
+ />
160
+ ) : null}
161
+ {item?.name}
162
+ </span>
163
+ )
164
+ }
165
+ sx={{
166
+ '&.MuiSelect-root': this.props.value === this.props.different ? styles.different : {},
167
+ }}
168
+ classes={{
169
+ root: this.props.dense ? this.props.className : '',
170
+ }}
171
+ style={style}
172
+ onChange={el => {
173
+ if (this.props.different && el.target.value !== this.props.different) {
174
+ let pos = null;
175
+ for (let i = 0; i < this.state.list.length; i++) {
176
+ if (this.state.list[i].value === this.props.different) {
177
+ pos = i;
178
+ break;
179
+ }
180
+ }
181
+ if (pos !== null) {
182
+ const list: TextWithIconItem[] = Utils.clone(this.state.list) as TextWithIconItem[];
183
+ list.splice(pos, 1);
184
+ this.setState({ list }, () => this.props.onChange(el.target.value));
185
+ return;
160
186
  }
161
187
  }
162
- if (pos !== null) {
163
- const list: TextWithIconItem[] = Utils.clone(this.state.list) as TextWithIconItem[];
164
- list.splice(pos, 1);
165
- this.setState({ list }, () => this.props.onChange(el.target.value));
166
- return;
167
- }
168
- }
169
188
 
170
- this.props.onChange(this.props.removePrefix ? el.target.value.replace(this.props.removePrefix, '') : el.target.value);
171
- }}
172
- >
173
- {this.state.list.map(el => <MenuItem
174
- style={this.props.different && el.value === this.props.different ? styles.different : {
175
- color: el.color || undefined,
176
- backgroundColor: Utils.getInvertedColor(el.color || '', this.props.themeType),
189
+ this.props.onChange(
190
+ this.props.removePrefix
191
+ ? el.target.value.replace(this.props.removePrefix, '')
192
+ : el.target.value,
193
+ );
177
194
  }}
178
- key={el.value}
179
- value={el.value}
180
195
  >
181
- {el.icon ? <Icon src={el.icon} style={styles.icon} /> : null}
182
- {el.name}
183
- </MenuItem>)}
184
- </Select>;
196
+ {this.state.list.map(el => (
197
+ <MenuItem
198
+ style={
199
+ this.props.different && el.value === this.props.different
200
+ ? styles.different
201
+ : {
202
+ color: el.color || undefined,
203
+ backgroundColor: Utils.getInvertedColor(el.color || '', this.props.themeType),
204
+ }
205
+ }
206
+ key={el.value}
207
+ value={el.value}
208
+ >
209
+ {el.icon ? (
210
+ <Icon
211
+ src={el.icon}
212
+ style={styles.icon}
213
+ />
214
+ ) : null}
215
+ {el.name}
216
+ </MenuItem>
217
+ ))}
218
+ </Select>
219
+ );
185
220
 
186
221
  if (this.props.dense) {
187
222
  return select;
188
223
  }
189
224
 
190
- return <FormControl variant="standard" fullWidth={!!this.props.fullWidth} style={this.props.style} className={this.props.className}>
191
- <InputLabel>{this.props.label}</InputLabel>
192
- {select}
193
- </FormControl>;
225
+ return (
226
+ <FormControl
227
+ variant="standard"
228
+ fullWidth={!!this.props.fullWidth}
229
+ style={this.props.style}
230
+ className={this.props.className}
231
+ >
232
+ <InputLabel>{this.props.label}</InputLabel>
233
+ {select}
234
+ </FormControl>
235
+ );
194
236
  }
195
237
  }
196
238
 
@@ -30,26 +30,28 @@ interface TabContainerProps {
30
30
  children: React.ReactNode;
31
31
  }
32
32
 
33
- function TabContainer(props: TabContainerProps) {
34
- return <Paper
35
- elevation={!Number.isNaN(props.elevation) ? props.elevation : 1}
36
- style={{
37
- ...styles.root,
38
- ...(props.styles?.root || undefined),
39
- ...(props.overflow !== 'visible' ? styles.overflowHidden : undefined),
40
- }}
41
- onKeyDown={props.onKeyDown}
42
- tabIndex={props.tabIndex}
43
- >
44
- <Grid
45
- container
46
- direction="column"
47
- wrap="nowrap"
48
- sx={styles.container}
33
+ function TabContainer(props: TabContainerProps): React.JSX.Element {
34
+ return (
35
+ <Paper
36
+ elevation={!Number.isNaN(props.elevation) ? props.elevation : 1}
37
+ style={{
38
+ ...styles.root,
39
+ ...(props.styles?.root || undefined),
40
+ ...(props.overflow !== 'visible' ? styles.overflowHidden : undefined),
41
+ }}
42
+ onKeyDown={props.onKeyDown}
43
+ tabIndex={props.tabIndex}
49
44
  >
50
- {props.children}
51
- </Grid>
52
- </Paper>;
45
+ <Grid
46
+ container
47
+ direction="column"
48
+ wrap="nowrap"
49
+ sx={styles.container}
50
+ >
51
+ {props.children}
52
+ </Grid>
53
+ </Paper>
54
+ );
53
55
  }
54
56
 
55
57
  export default TabContainer;
@@ -1,6 +1,6 @@
1
1
  // please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined
2
2
  import React from 'react';
3
- import { Grid } from '@mui/material';
3
+ import { Grid2 } from '@mui/material';
4
4
 
5
5
  const styles: Record<string, React.CSSProperties> = {
6
6
  root: {
@@ -21,17 +21,18 @@ interface TabContentProps {
21
21
  style?: React.CSSProperties;
22
22
  }
23
23
 
24
- function TabContent(props: TabContentProps) {
25
- return <Grid
26
- item
27
- sx={{
28
- ...styles.root,
29
- ...(props?.style || undefined),
30
- ...(props.overflow === 'auto' ? styles.overflowAuto : undefined),
31
- }}
32
- >
33
- {props.children}
34
- </Grid>;
24
+ function TabContent(props: TabContentProps): React.JSX.Element {
25
+ return (
26
+ <Grid2
27
+ sx={{
28
+ ...styles.root,
29
+ ...(props?.style || undefined),
30
+ ...(props.overflow === 'auto' ? styles.overflowAuto : undefined),
31
+ }}
32
+ >
33
+ {props.children}
34
+ </Grid2>
35
+ );
35
36
  }
36
37
 
37
38
  export default TabContent;
@@ -1,19 +1,20 @@
1
1
  import React from 'react';
2
2
 
3
- import { Grid } from '@mui/material';
3
+ import { Grid2 } from '@mui/material';
4
4
 
5
5
  interface TabHeaderProps {
6
6
  children: React.ReactNode;
7
7
  }
8
8
 
9
- function TabHeader(props: TabHeaderProps) {
10
- return <Grid
11
- item
12
- container
13
- alignItems="center"
14
- >
15
- {props.children}
16
- </Grid>;
9
+ function TabHeader(props: TabHeaderProps): React.JSX.Element {
10
+ return (
11
+ <Grid2
12
+ container
13
+ alignItems="center"
14
+ >
15
+ {props.children}
16
+ </Grid2>
17
+ );
17
18
  }
18
19
 
19
20
  export default TabHeader;
@@ -3,13 +3,10 @@
3
3
  *
4
4
  * MIT License
5
5
  *
6
- * */
6
+ */
7
7
  import React, { Component } from 'react';
8
8
 
9
- import {
10
- Table,
11
- Skeleton,
12
- } from '@mui/material';
9
+ import { Table, Skeleton } from '@mui/material';
13
10
 
14
11
  interface TableResizeProps {
15
12
  name?: string;
@@ -56,27 +53,29 @@ class TableResize extends Component<TableResizeProps> {
56
53
  this.resizerCurrentWidths = [];
57
54
  }
58
55
 
59
- componentDidMount() {
56
+ componentDidMount(): void {
60
57
  this.resizerInstall();
61
58
  }
62
59
 
63
- componentWillUnmount() {
60
+ componentWillUnmount(): void {
64
61
  this.resizerUninstall();
65
62
  }
66
63
 
67
- resizerInstall() {
64
+ resizerInstall(): void {
68
65
  if (this.resizerRefTable.current && !(this.resizerRefTable.current as any)._installed) {
69
66
  (this.resizerRefTable.current as any)._installed = true;
70
67
  const ths = this.resizerRefTable.current.querySelectorAll('th');
71
68
 
72
- const widthsStored = ((window as any)._localStorage || window.localStorage).getItem(`App.${this.props.name || 'history'}.table`);
69
+ const widthsStored = ((window as any)._localStorage || window.localStorage).getItem(
70
+ `App.${this.props.name || 'history'}.table`,
71
+ );
73
72
  this.widthFilled = false;
74
73
 
75
74
  if (widthsStored) {
76
75
  try {
77
76
  this.resizerCurrentWidths = JSON.parse(widthsStored);
78
77
  this.widthFilled = true;
79
- } catch (e) {
78
+ } catch {
80
79
  // ignore
81
80
  }
82
81
  }
@@ -88,7 +87,6 @@ class TableResize extends Component<TableResizeProps> {
88
87
  const tableWidth = this.resizerRefTable.current.offsetWidth;
89
88
  let storedWidth: number | null = 0;
90
89
  for (let w = 0; w < this.resizerCurrentWidths.length; w++) {
91
- // eslint-disable-next-line no-restricted-properties
92
90
  if (window.isFinite(this.resizerCurrentWidths[w] as number)) {
93
91
  storedWidth += this.resizerCurrentWidths[w] as number;
94
92
  } else {
@@ -128,16 +126,19 @@ class TableResize extends Component<TableResizeProps> {
128
126
  }
129
127
  }
130
128
 
131
- resizerReset = () => {
129
+ resizerReset = (): void => {
132
130
  for (let c = 0; c < this.resizerCurrentWidths.length; c++) {
133
131
  this.resizerCurrentWidths[c] = (this.props.initialWidths || [])[c] || 'auto';
134
132
  }
135
133
 
136
- ((window as any)._localStorage || window.localStorage).setItem(`App.${this.props.name || 'history'}.table`, JSON.stringify(this.resizerCurrentWidths));
134
+ ((window as any)._localStorage || window.localStorage).setItem(
135
+ `App.${this.props.name || 'history'}.table`,
136
+ JSON.stringify(this.resizerCurrentWidths),
137
+ );
137
138
  this.resizerApplyWidths();
138
139
  };
139
140
 
140
- resizerUninstall() {
141
+ resizerUninstall(): void {
141
142
  this.installTimeout && clearTimeout(this.installTimeout);
142
143
  this.installTimeout = null;
143
144
 
@@ -155,14 +156,18 @@ class TableResize extends Component<TableResizeProps> {
155
156
  }
156
157
  }
157
158
 
158
- resizerApplyWidths() {
159
- const gridTemplateColumns = [];
159
+ resizerApplyWidths(): string | undefined {
160
+ const gridTemplateColumns: string[] = [];
160
161
  if (this.resizerCurrentWidths.length) {
161
162
  for (let c = 0; c < this.resizerCurrentWidths.length; c++) {
162
163
  if (this.resizerCurrentWidths[c]) {
163
- gridTemplateColumns.push(this.resizerCurrentWidths[c] !== 'auto' ? `${this.resizerCurrentWidths[c]}px` : 'auto');
164
+ gridTemplateColumns.push(
165
+ this.resizerCurrentWidths[c] !== 'auto' ? `${this.resizerCurrentWidths[c]}px` : 'auto',
166
+ );
164
167
  } else if (this.props.initialWidths && this.props.initialWidths[c]) {
165
- gridTemplateColumns.push(this.props.initialWidths[c] !== 'auto' ? `${this.props.initialWidths[c]}px` : 'auto');
168
+ gridTemplateColumns.push(
169
+ this.props.initialWidths[c] !== 'auto' ? `${this.props.initialWidths[c]}px` : 'auto',
170
+ );
166
171
  } else {
167
172
  gridTemplateColumns.push('auto');
168
173
  }
@@ -170,7 +175,9 @@ class TableResize extends Component<TableResizeProps> {
170
175
  } else if (this.props.initialWidths) {
171
176
  for (let c = 0; c < this.props.initialWidths.length; c++) {
172
177
  if (this.props.initialWidths[c]) {
173
- gridTemplateColumns.push(this.props.initialWidths[c] !== 'auto' ? `${this.props.initialWidths[c]}px` : 'auto');
178
+ gridTemplateColumns.push(
179
+ this.props.initialWidths[c] !== 'auto' ? `${this.props.initialWidths[c]}px` : 'auto',
180
+ );
174
181
  } else {
175
182
  gridTemplateColumns.push('auto');
176
183
  }
@@ -184,12 +191,14 @@ class TableResize extends Component<TableResizeProps> {
184
191
  return gridTemplateColumns.length ? gridTemplateColumns.join(' ') : undefined;
185
192
  }
186
193
 
187
- resizerMouseMove = (e: MouseEvent) => {
194
+ resizerMouseMove = (e: MouseEvent): void => {
188
195
  if (this.resizerActiveDiv && this.resizerActiveIndex !== null) {
189
196
  const width = this.resizerOldWidth + e.clientX - this.resizerPosition;
190
197
  const widthNext = this.resizerOldWidthNext - e.clientX + this.resizerPosition;
191
- if ((!this.resizerMin || width > this.resizerMin) &&
192
- (!this.resizerMinNext || widthNext > this.resizerMinNext)) {
198
+ if (
199
+ (!this.resizerMin || width > this.resizerMin) &&
200
+ (!this.resizerMinNext || widthNext > this.resizerMinNext)
201
+ ) {
193
202
  this.resizerCurrentWidths[this.resizerActiveIndex] = width;
194
203
  this.resizerCurrentWidths[this.resizerActiveIndex + 1] = widthNext;
195
204
  this.resizerApplyWidths();
@@ -197,8 +206,11 @@ class TableResize extends Component<TableResizeProps> {
197
206
  }
198
207
  };
199
208
 
200
- resizerMouseUp = () => {
201
- ((window as any)._localStorage || window.localStorage).setItem(`App.${this.props.name || 'history'}.table`, JSON.stringify(this.resizerCurrentWidths));
209
+ resizerMouseUp = (): void => {
210
+ ((window as any)._localStorage || window.localStorage).setItem(
211
+ `App.${this.props.name || 'history'}.table`,
212
+ JSON.stringify(this.resizerCurrentWidths),
213
+ );
202
214
 
203
215
  this.resizerActiveIndex = null;
204
216
  this.resizerActiveDiv = null;
@@ -206,7 +218,7 @@ class TableResize extends Component<TableResizeProps> {
206
218
  window.removeEventListener('mouseup', this.resizerMouseUp);
207
219
  };
208
220
 
209
- resizerMouseDown = (e: MouseEvent) => {
221
+ resizerMouseDown = (e: MouseEvent): void => {
210
222
  if (this.resizerActiveIndex === null || this.resizerActiveIndex === undefined) {
211
223
  console.log(`Mouse down ${(e.target as HTMLDivElement)?.dataset.index}`);
212
224
  this.resizerActiveIndex = parseInt((e.target as HTMLDivElement)?.dataset.index || '0', 10);
@@ -224,7 +236,8 @@ class TableResize extends Component<TableResizeProps> {
224
236
  if (this.resizerCurrentWidths[this.resizerActiveIndex + 1] === 'auto') {
225
237
  ths = ths || this.resizerRefTable.current?.querySelectorAll('th');
226
238
  if (ths) {
227
- this.resizerCurrentWidths[this.resizerActiveIndex + 1] = ths[this.resizerActiveIndex + 1].offsetWidth;
239
+ this.resizerCurrentWidths[this.resizerActiveIndex + 1] =
240
+ ths[this.resizerActiveIndex + 1].offsetWidth;
228
241
  }
229
242
  }
230
243
 
@@ -236,23 +249,25 @@ class TableResize extends Component<TableResizeProps> {
236
249
  }
237
250
  };
238
251
 
239
- render() {
252
+ render(): React.JSX.Element {
240
253
  if (this.props.ready === false) {
241
254
  return <Skeleton />;
242
255
  }
243
256
 
244
257
  const style = { gridTemplateColumns: this.resizerApplyWidths() };
245
258
 
246
- return <Table
247
- stickyHeader={this.props.stickyHeader}
248
- size={this.props.size || 'small'}
249
- className={this.props.className}
250
- sx={this.props.sx}
251
- ref={this.resizerRefTable}
252
- style={({ ...(this.props.style || undefined), ...style })}
253
- >
254
- {this.props.children}
255
- </Table>;
259
+ return (
260
+ <Table
261
+ stickyHeader={this.props.stickyHeader}
262
+ size={this.props.size || 'small'}
263
+ className={this.props.className}
264
+ sx={this.props.sx}
265
+ ref={this.resizerRefTable}
266
+ style={{ ...(this.props.style || undefined), ...style }}
267
+ >
268
+ {this.props.children}
269
+ </Table>
270
+ );
256
271
  }
257
272
  }
258
273
 
@@ -2,7 +2,7 @@ import React from 'react';
2
2
 
3
3
  import Icon from './Icon';
4
4
  import Utils from './Utils';
5
- import { ThemeType } from '../types';
5
+ import type { ThemeType } from '../types';
6
6
 
7
7
  const styles: Record<string, React.CSSProperties> = {
8
8
  div: {
@@ -53,7 +53,7 @@ interface TextWithIconItem {
53
53
  color?: string;
54
54
  }
55
55
 
56
- const TextWithIcon = (props: TextWithIconProps) => {
56
+ const TextWithIcon = (props: TextWithIconProps): React.JSX.Element => {
57
57
  const value = props.value;
58
58
  let item: TextWithIconItem;
59
59
  const prefix = props.removePrefix || '';
@@ -125,24 +125,35 @@ const TextWithIcon = (props: TextWithIconProps) => {
125
125
  };
126
126
  }
127
127
 
128
- const style = item?.color ? {
129
- border:`1px solid ${Utils.invertColor(item?.color)}`,
130
- color: Utils.getInvertedColor(item?.color, props.themeType || 'light', true) || undefined,
131
- backgroundColor: item?.color,
132
- } : {};
128
+ const style = item?.color
129
+ ? {
130
+ border: `1px solid ${Utils.invertColor(item?.color)}`,
131
+ color: Utils.getInvertedColor(item?.color, props.themeType || 'light', true) || undefined,
132
+ backgroundColor: item?.color,
133
+ }
134
+ : {};
133
135
 
134
- return <div
135
- style={{ ...(props.style || undefined), ...styles.div, ...(style || undefined) }}
136
- className={Utils.clsx(props.className, props.moreClasses?.root)}
137
- title={props.title || item.value}
138
- >
139
- {item?.icon ? <Icon
140
- src={item?.icon}
141
- className={props.moreClasses?.icon}
142
- style={styles.icon}
143
- /> : null}
144
- <div style={styles.text} className={props.moreClasses?.text}>{item?.name}</div>
145
- </div>;
136
+ return (
137
+ <div
138
+ style={{ ...(props.style || undefined), ...styles.div, ...(style || undefined) }}
139
+ className={Utils.clsx(props.className, props.moreClasses?.root)}
140
+ title={props.title || item.value}
141
+ >
142
+ {item?.icon ? (
143
+ <Icon
144
+ src={item?.icon}
145
+ className={props.moreClasses?.icon}
146
+ style={styles.icon}
147
+ />
148
+ ) : null}
149
+ <div
150
+ style={styles.text}
151
+ className={props.moreClasses?.text}
152
+ >
153
+ {item?.name}
154
+ </div>
155
+ </div>
156
+ );
146
157
  };
147
158
 
148
159
  export default TextWithIcon;