UNPKG

jb-national-input-react

Version:
226 lines (214 loc) 9.35 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('jb-national-input'), require('jb-input')) : typeof define === 'function' && define.amd ? define(['exports', 'react', 'jb-national-input', 'jb-input'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.JBNationalInput = {}, global.React)); })(this, (function (exports, React) { 'use strict'; function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function useBindEvent(ref, event, handler) { var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; React.useEffect(function () { var dom = ref.current; if (dom) { // initiate the event handler dom.addEventListener(event, handler, passive); } // this will clean up the event every time the component is re-rendered return function cleanup() { if (dom) { dom.removeEventListener(event, handler, passive); } }; }, [ref, event, handler, passive]); } function useJBInputEvents(element, props) { var onChange = React.useCallback(function (e) { if (typeof props.onChange === "function") { props.onChange(e); } }, [props.onChange]); var onKeydown = React.useCallback(function (e) { if (typeof props.onKeydown === "function") { props.onKeydown(e); } }, [props.onKeydown]); var onKeyup = React.useCallback(function (e) { if (typeof props.onKeyup === "function") { props.onKeyup(e); } }, [props.onKeyup]); var onEnter = React.useCallback(function (e) { if (props.onEnter) { props.onEnter(e); } }, [props.onEnter]); var onFocus = React.useCallback(function (e) { if (props.onFocus && e instanceof FocusEvent) { props.onFocus(e); } }, [props.onFocus]); var onBlur = React.useCallback(function (e) { if (props.onBlur && e instanceof FocusEvent) { props.onBlur(e); } }, [props.onBlur]); var onInput = React.useCallback(function (e) { if (typeof props.onInput == 'function' && e instanceof InputEvent) { props.onInput(e); } }, [props.onInput]); var onBeforeInput = React.useCallback(function (e) { if (typeof props.onBeforeinput == 'function' && e instanceof InputEvent) { props.onBeforeinput(e); } }, [props.onBeforeinput]); useBindEvent(element, 'change', onChange); useBindEvent(element, 'keydown', onKeydown); useBindEvent(element, 'keyup', onKeyup); useBindEvent(element, 'focus', onFocus); useBindEvent(element, 'blur', onBlur); useBindEvent(element, 'enter', onEnter); useBindEvent(element, 'input', onInput); useBindEvent(element, 'beforeinput', onBeforeInput); } function useJBInputAttribute(element, props) { React.useEffect(function () { var value = props.value; if (props.value == null || props.value === undefined) { value = ''; } if (element && element.current && element.current) { var _value; element.current.value = ((_value = value) === null || _value === void 0 ? void 0 : _value.toString()) || ""; } }, [props.value]); React.useEffect(function () { if (props.type) { var _element$current; element === null || element === void 0 || (_element$current = element.current) === null || _element$current === void 0 || _element$current.setAttribute('type', props.type); } }, [props.type]); React.useEffect(function () { var _element$current2; element === null || element === void 0 || (_element$current2 = element.current) === null || _element$current2 === void 0 || _element$current2.setAttribute('name', props.name || ''); }, [props.name]); React.useEffect(function () { if (element && element.current) { element.current.validation.list = props.validationList || []; } }, [props.validationList]); React.useEffect(function () { var _element$current3; element === null || element === void 0 || (_element$current3 = element.current) === null || _element$current3 === void 0 || _element$current3.setAttribute('label', props.label || ""); }, [props.label]); React.useEffect(function () { if (typeof props.disabled == "boolean") { var _element$current4; element === null || element === void 0 || (_element$current4 = element.current) === null || _element$current4 === void 0 || _element$current4.setAttribute('disabled', "".concat(props.disabled)); } }, [props.disabled]); React.useEffect(function () { if (typeof props.required == "boolean") { var _element$current5; element === null || element === void 0 || (_element$current5 = element.current) === null || _element$current5 === void 0 || _element$current5.setAttribute('required', "".concat(props.required)); } }, [props.required]); React.useEffect(function () { if (props.inputmode) { var _element$current6; (_element$current6 = element.current) === null || _element$current6 === void 0 || _element$current6.setAttribute('inputmode', props.inputmode); } else { var _element$current7; (_element$current7 = element.current) === null || _element$current7 === void 0 || _element$current7.removeAttribute('inputmode'); } }, [props.inputmode]); React.useEffect(function () { var _element$current8; element === null || element === void 0 || (_element$current8 = element.current) === null || _element$current8 === void 0 || _element$current8.setAttribute('message', props.message || ""); }, [props.message]); React.useEffect(function () { var _element$current9; element === null || element === void 0 || (_element$current9 = element.current) === null || _element$current9 === void 0 || _element$current9.setAttribute('placeholder', props.placeholder || ""); }, [props.placeholder]); } // eslint-disable-next-line react/display-name var JBInput = /*#__PURE__*/React.forwardRef(function (props, ref) { var element = React.useRef(null); var _useState = React.useState(0), _useState2 = _slicedToArray(_useState, 2), refChangeCount = _useState2[0], refChangeCountSetter = _useState2[1]; React.useImperativeHandle(ref, function () { return element ? element.current : {}; }, [element]); //to force rerender for events React.useEffect(function () { refChangeCountSetter(refChangeCount + 1); }, [element.current]); useJBInputEvents(element, props); useJBInputAttribute(element, props); return /*#__PURE__*/React.createElement("jb-input", { ref: element, "class": props.className }, props.children); }); JBInput.displayName = "JBInput"; // eslint-disable-next-line react/display-name const JBNationalInput = React.forwardRef((props, ref) => { const element = React.useRef(null); const [refChangeCount, refChangeCountSetter] = React.useState(0); React.useImperativeHandle(ref, () => (element ? element.current : {}), [element]); React.useEffect(() => { refChangeCountSetter(refChangeCount + 1); }, [element.current]); useJBInputAttribute(element, props); useJBInputEvents(element, props); return (React.createElement("jb-national-input", { ref: element, class: props.className ? props.className : '' })); }); JBNationalInput.displayName = "JBNationalInput"; exports.JBNationalInput = JBNationalInput; })); //# sourceMappingURL=JBNationalInput.umd.js.map