@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.
192 lines (160 loc) • 7.37 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "InputStepperStateless", {
enumerable: true,
get: function get() {
return _InputStepperStateless.default;
}
});
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var _consts = require("../InputField/consts");
var _keyMaps = _interopRequireDefault(require("../common/keyMaps"));
var _InputStepperStateless = _interopRequireDefault(require("./InputStepperStateless"));
var _validateIncrement = _interopRequireDefault(require("../utils/validateIncrement"));
var _validateDecrement = _interopRequireDefault(require("../utils/validateDecrement"));
var _useStateWithCallback3 = _interopRequireDefault(require("../hooks/useStateWithCallback"));
var _useTranslate = _interopRequireDefault(require("../hooks/useTranslate"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
var InputStepper = React.forwardRef(function (_ref, ref) {
var onChange = _ref.onChange,
_ref$defaultValue = _ref.defaultValue,
defaultValue = _ref$defaultValue === void 0 ? 0 : _ref$defaultValue,
props = _objectWithoutProperties(_ref, ["onChange", "defaultValue"]);
var translate = (0, _useTranslate.default)();
var _useStateWithCallback = (0, _useStateWithCallback3.default)(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((0, _validateIncrement.default)({
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((0, _validateDecrement.default)({
value: value,
minValue: minValue,
step: step
}));
};
var handleIncrementCounter = function handleIncrementCounter(ev) {
if (ev && ev.type === "click") {
incrementCounter();
}
if (ev && ev.type === "keydown") {
if (ev.keyCode === _keyMaps.default.SPACE) {
ev.preventDefault();
incrementCounter();
} else if (ev.keyCode === _keyMaps.default.ENTER) {
incrementCounter();
}
}
};
var handleDecrementCounter = function handleDecrementCounter(ev) {
if (ev && ev.type === "click") {
decrementCounter();
}
if (ev && ev.type === "keydown") {
if (ev.keyCode === _keyMaps.default.SPACE) {
ev.preventDefault();
decrementCounter();
} else if (ev.keyCode === _keyMaps.default.ENTER) {
decrementCounter();
}
}
};
var handleKeyDown = function handleKeyDown(ev) {
if (ev.keyCode === _keyMaps.default.ARROW_DOWN) {
ev.preventDefault();
decrementCounter();
}
if (ev.keyCode === _keyMaps.default.ARROW_UP) {
ev.preventDefault();
incrementCounter();
}
};
var handleChange = function handleChange(ev) {
var eventValue = ev && parseInt(ev.target.value, 10);
var prevValue = value;
var maxValue = props.maxValue,
minValue = props.minValue;
if (prevValue <= eventValue) {
setValue((0, _validateIncrement.default)({
value: value,
maxValue: maxValue,
step: 0
}));
}
if (prevValue >= eventValue) {
setValue((0, _validateDecrement.default)({
value: value,
minValue: minValue,
step: 0
}));
}
};
var label = props.label,
error = props.error,
onBlur = props.onBlur,
onFocus = props.onFocus,
help = props.help,
disabled = props.disabled,
name = props.name,
dataTest = props.dataTest,
_props$size = props.size,
size = _props$size === void 0 ? _consts.SIZE_OPTIONS.NORMAL : _props$size,
required = props.required,
minValue = props.minValue,
maxValue = props.maxValue,
tabIndex = props.tabIndex,
spaceAfter = props.spaceAfter,
titleIncrement = props.titleIncrement,
titleDecrement = props.titleDecrement;
return React.createElement(_InputStepperStateless.default, {
dataTest: dataTest,
size: size,
label: label,
disabled: disabled,
required: required,
name: name,
error: error,
help: help,
onChange: handleChange,
onBlur: onBlur,
onFocus: onFocus,
onKeyDown: handleKeyDown,
value: value || 0,
minValue: minValue,
maxValue: maxValue,
tabIndex: tabIndex,
forwardedRef: ref,
spaceAfter: spaceAfter,
onDecrement: handleDecrementCounter,
onIncrement: handleIncrementCounter,
titleIncrement: titleIncrement || translate("increment_value"),
titleDecrement: titleDecrement || translate("decrement_value")
});
});
InputStepper.displayName = "InputStepper";
var _default = InputStepper;
exports.default = _default;