@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,163 +1,170 @@
1
- import React, { useEffect, useState } from 'react';
2
-
3
- import {
4
- Dialog, DialogActions, DialogContent,
5
- DialogTitle, IconButton, TextField, Button,
6
- } from '@mui/material';
7
-
8
- import {
9
- Check as CheckIcon,
10
- Close as CloseIcon,
11
- Language as LanguageIcon,
12
- } from '@mui/icons-material';
13
-
14
- import I18n from '../i18n';
15
- import { IobTheme } from '../types';
16
- import Utils from './Utils';
17
-
18
- const styles: Record<string, any> = {
19
- modalDialog: {
20
- minWidth: 400,
21
- maxWidth: 800,
22
- },
23
- overflowHidden: {
24
- display: 'flex',
25
- overflow: 'hidden',
26
- },
27
- titleIcon: {
28
- marginRight: 5,
29
- },
30
- content: {
31
- fontSize: 16,
32
- },
33
- languageButton: {
34
- position: 'absolute',
35
- right: 8,
36
- top: 8,
37
- },
38
- languageButtonActive: (theme: IobTheme) => ({
39
- color: theme.palette.primary.main,
40
- }),
41
- };
42
-
43
- interface CustomModalProps {
44
- icon?: any;
45
- open: boolean;
46
- onClose: () => void;
47
- children: React.JSX.Element | null;
48
- titleButtonClose?: string;
49
- titleButtonApply?: string;
50
- onApply: (result: string) => void;
51
- fullWidth?: boolean;
52
- maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
53
- applyButton?: boolean;
54
- applyDisabled?: boolean;
55
- overflowHidden?: boolean;
56
- help?: string;
57
- noTranslation?: boolean;
58
- toggleTranslation?: () => void;
59
- title?: string;
60
- progress?: boolean;
61
- textInput?: boolean;
62
- defaultValue?: string;
63
- theme: IobTheme;
64
- }
65
-
66
- const CustomModal = (props: CustomModalProps) => {
67
- const {
68
- open,
69
- toggleTranslation,
70
- noTranslation,
71
- title,
72
- fullWidth,
73
- help,
74
- maxWidth,
75
- progress,
76
- icon,
77
- applyDisabled,
78
- applyButton,
79
- onClose,
80
- children,
81
- titleButtonApply,
82
- titleButtonClose,
83
- onApply,
84
- textInput,
85
- defaultValue,
86
- overflowHidden,
87
- } = props;
88
-
89
- const [value, setValue] = useState<string>(defaultValue || '');
90
-
91
- useEffect(() => {
92
- setValue(defaultValue || '');
93
- }, [defaultValue]);
94
-
95
- let Icon = null;
96
-
97
- if (icon) {
98
- Icon = icon;
99
- }
100
-
101
- return <Dialog
102
- open={open}
103
- maxWidth={maxWidth || 'md'}
104
- fullWidth={!!fullWidth}
105
- disableEscapeKeyDown={false}
106
- onClose={onClose}
107
- sx={{ '& .MuiDialog-paper': styles.modalDialog }}
108
- >
109
- {title && <DialogTitle>
110
- {icon ? <Icon style={styles.titleIcon} /> : null}
111
- {title}
112
- {I18n.getLanguage() !== 'en' && toggleTranslation ? <IconButton
113
- size="large"
114
- sx={Utils.getStyle(props.theme, styles.languageButton, noTranslation && styles.languageButtonActive)}
115
- onClick={() => toggleTranslation()}
116
- title={I18n.t('Disable/Enable translation')}
117
- >
118
- <LanguageIcon />
119
- </IconButton> : null}
120
- </DialogTitle>}
121
- <DialogContent
122
- style={{ ...styles.content, ...(overflowHidden ? styles.overflowHidden : undefined), paddingTop: 8 }}
123
- >
124
- {textInput && <TextField
125
- // className={className}
126
- autoComplete="off"
127
- fullWidth
128
- autoFocus
129
- variant="outlined"
130
- size="medium"
131
- // rows={10}
132
- multiline
133
- value={value}
134
- onChange={e => setValue(e.target.value)}
135
- // customValue
136
- />}
137
- {children}
138
- {help ? <div>{help}</div> : null}
139
- </DialogContent>
140
- <DialogActions>
141
- {applyButton !== false && <Button
142
- startIcon={<CheckIcon />}
143
- disabled={progress || (applyDisabled && defaultValue === value)}
144
- onClick={() => onApply(textInput ? value : '')}
145
- variant="contained"
146
- color="primary"
147
- >
148
- {I18n.t(titleButtonApply || 'ra_Ok')}
149
- </Button>}
150
- <Button
151
- color="grey"
152
- onClick={onClose}
153
- disabled={progress}
154
- variant="contained"
155
- startIcon={<CloseIcon />}
156
- >
157
- {I18n.t(titleButtonClose || 'ra_Cancel')}
158
- </Button>
159
- </DialogActions>
160
- </Dialog>;
161
- };
162
-
163
- export default CustomModal;
1
+ import React, { useEffect, useState } from 'react';
2
+
3
+ import { Dialog, DialogActions, DialogContent, DialogTitle, IconButton, TextField, Button } from '@mui/material';
4
+
5
+ import { Check as CheckIcon, Close as CloseIcon, Language as LanguageIcon } from '@mui/icons-material';
6
+
7
+ import I18n from '../i18n';
8
+ import { type IobTheme } from '../types';
9
+ import Utils from './Utils';
10
+
11
+ const styles: Record<string, any> = {
12
+ modalDialog: {
13
+ minWidth: 400,
14
+ maxWidth: 800,
15
+ },
16
+ overflowHidden: {
17
+ display: 'flex',
18
+ overflow: 'hidden',
19
+ },
20
+ titleIcon: {
21
+ marginRight: 5,
22
+ },
23
+ content: {
24
+ fontSize: 16,
25
+ },
26
+ languageButton: {
27
+ position: 'absolute',
28
+ right: 8,
29
+ top: 8,
30
+ },
31
+ languageButtonActive: (theme: IobTheme) => ({
32
+ color: theme.palette.primary.main,
33
+ }),
34
+ };
35
+
36
+ interface CustomModalProps {
37
+ icon?: any;
38
+ open: boolean;
39
+ onClose: () => void;
40
+ children: React.JSX.Element | null;
41
+ titleButtonClose?: string;
42
+ titleButtonApply?: string;
43
+ onApply: (result: string) => void;
44
+ fullWidth?: boolean;
45
+ maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
46
+ applyButton?: boolean;
47
+ applyDisabled?: boolean;
48
+ overflowHidden?: boolean;
49
+ help?: string;
50
+ noTranslation?: boolean;
51
+ toggleTranslation?: () => void;
52
+ title?: string;
53
+ progress?: boolean;
54
+ textInput?: boolean;
55
+ defaultValue?: string;
56
+ theme: IobTheme;
57
+ }
58
+
59
+ const CustomModal = (props: CustomModalProps): React.JSX.Element => {
60
+ const {
61
+ open,
62
+ toggleTranslation,
63
+ noTranslation,
64
+ title,
65
+ fullWidth,
66
+ help,
67
+ maxWidth,
68
+ progress,
69
+ icon,
70
+ applyDisabled,
71
+ applyButton,
72
+ onClose,
73
+ children,
74
+ titleButtonApply,
75
+ titleButtonClose,
76
+ onApply,
77
+ textInput,
78
+ defaultValue,
79
+ overflowHidden,
80
+ } = props;
81
+
82
+ const [value, setValue] = useState<string>(defaultValue || '');
83
+
84
+ useEffect(() => {
85
+ setValue(defaultValue || '');
86
+ }, [defaultValue]);
87
+
88
+ let Icon = null;
89
+
90
+ if (icon) {
91
+ Icon = icon;
92
+ }
93
+
94
+ return (
95
+ <Dialog
96
+ open={open}
97
+ maxWidth={maxWidth || 'md'}
98
+ fullWidth={!!fullWidth}
99
+ disableEscapeKeyDown={false}
100
+ onClose={onClose}
101
+ sx={{ '& .MuiDialog-paper': styles.modalDialog }}
102
+ >
103
+ {title && (
104
+ <DialogTitle>
105
+ {icon ? <Icon style={styles.titleIcon} /> : null}
106
+ {title}
107
+ {I18n.getLanguage() !== 'en' && toggleTranslation ? (
108
+ <IconButton
109
+ size="large"
110
+ sx={Utils.getStyle(
111
+ props.theme,
112
+ styles.languageButton,
113
+ noTranslation && styles.languageButtonActive,
114
+ )}
115
+ onClick={() => toggleTranslation()}
116
+ title={I18n.t('Disable/Enable translation')}
117
+ >
118
+ <LanguageIcon />
119
+ </IconButton>
120
+ ) : null}
121
+ </DialogTitle>
122
+ )}
123
+ <DialogContent
124
+ style={{ ...styles.content, ...(overflowHidden ? styles.overflowHidden : undefined), paddingTop: 8 }}
125
+ >
126
+ {textInput && (
127
+ <TextField
128
+ // className={className}
129
+ autoComplete="off"
130
+ fullWidth
131
+ autoFocus
132
+ variant="outlined"
133
+ size="medium"
134
+ // rows={10}
135
+ multiline
136
+ value={value}
137
+ onChange={e => setValue(e.target.value)}
138
+ // customValue
139
+ />
140
+ )}
141
+ {children}
142
+ {help ? <div>{help}</div> : null}
143
+ </DialogContent>
144
+ <DialogActions>
145
+ {applyButton !== false && (
146
+ <Button
147
+ startIcon={<CheckIcon />}
148
+ disabled={progress || (applyDisabled && defaultValue === value)}
149
+ onClick={() => onApply(textInput ? value : '')}
150
+ variant="contained"
151
+ color="primary"
152
+ >
153
+ {I18n.t(titleButtonApply || 'ra_Ok')}
154
+ </Button>
155
+ )}
156
+ <Button
157
+ color="grey"
158
+ onClick={onClose}
159
+ disabled={progress}
160
+ variant="contained"
161
+ startIcon={<CloseIcon />}
162
+ >
163
+ {I18n.t(titleButtonClose || 'ra_Cancel')}
164
+ </Button>
165
+ </DialogActions>
166
+ </Dialog>
167
+ );
168
+ };
169
+
170
+ export default CustomModal;