Skip to content

Commit e3455b4

Browse files
yaffolsdirix
andcommitted
feat: add touch error filtering
This commit adds a touched ref that is bound to controls from `useVuetifyControl` and a `handleBlur` composable that updates the `touched` state after an input is blurred. It also takes account of a new config setting `enableFilterErrorsBeforeTouch` which allows the forcing of all errors to display, such as when a user attempts to submit a form which is not completely valid. When `touched` is used, child errors in arrays will be filtered without checking their respective touched state. Co-authored-by: Stefan Dirix <sdirix@eclipsesource.com>
1 parent cf808ce commit e3455b4

22 files changed

+95
-49
lines changed

packages/vue-vuetify/src/complex/OneOfRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
item-value="index"
2727
v-model="selectIndex"
2828
v-bind="vuetifyProps('v-select')"
29-
@focus="isFocused = true"
30-
@blur="isFocused = false"
29+
@focus="handleFocus"
30+
@blur="handleBlur"
3131
></v-select>
3232
</v-hover>
3333
<dispatch-renderer

packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
:clearable="isHovering"
3232
v-bind="vuetifyProps('v-combobox')"
3333
@change="onChange"
34-
@focus="isFocused = true"
35-
@blur="isFocused = false"
34+
@focus="handleFocus"
35+
@blur="handleBlur"
3636
/>
3737
</v-hover>
3838
</control-wrapper>

packages/vue-vuetify/src/controls/BooleanControlRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
:model-value="control.data"
2121
v-bind="vuetifyProps('v-checkbox')"
2222
@change="onChange"
23-
@focus="isFocused = true"
24-
@blur="isFocused = false"
23+
@focus="handleFocus"
24+
@blur="handleBlur"
2525
/>
2626
</control-wrapper>
2727
</template>

packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
:false-value="false"
2323
v-bind="vuetifyProps('v-switch')"
2424
@change="onChange"
25-
@focus="isFocused = true"
26-
@blur="isFocused = false"
25+
@focus="handleFocus"
26+
@blur="handleBlur"
2727
/>
2828
</control-wrapper>
2929
</template>

packages/vue-vuetify/src/controls/DateControlRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
v-bind="vuetifyProps('v-text-field')"
2020
:model-value="control.data"
2121
@update:model-value="onChange"
22-
@focus="isFocused = true"
23-
@blur="isFocused = false"
22+
@focus="handleFocus"
23+
@blur="handleBlur"
2424
type="date"
2525
/>
2626
</control-wrapper>

packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
v-bind="vuetifyProps('v-text-field')"
2020
:model-value="dataTime"
2121
@update:model-value="onChange"
22-
@focus="isFocused = true"
23-
@blur="isFocused = false"
22+
@focus="handleFocus"
23+
@blur="handleBlur"
2424
type="datetime-local"
2525
>
2626
</v-text-field>

packages/vue-vuetify/src/controls/EnumControlRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
item-value="value"
2626
v-bind="vuetifyProps('v-select')"
2727
@update:modelValue="onChange"
28-
@focus="isFocused = true"
29-
@blur="isFocused = false"
28+
@focus="handleFocus"
29+
@blur="handleBlur"
3030
/>
3131
</v-hover>
3232
</control-wrapper>

packages/vue-vuetify/src/controls/IntegerControlRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
:clearable="isHovering"
2424
v-bind="vuetifyProps('v-text-field')"
2525
@update:model-value="onInputChange"
26-
@focus="isFocused = true"
27-
@blur="isFocused = false"
26+
@focus="handleFocus"
27+
@blur="handleBlur"
2828
></v-text-field>
2929
</v-hover>
3030
</control-wrapper>

packages/vue-vuetify/src/controls/MultiStringControlRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
multi-line
3232
v-bind="vuetifyProps('v-textarea')"
3333
@update:model-value="onChange"
34-
@focus="isFocused = true"
35-
@blur="isFocused = false"
34+
@focus="handleFocus"
35+
@blur="handleBlur"
3636
/>
3737
</v-hover>
3838
</control-wrapper>

packages/vue-vuetify/src/controls/NumberControlRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
:clearable="isHovering"
2424
v-bind="vuetifyProps('v-text-field')"
2525
@update:model-value="onInputChange"
26-
@focus="isFocused = true"
27-
@blur="isFocused = false"
26+
@focus="handleFocus"
27+
@blur="handleBlur"
2828
></v-text-field>
2929
</v-hover>
3030
</control-wrapper>

0 commit comments

Comments
 (0)