@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.
- package/Components/404.d.ts +3 -2
- package/Components/404.js +16 -15
- 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 +173 -164
- 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 +244 -241
- 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 +123 -110
- package/Components/Loaders/Vendor.d.ts +2 -2
- package/Components/Loaders/Vendor.js +22 -14
- package/Components/Logo.js +16 -18
- package/Components/MDUtils.d.ts +1 -1
- package/Components/MDUtils.js +8 -4
- package/Components/ObjectBrowser.d.ts +49 -38
- package/Components/ObjectBrowser.js +757 -494
- 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 +330 -326
- 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 +177 -134
- package/LICENSE +22 -22
- package/LegacyConnection.d.ts +240 -248
- package/LegacyConnection.js +500 -525
- package/Prompt.js +7 -7
- package/README.md +1239 -1166
- package/Theme.d.ts +1 -1
- package/Theme.js +9 -12
- package/assets/devices.json +1 -0
- package/assets/lamp_ceiling.svg +8 -8
- package/assets/lamp_table.svg +7 -7
- package/assets/no_icon.svg +9 -9
- package/assets/rooms.json +1 -0
- package/craco-module-federation.js +62 -71
- package/i18n/de.json +434 -431
- package/i18n/en.json +434 -431
- package/i18n/es.json +434 -431
- package/i18n/fr.json +434 -431
- package/i18n/it.json +434 -431
- package/i18n/nl.json +434 -431
- package/i18n/pl.json +434 -431
- package/i18n/pt.json +434 -431
- package/i18n/ru.json +434 -431
- package/i18n/uk.json +434 -431
- package/i18n/zh-cn.json +434 -431
- 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 +56 -55
- package/modulefederation.admin.config.js +31 -31
- package/package.json +5 -5
- package/src/AdminConnection.tsx +3 -3
- package/src/Components/404.tsx +122 -121
- package/src/Components/ColorPicker.tsx +343 -315
- package/src/Components/ComplexCron.tsx +544 -507
- package/src/Components/CopyToClipboard.tsx +178 -165
- package/src/Components/CustomModal.tsx +170 -163
- package/src/Components/FileBrowser.tsx +2550 -2414
- package/src/Components/FileViewer.tsx +412 -393
- package/src/Components/Icon.tsx +238 -210
- package/src/Components/IconPicker.tsx +165 -149
- package/src/Components/IconSelector.tsx +2220 -2202
- package/src/Components/Image.tsx +193 -176
- package/src/Components/Loader.tsx +328 -304
- package/src/Components/Logo.tsx +176 -166
- package/src/Components/MDUtils.tsx +104 -100
- package/src/Components/ObjectBrowser.tsx +8935 -8032
- package/src/Components/Router.tsx +90 -90
- package/src/Components/SaveCloseButtons.tsx +117 -113
- package/src/Components/Schedule.tsx +1962 -1724
- package/src/Components/SelectWithIcon.tsx +239 -197
- package/src/Components/TabContainer.tsx +57 -55
- package/src/Components/TabContent.tsx +38 -37
- package/src/Components/TabHeader.tsx +20 -19
- package/src/Components/TableResize.tsx +274 -259
- package/src/Components/TextWithIcon.tsx +159 -148
- package/src/Components/ToggleThemeMenu.tsx +52 -34
- package/src/Components/TreeTable.tsx +1002 -919
- package/src/Components/UploadImage.tsx +631 -599
- package/src/Components/Utils.tsx +1802 -1794
- package/src/Components/loader.css +231 -222
- package/src/Components/withWidth.tsx +32 -21
- package/src/Connection.tsx +5 -7
- package/src/Dialogs/ComplexCron.tsx +123 -129
- package/src/Dialogs/Confirm.tsx +185 -162
- package/src/Dialogs/Cron.tsx +192 -182
- package/src/Dialogs/Error.tsx +67 -72
- package/src/Dialogs/Message.tsx +73 -71
- package/src/Dialogs/SelectFile.tsx +280 -270
- package/src/Dialogs/SelectID.tsx +310 -298
- package/src/Dialogs/SimpleCron.tsx +100 -100
- package/src/Dialogs/TextInput.tsx +99 -107
- package/src/GenericApp.tsx +1076 -976
- package/src/LegacyConnection.tsx +3719 -3589
- package/src/Prompt.tsx +22 -20
- package/src/Theme.tsx +472 -479
- package/src/icons/IconAdapter.tsx +22 -20
- package/src/icons/IconAlias.tsx +22 -20
- package/src/icons/IconChannel.tsx +60 -21
- package/src/icons/IconClearFilter.tsx +24 -22
- package/src/icons/IconClosed.tsx +22 -17
- package/src/icons/IconCopy.tsx +21 -16
- package/src/icons/IconDevice.tsx +126 -27
- package/src/icons/IconDocument.tsx +22 -17
- package/src/icons/IconDocumentReadOnly.tsx +27 -18
- package/src/icons/IconExpert.tsx +26 -18
- package/src/icons/IconFx.tsx +38 -36
- package/src/icons/IconInstance.tsx +22 -20
- package/src/icons/IconLogout.tsx +32 -30
- package/src/icons/IconNoIcon.tsx +21 -19
- package/src/icons/IconOpen.tsx +22 -17
- package/src/icons/IconProps.tsx +16 -15
- package/src/icons/IconState.tsx +38 -17
- package/src/index.css +56 -55
- package/tasks.js +91 -0
- package/types.d.ts +141 -134
- 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
package/GenericApp.js
CHANGED
|
@@ -31,7 +31,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
31
31
|
*
|
|
32
32
|
* MIT License
|
|
33
33
|
*
|
|
34
|
-
|
|
34
|
+
*/
|
|
35
35
|
const react_1 = __importDefault(require("react"));
|
|
36
36
|
const socket_client_1 = require("@iobroker/socket-client");
|
|
37
37
|
const Sentry = __importStar(require("@sentry/browser"));
|
|
@@ -46,61 +46,74 @@ const SaveCloseButtons_1 = __importDefault(require("./Components/SaveCloseButton
|
|
|
46
46
|
const Confirm_1 = __importDefault(require("./Dialogs/Confirm"));
|
|
47
47
|
const i18n_1 = __importDefault(require("./i18n"));
|
|
48
48
|
const Error_1 = __importDefault(require("./Dialogs/Error"));
|
|
49
|
+
const en_json_1 = __importDefault(require("./i18n/en.json"));
|
|
50
|
+
const de_json_1 = __importDefault(require("./i18n/de.json"));
|
|
51
|
+
const ru_json_1 = __importDefault(require("./i18n/ru.json"));
|
|
52
|
+
const pt_json_1 = __importDefault(require("./i18n/pt.json"));
|
|
53
|
+
const nl_json_1 = __importDefault(require("./i18n/nl.json"));
|
|
54
|
+
const fr_json_1 = __importDefault(require("./i18n/fr.json"));
|
|
55
|
+
const it_json_1 = __importDefault(require("./i18n/it.json"));
|
|
56
|
+
const es_json_1 = __importDefault(require("./i18n/es.json"));
|
|
57
|
+
const pl_json_1 = __importDefault(require("./i18n/pl.json"));
|
|
58
|
+
const uk_json_1 = __importDefault(require("./i18n/uk.json"));
|
|
59
|
+
const zh_cn_json_1 = __importDefault(require("./i18n/zh-cn.json"));
|
|
49
60
|
// import './index.css';
|
|
50
|
-
const cssStyle = `
|
|
51
|
-
html {
|
|
52
|
-
height: 100%;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
body {
|
|
56
|
-
margin: 0;
|
|
57
|
-
padding: 0;
|
|
58
|
-
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
|
|
59
|
-
-webkit-font-smoothing: antialiased;
|
|
60
|
-
-moz-osx-font-smoothing: grayscale;
|
|
61
|
-
width: 100%;
|
|
62
|
-
height: 100%;
|
|
63
|
-
overflow: hidden;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/* scrollbar */
|
|
67
|
-
::-webkit-scrollbar-track {
|
|
68
|
-
background-color: #ccc;
|
|
69
|
-
border-radius: 5px;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
::-webkit-scrollbar {
|
|
73
|
-
width: 5px;
|
|
74
|
-
height: 5px;
|
|
75
|
-
background-color: #ccc;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
::-webkit-scrollbar-thumb {
|
|
79
|
-
background-color: #575757;
|
|
80
|
-
border-radius: 5px;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
#root {
|
|
84
|
-
height: 100%;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.App {
|
|
88
|
-
height: 100%;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
@keyframes glow {
|
|
92
|
-
from {
|
|
93
|
-
background-color: initial;
|
|
94
|
-
}
|
|
95
|
-
to {
|
|
96
|
-
background-color: #58c458;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
61
|
+
const cssStyle = `
|
|
62
|
+
html {
|
|
63
|
+
height: 100%;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
body {
|
|
67
|
+
margin: 0;
|
|
68
|
+
padding: 0;
|
|
69
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
|
|
70
|
+
-webkit-font-smoothing: antialiased;
|
|
71
|
+
-moz-osx-font-smoothing: grayscale;
|
|
72
|
+
width: 100%;
|
|
73
|
+
height: 100%;
|
|
74
|
+
overflow: hidden;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* scrollbar */
|
|
78
|
+
::-webkit-scrollbar-track {
|
|
79
|
+
background-color: #ccc;
|
|
80
|
+
border-radius: 5px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
::-webkit-scrollbar {
|
|
84
|
+
width: 5px;
|
|
85
|
+
height: 5px;
|
|
86
|
+
background-color: #ccc;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
::-webkit-scrollbar-thumb {
|
|
90
|
+
background-color: #575757;
|
|
91
|
+
border-radius: 5px;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
#root {
|
|
95
|
+
height: 100%;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.App {
|
|
99
|
+
height: 100%;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@keyframes glow {
|
|
103
|
+
from {
|
|
104
|
+
background-color: initial;
|
|
105
|
+
}
|
|
106
|
+
to {
|
|
107
|
+
background-color: #58c458;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
99
110
|
`;
|
|
100
111
|
class GenericApp extends Router_1.default {
|
|
101
112
|
constructor(props, settings) {
|
|
102
113
|
var _a, _b;
|
|
103
|
-
const ConnectionClass = (props.Connection ||
|
|
114
|
+
const ConnectionClass = (props.Connection ||
|
|
115
|
+
(settings === null || settings === void 0 ? void 0 : settings.Connection) ||
|
|
116
|
+
socket_client_1.Connection);
|
|
104
117
|
// const ConnectionClass = props.Connection === 'admin' || settings.Connection = 'admin' ? AdminConnection : (props.Connection || settings.Connection || Connection);
|
|
105
118
|
if (!window.document.getElementById('generic-app-iobroker-component')) {
|
|
106
119
|
const style = window.document.createElement('style');
|
|
@@ -115,7 +128,7 @@ class GenericApp extends Router_1.default {
|
|
|
115
128
|
delete window.io;
|
|
116
129
|
window.io = io;
|
|
117
130
|
}
|
|
118
|
-
catch (
|
|
131
|
+
catch (_c) {
|
|
119
132
|
// ignore
|
|
120
133
|
}
|
|
121
134
|
}
|
|
@@ -132,11 +145,13 @@ class GenericApp extends Router_1.default {
|
|
|
132
145
|
i18n_1.default.setLanguage(this.socket.systemLang);
|
|
133
146
|
}
|
|
134
147
|
if (((_a = this._systemConfig) === null || _a === void 0 ? void 0 : _a.expertMode) !== !!((_b = obj === null || obj === void 0 ? void 0 : obj.common) === null || _b === void 0 ? void 0 : _b.expertMode)) {
|
|
135
|
-
this._systemConfig =
|
|
148
|
+
this._systemConfig =
|
|
149
|
+
(obj === null || obj === void 0 ? void 0 : obj.common) || {};
|
|
136
150
|
this.setState({ expertMode: this.getExpertMode() });
|
|
137
151
|
}
|
|
138
152
|
else {
|
|
139
|
-
this._systemConfig =
|
|
153
|
+
this._systemConfig =
|
|
154
|
+
(obj === null || obj === void 0 ? void 0 : obj.common) || {};
|
|
140
155
|
}
|
|
141
156
|
}
|
|
142
157
|
};
|
|
@@ -158,8 +173,8 @@ class GenericApp extends Router_1.default {
|
|
|
158
173
|
else if (message.data === 'updateExpertMode') {
|
|
159
174
|
this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());
|
|
160
175
|
}
|
|
161
|
-
else if (message.data !== 'chartReady') {
|
|
162
|
-
//
|
|
176
|
+
else if (message.data !== 'chartReady') {
|
|
177
|
+
// if not "echart ready" message
|
|
163
178
|
console.debug(`Received unknown message: "${JSON.stringify(message.data)}". May be it will be processed later`);
|
|
164
179
|
}
|
|
165
180
|
}
|
|
@@ -174,7 +189,11 @@ class GenericApp extends Router_1.default {
|
|
|
174
189
|
(0, Prompt_1.default)();
|
|
175
190
|
const query = (window.location.search || '').replace(/^\?/, '').replace(/#.*$/, '');
|
|
176
191
|
const args = {};
|
|
177
|
-
query
|
|
192
|
+
query
|
|
193
|
+
.trim()
|
|
194
|
+
.split('&')
|
|
195
|
+
.filter(t => t.trim())
|
|
196
|
+
.forEach(b => {
|
|
178
197
|
const parts = b.split('=');
|
|
179
198
|
args[parts[0]] = parts.length === 2 ? parts[1] : true;
|
|
180
199
|
if (args[parts[0]] === 'true') {
|
|
@@ -185,29 +204,36 @@ class GenericApp extends Router_1.default {
|
|
|
185
204
|
}
|
|
186
205
|
});
|
|
187
206
|
// extract instance from URL
|
|
188
|
-
this.instance =
|
|
207
|
+
this.instance =
|
|
208
|
+
(_b = (_a = settings === null || settings === void 0 ? void 0 : settings.instance) !== null && _a !== void 0 ? _a : props.instance) !== null && _b !== void 0 ? _b : (args.instance !== undefined
|
|
209
|
+
? parseInt(args.instance, 10) || 0
|
|
210
|
+
: parseInt(window.location.search.slice(1), 10) || 0);
|
|
189
211
|
// extract adapter name from URL
|
|
190
212
|
const tmp = window.location.pathname.split('/');
|
|
191
|
-
this.adapterName =
|
|
213
|
+
this.adapterName =
|
|
214
|
+
(settings === null || settings === void 0 ? void 0 : settings.adapterName) || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';
|
|
192
215
|
this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;
|
|
193
216
|
this.newReact = args.newReact === true; // it is admin5
|
|
194
217
|
const location = Router_1.default.getLocation();
|
|
195
|
-
location.tab =
|
|
218
|
+
location.tab =
|
|
219
|
+
location.tab ||
|
|
220
|
+
(window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) ||
|
|
221
|
+
'';
|
|
196
222
|
const themeInstance = this.createTheme();
|
|
197
|
-
this.state = Object.assign(Object.assign({}, (this.state || {})), { selectedTab: (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '', selectedTabNum: -1, native: {}, errorText: '', changed: false, connected: false, loaded: false, isConfigurationError: '', expertMode: false, toast: '', theme: themeInstance, themeName: this.getThemeName(themeInstance), themeType: this.getThemeType(themeInstance), bottomButtons: (settings && settings.bottomButtons) === false ? false : (
|
|
223
|
+
this.state = Object.assign(Object.assign({}, (this.state || {})), { selectedTab: (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '', selectedTabNum: -1, native: {}, errorText: '', changed: false, connected: false, loaded: false, isConfigurationError: '', expertMode: false, toast: '', theme: themeInstance, themeName: this.getThemeName(themeInstance), themeType: this.getThemeType(themeInstance), bottomButtons: (settings && settings.bottomButtons) === false ? false : (props === null || props === void 0 ? void 0 : props.bottomButtons) !== false, width: GenericApp.getWidth(), confirmClose: false, _alert: false, _alertType: 'info', _alertMessage: '' });
|
|
198
224
|
// init translations
|
|
199
225
|
const translations = {
|
|
200
|
-
en:
|
|
201
|
-
de:
|
|
202
|
-
ru:
|
|
203
|
-
pt:
|
|
204
|
-
nl:
|
|
205
|
-
fr:
|
|
206
|
-
it:
|
|
207
|
-
es:
|
|
208
|
-
pl:
|
|
209
|
-
uk:
|
|
210
|
-
'zh-cn':
|
|
226
|
+
en: en_json_1.default,
|
|
227
|
+
de: de_json_1.default,
|
|
228
|
+
ru: ru_json_1.default,
|
|
229
|
+
pt: pt_json_1.default,
|
|
230
|
+
nl: nl_json_1.default,
|
|
231
|
+
fr: fr_json_1.default,
|
|
232
|
+
it: it_json_1.default,
|
|
233
|
+
es: es_json_1.default,
|
|
234
|
+
pl: pl_json_1.default,
|
|
235
|
+
uk: uk_json_1.default,
|
|
236
|
+
'zh-cn': zh_cn_json_1.default,
|
|
211
237
|
};
|
|
212
238
|
// merge together
|
|
213
239
|
if (settings && settings.translations) {
|
|
@@ -266,10 +292,12 @@ class GenericApp extends Router_1.default {
|
|
|
266
292
|
}, onReady: ( /* objects, scripts */) => {
|
|
267
293
|
i18n_1.default.setLanguage(this.socket.systemLang);
|
|
268
294
|
// subscribe because of language and expert mode
|
|
269
|
-
this.socket
|
|
295
|
+
this.socket
|
|
296
|
+
.subscribeObject('system.config', this.onSystemConfigChanged)
|
|
270
297
|
.then(() => this.getSystemConfig())
|
|
271
298
|
.then(obj => {
|
|
272
|
-
this._secret =
|
|
299
|
+
this._secret =
|
|
300
|
+
(typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';
|
|
273
301
|
this._systemConfig = (obj === null || obj === void 0 ? void 0 : obj.common) || {};
|
|
274
302
|
return this.socket.getObject(this.instanceId);
|
|
275
303
|
})
|
|
@@ -292,9 +320,7 @@ class GenericApp extends Router_1.default {
|
|
|
292
320
|
Sentry.init({
|
|
293
321
|
dsn: this.sentryDSN,
|
|
294
322
|
release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,
|
|
295
|
-
integrations: [
|
|
296
|
-
Sentry.dedupeIntegration(),
|
|
297
|
-
],
|
|
323
|
+
integrations: [Sentry.dedupeIntegration()],
|
|
298
324
|
});
|
|
299
325
|
console.log('Sentry initialized');
|
|
300
326
|
}
|
|
@@ -302,8 +328,7 @@ class GenericApp extends Router_1.default {
|
|
|
302
328
|
// for backward compatibility it will be processed separately from the above logic: some adapters could still have this.sentryDSN as undefined
|
|
303
329
|
if (!this.sentryInited && sentryEnabled) {
|
|
304
330
|
this.sentryInited = true;
|
|
305
|
-
waitPromise = this.socket.getObject('system.meta.uuid')
|
|
306
|
-
.then(uuidObj => {
|
|
331
|
+
waitPromise = this.socket.getObject('system.meta.uuid').then(uuidObj => {
|
|
307
332
|
if (uuidObj && uuidObj.native && uuidObj.native.uuid) {
|
|
308
333
|
const scope = Sentry.getCurrentScope();
|
|
309
334
|
scope.setUser({ id: uuidObj.native.uuid });
|
|
@@ -311,8 +336,7 @@ class GenericApp extends Router_1.default {
|
|
|
311
336
|
});
|
|
312
337
|
}
|
|
313
338
|
waitPromise = waitPromise || Promise.resolve();
|
|
314
|
-
waitPromise
|
|
315
|
-
.then(() => {
|
|
339
|
+
void waitPromise.then(() => {
|
|
316
340
|
if (instanceObj) {
|
|
317
341
|
this.common = instanceObj === null || instanceObj === void 0 ? void 0 : instanceObj.common;
|
|
318
342
|
this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets
|
|
@@ -337,6 +361,7 @@ class GenericApp extends Router_1.default {
|
|
|
337
361
|
}
|
|
338
362
|
/**
|
|
339
363
|
* Checks if this connection is running in a web adapter and not in an admin.
|
|
364
|
+
*
|
|
340
365
|
* @returns True if running in a web adapter or in a socketio adapter.
|
|
341
366
|
*/
|
|
342
367
|
static isWeb() {
|
|
@@ -354,9 +379,11 @@ class GenericApp extends Router_1.default {
|
|
|
354
379
|
}
|
|
355
380
|
renderAlertSnackbar() {
|
|
356
381
|
this.alertDialogRendered = true;
|
|
357
|
-
return react_1.default.createElement(material_1.Snackbar, { style: this.state._alertType === 'error'
|
|
358
|
-
{ backgroundColor: '#f44336' }
|
|
359
|
-
|
|
382
|
+
return (react_1.default.createElement(material_1.Snackbar, { style: this.state._alertType === 'error'
|
|
383
|
+
? { backgroundColor: '#f44336' }
|
|
384
|
+
: this.state._alertType === 'success'
|
|
385
|
+
? { backgroundColor: '#4caf50' }
|
|
386
|
+
: undefined, open: this.state._alert, autoHideDuration: 6000, onClose: (_e, reason) => reason !== 'clickaway' && this.setState({ _alert: false }), message: this.state._alertMessage }));
|
|
360
387
|
}
|
|
361
388
|
/**
|
|
362
389
|
* Called immediately after a component is mounted. Setting state here will trigger re-rendering.
|
|
@@ -376,7 +403,6 @@ class GenericApp extends Router_1.default {
|
|
|
376
403
|
}
|
|
377
404
|
/**
|
|
378
405
|
* Gets the width depending on the window inner width.
|
|
379
|
-
* @returns {import('./types').Width}
|
|
380
406
|
*/
|
|
381
407
|
static getWidth() {
|
|
382
408
|
/**
|
|
@@ -398,36 +424,46 @@ class GenericApp extends Router_1.default {
|
|
|
398
424
|
}
|
|
399
425
|
/**
|
|
400
426
|
* Get a theme
|
|
427
|
+
*
|
|
401
428
|
* @param name Theme name
|
|
402
429
|
*/
|
|
430
|
+
// eslint-disable-next-line class-methods-use-this
|
|
403
431
|
createTheme(name) {
|
|
404
432
|
return (0, Theme_1.default)(Utils_1.default.getThemeName(name));
|
|
405
433
|
}
|
|
406
434
|
/**
|
|
407
435
|
* Get the theme name
|
|
408
436
|
*/
|
|
437
|
+
// eslint-disable-next-line class-methods-use-this
|
|
409
438
|
getThemeName(currentTheme) {
|
|
410
439
|
return currentTheme.name;
|
|
411
440
|
}
|
|
412
441
|
/**
|
|
413
442
|
* Get the theme type
|
|
414
443
|
*/
|
|
444
|
+
// eslint-disable-next-line class-methods-use-this
|
|
415
445
|
getThemeType(currentTheme) {
|
|
416
446
|
return currentTheme.palette.mode;
|
|
417
447
|
}
|
|
418
|
-
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
}
|
|
448
|
+
// eslint-disable-next-line class-methods-use-this
|
|
449
|
+
onThemeChanged(_newThemeName) { }
|
|
450
|
+
// eslint-disable-next-line class-methods-use-this
|
|
451
|
+
onToggleExpertMode(_expertMode) { }
|
|
422
452
|
/**
|
|
423
453
|
* Changes the current theme
|
|
424
|
-
|
|
454
|
+
*/
|
|
425
455
|
toggleTheme(newThemeName) {
|
|
426
456
|
const themeName = this.state.themeName;
|
|
427
457
|
// dark => blue => colored => light => dark
|
|
428
|
-
newThemeName =
|
|
429
|
-
|
|
430
|
-
(themeName === '
|
|
458
|
+
newThemeName =
|
|
459
|
+
newThemeName ||
|
|
460
|
+
(themeName === 'dark'
|
|
461
|
+
? 'light'
|
|
462
|
+
: themeName === 'blue'
|
|
463
|
+
? 'light'
|
|
464
|
+
: themeName === 'colored'
|
|
465
|
+
? 'light'
|
|
466
|
+
: 'dark');
|
|
431
467
|
if (newThemeName !== themeName) {
|
|
432
468
|
Utils_1.default.setThemeName(newThemeName);
|
|
433
469
|
const newTheme = this.createTheme(newThemeName);
|
|
@@ -443,7 +479,6 @@ class GenericApp extends Router_1.default {
|
|
|
443
479
|
}
|
|
444
480
|
/**
|
|
445
481
|
* Gets the system configuration.
|
|
446
|
-
* @returns {Promise<ioBroker.OtherObject>}
|
|
447
482
|
*/
|
|
448
483
|
getSystemConfig() {
|
|
449
484
|
return this.socket.getSystemConfig();
|
|
@@ -459,8 +494,8 @@ class GenericApp extends Router_1.default {
|
|
|
459
494
|
* Gets called when the socket.io connection is ready.
|
|
460
495
|
* You can overload this function to execute own commands.
|
|
461
496
|
*/
|
|
462
|
-
|
|
463
|
-
}
|
|
497
|
+
// eslint-disable-next-line class-methods-use-this
|
|
498
|
+
onConnectionReady() { }
|
|
464
499
|
/**
|
|
465
500
|
* Encrypts a string.
|
|
466
501
|
*/
|
|
@@ -468,7 +503,6 @@ class GenericApp extends Router_1.default {
|
|
|
468
503
|
let result = '';
|
|
469
504
|
if (this._secret) {
|
|
470
505
|
for (let i = 0; i < value.length; i++) {
|
|
471
|
-
// eslint-disable-next-line no-bitwise
|
|
472
506
|
result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));
|
|
473
507
|
}
|
|
474
508
|
}
|
|
@@ -481,7 +515,6 @@ class GenericApp extends Router_1.default {
|
|
|
481
515
|
let result = '';
|
|
482
516
|
if (this._secret) {
|
|
483
517
|
for (let i = 0; i < value.length; i++) {
|
|
484
|
-
// eslint-disable-next-line no-bitwise
|
|
485
518
|
result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));
|
|
486
519
|
}
|
|
487
520
|
}
|
|
@@ -510,43 +543,47 @@ class GenericApp extends Router_1.default {
|
|
|
510
543
|
*/
|
|
511
544
|
onPrepareSave(settings) {
|
|
512
545
|
// here you can encode values
|
|
513
|
-
this.encryptedFields &&
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
546
|
+
this.encryptedFields &&
|
|
547
|
+
this.encryptedFields.forEach(attr => {
|
|
548
|
+
if (settings[attr]) {
|
|
549
|
+
settings[attr] = this.encrypt(settings[attr]);
|
|
550
|
+
}
|
|
551
|
+
});
|
|
518
552
|
return true;
|
|
519
553
|
}
|
|
520
554
|
/**
|
|
521
555
|
* Gets called after the settings are loaded.
|
|
522
556
|
* You may override this if needed.
|
|
557
|
+
*
|
|
558
|
+
* @param settings instance settings from native part
|
|
523
559
|
* @param encryptedNative optional list of fields to be decrypted
|
|
524
560
|
*/
|
|
525
561
|
onPrepareLoad(settings, encryptedNative) {
|
|
526
562
|
// here you can encode values
|
|
527
|
-
this.encryptedFields &&
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
563
|
+
this.encryptedFields &&
|
|
564
|
+
this.encryptedFields.forEach(attr => {
|
|
565
|
+
if (settings[attr]) {
|
|
566
|
+
settings[attr] = this.decrypt(settings[attr]);
|
|
567
|
+
}
|
|
568
|
+
});
|
|
569
|
+
encryptedNative &&
|
|
570
|
+
encryptedNative.forEach(attr => {
|
|
571
|
+
this.encryptedFields = this.encryptedFields || [];
|
|
572
|
+
!this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);
|
|
573
|
+
if (settings[attr]) {
|
|
574
|
+
settings[attr] = this.decrypt(settings[attr]);
|
|
575
|
+
}
|
|
576
|
+
});
|
|
539
577
|
}
|
|
540
578
|
/**
|
|
541
579
|
* Gets the extendable instances.
|
|
542
|
-
* @returns {Promise<any[]>}
|
|
543
580
|
*/
|
|
544
581
|
async getExtendableInstances() {
|
|
545
582
|
try {
|
|
546
583
|
const instances = await this.socket.getObjectViewSystem('instance', 'system.adapter.', 'system.adapter.\u9999');
|
|
547
584
|
return Object.values(instances).filter(instance => { var _a; return !!((_a = instance === null || instance === void 0 ? void 0 : instance.common) === null || _a === void 0 ? void 0 : _a.webExtendable); });
|
|
548
585
|
}
|
|
549
|
-
catch (
|
|
586
|
+
catch (_a) {
|
|
550
587
|
return [];
|
|
551
588
|
}
|
|
552
589
|
}
|
|
@@ -569,6 +606,7 @@ class GenericApp extends Router_1.default {
|
|
|
569
606
|
}
|
|
570
607
|
/**
|
|
571
608
|
* Saves the settings to the server.
|
|
609
|
+
*
|
|
572
610
|
* @param isClose True if the user is closing the dialog.
|
|
573
611
|
*/
|
|
574
612
|
onSave(isClose) {
|
|
@@ -577,7 +615,8 @@ class GenericApp extends Router_1.default {
|
|
|
577
615
|
this.setState({ errorText: this.state.isConfigurationError });
|
|
578
616
|
return;
|
|
579
617
|
}
|
|
580
|
-
this.socket
|
|
618
|
+
this.socket
|
|
619
|
+
.getObject(this.instanceId)
|
|
581
620
|
.then(_oldObj => {
|
|
582
621
|
oldObj = (_oldObj || {});
|
|
583
622
|
for (const a in this.state.native) {
|
|
@@ -617,7 +656,7 @@ class GenericApp extends Router_1.default {
|
|
|
617
656
|
try {
|
|
618
657
|
window.parent.postMessage('nochange', '*');
|
|
619
658
|
}
|
|
620
|
-
catch (
|
|
659
|
+
catch (_a) {
|
|
621
660
|
// ignore
|
|
622
661
|
}
|
|
623
662
|
this.setState({ changed: false });
|
|
@@ -633,13 +672,13 @@ class GenericApp extends Router_1.default {
|
|
|
633
672
|
if (!this.state.toast) {
|
|
634
673
|
return null;
|
|
635
674
|
}
|
|
636
|
-
return react_1.default.createElement(material_1.Snackbar, { anchorOrigin: {
|
|
675
|
+
return (react_1.default.createElement(material_1.Snackbar, { anchorOrigin: {
|
|
637
676
|
vertical: 'bottom',
|
|
638
677
|
horizontal: 'left',
|
|
639
678
|
}, open: !0, autoHideDuration: 6000, onClose: () => this.setState({ toast: '' }), ContentProps: { 'aria-describedby': 'message-id' }, message: react_1.default.createElement("span", { id: "message-id" }, this.state.toast), action: [
|
|
640
679
|
react_1.default.createElement(material_1.IconButton, { key: "close", "aria-label": "Close", color: "inherit", className: (_a = this.props.classes) === null || _a === void 0 ? void 0 : _a.close, onClick: () => this.setState({ toast: '' }), size: "large" },
|
|
641
680
|
react_1.default.createElement(icons_material_1.Close, null)),
|
|
642
|
-
] });
|
|
681
|
+
] }));
|
|
643
682
|
}
|
|
644
683
|
/**
|
|
645
684
|
* Closes the dialog.
|
|
@@ -654,7 +693,7 @@ class GenericApp extends Router_1.default {
|
|
|
654
693
|
window.parent.postMessage('close', '*');
|
|
655
694
|
}
|
|
656
695
|
}
|
|
657
|
-
catch (
|
|
696
|
+
catch (_a) {
|
|
658
697
|
window.parent.postMessage('close', '*');
|
|
659
698
|
}
|
|
660
699
|
}
|
|
@@ -666,11 +705,12 @@ class GenericApp extends Router_1.default {
|
|
|
666
705
|
if (!this.state.errorText) {
|
|
667
706
|
return null;
|
|
668
707
|
}
|
|
669
|
-
return react_1.default.createElement(Error_1.default, { text: this.state.errorText, onClose: () => this.setState({ errorText: '' }) });
|
|
708
|
+
return (react_1.default.createElement(Error_1.default, { text: this.state.errorText, onClose: () => this.setState({ errorText: '' }) }));
|
|
670
709
|
}
|
|
671
710
|
/**
|
|
672
711
|
* Checks if the configuration has changed.
|
|
673
|
-
*
|
|
712
|
+
*
|
|
713
|
+
* @param native the new state
|
|
674
714
|
*/
|
|
675
715
|
getIsChanged(native) {
|
|
676
716
|
native = native || this.state.native;
|
|
@@ -680,6 +720,7 @@ class GenericApp extends Router_1.default {
|
|
|
680
720
|
}
|
|
681
721
|
/**
|
|
682
722
|
* Gets called when loading the configuration.
|
|
723
|
+
*
|
|
683
724
|
* @param newNative The new configuration object.
|
|
684
725
|
*/
|
|
685
726
|
onLoadConfig(newNative) {
|
|
@@ -702,16 +743,16 @@ class GenericApp extends Router_1.default {
|
|
|
702
743
|
if (!this.state.confirmClose && !this.state.bottomButtons) {
|
|
703
744
|
return null;
|
|
704
745
|
}
|
|
705
|
-
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
706
|
-
this.state.bottomButtons ? react_1.default.createElement(SaveCloseButtons_1.default, { theme: this.state.theme, newReact: this.newReact, noTextOnButtons: this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md', changed: this.state.changed, onSave: isClose => this.onSave(isClose), onClose: () => {
|
|
746
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
747
|
+
this.state.bottomButtons ? (react_1.default.createElement(SaveCloseButtons_1.default, { theme: this.state.theme, newReact: this.newReact, noTextOnButtons: this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md', changed: this.state.changed, onSave: isClose => this.onSave(isClose), onClose: () => {
|
|
707
748
|
if (this.state.changed) {
|
|
708
749
|
this.setState({ confirmClose: true });
|
|
709
750
|
}
|
|
710
751
|
else {
|
|
711
752
|
GenericApp.onClose();
|
|
712
753
|
}
|
|
713
|
-
} }) : null,
|
|
714
|
-
this.state.confirmClose ? react_1.default.createElement(Confirm_1.default, { title: i18n_1.default.t('ra_Please confirm'), text: i18n_1.default.t('ra_Some data are not stored. Discard?'), ok: i18n_1.default.t('ra_Discard'), cancel: i18n_1.default.t('ra_Cancel'), onClose: isYes => this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose()) }) : null);
|
|
754
|
+
} })) : null,
|
|
755
|
+
this.state.confirmClose ? (react_1.default.createElement(Confirm_1.default, { title: i18n_1.default.t('ra_Please confirm'), text: i18n_1.default.t('ra_Some data are not stored. Discard?'), ok: i18n_1.default.t('ra_Discard'), cancel: i18n_1.default.t('ra_Cancel'), onClose: isYes => this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose()) })) : null));
|
|
715
756
|
}
|
|
716
757
|
_updateNativeValue(obj, attrs, value) {
|
|
717
758
|
if (typeof attrs !== 'object') {
|
|
@@ -740,6 +781,7 @@ class GenericApp extends Router_1.default {
|
|
|
740
781
|
}
|
|
741
782
|
/**
|
|
742
783
|
* Update the native value
|
|
784
|
+
*
|
|
743
785
|
* @param attr The attribute name with dots as delimiter.
|
|
744
786
|
* @param value The new value.
|
|
745
787
|
* @param cb Callback which will be called upon completion.
|
|
@@ -752,7 +794,7 @@ class GenericApp extends Router_1.default {
|
|
|
752
794
|
try {
|
|
753
795
|
window.parent.postMessage(changed ? 'change' : 'nochange', '*');
|
|
754
796
|
}
|
|
755
|
-
catch (
|
|
797
|
+
catch (_a) {
|
|
756
798
|
// ignore
|
|
757
799
|
}
|
|
758
800
|
}
|
|
@@ -767,7 +809,8 @@ class GenericApp extends Router_1.default {
|
|
|
767
809
|
}
|
|
768
810
|
/**
|
|
769
811
|
* Sets the toast to be shown.
|
|
770
|
-
*
|
|
812
|
+
*
|
|
813
|
+
* @param toast Text to be shown.
|
|
771
814
|
*/
|
|
772
815
|
showToast(toast) {
|
|
773
816
|
this.setState({ toast });
|
|
@@ -776,11 +819,11 @@ class GenericApp extends Router_1.default {
|
|
|
776
819
|
* Renders helper dialogs
|
|
777
820
|
*/
|
|
778
821
|
renderHelperDialogs() {
|
|
779
|
-
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
822
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
780
823
|
this.renderError(),
|
|
781
824
|
this.renderToast(),
|
|
782
825
|
this.renderSaveCloseButtons(),
|
|
783
|
-
this.renderAlertSnackbar());
|
|
826
|
+
this.renderAlertSnackbar()));
|
|
784
827
|
}
|
|
785
828
|
/**
|
|
786
829
|
* Renders this component.
|
|
@@ -789,11 +832,11 @@ class GenericApp extends Router_1.default {
|
|
|
789
832
|
if (!this.state.loaded) {
|
|
790
833
|
return react_1.default.createElement(Loader_1.default, { themeType: this.state.themeType });
|
|
791
834
|
}
|
|
792
|
-
return react_1.default.createElement("div", { className: "App" },
|
|
835
|
+
return (react_1.default.createElement("div", { className: "App" },
|
|
793
836
|
this.renderError(),
|
|
794
837
|
this.renderToast(),
|
|
795
838
|
this.renderSaveCloseButtons(),
|
|
796
|
-
this.renderAlertSnackbar());
|
|
839
|
+
this.renderAlertSnackbar()));
|
|
797
840
|
}
|
|
798
841
|
}
|
|
799
842
|
exports.default = GenericApp;
|
package/LICENSE
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2019-2024 bluefox <dogafox@gmail.com>
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
22
|
-
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2019-2024 bluefox <dogafox@gmail.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|