diff --git a/packages/nc-gui/composables/useSharedFormViewStore.ts b/packages/nc-gui/composables/useSharedFormViewStore.ts
index 6247a326e4..0ed600eb21 100644
--- a/packages/nc-gui/composables/useSharedFormViewStore.ts
+++ b/packages/nc-gui/composables/useSharedFormViewStore.ts
@@ -7,6 +7,7 @@ import { isString } from '@vueuse/core'
import {
SharedViewPasswordInj,
computed,
+ createEventHook,
extractSdkResponseErrorMsg,
message,
provide,
@@ -33,6 +34,7 @@ const [useProvideSharedFormStore, useSharedFormStore] = useInjectionState((share
const meta = ref()
const columns = ref<(ColumnType & { required?: boolean; show?: boolean; label?: string })[]>()
const sharedViewMeta = ref({})
+ const formResetHook = createEventHook()
const { api, isLoading } = useApi()
@@ -179,6 +181,8 @@ const [useProvideSharedFormStore, useSharedFormStore] = useInjectionState((share
if (secondsRemain.value < 0) {
submitted.value = false
+ formResetHook.trigger()
+
clearInterval(intvl)
}
}, 1000)
@@ -211,6 +215,7 @@ const [useProvideSharedFormStore, useSharedFormStore] = useInjectionState((share
passwordDlg,
isLoading,
sharedViewMeta,
+ onReset: formResetHook.on,
}
}, 'expanded-form-store')
diff --git a/packages/nc-gui/pages/[projectType]/form/[viewId]/index/survey.vue b/packages/nc-gui/pages/[projectType]/form/[viewId]/index/survey.vue
index cef0f5cf4b..167a5481fe 100644
--- a/packages/nc-gui/pages/[projectType]/form/[viewId]/index/survey.vue
+++ b/packages/nc-gui/pages/[projectType]/form/[viewId]/index/survey.vue
@@ -22,7 +22,7 @@ enum TransitionDirection {
const { md } = useBreakpoints(breakpointsTailwind)
-const { v$, formState, formColumns, submitForm, submitted, secondsRemain, sharedFormView } = useSharedFormStoreOrThrow()
+const { v$, formState, formColumns, submitForm, submitted, secondsRemain, sharedFormView, onReset } = useSharedFormStoreOrThrow()
const isTransitioning = ref(false)
@@ -46,7 +46,7 @@ const steps = computed(() => {
}, [])
})
-const { index, goToPrevious, goToNext, isFirst, isLast } = useStepper(steps)
+const { index, goToPrevious, goToNext, isFirst, isLast, goTo } = useStepper(steps)
const field = computed(() => formColumns.value?.[index.value])
@@ -119,6 +119,15 @@ function focusInput() {
}
}
+function resetForm() {
+ v$.value.$reset()
+ submitted.value = false
+ transition(TransitionDirection.Right)
+ goTo(steps.value[0])
+}
+
+onReset(resetForm)
+
onKeyStroke(['ArrowLeft', 'ArrowDown'], goPrevious)
onKeyStroke(['ArrowRight', 'ArrowUp', 'Enter', 'Space'], goNext)
@@ -276,7 +285,7 @@ onMounted(() => {
-
Submit Another Form
+