@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.
- package/Components/404.d.ts +3 -2
- package/Components/404.js +3 -2
- package/Components/ColorPicker.d.ts +22 -8
- package/Components/ColorPicker.js +34 -17
- package/Components/ComplexCron.js +24 -24
- package/Components/CopyToClipboard.d.ts +10 -1
- package/Components/CopyToClipboard.js +17 -8
- package/Components/CustomModal.d.ts +1 -1
- package/Components/CustomModal.js +8 -8
- package/Components/FileBrowser.d.ts +11 -11
- package/Components/FileBrowser.js +135 -152
- package/Components/FileViewer.js +34 -23
- package/Components/Icon.d.ts +16 -2
- package/Components/Icon.js +19 -8
- package/Components/IconPicker.js +10 -14
- package/Components/IconSelector.d.ts +1 -1
- package/Components/IconSelector.js +64 -74
- package/Components/Image.d.ts +8 -4
- package/Components/Image.js +13 -32
- package/Components/Loader.d.ts +2 -2
- package/Components/Loader.js +21 -18
- package/Components/Loaders/MV.d.ts +6 -1
- package/Components/Loaders/MV.js +23 -7
- package/Components/Loaders/PT.d.ts +7 -2
- package/Components/Loaders/PT.js +20 -7
- package/Components/Loaders/Vendor.d.ts +2 -2
- package/Components/Loaders/Vendor.js +15 -7
- package/Components/Logo.js +16 -18
- package/Components/MDUtils.d.ts +1 -1
- package/Components/MDUtils.js +8 -4
- package/Components/ObjectBrowser.d.ts +40 -39
- package/Components/ObjectBrowser.js +550 -435
- package/Components/Router.d.ts +1 -3
- package/Components/Router.js +3 -1
- package/Components/SaveCloseButtons.d.ts +3 -3
- package/Components/SaveCloseButtons.js +3 -3
- package/Components/Schedule.d.ts +15 -15
- package/Components/Schedule.js +177 -154
- package/Components/SelectWithIcon.d.ts +2 -2
- package/Components/SelectWithIcon.js +45 -34
- package/Components/SimpleCron/index.js +83 -43
- package/Components/TabContainer.js +2 -2
- package/Components/TabContent.js +1 -1
- package/Components/TabHeader.js +1 -1
- package/Components/TableResize.d.ts +2 -2
- package/Components/TableResize.js +5 -5
- package/Components/TextWithIcon.d.ts +1 -1
- package/Components/TextWithIcon.js +10 -8
- package/Components/ToggleThemeMenu.d.ts +2 -2
- package/Components/ToggleThemeMenu.js +3 -3
- package/Components/TreeTable.d.ts +18 -18
- package/Components/TreeTable.js +76 -72
- package/Components/UploadImage.d.ts +2 -2
- package/Components/UploadImage.js +25 -21
- package/Components/Utils.d.ts +42 -22
- package/Components/Utils.js +66 -65
- package/Components/withWidth.d.ts +2 -2
- package/Components/withWidth.js +10 -6
- package/Dialogs/ComplexCron.d.ts +2 -2
- package/Dialogs/ComplexCron.js +3 -3
- package/Dialogs/Confirm.d.ts +4 -4
- package/Dialogs/Confirm.js +18 -8
- package/Dialogs/Cron.d.ts +3 -3
- package/Dialogs/Cron.js +21 -17
- package/Dialogs/Error.d.ts +3 -3
- package/Dialogs/Error.js +6 -4
- package/Dialogs/Message.d.ts +3 -3
- package/Dialogs/Message.js +6 -4
- package/Dialogs/SelectFile.d.ts +4 -4
- package/Dialogs/SelectFile.js +6 -4
- package/Dialogs/SelectID.d.ts +12 -10
- package/Dialogs/SelectID.js +12 -8
- package/Dialogs/SimpleCron.d.ts +2 -2
- package/Dialogs/SimpleCron.js +2 -2
- package/Dialogs/TextInput.d.ts +2 -2
- package/Dialogs/TextInput.js +3 -3
- package/GenericApp.d.ts +19 -13
- package/GenericApp.js +128 -85
- package/LegacyConnection.d.ts +240 -248
- package/LegacyConnection.js +500 -525
- package/README.md +1264 -1171
- package/Theme.d.ts +1 -1
- package/Theme.js +9 -12
- package/assets/devices.json +1 -0
- package/assets/rooms.json +1 -0
- package/craco-module-federation.js +3 -12
- package/i18n/de.json +434 -434
- package/i18n/en.json +434 -434
- package/i18n/es.json +434 -434
- package/i18n/fr.json +434 -434
- package/i18n/it.json +434 -434
- package/i18n/nl.json +434 -434
- package/i18n/pl.json +434 -434
- package/i18n/pt.json +434 -434
- package/i18n/ru.json +434 -434
- package/i18n/uk.json +434 -434
- package/i18n/zh-cn.json +434 -434
- package/i18n.d.ts +26 -19
- package/i18n.js +28 -22
- package/icons/IconAdapter.js +2 -2
- package/icons/IconAlias.js +2 -2
- package/icons/IconChannel.js +2 -2
- package/icons/IconClearFilter.js +2 -2
- package/icons/IconClosed.js +2 -2
- package/icons/IconCopy.js +2 -2
- package/icons/IconDevice.js +2 -2
- package/icons/IconDocument.js +2 -2
- package/icons/IconDocumentReadOnly.js +2 -2
- package/icons/IconExpert.js +2 -2
- package/icons/IconFx.js +2 -2
- package/icons/IconInstance.js +2 -2
- package/icons/IconLogout.js +2 -2
- package/icons/IconNoIcon.js +2 -2
- package/icons/IconOpen.d.ts +2 -2
- package/icons/IconOpen.js +2 -2
- package/icons/IconProps.d.ts +4 -3
- package/icons/IconState.d.ts +2 -2
- package/icons/IconState.js +2 -2
- package/index.css +3 -2
- package/package.json +4 -4
- package/src/Components/404.tsx +32 -31
- package/src/Components/ColorPicker.tsx +142 -114
- package/src/Components/ComplexCron.tsx +174 -137
- package/src/Components/CopyToClipboard.tsx +22 -9
- package/src/Components/CustomModal.tsx +76 -69
- package/src/Components/FileBrowser.tsx +959 -852
- package/src/Components/FileViewer.tsx +146 -127
- package/src/Components/Icon.tsx +80 -52
- package/src/Components/IconPicker.tsx +83 -67
- package/src/Components/IconSelector.tsx +159 -141
- package/src/Components/Image.tsx +43 -26
- package/src/Components/Loader.tsx +56 -32
- package/src/Components/Logo.tsx +62 -52
- package/src/Components/MDUtils.tsx +10 -6
- package/src/Components/ObjectBrowser.tsx +3198 -2478
- package/src/Components/Router.tsx +11 -11
- package/src/Components/SaveCloseButtons.tsx +43 -39
- package/src/Components/Schedule.tsx +1091 -853
- package/src/Components/SelectWithIcon.tsx +135 -93
- package/src/Components/TabContainer.tsx +22 -20
- package/src/Components/TabContent.tsx +13 -12
- package/src/Components/TabHeader.tsx +10 -9
- package/src/Components/TableResize.tsx +52 -37
- package/src/Components/TextWithIcon.tsx +30 -19
- package/src/Components/ToggleThemeMenu.tsx +31 -13
- package/src/Components/TreeTable.tsx +468 -385
- package/src/Components/UploadImage.tsx +153 -121
- package/src/Components/Utils.tsx +135 -127
- package/src/Components/loader.css +40 -31
- package/src/Components/withWidth.tsx +23 -12
- package/src/Connection.tsx +1 -3
- package/src/Dialogs/ComplexCron.tsx +55 -61
- package/src/Dialogs/Confirm.tsx +88 -65
- package/src/Dialogs/Cron.tsx +122 -112
- package/src/Dialogs/Error.tsx +37 -42
- package/src/Dialogs/Message.tsx +39 -37
- package/src/Dialogs/SelectFile.tsx +95 -85
- package/src/Dialogs/SelectID.tsx +141 -129
- package/src/Dialogs/SimpleCron.tsx +44 -44
- package/src/Dialogs/TextInput.tsx +60 -68
- package/src/GenericApp.tsx +342 -242
- package/src/LegacyConnection.tsx +972 -842
- package/src/Prompt.tsx +3 -1
- package/src/Theme.tsx +19 -26
- package/src/icons/IconAdapter.tsx +16 -14
- package/src/icons/IconAlias.tsx +16 -14
- package/src/icons/IconChannel.tsx +55 -16
- package/src/icons/IconClearFilter.tsx +17 -15
- package/src/icons/IconClosed.tsx +16 -11
- package/src/icons/IconCopy.tsx +16 -11
- package/src/icons/IconDevice.tsx +121 -22
- package/src/icons/IconDocument.tsx +16 -11
- package/src/icons/IconDocumentReadOnly.tsx +21 -12
- package/src/icons/IconExpert.tsx +20 -12
- package/src/icons/IconFx.tsx +16 -14
- package/src/icons/IconInstance.tsx +16 -14
- package/src/icons/IconLogout.tsx +20 -18
- package/src/icons/IconNoIcon.tsx +16 -14
- package/src/icons/IconOpen.tsx +17 -12
- package/src/icons/IconProps.tsx +4 -3
- package/src/icons/IconState.tsx +34 -13
- package/src/index.css +3 -2
- package/tasks.js +91 -0
- package/types.d.ts +141 -0
- package/Components/Loaders/PT.css +0 -109
- package/Components/Loaders/Vendor.css +0 -13
- package/Components/loader.css +0 -222
- package/Components/types.d.ts +0 -82
- package/assets/devices/Alarm Systems.svg +0 -19
- package/assets/devices/Amplifier.svg +0 -22
- package/assets/devices/Awnings.svg +0 -5
- package/assets/devices/Battery Status.svg +0 -5
- package/assets/devices/Ceiling Spotlights.svg +0 -16
- package/assets/devices/Chandelier.svg +0 -7
- package/assets/devices/Climate.svg +0 -12
- package/assets/devices/Coffee Makers.svg +0 -6
- package/assets/devices/Cold Water.svg +0 -31
- package/assets/devices/Computer.svg +0 -21
- package/assets/devices/Consumption.svg +0 -8
- package/assets/devices/Curtains.svg +0 -43
- package/assets/devices/Dishwashers.svg +0 -12
- package/assets/devices/Doors.svg +0 -6
- package/assets/devices/Doorstep.svg +0 -35
- package/assets/devices/Dryer.svg +0 -14
- package/assets/devices/Fan.svg +0 -20
- package/assets/devices/Floor Lamps.svg +0 -5
- package/assets/devices/Garage Doors.svg +0 -9
- package/assets/devices/Gates.svg +0 -32
- package/assets/devices/Hairdryer.svg +0 -23
- package/assets/devices/Handle.svg +0 -6
- package/assets/devices/Hanging Lamps.svg +0 -9
- package/assets/devices/Heater.svg +0 -44
- package/assets/devices/Hoods.svg +0 -12
- package/assets/devices/Hot Water.svg +0 -10
- package/assets/devices/Humidity.svg +0 -41
- package/assets/devices/Iron.svg +0 -5
- package/assets/devices/Irrigation.svg +0 -23
- package/assets/devices/Led Strip.svg +0 -31
- package/assets/devices/Light.svg +0 -30
- package/assets/devices/Lightings.svg +0 -46
- package/assets/devices/Lock.svg +0 -19
- package/assets/devices/Louvre.svg +0 -7
- package/assets/devices/Mowing Machine.svg +0 -9
- package/assets/devices/Music.svg +0 -13
- package/assets/devices/Outdoor Blinds.svg +0 -7
- package/assets/devices/People.svg +0 -19
- package/assets/devices/Pool.svg +0 -8
- package/assets/devices/Power Consumption.svg +0 -13
- package/assets/devices/Printer.svg +0 -10
- package/assets/devices/Pump.svg +0 -10
- package/assets/devices/Receiver.svg +0 -19
- package/assets/devices/Sconces.svg +0 -10
- package/assets/devices/Security.svg +0 -34
- package/assets/devices/Shading.svg +0 -5
- package/assets/devices/Shutters.svg +0 -11
- package/assets/devices/SmokeDetector.svg +0 -13
- package/assets/devices/Sockets.svg +0 -13
- package/assets/devices/Speaker.svg +0 -35
- package/assets/devices/Stove.svg +0 -12
- package/assets/devices/Table Lamps.svg +0 -12
- package/assets/devices/Temperature Sensors.svg +0 -28
- package/assets/devices/Tv.svg +0 -8
- package/assets/devices/Vacuum Cleaner.svg +0 -16
- package/assets/devices/Ventilation.svg +0 -12
- package/assets/devices/Washing Machines.svg +0 -16
- package/assets/devices/Water Consumption.svg +0 -6
- package/assets/devices/Water Heater.svg +0 -8
- package/assets/devices/Water.svg +0 -40
- package/assets/devices/Weather.svg +0 -28
- package/assets/devices/Window.svg +0 -8
- package/assets/rooms/Anteroom.svg +0 -53
- package/assets/rooms/Attic.svg +0 -21
- package/assets/rooms/Balcony.svg +0 -13
- package/assets/rooms/Barn.svg +0 -6
- package/assets/rooms/Basement.svg +0 -5
- package/assets/rooms/Bathroom.svg +0 -38
- package/assets/rooms/Bedroom.svg +0 -5
- package/assets/rooms/Boiler Room.svg +0 -13
- package/assets/rooms/Carport.svg +0 -17
- package/assets/rooms/Cellar.svg +0 -89
- package/assets/rooms/Chamber.svg +0 -9
- package/assets/rooms/Corridor.svg +0 -53
- package/assets/rooms/Dining Area.svg +0 -37
- package/assets/rooms/Dining Room.svg +0 -37
- package/assets/rooms/Dining.svg +0 -37
- package/assets/rooms/Dressing Room.svg +0 -5
- package/assets/rooms/Driveway.svg +0 -15
- package/assets/rooms/Entrance.svg +0 -44
- package/assets/rooms/Equipment Room.svg +0 -15
- package/assets/rooms/Front Yard.svg +0 -64
- package/assets/rooms/Gallery.svg +0 -14
- package/assets/rooms/Garage.svg +0 -20
- package/assets/rooms/Garden.svg +0 -13
- package/assets/rooms/Ground Floor.svg +0 -95
- package/assets/rooms/Guest Bathroom.svg +0 -33
- package/assets/rooms/Guest Room.svg +0 -5
- package/assets/rooms/Gym.svg +0 -5
- package/assets/rooms/Hall.svg +0 -19
- package/assets/rooms/Home Theater.svg +0 -8
- package/assets/rooms/Kitchen.svg +0 -18
- package/assets/rooms/Laundry Room.svg +0 -12
- package/assets/rooms/Living Area.svg +0 -11
- package/assets/rooms/Living Room.svg +0 -10
- package/assets/rooms/Locker Room.svg +0 -17
- package/assets/rooms/Nursery.svg +0 -5
- package/assets/rooms/Office.svg +0 -8
- package/assets/rooms/Outdoors.svg +0 -7
- package/assets/rooms/Playroom.svg +0 -6
- package/assets/rooms/Pool.svg +0 -8
- package/assets/rooms/Rear Wall.svg +0 -30
- package/assets/rooms/Second Floor.svg +0 -95
- package/assets/rooms/Shed.svg +0 -16
- package/assets/rooms/Sleeping Area.svg +0 -22
- package/assets/rooms/Stairway.svg +0 -5
- package/assets/rooms/Stairwell.svg +0 -15
- package/assets/rooms/Storeroom.svg +0 -5
- package/assets/rooms/Summer House.svg +0 -27
- package/assets/rooms/Swimming Pool.svg +0 -21
- package/assets/rooms/Terrace.svg +0 -7
- package/assets/rooms/Toilet.svg +0 -10
- package/assets/rooms/Upstairs.svg +0 -6
- package/assets/rooms/Wardrobe.svg +0 -60
- package/assets/rooms/Washroom.svg +0 -20
- package/assets/rooms/Wc.svg +0 -10
- package/assets/rooms/Windscreen.svg +0 -60
- package/assets/rooms/Workshop.svg +0 -23
- 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
|
-
|
|
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
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
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
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
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
|
-
|
|
529
|
-
|
|
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
|
|