"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.Password = Password;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
function Password(_ref) {
  var _ref$unknownUser = _ref.unknownUser,
    unknownUser = _ref$unknownUser === void 0 ? false : _ref$unknownUser,
    _ref$hasError = _ref.hasError,
    hasError = _ref$hasError === void 0 ? false : _ref$hasError,
    _ref$pattern = _ref.pattern,
    pattern = _ref$pattern === void 0 ? null : _ref$pattern,
    _ref$isDisabled = _ref.isDisabled,
    isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
    _ref$fieldId = _ref.fieldId,
    fieldId = _ref$fieldId === void 0 ? 'passwordField' : _ref$fieldId,
    _ref$inputId = _ref.inputId,
    inputId = _ref$inputId === void 0 ? 'password' : _ref$inputId,
    inputName = _ref.inputName,
    _ref$label = _ref.label,
    label = _ref$label === void 0 ? 'Password' : _ref$label,
    _ref$placeholder = _ref.placeholder,
    placeholder = _ref$placeholder === void 0 ? 'Enter a password' : _ref$placeholder,
    _ref$description = _ref.description,
    description = _ref$description === void 0 ? 'Use 8 or more characters. You can use letters, numbers or symbols' : _ref$description,
    _ref$showDescription = _ref.showDescription,
    showDescription = _ref$showDescription === void 0 ? true : _ref$showDescription,
    _ref$hasShowPassword = _ref.hasShowPassword,
    hasShowPassword = _ref$hasShowPassword === void 0 ? true : _ref$hasShowPassword;
  // This is necessary to make this backward compatible with the Handlebars partial.
  var showPasswordId = inputId === 'password' ? 'showPassword' : "".concat(inputId, "-showPassword");
  var showPasswordName = showPasswordId;
  // Use inputId if inputName is not explicitly passed.
  inputName = inputName || inputId;
  var fieldClassNames = (0, _classnames["default"])(['o-forms-field', 'ncf__password-field', 'ncf__validation-error', {
    'js-unknown-user-field': unknownUser
  }]);
  var inputWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--password', 'o-forms-input--checkbox', 'o-forms-input--suffix', {
    'o-forms-input--invalid': hasError
  }]);
  return /*#__PURE__*/_react["default"].createElement("div", {
    id: fieldId,
    className: fieldClassNames,
    "data-validate": "required,password"
  }, /*#__PURE__*/_react["default"].createElement("label", {
    htmlFor: inputId,
    className: "o-forms-title"
  }, /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-title__main"
  }, label), showDescription ? /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-title__prompt"
  }, description) : null), /*#__PURE__*/_react["default"].createElement("div", {
    className: inputWrapperClassNames
  }, /*#__PURE__*/_react["default"].createElement("input", {
    type: "password",
    id: inputId,
    name: inputName,
    placeholder: placeholder,
    autoComplete: "new-password",
    "data-trackable": "field-password",
    "aria-required": "true",
    required: true,
    pattern: pattern,
    disabled: isDisabled
  }), hasShowPassword ? /*#__PURE__*/_react["default"].createElement("label", {
    className: "ncf__password-field--show-password"
  }, /*#__PURE__*/_react["default"].createElement("input", {
    type: "checkbox",
    id: showPasswordId,
    name: showPasswordName,
    "data-trackable": "field-show-password",
    "aria-label": "Show password"
  }), /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-input__label",
    "aria-hidden": "true"
  }, "Show password")) : null, /*#__PURE__*/_react["default"].createElement("div", {
    className: "o-forms-input__error"
  }, "Please enter a valid password")));
}
Password.propTypes = {
  unknownUser: _propTypes["default"].bool,
  hasError: _propTypes["default"].bool,
  pattern: _propTypes["default"].string,
  isDisabled: _propTypes["default"].bool,
  fieldId: _propTypes["default"].string,
  inputId: _propTypes["default"].string,
  inputName: _propTypes["default"].string,
  label: _propTypes["default"].string,
  placeholder: _propTypes["default"].string
};