@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,15 +1,10 @@
1
- import React, { Component, createRef } from 'react';
1
+ import React, { Component, createRef, type JSX } from 'react';
2
2
  import Dropzone from 'react-dropzone';
3
- import { Cropper, ReactCropperElement } from 'react-cropper';
3
+ import { Cropper, type ReactCropperElement } from 'react-cropper';
4
4
 
5
- import {
6
- Menu, MenuItem, Tooltip, IconButton,
7
- } from '@mui/material';
5
+ import { Menu, MenuItem, Tooltip, IconButton } from '@mui/material';
8
6
 
9
- import {
10
- Close as IconClose,
11
- Crop as CropIcon,
12
- } from '@mui/icons-material';
7
+ import { Close as IconClose, Crop as CropIcon } from '@mui/icons-material';
13
8
  import { FaFileUpload as UploadIcon } from 'react-icons/fa';
14
9
 
15
10
  import I18n from '../i18n';
@@ -329,9 +324,7 @@ const styles: Record<string, React.CSSProperties> = {
329
324
  height: 100,
330
325
  position: 'relative',
331
326
  },
332
- dropZoneEmpty: {
333
-
334
- },
327
+ dropZoneEmpty: {},
335
328
  image: {
336
329
  objectFit: 'contain',
337
330
  margin: 'auto',
@@ -382,7 +375,6 @@ const styles: Record<string, React.CSSProperties> = {
382
375
  flexDirection: 'column',
383
376
  alignItems: 'center',
384
377
  justifyContent: 'center',
385
-
386
378
  },
387
379
  disabledOpacity: {
388
380
  opacity: 0.3,
@@ -443,7 +435,7 @@ class UploadImage extends Component<UploadImageProps, UploadImageState> {
443
435
  }
444
436
  }
445
437
 
446
- onDrop(acceptedFiles: File[]) {
438
+ onDrop(acceptedFiles: File[]): void {
447
439
  const onChange = this.props.onChange;
448
440
  const maxSize = this.props.maxSize || 10 * 1024;
449
441
 
@@ -467,8 +459,10 @@ class UploadImage extends Component<UploadImageProps, UploadImageState> {
467
459
  window.alert(I18n.t('ra_File is too big. Max %sk allowed. Try use SVG.', Math.round(maxSize / 1024)));
468
460
  } else {
469
461
  const base64 = `data:${ext};base64,${btoa(
470
- new Uint8Array(reader.result as ArrayBufferLike)
471
- .reduce((data, byte) => data + String.fromCharCode(byte), ''),
462
+ new Uint8Array(reader.result as ArrayBufferLike).reduce(
463
+ (data, byte) => data + String.fromCharCode(byte),
464
+ '',
465
+ ),
472
466
  )}`;
473
467
 
474
468
  if (onChange) {
@@ -481,118 +475,156 @@ class UploadImage extends Component<UploadImageProps, UploadImageState> {
481
475
  reader.readAsArrayBuffer(file);
482
476
  }
483
477
 
484
- render() {
485
- const {
486
- disabled, icon, removeIconFunc, error, crop, onChange,
487
- } = this.props;
478
+ render(): JSX.Element {
479
+ const { disabled, icon, removeIconFunc, error, crop, onChange } = this.props;
488
480
  const maxSize = this.props.maxSize || 10 * 1024;
489
481
  const accept = this.props.accept || { 'image/*': [] };
490
482
  const { uploadFile, anchorEl, cropHandler } = this.state;
491
- return <Dropzone
492
- disabled={!!disabled || cropHandler}
493
- key="dropzone"
494
- multiple={false}
495
- accept={accept}
496
- maxSize={maxSize}
497
- onDragEnter={() => this.setState({ uploadFile: 'dragging' })}
498
- onDragLeave={() => this.setState({ uploadFile: true })}
499
- onDrop={(acceptedFiles: File[], errors) => {
500
- this.setState({ uploadFile: false });
501
- if (!acceptedFiles.length) {
502
- window.alert((errors && errors[0] && errors[0].errors && errors[0].errors[0] && errors[0].errors[0].message) || I18n.t('ra_Cannot upload'));
503
- } else {
504
- this.onDrop(acceptedFiles);
505
- }
506
- }}
507
- >
508
- {({ getRootProps, getInputProps }) => <div
509
- style={{
510
- ...styles.uploadDiv,
511
- ...(uploadFile === 'dragging' ? styles.uploadDivDragging : undefined),
512
- ...styles.dropZone,
513
- ...(disabled ? styles.disabledOpacity : undefined),
514
- ...(!icon ? styles.dropZoneEmpty : undefined),
483
+ return (
484
+ <Dropzone
485
+ disabled={!!disabled || cropHandler}
486
+ key="dropzone"
487
+ multiple={false}
488
+ accept={accept}
489
+ maxSize={maxSize}
490
+ onDragEnter={() => this.setState({ uploadFile: 'dragging' })}
491
+ onDragLeave={() => this.setState({ uploadFile: true })}
492
+ onDrop={(acceptedFiles: File[], errors) => {
493
+ this.setState({ uploadFile: false });
494
+ if (!acceptedFiles.length) {
495
+ window.alert(
496
+ (errors &&
497
+ errors[0] &&
498
+ errors[0].errors &&
499
+ errors[0].errors[0] &&
500
+ errors[0].errors[0].message) ||
501
+ I18n.t('ra_Cannot upload'),
502
+ );
503
+ } else {
504
+ this.onDrop(acceptedFiles);
505
+ }
515
506
  }}
516
- {...getRootProps()}
517
507
  >
518
- <input {...getInputProps()} />
519
- <div style={{ ...styles.uploadCenterDiv, ...(error ? styles.error : undefined) }}>
520
- {!icon ? <div style={styles.uploadCenterTextAndIcon}>
521
- <UploadIcon style={styles.uploadCenterIcon} />
522
- <div style={styles.uploadCenterText}>
523
- {uploadFile === 'dragging' ? I18n.t('ra_Drop file here') :
524
- I18n.t('ra_Place your files here or click here to open the browse dialog')}
508
+ {({ getRootProps, getInputProps }) => (
509
+ <div
510
+ style={{
511
+ ...styles.uploadDiv,
512
+ ...(uploadFile === 'dragging' ? styles.uploadDivDragging : undefined),
513
+ ...styles.dropZone,
514
+ ...(disabled ? styles.disabledOpacity : undefined),
515
+ ...(!icon ? styles.dropZoneEmpty : undefined),
516
+ }}
517
+ {...getRootProps()}
518
+ >
519
+ <input {...getInputProps()} />
520
+ <div style={{ ...styles.uploadCenterDiv, ...(error ? styles.error : undefined) }}>
521
+ {!icon ? (
522
+ <div style={styles.uploadCenterTextAndIcon}>
523
+ <UploadIcon style={styles.uploadCenterIcon} />
524
+ <div style={styles.uploadCenterText}>
525
+ {uploadFile === 'dragging'
526
+ ? I18n.t('ra_Drop file here')
527
+ : I18n.t(
528
+ 'ra_Place your files here or click here to open the browse dialog',
529
+ )}
530
+ </div>
531
+ </div>
532
+ ) : (
533
+ removeIconFunc &&
534
+ !cropHandler && (
535
+ <div style={styles.buttonRemoveWrapper}>
536
+ <Tooltip
537
+ title={I18n.t('ra_Clear')}
538
+ componentsProps={{ popper: { sx: { pointerEvents: 'none' } } }}
539
+ >
540
+ <IconButton
541
+ size="large"
542
+ onClick={e => {
543
+ removeIconFunc && removeIconFunc();
544
+ e.stopPropagation();
545
+ }}
546
+ >
547
+ <IconClose />
548
+ </IconButton>
549
+ </Tooltip>
550
+ </div>
551
+ )
552
+ )}
553
+ {icon && crop && (
554
+ <div style={styles.buttonCropWrapper}>
555
+ <Tooltip
556
+ title={I18n.t('ra_Crop')}
557
+ componentsProps={{ popper: { sx: { pointerEvents: 'none' } } }}
558
+ >
559
+ <IconButton
560
+ size="large"
561
+ onClick={e => {
562
+ if (!cropHandler) {
563
+ this.setState({ cropHandler: true });
564
+ } else {
565
+ this.setState({ anchorEl: e.currentTarget });
566
+ }
567
+ e.stopPropagation();
568
+ }}
569
+ >
570
+ <CropIcon color={cropHandler ? 'primary' : 'inherit'} />
571
+ </IconButton>
572
+ </Tooltip>
573
+ <Menu
574
+ anchorEl={anchorEl}
575
+ keepMounted
576
+ open={Boolean(anchorEl)}
577
+ onClose={() => this.setState({ anchorEl: null })}
578
+ >
579
+ <MenuItem
580
+ onClick={() =>
581
+ this.setState({ anchorEl: null, cropHandler: false }, () => {
582
+ const imageElement = this.cropperRef?.current?.cropper;
583
+ if (imageElement) {
584
+ if (onChange) {
585
+ onChange(imageElement.getCroppedCanvas().toDataURL());
586
+ } else {
587
+ console.log(imageElement.getCroppedCanvas().toDataURL());
588
+ }
589
+ }
590
+ })
591
+ }
592
+ >
593
+ {I18n.t('ra_Save')}
594
+ </MenuItem>
595
+ <MenuItem onClick={() => this.setState({ anchorEl: null, cropHandler: false })}>
596
+ {I18n.t('ra_Close')}
597
+ </MenuItem>
598
+ </Menu>
599
+ </div>
600
+ )}
601
+ {icon && !cropHandler ? (
602
+ <Icon
603
+ src={icon}
604
+ style={styles.image}
605
+ alt="icon"
606
+ />
607
+ ) : null}
608
+
609
+ {icon && crop && cropHandler ? (
610
+ <Cropper
611
+ ref={this.cropperRef}
612
+ style={styles.image}
613
+ src={icon}
614
+ initialAspectRatio={1}
615
+ viewMode={1}
616
+ guides={false}
617
+ minCropBoxHeight={10}
618
+ minCropBoxWidth={10}
619
+ background={false}
620
+ checkOrientation={false}
621
+ />
622
+ ) : null}
525
623
  </div>
526
624
  </div>
527
- :
528
- removeIconFunc && !cropHandler && <div style={styles.buttonRemoveWrapper}>
529
- <Tooltip title={I18n.t('ra_Clear')} componentsProps={{ popper: { sx: { pointerEvents: 'none' } } }}>
530
- <IconButton
531
- size="large"
532
- onClick={e => {
533
- removeIconFunc && removeIconFunc();
534
- e.stopPropagation();
535
- }}
536
- >
537
- <IconClose />
538
- </IconButton>
539
- </Tooltip>
540
- </div>}
541
- {icon && crop && <div style={styles.buttonCropWrapper}>
542
- <Tooltip title={I18n.t('ra_Crop')} componentsProps={{ popper: { sx: { pointerEvents: 'none' } } }}>
543
- <IconButton
544
- size="large"
545
- onClick={e => {
546
- if (!cropHandler) {
547
- this.setState({ cropHandler: true });
548
- } else {
549
- this.setState({ anchorEl: e.currentTarget });
550
- }
551
- e.stopPropagation();
552
- }}
553
- >
554
- <CropIcon color={cropHandler ? 'primary' : 'inherit'} />
555
- </IconButton>
556
- </Tooltip>
557
- <Menu
558
- anchorEl={anchorEl}
559
- keepMounted
560
- open={Boolean(anchorEl)}
561
- onClose={() => this.setState({ anchorEl: null })}
562
- >
563
- <MenuItem onClick={() => this.setState({ anchorEl: null, cropHandler: false }, () => {
564
- const imageElement = this.cropperRef?.current?.cropper;
565
- if (imageElement) {
566
- if (onChange) {
567
- onChange(imageElement.getCroppedCanvas().toDataURL());
568
- } else {
569
- console.log(imageElement.getCroppedCanvas().toDataURL());
570
- }
571
- }
572
- })}
573
- >
574
- {I18n.t('ra_Save')}
575
- </MenuItem>
576
- <MenuItem onClick={() => this.setState({ anchorEl: null, cropHandler: false })}>{I18n.t('ra_Close')}</MenuItem>
577
- </Menu>
578
- </div>}
579
- {icon && !cropHandler ? <Icon src={icon} style={styles.image} alt="icon" /> : null}
580
-
581
- {icon && crop && cropHandler ? <Cropper
582
- ref={this.cropperRef}
583
- style={styles.image}
584
- src={icon}
585
- initialAspectRatio={1}
586
- viewMode={1}
587
- guides={false}
588
- minCropBoxHeight={10}
589
- minCropBoxWidth={10}
590
- background={false}
591
- checkOrientation={false}
592
- /> : null}
593
- </div>
594
- </div>}
595
- </Dropzone>;
625
+ )}
626
+ </Dropzone>
627
+ );
596
628
  }
597
629
  }
598
630