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
 
@@ -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({
@@ -517,24 +569,6 @@ const pendingCharges = (scope) => sbsYesNoRadio({
517
569
  label: 'Do you currently have any pending charges?'
518
570
  });
519
571
 
520
- const phone = (scope) => sbsText({
521
- $formkit: 'tel',
522
- name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
523
- label: 'Phone Number:',
524
- placeholder: '###-###-####',
525
- maxlength: 12,
526
- help: '10-digit phone number, hyphens optional',
527
- autocomplete: 'tel-national',
528
- 'data-tf-sensitive': 'false',
529
- validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
530
- validationMessages: {
531
- required: 'Field is required',
532
- matches: 'Invalid Phone Format, use ###-###-####',
533
- valid_phone: 'Invalid Phone Number'
534
- },
535
- helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
536
- });
537
-
538
572
  const primaryInjury = (scope) => sbs2ColRadio({
539
573
  name: scope ? scope + ':' + 'Primary_Injury' : 'Primary_Injury',
540
574
  label: 'Primary Injury:',
@@ -631,21 +665,6 @@ const valueOfAssets = (scope) => sbsSelect({
631
665
  ]
632
666
  });
633
667
 
634
- const zipcode = (scope) => sbsText({
635
- label: 'Zip Code:',
636
- placeholder: '#####',
637
- name: scope ? scope + ':' + 'Zip' : 'Zip',
638
- maxlength: 5,
639
- inputmode: "numeric",
640
- autocomplete: 'postal-code',
641
- validation: 'required|matches:/^[0-9]{5}$/',
642
- validationMessages: {
643
- required: 'Zip Code is required',
644
- matches: 'Invalid Zip Code'
645
- }
646
- });
647
-
648
-
649
668
  // ------ Question Groups
650
669
 
651
670
  // NOTE: name must be unique within a form!
@@ -925,13 +944,20 @@ function crossSellQuestionsStepSubHeadline(updates) {
925
944
  function commentsStepHeadline(updates) {
926
945
  return {
927
946
  $el: 'h3',
928
- children: updates.headline || 'Additional Case Details',
947
+ children: updates.headline || 'Additional Details',
929
948
  attrs: {
930
949
  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 || '')
931
950
  }
932
951
  }
933
952
  }
934
953
 
954
+ function commentsStepHeadlineLegal(updates) {
955
+ return commentsStepHeadline({
956
+ headline: updates.headline || 'Additional Case Details',
957
+ headlineClass: updates.headlineClass
958
+ })
959
+ }
960
+
935
961
  function firstAndLastStepHeadline(updates) {
936
962
  return {
937
963
  $el: 'h3',
@@ -955,7 +981,7 @@ function legalCrossSellsStepHeadline(updates) {
955
981
  function contactStepHeadline(updates) {
956
982
  return {
957
983
  $el: 'h3',
958
- children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC,
984
+ children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL,
959
985
  attrs: {
960
986
  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 || '')
961
987
  }
@@ -965,7 +991,7 @@ function contactStepHeadline(updates) {
965
991
  function contactStepSubHeadline(updates) {
966
992
  return {
967
993
  $el: 'h5',
968
- children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC,
994
+ children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL,
969
995
  attrs: {
970
996
  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 || '')
971
997
  }
@@ -1005,10 +1031,16 @@ const stepDefaults = (step, stepKey) => ({
1005
1031
  }
1006
1032
  });
1007
1033
 
1008
- function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = undefined, nextStepMap = undefined, autoFocus = undefined) {
1009
- if (typeof nextOnEnter === 'undefined') {
1010
- nextOnEnter = true;
1011
- }
1034
+ function step(name, inputs, updates = {}) {
1035
+ const {
1036
+ nextOnEnter = true,
1037
+ nextOnInput = false,
1038
+ stepKey = undefined,
1039
+ nextStepMap = undefined,
1040
+ triggerRedirectMap = undefined,
1041
+ autoFocus = undefined,
1042
+ } = updates;
1043
+
1012
1044
  if (inputs && inputs.length && (nextOnEnter || nextOnInput)) {
1013
1045
  const lastInput = findLastInput(inputs[inputs.length - 1]);
1014
1046
  if (lastInput && nextOnEnter === true) {
@@ -1028,6 +1060,7 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
1028
1060
  id: name,
1029
1061
  name: name,
1030
1062
  nextStepMap: nextStepMap,
1063
+ triggerRedirectMap: triggerRedirectMap,
1031
1064
  autoFocus: autoFocus,
1032
1065
  children: inputs
1033
1066
  }
@@ -1036,6 +1069,34 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
1036
1069
  )
1037
1070
  }
1038
1071
 
1072
+ function contactInfo(updates = {}) {
1073
+ return step(
1074
+ 'contactInfo',
1075
+ [
1076
+ contactStepHeadline(updates),
1077
+ contactStepSubHeadline(updates),
1078
+ trustedFormScript(),
1079
+ email(updates.scope),
1080
+ phone(updates.scope),
1081
+ TCPAConsent(updates.scope),
1082
+ secureIcon()
1083
+ ],
1084
+ { nextOnEnter: false }
1085
+ )
1086
+ }
1087
+
1088
+ function firstAndLastV2(updates = {}) {
1089
+ return step(
1090
+ 'firstAndLast',
1091
+ [
1092
+ firstAndLastStepHeadline(updates),
1093
+ firstName(),
1094
+ lastName()
1095
+ ],
1096
+ updates
1097
+ )
1098
+ }
1099
+
1039
1100
  function malpracticeTOLPAndZip(updates = {}) {
1040
1101
  return step(
1041
1102
  'malpracticeTOLPAndZip',
@@ -1049,10 +1110,7 @@ function malpracticeTOLPAndZip(updates = {}) {
1049
1110
  malpracticeTOLPDisplay(),
1050
1111
  zipcode()
1051
1112
  ],
1052
- updates.nextOnEnter,
1053
- updates.nextOnInput,
1054
- updates.stepKey,
1055
- updates.nextStepMap
1113
+ updates
1056
1114
  )
1057
1115
  }
1058
1116
 
@@ -1065,7 +1123,7 @@ function malpracticeTOLPQuestions(updates = {}) {
1065
1123
  CivilLawsuitQuestions(),
1066
1124
  NotSureOrOtherQuestions()
1067
1125
  ],
1068
- updates.nextOnEnter
1126
+ updates
1069
1127
  )
1070
1128
  }
1071
1129
 
@@ -1073,10 +1131,10 @@ function commentsWithBankruptcy(updates = {}) {
1073
1131
  return step(
1074
1132
  'commentsWithBankruptcy',
1075
1133
  [
1076
- commentsStepHeadline(updates),
1134
+ commentsStepHeadlineLegal(updates),
1077
1135
  comments({
1078
- label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL : updates.label,
1079
- placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1136
+ label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL_LEGAL : updates.label,
1137
+ placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1080
1138
  inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1081
1139
  }, updates.scope),
1082
1140
  // TODO: needs scope support
@@ -1093,39 +1151,10 @@ function commentsWithBankruptcy(updates = {}) {
1093
1151
  ],
1094
1152
  }
1095
1153
  ],
1096
- false // nextOnEnter
1097
- )
1098
- }
1099
-
1100
- function contactInfo(updates = {}) {
1101
- return step(
1102
- 'contactInfo',
1103
- [
1104
- contactStepHeadline(updates),
1105
- contactStepSubHeadline(updates),
1106
- trustedFormScript(),
1107
- email(updates.scope),
1108
- phone(updates.scope),
1109
- TCPAConsent(updates.scope),
1110
- secureIcon()
1111
- ],
1112
- false, // nextOnEnter
1154
+ { nextOnEnter: false }
1113
1155
  )
1114
1156
  }
1115
1157
 
1116
- function firstAndLastV2(updates = {}) {
1117
- return step(
1118
- 'firstAndLast',
1119
- [
1120
- firstAndLastStepHeadline(updates),
1121
- firstName(),
1122
- lastName()
1123
- ],
1124
- updates.nextOnEnter
1125
- )
1126
- }
1127
-
1128
-
1129
1158
  function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1130
1159
  return step(
1131
1160
  'autoAndCarAccidentCrossSellQuestions',
@@ -1142,7 +1171,7 @@ function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1142
1171
  'CrossSell:Auto_and_Car_Accidents'
1143
1172
  )
1144
1173
  ],
1145
- updates.nextOnEnter
1174
+ updates
1146
1175
  )
1147
1176
  }
1148
1177
 
@@ -1161,7 +1190,7 @@ function childCustodyCrossSellQuestions(updates = {}) {
1161
1190
  'CrossSell:Child_Custody'
1162
1191
  )
1163
1192
  ],
1164
- updates.nextOnEnter
1193
+ updates
1165
1194
  )
1166
1195
  }
1167
1196
 
@@ -1180,7 +1209,7 @@ function divorceAndSeparationCrossSellQuestions(updates = {}) {
1180
1209
  'CrossSell:Divorce_and_Separation'
1181
1210
  )
1182
1211
  ],
1183
- updates.nextOnEnter
1212
+ updates
1184
1213
  )
1185
1214
  }
1186
1215
 
@@ -1199,7 +1228,7 @@ function duiAndDWICrossSellQuestions(updates = {}) {
1199
1228
  'CrossSell:DUI_and_DWI'
1200
1229
  )
1201
1230
  ],
1202
- updates.nextOnEnter
1231
+ updates
1203
1232
  )
1204
1233
  }
1205
1234
 
@@ -1219,7 +1248,7 @@ function ssdiCrossSellQuestions(updates = {}) {
1219
1248
  'CrossSell:Social_Security_Disability_and_Insurance'
1220
1249
  )
1221
1250
  ],
1222
- updates.nextOnEnter
1251
+ updates
1223
1252
  )
1224
1253
  }
1225
1254
 
@@ -1239,7 +1268,7 @@ function personalInjuryCrossSellQuestions(updates = {}) {
1239
1268
  'CrossSell:Personal_Injury'
1240
1269
  )
1241
1270
  ],
1242
- updates.nextOnEnter
1271
+ updates
1243
1272
  )
1244
1273
  }
1245
1274
 
@@ -1258,7 +1287,7 @@ function powerOfAttorneyCrossSellQuestions(updates = {}) {
1258
1287
  'CrossSell:Power_of_Attorney'
1259
1288
  )
1260
1289
  ],
1261
- updates.nextOnEnter
1290
+ updates
1262
1291
  )
1263
1292
  }
1264
1293
 
@@ -1277,7 +1306,7 @@ function willsAndTrustsCrossSellQuestions(updates = {}) {
1277
1306
  'CrossSell:Wills_and_Trusts'
1278
1307
  )
1279
1308
  ],
1280
- updates.nextOnEnter
1309
+ updates
1281
1310
  )
1282
1311
  }
1283
1312
 
@@ -1297,21 +1326,20 @@ function workersCompensationCrossSellQuestions(updates = {}) {
1297
1326
  'CrossSell:Workers_Compensation'
1298
1327
  )
1299
1328
  ],
1300
- updates.nextOnEnter
1329
+ updates
1301
1330
  )
1302
1331
  }
1303
1332
 
1304
1333
  function legalCrossSells(updates = {}) {
1334
+ updates.nextOnInput = false;
1335
+ updates.stepKey = '$get(Type_Of_Legal_Problem).value';
1305
1336
  return step(
1306
1337
  'legalCrossSells',
1307
1338
  [
1308
1339
  legalCrossSellsStepHeadline(updates),
1309
1340
  legalCrossSells$1(),
1310
1341
  ],
1311
- updates.nextOnEnter,
1312
- false,
1313
- // Note: we should probably scope this stepKey to this step name
1314
- '$get(Type_Of_Legal_Problem).value'
1342
+ updates
1315
1343
  )
1316
1344
  }
1317
1345
 
@@ -1454,9 +1482,7 @@ function formProps(updates) {
1454
1482
  return props
1455
1483
  }
1456
1484
 
1457
- const metaDefaults = {
1458
- tcpaLanguage: TCPA_LANGUAGE
1459
- };
1485
+ const metaDefaults = {};
1460
1486
 
1461
1487
  function metaProps(updates) {
1462
1488
  const data = merge(
@@ -1469,7 +1495,7 @@ function metaProps(updates) {
1469
1495
  }
1470
1496
  }
1471
1497
 
1472
- function defaultMetaProps(tolps = null) {
1498
+ function defaultMetaPropsLegal(tolps = null) {
1473
1499
  let commentsPlaceholders = TOLPCommentsPlaceholders;
1474
1500
  let finalHeadlines = TOLPFinalHeadlines;
1475
1501
  let finalSubHeadlines = TOLPFinalSubHeadlines;
@@ -1479,12 +1505,13 @@ function defaultMetaProps(tolps = null) {
1479
1505
  finalSubHeadlines = filterMapByKey(TOLPFinalSubHeadlines, tolps);
1480
1506
  }
1481
1507
  return metaProps({
1482
- defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1508
+ tcpaLanguage: TCPA_LANGUAGE_LEGAL,
1509
+ defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1483
1510
  commentsPlaceholders: commentsPlaceholders,
1484
- defaultFinalHeadline: DEFAULT_FINAL_HEADLINE,
1511
+ defaultFinalHeadline: DEFAULT_FINAL_HEADLINE_LEGAL,
1485
1512
  finalHeadlines: finalHeadlines,
1486
- defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE,
1487
- finalSubHeadlines: finalSubHeadlines,
1513
+ defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE_LEGAL,
1514
+ finalSubHeadlines: finalSubHeadlines
1488
1515
  })
1489
1516
  }
1490
1517
 
@@ -1950,25 +1977,55 @@ const TOLPFinalSubHeadlines = {
1950
1977
  // 'Non-Workplace Discrimination': '',
1951
1978
  };
1952
1979
 
1953
-
1954
1980
  const nextStepsMapLegalLegacy = {
1955
- '*': [
1956
- 'TOLPQuestions',
1957
- 'commentsWithBankruptcy',
1958
- 'legalCrossSells',
1959
- 'firstAndLast',
1960
- 'contactInfo',
1961
- ]
1981
+ values: {
1982
+ '*': [
1983
+ 'TOLPQuestions',
1984
+ 'commentsWithBankruptcy',
1985
+ 'legalCrossSells',
1986
+ 'firstAndLast',
1987
+ 'contactInfo',
1988
+ ]
1989
+ }
1990
+ };
1991
+
1992
+ const nextStepsMapLegalCrossSells = {
1993
+ values: {
1994
+ 'Legal_CrossSells': {
1995
+ 'Auto and Car Accidents': ['autoAndCarAccidentCrossSellQuestions'],
1996
+ 'Personal Injury': ['personalInjuryCrossSellQuestions'],
1997
+ 'Workers Compensation': ['workersCompensationCrossSellQuestions'],
1998
+ 'DUI and DWI': ['duiAndDWICrossSellQuestions'],
1999
+ 'Long Term Disability': ['longTermDisabilityCrossSellQuestions'],
2000
+ 'Social Security Disability and Insurance': ['ssdiCrossSellQuestions'],
2001
+ 'Bankruptcy': ['bankruptcyCrossSellQuestions'],
2002
+ 'Power of Attorney': ['powerOfAttorneyCrossSellQuestions'],
2003
+ 'Wills and Trusts': ['willsAndTrustsCrossSellQuestions'],
2004
+ 'Divorce and Separation': ['divorceAndSeparationCrossSellQuestions'],
2005
+ 'Child Custody': ['childCustodyCrossSellQuestions'],
2006
+ },
2007
+ '*': ['firstAndLast', 'contactInfo'],
2008
+ },
2009
+
2010
+ // NOTE: this assumes a certain placement of the cross sell question
2011
+ // in the form flow.
2012
+ appendSteps: ['firstAndLast', 'contactInfo'],
2013
+ matchesAllowed: 1,
1962
2014
  };
1963
2015
 
1964
- const meta = defaultMetaProps();
2016
+ const legalCrossSellOptionMap = CROSS_SELL_OPTION_MAP_LEGAL;
2017
+
2018
+ const meta = defaultMetaPropsLegal();
1965
2019
 
1966
2020
  meta.data.dynamicSchema = [
1967
2021
  malpracticeTOLPQuestions(),
1968
2022
  commentsWithBankruptcy({
1969
2023
  placeholder: 'Example: "My doctor or attorney was negligent in providing care."',
1970
2024
  }),
1971
- legalCrossSells(),
2025
+ legalCrossSells({
2026
+ headlineClass: '!t-text-dark',
2027
+ nextStepMap: nextStepsMapLegalCrossSells,
2028
+ }),
1972
2029
  autoAndCarAccidentCrossSellQuestions(),
1973
2030
  personalInjuryCrossSellQuestions(),
1974
2031
  workersCompensationCrossSellQuestions(),
@@ -1989,7 +2046,9 @@ const schema = [
1989
2046
  props: formProps({
1990
2047
  formId: 'malpractice',
1991
2048
  redirectMap: legalRedirectMap(),
1992
- valueOverrideMap: legalAllValueOverrideMap
2049
+ valueOverrideMap: legalAllValueOverrideMap,
2050
+ crossSellOptionMap: legalCrossSellOptionMap
2051
+
1993
2052
  }),
1994
2053
  children: [
1995
2054
  headline({