UNPKG

@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
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";