@thecb/components 4.1.10 → 4.1.11-beta.0

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.
package/dist/index.cjs.js CHANGED
@@ -34265,17 +34265,33 @@ var AddressForm = function AddressForm(_ref) {
34265
34265
 
34266
34266
  var zipErrorMessages = (_zipErrorMessages = {}, _defineProperty(_zipErrorMessages, required.error, "Zip code is required"), _defineProperty(_zipErrorMessages, hasLength.error, "Zip code must be 5 or 9 digits"), _zipErrorMessages);
34267
34267
 
34268
- var stateProvinceErrorMessages = _defineProperty({}, required.error, "State or Province is required"); // const countryErrorMessages = {
34269
- // [required.error]: "Country is required"
34270
- // };
34268
+ var stateProvinceErrorMessages = _defineProperty({}, required.error, "State or Province is required");
34271
34269
 
34270
+ var countryErrorMessages = _defineProperty({}, required.error, "Country is required");
34272
34271
 
34273
34272
  var isUS = fields.country.rawValue === "US";
34274
34273
  return /*#__PURE__*/React__default.createElement(FormContainer$1, {
34275
34274
  variant: variant,
34276
34275
  role: "form",
34277
34276
  "aria-label": "Address"
34278
- }, /*#__PURE__*/React__default.createElement(FormInputColumn, null, /*#__PURE__*/React__default.createElement(FormInput$1, {
34277
+ }, /*#__PURE__*/React__default.createElement(FormInputColumn, null, /*#__PURE__*/React__default.createElement(CountryDropdown, {
34278
+ labelTextWhenNoError: "Country",
34279
+ errorMessages: countryErrorMessages,
34280
+ field: fields.country,
34281
+ onChange: function onChange(value) {
34282
+ actions.fields.country.set(value); // temporary measure to not dirty fields until
34283
+ // we can write a reset function for fields
34284
+
34285
+ if (fields.stateProvince.rawValue) {
34286
+ actions.fields.stateProvince.set("");
34287
+ }
34288
+
34289
+ if (fields.zip.rawValue) {
34290
+ actions.fields.zip.set("");
34291
+ }
34292
+ },
34293
+ showErrors: showErrors
34294
+ }), /*#__PURE__*/React__default.createElement(FormInput$1, {
34279
34295
  labelTextWhenNoError: "Address",
34280
34296
  errorMessages: street1ErrorMessages,
34281
34297
  field: fields.street1,
@@ -39327,6 +39343,8 @@ var expirationDateErrors = (_expirationDateErrors = {}, _defineProperty(_expirat
39327
39343
  var cvvErrors = (_cvvErrors = {}, _defineProperty(_cvvErrors, required.error, "CVV is required"), _defineProperty(_cvvErrors, hasLength.error, "CVV is invalid"), _cvvErrors);
39328
39344
  var zipCodeErrors = (_zipCodeErrors = {}, _defineProperty(_zipCodeErrors, required.error, "Zip code is required"), _defineProperty(_zipCodeErrors, hasLength.error, "Zip code is invalid"), _zipCodeErrors);
39329
39345
 
39346
+ var countryErrorMessages = _defineProperty({}, required.error, "Country is required");
39347
+
39330
39348
  var PaymentFormCard = function PaymentFormCard(_ref) {
39331
39349
  var _ref$variant = _ref.variant,
39332
39350
  variant = _ref$variant === void 0 ? "default" : _ref$variant,
@@ -39361,11 +39379,25 @@ var PaymentFormCard = function PaymentFormCard(_ref) {
39361
39379
  };
39362
39380
  }
39363
39381
  }, []);
39382
+ var isUS = fields.country.rawValue === "US";
39364
39383
  return /*#__PURE__*/React__default.createElement(FormContainer$1, {
39365
39384
  variant: variant,
39366
39385
  role: "form",
39367
39386
  "aria-label": "Card payment"
39368
- }, /*#__PURE__*/React__default.createElement(FormInputColumn, null, /*#__PURE__*/React__default.createElement(FormInput$1, {
39387
+ }, /*#__PURE__*/React__default.createElement(FormInputColumn, null, !hideZipCode && /*#__PURE__*/React__default.createElement(CountryDropdown, {
39388
+ labelTextWhenNoError: "Country",
39389
+ errorMessages: countryErrorMessages,
39390
+ field: fields.country,
39391
+ onChange: function onChange(value) {
39392
+ actions.fields.country.set(value); // temporary measure to not dirty fields until
39393
+ // we can write a reset function for fields
39394
+
39395
+ if (fields.zipCode.rawValue) {
39396
+ actions.fields.zipCode.set("");
39397
+ }
39398
+ },
39399
+ showErrors: showErrors
39400
+ }), /*#__PURE__*/React__default.createElement(FormInput$1, {
39369
39401
  labelTextWhenNoError: "Name on card",
39370
39402
  errorMessages: nameOnCardErrors,
39371
39403
  field: fields.nameOnCard,
@@ -39410,6 +39442,8 @@ var PaymentFormCard = function PaymentFormCard(_ref) {
39410
39442
  padding: isMobile ? "0" : "0 0.5rem 0 0",
39411
39443
  width: isMobile ? "100%" : "50%"
39412
39444
  }, /*#__PURE__*/React__default.createElement(FormInput$1, {
39445
+ isNum: isUS,
39446
+ formatter: isUS ? zipFormat : null,
39413
39447
  labelTextWhenNoError: "Zip code",
39414
39448
  errorMessages: zipCodeErrors,
39415
39449
  field: fields.zipCode,
@@ -39439,6 +39473,10 @@ var PaymentFormCard = function PaymentFormCard(_ref) {
39439
39473
  };
39440
39474
 
39441
39475
  var formConfig$7 = {
39476
+ country: {
39477
+ defaultValue: "US",
39478
+ validators: [required()]
39479
+ },
39442
39480
  nameOnCard: {
39443
39481
  validators: [required()]
39444
39482
  },
@@ -39455,8 +39493,8 @@ var formConfig$7 = {
39455
39493
  constraints: [onlyIntegers(), hasLength(0, 4)]
39456
39494
  },
39457
39495
  zipCode: {
39458
- validators: [required(), hasLength(5, 5)],
39459
- constraints: [onlyIntegers(), hasLength(0, 5)]
39496
+ validators: [required(), validateWhen(validateWhen(hasLength(5, 5), hasLength(0, 5)), matchesRegex("US"), "country"), validateWhen(validateWhen(hasLength(9, 9), hasLength(6, 9)), matchesRegex("US"), "country")],
39497
+ constraints: [validateWhen(onlyIntegers(), matchesRegex("US"), "country"), validateWhen(hasLength(0, 9), matchesRegex("US"), "country")]
39460
39498
  }
39461
39499
  };
39462
39500
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thecb/components",
3
- "version": "4.1.10",
3
+ "version": "4.1.11-beta.0",
4
4
  "description": "Common lib for CityBase react components",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -3,7 +3,7 @@ import { required, hasLength } from "redux-freeform";
3
3
  import styled from "styled-components";
4
4
  import StateProvinceDropdown from "../../atoms/state-province-dropdown";
5
5
  import Checkbox from "../../atoms/checkbox";
6
- // import CountryDropdown from "../../atoms/country-dropdown";
6
+ import CountryDropdown from "../../atoms/country-dropdown";
7
7
  import { zipFormat } from "../../../util/formats";
8
8
  import { noop } from "../../../util/general";
9
9
  import {
@@ -51,16 +51,16 @@ const AddressForm = ({
51
51
  const stateProvinceErrorMessages = {
52
52
  [required.error]: "State or Province is required"
53
53
  };
54
- // const countryErrorMessages = {
55
- // [required.error]: "Country is required"
56
- // };
54
+ const countryErrorMessages = {
55
+ [required.error]: "Country is required"
56
+ };
57
57
 
58
58
  const isUS = fields.country.rawValue === "US";
59
59
 
60
60
  return (
61
61
  <FormContainer variant={variant} role="form" aria-label="Address">
62
62
  <FormInputColumn>
63
- {/* <CountryDropdown
63
+ <CountryDropdown
64
64
  labelTextWhenNoError="Country"
65
65
  errorMessages={countryErrorMessages}
66
66
  field={fields.country}
@@ -76,7 +76,7 @@ const AddressForm = ({
76
76
  }
77
77
  }}
78
78
  showErrors={showErrors}
79
- /> */}
79
+ />
80
80
  <FormInput
81
81
  labelTextWhenNoError="Address"
82
82
  errorMessages={street1ErrorMessages}
@@ -16,7 +16,8 @@ const PaymentButtonBar = ({
16
16
  cancelURL,
17
17
  cancelText = "Cancel",
18
18
  redirectURL,
19
- redirectText = "Return"
19
+ redirectText = "Return",
20
+ buttonFlexOverride
20
21
  }) => {
21
22
  const { isMobile } = useContext(ThemeContext);
22
23
 
@@ -68,7 +69,13 @@ const PaymentButtonBar = ({
68
69
  <SolidDivider />
69
70
  <Box padding="2.5rem 0 3.125rem 0">
70
71
  <Cluster
71
- justify={!!backButton ? "space-between" : "flex-end"}
72
+ justify={
73
+ buttonFlexOverride
74
+ ? buttonFlexOverride
75
+ : !!backButton
76
+ ? "space-between"
77
+ : "flex-end"
78
+ }
72
79
  align="center"
73
80
  childGap="0.75rem"
74
81
  >
@@ -2,8 +2,13 @@ import React, { useEffect, useState } from "react";
2
2
  import styled from "styled-components";
3
3
  import { required, hasLength, matchesRegex } from "redux-freeform";
4
4
  import Checkbox from "../../atoms/checkbox";
5
+ import CountryDropdown from "../../atoms/country-dropdown";
5
6
  import { checkCardBrand, noop } from "../../../util/general";
6
- import { expirationDateFormat, creditCardFormat } from "../../../util/formats";
7
+ import {
8
+ expirationDateFormat,
9
+ creditCardFormat,
10
+ zipFormat
11
+ } from "../../../util/formats";
7
12
  import {
8
13
  FormInput,
9
14
  FormInputColumn,
@@ -36,6 +41,9 @@ const zipCodeErrors = {
36
41
  [required.error]: "Zip code is required",
37
42
  [hasLength.error]: "Zip code is invalid"
38
43
  };
44
+ const countryErrorMessages = {
45
+ [required.error]: "Country is required"
46
+ };
39
47
 
40
48
  const PaymentFormCard = ({
41
49
  variant = "default",
@@ -61,9 +69,26 @@ const PaymentFormCard = ({
61
69
  return () => actions.form.clear();
62
70
  }
63
71
  }, []);
72
+ const isUS = fields.country.rawValue === "US";
64
73
  return (
65
74
  <FormContainer variant={variant} role="form" aria-label="Card payment">
66
75
  <FormInputColumn>
76
+ {!hideZipCode && (
77
+ <CountryDropdown
78
+ labelTextWhenNoError="Country"
79
+ errorMessages={countryErrorMessages}
80
+ field={fields.country}
81
+ onChange={value => {
82
+ actions.fields.country.set(value);
83
+ // temporary measure to not dirty fields until
84
+ // we can write a reset function for fields
85
+ if (fields.zipCode.rawValue) {
86
+ actions.fields.zipCode.set("");
87
+ }
88
+ }}
89
+ showErrors={showErrors}
90
+ />
91
+ )}
67
92
  <FormInput
68
93
  labelTextWhenNoError="Name on card"
69
94
  errorMessages={nameOnCardErrors}
@@ -111,6 +136,8 @@ const PaymentFormCard = ({
111
136
  width={isMobile ? "100%" : "50%"}
112
137
  >
113
138
  <FormInput
139
+ isNum={isUS}
140
+ formatter={isUS ? zipFormat : null}
114
141
  labelTextWhenNoError="Zip code"
115
142
  errorMessages={zipCodeErrors}
116
143
  field={fields.zipCode}
@@ -3,12 +3,17 @@ import {
3
3
  required,
4
4
  onlyIntegers,
5
5
  hasLength,
6
- matchesRegex
6
+ matchesRegex,
7
+ validateWhen
7
8
  } from "redux-freeform";
8
9
 
9
10
  //TODO: Will make zip code able to have more than 5 digits once we add in the FormattedInput because it will have issues with format of 60606-1111.
10
11
 
11
12
  const formConfig = {
13
+ country: {
14
+ defaultValue: "US",
15
+ validators: [required()]
16
+ },
12
17
  nameOnCard: {
13
18
  validators: [required()]
14
19
  },
@@ -29,8 +34,23 @@ const formConfig = {
29
34
  constraints: [onlyIntegers(), hasLength(0, 4)]
30
35
  },
31
36
  zipCode: {
32
- validators: [required(), hasLength(5, 5)],
33
- constraints: [onlyIntegers(), hasLength(0, 5)]
37
+ validators: [
38
+ required(),
39
+ validateWhen(
40
+ validateWhen(hasLength(5, 5), hasLength(0, 5)),
41
+ matchesRegex("US"),
42
+ "country"
43
+ ),
44
+ validateWhen(
45
+ validateWhen(hasLength(9, 9), hasLength(6, 9)),
46
+ matchesRegex("US"),
47
+ "country"
48
+ )
49
+ ],
50
+ constraints: [
51
+ validateWhen(onlyIntegers(), matchesRegex("US"), "country"),
52
+ validateWhen(hasLength(0, 9), matchesRegex("US"), "country")
53
+ ]
34
54
  }
35
55
  };
36
56