UNPKG

@shakthillc/components

Version:

React generic components for shakthi products

276 lines (238 loc) 9.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _propTypes = require("prop-types"); var _propTypes2 = _interopRequireDefault(_propTypes); var _UserSelectorModule = require("./UserSelector.module.css"); var _UserSelectorModule2 = _interopRequireDefault(_UserSelectorModule); var _Badge = require("./Badge"); var _Badge2 = _interopRequireDefault(_Badge); var _lodash = require("lodash"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var UserSelector = function (_React$Component) { _inherits(UserSelector, _React$Component); function UserSelector(props) { _classCallCheck(this, UserSelector); var _this = _possibleConstructorReturn(this, (UserSelector.__proto__ || Object.getPrototypeOf(UserSelector)).call(this, props)); _this.onChange = _this.onChange.bind(_this); _this.handleFocus = _this.handleFocus.bind(_this); _this.handleBlur = _this.handleBlur.bind(_this); _this.onKeyPress = _this.onKeyPress.bind(_this); _this.onBadgeClick = _this.onBadgeClick.bind(_this); _this.state = { value: "", details: _this.props.details || [], helperText: false }; return _this; } _createClass(UserSelector, [{ key: "componentDidMount", value: function componentDidMount() { var _this2 = this; var _props$selectedValue = this.props.selectedValue, selectedValue = _props$selectedValue === undefined ? [] : _props$selectedValue; if (selectedValue && selectedValue.length > 0) { var details = selectedValue.map(function (data) { var mailFlag = _this2.mailValidator(data); return { email: data, isValid: mailFlag === "#FFD4D1" ? 0 : 1, color: mailFlag }; }); this.setState({ details: details }); } } }, { key: "componentDidUpdate", value: function componentDidUpdate(prevProps, prevState) { var _this3 = this; var selectedValue = this.props.selectedValue; if (selectedValue && prevProps.selectedValue.length != selectedValue.length) { var formattedDetails = selectedValue.map(function (data) { var mailFlag = _this3.mailValidator(data); return { email: data, isValid: mailFlag === "#FFD4D1" ? 0 : 1, color: mailFlag }; }); this.setState({ details: formattedDetails }); } } }, { key: "onChange", value: function onChange(e) { if (e.target.value !== ",") { this.setState({ value: e.target.value }); } } }, { key: "handleFocus", value: function handleFocus(e) { var onFocus = this.props.onFocus; onFocus && onFocus(this.state.details); } }, { key: "mailValidator", value: function mailValidator(value) { if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(value)) return "#E5E9EC"; return "#FFD4D1"; } }, { key: "statusFlag", value: function statusFlag(data) { var flag = true; data.forEach(function (data) { if (data.color === "#FFD4D1") { flag = false; return flag; } }); return flag; } }, { key: "onKeyPress", value: function onKeyPress(e) { var onKeyup = this.props.onKeyup; var _state = this.state, value = _state.value, details = _state.details; var tempDetails = [].concat(_toConsumableArray(details)); var mailFlag = ""; var formattedResult = tempDetails.map(function (data) { return data.email; }); if (e.key === "Enter" || e.key === "Tab" || e.which === 32 || e.which === 44 && value.trim() != "") { if (!formattedResult.includes(value)) { mailFlag = this.mailValidator(value); tempDetails.push({ email: value, color: mailFlag, isValid: mailFlag === "#FFD4D1" ? 0 : 1 }); value = ""; this.setState({ value: value, details: tempDetails, helperText: false }); var _formattedResult = tempDetails.map(function (data) { return data.email; }); onKeyup && onKeyup(_formattedResult, this.statusFlag(tempDetails)); } else { this.setState({ value: "", helperText: true }); } } } }, { key: "onBadgeClick", value: function onBadgeClick(text) { var onKeyup = this.props.onKeyup; var _state2 = this.state, value = _state2.value, details = _state2.details; var tempDetails = details.filter(function (data) { return data.email != text; }); this.setState({ details: tempDetails }); var formattedResult = tempDetails.map(function (data) { return data.email; }); onKeyup && onKeyup(formattedResult, this.statusFlag(tempDetails)); } }, { key: "handleBlur", value: function handleBlur(e) { var onBlur = this.props.onBlur; onBlur && onBlur(this.state.details); } }, { key: "render", value: function render() { var _this4 = this; var _props = this.props, _props$placeHolder = _props.placeHolder, placeHolder = _props$placeHolder === undefined ? "Enter text" : _props$placeHolder, _props$isMandatory = _props.isMandatory, isMandatory = _props$isMandatory === undefined ? false : _props$isMandatory, label = _props.label, help = _props.help, _props$type = _props.type, type = _props$type === undefined ? "text" : _props$type, onChange = _props.onChange, onKeyPress = _props.onKeyPress, value = _props.value, isPopupOpen = _props.isPopupOpen; var helperText = this.state.helperText; return _react2.default.createElement( "div", { className: _UserSelectorModule2.default["input-holder"] }, label && _react2.default.createElement( "p", { className: _UserSelectorModule2.default["input-holder__header"] }, label ), _react2.default.createElement( "div", { className: _UserSelectorModule2.default["input-div"], style: isMandatory === true ? { border: "solid 1px #FA383E" } : {} }, this.state.details.map(function (data, i) { return _react2.default.createElement(_Badge2.default, { key: i, onClick: _this4.onBadgeClick, text: data.email, color: data.color }); }), _react2.default.createElement("input", { // type={type} onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyPress: this.onKeyPress, onChange: onChange || this.onChange, className: _UserSelectorModule2.default["input-area"], placeholder: placeHolder, value: value || this.state.value }) ), (help || helperText) && _react2.default.createElement( "div", { className: isMandatory === true ? _UserSelectorModule2.default["input-holder__helper--red"] : _UserSelectorModule2.default["input-holder__helper"] }, helperText && "The given email Id already exists" || help ) ); } }]); return UserSelector; }(_react2.default.Component); exports.default = UserSelector; UserSelector.propTypes = { placeHolder: _propTypes2.default.string, label: _propTypes2.default.string, help: _propTypes2.default.string, icon: _propTypes2.default.string, value: _propTypes2.default.string, onKeyup: _propTypes2.default.func, isMandatory: _propTypes2.default.bool }; UserSelector.defaultProps = { icon_position: "left", placeHolder: "Enter text", value: "", isMandatory: false, type: "text", onKeyup: function onKeyup() { //console.log("keyup"); } };