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).

77 lines (75 loc) 3.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.DeliveryOption = DeliveryOption; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _deliveryOptionMessages = require("../utils/delivery-option-messages"); var _supportedCountries = require("../helpers/supportedCountries"); function DeliveryOption(_ref) { var _ref$fieldId = _ref.fieldId, fieldId = _ref$fieldId === void 0 ? 'deliveryOptionField' : _ref$fieldId, country = _ref.country, _ref$productCode = _ref.productCode, productCode = _ref$productCode === void 0 ? undefined : _ref$productCode, _ref$options = _ref.options, options = _ref$options === void 0 ? [] : _ref$options, _ref$isSingle = _ref.isSingle, isSingle = _ref$isSingle === void 0 ? false : _ref$isSingle; var divClassName = (0, _classnames["default"])(['o-forms-field', 'ncf__delivery-option', { 'ncf__delivery-option--single': isSingle }]); var FTShippingZone = (0, _supportedCountries.identifyFTShippingZone)(country); return /*#__PURE__*/_react["default"].createElement("div", { id: fieldId, className: divClassName, role: "group", "aria-label": "Delivery options" }, /*#__PURE__*/_react["default"].createElement("span", { className: "o-forms-input o-forms-input--radio-round" }, options.map(function (option) { var value = option.value, isValidDeliveryOption = option.isValidDeliveryOption, isSelected = option.isSelected; var deliveryOptionValue = (0, _deliveryOptionMessages.getDeliveryOption)(productCode, option, FTShippingZone); if (!isValidDeliveryOption || !deliveryOptionValue) { return null; } // in case the delivery option has a custom ID var id = deliveryOptionValue.customId || value; var inputProps = { type: 'radio', id: id, name: 'deliveryOption', value: value, className: 'ncf__delivery-option__input', defaultChecked: isSelected }; return /*#__PURE__*/_react["default"].createElement("label", { key: value, className: "ncf__delivery-option__item", htmlFor: id }, /*#__PURE__*/_react["default"].createElement("input", inputProps), /*#__PURE__*/_react["default"].createElement("span", { className: "o-forms-input__label ncf__delivery-option__label" }, /*#__PURE__*/_react["default"].createElement("span", { className: "ncf__delivery-option__title o-forms-title__main" }, deliveryOptionValue.title), /*#__PURE__*/_react["default"].createElement("div", { className: "ncf__delivery-option__description" }, deliveryOptionValue.description))); }))); } DeliveryOption.propTypes = { country: _propTypes["default"].oneOf(_supportedCountries.countriesSupportedISO).isRequired, productCode: _propTypes["default"].string, options: _propTypes["default"].arrayOf(_propTypes["default"].shape({ value: _propTypes["default"].oneOf(['PV', 'HD', 'EV']), isSelected: _propTypes["default"].bool, deliveryOnPublicationDate: _propTypes["default"].bool, flightMarket: _propTypes["default"].bool, mailDelivery: _propTypes["default"].bool })), isSingle: _propTypes["default"].bool };