UNPKG

@financial-times/n-conversion-forms

Version:

Containing jsx components and styles for forms included on Accounts and Acquisition apps (next-signup, next-profile, next-retention, etc).

88 lines (87 loc) 3.96 kB
"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 };