@iobroker/adapter-react-v5 7.5.0 → 7.5.2

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.
@@ -79,10 +79,13 @@ interface DialogSelectIDProps {
79
79
  root?: string;
80
80
  /** Allow selection of non-objects (virtual branches) */
81
81
  allowNonObjects?: boolean;
82
+ /** Will be called by selection, so the decision could be done if the OK button is available or not */
83
+ onSelectConfirm?: (selected: string | string[], objects: Record<string, ioBroker.Object | null | undefined>) => Promise<boolean>;
82
84
  }
83
85
  interface DialogSelectIDState {
84
86
  selected: string[];
85
87
  name: string | null;
88
+ selectionBlocked: boolean;
86
89
  }
87
90
  export declare class DialogSelectID extends Component<DialogSelectIDProps, DialogSelectIDState> {
88
91
  private readonly dialogName;
@@ -4,7 +4,6 @@
4
4
  * MIT License
5
5
  *
6
6
  */
7
- // please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined
8
7
  import React, { Component } from 'react';
9
8
  import { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';
10
9
  import { Cancel as IconCancel, Check as IconOk } from '@mui/icons-material';
@@ -50,6 +49,7 @@ export class DialogSelectID extends Component {
50
49
  this.state = {
51
50
  selected,
52
51
  name: '',
52
+ selectionBlocked: false,
53
53
  };
54
54
  }
55
55
  handleCancel() {
@@ -115,7 +115,7 @@ export class DialogSelectID extends Component {
115
115
  themeName: this.props.themeName, themeType: this.props.themeType, theme: this.props.theme, customFilter: this.props.customFilter, allowNonObjects: this.props.allowNonObjects, onFilterChanged: (filterConfig) => {
116
116
  this.filters = filterConfig;
117
117
  (window._localStorage || window.localStorage).setItem(this.dialogName, JSON.stringify(filterConfig));
118
- }, onSelect: (_selected, name, isDouble) => {
118
+ }, onSelect: async (_selected, name, isDouble) => {
119
119
  let selected;
120
120
  if (!Array.isArray(_selected)) {
121
121
  selected = [_selected];
@@ -124,14 +124,27 @@ export class DialogSelectID extends Component {
124
124
  selected = _selected;
125
125
  }
126
126
  if (JSON.stringify(selected) !== JSON.stringify(this.state.selected)) {
127
- this.setState({ selected, name }, () => isDouble && this.handleOk());
127
+ let selectionAllowed = true;
128
+ if (this.props.onSelectConfirm) {
129
+ const objects = {};
130
+ for (const id of selected) {
131
+ try {
132
+ objects[id] = await this.props.socket.getObject(id);
133
+ }
134
+ catch {
135
+ // ignore
136
+ }
137
+ }
138
+ selectionAllowed = await this.props.onSelectConfirm(selected, objects);
139
+ }
140
+ this.setState({ selected, name, selectionBlocked: !selectionAllowed }, () => isDouble && this.handleOk());
128
141
  }
129
142
  else if (isDouble) {
130
143
  this.handleOk();
131
144
  }
132
145
  }, filterFunc: this.filterFunc, title: "", classes: {} })),
133
146
  React.createElement(DialogActions, null,
134
- React.createElement(Button, { id: `ar_dialog_selectid_ok_${this.props.dialogName || ''}`, variant: "contained", onClick: () => this.handleOk(), startIcon: React.createElement(IconOk, null), disabled: !this.state.selected.length, color: "primary" }, this.props.ok || I18n.t('ra_Ok')),
147
+ React.createElement(Button, { id: `ar_dialog_selectid_ok_${this.props.dialogName || ''}`, variant: "contained", onClick: () => this.handleOk(), startIcon: React.createElement(IconOk, null), disabled: !this.state.selected.length || this.state.selectionBlocked, color: "primary" }, this.props.ok || I18n.t('ra_Ok')),
135
148
  React.createElement(Button, { id: `ar_dialog_selectid_cancel_${this.props.dialogName || ''}`, color: "grey", variant: "contained", onClick: () => this.handleCancel(), startIcon: React.createElement(IconCancel, null) }, this.props.cancel || I18n.t('ra_Cancel')))));
136
149
  }
137
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SelectID.js","sourceRoot":"./src/","sources":["Dialogs/SelectID.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2023 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React, { Component, type JSX } from 'react';\n\nimport { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';\n\nimport { Cancel as IconCancel, Check as IconOk } from '@mui/icons-material';\n\nimport type { Connection } from '../Connection';\n\nimport { I18n } from '../i18n';\nimport {\n ObjectBrowser,\n type ObjectBrowserFilter,\n type ObjectBrowserColumn,\n type ObjectBrowserCustomFilter,\n} from '../Components/ObjectBrowser';\nimport type { IobTheme } from '../types';\n\nexport interface SelectIDFilters {\n id?: string;\n name?: string;\n room?: string;\n func?: string;\n role?: string;\n type?: string;\n custom?: string;\n}\n\ninterface DialogSelectIDProps {\n /** The internal name of the dialog; default: \"default\". Used to store settings in local storage */\n dialogName?: string;\n /** The dialog title; default: Please select object ID... (translated) */\n title?: string;\n /** Set to true to allow the selection of multiple IDs. */\n multiSelect?: boolean;\n /** Show folders before any leaves. */\n foldersFirst?: boolean;\n /** Path prefix for images (default: '.') */\n imagePrefix?: string;\n /** @deprecated same as imagePrefix */\n prefix?: string;\n /** Show the expert button */\n showExpertButton?: boolean;\n /** Force expert mode */\n expertMode?: boolean;\n /** optional ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */\n columns?: ObjectBrowserColumn[];\n /** Object types to show; default: 'state' only */\n types?: ioBroker.ObjectType | ioBroker.ObjectType[];\n /** The language. */\n lang?: ioBroker.Languages;\n /** The socket connection. */\n socket: Connection;\n /** Can't objects be edited? (default: true) */\n notEditable?: boolean;\n /** Theme name. */\n themeName?: string;\n /** Theme type: dark or light */\n themeType?: string;\n /** The theme object */\n theme: IobTheme;\n /** The date format for the date columns */\n dateFormat?: string;\n /** Is use comma or point for displaying of float numbers */\n isFloatComma?: boolean;\n /** Custom filter. */\n customFilter?: ObjectBrowserCustomFilter;\n /** The selected IDs. */\n selected?: string | string[];\n /** The ok button text; default: OK (translated) */\n ok?: string;\n /** The cancel button text; default: Cancel (translated) */\n cancel?: string;\n /** Close handler that is always called when the dialog is closed. */\n onClose: () => void;\n /** Handler that is called when the user presses OK. */\n onOk: (selected: string | string[] | undefined, name: string | null) => void;\n /**\n * Function to filter out all unnecessary objects. Can be string or function.\n * It cannot be used together with \"types\".\n * Example for function: `obj => obj.common?.type === 'boolean'` to show only boolean states\n * In case of string, it must look like `obj.common && obj.common.type === 'boolean'`\n */\n filterFunc?: string | ((obj: ioBroker.Object) => boolean);\n /** predefined filter fields, like {\"id\":\"\",\"name\":\"\",\"room\":\"\",\"func\":\"\",\"role\":\"level\",\"type\":\"\",\"custom\":\"\"} */\n filters?: SelectIDFilters;\n /** Show elements only of this root ID */\n root?: string;\n /** Allow selection of non-objects (virtual branches) */\n allowNonObjects?: boolean;\n}\n\ninterface DialogSelectIDState {\n selected: string[];\n name: string | null;\n}\n\nexport class DialogSelectID extends Component<DialogSelectIDProps, DialogSelectIDState> {\n private readonly dialogName: string;\n\n private filters: ObjectBrowserFilter;\n\n private readonly filterFunc?: (obj: ioBroker.Object) => boolean;\n\n constructor(props: DialogSelectIDProps) {\n super(props);\n this.dialogName = this.props.dialogName || 'default';\n this.dialogName = `SelectID.${this.dialogName}`;\n\n const filters: string = ((window as any)._localStorage || window.localStorage).getItem(this.dialogName) || '{}';\n\n try {\n this.filters = JSON.parse(filters);\n } catch {\n this.filters = {};\n }\n\n if (props.filters) {\n this.filters = { ...this.filters, ...(props.filters || {}) };\n }\n\n let selected = this.props.selected || [];\n if (!Array.isArray(selected)) {\n selected = [selected];\n }\n selected = selected.filter(id => id);\n\n if (props.filterFunc) {\n if (typeof props.filterFunc === 'string') {\n try {\n this.filterFunc = new Function('obj', props.filterFunc) as (obj: ioBroker.Object) => boolean;\n } catch {\n console.error(`Cannot parse filter function: \"obj => ${props.filterFunc}\"`);\n this.filterFunc = undefined;\n }\n } else {\n this.filterFunc = props.filterFunc;\n }\n }\n\n this.state = {\n selected,\n name: '',\n };\n }\n\n handleCancel(): void {\n this.props.onClose();\n }\n\n handleOk(): void {\n this.props.onOk(this.props.multiSelect ? this.state.selected : this.state.selected[0] || '', this.state.name);\n this.props.onClose();\n }\n\n render(): JSX.Element {\n let title;\n if (this.state.name || this.state.selected.length) {\n if (this.state.selected.length === 1) {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span\n key=\"id\"\n style={{ fontWeight: 'bold', fontStyle: 'italic' }}\n >\n {(this.state.name || this.state.selected[0]) +\n (this.state.name ? ` [${this.state.selected[0]}]` : '')}\n </span>,\n ];\n } else {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span\n key=\"id\"\n style={{ fontWeight: 'bold', fontStyle: 'italic' }}\n >\n {I18n.t('%s items', this.state.selected.length.toString())}\n </span>,\n ];\n }\n } else {\n title = this.props.title || I18n.t('ra_Please select object ID...');\n }\n\n return (\n <Dialog\n onClose={() => {}}\n maxWidth={false}\n sx={{\n '& .MuiDialog-paper': {\n height: '95%',\n p: '4px',\n width: '100%',\n maxWidth: '100%',\n maxHeight: 'calc(100% - 16px)',\n },\n }}\n fullWidth\n open={!0}\n aria-labelledby=\"ar_dialog_selectid_title\"\n >\n <DialogTitle\n id=\"ar_dialog_selectid_title\"\n style={{\n whiteSpace: 'nowrap',\n width: 'calc(100% - 72px)',\n overflow: 'hidden',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {title}\n </DialogTitle>\n <DialogContent\n style={{\n height: '100%',\n overflow: 'hidden',\n padding: '8px 4px',\n }}\n >\n <ObjectBrowser\n foldersFirst={this.props.foldersFirst}\n imagePrefix={this.props.imagePrefix || this.props.prefix} // prefix is for back compatibility\n dateFormat={this.props.dateFormat}\n defaultFilters={this.filters}\n dialogName={this.dialogName}\n isFloatComma={this.props.isFloatComma}\n showExpertButton={\n this.props.showExpertButton !== undefined ? this.props.showExpertButton : true\n }\n expertMode={this.props.expertMode}\n // style={{ width: '100%', height: '100%' }}\n columns={this.props.columns || ['name', 'type', 'role', 'room', 'func', 'val']}\n types={\n this.props.types\n ? Array.isArray(this.props.types)\n ? this.props.types\n : [this.props.types]\n : ['state']\n }\n root={this.props.root}\n t={I18n.t}\n lang={this.props.lang || I18n.getLanguage()}\n socket={this.props.socket}\n selected={this.state.selected}\n multiSelect={this.props.multiSelect}\n notEditable={this.props.notEditable === undefined ? true : this.props.notEditable}\n // name={this.state.name}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n customFilter={this.props.customFilter}\n allowNonObjects={this.props.allowNonObjects}\n onFilterChanged={(filterConfig: ObjectBrowserFilter) => {\n this.filters = filterConfig;\n ((window as any)._localStorage || window.localStorage).setItem(\n this.dialogName,\n JSON.stringify(filterConfig),\n );\n }}\n onSelect={(_selected: string | string[], name: string | null, isDouble?: boolean) => {\n let selected: string[];\n if (!Array.isArray(_selected)) {\n selected = [_selected];\n } else {\n selected = _selected;\n }\n if (JSON.stringify(selected) !== JSON.stringify(this.state.selected)) {\n this.setState({ selected, name }, () => isDouble && this.handleOk());\n } else if (isDouble) {\n this.handleOk();\n }\n }}\n filterFunc={this.filterFunc}\n title=\"\"\n classes={{}}\n />\n </DialogContent>\n <DialogActions>\n <Button\n id={`ar_dialog_selectid_ok_${this.props.dialogName || ''}`}\n variant=\"contained\"\n onClick={() => this.handleOk()}\n startIcon={<IconOk />}\n disabled={!this.state.selected.length}\n color=\"primary\"\n >\n {this.props.ok || I18n.t('ra_Ok')}\n </Button>\n <Button\n id={`ar_dialog_selectid_cancel_${this.props.dialogName || ''}`}\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleCancel()}\n startIcon={<IconCancel />}\n >\n {this.props.cancel || I18n.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"SelectID.js","sourceRoot":"./src/","sources":["Dialogs/SelectID.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2023 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { Component, type JSX } from 'react';\n\nimport { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';\n\nimport { Cancel as IconCancel, Check as IconOk } from '@mui/icons-material';\n\nimport type { Connection } from '../Connection';\n\nimport { I18n } from '../i18n';\nimport {\n ObjectBrowser,\n type ObjectBrowserFilter,\n type ObjectBrowserColumn,\n type ObjectBrowserCustomFilter,\n} from '../Components/ObjectBrowser';\nimport type { IobTheme } from '../types';\n\nexport interface SelectIDFilters {\n id?: string;\n name?: string;\n room?: string;\n func?: string;\n role?: string;\n type?: string;\n custom?: string;\n}\n\ninterface DialogSelectIDProps {\n /** The internal name of the dialog; default: \"default\". Used to store settings in local storage */\n dialogName?: string;\n /** The dialog title; default: Please select object ID... (translated) */\n title?: string;\n /** Set to true to allow the selection of multiple IDs. */\n multiSelect?: boolean;\n /** Show folders before any leaves. */\n foldersFirst?: boolean;\n /** Path prefix for images (default: '.') */\n imagePrefix?: string;\n /** @deprecated same as imagePrefix */\n prefix?: string;\n /** Show the expert button */\n showExpertButton?: boolean;\n /** Force expert mode */\n expertMode?: boolean;\n /** optional ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */\n columns?: ObjectBrowserColumn[];\n /** Object types to show; default: 'state' only */\n types?: ioBroker.ObjectType | ioBroker.ObjectType[];\n /** The language. */\n lang?: ioBroker.Languages;\n /** The socket connection. */\n socket: Connection;\n /** Can't objects be edited? (default: true) */\n notEditable?: boolean;\n /** Theme name. */\n themeName?: string;\n /** Theme type: dark or light */\n themeType?: string;\n /** The theme object */\n theme: IobTheme;\n /** The date format for the date columns */\n dateFormat?: string;\n /** Is use comma or point for displaying of float numbers */\n isFloatComma?: boolean;\n /** Custom filter. */\n customFilter?: ObjectBrowserCustomFilter;\n /** The selected IDs. */\n selected?: string | string[];\n /** The ok button text; default: OK (translated) */\n ok?: string;\n /** The cancel button text; default: Cancel (translated) */\n cancel?: string;\n /** Close handler that is always called when the dialog is closed. */\n onClose: () => void;\n /** Handler that is called when the user presses OK. */\n onOk: (selected: string | string[] | undefined, name: string | null) => void;\n /**\n * Function to filter out all unnecessary objects. Can be string or function.\n * It cannot be used together with \"types\".\n * Example for function: `obj => obj.common?.type === 'boolean'` to show only boolean states\n * In case of string, it must look like `obj.common && obj.common.type === 'boolean'`\n */\n filterFunc?: string | ((obj: ioBroker.Object) => boolean);\n /** predefined filter fields, like {\"id\":\"\",\"name\":\"\",\"room\":\"\",\"func\":\"\",\"role\":\"level\",\"type\":\"\",\"custom\":\"\"} */\n filters?: SelectIDFilters;\n /** Show elements only of this root ID */\n root?: string;\n /** Allow selection of non-objects (virtual branches) */\n allowNonObjects?: boolean;\n /** Will be called by selection, so the decision could be done if the OK button is available or not */\n onSelectConfirm?: (\n selected: string | string[],\n objects: Record<string, ioBroker.Object | null | undefined>,\n ) => Promise<boolean>;\n}\n\ninterface DialogSelectIDState {\n selected: string[];\n name: string | null;\n selectionBlocked: boolean;\n}\n\nexport class DialogSelectID extends Component<DialogSelectIDProps, DialogSelectIDState> {\n private readonly dialogName: string;\n\n private filters: ObjectBrowserFilter;\n\n private readonly filterFunc?: (obj: ioBroker.Object) => boolean;\n\n constructor(props: DialogSelectIDProps) {\n super(props);\n this.dialogName = this.props.dialogName || 'default';\n this.dialogName = `SelectID.${this.dialogName}`;\n\n const filters: string = ((window as any)._localStorage || window.localStorage).getItem(this.dialogName) || '{}';\n\n try {\n this.filters = JSON.parse(filters);\n } catch {\n this.filters = {};\n }\n\n if (props.filters) {\n this.filters = { ...this.filters, ...(props.filters || {}) };\n }\n\n let selected = this.props.selected || [];\n if (!Array.isArray(selected)) {\n selected = [selected];\n }\n selected = selected.filter(id => id);\n\n if (props.filterFunc) {\n if (typeof props.filterFunc === 'string') {\n try {\n this.filterFunc = new Function('obj', props.filterFunc) as (obj: ioBroker.Object) => boolean;\n } catch {\n console.error(`Cannot parse filter function: \"obj => ${props.filterFunc}\"`);\n this.filterFunc = undefined;\n }\n } else {\n this.filterFunc = props.filterFunc;\n }\n }\n\n this.state = {\n selected,\n name: '',\n selectionBlocked: false,\n };\n }\n\n handleCancel(): void {\n this.props.onClose();\n }\n\n handleOk(): void {\n this.props.onOk(this.props.multiSelect ? this.state.selected : this.state.selected[0] || '', this.state.name);\n this.props.onClose();\n }\n\n render(): JSX.Element {\n let title;\n if (this.state.name || this.state.selected.length) {\n if (this.state.selected.length === 1) {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span\n key=\"id\"\n style={{ fontWeight: 'bold', fontStyle: 'italic' }}\n >\n {(this.state.name || this.state.selected[0]) +\n (this.state.name ? ` [${this.state.selected[0]}]` : '')}\n </span>,\n ];\n } else {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span\n key=\"id\"\n style={{ fontWeight: 'bold', fontStyle: 'italic' }}\n >\n {I18n.t('%s items', this.state.selected.length.toString())}\n </span>,\n ];\n }\n } else {\n title = this.props.title || I18n.t('ra_Please select object ID...');\n }\n\n return (\n <Dialog\n onClose={() => {}}\n maxWidth={false}\n sx={{\n '& .MuiDialog-paper': {\n height: '95%',\n p: '4px',\n width: '100%',\n maxWidth: '100%',\n maxHeight: 'calc(100% - 16px)',\n },\n }}\n fullWidth\n open={!0}\n aria-labelledby=\"ar_dialog_selectid_title\"\n >\n <DialogTitle\n id=\"ar_dialog_selectid_title\"\n style={{\n whiteSpace: 'nowrap',\n width: 'calc(100% - 72px)',\n overflow: 'hidden',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {title}\n </DialogTitle>\n <DialogContent\n style={{\n height: '100%',\n overflow: 'hidden',\n padding: '8px 4px',\n }}\n >\n <ObjectBrowser\n foldersFirst={this.props.foldersFirst}\n imagePrefix={this.props.imagePrefix || this.props.prefix} // prefix is for back compatibility\n dateFormat={this.props.dateFormat}\n defaultFilters={this.filters}\n dialogName={this.dialogName}\n isFloatComma={this.props.isFloatComma}\n showExpertButton={\n this.props.showExpertButton !== undefined ? this.props.showExpertButton : true\n }\n expertMode={this.props.expertMode}\n // style={{ width: '100%', height: '100%' }}\n columns={this.props.columns || ['name', 'type', 'role', 'room', 'func', 'val']}\n types={\n this.props.types\n ? Array.isArray(this.props.types)\n ? this.props.types\n : [this.props.types]\n : ['state']\n }\n root={this.props.root}\n t={I18n.t}\n lang={this.props.lang || I18n.getLanguage()}\n socket={this.props.socket}\n selected={this.state.selected}\n multiSelect={this.props.multiSelect}\n notEditable={this.props.notEditable === undefined ? true : this.props.notEditable}\n // name={this.state.name}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n customFilter={this.props.customFilter}\n allowNonObjects={this.props.allowNonObjects}\n onFilterChanged={(filterConfig: ObjectBrowserFilter) => {\n this.filters = filterConfig;\n ((window as any)._localStorage || window.localStorage).setItem(\n this.dialogName,\n JSON.stringify(filterConfig),\n );\n }}\n onSelect={async (\n _selected: string | string[],\n name: string | null,\n isDouble?: boolean,\n ): Promise<void> => {\n let selected: string[];\n if (!Array.isArray(_selected)) {\n selected = [_selected];\n } else {\n selected = _selected;\n }\n\n if (JSON.stringify(selected) !== JSON.stringify(this.state.selected)) {\n let selectionAllowed = true;\n if (this.props.onSelectConfirm) {\n const objects: Record<string, ioBroker.Object | null | undefined> = {};\n for (const id of selected) {\n try {\n objects[id] = await this.props.socket.getObject(id);\n } catch {\n // ignore\n }\n }\n\n selectionAllowed = await this.props.onSelectConfirm(selected, objects);\n }\n\n this.setState(\n { selected, name, selectionBlocked: !selectionAllowed },\n () => isDouble && this.handleOk(),\n );\n } else if (isDouble) {\n this.handleOk();\n }\n }}\n filterFunc={this.filterFunc}\n title=\"\"\n classes={{}}\n />\n </DialogContent>\n <DialogActions>\n <Button\n id={`ar_dialog_selectid_ok_${this.props.dialogName || ''}`}\n variant=\"contained\"\n onClick={() => this.handleOk()}\n startIcon={<IconOk />}\n disabled={!this.state.selected.length || this.state.selectionBlocked}\n color=\"primary\"\n >\n {this.props.ok || I18n.t('ra_Ok')}\n </Button>\n <Button\n id={`ar_dialog_selectid_cancel_${this.props.dialogName || ''}`}\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleCancel()}\n startIcon={<IconCancel />}\n >\n {this.props.cancel || I18n.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Nach unten",
135
135
  "ra_Move up": "Nach oben",
136
136
  "ra_Name": "Name",
137
- "ra_New object ID": "Neue Objekt-ID",
138
137
  "ra_No data found in file": "Keine Daten in der Datei gefunden",
139
138
  "ra_No one license found in license manager": "Im Lizenzmanager wurde keine Lizenz gefunden",
140
139
  "ra_No response from the backend": "Keine Antwort vom Backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Qualität",
164
163
  "ra_Refresh tree": "Baum aktualisieren",
165
164
  "ra_Reload files": "Dateien neu laden",
166
- "ra_Rename": "Umbenennen",
167
- "ra_Rename all children": "Alle untergeordneten Elemente umbenennen",
168
- "ra_Rename object": "Objekt umbenennen",
165
+ "ra_Rename_Move_Copy": "Umbenennen/Verschieben/Kopieren",
169
166
  "ra_Repeat": "Wiederholen",
170
167
  "ra_Replace": "Ersetzen",
171
168
  "ra_Request timed out": "Zeitüberschreitung der Anforderung",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Move down",
135
135
  "ra_Move up": "Move up",
136
136
  "ra_Name": "Name",
137
- "ra_New object ID": "New object ID",
138
137
  "ra_No data found in file": "No data found in file",
139
138
  "ra_No one license found in license manager": "No one license found in license manager",
140
139
  "ra_No response from the backend": "No response from the backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Quality",
164
163
  "ra_Refresh tree": "Refresh tree",
165
164
  "ra_Reload files": "Reload files",
166
- "ra_Rename": "Rename",
167
- "ra_Rename all children": "Rename all children",
168
- "ra_Rename object": "Rename object",
165
+ "ra_Rename_Move_Copy": "Rename/Move/Copy",
169
166
  "ra_Repeat": "Repeat",
170
167
  "ra_Replace": "Replace",
171
168
  "ra_Request timed out": "Request timed out",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Mover hacia abajo",
135
135
  "ra_Move up": "Ascender",
136
136
  "ra_Name": "Nombre",
137
- "ra_New object ID": "Nuevo ID de objeto",
138
137
  "ra_No data found in file": "No se encontraron datos en el archivo",
139
138
  "ra_No one license found in license manager": "No se encontró ninguna licencia en el administrador de licencias",
140
139
  "ra_No response from the backend": "No hay respuesta del backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Calidad",
164
163
  "ra_Refresh tree": "Actualizar árbol",
165
164
  "ra_Reload files": "Recargar archivos",
166
- "ra_Rename": "Rebautizar",
167
- "ra_Rename all children": "Cambiar el nombre de todos los niños",
168
- "ra_Rename object": "Cambiar el nombre del objeto",
165
+ "ra_Rename_Move_Copy": "Cambiar nombre/Mover/Copiar",
169
166
  "ra_Repeat": "Repetir",
170
167
  "ra_Replace": "Reemplazar",
171
168
  "ra_Request timed out": "Tiempo de espera agotado",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Descendre",
135
135
  "ra_Move up": "Déplacer vers le haut",
136
136
  "ra_Name": "Nom",
137
- "ra_New object ID": "Nouvel ID d'objet",
138
137
  "ra_No data found in file": "Aucune donnée trouvée dans le fichier",
139
138
  "ra_No one license found in license manager": "Aucune licence trouvée dans le gestionnaire de licences",
140
139
  "ra_No response from the backend": "Aucune réponse du backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Qualité",
164
163
  "ra_Refresh tree": "Rafraîchir l'arborescence",
165
164
  "ra_Reload files": "Recharger les fichiers",
166
- "ra_Rename": "Rebaptiser",
167
- "ra_Rename all children": "Renommer tous les enfants",
168
- "ra_Rename object": "Renommer l'objet",
165
+ "ra_Rename_Move_Copy": "Renommer/Déplacer/Copier",
169
166
  "ra_Repeat": "Répéter",
170
167
  "ra_Replace": "Remplacer",
171
168
  "ra_Request timed out": "La demande a expiré",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Abbassati",
135
135
  "ra_Move up": "Andare avanti",
136
136
  "ra_Name": "Nome",
137
- "ra_New object ID": "Nuovo ID oggetto",
138
137
  "ra_No data found in file": "Nessun dato trovato nel file",
139
138
  "ra_No one license found in license manager": "Nessuna licenza trovata nel gestore delle licenze",
140
139
  "ra_No response from the backend": "Nessuna risposta dal backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Qualità",
164
163
  "ra_Refresh tree": "Aggiorna l'albero",
165
164
  "ra_Reload files": "Ricarica i file",
166
- "ra_Rename": "Rinominare",
167
- "ra_Rename all children": "Rinomina tutti i bambini",
168
- "ra_Rename object": "Rinomina oggetto",
165
+ "ra_Rename_Move_Copy": "Rinomina/Sposta/Copia",
169
166
  "ra_Repeat": "Ripetere",
170
167
  "ra_Replace": "Sostituire",
171
168
  "ra_Request timed out": "Tempo scaduto per la richiesta",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Naar beneden verplaatsen",
135
135
  "ra_Move up": "Omhoog gaan",
136
136
  "ra_Name": "Naam",
137
- "ra_New object ID": "Nieuwe object-ID",
138
137
  "ra_No data found in file": "Geen gegevens gevonden in bestand",
139
138
  "ra_No one license found in license manager": "Geen enkele licentie gevonden in licentiebeheer",
140
139
  "ra_No response from the backend": "Geen reactie van de backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Kwaliteit",
164
163
  "ra_Refresh tree": "Vernieuw de boom",
165
164
  "ra_Reload files": "Laad bestanden opnieuw",
166
- "ra_Rename": "Hernoemen",
167
- "ra_Rename all children": "Alle kinderen hernoemen",
168
- "ra_Rename object": "Object hernoemen",
165
+ "ra_Rename_Move_Copy": "Hernoemen/Verplaatsen/Kopiëren",
169
166
  "ra_Repeat": "Herhaling",
170
167
  "ra_Replace": "Vervangen",
171
168
  "ra_Request timed out": "Verzoek verlopen",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Padnij",
135
135
  "ra_Move up": "Podnieść",
136
136
  "ra_Name": "Nazwa",
137
- "ra_New object ID": "Nowy identyfikator obiektu",
138
137
  "ra_No data found in file": "Nie znaleziono danych w pliku",
139
138
  "ra_No one license found in license manager": "Nie znaleziono licencji w menedżerze licencji",
140
139
  "ra_No response from the backend": "Brak odpowiedzi z zaplecza",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Jakości",
164
163
  "ra_Refresh tree": "Odśwież drzewo",
165
164
  "ra_Reload files": "Załaduj ponownie pliki",
166
- "ra_Rename": "Przemianować",
167
- "ra_Rename all children": "Zmień nazwy wszystkich dzieci",
168
- "ra_Rename object": "Zmień nazwę obiektu",
165
+ "ra_Rename_Move_Copy": "Zmień nazwę/Przenieś/Kopiuj",
169
166
  "ra_Repeat": "Powtarzać",
170
167
  "ra_Replace": "Zastępować",
171
168
  "ra_Request timed out": "Upłynął limit czasu żądania",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Mover para baixo",
135
135
  "ra_Move up": "Subir",
136
136
  "ra_Name": "Nome",
137
- "ra_New object ID": "Novo ID de objeto",
138
137
  "ra_No data found in file": "Nenhum dado encontrado no arquivo",
139
138
  "ra_No one license found in license manager": "Nenhuma licença encontrada no gerenciador de licenças",
140
139
  "ra_No response from the backend": "Nenhuma resposta do backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Qualidade",
164
163
  "ra_Refresh tree": "Atualizar árvore",
165
164
  "ra_Reload files": "Recarregar arquivos",
166
- "ra_Rename": "Renomear",
167
- "ra_Rename all children": "Renomear todas as crianças",
168
- "ra_Rename object": "Renomear objeto",
165
+ "ra_Rename_Move_Copy": "Renomear/Mover/Copiar",
169
166
  "ra_Repeat": "Repita",
170
167
  "ra_Replace": "Substituir",
171
168
  "ra_Request timed out": "Solicitação expirou",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Вниз",
135
135
  "ra_Move up": "Вверх",
136
136
  "ra_Name": "Имя",
137
- "ra_New object ID": "Новый идентификатор объекта",
138
137
  "ra_No data found in file": "Данные в файле не найдены",
139
138
  "ra_No one license found in license manager": "В менеджере лицензий не найдена ни одна лицензия",
140
139
  "ra_No response from the backend": "Нет ответа от бэкэнда",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Валидность",
164
163
  "ra_Refresh tree": "Обновить дерево",
165
164
  "ra_Reload files": "Обновить",
166
- "ra_Rename": "Переименовать",
167
- "ra_Rename all children": "Переименовать всех детей",
168
- "ra_Rename object": "Переименовать объект",
165
+ "ra_Rename_Move_Copy": "Переименовать/Переместить/Копировать",
169
166
  "ra_Repeat": "Повторение",
170
167
  "ra_Replace": "Заменять",
171
168
  "ra_Request timed out": "Истекло время запроса",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Рухатися вниз",
135
135
  "ra_Move up": "Рухатися вгору",
136
136
  "ra_Name": "Ім'я",
137
- "ra_New object ID": "Новий ідентифікатор об'єкта",
138
137
  "ra_No data found in file": "Немає даних у файлі",
139
138
  "ra_No one license found in license manager": "У менеджері ліцензій не знайдено жодної ліцензії",
140
139
  "ra_No response from the backend": "Немає відповіді від сервера",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "якість",
164
163
  "ra_Refresh tree": "Оновити дерево",
165
164
  "ra_Reload files": "Перезавантажте файли",
166
- "ra_Rename": "Перейменувати",
167
- "ra_Rename all children": "Перейменувати всіх дітей",
168
- "ra_Rename object": "Перейменувати об'єкт",
165
+ "ra_Rename_Move_Copy": "Перейменувати/Перемістити/Копіювати",
169
166
  "ra_Repeat": "Повторіть",
170
167
  "ra_Replace": "Замінити",
171
168
  "ra_Request timed out": "Час запиту вичерпано",
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "下移",
135
135
  "ra_Move up": "提升",
136
136
  "ra_Name": "姓名",
137
- "ra_New object ID": "新对象 ID",
138
137
  "ra_No data found in file": "文件中未找到数据",
139
138
  "ra_No one license found in license manager": "许可证管理器中未找到任何许可证",
140
139
  "ra_No response from the backend": "后端无响应",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "质量代码",
164
163
  "ra_Refresh tree": "刷新树",
165
164
  "ra_Reload files": "重新载入文件",
166
- "ra_Rename": "重命名",
167
- "ra_Rename all children": "重命名所有子项",
168
- "ra_Rename object": "重命名对象",
165
+ "ra_Rename_Move_Copy": "重命名/移动/复制",
169
166
  "ra_Repeat": "重复",
170
167
  "ra_Replace": "代替",
171
168
  "ra_Request timed out": "请求超时",
package/i18n/de.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Nach unten",
135
135
  "ra_Move up": "Nach oben",
136
136
  "ra_Name": "Name",
137
- "ra_New object ID": "Neue Objekt-ID",
138
137
  "ra_No data found in file": "Keine Daten in der Datei gefunden",
139
138
  "ra_No one license found in license manager": "Im Lizenzmanager wurde keine Lizenz gefunden",
140
139
  "ra_No response from the backend": "Keine Antwort vom Backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Qualität",
164
163
  "ra_Refresh tree": "Baum aktualisieren",
165
164
  "ra_Reload files": "Dateien neu laden",
166
- "ra_Rename": "Umbenennen",
167
- "ra_Rename all children": "Alle untergeordneten Elemente umbenennen",
168
- "ra_Rename object": "Objekt umbenennen",
165
+ "ra_Rename_Move_Copy": "Umbenennen/Verschieben/Kopieren",
169
166
  "ra_Repeat": "Wiederholen",
170
167
  "ra_Replace": "Ersetzen",
171
168
  "ra_Request timed out": "Zeitüberschreitung der Anforderung",
package/i18n/en.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Move down",
135
135
  "ra_Move up": "Move up",
136
136
  "ra_Name": "Name",
137
- "ra_New object ID": "New object ID",
138
137
  "ra_No data found in file": "No data found in file",
139
138
  "ra_No one license found in license manager": "No one license found in license manager",
140
139
  "ra_No response from the backend": "No response from the backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Quality",
164
163
  "ra_Refresh tree": "Refresh tree",
165
164
  "ra_Reload files": "Reload files",
166
- "ra_Rename": "Rename",
167
- "ra_Rename all children": "Rename all children",
168
- "ra_Rename object": "Rename object",
165
+ "ra_Rename_Move_Copy": "Rename/Move/Copy",
169
166
  "ra_Repeat": "Repeat",
170
167
  "ra_Replace": "Replace",
171
168
  "ra_Request timed out": "Request timed out",
package/i18n/es.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Mover hacia abajo",
135
135
  "ra_Move up": "Ascender",
136
136
  "ra_Name": "Nombre",
137
- "ra_New object ID": "Nuevo ID de objeto",
138
137
  "ra_No data found in file": "No se encontraron datos en el archivo",
139
138
  "ra_No one license found in license manager": "No se encontró ninguna licencia en el administrador de licencias",
140
139
  "ra_No response from the backend": "No hay respuesta del backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Calidad",
164
163
  "ra_Refresh tree": "Actualizar árbol",
165
164
  "ra_Reload files": "Recargar archivos",
166
- "ra_Rename": "Rebautizar",
167
- "ra_Rename all children": "Cambiar el nombre de todos los niños",
168
- "ra_Rename object": "Cambiar el nombre del objeto",
165
+ "ra_Rename_Move_Copy": "Cambiar nombre/Mover/Copiar",
169
166
  "ra_Repeat": "Repetir",
170
167
  "ra_Replace": "Reemplazar",
171
168
  "ra_Request timed out": "Tiempo de espera agotado",
package/i18n/fr.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Descendre",
135
135
  "ra_Move up": "Déplacer vers le haut",
136
136
  "ra_Name": "Nom",
137
- "ra_New object ID": "Nouvel ID d'objet",
138
137
  "ra_No data found in file": "Aucune donnée trouvée dans le fichier",
139
138
  "ra_No one license found in license manager": "Aucune licence trouvée dans le gestionnaire de licences",
140
139
  "ra_No response from the backend": "Aucune réponse du backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Qualité",
164
163
  "ra_Refresh tree": "Rafraîchir l'arborescence",
165
164
  "ra_Reload files": "Recharger les fichiers",
166
- "ra_Rename": "Rebaptiser",
167
- "ra_Rename all children": "Renommer tous les enfants",
168
- "ra_Rename object": "Renommer l'objet",
165
+ "ra_Rename_Move_Copy": "Renommer/Déplacer/Copier",
169
166
  "ra_Repeat": "Répéter",
170
167
  "ra_Replace": "Remplacer",
171
168
  "ra_Request timed out": "La demande a expiré",
package/i18n/it.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Abbassati",
135
135
  "ra_Move up": "Andare avanti",
136
136
  "ra_Name": "Nome",
137
- "ra_New object ID": "Nuovo ID oggetto",
138
137
  "ra_No data found in file": "Nessun dato trovato nel file",
139
138
  "ra_No one license found in license manager": "Nessuna licenza trovata nel gestore delle licenze",
140
139
  "ra_No response from the backend": "Nessuna risposta dal backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Qualità",
164
163
  "ra_Refresh tree": "Aggiorna l'albero",
165
164
  "ra_Reload files": "Ricarica i file",
166
- "ra_Rename": "Rinominare",
167
- "ra_Rename all children": "Rinomina tutti i bambini",
168
- "ra_Rename object": "Rinomina oggetto",
165
+ "ra_Rename_Move_Copy": "Rinomina/Sposta/Copia",
169
166
  "ra_Repeat": "Ripetere",
170
167
  "ra_Replace": "Sostituire",
171
168
  "ra_Request timed out": "Tempo scaduto per la richiesta",
package/i18n/nl.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Naar beneden verplaatsen",
135
135
  "ra_Move up": "Omhoog gaan",
136
136
  "ra_Name": "Naam",
137
- "ra_New object ID": "Nieuwe object-ID",
138
137
  "ra_No data found in file": "Geen gegevens gevonden in bestand",
139
138
  "ra_No one license found in license manager": "Geen enkele licentie gevonden in licentiebeheer",
140
139
  "ra_No response from the backend": "Geen reactie van de backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Kwaliteit",
164
163
  "ra_Refresh tree": "Vernieuw de boom",
165
164
  "ra_Reload files": "Laad bestanden opnieuw",
166
- "ra_Rename": "Hernoemen",
167
- "ra_Rename all children": "Alle kinderen hernoemen",
168
- "ra_Rename object": "Object hernoemen",
165
+ "ra_Rename_Move_Copy": "Hernoemen/Verplaatsen/Kopiëren",
169
166
  "ra_Repeat": "Herhaling",
170
167
  "ra_Replace": "Vervangen",
171
168
  "ra_Request timed out": "Verzoek verlopen",
package/i18n/pl.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Padnij",
135
135
  "ra_Move up": "Podnieść",
136
136
  "ra_Name": "Nazwa",
137
- "ra_New object ID": "Nowy identyfikator obiektu",
138
137
  "ra_No data found in file": "Nie znaleziono danych w pliku",
139
138
  "ra_No one license found in license manager": "Nie znaleziono licencji w menedżerze licencji",
140
139
  "ra_No response from the backend": "Brak odpowiedzi z zaplecza",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Jakości",
164
163
  "ra_Refresh tree": "Odśwież drzewo",
165
164
  "ra_Reload files": "Załaduj ponownie pliki",
166
- "ra_Rename": "Przemianować",
167
- "ra_Rename all children": "Zmień nazwy wszystkich dzieci",
168
- "ra_Rename object": "Zmień nazwę obiektu",
165
+ "ra_Rename_Move_Copy": "Zmień nazwę/Przenieś/Kopiuj",
169
166
  "ra_Repeat": "Powtarzać",
170
167
  "ra_Replace": "Zastępować",
171
168
  "ra_Request timed out": "Upłynął limit czasu żądania",
package/i18n/pt.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Mover para baixo",
135
135
  "ra_Move up": "Subir",
136
136
  "ra_Name": "Nome",
137
- "ra_New object ID": "Novo ID de objeto",
138
137
  "ra_No data found in file": "Nenhum dado encontrado no arquivo",
139
138
  "ra_No one license found in license manager": "Nenhuma licença encontrada no gerenciador de licenças",
140
139
  "ra_No response from the backend": "Nenhuma resposta do backend",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Qualidade",
164
163
  "ra_Refresh tree": "Atualizar árvore",
165
164
  "ra_Reload files": "Recarregar arquivos",
166
- "ra_Rename": "Renomear",
167
- "ra_Rename all children": "Renomear todas as crianças",
168
- "ra_Rename object": "Renomear objeto",
165
+ "ra_Rename_Move_Copy": "Renomear/Mover/Copiar",
169
166
  "ra_Repeat": "Repita",
170
167
  "ra_Replace": "Substituir",
171
168
  "ra_Request timed out": "Solicitação expirou",
package/i18n/ru.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Вниз",
135
135
  "ra_Move up": "Вверх",
136
136
  "ra_Name": "Имя",
137
- "ra_New object ID": "Новый идентификатор объекта",
138
137
  "ra_No data found in file": "Данные в файле не найдены",
139
138
  "ra_No one license found in license manager": "В менеджере лицензий не найдена ни одна лицензия",
140
139
  "ra_No response from the backend": "Нет ответа от бэкэнда",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "Валидность",
164
163
  "ra_Refresh tree": "Обновить дерево",
165
164
  "ra_Reload files": "Обновить",
166
- "ra_Rename": "Переименовать",
167
- "ra_Rename all children": "Переименовать всех детей",
168
- "ra_Rename object": "Переименовать объект",
165
+ "ra_Rename_Move_Copy": "Переименовать/Переместить/Копировать",
169
166
  "ra_Repeat": "Повторение",
170
167
  "ra_Replace": "Заменять",
171
168
  "ra_Request timed out": "Истекло время запроса",
package/i18n/uk.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "Рухатися вниз",
135
135
  "ra_Move up": "Рухатися вгору",
136
136
  "ra_Name": "Ім'я",
137
- "ra_New object ID": "Новий ідентифікатор об'єкта",
138
137
  "ra_No data found in file": "Немає даних у файлі",
139
138
  "ra_No one license found in license manager": "У менеджері ліцензій не знайдено жодної ліцензії",
140
139
  "ra_No response from the backend": "Немає відповіді від сервера",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "якість",
164
163
  "ra_Refresh tree": "Оновити дерево",
165
164
  "ra_Reload files": "Перезавантажте файли",
166
- "ra_Rename": "Перейменувати",
167
- "ra_Rename all children": "Перейменувати всіх дітей",
168
- "ra_Rename object": "Перейменувати об'єкт",
165
+ "ra_Rename_Move_Copy": "Перейменувати/Перемістити/Копіювати",
169
166
  "ra_Repeat": "Повторіть",
170
167
  "ra_Replace": "Замінити",
171
168
  "ra_Request timed out": "Час запиту вичерпано",
package/i18n/zh-cn.json CHANGED
@@ -134,7 +134,6 @@
134
134
  "ra_Move down": "下移",
135
135
  "ra_Move up": "提升",
136
136
  "ra_Name": "姓名",
137
- "ra_New object ID": "新对象 ID",
138
137
  "ra_No data found in file": "文件中未找到数据",
139
138
  "ra_No one license found in license manager": "许可证管理器中未找到任何许可证",
140
139
  "ra_No response from the backend": "后端无响应",
@@ -163,9 +162,7 @@
163
162
  "ra_Quality code": "质量代码",
164
163
  "ra_Refresh tree": "刷新树",
165
164
  "ra_Reload files": "重新载入文件",
166
- "ra_Rename": "重命名",
167
- "ra_Rename all children": "重命名所有子项",
168
- "ra_Rename object": "重命名对象",
165
+ "ra_Rename_Move_Copy": "重命名/移动/复制",
169
166
  "ra_Repeat": "重复",
170
167
  "ra_Replace": "代替",
171
168
  "ra_Request timed out": "请求超时",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/adapter-react-v5",
3
- "version": "7.5.0",
3
+ "version": "7.5.2",
4
4
  "description": "React components to develop ioBroker interfaces with react.",
5
5
  "author": {
6
6
  "name": "bluefox",