@iobroker/adapter-react-v5 7.4.21 → 7.5.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/LICENSE +22 -22
- package/build/AdminConnection.js.map +1 -1
- package/build/Components/404.js +13 -13
- package/build/Components/404.js.map +1 -1
- package/build/Components/ColorPicker.js.map +1 -1
- package/build/Components/ComplexCron.js.map +1 -1
- package/build/Components/CopyToClipboard.js.map +1 -1
- package/build/Components/CustomModal.js.map +1 -1
- package/build/Components/FileBrowser.js +1 -1
- package/build/Components/FileBrowser.js.map +1 -1
- package/build/Components/FileViewer.js.map +1 -1
- package/build/Components/Icon.js.map +1 -1
- package/build/Components/IconPicker.js.map +1 -1
- package/build/Components/IconSelector.js.map +1 -1
- package/build/Components/IobUri.js.map +1 -1
- package/build/Components/Loader.js +223 -223
- package/build/Components/Loader.js.map +1 -1
- package/build/Components/Loaders/MV.js.map +1 -1
- package/build/Components/Loaders/PT.js +103 -103
- package/build/Components/Loaders/PT.js.map +1 -1
- package/build/Components/Loaders/Vendor.js +7 -7
- package/build/Components/Loaders/Vendor.js.map +1 -1
- package/build/Components/MDUtils.js.map +1 -1
- package/build/Components/ObjectBrowser.d.ts +11 -0
- package/build/Components/ObjectBrowser.js +172 -11
- package/build/Components/ObjectBrowser.js.map +1 -1
- package/build/Components/Router.js.map +1 -1
- package/build/Components/SaveCloseButtons.js.map +1 -1
- package/build/Components/Schedule.js.map +1 -1
- package/build/Components/SelectWithIcon.js.map +1 -1
- package/build/Components/SimpleCron/cronText.js.map +1 -1
- package/build/Components/SimpleCron/index.js.map +1 -1
- package/build/Components/TabContainer.js.map +1 -1
- package/build/Components/TabContent.js.map +1 -1
- package/build/Components/TabHeader.js.map +1 -1
- package/build/Components/TableResize.js.map +1 -1
- package/build/Components/TextWithIcon.js.map +1 -1
- package/build/Components/ToggleThemeMenu.js.map +1 -1
- package/build/Components/TreeTable.js.map +1 -1
- package/build/Components/UploadImage.js +305 -305
- package/build/Components/UploadImage.js.map +1 -1
- package/build/Components/withWidth.js.map +1 -1
- package/build/Connection.js.map +1 -1
- package/build/Dialogs/ComplexCron.js.map +1 -1
- package/build/Dialogs/Confirm.js.map +1 -1
- package/build/Dialogs/Cron.js.map +1 -1
- package/build/Dialogs/Error.js.map +1 -1
- package/build/Dialogs/Message.js.map +1 -1
- package/build/Dialogs/SelectFile.js.map +1 -1
- package/build/Dialogs/SimpleCron.js.map +1 -1
- package/build/Dialogs/TextInput.d.ts +1 -1
- package/build/Dialogs/TextInput.js.map +1 -1
- package/build/GenericApp.js.map +1 -1
- package/build/LegacyConnection.d.ts +4 -46
- package/build/LegacyConnection.js.map +1 -1
- package/build/Prompt.js +7 -7
- package/build/Prompt.js.map +1 -1
- package/build/Theme.js +6 -6
- package/build/Theme.js.map +1 -1
- package/build/assets/devices/parseNames.js.map +1 -1
- package/build/assets/devices.json +1 -1
- package/build/assets/lamp_ceiling.svg +8 -8
- package/build/assets/lamp_table.svg +7 -7
- package/build/assets/no_icon.svg +9 -9
- package/build/assets/rooms/parseNames.js.map +1 -1
- package/build/assets/rooms.json +1 -1
- package/build/dictionary.js.map +1 -1
- package/build/i18n/de.json +11 -0
- package/build/i18n/en.json +11 -0
- package/build/i18n/es.json +11 -0
- package/build/i18n/fr.json +11 -0
- package/build/i18n/it.json +11 -0
- package/build/i18n/nl.json +11 -0
- package/build/i18n/pl.json +11 -0
- package/build/i18n/pt.json +11 -0
- package/build/i18n/ru.json +11 -0
- package/build/i18n/uk.json +11 -0
- package/build/i18n/zh-cn.json +11 -0
- package/build/i18n.js.map +1 -1
- package/build/icons/IconAdapter.js.map +1 -1
- package/build/icons/IconAlias.js.map +1 -1
- package/build/icons/IconButtonImage.js.map +1 -1
- package/build/icons/IconChannel.js.map +1 -1
- package/build/icons/IconClearFilter.js.map +1 -1
- package/build/icons/IconClosed.js.map +1 -1
- package/build/icons/IconCopy.js.map +1 -1
- package/build/icons/IconDevice.js.map +1 -1
- package/build/icons/IconDocument.js.map +1 -1
- package/build/icons/IconDocumentReadOnly.js.map +1 -1
- package/build/icons/IconExpert.js.map +1 -1
- package/build/icons/IconFx.js +1 -1
- package/build/icons/IconFx.js.map +1 -1
- package/build/icons/IconInstance.js.map +1 -1
- package/build/icons/IconLogout.js +1 -1
- package/build/icons/IconLogout.js.map +1 -1
- package/build/icons/IconNoIcon.js.map +1 -1
- package/build/icons/IconOpen.js.map +1 -1
- package/build/icons/IconProps.js.map +1 -1
- package/build/icons/IconState.js.map +1 -1
- package/build/icons/IconVacuum.js.map +1 -1
- package/build/index.css +56 -56
- package/build/index.js.map +1 -1
- package/craco-module-federation.js +62 -62
- package/i18n/de.json +11 -0
- package/i18n/en.json +11 -0
- package/i18n/es.json +11 -0
- package/i18n/fr.json +11 -0
- package/i18n/it.json +11 -0
- package/i18n/nl.json +11 -0
- package/i18n/pl.json +11 -0
- package/i18n/pt.json +11 -0
- package/i18n/ru.json +11 -0
- package/i18n/uk.json +11 -0
- package/i18n/zh-cn.json +11 -0
- package/index.css +56 -56
- package/modulefederation.admin.config.js +33 -33
- package/package.json +14 -15
- package/tasksExample.js +91 -91
|
@@ -8,7 +8,7 @@ import React, { Component, createRef } from 'react';
|
|
|
8
8
|
import SVG from 'react-inlinesvg';
|
|
9
9
|
import { Badge, Box, Button, Checkbox, CircularProgress, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Fab, FormControl, FormControlLabel, Grid2, IconButton, Input, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Menu, MenuItem, Paper, Select, Snackbar, Switch, TextField, Tooltip, } from '@mui/material';
|
|
10
10
|
// Icons
|
|
11
|
-
import { Add as AddIcon, ArrowRight as ArrowRightIcon, BedroomParent, BorderColor, Build as BuildIcon, CalendarToday as IconSchedule, Check as IconCheck, Close as IconClose, Code as IconScript, Construction, CreateNewFolder as IconFolder, Delete as IconDelete, Description as IconMeta, Edit as IconEdit, Error as IconError, FindInPage, FormatItalic as IconValueEdit, Info as IconInfo, Link as IconLink, ListAlt as IconEnum, LooksOne as LooksOneIcon, PersonOutlined as IconUser, Publish as PublishIcon, Refresh as RefreshIcon, Router as IconHost, Settings as IconConfig, SettingsApplications as IconSystem, DataObject as IconData, ShowChart as IconChart, SupervisedUserCircle as IconGroup, TextFields as TextFieldsIcon, ViewColumn as IconColumns, Wifi as IconConnection, WifiOff as IconDisconnected, } from '@mui/icons-material';
|
|
11
|
+
import { Add as AddIcon, ArrowRight as ArrowRightIcon, BedroomParent, BorderColor, Build as BuildIcon, CalendarToday as IconSchedule, Check as IconCheck, Close as IconClose, Code as IconScript, Construction, CreateNewFolder as IconFolder, Delete as IconDelete, Description as IconMeta, Edit as IconEdit, Error as IconError, FindInPage, FormatItalic as IconValueEdit, Info as IconInfo, Link as IconLink, ListAlt as IconEnum, LooksOne as LooksOneIcon, PersonOutlined as IconUser, Publish as PublishIcon, Refresh as RefreshIcon, Router as IconHost, Settings as IconConfig, SettingsApplications as IconSystem, DataObject as IconData, ShowChart as IconChart, SupervisedUserCircle as IconGroup, TextFields as TextFieldsIcon, ViewColumn as IconColumns, Wifi as IconConnection, WifiOff as IconDisconnected, DriveFileRenameOutline, } from '@mui/icons-material';
|
|
12
12
|
import { IconExpert } from '../icons/IconExpert';
|
|
13
13
|
import { IconAdapter } from '../icons/IconAdapter';
|
|
14
14
|
import { IconChannel } from '../icons/IconChannel';
|
|
@@ -574,9 +574,6 @@ const styles = {
|
|
|
574
574
|
height: 'calc(100% - 50px)',
|
|
575
575
|
overflow: 'auto',
|
|
576
576
|
},
|
|
577
|
-
enumButton: {
|
|
578
|
-
float: 'right',
|
|
579
|
-
},
|
|
580
577
|
enumCheckbox: {
|
|
581
578
|
minWidth: 0,
|
|
582
579
|
},
|
|
@@ -1615,6 +1612,7 @@ function formatValue(options) {
|
|
|
1615
1612
|
}
|
|
1616
1613
|
if (valText.v?.length > 40) {
|
|
1617
1614
|
valText.v = `${valText.v.substring(0, 40)}...`;
|
|
1615
|
+
valText.c = valText.v;
|
|
1618
1616
|
}
|
|
1619
1617
|
if (isCommon?.unit) {
|
|
1620
1618
|
valText.u = isCommon.unit;
|
|
@@ -2032,6 +2030,7 @@ export class ObjectBrowserClass extends Component {
|
|
|
2032
2030
|
excludeTranslations: false,
|
|
2033
2031
|
tooltipInfo: null,
|
|
2034
2032
|
aliasMenu: '',
|
|
2033
|
+
showRenameDialog: null,
|
|
2035
2034
|
};
|
|
2036
2035
|
this.texts = {
|
|
2037
2036
|
name: props.t('ra_Name'),
|
|
@@ -3368,6 +3367,139 @@ export class ObjectBrowserClass extends Component {
|
|
|
3368
3367
|
")"),
|
|
3369
3368
|
React.createElement(Button, { color: "grey", variant: "contained", onClick: () => this.setState({ showExportDialog: false, showAllExportOptions: false }), startIcon: React.createElement(IconClose, null) }, this.props.t('ra_Cancel')))));
|
|
3370
3369
|
}
|
|
3370
|
+
static calculateNewId(oldId, newId, id) {
|
|
3371
|
+
// find common name
|
|
3372
|
+
const oldParts = oldId.split('.');
|
|
3373
|
+
const newParts = newId.split('.');
|
|
3374
|
+
let i = 0;
|
|
3375
|
+
while (oldParts[i] === newParts[i]) {
|
|
3376
|
+
i++;
|
|
3377
|
+
}
|
|
3378
|
+
const parts = id.split('.');
|
|
3379
|
+
parts.splice(0, i + 1);
|
|
3380
|
+
return `${newId}.${parts.join('.')}`;
|
|
3381
|
+
}
|
|
3382
|
+
async renameObject(oldId, newId, withChildren) {
|
|
3383
|
+
if (oldId === newId) {
|
|
3384
|
+
return;
|
|
3385
|
+
}
|
|
3386
|
+
let obj;
|
|
3387
|
+
try {
|
|
3388
|
+
obj = await this.props.socket.getObject(oldId);
|
|
3389
|
+
}
|
|
3390
|
+
catch {
|
|
3391
|
+
// ignore
|
|
3392
|
+
}
|
|
3393
|
+
let state;
|
|
3394
|
+
if (obj?.type === 'state') {
|
|
3395
|
+
state = await this.props.socket.getState(oldId);
|
|
3396
|
+
}
|
|
3397
|
+
if (withChildren) {
|
|
3398
|
+
const children = Object.keys(this.objects).filter(id => id.startsWith(`${oldId}.`));
|
|
3399
|
+
for (const id of children) {
|
|
3400
|
+
const nid = ObjectBrowserClass.calculateNewId(oldId, newId, id);
|
|
3401
|
+
// calculate new id
|
|
3402
|
+
await this.renameObject(id, nid, false);
|
|
3403
|
+
}
|
|
3404
|
+
}
|
|
3405
|
+
if (obj) {
|
|
3406
|
+
await this.props.socket.setObject(newId, obj);
|
|
3407
|
+
if (state) {
|
|
3408
|
+
await this.props.socket.setState(newId, state);
|
|
3409
|
+
}
|
|
3410
|
+
await this.props.socket.delObject(oldId);
|
|
3411
|
+
}
|
|
3412
|
+
}
|
|
3413
|
+
renderRenameDialog() {
|
|
3414
|
+
if (!this.state.showRenameDialog) {
|
|
3415
|
+
return null;
|
|
3416
|
+
}
|
|
3417
|
+
let newID;
|
|
3418
|
+
let notExtendedPossible = true;
|
|
3419
|
+
const parts = this.state.showRenameDialog.id.split('.');
|
|
3420
|
+
if (this.state.showRenameDialog.extended) {
|
|
3421
|
+
newID = `${parts[0]}.${parts[1]}.${this.state.showRenameDialog.value}`;
|
|
3422
|
+
parts.pop();
|
|
3423
|
+
const parentId = parts.join('.');
|
|
3424
|
+
const newParts = newID.split('.');
|
|
3425
|
+
newParts.splice(parentId.length);
|
|
3426
|
+
if (newParts.join('.') !== parentId) {
|
|
3427
|
+
notExtendedPossible = false;
|
|
3428
|
+
}
|
|
3429
|
+
}
|
|
3430
|
+
else {
|
|
3431
|
+
parts.pop();
|
|
3432
|
+
newID = `${parts.join('.')}.${this.state.showRenameDialog.value}`;
|
|
3433
|
+
}
|
|
3434
|
+
return (React.createElement(Dialog, { open: !0, maxWidth: "md", fullWidth: true, onClose: () => this.setState({ showRenameDialog: null }) },
|
|
3435
|
+
React.createElement(DialogTitle, null, this.props.t('ra_Rename object')),
|
|
3436
|
+
React.createElement(DialogContent, null,
|
|
3437
|
+
React.createElement(TextField, { value: this.state.showRenameDialog.value, onChange: e => {
|
|
3438
|
+
const value = e.target.value
|
|
3439
|
+
.replace(Utils.FORBIDDEN_CHARS, '_')
|
|
3440
|
+
.replace(/\s/g, '_')
|
|
3441
|
+
.replace(/,/g, '_')
|
|
3442
|
+
.replace(/__/g, '_')
|
|
3443
|
+
.replace(/__/g, '_');
|
|
3444
|
+
if (!this.state.showRenameDialog.extended && value.includes('.')) {
|
|
3445
|
+
this.setState({
|
|
3446
|
+
showRenameDialog: {
|
|
3447
|
+
...this.state.showRenameDialog,
|
|
3448
|
+
value: e.target.value.replace(/\./g, '_'),
|
|
3449
|
+
},
|
|
3450
|
+
});
|
|
3451
|
+
}
|
|
3452
|
+
else {
|
|
3453
|
+
this.setState({
|
|
3454
|
+
showRenameDialog: { ...this.state.showRenameDialog, value },
|
|
3455
|
+
});
|
|
3456
|
+
}
|
|
3457
|
+
}, variant: "standard", fullWidth: true, label: this.props.t('ra_New object ID'), helperText: `${this.props.t('ra_New object ID')}: ${newID}` }),
|
|
3458
|
+
this.props.expertMode ? (React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { disabled: !notExtendedPossible, checked: this.state.showRenameDialog.extended, onChange: () => {
|
|
3459
|
+
if (this.state.showRenameDialog.extended) {
|
|
3460
|
+
const parts = this.state.showRenameDialog.value.split('.');
|
|
3461
|
+
this.setState({
|
|
3462
|
+
showRenameDialog: {
|
|
3463
|
+
...this.state.showRenameDialog,
|
|
3464
|
+
value: parts.pop(),
|
|
3465
|
+
extended: false,
|
|
3466
|
+
},
|
|
3467
|
+
});
|
|
3468
|
+
}
|
|
3469
|
+
else {
|
|
3470
|
+
const parts = this.state.showRenameDialog.id.split('.');
|
|
3471
|
+
parts.shift(); // remove "javascript"
|
|
3472
|
+
parts.shift(); // remove "0"
|
|
3473
|
+
parts.pop(); // remove the last part
|
|
3474
|
+
this.setState({
|
|
3475
|
+
showRenameDialog: {
|
|
3476
|
+
...this.state.showRenameDialog,
|
|
3477
|
+
value: `${parts.join('.')}.${this.state.showRenameDialog.value}`,
|
|
3478
|
+
extended: true,
|
|
3479
|
+
},
|
|
3480
|
+
});
|
|
3481
|
+
}
|
|
3482
|
+
} }), label: this.props.t('ra_Edit full path') })) : null,
|
|
3483
|
+
this.state.showRenameDialog.hasChildren ? (React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: this.state.showRenameDialog.renameAllChildren, onChange: () => {
|
|
3484
|
+
this.setState({
|
|
3485
|
+
showRenameDialog: {
|
|
3486
|
+
...this.state.showRenameDialog,
|
|
3487
|
+
renameAllChildren: !this.state.showRenameDialog.renameAllChildren,
|
|
3488
|
+
},
|
|
3489
|
+
});
|
|
3490
|
+
} }), label: this.props.t('ra_Rename all children') })) : null),
|
|
3491
|
+
React.createElement(DialogActions, null,
|
|
3492
|
+
React.createElement(Button, { disabled: !this.state.showRenameDialog.value ||
|
|
3493
|
+
this.state.showRenameDialog.value.endsWith('.') ||
|
|
3494
|
+
newID === this.state.showRenameDialog.id, color: "primary", variant: "contained", onClick: async () => {
|
|
3495
|
+
await this.renameObject(this.state.showRenameDialog.id, newID, this.state.showRenameDialog.hasChildren &&
|
|
3496
|
+
this.state.showRenameDialog.renameAllChildren);
|
|
3497
|
+
this.setState({ showRenameDialog: null });
|
|
3498
|
+
} }, newID !== this.state.showRenameDialog.id && this.objects[newID]
|
|
3499
|
+
? this.props.t('ra_Replace')
|
|
3500
|
+
: this.props.t('ra_Rename')),
|
|
3501
|
+
React.createElement(Button, { variant: "contained", color: "grey", onClick: () => this.setState({ showRenameDialog: null }), startIcon: React.createElement(IconClose, null) }, this.props.t('ra_Cancel')))));
|
|
3502
|
+
}
|
|
3371
3503
|
handleJsonUpload(evt) {
|
|
3372
3504
|
const target = evt.target;
|
|
3373
3505
|
const f = target.files?.length && target.files[0];
|
|
@@ -3948,7 +4080,6 @@ export class ObjectBrowserClass extends Component {
|
|
|
3948
4080
|
});
|
|
3949
4081
|
const valTextRx = [];
|
|
3950
4082
|
item.data.state = { valTextRx };
|
|
3951
|
-
const copyText = valText.v || '';
|
|
3952
4083
|
valTextRx.push(React.createElement("span", { className: `newValueBrowser-${this.props.themeType || 'light'}`, key: `${valText.v.toString()}valText`, style: {
|
|
3953
4084
|
whiteSpace: 'nowrap',
|
|
3954
4085
|
display: 'inline-block',
|
|
@@ -3965,6 +4096,7 @@ export class ObjectBrowserClass extends Component {
|
|
|
3965
4096
|
")"));
|
|
3966
4097
|
}
|
|
3967
4098
|
if (!narrowStyleWithDetails) {
|
|
4099
|
+
const copyText = valText.c !== undefined ? valText.c : valText.v || '';
|
|
3968
4100
|
valTextRx.push(React.createElement(IconCopy, { className: "copyButton", style: this.styles.iconCopy, onClick: e => this.onCopy(e, copyText), key: "cc" }));
|
|
3969
4101
|
}
|
|
3970
4102
|
// <IconEdit className="copyButton" style={{{ ...styles.cellButtonsValueButton, styles.cellButtonsValueButtonEdit)} key="ce" />
|
|
@@ -4076,9 +4208,16 @@ export class ObjectBrowserClass extends Component {
|
|
|
4076
4208
|
});
|
|
4077
4209
|
// const hasIcons = !!enums.find(item => item.icon);
|
|
4078
4210
|
return (React.createElement(Dialog, { sx: { '& .MuiPaper-root': styles.enumDialog }, onClose: () => this.setState({ enumDialog: null }), "aria-labelledby": "enum-dialog-title", open: !0 },
|
|
4079
|
-
React.createElement(DialogTitle, { id: "enum-dialog-title"
|
|
4211
|
+
React.createElement(DialogTitle, { id: "enum-dialog-title", style: {
|
|
4212
|
+
display: 'flex',
|
|
4213
|
+
justifyContent: 'space-between',
|
|
4214
|
+
width: '100%',
|
|
4215
|
+
flexWrap: 'nowrap',
|
|
4216
|
+
gap: 8,
|
|
4217
|
+
paddingRight: 12,
|
|
4218
|
+
} },
|
|
4080
4219
|
type === 'func' ? this.props.t('ra_Define functions') : this.props.t('ra_Define rooms'),
|
|
4081
|
-
React.createElement(Fab, {
|
|
4220
|
+
React.createElement(Fab, { color: "primary", disabled: enumsOriginal === JSON.stringify(itemEnums), size: "small", onClick: () => this.syncEnum(item.data.id, type, itemEnums).then(() => this.setState({ enumDialog: null, enumDialogEnums: null })) },
|
|
4082
4221
|
React.createElement(IconCheck, null))),
|
|
4083
4222
|
React.createElement(List, { sx: { '&.MuiList-root': styles.enumList } }, enums.map(_item => {
|
|
4084
4223
|
let id;
|
|
@@ -4922,7 +5061,7 @@ export class ObjectBrowserClass extends Component {
|
|
|
4922
5061
|
? this.systemConfig.common.isFloatComma
|
|
4923
5062
|
: this.props.isFloatComma,
|
|
4924
5063
|
});
|
|
4925
|
-
this.onCopy(e, valText.v.toString());
|
|
5064
|
+
this.onCopy(e, valText.c !== undefined ? valText.c : valText.v.toString());
|
|
4926
5065
|
}, key: "cc" }))),
|
|
4927
5066
|
colButtons && (React.createElement("div", { style: { ...styles.cellDetailsLine, justifyContent: 'right' } }, colButtons))));
|
|
4928
5067
|
colName = null;
|
|
@@ -5256,9 +5395,7 @@ export class ObjectBrowserClass extends Component {
|
|
|
5256
5395
|
window.removeEventListener('mouseup', this.resizerMouseUp);
|
|
5257
5396
|
};
|
|
5258
5397
|
resizerMouseDown = (e) => {
|
|
5259
|
-
this.storedWidths
|
|
5260
|
-
this.storedWidths ||
|
|
5261
|
-
JSON.parse(JSON.stringify(SCREEN_WIDTHS[this.props.width || 'lg']));
|
|
5398
|
+
this.storedWidths ||= JSON.parse(JSON.stringify(SCREEN_WIDTHS[this.props.width || 'lg']));
|
|
5262
5399
|
this.resizerCurrentWidths = this.resizerCurrentWidths || {};
|
|
5263
5400
|
this.resizerActiveDiv = e.target.parentNode;
|
|
5264
5401
|
this.resizerActiveName = this.resizerActiveDiv.dataset.name || null;
|
|
@@ -5838,6 +5975,29 @@ export class ObjectBrowserClass extends Component {
|
|
|
5838
5975
|
},
|
|
5839
5976
|
],
|
|
5840
5977
|
},
|
|
5978
|
+
RENAME: {
|
|
5979
|
+
key: '8',
|
|
5980
|
+
visibility: !!(!this.props.notEditable &&
|
|
5981
|
+
!item.data.id.startsWith('system.') &&
|
|
5982
|
+
item.data.id.split('.').length > 2 &&
|
|
5983
|
+
(this.props.expertMode ||
|
|
5984
|
+
item.data.id.startsWith('javascript.0.') ||
|
|
5985
|
+
item.data.id.startsWith('0_userdata.0.'))),
|
|
5986
|
+
icon: React.createElement(DriveFileRenameOutline, null),
|
|
5987
|
+
label: this.props.t('ra_Rename'),
|
|
5988
|
+
onClick: () => {
|
|
5989
|
+
this.setState({
|
|
5990
|
+
showContextMenu: null,
|
|
5991
|
+
showRenameDialog: {
|
|
5992
|
+
id: item.data.id,
|
|
5993
|
+
value: item.data.id.split('.').pop(),
|
|
5994
|
+
extended: false,
|
|
5995
|
+
hasChildren: !!item.children?.length,
|
|
5996
|
+
renameAllChildren: true,
|
|
5997
|
+
},
|
|
5998
|
+
});
|
|
5999
|
+
},
|
|
6000
|
+
},
|
|
5841
6001
|
DELETE: {
|
|
5842
6002
|
key: 'Delete',
|
|
5843
6003
|
visibility: !!(this.props.onObjectDelete &&
|
|
@@ -6044,6 +6204,7 @@ export class ObjectBrowserClass extends Component {
|
|
|
6044
6204
|
this.renderEnumDialog(),
|
|
6045
6205
|
this.renderErrorDialog(),
|
|
6046
6206
|
this.renderExportDialog(),
|
|
6207
|
+
this.renderRenameDialog(),
|
|
6047
6208
|
this.state.modalNewObj && this.props.modalNewObject && this.props.modalNewObject(this),
|
|
6048
6209
|
this.state.modalEditOfAccess &&
|
|
6049
6210
|
this.state.modalEditOfAccessObjData &&
|