@thecb/components 4.1.20 → 4.1.23

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
@@ -20593,6 +20593,8 @@ var FormInput = function FormInput(_ref13) {
20593
20593
  errorMessages = _ref13.errorMessages,
20594
20594
  _ref13$isNum = _ref13.isNum,
20595
20595
  isNum = _ref13$isNum === void 0 ? false : _ref13$isNum,
20596
+ _ref13$isEmail = _ref13.isEmail,
20597
+ isEmail = _ref13$isEmail === void 0 ? false : _ref13$isEmail,
20596
20598
  _ref13$helperModal = _ref13.helperModal,
20597
20599
  helperModal = _ref13$helperModal === void 0 ? false : _ref13$helperModal,
20598
20600
  field = _ref13.field,
@@ -20605,7 +20607,7 @@ var FormInput = function FormInput(_ref13) {
20605
20607
  background = _ref13.background,
20606
20608
  customHeight = _ref13.customHeight,
20607
20609
  extraStyles = _ref13.extraStyles,
20608
- props = _objectWithoutProperties(_ref13, ["type", "labelTextWhenNoError", "errorMessages", "isNum", "helperModal", "field", "fieldActions", "showErrors", "formatter", "decorator", "themeValues", "background", "customHeight", "extraStyles"]);
20610
+ props = _objectWithoutProperties(_ref13, ["type", "labelTextWhenNoError", "errorMessages", "isNum", "isEmail", "helperModal", "field", "fieldActions", "showErrors", "formatter", "decorator", "themeValues", "background", "customHeight", "extraStyles"]);
20609
20611
 
20610
20612
  var _useState = React.useState(false),
20611
20613
  _useState2 = _slicedToArray(_useState, 2),
@@ -20672,7 +20674,7 @@ var FormInput = function FormInput(_ref13) {
20672
20674
  type: type,
20673
20675
  value: field.rawValue,
20674
20676
  pattern: isNum ? "[0-9]*" : "",
20675
- inputMode: isNum ? "numeric" : "",
20677
+ inputMode: isNum ? "numeric" : isEmail ? "email" : "text",
20676
20678
  field: field,
20677
20679
  formatter: formatter,
20678
20680
  showErrors: showErrors,
@@ -20688,7 +20690,7 @@ var FormInput = function FormInput(_ref13) {
20688
20690
  type: type === "password" && showPassword ? "text" : type,
20689
20691
  value: field.rawValue,
20690
20692
  pattern: isNum ? "[0-9]*" : "",
20691
- inputMode: isNum ? "numeric" : "",
20693
+ inputMode: isNum ? "numeric" : isEmail ? "email" : "text",
20692
20694
  field: field,
20693
20695
  showErrors: showErrors,
20694
20696
  "data-qa": labelTextWhenNoError,
@@ -34490,7 +34492,10 @@ var CollapsibleSection = function CollapsibleSection(_ref) {
34490
34492
  openHeight = _ref$openHeight === void 0 ? "auto" : _ref$openHeight,
34491
34493
  children = _ref.children,
34492
34494
  _ref$customTitle = _ref.customTitle,
34493
- customTitle = _ref$customTitle === void 0 ? false : _ref$customTitle;
34495
+ customTitle = _ref$customTitle === void 0 ? false : _ref$customTitle,
34496
+ _ref$stackTitle = _ref.stackTitle,
34497
+ stackTitle = _ref$stackTitle === void 0 ? false : _ref$stackTitle,
34498
+ stackTitleContent = _ref.stackTitleContent;
34494
34499
 
34495
34500
  var handleKeyDown = function handleKeyDown(e) {
34496
34501
  if (e.keyCode === 13) {
@@ -34534,8 +34539,8 @@ var CollapsibleSection = function CollapsibleSection(_ref) {
34534
34539
  hoverStyles: "outline: none;",
34535
34540
  animate: isOpen ? "open" : "closed",
34536
34541
  positionTransition: true
34537
- }, /*#__PURE__*/React__default.createElement(Stack, {
34538
- childGap: isOpen ? "0.5rem" : "0rem"
34542
+ }, stackTitle && /*#__PURE__*/React__default.createElement(React.Fragment, null, stackTitleContent), /*#__PURE__*/React__default.createElement(Stack, {
34543
+ childGap: isOpen && !isMobile ? "0.5rem" : "0rem"
34539
34544
  }, /*#__PURE__*/React__default.createElement(Box, {
34540
34545
  padding: customPadding ? customPadding : "0",
34541
34546
  background: themeValues.headingBackgroundColor,
@@ -34929,10 +34934,11 @@ var TableListItem = function TableListItem(_ref) {
34929
34934
  canEdit = _ref$canEdit === void 0 ? false : _ref$canEdit,
34930
34935
  _ref$canRemove = _ref.canRemove,
34931
34936
  canRemove = _ref$canRemove === void 0 ? false : _ref$canRemove,
34932
- isMobile = _ref.isMobile;
34937
+ isMobile = _ref.isMobile,
34938
+ borderTopItem = _ref.borderTopItem;
34933
34939
  return /*#__PURE__*/React__default.createElement(Box, {
34934
34940
  padding: "0px",
34935
- extraStyles: "&:last-child {\n > * {\n border-bottom: none;\n }\n }"
34941
+ extraStyles: "&:last-child {\n > * {\n border-bottom: none;\n }\n }\n ".concat(isMobile && borderTopItem && "&:first-child {\n > * {\n border-top: 1px solid ".concat(GHOST_GREY, ";\n }\n }"), "\n ")
34936
34942
  }, /*#__PURE__*/React__default.createElement(ItemWrapper, null, /*#__PURE__*/React__default.createElement(EditableTableListItem, {
34937
34943
  isMobile: isMobile
34938
34944
  }, /*#__PURE__*/React__default.createElement(TableItemKey, {
@@ -35000,7 +35006,8 @@ var EmailForm = function EmailForm(_ref) {
35000
35006
  showErrors: showErrors,
35001
35007
  onKeyDown: function onKeyDown(e) {
35002
35008
  return e.key === "Enter" && handleSubmit(e);
35003
- }
35009
+ },
35010
+ isEmail: true
35004
35011
  }), showWalletCheckbox && /*#__PURE__*/React__default.createElement(Checkbox$1, {
35005
35012
  name: "email checkbox",
35006
35013
  title: "Save email address to wallet",
@@ -35051,7 +35058,8 @@ var ForgotPasswordForm = function ForgotPasswordForm(_ref) {
35051
35058
  showErrors: showErrors,
35052
35059
  onKeyDown: function onKeyDown(e) {
35053
35060
  return e.key === "Enter" && handleSubmit(e);
35054
- }
35061
+ },
35062
+ isEmail: true
35055
35063
  });
35056
35064
  };
35057
35065
 
@@ -35154,7 +35162,8 @@ var LoginForm = function LoginForm(_ref) {
35154
35162
  showErrors: showErrors,
35155
35163
  onKeyDown: function onKeyDown(e) {
35156
35164
  return e.key === "Enter" && handleSubmit(e);
35157
- }
35165
+ },
35166
+ isEmail: true
35158
35167
  }), /*#__PURE__*/React__default.createElement(FormInput$1, {
35159
35168
  labelTextWhenNoError: "Password",
35160
35169
  errorMessages: passwordErrorMessages,
@@ -38151,7 +38160,7 @@ var hoverColor$4 = "#116285";
38151
38160
  var activeColor$5 = "#0E506D";
38152
38161
  var linkColor$3 = "#357fb8";
38153
38162
  var fontWeight$6 = FONT_WEIGHT_REGULAR;
38154
- var modalLinkHoverFocus = "outline: none;\n cursor: pointer;\n text-decoration: underline;\n text-decoration-color: #357fb8;";
38163
+ var modalLinkHoverFocus = "outline: none;\n cursor: pointer;\n text-decoration: underline;\n text-decoration-color: #317D4F;";
38155
38164
  var fallbackValues$w = {
38156
38165
  color: color$a,
38157
38166
  hoverColor: hoverColor$4,
@@ -38172,7 +38181,8 @@ var AutopayModal = function AutopayModal(_ref) {
38172
38181
  buttonLinkType = _ref.buttonLinkType,
38173
38182
  isMobile = _ref.isMobile,
38174
38183
  themeValues = _ref.themeValues,
38175
- isPaymentPlan = _ref.isPaymentPlan;
38184
+ isPaymentPlan = _ref.isPaymentPlan,
38185
+ nextAutopayDate = _ref.nextAutopayDate;
38176
38186
  var planType = isPaymentPlan ? "Payment Plan" : "Autopay";
38177
38187
  var modalExtraProps = {
38178
38188
  modalHeaderText: autoPayActive ? "Deactivate ".concat(planType) : "Set Up ".concat(planType),
@@ -38227,11 +38237,11 @@ var AutopayModal = function AutopayModal(_ref) {
38227
38237
  },
38228
38238
  tabIndex: "0",
38229
38239
  dataQa: "".concat(planType, " On"),
38230
- color: themeValues.linkColor,
38240
+ color: SEA_GREEN,
38231
38241
  weight: themeValues.fontWeight,
38232
38242
  hoverStyles: themeValues.modalLinkHoverFocus,
38233
- extraStyles: "padding: 0 0 0 6px;"
38234
- }, "".concat(planType, " On")))));
38243
+ extraStyles: "padding-left: 0.25rem;"
38244
+ }, "".concat(planType, " ").concat(nextAutopayDate)))));
38235
38245
  };
38236
38246
 
38237
38247
  var AutopayModalModule = themeComponent(AutopayModal, "AutopayModal", fallbackValues$w);
@@ -38244,7 +38254,8 @@ var AmountModule = function AmountModule(_ref) {
38244
38254
  navigateToSettings = _ref.navigateToSettings,
38245
38255
  autoPaySchedule = _ref.autoPaySchedule,
38246
38256
  paymentPlanSchedule = _ref.paymentPlanSchedule,
38247
- isPaymentPlan = _ref.isPaymentPlan;
38257
+ isPaymentPlan = _ref.isPaymentPlan,
38258
+ nextAutopayDate = _ref.nextAutopayDate;
38248
38259
 
38249
38260
  var _useState = React.useState(false),
38250
38261
  _useState2 = _slicedToArray(_useState, 2),
@@ -38255,11 +38266,7 @@ var AmountModule = function AmountModule(_ref) {
38255
38266
  padding: "0 0.25rem 0 0"
38256
38267
  }, /*#__PURE__*/React__default.createElement(Stack, {
38257
38268
  childGap: "0"
38258
- }, /*#__PURE__*/React__default.createElement(Text$1, {
38259
- variant: "pS",
38260
- weight: FONT_WEIGHT_SEMIBOLD,
38261
- extraStyles: isMobile ? "text-align: left;" : "text-align: right;"
38262
- }, isMobile ? "Total Due" : "Total Amount Due"), /*#__PURE__*/React__default.createElement(AmountCallout$1, {
38269
+ }, /*#__PURE__*/React__default.createElement(AmountCallout$1, {
38263
38270
  amount: displayCurrency(totalAmountDue),
38264
38271
  textAlign: isMobile ? "left" : "right"
38265
38272
  }), autoPayEnabled && /*#__PURE__*/React__default.createElement(AutopayModalModule, {
@@ -38271,7 +38278,8 @@ var AmountModule = function AmountModule(_ref) {
38271
38278
  deactivatePaymentSchedule: deactivatePaymentSchedule,
38272
38279
  isMobile: isMobile,
38273
38280
  paymentPlanSchedule: paymentPlanSchedule,
38274
- isPaymentPlan: isPaymentPlan
38281
+ isPaymentPlan: isPaymentPlan,
38282
+ nextAutopayDate: nextAutopayDate
38275
38283
  })));
38276
38284
  };
38277
38285
 
@@ -38287,7 +38295,8 @@ var PaymentDetailsActions = function PaymentDetailsActions(_ref) {
38287
38295
  navigateToSettings = _ref.navigateToSettings,
38288
38296
  autoPaySchedule = _ref.autoPaySchedule,
38289
38297
  paymentPlanSchedule = _ref.paymentPlanSchedule,
38290
- isPaymentPlan = _ref.isPaymentPlan;
38298
+ isPaymentPlan = _ref.isPaymentPlan,
38299
+ nextAutopayDate = _ref.nextAutopayDate;
38291
38300
  var planType = isPaymentPlan ? "Payment Plan" : "Autopay";
38292
38301
 
38293
38302
  var _useState = React.useState(false),
@@ -38342,7 +38351,8 @@ var PaymentDetailsActions = function PaymentDetailsActions(_ref) {
38342
38351
  navigateToSettings: navigateToSettings,
38343
38352
  autoPaySchedule: autoPaySchedule,
38344
38353
  paymentPlanSchedule: paymentPlanSchedule,
38345
- isPaymentPlan: isPaymentPlan
38354
+ isPaymentPlan: isPaymentPlan,
38355
+ nextAutopayDate: nextAutopayDate
38346
38356
  }))), /*#__PURE__*/React__default.createElement(Box, {
38347
38357
  padding: isMobile ? "16px" : "0"
38348
38358
  }, /*#__PURE__*/React__default.createElement(Cluster, {
@@ -38380,7 +38390,8 @@ var PaymentDetailsActions = function PaymentDetailsActions(_ref) {
38380
38390
  buttonLinkType: true,
38381
38391
  isMobile: isMobile,
38382
38392
  paymentPlanSchedule: paymentPlanSchedule,
38383
- isPaymentPlan: isPaymentPlan
38393
+ isPaymentPlan: isPaymentPlan,
38394
+ nextAutopayDate: nextAutopayDate
38384
38395
  })), !isMobile && /*#__PURE__*/React__default.createElement(Box, {
38385
38396
  padding: isMobile ? "0 0 0 8px" : "8px",
38386
38397
  extraStyles: isMobile && "flex-grow: 1;"
@@ -38420,7 +38431,8 @@ var Obligation = function Obligation(_ref) {
38420
38431
  paymentPlanSchedule = _ref.paymentPlanSchedule,
38421
38432
  navigateToSettings = _ref.navigateToSettings,
38422
38433
  isMobile = _ref.isMobile,
38423
- isPaymentPlan = _ref.isPaymentPlan;
38434
+ isPaymentPlan = _ref.isPaymentPlan,
38435
+ nextAutopayDate = _ref.nextAutopayDate;
38424
38436
  var obligation = obligations[0];
38425
38437
  var customAttributes = obligation.customAttributes;
38426
38438
  return /*#__PURE__*/React__default.createElement(Box, {
@@ -38466,7 +38478,8 @@ var Obligation = function Obligation(_ref) {
38466
38478
  navigateToSettings: navigateToSettings,
38467
38479
  autoPaySchedule: autoPaySchedule,
38468
38480
  paymentPlanSchedule: paymentPlanSchedule,
38469
- isPaymentPlan: isPaymentPlan
38481
+ isPaymentPlan: isPaymentPlan,
38482
+ nextAutopayDate: nextAutopayDate
38470
38483
  }))), !isMobile && /*#__PURE__*/React__default.createElement(PaymentDetailsActions, {
38471
38484
  obligations: obligations,
38472
38485
  autoPayEnabled: autoPayEnabled,
@@ -38479,7 +38492,8 @@ var Obligation = function Obligation(_ref) {
38479
38492
  config: config,
38480
38493
  actions: actions,
38481
38494
  isMobile: isMobile,
38482
- isPaymentPlan: isPaymentPlan
38495
+ isPaymentPlan: isPaymentPlan,
38496
+ nextAutopayDate: nextAutopayDate
38483
38497
  }))), isMobile && /*#__PURE__*/React__default.createElement(PaymentDetailsActions, {
38484
38498
  obligations: obligations,
38485
38499
  autoPayEnabled: autoPayEnabled,
@@ -38492,7 +38506,8 @@ var Obligation = function Obligation(_ref) {
38492
38506
  config: config,
38493
38507
  actions: actions,
38494
38508
  isMobile: isMobile,
38495
- isPaymentPlan: isPaymentPlan
38509
+ isPaymentPlan: isPaymentPlan,
38510
+ nextAutopayDate: nextAutopayDate
38496
38511
  }));
38497
38512
  };
38498
38513
 
@@ -38544,6 +38559,7 @@ var PartialAmountForm = function PartialAmountForm(_ref) {
38544
38559
  },
38545
38560
  placeholder: "$0.00",
38546
38561
  formatter: moneyFormat,
38562
+ isNum: true,
38547
38563
  decorator: /*#__PURE__*/React__default.createElement(Text$1, {
38548
38564
  variant: "p"
38549
38565
  }, "Amount owed:", " ", /*#__PURE__*/React__default.createElement(Text$1, {
@@ -39114,6 +39130,7 @@ var PaymentFormACH = function PaymentFormACH(_ref) {
39114
39130
  field: fields.routingNumber,
39115
39131
  fieldActions: actions.fields.routingNumber,
39116
39132
  showErrors: showErrors,
39133
+ isNum: true,
39117
39134
  helperModal: function helperModal() {
39118
39135
  return /*#__PURE__*/React__default.createElement(AccountAndRoutingModal$1, {
39119
39136
  link: "What is this?",
@@ -39135,13 +39152,15 @@ var PaymentFormACH = function PaymentFormACH(_ref) {
39135
39152
  showErrors: showErrors,
39136
39153
  onKeyDown: function onKeyDown(e) {
39137
39154
  return e.key === "Enter" && handleSubmit(e);
39138
- }
39155
+ },
39156
+ isNum: true
39139
39157
  }), /*#__PURE__*/React__default.createElement(FormInput$1, {
39140
39158
  labelTextWhenNoError: "Account number",
39141
39159
  errorMessages: accountNumberErrors,
39142
39160
  field: fields.accountNumber,
39143
39161
  fieldActions: actions.fields.accountNumber,
39144
39162
  showErrors: showErrors,
39163
+ isNum: true,
39145
39164
  helperModal: function helperModal() {
39146
39165
  return /*#__PURE__*/React__default.createElement(AccountAndRoutingModal$1, {
39147
39166
  link: "What is this?",
@@ -39163,7 +39182,8 @@ var PaymentFormACH = function PaymentFormACH(_ref) {
39163
39182
  showErrors: showErrors,
39164
39183
  onKeyDown: function onKeyDown(e) {
39165
39184
  return e.key === "Enter" && handleSubmit(e);
39166
- }
39185
+ },
39186
+ isNum: true
39167
39187
  }), allowBankAccountType && /*#__PURE__*/React__default.createElement(FormSelect$1, {
39168
39188
  labelTextWhenNoError: "Account type",
39169
39189
  options: [{
@@ -39298,7 +39318,8 @@ var PaymentFormCard = function PaymentFormCard(_ref) {
39298
39318
  formatter: creditCardFormat,
39299
39319
  onKeyDown: function onKeyDown(e) {
39300
39320
  return e.key === "Enter" && handleSubmit(e);
39301
- }
39321
+ },
39322
+ isNum: true
39302
39323
  }), /*#__PURE__*/React__default.createElement(FormInputRow, {
39303
39324
  breakpoint: "20rem"
39304
39325
  }, /*#__PURE__*/React__default.createElement(FormInput$1, {
@@ -39310,13 +39331,15 @@ var PaymentFormCard = function PaymentFormCard(_ref) {
39310
39331
  formatter: expirationDateFormat,
39311
39332
  onKeyDown: function onKeyDown(e) {
39312
39333
  return e.key === "Enter" && handleSubmit(e);
39313
- }
39334
+ },
39335
+ isNum: true
39314
39336
  }), /*#__PURE__*/React__default.createElement(FormInput$1, {
39315
39337
  labelTextWhenNoError: "CVV",
39316
39338
  errorMessages: cvvErrors,
39317
39339
  field: fields.cvv,
39318
39340
  fieldActions: actions.fields.cvv,
39319
39341
  showErrors: showErrors,
39342
+ isNum: true,
39320
39343
  background: checkCardBrand(fields.creditCardNumber.rawValue) == "AMEX" ? "/AmexCVVHint.svg" : "/CVVHint.svg",
39321
39344
  onKeyDown: function onKeyDown(e) {
39322
39345
  return e.key === "Enter" && handleSubmit(e);
@@ -39415,7 +39438,8 @@ var PhoneForm = function PhoneForm(_ref) {
39415
39438
  formatter: src_2(phoneFormats, formatDelimiter),
39416
39439
  onKeyUp: function onKeyUp(e) {
39417
39440
  return e.key === "Enter" && handleSubmit(e);
39418
- }
39441
+ },
39442
+ isNum: true
39419
39443
  }), showWalletCheckbox && /*#__PURE__*/React__default.createElement(Checkbox$1, {
39420
39444
  name: "phone checkbox",
39421
39445
  title: "Save phone number to wallet",
@@ -39696,7 +39720,8 @@ var RegistrationForm = function RegistrationForm(_ref) {
39696
39720
  onKeyDown: function onKeyDown(e) {
39697
39721
  return e.key === "Enter" && handleSubmit(e);
39698
39722
  },
39699
- type: "email"
39723
+ type: "email",
39724
+ isEmail: true
39700
39725
  }), /*#__PURE__*/React__default.createElement(FormInput$1, {
39701
39726
  labelTextWhenNoError: "Password",
39702
39727
  errorMessages: passwordErrorMessages,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thecb/components",
3
- "version": "4.1.20",
3
+ "version": "4.1.23",
4
4
  "description": "Common lib for CityBase react components",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -85,6 +85,7 @@ const FormInput = ({
85
85
  labelTextWhenNoError = "",
86
86
  errorMessages,
87
87
  isNum = false,
88
+ isEmail = false,
88
89
  helperModal = false,
89
90
  field,
90
91
  fieldActions,
@@ -176,7 +177,7 @@ const FormInput = ({
176
177
  type={type}
177
178
  value={field.rawValue}
178
179
  pattern={isNum ? "[0-9]*" : ""}
179
- inputMode={isNum ? "numeric" : ""}
180
+ inputMode={isNum ? "numeric" : isEmail ? "email" : "text"}
180
181
  field={field}
181
182
  formatter={formatter}
182
183
  showErrors={showErrors}
@@ -193,7 +194,7 @@ const FormInput = ({
193
194
  type={type === "password" && showPassword ? "text" : type}
194
195
  value={field.rawValue}
195
196
  pattern={isNum ? "[0-9]*" : ""}
196
- inputMode={isNum ? "numeric" : ""}
197
+ inputMode={isNum ? "numeric" : isEmail ? "email" : "text"}
197
198
  field={field}
198
199
  showErrors={showErrors}
199
200
  data-qa={labelTextWhenNoError}
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import React, { Fragment } from "react";
2
2
  import { fallbackValues } from "./CollapsibleSection.theme";
3
3
  import { AnimatePresence } from "framer-motion";
4
4
  import { themeComponent } from "../../../util/themeUtils";
@@ -19,7 +19,9 @@ const CollapsibleSection = ({
19
19
  initiallyOpen = true,
20
20
  openHeight = "auto",
21
21
  children,
22
- customTitle = false
22
+ customTitle = false,
23
+ stackTitle = false,
24
+ stackTitleContent
23
25
  }) => {
24
26
  const handleKeyDown = e => {
25
27
  if (e.keyCode === 13) {
@@ -68,7 +70,8 @@ const CollapsibleSection = ({
68
70
  animate={isOpen ? "open" : "closed"}
69
71
  positionTransition
70
72
  >
71
- <Stack childGap={isOpen ? "0.5rem" : "0rem"}>
73
+ {stackTitle && <Fragment>{stackTitleContent}</Fragment>}
74
+ <Stack childGap={isOpen && !isMobile ? "0.5rem" : "0rem"}>
72
75
  <Box
73
76
  padding={customPadding ? customPadding : "0"}
74
77
  background={themeValues.headingBackgroundColor}
@@ -9,14 +9,15 @@ import {
9
9
  } from "./EditableTable.styled";
10
10
  import { Box } from "../../atoms/layouts";
11
11
  import Text from "../../atoms/text";
12
- import { CHARADE_GREY } from "../../../constants/colors";
12
+ import { CHARADE_GREY, GHOST_GREY } from "../../../constants/colors";
13
13
 
14
14
  const TableListItem = ({
15
15
  title,
16
16
  value,
17
17
  canEdit = false,
18
18
  canRemove = false,
19
- isMobile
19
+ isMobile,
20
+ borderTopItem
20
21
  }) => (
21
22
  <Box
22
23
  padding="0px"
@@ -24,7 +25,15 @@ const TableListItem = ({
24
25
  > * {
25
26
  border-bottom: none;
26
27
  }
28
+ }
29
+ ${isMobile &&
30
+ borderTopItem &&
31
+ `&:first-child {
32
+ > * {
33
+ border-top: 1px solid ${GHOST_GREY};
34
+ }
27
35
  }`}
36
+ `}
28
37
  >
29
38
  <ItemWrapper>
30
39
  <EditableTableListItem isMobile={isMobile}>
@@ -45,6 +45,7 @@ const EmailForm = ({
45
45
  fieldActions={actions.fields.email}
46
46
  showErrors={showErrors}
47
47
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
48
+ isEmail
48
49
  />
49
50
  {showWalletCheckbox && (
50
51
  <Checkbox
@@ -26,6 +26,7 @@ const ForgotPasswordForm = ({
26
26
  fieldActions={actions.fields.email}
27
27
  showErrors={showErrors}
28
28
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
29
+ isEmail
29
30
  />
30
31
  );
31
32
  };
@@ -30,6 +30,7 @@ const LoginForm = ({
30
30
  fieldActions={actions.fields.email}
31
31
  showErrors={showErrors}
32
32
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
33
+ isEmail
33
34
  />
34
35
  <FormInput
35
36
  labelTextWhenNoError="Password"
@@ -20,7 +20,8 @@ const Obligation = ({
20
20
  paymentPlanSchedule,
21
21
  navigateToSettings,
22
22
  isMobile,
23
- isPaymentPlan
23
+ isPaymentPlan,
24
+ nextAutopayDate
24
25
  }) => {
25
26
  const obligation = obligations[0];
26
27
  const { customAttributes } = obligation;
@@ -71,6 +72,7 @@ const Obligation = ({
71
72
  autoPaySchedule={autoPaySchedule}
72
73
  paymentPlanSchedule={paymentPlanSchedule}
73
74
  isPaymentPlan={isPaymentPlan}
75
+ nextAutopayDate={nextAutopayDate}
74
76
  />
75
77
  )}
76
78
  </Cluster>
@@ -89,6 +91,7 @@ const Obligation = ({
89
91
  actions={actions}
90
92
  isMobile={isMobile}
91
93
  isPaymentPlan={isPaymentPlan}
94
+ nextAutopayDate={nextAutopayDate}
92
95
  />
93
96
  )}
94
97
  </Stack>
@@ -107,6 +110,7 @@ const Obligation = ({
107
110
  actions={actions}
108
111
  isMobile={isMobile}
109
112
  isPaymentPlan={isPaymentPlan}
113
+ nextAutopayDate={nextAutopayDate}
110
114
  />
111
115
  )}
112
116
  </Box>
@@ -1,8 +1,6 @@
1
1
  import React, { useState } from "react";
2
- import Text from "../../../atoms/text";
3
2
  import AmountCallout from "../../../atoms/amount-callout";
4
3
  import { Box, Stack } from "../../../atoms/layouts";
5
- import { FONT_WEIGHT_SEMIBOLD } from "../../../../constants/style_constants";
6
4
  import { displayCurrency } from "../../../../util/general";
7
5
  import { AutopayModalModule } from "./AutopayModalModule";
8
6
 
@@ -14,19 +12,13 @@ const AmountModule = ({
14
12
  navigateToSettings,
15
13
  autoPaySchedule,
16
14
  paymentPlanSchedule,
17
- isPaymentPlan
15
+ isPaymentPlan,
16
+ nextAutopayDate
18
17
  }) => {
19
18
  const [modalOpen, toggleModal] = useState(false);
20
19
  return (
21
20
  <Box padding="0 0.25rem 0 0">
22
21
  <Stack childGap="0">
23
- <Text
24
- variant="pS"
25
- weight={FONT_WEIGHT_SEMIBOLD}
26
- extraStyles={isMobile ? `text-align: left;` : `text-align: right;`}
27
- >
28
- {isMobile ? "Total Due" : "Total Amount Due"}
29
- </Text>
30
22
  <AmountCallout
31
23
  amount={displayCurrency(totalAmountDue)}
32
24
  textAlign={isMobile ? "left" : "right"}
@@ -42,6 +34,7 @@ const AmountModule = ({
42
34
  isMobile={isMobile}
43
35
  paymentPlanSchedule={paymentPlanSchedule}
44
36
  isPaymentPlan={isPaymentPlan}
37
+ nextAutopayDate={nextAutopayDate}
45
38
  />
46
39
  )}
47
40
  </Stack>
@@ -4,6 +4,7 @@ import ButtonWithAction from "../../../atoms/button-with-action";
4
4
  import Text from "../../../atoms/text";
5
5
  import { AutopayOnIcon } from "../../../atoms/icons";
6
6
  import { Box, Cluster } from "../../../atoms/layouts";
7
+ import { SEA_GREEN } from "../../../../constants/colors";
7
8
  import { fallbackValues } from "./AutopayModalModule.theme";
8
9
  import { themeComponent } from "../../../../util/themeUtils";
9
10
 
@@ -18,7 +19,8 @@ const AutopayModal = ({
18
19
  buttonLinkType,
19
20
  isMobile,
20
21
  themeValues,
21
- isPaymentPlan
22
+ isPaymentPlan,
23
+ nextAutopayDate
22
24
  }) => {
23
25
  const planType = isPaymentPlan ? "Payment Plan" : "Autopay";
24
26
  const modalExtraProps = {
@@ -101,12 +103,12 @@ const AutopayModal = ({
101
103
  }}
102
104
  tabIndex="0"
103
105
  dataQa={`${planType} On`}
104
- color={themeValues.linkColor}
106
+ color={SEA_GREEN}
105
107
  weight={themeValues.fontWeight}
106
108
  hoverStyles={themeValues.modalLinkHoverFocus}
107
- extraStyles={`padding: 0 0 0 6px;`}
109
+ extraStyles={`padding-left: 0.25rem;`}
108
110
  >
109
- {`${planType} On`}
111
+ {`${planType} ${nextAutopayDate}`}
110
112
  </Text>
111
113
  </Cluster>
112
114
  </Box>
@@ -8,7 +8,7 @@ const fontWeight = FONT_WEIGHT_REGULAR;
8
8
  const modalLinkHoverFocus = `outline: none;
9
9
  cursor: pointer;
10
10
  text-decoration: underline;
11
- text-decoration-color: #357fb8;`;
11
+ text-decoration-color: #317D4F;`;
12
12
 
13
13
  export const fallbackValues = {
14
14
  color,
@@ -17,7 +17,8 @@ const PaymentDetailsActions = ({
17
17
  navigateToSettings,
18
18
  autoPaySchedule,
19
19
  paymentPlanSchedule,
20
- isPaymentPlan
20
+ isPaymentPlan,
21
+ nextAutopayDate
21
22
  }) => {
22
23
  const planType = isPaymentPlan ? "Payment Plan" : "Autopay";
23
24
  const [isLoading, setIsLoading] = useState(false);
@@ -69,6 +70,7 @@ const PaymentDetailsActions = ({
69
70
  autoPaySchedule={autoPaySchedule}
70
71
  paymentPlanSchedule={paymentPlanSchedule}
71
72
  isPaymentPlan={isPaymentPlan}
73
+ nextAutopayDate={nextAutopayDate}
72
74
  />
73
75
  </Cluster>
74
76
  </Box>
@@ -122,6 +124,7 @@ const PaymentDetailsActions = ({
122
124
  isMobile={isMobile}
123
125
  paymentPlanSchedule={paymentPlanSchedule}
124
126
  isPaymentPlan={isPaymentPlan}
127
+ nextAutopayDate={nextAutopayDate}
125
128
  />
126
129
  )}
127
130
  </Box>
@@ -57,6 +57,7 @@ const PartialAmountForm = ({
57
57
  style={{ textAlign: "right" }}
58
58
  placeholder="$0.00"
59
59
  formatter={moneyFormat}
60
+ isNum
60
61
  decorator={
61
62
  <Text variant="p">
62
63
  Amount owed:{" "}
@@ -77,6 +77,7 @@ const PaymentFormACH = ({
77
77
  field={fields.routingNumber}
78
78
  fieldActions={actions.fields.routingNumber}
79
79
  showErrors={showErrors}
80
+ isNum
80
81
  helperModal={() => (
81
82
  <AccountAndRoutingModal
82
83
  link="What is this?"
@@ -97,6 +98,7 @@ const PaymentFormACH = ({
97
98
  fieldActions={actions.fields.confirmRoutingNumber}
98
99
  showErrors={showErrors}
99
100
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
101
+ isNum
100
102
  />
101
103
  <FormInput
102
104
  labelTextWhenNoError="Account number"
@@ -104,6 +106,7 @@ const PaymentFormACH = ({
104
106
  field={fields.accountNumber}
105
107
  fieldActions={actions.fields.accountNumber}
106
108
  showErrors={showErrors}
109
+ isNum
107
110
  helperModal={() => (
108
111
  <AccountAndRoutingModal
109
112
  link="What is this?"
@@ -124,6 +127,7 @@ const PaymentFormACH = ({
124
127
  fieldActions={actions.fields.confirmAccountNumber}
125
128
  showErrors={showErrors}
126
129
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
130
+ isNum
127
131
  />
128
132
  {allowBankAccountType && (
129
133
  <FormSelect
@@ -94,6 +94,7 @@ const PaymentFormCard = ({
94
94
  showErrors={showErrors}
95
95
  formatter={creditCardFormat}
96
96
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
97
+ isNum
97
98
  />
98
99
  <FormInputRow breakpoint="20rem">
99
100
  <FormInput
@@ -104,6 +105,7 @@ const PaymentFormCard = ({
104
105
  showErrors={showErrors}
105
106
  formatter={expirationDateFormat}
106
107
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
108
+ isNum
107
109
  />
108
110
  <FormInput
109
111
  labelTextWhenNoError="CVV"
@@ -111,6 +113,7 @@ const PaymentFormCard = ({
111
113
  field={fields.cvv}
112
114
  fieldActions={actions.fields.cvv}
113
115
  showErrors={showErrors}
116
+ isNum
114
117
  background={
115
118
  checkCardBrand(fields.creditCardNumber.rawValue) == "AMEX"
116
119
  ? "/AmexCVVHint.svg"
@@ -40,6 +40,7 @@ const PhoneForm = ({
40
40
  showErrors={showErrors}
41
41
  formatter={createFormat(phoneFormats, formatDelimiter)}
42
42
  onKeyUp={e => e.key === "Enter" && handleSubmit(e)}
43
+ isNum
43
44
  />
44
45
  {showWalletCheckbox && (
45
46
  <Checkbox
@@ -76,6 +76,7 @@ const RegistrationForm = ({
76
76
  showErrors={showErrors}
77
77
  onKeyDown={e => e.key === "Enter" && handleSubmit(e)}
78
78
  type="email"
79
+ isEmail
79
80
  />
80
81
  <FormInput
81
82
  labelTextWhenNoError="Password"