@financial-times/n-conversion-forms 31.0.1 → 31.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/.storybook/main.js +18 -10
  2. package/.toolkitrc.yml +7 -0
  3. package/.toolkitstate/ci.json +2 -2
  4. package/dist/accept-terms-business.jsx +74 -0
  5. package/dist/accept-terms-business.spec.jsx +40 -0
  6. package/dist/accept-terms-privacy-policy.jsx +71 -0
  7. package/dist/accept-terms-subscription.jsx +150 -0
  8. package/dist/accept-terms.jsx +217 -0
  9. package/dist/app-banner.jsx +51 -0
  10. package/dist/b2c-partnership-confirmation.jsx +64 -0
  11. package/dist/billing-city.jsx +58 -0
  12. package/dist/billing-country.jsx +43 -0
  13. package/dist/billing-postcode.jsx +76 -0
  14. package/dist/company-name.jsx +78 -0
  15. package/dist/confirmation.jsx +117 -0
  16. package/dist/continue-reading.jsx +45 -0
  17. package/dist/country.jsx +106 -0
  18. package/dist/customer-care.jsx +52 -0
  19. package/dist/debug.jsx +50 -0
  20. package/dist/decision-maker.jsx +72 -0
  21. package/dist/deferred-billing-terms.jsx +112 -0
  22. package/dist/delivery-address-map.jsx +184 -0
  23. package/dist/delivery-address-type.jsx +74 -0
  24. package/dist/delivery-address.jsx +123 -0
  25. package/dist/delivery-city.jsx +70 -0
  26. package/dist/delivery-county.jsx +48 -0
  27. package/dist/delivery-instructions.jsx +123 -0
  28. package/dist/delivery-option.jsx +77 -0
  29. package/dist/delivery-po-box.jsx +75 -0
  30. package/dist/delivery-postcode.jsx +116 -0
  31. package/dist/delivery-security-instructions.jsx +72 -0
  32. package/dist/delivery-start-date.jsx +77 -0
  33. package/dist/education-job-title.jsx +67 -0
  34. package/dist/email.jsx +90 -0
  35. package/dist/error-page.jsx +45 -0
  36. package/dist/fieldset.jsx +58 -0
  37. package/dist/first-name.jsx +73 -0
  38. package/dist/form.jsx +29 -0
  39. package/dist/google-sign-in.jsx +24 -0
  40. package/dist/graduation-date.jsx +112 -0
  41. package/dist/index.jsx +432 -0
  42. package/dist/industry.jsx +81 -0
  43. package/dist/job-title.jsx +65 -0
  44. package/dist/last-name.jsx +73 -0
  45. package/dist/licence-confirmation.jsx +67 -0
  46. package/dist/licence-header.jsx +52 -0
  47. package/dist/licence-sign-in.jsx +36 -0
  48. package/dist/licence-title.jsx +46 -0
  49. package/dist/lite-sub-confirmation.jsx +118 -0
  50. package/dist/loader.jsx +54 -0
  51. package/dist/message.jsx +101 -0
  52. package/dist/message.spec.jsx +96 -0
  53. package/dist/organisation.jsx +73 -0
  54. package/dist/package-change.jsx +38 -0
  55. package/dist/password.jsx +95 -0
  56. package/dist/payment-term.jsx +328 -0
  57. package/dist/payment-type.jsx +213 -0
  58. package/dist/personal-title.jsx +94 -0
  59. package/dist/phone.jsx +85 -0
  60. package/dist/position.jsx +86 -0
  61. package/dist/progress-indicator.jsx +66 -0
  62. package/dist/province.jsx +80 -0
  63. package/dist/registration-confirmation.jsx +108 -0
  64. package/dist/responsibility.jsx +84 -0
  65. package/dist/section.jsx +20 -0
  66. package/dist/seven-day-pass-experiment-confirmation.jsx +93 -0
  67. package/dist/state.jsx +80 -0
  68. package/dist/submit.jsx +52 -0
  69. package/dist/text-input.jsx +78 -0
  70. package/dist/trial-banner.jsx +29 -0
  71. package/package.json +19 -19
  72. package/toolkit/run-storybook/.toolkitrc.yml +1 -0
  73. package/toolkit/run-storybook/index.js +17 -0
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DeliverySecurityInstructions = DeliverySecurityInstructions;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _classnames = _interopRequireDefault(require("classnames"));
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ function DeliverySecurityInstructions(_ref) {
15
+ var _ref$fieldId = _ref.fieldId,
16
+ fieldId = _ref$fieldId === void 0 ? 'deliverySecurityInstructionsField' : _ref$fieldId,
17
+ _ref$hasError = _ref.hasError,
18
+ hasError = _ref$hasError === void 0 ? false : _ref$hasError,
19
+ _ref$inputId = _ref.inputId,
20
+ inputId = _ref$inputId === void 0 ? 'deliverySecurityInstructions' : _ref$inputId,
21
+ _ref$maxlength = _ref.maxlength,
22
+ maxlength = _ref$maxlength === void 0 ? null : _ref$maxlength,
23
+ _ref$rows = _ref.rows,
24
+ rows = _ref$rows === void 0 ? null : _ref$rows,
25
+ _ref$isDisabled = _ref.isDisabled,
26
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
27
+ _ref$placeholder = _ref.placeholder,
28
+ placeholder = _ref$placeholder === void 0 ? '' : _ref$placeholder,
29
+ _ref$value = _ref.value,
30
+ value = _ref$value === void 0 ? '' : _ref$value;
31
+ var textAreaWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--textarea', {
32
+ 'o-forms-input--invalid': hasError
33
+ }]);
34
+ var defaultPlaceholder = 'Please enter any secure information here, e.g. security gate access codes';
35
+ var textAreaProps = _objectSpread(_objectSpread(_objectSpread({
36
+ id: inputId,
37
+ name: inputId
38
+ }, maxlength && {
39
+ maxLength: maxlength
40
+ }), rows && {
41
+ rows: rows
42
+ }), {}, {
43
+ 'data-trackable': 'field-deliverySecurityInstructions',
44
+ placeholder: placeholder ? placeholder : defaultPlaceholder,
45
+ disabled: isDisabled,
46
+ defaultValue: value
47
+ });
48
+ return /*#__PURE__*/_react["default"].createElement("label", {
49
+ id: fieldId,
50
+ className: "o-forms-field o-forms-field--optional",
51
+ "data-validate": "required",
52
+ htmlFor: inputId
53
+ }, /*#__PURE__*/_react["default"].createElement("span", {
54
+ className: "o-forms-title"
55
+ }, /*#__PURE__*/_react["default"].createElement("span", {
56
+ className: "o-forms-title__main"
57
+ }, "Security instructions")), /*#__PURE__*/_react["default"].createElement("span", {
58
+ className: textAreaWrapperClassNames
59
+ }, /*#__PURE__*/_react["default"].createElement("textarea", textAreaProps)), /*#__PURE__*/_react["default"].createElement("span", {
60
+ className: "additional-field-information"
61
+ }, "NB. Details supplied here will not appear on packaging."));
62
+ }
63
+ DeliverySecurityInstructions.propTypes = {
64
+ fieldId: _propTypes["default"].string,
65
+ hasError: _propTypes["default"].bool,
66
+ inputId: _propTypes["default"].string,
67
+ maxlength: _propTypes["default"].number,
68
+ rows: _propTypes["default"].number,
69
+ isDisabled: _propTypes["default"].bool,
70
+ value: _propTypes["default"].string,
71
+ placeholder: _propTypes["default"].string
72
+ };
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DeliveryStartDate = DeliveryStartDate;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _classnames = _interopRequireDefault(require("classnames"));
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ function DeliveryStartDate(_ref) {
15
+ var _ref$hasError = _ref.hasError,
16
+ hasError = _ref$hasError === void 0 ? false : _ref$hasError,
17
+ _ref$date = _ref.date,
18
+ date = _ref$date === void 0 ? '' : _ref$date,
19
+ _ref$value = _ref.value,
20
+ value = _ref$value === void 0 ? '' : _ref$value,
21
+ _ref$min = _ref.min,
22
+ min = _ref$min === void 0 ? null : _ref$min,
23
+ _ref$max = _ref.max,
24
+ max = _ref$max === void 0 ? null : _ref$max,
25
+ _ref$isDisabled = _ref.isDisabled,
26
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
27
+ _ref$isAddressUpdate = _ref.isAddressUpdate,
28
+ isAddressUpdate = _ref$isAddressUpdate === void 0 ? false : _ref$isAddressUpdate;
29
+ var inputWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--text', {
30
+ 'o-forms-input--invalid': hasError
31
+ }]);
32
+ var inputProps = _objectSpread(_objectSpread(_objectSpread({
33
+ type: 'date',
34
+ id: 'deliveryStartDate',
35
+ name: 'deliveryStartDate'
36
+ }, min && {
37
+ min: min
38
+ }), max && {
39
+ max: max
40
+ }), {}, {
41
+ 'data-trackable': 'field-deliveryStartDate',
42
+ 'aria-required': 'true',
43
+ required: true,
44
+ disabled: isDisabled,
45
+ defaultValue: value
46
+ });
47
+ var startMessage = isAddressUpdate ? 'We’ll start delivering to this address from:' : 'Your print subscription will start from:';
48
+ return /*#__PURE__*/_react["default"].createElement("label", {
49
+ id: "deliveryStartDateField",
50
+ className: "o-forms-field ncf__validation-error",
51
+ "data-validate": "required",
52
+ htmlFor: inputProps.id
53
+ }, /*#__PURE__*/_react["default"].createElement("span", {
54
+ className: "o-forms-title"
55
+ }, /*#__PURE__*/_react["default"].createElement("span", {
56
+ className: "o-forms-title__main",
57
+ id: "start-date-picker-title-span"
58
+ }, "Delivery start date"), /*#__PURE__*/_react["default"].createElement("span", {
59
+ className: "o-forms-title__prompt"
60
+ }, "Earliest available delivery date: ", date)), /*#__PURE__*/_react["default"].createElement("span", {
61
+ className: inputWrapperClassNames
62
+ }, /*#__PURE__*/_react["default"].createElement("input", inputProps), /*#__PURE__*/_react["default"].createElement("span", {
63
+ className: "o-forms-input__error"
64
+ }, "Please select a valid start date")), /*#__PURE__*/_react["default"].createElement("p", null, startMessage, " ", /*#__PURE__*/_react["default"].createElement("strong", {
65
+ className: "js-start-date-text"
66
+ }, date)));
67
+ }
68
+ DeliveryStartDate.propTypes = {
69
+ hasError: _propTypes["default"].bool,
70
+ date: _propTypes["default"].node,
71
+ // could be a string or a component that formats the string
72
+ value: _propTypes["default"].string,
73
+ min: _propTypes["default"].string,
74
+ max: _propTypes["default"].string,
75
+ isDisabled: _propTypes["default"].bool,
76
+ isAddressUpdate: _propTypes["default"].bool
77
+ };
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.EducationJobTitle = EducationJobTitle;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ function EducationJobTitle(_ref) {
12
+ var _ref$value = _ref.value,
13
+ value = _ref$value === void 0 ? '' : _ref$value,
14
+ _ref$isDisabled = _ref.isDisabled,
15
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
16
+ _ref$hasError = _ref.hasError,
17
+ hasError = _ref$hasError === void 0 ? false : _ref$hasError,
18
+ _ref$fieldId = _ref.fieldId,
19
+ fieldId = _ref$fieldId === void 0 ? 'jobTitleField' : _ref$fieldId,
20
+ _ref$inputId = _ref.inputId,
21
+ inputId = _ref$inputId === void 0 ? 'jobTitle' : _ref$inputId,
22
+ _ref$inputName = _ref.inputName,
23
+ inputName = _ref$inputName === void 0 ? 'jobTitle' : _ref$inputName,
24
+ _ref$isUSContract = _ref.isUSContract,
25
+ isUSContract = _ref$isUSContract === void 0 ? false : _ref$isUSContract;
26
+ var inputWrapperClassName = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--select', {
27
+ 'o-forms-input--invalid': hasError
28
+ }]);
29
+ var availableJobTitles = ['Faculty/Other'].concat(isUSContract ? ['Graduate Student', 'Undergraduate Student'] : ['Student']);
30
+ return /*#__PURE__*/_react["default"].createElement("label", {
31
+ id: fieldId,
32
+ className: "o-forms-field",
33
+ "data-validate": "required",
34
+ htmlFor: inputId
35
+ }, /*#__PURE__*/_react["default"].createElement("span", {
36
+ className: "o-forms-title"
37
+ }, /*#__PURE__*/_react["default"].createElement("span", {
38
+ className: "o-forms-title__main"
39
+ }, "Occupation")), /*#__PURE__*/_react["default"].createElement("span", {
40
+ className: inputWrapperClassName
41
+ }, /*#__PURE__*/_react["default"].createElement("select", {
42
+ id: inputId,
43
+ name: inputName,
44
+ "data-trackable": "job-title",
45
+ "aria-required": "true",
46
+ required: true,
47
+ disabled: isDisabled,
48
+ defaultValue: value
49
+ }, /*#__PURE__*/_react["default"].createElement("option", {
50
+ value: ""
51
+ }, "Select your occupation"), availableJobTitles.map(function (jobTitle, index) {
52
+ return /*#__PURE__*/_react["default"].createElement("option", {
53
+ key: index
54
+ }, jobTitle);
55
+ })), /*#__PURE__*/_react["default"].createElement("span", {
56
+ className: "o-forms-input__error"
57
+ }, "Please enter your occupation.")));
58
+ }
59
+ EducationJobTitle.propTypes = {
60
+ value: _propTypes["default"].string,
61
+ isDisabled: _propTypes["default"].bool,
62
+ hasError: _propTypes["default"].bool,
63
+ fieldId: _propTypes["default"].string,
64
+ inputId: _propTypes["default"].string,
65
+ inputName: _propTypes["default"].string,
66
+ isUSContract: _propTypes["default"].bool
67
+ };
package/dist/email.jsx ADDED
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Email = Email;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ function Email(_ref) {
12
+ var _ref$dataTrackable = _ref.dataTrackable,
13
+ dataTrackable = _ref$dataTrackable === void 0 ? 'field-email' : _ref$dataTrackable,
14
+ _ref$description = _ref.description,
15
+ description = _ref$description === void 0 ? 'Please enter an email address' : _ref$description,
16
+ _ref$errorText = _ref.errorText,
17
+ errorText = _ref$errorText === void 0 ? 'This email address is not valid' : _ref$errorText,
18
+ _ref$fieldId = _ref.fieldId,
19
+ fieldId = _ref$fieldId === void 0 ? 'emailField' : _ref$fieldId,
20
+ _ref$hasError = _ref.hasError,
21
+ hasError = _ref$hasError === void 0 ? false : _ref$hasError,
22
+ _ref$inputId = _ref.inputId,
23
+ inputId = _ref$inputId === void 0 ? 'email' : _ref$inputId,
24
+ _ref$isB2b = _ref.isB2b,
25
+ isB2b = _ref$isB2b === void 0 ? false : _ref$isB2b,
26
+ _ref$isDisabled = _ref.isDisabled,
27
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
28
+ _ref$label = _ref.label,
29
+ label = _ref$label === void 0 ? '' : _ref$label,
30
+ _ref$placeHolder = _ref.placeHolder,
31
+ placeHolder = _ref$placeHolder === void 0 ? 'Enter your email address' : _ref$placeHolder,
32
+ _ref$value = _ref.value,
33
+ value = _ref$value === void 0 ? '' : _ref$value,
34
+ _ref$isEducationalLic = _ref.isEducationalLicence,
35
+ isEducationalLicence = _ref$isEducationalLic === void 0 ? false : _ref$isEducationalLic,
36
+ _ref$isB2cPartnership = _ref.isB2cPartnershipLicence,
37
+ isB2cPartnershipLicence = _ref$isB2cPartnership === void 0 ? false : _ref$isB2cPartnership,
38
+ _ref$showTitle = _ref.showTitle,
39
+ showTitle = _ref$showTitle === void 0 ? true : _ref$showTitle;
40
+ var labelText = label || (isB2b && !(isEducationalLicence || isB2cPartnershipLicence) ? 'Work email address' : 'Email address');
41
+ var inputWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--text', {
42
+ 'o-forms-input--invalid': hasError
43
+ }]);
44
+ var emailTitleClassNames = (0, _classnames["default"])(['o-forms-title', {
45
+ ncf__hidden: !showTitle
46
+ }]);
47
+ return /*#__PURE__*/_react["default"].createElement("label", {
48
+ id: fieldId,
49
+ className: "o-forms-field ncf__validation-error",
50
+ "data-validate": "required,email",
51
+ htmlFor: inputId
52
+ }, /*#__PURE__*/_react["default"].createElement("span", {
53
+ className: emailTitleClassNames
54
+ }, /*#__PURE__*/_react["default"].createElement("span", {
55
+ className: "o-forms-title__main"
56
+ }, labelText), description && /*#__PURE__*/_react["default"].createElement("span", {
57
+ className: "o-forms-title__prompt"
58
+ }, description)), /*#__PURE__*/_react["default"].createElement("span", {
59
+ className: inputWrapperClassNames
60
+ }, /*#__PURE__*/_react["default"].createElement("input", {
61
+ type: "email",
62
+ id: inputId,
63
+ name: inputId,
64
+ placeholder: placeHolder,
65
+ autoComplete: "email",
66
+ "data-trackable": dataTrackable,
67
+ "aria-required": "true",
68
+ required: true,
69
+ disabled: isDisabled,
70
+ defaultValue: value
71
+ }), /*#__PURE__*/_react["default"].createElement("span", {
72
+ className: "o-forms-input__error"
73
+ }, errorText)));
74
+ }
75
+ Email.propTypes = {
76
+ dataTrackable: _propTypes["default"].string,
77
+ description: _propTypes["default"].string,
78
+ errorText: _propTypes["default"].string,
79
+ fieldId: _propTypes["default"].string,
80
+ hasError: _propTypes["default"].bool,
81
+ inputId: _propTypes["default"].string,
82
+ isB2b: _propTypes["default"].bool,
83
+ isDisabled: _propTypes["default"].bool,
84
+ label: _propTypes["default"].string,
85
+ placeHolder: _propTypes["default"].string,
86
+ value: _propTypes["default"].string,
87
+ isEducationalLicence: _propTypes["default"].bool,
88
+ isB2cPartnershipLicence: _propTypes["default"].bool,
89
+ showTitle: _propTypes["default"].bool
90
+ };
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ErrorPage = ErrorPage;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ function ErrorPage(_ref) {
11
+ var children = _ref.children,
12
+ _ref$header = _ref.header,
13
+ header = _ref$header === void 0 ? 'Sorry, something went wrong' : _ref$header,
14
+ _ref$message = _ref.message,
15
+ message = _ref$message === void 0 ? 'Speak to our Customer Care team now so we can help.' : _ref$message;
16
+ return /*#__PURE__*/_react["default"].createElement("div", {
17
+ className: "ncf__wrapper ncf__center ncf__error-page"
18
+ }, /*#__PURE__*/_react["default"].createElement("div", {
19
+ className: "ncf__icon ncf__icon--error ncf__icon--large"
20
+ }), /*#__PURE__*/_react["default"].createElement("div", {
21
+ className: "ncf__paragraph"
22
+ }, /*#__PURE__*/_react["default"].createElement("h1", {
23
+ className: "ncf__header"
24
+ }, header), /*#__PURE__*/_react["default"].createElement("p", {
25
+ id: "error-message"
26
+ }, message)), /*#__PURE__*/_react["default"].createElement("div", {
27
+ className: "ncf__error-page__content"
28
+ }, children), /*#__PURE__*/_react["default"].createElement("div", {
29
+ className: "ncf__paragraph"
30
+ }, /*#__PURE__*/_react["default"].createElement("p", null, "International Toll Free Number"), /*#__PURE__*/_react["default"].createElement("a", {
31
+ id: "error-international-number",
32
+ className: "ncf__header ncf__link",
33
+ href: "tel:+80007056477"
34
+ }, "+ 800 0705 6477")), /*#__PURE__*/_react["default"].createElement("div", {
35
+ className: "ncf__paragraph"
36
+ }, /*#__PURE__*/_react["default"].createElement("a", {
37
+ className: "ncf__link",
38
+ href: "https://help.ft.com/help/contact-us/"
39
+ }, "Find a local phone number")));
40
+ }
41
+ ErrorPage.propTypes = {
42
+ children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]),
43
+ header: _propTypes["default"].string,
44
+ message: _propTypes["default"].string
45
+ };
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Fieldset = Fieldset;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _classnames = _interopRequireDefault(require("classnames"));
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ function Fieldset(_ref) {
15
+ var _ref$children = _ref.children,
16
+ children = _ref$children === void 0 ? null : _ref$children,
17
+ _ref$name = _ref.name,
18
+ name = _ref$name === void 0 ? null : _ref$name,
19
+ _ref$legend = _ref.legend,
20
+ legend = _ref$legend === void 0 ? null : _ref$legend,
21
+ _ref$hideLegend = _ref.hideLegend,
22
+ hideLegend = _ref$hideLegend === void 0 ? false : _ref$hideLegend,
23
+ _ref$headingLevel = _ref.headingLevel,
24
+ HeadingLevel = _ref$headingLevel === void 0 ? null : _ref$headingLevel,
25
+ _ref$header = _ref.header,
26
+ header = _ref$header === void 0 ? null : _ref$header,
27
+ _ref$descriptor = _ref.descriptor,
28
+ descriptor = _ref$descriptor === void 0 ? null : _ref$descriptor;
29
+ var fieldsetProps = _objectSpread(_objectSpread({}, name && {
30
+ name: name
31
+ }), {}, {
32
+ className: 'ncf__fieldset'
33
+ });
34
+ var legendClassName = (0, _classnames["default"])(['ncf__legend', {
35
+ 'o-normalise-visually-hidden': hideLegend
36
+ }]);
37
+ var legendElement = legend ? /*#__PURE__*/_react["default"].createElement("legend", {
38
+ className: legendClassName
39
+ }, legend) : null;
40
+ var headingLevelElement = HeadingLevel ? /*#__PURE__*/_react["default"].createElement(HeadingLevel, {
41
+ className: "ncf__header"
42
+ }, header) : null;
43
+ var descriptorElement = descriptor ? /*#__PURE__*/_react["default"].createElement("p", {
44
+ className: "ncf__fieldset-descriptor"
45
+ }, descriptor) : null;
46
+ return /*#__PURE__*/_react["default"].createElement("fieldset", fieldsetProps, legendElement, headingLevelElement, descriptorElement, /*#__PURE__*/_react["default"].createElement("div", {
47
+ className: "ncf__fields"
48
+ }, children));
49
+ }
50
+ Fieldset.propTypes = {
51
+ children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]),
52
+ name: _propTypes["default"].string,
53
+ legend: _propTypes["default"].string,
54
+ hideLegend: _propTypes["default"].bool,
55
+ headingLevel: _propTypes["default"].string,
56
+ header: _propTypes["default"].node,
57
+ descriptor: _propTypes["default"].node
58
+ };
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.FirstName = FirstName;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ function FirstName(_ref) {
12
+ var _ref$dataTrackable = _ref.dataTrackable,
13
+ dataTrackable = _ref$dataTrackable === void 0 ? 'field-name' : _ref$dataTrackable,
14
+ _ref$errorText = _ref.errorText,
15
+ errorText = _ref$errorText === void 0 ? 'Please enter your first name' : _ref$errorText,
16
+ _ref$fieldId = _ref.fieldId,
17
+ fieldId = _ref$fieldId === void 0 ? 'firstNameField' : _ref$fieldId,
18
+ _ref$hasError = _ref.hasError,
19
+ hasError = _ref$hasError === void 0 ? false : _ref$hasError,
20
+ _ref$inputId = _ref.inputId,
21
+ inputId = _ref$inputId === void 0 ? 'firstName' : _ref$inputId,
22
+ inputName = _ref.inputName,
23
+ _ref$isDisabled = _ref.isDisabled,
24
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
25
+ _ref$label = _ref.label,
26
+ label = _ref$label === void 0 ? 'First name' : _ref$label,
27
+ _ref$placeHolder = _ref.placeHolder,
28
+ placeHolder = _ref$placeHolder === void 0 ? 'Enter your first name' : _ref$placeHolder,
29
+ _ref$value = _ref.value,
30
+ value = _ref$value === void 0 ? '' : _ref$value;
31
+ // Use inputId if inputName is not explicitly passed.
32
+ inputName = inputName || inputId;
33
+ var inputWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--text', {
34
+ 'o-forms-input--invalid': hasError
35
+ }]);
36
+ return /*#__PURE__*/_react["default"].createElement("label", {
37
+ id: fieldId,
38
+ className: "o-forms-field ncf__validation-error",
39
+ "data-validate": "required",
40
+ htmlFor: inputId
41
+ }, /*#__PURE__*/_react["default"].createElement("span", {
42
+ className: "o-forms-title"
43
+ }, /*#__PURE__*/_react["default"].createElement("span", {
44
+ className: "o-forms-title__main"
45
+ }, label)), /*#__PURE__*/_react["default"].createElement("span", {
46
+ className: inputWrapperClassNames
47
+ }, /*#__PURE__*/_react["default"].createElement("input", {
48
+ type: "text",
49
+ id: inputId,
50
+ name: inputName,
51
+ placeholder: placeHolder,
52
+ autoComplete: "given-name",
53
+ "data-trackable": dataTrackable,
54
+ "aria-required": "true",
55
+ required: true,
56
+ disabled: isDisabled,
57
+ defaultValue: value
58
+ }), /*#__PURE__*/_react["default"].createElement("span", {
59
+ className: "o-forms-input__error"
60
+ }, errorText)));
61
+ }
62
+ FirstName.propTypes = {
63
+ dataTrackable: _propTypes["default"].string,
64
+ errorText: _propTypes["default"].string,
65
+ fieldId: _propTypes["default"].string,
66
+ hasError: _propTypes["default"].bool,
67
+ inputId: _propTypes["default"].string,
68
+ inputName: _propTypes["default"].string,
69
+ isDisabled: _propTypes["default"].bool,
70
+ label: _propTypes["default"].string,
71
+ placeHolder: _propTypes["default"].string,
72
+ value: _propTypes["default"].string
73
+ };
package/dist/form.jsx ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Form = Form;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ function Form(_ref) {
11
+ var children = _ref.children,
12
+ _ref$action = _ref.action,
13
+ action = _ref$action === void 0 ? '' : _ref$action,
14
+ _ref$method = _ref.method,
15
+ method = _ref$method === void 0 ? 'POST' : _ref$method;
16
+ return /*#__PURE__*/_react["default"].createElement("div", {
17
+ className: "ncf__wrapper"
18
+ }, /*#__PURE__*/_react["default"].createElement("form", {
19
+ className: "ncf",
20
+ action: action,
21
+ method: method,
22
+ noValidate: true
23
+ }, children));
24
+ }
25
+ Form.propTypes = {
26
+ children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]),
27
+ action: _propTypes["default"].string,
28
+ method: _propTypes["default"].string
29
+ };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.GoogleSignIn = GoogleSignIn;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ function GoogleSignIn(_ref) {
11
+ var signInRedirectUrl = _ref.signInRedirectUrl;
12
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("link", {
13
+ href: "https://fonts.googleapis.com/css?family=Roboto",
14
+ rel: "stylesheet"
15
+ }), /*#__PURE__*/_react["default"].createElement("base", {
16
+ target: "_parent"
17
+ }), /*#__PURE__*/_react["default"].createElement("a", {
18
+ className: "google_button",
19
+ href: signInRedirectUrl
20
+ }, "Sign in with Google"));
21
+ }
22
+ GoogleSignIn.propTypes = {
23
+ signInRedirectUrl: _propTypes["default"].string.isRequired
24
+ };
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Compliance = void 0;
8
+ exports.GraduationDate = GraduationDate;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+ var getMonthNameByIndex = function getMonthNameByIndex(index) {
14
+ return new Date(null, index, null).toLocaleDateString('en', {
15
+ month: 'long'
16
+ });
17
+ };
18
+ var Compliance = function Compliance() {
19
+ return /*#__PURE__*/_react["default"].createElement("div", {
20
+ id: "graduationDateCompliance",
21
+ className: "ncf__field ncf__gd-compliance"
22
+ }, /*#__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", {
23
+ className: "ncf__link--external",
24
+ href: "https://ft.com/",
25
+ title: "Financial Times",
26
+ target: "_blank",
27
+ rel: "noopener noreferrer"
28
+ }, "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", {
29
+ className: "ncf__link--external",
30
+ href: "http://www.ft.com/myft/alerts/",
31
+ title: "Financial Times",
32
+ target: "_blank",
33
+ rel: "noopener noreferrer"
34
+ }, "here")));
35
+ };
36
+ exports.Compliance = Compliance;
37
+ function GraduationDate(_ref) {
38
+ var value = _ref.value,
39
+ _ref$isDisabled = _ref.isDisabled,
40
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
41
+ _ref$isRequired = _ref.isRequired,
42
+ isRequired = _ref$isRequired === void 0 ? false : _ref$isRequired,
43
+ _ref$hasError = _ref.hasError,
44
+ hasError = _ref$hasError === void 0 ? false : _ref$hasError;
45
+ var currentYear = new Date().getUTCFullYear();
46
+ var earliestSelectableYear = currentYear - 4;
47
+ var defaultValues = value && value.trim().match(/^([0-9]{4})-(0[0-9]|1[012])-[0-9]{2}$/);
48
+ var _ref2 = defaultValues || [],
49
+ _ref3 = (0, _slicedToArray2["default"])(_ref2, 3),
50
+ defaultYear = _ref3[1],
51
+ defaultMonth = _ref3[2];
52
+ var inputWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--select', {
53
+ 'o-forms-input--invalid': hasError
54
+ }]);
55
+ return /*#__PURE__*/_react["default"].createElement("div", {
56
+ id: "graduationDateField",
57
+ className: "o-forms-field ncf__validation-error ncf__graduation-date",
58
+ "data-validate": "required"
59
+ }, /*#__PURE__*/_react["default"].createElement("span", {
60
+ className: "o-forms-title",
61
+ role: "group",
62
+ "aria-labelledby": "graduationTitleMain"
63
+ }, /*#__PURE__*/_react["default"].createElement("span", {
64
+ className: "o-forms-title__main",
65
+ id: "graduationTitleMain"
66
+ }, "Expected graduation date")), /*#__PURE__*/_react["default"].createElement("div", {
67
+ className: inputWrapperClassNames
68
+ }, /*#__PURE__*/_react["default"].createElement("div", {
69
+ className: "ncf__graduation-date__select-wrapper"
70
+ }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement("label", {
71
+ htmlFor: "graduationDateMonth"
72
+ }, "Month"), /*#__PURE__*/_react["default"].createElement("select", {
73
+ id: "graduationDateMonth",
74
+ name: "graduationDateMonth",
75
+ required: isRequired,
76
+ "aria-required": isRequired,
77
+ disabled: isDisabled,
78
+ defaultValue: defaultMonth
79
+ }, Array.from({
80
+ length: 12
81
+ }, function (_, index) {
82
+ return /*#__PURE__*/_react["default"].createElement("option", {
83
+ key: index,
84
+ value: (index + 1).toString(10).padStart(2, '0')
85
+ }, getMonthNameByIndex(index + 1));
86
+ }))), /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement("label", {
87
+ htmlFor: "graduationDateYear"
88
+ }, "Year"), /*#__PURE__*/_react["default"].createElement("select", {
89
+ id: "graduationDateYear",
90
+ name: "graduationDateYear",
91
+ required: isRequired,
92
+ "aria-required": isRequired,
93
+ disabled: isDisabled,
94
+ defaultValue: defaultYear
95
+ }, Array.from({
96
+ length: 9
97
+ }, function (_, index) {
98
+ var value = earliestSelectableYear + index;
99
+ return /*#__PURE__*/_react["default"].createElement("option", {
100
+ key: index,
101
+ value: value
102
+ }, value);
103
+ })))), /*#__PURE__*/_react["default"].createElement("span", {
104
+ className: "o-forms-input__error"
105
+ }, "Please select a valid graduation date")), /*#__PURE__*/_react["default"].createElement(Compliance, null));
106
+ }
107
+ GraduationDate.propTypes = {
108
+ value: _propTypes["default"].string,
109
+ isDisabled: _propTypes["default"].bool,
110
+ isRequired: _propTypes["default"].bool,
111
+ hasError: _propTypes["default"].bool
112
+ };