mirror of
https://gitee.com/ant-design/ant-design.git
synced 2024-12-01 11:39:28 +08:00
fix: Slider step prop not accepting null value (#26984)
* Fixes #26976 since rc-slider allows step to be null * Fixes #26976 since rc-slider allows step to be null * test: Slider step prop should not crash with undefined value
This commit is contained in:
parent
9cd432e52e
commit
ef3aabdf7d
@ -40,6 +40,44 @@ describe('Slider', () => {
|
||||
expect(wrapper.find('.ant-tooltip-content').length).toBe(0);
|
||||
});
|
||||
|
||||
it('when step is null, thumb can only be slided to the specific mark', () => {
|
||||
const intentionallyWrongValue = 40;
|
||||
const marks = {
|
||||
0: '0',
|
||||
48: '48',
|
||||
100: '100',
|
||||
};
|
||||
|
||||
const wrapper = mount(
|
||||
<Slider marks={marks} defaultValue={intentionallyWrongValue} step={null} tooltipVisible />,
|
||||
);
|
||||
expect(wrapper.find('.ant-slider-handle').get(0).props).toHaveProperty('value', 48);
|
||||
});
|
||||
|
||||
it('when step is not null, thumb can be slided to the multiples of step', () => {
|
||||
const marks = {
|
||||
0: '0',
|
||||
48: '48',
|
||||
100: '100',
|
||||
};
|
||||
|
||||
const wrapper = mount(<Slider marks={marks} defaultValue={49} step={1} tooltipVisible />);
|
||||
expect(wrapper.find('.ant-slider-handle').get(0).props).toHaveProperty('value', 49);
|
||||
});
|
||||
|
||||
it('when step is undefined, thumb can be slided to the multiples of step', () => {
|
||||
const marks = {
|
||||
0: '0',
|
||||
48: '48',
|
||||
100: '100',
|
||||
};
|
||||
|
||||
const wrapper = mount(
|
||||
<Slider marks={marks} defaultValue={49} step={undefined} tooltipVisible />,
|
||||
);
|
||||
expect(wrapper.find('.ant-slider-handle').get(0).props).toHaveProperty('value', 49);
|
||||
});
|
||||
|
||||
it('should render in RTL direction', () => {
|
||||
const wrapper = mount(
|
||||
<ConfigProvider direction="rtl">
|
||||
@ -70,4 +108,9 @@ describe('Slider', () => {
|
||||
mount(<Slider value={value} tooltipVisible />);
|
||||
});
|
||||
});
|
||||
it('step should not crash with undefined value', () => {
|
||||
[undefined, null].forEach(value => {
|
||||
mount(<Slider step={value} tooltipVisible />);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -29,4 +29,21 @@ describe('Slider.typescript', () => {
|
||||
);
|
||||
expect(result).toBeTruthy();
|
||||
});
|
||||
|
||||
it('step can be null value', () => {
|
||||
const value = 0;
|
||||
function onChange(v: number) {
|
||||
return v;
|
||||
}
|
||||
const result = (
|
||||
<Slider
|
||||
defaultValue={value}
|
||||
value={value}
|
||||
onChange={onChange}
|
||||
onAfterChange={onChange}
|
||||
step={null}
|
||||
/>
|
||||
);
|
||||
expect(result).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
@ -32,7 +32,7 @@ export interface SliderBaseProps {
|
||||
reverse?: boolean;
|
||||
min?: number;
|
||||
max?: number;
|
||||
step?: number;
|
||||
step?: null | number;
|
||||
marks?: SliderMarks;
|
||||
dots?: boolean;
|
||||
included?: boolean;
|
||||
@ -143,6 +143,7 @@ const Slider = React.forwardRef<unknown, SliderSingleProps | SliderRangeProps>(
|
||||
return (
|
||||
<RcRange
|
||||
{...(restProps as SliderRangeProps)}
|
||||
step={restProps.step!}
|
||||
className={cls}
|
||||
ref={ref}
|
||||
handle={(info: HandleGeneratorInfo) =>
|
||||
@ -159,6 +160,7 @@ const Slider = React.forwardRef<unknown, SliderSingleProps | SliderRangeProps>(
|
||||
return (
|
||||
<RcSlider
|
||||
{...(restProps as SliderSingleProps)}
|
||||
step={restProps.step!}
|
||||
className={cls}
|
||||
ref={ref}
|
||||
handle={(info: HandleGeneratorInfo) =>
|
||||
|
Loading…
Reference in New Issue
Block a user