From 90d0fbc12af9ee0ad79e9cab7e3ac89324c46795 Mon Sep 17 00:00:00 2001 From: Ben Merritt Date: Mon, 5 Dec 2022 15:54:19 -0800 Subject: [PATCH 1/5] fix: make controls respond to the `invalid` event Rather than emitting `invalid` events on blur, we should be listening for them. --- packages/docs-next/components/Autocomplete.md | 1 + packages/docs-next/components/Datepicker.md | 1 + packages/docs-next/components/Datetimepicker.md | 1 + packages/docs-next/components/Input.md | 1 + packages/docs-next/components/Inputitems.md | 1 + packages/docs-next/components/Select.md | 1 + packages/docs-next/components/Timepicker.md | 1 + packages/docs/components/Autocomplete.md | 1 + packages/docs/components/Datepicker.md | 1 + packages/docs/components/Datetimepicker.md | 1 + packages/docs/components/Input.md | 1 + packages/docs/components/Inputitems.md | 1 + packages/docs/components/Select.md | 1 + packages/docs/components/Timepicker.md | 1 + .../src/components/autocomplete/Autocomplete.vue | 3 ++- .../oruga-next/src/components/datepicker/Datepicker.vue | 5 +++-- .../src/components/datetimepicker/Datetimepicker.vue | 5 +++-- packages/oruga-next/src/components/input/Input.vue | 6 ++++-- .../oruga-next/src/components/inputitems/Inputitems.vue | 3 ++- packages/oruga-next/src/components/select/Select.vue | 5 +++-- .../oruga-next/src/components/timepicker/Timepicker.vue | 4 +++- packages/oruga-next/src/utils/FormElementMixin.ts | 7 ++++++- .../oruga/src/components/autocomplete/Autocomplete.vue | 1 + packages/oruga/src/components/datepicker/Datepicker.vue | 3 ++- .../oruga/src/components/datetimepicker/Datetimepicker.vue | 3 ++- packages/oruga/src/components/input/Input.vue | 4 +++- packages/oruga/src/components/inputitems/Inputitems.vue | 1 + packages/oruga/src/components/select/Select.vue | 3 ++- packages/oruga/src/components/timepicker/Timepicker.vue | 3 ++- packages/oruga/src/utils/FormElementMixin.js | 7 ++++++- 30 files changed, 59 insertions(+), 18 deletions(-) diff --git a/packages/docs-next/components/Autocomplete.md b/packages/docs-next/components/Autocomplete.md index d49ebc162..0ff02a22a 100644 --- a/packages/docs-next/components/Autocomplete.md +++ b/packages/docs-next/components/Autocomplete.md @@ -73,6 +73,7 @@ title: Autocomplete | blur | | | focus | | | update:modelValue | | +| invalid | | | select | **selected** `Object` - selected option
**event** `Event` - native event | | infinite-scroll | | | typing | | diff --git a/packages/docs-next/components/Datepicker.md b/packages/docs-next/components/Datepicker.md index abb4fb753..2420186de 100644 --- a/packages/docs-next/components/Datepicker.md +++ b/packages/docs-next/components/Datepicker.md @@ -91,6 +91,7 @@ title: Datepicker | range-end | | | blur | | | focus | | +| invalid | | | update:modelValue | | | change-month | | | change-year | | diff --git a/packages/docs-next/components/Datetimepicker.md b/packages/docs-next/components/Datetimepicker.md index 725b0d9e2..d4aa50621 100644 --- a/packages/docs-next/components/Datetimepicker.md +++ b/packages/docs-next/components/Datetimepicker.md @@ -68,6 +68,7 @@ title: Datetimepicker | change-year | | | blur | | | focus | | +| invalid | | | update:modelValue | | ## Slots diff --git a/packages/docs-next/components/Input.md b/packages/docs-next/components/Input.md index 7e040ea49..62653898a 100644 --- a/packages/docs-next/components/Input.md +++ b/packages/docs-next/components/Input.md @@ -56,6 +56,7 @@ title: Input | ----------------- | ---------- | ----------- | | blur | | | focus | | +| invalid | | | update:modelValue | | | icon-click | | | icon-right-click | | diff --git a/packages/docs-next/components/Inputitems.md b/packages/docs-next/components/Inputitems.md index a9eb62021..524d6f554 100644 --- a/packages/docs-next/components/Inputitems.md +++ b/packages/docs-next/components/Inputitems.md @@ -71,6 +71,7 @@ title: Inputitems | icon-right-click | | | blur | | | focus | | +| invalid | | | update:modelValue | | | add | | | remove | | diff --git a/packages/docs-next/components/Select.md b/packages/docs-next/components/Select.md index 5fa55b149..cd160bdd3 100644 --- a/packages/docs-next/components/Select.md +++ b/packages/docs-next/components/Select.md @@ -51,6 +51,7 @@ title: Select | ----------------- | ---------- | ----------- | | blur | | | focus | | +| invalid | | | update:modelValue | | ## Slots diff --git a/packages/docs-next/components/Timepicker.md b/packages/docs-next/components/Timepicker.md index b92470aa9..33e863f06 100644 --- a/packages/docs-next/components/Timepicker.md +++ b/packages/docs-next/components/Timepicker.md @@ -69,6 +69,7 @@ title: Timepicker | ----------------- | ---------- | ----------- | | blur | | | focus | | +| invalid | | | update:modelValue | | ## Slots diff --git a/packages/docs/components/Autocomplete.md b/packages/docs/components/Autocomplete.md index e77c1a7ae..bd12913ea 100644 --- a/packages/docs/components/Autocomplete.md +++ b/packages/docs/components/Autocomplete.md @@ -512,6 +512,7 @@ export default { | blur | | | focus | | | input | | +| invalid | | | select | **selected** `Object` - selected option
**event** `Event` - native event | | select-header | | | select-footer | | diff --git a/packages/docs/components/Datepicker.md b/packages/docs/components/Datepicker.md index 9cde4aad5..07d930a84 100644 --- a/packages/docs/components/Datepicker.md +++ b/packages/docs/components/Datepicker.md @@ -1030,6 +1030,7 @@ export default { | blur | | | focus | | | input | | +| invalid | | | change-month | | | change-year | | | active-change | | diff --git a/packages/docs/components/Datetimepicker.md b/packages/docs/components/Datetimepicker.md index a7b142a50..28b7d6d14 100644 --- a/packages/docs/components/Datetimepicker.md +++ b/packages/docs/components/Datetimepicker.md @@ -246,6 +246,7 @@ export default { | blur | | | focus | | | input | | +| invalid | | ## Slots diff --git a/packages/docs/components/Input.md b/packages/docs/components/Input.md index 543989c99..7d4bd4bf5 100644 --- a/packages/docs/components/Input.md +++ b/packages/docs/components/Input.md @@ -280,6 +280,7 @@ export default { | blur | | | focus | | | input | | +| invalid | | ## Style diff --git a/packages/docs/components/Inputitems.md b/packages/docs/components/Inputitems.md index 16380ebae..2748cdd85 100644 --- a/packages/docs/components/Inputitems.md +++ b/packages/docs/components/Inputitems.md @@ -453,6 +453,7 @@ export default { | blur | | | focus | | | input | | +| invalid | | | add | | | typing | | | remove | | diff --git a/packages/docs/components/Select.md b/packages/docs/components/Select.md index 941f62605..fb4c58689 100644 --- a/packages/docs/components/Select.md +++ b/packages/docs/components/Select.md @@ -311,6 +311,7 @@ export default { | blur | | | focus | | | input | | +| invalid | | ## Slots diff --git a/packages/docs/components/Timepicker.md b/packages/docs/components/Timepicker.md index 2129eeab4..5bc60ab2c 100644 --- a/packages/docs/components/Timepicker.md +++ b/packages/docs/components/Timepicker.md @@ -331,6 +331,7 @@ export default { | blur | | | focus | | | input | | +| invalid | | ## Slots diff --git a/packages/oruga-next/src/components/autocomplete/Autocomplete.vue b/packages/oruga-next/src/components/autocomplete/Autocomplete.vue index 0da359b20..2c4152d11 100644 --- a/packages/oruga-next/src/components/autocomplete/Autocomplete.vue +++ b/packages/oruga-next/src/components/autocomplete/Autocomplete.vue @@ -19,6 +19,7 @@ @update:modelValue="onInput" @focus="focused" @blur="onBlur" + @invalid="onInvalid" @keydown="keydown" @keydown.up.prevent="keyArrows('up')" @keydown.down.prevent="keyArrows('down')" @@ -120,7 +121,7 @@ export default defineComponent({ }, mixins: [BaseComponentMixin, FormElementMixin], inheritAttrs: false, - emits: ['update:modelValue', 'select', 'infinite-scroll', 'typing', 'focus', 'blur', 'icon-click', 'icon-right-click'], + emits: ['update:modelValue', 'select', 'infinite-scroll', 'typing', 'focus', 'blur', 'invalid', 'icon-click', 'icon-right-click'], props: { /** @model */ modelValue: [Number, String], diff --git a/packages/oruga-next/src/components/datepicker/Datepicker.vue b/packages/oruga-next/src/components/datepicker/Datepicker.vue index ff77ea890..1175ba4f2 100644 --- a/packages/oruga-next/src/components/datepicker/Datepicker.vue +++ b/packages/oruga-next/src/components/datepicker/Datepicker.vue @@ -234,7 +234,8 @@ :use-html5-validation="false" @change="onChangeNativePicker" @focus="onFocus" - @blur="onBlur"/> + @blur="onBlur" + @invalid="onInvalid" /> @@ -331,7 +332,7 @@ export default defineComponent({ $datepicker: this } }, - emits: ['update:modelValue', 'focus', 'blur', 'change-month', 'change-year', 'range-start', 'range-end', 'active-change', 'icon-right-click'], + emits: ['update:modelValue', 'focus', 'blur', 'invalid', 'change-month', 'change-year', 'range-start', 'range-end', 'active-change', 'icon-right-click'], props: { modelValue: { type: [Date, Array] diff --git a/packages/oruga-next/src/components/datetimepicker/Datetimepicker.vue b/packages/oruga-next/src/components/datetimepicker/Datetimepicker.vue index f52f125cb..2555317c0 100644 --- a/packages/oruga-next/src/components/datetimepicker/Datetimepicker.vue +++ b/packages/oruga-next/src/components/datetimepicker/Datetimepicker.vue @@ -73,7 +73,8 @@ :use-html5-validation="useHtml5Validation" @change="onChangeNativePicker" @focus="onFocus" - @blur="onBlur"/> + @blur="onBlur" + @invalid="onInvalid" />