@thecb/components 4.1.3 → 4.1.6

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
@@ -17991,7 +17991,7 @@ var textLineHeight = {
17991
17991
  "default": "2rem"
17992
17992
  };
17993
17993
  var textColor = {
17994
- "default": "".concat(STORM_GREY)
17994
+ "default": "".concat(CHARADE_GREY)
17995
17995
  };
17996
17996
  var disabledCheckColor = {
17997
17997
  "default": "".concat(GHOST_GREY, ";")
@@ -18212,10 +18212,10 @@ var Checkbox = function Checkbox(_ref4) {
18212
18212
  }, /*#__PURE__*/React__default.createElement("polyline", {
18213
18213
  points: "20 6 9 17 4 12"
18214
18214
  })))), /*#__PURE__*/React__default.createElement(Text$1, {
18215
- variant: "pL",
18215
+ variant: "p",
18216
18216
  weight: themeValues.textFontWeight,
18217
18217
  color: themeValues.textColor,
18218
- extraStyles: "margin-left: 0.5rem"
18218
+ extraStyles: "margin-left: 1rem"
18219
18219
  }, title)));
18220
18220
  };
18221
18221
 
@@ -18505,7 +18505,7 @@ function _templateObject3$5() {
18505
18505
  }
18506
18506
 
18507
18507
  function _templateObject2$b() {
18508
- var data = _taggedTemplateLiteral(["\n transform-origin: 0 0;\n border: 1px solid ", ";\n border-radius: 2px;\n background-color: ", ";\n padding: 8px 0 8px;\n position: absolute;\n width: 100%;\n max-height: 400px;\n overflow-y: scroll;\n z-index: 1;\n box-sizing: border-box;\n &:focus {\n outline: none;\n }\n"]);
18508
+ var data = _taggedTemplateLiteral(["\n transform-origin: 0 0;\n border: 1px solid ", ";\n border-radius: 2px;\n background-color: ", ";\n padding: 8px 0 8px;\n position: absolute;\n width: 100%;\n max-height: ", ";\n overflow-y: scroll;\n z-index: 1;\n box-sizing: border-box;\n &:focus {\n outline: none;\n }\n"]);
18509
18509
 
18510
18510
  _templateObject2$b = function _templateObject2() {
18511
18511
  return data;
@@ -18527,44 +18527,48 @@ var IconWrapper = styled__default.div(_templateObject$n(), function (_ref) {
18527
18527
  var open = _ref.open;
18528
18528
  return open ? "transform: rotate(-180deg)" : "";
18529
18529
  });
18530
- var DropdownContentWrapper = styled__default.div(_templateObject2$b(), GREY_CHATEAU, WHITE);
18531
- var DropdownItemWrapper = styled__default.div(_templateObject3$5(), function (_ref2) {
18532
- var selected = _ref2.selected,
18533
- themeValues = _ref2.themeValues;
18530
+ var DropdownContentWrapper = styled__default.div(_templateObject2$b(), GREY_CHATEAU, WHITE, function (_ref2) {
18531
+ var maxHeight = _ref2.maxHeight;
18532
+ return maxHeight || "400px";
18533
+ });
18534
+ var DropdownItemWrapper = styled__default.div(_templateObject3$5(), function (_ref3) {
18535
+ var selected = _ref3.selected,
18536
+ themeValues = _ref3.themeValues;
18534
18537
  return selected ? themeValues.selectedColor : WHITE;
18535
- }, function (_ref3) {
18536
- var disabled = _ref3.disabled;
18537
- return disabled ? "default" : "pointer";
18538
18538
  }, function (_ref4) {
18539
- var selected = _ref4.selected,
18540
- disabled = _ref4.disabled,
18541
- themeValues = _ref4.themeValues;
18542
- return selected ? themeValues.selectedColor : disabled ? WHITE : themeValues.hoverColor;
18539
+ var disabled = _ref4.disabled;
18540
+ return disabled ? "default" : "pointer";
18543
18541
  }, function (_ref5) {
18544
18542
  var selected = _ref5.selected,
18545
18543
  disabled = _ref5.disabled,
18546
18544
  themeValues = _ref5.themeValues;
18547
18545
  return selected ? themeValues.selectedColor : disabled ? WHITE : themeValues.hoverColor;
18546
+ }, function (_ref6) {
18547
+ var selected = _ref6.selected,
18548
+ disabled = _ref6.disabled,
18549
+ themeValues = _ref6.themeValues;
18550
+ return selected ? themeValues.selectedColor : disabled ? WHITE : themeValues.hoverColor;
18548
18551
  });
18549
- var SearchInput = styled__default.input(_templateObject4$2(), function (_ref6) {
18550
- var themeValues = _ref6.themeValues;
18552
+ var SearchInput = styled__default.input(_templateObject4$2(), function (_ref7) {
18553
+ var themeValues = _ref7.themeValues;
18551
18554
  return themeValues.hoverColor && themeValues.hoverColor;
18552
18555
  });
18553
18556
 
18554
- var Dropdown = function Dropdown(_ref7) {
18557
+ var Dropdown = function Dropdown(_ref8) {
18555
18558
  var _options$find;
18556
18559
 
18557
- var placeholder = _ref7.placeholder,
18558
- options = _ref7.options,
18559
- value = _ref7.value,
18560
- isOpen = _ref7.isOpen,
18561
- isError = _ref7.isError,
18562
- onSelect = _ref7.onSelect,
18563
- _ref7$disabledValues = _ref7.disabledValues,
18564
- disabledValues = _ref7$disabledValues === void 0 ? [] : _ref7$disabledValues,
18565
- _ref7$onClick = _ref7.onClick,
18566
- onClick = _ref7$onClick === void 0 ? noop : _ref7$onClick,
18567
- themeValues = _ref7.themeValues;
18560
+ var placeholder = _ref8.placeholder,
18561
+ options = _ref8.options,
18562
+ value = _ref8.value,
18563
+ isOpen = _ref8.isOpen,
18564
+ isError = _ref8.isError,
18565
+ onSelect = _ref8.onSelect,
18566
+ _ref8$disabledValues = _ref8.disabledValues,
18567
+ disabledValues = _ref8$disabledValues === void 0 ? [] : _ref8$disabledValues,
18568
+ _ref8$onClick = _ref8.onClick,
18569
+ onClick = _ref8$onClick === void 0 ? noop : _ref8$onClick,
18570
+ themeValues = _ref8.themeValues,
18571
+ maxHeight = _ref8.maxHeight;
18568
18572
 
18569
18573
  var _useState = React.useState(""),
18570
18574
  _useState2 = _slicedToArray(_useState, 2),
@@ -18728,6 +18732,7 @@ var Dropdown = function Dropdown(_ref7) {
18728
18732
  })) === null || _options$find === void 0 ? void 0 : _options$find.text : placeholder), /*#__PURE__*/React__default.createElement(IconWrapper, {
18729
18733
  open: isOpen
18730
18734
  }, /*#__PURE__*/React__default.createElement(DropdownIcon, null)))), isOpen ? /*#__PURE__*/React__default.createElement(DropdownContentWrapper, {
18735
+ maxHeight: maxHeight,
18731
18736
  open: isOpen,
18732
18737
  ref: dropdownRef,
18733
18738
  tabIndex: 0
@@ -18823,7 +18828,8 @@ var FormSelect = function FormSelect(_ref) {
18823
18828
  options = _ref.options,
18824
18829
  field = _ref.field,
18825
18830
  showErrors = _ref.showErrors,
18826
- onChange = _ref.onChange;
18831
+ onChange = _ref.onChange,
18832
+ dropdownMaxHeight = _ref.dropdownMaxHeight;
18827
18833
 
18828
18834
  var _useState = React.useState(false),
18829
18835
  _useState2 = _slicedToArray(_useState, 2),
@@ -18852,6 +18858,7 @@ var FormSelect = function FormSelect(_ref) {
18852
18858
  weight: "400",
18853
18859
  extraStyles: "margin-bottom: 4px;"
18854
18860
  }, labelTextWhenNoError), /*#__PURE__*/React__default.createElement(Dropdown$1, {
18861
+ maxHeight: dropdownMaxHeight,
18855
18862
  placeholder: options[0] ? options[0].text : "",
18856
18863
  options: options,
18857
18864
  value: field.rawValue,
@@ -33799,6 +33806,17 @@ var formats = /*#__PURE__*/Object.freeze({
33799
33806
  moneyFormat: moneyFormat
33800
33807
  });
33801
33808
 
33809
+ function _templateObject$x() {
33810
+ var data = _taggedTemplateLiteral(["\n outline: none;\n"]);
33811
+
33812
+ _templateObject$x = function _templateObject() {
33813
+ return data;
33814
+ };
33815
+
33816
+ return data;
33817
+ }
33818
+ var CheckboxWrapper = styled__default.div(_templateObject$x());
33819
+
33802
33820
  var AddressForm = function AddressForm(_ref) {
33803
33821
  var _zipErrorMessages;
33804
33822
 
@@ -33809,7 +33827,21 @@ var AddressForm = function AddressForm(_ref) {
33809
33827
  clearOnDismount = _ref.clearOnDismount,
33810
33828
  showErrors = _ref.showErrors,
33811
33829
  _ref$handleSubmit = _ref.handleSubmit,
33812
- handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit;
33830
+ handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit,
33831
+ showWalletCheckbox = _ref.showWalletCheckbox,
33832
+ saveToWallet = _ref.saveToWallet,
33833
+ walletCheckboxMarked = _ref.walletCheckboxMarked;
33834
+
33835
+ var _useState = React.useState(false),
33836
+ _useState2 = _slicedToArray(_useState, 2),
33837
+ checkboxFocused = _useState2[0],
33838
+ focusCheckbox = _useState2[1];
33839
+
33840
+ var handleClick = function handleClick(e, func) {
33841
+ if ((e === null || e === void 0 ? void 0 : e.keyCode) === 13) {
33842
+ func();
33843
+ }
33844
+ };
33813
33845
 
33814
33846
  if (clearOnDismount) {
33815
33847
  React.useEffect(function () {
@@ -33882,7 +33914,24 @@ var AddressForm = function AddressForm(_ref) {
33882
33914
  onKeyDown: function onKeyDown(e) {
33883
33915
  return e.key === "Enter" && handleSubmit(e);
33884
33916
  }
33885
- })));
33917
+ }), showWalletCheckbox && /*#__PURE__*/React__default.createElement(CheckboxWrapper, {
33918
+ tabIndex: "0",
33919
+ onFocus: function onFocus() {
33920
+ return focusCheckbox(true);
33921
+ },
33922
+ onBlur: function onBlur() {
33923
+ return focusCheckbox(false);
33924
+ },
33925
+ onKeyDown: function onKeyDown(e) {
33926
+ return handleClick(e, saveToWallet);
33927
+ }
33928
+ }, /*#__PURE__*/React__default.createElement(Checkbox$1, {
33929
+ name: "address checkbox",
33930
+ title: "Save address to wallet",
33931
+ checked: walletCheckboxMarked,
33932
+ onChange: saveToWallet,
33933
+ focused: checkboxFocused
33934
+ }))));
33886
33935
  };
33887
33936
 
33888
33937
  var formConfig = {
@@ -34185,16 +34234,16 @@ function _templateObject2$j() {
34185
34234
  return data;
34186
34235
  }
34187
34236
 
34188
- function _templateObject$x() {
34237
+ function _templateObject$y() {
34189
34238
  var data = _taggedTemplateLiteral(["\n box-sizing: border-box;\n background: ", ";\n height: ", ";\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.5rem;\n :not(:last-child),\n :not(:first-child) {\n box-shadow: inset 0px -1px 0px 0px rgb(202, 206, 216);\n }\n :first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n :last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n box-shadow: none;\n }\n"]);
34190
34239
 
34191
- _templateObject$x = function _templateObject() {
34240
+ _templateObject$y = function _templateObject() {
34192
34241
  return data;
34193
34242
  };
34194
34243
 
34195
34244
  return data;
34196
34245
  }
34197
- var EditableListItem = styled__default.div(_templateObject$x(), WHITE, function (_ref) {
34246
+ var EditableListItem = styled__default.div(_templateObject$y(), WHITE, function (_ref) {
34198
34247
  var listItemSize = _ref.listItemSize;
34199
34248
  return listItemSize === "big" ? "120px" : "72px";
34200
34249
  });
@@ -34379,16 +34428,16 @@ function _templateObject2$k() {
34379
34428
  return data;
34380
34429
  }
34381
34430
 
34382
- function _templateObject$y() {
34431
+ function _templateObject$z() {
34383
34432
  var data = _taggedTemplateLiteral(["\n display: ", ";\n flex-direction: column;\n flex: 1;\n"]);
34384
34433
 
34385
- _templateObject$y = function _templateObject() {
34434
+ _templateObject$z = function _templateObject() {
34386
34435
  return data;
34387
34436
  };
34388
34437
 
34389
34438
  return data;
34390
34439
  }
34391
- var EditableTableContainer = styled__default.div(_templateObject$y(), function (_ref) {
34440
+ var EditableTableContainer = styled__default.div(_templateObject$z(), function (_ref) {
34392
34441
  var hide = _ref.hide;
34393
34442
  return hide ? "none" : "flex";
34394
34443
  });
@@ -34500,6 +34549,17 @@ var TableListItem = function TableListItem(_ref) {
34500
34549
  }, "Edit")) : /*#__PURE__*/React__default.createElement(React.Fragment, null))));
34501
34550
  };
34502
34551
 
34552
+ function _templateObject$A() {
34553
+ var data = _taggedTemplateLiteral(["\n outline: none;\n"]);
34554
+
34555
+ _templateObject$A = function _templateObject() {
34556
+ return data;
34557
+ };
34558
+
34559
+ return data;
34560
+ }
34561
+ var CheckboxWrapper$1 = styled__default.div(_templateObject$A());
34562
+
34503
34563
  var EmailForm = function EmailForm(_ref) {
34504
34564
  var _emailFieldErrorMessa;
34505
34565
 
@@ -34511,7 +34571,21 @@ var EmailForm = function EmailForm(_ref) {
34511
34571
  showErrors = _ref.showErrors,
34512
34572
  guestCheckout = _ref.guestCheckout,
34513
34573
  _ref$handleSubmit = _ref.handleSubmit,
34514
- handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit;
34574
+ handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit,
34575
+ showWalletCheckbox = _ref.showWalletCheckbox,
34576
+ saveToWallet = _ref.saveToWallet,
34577
+ walletCheckboxMarked = _ref.walletCheckboxMarked;
34578
+
34579
+ var _useState = React.useState(false),
34580
+ _useState2 = _slicedToArray(_useState, 2),
34581
+ checkboxFocused = _useState2[0],
34582
+ focusCheckbox = _useState2[1];
34583
+
34584
+ var handleClick = function handleClick(e, func) {
34585
+ if ((e === null || e === void 0 ? void 0 : e.keyCode) === 13) {
34586
+ func();
34587
+ }
34588
+ };
34515
34589
 
34516
34590
  if (clearOnDismount) {
34517
34591
  React.useEffect(function () {
@@ -34538,7 +34612,24 @@ var EmailForm = function EmailForm(_ref) {
34538
34612
  onKeyDown: function onKeyDown(e) {
34539
34613
  return e.key === "Enter" && handleSubmit(e);
34540
34614
  }
34541
- })));
34615
+ }), showWalletCheckbox && /*#__PURE__*/React__default.createElement(CheckboxWrapper$1, {
34616
+ tabIndex: "0",
34617
+ onFocus: function onFocus() {
34618
+ return focusCheckbox(true);
34619
+ },
34620
+ onBlur: function onBlur() {
34621
+ return focusCheckbox(false);
34622
+ },
34623
+ onKeyDown: function onKeyDown(e) {
34624
+ return handleClick(e, saveToWallet);
34625
+ }
34626
+ }, /*#__PURE__*/React__default.createElement(Checkbox$1, {
34627
+ name: "email checkbox",
34628
+ title: "Save email address to wallet",
34629
+ checked: walletCheckboxMarked,
34630
+ onChange: saveToWallet,
34631
+ focused: checkboxFocused
34632
+ }))));
34542
34633
  };
34543
34634
 
34544
34635
  var formConfig$3 = {
@@ -36117,10 +36208,10 @@ var NavMenuDesktop = function NavMenuDesktop(_ref) {
36117
36208
 
36118
36209
  var NavMenuDesktop$1 = themeComponent(NavMenuDesktop, "NavMenu", fallbackValues$u, "profile");
36119
36210
 
36120
- function _templateObject$z() {
36211
+ function _templateObject$B() {
36121
36212
  var data = _taggedTemplateLiteral(["\n position: fixed;\n top: 72px;\n"]);
36122
36213
 
36123
- _templateObject$z = function _templateObject() {
36214
+ _templateObject$B = function _templateObject() {
36124
36215
  return data;
36125
36216
  };
36126
36217
 
@@ -36156,7 +36247,7 @@ var menu = posed.div({
36156
36247
  }
36157
36248
  }
36158
36249
  });
36159
- var ImposterMenu = styled__default(menu)(_templateObject$z());
36250
+ var ImposterMenu = styled__default(menu)(_templateObject$B());
36160
36251
 
36161
36252
  var NavMenuMobile = function NavMenuMobile(_ref) {
36162
36253
  var id = _ref.id,
@@ -38569,16 +38660,27 @@ var AccountAndRoutingModal = function AccountAndRoutingModal(_ref) {
38569
38660
 
38570
38661
  var AccountAndRoutingModal$1 = themeComponent(AccountAndRoutingModal, "AccountAndRoutingModal", fallbackValues$x, "default");
38571
38662
 
38572
- function _templateObject$A() {
38663
+ function _templateObject2$l() {
38664
+ var data = _taggedTemplateLiteral(["\n outline: none;\n"]);
38665
+
38666
+ _templateObject2$l = function _templateObject2() {
38667
+ return data;
38668
+ };
38669
+
38670
+ return data;
38671
+ }
38672
+
38673
+ function _templateObject$C() {
38573
38674
  var data = _taggedTemplateLiteral([""]);
38574
38675
 
38575
- _templateObject$A = function _templateObject() {
38676
+ _templateObject$C = function _templateObject() {
38576
38677
  return data;
38577
38678
  };
38578
38679
 
38579
38680
  return data;
38580
38681
  }
38581
- var ModalWrapper = styled__default.div(_templateObject$A());
38682
+ var ModalWrapper = styled__default.div(_templateObject$C());
38683
+ var CheckboxWrapper$2 = styled__default.div(_templateObject2$l());
38582
38684
 
38583
38685
  var PaymentFormACH = function PaymentFormACH(_ref) {
38584
38686
  var _routingNumberErrors, _accountNumberErrors;
@@ -38595,7 +38697,21 @@ var PaymentFormACH = function PaymentFormACH(_ref) {
38595
38697
  actions = _ref.actions,
38596
38698
  showErrors = _ref.showErrors,
38597
38699
  _ref$handleSubmit = _ref.handleSubmit,
38598
- handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit;
38700
+ handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit,
38701
+ showWalletCheckbox = _ref.showWalletCheckbox,
38702
+ saveToWallet = _ref.saveToWallet,
38703
+ walletCheckboxMarked = _ref.walletCheckboxMarked;
38704
+
38705
+ var _useState = React.useState(false),
38706
+ _useState2 = _slicedToArray(_useState, 2),
38707
+ checkboxFocused = _useState2[0],
38708
+ focusCheckbox = _useState2[1];
38709
+
38710
+ var handleClick = function handleClick(e, func) {
38711
+ if ((e === null || e === void 0 ? void 0 : e.keyCode) === 13) {
38712
+ func();
38713
+ }
38714
+ };
38599
38715
 
38600
38716
  if (clearOnDismount) {
38601
38717
  React.useEffect(function () {
@@ -38605,15 +38721,15 @@ var PaymentFormACH = function PaymentFormACH(_ref) {
38605
38721
  }, []);
38606
38722
  }
38607
38723
 
38608
- var _useState = React.useState(false),
38609
- _useState2 = _slicedToArray(_useState, 2),
38610
- showRouting = _useState2[0],
38611
- toggleShowRouting = _useState2[1];
38612
-
38613
38724
  var _useState3 = React.useState(false),
38614
38725
  _useState4 = _slicedToArray(_useState3, 2),
38615
- showAccount = _useState4[0],
38616
- toggleShowAccount = _useState4[1];
38726
+ showRouting = _useState4[0],
38727
+ toggleShowRouting = _useState4[1];
38728
+
38729
+ var _useState5 = React.useState(false),
38730
+ _useState6 = _slicedToArray(_useState5, 2),
38731
+ showAccount = _useState6[0],
38732
+ toggleShowAccount = _useState6[1];
38617
38733
 
38618
38734
  var nameErrors = _defineProperty({}, required.error, "Name is required");
38619
38735
 
@@ -38728,7 +38844,24 @@ var PaymentFormACH = function PaymentFormACH(_ref) {
38728
38844
  onChange: toggleCheckbox,
38729
38845
  checked: defaultMethod.value,
38730
38846
  hidden: hideDefaultPayment
38731
- })));
38847
+ }), showWalletCheckbox && /*#__PURE__*/React__default.createElement(CheckboxWrapper$2, {
38848
+ tabIndex: "0",
38849
+ onFocus: function onFocus() {
38850
+ return focusCheckbox(true);
38851
+ },
38852
+ onBlur: function onBlur() {
38853
+ return focusCheckbox(false);
38854
+ },
38855
+ onKeyDown: function onKeyDown(e) {
38856
+ return handleClick(e, saveToWallet);
38857
+ }
38858
+ }, /*#__PURE__*/React__default.createElement(Checkbox$1, {
38859
+ name: "bank checkbox",
38860
+ title: "Save bank account to wallet",
38861
+ checked: walletCheckboxMarked,
38862
+ onChange: saveToWallet,
38863
+ focused: checkboxFocused
38864
+ }))));
38732
38865
  };
38733
38866
 
38734
38867
  var formConfig$6 = {
@@ -38768,6 +38901,17 @@ PaymentFormACH.mapDispatchToProps = mapDispatchToProps$6;
38768
38901
 
38769
38902
  var _creditCardNumberErro, _expirationDateErrors, _cvvErrors, _zipCodeErrors;
38770
38903
 
38904
+ function _templateObject$D() {
38905
+ var data = _taggedTemplateLiteral(["\n outline: none;\n"]);
38906
+
38907
+ _templateObject$D = function _templateObject() {
38908
+ return data;
38909
+ };
38910
+
38911
+ return data;
38912
+ }
38913
+ var CheckboxWrapper$3 = styled__default.div(_templateObject$D());
38914
+
38771
38915
  var nameOnCardErrors = _defineProperty({}, required.error, "Name is required");
38772
38916
 
38773
38917
  var creditCardNumberErrors = (_creditCardNumberErro = {}, _defineProperty(_creditCardNumberErro, required.error, "Credit card number is required"), _defineProperty(_creditCardNumberErro, hasLength.error, "Credit card number is invalid"), _creditCardNumberErro);
@@ -38786,7 +38930,22 @@ var PaymentFormCard = function PaymentFormCard(_ref) {
38786
38930
  showErrors = _ref.showErrors,
38787
38931
  _ref$handleSubmit = _ref.handleSubmit,
38788
38932
  handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit,
38789
- isMobile = _ref.isMobile;
38933
+ isMobile = _ref.isMobile,
38934
+ showWalletCheckbox = _ref.showWalletCheckbox,
38935
+ saveToWallet = _ref.saveToWallet,
38936
+ walletCheckboxMarked = _ref.walletCheckboxMarked;
38937
+
38938
+ var _useState = React.useState(false),
38939
+ _useState2 = _slicedToArray(_useState, 2),
38940
+ checkboxFocused = _useState2[0],
38941
+ focusCheckbox = _useState2[1];
38942
+
38943
+ var handleClick = function handleClick(e, func) {
38944
+ if ((e === null || e === void 0 ? void 0 : e.keyCode) === 13) {
38945
+ func();
38946
+ }
38947
+ };
38948
+
38790
38949
  React.useEffect(function () {
38791
38950
  if (clearOnDismount) {
38792
38951
  return function () {
@@ -38851,6 +39010,23 @@ var PaymentFormCard = function PaymentFormCard(_ref) {
38851
39010
  onKeyDown: function onKeyDown(e) {
38852
39011
  return e.key === "Enter" && handleSubmit(e);
38853
39012
  }
39013
+ })), showWalletCheckbox && /*#__PURE__*/React__default.createElement(CheckboxWrapper$3, {
39014
+ tabIndex: "0",
39015
+ onFocus: function onFocus() {
39016
+ return focusCheckbox(true);
39017
+ },
39018
+ onBlur: function onBlur() {
39019
+ return focusCheckbox(false);
39020
+ },
39021
+ onKeyDown: function onKeyDown(e) {
39022
+ return handleClick(e, saveToWallet);
39023
+ }
39024
+ }, /*#__PURE__*/React__default.createElement(Checkbox$1, {
39025
+ name: "credit card checkbox",
39026
+ title: "Save credit card to wallet",
39027
+ checked: walletCheckboxMarked,
39028
+ onChange: saveToWallet,
39029
+ focused: checkboxFocused
38854
39030
  }))));
38855
39031
  };
38856
39032
 
@@ -38885,6 +39061,17 @@ PaymentFormCard.reducer = reducer$7;
38885
39061
  PaymentFormCard.mapStateToProps = mapStateToProps$8;
38886
39062
  PaymentFormCard.mapDispatchToProps = mapDispatchToProps$7;
38887
39063
 
39064
+ function _templateObject$E() {
39065
+ var data = _taggedTemplateLiteral(["\n outline: none;\n"]);
39066
+
39067
+ _templateObject$E = function _templateObject() {
39068
+ return data;
39069
+ };
39070
+
39071
+ return data;
39072
+ }
39073
+ var CheckboxWrapper$4 = styled__default.div(_templateObject$E());
39074
+
38888
39075
  var PhoneForm = function PhoneForm(_ref) {
38889
39076
  var _phoneErrorMessage;
38890
39077
 
@@ -38895,7 +39082,21 @@ var PhoneForm = function PhoneForm(_ref) {
38895
39082
  clearOnDismount = _ref.clearOnDismount,
38896
39083
  showErrors = _ref.showErrors,
38897
39084
  _ref$handleSubmit = _ref.handleSubmit,
38898
- handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit;
39085
+ handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit,
39086
+ showWalletCheckbox = _ref.showWalletCheckbox,
39087
+ saveToWallet = _ref.saveToWallet,
39088
+ walletCheckboxMarked = _ref.walletCheckboxMarked;
39089
+
39090
+ var _useState = React.useState(false),
39091
+ _useState2 = _slicedToArray(_useState, 2),
39092
+ checkboxFocused = _useState2[0],
39093
+ focusCheckbox = _useState2[1];
39094
+
39095
+ var handleClick = function handleClick(e, func) {
39096
+ if ((e === null || e === void 0 ? void 0 : e.keyCode) === 13) {
39097
+ func();
39098
+ }
39099
+ };
38899
39100
 
38900
39101
  if (clearOnDismount) {
38901
39102
  React.useEffect(function () {
@@ -38920,7 +39121,24 @@ var PhoneForm = function PhoneForm(_ref) {
38920
39121
  onKeyUp: function onKeyUp(e) {
38921
39122
  return e.key === "Enter" && handleSubmit(e);
38922
39123
  }
38923
- })));
39124
+ }), showWalletCheckbox && /*#__PURE__*/React__default.createElement(CheckboxWrapper$4, {
39125
+ tabIndex: "0",
39126
+ onFocus: function onFocus() {
39127
+ return focusCheckbox(true);
39128
+ },
39129
+ onBlur: function onBlur() {
39130
+ return focusCheckbox(false);
39131
+ },
39132
+ onKeyDown: function onKeyDown(e) {
39133
+ return handleClick(e, saveToWallet);
39134
+ }
39135
+ }, /*#__PURE__*/React__default.createElement(Checkbox$1, {
39136
+ name: "phone checkbox",
39137
+ title: "Save phone number to wallet",
39138
+ checked: walletCheckboxMarked,
39139
+ onChange: saveToWallet,
39140
+ focused: checkboxFocused
39141
+ }))));
38924
39142
  };
38925
39143
 
38926
39144
  var formConfig$8 = {
@@ -38952,10 +39170,10 @@ var fallbackValues$y = {
38952
39170
  focusStyles: focusStyles
38953
39171
  };
38954
39172
 
38955
- function _templateObject$B() {
39173
+ function _templateObject$F() {
38956
39174
  var data = _taggedTemplateLiteral(["\n height: ", ";\n width: ", ";\n ", "\n transition: opacity 0.3s ease;\n "]);
38957
39175
 
38958
- _templateObject$B = function _templateObject() {
39176
+ _templateObject$F = function _templateObject() {
38959
39177
  return data;
38960
39178
  };
38961
39179
 
@@ -39025,7 +39243,7 @@ var RadioSection = function RadioSection(_ref) {
39025
39243
  }
39026
39244
  };
39027
39245
  var borderStyles = "\n border-width: 0 0 1px 0;\n border-color: ".concat(themeValues.borderColor, ";\n border-style: solid;\n border-radius: 0px;\n transform-origin: 100% 0;\n\n &:last-child {\n border-width: 0;\n }\n ");
39028
- var RightIcon = styled__default.img(_templateObject$B(), function (_ref2) {
39246
+ var RightIcon = styled__default.img(_templateObject$F(), function (_ref2) {
39029
39247
  var isMobile = _ref2.isMobile;
39030
39248
  return isMobile ? "14px" : "18px";
39031
39249
  }, function (_ref3) {
@@ -39576,27 +39794,27 @@ var TermsAndConditionsModal = function TermsAndConditionsModal(_ref) {
39576
39794
 
39577
39795
  var TermsAndConditionsModal$1 = themeComponent(TermsAndConditionsModal, "TermsAndConditionsModal", fallbackValues$A, "default");
39578
39796
 
39579
- function _templateObject2$l() {
39797
+ function _templateObject2$m() {
39580
39798
  var data = _taggedTemplateLiteral([""]);
39581
39799
 
39582
- _templateObject2$l = function _templateObject2() {
39800
+ _templateObject2$m = function _templateObject2() {
39583
39801
  return data;
39584
39802
  };
39585
39803
 
39586
39804
  return data;
39587
39805
  }
39588
39806
 
39589
- function _templateObject$C() {
39807
+ function _templateObject$G() {
39590
39808
  var data = _taggedTemplateLiteral(["\n outline: none;\n"]);
39591
39809
 
39592
- _templateObject$C = function _templateObject() {
39810
+ _templateObject$G = function _templateObject() {
39593
39811
  return data;
39594
39812
  };
39595
39813
 
39596
39814
  return data;
39597
39815
  }
39598
- var CheckboxWrapper = styled__default.div(_templateObject$C());
39599
- var ModalWrapper$1 = styled__default.div(_templateObject2$l());
39816
+ var CheckboxWrapper$5 = styled__default.div(_templateObject$G());
39817
+ var ModalWrapper$1 = styled__default.div(_templateObject2$m());
39600
39818
 
39601
39819
  var TermsAndConditions = function TermsAndConditions(_ref) {
39602
39820
  var onCheck = _ref.onCheck,
@@ -39624,7 +39842,7 @@ var TermsAndConditions = function TermsAndConditions(_ref) {
39624
39842
 
39625
39843
  return /*#__PURE__*/React__default.createElement(DisplayBox$1, null, /*#__PURE__*/React__default.createElement(Stack, {
39626
39844
  direction: "row"
39627
- }, /*#__PURE__*/React__default.createElement(CheckboxWrapper, {
39845
+ }, /*#__PURE__*/React__default.createElement(CheckboxWrapper$5, {
39628
39846
  tabIndex: "0",
39629
39847
  onFocus: function onFocus() {
39630
39848
  return focusCheckbox(true);
@@ -39711,16 +39929,16 @@ var fallbackValues$B = {
39711
39929
  imageBackgroundColor: imageBackgroundColor
39712
39930
  };
39713
39931
 
39714
- function _templateObject$D() {
39932
+ function _templateObject$H() {
39715
39933
  var data = _taggedTemplateLiteral(["\n width: auto;\n height: 215px;\n"]);
39716
39934
 
39717
- _templateObject$D = function _templateObject() {
39935
+ _templateObject$H = function _templateObject() {
39718
39936
  return data;
39719
39937
  };
39720
39938
 
39721
39939
  return data;
39722
39940
  }
39723
- var WelcomeImage = styled__default.img(_templateObject$D());
39941
+ var WelcomeImage = styled__default.img(_templateObject$H());
39724
39942
 
39725
39943
  var WelcomeModule = function WelcomeModule(_ref) {
39726
39944
  var heading = _ref.heading,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thecb/components",
3
- "version": "4.1.3",
3
+ "version": "4.1.6",
4
4
  "description": "Common lib for CityBase react components",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -130,10 +130,10 @@ const Checkbox = ({
130
130
  </StyledCheckbox>
131
131
  </CheckboxContainer>
132
132
  <Text
133
- variant="pL"
133
+ variant="p"
134
134
  weight={themeValues.textFontWeight}
135
135
  color={themeValues.textColor}
136
- extraStyles={`margin-left: 0.5rem`}
136
+ extraStyles={`margin-left: 1rem`}
137
137
  >
138
138
  {title}
139
139
  </Text>
@@ -2,17 +2,17 @@ import {
2
2
  WHITE,
3
3
  TRANSPARENT,
4
4
  GHOST_GREY,
5
- STORM_GREY,
6
5
  SEASHELL_WHITE,
7
6
  MATISSE_BLUE,
8
- RED
7
+ RED,
8
+ CHARADE_GREY
9
9
  } from "../../../constants/colors";
10
10
 
11
11
  const backgroundColor = { default: `${TRANSPARENT}` };
12
12
  const textFontSize = { default: "1.1rem" };
13
13
  const textFontWeight = { default: "400" };
14
14
  const textLineHeight = { default: "2rem" };
15
- const textColor = { default: `${STORM_GREY}` };
15
+ const textColor = { default: `${CHARADE_GREY}` };
16
16
  const disabledCheckColor = { default: `${GHOST_GREY};` };
17
17
  const checkColor = { default: `${WHITE};` };
18
18
  const errorStyles = { default: `border: 1px solid ${RED};` };
@@ -31,7 +31,7 @@ const DropdownContentWrapper = styled.div`
31
31
  padding: 8px 0 8px;
32
32
  position: absolute;
33
33
  width: 100%;
34
- max-height: 400px;
34
+ max-height: ${({ maxHeight }) => maxHeight || "400px"};
35
35
  overflow-y: scroll;
36
36
  z-index: 1;
37
37
  box-sizing: border-box;
@@ -88,7 +88,8 @@ const Dropdown = ({
88
88
  onSelect,
89
89
  disabledValues = [],
90
90
  onClick = noop,
91
- themeValues
91
+ themeValues,
92
+ maxHeight
92
93
  }) => {
93
94
  const [inputValue, setInputValue] = useState("");
94
95
  const [optionsState, setOptionsState] = useState([]);
@@ -242,7 +243,12 @@ const Dropdown = ({
242
243
  </Stack>
243
244
  </Box>
244
245
  {isOpen ? (
245
- <DropdownContentWrapper open={isOpen} ref={dropdownRef} tabIndex={0}>
246
+ <DropdownContentWrapper
247
+ maxHeight={maxHeight}
248
+ open={isOpen}
249
+ ref={dropdownRef}
250
+ tabIndex={0}
251
+ >
246
252
  <Stack childGap="0">
247
253
  {filteredOptions.map((choice, i) => (
248
254
  <DropdownItemWrapper
@@ -11,7 +11,8 @@ const FormSelect = ({
11
11
  options,
12
12
  field,
13
13
  showErrors,
14
- onChange
14
+ onChange,
15
+ dropdownMaxHeight
15
16
  }) => {
16
17
  const [open, setOpen] = useState(false);
17
18
  const dropdownRef = useRef(null);
@@ -40,6 +41,7 @@ const FormSelect = ({
40
41
  {labelTextWhenNoError}
41
42
  </Text>
42
43
  <Dropdown
44
+ maxHeight={dropdownMaxHeight}
43
45
  placeholder={options[0] ? options[0].text : ""}
44
46
  options={options}
45
47
  value={field.rawValue}
@@ -1,6 +1,8 @@
1
- import React, { useEffect } from "react";
1
+ import React, { useEffect, useState } from "react";
2
2
  import { required, hasLength } from "redux-freeform";
3
+ import styled from "styled-components";
3
4
  import StateProvinceDropdown from "../../atoms/state-province-dropdown";
5
+ import Checkbox from "../../atoms/checkbox";
4
6
  // import CountryDropdown from "../../atoms/country-dropdown";
5
7
  import { zipFormat } from "../../../util/formats";
6
8
  import { noop } from "../../../util/general";
@@ -10,14 +12,28 @@ import {
10
12
  FormInputColumn
11
13
  } from "../../atoms/form-layouts";
12
14
 
15
+ const CheckboxWrapper = styled.div`
16
+ outline: none;
17
+ `;
18
+
13
19
  const AddressForm = ({
14
20
  variant = "default",
15
21
  fields,
16
22
  actions,
17
23
  clearOnDismount,
18
24
  showErrors,
19
- handleSubmit = noop
25
+ handleSubmit = noop,
26
+ showWalletCheckbox,
27
+ saveToWallet,
28
+ walletCheckboxMarked
20
29
  }) => {
30
+ const [checkboxFocused, focusCheckbox] = useState(false);
31
+
32
+ const handleClick = (e, func) => {
33
+ if (e?.keyCode === 13) {
34
+ func();
35
+ }
36
+ };
21
37
  if (clearOnDismount) {
22
38
  useEffect(() => () => actions.form.clear(), []);
23
39
  }
@@ -103,6 +119,22 @@ const AddressForm = ({
103
119
  showErrors={showErrors}
104
120
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
105
121
  />
122
+ {showWalletCheckbox && (
123
+ <CheckboxWrapper
124
+ tabIndex="0"
125
+ onFocus={() => focusCheckbox(true)}
126
+ onBlur={() => focusCheckbox(false)}
127
+ onKeyDown={e => handleClick(e, saveToWallet)}
128
+ >
129
+ <Checkbox
130
+ name="address checkbox"
131
+ title="Save address to wallet"
132
+ checked={walletCheckboxMarked}
133
+ onChange={saveToWallet}
134
+ focused={checkboxFocused}
135
+ />
136
+ </CheckboxWrapper>
137
+ )}
106
138
  </FormInputColumn>
107
139
  </FormContainer>
108
140
  );
@@ -1,13 +1,19 @@
1
- import React, { useEffect } from "react";
1
+ import React, { useEffect, useState } from "react";
2
+ import styled from "styled-components";
2
3
  import { required, isProbablyEmail } from "redux-freeform";
3
4
  import {
4
5
  FormInput,
5
6
  FormContainer,
6
7
  FormInputColumn
7
8
  } from "../../atoms/form-layouts";
9
+ import Checkbox from "../../atoms/checkbox";
8
10
  import Paragraph from "../../atoms/paragraph";
9
11
  import { noop } from "../../../util/general";
10
12
 
13
+ const CheckboxWrapper = styled.div`
14
+ outline: none;
15
+ `;
16
+
11
17
  const EmailForm = ({
12
18
  variant = "default",
13
19
  clearOnDismount,
@@ -15,8 +21,18 @@ const EmailForm = ({
15
21
  actions,
16
22
  showErrors,
17
23
  guestCheckout,
18
- handleSubmit = noop
24
+ handleSubmit = noop,
25
+ showWalletCheckbox,
26
+ saveToWallet,
27
+ walletCheckboxMarked
19
28
  }) => {
29
+ const [checkboxFocused, focusCheckbox] = useState(false);
30
+ const handleClick = (e, func) => {
31
+ if (e?.keyCode === 13) {
32
+ func();
33
+ }
34
+ };
35
+
20
36
  if (clearOnDismount) {
21
37
  useEffect(() => () => actions.form.clear(), []);
22
38
  }
@@ -42,6 +58,22 @@ const EmailForm = ({
42
58
  showErrors={showErrors}
43
59
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
44
60
  />
61
+ {showWalletCheckbox && (
62
+ <CheckboxWrapper
63
+ tabIndex="0"
64
+ onFocus={() => focusCheckbox(true)}
65
+ onBlur={() => focusCheckbox(false)}
66
+ onKeyDown={e => handleClick(e, saveToWallet)}
67
+ >
68
+ <Checkbox
69
+ name="email checkbox"
70
+ title="Save email address to wallet"
71
+ checked={walletCheckboxMarked}
72
+ onChange={saveToWallet}
73
+ focused={checkboxFocused}
74
+ />
75
+ </CheckboxWrapper>
76
+ )}
45
77
  </FormInputColumn>
46
78
  </FormContainer>
47
79
  );
@@ -18,6 +18,10 @@ import { noop } from "../../../util/general";
18
18
 
19
19
  const ModalWrapper = styled.div``;
20
20
 
21
+ const CheckboxWrapper = styled.div`
22
+ outline: none;
23
+ `;
24
+
21
25
  const PaymentFormACH = ({
22
26
  variant = "default",
23
27
  defaultMethod,
@@ -28,8 +32,17 @@ const PaymentFormACH = ({
28
32
  fields,
29
33
  actions,
30
34
  showErrors,
31
- handleSubmit = noop
35
+ handleSubmit = noop,
36
+ showWalletCheckbox,
37
+ saveToWallet,
38
+ walletCheckboxMarked
32
39
  }) => {
40
+ const [checkboxFocused, focusCheckbox] = useState(false);
41
+ const handleClick = (e, func) => {
42
+ if (e?.keyCode === 13) {
43
+ func();
44
+ }
45
+ };
33
46
  if (clearOnDismount) {
34
47
  useEffect(() => () => actions.form.clear(), []);
35
48
  }
@@ -162,6 +175,22 @@ const PaymentFormACH = ({
162
175
  hidden={hideDefaultPayment}
163
176
  />
164
177
  )}
178
+ {showWalletCheckbox && (
179
+ <CheckboxWrapper
180
+ tabIndex="0"
181
+ onFocus={() => focusCheckbox(true)}
182
+ onBlur={() => focusCheckbox(false)}
183
+ onKeyDown={e => handleClick(e, saveToWallet)}
184
+ >
185
+ <Checkbox
186
+ name="bank checkbox"
187
+ title="Save bank account to wallet"
188
+ checked={walletCheckboxMarked}
189
+ onChange={saveToWallet}
190
+ focused={checkboxFocused}
191
+ />
192
+ </CheckboxWrapper>
193
+ )}
165
194
  </FormInputColumn>
166
195
  </FormContainer>
167
196
  );
@@ -1,5 +1,7 @@
1
- import React, { useEffect } from "react";
1
+ import React, { useEffect, useState } from "react";
2
+ import styled from "styled-components";
2
3
  import { required, hasLength, matchesRegex } from "redux-freeform";
4
+ import Checkbox from "../../atoms/checkbox";
3
5
  import { checkCardBrand, noop } from "../../../util/general";
4
6
  import { expirationDateFormat, creditCardFormat } from "../../../util/formats";
5
7
  import {
@@ -10,6 +12,10 @@ import {
10
12
  } from "../../atoms/form-layouts";
11
13
  import { Box } from "../../atoms/layouts";
12
14
 
15
+ const CheckboxWrapper = styled.div`
16
+ outline: none;
17
+ `;
18
+
13
19
  const nameOnCardErrors = {
14
20
  [required.error]: "Name is required"
15
21
  };
@@ -39,8 +45,17 @@ const PaymentFormCard = ({
39
45
  actions,
40
46
  showErrors,
41
47
  handleSubmit = noop,
42
- isMobile
48
+ isMobile,
49
+ showWalletCheckbox,
50
+ saveToWallet,
51
+ walletCheckboxMarked
43
52
  }) => {
53
+ const [checkboxFocused, focusCheckbox] = useState(false);
54
+ const handleClick = (e, func) => {
55
+ if (e?.keyCode === 13) {
56
+ func();
57
+ }
58
+ };
44
59
  useEffect(() => {
45
60
  if (clearOnDismount) {
46
61
  return () => actions.form.clear();
@@ -105,6 +120,22 @@ const PaymentFormCard = ({
105
120
  />
106
121
  </Box>
107
122
  )}
123
+ {showWalletCheckbox && (
124
+ <CheckboxWrapper
125
+ tabIndex="0"
126
+ onFocus={() => focusCheckbox(true)}
127
+ onBlur={() => focusCheckbox(false)}
128
+ onKeyDown={e => handleClick(e, saveToWallet)}
129
+ >
130
+ <Checkbox
131
+ name="credit card checkbox"
132
+ title="Save credit card to wallet"
133
+ checked={walletCheckboxMarked}
134
+ onChange={saveToWallet}
135
+ focused={checkboxFocused}
136
+ />
137
+ </CheckboxWrapper>
138
+ )}
108
139
  </FormInputColumn>
109
140
  </FormContainer>
110
141
  );
@@ -1,5 +1,5 @@
1
- import React, { useEffect } from "react";
2
- import { phoneFormats, formatDelimiter } from "../../../util/formats";
1
+ import React, { useEffect, useState } from "react";
2
+ import styled from "styled-components";
3
3
  import { required, hasLength } from "redux-freeform";
4
4
  import { createFormat } from "formatted-input";
5
5
  import {
@@ -7,7 +7,13 @@ import {
7
7
  FormContainer,
8
8
  FormInputColumn
9
9
  } from "../../atoms/form-layouts";
10
+ import Checkbox from "../../atoms/checkbox";
10
11
  import { noop } from "../../../util/general";
12
+ import { phoneFormats, formatDelimiter } from "../../../util/formats";
13
+
14
+ const CheckboxWrapper = styled.div`
15
+ outline: none;
16
+ `;
11
17
 
12
18
  const PhoneForm = ({
13
19
  variant = "default",
@@ -15,8 +21,18 @@ const PhoneForm = ({
15
21
  actions,
16
22
  clearOnDismount,
17
23
  showErrors,
18
- handleSubmit = noop
24
+ handleSubmit = noop,
25
+ showWalletCheckbox,
26
+ saveToWallet,
27
+ walletCheckboxMarked
19
28
  }) => {
29
+ const [checkboxFocused, focusCheckbox] = useState(false);
30
+ const handleClick = (e, func) => {
31
+ if (e?.keyCode === 13) {
32
+ func();
33
+ }
34
+ };
35
+
20
36
  if (clearOnDismount) {
21
37
  useEffect(() => () => actions.form.clear(), []);
22
38
  }
@@ -37,6 +53,22 @@ const PhoneForm = ({
37
53
  formatter={createFormat(phoneFormats, formatDelimiter)}
38
54
  onKeyUp={e => e.key === "Enter" && handleSubmit(e)}
39
55
  />
56
+ {showWalletCheckbox && (
57
+ <CheckboxWrapper
58
+ tabIndex="0"
59
+ onFocus={() => focusCheckbox(true)}
60
+ onBlur={() => focusCheckbox(false)}
61
+ onKeyDown={e => handleClick(e, saveToWallet)}
62
+ >
63
+ <Checkbox
64
+ name="phone checkbox"
65
+ title="Save phone number to wallet"
66
+ checked={walletCheckboxMarked}
67
+ onChange={saveToWallet}
68
+ focused={checkboxFocused}
69
+ />
70
+ </CheckboxWrapper>
71
+ )}
40
72
  </FormInputColumn>
41
73
  </FormContainer>
42
74
  );