UNPKG

@financial-times/n-conversion-forms

Version:

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

106 lines (105 loc) 4.63 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Country = Country; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _countries = require("../utils/countries"); function Country(_ref) { var additionalFieldInformation = _ref.additionalFieldInformation, _ref$dataTrackable = _ref.dataTrackable, dataTrackable = _ref$dataTrackable === void 0 ? 'field-country' : _ref$dataTrackable, _ref$fieldId = _ref.fieldId, fieldId = _ref$fieldId === void 0 ? 'countryField' : _ref$fieldId, _ref$filterList = _ref.filterList, filterList = _ref$filterList === void 0 ? [] : _ref$filterList, _ref$hasError = _ref.hasError, hasError = _ref$hasError === void 0 ? false : _ref$hasError, _ref$inputId = _ref.inputId, inputId = _ref$inputId === void 0 ? 'country' : _ref$inputId, _ref$isB2b = _ref.isB2b, isB2b = _ref$isB2b === void 0 ? false : _ref$isB2b, _ref$isDisabled = _ref.isDisabled, isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled, _ref$isPlaceholderDis = _ref.isPlaceholderDisabled, isPlaceholderDisabled = _ref$isPlaceholderDis === void 0 ? false : _ref$isPlaceholderDis, value = _ref.value, _ref$label = _ref.label, label = _ref$label === void 0 ? "Country".concat(isB2b ? '/Region' : '') : _ref$label, _ref$errorText = _ref.errorText, errorText = _ref$errorText === void 0 ? "Please select your country".concat(isB2b ? '/region' : '') : _ref$errorText; var selectWrapperClassName = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--select', { 'o-forms-input--invalid': hasError }]); var selectProps = { id: inputId, 'aria-required': true, required: true, name: inputId, 'data-trackable': dataTrackable, disabled: isDisabled }; var countries = (0, _countries.getCountries)({ filter: filterList, value: value }); var createOption = function createOption(country) { return /*#__PURE__*/_react["default"].createElement("option", { key: country.code, value: country.code, selected: country.selected }, country.name); }; var createOptGroup = function createOptGroup(country) { return /*#__PURE__*/_react["default"].createElement("optgroup", { key: country.label, label: country.label }, country.countries.map(function (country) { return createOption(country); })); }; var createSelect = function createSelect(countries) { return /*#__PURE__*/_react["default"].createElement("select", selectProps, /*#__PURE__*/_react["default"].createElement("option", { value: "", disabled: isPlaceholderDisabled }, "Please select a country", isB2b ? '/region' : ''), countries.map(function (country) { return country.label ? createOptGroup(country) : createOption(country); })); }; var fieldErrorClassNames = (0, _classnames["default"])(['o-forms-input__error', { 'additional-field-information__with-field-error': additionalFieldInformation }]); return /*#__PURE__*/_react["default"].createElement("label", { id: fieldId, className: "o-forms-field ncf__validation-error", "data-validate": "required", htmlFor: selectProps.id }, /*#__PURE__*/_react["default"].createElement("span", { className: "o-forms-title" }, /*#__PURE__*/_react["default"].createElement("span", { className: "o-forms-title__main" }, label)), /*#__PURE__*/_react["default"].createElement("span", { className: selectWrapperClassName }, createSelect(countries), /*#__PURE__*/_react["default"].createElement("span", { className: fieldErrorClassNames }, errorText), additionalFieldInformation ? /*#__PURE__*/_react["default"].createElement("p", { className: "additional-field-information" }, additionalFieldInformation) : null)); } Country.propTypes = { additionalFieldInformation: _propTypes["default"].node, dataTrackable: _propTypes["default"].string, errorText: _propTypes["default"].string, fieldId: _propTypes["default"].string, filterList: _propTypes["default"].arrayOf(_propTypes["default"].string), hasError: _propTypes["default"].bool, inputId: _propTypes["default"].string, isB2b: _propTypes["default"].bool, isDisabled: _propTypes["default"].bool, isPlaceholderDisabled: _propTypes["default"].bool, label: _propTypes["default"].string, value: _propTypes["default"].string };