diff --git a/frontend/src/lib/common.ts b/frontend/src/lib/common.ts index 01d8a8ed3a..6521b83713 100644 --- a/frontend/src/lib/common.ts +++ b/frontend/src/lib/common.ts @@ -6,6 +6,15 @@ export type ActionKind = 'Create' | 'Update' | 'Delete' | 'Execute' export type SupportedLanguage = Script.language +export interface PropertyDisplayInfo { + property: SchemaProperty + name: string + isRequired: boolean + path: string[] + index: number + propertiesNumber: number +} + export interface SchemaProperty { type: string | undefined description?: string @@ -16,6 +25,7 @@ export interface SchemaProperty { format?: string items?: { type?: 'string' | 'number' | 'bytes' | 'object'; contentEncoding?: 'base64' } properties?: { [name: string]: SchemaProperty } + required?: string[] } export type Schema = { diff --git a/frontend/src/lib/components/PropertyRow.svelte b/frontend/src/lib/components/PropertyRow.svelte new file mode 100644 index 0000000000..80677d3422 --- /dev/null +++ b/frontend/src/lib/components/PropertyRow.svelte @@ -0,0 +1,90 @@ + + + + + {displayInfo.name} + + + + + + +{#if !lightMode} + {displayInfo.property.default ? JSON.stringify(displayInfo.property.default) : ''} + {displayInfo.property.description ?? ''} +{/if} + + + {#if depth === 0} + {#if displayInfo.index > 0} + + {/if} + {#if displayInfo.index < displayInfo.propertiesNumber - 1} + + {/if} + + + {/if} + + diff --git a/frontend/src/lib/components/SchemaEditor.svelte b/frontend/src/lib/components/SchemaEditor.svelte index 2a3cf1543c..aa5820de4e 100644 --- a/frontend/src/lib/components/SchemaEditor.svelte +++ b/frontend/src/lib/components/SchemaEditor.svelte @@ -1,12 +1,12 @@
@@ -163,7 +230,7 @@ - {/if} - {#if i < Object.keys(schema.properties).length - 1} - - {/if} - - - - + {#each schemaPropertiesToDisplay(schema) as displayInfo (displayInfoKey(displayInfo))} + + {/each}