@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.
83 lines (75 loc) • 2.77 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import * as React from "react";
import StepperStateless from "./StepperStateless";
import validateIncrement from "../utils/validateIncrement";
import validateDecrement from "../utils/validateDecrement";
import useStateWithCallback from "../hooks/useStateWithCallback";
var Stepper = function Stepper(_ref) {
var onChange = _ref.onChange,
_ref$defaultValue = _ref.defaultValue,
defaultValue = _ref$defaultValue === void 0 ? 0 : _ref$defaultValue,
props = _objectWithoutProperties(_ref, ["onChange", "defaultValue"]);
var _useStateWithCallback = useStateWithCallback(defaultValue, onChange),
_useStateWithCallback2 = _slicedToArray(_useStateWithCallback, 2),
value = _useStateWithCallback2[0],
setValue = _useStateWithCallback2[1];
var incrementCounter = function incrementCounter() {
var _props$maxValue = props.maxValue,
maxValue = _props$maxValue === void 0 ? Number.POSITIVE_INFINITY : _props$maxValue,
_props$step = props.step,
step = _props$step === void 0 ? 1 : _props$step;
setValue(validateIncrement({
value: value,
maxValue: maxValue,
step: step
}));
};
var decrementCounter = function decrementCounter() {
var _props$minValue = props.minValue,
minValue = _props$minValue === void 0 ? Number.NEGATIVE_INFINITY : _props$minValue,
_props$step2 = props.step,
step = _props$step2 === void 0 ? 1 : _props$step2;
setValue(validateDecrement({
value: value,
minValue: minValue,
step: step
}));
};
var handleKeyDown = function handleKeyDown(ev) {
if (ev.keyCode === 40) {
ev.preventDefault();
decrementCounter();
}
if (ev.keyCode === 38) {
ev.preventDefault();
incrementCounter();
}
};
var onBlur = props.onBlur,
onFocus = props.onFocus,
disabled = props.disabled,
name = props.name,
dataTest = props.dataTest,
minValue = props.minValue,
maxValue = props.maxValue,
titleIncrement = props.titleIncrement,
titleDecrement = props.titleDecrement;
return /*#__PURE__*/React.createElement(StepperStateless, {
disabled: disabled,
dataTest: dataTest,
value: value,
name: name,
minValue: minValue,
maxValue: maxValue,
onKeyDown: handleKeyDown,
onBlur: onBlur,
onFocus: onFocus,
onIncrement: incrementCounter,
onDecrement: decrementCounter,
titleIncrement: titleIncrement,
titleDecrement: titleDecrement
});
};
export default Stepper;
export { default as StepperStateless } from "./StepperStateless";