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 @@