diff --git a/frontend/src/lib/common.ts b/frontend/src/lib/common.ts index 199c40b18f..b7a47704e6 100644 --- a/frontend/src/lib/common.ts +++ b/frontend/src/lib/common.ts @@ -38,6 +38,7 @@ export interface SchemaProperty { required?: string[] showExpr?: string password?: boolean + order?: string[] } export interface ModalSchemaProperty { diff --git a/frontend/src/lib/components/SchemaEditor.svelte b/frontend/src/lib/components/SchemaEditor.svelte index db438d14d1..1d23741577 100644 --- a/frontend/src/lib/components/SchemaEditor.svelte +++ b/frontend/src/lib/components/SchemaEditor.svelte @@ -105,6 +105,9 @@ if (!schema.required) { schema.required = [] } + if (!schema.order || !Array.isArray(schema.order)) { + syncOrders() + } schema.properties[modalProperty.name] = modalToSchema(modalProperty) if (modalProperty.required) { if (!schema.required.includes(modalProperty.name)) { @@ -118,8 +121,15 @@ } if (editing && oldArgName && oldArgName !== modalProperty.name) { + let oldPosition = schema.order.indexOf(oldArgName) + schema.order[oldPosition] = modalProperty.name + reorder() handleDeleteArgument([oldArgName]) } + + if (!schema.order?.includes(modalProperty.name)) { + schema.order.push(modalProperty.name) + } modalProperty = Object.assign({}, DEFAULT_PROPERTY) editing = false oldArgName = undefined @@ -128,7 +138,6 @@ } schema = schema - syncOrders() schemaString = JSON.stringify(schema, null, '\t') jsonEditor?.setCode(schemaString) dispatch('change', schema) @@ -177,7 +186,9 @@ delete modifiedProperties[argName] modifiedObject.required = schema.required.filter((arg) => arg !== argName) - + if (modifiedObject.order) { + modifiedObject.order = modifiedObject.order.filter((arg) => arg !== argName) + } schema = schema schemaString = JSON.stringify(schema, null, '\t') dispatch('change', schema) @@ -216,6 +227,7 @@ entries.splice(i, 1) entries.splice(up ? i - 1 : i + 1, 0, element) schema.properties = Object.fromEntries(entries) + syncOrders() }