@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
108 lines (95 loc) • 2.52 kB
JavaScript
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import * as React from "react";
import StepperStateless from "./StepperStateless";
import validateIncrement from "../utils/validateIncrement";
import validateDecrement from "../utils/validateDecrement";
class Stepper extends React.PureComponent {
constructor(...args) {
super(...args);
_defineProperty(this, "state", {
value: this.props.defaultValue || 0
});
_defineProperty(this, "setValueAndInjectCallback", value => {
const {
onChange
} = this.props;
if (onChange) {
onChange(value);
}
this.setState({
value
});
});
_defineProperty(this, "incrementCounter", () => {
const {
value
} = this.state;
const {
maxValue = Number.POSITIVE_INFINITY,
step = 1
} = this.props;
this.setValueAndInjectCallback(validateIncrement({
value,
maxValue,
step
}));
});
_defineProperty(this, "decrementCounter", () => {
const {
value
} = this.state;
const {
minValue = Number.NEGATIVE_INFINITY,
step = 1
} = this.props;
this.setValueAndInjectCallback(validateDecrement({
value,
minValue,
step
}));
});
_defineProperty(this, "handleKeyDown", ev => {
if (ev.keyCode === 40) {
ev.preventDefault();
this.decrementCounter();
}
if (ev.keyCode === 38) {
ev.preventDefault();
this.incrementCounter();
}
});
}
render() {
const {
onBlur,
onFocus,
disabled,
name,
dataTest,
maxValue,
minValue,
titleIncrement,
titleDecrement
} = this.props;
const {
value
} = this.state;
return React.createElement(StepperStateless, {
disabled: disabled,
dataTest: dataTest,
value: value,
name: name,
minValue: minValue,
maxValue: maxValue,
onKeyDown: this.handleKeyDown,
onBlur: onBlur,
onFocus: onFocus,
onIncrement: this.incrementCounter,
onDecrement: this.decrementCounter,
titleIncrement: titleIncrement,
titleDecrement: titleDecrement
});
}
}
export default Stepper;
export { default as StepperStateless } from "./StepperStateless";