diff --git a/src/composables/useQuestion.ts b/src/composables/useQuestion.ts index c7a140bf1..e82281264 100644 --- a/src/composables/useQuestion.ts +++ b/src/composables/useQuestion.ts @@ -209,14 +209,24 @@ export function useQuestion(props: QuestionPropsLike, options: UseQuestionOption saveQuestionProperty('isRequired', isRequiredValue) }, INPUT_DEBOUNCE_MS) - const onExtraSettingsChange = debounce(function ( - newSettings: Record, - ) { - const newExtraSettings = { ...props.extraSettings, ...newSettings } + let pendingExtraSettings: Record = {} + const saveExtraSettings = debounce(function () { + const newExtraSettings = { ...props.extraSettings, ...pendingExtraSettings } + pendingExtraSettings = {} options.emit('update:extraSettings', newExtraSettings) saveQuestionProperty('extraSettings', newExtraSettings) }, INPUT_DEBOUNCE_MS) + /** + * Save changed extra settings; changes within the debounce time are saved together + * + * @param newSettings the changed extra settings + */ + const onExtraSettingsChange = (newSettings: Record): void => { + pendingExtraSettings = { ...pendingExtraSettings, ...newSettings } + saveExtraSettings() + } + const onNameChange = debounce(function (name: string) { options.emit('update:name', name) saveQuestionProperty('name', name)