bhl-forms 0.6.15 → 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 +645 -573
  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
 
@@ -186,6 +269,73 @@ const sbsDate = (updates) => {
186
269
  return date(updates)
187
270
  };
188
271
 
272
+ const email = (scope) => sbsText({
273
+ $formkit: 'email',
274
+ name: scope ? scope + ':' + 'Email' : 'Email',
275
+ label: 'Email Address:',
276
+ placeholder: 'email@domain.com',
277
+ autocomplete: 'email',
278
+ 'data-tf-sensitive': 'false',
279
+ validation: 'required|email',
280
+ validationMessages: {
281
+ required: 'Email is required',
282
+ email: 'Invalid Email'
283
+ }
284
+ });
285
+
286
+ const firstName = (scope) => sbsText({
287
+ label: 'First Name:',
288
+ placeholder: 'First',
289
+ name: scope ? scope + ':' + 'First_Name' : 'First_Name',
290
+ autocomplete: "given-name",
291
+ validationMessages: {
292
+ required: 'First Name is required'
293
+ }
294
+ });
295
+
296
+ const lastName = (scope) => sbsText({
297
+ label: 'Last Name:',
298
+ placeholder: 'Last',
299
+ name: scope ? scope + ':' + 'Last_Name' : 'Last_Name',
300
+ autocomplete: "family-name",
301
+ validationMessages: {
302
+ required: 'Last Name is required'
303
+ }
304
+ });
305
+
306
+ const phone = (scope) => sbsText({
307
+ $formkit: 'tel',
308
+ name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
309
+ label: 'Phone Number:',
310
+ placeholder: '###-###-####',
311
+ maxlength: 12,
312
+ help: '10-digit phone number, hyphens optional',
313
+ autocomplete: 'tel-national',
314
+ 'data-tf-sensitive': 'false',
315
+ validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
316
+ validationMessages: {
317
+ required: 'Field is required',
318
+ matches: 'Invalid Phone Format, use ###-###-####',
319
+ valid_phone: 'Invalid Phone Number'
320
+ },
321
+ helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
322
+ });
323
+
324
+
325
+ const zipcode = (scope) => sbsText({
326
+ label: 'Zip Code:',
327
+ placeholder: '#####',
328
+ name: scope ? scope + ':' + 'Zip' : 'Zip',
329
+ maxlength: 5,
330
+ inputmode: "numeric",
331
+ autocomplete: 'postal-code',
332
+ validation: 'required|matches:/^[0-9]{5}$/',
333
+ validationMessages: {
334
+ required: 'Zip Code is required',
335
+ matches: 'Invalid Zip Code'
336
+ }
337
+ });
338
+
189
339
  const applicantAge = (scope) => sbsText({
190
340
  name: scope ? scope + ':' + 'Applicant_Age' : 'Applicant_Age',
191
341
  label: 'Age of Applicant?',
@@ -345,20 +495,6 @@ const doctorTreatment = (scope) => sbsYesNoRadio({
345
495
  label: 'Have You Recently Been Treated by a Doctor, Hospital or Clinic?',
346
496
  });
347
497
 
348
- const email = (scope) => sbsText({
349
- $formkit: 'email',
350
- name: scope ? scope + ':' + 'Email' : 'Email',
351
- label: 'Email Address:',
352
- placeholder: 'email@domain.com',
353
- autocomplete: 'email',
354
- 'data-tf-sensitive': 'false',
355
- validation: 'required|email',
356
- validationMessages: {
357
- required: 'Email is required',
358
- email: 'Invalid Email'
359
- }
360
- });
361
-
362
498
  const estateLegalServicesNeeded = (scope) => sbsSelect({
363
499
  name: scope ? scope + ':' + 'Estate_Legal_Services_Needed' : 'Estate_Legal_Services_Needed',
364
500
  label: "Legal Services Needed for Your Estate:",
@@ -372,17 +508,6 @@ const estateLegalServicesNeeded = (scope) => sbsSelect({
372
508
  ]
373
509
  });
374
510
 
375
- const firstName = (scope) => sbsText({
376
- $formkit: 'text',
377
- label: 'First Name:',
378
- placeholder: 'First',
379
- name: scope ? scope + ':' + 'First_Name' : 'First_Name',
380
- autocomplete: "given-name",
381
- validationMessages: {
382
- required: 'First Name is required'
383
- }
384
- });
385
-
386
511
  const haveAttorney = (scope) => sbsYesNoRadio({
387
512
  name: scope ? scope + ':' + 'Have_Attorney' : 'Have_Attorney',
388
513
  label: 'Already Working with An Attorney?'
@@ -398,17 +523,6 @@ const incidentDate = (scope) => sbsDate({
398
523
  label: 'Date of Incident:',
399
524
  });
400
525
 
401
- const lastName = (scope) => sbsText({
402
- $formkit: 'text',
403
- label: 'Last Name:',
404
- placeholder: 'Last',
405
- name: scope ? scope + ':' + 'Last_Name' : 'Last_Name',
406
- autocomplete: "family-name",
407
- validationMessages: {
408
- required: 'Last Name is required'
409
- }
410
- });
411
-
412
526
  const lawyerPaymentMethod = (scope) => sbsSelect({
413
527
  name: scope ? scope + ':' + 'Lawyer_Payment_Method' : 'Lawyer_Payment_Method',
414
528
  label: 'How Will You Pay for Legal Fees if You Hire a Lawyer?',
@@ -429,69 +543,7 @@ const legalCrossSells$1 = () => col2Checkbox({
429
543
  help: 'Just hit "Next" if none apply',
430
544
  helpClass: 't-text-center !t-text-sm',
431
545
  validation: null,
432
- options: {
433
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Auto and Car Accidents"',
434
- then: {
435
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
436
- 'Wills and Trusts': 'Need a Will or Trust',
437
- 'Workers Compensation': 'Workplace Injury',
438
- 'Power of Attorney': 'Update Power of Attorney',
439
- 'Divorce and Separation': 'Need a Divorce or Separation',
440
- 'Child Custody': 'Need help with Child Custody',
441
- },
442
- else: {
443
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Personal Injury" || $getVal($get(form), "Type_Of_Legal_Problem") === "Workers Compensation"',
444
- then: {
445
- 'DUI and DWI': 'Involved in a DUI/DWI',
446
- 'Wills and Trusts': 'Need a Will or Trust',
447
- 'Power of Attorney': 'Update Power of Attorney',
448
- 'Divorce and Separation': 'Need a Divorce or Separation',
449
- 'Child Custody': 'Need help with Child Custody',
450
- // TODO add one more?
451
- },
452
- else: {
453
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "DUI and DWI"',
454
- then: {
455
- 'Personal Injury': 'Personal or Workplace Injury',
456
- 'Wills and Trusts': 'Need a Will or Trust',
457
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
458
- 'Power of Attorney': 'Update Power of Attorney',
459
- 'Divorce and Separation': 'Need a Divorce or Separation',
460
- 'Child Custody': 'Need help with Child Custody',
461
- },
462
- else: {
463
- 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"',
464
- then: {
465
- 'Auto and Car Accidents': 'Injured in a Car Accident',
466
- 'Personal Injury': 'Personal or Workplace Injury',
467
- 'DUI and DWI': 'Involved in a DUI/DWI',
468
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
469
- 'Divorce and Separation': 'Need a Divorce or Separation',
470
- 'Child Custody': 'Need help with Child Custody',
471
- },
472
- else: {
473
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Long Term Disability" || $getVal($get(form), "Type_Of_Legal_Problem") === "Social Security Disability and Insurance"',
474
- then: {
475
- 'Auto and Car Accidents': 'Injured in a Car Accident',
476
- 'DUI and DWI': 'Involved in a DUI/DWI',
477
- 'Wills and Trusts': 'Need a Will or Trust',
478
- 'Power of Attorney': 'Update Power of Attorney',
479
- 'Divorce and Separation': 'Need a Divorce or Separation',
480
- 'Child Custody': 'Need help with Child Custody',
481
- },
482
- else: {
483
- 'Auto and Car Accidents': 'Injured in a Car Accident',
484
- 'Personal Injury': 'Personal or Workplace Injury',
485
- 'DUI and DWI': 'Involved in a DUI/DWI',
486
- 'Wills and Trusts': 'Need a Will or Trust',
487
- 'Power of Attorney': 'Update Power of Attorney',
488
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
489
- }
490
- }
491
- }
492
- }
493
- }
494
- }
546
+ options: '$getCrossSellOptions($get(form), $getVal($get(form), "Type_Of_Legal_Problem"))',
495
547
  });
496
548
 
497
549
  const maritalStatus = (scope) => sbsSelect({
@@ -512,24 +564,6 @@ const pendingCharges = (scope) => sbsYesNoRadio({
512
564
  label: 'Do you currently have any pending charges?'
513
565
  });
514
566
 
515
- const phone = (scope) => sbsText({
516
- $formkit: 'tel',
517
- name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
518
- label: 'Phone Number:',
519
- placeholder: '###-###-####',
520
- maxlength: 12,
521
- help: '10-digit phone number, hyphens optional',
522
- autocomplete: 'tel-national',
523
- 'data-tf-sensitive': 'false',
524
- validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
525
- validationMessages: {
526
- required: 'Field is required',
527
- matches: 'Invalid Phone Format, use ###-###-####',
528
- valid_phone: 'Invalid Phone Number'
529
- },
530
- helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
531
- });
532
-
533
567
  const primaryInjury = (scope) => sbs2ColRadio({
534
568
  name: scope ? scope + ':' + 'Primary_Injury' : 'Primary_Injury',
535
569
  label: 'Primary Injury:',
@@ -651,21 +685,6 @@ const willsAndTrustsTOLP = () => col2Radio({
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!
@@ -961,13 +980,20 @@ function crossSellQuestionsStepSubHeadline(updates) {
961
980
  function commentsStepHeadline(updates) {
962
981
  return {
963
982
  $el: 'h3',
964
- children: updates.headline || 'Additional Case Details',
983
+ children: updates.headline || 'Additional Details',
965
984
  attrs: {
966
985
  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 || '')
967
986
  }
968
987
  }
969
988
  }
970
989
 
990
+ function commentsStepHeadlineLegal(updates) {
991
+ return commentsStepHeadline({
992
+ headline: updates.headline || 'Additional Case Details',
993
+ headlineClass: updates.headlineClass
994
+ })
995
+ }
996
+
971
997
  function firstAndLastStepHeadline(updates) {
972
998
  return {
973
999
  $el: 'h3',
@@ -991,7 +1017,7 @@ function legalCrossSellsStepHeadline(updates) {
991
1017
  function contactStepHeadline(updates) {
992
1018
  return {
993
1019
  $el: 'h3',
994
- children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC,
1020
+ children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL,
995
1021
  attrs: {
996
1022
  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 || '')
997
1023
  }
@@ -1001,7 +1027,7 @@ function contactStepHeadline(updates) {
1001
1027
  function contactStepSubHeadline(updates) {
1002
1028
  return {
1003
1029
  $el: 'h5',
1004
- children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC,
1030
+ children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL,
1005
1031
  attrs: {
1006
1032
  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 || '')
1007
1033
  }
@@ -1041,10 +1067,16 @@ const stepDefaults = (step, stepKey) => ({
1041
1067
  }
1042
1068
  });
1043
1069
 
1044
- function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = undefined, nextStepMap = undefined, autoFocus = undefined) {
1045
- if (typeof nextOnEnter === 'undefined') {
1046
- nextOnEnter = true;
1047
- }
1070
+ function step(name, inputs, updates = {}) {
1071
+ const {
1072
+ nextOnEnter = true,
1073
+ nextOnInput = false,
1074
+ stepKey = undefined,
1075
+ nextStepMap = undefined,
1076
+ triggerRedirectMap = undefined,
1077
+ autoFocus = undefined,
1078
+ } = updates;
1079
+
1048
1080
  if (inputs && inputs.length && (nextOnEnter || nextOnInput)) {
1049
1081
  const lastInput = findLastInput(inputs[inputs.length - 1]);
1050
1082
  if (lastInput && nextOnEnter === true) {
@@ -1064,6 +1096,7 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
1064
1096
  id: name,
1065
1097
  name: name,
1066
1098
  nextStepMap: nextStepMap,
1099
+ triggerRedirectMap: triggerRedirectMap,
1067
1100
  autoFocus: autoFocus,
1068
1101
  children: inputs
1069
1102
  }
@@ -1072,34 +1105,6 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
1072
1105
  )
1073
1106
  }
1074
1107
 
1075
- function commentsWithBankruptcy(updates = {}) {
1076
- return step(
1077
- 'commentsWithBankruptcy',
1078
- [
1079
- commentsStepHeadline(updates),
1080
- comments({
1081
- label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL : updates.label,
1082
- placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1083
- inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1084
- }, updates.scope),
1085
- // TODO: needs scope support
1086
- bankruptcyCrossSell(),
1087
- {
1088
- $el: 'div',
1089
- if: '$get(CrossSell_Bankruptcy).value == true',
1090
- children: [
1091
- comments({
1092
- label: 'Bankruptcy or debt details:',
1093
- placeholder: 'Please describe your bankrtupcy or debt situation in a few words...',
1094
- inputClass: '!t-h-16'
1095
- }, 'CrossSell:Bankruptcy')
1096
- ],
1097
- }
1098
- ],
1099
- false // nextOnEnter
1100
- )
1101
- }
1102
-
1103
1108
  function contactInfo(updates = {}) {
1104
1109
  return step(
1105
1110
  'contactInfo',
@@ -1112,7 +1117,7 @@ function contactInfo(updates = {}) {
1112
1117
  TCPAConsent(updates.scope),
1113
1118
  secureIcon()
1114
1119
  ],
1115
- false, // nextOnEnter
1120
+ { nextOnEnter: false }
1116
1121
  )
1117
1122
  }
1118
1123
 
@@ -1124,10 +1129,37 @@ function firstAndLastV2(updates = {}) {
1124
1129
  firstName(),
1125
1130
  lastName()
1126
1131
  ],
1127
- updates.nextOnEnter
1132
+ updates
1128
1133
  )
1129
1134
  }
1130
1135
 
1136
+ function commentsWithBankruptcy(updates = {}) {
1137
+ return step(
1138
+ 'commentsWithBankruptcy',
1139
+ [
1140
+ commentsStepHeadlineLegal(updates),
1141
+ comments({
1142
+ label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL_LEGAL : updates.label,
1143
+ placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1144
+ inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1145
+ }, updates.scope),
1146
+ // TODO: needs scope support
1147
+ bankruptcyCrossSell(),
1148
+ {
1149
+ $el: 'div',
1150
+ if: '$get(CrossSell_Bankruptcy).value == true',
1151
+ children: [
1152
+ comments({
1153
+ label: 'Bankruptcy or debt details:',
1154
+ placeholder: 'Please describe your bankrtupcy or debt situation in a few words...',
1155
+ inputClass: '!t-h-16'
1156
+ }, 'CrossSell:Bankruptcy')
1157
+ ],
1158
+ }
1159
+ ],
1160
+ { nextOnEnter: false }
1161
+ )
1162
+ }
1131
1163
 
1132
1164
  function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1133
1165
  return step(
@@ -1145,7 +1177,7 @@ function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1145
1177
  'CrossSell:Auto_and_Car_Accidents'
1146
1178
  )
1147
1179
  ],
1148
- updates.nextOnEnter
1180
+ updates
1149
1181
  )
1150
1182
  }
1151
1183
 
@@ -1164,7 +1196,7 @@ function childCustodyCrossSellQuestions(updates = {}) {
1164
1196
  'CrossSell:Child_Custody'
1165
1197
  )
1166
1198
  ],
1167
- updates.nextOnEnter
1199
+ updates
1168
1200
  )
1169
1201
  }
1170
1202
 
@@ -1183,7 +1215,7 @@ function divorceAndSeparationCrossSellQuestions(updates = {}) {
1183
1215
  'CrossSell:Divorce_and_Separation'
1184
1216
  )
1185
1217
  ],
1186
- updates.nextOnEnter
1218
+ updates
1187
1219
  )
1188
1220
  }
1189
1221
 
@@ -1202,7 +1234,7 @@ function duiAndDWICrossSellQuestions(updates = {}) {
1202
1234
  'CrossSell:DUI_and_DWI'
1203
1235
  )
1204
1236
  ],
1205
- updates.nextOnEnter
1237
+ updates
1206
1238
  )
1207
1239
  }
1208
1240
 
@@ -1222,7 +1254,7 @@ function ssdiCrossSellQuestions(updates = {}) {
1222
1254
  'CrossSell:Social_Security_Disability_and_Insurance'
1223
1255
  )
1224
1256
  ],
1225
- updates.nextOnEnter
1257
+ updates
1226
1258
  )
1227
1259
  }
1228
1260
 
@@ -1242,7 +1274,7 @@ function personalInjuryCrossSellQuestions(updates = {}) {
1242
1274
  'CrossSell:Personal_Injury'
1243
1275
  )
1244
1276
  ],
1245
- updates.nextOnEnter
1277
+ updates
1246
1278
  )
1247
1279
  }
1248
1280
 
@@ -1261,7 +1293,7 @@ function powerOfAttorneyCrossSellQuestions(updates = {}) {
1261
1293
  'CrossSell:Power_of_Attorney'
1262
1294
  )
1263
1295
  ],
1264
- updates.nextOnEnter
1296
+ updates
1265
1297
  )
1266
1298
  }
1267
1299
 
@@ -1280,7 +1312,7 @@ function willsAndTrustsCrossSellQuestions(updates = {}) {
1280
1312
  'CrossSell:Wills_and_Trusts'
1281
1313
  )
1282
1314
  ],
1283
- updates.nextOnEnter
1315
+ updates
1284
1316
  )
1285
1317
  }
1286
1318
 
@@ -1300,21 +1332,20 @@ function workersCompensationCrossSellQuestions(updates = {}) {
1300
1332
  'CrossSell:Workers_Compensation'
1301
1333
  )
1302
1334
  ],
1303
- updates.nextOnEnter
1335
+ updates
1304
1336
  )
1305
1337
  }
1306
1338
 
1307
1339
  function legalCrossSells(updates = {}) {
1340
+ updates.nextOnInput = false;
1341
+ updates.stepKey = '$get(Type_Of_Legal_Problem).value';
1308
1342
  return step(
1309
1343
  'legalCrossSells',
1310
1344
  [
1311
1345
  legalCrossSellsStepHeadline(updates),
1312
1346
  legalCrossSells$1(),
1313
1347
  ],
1314
- updates.nextOnEnter,
1315
- false,
1316
- // Note: we should probably scope this stepKey to this step name
1317
- '$get(Type_Of_Legal_Problem).value'
1348
+ updates
1318
1349
  )
1319
1350
  }
1320
1351
 
@@ -1326,10 +1357,7 @@ function willsAndTrustsTOLPAndZip(updates = {}) {
1326
1357
  willsAndTrustsTOLP(),
1327
1358
  zipcode()
1328
1359
  ],
1329
- updates.nextOnEnter,
1330
- updates.nextOnInput,
1331
- updates.stepKey,
1332
- updates.nextStepMap
1360
+ updates
1333
1361
  )
1334
1362
  }
1335
1363
 
@@ -1345,7 +1373,7 @@ function willsAndTrustsTOLPQuestions(updates = {}) {
1345
1373
  FamilyIssuesQuestions(),
1346
1374
  NotSureOrOtherQuestions()
1347
1375
  ],
1348
- updates.nextOnEnter
1376
+ updates
1349
1377
  )
1350
1378
  }
1351
1379
 
@@ -1488,9 +1516,7 @@ function formProps(updates) {
1488
1516
  return props
1489
1517
  }
1490
1518
 
1491
- const metaDefaults = {
1492
- tcpaLanguage: TCPA_LANGUAGE
1493
- };
1519
+ const metaDefaults = {};
1494
1520
 
1495
1521
  function metaProps(updates) {
1496
1522
  const data = merge(
@@ -1503,7 +1529,7 @@ function metaProps(updates) {
1503
1529
  }
1504
1530
  }
1505
1531
 
1506
- function defaultMetaProps(tolps = null) {
1532
+ function defaultMetaPropsLegal(tolps = null) {
1507
1533
  let commentsPlaceholders = TOLPCommentsPlaceholders;
1508
1534
  let finalHeadlines = TOLPFinalHeadlines;
1509
1535
  let finalSubHeadlines = TOLPFinalSubHeadlines;
@@ -1513,12 +1539,13 @@ function defaultMetaProps(tolps = null) {
1513
1539
  finalSubHeadlines = filterMapByKey(TOLPFinalSubHeadlines, tolps);
1514
1540
  }
1515
1541
  return metaProps({
1516
- defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1542
+ tcpaLanguage: TCPA_LANGUAGE_LEGAL,
1543
+ defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1517
1544
  commentsPlaceholders: commentsPlaceholders,
1518
- defaultFinalHeadline: DEFAULT_FINAL_HEADLINE,
1545
+ defaultFinalHeadline: DEFAULT_FINAL_HEADLINE_LEGAL,
1519
1546
  finalHeadlines: finalHeadlines,
1520
- defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE,
1521
- finalSubHeadlines: finalSubHeadlines,
1547
+ defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE_LEGAL,
1548
+ finalSubHeadlines: finalSubHeadlines
1522
1549
  })
1523
1550
  }
1524
1551
 
@@ -1763,23 +1790,53 @@ const TOLPFinalSubHeadlines = {
1763
1790
  // 'Non-Workplace Discrimination': '',
1764
1791
  };
1765
1792
 
1766
-
1767
1793
  const nextStepsMapLegalLegacy = {
1768
- '*': [
1769
- 'TOLPQuestions',
1770
- 'commentsWithBankruptcy',
1771
- 'legalCrossSells',
1772
- 'firstAndLast',
1773
- 'contactInfo',
1774
- ]
1794
+ values: {
1795
+ '*': [
1796
+ 'TOLPQuestions',
1797
+ 'commentsWithBankruptcy',
1798
+ 'legalCrossSells',
1799
+ 'firstAndLast',
1800
+ 'contactInfo',
1801
+ ]
1802
+ }
1775
1803
  };
1776
1804
 
1777
- const meta = defaultMetaProps();
1805
+ const nextStepsMapLegalCrossSells = {
1806
+ values: {
1807
+ 'Legal_CrossSells': {
1808
+ 'Auto and Car Accidents': ['autoAndCarAccidentCrossSellQuestions'],
1809
+ 'Personal Injury': ['personalInjuryCrossSellQuestions'],
1810
+ 'Workers Compensation': ['workersCompensationCrossSellQuestions'],
1811
+ 'DUI and DWI': ['duiAndDWICrossSellQuestions'],
1812
+ 'Long Term Disability': ['longTermDisabilityCrossSellQuestions'],
1813
+ 'Social Security Disability and Insurance': ['ssdiCrossSellQuestions'],
1814
+ 'Bankruptcy': ['bankruptcyCrossSellQuestions'],
1815
+ 'Power of Attorney': ['powerOfAttorneyCrossSellQuestions'],
1816
+ 'Wills and Trusts': ['willsAndTrustsCrossSellQuestions'],
1817
+ 'Divorce and Separation': ['divorceAndSeparationCrossSellQuestions'],
1818
+ 'Child Custody': ['childCustodyCrossSellQuestions'],
1819
+ },
1820
+ '*': ['firstAndLast', 'contactInfo'],
1821
+ },
1822
+
1823
+ // NOTE: this assumes a certain placement of the cross sell question
1824
+ // in the form flow.
1825
+ appendSteps: ['firstAndLast', 'contactInfo'],
1826
+ matchesAllowed: 1,
1827
+ };
1828
+
1829
+ const legalCrossSellOptionMap = CROSS_SELL_OPTION_MAP_LEGAL;
1830
+
1831
+ const meta = defaultMetaPropsLegal();
1778
1832
 
1779
1833
  meta.data.dynamicSchema = [
1780
1834
  willsAndTrustsTOLPQuestions(),
1781
1835
  commentsWithBankruptcy(),
1782
- legalCrossSells(),
1836
+ legalCrossSells({
1837
+ headlineClass: '!t-text-dark',
1838
+ nextStepMap: nextStepsMapLegalCrossSells,
1839
+ }),
1783
1840
  autoAndCarAccidentCrossSellQuestions(),
1784
1841
  personalInjuryCrossSellQuestions(),
1785
1842
  workersCompensationCrossSellQuestions(),
@@ -1800,6 +1857,8 @@ const schema = [
1800
1857
  props: formProps({
1801
1858
  formId: 'willsAndTrusts',
1802
1859
  redirectMap: legalRedirectMap(),
1860
+ crossSellOptionMap: legalCrossSellOptionMap
1861
+
1803
1862
  }),
1804
1863
  children: [
1805
1864
  defaultHeadline(),