"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.RegionSelector = RegionSelector;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _regionConfigByCountry = _interopRequireDefault(require("../utils/region-config-by-country"));
function RegionSelector(_ref) {
  var _ref$country = _ref.country,
    country = _ref$country === void 0 ? 'USA' : _ref$country,
    fieldId = _ref.fieldId,
    _ref$hasError = _ref.hasError,
    hasError = _ref$hasError === void 0 ? false : _ref$hasError,
    _ref$isBillingSelecto = _ref.isBillingSelector,
    isBillingSelector = _ref$isBillingSelecto === void 0 ? false : _ref$isBillingSelecto,
    _ref$isDisabled = _ref.isDisabled,
    isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
    _ref$isHidden = _ref.isHidden,
    isHidden = _ref$isHidden === void 0 ? false : _ref$isHidden,
    label = _ref.label,
    regionType = _ref.regionType,
    selectId = _ref.selectId,
    value = _ref.value;
  var _regionConfigByCountr = _regionConfigByCountry["default"][country],
    _regionConfigByCountr2 = _regionConfigByCountr.regions,
    regions = _regionConfigByCountr2 === void 0 ? [] : _regionConfigByCountr2,
    defaultRegionType = _regionConfigByCountr.defaultRegionType,
    defaultLabel = _regionConfigByCountr.label;
  var dynamicRegionType = regionType || defaultRegionType;
  var dynamicLabel = isBillingSelector ? "Billing ".concat(label || defaultLabel) : label || defaultLabel;
  var dynamicFieldId = fieldId || "".concat(dynamicRegionType, "Field");
  var dynamicSelectId = selectId || dynamicRegionType;
  var dynamicName = isBillingSelector ? "billing".concat(dynamicRegionType.charAt(0).toUpperCase() + dynamicRegionType.slice(1)) : dynamicRegionType;
  var fieldClassNames = (0, _classnames["default"])(['o-forms-field', {
    ncf__hidden: isHidden
  }]);
  var inputWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--select', {
    'o-forms-input--invalid': hasError
  }]);
  return /*#__PURE__*/_react["default"].createElement("label", {
    id: dynamicFieldId,
    className: fieldClassNames,
    "data-validate": "required",
    htmlFor: dynamicSelectId
  }, /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-title"
  }, /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-title__main"
  }, dynamicLabel)), /*#__PURE__*/_react["default"].createElement("span", {
    className: inputWrapperClassNames
  }, /*#__PURE__*/_react["default"].createElement("select", {
    id: selectId,
    "aria-required": "true",
    required: true,
    name: dynamicName,
    "data-trackable": "field-".concat(dynamicRegionType),
    disabled: isDisabled,
    defaultValue: value
  }, /*#__PURE__*/_react["default"].createElement("option", {
    disabled: true,
    value: ""
  }, "Please select a ", defaultLabel.toLowerCase()), regions.map(function (_ref2) {
    var code = _ref2.code,
      name = _ref2.name;
    return /*#__PURE__*/_react["default"].createElement("option", {
      key: code,
      value: code
    }, name);
  })), /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-input__error"
  }, "Please select your ", defaultLabel.toLowerCase())));
}
RegionSelector.propTypes = {
  country: _propTypes["default"].oneOf(['USA', 'CAN', 'IND']),
  fieldId: _propTypes["default"].string,
  hasError: _propTypes["default"].bool,
  isBillingSelector: _propTypes["default"].bool,
  isDisabled: _propTypes["default"].bool,
  isHidden: _propTypes["default"].bool,
  label: _propTypes["default"].string,
  regionType: _propTypes["default"].string,
  selectId: _propTypes["default"].string,
  value: _propTypes["default"].string
};