diff --git a/docs/content/api/events.md b/docs/content/api/events.md index a31420600..df2d5a042 100644 --- a/docs/content/api/events.md +++ b/docs/content/api/events.md @@ -25,6 +25,14 @@ Triggered when the dropdown is closed. this.$emit("close"); ``` +## `clear` + +Triggered when clear button clicked, cleared value passed as an argument. + +```js +this.$emit("clear", selectedOption); +``` + ## `option:selecting` Triggered after an option has been selected, before updating internal state. diff --git a/src/components/Select.vue b/src/components/Select.vue index 0f81b6b68..03595c03b 100644 --- a/src/components/Select.vue +++ b/src/components/Select.vue @@ -162,6 +162,7 @@ export default { 'open', 'close', 'update:modelValue', + 'clear', 'search', 'search:compositionstart', 'search:compositionend', @@ -1044,10 +1045,12 @@ export default { }, /** - * Clears the currently selected value(s) + * Clears the currently selected value(s), + * triggers the clear event and passes cleared value as argument * @return {void} */ clearSelection() { + this.$emit('clear', this.$data._value) this.updateValue(this.multiple ? [] : null) }, diff --git a/tests/unit/Deselecting.spec.js b/tests/unit/Deselecting.spec.js index f39abe544..67b08938e 100755 --- a/tests/unit/Deselecting.spec.js +++ b/tests/unit/Deselecting.spec.js @@ -143,6 +143,7 @@ describe('Removing values', () => { expect(Select.emitted()['update:modelValue']).toEqual([[null]]) expect(Select.vm.selectedValue).toEqual([]) + expect(Select.emitted()['clear']).toEqual([['foo']]) }) it('should be disabled when component is disabled', () => {