Don't handle key events if slider is disabled
parent
874d9bf606
commit
6925570467
|
@ -10,6 +10,13 @@ import events from '../utils/events';
|
||||||
import InjectProgressBar from '../progress_bar/ProgressBar';
|
import InjectProgressBar from '../progress_bar/ProgressBar';
|
||||||
import InjectInput from '../input/Input';
|
import InjectInput from '../input/Input';
|
||||||
|
|
||||||
|
const KEYS = {
|
||||||
|
ENTER: 13,
|
||||||
|
ESC: 27,
|
||||||
|
ARROW_UP: 38,
|
||||||
|
ARROW_DOWN: 40,
|
||||||
|
};
|
||||||
|
|
||||||
const factory = (ProgressBar, Input) => {
|
const factory = (ProgressBar, Input) => {
|
||||||
class Slider extends Component {
|
class Slider extends Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
|
@ -148,9 +155,13 @@ const factory = (ProgressBar, Input) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
handleKeyDown = (event) => {
|
handleKeyDown = (event) => {
|
||||||
if ([13, 27].indexOf(event.keyCode) !== -1) this.getInput().blur();
|
const { disabled, step } = this.props;
|
||||||
if (event.keyCode === 38) this.addToValue(this.props.step);
|
const { ARROW_DOWN, ARROW_UP, ENTER, ESC } = KEYS;
|
||||||
if (event.keyCode === 40) this.addToValue(-this.props.step);
|
|
||||||
|
if (disabled) return;
|
||||||
|
if ([ENTER, ESC].includes(event.keyCode)) this.getInput().blur();
|
||||||
|
if (event.keyCode === ARROW_UP) this.addToValue(step);
|
||||||
|
if (event.keyCode === ARROW_DOWN) this.addToValue(-step);
|
||||||
};
|
};
|
||||||
|
|
||||||
handleMouseDown = (event) => {
|
handleMouseDown = (event) => {
|
||||||
|
|
|
@ -63,6 +63,17 @@ describe('Slider', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('#handleKeyDown', () => {
|
||||||
|
it('does not call addToValue if is disabled', () => {
|
||||||
|
const slider = shallow(<Slider disabled />).instance();
|
||||||
|
slider.addToValue = jest.fn();
|
||||||
|
|
||||||
|
slider.handleKeyDown({ keyCode: 40 });
|
||||||
|
|
||||||
|
expect(slider.addToValue).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('#render', () => {
|
describe('#render', () => {
|
||||||
it('contains a linear progress bar with proper properties', () => {
|
it('contains a linear progress bar with proper properties', () => {
|
||||||
const wrapper = mount(<Slider min={100} max={1000} value={140} />);
|
const wrapper = mount(<Slider min={100} max={1000} value={140} />);
|
||||||
|
|
Loading…
Reference in New Issue