@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).
111 lines (110 loc) • 5.04 kB
JSX
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Compliance = void 0;
exports.GraduationDate = GraduationDate;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var getMonthNameByIndex = function getMonthNameByIndex(index) {
return new Date(null, index, null).toLocaleDateString('en', {
month: 'long'
});
};
var Compliance = exports.Compliance = function Compliance() {
return /*#__PURE__*/_react["default"].createElement("div", {
id: "graduationDateCompliance",
className: "ncf__field ncf__gd-compliance"
}, /*#__PURE__*/_react["default"].createElement("p", null, "We use the information you provide, and may share it with your institution, for the purposes of administering your institution's licence for", ' ', /*#__PURE__*/_react["default"].createElement("a", {
className: "ncf__link--external",
href: "https://ft.com/",
title: "Financial Times",
target: "_blank",
rel: "noopener noreferrer"
}, "FT.com.", ' ')), /*#__PURE__*/_react["default"].createElement("p", null, "We may also use it to ensure our communications to you are more relevant. If you do not wish us to do so, you can amend your preferences at any time", ' ', /*#__PURE__*/_react["default"].createElement("a", {
className: "ncf__link--external",
href: "http://www.ft.com/myft/alerts/",
title: "Financial Times",
target: "_blank",
rel: "noopener noreferrer"
}, "here")));
};
function GraduationDate(_ref) {
var value = _ref.value,
_ref$isDisabled = _ref.isDisabled,
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
_ref$isRequired = _ref.isRequired,
isRequired = _ref$isRequired === void 0 ? false : _ref$isRequired,
_ref$hasError = _ref.hasError,
hasError = _ref$hasError === void 0 ? false : _ref$hasError;
var currentYear = new Date().getUTCFullYear();
var earliestSelectableYear = currentYear - 4;
var defaultValues = value && value.trim().match(/^([0-9]{4})-(0[0-9]|1[012])-[0-9]{2}$/);
var _ref2 = defaultValues || [],
_ref3 = (0, _slicedToArray2["default"])(_ref2, 3),
defaultYear = _ref3[1],
defaultMonth = _ref3[2];
var inputWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--select', {
'o-forms-input--invalid': hasError
}]);
return /*#__PURE__*/_react["default"].createElement("div", {
id: "graduationDateField",
className: "o-forms-field ncf__validation-error ncf__graduation-date",
"data-validate": "required"
}, /*#__PURE__*/_react["default"].createElement("span", {
className: "o-forms-title",
role: "group",
"aria-labelledby": "graduationTitleMain"
}, /*#__PURE__*/_react["default"].createElement("span", {
className: "o-forms-title__main",
id: "graduationTitleMain"
}, "Expected graduation date")), /*#__PURE__*/_react["default"].createElement("div", {
className: inputWrapperClassNames
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "ncf__graduation-date__select-wrapper"
}, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement("label", {
htmlFor: "graduationDateMonth"
}, "Month"), /*#__PURE__*/_react["default"].createElement("select", {
id: "graduationDateMonth",
name: "graduationDateMonth",
required: isRequired,
"aria-required": isRequired,
disabled: isDisabled,
defaultValue: defaultMonth
}, Array.from({
length: 12
}, function (_, index) {
return /*#__PURE__*/_react["default"].createElement("option", {
key: index,
value: (index + 1).toString(10).padStart(2, '0')
}, getMonthNameByIndex(index + 1));
}))), /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement("label", {
htmlFor: "graduationDateYear"
}, "Year"), /*#__PURE__*/_react["default"].createElement("select", {
id: "graduationDateYear",
name: "graduationDateYear",
required: isRequired,
"aria-required": isRequired,
disabled: isDisabled,
defaultValue: defaultYear
}, Array.from({
length: 9
}, function (_, index) {
var value = earliestSelectableYear + index;
return /*#__PURE__*/_react["default"].createElement("option", {
key: index,
value: value
}, value);
})))), /*#__PURE__*/_react["default"].createElement("span", {
className: "o-forms-input__error"
}, "Please select a valid graduation date")), /*#__PURE__*/_react["default"].createElement(Compliance, null));
}
GraduationDate.propTypes = {
value: _propTypes["default"].string,
isDisabled: _propTypes["default"].bool,
isRequired: _propTypes["default"].bool,
hasError: _propTypes["default"].bool
};