diff --git a/frontend/src/lib/common.ts b/frontend/src/lib/common.ts index 94d2090665..9bd03af131 100644 --- a/frontend/src/lib/common.ts +++ b/frontend/src/lib/common.ts @@ -46,6 +46,7 @@ export interface SchemaProperty { title?: string placeholder?: string oneOf?: SchemaProperty[] + originalType?: string } export interface ModalSchemaProperty { diff --git a/frontend/src/lib/components/StringTypeNarrowing.svelte b/frontend/src/lib/components/StringTypeNarrowing.svelte index 40e3b645eb..76acf833e4 100644 --- a/frontend/src/lib/components/StringTypeNarrowing.svelte +++ b/frontend/src/lib/components/StringTypeNarrowing.svelte @@ -24,8 +24,8 @@ export let noExtra = false export let dateFormat: string | undefined export let enumLabels: Record = {} - export let allowKindChange: boolean = true - export let allowAddingOrDeletingEnumValues: boolean = true + export let overrideAllowKindChange: boolean = true + export let originalType: string | undefined = undefined let kind: 'none' | 'pattern' | 'enum' | 'resource' | 'format' | 'base64' = computeKind( enum_, @@ -34,6 +34,8 @@ format ) + const allowKindChange = overrideAllowKindChange || originalType === 'string' + let patternStr: string = pattern ?? '' let resource: string | undefined @@ -204,13 +206,13 @@ /> {/if} - {#if allowAddingOrDeletingEnumValues} + {#if allowKindChange} {/if} {/each} - {#if allowAddingOrDeletingEnumValues} + {#if allowKindChange}
diff --git a/frontend/src/lib/components/schema/PropertyEditor.svelte b/frontend/src/lib/components/schema/PropertyEditor.svelte index aa22a360c3..0d81460ead 100644 --- a/frontend/src/lib/components/schema/PropertyEditor.svelte +++ b/frontend/src/lib/components/schema/PropertyEditor.svelte @@ -148,8 +148,8 @@ bind:disableVariablePicker={extra['disableVariablePicker']} bind:dateFormat={extra['dateFormat']} bind:enumLabels={extra['enumLabels']} - allowKindChange={isFlowInput || isAppInput} - allowAddingOrDeletingEnumValues={isFlowInput || isAppInput} + originalType={extra['originalType']} + overrideAllowKindChange={isFlowInput || isAppInput} /> {:else if type == 'number' || type == 'integer'}