bhl-forms 0.6.14 → 0.7.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.
Files changed (94) hide show
  1. package/dist/bhl-forms.es.js +1757 -1759
  2. package/dist/bhl-forms.iife.js +4 -4
  3. package/dist/bhl-forms.modern.es.js +2804 -2811
  4. package/dist/bhl-forms.modern.iife.js +6 -6
  5. package/dist/bhl-forms.modern.umd.js +6 -6
  6. package/dist/bhl-forms.umd.js +4 -4
  7. package/dist/forms/accidentsAndInjuries.es.js +278 -215
  8. package/dist/forms/accidentsAndInjuries.iife.js +1 -1
  9. package/dist/forms/accidentsAndInjuries.json +1 -1
  10. package/dist/forms/appraisals.es.js +16 -7
  11. package/dist/forms/appraisals.iife.js +1 -1
  12. package/dist/forms/business.es.js +288 -226
  13. package/dist/forms/business.iife.js +1 -1
  14. package/dist/forms/business.json +1 -1
  15. package/dist/forms/childAndFamily.es.js +271 -214
  16. package/dist/forms/childAndFamily.iife.js +1 -1
  17. package/dist/forms/childAndFamily.json +1 -1
  18. package/dist/forms/childAndFamilySingle.es.js +614 -545
  19. package/dist/forms/childAndFamilySingle.iife.js +1 -1
  20. package/dist/forms/childAndFamilySingle.json +1 -1
  21. package/dist/forms/civilLawsuit.es.js +608 -541
  22. package/dist/forms/civilLawsuit.iife.js +1 -1
  23. package/dist/forms/civilLawsuit.json +1 -1
  24. package/dist/forms/coins.es.js +16 -7
  25. package/dist/forms/coins.iife.js +1 -1
  26. package/dist/forms/contracts.es.js +275 -217
  27. package/dist/forms/contracts.iife.js +1 -1
  28. package/dist/forms/contracts.json +1 -1
  29. package/dist/forms/criminal.es.js +631 -562
  30. package/dist/forms/criminal.iife.js +1 -1
  31. package/dist/forms/criminal.json +1 -1
  32. package/dist/forms/divorce.es.js +614 -545
  33. package/dist/forms/divorce.iife.js +1 -1
  34. package/dist/forms/divorce.json +1 -1
  35. package/dist/forms/employmentAndWorkplace.es.js +555 -496
  36. package/dist/forms/employmentAndWorkplace.iife.js +1 -1
  37. package/dist/forms/employmentAndWorkplace.json +1 -1
  38. package/dist/forms/generalHomeImprovement.es.js +3224 -0
  39. package/dist/forms/generalHomeImprovement.iife.js +1 -0
  40. package/dist/forms/generalHomeImprovement.json +1 -0
  41. package/dist/forms/generalLegal.es.js +274 -216
  42. package/dist/forms/generalLegal.iife.js +1 -1
  43. package/dist/forms/generalLegal.json +1 -1
  44. package/dist/forms/generalLegalJustAnswer.es.js +4534 -0
  45. package/dist/forms/generalLegalJustAnswer.iife.js +1 -0
  46. package/dist/forms/generalLegalJustAnswer.json +1 -0
  47. package/dist/forms/generalLegalPopUnder.es.js +275 -217
  48. package/dist/forms/generalLegalPopUnder.iife.js +1 -1
  49. package/dist/forms/generalLegalPopUnder.json +1 -1
  50. package/dist/forms/generalLegalPopUnderSingle.es.js +645 -573
  51. package/dist/forms/generalLegalPopUnderSingle.iife.js +1 -1
  52. package/dist/forms/generalLegalPopUnderSingle.json +1 -1
  53. package/dist/forms/generalLegalSingle.es.js +645 -573
  54. package/dist/forms/generalLegalSingle.iife.js +1 -1
  55. package/dist/forms/generalLegalSingle.json +1 -1
  56. package/dist/forms/generalLegalThankYou.es.js +137 -130
  57. package/dist/forms/generalLegalThankYou.iife.js +1 -1
  58. package/dist/forms/generalLegalThankYouConsultation.es.js +647 -575
  59. package/dist/forms/generalLegalThankYouConsultation.iife.js +1 -1
  60. package/dist/forms/generalLegalThankYouConsultation.json +1 -1
  61. package/dist/forms/harassmentAndDiscrimination.es.js +271 -214
  62. package/dist/forms/harassmentAndDiscrimination.iife.js +1 -1
  63. package/dist/forms/harassmentAndDiscrimination.json +1 -1
  64. package/dist/forms/landlordTenant.es.js +287 -230
  65. package/dist/forms/landlordTenant.iife.js +1 -1
  66. package/dist/forms/landlordTenant.json +1 -1
  67. package/dist/forms/malpractice.es.js +276 -217
  68. package/dist/forms/malpractice.iife.js +1 -1
  69. package/dist/forms/malpractice.json +1 -1
  70. package/dist/forms/mechanics.es.js +171 -165
  71. package/dist/forms/mechanics.iife.js +1 -1
  72. package/dist/forms/mechanics.json +1 -1
  73. package/dist/forms/patentsAndIP.es.js +617 -548
  74. package/dist/forms/patentsAndIP.iife.js +1 -1
  75. package/dist/forms/patentsAndIP.json +1 -1
  76. package/dist/forms/realEstate.es.js +272 -215
  77. package/dist/forms/realEstate.iife.js +1 -1
  78. package/dist/forms/realEstate.json +1 -1
  79. package/dist/forms/repossession.es.js +275 -217
  80. package/dist/forms/repossession.iife.js +1 -1
  81. package/dist/forms/repossession.json +1 -1
  82. package/dist/forms/ssdi.es.js +139 -138
  83. package/dist/forms/ssdi.iife.js +1 -1
  84. package/dist/forms/ssdi.json +1 -1
  85. package/dist/forms/testForm.es.js +55 -52
  86. package/dist/forms/testForm.iife.js +1 -1
  87. package/dist/forms/testRedirects.es.js +28 -22
  88. package/dist/forms/testRedirects.iife.js +1 -1
  89. package/dist/forms/vets.es.js +16 -7
  90. package/dist/forms/vets.iife.js +1 -1
  91. package/dist/forms/willsAndTrusts.es.js +272 -213
  92. package/dist/forms/willsAndTrusts.iife.js +1 -1
  93. package/dist/forms/willsAndTrusts.json +1 -1
  94. package/package.json +3 -3
@@ -6,14 +6,97 @@ function LegalRedirectUrl() {
6
6
  return 'https://listings.ziplawyer.com/api/v1/redirect?zone_id=4&vertical=Legal&category=${properties.Type_Of_Legal_Problem}&Degree_Of_Interest=${properties.Degree_Of_Interest}&zip_code=${properties.Zip}&sub_id=${properties.vid}'
7
7
  }
8
8
 
9
- var TCPA_LANGUAGE = "By checking this box, I a) agree to the Terms of Use, and b) consent to be contacted by lawyers, lawyer networks, and partners of this website using live, autodialed, pre-recorded, or artificial voice calls, as well as text messages. Your consent is not required as a condition of purchasing any goods or services. To submit this request without this consent, call 878-213-4937.";
10
-
11
- const DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC = '$getKey($meta, "commentsPlaceholders." + $get(Type_Of_Legal_Problem).value, $meta.defaultCommentsPlaceholder)';
12
- const DEFAULT_COMMENTS_LABEL = 'Please briefly describe your legal issue in a few words:';
13
- const DEFAULT_FINAL_HEADLINE = 'Submit Your Case';
14
- const DEFAULT_FINAL_HEADLINE_DYNAMIC = '$getKey($meta, "finalHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalHeadline)';
15
- const DEFAULT_FINAL_SUBHEADLINE = 'You may benefit from speaking with a legal professional. Please verify your contact information.';
16
- const DEFAULT_FINAL_SUBHEADLINE_DYNAMIC = '$getKey($meta, "finalSubHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalSubHeadline)';
9
+ const DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL = '$getKey($meta, "commentsPlaceholders." + $get(Type_Of_Legal_Problem).value, $meta.defaultCommentsPlaceholder)';
10
+ const DEFAULT_COMMENTS_LABEL_LEGAL = 'Please briefly describe your legal issue in a few words:';
11
+ const DEFAULT_FINAL_HEADLINE_LEGAL = 'Submit Your Case';
12
+ const DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL = '$getKey($meta, "finalHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalHeadline)';
13
+ const DEFAULT_FINAL_SUBHEADLINE_LEGAL = 'You may benefit from speaking with a legal professional. Please verify your contact information.';
14
+ const DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL = '$getKey($meta, "finalSubHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalSubHeadline)';
15
+ const TCPA_LANGUAGE_LEGAL = "By checking this box, I a) agree to the Terms of Use, and b) consent to be contacted by lawyers, lawyer networks, and partners of this website using live, autodialed, pre-recorded, or artificial voice calls, as well as text messages. Your consent is not required as a condition of purchasing any goods or services. To submit this request without this consent, call 878-213-4937.";
16
+ const defaultLegalImprovementCrossSells = {
17
+ 'Auto and Car Accidents': 'Injured in a Car Accident',
18
+ 'Personal Injury': 'Personal or Workplace Injury',
19
+ 'DUI and DWI': 'Involved in a DUI/DWI',
20
+ 'Wills and Trusts': 'Need a Will or Trust',
21
+ 'Power of Attorney': 'Update Power of Attorney',
22
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
23
+ };
24
+ const CROSS_SELL_OPTION_MAP_LEGAL = {
25
+ // Values can be a list or a map of value -> display value
26
+ 'Auto and Car Accidents': {
27
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
28
+ 'Wills and Trusts': 'Need a Will or Trust',
29
+ 'Workers Compensation': 'Workplace Injury',
30
+ 'Power of Attorney': 'Update Power of Attorney',
31
+ 'Divorce and Separation': 'Need a Divorce or Separation',
32
+ 'Child Custody': 'Need help with Child Custody',
33
+ },
34
+ "Personal Injury": {
35
+ 'DUI and DWI': 'Involved in a DUI/DWI',
36
+ 'Wills and Trusts': 'Need a Will or Trust',
37
+ 'Power of Attorney': 'Update Power of Attorney',
38
+ 'Divorce and Separation': 'Need a Divorce or Separation',
39
+ 'Child Custody': 'Need help with Child Custody',
40
+ // TODO add one more?
41
+ },
42
+ "Workers Compensation": {
43
+ 'DUI and DWI': 'Involved in a DUI/DWI',
44
+ 'Wills and Trusts': 'Need a Will or Trust',
45
+ 'Power of Attorney': 'Update Power of Attorney',
46
+ 'Divorce and Separation': 'Need a Divorce or Separation',
47
+ 'Child Custody': 'Need help with Child Custody',
48
+ // TODO add one more?
49
+ },
50
+ "DUI and DWI": {
51
+ 'Personal Injury': 'Personal or Workplace Injury',
52
+ 'Wills and Trusts': 'Need a Will or Trust',
53
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
54
+ 'Power of Attorney': 'Update Power of Attorney',
55
+ 'Divorce and Separation': 'Need a Divorce or Separation',
56
+ 'Child Custody': 'Need help with Child Custody',
57
+ },
58
+ "Wills and Trusts": {
59
+ 'Auto and Car Accidents': 'Injured in a Car Accident',
60
+ 'Personal Injury': 'Personal or Workplace Injury',
61
+ 'DUI and DWI': 'Involved in a DUI/DWI',
62
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
63
+ 'Divorce and Separation': 'Need a Divorce or Separation',
64
+ 'Child Custody': 'Need help with Child Custody',
65
+ },
66
+ "Probate and Estates": {
67
+ 'Auto and Car Accidents': 'Injured in a Car Accident',
68
+ 'Personal Injury': 'Personal or Workplace Injury',
69
+ 'DUI and DWI': 'Involved in a DUI/DWI',
70
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
71
+ 'Divorce and Separation': 'Need a Divorce or Separation',
72
+ 'Child Custody': 'Need help with Child Custody',
73
+ },
74
+ "Power of Attorney": {
75
+ 'Auto and Car Accidents': 'Injured in a Car Accident',
76
+ 'Personal Injury': 'Personal or Workplace Injury',
77
+ 'DUI and DWI': 'Involved in a DUI/DWI',
78
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
79
+ 'Divorce and Separation': 'Need a Divorce or Separation',
80
+ 'Child Custody': 'Need help with Child Custody',
81
+ },
82
+ "Long Term Disability": {
83
+ 'Auto and Car Accidents': 'Injured in a Car Accident',
84
+ 'DUI and DWI': 'Involved in a DUI/DWI',
85
+ 'Wills and Trusts': 'Need a Will or Trust',
86
+ 'Power of Attorney': 'Update Power of Attorney',
87
+ 'Divorce and Separation': 'Need a Divorce or Separation',
88
+ 'Child Custody': 'Need help with Child Custody',
89
+ },
90
+ "Social Security Disability and Insurance": {
91
+ 'Auto and Car Accidents': 'Injured in a Car Accident',
92
+ 'DUI and DWI': 'Involved in a DUI/DWI',
93
+ 'Wills and Trusts': 'Need a Will or Trust',
94
+ 'Power of Attorney': 'Update Power of Attorney',
95
+ 'Divorce and Separation': 'Need a Divorce or Separation',
96
+ 'Child Custody': 'Need help with Child Custody',
97
+ },
98
+ '*': defaultLegalImprovementCrossSells,
99
+ };
17
100
 
18
101
  // ------ Common Base Settings
19
102
 
@@ -177,6 +260,73 @@ const sbsDate = (updates) => {
177
260
  return date(updates)
178
261
  };
179
262
 
263
+ const email = (scope) => sbsText({
264
+ $formkit: 'email',
265
+ name: scope ? scope + ':' + 'Email' : 'Email',
266
+ label: 'Email Address:',
267
+ placeholder: 'email@domain.com',
268
+ autocomplete: 'email',
269
+ 'data-tf-sensitive': 'false',
270
+ validation: 'required|email',
271
+ validationMessages: {
272
+ required: 'Email is required',
273
+ email: 'Invalid Email'
274
+ }
275
+ });
276
+
277
+ const firstName = (scope) => sbsText({
278
+ label: 'First Name:',
279
+ placeholder: 'First',
280
+ name: scope ? scope + ':' + 'First_Name' : 'First_Name',
281
+ autocomplete: "given-name",
282
+ validationMessages: {
283
+ required: 'First Name is required'
284
+ }
285
+ });
286
+
287
+ const lastName = (scope) => sbsText({
288
+ label: 'Last Name:',
289
+ placeholder: 'Last',
290
+ name: scope ? scope + ':' + 'Last_Name' : 'Last_Name',
291
+ autocomplete: "family-name",
292
+ validationMessages: {
293
+ required: 'Last Name is required'
294
+ }
295
+ });
296
+
297
+ const phone = (scope) => sbsText({
298
+ $formkit: 'tel',
299
+ name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
300
+ label: 'Phone Number:',
301
+ placeholder: '###-###-####',
302
+ maxlength: 12,
303
+ help: '10-digit phone number, hyphens optional',
304
+ autocomplete: 'tel-national',
305
+ 'data-tf-sensitive': 'false',
306
+ validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
307
+ validationMessages: {
308
+ required: 'Field is required',
309
+ matches: 'Invalid Phone Format, use ###-###-####',
310
+ valid_phone: 'Invalid Phone Number'
311
+ },
312
+ helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
313
+ });
314
+
315
+
316
+ const zipcode = (scope) => sbsText({
317
+ label: 'Zip Code:',
318
+ placeholder: '#####',
319
+ name: scope ? scope + ':' + 'Zip' : 'Zip',
320
+ maxlength: 5,
321
+ inputmode: "numeric",
322
+ autocomplete: 'postal-code',
323
+ validation: 'required|matches:/^[0-9]{5}$/',
324
+ validationMessages: {
325
+ required: 'Zip Code is required',
326
+ matches: 'Invalid Zip Code'
327
+ }
328
+ });
329
+
180
330
  const applicantAge = (scope) => sbsText({
181
331
  name: scope ? scope + ':' + 'Applicant_Age' : 'Applicant_Age',
182
332
  label: 'Age of Applicant?',
@@ -315,20 +465,6 @@ const doctorTreatment = (scope) => sbsYesNoRadio({
315
465
  label: 'Have You Recently Been Treated by a Doctor, Hospital or Clinic?',
316
466
  });
317
467
 
318
- const email = (scope) => sbsText({
319
- $formkit: 'email',
320
- name: scope ? scope + ':' + 'Email' : 'Email',
321
- label: 'Email Address:',
322
- placeholder: 'email@domain.com',
323
- autocomplete: 'email',
324
- 'data-tf-sensitive': 'false',
325
- validation: 'required|email',
326
- validationMessages: {
327
- required: 'Email is required',
328
- email: 'Invalid Email'
329
- }
330
- });
331
-
332
468
  const estateLegalServicesNeeded = (scope) => sbsSelect({
333
469
  name: scope ? scope + ':' + 'Estate_Legal_Services_Needed' : 'Estate_Legal_Services_Needed',
334
470
  label: "Legal Services Needed for Your Estate:",
@@ -342,17 +478,6 @@ const estateLegalServicesNeeded = (scope) => sbsSelect({
342
478
  ]
343
479
  });
344
480
 
345
- const firstName = (scope) => sbsText({
346
- $formkit: 'text',
347
- label: 'First Name:',
348
- placeholder: 'First',
349
- name: scope ? scope + ':' + 'First_Name' : 'First_Name',
350
- autocomplete: "given-name",
351
- validationMessages: {
352
- required: 'First Name is required'
353
- }
354
- });
355
-
356
481
  const haveAttorney = (scope) => sbsYesNoRadio({
357
482
  name: scope ? scope + ':' + 'Have_Attorney' : 'Have_Attorney',
358
483
  label: 'Already Working with An Attorney?'
@@ -368,17 +493,6 @@ const incidentDate = (scope) => sbsDate({
368
493
  label: 'Date of Incident:',
369
494
  });
370
495
 
371
- const lastName = (scope) => sbsText({
372
- $formkit: 'text',
373
- label: 'Last Name:',
374
- placeholder: 'Last',
375
- name: scope ? scope + ':' + 'Last_Name' : 'Last_Name',
376
- autocomplete: "family-name",
377
- validationMessages: {
378
- required: 'Last Name is required'
379
- }
380
- });
381
-
382
496
  const lawsuitOtherParty = () => sbsSelect({
383
497
  label: 'The Other Party is a:',
384
498
  name: 'Lawsuit_Other_Party',
@@ -410,69 +524,7 @@ const legalCrossSells$1 = () => col2Checkbox({
410
524
  help: 'Just hit "Next" if none apply',
411
525
  helpClass: 't-text-center !t-text-sm',
412
526
  validation: null,
413
- options: {
414
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Auto and Car Accidents"',
415
- then: {
416
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
417
- 'Wills and Trusts': 'Need a Will or Trust',
418
- 'Workers Compensation': 'Workplace Injury',
419
- 'Power of Attorney': 'Update Power of Attorney',
420
- 'Divorce and Separation': 'Need a Divorce or Separation',
421
- 'Child Custody': 'Need help with Child Custody',
422
- },
423
- else: {
424
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Personal Injury" || $getVal($get(form), "Type_Of_Legal_Problem") === "Workers Compensation"',
425
- then: {
426
- 'DUI and DWI': 'Involved in a DUI/DWI',
427
- 'Wills and Trusts': 'Need a Will or Trust',
428
- 'Power of Attorney': 'Update Power of Attorney',
429
- 'Divorce and Separation': 'Need a Divorce or Separation',
430
- 'Child Custody': 'Need help with Child Custody',
431
- // TODO add one more?
432
- },
433
- else: {
434
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "DUI and DWI"',
435
- then: {
436
- 'Personal Injury': 'Personal or Workplace Injury',
437
- 'Wills and Trusts': 'Need a Will or Trust',
438
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
439
- 'Power of Attorney': 'Update Power of Attorney',
440
- 'Divorce and Separation': 'Need a Divorce or Separation',
441
- 'Child Custody': 'Need help with Child Custody',
442
- },
443
- else: {
444
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Wills and Trusts" || $getVal($get(form), "Type_Of_Legal_Problem") === "Probate and Estates" || $getVal($get(form), "Type_Of_Legal_Problem") === "Power of Attorney"',
445
- then: {
446
- 'Auto and Car Accidents': 'Injured in a Car Accident',
447
- 'Personal Injury': 'Personal or Workplace Injury',
448
- 'DUI and DWI': 'Involved in a DUI/DWI',
449
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
450
- 'Divorce and Separation': 'Need a Divorce or Separation',
451
- 'Child Custody': 'Need help with Child Custody',
452
- },
453
- else: {
454
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Long Term Disability" || $getVal($get(form), "Type_Of_Legal_Problem") === "Social Security Disability and Insurance"',
455
- then: {
456
- 'Auto and Car Accidents': 'Injured in a Car Accident',
457
- 'DUI and DWI': 'Involved in a DUI/DWI',
458
- 'Wills and Trusts': 'Need a Will or Trust',
459
- 'Power of Attorney': 'Update Power of Attorney',
460
- 'Divorce and Separation': 'Need a Divorce or Separation',
461
- 'Child Custody': 'Need help with Child Custody',
462
- },
463
- else: {
464
- 'Auto and Car Accidents': 'Injured in a Car Accident',
465
- 'Personal Injury': 'Personal or Workplace Injury',
466
- 'DUI and DWI': 'Involved in a DUI/DWI',
467
- 'Wills and Trusts': 'Need a Will or Trust',
468
- 'Power of Attorney': 'Update Power of Attorney',
469
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
470
- }
471
- }
472
- }
473
- }
474
- }
475
- }
527
+ options: '$getCrossSellOptions($get(form), $getVal($get(form), "Type_Of_Legal_Problem"))',
476
528
  });
477
529
 
478
530
  const maritalStatus = (scope) => sbsSelect({
@@ -498,24 +550,6 @@ const pendingCharges = (scope) => sbsYesNoRadio({
498
550
  label: 'Do you currently have any pending charges?'
499
551
  });
500
552
 
501
- const phone = (scope) => sbsText({
502
- $formkit: 'tel',
503
- name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
504
- label: 'Phone Number:',
505
- placeholder: '###-###-####',
506
- maxlength: 12,
507
- help: '10-digit phone number, hyphens optional',
508
- autocomplete: 'tel-national',
509
- 'data-tf-sensitive': 'false',
510
- validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
511
- validationMessages: {
512
- required: 'Field is required',
513
- matches: 'Invalid Phone Format, use ###-###-####',
514
- valid_phone: 'Invalid Phone Number'
515
- },
516
- helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
517
- });
518
-
519
553
  const primaryInjury = (scope) => sbs2ColRadio({
520
554
  name: scope ? scope + ':' + 'Primary_Injury' : 'Primary_Injury',
521
555
  label: 'Primary Injury:',
@@ -651,21 +685,6 @@ const valueOfAssets = (scope) => sbsSelect({
651
685
  ]
652
686
  });
653
687
 
654
- const zipcode = (scope) => sbsText({
655
- label: 'Zip Code:',
656
- placeholder: '#####',
657
- name: scope ? scope + ':' + 'Zip' : 'Zip',
658
- maxlength: 5,
659
- inputmode: "numeric",
660
- autocomplete: 'postal-code',
661
- validation: 'required|matches:/^[0-9]{5}$/',
662
- validationMessages: {
663
- required: 'Zip Code is required',
664
- matches: 'Invalid Zip Code'
665
- }
666
- });
667
-
668
-
669
688
  // ------ Question Groups
670
689
 
671
690
  // NOTE: name must be unique within a form!
@@ -960,13 +979,20 @@ function crossSellQuestionsStepSubHeadline(updates) {
960
979
  function commentsStepHeadline(updates) {
961
980
  return {
962
981
  $el: 'h3',
963
- children: updates.headline || 'Additional Case Details',
982
+ children: updates.headline || 'Additional Details',
964
983
  attrs: {
965
984
  class: 't-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-blue-500 t-pb-5 t-pt-0 t-px-1' + ' ' + (updates.headlineClass || '')
966
985
  }
967
986
  }
968
987
  }
969
988
 
989
+ function commentsStepHeadlineLegal(updates) {
990
+ return commentsStepHeadline({
991
+ headline: updates.headline || 'Additional Case Details',
992
+ headlineClass: updates.headlineClass
993
+ })
994
+ }
995
+
970
996
  function firstAndLastStepHeadline(updates) {
971
997
  return {
972
998
  $el: 'h3',
@@ -990,7 +1016,7 @@ function legalCrossSellsStepHeadline(updates) {
990
1016
  function contactStepHeadline(updates) {
991
1017
  return {
992
1018
  $el: 'h3',
993
- children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC,
1019
+ children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL,
994
1020
  attrs: {
995
1021
  class: 't-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-blue-500 t-pb-3 t-pt-0 t-px-1' + ' ' + (updates.headlineClass || '')
996
1022
  }
@@ -1000,7 +1026,7 @@ function contactStepHeadline(updates) {
1000
1026
  function contactStepSubHeadline(updates) {
1001
1027
  return {
1002
1028
  $el: 'h5',
1003
- children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC,
1029
+ children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL,
1004
1030
  attrs: {
1005
1031
  class: 't-flex t-justify-center t-text-center !t-text-lg t-font-semibold t-pb-7 t-pt-0 t-px-3' + ' ' + (updates.subheadlineClass || '')
1006
1032
  }
@@ -1040,10 +1066,16 @@ const stepDefaults = (step, stepKey) => ({
1040
1066
  }
1041
1067
  });
1042
1068
 
1043
- function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = undefined, nextStepMap = undefined, autoFocus = undefined) {
1044
- if (typeof nextOnEnter === 'undefined') {
1045
- nextOnEnter = true;
1046
- }
1069
+ function step(name, inputs, updates = {}) {
1070
+ const {
1071
+ nextOnEnter = true,
1072
+ nextOnInput = false,
1073
+ stepKey = undefined,
1074
+ nextStepMap = undefined,
1075
+ triggerRedirectMap = undefined,
1076
+ autoFocus = undefined,
1077
+ } = updates;
1078
+
1047
1079
  if (inputs && inputs.length && (nextOnEnter || nextOnInput)) {
1048
1080
  const lastInput = findLastInput(inputs[inputs.length - 1]);
1049
1081
  if (lastInput && nextOnEnter === true) {
@@ -1063,6 +1095,7 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
1063
1095
  id: name,
1064
1096
  name: name,
1065
1097
  nextStepMap: nextStepMap,
1098
+ triggerRedirectMap: triggerRedirectMap,
1066
1099
  autoFocus: autoFocus,
1067
1100
  children: inputs
1068
1101
  }
@@ -1071,6 +1104,34 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
1071
1104
  )
1072
1105
  }
1073
1106
 
1107
+ function contactInfo(updates = {}) {
1108
+ return step(
1109
+ 'contactInfo',
1110
+ [
1111
+ contactStepHeadline(updates),
1112
+ contactStepSubHeadline(updates),
1113
+ trustedFormScript(),
1114
+ email(updates.scope),
1115
+ phone(updates.scope),
1116
+ TCPAConsent(updates.scope),
1117
+ secureIcon()
1118
+ ],
1119
+ { nextOnEnter: false }
1120
+ )
1121
+ }
1122
+
1123
+ function firstAndLastV2(updates = {}) {
1124
+ return step(
1125
+ 'firstAndLast',
1126
+ [
1127
+ firstAndLastStepHeadline(updates),
1128
+ firstName(),
1129
+ lastName()
1130
+ ],
1131
+ updates
1132
+ )
1133
+ }
1134
+
1074
1135
  function repossessionTOLPAndZip(updates = {}) {
1075
1136
  return step(
1076
1137
  'repossessionTOLPAndZip',
@@ -1084,10 +1145,7 @@ function repossessionTOLPAndZip(updates = {}) {
1084
1145
  repossessionTOLPDisplay(),
1085
1146
  zipcode()
1086
1147
  ],
1087
- updates.nextOnEnter,
1088
- updates.nextOnInput,
1089
- updates.stepKey,
1090
- updates.nextStepMap
1148
+ updates
1091
1149
  )
1092
1150
  }
1093
1151
 
@@ -1095,10 +1153,10 @@ function commentsWithBankruptcy(updates = {}) {
1095
1153
  return step(
1096
1154
  'commentsWithBankruptcy',
1097
1155
  [
1098
- commentsStepHeadline(updates),
1156
+ commentsStepHeadlineLegal(updates),
1099
1157
  comments({
1100
- label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL : updates.label,
1101
- placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1158
+ label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL_LEGAL : updates.label,
1159
+ placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1102
1160
  inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1103
1161
  }, updates.scope),
1104
1162
  // TODO: needs scope support
@@ -1115,39 +1173,10 @@ function commentsWithBankruptcy(updates = {}) {
1115
1173
  ],
1116
1174
  }
1117
1175
  ],
1118
- false // nextOnEnter
1119
- )
1120
- }
1121
-
1122
- function contactInfo(updates = {}) {
1123
- return step(
1124
- 'contactInfo',
1125
- [
1126
- contactStepHeadline(updates),
1127
- contactStepSubHeadline(updates),
1128
- trustedFormScript(),
1129
- email(updates.scope),
1130
- phone(updates.scope),
1131
- TCPAConsent(updates.scope),
1132
- secureIcon()
1133
- ],
1134
- false, // nextOnEnter
1176
+ { nextOnEnter: false }
1135
1177
  )
1136
1178
  }
1137
1179
 
1138
- function firstAndLastV2(updates = {}) {
1139
- return step(
1140
- 'firstAndLast',
1141
- [
1142
- firstAndLastStepHeadline(updates),
1143
- firstName(),
1144
- lastName()
1145
- ],
1146
- updates.nextOnEnter
1147
- )
1148
- }
1149
-
1150
-
1151
1180
  function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1152
1181
  return step(
1153
1182
  'autoAndCarAccidentCrossSellQuestions',
@@ -1164,7 +1193,7 @@ function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1164
1193
  'CrossSell:Auto_and_Car_Accidents'
1165
1194
  )
1166
1195
  ],
1167
- updates.nextOnEnter
1196
+ updates
1168
1197
  )
1169
1198
  }
1170
1199
 
@@ -1183,7 +1212,7 @@ function childCustodyCrossSellQuestions(updates = {}) {
1183
1212
  'CrossSell:Child_Custody'
1184
1213
  )
1185
1214
  ],
1186
- updates.nextOnEnter
1215
+ updates
1187
1216
  )
1188
1217
  }
1189
1218
 
@@ -1202,7 +1231,7 @@ function divorceAndSeparationCrossSellQuestions(updates = {}) {
1202
1231
  'CrossSell:Divorce_and_Separation'
1203
1232
  )
1204
1233
  ],
1205
- updates.nextOnEnter
1234
+ updates
1206
1235
  )
1207
1236
  }
1208
1237
 
@@ -1221,7 +1250,7 @@ function duiAndDWICrossSellQuestions(updates = {}) {
1221
1250
  'CrossSell:DUI_and_DWI'
1222
1251
  )
1223
1252
  ],
1224
- updates.nextOnEnter
1253
+ updates
1225
1254
  )
1226
1255
  }
1227
1256
 
@@ -1241,7 +1270,7 @@ function ssdiCrossSellQuestions(updates = {}) {
1241
1270
  'CrossSell:Social_Security_Disability_and_Insurance'
1242
1271
  )
1243
1272
  ],
1244
- updates.nextOnEnter
1273
+ updates
1245
1274
  )
1246
1275
  }
1247
1276
 
@@ -1261,7 +1290,7 @@ function personalInjuryCrossSellQuestions(updates = {}) {
1261
1290
  'CrossSell:Personal_Injury'
1262
1291
  )
1263
1292
  ],
1264
- updates.nextOnEnter
1293
+ updates
1265
1294
  )
1266
1295
  }
1267
1296
 
@@ -1280,7 +1309,7 @@ function powerOfAttorneyCrossSellQuestions(updates = {}) {
1280
1309
  'CrossSell:Power_of_Attorney'
1281
1310
  )
1282
1311
  ],
1283
- updates.nextOnEnter
1312
+ updates
1284
1313
  )
1285
1314
  }
1286
1315
 
@@ -1299,7 +1328,7 @@ function willsAndTrustsCrossSellQuestions(updates = {}) {
1299
1328
  'CrossSell:Wills_and_Trusts'
1300
1329
  )
1301
1330
  ],
1302
- updates.nextOnEnter
1331
+ updates
1303
1332
  )
1304
1333
  }
1305
1334
 
@@ -1319,21 +1348,20 @@ function workersCompensationCrossSellQuestions(updates = {}) {
1319
1348
  'CrossSell:Workers_Compensation'
1320
1349
  )
1321
1350
  ],
1322
- updates.nextOnEnter
1351
+ updates
1323
1352
  )
1324
1353
  }
1325
1354
 
1326
1355
  function legalCrossSells(updates = {}) {
1356
+ updates.nextOnInput = false;
1357
+ updates.stepKey = '$get(Type_Of_Legal_Problem).value';
1327
1358
  return step(
1328
1359
  'legalCrossSells',
1329
1360
  [
1330
1361
  legalCrossSellsStepHeadline(updates),
1331
1362
  legalCrossSells$1(),
1332
1363
  ],
1333
- updates.nextOnEnter,
1334
- false,
1335
- // Note: we should probably scope this stepKey to this step name
1336
- '$get(Type_Of_Legal_Problem).value'
1364
+ updates
1337
1365
  )
1338
1366
  }
1339
1367
 
@@ -1347,7 +1375,7 @@ function repossessionTOLPQuestions(updates = {}) {
1347
1375
  BankruptcyQuestions(),
1348
1376
  NotSureOrOtherQuestions()
1349
1377
  ],
1350
- updates.nextOnEnter
1378
+ updates
1351
1379
  )
1352
1380
  }
1353
1381
 
@@ -1490,9 +1518,7 @@ function formProps(updates) {
1490
1518
  return props
1491
1519
  }
1492
1520
 
1493
- const metaDefaults = {
1494
- tcpaLanguage: TCPA_LANGUAGE
1495
- };
1521
+ const metaDefaults = {};
1496
1522
 
1497
1523
  function metaProps(updates) {
1498
1524
  const data = merge(
@@ -1505,7 +1531,7 @@ function metaProps(updates) {
1505
1531
  }
1506
1532
  }
1507
1533
 
1508
- function defaultMetaProps(tolps = null) {
1534
+ function defaultMetaPropsLegal(tolps = null) {
1509
1535
  let commentsPlaceholders = TOLPCommentsPlaceholders;
1510
1536
  let finalHeadlines = TOLPFinalHeadlines;
1511
1537
  let finalSubHeadlines = TOLPFinalSubHeadlines;
@@ -1515,12 +1541,13 @@ function defaultMetaProps(tolps = null) {
1515
1541
  finalSubHeadlines = filterMapByKey(TOLPFinalSubHeadlines, tolps);
1516
1542
  }
1517
1543
  return metaProps({
1518
- defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1544
+ tcpaLanguage: TCPA_LANGUAGE_LEGAL,
1545
+ defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1519
1546
  commentsPlaceholders: commentsPlaceholders,
1520
- defaultFinalHeadline: DEFAULT_FINAL_HEADLINE,
1547
+ defaultFinalHeadline: DEFAULT_FINAL_HEADLINE_LEGAL,
1521
1548
  finalHeadlines: finalHeadlines,
1522
- defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE,
1523
- finalSubHeadlines: finalSubHeadlines,
1549
+ defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE_LEGAL,
1550
+ finalSubHeadlines: finalSubHeadlines
1524
1551
  })
1525
1552
  }
1526
1553
 
@@ -1986,25 +2013,55 @@ const TOLPFinalSubHeadlines = {
1986
2013
  // 'Non-Workplace Discrimination': '',
1987
2014
  };
1988
2015
 
1989
-
1990
2016
  const nextStepsMapLegalLegacy = {
1991
- '*': [
1992
- 'TOLPQuestions',
1993
- 'commentsWithBankruptcy',
1994
- 'legalCrossSells',
1995
- 'firstAndLast',
1996
- 'contactInfo',
1997
- ]
2017
+ values: {
2018
+ '*': [
2019
+ 'TOLPQuestions',
2020
+ 'commentsWithBankruptcy',
2021
+ 'legalCrossSells',
2022
+ 'firstAndLast',
2023
+ 'contactInfo',
2024
+ ]
2025
+ }
1998
2026
  };
1999
2027
 
2000
- const meta = defaultMetaProps();
2028
+ const nextStepsMapLegalCrossSells = {
2029
+ values: {
2030
+ 'Legal_CrossSells': {
2031
+ 'Auto and Car Accidents': ['autoAndCarAccidentCrossSellQuestions'],
2032
+ 'Personal Injury': ['personalInjuryCrossSellQuestions'],
2033
+ 'Workers Compensation': ['workersCompensationCrossSellQuestions'],
2034
+ 'DUI and DWI': ['duiAndDWICrossSellQuestions'],
2035
+ 'Long Term Disability': ['longTermDisabilityCrossSellQuestions'],
2036
+ 'Social Security Disability and Insurance': ['ssdiCrossSellQuestions'],
2037
+ 'Bankruptcy': ['bankruptcyCrossSellQuestions'],
2038
+ 'Power of Attorney': ['powerOfAttorneyCrossSellQuestions'],
2039
+ 'Wills and Trusts': ['willsAndTrustsCrossSellQuestions'],
2040
+ 'Divorce and Separation': ['divorceAndSeparationCrossSellQuestions'],
2041
+ 'Child Custody': ['childCustodyCrossSellQuestions'],
2042
+ },
2043
+ '*': ['firstAndLast', 'contactInfo'],
2044
+ },
2045
+
2046
+ // NOTE: this assumes a certain placement of the cross sell question
2047
+ // in the form flow.
2048
+ appendSteps: ['firstAndLast', 'contactInfo'],
2049
+ matchesAllowed: 1,
2050
+ };
2051
+
2052
+ const legalCrossSellOptionMap = CROSS_SELL_OPTION_MAP_LEGAL;
2053
+
2054
+ const meta = defaultMetaPropsLegal();
2001
2055
 
2002
2056
  meta.data.dynamicSchema = [
2003
2057
  repossessionTOLPQuestions(),
2004
2058
  commentsWithBankruptcy({
2005
2059
  placeholder: 'Example: "My car is being repossessed and I need help."',
2006
2060
  }),
2007
- legalCrossSells(),
2061
+ legalCrossSells({
2062
+ headlineClass: '!t-text-dark',
2063
+ nextStepMap: nextStepsMapLegalCrossSells,
2064
+ }),
2008
2065
  autoAndCarAccidentCrossSellQuestions(),
2009
2066
  personalInjuryCrossSellQuestions(),
2010
2067
  workersCompensationCrossSellQuestions(),
@@ -2025,7 +2082,8 @@ const schema = [
2025
2082
  props: formProps({
2026
2083
  formId: 'repossession',
2027
2084
  redirectMap: legalRedirectMap(),
2028
- valueOverrideMap: legalAllValueOverrideMap
2085
+ valueOverrideMap: legalAllValueOverrideMap,
2086
+ crossSellOptionMap: legalCrossSellOptionMap
2029
2087
  }),
2030
2088
  children: [
2031
2089
  headline({