mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-09 16:05:42 +00:00
fix: clear app form on submit option (#7428)
This commit is contained in:
@@ -111,6 +111,10 @@
|
||||
{id}
|
||||
doOnSuccess={resolvedConfig.onSuccess}
|
||||
doOnError={resolvedConfig.onError}
|
||||
clearFormInputs={{
|
||||
selected: resolvedConfig.clearFormInputs.selected,
|
||||
onClear: () => runnableComponent?.setArgs({})
|
||||
}}
|
||||
{errorHandledByComponent}
|
||||
{extraQueryParams}
|
||||
autoRefresh={false}
|
||||
|
||||
@@ -123,6 +123,10 @@
|
||||
{outputs}
|
||||
doOnSuccess={resolvedConfig.onSuccess}
|
||||
doOnError={resolvedConfig.onError}
|
||||
clearFormInputs={{
|
||||
selected: resolvedConfig.clearFormInputs.selected,
|
||||
onClear: () => runnableComponent?.setArgs({})
|
||||
}}
|
||||
{errorHandledByComponent}
|
||||
>
|
||||
{#if noInputs}
|
||||
|
||||
@@ -78,6 +78,10 @@
|
||||
doOnSuccess?: SideEffectAction
|
||||
doOnSubmit?: SideEffectAction
|
||||
doOnError?: SideEffectAction
|
||||
clearFormInputs?: {
|
||||
selected: 'never' | 'onSuccess' | 'onSubmit' | 'onError'
|
||||
onClear: () => void
|
||||
}
|
||||
render: boolean
|
||||
recomputeIds?: string[]
|
||||
outputs: {
|
||||
@@ -115,6 +119,7 @@
|
||||
doOnSuccess = undefined,
|
||||
doOnSubmit = undefined,
|
||||
doOnError = undefined,
|
||||
clearFormInputs,
|
||||
render,
|
||||
recomputeIds = [],
|
||||
outputs,
|
||||
@@ -194,6 +199,10 @@
|
||||
}
|
||||
|
||||
async function handleSubmitSideEffect() {
|
||||
if (clearFormInputs) {
|
||||
if (clearFormInputs.selected === 'onSubmit') clearFormInputs.onClear()
|
||||
}
|
||||
|
||||
if (!doOnSubmit) return
|
||||
|
||||
if (doOnSubmit.selected == 'none') return
|
||||
@@ -202,6 +211,10 @@
|
||||
}
|
||||
|
||||
export async function handleSideEffect(success: boolean, errorMessage?: string) {
|
||||
if (clearFormInputs) {
|
||||
if (!success && clearFormInputs.selected === 'onError') clearFormInputs.onClear()
|
||||
if (success && clearFormInputs.selected === 'onSuccess') clearFormInputs.onClear()
|
||||
}
|
||||
const sideEffect = success ? doOnSuccess : doOnError
|
||||
|
||||
if (recomputeIds && success) {
|
||||
@@ -214,7 +227,11 @@
|
||||
await executeSideEffect(sideEffect, success, errorMessage)
|
||||
}
|
||||
|
||||
async function executeSideEffect(sideEffect: SideEffectAction, success: boolean = true, errorMessage?: string) {
|
||||
async function executeSideEffect(
|
||||
sideEffect: SideEffectAction,
|
||||
success: boolean = true,
|
||||
errorMessage?: string
|
||||
) {
|
||||
if (!sideEffect) return
|
||||
|
||||
switch (sideEffect.selected) {
|
||||
|
||||
@@ -820,6 +820,24 @@ const onErrorClick = {
|
||||
}
|
||||
} as const
|
||||
|
||||
const clearFormInputs = {
|
||||
type: 'oneOf',
|
||||
tooltip: 'When to clear the form inputs',
|
||||
selected: 'never',
|
||||
labels: {
|
||||
never: 'Never',
|
||||
onSuccess: 'On success',
|
||||
onSubmit: 'On submit',
|
||||
onError: 'On error'
|
||||
},
|
||||
configuration: {
|
||||
never: {},
|
||||
onSuccess: {},
|
||||
onSubmit: {},
|
||||
onError: {}
|
||||
}
|
||||
} as const
|
||||
|
||||
const paginationOneOf = {
|
||||
type: 'oneOf',
|
||||
selected: 'auto',
|
||||
@@ -1728,7 +1746,8 @@ export const components = {
|
||||
},
|
||||
onSuccess: onSuccessClick,
|
||||
onSubmit: onSubmitClick,
|
||||
onError: onErrorClick
|
||||
onError: onErrorClick,
|
||||
clearFormInputs
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1779,6 +1798,7 @@ export const components = {
|
||||
onSuccess: onSuccessClick,
|
||||
onSubmit: onSubmitClick,
|
||||
onError: onErrorClick,
|
||||
clearFormInputs,
|
||||
disabled: {
|
||||
fieldType: 'boolean',
|
||||
type: 'static',
|
||||
|
||||
Reference in New Issue
Block a user