@open-tender/store
Version:
A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API
30 lines (29 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var hooks_1 = require("../app/hooks");
var slices_1 = require("../slices");
var utils_1 = require("../utils");
var Keypad = function (_a) {
var children = _a.children, maxLength = _a.maxLength, type = _a.type, value = _a.value, handlers = _a.handlers, isEmail = _a.isEmail;
var _b = (0, hooks_1.useAppSelector)(slices_1.selectKioskConfig), keypad = _b.keypad, numpad = _b.numpad;
var isDollar = type === 'dollar';
var config = type === 'numeric' || isDollar ? numpad : keypad;
var _c = (0, react_1.useState)(false), isShiftOn = _c[0], setIsShiftOn = _c[1];
var handleOnKeyPress = (0, react_1.useCallback)(function (key) {
setIsShiftOn(function (prev) { return (key === '\u21E7' ? !prev : prev); });
handlers.change((0, utils_1.getKeyboardValue)(key, value, maxLength, isShiftOn));
}, [handlers, value, maxLength, isShiftOn]);
var viewHandlers = (0, react_1.useMemo)(function () { return ({ keyPress: handleOnKeyPress }); }, [handleOnKeyPress]);
if (!config)
return null;
return children({
config: config,
handlers: viewHandlers,
value: value,
type: type,
isEmail: isEmail,
isShiftOn: isShiftOn
});
};
exports.default = Keypad;