bhl-forms 0.6.4 → 0.6.6

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 (74) hide show
  1. package/dist/bhl-forms.iife.js +1 -1
  2. package/dist/bhl-forms.modern.iife.js +1 -1
  3. package/dist/bhl-forms.modern.umd.js +1 -1
  4. package/dist/bhl-forms.umd.js +1 -1
  5. package/dist/forms/accidentsAndInjuries.es.js +1439 -864
  6. package/dist/forms/accidentsAndInjuries.iife.js +1 -1
  7. package/dist/forms/accidentsAndInjuries.json +1 -1
  8. package/dist/forms/appraisals.es.js +115 -115
  9. package/dist/forms/appraisals.iife.js +1 -1
  10. package/dist/forms/childAndFamily.es.js +789 -768
  11. package/dist/forms/childAndFamily.iife.js +1 -1
  12. package/dist/forms/childAndFamily.json +1 -1
  13. package/dist/forms/childAndFamilySingle.es.js +755 -750
  14. package/dist/forms/childAndFamilySingle.iife.js +1 -1
  15. package/dist/forms/childAndFamilySingle.json +1 -1
  16. package/dist/forms/civilLawsuit.es.js +835 -809
  17. package/dist/forms/civilLawsuit.iife.js +1 -1
  18. package/dist/forms/civilLawsuit.json +1 -1
  19. package/dist/forms/coins.es.js +115 -115
  20. package/dist/forms/coins.iife.js +1 -1
  21. package/dist/forms/contracts.es.js +1454 -720
  22. package/dist/forms/contracts.iife.js +1 -1
  23. package/dist/forms/contracts.json +1 -1
  24. package/dist/forms/criminal.es.js +870 -828
  25. package/dist/forms/criminal.iife.js +1 -1
  26. package/dist/forms/criminal.json +1 -1
  27. package/dist/forms/employmentAndWorkplace.es.js +1827 -1193
  28. package/dist/forms/employmentAndWorkplace.iife.js +1 -1
  29. package/dist/forms/employmentAndWorkplace.json +1 -1
  30. package/dist/forms/generalLegal.es.js +852 -811
  31. package/dist/forms/generalLegal.iife.js +1 -1
  32. package/dist/forms/generalLegal.json +1 -1
  33. package/dist/forms/generalLegalPopUnder.es.js +852 -810
  34. package/dist/forms/generalLegalPopUnder.iife.js +1 -1
  35. package/dist/forms/generalLegalPopUnder.json +1 -1
  36. package/dist/forms/generalLegalSingle.es.js +1525 -1506
  37. package/dist/forms/generalLegalSingle.iife.js +1 -1
  38. package/dist/forms/generalLegalSingle.json +1 -1
  39. package/dist/forms/generalLegalThankYou.es.js +708 -698
  40. package/dist/forms/generalLegalThankYou.iife.js +1 -1
  41. package/dist/forms/generalLegalThankYou.json +1 -1
  42. package/dist/forms/harassmentAndDiscrimination.es.js +1481 -702
  43. package/dist/forms/harassmentAndDiscrimination.iife.js +1 -1
  44. package/dist/forms/harassmentAndDiscrimination.json +1 -1
  45. package/dist/forms/malpractice.es.js +1764 -1071
  46. package/dist/forms/malpractice.iife.js +1 -1
  47. package/dist/forms/malpractice.json +1 -1
  48. package/dist/forms/mechanics.es.js +115 -115
  49. package/dist/forms/mechanics.iife.js +1 -1
  50. package/dist/forms/realEstate.es.js +1556 -1213
  51. package/dist/forms/realEstate.iife.js +1 -1
  52. package/dist/forms/realEstate.json +1 -1
  53. package/dist/forms/repossession.es.js +1572 -851
  54. package/dist/forms/repossession.iife.js +1 -1
  55. package/dist/forms/repossession.json +1 -1
  56. package/dist/forms/ssdi.es.js +672 -677
  57. package/dist/forms/ssdi.iife.js +1 -1
  58. package/dist/forms/ssdi.json +1 -1
  59. package/dist/forms/testForm.es.js +473 -468
  60. package/dist/forms/testForm.iife.js +1 -1
  61. package/dist/forms/testForm.json +1 -1
  62. package/dist/forms/testRedirects.es.js +104 -101
  63. package/dist/forms/testRedirects.iife.js +1 -1
  64. package/dist/forms/testRedirects.json +1 -1
  65. package/dist/forms/vets.es.js +115 -115
  66. package/dist/forms/vets.iife.js +1 -1
  67. package/dist/forms/willsAndTrusts.es.js +1298 -710
  68. package/dist/forms/willsAndTrusts.iife.js +1 -1
  69. package/dist/forms/willsAndTrusts.json +1 -1
  70. package/dist/main.css +1 -1
  71. package/package.json +1 -1
  72. package/dist/forms/generalLegalPopUnderTF.es.js +0 -3092
  73. package/dist/forms/generalLegalPopUnderTF.iife.js +0 -1
  74. package/dist/forms/generalLegalPopUnderTF.json +0 -1
@@ -15,1337 +15,1975 @@ const DEFAULT_FINAL_HEADLINE_DYNAMIC = '$getKey($meta, "finalHeadlines." + $get(
15
15
  const DEFAULT_FINAL_SUBHEADLINE = 'You may benefit from speaking with a legal professional. Please verify your contact information.';
16
16
  const DEFAULT_FINAL_SUBHEADLINE_DYNAMIC = '$getKey($meta, "finalSubHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalSubHeadline)';
17
17
 
18
- const formPropDefaults = {
19
- type: 'form',
20
- id: 'form',
21
- config: { validationVisibility: 'submit' },
22
- onSubmit: '$submit($submitUrl, $prepData, $handleRedirect, "text/plain; charset=UTF-8")',
23
- plugins: '$plugins',
24
- actions: false,
25
- anchorElement: 'form-anchor',
26
- useLocalStorage: true,
27
- prepop: {
28
- fromURL: true
29
- },
30
- errorCodes: {
31
- 403: { message: "An Error Occurred", abort: false },
32
- 409: { abort: false },
33
- 429: "An Error Occurred",
34
- 504: { message: "An Error Occurred", abort: false },
35
- },
36
- formClass: '!t-max-w-[40rem]'
37
- };
18
+ // ------ Common Base Settings
38
19
 
39
- function formProps(updates) {
40
- const props = merge(
41
- formPropDefaults,
42
- updates
43
- );
44
- if (props.formId && !props.name) {
45
- props.name = props.formId;
20
+ const checkbox = (updates) => {
21
+ if (updates.name && !updates.id) {
22
+ updates.id = updates.name;
46
23
  }
47
- return props
48
- }
24
+ return merge({
25
+ $formkit: 'checkbox',
26
+ validation: 'required',
27
+ validationMessages: {
28
+ required: 'Field is required'
29
+ }
30
+ }, updates)
31
+ };
49
32
 
50
- const metaDefaults = {
51
- tcpaLanguage: TCPA_LANGUAGE
33
+ const sbsCheckbox = (updates) => {
34
+ updates.legendClass = 'legend-left required';
35
+ updates.fieldsetClass = '$reset side-by-side';
36
+ updates.optionsClass = 't-pl-1';
37
+ updates.innerClass = 't-flex t-items-center';
38
+ updates.wrapperClass = 't-mb-3';
39
+ return checkbox(updates)
52
40
  };
53
41
 
54
- function metaProps(updates) {
55
- const data = merge(
56
- metaDefaults,
57
- updates
58
- );
59
- return {
60
- type: 'meta',
61
- data
42
+ const col2Checkbox = (updates) => {
43
+ if (!updates || !updates.legendClass) {
44
+ updates.legendClass = 'required';
62
45
  }
63
- }
64
-
65
- function defaultMetaProps() {
66
- return metaProps({
67
- defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
68
- commentsPlaceholders: TOLPCommentsPlaceholders,
69
- defaultFinalHeadline: DEFAULT_FINAL_HEADLINE,
70
- finalHeadlines: TOLPFinalHeadlines,
71
- defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE,
72
- finalSubHeadlines: TOLPFinalSubHeadlines,
73
- // Added everywhere for now
74
- // trustedFormTOLPs: trustedFormTOLPs
75
- })
76
- }
46
+ updates.fieldsetClass = '$reset';
47
+ updates.optionsClass = 't-pl-8 md:t-pl-2 t-pt-3 t-grid t-grid-cols-1 md:t-grid-cols-2';
48
+ updates.innerClass = 't-items-start';
49
+ updates.wrapperClass = '$reset t-flex t-cursor-pointer t-mb-3';
50
+ return checkbox(updates)
51
+ };
77
52
 
78
- const formAnchorDefaults = {
79
- $el: 'div',
80
- children: [
81
- {
82
- $el: 'div',
83
- attrs: {
84
- id: 'form-anchor',
85
- class: 't-absolute',
86
- style: { top: '-30px', left: 0 }
87
- }
88
- }
89
- ],
90
- attrs: {
91
- class: 't-relative'
53
+ const radio = (updates) => {
54
+ if (updates.name && !updates.id) {
55
+ updates.id = updates.name;
92
56
  }
57
+ return merge({
58
+ $formkit: 'radio',
59
+ validation: 'required',
60
+ validationMessages: {
61
+ required: 'Field is required'
62
+ },
63
+ optionsClass: 't-pt-3 t-pl-1',
64
+ legendClass: 'required'
65
+ }, updates)
93
66
  };
94
67
 
95
- function formAnchor(updates) {
96
- return merge(
97
- formAnchorDefaults,
98
- updates
99
- )
100
- }
68
+ const col2Radio = (updates) => {
69
+ updates.legendClass = 'required';
70
+ updates.fieldsetClass = '$reset';
71
+ updates.optionsClass = 't-pl-2 t-pt-3 t-grid t-grid-cols-1 md:t-grid-cols-2';
72
+ updates.innerClass = 't-items-start';
73
+ updates.wrapperClass = '$reset t-flex t-cursor-pointer t-mb-3';
74
+ return radio(updates)
75
+ };
101
76
 
102
- function headlineDefaults(updates = {}) {
103
- return {
104
- $el: 'h1',
105
- attrs: {
106
- class: 't-flex t-justify-center t-text-center !t-text-[2rem] t-font-semibold t-pt-5 t-px-7 md:t-px-3' + ' ' + (updates.headlineClass || '')
107
- }
108
- }
109
- }
77
+ const sbs2ColRadio = (updates) => {
78
+ updates.legendClass = 'legend-left-flex md:t-max-w-[40%] required';
79
+ updates.fieldsetClass = '$reset side-by-side-flex';
80
+ updates.optionsClass = 'md:t-ml-4 md:t-mt-2 t-grid t-grid-cols-1 md:t-grid-cols-2-125';
81
+ updates.innerClass = 't-flex t-items-start';
82
+ updates.wrapperClass = '$reset t-flex t-cursor-pointer t-mb-3';
83
+ return radio(updates)
84
+ };
110
85
 
111
- function headline(updates = {}) {
112
- return merge(
113
- headlineDefaults(updates),
114
- updates
115
- )
116
- }
86
+ const sbs2ItemRadio = (updates) => {
87
+ updates.legendClass = 'legend-left t-pb-1 required';
88
+ updates.fieldsetClass = '$reset side-by-side t-items-center';
89
+ updates.optionsClass = 't-mt-1 t-grid t-grid-cols-1 md:t-grid-cols-2-125 t-items-center';
90
+ updates.innerClass = 't-flex t-items-center';
91
+ updates.optionClass = 't-pr-1';
92
+ return radio(updates)
93
+ };
117
94
 
118
- function defaultHeadline() {
119
- return headline({
120
- children: '$urlParam("hl", "Start Here For a Free Consultation")',
121
- if: '$activeStep === $firstStep()'
122
- })
123
- }
95
+ const sbsYesNoRadio = (updates) => {
96
+ updates.options = ['Yes', 'No'];
97
+ return sbs2ItemRadio(updates)
98
+ };
124
99
 
125
- function subHeadlineDefaults(updates = {}) {
126
- return {
127
- $el: 'h3',
128
- attrs: {
129
- class: 't-flex t-justify-center t-text-center !t-text-[1.2rem] t-font-medium t-text-blue-500 t-px-10' + ' ' + (updates.subheadlineClass || '')
130
- }
100
+ const select = (updates) => {
101
+ if (updates.name && !updates.id) {
102
+ updates.id = updates.name;
131
103
  }
132
- }
133
-
134
- function subHeadline(updates = {}) {
135
- return merge(
136
- subHeadlineDefaults(updates),
137
- updates
138
- )
139
- }
104
+ return merge({
105
+ $formkit: 'select',
106
+ placeholder: "Please Select",
107
+ validation: 'required',
108
+ validationMessages: {
109
+ required: 'Field is required'
110
+ },
111
+ inputClass: 't-bg-white',
112
+ labelClass: 'required'
113
+ }, updates)
114
+ };
140
115
 
141
- function defaultSubHeadline() {
142
- return subHeadline({
143
- children: '$urlParam("shl", "Our Service is Fast and Free!")',
144
- if: '$activeStep === $firstStep()'
145
- })
146
- }
116
+ const sbsSelect = (updates) => {
117
+ updates.labelClass = 'required';
118
+ updates.wrapperClass = 'side-by-side t-items-center';
119
+ updates.innerClass = 'select-height-content';
120
+ updates.helpClass = 't-mt-2.5 md:t-text-right md:t-mt-[-5px]';
121
+ return select(updates)
122
+ };
147
123
 
148
- const secureIconDefault = {
149
- $el: 'div',
150
- if: '$activeStep === $lastStep()',
151
- attrs: {
152
- class: 't-flex t-justify-center t-items-center t-text-sm t-text-gray-500'
153
- },
154
- children: [
155
- {
156
- $el: 'img',
157
- attrs: {
158
- loading: 'lazy',
159
- alt: '',
160
- style: {
161
- border: 0
162
- },
163
- width: '25',
164
- height: '25',
165
- src: 'https://d27hmee62k45vz.cloudfront.net/lock_icon_1.jpeg',
166
- }
124
+ const text = (updates) => {
125
+ if (updates.name && !updates.id) {
126
+ updates.id = updates.name;
127
+ }
128
+ return merge({
129
+ $formkit: 'text',
130
+ validation: 'required',
131
+ validationMessages: {
132
+ required: 'Field is required'
167
133
  },
168
- {
169
- $el: 'span',
170
- children: 'Secure & Encrypted',
171
- attrs: {
172
- class: 't-pl-2 t-pt-1 t-font-medium'
173
- }
174
- }
175
- ]
134
+ labelClass: 'required'
135
+ }, updates)
176
136
  };
177
137
 
138
+ const sbsText = (updates) => {
139
+ updates.wrapperClass = 'side-by-side t-items-center';
140
+ return text(updates)
141
+ };
178
142
 
179
- function secureIcon(updates) {
180
- return merge(
181
- secureIconDefault,
182
- updates
183
- )
184
- }
185
-
186
- const hiddenInputsBase = [
187
- {
188
- $formkit: 'hidden',
189
- name: "gclid",
190
- value: null
191
- },
192
- {
193
- $formkit: 'hidden',
194
- name: "campaignid",
195
- value: null
196
- },
197
- {
198
- $formkit: 'hidden',
199
- name: "s",
200
- value: null
143
+ const textArea = (updates) => {
144
+ if (updates.name && !updates.id) {
145
+ updates.id = updates.name;
201
146
  }
202
- ];
147
+ return merge({
148
+ $formkit: 'textarea',
149
+ rows: 5,
150
+ maxlength: 500,
151
+ validation: 'required',
152
+ validationMessages: {
153
+ required: 'Field is required'
154
+ },
155
+ innerClass: 't-max-w-xl',
156
+ labelClass: 'required'
157
+ }, updates)
158
+ };
203
159
 
204
- const hiddenInputsLegal = [
205
- {
206
- $formkit: 'hidden',
207
- name: "vertical",
208
- value: "Legal"
209
- },
210
- {
211
- $formkit: 'hidden',
212
- name: "TCPA_Language",
213
- value: "$meta.tcpaLanguage"
214
- },
215
- ...hiddenInputsBase
216
- ];
160
+ const date = (updates) => {
161
+ if (updates.name && !updates.id) {
162
+ updates.id = updates.name;
163
+ }
164
+ return merge({
165
+ $formkit: 'DatePicker',
166
+ validation: 'required',
167
+ validationMessages: {
168
+ required: 'Field is required'
169
+ },
170
+ labelClass: 'required t-block t-mb-3 t-font-semibold t-text-base formkit-invalid:t-text-red-500',
171
+ innerClass: 't-border t-border-gray-400 formkit-invalid:t-border-red-500 t-rounded t-mb-1 focus-within:t-border-blue-500'
172
+ }, updates)
173
+ };
217
174
 
218
- const legalRedirectMapDefaults = {
219
- '*': LegalRedirectUrl()
175
+ const sbsDate = (updates) => {
176
+ updates.wrapperClass = 'side-by-side t-items-center';
177
+ return date(updates)
220
178
  };
221
179
 
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",
187
+ 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',
191
+ }
192
+ });
222
193
 
223
- function legalRedirectMap(updates) {
224
- return merge(
225
- legalRedirectMapDefaults,
226
- updates
227
- )
228
- }
194
+ const atFault = (scope) => sbsYesNoRadio({
195
+ name: scope ? scope + ':' + 'At_Fault' : 'At_Fault',
196
+ label: 'Were You at Fault?'
197
+ });
229
198
 
230
- const legalAllValueOverrideMap = {
231
- 'Civil_Defense': {
232
- 'Yes': {
233
- 'Type_Of_Legal_Problem': 'Defend a Lawsuit'
234
- },
235
- 'No': {
236
- 'Type_Of_Legal_Problem': 'File a Lawsuit'
237
- }
238
- },
239
- 'Type_Of_Legal_Problem_Display': {
240
- // Accidents and PI
241
- 'Auto Accident': {
242
- 'Type_Of_Legal_Problem': 'Auto and Car Accidents'
243
- },
244
- 'Dog Bite': {
245
- 'Type_Of_Legal_Problem': 'Personal Injury'
246
- },
247
- 'Slip and Fall': {
248
- 'Type_Of_Legal_Problem': 'Personal Injury'
249
- },
250
- 'Workplace Injury': {
251
- 'Type_Of_Legal_Problem': 'Workers Compensation'
252
- },
253
- 'Trucking Accident': {
254
- 'Type_Of_Legal_Problem': 'Auto and Car Accidents'
255
- },
256
- 'Motorcycle Accident': {
257
- 'Type_Of_Legal_Problem': 'Auto and Car Accidents',
258
- },
259
- 'Other Accidents or Injuries': {
260
- 'Type_Of_Legal_Problem': 'Personal Injury'
261
- },
262
- // Civil
263
- 'Automobile Accident': {
264
- 'Type_Of_Legal_Problem': 'Auto and Car Accidents'
265
- },
266
- 'Contract Disputes': {
267
- 'Type_Of_Legal_Problem': 'Business Lawyers'
268
- },
269
- 'Defamation and Slander': {
270
- 'Type_Of_Legal_Problem': 'File a Lawsuit'
271
- },
272
- 'Dog Bite': {
273
- 'Type_Of_Legal_Problem': 'Personal Injury'
274
- },
275
- 'Employment and Workplace': {
276
- 'Type_Of_Legal_Problem': 'Employment and Workplace'
277
- },
278
- 'Fraud': {
279
- 'Type_Of_Legal_Problem': 'Consumer Lawyers'
280
- },
281
- 'Medical Malpractice': {
282
- 'Type_Of_Legal_Problem': 'Medical Malpractice'
283
- },
284
- 'Personal Injury': {
285
- 'Type_Of_Legal_Problem': 'Personal Injury'
286
- },
287
- 'Property Damage': {
288
- 'Type_Of_Legal_Problem': 'Property Damage'
289
- },
290
- 'Small Claims': {
291
- 'Type_Of_Legal_Problem': 'File a Lawsuit'
292
- },
293
- 'Real Estate': {
294
- 'Type_Of_Legal_Problem': 'Real Estate'
295
- },
296
- 'Other (describe on next page)': {
297
- 'Type_Of_Legal_Problem': 'Not Sure or Other'
298
- },
299
- // Contracts
300
- 'Contract Creation': {
301
- 'Type_Of_Legal_Problem': 'Business Lawyers',
302
- 'Business_Services': 'Contracts'
303
- },
304
- 'Contract Enforcement': {
305
- 'Type_Of_Legal_Problem': 'Business Lawyers',
306
- 'Business_Services': 'Contracts'
307
- },
308
- 'Contract Cancellation': {
309
- 'Type_Of_Legal_Problem': 'Business Lawyers',
310
- 'Business_Services': 'Contracts'
311
- },
312
- 'Contract Fraud': {
313
- 'Type_Of_Legal_Problem': 'Business Lawyers',
314
- 'Business_Services': 'Contracts'
315
- },
316
- 'Breach of Contract': {
317
- 'Type_Of_Legal_Problem': 'Business Lawyers',
318
- 'Business_Services': 'Contracts'
319
- },
320
- 'Other Contract Issues': {
321
- 'Type_Of_Legal_Problem': 'Business Lawyers',
322
- 'Business_Services': 'Contracts'
323
- },
324
- // Criminal
325
- 'Criminal Defense': {
326
- 'Type_Of_Legal_Problem': 'Criminal and Felony'
327
- },
328
- 'Victim of a Crime': {
329
- 'Type_Of_Legal_Problem': 'Victim of a Crime'
330
- },
331
- 'DUI and DWI': {
332
- 'Type_Of_Legal_Problem': 'DUI and DWI'
333
- },
334
- 'Expungement': {
335
- 'Type_Of_Legal_Problem': 'Expungement'
336
- },
337
- 'Harassment': {
338
- 'Type_Of_Legal_Problem': 'Criminal and Felony'
339
- },
340
- 'Not Sure or Other': {
341
- 'Type_Of_Legal_Problem': 'Not Sure or Other'
342
- },
343
- // Employment and Workplace
344
- 'Workplace Harassment': {
345
- 'Type_Of_Legal_Problem': 'Workplace Harassment'
346
- },
347
- 'Workplace Discrimination': {
348
- 'Type_Of_Legal_Problem': 'Workplace Discrimination'
349
- },
350
- 'Wrongful Termination': {
351
- 'Type_Of_Legal_Problem': 'Wrongful Termination'
352
- },
353
- 'Payment Disputes': {
354
- 'Type_Of_Legal_Problem': 'Employment and Workplace'
355
- },
356
- 'Workers Compensation': {
357
- 'Type_Of_Legal_Problem': 'Workers Compensation'
358
- },
359
- 'Unemployment': {
360
- 'Type_Of_Legal_Problem': 'Unemployment'
361
- },
362
- 'Other Workplace Issues': {
363
- 'Type_Of_Legal_Problem': 'Employment and Workplace'
364
- },
365
- // Malpractice
366
- 'Attorney Malpractice': {
367
- 'Type_Of_Legal_Problem': 'Civil Lawsuit'
368
- },
369
- 'Other Malpractice Issues': {
370
- 'Type_Of_Legal_Problem': 'Not Sure or Other'
371
- },
372
- // Repossession
373
- 'Vehicle Repossession': {
374
- 'Type_Of_Legal_Problem': 'Bankruptcy'
375
- },
376
- 'Property Repossession': {
377
- 'Type_Of_Legal_Problem': 'Bankruptcy'
378
- },
379
- 'Other Repossession Issues': {
380
- 'Type_Of_Legal_Problem': 'Not Sure or Other'
381
- },
382
- // Real Estate
383
- 'Contracts and Agreements': {
384
- 'Type_Of_Legal_Problem': 'Real Estate'
385
- },
386
- 'Deeds, Liens, and Titles': {
387
- 'Type_Of_Legal_Problem': 'Real Estate'
388
- },
389
- 'Foreclosure': {
390
- 'Type_Of_Legal_Problem': 'Foreclosure'
391
- },
392
- 'Insurance': {
393
- 'Type_Of_Legal_Problem': 'Insurance'
394
- },
395
- 'Landlord and Tenant': {
396
- 'Type_Of_Legal_Problem': 'Landlord and Tenant',
397
- },
398
- 'Loans and Mortgages': {
399
- 'Type_Of_Legal_Problem': 'Real Estate',
400
- },
401
- 'Wills, Trusts, and Estates': {
402
- 'Type_Of_Legal_Problem': 'Wills and Trusts'
403
- },
404
- 'Property Damage': {
405
- 'Type_Of_Legal_Problem': 'Property Damage'
406
- },
407
- 'Other Real Estate Issues': {
408
- 'Type_Of_Legal_Problem': 'Real Estate'
199
+ const bankruptcyCrossSell = () => sbsCheckbox({
200
+ label: "I'd also like a consult for bankruptcy or debt elimination (optional)",
201
+ help: "Note: you will be contacted separately by a bankruptcy/debt expert",
202
+ name: 'CrossSell_Bankruptcy',
203
+ id: 'CrossSell_Bankruptcy',
204
+ if: '$getVal($get(form), "Type_Of_Legal_Problem") != "Bankruptcy" && ($getVal($get(form), "Degree_Of_Interest") == "Absolutely Can\'t Afford" || $getVal($get(form), "Degree_Of_Interest") == "Maybe" || $getVal($get(form), "Degree_Of_Interest") == "Probably")',
205
+ validation: null,
206
+ helpClass: "!t-text-sm"
207
+ });
208
+
209
+ const bloodContentAlcoholTest = (scope) => sbsSelect({
210
+ name: scope ? scope + ':' + 'Blood_Alcohol_Content_Test' : 'Blood_Alcohol_Content_Test',
211
+ label: 'Blood Alcohol Content Measured by Test:',
212
+ options: [
213
+ "No Test",
214
+ "0.00% - 0.04%",
215
+ "0.05% - 0.08%",
216
+ "0.09% - 0.12%",
217
+ "0.13% - 0.16%",
218
+ "0.17% - 0.20%",
219
+ "More than 0.20%",
220
+ "Don't know"
221
+ ]
222
+ });
223
+
224
+ const causeOfInjury = (scope) => sbsSelect({
225
+ name: scope ? scope + ':' + 'Cause_Of_Injury' : 'Cause_Of_Injury',
226
+ label: 'Cause of Injury:',
227
+ options: [
228
+ "Traumatic Physical Injury (Accident)",
229
+ "Repeated Trauma Injury",
230
+ "Mental Injury",
231
+ "Occupational Disease",
232
+ "Not Sure"
233
+ ]
234
+ });
235
+
236
+ const childHome = (scope) => sbsSelect({
237
+ name: scope ? scope + ':' + 'Child_Home' : 'Child_Home',
238
+ label: 'With Whom Do the Children Currently Live?',
239
+ options: [
240
+ 'Mother',
241
+ 'Father',
242
+ 'Grandparents',
243
+ 'Other'
244
+ ]
245
+ });
246
+
247
+ const childPrimaryCaregiver = (scope) => sbsSelect({
248
+ name: scope ? scope + ':' + 'Child_Primary_Caregiver' : 'Child_Primary_Caregiver',
249
+ label: 'Who is the Primary Caregiver?',
250
+ options: [
251
+ 'Mother',
252
+ 'Father',
253
+ 'Other'
254
+ ]
255
+ });
256
+
257
+ const childRelationship = (scope) => sbsSelect({
258
+ name: scope ? scope + ':' + 'Child_Relationship' : 'Child_Relationship',
259
+ label: 'Your Relationship to Child(ren):',
260
+ options: [
261
+ 'Father',
262
+ 'Mother',
263
+ 'Grandparent',
264
+ 'Aunt/Uncle',
265
+ 'Other'
266
+ ]
267
+ });
268
+
269
+ const claimStatus = (scope) => sbsSelect({
270
+ name: scope ? scope + ':' + 'Claim_Status' : 'Claim_Status',
271
+ label: "Status of Claim:",
272
+ options: [
273
+ "No action taken yet",
274
+ "Demand for compensation made",
275
+ "Lawsuit filed",
276
+ "Other"
277
+ ]
278
+ });
279
+
280
+ const comments = (updates, scope) => textArea(
281
+ merge({
282
+ name: scope ? scope + ':' + 'Comments' : 'Comments',
283
+ label: 'Please briefly describe your situation in a few words:',
284
+ placeholder: 'For Example: "I would like help with child support payments" or "I need help with visitation rights"'
285
+ }, updates)
286
+ );
287
+
288
+ const degreeOfInterest = (scope, help) => sbsSelect({
289
+ name: scope ? scope + ':' + 'Degree_Of_Interest' : 'Degree_Of_Interest',
290
+ id: scope ? scope + ':' + 'Degree_Of_Interest' : 'Degree_Of_Interest',
291
+ label: 'How Likely Are You to Pay if Your Issue Could be Resolved?',
292
+ help: help,
293
+ options: [
294
+ 'Definitely',
295
+ 'Probably',
296
+ 'Maybe',
297
+ "Absolutely Can't Afford"
298
+ ]
299
+ });
300
+
301
+ const degreeOfInterestHelp = (scope) => degreeOfInterest(scope, 'No payment necessary to speak with lawyers.');
302
+
303
+ const disabilityConditionStopWork = (scope) => sbsYesNoRadio({
304
+ name: scope ? scope + ':' + 'Disability_Condition_Stop_Work' : 'Disability_Condition_Stop_Work',
305
+ label: 'Do You Expect To Be Out Of Work For At Least a Year Due To Your Health?'
306
+ });
307
+
308
+ const disabilityWorkHistory = (scope) => sbsYesNoRadio({
309
+ name: scope ? scope + ':' + 'Disability_Work_History' : 'Disability_Work_History',
310
+ label: 'Have You Had a Full-Time Job Within the Past 5 Years?'
311
+ });
312
+
313
+ const doctorTreatment = (scope) => sbsYesNoRadio({
314
+ name: scope ? scope + ':' + 'Doctor_Treatment' : 'Doctor_Treatment',
315
+ label: 'Have You Recently Been Treated by a Doctor, Hospital or Clinic?',
316
+ });
317
+
318
+ const email = () => sbsText({
319
+ $formkit: 'email',
320
+ name: '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
+ const employerType = () => sbsSelect({
333
+ label: 'The Employer Is a:',
334
+ name: 'Employer_Type',
335
+ options: [
336
+ "Sole proprietorship (mom and pop)",
337
+ "Partnership",
338
+ "Franchise",
339
+ "Privately held company",
340
+ "Public corporation",
341
+ "Government Agency",
342
+ "Don't know"
343
+ ]
344
+ });
345
+
346
+ const employeeAtCompany = (scope) => sbsYesNoRadio({
347
+ name: scope ? scope + ':' + 'Employee_At_Company' : 'Employee_At_Company',
348
+ label: 'Do you/they still work at the company?'
349
+ });
350
+
351
+ const employmentAndWorkplaceTOLPDisplay = (updates) => col2Radio(merge({
352
+ name: 'Type_Of_Legal_Problem_Display',
353
+ if: '$get(Type_Of_Legal_Problem).value == "Employment and Workplace"',
354
+ label: 'Select The Workplace Issue:',
355
+ options: [
356
+ 'Workplace Harassment',
357
+ 'Workplace Discrimination',
358
+ 'Wrongful Termination',
359
+ 'Payment Disputes',
360
+ 'Workers Compensation',
361
+ 'Personal Injury',
362
+ 'Unemployment',
363
+ 'Other Workplace Issues'
364
+ ]
365
+ }, updates));
366
+
367
+ const estateLegalServicesNeeded = (scope) => sbsSelect({
368
+ name: scope ? scope + ':' + 'Estate_Legal_Services_Needed' : 'Estate_Legal_Services_Needed',
369
+ label: "Legal Services Needed for Your Estate:",
370
+ options: [
371
+ "Charitable Giving",
372
+ "Contested Wills",
373
+ "Drafting Wills or Trust",
374
+ "Estate Administration",
375
+ "Asset Protection",
376
+ "Other"
377
+ ]
378
+ });
379
+
380
+ const firstName = () => sbsText({
381
+ $formkit: 'text',
382
+ label: 'First Name:',
383
+ placeholder: 'First',
384
+ name: 'First_Name',
385
+ autocomplete: "given-name",
386
+ validationMessages: {
387
+ required: 'First Name is required'
388
+ }
389
+ });
390
+
391
+ const haveAttorney = (scope) => sbsYesNoRadio({
392
+ name: scope ? scope + ':' + 'Have_Attorney' : 'Have_Attorney',
393
+ label: 'Already Working with An Attorney?'
394
+ });
395
+
396
+ const haveChildren = (scope) => sbsYesNoRadio({
397
+ name: scope ? scope + ':' + 'Have_Children' : 'Have_Children',
398
+ label: 'Do You Have Children?'
399
+ });
400
+
401
+ const incidentDate = (scope) => sbsDate({
402
+ name: scope ? scope + ':' + 'Incident_Date' : 'Incident_Date',
403
+ label: 'Date of Incident:',
404
+ });
405
+
406
+ const lastName = () => sbsText({
407
+ $formkit: 'text',
408
+ label: 'Last Name:',
409
+ placeholder: 'Last',
410
+ name: 'Last_Name',
411
+ autocomplete: "family-name",
412
+ validationMessages: {
413
+ required: 'Last Name is required'
414
+ }
415
+ });
416
+
417
+ const lawyerPaymentMethod = (scope) => sbsSelect({
418
+ name: scope ? scope + ':' + 'Lawyer_Payment_Method' : 'Lawyer_Payment_Method',
419
+ label: 'How Will You Pay for Legal Fees if You Hire a Lawyer?',
420
+ help: 'No payment necessary to speak with lawyers.',
421
+ options: [
422
+ 'Cash',
423
+ 'Check',
424
+ 'Credit Card',
425
+ 'Friend',
426
+ 'Family',
427
+ 'Other'
428
+ ]
429
+ });
430
+
431
+ const legalCrossSells$1 = () => col2Checkbox({
432
+ id: 'Legal_CrossSells',
433
+ name: 'Legal_CrossSells',
434
+ help: 'Just hit "Next" if none apply',
435
+ helpClass: 't-text-center !t-text-sm',
436
+ validation: null,
437
+ options: {
438
+ if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Auto and Car Accidents"',
439
+ then: {
440
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
441
+ 'Wills and Trusts': 'Need a Will or Trust',
442
+ 'Workers Compensation': 'Workplace Injury',
443
+ 'Power of Attorney': 'Update Power of Attorney',
444
+ 'Divorce and Separation': 'Need a Divorce or Separation',
445
+ 'Child Custody': 'Need help with Child Custody',
446
+ },
447
+ else: {
448
+ if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Personal Injury" || $getVal($get(form), "Type_Of_Legal_Problem") === "Workers Compensation"',
449
+ then: {
450
+ 'DUI and DWI': 'Involved in a DUI/DWI',
451
+ 'Wills and Trusts': 'Need a Will or Trust',
452
+ 'Power of Attorney': 'Update Power of Attorney',
453
+ 'Divorce and Separation': 'Need a Divorce or Separation',
454
+ 'Child Custody': 'Need help with Child Custody',
455
+ // TODO add one more?
456
+ },
457
+ else: {
458
+ if: '$getVal($get(form), "Type_Of_Legal_Problem") === "DUI and DWI"',
459
+ then: {
460
+ 'Personal Injury': 'Personal or Workplace Injury',
461
+ 'Wills and Trusts': 'Need a Will or Trust',
462
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
463
+ 'Power of Attorney': 'Update Power of Attorney',
464
+ 'Divorce and Separation': 'Need a Divorce or Separation',
465
+ 'Child Custody': 'Need help with Child Custody',
466
+ },
467
+ else: {
468
+ 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"',
469
+ then: {
470
+ 'Auto and Car Accidents': 'Injured in a Car Accident',
471
+ 'Personal Injury': 'Personal or Workplace Injury',
472
+ 'DUI and DWI': 'Involved in a DUI/DWI',
473
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
474
+ 'Divorce and Separation': 'Need a Divorce or Separation',
475
+ 'Child Custody': 'Need help with Child Custody',
476
+ },
477
+ else: {
478
+ if: '$getVal($get(form), "Type_Of_Legal_Problem") === "Long Term Disability" || $getVal($get(form), "Type_Of_Legal_Problem") === "Social Security Disability and Insurance"',
479
+ then: {
480
+ 'Auto and Car Accidents': 'Injured in a Car Accident',
481
+ 'DUI and DWI': 'Involved in a DUI/DWI',
482
+ 'Wills and Trusts': 'Need a Will or Trust',
483
+ 'Power of Attorney': 'Update Power of Attorney',
484
+ 'Divorce and Separation': 'Need a Divorce or Separation',
485
+ 'Child Custody': 'Need help with Child Custody',
486
+ },
487
+ else: {
488
+ 'Auto and Car Accidents': 'Injured in a Car Accident',
489
+ 'Personal Injury': 'Personal or Workplace Injury',
490
+ 'DUI and DWI': 'Involved in a DUI/DWI',
491
+ 'Wills and Trusts': 'Need a Will or Trust',
492
+ 'Power of Attorney': 'Update Power of Attorney',
493
+ 'Social Security Disability and Insurance': 'Interest in Disability Benefits',
494
+ }
495
+ }
496
+ }
497
+ }
409
498
  }
410
499
  }
411
- };
500
+ });
412
501
 
413
- const TOLPCommentsPlaceholders = {
414
- 'Adoption': 'Example: "I need help with adoption forms"',
415
- 'Asbestos and Mesothelioma': 'Example: "I was exposed to asbestos at work and would like to file a claim"',
416
- 'Auto and Car Accidents': 'Example: "A truck crashed into my car on the highway" or "I\'ve been involved in a hit and run accident"',
417
- 'Bankruptcy': 'Example: "I need help filing for bankruptcy"',
418
- 'Birth Certificate and Name Change': 'Example: "Just married and would like to change my last name"',
419
- 'Business Lawyers': 'Example: "I need help incorporating a business" or "I would like a legal contract reviewed"',
420
- 'Child Custody and Support': 'Example: "Need help getting custody" or "Issues with child support payments"',
421
- 'Child Custody': 'Example: "Need help getting custody"',
422
- 'Child Support': 'Example: "Issues with child support payments"',
423
- 'Civil Rights and Discrimination': 'Example: "Police brutality" or "Coworker keeps harassing me"',
424
- 'Civil Lawsuit': 'Example: "A contractor took my money and never completed the job" or "I am being sued by a neighbor"',
425
- 'File a Lawsuit': 'Example: "A contractor took my money and never completed the job"',
426
- 'Defend a Lawsuit': 'Example: "I am being sued by a neighbor"',
427
- 'Consumer Lawyers': 'Example: "Someone committed fraud against me" or "A contractor took my money and never completed the job"',
428
- 'Copyrights and Trademarks': 'Example: "I would like to register a trademark or copyright a name"',
429
- 'Criminal and Felony': 'Example: "I was arrested for DUI and need legal defense" or "I am being charged with assault"',
430
- 'Debt and Collections': 'Example: "I would like to consolidate my debt" or "A collection agency is harassing me"',
431
- 'Divorce and Separation': 'Example: "I would like to file for an uncontested divorce"',
432
- 'DUI and DWI': 'Example: "I was arrested for DUI and need legal defense"',
433
- 'Elder Law': 'Example: "I would like help with Estate Planning" or "I need help with a guardianship"',
434
- 'Employment and Workplace': 'Example: "I was injured while on the job" or "My company is discriminating against me"',
435
- 'Expungement': 'Example: "I would like to file for an expungement and clear my record"',
436
- 'Family Issues': 'Example: "I need help with guardianship" or "I need a simple will created"',
437
- 'Foreclosure': 'Example: "I need help to avoid foreclosure on my house"',
438
- 'Guardianship': 'Example: "I need help with guardianship documents"',
439
- 'Harassment and Discrimination': 'Example: "I am being discriminated at work" or "My neighbor is harassing me"',
440
- 'Sexual Harassment': 'Example: "I am being sexually harassed by a coworker"',
441
- 'Workplace Harassment': 'Example: "My coworker is being aggressive towards me"',
442
- 'Non-Workplace Harassment': 'Example: "My neighbor is harassing me"',
443
- 'Workplace Discrimination': 'Example: "I am being discriminated at work based on my age"',
444
- 'Non-Workplace Discrimination': 'Example: "I am being discriminated against by a local official"',
445
- 'Identity Theft': 'Example: "Someone stole my identity and I need help fixing the issue"',
446
- 'Immigration and Visas': 'Example: "I need help filing for a visa" or "Help with a green card"',
447
- 'Insurance': 'Example: "I need help filing an insurance claim for damage to my house"',
448
- 'Landlord and Tenant': 'Example: "I need help to fight an eviction" or "I would like a lawyer to review a rental contract"',
449
- 'Lemon Law': 'Example: "I purchased a new vehicle that broke down already and seller will not assist"',
450
- 'Long Term Disability': 'Example: "I was injured on the job and would like to file for benefits" or "I need help filing for disability benefits"',
451
- 'Medical Malpractice': 'Example: "A doctor performed surgery on the wrong limb and I would like to file a lawsuit"',
452
- 'Patents and Intellectual Property': 'Example: "I would like to file for a patent" or "I need to copyright a name"',
453
- 'Personal Injury': 'Example: "I was bit by the neighbor\'s dog" or "I fell in the icy grocery store parking lot"',
454
- 'Power of Attorney': 'Example: "I need help with a limited or general power of attorney"',
455
- 'Probate and Estates': 'Example: "I need help with planning for my estate" or "A family member passed without a will in place"',
456
- 'Product Liability': 'Example: "My car battery caught on fire" or "I purchased a faulty product"',
457
- 'Property Damage': 'Example: "The neighbor\'s tree fell on my fence" or "My car was hit in the parking lot"',
458
- 'Real Estate': 'Example: "I need help with a quitclaim deed" or "I need a lawyer to review a purchase and sales agreement"',
459
- 'Social Security Disability and Insurance': 'Example: "I would like help filing for disability benefits" or "I\'ve been denied for SSDI and would like to appeal"',
460
- 'Tax and IRS': 'Example: "I need help fighting an IRS tax claim" or "I need audit defense"',
461
- 'Traffic and Tickets': 'Example: "I need help reinstating a supsended license" or "I would like to fight a traffic ticket"',
462
- 'Unemployment': 'Example: "I need help filing for unemployment benefits"',
463
- 'Victim of a Crime': 'Example: "I was assaulted in the store" or "I am being discriminated against at work"',
464
- 'Wills and Trusts': 'Example: "I need a simple will created" or "I would like guidance on creating a trust fund"',
465
- 'Workers Compensation': 'Example: "I was injured at work and would like to file for workers compensation benefits"',
466
- 'Wrongful Death': 'Example: "A family member was killed on the job and we need legal representation"',
467
- 'Wrongful Termination': 'Example: "I was fired by my employer without cause"',
468
- 'Not Sure or Other': 'Example: "I was involved in a car accident" or "I need help setting up power of attorney"'
469
- };
502
+ const maritalStatus = (scope) => sbsSelect({
503
+ name: scope ? scope + ':' + 'Marital_Status' : 'Marital_Status',
504
+ label: 'Marital Status:',
505
+ options: [
506
+ 'Unmarried, Living Together',
507
+ 'Unmarried, Do Not Live Together',
508
+ 'Married, Living Together',
509
+ 'Separated',
510
+ 'Divorced',
511
+ 'Other'
512
+ ]
513
+ });
470
514
 
471
- const TOLPFinalHeadlines = {
472
- // 'Adoption': '',
473
- };
474
515
 
475
- const TOLPFinalSubHeadlines = {
476
- 'Adoption': 'You may benefit from speaking with an adoption professional. Please verify your contact information.',
477
- // 'Asbestos and Mesothelioma': '',
478
- 'Auto and Car Accidents': 'You may benefit from speaking with an accident professional. Please verify your contact information.',
479
- 'Bankruptcy': 'You may benefit from speaking with a bankruptcy professional. Please verify your contact information.',
480
- // 'Birth Certificate and Name Change': '',
481
- // 'Business Lawyers': '',
482
- // 'Child Custody and Support': '',
483
- // 'Civil Rights and Discrimination': '',
484
- // 'Civil Lawsuit': '',
485
- // 'Consumer Lawyers': '',
486
- 'Copyrights and Trademarks': 'You may benefit from speaking with a copyright and trademark professional. Please verify your contact information.',
487
- // 'Criminal and Felony': '',
488
- // 'Debt and Collections': '',
489
- 'Divorce and Separation': 'You may benefit from speaking with a divorce professional. Please verify your contact information.',
490
- 'DUI and DWI': 'You may benefit from speaking with a DUI professional. Please verify your contact information.',
491
- 'Elder Law': 'You may benefit from speaking with an elder law professional. Please verify your contact information.',
492
- // 'Employment and Workplace': '',
493
- // 'Expungement': '',
494
- // 'Family Issues': '',
495
- 'Foreclosure': 'You may benefit from speaking with a foreclosure professional. Please verify your contact information.',
496
- 'Guardianship': 'You may benefit from speaking with a guardianship professional. Please verify your contact information.',
497
- // 'Harassment and Discrimination': '',
498
- // 'Identity Theft': '',
499
- 'Immigration and Visas': 'You may benefit from speaking with a immigration professional. Please verify your contact information.',
500
- // 'Insurance': '',
501
- 'Landlord and Tenant': 'You may benefit from speaking with a landlord and tenant legal professional. Please verify your contact information.',
502
- // 'Lemon Law': '',
503
- 'Long Term Disability': 'You may benefit from speaking with a disability legal professional. Please verify your contact information.',
504
- 'Medical Malpractice': 'You may benefit from speaking with a malpractice professional. Please verify your contact information.',
505
- 'Patents and Intellectual Property': 'You may benefit from speaking with a patent professional. Please verify your contact information.',
506
- 'Personal Injury': 'You may benefit from speaking with a personal injury professional. Please verify your contact information.',
507
- // 'Power of Attorney': '',
508
- 'Probate and Estates': 'You may benefit from speaking with a probate and estate professional. Please verify your contact information.',
509
- // 'Product Liability': '',
510
- // 'Property Damage': '',
511
- 'Real Estate': 'You may benefit from speaking with a real estate professional. Please verify your contact information.',
512
- 'Social Security Disability and Insurance': 'You may benefit from speaking with an SSDI professional. Please verify your contact information.',
513
- 'Tax and IRS': 'You may benefit from speaking with a tax professional. Please verify your contact information.',
514
- // 'Traffic and Tickets': '',
515
- 'Unemployment': 'You may benefit from speaking with an unemployment professional. Please verify your contact information.',
516
- // 'Victim of a Crime': '',
517
- // 'Wills and Trusts': '',
518
- 'Workers Compensation': 'You may benefit from speaking with a workers compensation professional. Please verify your contact information.',
519
- // 'Wrongful Death': '',
520
- // 'Wrongful Termination': '',
521
- // 'Not Sure or Other': ''
522
- // 'Sexual Harassment': '',
523
- // 'Workplace Harassment': '',
524
- // 'Non-Workplace Harassment': '',
525
- // 'Workplace Discrimination': '',
526
- // 'Non-Workplace Discrimination': '',
527
- };
516
+ const numEmployeesOfBusiness = () => sbsSelect({
517
+ label: 'Total Employees of Business? (estimated)',
518
+ name: 'Num_Employees_Of_Business',
519
+ options: [
520
+ "1-5",
521
+ "6-20",
522
+ "21-50",
523
+ "51-100",
524
+ "101-500",
525
+ "501-1,000",
526
+ "More than 1,000"
527
+ ]
528
+ });
529
+
530
+ const pendingCharges = (scope) => sbsYesNoRadio({
531
+ name: scope ? scope + ':' + 'Pending_Charges' : 'Pending_Charges',
532
+ label: 'Do you currently have any pending charges?'
533
+ });
534
+
535
+ const phone = () => sbsText({
536
+ $formkit: 'tel',
537
+ name: 'Primary_Phone',
538
+ label: 'Phone Number:',
539
+ placeholder: '###-###-####',
540
+ maxlength: 12,
541
+ help: '10-digit phone number, hyphens optional',
542
+ autocomplete: 'tel-national',
543
+ 'data-tf-sensitive': 'false',
544
+ validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
545
+ validationMessages: {
546
+ required: 'Field is required',
547
+ matches: 'Invalid Phone Format, use ###-###-####',
548
+ valid_phone: 'Invalid Phone Number'
549
+ },
550
+ helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
551
+ });
528
552
 
529
- // ------ Common Base Settings
553
+ const primaryInjury = (scope) => sbs2ColRadio({
554
+ name: scope ? scope + ':' + 'Primary_Injury' : 'Primary_Injury',
555
+ label: 'Primary Injury:',
556
+ options: [
557
+ "Anxiety",
558
+ "Back or Neck Pain",
559
+ "Broken Bones",
560
+ "Cuts and Bruises",
561
+ "Headaches",
562
+ "Memory Loss",
563
+ "Loss of Limb",
564
+ "Other (describe on next page)"
565
+ ]
566
+ });
530
567
 
531
- const checkbox = (updates) => {
532
- if (updates.name && !updates.id) {
533
- updates.id = updates.name;
534
- }
535
- return merge({
536
- $formkit: 'checkbox',
537
- validation: 'required',
538
- validationMessages: {
539
- required: 'Field is required'
540
- }
541
- }, updates)
542
- };
568
+ const priorAlcoholOffenses = (scope) => sbsYesNoRadio({
569
+ name: scope ? scope + ':' + 'Prior_Alcohol_Offenses' : 'Prior_Alcohol_Offenses',
570
+ label: 'Any Prior Alcohol Related Offenses?'
571
+ });
543
572
 
544
- const sbsCheckbox = (updates) => {
545
- updates.legendClass = 'legend-left required';
546
- updates.fieldsetClass = '$reset side-by-side';
547
- updates.optionsClass = 't-pl-1';
548
- updates.innerClass = 't-flex t-items-center';
549
- updates.wrapperClass = 't-mb-3';
550
- return checkbox(updates)
551
- };
573
+ const policeReportFiled = (scope) => sbsYesNoRadio({
574
+ name: scope ? scope + ':' + 'Police_Report_Filed' : 'Police_Report_Filed',
575
+ label: 'Was a Police Report Filed?'
576
+ });
552
577
 
553
- const radio = (updates) => {
554
- if (updates.name && !updates.id) {
555
- updates.id = updates.name;
556
- }
557
- return merge({
558
- $formkit: 'radio',
559
- validation: 'required',
560
- validationMessages: {
561
- required: 'Field is required'
562
- },
563
- optionsClass: 't-pt-3 t-pl-1',
564
- legendClass: 'required'
565
- }, updates)
566
- };
578
+ const roleInMatterProbate = (scope) => sbsSelect({
579
+ name: scope ? scope + ':' + 'Role_In_Matter_Probate' : 'Role_In_Matter_Probate',
580
+ label: "What Is Your Role in this Matter?",
581
+ options: [
582
+ "Preparing My Will",
583
+ "Executor",
584
+ "Heir",
585
+ "Other"
586
+ ]
587
+ });
567
588
 
568
- const col2Radio = (updates) => {
569
- updates.legendClass = 'required';
570
- updates.fieldsetClass = '$reset';
571
- updates.optionsClass = 't-pl-2 t-pt-3 t-grid t-grid-cols-1 md:t-grid-cols-2';
572
- updates.innerClass = 't-items-start';
573
- updates.wrapperClass = '$reset t-flex t-cursor-pointer t-mb-3';
574
- return radio(updates)
575
- };
589
+ const socialSecurityDisabilityReceivingBenefits = (scope) => sbsYesNoRadio({
590
+ name: scope ? scope + ':' + 'Social_Security_Disability_Receiving_Benefits' : 'Social_Security_Disability_Receiving_Benefits',
591
+ label: 'Are You Currently Receiving Social Security Disability Benefits?'
592
+ });
576
593
 
577
- const sbs2ColRadio = (updates) => {
578
- updates.legendClass = 'legend-left-flex md:t-max-w-[40%] required';
579
- updates.fieldsetClass = '$reset side-by-side-flex';
580
- updates.optionsClass = 'md:t-ml-4 md:t-mt-2 t-grid t-grid-cols-1 md:t-grid-cols-2-125';
581
- updates.innerClass = 't-flex t-items-start';
582
- updates.wrapperClass = '$reset t-flex t-cursor-pointer t-mb-3';
583
- return radio(updates)
584
- };
594
+ const TCPAConsent = () => ({
595
+ $formkit: 'checkbox',
596
+ label: '$meta.tcpaLanguage',
597
+ name: 'TCPA_Opt_In',
598
+ 'data-tf-sensitive': 'false',
599
+ validation: 'required|accepted',
600
+ validationMessages: {
601
+ required: 'Consent is required',
602
+ accepted: 'Consent is required'
603
+ },
604
+ classes: {
605
+ label: "t-text-xs t-text-slate-500 t-font-normal"
606
+ }
607
+ });
585
608
 
586
- const sbs2ItemRadio = (updates) => {
587
- updates.legendClass = 'legend-left t-pb-1 required';
588
- updates.fieldsetClass = '$reset side-by-side t-items-center';
589
- updates.optionsClass = 't-mt-1 t-grid t-grid-cols-1 md:t-grid-cols-2-125 t-items-center';
590
- updates.innerClass = 't-flex t-items-center';
591
- updates.optionClass = 't-pr-1';
592
- return radio(updates)
593
- };
609
+ const typeOfAlcoholTest = (scope) => sbsSelect({
610
+ name: scope ? scope + ':' + 'Type_Of_Alcohol_Test' : 'Type_Of_Alcohol_Test',
611
+ label: 'Type of Alcohol Test Performed?',
612
+ options: [
613
+ "No Test",
614
+ "Refused Test",
615
+ "Breath Test",
616
+ "Blood Test",
617
+ "Urine Test",
618
+ "Don't Know"
619
+ ]
620
+ });
594
621
 
595
- const sbsYesNoRadio = (updates) => {
596
- updates.options = ['Yes', 'No'];
597
- return sbs2ItemRadio(updates)
598
- };
622
+ const typeOfAssets = (scope) => col2Checkbox({
623
+ name: scope ? scope + ':' + 'Type_Of_Assets' : 'Type_Of_Assets',
624
+ label: 'Type of Assets:',
625
+ options: [
626
+ "Business Interests",
627
+ "Cash",
628
+ "Life Insurance Policies",
629
+ "Pensions/Retirement",
630
+ "Personal Possessions",
631
+ "Property",
632
+ "Stock/Bonds"
633
+ ]
634
+ });
599
635
 
600
- const select = (updates) => {
601
- if (updates.name && !updates.id) {
602
- updates.id = updates.name;
636
+ const valueOfAssets = (scope) => sbsSelect({
637
+ name: scope ? scope + ':' + 'Value_Of_Assets' : 'Value_Of_Assets',
638
+ label: 'Value of Your Assets?',
639
+ options: [
640
+ "Less than 50K",
641
+ "50K to 100K",
642
+ "100K to 250K",
643
+ "250K to 500K",
644
+ "500K to 1M",
645
+ "More than 1M"
646
+ ]
647
+ });
648
+
649
+ const zipcode = () => sbsText({
650
+ label: 'Zip Code:',
651
+ placeholder: '#####',
652
+ name: 'Zip',
653
+ maxlength: 5,
654
+ inputmode: "numeric",
655
+ autocomplete: 'postal-code',
656
+ validation: 'required|matches:/^[0-9]{5}$/',
657
+ validationMessages: {
658
+ required: 'Zip Code is required',
659
+ matches: 'Invalid Zip Code'
603
660
  }
661
+ });
662
+
663
+
664
+ // ------ Question Groups
665
+
666
+ // NOTE: name must be unique within a form!
667
+ const group = (name, updates) => {
604
668
  return merge({
605
- $formkit: 'select',
606
- placeholder: "Please Select",
607
- validation: 'required',
608
- validationMessages: {
609
- required: 'Field is required'
610
- },
611
- inputClass: 't-bg-white',
612
- labelClass: 'required'
669
+ $cmp: 'FormKit',
670
+ props: {
671
+ type: 'group',
672
+ key: name,
673
+ id: name,
674
+ name: name
675
+ }
613
676
  }, updates)
614
677
  };
615
678
 
616
- const sbsSelect = (updates) => {
617
- updates.labelClass = 'required';
618
- updates.wrapperClass = 'side-by-side t-items-center';
619
- updates.innerClass = 'select-height-content';
620
- updates.helpClass = 't-mt-2.5 md:t-text-right md:t-mt-[-5px]';
621
- return select(updates)
622
- };
679
+ const AutoAndCarAccidentsQuestions = (condition, scope) => group(
680
+ 'AutoAndCarAccidentsQuestions',
681
+ {
682
+ if: (condition || '$get(Type_Of_Legal_Problem).value == "Auto and Car Accidents"'),
683
+ children: [
684
+ haveAttorney(scope),
685
+ incidentDate(scope),
686
+ atFault(scope),
687
+ primaryInjury(scope),
688
+ doctorTreatment(scope),
689
+ policeReportFiled(scope)
690
+ ]
691
+ }
692
+ );
623
693
 
624
- const text = (updates) => {
625
- if (updates.name && !updates.id) {
626
- updates.id = updates.name;
694
+ const ChildCustodyQuestions = (condition, scope) => group(
695
+ 'ChildCustodyQuestions',
696
+ {
697
+ if: (condition || '$get(Type_Of_Legal_Problem).value == "Child Custody"'),
698
+ children: [
699
+ haveAttorney(scope),
700
+ childRelationship(scope),
701
+ childHome(scope),
702
+ childPrimaryCaregiver(scope),
703
+ degreeOfInterest(scope),
704
+ lawyerPaymentMethod(scope)
705
+ ]
627
706
  }
628
- return merge({
629
- $formkit: 'text',
630
- validation: 'required',
631
- validationMessages: {
632
- required: 'Field is required'
633
- },
634
- labelClass: 'required'
635
- }, updates)
636
- };
707
+ );
637
708
 
638
- const sbsText = (updates) => {
639
- updates.wrapperClass = 'side-by-side t-items-center';
640
- return text(updates)
641
- };
709
+ const DivorceQuestions = (condition, scope) => group(
710
+ 'DivorceQuestions',
711
+ {
712
+ if: (condition || '$get(Type_Of_Legal_Problem).value == "Divorce and Separation"'),
713
+ children: [
714
+ haveAttorney(scope),
715
+ maritalStatus(scope),
716
+ haveChildren(scope),
717
+ degreeOfInterest(scope),
718
+ lawyerPaymentMethod(scope)
719
+ ]
720
+ }
721
+ );
642
722
 
643
- const textArea = (updates) => {
644
- if (updates.name && !updates.id) {
645
- updates.id = updates.name;
723
+ const DUIAndDWIQuestions = (condition, scope) => group(
724
+ 'DUIAndDWIQuestions',
725
+ {
726
+ if: (condition || '$get(Type_Of_Legal_Problem).value == "DUI and DWI"'),
727
+ children: [
728
+ haveAttorney(scope),
729
+ incidentDate(scope),
730
+ priorAlcoholOffenses(scope),
731
+ typeOfAlcoholTest(scope),
732
+ bloodContentAlcoholTest(scope),
733
+ pendingCharges(scope),
734
+ degreeOfInterestHelp(scope)
735
+ ]
646
736
  }
647
- return merge({
648
- $formkit: 'textarea',
649
- rows: 5,
650
- maxlength: 500,
651
- validation: 'required',
652
- validationMessages: {
653
- required: 'Field is required'
654
- },
655
- innerClass: 't-max-w-xl',
656
- labelClass: 'required'
657
- }, updates)
658
- };
737
+ );
738
+
739
+ const EmploymentAndWorkplaceQuestions = () => group(
740
+ 'EmploymentAndWorkplaceQuestions',
741
+ {
742
+ if: '$get(Type_Of_Legal_Problem).value == "Employment and Workplace"',
743
+ children: [
744
+ haveAttorney(),
745
+ numEmployeesOfBusiness(),
746
+ employerType(),
747
+ employeeAtCompany(),
748
+ degreeOfInterestHelp()
749
+ ]
750
+ }
751
+ );
752
+
753
+ const WorkplaceHarassmentQuestions = () => group(
754
+ 'WorkplaceHarassmentQuestions',
755
+ {
756
+ if: '$get(Type_Of_Legal_Problem).value == "Workplace Harassment"',
757
+ children: [
758
+ haveAttorney(),
759
+ numEmployeesOfBusiness(),
760
+ employerType(),
761
+ employeeAtCompany(),
762
+ degreeOfInterestHelp()
763
+ ]
764
+ }
765
+ );
766
+
767
+ const WorkplaceDiscriminationQuestions = () => group(
768
+ 'WorkplaceDiscriminationQuestions',
769
+ {
770
+ if: '$get(Type_Of_Legal_Problem).value == "Workplace Discrimination"',
771
+ children: [
772
+ haveAttorney(),
773
+ numEmployeesOfBusiness(),
774
+ employerType(),
775
+ employeeAtCompany(),
776
+ degreeOfInterestHelp()
777
+ ]
778
+ }
779
+ );
659
780
 
660
- const date = (updates) => {
661
- if (updates.name && !updates.id) {
662
- updates.id = updates.name;
781
+ const PersonalInjuryQuestions = (condition, scope) => group(
782
+ 'PersonalInjuryQuestions',
783
+ {
784
+ if: (condition || '$get(Type_Of_Legal_Problem).value == "Personal Injury"'),
785
+ children: [
786
+ haveAttorney(scope),
787
+ incidentDate(scope),
788
+ claimStatus(scope),
789
+ atFault(scope),
790
+ primaryInjury(scope),
791
+ doctorTreatment(scope)
792
+ ]
663
793
  }
664
- return merge({
665
- $formkit: 'DatePicker',
666
- validation: 'required',
667
- validationMessages: {
668
- required: 'Field is required'
669
- },
670
- labelClass: 'required t-block t-mb-3 t-font-semibold t-text-base formkit-invalid:t-text-red-500',
671
- innerClass: 't-border t-border-gray-400 formkit-invalid:t-border-red-500 t-rounded t-mb-1 focus-within:t-border-blue-500'
672
- }, updates)
673
- };
794
+ );
674
795
 
675
- const sbsDate = (updates) => {
676
- updates.wrapperClass = 'side-by-side t-items-center';
677
- return date(updates)
678
- };
796
+ const PowerofAttorneyQuestions = (condition, scope) => group(
797
+ 'PowerofAttorneyQuestions',
798
+ {
799
+ if: (condition || '$get(Type_Of_Legal_Problem).value == "Power of Attorney"'),
800
+ children: [
801
+ haveAttorney(scope),
802
+ degreeOfInterestHelp(scope)
803
+ ]
804
+ }
805
+ );
679
806
 
680
- const atFault = (scope) => sbsYesNoRadio({
681
- name: scope ? scope + ':' + 'At_Fault' : 'At_Fault',
682
- label: 'Were You at Fault?'
683
- });
807
+ const SocialSecurityDisabilityAndInsuranceQuestions = (condition, scope) => group(
808
+ 'SocialSecurityDisabilityAndInsuranceQuestions',
809
+ {
810
+ if: (condition || '$get(Type_Of_Legal_Problem).value == "Social Security Disability and Insurance"'),
811
+ children: [
812
+ haveAttorney(scope),
813
+ applicantAge(scope),
814
+ disabilityConditionStopWork(scope),
815
+ disabilityWorkHistory(scope),
816
+ socialSecurityDisabilityReceivingBenefits(scope),
817
+ doctorTreatment(scope)
818
+ ]
819
+ }
820
+ );
684
821
 
685
- const bankruptcyCrossSell = () => sbsCheckbox({
686
- label: "I'd also like a consult for bankruptcy or debt elimination (optional)",
687
- help: "Note: you will be contacted separately by a bankruptcy/debt expert",
688
- name: 'CrossSell_Bankruptcy',
689
- id: 'CrossSell_Bankruptcy',
690
- if: '$getVal($get(form), "Type_Of_Legal_Problem") != "Bankruptcy" && ($getVal($get(form), "Degree_Of_Interest") == "Absolutely Can\'t Afford" || $getVal($get(form), "Degree_Of_Interest") == "Maybe" || $getVal($get(form), "Degree_Of_Interest") == "Probably")',
691
- validation: null,
692
- helpClass: "!t-text-sm"
693
- });
822
+ const UnemploymentQuestions = () => group(
823
+ 'UnemploymentQuestions',
824
+ {
825
+ if: '$get(Type_Of_Legal_Problem).value == "Unemployment"',
826
+ children: [
827
+ numEmployeesOfBusiness(),
828
+ employerType(),
829
+ degreeOfInterestHelp()
830
+ ]
831
+ }
832
+ );
694
833
 
695
- const causeOfInjury = (scope) => sbsSelect({
696
- name: scope ? scope + ':' + 'Cause_Of_Injury' : 'Cause_Of_Injury',
697
- label: 'Cause of Injury:',
698
- options: [
699
- "Traumatic Physical Injury (Accident)",
700
- "Repeated Trauma Injury",
701
- "Mental Injury",
702
- "Occupational Disease",
703
- "Not Sure"
704
- ]
705
- });
834
+ const WillsAndTrustsQuestions = (condition, scope) => group(
835
+ 'WillsAndTrustsQuestions',
836
+ {
837
+ if: (condition || '$get(Type_Of_Legal_Problem).value == "Wills and Trusts"'),
838
+ children: [
839
+ haveAttorney(scope),
840
+ valueOfAssets(scope),
841
+ typeOfAssets(scope),
842
+ roleInMatterProbate(scope),
843
+ estateLegalServicesNeeded(scope),
844
+ degreeOfInterestHelp(scope)
845
+ ]
846
+ }
847
+ );
706
848
 
707
- const claimStatus = (scope) => sbsSelect({
708
- name: scope ? scope + ':' + 'Claim_Status' : 'Claim_Status',
709
- label: "Status of Claim:",
710
- options: [
711
- "No action taken yet",
712
- "Demand for compensation made",
713
- "Lawsuit filed",
714
- "Other"
715
- ]
716
- });
849
+ const WorkersCompensationQuestions = (condition, scope) => group(
850
+ 'WorkersCompensationQuestions',
851
+ {
852
+ if: (condition || '$get(Type_Of_Legal_Problem).value == "Workers Compensation"'),
853
+ children: [
854
+ haveAttorney(scope),
855
+ incidentDate(scope),
856
+ claimStatus(scope),
857
+ primaryInjury(scope),
858
+ causeOfInjury(scope),
859
+ doctorTreatment(scope)
860
+ ]
861
+ }
862
+ );
717
863
 
718
- const comments = (updates, scope) => textArea(
719
- merge({
720
- name: scope ? scope + ':' + 'Comments' : 'Comments',
721
- label: 'Please briefly describe your situation in a few words:',
722
- placeholder: 'For Example: "I would like help with child support payments" or "I need help with visitation rights"'
723
- }, updates)
864
+ const WrongfulTerminationQuestions = () => group(
865
+ 'WrongfulTerminationQuestions',
866
+ {
867
+ if: '$get(Type_Of_Legal_Problem).value == "Wrongful Termination"',
868
+ children: [
869
+ haveAttorney(),
870
+ numEmployeesOfBusiness(),
871
+ employerType(),
872
+ degreeOfInterestHelp()
873
+ ]
874
+ }
724
875
  );
725
876
 
726
- const degreeOfInterest = (scope, help) => sbsSelect({
727
- name: scope ? scope + ':' + 'Degree_Of_Interest' : 'Degree_Of_Interest',
728
- id: scope ? scope + ':' + 'Degree_Of_Interest' : 'Degree_Of_Interest',
729
- label: 'How Likely Are You to Pay if Your Issue Could be Resolved?',
730
- help: help,
731
- options: [
732
- 'Definitely',
733
- 'Probably',
734
- 'Maybe',
735
- "Absolutely Can't Afford"
736
- ]
737
- });
877
+ const NotSureOrOtherQuestions = () => group(
878
+ 'NotSureOrOtherQuestions',
879
+ {
880
+ if: '$get(Type_Of_Legal_Problem).value == "Not Sure or Other"',
881
+ children: [
882
+ haveAttorney(),
883
+ degreeOfInterestHelp()
884
+ ]
885
+ }
886
+ );
738
887
 
739
- const degreeOfInterestHelp = (scope) => degreeOfInterest(scope, 'No payment necessary to speak with lawyers.');
888
+ const NEXT_ON_ENTER = '$onEnter($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))';
889
+ const NEXT_ON_INPUT = '$onInput($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))';
740
890
 
741
- const doctorTreatment = (scope) => sbsYesNoRadio({
742
- name: scope ? scope + ':' + 'Doctor_Treatment' : 'Doctor_Treatment',
743
- label: 'Have You Recently Been Treated by a Doctor, Hospital or Clinic?',
744
- });
891
+ const isInput = (n) => { return (n.type !== 'group' && n.type !== 'section' && n.type !== 'form' && n.$formkit !== 'hidden' && !n.children) };
745
892
 
746
- const email = () => sbsText({
747
- $formkit: 'email',
748
- name: 'Email',
749
- label: 'Email Address:',
750
- placeholder: 'email@domain.com',
751
- autocomplete: 'email',
752
- 'data-tf-sensitive': 'false',
753
- validation: 'required|email',
754
- validationMessages: {
755
- required: 'Email is required',
756
- email: 'Invalid Email'
893
+ const findLastInput = (n) => {
894
+ if (isInput(n)) {
895
+ return n
757
896
  }
758
- });
897
+ for (var i = n.children.length - 1; i >= 0; i--) {
898
+ if (typeof n.children === 'string') {
899
+ continue
900
+ }
901
+ const child = n.children[i];
902
+ if (isInput(child)) {
903
+ return child
904
+ }
905
+ const res = findLastInput(child);
906
+ if (res) {
907
+ return res
908
+ }
909
+ }
910
+ return null
911
+ };
759
912
 
760
- const employerType = () => sbsSelect({
761
- label: 'The Employer Is a:',
762
- name: 'Employer_Type',
763
- options: [
764
- "Sole proprietorship (mom and pop)",
765
- "Partnership",
766
- "Franchise",
767
- "Privately held company",
768
- "Public corporation",
769
- "Government Agency",
770
- "Don't know"
913
+ const secureIconDefault = {
914
+ $el: 'div',
915
+ if: '$activeStep === $lastStep()',
916
+ attrs: {
917
+ class: 't-flex t-justify-center t-items-center t-text-sm t-text-gray-500'
918
+ },
919
+ children: [
920
+ {
921
+ $el: 'img',
922
+ attrs: {
923
+ loading: 'lazy',
924
+ alt: '',
925
+ style: {
926
+ border: 0
927
+ },
928
+ width: '25',
929
+ height: '25',
930
+ src: 'https://d27hmee62k45vz.cloudfront.net/lock_icon_1.jpeg',
931
+ }
932
+ },
933
+ {
934
+ $el: 'span',
935
+ children: 'Secure & Encrypted',
936
+ attrs: {
937
+ class: 't-pl-2 t-pt-1 t-font-medium'
938
+ }
939
+ }
771
940
  ]
772
- });
941
+ };
773
942
 
774
- const employmentAndWorkplaceTOLPDisplay = (updates) => col2Radio(merge({
775
- name: 'Type_Of_Legal_Problem_Display',
776
- if: '$get(Type_Of_Legal_Problem).value == "Employment and Workplace"',
777
- label: 'Select The Workplace Issue:',
778
- options: [
779
- 'Workplace Harassment',
780
- 'Workplace Discrimination',
781
- 'Wrongful Termination',
782
- 'Payment Disputes',
783
- 'Workers Compensation',
784
- 'Personal Injury',
785
- 'Unemployment',
786
- 'Other Workplace Issues'
787
- ]
788
- }, updates));
943
+ function secureIcon(updates) {
944
+ return merge(
945
+ secureIconDefault,
946
+ updates
947
+ )
948
+ }
949
+
950
+ function questionsStepHeadline(updates) {
951
+ return {
952
+ $el: 'h3',
953
+ children: updates.headline || 'Tell Us About Your Situation',
954
+ attrs: {
955
+ 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'
956
+ }
957
+ }
958
+ }
789
959
 
790
- const firstName = () => sbsText({
791
- $formkit: 'text',
792
- label: 'First Name:',
793
- placeholder: 'First',
794
- name: 'First_Name',
795
- autocomplete: "given-name",
796
- validationMessages: {
797
- required: 'First Name is required'
960
+ function crossSellQuestionsStepHeadline(updates) {
961
+ return {
962
+ $el: 'h3',
963
+ children: updates.headline || 'Tell Us About Your Situation',
964
+ attrs: {
965
+ 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'
966
+ }
798
967
  }
799
- });
968
+ }
800
969
 
801
- const haveAttorney = (scope) => sbsYesNoRadio({
802
- name: scope ? scope + ':' + 'Have_Attorney' : 'Have_Attorney',
803
- label: 'Already Working with An Attorney?'
804
- });
970
+ function crossSellQuestionsStepSubHeadline(updates) {
971
+ return {
972
+ $el: 'h5',
973
+ children: updates.subheadline || 'Tell us about your situation:',
974
+ attrs: {
975
+ class: 't-flex t-justify-center t-text-dark t-text-center !t-text-lg t-font-semibold t-pb-4 t-pt-0 t-px-3'
976
+ }
977
+ }
978
+ }
805
979
 
806
- const incidentDate = (scope) => sbsDate({
807
- name: scope ? scope + ':' + 'Incident_Date' : 'Incident_Date',
808
- label: 'Date of Incident:',
809
- });
980
+ function commentsStepHeadline(updates) {
981
+ return {
982
+ $el: 'h3',
983
+ children: updates.headline || 'Additional Case Details',
984
+ attrs: {
985
+ class: 't-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-blue-500 t-pb-5 t-pt-0 t-px-1' + ' ' + (updates.headlineClass || '')
986
+ }
987
+ }
988
+ }
810
989
 
811
- const lastName = () => sbsText({
812
- $formkit: 'text',
813
- label: 'Last Name:',
814
- placeholder: 'Last',
815
- name: 'Last_Name',
816
- autocomplete: "family-name",
817
- validationMessages: {
818
- required: 'Last Name is required'
990
+ function firstAndLastStepHeadline(updates) {
991
+ return {
992
+ $el: 'h3',
993
+ children: updates.headline || 'Please Provide a Contact Name',
994
+ attrs: {
995
+ 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 || '')
996
+ }
819
997
  }
820
- });
998
+ }
821
999
 
1000
+ function legalCrossSellsStepHeadline(updates) {
1001
+ return {
1002
+ $el: 'h3',
1003
+ children: updates.headline || 'Do any of the following situations apply?',
1004
+ attrs: {
1005
+ 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 || '')
1006
+ }
1007
+ }
1008
+ }
822
1009
 
823
- const numEmployeesOfBusiness = () => sbsSelect({
824
- label: 'Total Employees of Business? (estimated)',
825
- name: 'Num_Employees_Of_Business',
826
- options: [
827
- "1-5",
828
- "6-20",
829
- "21-50",
830
- "51-100",
831
- "101-500",
832
- "501-1,000",
833
- "More than 1,000"
834
- ]
835
- });
1010
+ function contactStepHeadline(updates) {
1011
+ return {
1012
+ $el: 'h3',
1013
+ children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC,
1014
+ attrs: {
1015
+ 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 || '')
1016
+ }
1017
+ }
1018
+ }
836
1019
 
837
- const phone = () => sbsText({
838
- $formkit: 'tel',
839
- name: 'Primary_Phone',
840
- label: 'Phone Number:',
841
- placeholder: '###-###-####',
842
- maxlength: 12,
843
- help: '10-digit phone number, hyphens optional',
844
- autocomplete: 'tel-national',
845
- 'data-tf-sensitive': 'false',
846
- validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
847
- validationMessages: {
848
- required: 'Field is required',
849
- matches: 'Invalid Phone Format, use ###-###-####',
850
- valid_phone: 'Invalid Phone Number'
851
- },
852
- helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
853
- });
1020
+ function contactStepSubHeadline(updates) {
1021
+ return {
1022
+ $el: 'h5',
1023
+ children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC,
1024
+ attrs: {
1025
+ 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 || '')
1026
+ }
1027
+ }
1028
+ }
854
1029
 
855
- const primaryInjury = (scope) => sbs2ColRadio({
856
- name: scope ? scope + ':' + 'Primary_Injury' : 'Primary_Injury',
857
- label: 'Primary Injury:',
858
- options: [
859
- "Anxiety",
860
- "Back or Neck Pain",
861
- "Broken Bones",
862
- "Cuts and Bruises",
863
- "Headaches",
864
- "Memory Loss",
865
- "Loss of Limb",
866
- "Other (describe on next page)"
867
- ]
868
- });
1030
+ const TRUSTED_FORM_JS = `(function() {
1031
+ if (window.xxTrustedFormLoaded) {
1032
+ return
1033
+ }
1034
+ var vid = '';
1035
+ if (typeof window.zar !== 'undefined') {
1036
+ vid = window.zar.getVID();
1037
+ }
1038
+ window.xxTrustedFormLoaded = true;
1039
+ var sandbox = document.location.hostname.indexOf('localhost') > -1 ? 'true' : 'false'
1040
+ var tf = document.createElement('script');
1041
+ tf.type = 'text/javascript'; tf.async = true;
1042
+ tf.src = ("https:" == document.location.protocol ? 'https' : 'http') + "://api.trustedform.com/trustedform.js?field=xxTrustedFormCertUrl&identifier=" + vid + "&ping_field=xxTrustedFormPingUrl&provideReferrer=false&invert_field_sensitivity=true&sandbox=" + sandbox + "&l=" + new Date().getTime() + Math.random();
1043
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(tf, s);
1044
+ })();`;
869
1045
 
870
- const TCPAConsent = () => ({
871
- $formkit: 'checkbox',
872
- label: '$meta.tcpaLanguage',
873
- name: 'TCPA_Opt_In',
874
- 'data-tf-sensitive': 'false',
875
- validation: 'required|accepted',
876
- validationMessages: {
877
- required: 'Consent is required',
878
- accepted: 'Consent is required'
879
- },
880
- classes: {
881
- label: "t-text-xs t-text-slate-500 t-font-normal"
1046
+ function trustedFormScript() {
1047
+ return {
1048
+ $el: 'script',
1049
+ if: '$activeStep === $lastStep()',
1050
+ children: TRUSTED_FORM_JS
882
1051
  }
883
- });
1052
+ }
884
1053
 
885
- const zipcode = () => sbsText({
886
- label: 'Zip Code:',
887
- placeholder: '#####',
888
- name: 'Zip',
889
- maxlength: 5,
890
- inputmode: "numeric",
891
- autocomplete: 'postal-code',
892
- validation: 'required|matches:/^[0-9]{5}$/',
893
- validationMessages: {
894
- required: 'Zip Code is required',
895
- matches: 'Invalid Zip Code'
1054
+ const stepDefaults = (step, stepKey) => ({
1055
+ $el: 'section',
1056
+ if: '$stepEnabled("' + step + '")',
1057
+ attrs: {
1058
+ hidden: '$activeStep !== "' + step + '"',
1059
+ key: stepKey ? stepKey : step
896
1060
  }
897
1061
  });
898
1062
 
1063
+ function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = undefined, nextStepMap = undefined, autoFocus = undefined) {
1064
+ if (typeof nextOnEnter === 'undefined') {
1065
+ nextOnEnter = true;
1066
+ }
1067
+ if (inputs && inputs.length && (nextOnEnter || nextOnInput)) {
1068
+ const lastInput = findLastInput(inputs[inputs.length - 1]);
1069
+ if (lastInput && nextOnEnter === true) {
1070
+ lastInput.onKeypress = NEXT_ON_ENTER;
1071
+ }
1072
+ if (lastInput && nextOnInput === true) {
1073
+ lastInput.onInput = NEXT_ON_INPUT;
1074
+ }
1075
+ }
1076
+
1077
+ return merge(
1078
+ stepDefaults(name, stepKey),
1079
+ {
1080
+ children: [
1081
+ {
1082
+ $formkit: 'group',
1083
+ id: name,
1084
+ name: name,
1085
+ nextStepMap: nextStepMap,
1086
+ autoFocus: autoFocus,
1087
+ children: inputs
1088
+ }
1089
+ ]
1090
+ }
1091
+ )
1092
+ }
1093
+
1094
+ function commentsWithBankruptcy(updates = {}) {
1095
+ return step(
1096
+ 'commentsWithBankruptcy',
1097
+ [
1098
+ commentsStepHeadline(updates),
1099
+ comments({
1100
+ label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL : updates.label,
1101
+ placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1102
+ inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1103
+ }),
1104
+ bankruptcyCrossSell(),
1105
+ {
1106
+ $el: 'div',
1107
+ if: '$get(CrossSell_Bankruptcy).value == true',
1108
+ children: [
1109
+ comments({
1110
+ label: 'Bankruptcy or debt details:',
1111
+ placeholder: 'Please describe your bankrtupcy or debt situation in a few words...',
1112
+ inputClass: '!t-h-16'
1113
+ }, 'CrossSell:Bankruptcy')
1114
+ ],
1115
+ }
1116
+ ],
1117
+ false // nextOnEnter
1118
+ )
1119
+ }
1120
+
1121
+ function contactInfo(updates = {}) {
1122
+ return step(
1123
+ 'contactInfo',
1124
+ [
1125
+ contactStepHeadline(updates),
1126
+ contactStepSubHeadline(updates),
1127
+ trustedFormScript(),
1128
+ email(),
1129
+ phone(),
1130
+ TCPAConsent(),
1131
+ secureIcon()
1132
+ ],
1133
+ false, // nextOnEnter
1134
+ )
1135
+ }
1136
+
1137
+ function firstAndLastV2(updates = {}) {
1138
+ return step(
1139
+ 'firstAndLast',
1140
+ [
1141
+ firstAndLastStepHeadline(updates),
1142
+ firstName(),
1143
+ lastName()
1144
+ ],
1145
+ updates.nextOnEnter
1146
+ )
1147
+ }
1148
+
899
1149
 
900
- // ------ Question Groups
1150
+ function autoAndCarAccidentCrossSellQuestions(updates = {}) {
1151
+ return step(
1152
+ 'autoAndCarAccidentCrossSellQuestions',
1153
+ [
1154
+ crossSellQuestionsStepHeadline({ headline: 'You May Be Entitled To Compensation' }),
1155
+ crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your accident:' }),
1156
+ AutoAndCarAccidentsQuestions("true", 'CrossSell:Auto_and_Car_Accidents'),
1157
+ comments(
1158
+ {
1159
+ label: 'Accident Description:',
1160
+ placeholder: 'Please describe your accident in a few words...',
1161
+ inputClass: '!t-h-16'
1162
+ },
1163
+ 'CrossSell:Auto_and_Car_Accidents'
1164
+ )
1165
+ ],
1166
+ updates.nextOnEnter
1167
+ )
1168
+ }
901
1169
 
902
- // NOTE: name must be unique within a form!
903
- const group = (name, updates) => {
904
- return merge({
905
- $cmp: 'FormKit',
906
- props: {
907
- type: 'group',
908
- key: name,
909
- id: name,
910
- name: name
911
- }
912
- }, updates)
913
- };
1170
+ function childCustodyCrossSellQuestions(updates = {}) {
1171
+ return step(
1172
+ 'childCustodyCrossSellQuestions',
1173
+ [
1174
+ crossSellQuestionsStepHeadline({ headline: 'Child Custody Information' }),
1175
+ ChildCustodyQuestions("true", 'CrossSell:Child_Custody'),
1176
+ comments(
1177
+ {
1178
+ label: 'Description:',
1179
+ placeholder: 'Please describe your situation in a few words...',
1180
+ inputClass: '!t-h-16'
1181
+ },
1182
+ 'CrossSell:Child_Custody'
1183
+ )
1184
+ ],
1185
+ updates.nextOnEnter
1186
+ )
1187
+ }
914
1188
 
915
- const defaultQuestions = () => [
916
- haveAttorney(),
917
- degreeOfInterestHelp()
918
- ];
1189
+ function divorceAndSeparationCrossSellQuestions(updates = {}) {
1190
+ return step(
1191
+ 'divorceAndSeparationCrossSellQuestions',
1192
+ [
1193
+ crossSellQuestionsStepHeadline({ headline: 'Divorce or Separation Information' }),
1194
+ DivorceQuestions("true", 'CrossSell:Divorce_and_Separation'),
1195
+ comments(
1196
+ {
1197
+ label: 'Description:',
1198
+ placeholder: 'Please describe your situation in a few words...',
1199
+ inputClass: '!t-h-16'
1200
+ },
1201
+ 'CrossSell:Divorce_and_Separation'
1202
+ )
1203
+ ],
1204
+ updates.nextOnEnter
1205
+ )
1206
+ }
919
1207
 
920
- const EmploymentAndWorkplaceQuestions = () => group(
921
- 'EmploymentAndWorkplaceQuestions',
922
- {
923
- if: '$get(Type_Of_Legal_Problem).value == "Employment and Workplace"',
924
- children: [
925
- haveAttorney(),
926
- numEmployeesOfBusiness(),
927
- employerType(),
928
- degreeOfInterestHelp()
929
- ]
930
- }
931
- );
1208
+ function duiAndDWICrossSellQuestions(updates = {}) {
1209
+ return step(
1210
+ 'duiAndDWICrossSellQuestions',
1211
+ [
1212
+ crossSellQuestionsStepHeadline({ headline: 'About Your DUI/DWI' }),
1213
+ DUIAndDWIQuestions("true", 'CrossSell:DUI_and_DWI'),
1214
+ comments(
1215
+ {
1216
+ label: 'Incident Description:',
1217
+ placeholder: 'Please describe your incident in a few words...',
1218
+ inputClass: '!t-h-16'
1219
+ },
1220
+ 'CrossSell:DUI_and_DWI'
1221
+ )
1222
+ ],
1223
+ updates.nextOnEnter
1224
+ )
1225
+ }
932
1226
 
933
- const WorkplaceHarassmentQuestions = () => group(
934
- 'WorkplaceHarassmentQuestions',
935
- {
936
- if: '$get(Type_Of_Legal_Problem).value == "Workplace Harassment"',
937
- children: defaultQuestions()
938
- }
939
- );
1227
+ function ssdiCrossSellQuestions(updates = {}) {
1228
+ return step(
1229
+ 'ssdiCrossSellQuestions',
1230
+ [
1231
+ crossSellQuestionsStepHeadline({ headline: 'You May Be Entitled To Benefits' }),
1232
+ crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your disability:' }),
1233
+ SocialSecurityDisabilityAndInsuranceQuestions("true", 'CrossSell:Social_Security_Disability_and_Insurance'),
1234
+ comments(
1235
+ {
1236
+ label: 'Description:',
1237
+ placeholder: 'Please describe your situation in a few words...',
1238
+ inputClass: '!t-h-16'
1239
+ },
1240
+ 'CrossSell:Social_Security_Disability_and_Insurance'
1241
+ )
1242
+ ],
1243
+ updates.nextOnEnter
1244
+ )
1245
+ }
940
1246
 
941
- const WorkplaceDiscriminationQuestions = () => group(
942
- 'WorkplaceDiscriminationQuestions',
943
- {
944
- if: '$get(Type_Of_Legal_Problem).value == "Workplace Discrimination"',
945
- children: defaultQuestions()
946
- }
947
- );
1247
+ function personalInjuryCrossSellQuestions(updates = {}) {
1248
+ return step(
1249
+ 'personalInjuryCrossSellQuestions',
1250
+ [
1251
+ crossSellQuestionsStepHeadline({ headline: 'You May Be Entitled To Compensation' }),
1252
+ crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your injury:' }),
1253
+ PersonalInjuryQuestions("true", 'CrossSell:Personal_Injury'),
1254
+ comments(
1255
+ {
1256
+ label: 'Injury Description:',
1257
+ placeholder: 'Please describe your injury in a few words...',
1258
+ inputClass: '!t-h-16'
1259
+ },
1260
+ 'CrossSell:Personal_Injury'
1261
+ )
1262
+ ],
1263
+ updates.nextOnEnter
1264
+ )
1265
+ }
948
1266
 
949
- const PersonalInjuryQuestions = (condition, scope) => group(
950
- 'PersonalInjuryQuestions',
951
- {
952
- if: (condition || '$get(Type_Of_Legal_Problem).value == "Personal Injury"'),
953
- children: [
954
- haveAttorney(scope),
955
- incidentDate(scope),
956
- claimStatus(scope),
957
- atFault(scope),
958
- primaryInjury(scope),
959
- doctorTreatment(scope)
960
- ]
961
- }
962
- );
1267
+ function powerOfAttorneyCrossSellQuestions(updates = {}) {
1268
+ return step(
1269
+ 'powerOfAttorneyCrossSellQuestions',
1270
+ [
1271
+ crossSellQuestionsStepHeadline({ headline: 'Power of Attorney Information' }),
1272
+ PowerofAttorneyQuestions("true", 'CrossSell:Power_of_Attorney'),
1273
+ comments(
1274
+ {
1275
+ label: 'Description:',
1276
+ placeholder: 'Please describe your situation in a few words...',
1277
+ inputClass: '!t-h-16'
1278
+ },
1279
+ 'CrossSell:Power_of_Attorney'
1280
+ )
1281
+ ],
1282
+ updates.nextOnEnter
1283
+ )
1284
+ }
963
1285
 
964
- const UnemploymentQuestions = () => group(
965
- 'UnemploymentQuestions',
966
- {
967
- if: '$get(Type_Of_Legal_Problem).value == "Unemployment"',
968
- children: [
969
- numEmployeesOfBusiness(),
970
- employerType(),
971
- degreeOfInterestHelp()
972
- ]
973
- }
974
- );
1286
+ function willsAndTrustsCrossSellQuestions(updates = {}) {
1287
+ return step(
1288
+ 'willsAndTrustsCrossSellQuestions',
1289
+ [
1290
+ crossSellQuestionsStepHeadline({ headline: 'Will or Trust Information' }),
1291
+ WillsAndTrustsQuestions("true", 'CrossSell:Wills_and_Trusts'),
1292
+ comments(
1293
+ {
1294
+ label: 'Description:',
1295
+ placeholder: 'Please describe your situation in a few words...',
1296
+ inputClass: '!t-h-16'
1297
+ },
1298
+ 'CrossSell:Wills_and_Trusts'
1299
+ )
1300
+ ],
1301
+ updates.nextOnEnter
1302
+ )
1303
+ }
975
1304
 
976
- const WorkersCompensationQuestions = (condition, scope) => group(
977
- 'WorkersCompensationQuestions',
978
- {
979
- if: (condition || '$get(Type_Of_Legal_Problem).value == "Workers Compensation"'),
980
- children: [
981
- haveAttorney(scope),
982
- incidentDate(scope),
983
- claimStatus(scope),
984
- primaryInjury(scope),
985
- causeOfInjury(scope),
986
- doctorTreatment(scope)
987
- ]
988
- }
989
- );
1305
+ function workersCompensationCrossSellQuestions(updates = {}) {
1306
+ return step(
1307
+ 'workersCompensationCrossSellQuestions',
1308
+ [
1309
+ crossSellQuestionsStepHeadline({ headline: 'You May Be Entitled To Benefits' }),
1310
+ crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your injury:' }),
1311
+ WorkersCompensationQuestions("true", 'CrossSell:Workers_Compensation'),
1312
+ comments(
1313
+ {
1314
+ label: 'Injury Description:',
1315
+ placeholder: 'Please describe your injury in a few words...',
1316
+ inputClass: '!t-h-16'
1317
+ },
1318
+ 'CrossSell:Workers_Compensation'
1319
+ )
1320
+ ],
1321
+ updates.nextOnEnter
1322
+ )
1323
+ }
990
1324
 
991
- const WrongfulTerminationQuestions = () => group(
992
- 'WrongfulTerminationQuestions',
993
- {
994
- if: '$get(Type_Of_Legal_Problem).value == "Wrongful Termination"',
995
- children: [
996
- haveAttorney(),
997
- numEmployeesOfBusiness(),
998
- employerType(),
999
- degreeOfInterestHelp()
1000
- ]
1001
- }
1002
- );
1325
+ function employmentAndWorkplaceTOLPAndZip(updates = {}) {
1326
+ return step(
1327
+ 'employmentAndWorkplaceTOLPAndZip',
1328
+ [
1329
+ {
1330
+ $formkit: 'hidden',
1331
+ name: "Type_Of_Legal_Problem",
1332
+ id: "Type_Of_Legal_Problem",
1333
+ value: "Employment and Workplace"
1334
+ },
1335
+ employmentAndWorkplaceTOLPDisplay({
1336
+ if: 'true'
1337
+ }),
1338
+ zipcode()
1339
+ ],
1340
+ updates.nextOnEnter,
1341
+ updates.nextOnInput,
1342
+ updates.stepKey,
1343
+ updates.nextStepMap
1344
+ )
1345
+ }
1003
1346
 
1004
- const NotSureOrOtherQuestions = () => group(
1005
- 'NotSureOrOtherQuestions',
1006
- {
1007
- if: '$get(Type_Of_Legal_Problem).value == "Not Sure or Other"',
1008
- children: [
1009
- haveAttorney(),
1010
- degreeOfInterestHelp()
1011
- ]
1012
- }
1013
- );
1347
+ function employmentAndWorkplaceTOLPQuestions(updates = {}) {
1348
+ return step(
1349
+ 'TOLPQuestions',
1350
+ [
1351
+ questionsStepHeadline(updates),
1352
+ WorkplaceHarassmentQuestions(),
1353
+ WorkplaceDiscriminationQuestions(),
1354
+ WrongfulTerminationQuestions(),
1355
+ WorkersCompensationQuestions(),
1356
+ PersonalInjuryQuestions(),
1357
+ UnemploymentQuestions(),
1358
+ EmploymentAndWorkplaceQuestions(),
1359
+ NotSureOrOtherQuestions()
1360
+ ],
1361
+ updates.nextOnEnter
1362
+ )
1363
+ }
1014
1364
 
1015
- const NEXT_ON_ENTER = '$onEnter($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))';
1016
- const NEXT_ON_INPUT = '$onInput($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))';
1365
+ function legalCrossSells(updates = {}) {
1366
+ return step(
1367
+ 'legalCrossSells',
1368
+ [
1369
+ legalCrossSellsStepHeadline(updates),
1370
+ legalCrossSells$1(),
1371
+ ],
1372
+ updates.nextOnEnter,
1373
+ false,
1374
+ // Note: we should probably scope this stepKey to this step name
1375
+ '$get(Type_Of_Legal_Problem).value'
1376
+ )
1377
+ }
1017
1378
 
1018
- const isInput = (n) => { return (n.type !== 'group' && n.type !== 'section' && n.type !== 'form' && n.$formkit !== 'hidden' && !n.children) };
1379
+ // ------ Common
1019
1380
 
1020
- const findLastInput = (n) => {
1021
- if (isInput(n)) {
1022
- return n
1023
- }
1024
- for (var i = n.children.length - 1; i >= 0; i--) {
1025
- if (typeof n.children === 'string') {
1026
- continue
1027
- }
1028
- const child = n.children[i];
1029
- if (isInput(child)) {
1030
- return child
1031
- }
1032
- const res = findLastInput(child);
1033
- if (res) {
1034
- return res
1381
+ const formNavigation = () => ({
1382
+ $el: 'div',
1383
+ attrs: {
1384
+ class: 'step-nav'
1385
+ },
1386
+ children: [
1387
+ {
1388
+ $formkit: 'button',
1389
+ name: 'back_button',
1390
+ onClick: '$setPreviousStep($prevStepFunc($get(form)))',
1391
+ children: 'Back',
1392
+ style: {
1393
+ if: '$activeStep === $firstStep()',
1394
+ then: 'visibility: hidden;'
1395
+ }
1396
+ },
1397
+ {
1398
+ $formkit: 'button',
1399
+ name: 'next_button',
1400
+ onClick: '$setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form)))',
1401
+ children: {
1402
+ if: '$activeStep === $firstStep()',
1403
+ then: 'Start',
1404
+ else: 'Next'
1405
+ },
1406
+ outerClass: {
1407
+ if: '$activeStep === $lastStep()',
1408
+ then: 't-hidden',
1409
+ else: ''
1410
+ },
1411
+ style: {
1412
+ if: '$activeStep === $lastStep()',
1413
+ then: 'display: none;'
1414
+ }
1415
+ },
1416
+ {
1417
+ $formkit: 'submit',
1418
+ name: 'submit_button',
1419
+ label: 'Submit',
1420
+ if: '$activeStep === $lastStep()',
1421
+ style: {
1422
+ if: '$activeStep !== $lastStep()',
1423
+ then: 'display: none;'
1424
+ }
1035
1425
  }
1036
- }
1037
- return null
1038
- };
1426
+ ]
1427
+ });
1039
1428
 
1040
- function questionsStepHeadline(updates) {
1041
- return {
1042
- $el: 'h3',
1043
- children: updates.headline || 'Tell Us About Your Situation',
1044
- attrs: {
1045
- 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'
1429
+ const formDetails = () => ({
1430
+ $el: 'pre',
1431
+ if: '$urlParam("fdbg", "") == 1',
1432
+ children: [
1433
+ {
1434
+ $el: 'pre',
1435
+ children: '$stringify( $get(form).value )',
1436
+ attrs: {
1437
+ class: 't-text-xs',
1438
+ style: 'overflow: scroll'
1439
+ }
1440
+ },
1441
+ {
1442
+ $el: 'pre',
1443
+ children: ['activeStep: ', '$activeStep'],
1444
+ attrs: {
1445
+ class: 't-text-xs',
1446
+ style: 'overflow: scroll'
1447
+ }
1448
+ },
1449
+ {
1450
+ $el: 'pre',
1451
+ children: ['stepHistory: ', '$stepHistory'],
1452
+ attrs: {
1453
+ class: 't-text-xs',
1454
+ style: 'overflow: scroll'
1455
+ }
1456
+ },
1457
+ {
1458
+ $el: 'pre',
1459
+ children: ['stepQueue: ', '$stepQueue'],
1460
+ attrs: {
1461
+ class: 't-text-xs',
1462
+ style: 'overflow: scroll'
1463
+ }
1464
+ },
1465
+ {
1466
+ $el: 'pre',
1467
+ children: ['steps: ', '$stepKeys()'],
1468
+ attrs: {
1469
+ class: 't-text-xs',
1470
+ style: 'overflow: scroll'
1471
+ }
1046
1472
  }
1047
- }
1048
- }
1473
+ ]
1474
+ });
1049
1475
 
1050
- function commentsStepHeadline(updates) {
1051
- return {
1052
- $el: 'h3',
1053
- children: updates.headline || 'Additional Case Details',
1054
- attrs: {
1055
- 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 || '')
1056
- }
1057
- }
1058
- }
1476
+ const formPropDefaults = {
1477
+ type: 'form',
1478
+ id: 'form',
1479
+ config: { validationVisibility: 'submit' },
1480
+ onSubmit: '$submit($submitUrl, $prepData, $handleRedirect, "text/plain; charset=UTF-8")',
1481
+ plugins: '$plugins',
1482
+ actions: false,
1483
+ anchorElement: 'form-anchor',
1484
+ useLocalStorage: true,
1485
+ prepop: {
1486
+ fromURL: true
1487
+ },
1488
+ errorCodes: {
1489
+ 403: { message: "An Error Occurred", abort: false },
1490
+ 409: { abort: false },
1491
+ 429: "An Error Occurred",
1492
+ 504: { message: "An Error Occurred", abort: false },
1493
+ },
1494
+ formClass: '!t-max-w-[40rem]'
1495
+ };
1059
1496
 
1060
- function firstAndLastStepHeadline(updates) {
1061
- return {
1062
- $el: 'h3',
1063
- children: updates.headline || 'Please Provide a Contact Name',
1064
- attrs: {
1065
- 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 || '')
1066
- }
1497
+ function formProps(updates) {
1498
+ const props = merge(
1499
+ formPropDefaults,
1500
+ updates
1501
+ );
1502
+ if (props.formId && !props.name) {
1503
+ props.name = props.formId;
1067
1504
  }
1505
+ return props
1068
1506
  }
1069
1507
 
1070
- function contactStepHeadline(updates) {
1071
- return {
1072
- $el: 'h3',
1073
- children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC,
1074
- attrs: {
1075
- 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 || '')
1076
- }
1077
- }
1078
- }
1508
+ const metaDefaults = {
1509
+ tcpaLanguage: TCPA_LANGUAGE
1510
+ };
1079
1511
 
1080
- function contactStepSubHeadline(updates) {
1512
+ function metaProps(updates) {
1513
+ const data = merge(
1514
+ metaDefaults,
1515
+ updates
1516
+ );
1081
1517
  return {
1082
- $el: 'h5',
1083
- children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC,
1084
- attrs: {
1085
- 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 || '')
1086
- }
1518
+ type: 'meta',
1519
+ data
1087
1520
  }
1088
1521
  }
1089
1522
 
1090
- const TRUSTED_FORM_JS = `(function() {
1091
- if (window.xxTrustedFormLoaded) {
1092
- return
1093
- }
1094
- var vid = '';
1095
- if (typeof window.zar !== 'undefined') {
1096
- vid = window.zar.getVID();
1097
- }
1098
- window.xxTrustedFormLoaded = true;
1099
- var sandbox = document.location.hostname.indexOf('localhost') > -1 ? 'true' : 'false'
1100
- var tf = document.createElement('script');
1101
- tf.type = 'text/javascript'; tf.async = true;
1102
- tf.src = ("https:" == document.location.protocol ? 'https' : 'http') + "://api.trustedform.com/trustedform.js?field=xxTrustedFormCertUrl&identifier=" + vid + "&ping_field=xxTrustedFormPingUrl&provideReferrer=false&invert_field_sensitivity=true&sandbox=" + sandbox + "&l=" + new Date().getTime() + Math.random();
1103
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(tf, s);
1104
- })();`;
1105
-
1106
- function trustedFormScript() {
1107
- return {
1108
- $el: 'script',
1109
- if: '$activeStep === $lastStep()',
1110
- children: TRUSTED_FORM_JS
1111
- }
1523
+ function defaultMetaProps() {
1524
+ return metaProps({
1525
+ defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1526
+ commentsPlaceholders: TOLPCommentsPlaceholders,
1527
+ defaultFinalHeadline: DEFAULT_FINAL_HEADLINE,
1528
+ finalHeadlines: TOLPFinalHeadlines,
1529
+ defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE,
1530
+ finalSubHeadlines: TOLPFinalSubHeadlines,
1531
+ })
1112
1532
  }
1113
1533
 
1114
- const stepDefaults = (step, stepKey) => ({
1115
- $el: 'section',
1116
- if: '$stepEnabled("' + step + '")',
1117
- attrs: {
1118
- hidden: '$activeStep !== "' + step + '"',
1119
- key: stepKey ? stepKey : step
1534
+ const dynamicSchemaNode = {
1535
+ $cmp: 'FormKitSchema',
1536
+ if: '$get(Type_Of_Legal_Problem).value',
1537
+ props: {
1538
+ schema: '$meta.dynamicSchema',
1539
+ data: '$buildData($meta)'
1120
1540
  }
1121
- });
1541
+ };
1122
1542
 
1123
- function step(name, inputs, nextOnEnter = true, nextOnInput = false, stepKey = undefined, nextStepMap = undefined, autoFocus = undefined) {
1124
- if (typeof nextOnEnter === 'undefined') {
1125
- nextOnEnter = true;
1126
- }
1127
- if (inputs && inputs.length && (nextOnEnter || nextOnInput)) {
1128
- const lastInput = findLastInput(inputs[inputs.length - 1]);
1129
- if (lastInput && nextOnEnter === true) {
1130
- lastInput.onKeypress = NEXT_ON_ENTER;
1131
- }
1132
- if (lastInput && nextOnInput === true) {
1133
- lastInput.onInput = NEXT_ON_INPUT;
1543
+ const formAnchorDefaults = {
1544
+ $el: 'div',
1545
+ children: [
1546
+ {
1547
+ $el: 'div',
1548
+ attrs: {
1549
+ id: 'form-anchor',
1550
+ class: 't-absolute',
1551
+ style: { top: '-30px', left: 0 }
1552
+ }
1134
1553
  }
1554
+ ],
1555
+ attrs: {
1556
+ class: 't-relative'
1135
1557
  }
1558
+ };
1136
1559
 
1560
+ function formAnchor(updates) {
1137
1561
  return merge(
1138
- stepDefaults(name, stepKey),
1139
- {
1140
- children: [
1141
- {
1142
- $formkit: 'group',
1143
- id: name,
1144
- name: name,
1145
- nextStepMap: nextStepMap,
1146
- autoFocus: autoFocus,
1147
- children: inputs
1148
- }
1149
- ]
1150
- }
1562
+ formAnchorDefaults,
1563
+ updates
1151
1564
  )
1152
1565
  }
1153
1566
 
1154
- function commentsWithBankruptcyV2(updates = {}) {
1155
- return step(
1156
- 'commentsWithBankruptcy',
1157
- [
1158
- commentsStepHeadline(updates),
1159
- comments({
1160
- label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL : updates.label,
1161
- placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1162
- inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-40' : updates.inputClass,
1163
- }),
1164
- bankruptcyCrossSell(),
1165
- {
1166
- $el: 'div',
1167
- if: '$get(CrossSell_Bankruptcy).value == true',
1168
- children: [
1169
- comments({
1170
- label: 'Bankruptcy or debt details:',
1171
- placeholder: 'Please describe your bankrtupcy or debt situation in a few words...',
1172
- inputClass: '!t-h-16'
1173
- }, 'CrossSell:Bankruptcy')
1174
- ],
1175
- }
1176
- ],
1177
- // TODO: UGLY: use named params!
1178
- updates.nextOnEnter,
1179
- false,
1180
- undefined,
1181
- undefined,
1182
- false
1183
- )
1567
+ function headlineDefaults(updates = {}) {
1568
+ return {
1569
+ $el: 'h1',
1570
+ attrs: {
1571
+ class: 't-flex t-justify-center t-text-center !t-text-[2rem] t-font-semibold t-pt-5 t-px-7 md:t-px-3' + ' ' + (updates.headlineClass || '')
1572
+ }
1573
+ }
1184
1574
  }
1185
1575
 
1186
- function contactInfoV2(updates = {}) {
1187
- return step(
1188
- 'contactInfo',
1189
- [
1190
- contactStepHeadline(updates),
1191
- contactStepSubHeadline(updates),
1192
- // Added TF everywhere
1193
- trustedFormScript(),
1194
- email(),
1195
- phone(),
1196
- TCPAConsent(),
1197
- secureIcon()
1198
- ],
1199
- updates.nextOnEnter
1576
+ function headline(updates = {}) {
1577
+ return merge(
1578
+ headlineDefaults(updates),
1579
+ updates
1200
1580
  )
1201
1581
  }
1202
1582
 
1203
- function firstAndLastV2(updates = {}) {
1204
- return step(
1205
- 'firstAndLast',
1206
- [
1207
- firstAndLastStepHeadline(updates),
1208
- firstName(),
1209
- lastName()
1210
- ],
1211
- updates.nextOnEnter
1212
- )
1583
+ function defaultHeadline() {
1584
+ return headline({
1585
+ children: '$urlParam("hl", "Start Here For a Free Consultation")',
1586
+ if: '$activeStep === $firstStep()'
1587
+ })
1213
1588
  }
1214
1589
 
1215
- function employmentAndWorkplaceTOLPAndZip(updates = {}) {
1216
- return step(
1217
- 'employmentAndWorkplaceTOLPAndZip',
1218
- [
1219
- {
1220
- $formkit: 'hidden',
1221
- name: "Type_Of_Legal_Problem",
1222
- id: "Type_Of_Legal_Problem",
1223
- value: "Employment and Workplace"
1224
- },
1225
- employmentAndWorkplaceTOLPDisplay({
1226
- if: 'true'
1227
- }),
1228
- zipcode()
1229
- ],
1230
- updates.nextOnEnter
1590
+ function subHeadlineDefaults(updates = {}) {
1591
+ return {
1592
+ $el: 'h3',
1593
+ attrs: {
1594
+ class: 't-flex t-justify-center t-text-center !t-text-[1.2rem] t-font-medium t-text-blue-500 t-px-10' + ' ' + (updates.subheadlineClass || '')
1595
+ }
1596
+ }
1597
+ }
1598
+
1599
+ function subHeadline(updates = {}) {
1600
+ return merge(
1601
+ subHeadlineDefaults(updates),
1602
+ updates
1231
1603
  )
1232
1604
  }
1233
1605
 
1234
- function employmentAndWorkplaceTOLPQuestions(updates = {}) {
1235
- return step(
1236
- 'TOLPQuestions',
1237
- [
1238
- questionsStepHeadline(updates),
1239
- WorkplaceHarassmentQuestions(),
1240
- WorkplaceDiscriminationQuestions(),
1241
- WrongfulTerminationQuestions(),
1242
- WorkersCompensationQuestions(),
1243
- PersonalInjuryQuestions(),
1244
- UnemploymentQuestions(),
1245
- EmploymentAndWorkplaceQuestions(),
1246
- NotSureOrOtherQuestions()
1247
- ],
1248
- updates.nextOnEnter
1606
+ function defaultSubHeadline() {
1607
+ return subHeadline({
1608
+ children: '$urlParam("shl", "Our Service is Fast and Free!")',
1609
+ if: '$activeStep === $firstStep()'
1610
+ })
1611
+ }
1612
+
1613
+ const hiddenInputsBase = [
1614
+ {
1615
+ $formkit: 'hidden',
1616
+ name: "gclid",
1617
+ value: null
1618
+ },
1619
+ {
1620
+ $formkit: 'hidden',
1621
+ name: "campaignid",
1622
+ value: null
1623
+ },
1624
+ {
1625
+ $formkit: 'hidden',
1626
+ name: "s",
1627
+ value: null
1628
+ }
1629
+ ];
1630
+
1631
+ const hiddenInputsLegal = [
1632
+ {
1633
+ $formkit: 'hidden',
1634
+ name: "vertical",
1635
+ value: "Legal"
1636
+ },
1637
+ {
1638
+ $formkit: 'hidden',
1639
+ name: "TCPA_Language",
1640
+ value: "$meta.tcpaLanguage"
1641
+ },
1642
+ ...hiddenInputsBase
1643
+ ];
1644
+
1645
+ const legalRedirectMapDefaults = {
1646
+ '*': LegalRedirectUrl()
1647
+ };
1648
+
1649
+
1650
+ function legalRedirectMap(updates) {
1651
+ return merge(
1652
+ legalRedirectMapDefaults,
1653
+ updates
1249
1654
  )
1250
1655
  }
1251
1656
 
1252
- const formNavigationV2 = () => ({
1253
- $el: 'div',
1254
- attrs: {
1255
- class: 'step-nav'
1657
+ const legalAllValueOverrideMap = {
1658
+ 'Civil_Defense': {
1659
+ 'Yes': {
1660
+ 'Type_Of_Legal_Problem': 'Defend a Lawsuit'
1661
+ },
1662
+ 'No': {
1663
+ 'Type_Of_Legal_Problem': 'File a Lawsuit'
1664
+ }
1256
1665
  },
1257
- children: [
1258
- {
1259
- $formkit: 'button',
1260
- name: 'back_button',
1261
- onClick: '$setPreviousStep($prevStepFunc($get(form)))',
1262
- children: 'Back',
1263
- style: {
1264
- if: '$activeStep === $firstStep()',
1265
- then: 'visibility: hidden;'
1266
- }
1666
+ 'Type_Of_Legal_Problem_Display': {
1667
+ // Accidents and PI
1668
+ 'Auto Accident': {
1669
+ 'Type_Of_Legal_Problem': 'Auto and Car Accidents'
1670
+ },
1671
+ 'Dog Bite': {
1672
+ 'Type_Of_Legal_Problem': 'Personal Injury'
1673
+ },
1674
+ 'Slip and Fall': {
1675
+ 'Type_Of_Legal_Problem': 'Personal Injury'
1676
+ },
1677
+ 'Workplace Injury': {
1678
+ 'Type_Of_Legal_Problem': 'Workers Compensation'
1679
+ },
1680
+ 'Trucking Accident': {
1681
+ 'Type_Of_Legal_Problem': 'Auto and Car Accidents'
1682
+ },
1683
+ 'Motorcycle Accident': {
1684
+ 'Type_Of_Legal_Problem': 'Auto and Car Accidents',
1685
+ },
1686
+ 'Other Accidents or Injuries': {
1687
+ 'Type_Of_Legal_Problem': 'Personal Injury'
1688
+ },
1689
+ // Civil
1690
+ 'Automobile Accident': {
1691
+ 'Type_Of_Legal_Problem': 'Auto and Car Accidents'
1692
+ },
1693
+ 'Contract Disputes': {
1694
+ 'Type_Of_Legal_Problem': 'Business Lawyers'
1695
+ },
1696
+ 'Defamation and Slander': {
1697
+ 'Type_Of_Legal_Problem': 'File a Lawsuit'
1698
+ },
1699
+ 'Dog Bite': {
1700
+ 'Type_Of_Legal_Problem': 'Personal Injury'
1701
+ },
1702
+ 'Employment and Workplace': {
1703
+ 'Type_Of_Legal_Problem': 'Employment and Workplace'
1704
+ },
1705
+ 'Fraud': {
1706
+ 'Type_Of_Legal_Problem': 'Consumer Lawyers'
1707
+ },
1708
+ 'Medical Malpractice': {
1709
+ 'Type_Of_Legal_Problem': 'Medical Malpractice'
1710
+ },
1711
+ 'Personal Injury': {
1712
+ 'Type_Of_Legal_Problem': 'Personal Injury'
1713
+ },
1714
+ 'Property Damage': {
1715
+ 'Type_Of_Legal_Problem': 'Property Damage'
1716
+ },
1717
+ 'Small Claims': {
1718
+ 'Type_Of_Legal_Problem': 'File a Lawsuit'
1719
+ },
1720
+ 'Real Estate': {
1721
+ 'Type_Of_Legal_Problem': 'Real Estate'
1722
+ },
1723
+ 'Other (describe on next page)': {
1724
+ 'Type_Of_Legal_Problem': 'Not Sure or Other'
1725
+ },
1726
+ // Contracts
1727
+ 'Contract Creation': {
1728
+ 'Type_Of_Legal_Problem': 'Business Lawyers',
1729
+ 'Business_Services': 'Contracts'
1730
+ },
1731
+ 'Contract Enforcement': {
1732
+ 'Type_Of_Legal_Problem': 'Business Lawyers',
1733
+ 'Business_Services': 'Contracts'
1734
+ },
1735
+ 'Contract Cancellation': {
1736
+ 'Type_Of_Legal_Problem': 'Business Lawyers',
1737
+ 'Business_Services': 'Contracts'
1738
+ },
1739
+ 'Contract Fraud': {
1740
+ 'Type_Of_Legal_Problem': 'Business Lawyers',
1741
+ 'Business_Services': 'Contracts'
1742
+ },
1743
+ 'Breach of Contract': {
1744
+ 'Type_Of_Legal_Problem': 'Business Lawyers',
1745
+ 'Business_Services': 'Contracts'
1746
+ },
1747
+ 'Other Contract Issues': {
1748
+ 'Type_Of_Legal_Problem': 'Business Lawyers',
1749
+ 'Business_Services': 'Contracts'
1750
+ },
1751
+ // Criminal
1752
+ 'Criminal Defense': {
1753
+ 'Type_Of_Legal_Problem': 'Criminal and Felony'
1754
+ },
1755
+ 'Victim of a Crime': {
1756
+ 'Type_Of_Legal_Problem': 'Victim of a Crime'
1757
+ },
1758
+ 'DUI and DWI': {
1759
+ 'Type_Of_Legal_Problem': 'DUI and DWI'
1760
+ },
1761
+ 'Expungement': {
1762
+ 'Type_Of_Legal_Problem': 'Expungement'
1763
+ },
1764
+ 'Harassment': {
1765
+ 'Type_Of_Legal_Problem': 'Criminal and Felony'
1766
+ },
1767
+ 'Not Sure or Other': {
1768
+ 'Type_Of_Legal_Problem': 'Not Sure or Other'
1769
+ },
1770
+ // Employment and Workplace
1771
+ 'Workplace Harassment': {
1772
+ 'Type_Of_Legal_Problem': 'Workplace Harassment'
1267
1773
  },
1268
- {
1269
- $formkit: 'button',
1270
- name: 'next_button',
1271
- onClick: '$setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form)))',
1272
- children: {
1273
- if: '$activeStep === $firstStep()',
1274
- then: 'Start',
1275
- else: 'Next'
1276
- },
1277
- outerClass: {
1278
- if: '$activeStep === $lastStep()',
1279
- then: 't-hidden',
1280
- else: ''
1281
- },
1282
- style: {
1283
- if: '$activeStep === $lastStep()',
1284
- then: 'display: none;'
1285
- }
1774
+ 'Workplace Discrimination': {
1775
+ 'Type_Of_Legal_Problem': 'Workplace Discrimination'
1286
1776
  },
1287
- {
1288
- $formkit: 'submit',
1289
- name: 'submit_button',
1290
- label: 'Submit',
1291
- if: '$activeStep === $lastStep()',
1292
- style: {
1293
- if: '$activeStep !== $lastStep()',
1294
- then: 'display: none;'
1295
- }
1296
- }
1297
- ]
1298
- });
1299
-
1300
- const formDetails = () => ({
1301
- $el: 'pre',
1302
- if: '$urlParam("fdbg", "") == 1',
1303
- children: [
1304
- {
1305
- $el: 'pre',
1306
- children: '$stringify( $get(form).value )',
1307
- attrs: {
1308
- class: 't-text-xs',
1309
- style: 'overflow: scroll'
1310
- }
1777
+ 'Wrongful Termination': {
1778
+ 'Type_Of_Legal_Problem': 'Wrongful Termination'
1311
1779
  },
1312
- {
1313
- $el: 'pre',
1314
- children: ['activeStep: ', '$activeStep'],
1315
- attrs: {
1316
- class: 't-text-xs',
1317
- style: 'overflow: scroll'
1318
- }
1780
+ 'Payment Disputes': {
1781
+ 'Type_Of_Legal_Problem': 'Employment and Workplace'
1319
1782
  },
1320
- {
1321
- $el: 'pre',
1322
- children: ['stepHistory: ', '$stepHistory'],
1323
- attrs: {
1324
- class: 't-text-xs',
1325
- style: 'overflow: scroll'
1326
- }
1783
+ 'Workers Compensation': {
1784
+ 'Type_Of_Legal_Problem': 'Workers Compensation'
1327
1785
  },
1328
- {
1329
- $el: 'pre',
1330
- children: ['stepQueue: ', '$stepQueue'],
1331
- attrs: {
1332
- class: 't-text-xs',
1333
- style: 'overflow: scroll'
1334
- }
1786
+ 'Unemployment': {
1787
+ 'Type_Of_Legal_Problem': 'Unemployment'
1335
1788
  },
1336
- {
1337
- $el: 'pre',
1338
- children: ['steps: ', '$stepKeys()'],
1339
- attrs: {
1340
- class: 't-text-xs',
1341
- style: 'overflow: scroll'
1342
- }
1789
+ 'Other Workplace Issues': {
1790
+ 'Type_Of_Legal_Problem': 'Employment and Workplace'
1791
+ },
1792
+ // Malpractice
1793
+ 'Attorney Malpractice': {
1794
+ 'Type_Of_Legal_Problem': 'Civil Lawsuit'
1795
+ },
1796
+ 'Other Malpractice Issues': {
1797
+ 'Type_Of_Legal_Problem': 'Not Sure or Other'
1798
+ },
1799
+ // Repossession
1800
+ 'Vehicle Repossession': {
1801
+ 'Type_Of_Legal_Problem': 'Bankruptcy'
1802
+ },
1803
+ 'Property Repossession': {
1804
+ 'Type_Of_Legal_Problem': 'Bankruptcy'
1805
+ },
1806
+ 'Other Repossession Issues': {
1807
+ 'Type_Of_Legal_Problem': 'Not Sure or Other'
1808
+ },
1809
+ // Real Estate
1810
+ 'Contracts and Agreements': {
1811
+ 'Type_Of_Legal_Problem': 'Real Estate'
1812
+ },
1813
+ 'Deeds, Liens, and Titles': {
1814
+ 'Type_Of_Legal_Problem': 'Real Estate'
1815
+ },
1816
+ 'Foreclosure': {
1817
+ 'Type_Of_Legal_Problem': 'Foreclosure'
1818
+ },
1819
+ 'Insurance': {
1820
+ 'Type_Of_Legal_Problem': 'Insurance'
1821
+ },
1822
+ 'Landlord and Tenant': {
1823
+ 'Type_Of_Legal_Problem': 'Landlord and Tenant',
1824
+ },
1825
+ 'Loans and Mortgages': {
1826
+ 'Type_Of_Legal_Problem': 'Real Estate',
1827
+ },
1828
+ 'Wills, Trusts, and Estates': {
1829
+ 'Type_Of_Legal_Problem': 'Wills and Trusts'
1830
+ },
1831
+ 'Property Damage': {
1832
+ 'Type_Of_Legal_Problem': 'Property Damage'
1833
+ },
1834
+ 'Other Real Estate Issues': {
1835
+ 'Type_Of_Legal_Problem': 'Real Estate'
1343
1836
  }
1837
+ }
1838
+ };
1839
+
1840
+ const TOLPCommentsPlaceholders = {
1841
+ 'Adoption': 'Example: "I need help with adoption forms"',
1842
+ 'Asbestos and Mesothelioma': 'Example: "I was exposed to asbestos at work and would like to file a claim"',
1843
+ 'Auto and Car Accidents': 'Example: "A truck crashed into my car on the highway" or "I\'ve been involved in a hit and run accident"',
1844
+ 'Bankruptcy': 'Example: "I need help filing for bankruptcy"',
1845
+ 'Birth Certificate and Name Change': 'Example: "Just married and would like to change my last name"',
1846
+ 'Business Lawyers': 'Example: "I need help incorporating a business" or "I would like a legal contract reviewed"',
1847
+ 'Child Custody and Support': 'Example: "Need help getting custody" or "Issues with child support payments"',
1848
+ 'Child Custody': 'Example: "Need help getting custody"',
1849
+ 'Child Support': 'Example: "Issues with child support payments"',
1850
+ 'Civil Rights and Discrimination': 'Example: "Police brutality" or "Coworker keeps harassing me"',
1851
+ 'Civil Lawsuit': 'Example: "A contractor took my money and never completed the job" or "I am being sued by a neighbor"',
1852
+ 'File a Lawsuit': 'Example: "A contractor took my money and never completed the job"',
1853
+ 'Defend a Lawsuit': 'Example: "I am being sued by a neighbor"',
1854
+ 'Consumer Lawyers': 'Example: "Someone committed fraud against me" or "A contractor took my money and never completed the job"',
1855
+ 'Copyrights and Trademarks': 'Example: "I would like to register a trademark or copyright a name"',
1856
+ 'Criminal and Felony': 'Example: "I was arrested for DUI and need legal defense" or "I am being charged with assault"',
1857
+ 'Debt and Collections': 'Example: "I would like to consolidate my debt" or "A collection agency is harassing me"',
1858
+ 'Divorce and Separation': 'Example: "I would like to file for an uncontested divorce"',
1859
+ 'DUI and DWI': 'Example: "I was arrested for DUI and need legal defense"',
1860
+ 'Elder Law': 'Example: "I would like help with Estate Planning" or "I need help with a guardianship"',
1861
+ 'Employment and Workplace': 'Example: "I was injured while on the job" or "My company is discriminating against me"',
1862
+ 'Expungement': 'Example: "I would like to file for an expungement and clear my record"',
1863
+ 'Family Issues': 'Example: "I need help with guardianship" or "I need a simple will created"',
1864
+ 'Foreclosure': 'Example: "I need help to avoid foreclosure on my house"',
1865
+ 'Guardianship': 'Example: "I need help with guardianship documents"',
1866
+ 'Harassment and Discrimination': 'Example: "I am being discriminated at work" or "My neighbor is harassing me"',
1867
+ 'Sexual Harassment': 'Example: "I am being sexually harassed by a coworker"',
1868
+ 'Workplace Harassment': 'Example: "My coworker is being aggressive towards me"',
1869
+ 'Non-Workplace Harassment': 'Example: "My neighbor is harassing me"',
1870
+ 'Workplace Discrimination': 'Example: "I am being discriminated at work based on my age"',
1871
+ 'Non-Workplace Discrimination': 'Example: "I am being discriminated against by a local official"',
1872
+ 'Identity Theft': 'Example: "Someone stole my identity and I need help fixing the issue"',
1873
+ 'Immigration and Visas': 'Example: "I need help filing for a visa" or "Help with a green card"',
1874
+ 'Insurance': 'Example: "I need help filing an insurance claim for damage to my house"',
1875
+ 'Landlord and Tenant': 'Example: "I need help to fight an eviction" or "I would like a lawyer to review a rental contract"',
1876
+ 'Lemon Law': 'Example: "I purchased a new vehicle that broke down already and seller will not assist"',
1877
+ 'Long Term Disability': 'Example: "I was injured on the job and would like to file for benefits" or "I need help filing for disability benefits"',
1878
+ 'Medical Malpractice': 'Example: "A doctor performed surgery on the wrong limb and I would like to file a lawsuit"',
1879
+ 'Patents and Intellectual Property': 'Example: "I would like to file for a patent" or "I need to copyright a name"',
1880
+ 'Personal Injury': 'Example: "I was bit by the neighbor\'s dog" or "I fell in the icy grocery store parking lot"',
1881
+ 'Power of Attorney': 'Example: "I need help with a limited or general power of attorney"',
1882
+ 'Probate and Estates': 'Example: "I need help with planning for my estate" or "A family member passed without a will in place"',
1883
+ 'Product Liability': 'Example: "My car battery caught on fire" or "I purchased a faulty product"',
1884
+ 'Property Damage': 'Example: "The neighbor\'s tree fell on my fence" or "My car was hit in the parking lot"',
1885
+ 'Real Estate': 'Example: "I need help with a quitclaim deed" or "I need a lawyer to review a purchase and sales agreement"',
1886
+ 'Social Security Disability and Insurance': 'Example: "I would like help filing for disability benefits" or "I\'ve been denied for SSDI and would like to appeal"',
1887
+ 'Tax and IRS': 'Example: "I need help fighting an IRS tax claim" or "I need audit defense"',
1888
+ 'Traffic and Tickets': 'Example: "I need help reinstating a supsended license" or "I would like to fight a traffic ticket"',
1889
+ 'Unemployment': 'Example: "I need help filing for unemployment benefits"',
1890
+ 'Victim of a Crime': 'Example: "I was assaulted in the store" or "I am being discriminated against at work"',
1891
+ 'Wills and Trusts': 'Example: "I need a simple will created" or "I would like guidance on creating a trust fund"',
1892
+ 'Workers Compensation': 'Example: "I was injured at work and would like to file for workers compensation benefits"',
1893
+ 'Wrongful Death': 'Example: "A family member was killed on the job and we need legal representation"',
1894
+ 'Wrongful Termination': 'Example: "I was fired by my employer without cause"',
1895
+ 'Not Sure or Other': 'Example: "I was involved in a car accident" or "I need help setting up power of attorney"'
1896
+ };
1897
+
1898
+ const TOLPFinalHeadlines = {
1899
+ // 'Adoption': '',
1900
+ };
1901
+
1902
+ const TOLPFinalSubHeadlines = {
1903
+ 'Adoption': 'You may benefit from speaking with an adoption professional. Please verify your contact information.',
1904
+ // 'Asbestos and Mesothelioma': '',
1905
+ 'Auto and Car Accidents': 'You may benefit from speaking with an accident professional. Please verify your contact information.',
1906
+ 'Bankruptcy': 'You may benefit from speaking with a bankruptcy professional. Please verify your contact information.',
1907
+ // 'Birth Certificate and Name Change': '',
1908
+ // 'Business Lawyers': '',
1909
+ // 'Child Custody and Support': '',
1910
+ // 'Civil Rights and Discrimination': '',
1911
+ // 'Civil Lawsuit': '',
1912
+ // 'Consumer Lawyers': '',
1913
+ 'Copyrights and Trademarks': 'You may benefit from speaking with a copyright and trademark professional. Please verify your contact information.',
1914
+ // 'Criminal and Felony': '',
1915
+ // 'Debt and Collections': '',
1916
+ 'Divorce and Separation': 'You may benefit from speaking with a divorce professional. Please verify your contact information.',
1917
+ 'DUI and DWI': 'You may benefit from speaking with a DUI professional. Please verify your contact information.',
1918
+ 'Elder Law': 'You may benefit from speaking with an elder law professional. Please verify your contact information.',
1919
+ // 'Employment and Workplace': '',
1920
+ // 'Expungement': '',
1921
+ // 'Family Issues': '',
1922
+ 'Foreclosure': 'You may benefit from speaking with a foreclosure professional. Please verify your contact information.',
1923
+ 'Guardianship': 'You may benefit from speaking with a guardianship professional. Please verify your contact information.',
1924
+ // 'Harassment and Discrimination': '',
1925
+ // 'Identity Theft': '',
1926
+ 'Immigration and Visas': 'You may benefit from speaking with a immigration professional. Please verify your contact information.',
1927
+ // 'Insurance': '',
1928
+ 'Landlord and Tenant': 'You may benefit from speaking with a landlord and tenant legal professional. Please verify your contact information.',
1929
+ // 'Lemon Law': '',
1930
+ 'Long Term Disability': 'You may benefit from speaking with a disability legal professional. Please verify your contact information.',
1931
+ 'Medical Malpractice': 'You may benefit from speaking with a malpractice professional. Please verify your contact information.',
1932
+ 'Patents and Intellectual Property': 'You may benefit from speaking with a patent professional. Please verify your contact information.',
1933
+ 'Personal Injury': 'You may benefit from speaking with a personal injury professional. Please verify your contact information.',
1934
+ // 'Power of Attorney': '',
1935
+ 'Probate and Estates': 'You may benefit from speaking with a probate and estate professional. Please verify your contact information.',
1936
+ // 'Product Liability': '',
1937
+ // 'Property Damage': '',
1938
+ 'Real Estate': 'You may benefit from speaking with a real estate professional. Please verify your contact information.',
1939
+ 'Social Security Disability and Insurance': 'You may benefit from speaking with an SSDI professional. Please verify your contact information.',
1940
+ 'Tax and IRS': 'You may benefit from speaking with a tax professional. Please verify your contact information.',
1941
+ // 'Traffic and Tickets': '',
1942
+ 'Unemployment': 'You may benefit from speaking with an unemployment professional. Please verify your contact information.',
1943
+ // 'Victim of a Crime': '',
1944
+ // 'Wills and Trusts': '',
1945
+ 'Workers Compensation': 'You may benefit from speaking with a workers compensation professional. Please verify your contact information.',
1946
+ // 'Wrongful Death': '',
1947
+ // 'Wrongful Termination': '',
1948
+ // 'Not Sure or Other': ''
1949
+ // 'Sexual Harassment': '',
1950
+ // 'Workplace Harassment': '',
1951
+ // 'Non-Workplace Harassment': '',
1952
+ // 'Workplace Discrimination': '',
1953
+ // 'Non-Workplace Discrimination': '',
1954
+ };
1955
+
1956
+
1957
+ const nextStepsMapLegalLegacy = {
1958
+ '*': [
1959
+ 'TOLPQuestions',
1960
+ 'commentsWithBankruptcy',
1961
+ 'legalCrossSells',
1962
+ 'firstAndLast',
1963
+ 'contactInfo',
1344
1964
  ]
1345
- });
1965
+ };
1966
+
1967
+ const meta = defaultMetaProps();
1968
+
1969
+ meta.data.dynamicSchema = [
1970
+ employmentAndWorkplaceTOLPQuestions(),
1971
+ commentsWithBankruptcy(),
1972
+ legalCrossSells(),
1973
+ autoAndCarAccidentCrossSellQuestions(),
1974
+ personalInjuryCrossSellQuestions(),
1975
+ workersCompensationCrossSellQuestions(),
1976
+ duiAndDWICrossSellQuestions(),
1977
+ ssdiCrossSellQuestions(),
1978
+ powerOfAttorneyCrossSellQuestions(),
1979
+ willsAndTrustsCrossSellQuestions(),
1980
+ divorceAndSeparationCrossSellQuestions(),
1981
+ childCustodyCrossSellQuestions(),
1982
+ firstAndLastV2(),
1983
+ ];
1346
1984
 
1347
1985
  const schema = [
1348
- defaultMetaProps(),
1986
+ meta,
1349
1987
  formAnchor(),
1350
1988
  {
1351
1989
  $cmp: 'FormKit',
@@ -1364,16 +2002,12 @@ const schema = [
1364
2002
  class: 'form-body'
1365
2003
  },
1366
2004
  children: [
1367
- employmentAndWorkplaceTOLPAndZip(),
1368
- employmentAndWorkplaceTOLPQuestions(),
1369
- commentsWithBankruptcyV2({
1370
- nextOnEnter: false
1371
- }),
1372
- firstAndLastV2(),
1373
- contactInfoV2({
1374
- nextOnEnter: false
2005
+ employmentAndWorkplaceTOLPAndZip({
2006
+ nextStepMap: nextStepsMapLegalLegacy
1375
2007
  }),
1376
- formNavigationV2(),
2008
+ dynamicSchemaNode,
2009
+ contactInfo(),
2010
+ formNavigation(),
1377
2011
  formDetails()
1378
2012
  ]
1379
2013
  }