@openremote/or-json-forms 1.8.0-snapshot.20250725074716 → 1.8.0-snapshot.20250725120000
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 +113 -113
- package/custom-elements.json +2 -2
- package/dist/umd/index.js +1105 -1105
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/index.orbundle.js +1163 -1163
- package/dist/umd/index.orbundle.js.map +1 -1
- package/lib/base-element.js +57 -1
- package/lib/controls/control-array-element.js +277 -83
- package/lib/controls/control-base-element.js +48 -1
- package/lib/controls/control-input-element.js +157 -20
- package/lib/index.js +141 -7
- package/lib/layouts/layout-base-element.js +29 -1
- package/lib/layouts/layout-vertical-element.js +340 -128
- package/lib/standard-renderers.js +188 -12
- package/lib/styles.js +156 -148
- package/lib/util.js +291 -23
- package/package.json +4 -4
|
@@ -1,12 +1,188 @@
|
|
|
1
|
-
import{and
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { and, createCombinatorRenderInfos, findUISchema, hasType, isAllOfControl, isAnyOfControl, isBooleanControl, isDateControl, isDateTimeControl, isEnumControl, isIntegerControl, isNumberControl, isObjectControl, isOneOfControl, isOneOfEnumControl, isStringControl, isTimeControl, mapDispatchToControlProps, mapStateToControlProps, mapStateToControlWithDetailProps, mapStateToLayoutProps, or, rankWith, resolveSchema, schemaMatches, schemaSubPathMatches, uiTypeIs } from "@jsonforms/core";
|
|
2
|
+
import { html } from "lit";
|
|
3
|
+
import "@openremote/or-mwc-components/or-mwc-input";
|
|
4
|
+
import { getCombinatorInfos, getLabel, getSchemaConst, getSchemaPicker, getTemplateFromProps, mapStateToCombinatorRendererProps, showJsonEditor } from "./util";
|
|
5
|
+
import "./layouts/layout-vertical-element";
|
|
6
|
+
import "./controls/control-input-element";
|
|
7
|
+
import "./controls/control-array-element";
|
|
8
|
+
import { InputType } from "@openremote/or-mwc-components/or-mwc-input";
|
|
9
|
+
import { Util } from "@openremote/core";
|
|
10
|
+
const hasOneOfItems = (schema) => schema.oneOf !== undefined &&
|
|
11
|
+
schema.oneOf.length > 0 &&
|
|
12
|
+
schema.oneOf.every((entry) => {
|
|
13
|
+
return getSchemaConst(entry) !== undefined;
|
|
14
|
+
});
|
|
15
|
+
const hasEnumItems = (schema) => Array.isArray(schema.enum);
|
|
16
|
+
export const isEnumArray = and(uiTypeIs('Control'), and(schemaMatches(schema => hasType(schema, 'array') &&
|
|
17
|
+
!Array.isArray(schema.items) &&
|
|
18
|
+
schema.uniqueItems === true), schemaSubPathMatches('items', schema => {
|
|
19
|
+
return hasOneOfItems(schema) || hasEnumItems(schema);
|
|
20
|
+
})));
|
|
21
|
+
export const verticalOrGroupLayoutTester = rankWith(1, or(uiTypeIs("VerticalLayout"), uiTypeIs("Group")));
|
|
22
|
+
export const verticalLayoutRenderer = (state, props) => {
|
|
23
|
+
const contentProps = Object.assign(Object.assign(Object.assign({}, mapStateToLayoutProps({ jsonforms: Object.assign({}, state) }, props)), mapDispatchToControlProps(state.dispatch)), { label: props.label, required: props.required, errors: props.errors, minimal: props.minimal, type: props.type });
|
|
24
|
+
const template = html `<or-json-forms-vertical-layout .state="${state}" .props="${contentProps}"></or-json-forms-vertical-layout>`;
|
|
25
|
+
let deleteHandler;
|
|
26
|
+
if (!contentProps.required && contentProps.path) {
|
|
27
|
+
deleteHandler = () => {
|
|
28
|
+
contentProps.handleChange(contentProps.path || "", undefined);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return getTemplateWrapper(template, deleteHandler);
|
|
32
|
+
};
|
|
33
|
+
export const constTester = rankWith(6, schemaMatches(schema => getSchemaConst(schema) !== undefined));
|
|
34
|
+
export const constRenderer = (state, props) => {
|
|
35
|
+
// Don't render const
|
|
36
|
+
return undefined;
|
|
37
|
+
};
|
|
38
|
+
export const inputControlTester = rankWith(3, or(schemaMatches(schema => Array.isArray(schema.type) && schema.type.length === 7), isStringControl, isBooleanControl, isNumberControl, isIntegerControl, isDateControl, isTimeControl, isDateTimeControl, isEnumControl, isOneOfEnumControl, isEnumArray));
|
|
39
|
+
export const inputControlRenderer = (state, props) => {
|
|
40
|
+
const contentProps = Object.assign(Object.assign({}, mapStateToControlProps({ jsonforms: Object.assign({}, state) }, props)), mapDispatchToControlProps(state.dispatch));
|
|
41
|
+
contentProps.label = props.label || contentProps.label;
|
|
42
|
+
contentProps.required = !!props.required || contentProps.required;
|
|
43
|
+
const template = html `<or-json-forms-input-control .state="${state}" .props="${contentProps}"></or-json-forms-input-control>`;
|
|
44
|
+
let deleteHandler;
|
|
45
|
+
if (!contentProps.required && contentProps.path) {
|
|
46
|
+
deleteHandler = () => {
|
|
47
|
+
contentProps.handleChange(contentProps.path, undefined);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return getTemplateWrapper(template, deleteHandler);
|
|
51
|
+
};
|
|
52
|
+
export const objectControlTester = rankWith(2, isObjectControl);
|
|
53
|
+
export const objectControlRenderer = (state, props) => {
|
|
54
|
+
const { required, renderers, cells, uischemas, schema, label, errors, path, visible, enabled, uischema, rootSchema } = mapStateToControlWithDetailProps({ jsonforms: Object.assign({}, state) }, props);
|
|
55
|
+
const detailUiSchema = findUISchema(uischemas, schema, uischema.scope, path, "VerticalLayout", uischema, rootSchema);
|
|
56
|
+
const contentProps = {
|
|
57
|
+
visible: visible,
|
|
58
|
+
enabled: enabled,
|
|
59
|
+
schema: schema,
|
|
60
|
+
uischema: detailUiSchema,
|
|
61
|
+
path: path,
|
|
62
|
+
renderers: renderers,
|
|
63
|
+
cells: cells,
|
|
64
|
+
label: props.label || getLabel(schema, rootSchema, label) || "",
|
|
65
|
+
required: !!props.required || !!required,
|
|
66
|
+
errors: errors,
|
|
67
|
+
minimal: props.minimal
|
|
68
|
+
};
|
|
69
|
+
return getTemplateFromProps(state, contentProps);
|
|
70
|
+
};
|
|
71
|
+
export const anyOfOneOfControlTester = rankWith(4, or(isAnyOfControl, isOneOfControl));
|
|
72
|
+
export const anyOfOneOfControlRenderer = (state, props) => {
|
|
73
|
+
const jsonFormsContext = { jsonforms: Object.assign({}, state) };
|
|
74
|
+
const { required, renderers, cells, schema, label, path, errors, visible, enabled, uischema, rootSchema, data } = mapStateToControlWithDetailProps(jsonFormsContext, props);
|
|
75
|
+
const keyword = schema.anyOf !== undefined ? "anyOf" : "oneOf";
|
|
76
|
+
const resolvedSchema = resolveSchema(schema, keyword, rootSchema);
|
|
77
|
+
const resolvedProps = mapStateToCombinatorRendererProps(jsonFormsContext, props, keyword);
|
|
78
|
+
const renderInfos = createCombinatorRenderInfos(resolvedSchema, rootSchema, keyword, resolvedProps.uischema || uischema, path, resolvedProps.uischemas);
|
|
79
|
+
if (data !== undefined && data !== null && (resolvedProps.indexOfFittingSchema === undefined || resolvedProps.indexOfFittingSchema < 0)) {
|
|
80
|
+
// Try and match the data using our own combinator info objects
|
|
81
|
+
const combinatorInfos = getCombinatorInfos(resolvedSchema, rootSchema);
|
|
82
|
+
const constProp = combinatorInfos.length > 0 ? combinatorInfos[0].constProperty : undefined;
|
|
83
|
+
if (constProp && typeof data === "object" && data[constProp]) {
|
|
84
|
+
const dataType = data[constProp];
|
|
85
|
+
resolvedProps.indexOfFittingSchema = combinatorInfos.findIndex((combinatorInfo) => combinatorInfo.constValue === dataType);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (resolvedProps.indexOfFittingSchema === undefined || resolvedProps.indexOfFittingSchema < 0) {
|
|
89
|
+
const { handleChange } = mapDispatchToControlProps(state.dispatch);
|
|
90
|
+
if (data !== undefined && data !== null) {
|
|
91
|
+
// We have data that doesn't match a schema so show invalid template
|
|
92
|
+
console.warn("Cannot match " + keyword + " schema to instance data");
|
|
93
|
+
const showJson = (ev) => {
|
|
94
|
+
ev.stopPropagation();
|
|
95
|
+
showJsonEditor(label, data, ((newValue) => {
|
|
96
|
+
handleChange(path || "", newValue);
|
|
97
|
+
}));
|
|
98
|
+
};
|
|
99
|
+
return html `
|
|
100
|
+
<div class="item-container no-match-container"><span>${label}:</span><b><or-translate value="validation.noSchemaMatchFound"></b><or-mwc-input .type="${InputType.BUTTON}" outlined label="json" icon="pencil" @or-mwc-input-changed="${(ev) => showJson(ev)}"></or-mwc-input></div>
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// We have no data so show a schema picker
|
|
105
|
+
return getSchemaPicker(rootSchema, resolvedSchema, path, keyword, props.label || label, (selectedSchema => handleChange(path, selectedSchema.defaultValueCreator())));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Return template for the anyOf/oneOf schema that matches the data
|
|
109
|
+
const matchedSchema = renderInfos[resolvedProps.indexOfFittingSchema].schema;
|
|
110
|
+
let matchedUischema = renderInfos[resolvedProps.indexOfFittingSchema].uischema;
|
|
111
|
+
if (matchedSchema.allOf) {
|
|
112
|
+
// Force the uischema to be a simple control so it goes through the allOf renderer
|
|
113
|
+
matchedUischema = {
|
|
114
|
+
type: 'Control',
|
|
115
|
+
scope: "#",
|
|
116
|
+
label: false
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const contentProps = {
|
|
120
|
+
schema: matchedSchema,
|
|
121
|
+
uischema: matchedUischema,
|
|
122
|
+
path: path,
|
|
123
|
+
renderers: renderers,
|
|
124
|
+
cells: cells,
|
|
125
|
+
label: props.label || getLabel(matchedSchema, rootSchema, label) || "",
|
|
126
|
+
required: props.required || !!required,
|
|
127
|
+
errors: errors,
|
|
128
|
+
minimal: props.minimal,
|
|
129
|
+
type: matchedSchema.title
|
|
130
|
+
};
|
|
131
|
+
return getTemplateFromProps(state, contentProps);
|
|
132
|
+
};
|
|
133
|
+
export const allOfControlTester = rankWith(4, isAllOfControl);
|
|
134
|
+
export const allOfControlRenderer = (state, props) => {
|
|
135
|
+
const jsonFormsContext = { jsonforms: Object.assign({}, state) };
|
|
136
|
+
const contentProps = Object.assign({}, mapStateToControlWithDetailProps(jsonFormsContext, props));
|
|
137
|
+
// Merge the schemas
|
|
138
|
+
const allOfSchema = resolveSchema(contentProps.schema, "allOf", contentProps.rootSchema);
|
|
139
|
+
contentProps.schema = allOfSchema.allOf.reduce((accumulator, value) => Util.mergeObjects(accumulator, value, false));
|
|
140
|
+
// Reset the uischema scope
|
|
141
|
+
contentProps.uischema.scope = "#";
|
|
142
|
+
contentProps.label = props.label || contentProps.label;
|
|
143
|
+
contentProps.required = !!props.required || contentProps.required;
|
|
144
|
+
contentProps.minimal = props.minimal;
|
|
145
|
+
return getTemplateFromProps(state, contentProps);
|
|
146
|
+
};
|
|
147
|
+
export const arrayControlTester = rankWith(2, schemaMatches(schema => hasType(schema, 'array') && !Array.isArray(schema.items) // we don't care about tuples
|
|
148
|
+
));
|
|
149
|
+
export const arrayControlRenderer = (state, props) => {
|
|
150
|
+
const contentProps = Object.assign(Object.assign({}, mapStateToControlProps({ jsonforms: Object.assign({}, state) }, props)), mapDispatchToControlProps(state.dispatch));
|
|
151
|
+
contentProps.label = props.label || contentProps.label;
|
|
152
|
+
contentProps.required = !!props.required || contentProps.required;
|
|
153
|
+
contentProps.minimal = props.minimal;
|
|
154
|
+
const template = html `<or-json-forms-array-control .state="${state}" .props="${contentProps}"></or-json-forms-array-control>`;
|
|
155
|
+
let deleteHandler;
|
|
156
|
+
if (!contentProps.required && contentProps.path) {
|
|
157
|
+
deleteHandler = () => {
|
|
158
|
+
contentProps.handleChange(contentProps.path, undefined);
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return getTemplateWrapper(template, deleteHandler);
|
|
162
|
+
};
|
|
163
|
+
export function getTemplateWrapper(elementTemplate, deleteHandler) {
|
|
164
|
+
const deleteTemplate = !deleteHandler ? `` : html `
|
|
165
|
+
<button class="button-clear" @click="${deleteHandler}"><or-icon icon="close-circle"></or-icon></input>
|
|
166
|
+
`;
|
|
167
|
+
return html `
|
|
168
|
+
<div class="item-container">
|
|
169
|
+
${elementTemplate}
|
|
170
|
+
<div class="delete-container">
|
|
171
|
+
${deleteTemplate}
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
`;
|
|
175
|
+
}
|
|
176
|
+
export function unknownTemplate() {
|
|
177
|
+
return html `<span>No applicable renderer found!</span>`;
|
|
178
|
+
}
|
|
179
|
+
export const StandardRenderers = [
|
|
180
|
+
{ tester: verticalOrGroupLayoutTester, renderer: verticalLayoutRenderer },
|
|
181
|
+
{ tester: constTester, renderer: constRenderer },
|
|
182
|
+
{ tester: inputControlTester, renderer: inputControlRenderer },
|
|
183
|
+
{ tester: objectControlTester, renderer: objectControlRenderer },
|
|
184
|
+
{ tester: arrayControlTester, renderer: arrayControlRenderer },
|
|
185
|
+
{ tester: anyOfOneOfControlTester, renderer: anyOfOneOfControlRenderer },
|
|
186
|
+
{ tester: allOfControlTester, renderer: allOfControlRenderer }
|
|
187
|
+
];
|
|
188
|
+
//# sourceMappingURL=standard-renderers.js.map
|
package/lib/styles.js
CHANGED
|
@@ -1,148 +1,156 @@
|
|
|
1
|
-
import{DefaultColor3
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
.button-clear:
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
.button-clear
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
#content {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
#content
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
#
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
1
|
+
import { DefaultColor3, DefaultColor4, DefaultColor5 } from "@openremote/core";
|
|
2
|
+
import { css, html, unsafeCSS } from "lit";
|
|
3
|
+
// language=CSS
|
|
4
|
+
export const baseStyle = css `
|
|
5
|
+
:host {
|
|
6
|
+
flex: 1;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.item-container {
|
|
10
|
+
display: flex;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.delete-container, .drag-container {
|
|
14
|
+
width: 30px;
|
|
15
|
+
display: flex;
|
|
16
|
+
vertical-align: middle;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.item-container:hover .button-clear, .item-wrapper:hover .button-clear {
|
|
20
|
+
visibility: visible;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.no-match-container {
|
|
24
|
+
align-items: center;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.no-match-container > *:not(:last-child) {
|
|
28
|
+
margin-right: 10px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.button-clear {
|
|
32
|
+
background: none;
|
|
33
|
+
color: ${unsafeCSS(DefaultColor5)};
|
|
34
|
+
--or-icon-fill: ${unsafeCSS(DefaultColor5)};
|
|
35
|
+
visibility: hidden;
|
|
36
|
+
display: inline-block;
|
|
37
|
+
border: none;
|
|
38
|
+
padding: 0 0 0 5px;
|
|
39
|
+
cursor: pointer;
|
|
40
|
+
}
|
|
41
|
+
.button-clear:hover {
|
|
42
|
+
--or-icon-fill: ${unsafeCSS(DefaultColor4)};
|
|
43
|
+
}
|
|
44
|
+
.button-clear:focus {
|
|
45
|
+
outline: 0;
|
|
46
|
+
}
|
|
47
|
+
.button-clear.hidden {
|
|
48
|
+
visibility: hidden;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.any-of-picker {
|
|
52
|
+
width: 100%;
|
|
53
|
+
min-width: 200px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
#errors {
|
|
57
|
+
color: red;
|
|
58
|
+
margin-right: 10px;
|
|
59
|
+
flex: 1;
|
|
60
|
+
display: flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#errors > or-icon {
|
|
65
|
+
margin-right: 5px;
|
|
66
|
+
}
|
|
67
|
+
`;
|
|
68
|
+
// language=CSS
|
|
69
|
+
export const panelStyle = css `
|
|
70
|
+
#header-description {
|
|
71
|
+
flex: 1;
|
|
72
|
+
display: flex;
|
|
73
|
+
flex-direction: row;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
#type-label {
|
|
77
|
+
border: 1px solid green;
|
|
78
|
+
border-radius: 3px;
|
|
79
|
+
padding: 3px;
|
|
80
|
+
margin-left: 10px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
#header-buttons {
|
|
84
|
+
flex: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
#content-wrapper {
|
|
88
|
+
flex: 1;
|
|
89
|
+
padding: 0 4px 14px 24px;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
#content {
|
|
93
|
+
display: flex;
|
|
94
|
+
flex-direction: column;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
#content > * {
|
|
98
|
+
flex: 1;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.item-container + .item-container {
|
|
102
|
+
padding-top: 10px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
#footer {
|
|
106
|
+
margin-top: 10px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
`;
|
|
110
|
+
// language=HTML
|
|
111
|
+
export const addItemOrParameterDialogStyle = html `
|
|
112
|
+
<style>
|
|
113
|
+
.mdc-dialog__surface {
|
|
114
|
+
width: 800px;
|
|
115
|
+
overflow-x: visible !important;
|
|
116
|
+
overflow-y: visible !important;
|
|
117
|
+
}
|
|
118
|
+
#dialog-content {
|
|
119
|
+
border-color: var(--or-app-color5, ${unsafeCSS(DefaultColor5)});
|
|
120
|
+
border-top-width: 1px;
|
|
121
|
+
border-top-style: solid;
|
|
122
|
+
border-bottom-width: 1px;
|
|
123
|
+
border-bottom-style: solid;
|
|
124
|
+
padding: 0;
|
|
125
|
+
}
|
|
126
|
+
form {
|
|
127
|
+
display: flex;
|
|
128
|
+
height: 100%;
|
|
129
|
+
}
|
|
130
|
+
#type-list {
|
|
131
|
+
overflow: auto;
|
|
132
|
+
min-width: 150px;
|
|
133
|
+
max-width: 300px;
|
|
134
|
+
flex: 0 0 40%;
|
|
135
|
+
border-right: 1px solid var(--or-app-color5, #CCC);
|
|
136
|
+
}
|
|
137
|
+
#parameter-list {
|
|
138
|
+
display: block;
|
|
139
|
+
}
|
|
140
|
+
#parameter-title {
|
|
141
|
+
text-transform: capitalize;
|
|
142
|
+
color: var(--or-app-color3, ${unsafeCSS(DefaultColor3)});
|
|
143
|
+
font-size: 18px;
|
|
144
|
+
font-weight: bold;
|
|
145
|
+
}
|
|
146
|
+
#parameter-desc {
|
|
147
|
+
padding: 15px;
|
|
148
|
+
flex: 1;
|
|
149
|
+
display: flex;
|
|
150
|
+
flex-direction: column;
|
|
151
|
+
justify-content: flex-start;
|
|
152
|
+
overflow: auto;
|
|
153
|
+
}
|
|
154
|
+
</style>
|
|
155
|
+
`;
|
|
156
|
+
//# sourceMappingURL=styles.js.map
|