bhl-forms 0.6.15 → 0.7.1

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 (97) 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 +314 -228
  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 +317 -236
  13. package/dist/forms/business.iife.js +1 -1
  14. package/dist/forms/business.json +1 -1
  15. package/dist/forms/childAndFamily.es.js +303 -224
  16. package/dist/forms/childAndFamily.iife.js +1 -1
  17. package/dist/forms/childAndFamily.json +1 -1
  18. package/dist/forms/childAndFamilySingle.es.js +643 -555
  19. package/dist/forms/childAndFamilySingle.iife.js +1 -1
  20. package/dist/forms/childAndFamilySingle.json +1 -1
  21. package/dist/forms/civilLawsuit.es.js +637 -551
  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 +307 -227
  27. package/dist/forms/contracts.iife.js +1 -1
  28. package/dist/forms/contracts.json +1 -1
  29. package/dist/forms/criminal.es.js +660 -572
  30. package/dist/forms/criminal.iife.js +1 -1
  31. package/dist/forms/criminal.json +1 -1
  32. package/dist/forms/divorce.es.js +643 -555
  33. package/dist/forms/divorce.iife.js +1 -1
  34. package/dist/forms/divorce.json +1 -1
  35. package/dist/forms/employmentAndWorkplace.es.js +584 -506
  36. package/dist/forms/employmentAndWorkplace.iife.js +1 -1
  37. package/dist/forms/employmentAndWorkplace.json +1 -1
  38. package/dist/forms/generalHomeImprovement.es.js +3015 -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 +341 -244
  42. package/dist/forms/generalLegal.iife.js +1 -1
  43. package/dist/forms/generalLegal.json +1 -1
  44. package/dist/forms/generalLegalJustAnswer.es.js +4542 -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 +342 -245
  48. package/dist/forms/generalLegalPopUnder.iife.js +1 -1
  49. package/dist/forms/generalLegalPopUnder.json +1 -1
  50. package/dist/forms/generalLegalPopUnderSingle.es.js +692 -612
  51. package/dist/forms/generalLegalPopUnderSingle.iife.js +1 -1
  52. package/dist/forms/generalLegalPopUnderSingle.json +1 -1
  53. package/dist/forms/generalLegalSingle.es.js +692 -612
  54. package/dist/forms/generalLegalSingle.iife.js +1 -1
  55. package/dist/forms/generalLegalSingle.json +1 -1
  56. package/dist/forms/generalLegalThankYou.es.js +204 -158
  57. package/dist/forms/generalLegalThankYou.iife.js +1 -1
  58. package/dist/forms/generalLegalThankYou.json +1 -1
  59. package/dist/forms/generalLegalThankYouConsultation.es.js +692 -612
  60. package/dist/forms/generalLegalThankYouConsultation.iife.js +1 -1
  61. package/dist/forms/generalLegalThankYouConsultation.json +1 -1
  62. package/dist/forms/harassmentAndDiscrimination.es.js +303 -224
  63. package/dist/forms/harassmentAndDiscrimination.iife.js +1 -1
  64. package/dist/forms/harassmentAndDiscrimination.json +1 -1
  65. package/dist/forms/landlordTenant.es.js +316 -240
  66. package/dist/forms/landlordTenant.iife.js +1 -1
  67. package/dist/forms/landlordTenant.json +1 -1
  68. package/dist/forms/malpractice.es.js +308 -227
  69. package/dist/forms/malpractice.iife.js +1 -1
  70. package/dist/forms/malpractice.json +1 -1
  71. package/dist/forms/mechanics.es.js +184 -166
  72. package/dist/forms/mechanics.iife.js +1 -1
  73. package/dist/forms/mechanics.json +1 -1
  74. package/dist/forms/patentsAndIP.es.js +646 -558
  75. package/dist/forms/patentsAndIP.iife.js +1 -1
  76. package/dist/forms/patentsAndIP.json +1 -1
  77. package/dist/forms/realEstate.es.js +339 -243
  78. package/dist/forms/realEstate.iife.js +1 -1
  79. package/dist/forms/realEstate.json +1 -1
  80. package/dist/forms/repossession.es.js +307 -227
  81. package/dist/forms/repossession.iife.js +1 -1
  82. package/dist/forms/repossession.json +1 -1
  83. package/dist/forms/ssdi.es.js +156 -140
  84. package/dist/forms/ssdi.iife.js +1 -1
  85. package/dist/forms/ssdi.json +1 -1
  86. package/dist/forms/testForm.es.js +69 -51
  87. package/dist/forms/testForm.iife.js +1 -1
  88. package/dist/forms/testForm.json +1 -1
  89. package/dist/forms/testRedirects.es.js +43 -22
  90. package/dist/forms/testRedirects.iife.js +1 -1
  91. package/dist/forms/testRedirects.json +1 -1
  92. package/dist/forms/vets.es.js +16 -7
  93. package/dist/forms/vets.iife.js +1 -1
  94. package/dist/forms/willsAndTrusts.es.js +304 -223
  95. package/dist/forms/willsAndTrusts.iife.js +1 -1
  96. package/dist/forms/willsAndTrusts.json +1 -1
  97. 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
 
@@ -140,6 +223,14 @@ const sbsText = (updates) => {
140
223
  return text(updates)
141
224
  };
142
225
 
226
+ const verticalText = (updates) => {
227
+ updates.wrapperClass = 't-flex t-justify-center';
228
+ updates.messagesClass = 't-flex t-justify-center';
229
+ updates.inputClass = 't-text-center';
230
+ updates.helpClass = 't-mt-2.5 !t-text-sm t-text-center';
231
+ return text(updates)
232
+ };
233
+
143
234
  const textArea = (updates) => {
144
235
  if (updates.name && !updates.id) {
145
236
  updates.id = updates.name;
@@ -177,20 +268,101 @@ const sbsDate = (updates) => {
177
268
  return date(updates)
178
269
  };
179
270
 
180
- const applicantAge = (scope) => sbsText({
181
- name: scope ? scope + ':' + 'Applicant_Age' : 'Applicant_Age',
182
- label: 'Age of Applicant?',
183
- placeholder: 'Age between 18 and 65',
184
- maxlength: 2,
185
- inputmode: "numeric",
186
- validation: "required|min:18,max:65",
271
+ const email = (scope) => sbsText({
272
+ $formkit: 'email',
273
+ name: scope ? scope + ':' + 'Email' : 'Email',
274
+ label: 'Email Address:',
275
+ placeholder: 'email@domain.com',
276
+ autocomplete: 'email',
277
+ 'data-tf-sensitive': 'false',
278
+ validation: 'required|email',
187
279
  validationMessages: {
188
- required: 'Applicant Age is required',
189
- min: 'Invalid Age - must be between 18 and 65',
190
- max: 'Invalid Age - must be between 18 and 65',
280
+ required: 'Email is required',
281
+ email: 'Invalid Email'
191
282
  }
192
283
  });
193
284
 
285
+ const firstName = (scope) => sbsText({
286
+ label: 'First Name:',
287
+ placeholder: 'First',
288
+ name: scope ? scope + ':' + 'First_Name' : 'First_Name',
289
+ autocomplete: "given-name",
290
+ validationMessages: {
291
+ required: 'First Name is required'
292
+ }
293
+ });
294
+
295
+ const lastName = (scope) => sbsText({
296
+ label: 'Last Name:',
297
+ placeholder: 'Last',
298
+ name: scope ? scope + ':' + 'Last_Name' : 'Last_Name',
299
+ autocomplete: "family-name",
300
+ validationMessages: {
301
+ required: 'Last Name is required'
302
+ }
303
+ });
304
+
305
+ const phone = (scope) => sbsText({
306
+ $formkit: 'tel',
307
+ name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
308
+ label: 'Phone Number:',
309
+ placeholder: '###-###-####',
310
+ maxlength: 12,
311
+ help: '10-digit phone number, hyphens optional',
312
+ autocomplete: 'tel-national',
313
+ 'data-tf-sensitive': 'false',
314
+ validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
315
+ validationMessages: {
316
+ required: 'Field is required',
317
+ matches: 'Invalid Phone Format, use ###-###-####',
318
+ valid_phone: 'Invalid Phone Number'
319
+ },
320
+ helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
321
+ });
322
+
323
+
324
+ const zipcode = (scope, vertical, updates = {}) => {
325
+ const func = vertical ? verticalText : sbsText;
326
+ const label = vertical ? (updates.label) : 'Zip Code:';
327
+ const help = vertical ? (updates.help ?? "We try to match you with local help") : null;
328
+ return func({
329
+ label,
330
+ help,
331
+ placeholder: '#####',
332
+ name: scope ? scope + ':' + 'Zip' : 'Zip',
333
+ maxlength: 5,
334
+ inputmode: "numeric",
335
+ autocomplete: 'postal-code',
336
+ validation: 'required|matches:/^[0-9]{5}$/',
337
+ validationMessages: {
338
+ required: 'Zip Code is required',
339
+ matches: 'Invalid Zip Code'
340
+ },
341
+ ...updates
342
+ })
343
+ };
344
+
345
+ const applicantAge = (scope, vertical, updates = {}) => {
346
+ const func = vertical ? verticalText : sbsText;
347
+ const label = vertical ? (updates.label) : 'Age of Applicant?';
348
+ const value = vertical ? (updates.value ?? "50") : null;
349
+ return func(merge({
350
+ label,
351
+ placeholder: 'Age between 18 and 65',
352
+ name: scope ? scope + ':' + 'Applicant_Age' : 'Applicant_Age',
353
+ value,
354
+ maxlength: 2,
355
+ inputmode: "numeric",
356
+ validation: "required|min:18,max:65",
357
+ validationMessages: {
358
+ required: 'Applicant Age is required',
359
+ min: 'Invalid Age - must be between 18 and 65',
360
+ max: 'Invalid Age - must be between 18 and 65',
361
+ },
362
+ ...updates
363
+ }))
364
+ };
365
+
194
366
  const atFault = (scope) => sbsYesNoRadio({
195
367
  name: scope ? scope + ':' + 'At_Fault' : 'At_Fault',
196
368
  label: 'Were You at Fault?'
@@ -315,20 +487,6 @@ const doctorTreatment = (scope) => sbsYesNoRadio({
315
487
  label: 'Have You Recently Been Treated by a Doctor, Hospital or Clinic?',
316
488
  });
317
489
 
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
490
  const employerType = () => sbsSelect({
333
491
  label: 'The Employer Is a:',
334
492
  name: 'Employer_Type',
@@ -361,18 +519,6 @@ const estateLegalServicesNeeded = (scope) => sbsSelect({
361
519
  ]
362
520
  });
363
521
 
364
- const firstName = (scope) => sbsText({
365
- $formkit: 'text',
366
- label: 'First Name:',
367
- placeholder: 'First',
368
- name: scope ? scope + ':' + 'First_Name' : 'First_Name',
369
- autocomplete: "given-name",
370
- validationMessages: {
371
- required: 'First Name is required'
372
- }
373
- });
374
-
375
-
376
522
  const harassmentAndDiscriminationTOLP = () => col2Radio({
377
523
  label: 'Type of Help Needed:',
378
524
  name: 'Type_Of_Legal_Problem',
@@ -402,17 +548,6 @@ const incidentDate = (scope) => sbsDate({
402
548
  label: 'Date of Incident:',
403
549
  });
404
550
 
405
- const lastName = (scope) => sbsText({
406
- $formkit: 'text',
407
- label: 'Last Name:',
408
- placeholder: 'Last',
409
- name: scope ? scope + ':' + 'Last_Name' : 'Last_Name',
410
- autocomplete: "family-name",
411
- validationMessages: {
412
- required: 'Last Name is required'
413
- }
414
- });
415
-
416
551
  const lawyerPaymentMethod = (scope) => sbsSelect({
417
552
  name: scope ? scope + ':' + 'Lawyer_Payment_Method' : 'Lawyer_Payment_Method',
418
553
  label: 'How Will You Pay for Legal Fees if You Hire a Lawyer?',
@@ -433,69 +568,7 @@ const legalCrossSells$1 = () => col2Checkbox({
433
568
  help: 'Just hit "Next" if none apply',
434
569
  helpClass: 't-text-center !t-text-sm',
435
570
  validation: null,
436
- options: {
437
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Auto and Car Accidents"',
438
- then: {
439
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
440
- 'Wills and Trusts': 'Need a Will or Trust',
441
- 'Workers Compensation': 'Workplace Injury',
442
- 'Power of Attorney': 'Update Power of Attorney',
443
- 'Divorce and Separation': 'Need a Divorce or Separation',
444
- 'Child Custody': 'Need help with Child Custody',
445
- },
446
- else: {
447
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Personal Injury" || $getVal($get(form), "Type_Of_Legal_Problem") === "Workers Compensation"',
448
- then: {
449
- 'DUI and DWI': 'Involved in a DUI/DWI',
450
- 'Wills and Trusts': 'Need a Will or Trust',
451
- 'Power of Attorney': 'Update Power of Attorney',
452
- 'Divorce and Separation': 'Need a Divorce or Separation',
453
- 'Child Custody': 'Need help with Child Custody',
454
- // TODO add one more?
455
- },
456
- else: {
457
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "DUI and DWI"',
458
- then: {
459
- 'Personal Injury': 'Personal or Workplace Injury',
460
- 'Wills and Trusts': 'Need a Will or Trust',
461
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
462
- 'Power of Attorney': 'Update Power of Attorney',
463
- 'Divorce and Separation': 'Need a Divorce or Separation',
464
- 'Child Custody': 'Need help with Child Custody',
465
- },
466
- else: {
467
- 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"',
468
- then: {
469
- 'Auto and Car Accidents': 'Injured in a Car Accident',
470
- 'Personal Injury': 'Personal or Workplace Injury',
471
- 'DUI and DWI': 'Involved in a DUI/DWI',
472
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
473
- 'Divorce and Separation': 'Need a Divorce or Separation',
474
- 'Child Custody': 'Need help with Child Custody',
475
- },
476
- else: {
477
- if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Long Term Disability" || $getVal($get(form), "Type_Of_Legal_Problem") === "Social Security Disability and Insurance"',
478
- then: {
479
- 'Auto and Car Accidents': 'Injured in a Car Accident',
480
- 'DUI and DWI': 'Involved in a DUI/DWI',
481
- 'Wills and Trusts': 'Need a Will or Trust',
482
- 'Power of Attorney': 'Update Power of Attorney',
483
- 'Divorce and Separation': 'Need a Divorce or Separation',
484
- 'Child Custody': 'Need help with Child Custody',
485
- },
486
- else: {
487
- 'Auto and Car Accidents': 'Injured in a Car Accident',
488
- 'Personal Injury': 'Personal or Workplace Injury',
489
- 'DUI and DWI': 'Involved in a DUI/DWI',
490
- 'Wills and Trusts': 'Need a Will or Trust',
491
- 'Power of Attorney': 'Update Power of Attorney',
492
- 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
493
- }
494
- }
495
- }
496
- }
497
- }
498
- }
571
+ options: '$getCrossSellOptions($get(form), $getVal($get(form), "Type_Of_Legal_Problem"))',
499
572
  });
500
573
 
501
574
  const maritalStatus = (scope) => sbsSelect({
@@ -531,24 +604,6 @@ const pendingCharges = (scope) => sbsYesNoRadio({
531
604
  label: 'Do you currently have any pending charges?'
532
605
  });
533
606
 
534
- const phone = (scope) => sbsText({
535
- $formkit: 'tel',
536
- name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
537
- label: 'Phone Number:',
538
- placeholder: '###-###-####',
539
- maxlength: 12,
540
- help: '10-digit phone number, hyphens optional',
541
- autocomplete: 'tel-national',
542
- 'data-tf-sensitive': 'false',
543
- validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
544
- validationMessages: {
545
- required: 'Field is required',
546
- matches: 'Invalid Phone Format, use ###-###-####',
547
- valid_phone: 'Invalid Phone Number'
548
- },
549
- helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
550
- });
551
-
552
607
  const primaryInjury = (scope) => sbs2ColRadio({
553
608
  name: scope ? scope + ':' + 'Primary_Injury' : 'Primary_Injury',
554
609
  label: 'Primary Injury:',
@@ -645,21 +700,6 @@ const valueOfAssets = (scope) => sbsSelect({
645
700
  ]
646
701
  });
647
702
 
648
- const zipcode = (scope) => sbsText({
649
- label: 'Zip Code:',
650
- placeholder: '#####',
651
- name: scope ? scope + ':' + 'Zip' : 'Zip',
652
- maxlength: 5,
653
- inputmode: "numeric",
654
- autocomplete: 'postal-code',
655
- validation: 'required|matches:/^[0-9]{5}$/',
656
- validationMessages: {
657
- required: 'Zip Code is required',
658
- matches: 'Invalid Zip Code'
659
- }
660
- });
661
-
662
-
663
703
  // ------ Question Groups
664
704
 
665
705
  // NOTE: name must be unique within a form!
@@ -969,13 +1009,20 @@ function crossSellQuestionsStepSubHeadline(updates) {
969
1009
  function commentsStepHeadline(updates) {
970
1010
  return {
971
1011
  $el: 'h3',
972
- children: updates.headline || 'Additional Case Details',
1012
+ children: updates.headline || 'Additional Details',
973
1013
  attrs: {
974
1014
  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 || '')
975
1015
  }
976
1016
  }
977
1017
  }
978
1018
 
1019
+ function commentsStepHeadlineLegal(updates) {
1020
+ return commentsStepHeadline({
1021
+ headline: updates.headline || 'Additional Case Details',
1022
+ headlineClass: updates.headlineClass
1023
+ })
1024
+ }
1025
+
979
1026
  function firstAndLastStepHeadline(updates) {
980
1027
  return {
981
1028
  $el: 'h3',
@@ -999,7 +1046,7 @@ function legalCrossSellsStepHeadline(updates) {
999
1046
  function contactStepHeadline(updates) {
1000
1047
  return {
1001
1048
  $el: 'h3',
1002
- children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC,
1049
+ children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL,
1003
1050
  attrs: {
1004
1051
  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 || '')
1005
1052
  }
@@ -1009,7 +1056,7 @@ function contactStepHeadline(updates) {
1009
1056
  function contactStepSubHeadline(updates) {
1010
1057
  return {
1011
1058
  $el: 'h5',
1012
- children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC,
1059
+ children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL,
1013
1060
  attrs: {
1014
1061
  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 || '')
1015
1062
  }
@@ -1049,10 +1096,16 @@ const stepDefaults = (step, stepKey) => ({
1049
1096
  }
1050
1097
  });
1051
1098
 
1052
- function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = undefined, nextStepMap = undefined, autoFocus = undefined) {
1053
- if (typeof nextOnEnter === 'undefined') {
1054
- nextOnEnter = true;
1055
- }
1099
+ function step(name, inputs, updates = {}) {
1100
+ const {
1101
+ nextOnEnter = true,
1102
+ nextOnInput = false,
1103
+ stepKey = undefined,
1104
+ nextStepMap = undefined,
1105
+ triggerRedirectMap = undefined,
1106
+ autoFocus = undefined,
1107
+ } = updates;
1108
+
1056
1109
  if (inputs && inputs.length && (nextOnEnter || nextOnInput)) {
1057
1110
  const lastInput = findLastInput(inputs[inputs.length - 1]);
1058
1111
  if (lastInput && nextOnEnter === true) {
@@ -1072,6 +1125,7 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
1072
1125
  id: name,
1073
1126
  name: name,
1074
1127
  nextStepMap: nextStepMap,
1128
+ triggerRedirectMap: triggerRedirectMap,
1075
1129
  autoFocus: autoFocus,
1076
1130
  children: inputs
1077
1131
  }
@@ -1080,34 +1134,6 @@ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = u
1080
1134
  )
1081
1135
  }
1082
1136
 
1083
- function commentsWithBankruptcy(updates = {}) {
1084
- return step(
1085
- 'commentsWithBankruptcy',
1086
- [
1087
- commentsStepHeadline(updates),
1088
- comments({
1089
- label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL : updates.label,
1090
- placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1091
- inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1092
- }, updates.scope),
1093
- // TODO: needs scope support
1094
- bankruptcyCrossSell(),
1095
- {
1096
- $el: 'div',
1097
- if: '$get(CrossSell_Bankruptcy).value == true',
1098
- children: [
1099
- comments({
1100
- label: 'Bankruptcy or debt details:',
1101
- placeholder: 'Please describe your bankrtupcy or debt situation in a few words...',
1102
- inputClass: '!t-h-16'
1103
- }, 'CrossSell:Bankruptcy')
1104
- ],
1105
- }
1106
- ],
1107
- false // nextOnEnter
1108
- )
1109
- }
1110
-
1111
1137
  function contactInfo(updates = {}) {
1112
1138
  return step(
1113
1139
  'contactInfo',
@@ -1120,7 +1146,7 @@ function contactInfo(updates = {}) {
1120
1146
  TCPAConsent(updates.scope),
1121
1147
  secureIcon()
1122
1148
  ],
1123
- false, // nextOnEnter
1149
+ { nextOnEnter: false }
1124
1150
  )
1125
1151
  }
1126
1152
 
@@ -1132,10 +1158,37 @@ function firstAndLastV2(updates = {}) {
1132
1158
  firstName(),
1133
1159
  lastName()
1134
1160
  ],
1135
- updates.nextOnEnter
1161
+ updates
1136
1162
  )
1137
1163
  }
1138
1164
 
1165
+ function commentsWithBankruptcy(updates = {}) {
1166
+ return step(
1167
+ 'commentsWithBankruptcy',
1168
+ [
1169
+ commentsStepHeadlineLegal(updates),
1170
+ comments({
1171
+ label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL_LEGAL : updates.label,
1172
+ placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1173
+ inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1174
+ }, updates.scope),
1175
+ // TODO: needs scope support
1176
+ bankruptcyCrossSell(),
1177
+ {
1178
+ $el: 'div',
1179
+ if: '$get(CrossSell_Bankruptcy).value == true',
1180
+ children: [
1181
+ comments({
1182
+ label: 'Bankruptcy or debt details:',
1183
+ placeholder: 'Please describe your bankrtupcy or debt situation in a few words...',
1184
+ inputClass: '!t-h-16'
1185
+ }, 'CrossSell:Bankruptcy')
1186
+ ],
1187
+ }
1188
+ ],
1189
+ { nextOnEnter: false }
1190
+ )
1191
+ }
1139
1192
 
1140
1193
  function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1141
1194
  return step(
@@ -1153,7 +1206,7 @@ function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1153
1206
  'CrossSell:Auto_and_Car_Accidents'
1154
1207
  )
1155
1208
  ],
1156
- updates.nextOnEnter
1209
+ updates
1157
1210
  )
1158
1211
  }
1159
1212
 
@@ -1172,7 +1225,7 @@ function childCustodyCrossSellQuestions(updates = {}) {
1172
1225
  'CrossSell:Child_Custody'
1173
1226
  )
1174
1227
  ],
1175
- updates.nextOnEnter
1228
+ updates
1176
1229
  )
1177
1230
  }
1178
1231
 
@@ -1191,7 +1244,7 @@ function divorceAndSeparationCrossSellQuestions(updates = {}) {
1191
1244
  'CrossSell:Divorce_and_Separation'
1192
1245
  )
1193
1246
  ],
1194
- updates.nextOnEnter
1247
+ updates
1195
1248
  )
1196
1249
  }
1197
1250
 
@@ -1210,7 +1263,7 @@ function duiAndDWICrossSellQuestions(updates = {}) {
1210
1263
  'CrossSell:DUI_and_DWI'
1211
1264
  )
1212
1265
  ],
1213
- updates.nextOnEnter
1266
+ updates
1214
1267
  )
1215
1268
  }
1216
1269
 
@@ -1230,7 +1283,7 @@ function ssdiCrossSellQuestions(updates = {}) {
1230
1283
  'CrossSell:Social_Security_Disability_and_Insurance'
1231
1284
  )
1232
1285
  ],
1233
- updates.nextOnEnter
1286
+ updates
1234
1287
  )
1235
1288
  }
1236
1289
 
@@ -1250,7 +1303,7 @@ function personalInjuryCrossSellQuestions(updates = {}) {
1250
1303
  'CrossSell:Personal_Injury'
1251
1304
  )
1252
1305
  ],
1253
- updates.nextOnEnter
1306
+ updates
1254
1307
  )
1255
1308
  }
1256
1309
 
@@ -1269,7 +1322,7 @@ function powerOfAttorneyCrossSellQuestions(updates = {}) {
1269
1322
  'CrossSell:Power_of_Attorney'
1270
1323
  )
1271
1324
  ],
1272
- updates.nextOnEnter
1325
+ updates
1273
1326
  )
1274
1327
  }
1275
1328
 
@@ -1288,7 +1341,7 @@ function willsAndTrustsCrossSellQuestions(updates = {}) {
1288
1341
  'CrossSell:Wills_and_Trusts'
1289
1342
  )
1290
1343
  ],
1291
- updates.nextOnEnter
1344
+ updates
1292
1345
  )
1293
1346
  }
1294
1347
 
@@ -1308,7 +1361,7 @@ function workersCompensationCrossSellQuestions(updates = {}) {
1308
1361
  'CrossSell:Workers_Compensation'
1309
1362
  )
1310
1363
  ],
1311
- updates.nextOnEnter
1364
+ updates
1312
1365
  )
1313
1366
  }
1314
1367
 
@@ -1319,10 +1372,7 @@ function harassmentAndDiscriminationTOLPAndZip(updates = {}) {
1319
1372
  harassmentAndDiscriminationTOLP(),
1320
1373
  zipcode()
1321
1374
  ],
1322
- updates.nextOnEnter,
1323
- updates.nextOnInput,
1324
- updates.stepKey,
1325
- updates.nextStepMap
1375
+ updates
1326
1376
  )
1327
1377
  }
1328
1378
 
@@ -1338,21 +1388,20 @@ function harassmentAndDiscriminationTOLPQuestions(updates = {}) {
1338
1388
  NonWorkplaceDiscriminationQuestions(),
1339
1389
  NotSureOrOtherQuestions()
1340
1390
  ],
1341
- updates.nextOnEnter
1391
+ updates
1342
1392
  )
1343
1393
  }
1344
1394
 
1345
1395
  function legalCrossSells(updates = {}) {
1396
+ updates.nextOnInput = false;
1397
+ updates.stepKey = '$get(Type_Of_Legal_Problem).value';
1346
1398
  return step(
1347
1399
  'legalCrossSells',
1348
1400
  [
1349
1401
  legalCrossSellsStepHeadline(updates),
1350
1402
  legalCrossSells$1(),
1351
1403
  ],
1352
- updates.nextOnEnter,
1353
- false,
1354
- // Note: we should probably scope this stepKey to this step name
1355
- '$get(Type_Of_Legal_Problem).value'
1404
+ updates
1356
1405
  )
1357
1406
  }
1358
1407
 
@@ -1495,9 +1544,7 @@ function formProps(updates) {
1495
1544
  return props
1496
1545
  }
1497
1546
 
1498
- const metaDefaults = {
1499
- tcpaLanguage: TCPA_LANGUAGE
1500
- };
1547
+ const metaDefaults = {};
1501
1548
 
1502
1549
  function metaProps(updates) {
1503
1550
  const data = merge(
@@ -1510,7 +1557,7 @@ function metaProps(updates) {
1510
1557
  }
1511
1558
  }
1512
1559
 
1513
- function defaultMetaProps(tolps = null) {
1560
+ function defaultMetaPropsLegal(tolps = null) {
1514
1561
  let commentsPlaceholders = TOLPCommentsPlaceholders;
1515
1562
  let finalHeadlines = TOLPFinalHeadlines;
1516
1563
  let finalSubHeadlines = TOLPFinalSubHeadlines;
@@ -1520,12 +1567,13 @@ function defaultMetaProps(tolps = null) {
1520
1567
  finalSubHeadlines = filterMapByKey(TOLPFinalSubHeadlines, tolps);
1521
1568
  }
1522
1569
  return metaProps({
1523
- defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1570
+ tcpaLanguage: TCPA_LANGUAGE_LEGAL,
1571
+ defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_LEGAL,
1524
1572
  commentsPlaceholders: commentsPlaceholders,
1525
- defaultFinalHeadline: DEFAULT_FINAL_HEADLINE,
1573
+ defaultFinalHeadline: DEFAULT_FINAL_HEADLINE_LEGAL,
1526
1574
  finalHeadlines: finalHeadlines,
1527
- defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE,
1528
- finalSubHeadlines: finalSubHeadlines,
1575
+ defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE_LEGAL,
1576
+ finalSubHeadlines: finalSubHeadlines
1529
1577
  })
1530
1578
  }
1531
1579
 
@@ -1770,23 +1818,53 @@ const TOLPFinalSubHeadlines = {
1770
1818
  // 'Non-Workplace Discrimination': '',
1771
1819
  };
1772
1820
 
1773
-
1774
1821
  const nextStepsMapLegalLegacy = {
1775
- '*': [
1776
- 'TOLPQuestions',
1777
- 'commentsWithBankruptcy',
1778
- 'legalCrossSells',
1779
- 'firstAndLast',
1780
- 'contactInfo',
1781
- ]
1822
+ values: {
1823
+ '*': [
1824
+ 'TOLPQuestions',
1825
+ 'commentsWithBankruptcy',
1826
+ 'legalCrossSells',
1827
+ 'firstAndLast',
1828
+ 'contactInfo',
1829
+ ]
1830
+ }
1831
+ };
1832
+
1833
+ const nextStepsMapLegalCrossSells = {
1834
+ values: {
1835
+ 'Legal_CrossSells': {
1836
+ 'Auto and Car Accidents': ['autoAndCarAccidentCrossSellQuestions'],
1837
+ 'Personal Injury': ['personalInjuryCrossSellQuestions'],
1838
+ 'Workers Compensation': ['workersCompensationCrossSellQuestions'],
1839
+ 'DUI and DWI': ['duiAndDWICrossSellQuestions'],
1840
+ 'Long Term Disability': ['longTermDisabilityCrossSellQuestions'],
1841
+ 'Social Security Disability and Insurance': ['ssdiCrossSellQuestions'],
1842
+ 'Bankruptcy': ['bankruptcyCrossSellQuestions'],
1843
+ 'Power of Attorney': ['powerOfAttorneyCrossSellQuestions'],
1844
+ 'Wills and Trusts': ['willsAndTrustsCrossSellQuestions'],
1845
+ 'Divorce and Separation': ['divorceAndSeparationCrossSellQuestions'],
1846
+ 'Child Custody': ['childCustodyCrossSellQuestions'],
1847
+ },
1848
+ '*': ['firstAndLast', 'contactInfo'],
1849
+ },
1850
+
1851
+ // NOTE: this assumes a certain placement of the cross sell question
1852
+ // in the form flow.
1853
+ appendSteps: ['firstAndLast', 'contactInfo'],
1854
+ matchesAllowed: 1,
1782
1855
  };
1783
1856
 
1784
- const meta = defaultMetaProps();
1857
+ const legalCrossSellOptionMap = CROSS_SELL_OPTION_MAP_LEGAL;
1858
+
1859
+ const meta = defaultMetaPropsLegal();
1785
1860
 
1786
1861
  meta.data.dynamicSchema = [
1787
1862
  harassmentAndDiscriminationTOLPQuestions(),
1788
1863
  commentsWithBankruptcy(),
1789
- legalCrossSells(),
1864
+ legalCrossSells({
1865
+ headlineClass: '!t-text-dark',
1866
+ nextStepMap: nextStepsMapLegalCrossSells,
1867
+ }),
1790
1868
  autoAndCarAccidentCrossSellQuestions(),
1791
1869
  personalInjuryCrossSellQuestions(),
1792
1870
  workersCompensationCrossSellQuestions(),
@@ -1807,6 +1885,7 @@ const schema = [
1807
1885
  props: formProps({
1808
1886
  formId: 'harassmentAndDiscrimination',
1809
1887
  redirectMap: legalRedirectMap(),
1888
+ crossSellOptionMap: legalCrossSellOptionMap
1810
1889
  }),
1811
1890
  children: [
1812
1891
  defaultHeadline(),