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?',
@@ -328,20 +478,6 @@ const doctorTreatment = (scope) => sbsYesNoRadio({
328
478
  label: 'Have You Recently Been Treated by a Doctor, Hospital or Clinic?',
329
479
  });
330
480
 
331
- const email = (scope) => sbsText({
332
- $formkit: 'email',
333
- name: scope ? scope + ':' + 'Email' : 'Email',
334
- label: 'Email Address:',
335
- placeholder: 'email@domain.com',
336
- autocomplete: 'email',
337
- 'data-tf-sensitive': 'false',
338
- validation: 'required|email',
339
- validationMessages: {
340
- required: 'Email is required',
341
- email: 'Invalid Email'
342
- }
343
- });
344
-
345
481
  const estateLegalServicesNeeded = (scope) => sbsSelect({
346
482
  name: scope ? scope + ':' + 'Estate_Legal_Services_Needed' : 'Estate_Legal_Services_Needed',
347
483
  label: "Legal Services Needed for Your Estate:",
@@ -355,17 +491,6 @@ const estateLegalServicesNeeded = (scope) => sbsSelect({
355
491
  ]
356
492
  });
357
493
 
358
- const firstName = (scope) => sbsText({
359
- $formkit: 'text',
360
- label: 'First Name:',
361
- placeholder: 'First',
362
- name: scope ? scope + ':' + 'First_Name' : 'First_Name',
363
- autocomplete: "given-name",
364
- validationMessages: {
365
- required: 'First Name is required'
366
- }
367
- });
368
-
369
494
  const haveAttorney = (scope) => sbsYesNoRadio({
370
495
  name: scope ? scope + ':' + 'Have_Attorney' : 'Have_Attorney',
371
496
  label: 'Already Working with An Attorney?'
@@ -381,17 +506,6 @@ const incidentDate = (scope) => sbsDate({
381
506
  label: 'Date of Incident:',
382
507
  });
383
508
 
384
- const lastName = (scope) => sbsText({
385
- $formkit: 'text',
386
- label: 'Last Name:',
387
- placeholder: 'Last',
388
- name: scope ? scope + ':' + 'Last_Name' : 'Last_Name',
389
- autocomplete: "family-name",
390
- validationMessages: {
391
- required: 'Last Name is required'
392
- }
393
- });
394
-
395
509
  const lawyerPaymentMethod = (scope) => sbsSelect({
396
510
  name: scope ? scope + ':' + 'Lawyer_Payment_Method' : 'Lawyer_Payment_Method',
397
511
  label: 'How Will You Pay for Legal Fees if You Hire a Lawyer?',
@@ -412,69 +526,7 @@ const legalCrossSells$1 = () => col2Checkbox({
412
526
  help: 'Just hit "Next" if none apply',
413
527
  helpClass: 't-text-center !t-text-sm',
414
528
  validation: null,
415
- options: {
416
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Auto and Car Accidents"',
417
- then: {
418
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
419
- 'Wills and Trusts': 'Need a Will or Trust',
420
- 'Workers Compensation': 'Workplace Injury',
421
- 'Power of Attorney': 'Update Power of Attorney',
422
- 'Divorce and Separation': 'Need a Divorce or Separation',
423
- 'Child Custody': 'Need help with Child Custody',
424
- },
425
- else: {
426
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Personal Injury" || $getVal($get(form), "Type_Of_Legal_Problem") === "Workers Compensation"',
427
- then: {
428
- 'DUI and DWI': 'Involved in a DUI/DWI',
429
- 'Wills and Trusts': 'Need a Will or Trust',
430
- 'Power of Attorney': 'Update Power of Attorney',
431
- 'Divorce and Separation': 'Need a Divorce or Separation',
432
- 'Child Custody': 'Need help with Child Custody',
433
- // TODO add one more?
434
- },
435
- else: {
436
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "DUI and DWI"',
437
- then: {
438
- 'Personal Injury': 'Personal or Workplace Injury',
439
- 'Wills and Trusts': 'Need a Will or Trust',
440
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
441
- 'Power of Attorney': 'Update Power of Attorney',
442
- 'Divorce and Separation': 'Need a Divorce or Separation',
443
- 'Child Custody': 'Need help with Child Custody',
444
- },
445
- else: {
446
- 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"',
447
- then: {
448
- 'Auto and Car Accidents': 'Injured in a Car Accident',
449
- 'Personal Injury': 'Personal or Workplace Injury',
450
- 'DUI and DWI': 'Involved in a DUI/DWI',
451
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
452
- 'Divorce and Separation': 'Need a Divorce or Separation',
453
- 'Child Custody': 'Need help with Child Custody',
454
- },
455
- else: {
456
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Long Term Disability" || $getVal($get(form), "Type_Of_Legal_Problem") === "Social Security Disability and Insurance"',
457
- then: {
458
- 'Auto and Car Accidents': 'Injured in a Car Accident',
459
- 'DUI and DWI': 'Involved in a DUI/DWI',
460
- 'Wills and Trusts': 'Need a Will or Trust',
461
- 'Power of Attorney': 'Update Power of Attorney',
462
- 'Divorce and Separation': 'Need a Divorce or Separation',
463
- 'Child Custody': 'Need help with Child Custody',
464
- },
465
- else: {
466
- 'Auto and Car Accidents': 'Injured in a Car Accident',
467
- 'Personal Injury': 'Personal or Workplace Injury',
468
- 'DUI and DWI': 'Involved in a DUI/DWI',
469
- 'Wills and Trusts': 'Need a Will or Trust',
470
- 'Power of Attorney': 'Update Power of Attorney',
471
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
472
- }
473
- }
474
- }
475
- }
476
- }
477
- }
529
+ options: '$getCrossSellOptions($get(form), $getVal($get(form), "Type_Of_Legal_Problem"))',
478
530
  });
479
531
 
480
532
  const maritalStatus = (scope) => sbsSelect({
@@ -495,24 +547,6 @@ const pendingCharges = (scope) => sbsYesNoRadio({
495
547
  label: 'Do you currently have any pending charges?'
496
548
  });
497
549
 
498
- const phone = (scope) => sbsText({
499
- $formkit: 'tel',
500
- name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
501
- label: 'Phone Number:',
502
- placeholder: '###-###-####',
503
- maxlength: 12,
504
- help: '10-digit phone number, hyphens optional',
505
- autocomplete: 'tel-national',
506
- 'data-tf-sensitive': 'false',
507
- validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
508
- validationMessages: {
509
- required: 'Field is required',
510
- matches: 'Invalid Phone Format, use ###-###-####',
511
- valid_phone: 'Invalid Phone Number'
512
- },
513
- helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
514
- });
515
-
516
550
  const primaryInjury = (scope) => sbs2ColRadio({
517
551
  name: scope ? scope + ':' + 'Primary_Injury' : 'Primary_Injury',
518
552
  label: 'Primary Injury:',
@@ -609,21 +643,6 @@ const valueOfAssets = (scope) => sbsSelect({
609
643
  ]
610
644
  });
611
645
 
612
- const zipcode = (scope) => sbsText({
613
- label: 'Zip Code:',
614
- placeholder: '#####',
615
- name: scope ? scope + ':' + 'Zip' : 'Zip',
616
- maxlength: 5,
617
- inputmode: "numeric",
618
- autocomplete: 'postal-code',
619
- validation: 'required|matches:/^[0-9]{5}$/',
620
- validationMessages: {
621
- required: 'Zip Code is required',
622
- matches: 'Invalid Zip Code'
623
- }
624
- });
625
-
626
-
627
646
  // ------ Question Groups
628
647
 
629
648
  // NOTE: name must be unique within a form!
@@ -886,13 +905,20 @@ function crossSellQuestionsStepSubHeadline(updates) {
886
905
  function commentsStepHeadline(updates) {
887
906
  return {
888
907
  $el: 'h3',
889
- children: updates.headline || 'Additional Case Details',
908
+ children: updates.headline || 'Additional Details',
890
909
  attrs: {
891
910
  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 || '')
892
911
  }
893
912
  }
894
913
  }
895
914
 
915
+ function commentsStepHeadlineLegal(updates) {
916
+ return commentsStepHeadline({
917
+ headline: updates.headline || 'Additional Case Details',
918
+ headlineClass: updates.headlineClass
919
+ })
920
+ }
921
+
896
922
  function firstAndLastStepHeadline(updates) {
897
923
  return {
898
924
  $el: 'h3',
@@ -916,7 +942,7 @@ function legalCrossSellsStepHeadline(updates) {
916
942
  function contactStepHeadline(updates) {
917
943
  return {
918
944
  $el: 'h3',
919
- children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC,
945
+ children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL,
920
946
  attrs: {
921
947
  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 || '')
922
948
  }
@@ -926,7 +952,7 @@ function contactStepHeadline(updates) {
926
952
  function contactStepSubHeadline(updates) {
927
953
  return {
928
954
  $el: 'h5',
929
- children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC,
955
+ children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL,
930
956
  attrs: {
931
957
  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 || '')
932
958
  }
@@ -966,10 +992,16 @@ const stepDefaults = (step, stepKey) => ({
966
992
  }
967
993
  });
968
994
 
969
- function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = undefined, nextStepMap = undefined, autoFocus = undefined) {
970
- if (typeof nextOnEnter === 'undefined') {
971
- nextOnEnter = true;
972
- }
995
+ function step(name, inputs, updates = {}) {
996
+ const {
997
+ nextOnEnter = true,
998
+ nextOnInput = false,
999
+ stepKey = undefined,
1000
+ nextStepMap = undefined,
1001
+ triggerRedirectMap = undefined,
1002
+ autoFocus = undefined,
1003
+ } = updates;
1004
+
973
1005
  if (inputs && inputs.length && (nextOnEnter || nextOnInput)) {
974
1006
  const lastInput = findLastInput(inputs[inputs.length - 1]);
975
1007
  if (lastInput && nextOnEnter === true) {
@@ -989,6 +1021,7 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
989
1021
  id: name,
990
1022
  name: name,
991
1023
  nextStepMap: nextStepMap,
1024
+ triggerRedirectMap: triggerRedirectMap,
992
1025
  autoFocus: autoFocus,
993
1026
  children: inputs
994
1027
  }
@@ -997,6 +1030,34 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
997
1030
  )
998
1031
  }
999
1032
 
1033
+ function contactInfo(updates = {}) {
1034
+ return step(
1035
+ 'contactInfo',
1036
+ [
1037
+ contactStepHeadline(updates),
1038
+ contactStepSubHeadline(updates),
1039
+ trustedFormScript(),
1040
+ email(updates.scope),
1041
+ phone(updates.scope),
1042
+ TCPAConsent(updates.scope),
1043
+ secureIcon()
1044
+ ],
1045
+ { nextOnEnter: false }
1046
+ )
1047
+ }
1048
+
1049
+ function firstAndLastV2(updates = {}) {
1050
+ return step(
1051
+ 'firstAndLast',
1052
+ [
1053
+ firstAndLastStepHeadline(updates),
1054
+ firstName(),
1055
+ lastName()
1056
+ ],
1057
+ updates
1058
+ )
1059
+ }
1060
+
1000
1061
  function contractsTOLPAndZip(updates = {}) {
1001
1062
  return step(
1002
1063
  'contractsTOLPAndZip',
@@ -1016,10 +1077,7 @@ function contractsTOLPAndZip(updates = {}) {
1016
1077
  contractsTOLPDisplay(),
1017
1078
  zipcode()
1018
1079
  ],
1019
- updates.nextOnEnter,
1020
- updates.nextOnInput,
1021
- updates.stepKey,
1022
- updates.nextStepMap
1080
+ updates
1023
1081
  )
1024
1082
  }
1025
1083
 
@@ -1027,10 +1085,10 @@ function commentsWithBankruptcy(updates = {}) {
1027
1085
  return step(
1028
1086
  'commentsWithBankruptcy',
1029
1087
  [
1030
- commentsStepHeadline(updates),
1088
+ commentsStepHeadlineLegal(updates),
1031
1089
  comments({
1032
- label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL : updates.label,
1033
- placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1090
+ label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL_LEGAL : updates.label,
1091
+ placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1034
1092
  inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1035
1093
  }, updates.scope),
1036
1094
  // TODO: needs scope support
@@ -1047,39 +1105,10 @@ function commentsWithBankruptcy(updates = {}) {
1047
1105
  ],
1048
1106
  }
1049
1107
  ],
1050
- false // nextOnEnter
1051
- )
1052
- }
1053
-
1054
- function contactInfo(updates = {}) {
1055
- return step(
1056
- 'contactInfo',
1057
- [
1058
- contactStepHeadline(updates),
1059
- contactStepSubHeadline(updates),
1060
- trustedFormScript(),
1061
- email(updates.scope),
1062
- phone(updates.scope),
1063
- TCPAConsent(updates.scope),
1064
- secureIcon()
1065
- ],
1066
- false, // nextOnEnter
1067
- )
1068
- }
1069
-
1070
- function firstAndLastV2(updates = {}) {
1071
- return step(
1072
- 'firstAndLast',
1073
- [
1074
- firstAndLastStepHeadline(updates),
1075
- firstName(),
1076
- lastName()
1077
- ],
1078
- updates.nextOnEnter
1108
+ { nextOnEnter: false }
1079
1109
  )
1080
1110
  }
1081
1111
 
1082
-
1083
1112
  function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1084
1113
  return step(
1085
1114
  'autoAndCarAccidentCrossSellQuestions',
@@ -1096,7 +1125,7 @@ function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1096
1125
  'CrossSell:Auto_and_Car_Accidents'
1097
1126
  )
1098
1127
  ],
1099
- updates.nextOnEnter
1128
+ updates
1100
1129
  )
1101
1130
  }
1102
1131
 
@@ -1115,7 +1144,7 @@ function childCustodyCrossSellQuestions(updates = {}) {
1115
1144
  'CrossSell:Child_Custody'
1116
1145
  )
1117
1146
  ],
1118
- updates.nextOnEnter
1147
+ updates
1119
1148
  )
1120
1149
  }
1121
1150
 
@@ -1134,7 +1163,7 @@ function divorceAndSeparationCrossSellQuestions(updates = {}) {
1134
1163
  'CrossSell:Divorce_and_Separation'
1135
1164
  )
1136
1165
  ],
1137
- updates.nextOnEnter
1166
+ updates
1138
1167
  )
1139
1168
  }
1140
1169
 
@@ -1153,7 +1182,7 @@ function duiAndDWICrossSellQuestions(updates = {}) {
1153
1182
  'CrossSell:DUI_and_DWI'
1154
1183
  )
1155
1184
  ],
1156
- updates.nextOnEnter
1185
+ updates
1157
1186
  )
1158
1187
  }
1159
1188
 
@@ -1173,7 +1202,7 @@ function ssdiCrossSellQuestions(updates = {}) {
1173
1202
  'CrossSell:Social_Security_Disability_and_Insurance'
1174
1203
  )
1175
1204
  ],
1176
- updates.nextOnEnter
1205
+ updates
1177
1206
  )
1178
1207
  }
1179
1208
 
@@ -1193,7 +1222,7 @@ function personalInjuryCrossSellQuestions(updates = {}) {
1193
1222
  'CrossSell:Personal_Injury'
1194
1223
  )
1195
1224
  ],
1196
- updates.nextOnEnter
1225
+ updates
1197
1226
  )
1198
1227
  }
1199
1228
 
@@ -1212,7 +1241,7 @@ function powerOfAttorneyCrossSellQuestions(updates = {}) {
1212
1241
  'CrossSell:Power_of_Attorney'
1213
1242
  )
1214
1243
  ],
1215
- updates.nextOnEnter
1244
+ updates
1216
1245
  )
1217
1246
  }
1218
1247
 
@@ -1231,7 +1260,7 @@ function willsAndTrustsCrossSellQuestions(updates = {}) {
1231
1260
  'CrossSell:Wills_and_Trusts'
1232
1261
  )
1233
1262
  ],
1234
- updates.nextOnEnter
1263
+ updates
1235
1264
  )
1236
1265
  }
1237
1266
 
@@ -1251,7 +1280,7 @@ function workersCompensationCrossSellQuestions(updates = {}) {
1251
1280
  'CrossSell:Workers_Compensation'
1252
1281
  )
1253
1282
  ],
1254
- updates.nextOnEnter
1283
+ updates
1255
1284
  )
1256
1285
  }
1257
1286
 
@@ -1263,21 +1292,20 @@ function contractsTOLPQuestions(updates = {}) {
1263
1292
  ContractsQuestions(),
1264
1293
  NotSureOrOtherQuestions()
1265
1294
  ],
1266
- updates.nextOnEnter
1295
+ updates
1267
1296
  )
1268
1297
  }
1269
1298
 
1270
1299
  function legalCrossSells(updates = {}) {
1300
+ updates.nextOnInput = false;
1301
+ updates.stepKey = '$get(Type_Of_Legal_Problem).value';
1271
1302
  return step(
1272
1303
  'legalCrossSells',
1273
1304
  [
1274
1305
  legalCrossSellsStepHeadline(updates),
1275
1306
  legalCrossSells$1(),
1276
1307
  ],
1277
- updates.nextOnEnter,
1278
- false,
1279
- // Note: we should probably scope this stepKey to this step name
1280
- '$get(Type_Of_Legal_Problem).value'
1308
+ updates
1281
1309
  )
1282
1310
  }
1283
1311
 
@@ -1420,9 +1448,7 @@ function formProps(updates) {
1420
1448
  return props
1421
1449
  }
1422
1450
 
1423
- const metaDefaults = {
1424
- tcpaLanguage: TCPA_LANGUAGE
1425
- };
1451
+ const metaDefaults = {};
1426
1452
 
1427
1453
  function metaProps(updates) {
1428
1454
  const data = merge(
@@ -1435,7 +1461,7 @@ function metaProps(updates) {
1435
1461
  }
1436
1462
  }
1437
1463
 
1438
- function defaultMetaProps(tolps = null) {
1464
+ function defaultMetaPropsLegal(tolps = null) {
1439
1465
  let commentsPlaceholders = TOLPCommentsPlaceholders;
1440
1466
  let finalHeadlines = TOLPFinalHeadlines;
1441
1467
  let finalSubHeadlines = TOLPFinalSubHeadlines;
@@ -1445,12 +1471,13 @@ function defaultMetaProps(tolps = null) {
1445
1471
  finalSubHeadlines = filterMapByKey(TOLPFinalSubHeadlines, tolps);
1446
1472
  }
1447
1473
  return metaProps({
1448
- defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1474
+ tcpaLanguage: TCPA_LANGUAGE_LEGAL,
1475
+ defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1449
1476
  commentsPlaceholders: commentsPlaceholders,
1450
- defaultFinalHeadline: DEFAULT_FINAL_HEADLINE,
1477
+ defaultFinalHeadline: DEFAULT_FINAL_HEADLINE_LEGAL,
1451
1478
  finalHeadlines: finalHeadlines,
1452
- defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE,
1453
- finalSubHeadlines: finalSubHeadlines,
1479
+ defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE_LEGAL,
1480
+ finalSubHeadlines: finalSubHeadlines
1454
1481
  })
1455
1482
  }
1456
1483
 
@@ -1681,25 +1708,55 @@ const TOLPFinalSubHeadlines = {
1681
1708
  // 'Non-Workplace Discrimination': '',
1682
1709
  };
1683
1710
 
1684
-
1685
1711
  const nextStepsMapLegalLegacy = {
1686
- '*': [
1687
- 'TOLPQuestions',
1688
- 'commentsWithBankruptcy',
1689
- 'legalCrossSells',
1690
- 'firstAndLast',
1691
- 'contactInfo',
1692
- ]
1712
+ values: {
1713
+ '*': [
1714
+ 'TOLPQuestions',
1715
+ 'commentsWithBankruptcy',
1716
+ 'legalCrossSells',
1717
+ 'firstAndLast',
1718
+ 'contactInfo',
1719
+ ]
1720
+ }
1693
1721
  };
1694
1722
 
1695
- const meta = defaultMetaProps();
1723
+ const nextStepsMapLegalCrossSells = {
1724
+ values: {
1725
+ 'Legal_CrossSells': {
1726
+ 'Auto and Car Accidents': ['autoAndCarAccidentCrossSellQuestions'],
1727
+ 'Personal Injury': ['personalInjuryCrossSellQuestions'],
1728
+ 'Workers Compensation': ['workersCompensationCrossSellQuestions'],
1729
+ 'DUI and DWI': ['duiAndDWICrossSellQuestions'],
1730
+ 'Long Term Disability': ['longTermDisabilityCrossSellQuestions'],
1731
+ 'Social Security Disability and Insurance': ['ssdiCrossSellQuestions'],
1732
+ 'Bankruptcy': ['bankruptcyCrossSellQuestions'],
1733
+ 'Power of Attorney': ['powerOfAttorneyCrossSellQuestions'],
1734
+ 'Wills and Trusts': ['willsAndTrustsCrossSellQuestions'],
1735
+ 'Divorce and Separation': ['divorceAndSeparationCrossSellQuestions'],
1736
+ 'Child Custody': ['childCustodyCrossSellQuestions'],
1737
+ },
1738
+ '*': ['firstAndLast', 'contactInfo'],
1739
+ },
1740
+
1741
+ // NOTE: this assumes a certain placement of the cross sell question
1742
+ // in the form flow.
1743
+ appendSteps: ['firstAndLast', 'contactInfo'],
1744
+ matchesAllowed: 1,
1745
+ };
1746
+
1747
+ const legalCrossSellOptionMap = CROSS_SELL_OPTION_MAP_LEGAL;
1748
+
1749
+ const meta = defaultMetaPropsLegal();
1696
1750
 
1697
1751
  meta.data.dynamicSchema = [
1698
1752
  contractsTOLPQuestions(),
1699
1753
  commentsWithBankruptcy({
1700
1754
  placeholder: 'Example: "I need to create a partner agreement for my business."',
1701
1755
  }),
1702
- legalCrossSells(),
1756
+ legalCrossSells({
1757
+ headlineClass: '!t-text-dark',
1758
+ nextStepMap: nextStepsMapLegalCrossSells,
1759
+ }),
1703
1760
  autoAndCarAccidentCrossSellQuestions(),
1704
1761
  personalInjuryCrossSellQuestions(),
1705
1762
  workersCompensationCrossSellQuestions(),
@@ -1719,7 +1776,8 @@ const schema = [
1719
1776
  $cmp: 'FormKit',
1720
1777
  props: formProps({
1721
1778
  formId: 'contracts',
1722
- redirectMap: legalRedirectMap()
1779
+ redirectMap: legalRedirectMap(),
1780
+ crossSellOptionMap: legalCrossSellOptionMap
1723
1781
  }),
1724
1782
  children: [
1725
1783
  headline({