diff --git a/docs/examples/range.tsx b/docs/examples/range.tsx
index c566ffc80..45edab9d8 100644
--- a/docs/examples/range.tsx
+++ b/docs/examples/range.tsx
@@ -194,7 +194,7 @@ export default () => (
@@ -210,7 +210,7 @@ export default () => (
dots
step={20}
defaultValue={100}
- onAfterChange={log}
+ onChangeComplete={log}
dotStyle={{ borderColor: 'orange' }}
activeDotStyle={{ borderColor: 'yellow' }}
/>
diff --git a/src/Slider.tsx b/src/Slider.tsx
index 726ee4b0f..53680d7ad 100644
--- a/src/Slider.tsx
+++ b/src/Slider.tsx
@@ -61,8 +61,9 @@ export interface SliderProps {
onChange?: (value: ValueType) => void;
/** @deprecated It's always better to use `onChange` instead */
onBeforeChange?: (value: ValueType) => void;
- /** @deprecated It's always better to use `onChange` instead */
+ /** @deprecated Use `onChangeComplete` instead */
onAfterChange?: (value: ValueType) => void;
+ onChangeComplete?: (value: ValueType) => void;
// Cross
allowCross?: boolean;
@@ -131,6 +132,7 @@ const Slider = React.forwardRef((props: SliderProps, ref: React.Ref)
onChange,
onBeforeChange,
onAfterChange,
+ onChangeComplete,
// Cross
allowCross = true,
@@ -290,6 +292,8 @@ const Slider = React.forwardRef((props: SliderProps, ref: React.Ref)
const finishChange = () => {
onAfterChange?.(getTriggerValue(rawValuesRef.current));
+ warning(!onAfterChange, '[rc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.');
+ onChangeComplete?.(getTriggerValue(rawValuesRef.current));
};
const [draggingIndex, draggingValue, cacheValues, onStartDrag] = useDrag(
diff --git a/tests/Range.test.js b/tests/Range.test.js
index 46bda99bd..ce21d6b46 100644
--- a/tests/Range.test.js
+++ b/tests/Range.test.js
@@ -110,7 +110,7 @@ describe('Range', () => {
it('it should trigger onAfterChange when key pressed', () => {
const onAfterChange = jest.fn();
const { container } = render(
- ,
+ ,
);
fireEvent.keyDown(container.getElementsByClassName('rc-slider-handle')[1], {
@@ -128,7 +128,7 @@ describe('Range', () => {
it('should not change value from keyboard events when disabled', () => {
const onAfterChange = jest.fn();
const { container } = render(
- ,
+ ,
);
fireEvent.keyDown(container.getElementsByClassName('rc-slider-handle')[1], {
diff --git a/tests/Slider.test.js b/tests/Slider.test.js
index 71a57c7b4..accb956f5 100644
--- a/tests/Slider.test.js
+++ b/tests/Slider.test.js
@@ -138,7 +138,7 @@ describe('Slider', () => {
it('it should trigger onAfterChange when key pressed', () => {
const onAfterChange = jest.fn();
- const { container } = render();
+ const { container } = render();
fireEvent.keyDown(container.getElementsByClassName('rc-slider-handle')[0], {
keyCode: keyCode.RIGHT,
@@ -189,7 +189,7 @@ describe('Slider', () => {
it('decreases the value when key "left" is pressed', () => {
const onChange = jest.fn();
const onChangeComplete = jest.fn();
- const { container } = render();
+ const { container } = render();
fireEvent.keyDown(container.getElementsByClassName('rc-slider-handle')[0], {
keyCode: keyCode.LEFT,
@@ -560,7 +560,7 @@ describe('Slider', () => {
,
);
fireEvent.mouseDown(container.querySelector('.rc-slider'), {
@@ -621,7 +621,7 @@ describe('Slider', () => {
it('onAfterChange should return number', () => {
const onAfterChange = jest.fn();
- const { container } = render();
+ const { container } = render();
fireEvent.mouseDown(container.querySelector('.rc-slider'), {
clientX: 20,
});
diff --git a/tests/common.test.js b/tests/common.test.js
index a8d2ea589..e38398399 100644
--- a/tests/common.test.js
+++ b/tests/common.test.js
@@ -296,7 +296,7 @@ describe('Common', () => {
value={0}
marks={marks}
onChange={sliderOnChange}
- onAfterChange={sliderOnAfterChange}
+ onChangeComplete={sliderOnAfterChange}
/>,
);
const sliderHandleWrapper = container.querySelector(`#${labelId}`);
@@ -311,7 +311,7 @@ describe('Common', () => {
const rangeOnAfterChange = jest.fn();
const { container: container2 } = render(
- ,
+ ,
);
const rangeHandleWrapper = container2.querySelector(`#${labelId}`);
fireEvent.click(rangeHandleWrapper);
@@ -325,7 +325,7 @@ describe('Common', () => {
const sliderOnChange = jest.fn();
const sliderOnAfterChange = jest.fn();
const { container } = render(
- ,
+ ,
);
fireEvent.keyDown(container.getElementsByClassName('rc-slider-handle')[0], {
@@ -342,6 +342,32 @@ describe('Common', () => {
expect(sliderOnAfterChange).toHaveBeenCalledTimes(1);
});
+ it('deprecate onAfterChange', () => {
+ const errSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
+ const onChangeComplete = jest.fn();
+ const onAfterChange = jest.fn();
+ const { container } = render(
+ ,
+ );
+
+ fireEvent.keyDown(container.getElementsByClassName('rc-slider-handle')[0], {
+ keyCode: KeyCode.UP,
+ });
+
+ expect(onChangeComplete).not.toHaveBeenCalled();
+ expect(onAfterChange).not.toHaveBeenCalled();
+
+ fireEvent.keyUp(container.getElementsByClassName('rc-slider-handle')[0], {
+ keyCode: KeyCode.UP,
+ });
+ expect(onChangeComplete).toHaveBeenCalledTimes(1);
+ expect(onAfterChange).toHaveBeenCalledTimes(1);
+ expect(errSpy).toHaveBeenCalledWith(
+ 'Warning: [rc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.',
+ );
+ errSpy.mockRestore();
+ })
+
// Move to antd instead
// it('the tooltip should be attach to the container with the id tooltip', () => {
// const SliderWithTooltip = createSliderWithTooltip(Slider);