diff --git a/.changeset/pink-cats-mate.md b/.changeset/pink-cats-mate.md new file mode 100644 index 0000000000..2d8d837fd3 --- /dev/null +++ b/.changeset/pink-cats-mate.md @@ -0,0 +1,5 @@ +--- +"react-select": patch +--- + +Add `removedValues` that points to the current selection into a meta of onChange callback when clearing value. diff --git a/packages/react-select/src/Select.js b/packages/react-select/src/Select.js index 702f41dfff..1393a05f09 100644 --- a/packages/react-select/src/Select.js +++ b/packages/react-select/src/Select.js @@ -872,7 +872,11 @@ export default class Select extends Component { this.focusInput(); }; clearValue = () => { - this.onChange(this.props.isMulti ? [] : null, { action: 'clear' }); + const { selectValue } = this.state; + this.onChange(this.props.isMulti ? [] : null, { + action: 'clear', + removedValues: selectValue, + }); }; popValue = () => { const { isMulti } = this.props; diff --git a/packages/react-select/src/__tests__/Select.test.js b/packages/react-select/src/__tests__/Select.test.js index 38fba15734..baaefdcefc 100644 --- a/packages/react-select/src/__tests__/Select.test.js +++ b/packages/react-select/src/__tests__/Select.test.js @@ -1661,6 +1661,7 @@ test('should call onChange with `null` on hitting backspace when backspaceRemove expect(onChangeSpy).toHaveBeenCalledWith(null, { action: 'clear', name: 'test-input-name', + removedValues: [], }); }); @@ -2308,6 +2309,7 @@ test('clear select by clicking on clear button > should not call onMenuOpen', () expect(onChangeSpy).toBeCalledWith([], { action: 'clear', name: BASIC_PROPS.name, + removedValues: [{ label: '0', value: 'zero' }], }); }); @@ -2631,6 +2633,7 @@ test('to clear value when hitting escape if escapeClearsValue and isClearable ar expect(onInputChangeSpy).toHaveBeenCalledWith(null, { action: 'clear', name: BASIC_PROPS.name, + removedValues: [{ label: '0', value: 'zero' }], }); });