@gravitee/ui-components 5.0.1 → 5.0.2-renovate-digests-pin-e94a738

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.
Files changed (26) hide show
  1. package/package.json +1 -1
  2. package/src/lib/schema-form-oneof.d.ts +24 -0
  3. package/src/lib/schema-form-oneof.js +156 -0
  4. package/src/lib/schema-form-oneof.js.map +1 -0
  5. package/src/lib/schema-form.d.ts +17 -1
  6. package/src/lib/schema-form.js +149 -1
  7. package/src/lib/schema-form.js.map +1 -1
  8. package/src/mixins/schema-form-oneof.d.ts +20 -0
  9. package/src/mixins/schema-form-oneof.js +93 -0
  10. package/src/mixins/schema-form-oneof.js.map +1 -0
  11. package/src/organisms/gv-schema-form/gv-schema-form.d.ts +23 -69
  12. package/src/organisms/gv-schema-form/gv-schema-form.js +23 -61
  13. package/src/organisms/gv-schema-form/gv-schema-form.js.map +1 -1
  14. package/src/organisms/gv-schema-form/gv-schema-form.stories.d.ts +19 -0
  15. package/src/organisms/gv-schema-form/gv-schema-form.stories.js +41 -4
  16. package/src/organisms/gv-schema-form/gv-schema-form.stories.js.map +1 -1
  17. package/src/organisms/gv-schema-form/gv-schema-form.test.js +32 -0
  18. package/src/organisms/gv-schema-form/gv-schema-form.test.js.map +1 -1
  19. package/src/organisms/gv-schema-form-control/gv-schema-form-control.d.ts +2 -1
  20. package/src/organisms/gv-schema-form-control/gv-schema-form-control.js +44 -18
  21. package/src/organisms/gv-schema-form-control/gv-schema-form-control.js.map +1 -1
  22. package/src/organisms/gv-schema-form-group/gv-schema-form-group.d.ts +21 -52
  23. package/src/organisms/gv-schema-form-group/gv-schema-form-group.js +23 -57
  24. package/src/organisms/gv-schema-form-group/gv-schema-form-group.js.map +1 -1
  25. package/src/organisms/gv-schema-form-group/gv-schema-form-group.test.js +65 -0
  26. package/src/organisms/gv-schema-form-group/gv-schema-form-group.test.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravitee/ui-components",
3
- "version": "5.0.1",
3
+ "version": "5.0.2-renovate-digests-pin-e94a738",
4
4
  "description": "Gravitee.io UI Components library, based on Web Components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,24 @@
1
+ export function renderSchemaFormControl({ key, controlOverride, requiredOverride, schema, errors, skeleton, readonly, value, evaluateCondition, onHidden, }: {
2
+ key: any;
3
+ controlOverride?: null | undefined;
4
+ requiredOverride?: null | undefined;
5
+ schema: any;
6
+ errors: any;
7
+ skeleton: any;
8
+ readonly: any;
9
+ value: any;
10
+ evaluateCondition: any;
11
+ onHidden: any;
12
+ }): import("lit-html").TemplateResult<1>;
13
+ export function syncSelectedOneOfIndex(values: any, oneOf: any, currentIndex: any, rootSchema?: {}): any;
14
+ export function switchOneOfBranch(values: any, oneOf: any, prevIndex: any, nextIndex: any, rootSchema?: {}): any;
15
+ export function renderFormLevelErrors(errors: any): import("lit-html").TemplateResult<1>[];
16
+ export function renderRootOneOfPart({ schema, selectedIndex, readonly, onSelect, renderControl }: {
17
+ schema: any;
18
+ selectedIndex: any;
19
+ readonly: any;
20
+ onSelect: any;
21
+ renderControl: any;
22
+ }): import("lit-html").TemplateResult<1>;
23
+ export function renderGroupedSchemaControls(groups: any, keys: any, renderControl: any, renderOneOfPart: any): unknown;
24
+ export const schemaFormOneOfStyles: import("lit").CSSResult;
@@ -0,0 +1,156 @@
1
+ /*
2
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { css, html } from 'lit';
17
+ import { repeat } from 'lit/directives/repeat.js';
18
+ import { del } from 'object-path';
19
+ import { formatFormLevelError, getFormLevelErrors, inferOneOfIndex, normalizeControlForSchemaForm, resolveSchemaNode } from './schema-form';
20
+ export function renderSchemaFormControl({ key, controlOverride = null, requiredOverride = null, schema, errors, skeleton, readonly, value, evaluateCondition, onHidden, }) {
21
+ var _a, _b, _c;
22
+ const source = controlOverride || ((_a = schema.properties) === null || _a === void 0 ? void 0 : _a[key]);
23
+ const control = normalizeControlForSchemaForm(source) || {};
24
+ const isRequired = (requiredOverride != null ? requiredOverride : (_b = schema.required) === null || _b === void 0 ? void 0 : _b.includes(key)) || evaluateCondition(control, 'required');
25
+ const isDisabled = ((_c = schema.disabled) === null || _c === void 0 ? void 0 : _c.includes(key)) || evaluateCondition(control, 'disabled');
26
+ const isHidden = evaluateCondition(control, 'hidden');
27
+ if (isHidden) {
28
+ onHidden === null || onHidden === void 0 ? void 0 : onHidden(key);
29
+ }
30
+ const isReadonly = readonly || control.readOnly === true;
31
+ const isWriteOnly = control.writeOnly === true;
32
+ return html `<gv-schema-form-control
33
+ .id="${key}"
34
+ .errors="${errors}"
35
+ .control="${control}"
36
+ .skeleton="${skeleton}"
37
+ .value="${value}"
38
+ ?readonly="${isReadonly}"
39
+ ?writeonly="${isWriteOnly}"
40
+ ?required="${isRequired}"
41
+ ?disabled="${isDisabled}"
42
+ ?hidden="${isHidden}"
43
+ ></gv-schema-form-control>`;
44
+ }
45
+ export const schemaFormOneOfStyles = css `
46
+ .form-level-error {
47
+ margin: 0.4rem;
48
+ }
49
+
50
+ .oneof-select {
51
+ display: flex;
52
+ flex-direction: column;
53
+ gap: 0.25rem;
54
+ margin: var(--gv-schema-form-control--m, var(--gv-schema-form-group-control--m, 0.4rem));
55
+ width: calc(100% - 0.8rem);
56
+ align-self: center;
57
+ box-sizing: border-box;
58
+ }
59
+
60
+ .oneof-select__label {
61
+ font-size: 0.85rem;
62
+ font-weight: 600;
63
+ }
64
+
65
+ .oneof-select select {
66
+ width: 100%;
67
+ padding: 0.45rem 0.5rem;
68
+ border: 1px solid var(--gv-theme-neutral-color-dark, #d9d9d9);
69
+ border-radius: 2px;
70
+ background: var(--bgc);
71
+ color: inherit;
72
+ font: inherit;
73
+ }
74
+ `;
75
+ export function syncSelectedOneOfIndex(values, oneOf, currentIndex, rootSchema = {}) {
76
+ if (!Array.isArray(oneOf) || oneOf.length === 0) {
77
+ return null;
78
+ }
79
+ const inferred = inferOneOfIndex(values, oneOf, rootSchema);
80
+ return inferred != null ? inferred : currentIndex;
81
+ }
82
+ export function switchOneOfBranch(values, oneOf, prevIndex, nextIndex, rootSchema = {}) {
83
+ if (!Array.isArray(oneOf) || oneOf[nextIndex] == null) {
84
+ return prevIndex;
85
+ }
86
+ if (prevIndex != null && prevIndex !== nextIndex && oneOf[prevIndex]) {
87
+ const previousBranch = resolveSchemaNode(oneOf[prevIndex], rootSchema);
88
+ const nextBranch = resolveSchemaNode(oneOf[nextIndex], rootSchema);
89
+ const nextProps = new Set(Object.keys(nextBranch.properties || {}));
90
+ for (const key of Object.keys(previousBranch.properties || {})) {
91
+ if (!nextProps.has(key)) {
92
+ del(values, key);
93
+ }
94
+ }
95
+ }
96
+ return nextIndex;
97
+ }
98
+ export function renderFormLevelErrors(errors) {
99
+ return getFormLevelErrors(errors).map((error) => html `<gv-input-message class="form-level-error" level="warning">${formatFormLevelError(error)}</gv-input-message>`);
100
+ }
101
+ export function renderRootOneOfPart({ schema, selectedIndex, readonly, onSelect, renderControl }) {
102
+ const oneOf = schema === null || schema === void 0 ? void 0 : schema.oneOf;
103
+ if (!Array.isArray(oneOf) || oneOf.length === 0) {
104
+ return html ``;
105
+ }
106
+ const titles = oneOf.map((branch, i) => {
107
+ const resolved = resolveSchemaNode(branch, schema);
108
+ return (resolved.title || branch.title || `Option ${i + 1}`).trim();
109
+ });
110
+ let branchControls = html ``;
111
+ if (selectedIndex != null && oneOf[selectedIndex]) {
112
+ const branch = resolveSchemaNode(oneOf[selectedIndex], schema);
113
+ const properties = branch.properties || {};
114
+ const required = branch.required || [];
115
+ branchControls = html `${repeat(Object.keys(properties), (key) => `${selectedIndex}:${key}`, (key) => renderControl(key, properties[key], required.includes(key)))}`;
116
+ }
117
+ return html `
118
+ <label class="oneof-select">
119
+ <span class="oneof-select__label">Select option</span>
120
+ <select .value="${selectedIndex != null ? String(selectedIndex) : ''}" ?disabled="${readonly}" @change="${onSelect}">
121
+ <option value="" disabled ?selected="${selectedIndex == null}">Select option</option>
122
+ ${titles.map((title, index) => html `<option value="${index}" ?selected="${selectedIndex === index}">${title}</option>`)}
123
+ </select>
124
+ </label>
125
+ ${branchControls}
126
+ `;
127
+ }
128
+ export function renderGroupedSchemaControls(groups, keys, renderControl, renderOneOfPart) {
129
+ const groupsCleaned = groups.reduce((prev, group) => {
130
+ const itemsExistingInSchemaKeys = keys.filter((key) => [...(group.items || [])].includes(key));
131
+ prev.push(Object.assign(Object.assign({}, group), { items: itemsExistingInSchemaKeys || [] }));
132
+ return prev;
133
+ }, []);
134
+ let defaultGroup = groupsCleaned.find((g) => g.default);
135
+ if (!defaultGroup) {
136
+ defaultGroup = { default: true, items: [] };
137
+ groupsCleaned.push(defaultGroup);
138
+ }
139
+ const zipGroupedItems = groupsCleaned.reduce((prev, group) => {
140
+ if (group === defaultGroup) {
141
+ return prev;
142
+ }
143
+ return [...prev, ...group.items];
144
+ }, []);
145
+ defaultGroup.items = keys.filter((key) => !zipGroupedItems.includes(key));
146
+ return repeat(groupsCleaned, (group) => {
147
+ const controls = html `${repeat(group.items, (key) => key, (key) => renderControl(key))}
148
+ ${group.default ? renderOneOfPart() : ''}`;
149
+ if (group.name) {
150
+ return html `<h2 class="group-title">${group.name}</h2>
151
+ ${controls}`;
152
+ }
153
+ return controls;
154
+ });
155
+ }
156
+ //# sourceMappingURL=schema-form-oneof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-form-oneof.js","sourceRoot":"","sources":["../../../src/lib/schema-form-oneof.js"],"names":[],"mappings":"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"}
@@ -1,5 +1,21 @@
1
- export function isCodemirror(control: any): any;
1
+ export function isCodemirror(control: any): boolean;
2
+ export function resolveSchemaNode(node: any, rootSchema: any, seen?: Set<any>): any;
3
+ export function normalizeControlForSchemaForm(control: any, seen?: Set<any>): any;
4
+ export function inferOneOfIndex(values: any, oneOf: any, rootSchema?: {}): number | null;
2
5
  export function isObject(control: any): boolean;
3
6
  export function isComplexArray(control: any): boolean;
4
7
  export function canInline(schema: any): boolean;
5
8
  export function canGrid(schema: any): boolean;
9
+ /**
10
+ * Returns validation errors that don't map to any single control: root
11
+ * oneOf/anyOf failures report property === 'instance' with an array argument.
12
+ * They would otherwise be silently dropped by gv-schema-form-control, leaving
13
+ * the user with no feedback on why the form is invalid.
14
+ */
15
+ export function getFormLevelErrors(errors: any): any[];
16
+ /**
17
+ * `jsonschema` builds error.argument as an array of JSON-stringified titles
18
+ * (e.g. '"My title "'). Surface them as a readable comma list rather than the
19
+ * raw `JSON.stringify`'d message.
20
+ */
21
+ export function formatFormLevelError(error: any): any;
@@ -14,7 +14,116 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  export function isCodemirror(control) {
17
- return control['x-schema-form'] && control['x-schema-form'].type === 'codemirror';
17
+ var _a;
18
+ return ((_a = control['x-schema-form']) === null || _a === void 0 ? void 0 : _a.type) === 'codemirror';
19
+ }
20
+ export function resolveSchemaNode(node, rootSchema, seen = new Set()) {
21
+ if (node == null || typeof node !== 'object') {
22
+ return node;
23
+ }
24
+ if (typeof node.$ref === 'string') {
25
+ const ref = node.$ref;
26
+ if (seen.has(ref)) {
27
+ return {};
28
+ }
29
+ seen.add(ref);
30
+ const path = ref.replace(/^#\//, '').split('/');
31
+ let target = rootSchema;
32
+ for (const segment of path) {
33
+ target = target === null || target === void 0 ? void 0 : target[segment];
34
+ }
35
+ const rest = Object.assign({}, node);
36
+ delete rest.$ref;
37
+ return resolveSchemaNode(Object.assign(Object.assign({}, target), rest), rootSchema, seen);
38
+ }
39
+ if (node.properties) {
40
+ const properties = {};
41
+ for (const [key, value] of Object.entries(node.properties)) {
42
+ properties[key] = resolveSchemaNode(value, rootSchema, new Set(seen));
43
+ }
44
+ return Object.assign(Object.assign({}, node), { properties });
45
+ }
46
+ if (node.items) {
47
+ return Object.assign(Object.assign({}, node), { items: resolveSchemaNode(node.items, rootSchema, new Set(seen)) });
48
+ }
49
+ return node;
50
+ }
51
+ const normalizedControls = new WeakMap();
52
+ export function normalizeControlForSchemaForm(control, seen = new Set()) {
53
+ var _a, _b, _c, _d;
54
+ if (control == null || typeof control !== 'object') {
55
+ return control;
56
+ }
57
+ const cached = normalizedControls.get(control);
58
+ if (cached) {
59
+ return cached;
60
+ }
61
+ if (seen.has(control)) {
62
+ return control;
63
+ }
64
+ seen.add(control);
65
+ let next = Object.assign({}, control);
66
+ if (next.format === 'gio-code-editor') {
67
+ const language = ((_b = (_a = next.gioConfig) === null || _a === void 0 ? void 0 : _a.monacoEditorConfig) === null || _b === void 0 ? void 0 : _b.language) || 'javascript';
68
+ const existing = next['x-schema-form'];
69
+ next = Object.assign(Object.assign({}, next), { 'x-schema-form': Object.assign(Object.assign({}, existing), { type: 'codemirror', codemirrorOptions: Object.assign({ mode: language, lineNumbers: true }, existing === null || existing === void 0 ? void 0 : existing.codemirrorOptions) }) });
70
+ }
71
+ if (((_c = next.gioConfig) === null || _c === void 0 ? void 0 : _c.uiType) === 'resource-type') {
72
+ const resourceType = (_d = next.gioConfig.uiTypeProps) === null || _d === void 0 ? void 0 : _d.resourceType;
73
+ const existing = next['x-schema-form'];
74
+ next = Object.assign(Object.assign({}, next), { 'x-schema-form': Object.assign(Object.assign({}, existing), { event: {
75
+ name: 'fetch-resources',
76
+ regexTypes: resourceType || '.*',
77
+ } }) });
78
+ }
79
+ if (next.type === 'object' && next.properties) {
80
+ const properties = {};
81
+ for (const [key, value] of Object.entries(next.properties)) {
82
+ properties[key] = normalizeControlForSchemaForm(value, seen);
83
+ }
84
+ next = Object.assign(Object.assign({}, next), { properties });
85
+ }
86
+ normalizedControls.set(control, next);
87
+ return next;
88
+ }
89
+ function matchesBranchDiscriminators(model, branch) {
90
+ const properties = branch.properties || {};
91
+ for (const [key, property] of Object.entries(properties)) {
92
+ if (property == null || typeof property !== 'object') {
93
+ continue;
94
+ }
95
+ if (Object.hasOwn(property, 'const') && model[key] != null && model[key] !== property.const) {
96
+ return false;
97
+ }
98
+ if (Array.isArray(property.enum) && model[key] != null && !property.enum.includes(model[key])) {
99
+ return false;
100
+ }
101
+ }
102
+ return true;
103
+ }
104
+ export function inferOneOfIndex(values, oneOf, rootSchema = {}) {
105
+ if (!Array.isArray(oneOf) || oneOf.length === 0) {
106
+ return null;
107
+ }
108
+ const model = values || {};
109
+ const resolved = oneOf.map((branch) => resolveSchemaNode(branch, rootSchema));
110
+ for (let i = 0; i < resolved.length; i++) {
111
+ const branch = resolved[i];
112
+ const required = branch.required || [];
113
+ if (required.length > 0 &&
114
+ required.every((key) => model[key] != null && model[key] !== '') &&
115
+ matchesBranchDiscriminators(model, branch)) {
116
+ return i;
117
+ }
118
+ }
119
+ for (let i = 0; i < resolved.length; i++) {
120
+ const props = Object.keys(resolved[i].properties || {});
121
+ const exclusive = props.filter((key) => resolved.every((branch, j) => { var _a; return j === i || ((_a = branch.properties) === null || _a === void 0 ? void 0 : _a[key]) == null; }));
122
+ if (exclusive.some((key) => model[key] != null && model[key] !== '') && matchesBranchDiscriminators(model, resolved[i])) {
123
+ return i;
124
+ }
125
+ }
126
+ return null;
18
127
  }
19
128
  export function isObject(control) {
20
129
  return control.type === 'object';
@@ -37,4 +146,43 @@ export function canGrid(schema) {
37
146
  const keys = Object.keys(schema.properties || {});
38
147
  return keys.length > 2 && keys.filter((key) => _canInline(schema, key)).length === keys.length;
39
148
  }
149
+ const FORM_LEVEL_PREFIXES = {
150
+ oneOf: 'Select exactly one of',
151
+ anyOf: 'Select at least one of',
152
+ };
153
+ /**
154
+ * Returns validation errors that don't map to any single control: root
155
+ * oneOf/anyOf failures report property === 'instance' with an array argument.
156
+ * They would otherwise be silently dropped by gv-schema-form-control, leaving
157
+ * the user with no feedback on why the form is invalid.
158
+ */
159
+ export function getFormLevelErrors(errors) {
160
+ if (!Array.isArray(errors))
161
+ return [];
162
+ return errors.filter((error) => (error === null || error === void 0 ? void 0 : error.property) === 'instance' && (error.name === 'oneOf' || error.name === 'anyOf') && Array.isArray(error.argument));
163
+ }
164
+ /**
165
+ * `jsonschema` builds error.argument as an array of JSON-stringified titles
166
+ * (e.g. '"My title "'). Surface them as a readable comma list rather than the
167
+ * raw `JSON.stringify`'d message.
168
+ */
169
+ export function formatFormLevelError(error) {
170
+ const titles = error.argument
171
+ .map(stripJsonStringifyWrap)
172
+ .map((title) => title.trim())
173
+ .filter((title) => title.length > 0);
174
+ if (titles.length === 0) {
175
+ return error.message;
176
+ }
177
+ const prefix = FORM_LEVEL_PREFIXES[error.name];
178
+ return prefix ? `${prefix}: ${titles.join(', ')}` : titles.join(', ');
179
+ }
180
+ // Strips the surrounding double-quotes JSON.stringify(title) adds, while
181
+ // leaving non-string entries (e.g. '<#/defs/Foo>', '[subschema 0]') intact.
182
+ function stripJsonStringifyWrap(entry) {
183
+ if (typeof entry !== 'string')
184
+ return String(entry);
185
+ const match = /^"(.*)"$/s.exec(entry);
186
+ return match ? match[1] : entry;
187
+ }
40
188
  //# sourceMappingURL=schema-form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-form.js","sourceRoot":"","sources":["../../../src/lib/schema-form.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,OAAO;IAClC,OAAO,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAO;IAC9B,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAO;IACpC,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAM;IAC9B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;IACnG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,MAAM,EAAE,GAAG;IAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,MAAM;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;AACjG,CAAC"}
1
+ {"version":3,"file":"schema-form.js","sourceRoot":"","sources":["../../../src/lib/schema-form.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shared root-oneOf behaviour for gv-schema-form and gv-schema-form-group.
3
+ * Hosts must implement `_getSchemaFormModel()` and `_afterOneOfBranchChange()`.
4
+ * @mixinFunction
5
+ */
6
+ export function SchemaFormOneOf(ParentClass: any): {
7
+ new (): {
8
+ [x: string]: any;
9
+ _selectedOneOfIndex: any;
10
+ _getSchemaFormModel(): void;
11
+ _afterOneOfBranchChange(): void;
12
+ _syncOneOfIndex(forceReinfer?: boolean): void;
13
+ willUpdate(changedProperties: any): void;
14
+ _onOneOfSelect(e: any): void;
15
+ _renderControl(key: any, controlOverride?: null, requiredOverride?: null): import("lit-html").TemplateResult<1>;
16
+ _renderOneOfPart(): import("lit-html").TemplateResult<1>;
17
+ };
18
+ [x: string]: any;
19
+ get properties(): any;
20
+ };
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { get } from 'object-path';
17
+ import { renderRootOneOfPart, renderSchemaFormControl, switchOneOfBranch, syncSelectedOneOfIndex } from '../lib/schema-form-oneof';
18
+ /**
19
+ * Shared root-oneOf behaviour for gv-schema-form and gv-schema-form-group.
20
+ * Hosts must implement `_getSchemaFormModel()` and `_afterOneOfBranchChange()`.
21
+ * @mixinFunction
22
+ */
23
+ export function SchemaFormOneOf(ParentClass) {
24
+ /**
25
+ * @mixinClass
26
+ */
27
+ return class extends ParentClass {
28
+ static get properties() {
29
+ return Object.assign(Object.assign({}, super.properties), { _selectedOneOfIndex: { type: Number, attribute: false } });
30
+ }
31
+ constructor() {
32
+ super();
33
+ this._selectedOneOfIndex = null;
34
+ }
35
+ _getSchemaFormModel() {
36
+ throw new Error('_getSchemaFormModel() must be implemented');
37
+ }
38
+ _afterOneOfBranchChange() {
39
+ throw new Error('_afterOneOfBranchChange() must be implemented');
40
+ }
41
+ _syncOneOfIndex(forceReinfer = false) {
42
+ var _a;
43
+ this._selectedOneOfIndex = syncSelectedOneOfIndex(this._getSchemaFormModel(), (_a = this.schema) === null || _a === void 0 ? void 0 : _a.oneOf, forceReinfer ? null : this._selectedOneOfIndex, this.schema);
44
+ }
45
+ willUpdate(changedProperties) {
46
+ var _a;
47
+ if (changedProperties.has('schema')) {
48
+ this._syncOneOfIndex(true);
49
+ }
50
+ (_a = super.willUpdate) === null || _a === void 0 ? void 0 : _a.call(this, changedProperties);
51
+ }
52
+ _onOneOfSelect(e) {
53
+ var _a;
54
+ const next = Number(e.target.value);
55
+ if (Number.isNaN(next)) {
56
+ return;
57
+ }
58
+ const oneOf = (_a = this.schema) === null || _a === void 0 ? void 0 : _a.oneOf;
59
+ if (!Array.isArray(oneOf) || oneOf[next] == null) {
60
+ return;
61
+ }
62
+ const previous = this._selectedOneOfIndex;
63
+ this._selectedOneOfIndex = switchOneOfBranch(this._getSchemaFormModel(), oneOf, previous, next, this.schema);
64
+ if (this._selectedOneOfIndex !== previous) {
65
+ this._afterOneOfBranchChange();
66
+ }
67
+ }
68
+ _renderControl(key, controlOverride = null, requiredOverride = null) {
69
+ return renderSchemaFormControl({
70
+ key,
71
+ controlOverride,
72
+ requiredOverride,
73
+ schema: this.schema,
74
+ errors: this.errors,
75
+ skeleton: this.skeleton,
76
+ readonly: this.readonly,
77
+ value: get(this._getSchemaFormModel(), key),
78
+ evaluateCondition: (control, attribute) => this._evaluateCondition(control, attribute),
79
+ onHidden: (hiddenKey) => this._ignoreProperties.push(hiddenKey),
80
+ });
81
+ }
82
+ _renderOneOfPart() {
83
+ return renderRootOneOfPart({
84
+ schema: this.schema,
85
+ selectedIndex: this._selectedOneOfIndex,
86
+ readonly: this.readonly,
87
+ onSelect: this._onOneOfSelect.bind(this),
88
+ renderControl: this._renderControl.bind(this),
89
+ });
90
+ }
91
+ };
92
+ }
93
+ //# sourceMappingURL=schema-form-oneof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-form-oneof.js","sourceRoot":"","sources":["../../../src/mixins/schema-form-oneof.js"],"names":[],"mappings":"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"}
@@ -1,3 +1,18 @@
1
+ declare const GvSchemaForm_base: {
2
+ new (): {
3
+ [x: string]: any;
4
+ _selectedOneOfIndex: any;
5
+ _getSchemaFormModel(): void;
6
+ _afterOneOfBranchChange(): void;
7
+ _syncOneOfIndex(forceReinfer?: boolean): void;
8
+ willUpdate(changedProperties: any): void;
9
+ _onOneOfSelect(e: any): void;
10
+ _renderControl(key: any, controlOverride?: null, requiredOverride?: null): import("lit-html").TemplateResult<1>;
11
+ _renderOneOfPart(): import("lit-html").TemplateResult<1>;
12
+ };
13
+ [x: string]: any;
14
+ get properties(): any;
15
+ };
1
16
  /**
2
17
  * Schema form component
3
18
  *
@@ -16,69 +31,7 @@
16
31
  * @cssprop {Color} [--gv-schema-form--bgc=#ffffff] - Background color
17
32
  * @cssprop {Length} [--gv-schema-form-control--m=0.4rem] - Control margin
18
33
  */
19
- export class GvSchemaForm extends LitElement {
20
- static get properties(): {
21
- schema: {
22
- type: ObjectConstructor;
23
- };
24
- errors: {
25
- type: ObjectConstructor;
26
- };
27
- values: {
28
- type: ObjectConstructor;
29
- };
30
- submitLabel: {
31
- type: StringConstructor;
32
- };
33
- hasFooter: {
34
- type: BooleanConstructor;
35
- attribute: string;
36
- };
37
- hasHeader: {
38
- type: BooleanConstructor;
39
- attribute: string;
40
- };
41
- _confirm: {
42
- type: ObjectConstructor;
43
- };
44
- _values: {
45
- type: ObjectConstructor;
46
- attribute: boolean;
47
- };
48
- dirty: {
49
- type: BooleanConstructor;
50
- reflect: boolean;
51
- };
52
- hideDeprecated: {
53
- type: BooleanConstructor;
54
- attribute: string;
55
- };
56
- validateOnRender: {
57
- type: BooleanConstructor;
58
- attribute: string;
59
- };
60
- _validatorResults: {
61
- type: ObjectConstructor;
62
- };
63
- skeleton: {
64
- type: BooleanConstructor;
65
- reflect: boolean;
66
- };
67
- touch: {
68
- type: BooleanConstructor;
69
- };
70
- readonly: {
71
- type: BooleanConstructor;
72
- reflect: boolean;
73
- };
74
- scrollable: {
75
- type: BooleanConstructor;
76
- reflect: boolean;
77
- };
78
- groups: {
79
- type: ArrayConstructor;
80
- };
81
- };
34
+ export class GvSchemaForm extends GvSchemaForm_base {
82
35
  static get styles(): import("lit").CSSResult[];
83
36
  hideDeprecated: boolean;
84
37
  _values: {};
@@ -92,6 +45,7 @@ export class GvSchemaForm extends LitElement {
92
45
  _dynamicControls: any[];
93
46
  _dynamicAttributes: string[];
94
47
  groups: any;
48
+ _getSchemaFormModel(): {};
95
49
  set values(values: {});
96
50
  get values(): {};
97
51
  _initialValues: any;
@@ -113,8 +67,8 @@ export class GvSchemaForm extends LitElement {
113
67
  } | null | undefined;
114
68
  _onConfirmReset(): void;
115
69
  _onConfirmEdit(): void;
116
- _getSubmitBtn(): Element | null;
117
- _getResetBtn(): Element | null;
70
+ _getSubmitBtn(): any;
71
+ _getResetBtn(): any;
118
72
  _dispatchChange(): void;
119
73
  _changeTimeout: NodeJS.Timeout | undefined;
120
74
  _onDefaultValue({ detail: { currentTarget, value, control } }: {
@@ -135,7 +89,6 @@ export class GvSchemaForm extends LitElement {
135
89
  _updateDynamicControls(): void;
136
90
  _updateDynamicControl(controlElement: any): null;
137
91
  performUpdate(): Promise<void>;
138
- _renderControl(key: any): import("lit-html").TemplateResult<1>;
139
92
  _hasCondition(control: any): boolean;
140
93
  _evaluateCondition(control: any, conditionKey: any): boolean;
141
94
  _evaluateNotEqualsCondition(control: any, condition: any): boolean;
@@ -143,8 +96,8 @@ export class GvSchemaForm extends LitElement {
143
96
  _evaluateNotDefCondition(control: any, condition: any): boolean;
144
97
  _evaluateDefCondition(control: any, condition: any): boolean;
145
98
  _renderPart(): unknown;
146
- getControls(): Element[];
147
- getControl(id: any): Element | null;
99
+ getControls(): any[];
100
+ getControl(id: any): any;
148
101
  _getErrors(): any;
149
102
  validate(): {};
150
103
  errors: any;
@@ -155,7 +108,8 @@ export class GvSchemaForm extends LitElement {
155
108
  _updateChildren(withValidation: any): void;
156
109
  _updateActionsTimeout: NodeJS.Timeout | undefined;
157
110
  updated(changedProperties: any): Promise<void>;
111
+ getUpdateComplete(): Promise<boolean>;
158
112
  render(): import("lit-html").TemplateResult<1>;
159
113
  }
160
- import { LitElement } from 'lit';
161
114
  import { Validator } from 'jsonschema';
115
+ export {};