@openremote/or-json-forms 1.8.0-snapshot.20250725120001 → 1.8.0-snapshot.20250725123024

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.
@@ -1,188 +1,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
1
+ import{and as e,createCombinatorRenderInfos as r,findUISchema as t,hasType as o,isAllOfControl as n,isAnyOfControl as a,isBooleanControl as s,isDateControl as i,isDateTimeControl as l,isEnumControl as c,isIntegerControl as m,isNumberControl as p,isObjectControl as d,isOneOfControl as u,isOneOfEnumControl as f,isStringControl as O,isTimeControl as h,mapDispatchToControlProps as b,mapStateToControlProps as y,mapStateToControlWithDetailProps as g,mapStateToLayoutProps as j,or as v,rankWith as C,resolveSchema as x,schemaMatches as T,schemaSubPathMatches as q,uiTypeIs as R}from"@jsonforms/core";import{html as $}from"lit";import"@openremote/or-mwc-components/or-mwc-input";import{getCombinatorInfos as A,getLabel as S,getSchemaConst as w,getSchemaPicker as F,getTemplateFromProps as I,mapStateToCombinatorRendererProps as L,showJsonEditor as E}from"./util";import"./layouts/layout-vertical-element";import"./controls/control-input-element";import"./controls/control-array-element";import{InputType as V}from"@openremote/or-mwc-components/or-mwc-input";import{Util as W}from"@openremote/core";let hasOneOfItems=e=>void 0!==e.oneOf&&e.oneOf.length>0&&e.oneOf.every(e=>void 0!==w(e)),hasEnumItems=e=>Array.isArray(e.enum);export const isEnumArray=e(R("Control"),e(T(e=>o(e,"array")&&!Array.isArray(e.items)&&!0===e.uniqueItems),q("items",e=>hasOneOfItems(e)||hasEnumItems(e))));export const verticalOrGroupLayoutTester=C(1,v(R("VerticalLayout"),R("Group")));export const verticalLayoutRenderer=(e,r)=>{let t,o=Object.assign(Object.assign(Object.assign({},j({jsonforms:Object.assign({},e)},r)),b(e.dispatch)),{label:r.label,required:r.required,errors:r.errors,minimal:r.minimal,type:r.type}),n=$`<or-json-forms-vertical-layout .state="${e}" .props="${o}"></or-json-forms-vertical-layout>`;return!o.required&&o.path&&(t=()=>{o.handleChange(o.path||"",void 0)}),getTemplateWrapper(n,t)};export const constTester=C(6,T(e=>void 0!==w(e)));export const constRenderer=(e,r)=>{};export const inputControlTester=C(3,v(T(e=>Array.isArray(e.type)&&7===e.type.length),O,s,p,m,i,h,l,c,f,isEnumArray));export const inputControlRenderer=(e,r)=>{let t,o=Object.assign(Object.assign({},y({jsonforms:Object.assign({},e)},r)),b(e.dispatch));o.label=r.label||o.label,o.required=!!r.required||o.required;let n=$`<or-json-forms-input-control .state="${e}" .props="${o}"></or-json-forms-input-control>`;return!o.required&&o.path&&(t=()=>{o.handleChange(o.path,void 0)}),getTemplateWrapper(n,t)};export const objectControlTester=C(2,d);export const objectControlRenderer=(e,r)=>{let{required:o,renderers:n,cells:a,uischemas:s,schema:i,label:l,errors:c,path:m,visible:p,enabled:d,uischema:u,rootSchema:f}=g({jsonforms:Object.assign({},e)},r),O=t(s,i,u.scope,m,"VerticalLayout",u,f);return I(e,{visible:p,enabled:d,schema:i,uischema:O,path:m,renderers:n,cells:a,label:r.label||S(i,f,l)||"",required:!!r.required||!!o,errors:c,minimal:r.minimal})};export const anyOfOneOfControlTester=C(4,v(a,u));export const anyOfOneOfControlRenderer=(e,t)=>{let o={jsonforms:Object.assign({},e)},{required:n,renderers:a,cells:s,schema:i,label:l,path:c,errors:m,visible:p,enabled:d,uischema:u,rootSchema:f,data:O}=g(o,t),h=void 0!==i.anyOf?"anyOf":"oneOf",y=x(i,h,f),j=L(o,t,h),v=r(y,f,h,j.uischema||u,c,j.uischemas);if(null!=O&&(void 0===j.indexOfFittingSchema||j.indexOfFittingSchema<0)){let e=A(y,f),r=e.length>0?e[0].constProperty:void 0;if(r&&"object"==typeof O&&O[r]){let t=O[r];j.indexOfFittingSchema=e.findIndex(e=>e.constValue===t)}}if(void 0===j.indexOfFittingSchema||j.indexOfFittingSchema<0){let{handleChange:r}=b(e.dispatch);return null==O?F(f,y,c,h,t.label||l,e=>r(c,e.defaultValueCreator())):(console.warn("Cannot match "+h+" schema to instance data"),$`
2
+ <div class="item-container no-match-container"><span>${l}:</span><b><or-translate value="validation.noSchemaMatchFound"></b><or-mwc-input .type="${V.BUTTON}" outlined label="json" icon="pencil" @or-mwc-input-changed="${e=>{e.stopPropagation(),E(l,O,e=>{r(c||"",e)})}}"></or-mwc-input></div>
3
+ `)}let C=v[j.indexOfFittingSchema].schema,T=v[j.indexOfFittingSchema].uischema;return C.allOf&&(T={type:"Control",scope:"#",label:!1}),I(e,{schema:C,uischema:T,path:c,renderers:a,cells:s,label:t.label||S(C,f,l)||"",required:t.required||!!n,errors:m,minimal:t.minimal,type:C.title})};export const allOfControlTester=C(4,n);export const allOfControlRenderer=(e,r)=>{let t=Object.assign({},g({jsonforms:Object.assign({},e)},r)),o=x(t.schema,"allOf",t.rootSchema);return t.schema=o.allOf.reduce((e,r)=>W.mergeObjects(e,r,!1)),t.uischema.scope="#",t.label=r.label||t.label,t.required=!!r.required||t.required,t.minimal=r.minimal,I(e,t)};export const arrayControlTester=C(2,T(e=>o(e,"array")&&!Array.isArray(e.items)));export const arrayControlRenderer=(e,r)=>{let t,o=Object.assign(Object.assign({},y({jsonforms:Object.assign({},e)},r)),b(e.dispatch));o.label=r.label||o.label,o.required=!!r.required||o.required,o.minimal=r.minimal;let n=$`<or-json-forms-array-control .state="${e}" .props="${o}"></or-json-forms-array-control>`;return!o.required&&o.path&&(t=()=>{o.handleChange(o.path,void 0)}),getTemplateWrapper(n,t)};export function getTemplateWrapper(e,r){let t=r?$`
4
+ <button class="button-clear" @click="${r}"><or-icon icon="close-circle"></or-icon></input>
5
+ `:"";return $`
6
+ <div class="item-container">
7
+ ${e}
8
+ <div class="delete-container">
9
+ ${t}
10
+ </div>
11
+ </div>
12
+ `}export function unknownTemplate(){return $`<span>No applicable renderer found!</span>`}export const StandardRenderers=[{tester:verticalOrGroupLayoutTester,renderer:verticalLayoutRenderer},{tester:constTester,renderer:constRenderer},{tester:inputControlTester,renderer:inputControlRenderer},{tester:objectControlTester,renderer:objectControlRenderer},{tester:arrayControlTester,renderer:arrayControlRenderer},{tester:anyOfOneOfControlTester,renderer:anyOfOneOfControlRenderer},{tester:allOfControlTester,renderer:allOfControlRenderer}];
package/lib/styles.js CHANGED
@@ -1,156 +1,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
1
+ import{DefaultColor3 as e,DefaultColor4 as o,DefaultColor5 as t}from"@openremote/core";import{css as r,html as i,unsafeCSS as l}from"lit";export const baseStyle=r`
2
+ :host {
3
+ flex: 1;
4
+ }
5
+
6
+ .item-container {
7
+ display: flex;
8
+ }
9
+
10
+ .delete-container, .drag-container {
11
+ width: 30px;
12
+ display: flex;
13
+ vertical-align: middle;
14
+ }
15
+
16
+ .item-container:hover .button-clear, .item-wrapper:hover .button-clear {
17
+ visibility: visible;
18
+ }
19
+
20
+ .no-match-container {
21
+ align-items: center;
22
+ }
23
+
24
+ .no-match-container > *:not(:last-child) {
25
+ margin-right: 10px;
26
+ }
27
+
28
+ .button-clear {
29
+ background: none;
30
+ color: ${l(t)};
31
+ --or-icon-fill: ${l(t)};
32
+ visibility: hidden;
33
+ display: inline-block;
34
+ border: none;
35
+ padding: 0 0 0 5px;
36
+ cursor: pointer;
37
+ }
38
+ .button-clear:hover {
39
+ --or-icon-fill: ${l(o)};
40
+ }
41
+ .button-clear:focus {
42
+ outline: 0;
43
+ }
44
+ .button-clear.hidden {
45
+ visibility: hidden;
46
+ }
47
+
48
+ .any-of-picker {
49
+ width: 100%;
50
+ min-width: 200px;
51
+ }
52
+
53
+ #errors {
54
+ color: red;
55
+ margin-right: 10px;
56
+ flex: 1;
57
+ display: flex;
58
+ align-items: center;
59
+ }
60
+
61
+ #errors > or-icon {
62
+ margin-right: 5px;
63
+ }
64
+ `;export const panelStyle=r`
65
+ #header-description {
66
+ flex: 1;
67
+ display: flex;
68
+ flex-direction: row;
69
+ }
70
+
71
+ #type-label {
72
+ border: 1px solid green;
73
+ border-radius: 3px;
74
+ padding: 3px;
75
+ margin-left: 10px;
76
+ }
77
+
78
+ #header-buttons {
79
+ flex: 0;
80
+ }
81
+
82
+ #content-wrapper {
83
+ flex: 1;
84
+ padding: 0 4px 14px 24px;
85
+ }
86
+
87
+ #content {
88
+ display: flex;
89
+ flex-direction: column;
90
+ }
91
+
92
+ #content > * {
93
+ flex: 1;
94
+ }
95
+
96
+ .item-container + .item-container {
97
+ padding-top: 10px;
98
+ }
99
+
100
+ #footer {
101
+ margin-top: 10px;
102
+ }
103
+
104
+ `;export const addItemOrParameterDialogStyle=i`
105
+ <style>
106
+ .mdc-dialog__surface {
107
+ width: 800px;
108
+ overflow-x: visible !important;
109
+ overflow-y: visible !important;
110
+ }
111
+ #dialog-content {
112
+ border-color: var(--or-app-color5, ${l(t)});
113
+ border-top-width: 1px;
114
+ border-top-style: solid;
115
+ border-bottom-width: 1px;
116
+ border-bottom-style: solid;
117
+ padding: 0;
118
+ }
119
+ form {
120
+ display: flex;
121
+ height: 100%;
122
+ }
123
+ #type-list {
124
+ overflow: auto;
125
+ min-width: 150px;
126
+ max-width: 300px;
127
+ flex: 0 0 40%;
128
+ border-right: 1px solid var(--or-app-color5, #CCC);
129
+ }
130
+ #parameter-list {
131
+ display: block;
132
+ }
133
+ #parameter-title {
134
+ text-transform: capitalize;
135
+ color: var(--or-app-color3, ${l(e)});
136
+ font-size: 18px;
137
+ font-weight: bold;
138
+ }
139
+ #parameter-desc {
140
+ padding: 15px;
141
+ flex: 1;
142
+ display: flex;
143
+ flex-direction: column;
144
+ justify-content: flex-start;
145
+ overflow: auto;
146
+ }
147
+ </style>
148
+ `;