UNPKG

@propellerads/password-validator

Version:
107 lines (96 loc) 4.42 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var React = require('react'); var React__default = _interopDefault(React); var icon = require('@propellerads/icon'); var styled = _interopDefault(require('styled-components')); var stylevariables = require('@propellerads/stylevariables'); function _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.slice(0); } strings.raw = raw; return strings; } var _templateObject, _templateObject2, _templateObject3; var StyledPasswordValidator = /*#__PURE__*/styled.div(_templateObject || (_templateObject = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-bottom: ", "px;\n"])), stylevariables.spacing * 4); var PasswordRule = /*#__PURE__*/styled.div(_templateObject2 || (_templateObject2 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n align-items: flex-start;\n min-height: 20px;\n color: ", ";\n"])), function (props) { return props.isPassed ? 'black' : '#b3b3b3'; }); var PasswordIcon = /*#__PURE__*/styled.span(_templateObject3 || (_templateObject3 = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n margin-right: ", "px;;\n"])), stylevariables.spacing * 2); var getDefaultRules = function getDefaultRules(_ref) { var passwordChangeRuleLengthText = _ref.passwordChangeRuleLengthText, passwordChangeRuleLatinLowercaseText = _ref.passwordChangeRuleLatinLowercaseText, passwordChangeRuleLatinUppercaseText = _ref.passwordChangeRuleLatinUppercaseText, passwordChangeRuleDigitsText = _ref.passwordChangeRuleDigitsText, passwordChangeRuleIsEqualText = _ref.passwordChangeRuleIsEqualText; return [{ test: function test(value) { return value.length >= 8; }, label: passwordChangeRuleLengthText, key: 'passwordChangeRuleLengthText' }, { test: function test(value) { return /[a-z]/.test(value); }, label: passwordChangeRuleLatinLowercaseText, key: 'passwordChangeRuleLatinLowercaseText' }, { test: function test(value) { return /[A-Z]/.test(value); }, label: passwordChangeRuleLatinUppercaseText, key: 'passwordChangeRuleLatinUppercaseText' }, { test: function test(value) { return /\d/.test(value); }, label: passwordChangeRuleDigitsText, key: 'passwordChangeRuleDigitsText' }, { test: function test(oneValue, twoValue) { return oneValue && twoValue && oneValue === twoValue; }, label: passwordChangeRuleIsEqualText, key: 'passwordChangeRuleIsEqualText' }]; }; var PasswordValidator = function PasswordValidator(_ref2) { var rules = _ref2.rules, _ref2$password = _ref2.password, password = _ref2$password === void 0 ? '' : _ref2$password, _ref2$confirmPassword = _ref2.confirmPassword, confirmPassword = _ref2$confirmPassword === void 0 ? '' : _ref2$confirmPassword, _ref2$onPassedRuleCla = _ref2.onPassedRuleClassName, onPassedRuleClassName = _ref2$onPassedRuleCla === void 0 ? 'PasswordValidator__rule_passed' : _ref2$onPassedRuleCla, _ref2$onFailedRuleCla = _ref2.onFailedRuleClassName, onFailedRuleClassName = _ref2$onFailedRuleCla === void 0 ? 'PasswordValidator__rule' : _ref2$onFailedRuleCla, onTestsPassed = _ref2.onTestsPassed; var testResults = rules.map(function (rule) { return Boolean(rule.test(password, confirmPassword)); }); React.useEffect(function () { if (!onTestsPassed) { return; } onTestsPassed(testResults.every(function (value) { return value; })); }, [password, confirmPassword, rules]); return React__default.createElement(StyledPasswordValidator, null, rules.map(function (rule, index) { var isPassed = testResults[index]; return React__default.createElement(PasswordRule, { className: isPassed ? onPassedRuleClassName : onFailedRuleClassName, isPassed: isPassed, key: rule.label }, React__default.createElement(PasswordIcon, null, React__default.createElement(icon.Check, { color: rule.test(password, confirmPassword) ? icon.COLOR.SUCCESS : icon.COLOR.GRAY, size: icon.SIZE.SMALL })), rule.label); })); }; exports.default = PasswordValidator; exports.getDefaultRules = getDefaultRules; //# sourceMappingURL=password-validator.cjs.development.js.map