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', () => {