From 5661b79d2f733ce0e20b0e43df254183b93d0900 Mon Sep 17 00:00:00 2001 From: Alvaro Saburido Date: Sat, 19 Dec 2020 07:55:51 +0100 Subject: [PATCH] fix: removed all warnings --- dev/vue/App.vue | 2 +- .../checkbox-input/CheckboxInput.vue | 1 + src/components/dynamic-form/DynamicForm.vue | 21 ++++--- src/components/dynamic-input/DynamicInput.vue | 7 ++- src/components/number-input/NumberInput.vue | 1 + src/components/radio-input/RadioInput.vue | 1 + src/components/select-input/SelectInput.vue | 1 + .../text-area-input/TextAreaInput.vue | 1 + src/components/text-input/TextInput.vue | 1 + src/composables/input-events.ts | 8 ++- src/composables/use-debounce.ts | 55 +++++++++++++++++++ src/core/models.ts | 6 +- 12 files changed, 89 insertions(+), 16 deletions(-) create mode 100644 src/composables/use-debounce.ts diff --git a/dev/vue/App.vue b/dev/vue/App.vue index 0ee4593..fa265d3 100644 --- a/dev/vue/App.vue +++ b/dev/vue/App.vue @@ -6,7 +6,7 @@
diff --git a/src/components/checkbox-input/CheckboxInput.vue b/src/components/checkbox-input/CheckboxInput.vue index af07ce4..43284e8 100644 --- a/src/components/checkbox-input/CheckboxInput.vue +++ b/src/components/checkbox-input/CheckboxInput.vue @@ -14,6 +14,7 @@ const props = { export default defineComponent({ name: 'asCheckboxInput', + inheritAttrs: false, props, setup(props, { emit }) { const { onCheck, onFocus, onBlur } = useInputEvents(props, emit); diff --git a/src/components/dynamic-form/DynamicForm.vue b/src/components/dynamic-form/DynamicForm.vue index f9c8dea..cef5d6d 100644 --- a/src/components/dynamic-form/DynamicForm.vue +++ b/src/components/dynamic-form/DynamicForm.vue @@ -11,7 +11,6 @@ v-for="control in controls" :key="control.name" :control="control" - :submited="submited" :forceValidation="forceValidation" @change="valueChange" @blur="onBlur" @@ -61,15 +60,12 @@ import { InputType, ValidationEvent, InputEvent, + FormChanges, } from '@/core/models'; import { dynamicFormsSymbol } from '@/useApi'; -import { - deepClone, - hasValue, - isEvent, - removeEmpty, -} from '@/core/utils/helpers'; +import { deepClone, hasValue, removeEmpty } from '@/core/utils/helpers'; import { FieldControl } from '@/core/factories'; +import { useDebounceFn } from '@/composables/use-debounce'; const props = { form: { @@ -86,6 +82,7 @@ const components = { */ export default defineComponent({ name: 'asDynamicForm', + inheritAttrs: false, props, components, setup(props, ctx) { @@ -197,14 +194,20 @@ export default defineComponent({ return updatedCtrl; } - function valueChange(event: any) { + function emitChanges(changes: FormChanges) { + ctx.emit('change', changes); + } + + const debounceEmitChanges = useDebounceFn(emitChanges, 300); + + function valueChange(event: InputEvent) { if (hasValue(event.value)) { const updatedCtrl = findControlByName(event.name); if (updatedCtrl) { updatedCtrl.value = event.value as string; updatedCtrl.dirty = true; } - ctx.emit('change', formValues.value); + debounceEmitChanges(formValues.value); } } diff --git a/src/components/dynamic-input/DynamicInput.vue b/src/components/dynamic-input/DynamicInput.vue index ab4206c..dd9dc6f 100644 --- a/src/components/dynamic-input/DynamicInput.vue +++ b/src/components/dynamic-input/DynamicInput.vue @@ -1,7 +1,7 @@