@iobroker/adapter-react-v5 7.4.2 → 7.4.4
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/README.md +2 -2
- package/build/Components/FileBrowser.js +1 -1
- package/build/Components/FileBrowser.js.map +1 -1
- package/build/Components/IconDeviceType.d.ts +1 -1
- package/build/Components/IconDeviceType.js +5 -1
- package/build/Components/IconDeviceType.js.map +1 -1
- package/build/Components/IconPicker.js +0 -1
- package/build/Components/IconPicker.js.map +1 -1
- package/build/Components/Image.js.map +1 -1
- package/build/Components/Logo.js +4 -4
- package/build/Components/Logo.js.map +1 -1
- package/build/Components/ObjectBrowser.d.ts +8 -6
- package/build/Components/ObjectBrowser.js +2 -2
- package/build/Components/ObjectBrowser.js.map +1 -1
- package/build/Components/TextWithIcon.js +0 -1
- package/build/Components/TextWithIcon.js.map +1 -1
- package/build/Components/Utils.js +1 -3
- package/build/Components/Utils.js.map +1 -1
- package/build/Dialogs/SelectID.d.ts +2 -2
- package/build/Dialogs/SelectID.js +1 -1
- package/build/Dialogs/SelectID.js.map +1 -1
- package/build/GenericApp.js +1 -1
- package/build/GenericApp.js.map +1 -1
- package/build/LegacyConnection.d.ts +4 -7
- package/build/LegacyConnection.js +84 -160
- package/build/LegacyConnection.js.map +1 -1
- package/build/i18n/de.json +1 -1
- package/build/i18n/en.json +1 -0
- package/build/index.d.ts +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/types.d.ts +80 -0
- package/i18n/de.json +2 -2
- package/i18n/en.json +2 -1
- package/package.json +15 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type IconProps } from './Icon';
|
|
3
|
-
declare const deviceTypes: readonly ["unknown", "airCondition", "blind", "blindButtons", "button", "buttonSensor", "camera", "chart", "cie", "ct", "dimmer", "door", "fireAlarm", "floodAlarm", "gate", "hue", "humidity", "image", "info", "instance", "light", "location", "lock", "media", "motion", "rgb", "rgbSingle", "rgbwSingle", "slider", "socket", "temperature", "thermostat", "vacuumCleaner", "volume", "volumeGroup", "warning", "weatherCurrent", "weatherForecast", "window", "windowTilt", "hub3", "node", "controller", "hub5"];
|
|
3
|
+
declare const deviceTypes: readonly ["unknown", "airCondition", "blind", "blindButtons", "button", "buttonSensor", "camera", "chart", "cie", "ct", "dimmer", "door", "fireAlarm", "floodAlarm", "gate", "hue", "humidity", "illuminance", "image", "info", "instance", "light", "location", "lock", "media", "motion", "rgb", "rgbSingle", "rgbwSingle", "slider", "socket", "temperature", "thermostat", "vacuumCleaner", "volume", "volumeGroup", "warning", "weatherCurrent", "weatherForecast", "window", "windowTilt", "hub3", "node", "controller", "hub5"];
|
|
4
4
|
export type DeviceType = (typeof deviceTypes)[number];
|
|
5
5
|
export declare function isDeviceIcon(icon: string): DeviceType | null;
|
|
6
6
|
export declare function getDeviceIcon(type: DeviceType, props?: IconProps): React.JSX.Element | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { AcUnit, Air, Blinds, BlindsClosed, ColorLens, ControlCamera, DeviceHub, DirectionsRun, DoorSliding, Gradient, Hub, Image, Info, Lightbulb, LocationOn, Lock, Palette, PlayArrowRounded, Polyline, Power, QuestionMark, SensorDoor, Thermostat, Timeline, TipsAndUpdates, Tune, Videocam, VolumeUp, Warning, Water, WaterDrop, WbSunny, Whatshot, Window, } from '@mui/icons-material';
|
|
2
|
+
import { AcUnit, Air, Blinds, BlindsClosed, ColorLens, ControlCamera, DeviceHub, DirectionsRun, DoorSliding, Gradient, Hub, Image, Info, Lightbulb, LocationOn, Lock, Palette, PlayArrowRounded, Polyline, Power, QuestionMark, SensorDoor, Thermostat, Timeline, TipsAndUpdates, Tune, Videocam, VolumeUp, Warning, Water, WaterDrop, WbIridescent, WbSunny, Whatshot, Window, } from '@mui/icons-material';
|
|
3
3
|
import { Icon } from './Icon';
|
|
4
4
|
import { Utils } from './Utils';
|
|
5
5
|
import { IconButtonImage } from '../icons/IconButtonImage';
|
|
@@ -24,6 +24,7 @@ const deviceTypes = [
|
|
|
24
24
|
'gate',
|
|
25
25
|
'hue',
|
|
26
26
|
'humidity',
|
|
27
|
+
'illuminance',
|
|
27
28
|
'image',
|
|
28
29
|
'info',
|
|
29
30
|
'instance',
|
|
@@ -102,6 +103,9 @@ export function getDeviceIcon(type, props) {
|
|
|
102
103
|
if (type === 'humidity') {
|
|
103
104
|
SvgComponent = WaterDrop;
|
|
104
105
|
}
|
|
106
|
+
if (type === 'illuminance') {
|
|
107
|
+
SvgComponent = WbIridescent;
|
|
108
|
+
}
|
|
105
109
|
if (type === 'image') {
|
|
106
110
|
SvgComponent = Image;
|
|
107
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconDeviceType.js","sourceRoot":"./src/","sources":["Components/IconDeviceType.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n AcUnit,\n Air,\n Blinds,\n BlindsClosed,\n ColorLens,\n ControlCamera,\n DeviceHub,\n DirectionsRun,\n DoorSliding,\n Gradient,\n Hub,\n Image,\n Info,\n Lightbulb,\n LocationOn,\n Lock,\n Palette,\n PlayArrowRounded,\n Polyline,\n Power,\n QuestionMark,\n SensorDoor,\n type SvgIconComponent,\n Thermostat,\n Timeline,\n TipsAndUpdates,\n Tune,\n Videocam,\n VolumeUp,\n Warning,\n Water,\n WaterDrop,\n WbSunny,\n Whatshot,\n Window,\n} from '@mui/icons-material';\nimport { Icon, type IconProps } from './Icon';\nimport { Utils } from './Utils';\nimport { IconButtonImage } from '../icons/IconButtonImage';\nimport { IconVacuum } from '../icons/IconVacuum';\nimport { IconInstance } from '../icons/IconInstance';\n\n// Taken from type detector: https://github.com/ioBroker/ioBroker.type-detector/blob/master/src/types.ts#L27\nconst deviceTypes = [\n 'unknown',\n 'airCondition',\n 'blind',\n 'blindButtons',\n 'button',\n 'buttonSensor',\n 'camera',\n 'chart',\n 'cie',\n 'ct',\n 'dimmer',\n 'door',\n 'fireAlarm',\n 'floodAlarm',\n 'gate',\n 'hue',\n 'humidity',\n 'image',\n 'info',\n 'instance',\n 'light',\n 'location',\n 'lock',\n 'media',\n 'motion',\n 'rgb',\n 'rgbSingle',\n 'rgbwSingle',\n 'slider',\n 'socket',\n 'temperature',\n 'thermostat',\n 'vacuumCleaner',\n 'volume',\n 'volumeGroup',\n 'warning',\n 'weatherCurrent',\n 'weatherForecast',\n 'window',\n 'windowTilt',\n 'hub3',\n 'node',\n 'controller',\n 'hub5',\n] as const;\n\nexport type DeviceType = (typeof deviceTypes)[number];\n\nexport function isDeviceIcon(icon: string): DeviceType | null {\n if (deviceTypes.includes(icon as DeviceType)) {\n return icon as DeviceType;\n }\n return null;\n}\n\nexport function getDeviceIcon(type: DeviceType, props?: IconProps): React.JSX.Element | null {\n let SvgComponent: SvgIconComponent | undefined;\n if (type === 'hub3') {\n SvgComponent = DeviceHub;\n }\n if (type === 'node') {\n SvgComponent = Polyline;\n }\n if (type === 'hub5') {\n SvgComponent = Hub;\n }\n if (type === 'controller') {\n SvgComponent = ControlCamera;\n }\n if (type === 'airCondition') {\n SvgComponent = AcUnit;\n }\n if (type === 'blind') {\n SvgComponent = Blinds;\n }\n if (type === 'camera') {\n SvgComponent = Videocam;\n }\n if (type === 'chart') {\n SvgComponent = Timeline;\n }\n if (type === 'ct') {\n SvgComponent = Gradient;\n }\n if (type === 'dimmer') {\n SvgComponent = TipsAndUpdates;\n }\n if (type === 'door') {\n SvgComponent = SensorDoor;\n }\n if (type === 'fireAlarm') {\n SvgComponent = Whatshot;\n }\n if (type === 'floodAlarm') {\n SvgComponent = Water;\n }\n if (type === 'humidity') {\n SvgComponent = WaterDrop;\n }\n if (type === 'image') {\n SvgComponent = Image;\n }\n if (type === 'light') {\n SvgComponent = Lightbulb;\n }\n if (type === 'lock') {\n SvgComponent = Lock;\n }\n if (type === 'location') {\n SvgComponent = LocationOn;\n }\n if (type === 'media') {\n SvgComponent = PlayArrowRounded;\n }\n if (type === 'motion') {\n SvgComponent = DirectionsRun;\n }\n if (type === 'rgb') {\n SvgComponent = Palette;\n }\n if (type === 'rgbSingle') {\n SvgComponent = Palette;\n }\n if (type === 'rgbwSingle') {\n SvgComponent = Palette;\n }\n if (type === 'slider') {\n SvgComponent = Tune;\n }\n if (type === 'socket') {\n SvgComponent = Power;\n }\n if (type === 'temperature') {\n SvgComponent = Thermostat;\n }\n if (type === 'thermostat') {\n SvgComponent = Thermostat;\n }\n if (type === 'volume') {\n SvgComponent = VolumeUp;\n }\n if (type === 'volumeGroup') {\n SvgComponent = VolumeUp;\n }\n if (type === 'weatherCurrent') {\n SvgComponent = Air;\n }\n if (type === 'weatherForecast') {\n SvgComponent = WbSunny;\n }\n if (type === 'window') {\n SvgComponent = Window;\n }\n if (type === 'windowTilt') {\n SvgComponent = Window;\n }\n if (type === 'blindButtons') {\n SvgComponent = BlindsClosed;\n }\n if (type === 'button') {\n SvgComponent = IconButtonImage as SvgIconComponent;\n }\n if (type === 'buttonSensor') {\n SvgComponent = IconButtonImage as SvgIconComponent;\n }\n if (type === 'cie') {\n SvgComponent = ColorLens;\n }\n if (type === 'gate') {\n SvgComponent = DoorSliding;\n }\n if (type === 'hue') {\n SvgComponent = ColorLens;\n }\n if (type === 'info') {\n SvgComponent = Info;\n }\n if (type === 'instance') {\n SvgComponent = IconInstance as SvgIconComponent;\n }\n if (type === 'unknown') {\n SvgComponent = QuestionMark;\n }\n if (type === 'vacuumCleaner') {\n SvgComponent = IconVacuum as SvgIconComponent;\n }\n if (type === 'warning') {\n SvgComponent = Warning;\n }\n\n if (SvgComponent) {\n return (\n <SvgComponent\n style={props?.style || undefined}\n className={Utils.clsx(props?.className, 'iconOwn')}\n />\n );\n }\n return null;\n}\n\nexport function IconDeviceType(props: IconProps): React.JSX.Element | null {\n const icon = getDeviceIcon(props.src as DeviceType, props);\n if (icon) {\n return icon;\n }\n\n return <Icon {...props} />;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"IconDeviceType.js","sourceRoot":"./src/","sources":["Components/IconDeviceType.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n AcUnit,\n Air,\n Blinds,\n BlindsClosed,\n ColorLens,\n ControlCamera,\n DeviceHub,\n DirectionsRun,\n DoorSliding,\n Gradient,\n Hub,\n Image,\n Info,\n Lightbulb,\n LocationOn,\n Lock,\n Palette,\n PlayArrowRounded,\n Polyline,\n Power,\n QuestionMark,\n SensorDoor,\n type SvgIconComponent,\n Thermostat,\n Timeline,\n TipsAndUpdates,\n Tune,\n Videocam,\n VolumeUp,\n Warning,\n Water,\n WaterDrop,\n WbIridescent,\n WbSunny,\n Whatshot,\n Window,\n} from '@mui/icons-material';\nimport { Icon, type IconProps } from './Icon';\nimport { Utils } from './Utils';\nimport { IconButtonImage } from '../icons/IconButtonImage';\nimport { IconVacuum } from '../icons/IconVacuum';\nimport { IconInstance } from '../icons/IconInstance';\n\n// Taken from type detector: https://github.com/ioBroker/ioBroker.type-detector/blob/master/src/types.ts#L27\nconst deviceTypes = [\n 'unknown',\n 'airCondition',\n 'blind',\n 'blindButtons',\n 'button',\n 'buttonSensor',\n 'camera',\n 'chart',\n 'cie',\n 'ct',\n 'dimmer',\n 'door',\n 'fireAlarm',\n 'floodAlarm',\n 'gate',\n 'hue',\n 'humidity',\n 'illuminance',\n 'image',\n 'info',\n 'instance',\n 'light',\n 'location',\n 'lock',\n 'media',\n 'motion',\n 'rgb',\n 'rgbSingle',\n 'rgbwSingle',\n 'slider',\n 'socket',\n 'temperature',\n 'thermostat',\n 'vacuumCleaner',\n 'volume',\n 'volumeGroup',\n 'warning',\n 'weatherCurrent',\n 'weatherForecast',\n 'window',\n 'windowTilt',\n 'hub3',\n 'node',\n 'controller',\n 'hub5',\n] as const;\n\nexport type DeviceType = (typeof deviceTypes)[number];\n\nexport function isDeviceIcon(icon: string): DeviceType | null {\n if (deviceTypes.includes(icon as DeviceType)) {\n return icon as DeviceType;\n }\n return null;\n}\n\nexport function getDeviceIcon(type: DeviceType, props?: IconProps): React.JSX.Element | null {\n let SvgComponent: SvgIconComponent | undefined;\n if (type === 'hub3') {\n SvgComponent = DeviceHub;\n }\n if (type === 'node') {\n SvgComponent = Polyline;\n }\n if (type === 'hub5') {\n SvgComponent = Hub;\n }\n if (type === 'controller') {\n SvgComponent = ControlCamera;\n }\n if (type === 'airCondition') {\n SvgComponent = AcUnit;\n }\n if (type === 'blind') {\n SvgComponent = Blinds;\n }\n if (type === 'camera') {\n SvgComponent = Videocam;\n }\n if (type === 'chart') {\n SvgComponent = Timeline;\n }\n if (type === 'ct') {\n SvgComponent = Gradient;\n }\n if (type === 'dimmer') {\n SvgComponent = TipsAndUpdates;\n }\n if (type === 'door') {\n SvgComponent = SensorDoor;\n }\n if (type === 'fireAlarm') {\n SvgComponent = Whatshot;\n }\n if (type === 'floodAlarm') {\n SvgComponent = Water;\n }\n if (type === 'humidity') {\n SvgComponent = WaterDrop;\n }\n if (type === 'illuminance') {\n SvgComponent = WbIridescent;\n }\n if (type === 'image') {\n SvgComponent = Image;\n }\n if (type === 'light') {\n SvgComponent = Lightbulb;\n }\n if (type === 'lock') {\n SvgComponent = Lock;\n }\n if (type === 'location') {\n SvgComponent = LocationOn;\n }\n if (type === 'media') {\n SvgComponent = PlayArrowRounded;\n }\n if (type === 'motion') {\n SvgComponent = DirectionsRun;\n }\n if (type === 'rgb') {\n SvgComponent = Palette;\n }\n if (type === 'rgbSingle') {\n SvgComponent = Palette;\n }\n if (type === 'rgbwSingle') {\n SvgComponent = Palette;\n }\n if (type === 'slider') {\n SvgComponent = Tune;\n }\n if (type === 'socket') {\n SvgComponent = Power;\n }\n if (type === 'temperature') {\n SvgComponent = Thermostat;\n }\n if (type === 'thermostat') {\n SvgComponent = Thermostat;\n }\n if (type === 'volume') {\n SvgComponent = VolumeUp;\n }\n if (type === 'volumeGroup') {\n SvgComponent = VolumeUp;\n }\n if (type === 'weatherCurrent') {\n SvgComponent = Air;\n }\n if (type === 'weatherForecast') {\n SvgComponent = WbSunny;\n }\n if (type === 'window') {\n SvgComponent = Window;\n }\n if (type === 'windowTilt') {\n SvgComponent = Window;\n }\n if (type === 'blindButtons') {\n SvgComponent = BlindsClosed;\n }\n if (type === 'button') {\n SvgComponent = IconButtonImage as SvgIconComponent;\n }\n if (type === 'buttonSensor') {\n SvgComponent = IconButtonImage as SvgIconComponent;\n }\n if (type === 'cie') {\n SvgComponent = ColorLens;\n }\n if (type === 'gate') {\n SvgComponent = DoorSliding;\n }\n if (type === 'hue') {\n SvgComponent = ColorLens;\n }\n if (type === 'info') {\n SvgComponent = Info;\n }\n if (type === 'instance') {\n SvgComponent = IconInstance as SvgIconComponent;\n }\n if (type === 'unknown') {\n SvgComponent = QuestionMark;\n }\n if (type === 'vacuumCleaner') {\n SvgComponent = IconVacuum as SvgIconComponent;\n }\n if (type === 'warning') {\n SvgComponent = Warning;\n }\n\n if (SvgComponent) {\n return (\n <SvgComponent\n style={props?.style || undefined}\n className={Utils.clsx(props?.className, 'iconOwn')}\n />\n );\n }\n return null;\n}\n\nexport function IconDeviceType(props: IconProps): React.JSX.Element | null {\n const icon = getDeviceIcon(props.src as DeviceType, props);\n if (icon) {\n return icon;\n }\n\n return <Icon {...props} />;\n}\n"]}
|
|
@@ -69,5 +69,4 @@ export function IconPicker(props) {
|
|
|
69
69
|
React.createElement("input", { ...getInputProps() }),
|
|
70
70
|
isDragActive ? (React.createElement("span", { style: styles.text }, I18n.t('ra_Drop the files here...'))) : (React.createElement("span", { style: styles.text }, I18n.t("ra_Drag 'n' drop some files here, or click to select files")))))))));
|
|
71
71
|
}
|
|
72
|
-
;
|
|
73
72
|
//# sourceMappingURL=IconPicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconPicker.js","sourceRoot":"./src/","sources":["Components/IconPicker.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IconPicker.js","sourceRoot":"./src/","sources":["Components/IconPicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback } from 'react';\nimport { useDropzone } from 'react-dropzone';\n\nimport { InputLabel, FormControl, IconButton } from '@mui/material';\nimport { Clear as ClearIcon } from '@mui/icons-material';\n\nimport { IconSelector } from './IconSelector';\nimport { Icon } from './Icon';\nimport { I18n } from '../i18n';\nimport { Utils } from './Utils';\n\nconst styles: Record<string, React.CSSProperties> = {\n formContainer: {\n display: 'flex',\n justifyContent: 'left',\n alignItems: 'center',\n },\n formControl: {\n display: 'flex',\n padding: 24,\n flexGrow: 1000,\n },\n divContainer: {\n width: 32 + 32,\n height: 32,\n whiteSpace: 'nowrap',\n lineHeight: '32px',\n marginRight: 8,\n },\n dragField: {\n textAlign: 'center',\n display: 'table',\n minHeight: 90,\n width: 'calc(100% - 60px)',\n border: '2px dashed #777',\n borderRadius: 10,\n padding: 4,\n },\n formIcon: {\n margin: 10,\n opacity: 0.6,\n },\n text: {\n display: 'table-cell',\n verticalAlign: 'middle',\n },\n};\n\ninterface IconPickerProps {\n previewStyle?: React.CSSProperties;\n previewClassName?: string;\n /** Custom icon element. */\n icon?: React.FC<{ style?: React.CSSProperties }>;\n customStyles?: Record<string, React.CSSProperties>;\n customClasses?: Record<string, string>;\n /** The label. */\n label?: string;\n /** The value. */\n value?: any;\n /** Set to true to disable the icon picker. */\n disabled?: boolean;\n /** The icon change callback. */\n onChange: (icon: string) => void;\n icons?: {\n icon?: string;\n src?: string;\n href?: string;\n name?: ioBroker.StringOrTranslated;\n _id?: string;\n }[];\n onlyRooms?: boolean;\n onlyDevices?: boolean;\n}\n\nexport function IconPicker(props: IconPickerProps): React.JSX.Element {\n const IconCustom = props.icon;\n\n const onChange = props.onChange;\n\n const onDrop = useCallback(\n (acceptedFiles: File[]) => {\n const reader = new FileReader();\n\n reader.addEventListener('load', () => onChange(reader.result as string), false);\n\n if (acceptedFiles[0]) {\n reader.readAsDataURL(acceptedFiles[0]);\n }\n },\n [onChange],\n );\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });\n\n return (\n <div style={styles.formContainer}>\n {IconCustom ? <IconCustom style={styles.formIcon} /> : null}\n <FormControl\n variant=\"standard\"\n style={{ ...styles.formControl, padding: 3 }}\n >\n <InputLabel\n shrink\n sx={props.customStyles?.label ? { '&.MuiInputLabel-root': props.customStyles.label } : undefined}\n classes={{ root: props.customClasses?.label }}\n >\n {props.label}\n </InputLabel>\n <div style={styles.formContainer}>\n {props.value ? (\n <div style={styles.divContainer}>\n <Icon\n style={{ ...props.previewStyle, ...(props.customStyles?.icon || undefined) }}\n src={props.value}\n className={Utils.clsx(props.previewClassName, props.customClasses?.icon)}\n />\n {!props.disabled && (\n <IconButton\n style={{ verticalAlign: 'top' }}\n title={I18n.t('ra_Clear icon')}\n size=\"small\"\n onClick={() => props.onChange('')}\n >\n <ClearIcon />\n </IconButton>\n )}\n </div>\n ) : (\n !props.disabled && (\n <IconSelector\n icons={props.icons}\n onlyRooms={props.onlyRooms}\n onlyDevices={props.onlyDevices}\n onSelect={(base64: string) => props.onChange(base64)}\n t={I18n.t}\n lang={I18n.getLanguage()}\n />\n )\n )}\n\n {!props.disabled && (\n <div\n {...getRootProps()}\n style={{\n ...styles.dragField,\n ...(isDragActive ? { backgroundColor: 'rgba(0, 255, 0, 0.1)' } : { cursor: 'pointer' }),\n }}\n >\n <input {...getInputProps()} />\n {isDragActive ? (\n <span style={styles.text}>{I18n.t('ra_Drop the files here...')}</span>\n ) : (\n <span style={styles.text}>\n {I18n.t(\"ra_Drag 'n' drop some files here, or click to select files\")}\n </span>\n )}\n </div>\n )}\n </div>\n </FormControl>\n </div>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.js","sourceRoot":"./src/","sources":["Components/Image.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\nimport { Component } from 'react';\n\nimport { IconNoIcon } from '../icons/IconNoIcon';\n\nfunction getElementFromSource(src: string): HTMLElement | null {\n const svgContainer = document.createElement('div');\n svgContainer.innerHTML = src;\n const svg: HTMLElement = svgContainer.firstElementChild as HTMLElement;\n if (svg?.remove) {\n svg.remove();\n } else if (svg) {\n svgContainer.removeChild(svg);\n }\n\n svgContainer.remove();\n return svg;\n}\n\nfunction serializeAttrs(map?: NamedNodeMap): Record<string, string> {\n const ret: Record<string, string> = {};\n if (!map) {\n return ret;\n }\n for (let prop, i = 0; i < map.length; i++) {\n const key = map[i].name;\n if (key === 'class') {\n prop = 'className';\n } else if (!key.startsWith('data-')) {\n prop = key.replace(/[-|:]([a-z])/g, g => g[1].toUpperCase());\n } else {\n prop = key;\n }\n\n ret[prop] = map[i].value;\n }\n return ret;\n}\n\ninterface ImageProps {\n /* The color */\n color?: string;\n /* The source of the image */\n src?: string;\n /* The image prefix (default: './files/') */\n imagePrefix?: string;\n /* The CSS class name */\n className?: string;\n /* Show image errors (or just show no image)? */\n showError?: boolean;\n}\n\ninterface ImageState {\n svg?: boolean;\n created?: boolean;\n color?: string;\n src?: string;\n imgError?: boolean;\n showError?: boolean;\n}\n\n/**\n * A component for displaying an image.\n */\nexport class Image extends Component<ImageProps, ImageState> {\n private svg: JSX.Element | null;\n\n static REMOTE_SERVER: boolean = window.location.hostname.includes('iobroker.in');\n\n static REMOTE_PREFIX: string = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);\n\n constructor(props: ImageProps) {\n super(props);\n this.state = {\n svg: !!this.props.src?.startsWith('data:'),\n created: true,\n color: this.props.color || '',\n src: this.props.src || '',\n imgError: false,\n showError: !!this.props.showError,\n };\n\n this.svg = this.state.svg && this.state.src ? this.getSvgFromData(this.state.src) : null;\n }\n\n static getDerivedStateFromProps(props: ImageProps, state: ImageState): Partial<ImageState> | null {\n const newState: ImageState = {};\n let changed = false;\n\n if (props && state && props.src !== state.src) {\n newState.src = props.src;\n newState.svg = props.src?.startsWith('data:');\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.color !== state.color) {\n newState.color = props.color;\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.showError !== state.showError) {\n newState.showError = props.showError;\n changed = true;\n }\n\n return changed ? newState : null;\n }\n\n getSvgFromData(src: string): JSX.Element | null {\n const len = 'data:image/svg+xml;base64,';\n if (!src.startsWith(len)) {\n return null;\n }\n src = src.substring(len.length);\n try {\n src = atob(src);\n const svg = getElementFromSource(src) as HTMLElement;\n const inner = svg.innerHTML;\n const svgProps = serializeAttrs(svg.attributes);\n\n svg.remove();\n\n return (\n <svg\n className={this.props.className}\n style={this.state.color ? { color: this.state.color } : {}}\n {...svgProps}\n dangerouslySetInnerHTML={{ __html: inner }}\n />\n );\n } catch {\n // ignore\n }\n return null;\n }\n\n render(): JSX.Element | null {\n if (this.state.svg) {\n if (!this.state.created) {\n setTimeout(() => {\n this.svg = this.state.src ? this.getSvgFromData(this.state.src) : null;\n this.setState({ created: true });\n }, 50);\n }\n\n return this.svg;\n }\n if (this.state.src) {\n if (this.state.imgError || !this.state.src) {\n return <IconNoIcon className={this.props.className} />;\n }\n if (\n Image.REMOTE_SERVER &&\n !this.state.src.startsWith('http://') &&\n !this.state.src.startsWith('https://')\n ) {\n let src = (this.props.imagePrefix || '') + this.state.src;\n if (src.startsWith('./')) {\n src = Image.REMOTE_PREFIX + src.substring(2);\n } else if (!src.startsWith('/')) {\n src = Image.REMOTE_PREFIX + src;\n }\n return (\n <img\n className={this.props.className}\n src={`https://remote-files.iobroker.in${src}`}\n alt=\"\"\n onError={() =>\n this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' })\n }\n />\n );\n }\n\n return (\n <img\n className={this.props.className}\n src={(this.props.imagePrefix || '') + this.state.src}\n alt=\"\"\n onError={() =>\n this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' })\n }\n />\n );\n }\n\n return null;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Image.js","sourceRoot":"./src/","sources":["Components/Image.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\nimport { Component } from 'react';\n\nimport { IconNoIcon } from '../icons/IconNoIcon';\n\nfunction getElementFromSource(src: string): HTMLElement | null {\n const svgContainer = document.createElement('div');\n svgContainer.innerHTML = src;\n const svg: HTMLElement = svgContainer.firstElementChild as HTMLElement;\n if (svg?.remove) {\n svg.remove();\n } else if (svg) {\n svgContainer.removeChild(svg);\n }\n\n svgContainer.remove();\n return svg;\n}\n\nfunction serializeAttrs(map?: NamedNodeMap): Record<string, string> {\n const ret: Record<string, string> = {};\n if (!map) {\n return ret;\n }\n for (let prop, i = 0; i < map.length; i++) {\n const key = map[i].name;\n if (key === 'class') {\n prop = 'className';\n } else if (!key.startsWith('data-')) {\n prop = key.replace(/[-|:]([a-z])/g, g => g[1].toUpperCase());\n } else {\n prop = key;\n }\n\n ret[prop] = map[i].value;\n }\n return ret;\n}\n\ninterface ImageProps {\n /* The color */\n color?: string;\n /* The source of the image */\n src?: string;\n /* The image prefix (default: './files/') */\n imagePrefix?: string;\n /* The CSS class name */\n className?: string;\n /* Show image errors (or just show no image)? */\n showError?: boolean;\n}\n\ninterface ImageState {\n svg?: boolean;\n created?: boolean;\n color?: string;\n src?: string;\n imgError?: boolean;\n showError?: boolean;\n}\n\n/**\n * A component for displaying an image.\n */\nexport class Image extends Component<ImageProps, ImageState> {\n private svg: JSX.Element | null;\n\n static REMOTE_SERVER: boolean = window.location.hostname.includes('iobroker.in');\n\n static REMOTE_PREFIX: string = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);\n\n constructor(props: ImageProps) {\n super(props);\n this.state = {\n svg: !!this.props.src?.startsWith('data:'),\n created: true,\n color: this.props.color || '',\n src: this.props.src || '',\n imgError: false,\n showError: !!this.props.showError,\n };\n\n this.svg = this.state.svg && this.state.src ? this.getSvgFromData(this.state.src) : null;\n }\n\n static getDerivedStateFromProps(props: ImageProps, state: ImageState): Partial<ImageState> | null {\n const newState: ImageState = {};\n let changed = false;\n\n if (props && state && props.src !== state.src) {\n newState.src = props.src;\n newState.svg = props.src?.startsWith('data:');\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.color !== state.color) {\n newState.color = props.color;\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.showError !== state.showError) {\n newState.showError = props.showError;\n changed = true;\n }\n\n return changed ? newState : null;\n }\n\n getSvgFromData(src: string): JSX.Element | null {\n const len = 'data:image/svg+xml;base64,';\n if (!src.startsWith(len)) {\n return null;\n }\n src = src.substring(len.length);\n try {\n src = atob(src);\n const svg: HTMLElement = getElementFromSource(src);\n const inner = svg.innerHTML;\n const svgProps = serializeAttrs(svg.attributes);\n\n svg.remove();\n\n return (\n <svg\n className={this.props.className}\n style={this.state.color ? { color: this.state.color } : {}}\n {...svgProps}\n dangerouslySetInnerHTML={{ __html: inner }}\n />\n );\n } catch {\n // ignore\n }\n return null;\n }\n\n render(): JSX.Element | null {\n if (this.state.svg) {\n if (!this.state.created) {\n setTimeout(() => {\n this.svg = this.state.src ? this.getSvgFromData(this.state.src) : null;\n this.setState({ created: true });\n }, 50);\n }\n\n return this.svg;\n }\n if (this.state.src) {\n if (this.state.imgError || !this.state.src) {\n return <IconNoIcon className={this.props.className} />;\n }\n if (\n Image.REMOTE_SERVER &&\n !this.state.src.startsWith('http://') &&\n !this.state.src.startsWith('https://')\n ) {\n let src = (this.props.imagePrefix || '') + this.state.src;\n if (src.startsWith('./')) {\n src = Image.REMOTE_PREFIX + src.substring(2);\n } else if (!src.startsWith('/')) {\n src = Image.REMOTE_PREFIX + src;\n }\n return (\n <img\n className={this.props.className}\n src={`https://remote-files.iobroker.in${src}`}\n alt=\"\"\n onError={() =>\n this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' })\n }\n />\n );\n }\n\n return (\n <img\n className={this.props.className}\n src={(this.props.imagePrefix || '') + this.state.src}\n alt=\"\"\n onError={() =>\n this.props.showError ? this.setState({ imgError: true }) : this.setState({ src: '' })\n }\n />\n );\n }\n\n return null;\n }\n}\n"]}
|
package/build/Components/Logo.js
CHANGED
|
@@ -22,9 +22,9 @@ export class Logo extends React.Component {
|
|
|
22
22
|
}
|
|
23
23
|
const f = files[0];
|
|
24
24
|
if (f) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
const contents =
|
|
25
|
+
const reader = new window.FileReader();
|
|
26
|
+
reader.onload = () => {
|
|
27
|
+
const contents = reader.result?.toString() || '';
|
|
28
28
|
try {
|
|
29
29
|
const json = JSON.parse(contents);
|
|
30
30
|
if (json.native && json.common) {
|
|
@@ -43,7 +43,7 @@ export class Logo extends React.Component {
|
|
|
43
43
|
this.props.onError && this.props.onError(err?.toString());
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
|
|
46
|
+
reader.readAsText(f);
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
49
|
alert('Failed to open JSON File');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logo.js","sourceRoot":"./src/","sources":["Components/Logo.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Fab } from '@mui/material';\n\nimport {\n Help as IconHelp,\n VerticalAlignTop as IconUpload,\n VerticalAlignBottom as IconDownload,\n} from '@mui/icons-material';\n\nimport { I18n } from '../i18n';\nimport { Icon } from './Icon';\n\ninterface LogoProps {\n /* Adapter common configuration from io-package.json */\n common: any;\n /* Adapter native data from io-package.json */\n native: any;\n /* Adapter instance number. */\n instance: number;\n /* on Load handler */\n onLoad?: (contents: any) => void;\n /* on Error handler */\n onError?: (error: string) => void;\n className?: string;\n style?: Record<string, any>;\n}\n\nexport class Logo extends React.Component<LogoProps> {\n static generateFile(fileName: string, obj: any): void {\n const el = window.document.createElement('a');\n el.setAttribute(\n 'href',\n `data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(obj, null, 2))}`,\n );\n el.setAttribute('download', fileName);\n\n el.style.display = 'none';\n window.document.body.appendChild(el);\n\n el.click();\n\n window.document.body.removeChild(el);\n }\n\n handleFileSelect = (evt: Event): void => {\n const target = evt.target as HTMLInputElement;\n const files = target?.files;\n if (!files || !files.length) {\n console.error('No files found. Please report to developers');\n return;\n }\n const f = files[0];\n\n if (f) {\n const r = new window.FileReader();\n r.onload = () => {\n const contents: string = r.result?.toString() || '';\n try {\n const json = JSON.parse(contents);\n if (json.native && json.common) {\n if (json.common.name !== this.props.common.name) {\n this.props.onError && this.props.onError(I18n.t('ra_otherConfig', json.common.name));\n } else {\n this.props.onLoad && this.props.onLoad(json.native);\n }\n } else {\n this.props.onError && this.props.onError(I18n.t('ra_invalidConfig'));\n }\n } catch (err: any) {\n this.props.onError && this.props.onError(err?.toString());\n }\n };\n r.readAsText(f);\n } else {\n alert('Failed to open JSON File');\n }\n };\n\n download(): void {\n const result = {\n _id: `system.adapter.${this.props.common.name}.${this.props.instance}`,\n common: JSON.parse(JSON.stringify(this.props.common)),\n native: this.props.native,\n };\n // remove unimportant information\n if (result.common.news) {\n delete result.common.news;\n }\n if (result.common.titleLang) {\n delete result.common.titleLang;\n }\n if (result.common.desc) {\n delete result.common.desc;\n }\n\n // window.open('data:application/iobroker; content-disposition=attachment; filename=' + result._id + '.json,' + JSON.stringify(result, null, 2));\n Logo.generateFile(`${result._id}.json`, result);\n }\n\n upload(): void {\n const input = window.document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', '0');\n input.addEventListener('change', this.handleFileSelect, false);\n input.click();\n }\n\n render(): React.JSX.Element {\n return (\n <div\n className={this.props.className}\n style={this.props.style}\n >\n {this.props.common.icon ? (\n <Icon\n src={this.props.common.icon}\n style={{\n padding: 8,\n width: 64,\n }}\n alt=\"logo\"\n />\n ) : null}\n {this.props.common.readme ? (\n <Fab\n size=\"small\"\n color=\"primary\"\n aria-label=\"Help\"\n style={{\n marginRight: 5,\n marginTop: 5,\n float: 'right',\n }}\n onClick={() => {\n const win = window.open(this.props.common.readme, '_blank');\n win?.focus();\n }}\n >\n <IconHelp />\n </Fab>\n ) : null}\n <Fab\n size=\"small\"\n color=\"primary\"\n aria-label=\"Load config\"\n style={{\n marginRight: 5,\n marginTop: 5,\n float: 'right',\n }}\n title={I18n.t('ra_Load configuration from file')}\n onClick={() => this.upload()}\n >\n <IconUpload />\n </Fab>\n <Fab\n size=\"small\"\n color=\"primary\"\n aria-label=\"Save config\"\n style={{\n marginRight: 5,\n marginTop: 5,\n float: 'right',\n }}\n title={I18n.t('ra_Save configuration to file')}\n onClick={() => this.download()}\n >\n <IconDownload />\n </Fab>\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Logo.js","sourceRoot":"./src/","sources":["Components/Logo.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Fab } from '@mui/material';\n\nimport {\n Help as IconHelp,\n VerticalAlignTop as IconUpload,\n VerticalAlignBottom as IconDownload,\n} from '@mui/icons-material';\n\nimport { I18n } from '../i18n';\nimport { Icon } from './Icon';\n\ninterface LogoProps {\n /* Adapter common configuration from io-package.json */\n common: any;\n /* Adapter native data from io-package.json */\n native: any;\n /* Adapter instance number. */\n instance: number;\n /* on Load handler */\n onLoad?: (contents: any) => void;\n /* on Error handler */\n onError?: (error: string) => void;\n className?: string;\n style?: Record<string, any>;\n}\n\nexport class Logo extends React.Component<LogoProps> {\n static generateFile(fileName: string, obj: any): void {\n const el = window.document.createElement('a');\n el.setAttribute(\n 'href',\n `data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(obj, null, 2))}`,\n );\n el.setAttribute('download', fileName);\n\n el.style.display = 'none';\n window.document.body.appendChild(el);\n\n el.click();\n\n window.document.body.removeChild(el);\n }\n\n handleFileSelect = (evt: Event): void => {\n const target = evt.target as HTMLInputElement;\n const files = target?.files;\n if (!files || !files.length) {\n console.error('No files found. Please report to developers');\n return;\n }\n const f = files[0];\n\n if (f) {\n const reader = new window.FileReader();\n reader.onload = () => {\n const contents: string = reader.result?.toString() || '';\n try {\n const json = JSON.parse(contents);\n if (json.native && json.common) {\n if (json.common.name !== this.props.common.name) {\n this.props.onError && this.props.onError(I18n.t('ra_otherConfig', json.common.name));\n } else {\n this.props.onLoad && this.props.onLoad(json.native);\n }\n } else {\n this.props.onError && this.props.onError(I18n.t('ra_invalidConfig'));\n }\n } catch (err: any) {\n this.props.onError && this.props.onError(err?.toString());\n }\n };\n reader.readAsText(f);\n } else {\n alert('Failed to open JSON File');\n }\n };\n\n download(): void {\n const result = {\n _id: `system.adapter.${this.props.common.name}.${this.props.instance}`,\n common: JSON.parse(JSON.stringify(this.props.common)),\n native: this.props.native,\n };\n // remove unimportant information\n if (result.common.news) {\n delete result.common.news;\n }\n if (result.common.titleLang) {\n delete result.common.titleLang;\n }\n if (result.common.desc) {\n delete result.common.desc;\n }\n\n // window.open('data:application/iobroker; content-disposition=attachment; filename=' + result._id + '.json,' + JSON.stringify(result, null, 2));\n Logo.generateFile(`${result._id}.json`, result);\n }\n\n upload(): void {\n const input = window.document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', '0');\n input.addEventListener('change', this.handleFileSelect, false);\n input.click();\n }\n\n render(): React.JSX.Element {\n return (\n <div\n className={this.props.className}\n style={this.props.style}\n >\n {this.props.common.icon ? (\n <Icon\n src={this.props.common.icon}\n style={{\n padding: 8,\n width: 64,\n }}\n alt=\"logo\"\n />\n ) : null}\n {this.props.common.readme ? (\n <Fab\n size=\"small\"\n color=\"primary\"\n aria-label=\"Help\"\n style={{\n marginRight: 5,\n marginTop: 5,\n float: 'right',\n }}\n onClick={() => {\n const win = window.open(this.props.common.readme, '_blank');\n win?.focus();\n }}\n >\n <IconHelp />\n </Fab>\n ) : null}\n <Fab\n size=\"small\"\n color=\"primary\"\n aria-label=\"Load config\"\n style={{\n marginRight: 5,\n marginTop: 5,\n float: 'right',\n }}\n title={I18n.t('ra_Load configuration from file')}\n onClick={() => this.upload()}\n >\n <IconUpload />\n </Fab>\n <Fab\n size=\"small\"\n color=\"primary\"\n aria-label=\"Save config\"\n style={{\n marginRight: 5,\n marginTop: 5,\n float: 'right',\n }}\n title={I18n.t('ra_Save configuration to file')}\n onClick={() => this.download()}\n >\n <IconDownload />\n </Fab>\n </div>\n );\n }\n}\n"]}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
*/
|
|
7
7
|
import React, { Component, type JSX } from 'react';
|
|
8
|
-
import type { Router } from './Router';
|
|
9
8
|
import type { ThemeType, ThemeName, IobTheme, Translate } from '../types';
|
|
9
|
+
import type { Router } from './Router';
|
|
10
10
|
import { Connection } from '../Connection';
|
|
11
11
|
declare global {
|
|
12
12
|
interface Window {
|
|
@@ -84,7 +84,7 @@ export interface TreeItemData {
|
|
|
84
84
|
};
|
|
85
85
|
aclTooltip?: null | JSX.Element;
|
|
86
86
|
}
|
|
87
|
-
interface ObjectBrowserCustomFilter {
|
|
87
|
+
export interface ObjectBrowserCustomFilter {
|
|
88
88
|
type?: ioBroker.ObjectType | ioBroker.ObjectType[];
|
|
89
89
|
common?: {
|
|
90
90
|
type?: ioBroker.CommonType | ioBroker.CommonType[];
|
|
@@ -202,7 +202,7 @@ interface ObjectBrowserEditObjectProps {
|
|
|
202
202
|
t: Translate;
|
|
203
203
|
width?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
204
204
|
}
|
|
205
|
-
interface ObjectAliasEditorProps {
|
|
205
|
+
export interface ObjectAliasEditorProps {
|
|
206
206
|
t: Translate;
|
|
207
207
|
socket: Connection;
|
|
208
208
|
objects: Record<string, ioBroker.AnyObject>;
|
|
@@ -210,7 +210,9 @@ interface ObjectAliasEditorProps {
|
|
|
210
210
|
obj: ioBroker.AnyObject;
|
|
211
211
|
onClose: () => void;
|
|
212
212
|
}
|
|
213
|
-
|
|
213
|
+
export type ObjectBrowserColumn = 'name' | 'type' | 'role' | 'room' | 'func' | 'val' | 'buttons';
|
|
214
|
+
type ObjectBrowserPossibleColumns = 'name' | 'type' | 'role' | 'room' | 'func' | 'val' | 'buttons' | 'changedFrom' | 'qualityCode' | 'timestamp' | 'lastChange' | 'id';
|
|
215
|
+
export interface ObjectBrowserProps {
|
|
214
216
|
/** where to store settings in localStorage */
|
|
215
217
|
dialogName?: string;
|
|
216
218
|
defaultFilters?: ObjectBrowserFilter;
|
|
@@ -271,7 +273,7 @@ interface ObjectBrowserProps {
|
|
|
271
273
|
router?: typeof Router;
|
|
272
274
|
types?: ioBroker.ObjectType[];
|
|
273
275
|
/** Possible columns: ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */
|
|
274
|
-
columns?:
|
|
276
|
+
columns?: ObjectBrowserColumn[];
|
|
275
277
|
/** Shows only elements of this root */
|
|
276
278
|
root?: string;
|
|
277
279
|
/** cache of objects */
|
|
@@ -315,7 +317,7 @@ interface ObjectBrowserState {
|
|
|
315
317
|
roleDialog: null | string;
|
|
316
318
|
statesView: boolean;
|
|
317
319
|
/** ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */
|
|
318
|
-
columns:
|
|
320
|
+
columns: ObjectBrowserPossibleColumns[] | null;
|
|
319
321
|
columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null;
|
|
320
322
|
columnsSelectorShow: boolean;
|
|
321
323
|
columnsAuto: boolean;
|
|
@@ -3802,7 +3802,7 @@ export class ObjectBrowserClass extends Component {
|
|
|
3802
3802
|
from: false,
|
|
3803
3803
|
ack: false,
|
|
3804
3804
|
q: false,
|
|
3805
|
-
|
|
3805
|
+
addId: false,
|
|
3806
3806
|
aggregate: 'minmax',
|
|
3807
3807
|
})
|
|
3808
3808
|
.then(values => {
|
|
@@ -5723,7 +5723,7 @@ export class ObjectBrowserClass extends Component {
|
|
|
5723
5723
|
icon: (React.createElement(IconLink, { style: obj?.common?.alias
|
|
5724
5724
|
? this.styles.cellButtonsButtonWithCustoms
|
|
5725
5725
|
: styles.cellButtonsButtonWithoutCustoms })),
|
|
5726
|
-
label: this.info.aliasesMap[item.data.id]
|
|
5726
|
+
label: this.info.aliasesMap[item.data.id] || item.data.id.startsWith('alias.0.')
|
|
5727
5727
|
? this.props.t('ra_Edit alias')
|
|
5728
5728
|
: this.props.t('ra_Create alias'),
|
|
5729
5729
|
onClick: () => {
|