@iobroker/json-config 8.0.8 → 8.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -3
- package/build/JsonConfigComponent/ChipInput.d.ts +1 -4
- package/build/JsonConfigComponent/ChipInput.js +4 -19
- package/build/JsonConfigComponent/ChipInput.js.map +1 -1
- package/build/JsonConfigComponent/ConfigAutocompleteSendTo.d.ts +2 -2
- package/build/JsonConfigComponent/ConfigAutocompleteSendTo.js +17 -17
- package/build/JsonConfigComponent/ConfigAutocompleteSendTo.js.map +1 -1
- package/build/JsonConfigComponent/ConfigDatePicker.d.ts +1 -1
- package/build/JsonConfigComponent/ConfigDatePicker.js +11 -3
- package/build/JsonConfigComponent/ConfigDatePicker.js.map +1 -1
- package/build/JsonConfigComponent/ConfigIFrame.d.ts +17 -0
- package/build/JsonConfigComponent/ConfigIFrame.js +51 -0
- package/build/JsonConfigComponent/ConfigIFrame.js.map +1 -0
- package/build/JsonConfigComponent/ConfigIFrameSendTo.d.ts +21 -0
- package/build/JsonConfigComponent/ConfigIFrameSendTo.js +89 -0
- package/build/JsonConfigComponent/ConfigIFrameSendTo.js.map +1 -0
- package/build/JsonConfigComponent/ConfigJsonEditor.d.ts +2 -2
- package/build/JsonConfigComponent/ConfigJsonEditor.js +11 -5
- package/build/JsonConfigComponent/ConfigJsonEditor.js.map +1 -1
- package/build/JsonConfigComponent/ConfigObjectId.js +1 -1
- package/build/JsonConfigComponent/ConfigObjectId.js.map +1 -1
- package/build/JsonConfigComponent/ConfigPanel.js +4 -0
- package/build/JsonConfigComponent/ConfigPanel.js.map +1 -1
- package/build/types.d.ts +75 -49
- package/package.json +5 -5
|
@@ -16,10 +16,10 @@ export default class ConfigDatePicker extends ConfigGeneric {
|
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
renderItem(
|
|
19
|
+
renderItem(error, disabled /* , defaultValue */) {
|
|
20
20
|
return (React.createElement(DatePicker, { sx: theme => ({
|
|
21
21
|
width: '100%',
|
|
22
|
-
borderBottom: `1px solid ${theme.palette.text.primary}`,
|
|
22
|
+
borderBottom: `1px solid ${error ? '#F00' : theme.palette.text.primary}`,
|
|
23
23
|
'& fieldset': {
|
|
24
24
|
display: 'none',
|
|
25
25
|
},
|
|
@@ -33,7 +33,15 @@ export default class ConfigDatePicker extends ConfigGeneric {
|
|
|
33
33
|
'& label': {
|
|
34
34
|
transform: 'translate(0px, -9px) scale(0.75)',
|
|
35
35
|
},
|
|
36
|
-
}), format: this.props.oContext.systemConfig.dateFormat.toLowerCase().replace('mm', 'MM'), disabled: !!disabled, value: this.state.value || null, onChange: (value) => this.setState({ value }, () =>
|
|
36
|
+
}), format: this.props.oContext.systemConfig.dateFormat.toLowerCase().replace('mm', 'MM'), disabled: !!disabled, value: this.state.value || null, onChange: (value) => this.setState({ value }, () => {
|
|
37
|
+
try {
|
|
38
|
+
const dateStr = this.state.value.toISOString();
|
|
39
|
+
this.onChange(this.props.attr, dateStr).catch(e => console.warn(`Error saving value for ${this.props.attr}:`, e));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// ignore
|
|
43
|
+
}
|
|
44
|
+
}), label: this.getText(this.props.schema.label) }));
|
|
37
45
|
}
|
|
38
46
|
}
|
|
39
47
|
//# sourceMappingURL=ConfigDatePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigDatePicker.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigDatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,aAA0C,MAAM,iBAAiB,CAAC;AAMzE,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAAoC;IAC9E,iBAAiB;QACb,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrE,oCAAoC;QACpC,IAAI,GAAG,EAAE,CAAC;YACN,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;QACL,CAAC;IACL,CAAC;IAED,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"ConfigDatePicker.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigDatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,aAA0C,MAAM,iBAAiB,CAAC;AAMzE,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAAoC;IAC9E,iBAAiB;QACb,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrE,oCAAoC;QACpC,IAAI,GAAG,EAAE,CAAC;YACN,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;QACL,CAAC;IACL,CAAC;IAED,UAAU,CAAC,KAAc,EAAE,QAAiB,CAAC,oBAAoB;QAC7D,OAAO,CACH,oBAAC,UAAU,IACP,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBACV,KAAK,EAAE,MAAM;gBACb,YAAY,EAAE,aAAa,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;gBACxE,YAAY,EAAE;oBACV,OAAO,EAAE,MAAM;iBAClB;gBACD,SAAS,EAAE;oBACP,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU;iBAC3C;gBACD,2BAA2B,EAAE;oBACzB,UAAU,EAAE,CAAC;oBACb,SAAS,EAAE,CAAC,EAAE,0BAA0B;iBAC3C;gBACD,SAAS,EAAE;oBACP,SAAS,EAAE,kCAAkC;iBAChD;aACJ,CAAC,EACF,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EACrF,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,KAAK,EAAG,IAAI,CAAC,KAAK,CAAC,KAAe,IAAI,IAAI,EAC1C,QAAQ,EAAE,CAAC,KAAW,EAAQ,EAAE,CAC5B,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBAC1B,IAAI,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAC9C,OAAO,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAChE,CAAC;gBACN,CAAC;gBAAC,MAAM,CAAC;oBACL,SAAS;gBACb,CAAC;YACL,CAAC,CAAC,EAEN,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAC9C,CACL,CAAC;IACN,CAAC;CACJ","sourcesContent":["import React, { type JSX } from 'react';\n\nimport { DatePicker } from '@mui/x-date-pickers';\n\nimport type { ConfigItemDatePicker } from '../types';\nimport ConfigGeneric, { type ConfigGenericProps } from './ConfigGeneric';\n\ninterface ConfigDatePickerProps extends ConfigGenericProps {\n schema: ConfigItemDatePicker;\n}\n\nexport default class ConfigDatePicker extends ConfigGeneric<ConfigDatePickerProps> {\n componentDidMount(): void {\n super.componentDidMount();\n const str = ConfigGeneric.getValue(this.props.data, this.props.attr);\n // Date picker expects a Date object\n if (str) {\n try {\n const date = new Date(str);\n this.setState({ value: date });\n } catch {\n // ignore\n }\n }\n }\n\n renderItem(error: boolean, disabled: boolean /* , defaultValue */): JSX.Element {\n return (\n <DatePicker\n sx={theme => ({\n width: '100%',\n borderBottom: `1px solid ${error ? '#F00' : theme.palette.text.primary}`,\n '& fieldset': {\n display: 'none',\n },\n '& input': {\n padding: `${theme.spacing(1.5)} 0 4px 0`,\n },\n '& .MuiInputAdornment-root': {\n marginLeft: 0,\n marginTop: 1, // it is already in spaces\n },\n '& label': {\n transform: 'translate(0px, -9px) scale(0.75)',\n },\n })}\n format={this.props.oContext.systemConfig.dateFormat.toLowerCase().replace('mm', 'MM')}\n disabled={!!disabled}\n value={(this.state.value as never) || null}\n onChange={(value: Date): void =>\n this.setState({ value }, () => {\n try {\n const dateStr = this.state.value.toISOString();\n this.onChange(this.props.attr, dateStr).catch(e =>\n console.warn(`Error saving value for ${this.props.attr}:`, e),\n );\n } catch {\n // ignore\n }\n })\n }\n label={this.getText(this.props.schema.label)}\n />\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type JSX } from 'react';
|
|
2
|
+
import type { ConfigItemIFrame } from '../types';
|
|
3
|
+
import ConfigGeneric, { type ConfigGenericProps, type ConfigGenericState } from './ConfigGeneric';
|
|
4
|
+
interface ConfigIFrameProps extends ConfigGenericProps {
|
|
5
|
+
schema: ConfigItemIFrame;
|
|
6
|
+
}
|
|
7
|
+
interface ConfigIFrameState extends ConfigGenericState {
|
|
8
|
+
isVisible?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export default class ConfigIFrame extends ConfigGeneric<ConfigIFrameProps, ConfigIFrameState> {
|
|
11
|
+
private iframeRef;
|
|
12
|
+
private observer;
|
|
13
|
+
componentDidMount(): void;
|
|
14
|
+
componentWillUnmount(): void;
|
|
15
|
+
renderItem(error: boolean, disabled: boolean): JSX.Element;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ConfigGeneric from './ConfigGeneric';
|
|
3
|
+
export default class ConfigIFrame extends ConfigGeneric {
|
|
4
|
+
iframeRef = React.createRef();
|
|
5
|
+
observer = null;
|
|
6
|
+
componentDidMount() {
|
|
7
|
+
super.componentDidMount();
|
|
8
|
+
if (this.props.schema.reloadOnShow) {
|
|
9
|
+
this.observer = new IntersectionObserver(([entry]) => {
|
|
10
|
+
if (entry.isIntersecting && this.state.isVisible && this.iframeRef.current) {
|
|
11
|
+
const currentSrc = this.iframeRef.current.src;
|
|
12
|
+
this.iframeRef.current.src = '';
|
|
13
|
+
setTimeout(() => {
|
|
14
|
+
if (this.iframeRef.current) {
|
|
15
|
+
this.iframeRef.current.src = currentSrc;
|
|
16
|
+
}
|
|
17
|
+
}, 0);
|
|
18
|
+
}
|
|
19
|
+
this.setState({ isVisible: entry.isIntersecting });
|
|
20
|
+
});
|
|
21
|
+
if (this.iframeRef.current) {
|
|
22
|
+
this.observer.observe(this.iframeRef.current);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
componentWillUnmount() {
|
|
27
|
+
super.componentWillUnmount?.();
|
|
28
|
+
this.observer?.disconnect();
|
|
29
|
+
}
|
|
30
|
+
renderItem(error, disabled /* , defaultValue */) {
|
|
31
|
+
const url = this.props.schema.url || ConfigGeneric.getValue(this.props.data, this.props.attr);
|
|
32
|
+
return (React.createElement("div", { style: { position: 'relative', width: '100%', height: '100%' } },
|
|
33
|
+
React.createElement("iframe", { style: {
|
|
34
|
+
width: '100%',
|
|
35
|
+
height: '100%',
|
|
36
|
+
...this.props.schema.innerStyle,
|
|
37
|
+
border: error ? '1px solid red' : undefined,
|
|
38
|
+
}, ref: this.iframeRef, src: url, allowFullScreen: this.props.schema.allowFullscreen ?? false, sandbox: this.props.schema.sandbox, loading: this.props.schema.lazyLoad ?? 'lazy' }),
|
|
39
|
+
disabled && (React.createElement("div", { style: {
|
|
40
|
+
position: 'absolute',
|
|
41
|
+
top: 0,
|
|
42
|
+
left: 0,
|
|
43
|
+
width: '100%',
|
|
44
|
+
height: '100%',
|
|
45
|
+
backgroundColor: 'rgba(255, 255, 255, 0.3)',
|
|
46
|
+
cursor: 'not-allowed',
|
|
47
|
+
zIndex: 1,
|
|
48
|
+
} }))));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=ConfigIFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigIFrame.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigIFrame.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\n\nimport type { ConfigItemIFrame } from '../types';\nimport ConfigGeneric, { type ConfigGenericProps, type ConfigGenericState } from './ConfigGeneric';\n\ninterface ConfigIFrameProps extends ConfigGenericProps {\n schema: ConfigItemIFrame;\n}\n\ninterface ConfigIFrameState extends ConfigGenericState {\n isVisible?: boolean;\n}\n\nexport default class ConfigIFrame extends ConfigGeneric<ConfigIFrameProps, ConfigIFrameState> {\n private iframeRef = React.createRef<HTMLIFrameElement>();\n private observer: IntersectionObserver | null = null;\n\n componentDidMount(): void {\n super.componentDidMount();\n\n if (this.props.schema.reloadOnShow) {\n this.observer = new IntersectionObserver(([entry]) => {\n if (entry.isIntersecting && this.state.isVisible && this.iframeRef.current) {\n const currentSrc = this.iframeRef.current.src;\n this.iframeRef.current.src = '';\n setTimeout(() => {\n if (this.iframeRef.current) {\n this.iframeRef.current.src = currentSrc;\n }\n }, 0);\n }\n this.setState({ isVisible: entry.isIntersecting });\n });\n if (this.iframeRef.current) {\n this.observer.observe(this.iframeRef.current);\n }\n }\n }\n\n componentWillUnmount(): void {\n super.componentWillUnmount?.();\n this.observer?.disconnect();\n }\n\n renderItem(error: boolean, disabled: boolean /* , defaultValue */): JSX.Element {\n const url = this.props.schema.url || ConfigGeneric.getValue(this.props.data, this.props.attr);\n\n return (\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n <iframe\n style={{\n width: '100%',\n height: '100%',\n ...this.props.schema.innerStyle,\n border: error ? '1px solid red' : undefined,\n }}\n ref={this.iframeRef}\n src={url}\n allowFullScreen={this.props.schema.allowFullscreen ?? false}\n sandbox={this.props.schema.sandbox}\n loading={this.props.schema.lazyLoad ?? 'lazy'}\n />\n {disabled && (\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\n cursor: 'not-allowed',\n zIndex: 1,\n }}\n />\n )}\n </div>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type JSX } from 'react';
|
|
2
|
+
import type { ConfigItemIFrameSendTo } from '../types';
|
|
3
|
+
import ConfigGeneric, { type ConfigGenericProps, type ConfigGenericState } from './ConfigGeneric';
|
|
4
|
+
interface ConfigIFrameSendToProps extends ConfigGenericProps {
|
|
5
|
+
schema: ConfigItemIFrameSendTo;
|
|
6
|
+
}
|
|
7
|
+
interface ConfigIFrameSendToState extends ConfigGenericState {
|
|
8
|
+
url?: string;
|
|
9
|
+
isVisible?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export default class ConfigIFrameSendTo extends ConfigGeneric<ConfigIFrameSendToProps, ConfigIFrameSendToState> {
|
|
12
|
+
private initialized;
|
|
13
|
+
private localContext;
|
|
14
|
+
private iframeRef;
|
|
15
|
+
private observer;
|
|
16
|
+
componentDidMount(): void;
|
|
17
|
+
askInstance(): void;
|
|
18
|
+
getContext(): string;
|
|
19
|
+
renderItem(error: boolean, disabled: boolean): JSX.Element;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ConfigGeneric from './ConfigGeneric';
|
|
3
|
+
export default class ConfigIFrameSendTo extends ConfigGeneric {
|
|
4
|
+
initialized = false;
|
|
5
|
+
localContext;
|
|
6
|
+
iframeRef = React.createRef();
|
|
7
|
+
observer = null;
|
|
8
|
+
componentDidMount() {
|
|
9
|
+
super.componentDidMount();
|
|
10
|
+
this.askInstance();
|
|
11
|
+
if (this.props.schema.reloadOnShow) {
|
|
12
|
+
this.observer = new IntersectionObserver(([entry]) => {
|
|
13
|
+
if (entry.isIntersecting && this.state.isVisible && this.iframeRef.current) {
|
|
14
|
+
const currentSrc = this.iframeRef.current.src;
|
|
15
|
+
this.iframeRef.current.src = '';
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
if (this.iframeRef.current) {
|
|
18
|
+
this.iframeRef.current.src = currentSrc;
|
|
19
|
+
}
|
|
20
|
+
}, 0);
|
|
21
|
+
}
|
|
22
|
+
this.setState({ isVisible: entry.isIntersecting });
|
|
23
|
+
});
|
|
24
|
+
if (this.iframeRef.current) {
|
|
25
|
+
this.observer.observe(this.iframeRef.current);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
askInstance() {
|
|
30
|
+
if (this.props.alive) {
|
|
31
|
+
let data = this.props.schema.data;
|
|
32
|
+
if (data === undefined && this.props.schema.jsonData) {
|
|
33
|
+
const dataStr = this.getPattern(this.props.schema.jsonData, null, true);
|
|
34
|
+
if (dataStr) {
|
|
35
|
+
try {
|
|
36
|
+
data = JSON.parse(dataStr);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
console.error(`Cannot parse json data: ${JSON.stringify(data)}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (data === undefined) {
|
|
44
|
+
data = null;
|
|
45
|
+
}
|
|
46
|
+
void this.props.oContext.socket
|
|
47
|
+
.sendTo(`${this.props.oContext.adapterName}.${this.props.oContext.instance}`, this.props.schema.command || 'send', data)
|
|
48
|
+
.then(url => this.setState({ url: url || '' }));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
getContext() {
|
|
52
|
+
const localContext = {};
|
|
53
|
+
if (Array.isArray(this.props.schema.alsoDependsOn)) {
|
|
54
|
+
this.props.schema.alsoDependsOn.forEach(attr => (localContext[attr] = ConfigGeneric.getValue(this.props.data, attr)));
|
|
55
|
+
}
|
|
56
|
+
return JSON.stringify(localContext);
|
|
57
|
+
}
|
|
58
|
+
renderItem(error, disabled /*, defaultValue */) {
|
|
59
|
+
if (this.props.alive) {
|
|
60
|
+
const localContext = this.getContext();
|
|
61
|
+
if (localContext !== this.localContext || !this.initialized) {
|
|
62
|
+
this.localContext = localContext;
|
|
63
|
+
setTimeout(() => this.askInstance(), this.initialized ? 300 : 50);
|
|
64
|
+
this.initialized = true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (this.state.url === undefined) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return (React.createElement("div", { style: { position: 'relative', width: '100%', height: '100%' } },
|
|
71
|
+
React.createElement("iframe", { style: {
|
|
72
|
+
width: '100%',
|
|
73
|
+
height: '100%',
|
|
74
|
+
...this.props.schema.innerStyle,
|
|
75
|
+
border: error ? '1px solid red' : undefined,
|
|
76
|
+
}, ref: this.iframeRef, src: this.state.url, allowFullScreen: this.props.schema.allowFullscreen ?? false, sandbox: this.props.schema.sandbox, loading: this.props.schema.lazyLoad ?? 'lazy' }),
|
|
77
|
+
disabled && (React.createElement("div", { style: {
|
|
78
|
+
position: 'absolute',
|
|
79
|
+
top: 0,
|
|
80
|
+
left: 0,
|
|
81
|
+
width: '100%',
|
|
82
|
+
height: '100%',
|
|
83
|
+
backgroundColor: 'rgba(255, 255, 255, 0.3)',
|
|
84
|
+
cursor: 'not-allowed',
|
|
85
|
+
zIndex: 1,
|
|
86
|
+
} }))));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=ConfigIFrameSendTo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigIFrameSendTo.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigIFrameSendTo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,aAAmE,MAAM,iBAAiB,CAAC;AAWlG,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,aAA+D;IACnG,WAAW,GAAG,KAAK,CAAC;IAEpB,YAAY,CAAqB;IAEjC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAqB,CAAC;IACjD,QAAQ,GAAgC,IAAI,CAAC;IAErD,iBAAiB;QACb,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;gBACjD,IAAI,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;oBACzE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;oBAChC,UAAU,CAAC,GAAG,EAAE;wBACZ,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;4BACzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC;wBAC5C,CAAC;oBACL,CAAC,EAAE,CAAC,CAAC,CAAC;gBACV,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;IACL,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACnD,MAAM,OAAO,GAAW,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChF,IAAI,OAAO,EAAE,CAAC;oBACV,IAAI,CAAC;wBACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC/B,CAAC;oBAAC,MAAM,CAAC;wBACL,OAAO,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACrE,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrB,IAAI,GAAG,IAAI,CAAC;YAChB,CAAC;YAED,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;iBAC1B,MAAM,CACH,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,EACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,EACnC,IAAI,CACP;iBACA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;IAED,UAAU;QACN,MAAM,YAAY,GAAwB,EAAE,CAAC;QAE7C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CACnC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAC/E,CAAC;QACN,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,KAAc,EAAE,QAAiB,CAAC,mBAAmB;QAC5D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,YAAY,KAAK,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;gBACjC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,CACH,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/D,gCACI,KAAK,EAAE;oBACH,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU;oBAC/B,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;iBAC9C,EACD,GAAG,EAAE,IAAI,CAAC,SAAS,EACnB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EACnB,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,IAAI,KAAK,EAC3D,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAClC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,GAC/C;YACD,QAAQ,IAAI,CACT,6BACI,KAAK,EAAE;oBACH,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,eAAe,EAAE,0BAA0B;oBAC3C,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,CAAC;iBACZ,GACH,CACL,CACC,CACT,CAAC;IACN,CAAC;CACJ","sourcesContent":["import React, { type JSX } from 'react';\n\nimport type { ConfigItemIFrameSendTo } from '../types';\nimport ConfigGeneric, { type ConfigGenericProps, type ConfigGenericState } from './ConfigGeneric';\n\ninterface ConfigIFrameSendToProps extends ConfigGenericProps {\n schema: ConfigItemIFrameSendTo;\n}\n\ninterface ConfigIFrameSendToState extends ConfigGenericState {\n url?: string;\n isVisible?: boolean;\n}\n\nexport default class ConfigIFrameSendTo extends ConfigGeneric<ConfigIFrameSendToProps, ConfigIFrameSendToState> {\n private initialized = false;\n\n private localContext: string | undefined;\n\n private iframeRef = React.createRef<HTMLIFrameElement>();\n private observer: IntersectionObserver | null = null;\n\n componentDidMount(): void {\n super.componentDidMount();\n\n this.askInstance();\n\n if (this.props.schema.reloadOnShow) {\n this.observer = new IntersectionObserver(([entry]) => {\n if (entry.isIntersecting && this.state.isVisible && this.iframeRef.current) {\n const currentSrc = this.iframeRef.current.src;\n this.iframeRef.current.src = '';\n setTimeout(() => {\n if (this.iframeRef.current) {\n this.iframeRef.current.src = currentSrc;\n }\n }, 0);\n }\n this.setState({ isVisible: entry.isIntersecting });\n });\n if (this.iframeRef.current) {\n this.observer.observe(this.iframeRef.current);\n }\n }\n }\n\n askInstance(): void {\n if (this.props.alive) {\n let data = this.props.schema.data;\n if (data === undefined && this.props.schema.jsonData) {\n const dataStr: string = this.getPattern(this.props.schema.jsonData, null, true);\n if (dataStr) {\n try {\n data = JSON.parse(dataStr);\n } catch {\n console.error(`Cannot parse json data: ${JSON.stringify(data)}`);\n }\n }\n }\n\n if (data === undefined) {\n data = null;\n }\n\n void this.props.oContext.socket\n .sendTo(\n `${this.props.oContext.adapterName}.${this.props.oContext.instance}`,\n this.props.schema.command || 'send',\n data,\n )\n .then(url => this.setState({ url: url || '' }));\n }\n }\n\n getContext(): string {\n const localContext: Record<string, any> = {};\n\n if (Array.isArray(this.props.schema.alsoDependsOn)) {\n this.props.schema.alsoDependsOn.forEach(\n attr => (localContext[attr] = ConfigGeneric.getValue(this.props.data, attr)),\n );\n }\n\n return JSON.stringify(localContext);\n }\n\n renderItem(error: boolean, disabled: boolean /*, defaultValue */): JSX.Element {\n if (this.props.alive) {\n const localContext = this.getContext();\n if (localContext !== this.localContext || !this.initialized) {\n this.localContext = localContext;\n setTimeout(() => this.askInstance(), this.initialized ? 300 : 50);\n this.initialized = true;\n }\n }\n\n if (this.state.url === undefined) {\n return null;\n }\n\n return (\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n <iframe\n style={{\n width: '100%',\n height: '100%',\n ...this.props.schema.innerStyle,\n border: error ? '1px solid red' : undefined,\n }}\n ref={this.iframeRef}\n src={this.state.url}\n allowFullScreen={this.props.schema.allowFullscreen ?? false}\n sandbox={this.props.schema.sandbox}\n loading={this.props.schema.lazyLoad ?? 'lazy'}\n />\n {disabled && (\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\n cursor: 'not-allowed',\n zIndex: 1,\n }}\n />\n )}\n </div>\n );\n }\n}\n"]}
|
|
@@ -9,9 +9,9 @@ interface ConfigJsonEditorState extends ConfigGenericState {
|
|
|
9
9
|
showSelectId?: boolean;
|
|
10
10
|
jsonError?: boolean;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
export default class ConfigJsonEditor extends ConfigGeneric<ConfigJsonEditorProps, ConfigJsonEditorState> {
|
|
13
13
|
componentDidMount(): void;
|
|
14
14
|
validateJson(value: string | null | undefined): boolean;
|
|
15
15
|
renderItem(_error: string, disabled: boolean): JSX.Element | null;
|
|
16
16
|
}
|
|
17
|
-
export
|
|
17
|
+
export {};
|
|
@@ -22,7 +22,7 @@ const styles = {
|
|
|
22
22
|
height: 'calc(100vh - 188px)',
|
|
23
23
|
},
|
|
24
24
|
};
|
|
25
|
-
class ConfigJsonEditor extends ConfigGeneric {
|
|
25
|
+
export default class ConfigJsonEditor extends ConfigGeneric {
|
|
26
26
|
componentDidMount() {
|
|
27
27
|
super.componentDidMount();
|
|
28
28
|
const { data, attr } = this.props;
|
|
@@ -55,11 +55,18 @@ class ConfigJsonEditor extends ConfigGeneric {
|
|
|
55
55
|
}
|
|
56
56
|
const { schema, data, attr } = this.props;
|
|
57
57
|
const { value, showSelectId } = this.state;
|
|
58
|
-
const isReadOnly = schema.readOnly === true;
|
|
58
|
+
const isReadOnly = schema.readOnly === true || disabled;
|
|
59
59
|
return (React.createElement(FormControl, { fullWidth: true, variant: "standard" },
|
|
60
60
|
React.createElement("div", { style: styles.flex },
|
|
61
|
-
React.createElement(Button, { color: "grey",
|
|
62
|
-
showSelectId ? (React.createElement(CustomModal, { title: this.getText(schema.label), overflowHidden: true, applyDisabled: (this.state.jsonError && this.props.schema.doNotApplyWithError) || isReadOnly, onClose: () =>
|
|
61
|
+
React.createElement(Button, { color: "grey", style: styles.button, size: "small", variant: "outlined", onClick: () => this.setState({ showSelectId: true }) }, I18n.t('ra_JSON editor'))),
|
|
62
|
+
showSelectId ? (React.createElement(CustomModal, { title: this.getText(schema.label), overflowHidden: true, applyDisabled: (this.state.jsonError && this.props.schema.doNotApplyWithError) || isReadOnly, onClose: () => {
|
|
63
|
+
if (isReadOnly) {
|
|
64
|
+
this.setState({ showSelectId: false });
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.setState({ showSelectId: false, value: ConfigGeneric.getValue(data, attr) || {} });
|
|
68
|
+
}
|
|
69
|
+
}, onApply: isReadOnly
|
|
63
70
|
? undefined
|
|
64
71
|
: () => this.setState({ showSelectId: false }, () => this.onChange(attr, value)) },
|
|
65
72
|
React.createElement("div", { style: {
|
|
@@ -77,5 +84,4 @@ class ConfigJsonEditor extends ConfigGeneric {
|
|
|
77
84
|
: this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation))) : null));
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
|
-
export default ConfigJsonEditor;
|
|
81
87
|
//# sourceMappingURL=ConfigJsonEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigJsonEditor.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigJsonEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,OAAO,aAAmE,MAAM,iBAAiB,CAAC;AAClG,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,MAAM,MAAM,6BAA6B,CAAC;AAEjD,MAAM,MAAM,GAAwC;IAChD,SAAS,EAAE;QACP,KAAK,EAAE,MAAM;KAChB;IACD,IAAI,EAAE;QACF,OAAO,EAAE,MAAM;KAClB;IACD,MAAM,EAAE;QACJ,MAAM,EAAE,EAAE;QACV,iBAAiB;QACjB,QAAQ,EAAE,EAAE;KACf;IACD,OAAO,EAAE;QACL,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,qBAAqB;KAChC;CACJ,CAAC;AAYF,MAAM,gBAAiB,SAAQ,aAA2D;
|
|
1
|
+
{"version":3,"file":"ConfigJsonEditor.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigJsonEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,OAAO,aAAmE,MAAM,iBAAiB,CAAC;AAClG,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,MAAM,MAAM,6BAA6B,CAAC;AAEjD,MAAM,MAAM,GAAwC;IAChD,SAAS,EAAE;QACP,KAAK,EAAE,MAAM;KAChB;IACD,IAAI,EAAE;QACF,OAAO,EAAE,MAAM;KAClB;IACD,MAAM,EAAE;QACJ,MAAM,EAAE,EAAE;QACV,iBAAiB;QACjB,QAAQ,EAAE,EAAE;KACf;IACD,OAAO,EAAE;QACL,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,qBAAqB;KAChC;CACJ,CAAC;AAYF,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,aAA2D;IACrG,iBAAiB;QACb,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,MAAM,KAAK,GAAW,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,YAAY,CAAC,KAAgC;QACzC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3C,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACzC,IAAI,CAAC;oBACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;wBAC1B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvB,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACtB,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;oBAClC,SAAS,GAAG,IAAI,CAAC;gBACrB,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,QAAiB,CAAC,oBAAoB;QAC7D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1C,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC;QAExD,OAAO,CACH,oBAAC,WAAW,IACR,SAAS,QACT,OAAO,EAAC,UAAU;YAElB,6BAAK,KAAK,EAAE,MAAM,CAAC,IAAI;gBACnB,oBAAC,MAAM,IACH,KAAK,EAAC,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EACpB,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,UAAU,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,IAEnD,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CACpB,CACP;YACL,YAAY,CAAC,CAAC,CAAC,CACZ,oBAAC,WAAW,IACR,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EACjC,cAAc,QACd,aAAa,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,UAAU,EAC5F,OAAO,EAAE,GAAG,EAAE;oBACV,IAAI,UAAU,EAAE,CAAC;wBACb,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC3C,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC5F,CAAC;gBACL,CAAC,EACD,OAAO,EACH,UAAU;oBACN,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAGxF,6BACI,KAAK,EAAE;wBACH,GAAG,MAAM,CAAC,OAAO;wBACjB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB;qBAC3E;oBAED,oBAAC,MAAM,IACH,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAChD,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAChE,QAAQ,EACJ,UAAU;4BACN,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,QAAQ,CAAC,EAAE,CACP,IAAI,CAAC,QAAQ,CAAC;gCACV,KAAK,EAAE,QAAQ;gCACf,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;6BACzC,CAAC,EAEhB,IAAI,EAAC,kBAAkB,EACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,GAC1C,CACA,CACI,CACjB,CAAC,CAAC,CAAC,IAAI;YACP,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CACnC,oBAAC,cAAc,QACV,IAAI,CAAC,KAAK,CAAC,SAAS;gBACjB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC;gBAC3B,CAAC,CAAC,IAAI,CAAC,UAAU,CACX,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAClC,CACM,CACpB,CAAC,CAAC,CAAC,IAAI,CACE,CACjB,CAAC;IACN,CAAC;CACJ","sourcesContent":["import React, { type JSX } from 'react';\nimport JSON5 from 'json5';\n\nimport { FormHelperText, FormControl, Button } from '@mui/material';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\nimport type { ConfigItemJsonEditor } from '../types';\nimport ConfigGeneric, { type ConfigGenericProps, type ConfigGenericState } from './ConfigGeneric';\nimport CustomModal from './wrapper/Components/CustomModal';\nimport Editor from './wrapper/Components/Editor';\n\nconst styles: Record<string, React.CSSProperties> = {\n fullWidth: {\n width: '100%',\n },\n flex: {\n display: 'flex',\n },\n button: {\n height: 48,\n // marginLeft: 4,\n minWidth: 48,\n },\n wrapper: {\n width: 'calc(100vw - 40px)',\n height: 'calc(100vh - 188px)',\n },\n};\n\ninterface ConfigJsonEditorProps extends ConfigGenericProps {\n schema: ConfigItemJsonEditor;\n}\n\ninterface ConfigJsonEditorState extends ConfigGenericState {\n initialized?: boolean;\n showSelectId?: boolean;\n jsonError?: boolean;\n}\n\nexport default class ConfigJsonEditor extends ConfigGeneric<ConfigJsonEditorProps, ConfigJsonEditorState> {\n componentDidMount(): void {\n super.componentDidMount();\n const { data, attr } = this.props;\n const value: string = ConfigGeneric.getValue(data, attr) || '{}';\n this.setState({ value, initialized: true, jsonError: this.validateJson(value) });\n }\n\n validateJson(value: string | null | undefined): boolean {\n let jsonError = false;\n if (this.props.schema.validateJson !== false) {\n if (value || !this.props.schema.allowEmpty) {\n try {\n if (this.props.schema.json5) {\n JSON5.parse(value);\n } else {\n JSON.parse(value);\n }\n } catch (err: unknown) {\n console.log('Error in JSON', err);\n jsonError = true;\n }\n }\n }\n\n return jsonError;\n }\n\n renderItem(_error: string, disabled: boolean /* , defaultValue */): JSX.Element | null {\n if (!this.state.initialized) {\n return null;\n }\n\n const { schema, data, attr } = this.props;\n const { value, showSelectId } = this.state;\n const isReadOnly = schema.readOnly === true || disabled;\n\n return (\n <FormControl\n fullWidth\n variant=\"standard\"\n >\n <div style={styles.flex}>\n <Button\n color=\"grey\"\n style={styles.button}\n size=\"small\"\n variant=\"outlined\"\n onClick={() => this.setState({ showSelectId: true })}\n >\n {I18n.t('ra_JSON editor')}\n </Button>\n </div>\n {showSelectId ? (\n <CustomModal\n title={this.getText(schema.label)}\n overflowHidden\n applyDisabled={(this.state.jsonError && this.props.schema.doNotApplyWithError) || isReadOnly}\n onClose={() => {\n if (isReadOnly) {\n this.setState({ showSelectId: false });\n } else {\n this.setState({ showSelectId: false, value: ConfigGeneric.getValue(data, attr) || {} });\n }\n }}\n onApply={\n isReadOnly\n ? undefined\n : () => this.setState({ showSelectId: false }, () => this.onChange(attr, value))\n }\n >\n <div\n style={{\n ...styles.wrapper,\n border: this.state.jsonError ? '2px solid red' : '2px solid transparent',\n }}\n >\n <Editor\n mode={this.props.schema.json5 ? 'json5' : 'json'}\n value={typeof value === 'object' ? JSON.stringify(value) : value}\n onChange={\n isReadOnly\n ? undefined\n : newValue =>\n this.setState({\n value: newValue,\n jsonError: this.validateJson(newValue),\n })\n }\n name=\"ConfigJsonEditor\"\n themeType={this.props.oContext.themeType}\n />\n </div>\n </CustomModal>\n ) : null}\n {schema.help || this.state.jsonError ? (\n <FormHelperText>\n {this.state.jsonError\n ? I18n.t('ra_Invalid JSON')\n : this.renderHelp(\n this.props.schema.help,\n this.props.schema.helpLink,\n this.props.schema.noTranslation,\n )}\n </FormHelperText>\n ) : null}\n </FormControl>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigObjectId.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigObjectId.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,aAAmE,MAAM,iBAAiB,CAAC;AAElG,MAAM,MAAM,GAAwC;IAChD,IAAI,EAAE;QACF,OAAO,EAAE,MAAM;KAClB;IACD,MAAM,EAAE;QACJ,
|
|
1
|
+
{"version":3,"file":"ConfigObjectId.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigObjectId.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\n\nimport { InputLabel, FormControl, Button, TextField } from '@mui/material';\n\nimport { DialogSelectID } from '@iobroker/adapter-react-v5';\n\nimport type { ConfigItemObjectId } from '../types';\nimport ConfigGeneric, { type ConfigGenericProps, type ConfigGenericState } from './ConfigGeneric';\n\nconst styles: Record<string, React.CSSProperties> = {\n flex: {\n display: 'flex',\n },\n button: {\n maxHeight: 48,\n marginLeft: 4,\n minWidth: 48,\n },\n};\n\ninterface ConfigObjectIdProps extends ConfigGenericProps {\n schema: ConfigItemObjectId;\n}\n\ninterface ConfigObjectIdState extends ConfigGenericState {\n showSelectId?: boolean;\n initialized?: boolean;\n}\n\nclass ConfigObjectId extends ConfigGeneric<ConfigObjectIdProps, ConfigObjectIdState> {\n componentDidMount(): void {\n super.componentDidMount();\n const { data, attr } = this.props;\n const value = ConfigGeneric.getValue(data, attr) || '';\n this.setState({ value, initialized: true });\n }\n\n renderItem(error: string, disabled: boolean /* , defaultValue */): JSX.Element {\n if (!this.state.initialized) {\n return null;\n }\n const socket = this.props.oContext.socket;\n const { schema, attr } = this.props;\n const { value, showSelectId } = this.state;\n\n return (\n <FormControl\n fullWidth\n variant=\"standard\"\n >\n {schema.label ? <InputLabel shrink>{this.getText(schema.label)}</InputLabel> : null}\n <div style={styles.flex}>\n <TextField\n variant=\"standard\"\n fullWidth\n value={value}\n error={!!error}\n disabled={disabled}\n placeholder={this.getText(schema.placeholder)}\n label={this.getText(schema.label)}\n helperText={this.renderHelp(schema.help, schema.helpLink, schema.noTranslation)}\n onChange={e => {\n const value_ = e.target.value;\n this.setState({ value: value_ }, () => this.onChange(attr, value_));\n }}\n />\n <Button\n color=\"grey\"\n disabled={disabled}\n style={styles.button}\n size=\"small\"\n variant=\"outlined\"\n onClick={() => this.setState({ showSelectId: true })}\n >\n ...\n </Button>\n </div>\n {showSelectId ? (\n <DialogSelectID\n imagePrefix={\n this.props.oContext.imagePrefix === undefined ? '../..' : this.props.oContext.imagePrefix\n }\n dialogName={`admin.${this.props.oContext.adapterName}`}\n filterFunc={schema.filterFunc}\n themeType={this.props.oContext.themeType}\n theme={this.props.oContext.theme}\n types={schema.types ? (Array.isArray(schema.types) ? schema.types : [schema.types]) : undefined}\n customFilter={schema.customFilter}\n filters={schema.filters}\n socket={socket}\n selected={value}\n root={schema.root}\n onClose={() => this.setState({ showSelectId: false })}\n onOk={value_ =>\n this.setState({ showSelectId: false, value: value_ }, () => this.onChange(attr, value_))\n }\n />\n ) : null}\n </FormControl>\n );\n }\n}\n\nexport default ConfigObjectId;\n"]}
|
|
@@ -23,6 +23,8 @@ import ConfigDeviceManager from './ConfigDeviceManager';
|
|
|
23
23
|
import ConfigFile from './ConfigFile';
|
|
24
24
|
import ConfigFileSelector from './ConfigFileSelector';
|
|
25
25
|
import ConfigFunc from './ConfigFunc';
|
|
26
|
+
import ConfigIFrame from './ConfigIFrame';
|
|
27
|
+
import ConfigIFrameSendTo from './ConfigIFrameSendTo';
|
|
26
28
|
import ConfigIP from './ConfigIP';
|
|
27
29
|
import ConfigImageSendTo from './ConfigImageSendTo';
|
|
28
30
|
import ConfigImageUpload from './ConfigImageUpload';
|
|
@@ -82,6 +84,8 @@ const components = {
|
|
|
82
84
|
fileSelector: ConfigFileSelector,
|
|
83
85
|
func: ConfigFunc,
|
|
84
86
|
header: ConfigStaticHeader,
|
|
87
|
+
iframe: ConfigIFrame,
|
|
88
|
+
iframeSendTo: ConfigIFrameSendTo,
|
|
85
89
|
image: ConfigImageUpload,
|
|
86
90
|
imageSendTo: ConfigImageSendTo,
|
|
87
91
|
infoBox: ConfigInfoBox,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigPanel.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\n\nimport { Grid2, Accordion, AccordionSummary, AccordionDetails, Typography, Box } from '@mui/material';\n\nimport { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';\n\nimport { type AdminConnection, type IobTheme, Utils } from '@iobroker/adapter-react-v5';\nimport type { ConfigItemPanel } from '../types';\n\nimport ConfigGeneric, { type ConfigGenericState, type ConfigGenericProps } from './ConfigGeneric';\nimport ConfigAccordion from './ConfigAccordion';\nimport ConfigAlive from './ConfigAlive';\nimport ConfigAutocomplete from './ConfigAutocomplete';\nimport ConfigAutocompleteSendTo from './ConfigAutocompleteSendTo';\nimport ConfigCRON from './ConfigCRON';\nimport ConfigCertificateSelect from './ConfigCertificateSelect';\nimport ConfigCertificates from './ConfigCertificates';\nimport ConfigCertCollection from './ConfigCertCollection';\nimport ConfigCheckDocker from './ConfigCheckDocker';\nimport ConfigCheckLicense from './ConfigCheckLicense';\nimport ConfigCheckbox from './ConfigCheckbox';\nimport ConfigChip from './ConfigChip';\nimport ConfigColor from './ConfigColor';\nimport ConfigCoordinates from './ConfigCoordinates';\nimport ConfigCustom from './ConfigCustom';\nimport ConfigDatePicker from './ConfigDatePicker';\nimport ConfigDeviceManager from './ConfigDeviceManager';\nimport ConfigFile from './ConfigFile';\nimport ConfigFileSelector from './ConfigFileSelector';\nimport ConfigFunc from './ConfigFunc';\nimport ConfigIP from './ConfigIP';\nimport ConfigImageSendTo from './ConfigImageSendTo';\nimport ConfigImageUpload from './ConfigImageUpload';\nimport ConfigInfoBox from './ConfigInfoBox';\nimport ConfigInstanceSelect from './ConfigInstanceSelect';\nimport ConfigInterface from './ConfigInterface';\nimport ConfigJsonEditor from './ConfigJsonEditor';\nimport ConfigLanguage from './ConfigLanguage';\nimport ConfigLicense from './ConfigLicense';\nimport ConfigNumber from './ConfigNumber';\nimport ConfigOauth2 from './ConfigOAuth2';\nimport ConfigObjectId from './ConfigObjectId';\nimport ConfigPassword from './ConfigPassword';\nimport ConfigPattern from './ConfigPattern';\nimport ConfigPort from './ConfigPort';\nimport ConfigRoom from './ConfigRoom';\nimport ConfigSelect from './ConfigSelect';\nimport ConfigSelectSendTo from './ConfigSelectSendTo';\nimport ConfigSendTo from './ConfigSendto';\nimport ConfigSetState from './ConfigSetState';\nimport ConfigSlider from './ConfigSlider';\nimport ConfigState from './ConfigState';\nimport ConfigStaticDivider from './ConfigStaticDivider';\nimport ConfigStaticHeader from './ConfigStaticHeader';\nimport ConfigStaticImage from './ConfigStaticImage';\nimport ConfigStaticInfo from './ConfigStaticInfo';\nimport ConfigStaticText from './ConfigStaticText';\nimport ConfigTable from './ConfigTable';\nimport ConfigText from './ConfigText';\nimport ConfigTextSendTo from './ConfigTextSendTo';\nimport ConfigTimePicker from './ConfigTimePicker';\nimport ConfigTopic from './ConfigTopic';\nimport ConfigUUID from './ConfigUUID';\nimport ConfigUser from './ConfigUser';\nimport ConfigQrCode from './ConfigQrCode';\n\nconst components: Record<string, typeof ConfigGeneric<any, any>> = {\n accordion: ConfigAccordion,\n alive: ConfigAlive,\n autocomplete: ConfigAutocomplete,\n autocompleteSendTo: ConfigAutocompleteSendTo,\n certCollection: ConfigCertCollection,\n certificate: ConfigCertificateSelect,\n certificates: ConfigCertificates,\n checkbox: ConfigCheckbox,\n checkDocker: ConfigCheckDocker,\n checkLicense: ConfigCheckLicense,\n chip: ConfigChip, // deprecated. Use \"chips\"\n chips: ConfigChip,\n color: ConfigColor,\n coordinates: ConfigCoordinates,\n cron: ConfigCRON,\n custom: ConfigCustom,\n datePicker: ConfigDatePicker,\n deviceManager: ConfigDeviceManager,\n divider: ConfigStaticDivider,\n file: ConfigFile,\n fileSelector: ConfigFileSelector,\n func: ConfigFunc,\n header: ConfigStaticHeader,\n image: ConfigImageUpload,\n imageSendTo: ConfigImageSendTo,\n infoBox: ConfigInfoBox,\n instance: ConfigInstanceSelect,\n interface: ConfigInterface,\n ip: ConfigIP,\n jsonEditor: ConfigJsonEditor,\n language: ConfigLanguage,\n license: ConfigLicense,\n number: ConfigNumber,\n oauth2: ConfigOauth2,\n objectId: ConfigObjectId,\n password: ConfigPassword,\n pattern: ConfigPattern,\n port: ConfigPort,\n qrCode: ConfigQrCode,\n room: ConfigRoom,\n select: ConfigSelect,\n selectSendTo: ConfigSelectSendTo,\n // @deprecated Use \"sendTo\"\n sendto: ConfigSendTo,\n sendTo: ConfigSendTo,\n setState: ConfigSetState,\n slider: ConfigSlider,\n state: ConfigState,\n staticImage: ConfigStaticImage,\n staticInfo: ConfigStaticInfo,\n staticLink: ConfigStaticText,\n staticText: ConfigStaticText,\n table: ConfigTable,\n text: ConfigText,\n textSendTo: ConfigTextSendTo,\n timePicker: ConfigTimePicker,\n topic: ConfigTopic,\n uuid: ConfigUUID,\n user: ConfigUser,\n};\n\nconst styles: Record<string, any> = {\n fullWidth: {\n width: '100%',\n // height: '100%',\n },\n paper: {\n margin: 1,\n width: 'auto !important',\n overflowY: 'auto',\n paddingBottom: 1,\n },\n paperWithIcons: {\n height: 'calc(100vh - 259px) !important',\n },\n paperWithoutIcons: {\n height: 'calc(100vh - 235px) !important',\n },\n padding: {\n padding: '10px',\n },\n heading: {},\n primary: (theme: IobTheme): React.CSSProperties => ({\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.mode === 'dark' ? 'inherit' : '#FFF',\n }),\n secondary: (theme: IobTheme): React.CSSProperties => ({\n backgroundColor: theme.palette.secondary.main,\n }),\n};\n\ninterface ConfigPanelProps extends ConfigGenericProps {\n schema: ConfigItemPanel;\n withIcons?: boolean;\n withoutSaveButtons?: boolean;\n}\ninterface ConfigPanelState extends ConfigGenericState {\n expanded?: boolean;\n}\n\nexport default class ConfigPanel extends ConfigGeneric<ConfigPanelProps, ConfigPanelState> {\n componentDidMount(): void {\n super.componentDidMount();\n if (this.props.schema?.collapsable) {\n this.setState({\n expanded:\n (((window as any)._localStorage as Storage) || window.localStorage).getItem(\n `${this.props.oContext.adapterName}.${this.props.attr}`,\n ) === 'true',\n });\n }\n }\n\n renderItems(items: Record<string, any>, disabled: boolean): JSX.Element[] | null {\n return items\n ? Object.keys(items).map(attr => {\n if (this.props.oContext.multiEdit && items[attr].noMultiEdit) {\n return null;\n }\n\n const type = items[attr].type || 'panel';\n let ItemComponent: typeof ConfigGeneric<ConfigGenericProps, any>;\n let socket: string | AdminConnection = 'Use this.props.oContext.socket!';\n if (type === 'custom') {\n // name\n // url\n if (items[attr].url) {\n ItemComponent = ConfigCustom;\n } else if (this.props.oContext.customs && this.props.oContext.customs[items[attr].component]) {\n ItemComponent = this.props.oContext.customs[items[attr].component];\n } else {\n console.error(`Cannot find custom component: ${items[attr].component}`);\n ItemComponent = ConfigGeneric;\n }\n socket = this.props.oContext.socket;\n } else if (type === 'panel') {\n ItemComponent = ConfigPanel;\n } else {\n ItemComponent = components[type] || ConfigGeneric;\n }\n\n return (\n <ItemComponent\n // @ts-expect-error Temporary work-around, till all custom components will not migrate to oContext\n socket={socket}\n globalData={this.props.globalData}\n oContext={this.props.oContext}\n key={`${attr}_${this.props.index === undefined ? '' : this.props.index}`}\n index={this.props.index}\n changed={this.props.changed}\n arrayIndex={this.props.arrayIndex}\n expertMode={this.props.expertMode}\n commandRunning={this.props.commandRunning}\n style={styles.panel}\n common={this.props.common}\n alive={this.props.alive}\n themeName={this.props.themeName}\n data={this.props.data}\n originalData={this.props.originalData}\n onError={this.props.onError}\n onChange={this.props.onChange}\n disabled={disabled}\n customObj={this.props.customObj}\n custom={this.props.custom}\n schema={items[attr]}\n attr={attr}\n table={this.props.table}\n />\n );\n })\n : null;\n }\n\n render(): JSX.Element | null {\n const schema = this.props.schema;\n\n if (!schema) {\n return null;\n }\n\n const { disabled, hidden } = this.calculate(schema);\n\n const items = this.props.schema.items;\n const schemaStyle = this.props.schema.style || {};\n\n if (hidden) {\n if (schema.hideOnlyControl) {\n const item = (\n <Grid2\n size={{\n xs: schema.xs || undefined,\n sm: schema.sm || undefined,\n md: schema.md || undefined,\n lg: schema.lg || undefined,\n xl: schema.xl || undefined,\n }}\n sx={Utils.getStyle(\n this.props.oContext.theme,\n { marginBottom: 0, textAlign: 'left' /* marginRight: 8, */ },\n schemaStyle,\n this.props.oContext.themeType === 'dark' && schema.darkStyle,\n )}\n />\n );\n\n if (schema.newLine) {\n return (\n <>\n <div style={{ flexBasis: '100%', height: 0 }} />\n {item}\n </>\n );\n }\n return item;\n }\n return null;\n }\n\n if (this.props.table) {\n return this.renderItems(items, disabled) as any as JSX.Element;\n }\n\n if (this.props.custom) {\n return (\n <Grid2\n key={`${this.props.attr}_${this.props.index}`}\n container\n style={styles.fullWidth}\n columnSpacing={2}\n rowSpacing={1}\n sx={schemaStyle}\n >\n {this.renderItems(items, disabled)}\n </Grid2>\n );\n }\n\n let content;\n if (schema.collapsable) {\n content = (\n <Accordion\n key={`${this.props.attr}_${this.props.index}`}\n style={styles.fullWidth}\n expanded={!!this.state.expanded}\n onChange={() => {\n (((window as any)._localStorage as Storage) || window.localStorage).setItem(\n `${this.props.oContext.adapterName}.${this.props.attr}`,\n this.state.expanded ? 'false' : 'true',\n );\n this.setState({ expanded: !this.state.expanded });\n }}\n >\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n sx={Utils.getStyle(\n this.props.oContext.theme,\n schemaStyle,\n this.props.oContext.themeType && schema.darkStyle,\n schema.color === 'primary'\n ? styles.primary\n : schema.color === 'secondary' && styles.secondary,\n { width: '100%' },\n )}\n >\n <Typography style={styles.heading}>{this.getText(schema.label)}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Grid2\n container\n columnSpacing={2}\n rowSpacing={1}\n sx={{ ...schemaStyle, width: '100%', padding: '10px' }}\n >\n {this.renderItems(items, disabled)}\n </Grid2>\n </AccordionDetails>\n </Accordion>\n );\n } else {\n const sx = Utils.getStyle(\n this.props.oContext.theme,\n this.props.style,\n schemaStyle,\n { width: '100%' },\n this.props.isParentTab && styles.paper,\n this.props.isParentTab &&\n (this.props.withoutSaveButtons\n ? this.props.withIcons\n ? { height: 'calc(100% - 88px) !important' }\n : { height: 'calc(100% - 64px) !important' }\n : this.props.withIcons\n ? styles.paperWithIcons\n : styles.paperWithoutIcons),\n );\n\n content = (\n <Box\n component=\"div\"\n key={`${this.props.attr}_${this.props.index}`}\n className={this.props.className}\n sx={sx}\n >\n <Grid2\n container\n columnSpacing={2}\n rowSpacing={1}\n sx={Utils.getStyle(\n this.props.oContext.theme,\n { width: '100%' },\n this.props.isParentTab && styles.padding,\n this.props.schema.innerStyle,\n )}\n >\n {this.renderItems(items, disabled)}\n </Grid2>\n </Box>\n );\n }\n\n if (!this.props.isParentTab) {\n const item = (\n <Grid2\n title={this.getText(schema.tooltip)}\n size={{\n xs: schema.xs || undefined,\n sm: schema.sm || undefined,\n md: schema.md || undefined,\n lg: schema.lg || undefined,\n xl: schema.xl || undefined,\n }}\n sx={{ marginBottom: 0, /* marginRight: 8, */ textAlign: 'left', ...schemaStyle }}\n >\n {content}\n </Grid2>\n );\n\n if (schema.newLine) {\n return (\n <>\n <div style={{ flexBasis: '100%', height: 0 }} />\n {item}\n </>\n );\n }\n return item;\n }\n return content;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ConfigPanel.js","sourceRoot":"./src/","sources":["JsonConfigComponent/ConfigPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\n\nimport { Grid2, Accordion, AccordionSummary, AccordionDetails, Typography, Box } from '@mui/material';\n\nimport { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';\n\nimport { type AdminConnection, type IobTheme, Utils } from '@iobroker/adapter-react-v5';\nimport type { ConfigItemPanel } from '../types';\n\nimport ConfigGeneric, { type ConfigGenericState, type ConfigGenericProps } from './ConfigGeneric';\nimport ConfigAccordion from './ConfigAccordion';\nimport ConfigAlive from './ConfigAlive';\nimport ConfigAutocomplete from './ConfigAutocomplete';\nimport ConfigAutocompleteSendTo from './ConfigAutocompleteSendTo';\nimport ConfigCRON from './ConfigCRON';\nimport ConfigCertificateSelect from './ConfigCertificateSelect';\nimport ConfigCertificates from './ConfigCertificates';\nimport ConfigCertCollection from './ConfigCertCollection';\nimport ConfigCheckDocker from './ConfigCheckDocker';\nimport ConfigCheckLicense from './ConfigCheckLicense';\nimport ConfigCheckbox from './ConfigCheckbox';\nimport ConfigChip from './ConfigChip';\nimport ConfigColor from './ConfigColor';\nimport ConfigCoordinates from './ConfigCoordinates';\nimport ConfigCustom from './ConfigCustom';\nimport ConfigDatePicker from './ConfigDatePicker';\nimport ConfigDeviceManager from './ConfigDeviceManager';\nimport ConfigFile from './ConfigFile';\nimport ConfigFileSelector from './ConfigFileSelector';\nimport ConfigFunc from './ConfigFunc';\nimport ConfigIFrame from './ConfigIFrame';\nimport ConfigIFrameSendTo from './ConfigIFrameSendTo';\nimport ConfigIP from './ConfigIP';\nimport ConfigImageSendTo from './ConfigImageSendTo';\nimport ConfigImageUpload from './ConfigImageUpload';\nimport ConfigInfoBox from './ConfigInfoBox';\nimport ConfigInstanceSelect from './ConfigInstanceSelect';\nimport ConfigInterface from './ConfigInterface';\nimport ConfigJsonEditor from './ConfigJsonEditor';\nimport ConfigLanguage from './ConfigLanguage';\nimport ConfigLicense from './ConfigLicense';\nimport ConfigNumber from './ConfigNumber';\nimport ConfigOauth2 from './ConfigOAuth2';\nimport ConfigObjectId from './ConfigObjectId';\nimport ConfigPassword from './ConfigPassword';\nimport ConfigPattern from './ConfigPattern';\nimport ConfigPort from './ConfigPort';\nimport ConfigRoom from './ConfigRoom';\nimport ConfigSelect from './ConfigSelect';\nimport ConfigSelectSendTo from './ConfigSelectSendTo';\nimport ConfigSendTo from './ConfigSendto';\nimport ConfigSetState from './ConfigSetState';\nimport ConfigSlider from './ConfigSlider';\nimport ConfigState from './ConfigState';\nimport ConfigStaticDivider from './ConfigStaticDivider';\nimport ConfigStaticHeader from './ConfigStaticHeader';\nimport ConfigStaticImage from './ConfigStaticImage';\nimport ConfigStaticInfo from './ConfigStaticInfo';\nimport ConfigStaticText from './ConfigStaticText';\nimport ConfigTable from './ConfigTable';\nimport ConfigText from './ConfigText';\nimport ConfigTextSendTo from './ConfigTextSendTo';\nimport ConfigTimePicker from './ConfigTimePicker';\nimport ConfigTopic from './ConfigTopic';\nimport ConfigUUID from './ConfigUUID';\nimport ConfigUser from './ConfigUser';\nimport ConfigQrCode from './ConfigQrCode';\n\nconst components: Record<string, typeof ConfigGeneric<any, any>> = {\n accordion: ConfigAccordion,\n alive: ConfigAlive,\n autocomplete: ConfigAutocomplete,\n autocompleteSendTo: ConfigAutocompleteSendTo,\n certCollection: ConfigCertCollection,\n certificate: ConfigCertificateSelect,\n certificates: ConfigCertificates,\n checkbox: ConfigCheckbox,\n checkDocker: ConfigCheckDocker,\n checkLicense: ConfigCheckLicense,\n chip: ConfigChip, // deprecated. Use \"chips\"\n chips: ConfigChip,\n color: ConfigColor,\n coordinates: ConfigCoordinates,\n cron: ConfigCRON,\n custom: ConfigCustom,\n datePicker: ConfigDatePicker,\n deviceManager: ConfigDeviceManager,\n divider: ConfigStaticDivider,\n file: ConfigFile,\n fileSelector: ConfigFileSelector,\n func: ConfigFunc,\n header: ConfigStaticHeader,\n iframe: ConfigIFrame,\n iframeSendTo: ConfigIFrameSendTo,\n image: ConfigImageUpload,\n imageSendTo: ConfigImageSendTo,\n infoBox: ConfigInfoBox,\n instance: ConfigInstanceSelect,\n interface: ConfigInterface,\n ip: ConfigIP,\n jsonEditor: ConfigJsonEditor,\n language: ConfigLanguage,\n license: ConfigLicense,\n number: ConfigNumber,\n oauth2: ConfigOauth2,\n objectId: ConfigObjectId,\n password: ConfigPassword,\n pattern: ConfigPattern,\n port: ConfigPort,\n qrCode: ConfigQrCode,\n room: ConfigRoom,\n select: ConfigSelect,\n selectSendTo: ConfigSelectSendTo,\n // @deprecated Use \"sendTo\"\n sendto: ConfigSendTo,\n sendTo: ConfigSendTo,\n setState: ConfigSetState,\n slider: ConfigSlider,\n state: ConfigState,\n staticImage: ConfigStaticImage,\n staticInfo: ConfigStaticInfo,\n staticLink: ConfigStaticText,\n staticText: ConfigStaticText,\n table: ConfigTable,\n text: ConfigText,\n textSendTo: ConfigTextSendTo,\n timePicker: ConfigTimePicker,\n topic: ConfigTopic,\n uuid: ConfigUUID,\n user: ConfigUser,\n};\n\nconst styles: Record<string, any> = {\n fullWidth: {\n width: '100%',\n // height: '100%',\n },\n paper: {\n margin: 1,\n width: 'auto !important',\n overflowY: 'auto',\n paddingBottom: 1,\n },\n paperWithIcons: {\n height: 'calc(100vh - 259px) !important',\n },\n paperWithoutIcons: {\n height: 'calc(100vh - 235px) !important',\n },\n padding: {\n padding: '10px',\n },\n heading: {},\n primary: (theme: IobTheme): React.CSSProperties => ({\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.mode === 'dark' ? 'inherit' : '#FFF',\n }),\n secondary: (theme: IobTheme): React.CSSProperties => ({\n backgroundColor: theme.palette.secondary.main,\n }),\n};\n\ninterface ConfigPanelProps extends ConfigGenericProps {\n schema: ConfigItemPanel;\n withIcons?: boolean;\n withoutSaveButtons?: boolean;\n}\ninterface ConfigPanelState extends ConfigGenericState {\n expanded?: boolean;\n}\n\nexport default class ConfigPanel extends ConfigGeneric<ConfigPanelProps, ConfigPanelState> {\n componentDidMount(): void {\n super.componentDidMount();\n if (this.props.schema?.collapsable) {\n this.setState({\n expanded:\n (((window as any)._localStorage as Storage) || window.localStorage).getItem(\n `${this.props.oContext.adapterName}.${this.props.attr}`,\n ) === 'true',\n });\n }\n }\n\n renderItems(items: Record<string, any>, disabled: boolean): JSX.Element[] | null {\n return items\n ? Object.keys(items).map(attr => {\n if (this.props.oContext.multiEdit && items[attr].noMultiEdit) {\n return null;\n }\n\n const type = items[attr].type || 'panel';\n let ItemComponent: typeof ConfigGeneric<ConfigGenericProps, any>;\n let socket: string | AdminConnection = 'Use this.props.oContext.socket!';\n if (type === 'custom') {\n // name\n // url\n if (items[attr].url) {\n ItemComponent = ConfigCustom;\n } else if (this.props.oContext.customs && this.props.oContext.customs[items[attr].component]) {\n ItemComponent = this.props.oContext.customs[items[attr].component];\n } else {\n console.error(`Cannot find custom component: ${items[attr].component}`);\n ItemComponent = ConfigGeneric;\n }\n socket = this.props.oContext.socket;\n } else if (type === 'panel') {\n ItemComponent = ConfigPanel;\n } else {\n ItemComponent = components[type] || ConfigGeneric;\n }\n\n return (\n <ItemComponent\n // @ts-expect-error Temporary work-around, till all custom components will not migrate to oContext\n socket={socket}\n globalData={this.props.globalData}\n oContext={this.props.oContext}\n key={`${attr}_${this.props.index === undefined ? '' : this.props.index}`}\n index={this.props.index}\n changed={this.props.changed}\n arrayIndex={this.props.arrayIndex}\n expertMode={this.props.expertMode}\n commandRunning={this.props.commandRunning}\n style={styles.panel}\n common={this.props.common}\n alive={this.props.alive}\n themeName={this.props.themeName}\n data={this.props.data}\n originalData={this.props.originalData}\n onError={this.props.onError}\n onChange={this.props.onChange}\n disabled={disabled}\n customObj={this.props.customObj}\n custom={this.props.custom}\n schema={items[attr]}\n attr={attr}\n table={this.props.table}\n />\n );\n })\n : null;\n }\n\n render(): JSX.Element | null {\n const schema = this.props.schema;\n\n if (!schema) {\n return null;\n }\n\n const { disabled, hidden } = this.calculate(schema);\n\n const items = this.props.schema.items;\n const schemaStyle = this.props.schema.style || {};\n\n if (hidden) {\n if (schema.hideOnlyControl) {\n const item = (\n <Grid2\n size={{\n xs: schema.xs || undefined,\n sm: schema.sm || undefined,\n md: schema.md || undefined,\n lg: schema.lg || undefined,\n xl: schema.xl || undefined,\n }}\n sx={Utils.getStyle(\n this.props.oContext.theme,\n { marginBottom: 0, textAlign: 'left' /* marginRight: 8, */ },\n schemaStyle,\n this.props.oContext.themeType === 'dark' && schema.darkStyle,\n )}\n />\n );\n\n if (schema.newLine) {\n return (\n <>\n <div style={{ flexBasis: '100%', height: 0 }} />\n {item}\n </>\n );\n }\n return item;\n }\n return null;\n }\n\n if (this.props.table) {\n return this.renderItems(items, disabled) as any as JSX.Element;\n }\n\n if (this.props.custom) {\n return (\n <Grid2\n key={`${this.props.attr}_${this.props.index}`}\n container\n style={styles.fullWidth}\n columnSpacing={2}\n rowSpacing={1}\n sx={schemaStyle}\n >\n {this.renderItems(items, disabled)}\n </Grid2>\n );\n }\n\n let content;\n if (schema.collapsable) {\n content = (\n <Accordion\n key={`${this.props.attr}_${this.props.index}`}\n style={styles.fullWidth}\n expanded={!!this.state.expanded}\n onChange={() => {\n (((window as any)._localStorage as Storage) || window.localStorage).setItem(\n `${this.props.oContext.adapterName}.${this.props.attr}`,\n this.state.expanded ? 'false' : 'true',\n );\n this.setState({ expanded: !this.state.expanded });\n }}\n >\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n sx={Utils.getStyle(\n this.props.oContext.theme,\n schemaStyle,\n this.props.oContext.themeType && schema.darkStyle,\n schema.color === 'primary'\n ? styles.primary\n : schema.color === 'secondary' && styles.secondary,\n { width: '100%' },\n )}\n >\n <Typography style={styles.heading}>{this.getText(schema.label)}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Grid2\n container\n columnSpacing={2}\n rowSpacing={1}\n sx={{ ...schemaStyle, width: '100%', padding: '10px' }}\n >\n {this.renderItems(items, disabled)}\n </Grid2>\n </AccordionDetails>\n </Accordion>\n );\n } else {\n const sx = Utils.getStyle(\n this.props.oContext.theme,\n this.props.style,\n schemaStyle,\n { width: '100%' },\n this.props.isParentTab && styles.paper,\n this.props.isParentTab &&\n (this.props.withoutSaveButtons\n ? this.props.withIcons\n ? { height: 'calc(100% - 88px) !important' }\n : { height: 'calc(100% - 64px) !important' }\n : this.props.withIcons\n ? styles.paperWithIcons\n : styles.paperWithoutIcons),\n );\n\n content = (\n <Box\n component=\"div\"\n key={`${this.props.attr}_${this.props.index}`}\n className={this.props.className}\n sx={sx}\n >\n <Grid2\n container\n columnSpacing={2}\n rowSpacing={1}\n sx={Utils.getStyle(\n this.props.oContext.theme,\n { width: '100%' },\n this.props.isParentTab && styles.padding,\n this.props.schema.innerStyle,\n )}\n >\n {this.renderItems(items, disabled)}\n </Grid2>\n </Box>\n );\n }\n\n if (!this.props.isParentTab) {\n const item = (\n <Grid2\n title={this.getText(schema.tooltip)}\n size={{\n xs: schema.xs || undefined,\n sm: schema.sm || undefined,\n md: schema.md || undefined,\n lg: schema.lg || undefined,\n xl: schema.xl || undefined,\n }}\n sx={{ marginBottom: 0, /* marginRight: 8, */ textAlign: 'left', ...schemaStyle }}\n >\n {content}\n </Grid2>\n );\n\n if (schema.newLine) {\n return (\n <>\n <div style={{ flexBasis: '100%', height: 0 }} />\n {item}\n </>\n );\n }\n return item;\n }\n return content;\n }\n}\n"]}
|