bhl-forms 0.7.3 → 0.7.5

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 (101) hide show
  1. package/dist/bhl-forms.es.js +551 -543
  2. package/dist/bhl-forms.iife.js +4 -4
  3. package/dist/bhl-forms.modern.es.js +649 -649
  4. package/dist/bhl-forms.modern.iife.js +7 -7
  5. package/dist/bhl-forms.modern.umd.js +7 -7
  6. package/dist/bhl-forms.umd.js +4 -4
  7. package/dist/forms/accidentsAndInjuries.es.js +1461 -1151
  8. package/dist/forms/accidentsAndInjuries.iife.js +1 -1
  9. package/dist/forms/accidentsAndInjuries.json +1 -1
  10. package/dist/forms/appraisals.es.js +138 -137
  11. package/dist/forms/appraisals.iife.js +1 -1
  12. package/dist/forms/business.es.js +1434 -1149
  13. package/dist/forms/business.iife.js +1 -1
  14. package/dist/forms/business.json +1 -1
  15. package/dist/forms/childAndFamily.es.js +1329 -1043
  16. package/dist/forms/childAndFamily.iife.js +1 -1
  17. package/dist/forms/childAndFamily.json +1 -1
  18. package/dist/forms/childAndFamilySingle.es.js +1528 -1378
  19. package/dist/forms/childAndFamilySingle.iife.js +1 -1
  20. package/dist/forms/childAndFamilySingle.json +1 -1
  21. package/dist/forms/civilLawsuit.es.js +2000 -1807
  22. package/dist/forms/civilLawsuit.iife.js +1 -1
  23. package/dist/forms/civilLawsuit.json +1 -1
  24. package/dist/forms/coins.es.js +138 -137
  25. package/dist/forms/coins.iife.js +1 -1
  26. package/dist/forms/contracts.es.js +1349 -1050
  27. package/dist/forms/contracts.iife.js +1 -1
  28. package/dist/forms/contracts.json +1 -1
  29. package/dist/forms/criminal.es.js +1832 -1711
  30. package/dist/forms/criminal.iife.js +1 -1
  31. package/dist/forms/criminal.json +1 -1
  32. package/dist/forms/divorce.es.js +1541 -1385
  33. package/dist/forms/divorce.iife.js +1 -1
  34. package/dist/forms/divorce.json +1 -1
  35. package/dist/forms/employmentAndWorkplace.es.js +1833 -1678
  36. package/dist/forms/employmentAndWorkplace.iife.js +1 -1
  37. package/dist/forms/employmentAndWorkplace.json +1 -1
  38. package/dist/forms/generalHomeImprovement.es.js +2381 -2010
  39. package/dist/forms/generalHomeImprovement.iife.js +1 -1
  40. package/dist/forms/generalHomeImprovement.json +1 -1
  41. package/dist/forms/generalHomeImprovementThankYou.es.js +1795 -2008
  42. package/dist/forms/generalHomeImprovementThankYou.iife.js +1 -1
  43. package/dist/forms/generalHomeImprovementThankYou.json +1 -1
  44. package/dist/forms/generalLegal.es.js +3037 -2535
  45. package/dist/forms/generalLegal.iife.js +1 -1
  46. package/dist/forms/generalLegal.json +1 -1
  47. package/dist/forms/generalLegalJustAnswer.es.js +3216 -2872
  48. package/dist/forms/generalLegalJustAnswer.iife.js +1 -1
  49. package/dist/forms/generalLegalJustAnswer.json +1 -1
  50. package/dist/forms/generalLegalPopUnder.es.js +3037 -2535
  51. package/dist/forms/generalLegalPopUnder.iife.js +1 -1
  52. package/dist/forms/generalLegalPopUnder.json +1 -1
  53. package/dist/forms/generalLegalPopUnderSingle.es.js +3216 -2872
  54. package/dist/forms/generalLegalPopUnderSingle.iife.js +1 -1
  55. package/dist/forms/generalLegalPopUnderSingle.json +1 -1
  56. package/dist/forms/generalLegalSingle.es.js +3216 -2872
  57. package/dist/forms/generalLegalSingle.iife.js +1 -1
  58. package/dist/forms/generalLegalSingle.json +1 -1
  59. package/dist/forms/generalLegalThankYou.es.js +2825 -2303
  60. package/dist/forms/generalLegalThankYou.iife.js +1 -1
  61. package/dist/forms/generalLegalThankYou.json +1 -1
  62. package/dist/forms/generalLegalThankYouConsultation.es.js +3216 -2872
  63. package/dist/forms/generalLegalThankYouConsultation.iife.js +1 -1
  64. package/dist/forms/generalLegalThankYouConsultation.json +1 -1
  65. package/dist/forms/harassmentAndDiscrimination.es.js +1425 -1120
  66. package/dist/forms/harassmentAndDiscrimination.iife.js +1 -1
  67. package/dist/forms/harassmentAndDiscrimination.json +1 -1
  68. package/dist/forms/landlordTenant.es.js +1395 -1106
  69. package/dist/forms/landlordTenant.iife.js +1 -1
  70. package/dist/forms/landlordTenant.json +1 -1
  71. package/dist/forms/malpractice.es.js +1531 -1223
  72. package/dist/forms/malpractice.iife.js +1 -1
  73. package/dist/forms/malpractice.json +1 -1
  74. package/dist/forms/mechanics.es.js +702 -530
  75. package/dist/forms/mechanics.iife.js +1 -1
  76. package/dist/forms/mechanics.json +1 -1
  77. package/dist/forms/patentsAndIP.es.js +1830 -1652
  78. package/dist/forms/patentsAndIP.iife.js +1 -1
  79. package/dist/forms/patentsAndIP.json +1 -1
  80. package/dist/forms/realEstate.es.js +2852 -2405
  81. package/dist/forms/realEstate.iife.js +1 -1
  82. package/dist/forms/realEstate.json +1 -1
  83. package/dist/forms/repossession.es.js +1568 -1251
  84. package/dist/forms/repossession.iife.js +1 -1
  85. package/dist/forms/repossession.json +1 -1
  86. package/dist/forms/ssdi.es.js +635 -520
  87. package/dist/forms/ssdi.iife.js +1 -1
  88. package/dist/forms/ssdi.json +1 -1
  89. package/dist/forms/testForm.es.js +409 -371
  90. package/dist/forms/testForm.iife.js +1 -1
  91. package/dist/forms/testForm.json +1 -1
  92. package/dist/forms/testRedirects.es.js +421 -316
  93. package/dist/forms/testRedirects.iife.js +1 -1
  94. package/dist/forms/testRedirects.json +1 -1
  95. package/dist/forms/vets.es.js +138 -137
  96. package/dist/forms/vets.iife.js +1 -1
  97. package/dist/forms/willsAndTrusts.es.js +1428 -1112
  98. package/dist/forms/willsAndTrusts.iife.js +1 -1
  99. package/dist/forms/willsAndTrusts.json +1 -1
  100. package/dist/main.css +1 -1
  101. package/package.json +1 -1
@@ -2,43 +2,70 @@ function merge() {
2
2
  return Object.assign({}, ...arguments)
3
3
  }
4
4
 
5
- function HomeImprovementRedirectUrl() {
6
- return 'https://listings.zipcontractor.com/api/v1/redirect?zone_id=4&vertical=HomeImprovement&category=${properties.Category}&zip_code=${properties.Zip}&sub_id=${properties.vid}'
7
- }
8
-
9
- const DEFAULT_COMMENTS_LABEL = 'Please briefly describe your issue in a few words:';
10
- const DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC = '$getKey($meta, "commentsPlaceholders." + $get(Category).value, $meta.defaultCommentsPlaceholder)';
11
- const DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL = '$getKey($meta, "finalHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalHeadline)';
12
- const DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL = '$getKey($meta, "finalSubHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalSubHeadline)';
5
+ const DEFAULT_COMMENTS_LABEL = "Please briefly describe your issue in a few words:";
6
+ const DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC =
7
+ '$getKey($meta, "commentsPlaceholders." + $get(Category).value, $meta.defaultCommentsPlaceholder)';
8
+ const DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL =
9
+ '$getKey($meta, "finalHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalHeadline)';
10
+ const DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL =
11
+ '$getKey($meta, "finalSubHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalSubHeadline)';
13
12
 
14
13
  const DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_HOME_IMPROVEMENT = DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC;
15
- const DEFAULT_FINAL_HEADLINE_HOME_IMPROVEMENT = 'We Found Contractors Near You';
16
- const DEFAULT_FINAL_SUBHEADLINE_HOME_IMPROVEMENT = 'Compare quotes and save! Please verify your contact info:';
17
- const TCPA_LANGUAGE_HOME_IMPROVEMENT = "By checking this box, I a) agree to the Terms of Use, and b) consent to be contacted by up to 5 contractors, contractor networks, and partners of this website using live, autodialed, pre-recorded, or artificial voice calls, as well as text messages. Your consent is not required as a condition of purchasing any goods or services. To submit this request without this consent, please call us.";
14
+ const DEFAULT_FINAL_HEADLINE_HOME_IMPROVEMENT = "We Found Contractors Near You";
15
+ const DEFAULT_FINAL_SUBHEADLINE_HOME_IMPROVEMENT = "Compare quotes and save! Please verify your contact info:";
16
+ const TCPA_LANGUAGE_HOME_IMPROVEMENT =
17
+ 'By checking this box, I a) agree to the Terms of Use, and b) consent to be contacted by up to four <a href="/providers" target="_blank" class="t-text-blue-600 t-underline">contractors and partners</a> of this website using live, autodialed, pre-recorded, or artificial voice calls, as well as text messages. Your consent is not required as a condition of purchasing any goods or services.';
18
18
 
19
19
  const radio = (updates) => {
20
20
  if (updates.name && !updates.id) {
21
21
  updates.id = updates.name;
22
22
  }
23
- return merge({
24
- $formkit: 'radio',
25
- validation: 'required',
26
- validationMessages: {
27
- required: 'Field is required'
23
+ return merge(
24
+ {
25
+ $formkit: "radio",
26
+ validation: "required",
27
+ validationMessages: {
28
+ required: "Field is required",
29
+ },
30
+ optionsClass: "t-pt-3 t-pl-1",
31
+ legendClass: "required",
28
32
  },
29
- optionsClass: 't-pt-3 t-pl-1',
30
- legendClass: 'required'
31
- }, updates)
33
+ updates
34
+ )
35
+ };
36
+
37
+ // TODO: rename
38
+ const col2RadioCenter = (updates) => {
39
+ updates.legendClass = "required t-w-[100%] t-text-center";
40
+ if (typeof updates.fieldsetClass === "undefined") {
41
+ updates.fieldsetClass = "$reset t-flex t-justify-center";
42
+ }
43
+ updates.innerClass = "t-items-start";
44
+ updates.wrapperClass = "$reset t-flex t-cursor-pointer t-mb-3";
45
+ updates.optionClass = "t-pl-4 md:t-pl-8 md:t-min-w-[200px]";
46
+ updates.optionsClass = "t-pl-4 t-pt-3 t-grid t-grid-cols-1 md:t-grid-cols-2";
47
+ updates.messagesClass = "t-flex t-justify-center";
48
+ updates.helpClass = "t-mt-0 t-mb-4 !t-text-sm t-text-center";
49
+ return radio(updates)
50
+ };
51
+
52
+ const sbsRadio = (updates) => {
53
+ updates.legendClass = "legend-left required";
54
+ updates.fieldsetClass = "$reset side-by-side";
55
+ updates.optionsClass = "t-pl-1";
56
+ updates.innerClass = "t-flex t-items-center";
57
+ updates.wrapperClass = "t-mb-3";
58
+ return radio(updates)
32
59
  };
33
60
 
34
61
  const verticalRadio = (updates) => {
35
- updates.legendClass = 'required';
36
- updates.fieldsetClass = '$reset t-flex t-justify-center';
37
- updates.optionsClass = 't-pl-2 t-pt-3';
38
- updates.innerClass = 't-items-center';
39
- updates.wrapperClass = '$reset t-flex t-cursor-pointer t-mb-3';
40
- updates.optionClass = 't-pl-4 md:t-pl-12';
41
- updates.messagesClass = 't-flex t-justify-center';
62
+ updates.legendClass = "required";
63
+ updates.fieldsetClass = "$reset t-flex t-justify-center";
64
+ updates.optionsClass = "t-pl-2 t-pt-3";
65
+ updates.innerClass = "t-items-center";
66
+ updates.wrapperClass = "$reset t-flex t-cursor-pointer t-mb-3";
67
+ updates.optionClass = "t-pl-4 md:t-pl-12";
68
+ updates.messagesClass = "t-flex t-justify-center";
42
69
  return radio(updates)
43
70
  };
44
71
 
@@ -46,24 +73,35 @@ const select = (updates) => {
46
73
  if (updates.name && !updates.id) {
47
74
  updates.id = updates.name;
48
75
  }
49
- return merge({
50
- $formkit: 'select',
51
- placeholder: "Please Select",
52
- validation: 'required',
53
- validationMessages: {
54
- required: 'Field is required'
76
+ return merge(
77
+ {
78
+ $formkit: "select",
79
+ placeholder: "Please Select",
80
+ validation: "required",
81
+ validationMessages: {
82
+ required: "Field is required",
83
+ },
84
+ inputClass: "t-bg-white",
85
+ labelClass: "required",
55
86
  },
56
- inputClass: 't-bg-white',
57
- labelClass: 'required'
58
- }, updates)
87
+ updates
88
+ )
89
+ };
90
+
91
+ const sbsSelect = (updates) => {
92
+ updates.labelClass = "required";
93
+ updates.wrapperClass = "side-by-side t-items-center";
94
+ updates.innerClass = "select-height-content";
95
+ updates.helpClass = "t-mt-2.5 md:t-text-right md:t-mt-[-5px]";
96
+ return select(updates)
59
97
  };
60
98
 
61
99
  const verticalSelect = (updates) => {
62
- updates.labelClass = 'required';
63
- updates.wrapperClass = 't-flex t-justify-center';
64
- updates.messagesClass = 't-flex t-justify-center';
65
- updates.inputClass = 't-min-w-[150px] t-bg-white';
66
- updates.helpClass = 't-mt-2.5 t-text-center';
100
+ updates.labelClass = "required";
101
+ updates.wrapperClass = "t-flex t-justify-center";
102
+ updates.messagesClass = "t-flex t-justify-center";
103
+ updates.inputClass = "t-min-w-[150px] t-bg-white";
104
+ updates.helpClass = "t-mt-2.5 t-text-center";
67
105
  return select(updates)
68
106
  };
69
107
 
@@ -71,26 +109,29 @@ const text = (updates) => {
71
109
  if (updates.name && !updates.id) {
72
110
  updates.id = updates.name;
73
111
  }
74
- return merge({
75
- $formkit: 'text',
76
- validation: 'required',
77
- validationMessages: {
78
- required: 'Field is required'
112
+ return merge(
113
+ {
114
+ $formkit: "text",
115
+ validation: "required",
116
+ validationMessages: {
117
+ required: "Field is required",
118
+ },
119
+ labelClass: "required",
79
120
  },
80
- labelClass: 'required'
81
- }, updates)
121
+ updates
122
+ )
82
123
  };
83
124
 
84
125
  const sbsText = (updates) => {
85
- updates.wrapperClass = 'side-by-side t-items-center';
126
+ updates.wrapperClass = "side-by-side t-items-center";
86
127
  return text(updates)
87
128
  };
88
129
 
89
130
  const verticalText = (updates) => {
90
- updates.wrapperClass = 't-flex t-justify-center';
91
- updates.messagesClass = 't-flex t-justify-center';
92
- updates.inputClass = 't-text-center';
93
- updates.helpClass = 't-mt-2.5 !t-text-sm t-text-center';
131
+ updates.wrapperClass = "t-flex t-justify-center";
132
+ updates.messagesClass = "t-flex t-justify-center";
133
+ updates.inputClass = "t-text-center";
134
+ updates.helpClass = "t-mt-2.5 !t-text-sm t-text-center";
94
135
  return text(updates)
95
136
  };
96
137
 
@@ -98,671 +139,897 @@ const textArea = (updates) => {
98
139
  if (updates.name && !updates.id) {
99
140
  updates.id = updates.name;
100
141
  }
101
- return merge({
102
- $formkit: 'textarea',
103
- rows: 5,
104
- maxlength: 500,
105
- validation: 'required',
106
- validationMessages: {
107
- required: 'Field is required'
142
+ return merge(
143
+ {
144
+ $formkit: "textarea",
145
+ rows: 5,
146
+ maxlength: 500,
147
+ validation: "required",
148
+ validationMessages: {
149
+ required: "Field is required",
150
+ },
151
+ innerClass: "t-max-w-xl",
152
+ labelClass: "required",
108
153
  },
109
- innerClass: 't-max-w-xl',
110
- labelClass: 'required'
111
- }, updates)
154
+ updates
155
+ )
112
156
  };
113
157
 
114
-
115
158
  // ------ Common Inputs
116
159
 
117
-
118
160
  const address$1 = (scope, vertical, updates = {}) => {
119
161
  const func = vertical ? verticalText : sbsText;
120
- const label = vertical ? (updates.label) : 'Street Address:';
162
+ const label = vertical ? updates.label : "Street Address:";
121
163
  return func({
122
164
  label,
123
- placeholder: '10 Example St',
124
- name: scope ? scope + ':' + 'Address' : 'Address',
165
+ placeholder: "10 Example St",
166
+ name: scope ? scope + ":" + "Address" : "Address",
125
167
  autocomplete: "street-address",
126
- 'data-tf-sensitive': 'false',
168
+ "data-tf-sensitive": "false",
127
169
  minlength: 5,
128
170
  maxlength: 100,
129
171
  validationMessages: {
130
- minlength: 'Invalid Address',
131
- required: 'Address is required'
172
+ minlength: "Invalid Address",
173
+ required: "Address is required",
132
174
  },
133
- ...updates
175
+ ...updates,
134
176
  })
135
177
  };
136
178
 
137
- const email = (scope) => sbsText({
138
- $formkit: 'email',
139
- name: scope ? scope + ':' + 'Email' : 'Email',
140
- label: 'Email Address:',
141
- placeholder: 'email@domain.com',
142
- autocomplete: 'email',
143
- 'data-tf-sensitive': 'false',
144
- validation: 'required|email',
145
- validationMessages: {
146
- required: 'Email is required',
147
- email: 'Invalid Email'
148
- }
149
- });
150
-
151
- const firstName = (scope) => sbsText({
152
- label: 'First Name:',
153
- placeholder: 'First',
154
- name: scope ? scope + ':' + 'First_Name' : 'First_Name',
155
- autocomplete: "given-name",
156
- validationMessages: {
157
- required: 'First Name is required'
158
- }
159
- });
179
+ const email = (scope, vertical, updates = {}) => {
180
+ const func = vertical ? verticalText : sbsText;
181
+ const label = vertical ? updates.label : "Email Address:";
182
+ return func({
183
+ $formkit: "email",
184
+ name: scope ? scope + ":" + "Email" : "Email",
185
+ label,
186
+ placeholder: "email@domain.com",
187
+ autocomplete: "email",
188
+ "data-tf-sensitive": "false",
189
+ validation: "required|email",
190
+ validationMessages: {
191
+ required: "Email is required",
192
+ email: "Invalid Email",
193
+ },
194
+ ...updates,
195
+ })
196
+ };
160
197
 
161
- const lastName = (scope) => sbsText({
162
- label: 'Last Name:',
163
- placeholder: 'Last',
164
- name: scope ? scope + ':' + 'Last_Name' : 'Last_Name',
165
- autocomplete: "family-name",
166
- validationMessages: {
167
- required: 'Last Name is required'
168
- }
169
- });
198
+ const firstName = (scope, vertical, updates = {}) => {
199
+ const func = vertical ? verticalText : sbsText;
200
+ const label = vertical ? updates.label : "First Name:";
201
+ return func({
202
+ label,
203
+ placeholder: "First",
204
+ name: scope ? scope + ":" + "First_Name" : "First_Name",
205
+ autocomplete: "given-name",
206
+ validationMessages: {
207
+ required: "First Name is required",
208
+ },
209
+ ...updates,
210
+ })
211
+ };
170
212
 
171
- const phone = (scope) => sbsText({
172
- $formkit: 'tel',
173
- name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
174
- label: 'Phone Number:',
175
- placeholder: '###-###-####',
176
- maxlength: 12,
177
- help: '10-digit phone number, hyphens optional',
178
- autocomplete: 'tel-national',
179
- 'data-tf-sensitive': 'false',
180
- validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
181
- validationMessages: {
182
- required: 'Field is required',
183
- matches: 'Invalid Phone Format, use ###-###-####',
184
- valid_phone: 'Invalid Phone Number'
185
- },
186
- helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
187
- });
213
+ const lastName = (scope, vertical, updates = {}) => {
214
+ const func = vertical ? verticalText : sbsText;
215
+ const label = vertical ? updates.label : "Last Name:";
216
+ return func({
217
+ label,
218
+ placeholder: "Last",
219
+ name: scope ? scope + ":" + "Last_Name" : "Last_Name",
220
+ autocomplete: "family-name",
221
+ validationMessages: {
222
+ required: "Last Name is required",
223
+ },
224
+ ...updates,
225
+ })
226
+ };
188
227
 
228
+ const phone = (scope, vertical, updates = {}) => {
229
+ const func = vertical ? verticalText : sbsText;
230
+ const label = vertical ? updates.label : "Phone Number:";
231
+ return func({
232
+ $formkit: "tel",
233
+ name: scope ? scope + ":" + "Primary_Phone" : "Primary_Phone",
234
+ label,
235
+ placeholder: "###-###-####",
236
+ maxlength: 12,
237
+ help: "10-digit phone number, hyphens optional",
238
+ autocomplete: "tel-national",
239
+ "data-tf-sensitive": "false",
240
+ validation: "required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone",
241
+ validationMessages: {
242
+ required: "Phone Number is required",
243
+ matches: "Invalid Phone Format, use ###-###-####",
244
+ valid_phone: "Invalid Phone Number",
245
+ },
246
+ helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]",
247
+ ...updates,
248
+ })
249
+ };
189
250
 
190
251
  const zipcode$1 = (scope, vertical, updates = {}) => {
191
252
  const func = vertical ? verticalText : sbsText;
192
- const label = vertical ? (updates.label) : 'Zip Code:';
193
- const help = vertical ? (updates.help ?? "We try to match you with local help") : null;
253
+ const label = vertical ? updates.label : "Zip Code:";
254
+ const help = vertical ? updates.help ?? "We try to match you with local help" : null;
194
255
  return func({
195
256
  label,
196
257
  help,
197
- placeholder: '#####',
198
- name: scope ? scope + ':' + 'Zip' : 'Zip',
258
+ placeholder: "#####",
259
+ name: scope ? scope + ":" + "Zip" : "Zip",
199
260
  maxlength: 5,
200
261
  inputmode: "numeric",
201
- autocomplete: 'postal-code',
202
- validation: 'required|matches:/^[0-9]{5}$/',
262
+ autocomplete: "postal-code",
263
+ validation: "required|matches:/^[0-9]{5}$/",
203
264
  validationMessages: {
204
- required: 'Zip Code is required',
205
- matches: 'Invalid Zip Code'
265
+ required: "Zip Code is required",
266
+ matches: "Invalid Zip Code",
206
267
  },
207
- ...updates
268
+ ...updates,
208
269
  })
209
270
  };
210
271
 
211
- const comments = (updates, scope) => textArea(
212
- merge({
213
- name: scope ? scope + ':' + 'Comments' : 'Comments',
214
- label: 'Please briefly describe your situation in a few words:',
215
- placeholder: 'For Example: "I would like help with child support payments" or "I need help with visitation rights"'
216
- }, updates)
217
- );
272
+ // TODO: vertical not supported yet
273
+ const comments = (scope, vertical, updates) =>
274
+ textArea(
275
+ merge(
276
+ {
277
+ name: scope ? scope + ":" + "Comments" : "Comments",
278
+ label: "Please briefly describe your situation in a few words:",
279
+ placeholder:
280
+ 'For Example: "I would like help with child support payments" or "I need help with visitation rights"',
281
+ },
282
+ updates
283
+ )
284
+ );
218
285
 
219
286
  const TCPAConsent = (scope) => ({
220
- $formkit: 'checkbox',
221
- label: '$meta.tcpaLanguage',
222
- name: scope ? scope + ':' + 'TCPA_Opt_In' : 'TCPA_Opt_In',
223
- 'data-tf-sensitive': 'false',
224
- validation: 'required|accepted',
287
+ $formkit: "checkbox",
288
+ label: "$meta.tcpaLanguage",
289
+ // Necessary to get links to work in the tcpa language
290
+ __raw__sectionsSchema: {
291
+ label: { attrs: { innerHTML: "$label" } },
292
+ },
293
+ name: scope ? scope + ":" + "TCPA_Opt_In" : "TCPA_Opt_In",
294
+ "data-tf-sensitive": "false",
295
+ validation: "required|accepted",
225
296
  validationMessages: {
226
- required: 'Consent is required',
227
- accepted: 'Consent is required'
297
+ required: "Consent is required",
298
+ accepted: "Consent is required",
228
299
  },
229
300
  classes: {
230
- label: "t-text-xs t-text-slate-500 t-font-normal"
231
- }
301
+ label: "t-text-xs t-text-slate-500 t-font-normal",
302
+ },
232
303
  });
233
304
 
234
305
  const HomeImprovementCategoryOptions = [
235
- 'Additions',
236
- 'Appliances',
237
- 'Appraisals',
238
- 'Cabinets',
239
- 'Carpentry',
240
- 'Carpets',
241
- 'Cleaning',
242
- 'Countertops',
243
- 'Decks and Porches',
244
- 'Demolition',
245
- 'Doors',
246
- 'Driveways',
247
- 'Drywall and Plaster',
248
- 'Electrical',
249
- 'Fencing',
250
- 'Flooring',
251
- 'Foundations',
252
- 'Garage Doors',
253
- 'General Contractors',
254
- 'Gutters',
255
- 'Handyman',
256
- 'Holiday Decorators',
257
- 'Smart Home',
258
- 'Home Builders',
259
- 'Home Inspection',
260
- 'Home Organization',
261
- 'Home Security',
262
- 'Home Staging',
263
- 'Home Theater',
264
- 'Home Warranties',
265
- 'Hot Tubs',
266
- 'Heating and Cooling',
267
- 'Insulation',
268
- 'Junk Removal',
269
- 'Landscaping',
270
- 'Locksmiths',
271
- 'Masonry and Concrete',
272
- 'Restoration',
306
+ "Additions",
307
+ "Appliances",
308
+ "Appraisals",
309
+ "Cabinets",
310
+ "Carpentry",
311
+ "Carpets",
312
+ "Cleaning",
313
+ "Countertops",
314
+ "Decks and Porches",
315
+ "Demolition",
316
+ "Doors",
317
+ "Driveways",
318
+ "Drywall and Plaster",
319
+ "Electrical",
320
+ "Fencing",
321
+ "Flooring",
322
+ "Foundations",
323
+ "Garage Doors",
324
+ "General Contractors",
325
+ "Gutters",
326
+ "Handyman",
327
+ "Holiday Decorators",
328
+ "Smart Home",
329
+ "Home Builders",
330
+ "Home Inspection",
331
+ "Home Organization",
332
+ "Home Security",
333
+ "Home Staging",
334
+ "Home Theater",
335
+ "Home Warranties",
336
+ "Hot Tubs",
337
+ "Heating and Cooling",
338
+ "Insulation",
339
+ "Junk Removal",
340
+ "Landscaping",
341
+ "Locksmiths",
342
+ "Masonry and Concrete",
343
+ "Restoration",
273
344
  // 'Moving',
274
- 'Painting',
275
- 'Pest Control',
276
- 'Pools',
277
- 'Plumbing',
278
- 'Pressure Washing',
279
- 'Remodeling',
280
- 'Roofing',
281
- 'Sheds',
282
- 'Siding',
283
- 'Solar',
284
- 'Tiling',
285
- 'Walk-in Tubs',
286
- 'Waterproofing',
287
- 'Window Cleaning',
288
- 'Windows'
345
+ "Painting",
346
+ "Pest Control",
347
+ "Pools",
348
+ "Plumbing",
349
+ "Pressure Washing",
350
+ "Remodeling",
351
+ "Roofing",
352
+ "Sheds",
353
+ "Siding",
354
+ "Solar",
355
+ "Tiling",
356
+ "Walk-in Tubs",
357
+ "Waterproofing",
358
+ "Window Cleaning",
359
+ "Windows",
360
+ "Not Sure or Other",
289
361
  ];
290
362
 
291
- const homeImprovementCategory$1 = (updates) => verticalSelect(merge({
292
- name: 'Category',
293
- id: 'Category',
294
- options: HomeImprovementCategoryOptions,
295
- }, updates));
296
-
297
- const timeframe$1 = (scope) => verticalRadio({
298
- name: scope ? scope + ':' + 'Timeframe' : 'Timeframe',
299
- // label: 'What is the project timeframe?',
300
- options: [
301
- 'Immediate',
302
- '1-6 Months',
303
- 'More than 6 Months'
304
- ]
305
- });
363
+ const homeImprovementCategory$1 = (scope, vertical, updates = {}) => {
364
+ const func = vertical ? verticalSelect : sbsSelect;
365
+ const label = vertical ? updates.label : "Select a Category:";
366
+ return func(
367
+ merge(
368
+ {
369
+ label,
370
+ name: scope ? scope + ":" + "Category" : "Category",
371
+ options: HomeImprovementCategoryOptions,
372
+ },
373
+ updates
374
+ )
375
+ )
376
+ };
306
377
 
307
- const ownHome$1 = (scope) => verticalRadio({
308
- name: scope ? scope + ':' + 'Own_Home' : 'Own_Home',
309
- // label: 'Do you own the home?',
310
- options: [
311
- 'Yes',
312
- 'No',
313
- 'No but authorized'
314
- ]
315
- });
378
+ const timeframe$1 = (scope, vertical, updates = {}) => {
379
+ const func = vertical ? verticalRadio : sbsRadio;
380
+ const label = vertical ? updates.label : "What is the project timeframe?";
381
+ return func(
382
+ merge(
383
+ {
384
+ label,
385
+ name: scope ? scope + ":" + "Timeframe" : "Timeframe",
386
+ options: ["Immediate", "1-6 Months", "More than 6 Months"],
387
+ },
388
+ updates
389
+ )
390
+ )
391
+ };
316
392
 
317
- const additionsSubType$1 = (scope) => verticalSelect({
318
- name: scope ? scope + ':' + 'Additions_Subtype' : 'Additions_Subtype',
319
- // label: 'What type of addition?',
320
- options: [
321
- 'Garage',
322
- 'In-Law Suite',
323
- 'Additional Rooms',
324
- 'Additional Stories',
325
- 'Bump-out',
326
- 'Sunroom',
327
- 'Accessory Dwelling Unit',
328
- 'Basement Remodeling',
329
- 'Attic Remodeling',
330
- 'Not Sure or Other'
331
- ]
332
- });
393
+ const ownHome$1 = (scope, vertical, updates = {}) => {
394
+ const func = vertical ? verticalRadio : sbsRadio;
395
+ const label = vertical ? updates.label : "Do you own the home?";
396
+ return func(
397
+ merge(
398
+ {
399
+ label,
400
+ name: scope ? scope + ":" + "Own_Home" : "Own_Home",
401
+ options: ["Yes", "No", "No but authorized"],
402
+ },
403
+ updates
404
+ )
405
+ )
406
+ };
333
407
 
334
- const constructionAreaSize$1 = (scope) => verticalRadio({
335
- name: scope ? scope + ':' + 'Construction_Area_Size' : 'Construction_Area_Size',
336
- // label: 'What is the size of the construction area?',
337
- options: [
338
- 'Less than 1000 square feet',
339
- '1000 to 2000 square feet',
340
- 'More than 2000 square feet'
341
- ]
342
- });
408
+ const additionsSubType$1 = (scope, vertical, updates = {}) => {
409
+ const func = vertical ? verticalSelect : sbsSelect;
410
+ const label = vertical ? updates.label : "What type of addition?";
411
+ return func(
412
+ merge(
413
+ {
414
+ label,
415
+ name: scope ? scope + ":" + "Additions_Subtype" : "Additions_Subtype",
416
+ options: [
417
+ "Garage",
418
+ "In-Law Suite",
419
+ "Additional Rooms",
420
+ "Additional Stories",
421
+ "Bump-out",
422
+ "Sunroom",
423
+ "Accessory Dwelling Unit",
424
+ "Basement Remodeling",
425
+ "Attic Remodeling",
426
+ "Not Sure or Other",
427
+ ],
428
+ },
429
+ updates
430
+ )
431
+ )
432
+ };
343
433
 
434
+ const constructionAreaSize$1 = (scope, vertical, updates = {}) => {
435
+ const func = vertical ? verticalRadio : sbsRadio;
436
+ const label = vertical ? updates.label : "What is the size of the construction area?";
437
+ return func(
438
+ merge(
439
+ {
440
+ label,
441
+ name: scope ? scope + ":" + "Construction_Area_Size" : "Construction_Area_Size",
442
+ options: ["Less than 1000 square feet", "1000 to 2000 square feet", "More than 2000 square feet"],
443
+ },
444
+ updates
445
+ )
446
+ )
447
+ };
344
448
 
345
- const homeImprovementWorkType$1 = (scope) => verticalRadio({
346
- name: scope ? scope + ':' + 'Work_Type' : 'Work_Type',
347
- // label: 'What type of work do you need?',
348
- options: [
349
- 'Install or Replace',
350
- 'Repair',
351
- 'Not Sure or Other'
352
- ]
353
- });
449
+ const homeImprovementWorkType$1 = (scope, vertical, updates = {}) => {
450
+ const func = vertical ? verticalRadio : sbsRadio;
451
+ const label = vertical ? updates.label : "What type of work?";
452
+ return func(
453
+ merge(
454
+ {
455
+ label,
456
+ name: scope ? scope + ":" + "Work_Type" : "Work_Type",
457
+ options: ["Install or Replace", "Repair", "Not Sure or Other"],
458
+ },
459
+ updates
460
+ )
461
+ )
462
+ };
354
463
 
355
- const applianceType$1 = (scope) => verticalSelect({
356
- name: scope ? scope + ':' + 'Appliance_Type' : 'Appliance_Type',
357
- // label: 'What type of appliance?',
358
- options: [
359
- 'Cooktop',
360
- 'Dishwasher',
361
- 'Dryer',
362
- 'Freezer',
363
- 'Garbage Disposal',
364
- 'Ice Maker',
365
- 'Microwave',
366
- 'Range',
367
- 'Refrigerator',
368
- 'Stove',
369
- 'Trash Compactor',
370
- 'Oven',
371
- 'Vacuum',
372
- 'Washer Machine',
373
- 'Not Sure or Other',
374
- ]
375
- });
464
+ const applianceType$1 = (scope, vertical, updates = {}) => {
465
+ const func = vertical ? verticalSelect : sbsSelect;
466
+ const label = vertical ? updates.label : "What type of appliance?";
467
+ return func(
468
+ merge(
469
+ {
470
+ label,
471
+ name: scope ? scope + ":" + "Appliance_Type" : "Appliance_Type",
472
+ options: [
473
+ "Cooktop",
474
+ "Dishwasher",
475
+ "Dryer",
476
+ "Freezer",
477
+ "Garbage Disposal",
478
+ "Ice Maker",
479
+ "Microwave",
480
+ "Range",
481
+ "Refrigerator",
482
+ "Stove",
483
+ "Trash Compactor",
484
+ "Oven",
485
+ "Vacuum",
486
+ "Washer Machine",
487
+ "Not Sure or Other",
488
+ ],
489
+ },
490
+ updates
491
+ )
492
+ )
493
+ };
376
494
 
495
+ const cabinetWorkType$1 = (scope, vertical, updates = {}) => {
496
+ const func = vertical ? verticalRadio : sbsRadio;
497
+ const label = vertical ? updates.label : "What type of work?";
498
+ return func(
499
+ merge(
500
+ {
501
+ label,
502
+ name: scope ? scope + ":" + "Cabinet_Work_Type" : "Cabinet_Work_Type",
503
+ options: ["Install", "Refinish", "Reface", "Repair", "Not Sure or Other"],
504
+ },
505
+ updates
506
+ )
507
+ )
508
+ };
377
509
 
378
- const cabinetWorkType$1 = (scope) => verticalRadio({
379
- name: scope ? scope + ':' + 'Cabinet_Work_Type' : 'Cabinet_Work_Type',
380
- // label: 'What type of work do you need?',
381
- options: [
382
- 'Install',
383
- 'Refinish',
384
- 'Reface',
385
- 'Repair',
386
- 'Not Sure or Other'
387
- ]
388
- });
510
+ const carpentrySubtype$1 = (scope, vertical, updates = {}) => {
511
+ const func = vertical ? verticalSelect : sbsSelect;
512
+ const label = vertical ? updates.label : "What carpentry job type?";
513
+ return func(
514
+ merge(
515
+ {
516
+ label,
517
+ name: scope ? scope + ":" + "Carpentry_Subtype" : "Carpentry_Subtype",
518
+ options: [
519
+ "Closets",
520
+ "Custom Furniture",
521
+ "Built-ins",
522
+ "Framing",
523
+ "Interior Trim",
524
+ "Exterior Trim",
525
+ "Windows",
526
+ "Stairways and Railings",
527
+ "Gazebo or Pergola",
528
+ "Multiple Jobs",
529
+ "Not Sure or Other",
530
+ ],
531
+ },
532
+ updates
533
+ )
534
+ )
535
+ };
389
536
 
390
- const carpentrySubtype$1 = (scope) => verticalSelect({
391
- name: scope ? scope + ':' + 'Carpentry_Subtype' : 'Carpentry_Subtype',
392
- // label: 'What type of carpentry work?',
393
- options: [
394
- 'Closets',
395
- 'Custom Furniture',
396
- 'Built-ins',
397
- 'Framing',
398
- 'Interior Trim',
399
- 'Exterior Trim',
400
- 'Windows',
401
- 'Stairways and Railings',
402
- 'Gazebo or Pergola',
403
- 'Multiple Jobs',
404
- 'Not Sure or Other'
405
- ]
406
- });
537
+ const carpetWorkType$1 = (scope, vertical, updates = {}) => {
538
+ const func = vertical ? verticalRadio : sbsRadio;
539
+ const label = vertical ? updates.label : "What type of work?";
540
+ return func(
541
+ merge(
542
+ {
543
+ label,
544
+ name: scope ? scope + ":" + "Carpet_Work_Type" : "Carpet_Work_Type",
545
+ options: ["Install or Replace", "Repair", "Cleaning", "Not Sure or Other"],
546
+ },
547
+ updates
548
+ )
549
+ )
550
+ };
407
551
 
408
- const carpetWorkType$1 = (scope) => verticalRadio({
409
- name: scope ? scope + ':' + 'Carpet_Work_Type' : 'Carpet_Work_Type',
410
- // label: 'What type of work do you need?',
411
- options: [
412
- 'Install or Replace',
413
- 'Repair',
414
- 'Cleaning',
415
- 'Not Sure or Other'
416
- ]
417
- });
552
+ const cleaningSubtype$1 = (scope, vertical, updates = {}) => {
553
+ const func = vertical ? verticalSelect : sbsSelect;
554
+ const label = vertical ? updates.label : "What type of cleaning?";
555
+ return func(
556
+ merge(
557
+ {
558
+ label,
559
+ name: scope ? scope + ":" + "Cleaning_Subtype" : "Cleaning_Subtype",
560
+ options: [
561
+ "Whole Home",
562
+ "Office",
563
+ "Carpets",
564
+ "Windows",
565
+ "Air Ducts or Vents",
566
+ "Chimney",
567
+ "Deck",
568
+ "Tile or Grout",
569
+ "Garage",
570
+ "Shed",
571
+ "Gutters",
572
+ "Pool",
573
+ "Junk Removal",
574
+ "Not Sure or Other",
575
+ ],
576
+ },
577
+ updates
578
+ )
579
+ )
580
+ };
418
581
 
419
- const cleaningSubtype$1 = (scope) => verticalSelect({
420
- name: scope ? scope + ':' + 'Cleaning_Subtype' : 'Cleaning_Subtype',
421
- // label: 'What type of cleaning?',
422
- options: [
423
- 'Whole Home',
424
- 'Office',
425
- 'Carpets',
426
- 'Windows',
427
- 'Air Ducts or Vents',
428
- 'Chimney',
429
- 'Deck',
430
- 'Tile or Grout',
431
- 'Garage',
432
- 'Shed',
433
- 'Gutters',
434
- 'Pool',
435
- 'Junk Removal',
436
- 'Not Sure or Other'
437
- ]
438
- });
582
+ const countertopMaterial$1 = (scope, vertical, updates = {}) => {
583
+ const func = vertical ? verticalSelect : sbsSelect;
584
+ const label = vertical ? updates.label : "What type of countertop?";
585
+ return func(
586
+ merge(
587
+ {
588
+ label,
589
+ name: scope ? scope + ":" + "Countertop_Material" : "Countertop_Material",
590
+ options: [
591
+ "Concrete",
592
+ "Granite",
593
+ "Laminate",
594
+ "Marble",
595
+ "Quartz",
596
+ "Stainless Steel",
597
+ "Wood",
598
+ "Not Sure or Other",
599
+ ],
600
+ },
601
+ updates
602
+ )
603
+ )
604
+ };
439
605
 
440
- const countertopMaterial$1 = (scope) => verticalSelect({
441
- name: scope ? scope + ':' + 'Countertop_Material' : 'Countertop_Material',
442
- // label: 'What type of countertop?',
443
- options: [
444
- 'Concrete',
445
- 'Granite',
446
- 'Laminate',
447
- 'Marble',
448
- 'Quartz',
449
- 'Stainless Steel',
450
- 'Wood',
451
- 'Not Sure or Other'
452
- ]
453
- });
606
+ const deckWorkType$1 = (scope, vertical, updates = {}) => {
607
+ const func = vertical ? verticalRadio : sbsRadio;
608
+ const label = vertical ? updates.label : "What type of work?";
609
+ return func(
610
+ merge(
611
+ {
612
+ label,
613
+ name: scope ? scope + ":" + "Deck_Work_Type" : "Deck_Work_Type",
614
+ options: ["Paint or Stain", "Install or Replace", "Repair", "Not Sure or Other"],
615
+ },
616
+ updates
617
+ )
618
+ )
619
+ };
454
620
 
455
- const deckWorkType$1 = (scope) => verticalRadio({
456
- name: scope ? scope + ':' + 'Deck_Work_Type' : 'Deck_Work_Type',
457
- // label: 'What type of work do you need?',
458
- options: [
459
- 'Paint or Stain',
460
- 'Install or Replace',
461
- 'Repair',
462
- 'Not Sure or Other'
463
- ]
464
- });
621
+ const demolitionSubtype$1 = (scope, vertical, updates = {}) => {
622
+ const func = vertical ? verticalRadio : sbsRadio;
623
+ const label = vertical ? updates.label : "What type of demolition?";
624
+ return func(
625
+ merge(
626
+ {
627
+ label,
628
+ name: scope ? scope + ":" + "Demolition_Subtype" : "Demolition_Subtype",
629
+ options: ["Whole Structure", "Partial Home", "Shed", "Not Sure or Other"],
630
+ },
631
+ updates
632
+ )
633
+ )
634
+ };
465
635
 
466
- const demolitionSubtype$1 = (scope) => verticalRadio({
467
- name: scope ? scope + ':' + 'Demolition_Subtype' : 'Demolition_Subtype',
468
- // label: 'What type of demolition?',
469
- options: [
470
- 'Whole Structure',
471
- 'Partial Home',
472
- 'Shed',
473
- 'Not Sure or Other'
474
- ]
475
- });
476
-
477
- const doorSubtype$1 = (scope) => verticalRadio({
478
- name: scope ? scope + ':' + 'Door_Subtype' : 'Door_Subtype',
479
- // label: 'What type of door?',
480
- options: [
481
- 'Interior',
482
- 'Exterior',
483
- 'Garage',
484
- 'Sliding',
485
- 'Storm',
486
- 'Not Sure or Other'
487
- ]
488
- });
636
+ const doorSubtype$1 = (scope, vertical, updates = {}) => {
637
+ const func = vertical ? verticalRadio : sbsRadio;
638
+ const label = vertical ? updates.label : "What type of door?";
639
+ return func(
640
+ merge(
641
+ {
642
+ label,
643
+ name: scope ? scope + ":" + "Door_Subtype" : "Door_Subtype",
644
+ options: ["Interior", "Exterior", "Garage", "Sliding", "Storm", "Not Sure or Other"],
645
+ },
646
+ updates
647
+ )
648
+ )
649
+ };
489
650
 
490
- const drivewayWorkType$1 = (scope) => verticalRadio({
491
- name: scope ? scope + ':' + 'Driveway_Work_Type' : 'Driveway_Work_Type',
492
- // label: 'What type of work do you need?',
493
- options: [
494
- 'Install or Replace',
495
- 'Repair',
496
- 'Sealing',
497
- 'Not Sure or Other'
498
- ]
499
- });
651
+ const drivewayWorkType$1 = (scope, vertical, updates = {}) => {
652
+ const func = vertical ? verticalRadio : sbsRadio;
653
+ const label = vertical ? updates.label : "What type of work?";
654
+ return func(
655
+ merge(
656
+ {
657
+ label,
658
+ name: scope ? scope + ":" + "Driveway_Work_Type" : "Driveway_Work_Type",
659
+ options: ["Install or Replace", "Repair", "Sealing", "Not Sure or Other"],
660
+ },
661
+ updates
662
+ )
663
+ )
664
+ };
500
665
 
501
- const drivewayMaterial$1 = (scope) => verticalRadio({
502
- name: scope ? scope + ':' + 'Driveway_Material' : 'Driveway_Material',
503
- // label: 'What type of driveway material?',
504
- options: [
505
- 'Asphalt',
506
- 'Brick',
507
- 'Cobblestone',
508
- 'Pebble',
509
- 'Concrete',
510
- 'Pavers',
511
- 'Not Sure or Other'
512
- ]
513
- });
666
+ const drivewayMaterial$1 = (scope, vertical, updates = {}) => {
667
+ const func = vertical ? verticalRadio : sbsRadio;
668
+ const label = vertical ? updates.label : "What driveway material?";
669
+ return func(
670
+ merge(
671
+ {
672
+ label,
673
+ name: scope ? scope + ":" + "Driveway_Material" : "Driveway_Material",
674
+ options: ["Asphalt", "Brick", "Cobblestone", "Pebble", "Concrete", "Pavers", "Not Sure or Other"],
675
+ },
676
+ updates
677
+ )
678
+ )
679
+ };
514
680
 
515
- const wallSurfaceType$1 = (scope) => verticalRadio({
516
- name: scope ? scope + ':' + 'Wall_Surface_Type' : 'Wall_Surface_Type',
517
- // label: 'What type of surface?',
518
- options: [
519
- 'Drywall',
520
- 'Plaster',
521
- 'Stucco',
522
- 'Not Sure or Other'
523
- ]
524
- });
681
+ const wallSurfaceType$1 = (scope, vertical, updates = {}) => {
682
+ const func = vertical ? verticalRadio : sbsRadio;
683
+ const label = vertical ? updates.label : "What surface type?";
684
+ return func(
685
+ merge(
686
+ {
687
+ label,
688
+ name: scope ? scope + ":" + "Wall_Surface_Type" : "Wall_Surface_Type",
689
+ options: ["Drywall", "Plaster", "Stucco", "Not Sure or Other"],
690
+ },
691
+ updates
692
+ )
693
+ )
694
+ };
525
695
 
526
- const electricalSubtype$1 = (scope) => verticalSelect({
527
- name: scope ? scope + ':' + 'Electrical_Subtype' : 'Electrical_Subtype',
528
- // label: 'What type of electrical work do you need?',
529
- options: [
530
- 'Electrical Panel',
531
- 'Outlets and Fixtures',
532
- 'Home Theater',
533
- 'Exhaust Fans',
534
- 'Ceiling Fans',
535
- 'EV Charging Station',
536
- 'Addition or Remodel',
537
- 'Generator',
538
- 'Outdoor Lighting',
539
- 'Pet Fence',
540
- 'Thermostat',
541
- 'Wall or Baseboard Heater',
542
- 'Holiday Lighting',
543
- 'Not Sure or Other'
544
- ]
545
- });
696
+ const electricalSubtype$1 = (scope, vertical, updates = {}) => {
697
+ const func = vertical ? verticalSelect : sbsSelect;
698
+ const label = vertical ? updates.label : "What electrical job type?";
699
+ return func(
700
+ merge(
701
+ {
702
+ label,
703
+ name: scope ? scope + ":" + "Electrical_Subtype" : "Electrical_Subtype",
704
+ options: [
705
+ "Electrical Panel",
706
+ "Outlets and Fixtures",
707
+ "Home Theater",
708
+ "Exhaust Fans",
709
+ "Ceiling Fans",
710
+ "EV Charging Station",
711
+ "Addition or Remodel",
712
+ "Generator",
713
+ "Outdoor Lighting",
714
+ "Pet Fence",
715
+ "Thermostat",
716
+ "Wall or Baseboard Heater",
717
+ "Holiday Lighting",
718
+ "Not Sure or Other",
719
+ ],
720
+ },
721
+ updates
722
+ )
723
+ )
724
+ };
546
725
 
547
- const fenceMaterial$1 = (scope) => verticalRadio({
548
- name: scope ? scope + ':' + 'Fence_Material' : 'Fence_Material',
549
- // label: 'What type of fence material?',
550
- options: [
551
- 'Aluminum',
552
- 'Chain Link',
553
- 'Wood',
554
- 'Wire',
555
- 'Vinyl',
556
- 'Iron',
557
- 'Not Sure or Other'
558
- ]
559
- });
726
+ const fenceMaterial$1 = (scope, vertical, updates = {}) => {
727
+ const func = vertical ? verticalRadio : sbsRadio;
728
+ const label = vertical ? updates.label : "What fence material?";
729
+ return func(
730
+ merge(
731
+ {
732
+ label,
733
+ name: scope ? scope + ":" + "Fence_Material" : "Fence_Material",
734
+ options: ["Aluminum", "Chain Link", "Wood", "Wire", "Vinyl", "Iron", "Not Sure or Other"],
735
+ },
736
+ updates
737
+ )
738
+ )
739
+ };
560
740
 
561
- const flooringMaterial$1 = (scope) => verticalRadio({
562
- name: scope ? scope + ':' + 'Flooring_Material' : 'Flooring_Material',
563
- // label: 'What type of flooring material?',
564
- options: [
565
- 'Carpet',
566
- 'Concrete',
567
- 'Hardwood',
568
- 'Laminate',
569
- 'Linoleum',
570
- 'Slate',
571
- 'Tile',
572
- 'Vinyl',
573
- 'Not Sure or Other'
574
- ]
575
- });
741
+ const flooringMaterial$1 = (scope, vertical, updates = {}) => {
742
+ const func = vertical ? verticalRadio : sbsSelect;
743
+ const label = vertical ? updates.label : "What flooring material?";
744
+ return func(
745
+ merge(
746
+ {
747
+ label,
748
+ name: scope ? scope + ":" + "Flooring_Material" : "Flooring_Material",
749
+ options: [
750
+ "Carpet",
751
+ "Concrete",
752
+ "Hardwood",
753
+ "Laminate",
754
+ "Linoleum",
755
+ "Slate",
756
+ "Tile",
757
+ "Vinyl",
758
+ "Not Sure or Other",
759
+ ],
760
+ },
761
+ updates
762
+ )
763
+ )
764
+ };
576
765
 
577
- const generalContractorSubtype$1 = (scope) => verticalRadio({
578
- name: scope ? scope + ':' + 'General_Contractor_Subtype' : 'General_Contractor_Subtype',
579
- // label: 'What type of general contractor work do you need?',
580
- options: [
581
- 'Remodeling',
582
- 'Additions',
583
- 'Major Home Repairs',
584
- 'Excavation',
585
- 'Demolition',
586
- 'Dumpster Rental',
587
- 'Not Sure or Other'
588
- ]
589
- });
766
+ const generalContractorSubtype$1 = (scope, vertical, updates = {}) => {
767
+ const func = vertical ? col2RadioCenter : sbsRadio;
768
+ const label = vertical ? updates.label : "What contractor job type?";
769
+ return func(
770
+ merge(
771
+ {
772
+ label,
773
+ name: scope ? scope + ":" + "General_Contractor_Subtype" : "General_Contractor_Subtype",
774
+ options: [
775
+ "Remodeling",
776
+ "Additions",
777
+ "Major Home Repairs",
778
+ "Excavation",
779
+ "Demolition",
780
+ "Dumpster Rental",
781
+ "Not Sure or Other",
782
+ ],
783
+ },
784
+ updates
785
+ )
786
+ )
787
+ };
590
788
 
591
- const gutterMaterial$1 = (scope) => verticalRadio({
592
- name: scope ? scope + ':' + 'Gutter_Material' : 'Gutter_Material',
593
- // label: 'What type of gutter material?',
594
- options: [
595
- 'Galvanized',
596
- 'Metal',
597
- 'PVC',
598
- 'Wood',
599
- 'Not Sure or Other'
600
- ]
601
- });
789
+ const gutterMaterial$1 = (scope, vertical, updates = {}) => {
790
+ const func = vertical ? col2RadioCenter : sbsRadio;
791
+ const label = vertical ? updates.label : "What gutter material?";
792
+ return func(
793
+ merge(
794
+ {
795
+ label,
796
+ name: scope ? scope + ":" + "Gutter_Material" : "Gutter_Material",
797
+ options: ["Galvanized", "Metal", "PVC", "Wood", "Not Sure or Other"],
798
+ },
799
+ updates
800
+ )
801
+ )
802
+ };
602
803
 
603
- const guttersWorkType$1 = (scope) => verticalRadio({
604
- name: scope ? scope + ':' + 'Gutters_Work_Type' : 'Gutters_Work_Type',
605
- options: [
606
- 'Install or Replace',
607
- 'Repair',
608
- 'Cleaning',
609
- 'Not Sure or Other'
610
- ]
611
- });
804
+ const gutterWorkType$1 = (scope, vertical, updates = {}) => {
805
+ const func = vertical ? verticalRadio : sbsRadio;
806
+ const label = vertical ? updates.label : "What type of work?";
807
+ return func(
808
+ merge(
809
+ {
810
+ label,
811
+ name: scope ? scope + ":" + "Gutter_Work_Type" : "Gutter_Work_Type",
812
+ options: ["Install or Replace", "Repair", "Cleaning", "Not Sure or Other"],
813
+ },
814
+ updates
815
+ )
816
+ )
817
+ };
612
818
 
613
- const smartHomeSubtype$1 = (scope) => verticalRadio({
614
- name: scope ? scope + ':' + 'Smart_Home_Subtype' : 'Smart_Home_Subtype',
615
- // label: 'What type of smart home work do you need?',
616
- options: [
617
- 'Thermostats',
618
- 'Video Doorbells',
619
- 'Camera Systems',
620
- 'Lighting',
621
- 'Speaker Systems',
622
- 'Not Sure or Other'
623
- ]
624
- });
819
+ const smartHomeSubtype$1 = (scope, vertical, updates = {}) => {
820
+ const func = vertical ? verticalRadio : sbsRadio;
821
+ const label = vertical ? updates.label : "What smart home job type?";
822
+ return func(
823
+ merge(
824
+ {
825
+ label,
826
+ name: scope ? scope + ":" + "Smart_Home_Subtype" : "Smart_Home_Subtype",
827
+ options: [
828
+ "Thermostats",
829
+ "Video Doorbells",
830
+ "Camera Systems",
831
+ "Lighting",
832
+ "Speaker Systems",
833
+ "Not Sure or Other",
834
+ ],
835
+ },
836
+ updates
837
+ )
838
+ )
839
+ };
625
840
 
626
- const homeOrganizationSubtype$1 = (scope) => verticalRadio({
627
- name: scope ? scope + ':' + 'Home_Organization_Subtype' : 'Home_Organization_Subtype',
628
- // label: 'What type of home organization work do you need?',
629
- options: [
630
- 'Packing or Unpacking',
631
- 'Room Organization',
632
- 'Shed Organization',
633
- 'Storage Solutions',
634
- 'Decluttering',
635
- 'Not Sure or Other'
636
- ]
637
- });
841
+ const homeOrganizationSubtype$1 = (scope, vertical, updates = {}) => {
842
+ const func = vertical ? verticalRadio : sbsRadio;
843
+ const label = vertical ? updates.label : "What home organization job?";
844
+ return func(
845
+ merge(
846
+ {
847
+ label,
848
+ name: scope ? scope + ":" + "Home_Organization_Subtype" : "Home_Organization_Subtype",
849
+ options: [
850
+ "Packing or Unpacking",
851
+ "Room Organization",
852
+ "Shed Organization",
853
+ "Storage Solutions",
854
+ "Decluttering",
855
+ "Not Sure or Other",
856
+ ],
857
+ },
858
+ updates
859
+ )
860
+ )
861
+ };
638
862
 
639
- const numberOfRooms$1 = (scope) => verticalRadio({
640
- name: scope ? scope + ':' + 'Number_Of_Rooms' : 'Number_Of_Rooms',
641
- // label: 'How many rooms?',
642
- options: [
643
- '1',
644
- '2',
645
- '3',
646
- '4',
647
- '5 or more'
648
- ]
649
- });
863
+ const numberOfRooms$1 = (scope, vertical, updates = {}) => {
864
+ const func = vertical ? verticalRadio : sbsRadio;
865
+ const label = vertical ? updates.label : "How many rooms?";
866
+ return func(
867
+ merge(
868
+ {
869
+ label,
870
+ name: scope ? scope + ":" + "Number_Of_Rooms" : "Number_Of_Rooms",
871
+ options: ["1-2", "3-4", "4-5", "5-6", "6+"],
872
+ },
873
+ updates
874
+ )
875
+ )
876
+ };
650
877
 
651
- const homeTheaterSubtype$1 = (scope) => verticalRadio({
652
- name: scope ? scope + ':' + 'Home_Theater_Subtype' : 'Home_Theater_Subtype',
653
- // label: 'What type of home theater work do you need?',
654
- options: [
655
- 'Hang TV',
656
- 'Install Sound System',
657
- 'Wiring',
658
- 'Troubleshooting',
659
- 'Not Sure or Other'
660
- ]
661
- });
878
+ const homeTheaterSubtype$1 = (scope, vertical, updates = {}) => {
879
+ const func = vertical ? verticalRadio : sbsRadio;
880
+ const label = vertical ? updates.label : "What home theater job?";
881
+ return func(
882
+ merge(
883
+ {
884
+ label,
885
+ name: scope ? scope + ":" + "Home_Theater_Subtype" : "Home_Theater_Subtype",
886
+ options: ["Hang TV", "Install Sound System", "Wiring", "Troubleshooting", "Not Sure or Other"],
887
+ },
888
+ updates
889
+ )
890
+ )
891
+ };
662
892
 
663
- const heatingCoolingSubtype$1 = (scope) => verticalSelect({
664
- name: scope ? scope + ':' + 'Heating_Cooling_Subtype' : 'Heating_Cooling_Subtype',
665
- // label: 'What type of heating and cooling work do you need?',
666
- options: [
667
- 'Central Air',
668
- 'Humidifier',
669
- 'Ducts and Vents',
670
- 'Furnace',
671
- 'Heat Pump',
672
- 'Radiant Floor',
673
- 'Swamp Cooler',
674
- 'Not Sure or Other'
675
- ]
676
- });
893
+ const heatingCoolingSubtype$1 = (scope, vertical, updates = {}) => {
894
+ const func = vertical ? verticalSelect : sbsSelect;
895
+ const label = vertical ? updates.label : "What heating or cooling job?";
896
+ return func(
897
+ merge(
898
+ {
899
+ label,
900
+ name: scope ? scope + ":" + "Heating_Cooling_Subtype" : "Heating_Cooling_Subtype",
901
+ options: [
902
+ "Central Air",
903
+ "Humidifier",
904
+ "Ducts and Vents",
905
+ "Furnace",
906
+ "Heat Pump",
907
+ "Radiant Floor",
908
+ "Swamp Cooler",
909
+ "Not Sure or Other",
910
+ ],
911
+ },
912
+ updates
913
+ )
914
+ )
915
+ };
677
916
 
678
- const fuelSource$1 = (scope) => verticalRadio({
679
- name: scope ? scope + ':' + 'Fuel_Source' : 'Fuel_Source',
680
- // label: 'What is the fuel source?',
681
- options: [
682
- 'Gas',
683
- 'Oil',
684
- 'Electric',
685
- 'Propane',
686
- 'Not Sure or Other'
687
- ]
688
- });
917
+ const fuelSource$1 = (scope, vertical, updates = {}) => {
918
+ const func = vertical ? verticalRadio : sbsSelect;
919
+ const label = vertical ? updates.label : "What is the fuel source?";
920
+ return func(
921
+ merge(
922
+ {
923
+ label,
924
+ name: scope ? scope + ":" + "Fuel_Source" : "Fuel_Source",
925
+ options: ["Gas", "Oil", "Electric", "Propane", "Not Sure or Other"],
926
+ },
927
+ updates
928
+ )
929
+ )
930
+ };
689
931
 
690
- const insulationSubtype$1 = (scope) => verticalRadio({
691
- name: scope ? scope + ':' + 'Insulation_Subtype' : 'Insulation_Subtype',
692
- // label: 'What type of insulation work do you need?',
693
- options: [
694
- 'Batt or Roll',
695
- 'Spray Foam',
696
- 'Blown-in',
697
- 'Reflective',
698
- 'Not Sure or Other'
699
- ]
700
- });
932
+ const insulationSubtype$1 = (scope, vertical, updates = {}) => {
933
+ const func = vertical ? verticalRadio : sbsRadio;
934
+ const label = vertical ? updates.label : "What type of insulation job?";
935
+ return func(
936
+ merge(
937
+ {
938
+ label,
939
+ name: scope ? scope + ":" + "Insulation_Subtype" : "Insulation_Subtype",
940
+ options: ["Batt or Roll", "Spray Foam", "Blown-in", "Reflective", "Not Sure or Other"],
941
+ },
942
+ updates
943
+ )
944
+ )
945
+ };
701
946
 
702
- const landscapingSubtype$1 = (scope) => verticalSelect({
703
- name: scope ? scope + ':' + 'Landscaping_Subtype' : 'Landscaping_Subtype',
704
- // label: 'What type of landscaping work do you need?',
705
- options: [
706
- 'Lawn Mowing',
707
- 'Lawn Care or Fertilization',
708
- 'Yard or Leaf Cleanup',
709
- 'Patios or Walkways',
710
- 'Stonework',
711
- 'Architects',
712
- 'Landscape Construction',
713
- 'Outdoor Lighting',
714
- 'Grading',
715
- 'Materials Delivery',
716
- 'Spinklers'
717
- ]
718
- });
947
+ const landscapingSubtype$1 = (scope, vertical, updates = {}) => {
948
+ const func = vertical ? verticalSelect : sbsSelect;
949
+ const label = vertical ? updates.label : "What landscaping job?";
950
+ return func(
951
+ merge(
952
+ {
953
+ label,
954
+ name: scope ? scope + ":" + "Landscaping_Subtype" : "Landscaping_Subtype",
955
+ options: [
956
+ "Lawn Mowing",
957
+ "Lawn Care or Fertilization",
958
+ "Yard or Leaf Cleanup",
959
+ "Patios or Walkways",
960
+ "Stonework",
961
+ "Architects",
962
+ "Landscape Construction",
963
+ "Outdoor Lighting",
964
+ "Grading",
965
+ "Materials Delivery",
966
+ "Spinklers",
967
+ ],
968
+ },
969
+ updates
970
+ )
971
+ )
972
+ };
719
973
 
720
- const masonrySubtype$1 = (scope) => verticalRadio({
721
- name: scope ? scope + ':' + 'Masonry_Subtype' : 'Masonry_Subtype',
722
- // label: 'What type of masonry work do you need?',
723
- options: [
724
- 'Driveways',
725
- 'Walkways',
726
- 'Floors',
727
- 'Walls',
728
- 'Facades',
729
- 'Material Delivery',
730
- 'Not Sure or Other'
731
- ]
732
- });
974
+ const masonrySubtype$1 = (scope, vertical, updates = {}) => {
975
+ const func = vertical ? verticalRadio : sbsSelect;
976
+ const label = vertical ? updates.label : "What masonry job?";
977
+ return func(
978
+ merge(
979
+ {
980
+ label,
981
+ name: scope ? scope + ":" + "Masonry_Subtype" : "Masonry_Subtype",
982
+ options: ["Driveways", "Walkways", "Floors", "Walls", "Facades", "Material Delivery", "Not Sure or Other"],
983
+ },
984
+ updates
985
+ )
986
+ )
987
+ };
733
988
 
734
- const masonryMaterial$1 = (scope) => verticalRadio({
735
- name: scope ? scope + ':' + 'Masonry_Material' : 'Masonry_Material',
736
- // label: 'What type of masonry material?',
737
- options: [
738
- 'Brick or Stone',
739
- 'Pavers',
740
- 'Concrete',
741
- 'Not Sure or Other'
742
- ]
743
- });
989
+ const masonryMaterial$1 = (scope, vertical, updates = {}) => {
990
+ const func = vertical ? verticalRadio : sbsRadio;
991
+ const label = vertical ? updates.label : "What masonry material?";
992
+ return func(
993
+ merge(
994
+ {
995
+ label,
996
+ name: scope ? scope + ":" + "Masonry_Material" : "Masonry_Material",
997
+ options: ["Brick or Stone", "Pavers", "Concrete", "Not Sure or Other"],
998
+ },
999
+ updates
1000
+ )
1001
+ )
1002
+ };
744
1003
 
745
- const masonryWorkType$1 = (scope) => verticalRadio({
746
- name: scope ? scope + ':' + 'Masonry_Work_Type' : 'Masonry_Work_Type',
747
- // label: 'What type of masonry work do you need?',
748
- options: [
749
- 'Install or Replace',
750
- 'Repoint Brick or Stone',
751
- 'Repair',
752
- 'Not Sure or Other'
753
- ]
754
- });
1004
+ const masonryWorkType$1 = (scope, vertical, updates = {}) => {
1005
+ const func = vertical ? verticalRadio : sbsRadio;
1006
+ const label = vertical ? updates.label : "What type of work?";
1007
+ return func(
1008
+ merge(
1009
+ {
1010
+ label,
1011
+ name: scope ? scope + ":" + "Masonry_Work_Type" : "Masonry_Work_Type",
1012
+ options: ["Install or Replace", "Repoint Brick or Stone", "Repair", "Not Sure or Other"],
1013
+ },
1014
+ updates
1015
+ )
1016
+ )
1017
+ };
755
1018
 
756
- const restorationSubtype$1 = (scope) => verticalRadio({
757
- name: scope ? scope + ':' + 'Restoration_Subtype' : 'Restoration_Subtype',
758
- // label: 'What type of restoration work do you need?',
759
- options: [
760
- 'Mold Remediation',
761
- 'Fire Damage',
762
- 'Water Damage',
763
- 'Not Sure or Other'
764
- ]
765
- });
1019
+ const restorationSubtype$1 = (scope, vertical, updates = {}) => {
1020
+ const func = vertical ? verticalSelect : sbsSelect;
1021
+ const label = vertical ? updates.label : "What restoration job?";
1022
+ return func(
1023
+ merge(
1024
+ {
1025
+ label,
1026
+ name: scope ? scope + ":" + "Restoration_Subtype" : "Restoration_Subtype",
1027
+ options: ["Mold Remediation", "Fire Damage", "Water Damage", "Not Sure or Other"],
1028
+ },
1029
+ updates
1030
+ )
1031
+ )
1032
+ };
766
1033
 
767
1034
  // TODO: need to finalize support for moving
768
1035
 
@@ -800,227 +1067,294 @@ const restorationSubtype$1 = (scope) => verticalRadio({
800
1067
  // ]
801
1068
  // })
802
1069
 
803
- const paintingSubtype$1 = (scope) => verticalSelect({
804
- name: scope ? scope + ':' + 'Painting_Subtype' : 'Painting_Subtype',
805
- // label: 'What type of painting work do you need?',
806
- options: [
807
- 'Whole Exterior',
808
- 'Exterior Touch-up',
809
- 'Interior Rooms',
810
- 'Interior Touch-up',
811
- 'Ceilings',
812
- 'Deck',
813
- 'Shed',
814
- 'Cabinets',
815
- 'Not Sure or Other'
816
- ]
817
- });
818
-
819
- const paintingRooms$1 = (scope) => verticalRadio({
820
- name: scope ? scope + ':' + 'Painting_Rooms' : 'Painting_Rooms',
821
- // label: 'How many rooms need painting?',
822
- options: [
823
- '1-2',
824
- '3-4',
825
- '4-5',
826
- '5-6',
827
- '6+'
828
- ]
829
- });
1070
+ const paintingSubtype$1 = (scope, vertical, updates = {}) => {
1071
+ const func = vertical ? verticalSelect : sbsSelect;
1072
+ const label = vertical ? updates.label : "What painting job type?";
1073
+ return func(
1074
+ merge(
1075
+ {
1076
+ label,
1077
+ name: scope ? scope + ":" + "Painting_Subtype" : "Painting_Subtype",
1078
+ options: [
1079
+ "Whole Exterior",
1080
+ "Exterior Touch-up",
1081
+ "Interior Rooms",
1082
+ "Interior Touch-up",
1083
+ "Ceilings",
1084
+ "Deck",
1085
+ "Shed",
1086
+ "Cabinets",
1087
+ "Not Sure or Other",
1088
+ ],
1089
+ },
1090
+ updates
1091
+ )
1092
+ )
1093
+ };
830
1094
 
831
- const pestControlSubtype$1 = (scope) => verticalSelect({
832
- name: scope ? scope + ':' + 'Pest_Control_Subtype' : 'Pest_Control_Subtype',
833
- // label: 'What type of pest control work do you need?',
834
- options: [
835
- 'Bed Bugs',
836
- 'Flying Animals',
837
- 'Insects',
838
- 'Rodents',
839
- 'Small Animals',
840
- 'Bees',
841
- 'Termites',
842
- 'Not Sure or Other'
843
- ]
844
- });
1095
+ const pestControlSubtype$1 = (scope, vertical, updates = {}) => {
1096
+ const func = vertical ? verticalSelect : sbsSelect;
1097
+ const label = vertical ? updates.label : "What pest control job type?";
1098
+ return func(
1099
+ merge(
1100
+ {
1101
+ label,
1102
+ name: scope ? scope + ":" + "Pest_Control_Subtype" : "Pest_Control_Subtype",
1103
+ options: [
1104
+ "Bed Bugs",
1105
+ "Flying Animals",
1106
+ "Insects",
1107
+ "Rodents",
1108
+ "Small Animals",
1109
+ "Bees",
1110
+ "Termites",
1111
+ "Not Sure or Other",
1112
+ ],
1113
+ },
1114
+ updates
1115
+ )
1116
+ )
1117
+ };
845
1118
 
846
- const poolsWorkType$1 = (scope) => verticalRadio({
847
- name: scope ? scope + ':' + 'Pools_Work_Type' : 'Pools_Work_Type',
848
- // label: 'What type of pool work do you need?',
849
- options: [
850
- 'Install or Replace',
851
- 'Repair',
852
- 'Cleaning',
853
- 'Close or Open Pool',
854
- 'Not Sure or Other'
855
- ]
856
- });
1119
+ const poolsWorkType$1 = (scope, vertical, updates = {}) => {
1120
+ const func = vertical ? verticalRadio : sbsRadio;
1121
+ const label = vertical ? updates.label : "What type of work?";
1122
+ return func(
1123
+ merge(
1124
+ {
1125
+ label,
1126
+ name: scope ? scope + ":" + "Pools_Work_Type" : "Pools_Work_Type",
1127
+ options: ["Install or Replace", "Repair", "Cleaning", "Close or Open Pool", "Not Sure or Other"],
1128
+ },
1129
+ updates
1130
+ )
1131
+ )
1132
+ };
857
1133
 
858
- const poolsSubtype$1 = (scope) => verticalSelect({
859
- name: scope ? scope + ':' + 'Pools_Subtype' : 'Pools_Subtype',
860
- // label: 'What type of pool do you have?',
861
- options: [
862
- 'Above Ground',
863
- 'Inground Concrete',
864
- 'Inground Fiberglass',
865
- 'Inground Vinyl',
866
- 'Inground Gunite',
867
- 'Pool Liners',
868
- 'Pool Filters',
869
- 'Not Sure or Other'
870
- ]
871
- });
1134
+ const poolsSubtype$1 = (scope, vertical, updates = {}) => {
1135
+ const func = vertical ? verticalSelect : sbsSelect;
1136
+ const label = vertical ? updates.label : "What type of pool?";
1137
+ return func(
1138
+ merge(
1139
+ {
1140
+ label,
1141
+ name: scope ? scope + ":" + "Pools_Subtype" : "Pools_Subtype",
1142
+ options: [
1143
+ "Above Ground",
1144
+ "Inground Concrete",
1145
+ "Inground Fiberglass",
1146
+ "Inground Vinyl",
1147
+ "Inground Gunite",
1148
+ "Pool Liners",
1149
+ "Pool Filters",
1150
+ "Not Sure or Other",
1151
+ ],
1152
+ },
1153
+ updates
1154
+ )
1155
+ )
1156
+ };
872
1157
 
873
- const plumbingSubtype$1 = (scope) => verticalSelect({
874
- name: scope ? scope + ':' + 'Plumbing_Subtype' : 'Plumbing_Subtype',
875
- // label: 'What type of plumbing work do you need?',
876
- options: [
877
- 'Tub or Shower',
878
- 'Drain',
879
- 'Sink',
880
- 'Toilet',
881
- 'Boiler',
882
- 'Water Heater',
883
- 'Sump Pump',
884
- 'Piping',
885
- 'Septic',
886
- 'Water Main',
887
- 'Hot Tub',
888
- 'Additions and Remodels',
889
- 'Not Sure or Other'
890
- ]
891
- });
1158
+ const plumbingSubtype$1 = (scope, vertical, updates = {}) => {
1159
+ const func = vertical ? verticalSelect : sbsSelect;
1160
+ const label = vertical ? updates.label : "What plumbing job type?";
1161
+ return func(
1162
+ merge(
1163
+ {
1164
+ label,
1165
+ name: scope ? scope + ":" + "Plumbing_Subtype" : "Plumbing_Subtype",
1166
+ options: [
1167
+ "Tub or Shower",
1168
+ "Drain",
1169
+ "Sink",
1170
+ "Toilet",
1171
+ "Boiler",
1172
+ "Water Heater",
1173
+ "Sump Pump",
1174
+ "Piping",
1175
+ "Septic",
1176
+ "Water Main",
1177
+ "Hot Tub",
1178
+ "Additions and Remodels",
1179
+ "Not Sure or Other",
1180
+ ],
1181
+ },
1182
+ updates
1183
+ )
1184
+ )
1185
+ };
892
1186
 
893
- const remodelingSubtype$1 = (scope) => verticalSelect({
894
- name: scope ? scope + ':' + 'Remodeling_Subtype' : 'Remodeling_Subtype',
895
- // label: 'What type of remodeling work do you need?',
896
- options: [
897
- 'Interior Designer',
898
- 'Interior Decorator',
899
- 'Kitchen Remodeling',
900
- 'Bathroom Remodeling',
901
- 'Garage Remodeling',
902
- 'Home Remodeling',
903
- 'Dumpster Rental',
904
- 'Landscape Architect',
905
- 'Outdoor Kitchen',
906
- 'Outdoor Enclosure',
907
- 'Additions',
908
- 'Not Sure or Other'
909
- ]
910
- });
1187
+ const remodelingSubtype$1 = (scope, vertical, updates = {}) => {
1188
+ const func = vertical ? verticalSelect : sbsSelect;
1189
+ const label = vertical ? updates.label : "What remodeling job?";
1190
+ return func(
1191
+ merge(
1192
+ {
1193
+ label,
1194
+ name: scope ? scope + ":" + "Remodeling_Subtype" : "Remodeling_Subtype",
1195
+ options: [
1196
+ "Interior Designer",
1197
+ "Interior Decorator",
1198
+ "Kitchen Remodeling",
1199
+ "Bathroom Remodeling",
1200
+ "Garage Remodeling",
1201
+ "Home Remodeling",
1202
+ "Dumpster Rental",
1203
+ "Landscape Architect",
1204
+ "Outdoor Kitchen",
1205
+ "Outdoor Enclosure",
1206
+ "Additions",
1207
+ "Not Sure or Other",
1208
+ ],
1209
+ },
1210
+ updates
1211
+ )
1212
+ )
1213
+ };
911
1214
 
912
- const roofingWorkType$1 = (scope) => verticalRadio({
913
- name: scope ? scope + ':' + 'Roofing_Work_Type' : 'Roofing_Work_Type',
914
- // label: 'What type of roofing work do you need?',
915
- options: [
916
- 'Install or Replace Roof',
917
- 'Repair Roof',
918
- 'Ice Dams',
919
- 'Gutters',
920
- 'Not Sure or Other'
921
- ]
922
- });
1215
+ const roofingWorkType$1 = (scope, vertical, updates = {}) => {
1216
+ const func = vertical ? verticalRadio : sbsRadio;
1217
+ const label = vertical ? updates.label : "What type of work?";
1218
+ return func(
1219
+ merge(
1220
+ {
1221
+ label,
1222
+ name: scope ? scope + ":" + "Roofing_Work_Type" : "Roofing_Work_Type",
1223
+ options: ["Install or Replace Roof", "Repair Roof", "Ice Dams", "Gutters", "Not Sure or Other"],
1224
+ },
1225
+ updates
1226
+ )
1227
+ )
1228
+ };
923
1229
 
924
- const roofingMaterial$1 = (scope) => verticalSelect({
925
- name: scope ? scope + ':' + 'Roofing_Material' : 'Roofing_Material',
926
- // label: 'What type of roofing material?',
927
- options: [
928
- 'Asphalt Shingle',
929
- 'Metal',
930
- 'Composite',
931
- 'Flat',
932
- 'Foam',
933
- 'Tile',
934
- 'Wood',
935
- 'Slate',
936
- 'Not Sure or Other'
937
- ]
938
- });
1230
+ const roofingMaterial$1 = (scope, vertical, updates = {}) => {
1231
+ const func = vertical ? verticalSelect : sbsSelect;
1232
+ const label = vertical ? updates.label : "What roofing material?";
1233
+ return func(
1234
+ merge(
1235
+ {
1236
+ label,
1237
+ name: scope ? scope + ":" + "Roofing_Material" : "Roofing_Material",
1238
+ options: [
1239
+ "Asphalt Shingle",
1240
+ "Metal",
1241
+ "Composite",
1242
+ "Flat",
1243
+ "Foam",
1244
+ "Tile",
1245
+ "Wood",
1246
+ "Slate",
1247
+ "Not Sure or Other",
1248
+ ],
1249
+ },
1250
+ updates
1251
+ )
1252
+ )
1253
+ };
939
1254
 
940
- const sidingMaterial$1 = (scope) => verticalRadio({
941
- name: scope ? scope + ':' + 'Siding_Material' : 'Siding_Material',
942
- // label: 'What type of siding material?',
943
- options: [
944
- 'Vinyl',
945
- 'Composite',
946
- 'Brick',
947
- 'Stone',
948
- 'Wood',
949
- 'Stucco',
950
- 'Not Sure or Other'
951
- ]
952
- });
1255
+ const sidingMaterial$1 = (scope, vertical, updates = {}) => {
1256
+ const func = vertical ? col2RadioCenter : sbsSelect;
1257
+ const label = vertical ? updates.label : "What siding material?";
1258
+ return func(
1259
+ merge(
1260
+ {
1261
+ label,
1262
+ name: scope ? scope + ":" + "Siding_Material" : "Siding_Material",
1263
+ options: ["Vinyl", "Composite", "Brick", "Stone", "Wood", "Stucco", "Not Sure or Other"],
1264
+ },
1265
+ updates
1266
+ )
1267
+ )
1268
+ };
953
1269
 
954
- const tilingSubtype$1 = (scope) => verticalRadio({
955
- name: scope ? scope + ':' + 'Tiling_Subtype' : 'Tiling_Subtype',
956
- // label: 'What type of tiling work do you need?',
957
- options: [
958
- 'Floor',
959
- 'Backsplash',
960
- 'Bathroom',
961
- 'Wall',
962
- 'Not Sure or Other'
963
- ]
964
- });
1270
+ const tilingSubtype$1 = (scope, vertical, updates = {}) => {
1271
+ const func = vertical ? verticalRadio : sbsRadio;
1272
+ const label = vertical ? updates.label : "What tiling job type?";
1273
+ return func(
1274
+ merge(
1275
+ {
1276
+ label,
1277
+ name: scope ? scope + ":" + "Tiling_Subtype" : "Tiling_Subtype",
1278
+ options: ["Floor", "Backsplash", "Bathroom", "Wall", "Not Sure or Other"],
1279
+ },
1280
+ updates
1281
+ )
1282
+ )
1283
+ };
965
1284
 
966
- const waterproofingSubtype$1 = (scope) => verticalRadio({
967
- name: scope ? scope + ':' + 'Waterproofing_Subtype' : 'Waterproofing_Subtype',
968
- // label: 'What type of waterproofing work do you need?',
969
- options: [
970
- 'Foundations',
971
- 'Basements',
972
- 'Drainage',
973
- 'Not Sure or Other'
974
- ]
975
- });
1285
+ const waterproofingSubtype$1 = (scope, vertical, updates = {}) => {
1286
+ const func = vertical ? verticalRadio : sbsRadio;
1287
+ const label = vertical ? updates.label : "What waterproofing job?";
1288
+ return func(
1289
+ merge(
1290
+ {
1291
+ label,
1292
+ name: scope ? scope + ":" + "Waterproofing_Subtype" : "Waterproofing_Subtype",
1293
+ options: ["Foundations", "Basements", "Drainage", "Not Sure or Other"],
1294
+ },
1295
+ updates
1296
+ )
1297
+ )
1298
+ };
976
1299
 
977
- const windowsWorkType$1 = (scope) => verticalRadio({
978
- name: scope ? scope + ':' + 'Windows_Work_Type' : 'Windows_Work_Type',
979
- // label: 'What type of windows work do you need?',
980
- options: [
981
- 'Install or Replace',
982
- 'Repair',
983
- 'Cleaning',
984
- 'Not Sure or Other'
985
- ]
986
- });
1300
+ const windowsWorkType$1 = (scope, vertical, updates = {}) => {
1301
+ const func = vertical ? verticalRadio : sbsRadio;
1302
+ const label = vertical ? updates.label : "What type of work?";
1303
+ return func(
1304
+ merge(
1305
+ {
1306
+ label,
1307
+ name: scope ? scope + ":" + "Windows_Work_Type" : "Windows_Work_Type",
1308
+ options: ["Install or Replace", "Repair", "Cleaning", "Not Sure or Other"],
1309
+ },
1310
+ updates
1311
+ )
1312
+ )
1313
+ };
987
1314
 
988
- const windowsSubtype$1 = (scope) => verticalSelect({
989
- name: scope ? scope + ':' + 'Windows_Subtype' : 'Windows_Subtype',
990
- // label: 'What type of windows do you have?',
991
- options: [
992
- 'Whole Windows',
993
- 'Frames',
994
- 'Glass',
995
- 'Hardware',
996
- 'Storm Windows',
997
- 'Screens',
998
- 'Not Sure or Other'
999
- ]
1000
- });
1315
+ const windowsSubtype$1 = (scope, vertical, updates = {}) => {
1316
+ const func = vertical ? verticalSelect : sbsSelect;
1317
+ const label = vertical ? updates.label : "What windows job type?";
1318
+ return func(
1319
+ merge(
1320
+ {
1321
+ label,
1322
+ name: scope ? scope + ":" + "Windows_Subtype" : "Windows_Subtype",
1323
+ options: ["Whole Windows", "Frames", "Glass", "Hardware", "Storm Windows", "Screens", "Not Sure or Other"],
1324
+ },
1325
+ updates
1326
+ )
1327
+ )
1328
+ };
1001
1329
 
1002
- const numberOfWindows$1 = (scope) => verticalRadio({
1003
- name: scope ? scope + ':' + 'Number_Of_Windows' : 'Number_Of_Windows',
1004
- // label: 'How many windows?',
1005
- options: [
1006
- '1',
1007
- '2',
1008
- '3-5',
1009
- '6+'
1010
- ]
1011
- });
1330
+ const numberOfWindows$1 = (scope, vertical, updates = {}) => {
1331
+ const func = vertical ? verticalRadio : sbsRadio;
1332
+ const label = vertical ? updates.label : "How many windows?";
1333
+ return func(
1334
+ merge(
1335
+ {
1336
+ label,
1337
+ name: scope ? scope + ":" + "Number_Of_Windows" : "Number_Of_Windows",
1338
+ options: ["1", "2", "3-5", "6+"],
1339
+ },
1340
+ updates
1341
+ )
1342
+ )
1343
+ };
1012
1344
 
1013
- const NEXT_ON_ENTER = '$onEnter($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))';
1014
- const NEXT_ON_INPUT = '$onInput($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))';
1345
+ const NEXT_ON_ENTER = "$onEnter($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))";
1346
+ const NEXT_ON_INPUT = "$onInput($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))";
1015
1347
 
1016
- const isInput = (n) => { return (n.type !== 'group' && n.type !== 'section' && n.type !== 'form' && n.$formkit !== 'hidden' && !n.children) };
1348
+ const isInput = (n) => {
1349
+ return n.type !== "group" && n.type !== "section" && n.type !== "form" && n.$formkit !== "hidden" && !n.children
1350
+ };
1017
1351
 
1018
1352
  const findLastInput = (n) => {
1019
1353
  if (isInput(n)) {
1020
1354
  return n
1021
1355
  }
1022
1356
  for (var i = n.children.length - 1; i >= 0; i--) {
1023
- if (typeof n.children === 'string') {
1357
+ if (typeof n.children === "string") {
1024
1358
  continue
1025
1359
  }
1026
1360
  const child = n.children[i];
@@ -1036,99 +1370,114 @@ const findLastInput = (n) => {
1036
1370
  };
1037
1371
 
1038
1372
  const secureIconDefault = {
1039
- $el: 'div',
1040
- if: '$activeStep === $lastStep()',
1373
+ $el: "div",
1374
+ if: "$activeStep === $lastStep()",
1041
1375
  attrs: {
1042
- class: 't-flex t-justify-center t-items-center t-text-sm t-text-gray-500'
1376
+ class: "t-flex t-justify-center t-items-center t-text-sm t-text-gray-500",
1043
1377
  },
1044
1378
  children: [
1045
1379
  {
1046
- $el: 'img',
1380
+ $el: "img",
1047
1381
  attrs: {
1048
- loading: 'lazy',
1049
- alt: '',
1382
+ loading: "lazy",
1383
+ alt: "",
1050
1384
  style: {
1051
- border: 0
1385
+ border: 0,
1052
1386
  },
1053
- width: '25',
1054
- height: '25',
1055
- src: 'https://d27hmee62k45vz.cloudfront.net/lock_icon_1.jpeg',
1056
- }
1387
+ width: "25",
1388
+ height: "25",
1389
+ src: "https://d27hmee62k45vz.cloudfront.net/lock_icon_1.jpeg",
1390
+ },
1057
1391
  },
1058
1392
  {
1059
- $el: 'span',
1060
- children: 'Secure & Encrypted',
1393
+ $el: "span",
1394
+ children: "Secure & Encrypted",
1061
1395
  attrs: {
1062
- class: 't-pl-2 t-pt-1 t-font-medium'
1063
- }
1064
- }
1065
- ]
1396
+ class: "t-pl-2 t-pt-1 t-font-medium",
1397
+ },
1398
+ },
1399
+ ],
1066
1400
  };
1067
1401
 
1068
1402
  function secureIcon(updates) {
1069
- return merge(
1070
- secureIconDefault,
1071
- updates
1072
- )
1403
+ return merge(secureIconDefault, updates)
1073
1404
  }
1074
1405
 
1075
1406
  function verticalStepHeadline(updates) {
1076
1407
  return {
1077
- $el: 'h3',
1078
- children: updates.headline || 'Tell Us About Your Situation',
1408
+ $el: "h3",
1409
+ children: updates.headline || "Tell Us About Your Situation",
1079
1410
  attrs: {
1080
- class: 't-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-dark t-pb-5 t-pt-0 t-px-1' + ' ' + (updates.headlineClass || '')
1081
- }
1411
+ class:
1412
+ "t-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-dark t-pb-5 t-pt-0 t-px-1" +
1413
+ " " +
1414
+ (updates.headlineClass || ""),
1415
+ },
1082
1416
  }
1083
1417
  }
1084
1418
 
1085
1419
  function verticalStepSubHeadline(updates) {
1086
1420
  return {
1087
- $el: 'h5',
1088
- children: updates.subheadline || '',
1421
+ $el: "h5",
1422
+ children: updates.subheadline || "",
1089
1423
  attrs: {
1090
- class: 't-flex t-justify-center t-text-center !t-text-lg t-font-normal t-text-dark t-pb-5 t-pt-0 t-px-1' + ' ' + (updates.subheadlineClass || '')
1091
- }
1424
+ class:
1425
+ "t-flex t-justify-center t-text-center !t-text-lg t-font-normal t-text-dark t-pb-5 t-pt-0 t-px-1" +
1426
+ " " +
1427
+ (updates.subheadlineClass || ""),
1428
+ },
1092
1429
  }
1093
1430
  }
1094
1431
 
1095
1432
  function commentsStepHeadline(updates) {
1096
1433
  return {
1097
- $el: 'h3',
1098
- children: updates.headline || 'Additional Details',
1434
+ $el: "h3",
1435
+ children: updates.headline || "Additional Details",
1099
1436
  attrs: {
1100
- 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 || '')
1101
- }
1437
+ class:
1438
+ "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" +
1439
+ " " +
1440
+ (updates.headlineClass || ""),
1441
+ },
1102
1442
  }
1103
1443
  }
1104
1444
 
1105
1445
  function firstAndLastStepHeadline(updates) {
1106
1446
  return {
1107
- $el: 'h3',
1108
- children: updates.headline || 'Please Provide a Contact Name',
1447
+ $el: "h3",
1448
+ children: updates.headline || "Please Provide a Contact Name",
1109
1449
  attrs: {
1110
- 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 || '')
1111
- }
1450
+ class:
1451
+ "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" +
1452
+ " " +
1453
+ (updates.headlineClass || ""),
1454
+ },
1112
1455
  }
1113
1456
  }
1114
1457
 
1115
1458
  function contactStepHeadline(updates) {
1116
1459
  return {
1117
- $el: 'h3',
1460
+ $el: "h3",
1118
1461
  children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL,
1119
1462
  attrs: {
1120
- 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 || '')
1121
- }
1463
+ class:
1464
+ "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" +
1465
+ " " +
1466
+ (updates.headlineClass || ""),
1467
+ },
1122
1468
  }
1123
1469
  }
1124
1470
 
1125
1471
  function contactStepSubHeadline(updates) {
1126
1472
  return {
1127
- $el: 'h5',
1473
+ $el: "h5",
1128
1474
  children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL,
1129
1475
  attrs: {
1130
- 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 || '')
1131
- }
1476
+ class:
1477
+ "t-flex t-justify-center t-text-center !t-text-lg t-font-semibold t-pb-7 t-pt-0 t-px-3" +
1478
+ " " +
1479
+ (updates.subheadlineClass || ""),
1480
+ },
1132
1481
  }
1133
1482
  }
1134
1483
 
@@ -1150,19 +1499,19 @@ const TRUSTED_FORM_JS = `(function() {
1150
1499
 
1151
1500
  function trustedFormScript() {
1152
1501
  return {
1153
- $el: 'script',
1154
- if: '$activeStep === $lastStep()',
1155
- children: TRUSTED_FORM_JS
1502
+ $el: "script",
1503
+ if: "$activeStep === $lastStep()",
1504
+ children: TRUSTED_FORM_JS,
1156
1505
  }
1157
1506
  }
1158
1507
 
1159
1508
  const stepDefaults = (step, stepKey) => ({
1160
- $el: 'section',
1509
+ $el: "section",
1161
1510
  if: '$stepEnabled("' + step + '")',
1162
1511
  attrs: {
1163
1512
  hidden: '$activeStep !== "' + step + '"',
1164
- key: stepKey ? stepKey : step
1165
- }
1513
+ key: stepKey ? stepKey : step,
1514
+ },
1166
1515
  });
1167
1516
 
1168
1517
  function step(name, inputs, updates = {}) {
@@ -1185,49 +1534,48 @@ function step(name, inputs, updates = {}) {
1185
1534
  }
1186
1535
  }
1187
1536
 
1188
- return merge(
1189
- stepDefaults(name, stepKey),
1190
- {
1191
- children: [
1192
- {
1193
- $formkit: 'group',
1194
- id: name,
1195
- name: name,
1196
- nextStepMap: nextStepMap,
1197
- triggerRedirectMap: triggerRedirectMap,
1198
- autoFocus: autoFocus,
1199
- children: inputs
1200
- }
1201
- ]
1202
- }
1203
- )
1537
+ return merge(stepDefaults(name, stepKey), {
1538
+ children: [
1539
+ {
1540
+ $formkit: "group",
1541
+ id: name,
1542
+ name: name,
1543
+ nextStepMap: nextStepMap,
1544
+ triggerRedirectMap: triggerRedirectMap,
1545
+ autoFocus: autoFocus,
1546
+ children: inputs,
1547
+ },
1548
+ ],
1549
+ })
1204
1550
  }
1205
1551
 
1206
1552
  // Single question step
1207
1553
  function sqstep(name, input, defaultHeadline, updates = {}) {
1208
- if (typeof updates.nextOnInput === 'undefined') {
1554
+ if (typeof updates.nextOnInput === "undefined") {
1209
1555
  updates.nextOnInput = true;
1210
1556
  }
1211
-
1557
+
1212
1558
  return step(
1213
1559
  name,
1214
1560
  [
1215
- verticalStepHeadline({ headline: updates.headline ?? defaultHeadline, headlineClass: updates.headlineClass }),
1216
- ...Array.isArray(input) ? input : [input],
1561
+ verticalStepHeadline({
1562
+ headline: updates.headline ?? defaultHeadline,
1563
+ headlineClass: updates.headlineClass,
1564
+ }),
1565
+ ...(Array.isArray(input) ? input : [input]),
1217
1566
  ],
1218
1567
  updates
1219
1568
  )
1220
1569
  }
1221
1570
 
1222
-
1223
1571
  // ------ Common Steps
1224
1572
 
1225
1573
  function address(updates = {}) {
1226
- updates.nextOnInput = typeof updates.nextOnInput === 'undefined' ? false : updates.nextOnInput;
1574
+ updates.nextOnInput = typeof updates.nextOnInput === "undefined" ? false : updates.nextOnInput;
1227
1575
  return sqstep(
1228
- 'address',
1229
- address$1(updates.scope, true),
1230
- 'What is the street address of the home?',
1576
+ "address",
1577
+ address$1(updates.scope, true, updates.input),
1578
+ "What is the street address of the home?",
1231
1579
  updates
1232
1580
  )
1233
1581
  }
@@ -1236,14 +1584,14 @@ function commentsHeadline(updates = {}) {
1236
1584
  const mergedUpdates = { ...updates, nextOnEnter: false };
1237
1585
 
1238
1586
  return step(
1239
- 'comments',
1587
+ "comments",
1240
1588
  [
1241
1589
  commentsStepHeadline(updates),
1242
- comments({
1243
- label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL : updates.label,
1590
+ comments(updates.scope, false, {
1591
+ label: typeof updates.label === "undefined" ? DEFAULT_COMMENTS_LABEL : updates.label,
1244
1592
  placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1245
- inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1246
- }, updates.scope),
1593
+ inputClass: typeof updates.inputClass === "undefined" ? "!t-h-32" : updates.inputClass,
1594
+ }),
1247
1595
  ],
1248
1596
  mergedUpdates
1249
1597
  )
@@ -1251,7 +1599,7 @@ function commentsHeadline(updates = {}) {
1251
1599
 
1252
1600
  function contactInfo(updates = {}) {
1253
1601
  return step(
1254
- 'contactInfo',
1602
+ "contactInfo",
1255
1603
  [
1256
1604
  contactStepHeadline(updates),
1257
1605
  contactStepSubHeadline(updates),
@@ -1259,676 +1607,330 @@ function contactInfo(updates = {}) {
1259
1607
  email(updates.scope),
1260
1608
  phone(updates.scope),
1261
1609
  TCPAConsent(updates.scope),
1262
- secureIcon()
1610
+ secureIcon(),
1263
1611
  ],
1264
1612
  { nextOnEnter: false }
1265
1613
  )
1266
1614
  }
1267
1615
 
1268
- function firstAndLastV3(updates = {}, scope) {
1616
+ function firstAndLastV3(updates = {}) {
1269
1617
  return step(
1270
- 'firstAndLast',
1618
+ "firstAndLast",
1271
1619
  [
1272
1620
  firstAndLastStepHeadline({
1273
- headline: updates.headline ?? 'Who is looking for help?',
1274
- headlineClass: updates.headlineClass
1621
+ headline: updates.headline ?? "Who is looking for help?",
1622
+ headlineClass: updates.headlineClass,
1275
1623
  }),
1276
1624
  verticalStepSubHeadline({
1277
- subheadline: updates.subheadline ?? 'Note: we never share info without consent',
1278
- subheadlineClass: '!t-text-sm !t-text-gray-500'
1625
+ subheadline: updates.subheadline ?? "Note: we never share info without consent",
1626
+ subheadlineClass: "!t-text-sm !t-text-gray-500",
1279
1627
  }),
1280
- firstName(scope),
1281
- lastName(scope)
1628
+ firstName(updates.scope),
1629
+ lastName(updates.scope),
1282
1630
  ],
1283
1631
  updates
1284
1632
  )
1285
1633
  }
1286
1634
 
1287
1635
  function zipcode(updates = {}) {
1288
- return sqstep(
1289
- 'zipcode',
1290
- zipcode$1(updates.scope, true, updates),
1291
- 'Please verify your Zip Code',
1292
- updates
1293
- )
1636
+ return sqstep("zipcode", zipcode$1(updates.scope, true, updates.input), "Please verify your Zip Code", updates)
1294
1637
  }
1295
1638
 
1296
- // export function electricalCrossSellQuestions(updates = {}) {
1297
- // return step(
1298
- // 'electricalCrossSellQuestions',
1299
- // [
1300
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Electrician' }),
1301
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your electrical needs:' }),
1302
- // inp.ElectricalQuestions("true", 'CrossSell:Electrical'),
1303
- // inp.comments(
1304
- // {
1305
- // label: 'Project Description:',
1306
- // placeholder: 'Please describe your project in a few words...',
1307
- // inputClass: '!t-h-16'
1308
- // },
1309
- // 'CrossSell:Electrical'
1310
- // )
1311
- // ],
1312
- // updates
1313
- // )
1314
- // }
1315
-
1316
- // export function appliancesCrossSellQuestions(updates = {}) {
1317
- // return step(
1318
- // 'appliancesCrossSellQuestions',
1319
- // [
1320
- // crossSellQuestionsStepHeadline({ headline: 'Connect With An Appliance Pro' }),
1321
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your appliance needs:' }),
1322
- // inp.AppliancesQuestions("true", 'CrossSell:Appliances'),
1323
- // inp.comments(
1324
- // {
1325
- // label: 'Project Description:',
1326
- // placeholder: 'Please describe your project in a few words...',
1327
- // inputClass: '!t-h-16'
1328
- // },
1329
- // 'CrossSell:Appliances'
1330
- // )
1331
- // ],
1332
- // updates
1333
- // )
1334
- // }
1335
-
1336
- // export function carpentryCrossSellQuestions(updates = {}) {
1337
- // return step(
1338
- // 'carpentryCrossSellQuestions',
1339
- // [
1340
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Carpenter' }),
1341
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your carpentry needs:' }),
1342
- // inp.CarpentryQuestions("true", 'CrossSell:Carpentry'),
1343
- // inp.comments(
1344
- // {
1345
- // label: 'Project Description:',
1346
- // placeholder: 'Please describe your project in a few words...',
1347
- // inputClass: '!t-h-16'
1348
- // },
1349
- // 'CrossSell:Carpentry'
1350
- // )
1351
- // ],
1352
- // updates
1353
- // )
1354
- // }
1355
-
1356
- // export function masonryAndConcreteCrossSellQuestions(updates = {}) {
1357
- // return step(
1358
- // 'masonryCrossSellQuestions',
1359
- // [
1360
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Masonry Pro' }),
1361
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your masonry needs:' }),
1362
- // inp.MasonryAndConcreteQuestions("true", 'CrossSell:Masonry and Concrete'),
1363
- // inp.comments(
1364
- // {
1365
- // label: 'Project Description:',
1366
- // placeholder: 'Please describe your project in a few words...',
1367
- // inputClass: '!t-h-16'
1368
- // },
1369
- // 'CrossSell:Masonry and Concrete'
1370
- // )
1371
- // ],
1372
- // updates
1373
- // )
1374
- // }
1375
-
1376
- // export function drivewaysCrossSellQuestions(updates = {}) {
1377
- // return step(
1378
- // 'drivewayCrossSellQuestions',
1379
- // [
1380
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Driveway Pro' }),
1381
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your driveway needs:' }),
1382
- // inp.DrivewaysQuestions("true", 'CrossSell:Driveways'),
1383
- // inp.comments(
1384
- // {
1385
- // label: 'Project Description:',
1386
- // placeholder: 'Please describe your project in a few words...',
1387
- // inputClass: '!t-h-16'
1388
- // },
1389
- // 'CrossSell:Driveways'
1390
- // )
1391
- // ],
1392
- // updates
1393
- // )
1394
- // }
1395
-
1396
- // export function drywallAndPlasterCrossSellQuestions(updates = {}) {
1397
- // return step(
1398
- // 'drywallCrossSellQuestions',
1399
- // [
1400
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Drywall Pro' }),
1401
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your drywall needs:' }),
1402
- // inp.DrywallAndPlasterQuestions("true", 'CrossSell:Drywall and Plaster'),
1403
- // inp.comments(
1404
- // {
1405
- // label: 'Project Description:',
1406
- // placeholder: 'Please describe your project in a few words...',
1407
- // inputClass: '!t-h-16'
1408
- // },
1409
- // 'CrossSell:Drywall and Plaster'
1410
- // )
1411
- // ],
1412
- // updates
1413
- // )
1414
- // }
1415
-
1416
- // export function heatingAndCoolingCrossSellQuestions(updates = {}) {
1417
- // return step(
1418
- // 'heatingCoolingCrossSellQuestions',
1419
- // [
1420
- // crossSellQuestionsStepHeadline({ headline: 'Connect With An HVAC Pro' }),
1421
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your heating and cooling needs:' }),
1422
- // inp.HeatingAndCoolingQuestions("true", 'CrossSell:Heating and Cooling'),
1423
- // inp.comments(
1424
- // {
1425
- // label: 'Project Description:',
1426
- // placeholder: 'Please describe your project in a few words...',
1427
- // },
1428
- // 'CrossSell:Heating and Cooling'
1429
- // )
1430
- // ],
1431
- // updates
1432
- // )
1433
- // }
1434
-
1435
- // export function landscapingCrossSellQuestions(updates = {}) {
1436
- // return step(
1437
- // 'landscapingCrossSellQuestions',
1438
- // [
1439
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Landscaping Pro' }),
1440
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your landscaping needs:' }),
1441
- // inp.LandscapingQuestions("true", 'CrossSell:Landscaping'),
1442
- // inp.comments(
1443
- // {
1444
- // label: 'Project Description:',
1445
- // placeholder: 'Please describe your project in a few words...',
1446
- // },
1447
- // 'CrossSell:Landscaping'
1448
- // )
1449
- // ],
1450
- // updates
1451
- // )
1452
- // }
1453
-
1454
- // export function pestControlCrossSellQuestions(updates = {}) {
1455
- // return step(
1456
- // 'pestControlCrossSellQuestions',
1457
- // [
1458
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pest Control Pro' }),
1459
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your pest control needs:' }),
1460
- // inp.PestControlQuestions("true", 'CrossSell:Pest Control'),
1461
- // inp.comments(
1462
- // {
1463
- // label: 'Project Description:',
1464
- // placeholder: 'Please describe your project in a few words...',
1465
- // },
1466
- // 'CrossSell:Pest Control'
1467
- // )
1468
- // ],
1469
- // updates
1470
- // )
1471
- // }
1472
-
1473
- // export function sidingCrossSellQuestions(updates = {}) {
1474
- // return step(
1475
- // 'sidingCrossSellQuestions',
1476
- // [
1477
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Siding Pro' }),
1478
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your siding needs:' }),
1479
- // inp.SidingQuestions("true", 'CrossSell:Siding'),
1480
- // inp.comments(
1481
- // {
1482
- // label: 'Project Description:',
1483
- // placeholder: 'Please describe your project in a few words...',
1484
- // },
1485
- // 'CrossSell:Siding'
1486
- // )
1487
- // ],
1488
- // updates
1489
- // )
1490
- // }
1491
-
1492
- // export function windowsCrossSellQuestions(updates = {}) {
1493
- // return step(
1494
- // 'windowsCrossSellQuestions',
1495
- // [
1496
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Window Pro' }),
1497
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your window needs:' }),
1498
- // inp.WindowsQuestions("true", 'CrossSell:Windows'),
1499
- // inp.comments(
1500
- // {
1501
- // label: 'Project Description:',
1502
- // placeholder: 'Please describe your project in a few words...',
1503
- // },
1504
- // 'CrossSell:Windows'
1505
- // )
1506
- // ],
1507
- // updates
1508
- // )
1509
- // }
1510
-
1511
- // export function flooringCrossSellQuestions(updates = {}) {
1512
- // return step(
1513
- // 'flooringCrossSellQuestions',
1514
- // [
1515
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Flooring Pro' }),
1516
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your flooring needs:' }),
1517
- // inp.FlooringQuestions("true", 'CrossSell:Flooring'),
1518
- // inp.comments(
1519
- // {
1520
- // label: 'Project Description:',
1521
- // placeholder: 'Please describe your project in a few words...',
1522
- // inputClass: '!t-h-16'
1523
- // },
1524
- // 'CrossSell:Flooring'
1525
- // )
1526
- // ],
1527
- // updates
1528
- // )
1529
- // }
1530
-
1531
- // export function paintingCrossSellQuestions(updates = {}) {
1532
- // return step(
1533
- // 'paintingCrossSellQuestions',
1534
- // [
1535
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Painter' }),
1536
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your painting needs:' }),
1537
- // inp.PaintingQuestions("true", 'CrossSell:Painting'),
1538
- // inp.comments(
1539
- // {
1540
- // label: 'Project Description:',
1541
- // placeholder: 'Please describe your project in a few words...',
1542
- // inputClass: '!t-h-16'
1543
- // },
1544
- // 'CrossSell:Painting'
1545
- // )
1546
- // ],
1547
- // updates
1548
- // )
1549
- // }
1550
-
1551
- // export function plumbingCrossSellQuestions(updates = {}) {
1552
- // return step(
1553
- // 'plumbingCrossSellQuestions',
1554
- // [
1555
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Local Plumber' }),
1556
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your plumbing needs:' }),
1557
- // inp.PlumbingQuestions("true", 'CrossSell:Plumbing'),
1558
- // inp.comments(
1559
- // {
1560
- // label: 'Project Description:',
1561
- // placeholder: 'Please describe your project in a few words...',
1562
- // inputClass: '!t-h-16'
1563
- // },
1564
- // 'CrossSell:Plumbing'
1565
- // )
1566
- // ],
1567
- // updates
1568
- // )
1569
- // }
1570
-
1571
- // export function remodelingCrossSellQuestions(updates = {}) {
1572
- // return step(
1573
- // 'remodelingCrossSellQuestions',
1574
- // [
1575
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Remodeler' }),
1576
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your remodeling needs:' }),
1577
- // inp.RemodelingQuestions("true", 'CrossSell:Remodeling'),
1578
- // inp.comments(
1579
- // {
1580
- // label: 'Project Description:',
1581
- // placeholder: 'Please describe your project in a few words...',
1582
- // inputClass: '!t-h-16'
1583
- // },
1584
- // 'CrossSell:Remodeling'
1585
- // )
1586
- // ],
1587
- // updates
1588
- // )
1589
- // }
1590
-
1591
- // export function roofingCrossSellQuestions(updates = {}) {
1592
- // return step(
1593
- // 'roofingCrossSellQuestions',
1594
- // [
1595
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Roofer' }),
1596
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your roofing needs:' }),
1597
- // inp.RoofingQuestions("true", 'CrossSell:Roofing'),
1598
- // inp.comments(
1599
- // {
1600
- // label: 'Project Description:',
1601
- // placeholder: 'Please describe your project in a few words...',
1602
- // inputClass: '!t-h-16'
1603
- // },
1604
- // 'CrossSell:Roofing'
1605
- // )
1606
- // ],
1607
- // updates
1608
- // )
1609
- // }
1610
-
1611
1639
  function homeImprovementCategory(updates = {}) {
1612
- return step(
1613
- 'homeImprovementCategory',
1614
- [
1615
- homeImprovementCategory$1(updates.input),
1616
- ],
1617
- updates
1618
- )
1640
+ return step("homeImprovementCategory", [homeImprovementCategory$1(updates.scope, true, updates.input)], updates)
1619
1641
  }
1620
1642
 
1621
1643
  function timeframe(updates = {}) {
1622
1644
  return sqstep(
1623
- 'timeframe',
1624
- timeframe$1(),
1625
- 'What is the project timeframe?',
1645
+ "timeframe",
1646
+ timeframe$1(updates.scope, true, updates.input),
1647
+ "What is the project timeframe?",
1626
1648
  updates
1627
1649
  )
1628
1650
  }
1629
1651
 
1630
1652
  function ownHome(updates = {}) {
1631
- return sqstep(
1632
- 'ownHome',
1633
- ownHome$1(),
1634
- 'Do you own the home?',
1635
- updates
1636
- )
1653
+ return sqstep("ownHome", ownHome$1(updates.scope, true, updates.input), "Do you own the home?", updates)
1637
1654
  }
1638
1655
 
1639
1656
  function additionsSubType(updates = {}) {
1640
1657
  return sqstep(
1641
- 'additionsSubType',
1642
- additionsSubType$1(),
1643
- 'What type of addition?',
1658
+ "additionsSubType",
1659
+ additionsSubType$1(updates.scope, true, updates.input),
1660
+ "What type of addition?",
1644
1661
  updates
1645
1662
  )
1646
1663
  }
1647
1664
 
1648
1665
  function constructionAreaSize(updates = {}) {
1649
1666
  return sqstep(
1650
- 'constructionAreaSize',
1651
- constructionAreaSize$1(),
1652
- 'What is the size of the construction area?',
1667
+ "constructionAreaSize",
1668
+ constructionAreaSize$1(updates.scope, true, updates.input),
1669
+ "What is the size of the construction area?",
1653
1670
  updates
1654
1671
  )
1655
1672
  }
1656
1673
 
1657
1674
  function homeImprovementWorkType(updates = {}) {
1658
1675
  return sqstep(
1659
- 'homeImprovementWorkType',
1660
- homeImprovementWorkType$1(),
1661
- 'What type of work?',
1676
+ "homeImprovementWorkType",
1677
+ homeImprovementWorkType$1(updates.scope, true, updates.input),
1678
+ "What type of work?",
1662
1679
  updates
1663
1680
  )
1664
1681
  }
1665
1682
 
1666
1683
  function applianceType(updates = {}) {
1667
1684
  return sqstep(
1668
- 'applianceType',
1669
- applianceType$1(),
1670
- 'What type of appliance?',
1685
+ "applianceType",
1686
+ applianceType$1(updates.scope, true, updates.input),
1687
+ "What type of appliance?",
1671
1688
  updates
1672
1689
  )
1673
1690
  }
1674
1691
 
1675
1692
  function cabinetWorkType(updates = {}) {
1676
1693
  return sqstep(
1677
- 'cabinetWorkType',
1678
- cabinetWorkType$1(),
1679
- 'What type of cabinet work?',
1694
+ "cabinetWorkType",
1695
+ cabinetWorkType$1(updates.scope, true, updates.input),
1696
+ "What type of cabinet work?",
1680
1697
  updates
1681
1698
  )
1682
1699
  }
1683
1700
 
1684
1701
  function carpentrySubtype(updates = {}) {
1685
1702
  return sqstep(
1686
- 'carpentrySubtype',
1687
- carpentrySubtype$1(),
1688
- 'What type of carpentry work?',
1703
+ "carpentrySubtype",
1704
+ carpentrySubtype$1(updates.scope, true, updates.input),
1705
+ "What carpentry job type?",
1689
1706
  updates
1690
1707
  )
1691
1708
  }
1692
1709
 
1693
1710
  function carpetWorkType(updates = {}) {
1694
1711
  return sqstep(
1695
- 'carpetWorkType',
1696
- carpetWorkType$1(),
1697
- 'What type of carpet work?',
1712
+ "carpetWorkType",
1713
+ carpetWorkType$1(updates.scope, true, updates.input),
1714
+ "What type of carpet work?",
1698
1715
  updates
1699
1716
  )
1700
1717
  }
1701
1718
 
1702
1719
  function cleaningSubtype(updates = {}) {
1703
1720
  return sqstep(
1704
- 'cleaningSubtype',
1705
- cleaningSubtype$1(),
1706
- 'What type of cleaning?',
1721
+ "cleaningSubtype",
1722
+ cleaningSubtype$1(updates.scope, true, updates.input),
1723
+ "What type of cleaning?",
1707
1724
  updates
1708
1725
  )
1709
1726
  }
1710
1727
 
1711
1728
  function countertopMaterial(updates = {}) {
1712
1729
  return sqstep(
1713
- 'countertopMaterial',
1714
- countertopMaterial$1(),
1715
- 'What type of countertop material?',
1730
+ "countertopMaterial",
1731
+ countertopMaterial$1(updates.scope, true, updates.input),
1732
+ "What type of countertop material?",
1716
1733
  updates
1717
1734
  )
1718
1735
  }
1719
1736
 
1720
1737
  function deckWorkType(updates = {}) {
1721
1738
  return sqstep(
1722
- 'deckWorkType',
1723
- deckWorkType$1(),
1724
- 'What type of deck work?',
1739
+ "deckWorkType",
1740
+ deckWorkType$1(updates.scope, true, updates.input),
1741
+ "What type of deck work?",
1725
1742
  updates
1726
1743
  )
1727
1744
  }
1728
1745
 
1729
1746
  function demolitionSubtype(updates = {}) {
1730
1747
  return sqstep(
1731
- 'demolitionSubtype',
1732
- demolitionSubtype$1(),
1733
- 'What type of demolition?',
1748
+ "demolitionSubtype",
1749
+ demolitionSubtype$1(updates.scope, true, updates.input),
1750
+ "What type of demolition?",
1734
1751
  updates
1735
1752
  )
1736
1753
  }
1737
1754
 
1738
1755
  function doorSubtype(updates = {}) {
1739
- return sqstep(
1740
- 'doorSubtype',
1741
- doorSubtype$1(),
1742
- 'What type of door?',
1743
- updates
1744
- )
1756
+ return sqstep("doorSubtype", doorSubtype$1(updates.scope, true, updates.input), "What type of door?", updates)
1745
1757
  }
1746
1758
 
1747
1759
  function drivewayWorkType(updates = {}) {
1748
1760
  return sqstep(
1749
- 'drivewayWorkType',
1750
- drivewayWorkType$1(),
1751
- 'What type of driveway work?',
1761
+ "drivewayWorkType",
1762
+ drivewayWorkType$1(updates.scope, true, updates.input),
1763
+ "What type of driveway work?",
1752
1764
  updates
1753
1765
  )
1754
1766
  }
1755
1767
 
1756
1768
  function drivewayMaterial(updates = {}) {
1757
1769
  return sqstep(
1758
- 'drivewayMaterial',
1759
- drivewayMaterial$1(),
1760
- 'What type of driveway material?',
1770
+ "drivewayMaterial",
1771
+ drivewayMaterial$1(updates.scope, true, updates.input),
1772
+ "What type of driveway material?",
1761
1773
  updates
1762
1774
  )
1763
1775
  }
1764
1776
 
1765
1777
  function wallSurfaceType(updates = {}) {
1766
1778
  return sqstep(
1767
- 'wallSurfaceType',
1768
- wallSurfaceType$1(),
1769
- 'What type of surface?',
1779
+ "wallSurfaceType",
1780
+ wallSurfaceType$1(updates.scope, true, updates.input),
1781
+ "What type of surface?",
1770
1782
  updates
1771
1783
  )
1772
1784
  }
1773
1785
 
1774
1786
  function electricalSubtype(updates = {}) {
1775
1787
  return sqstep(
1776
- 'electricalSubtype',
1777
- electricalSubtype$1(),
1778
- 'What type of electrical work?',
1788
+ "electricalSubtype",
1789
+ electricalSubtype$1(updates.scope, true, updates.input),
1790
+ "What electrical job type?",
1779
1791
  updates
1780
1792
  )
1781
1793
  }
1782
1794
 
1783
1795
  function fenceMaterial(updates = {}) {
1784
1796
  return sqstep(
1785
- 'fenceMaterial',
1786
- fenceMaterial$1(),
1787
- 'What type of fence material?',
1797
+ "fenceMaterial",
1798
+ fenceMaterial$1(updates.scope, true, updates.input),
1799
+ "What type of fence material?",
1788
1800
  updates
1789
1801
  )
1790
1802
  }
1791
1803
 
1792
1804
  function flooringMaterial(updates = {}) {
1793
1805
  return sqstep(
1794
- 'flooringMaterial',
1795
- flooringMaterial$1(),
1796
- 'What type of flooring material?',
1806
+ "flooringMaterial",
1807
+ flooringMaterial$1(updates.scope, true, updates.input),
1808
+ "What type of flooring material?",
1797
1809
  updates
1798
1810
  )
1799
1811
  }
1800
1812
 
1801
1813
  function generalContractorSubtype(updates = {}) {
1802
1814
  return sqstep(
1803
- 'generalContractorSubtype',
1804
- generalContractorSubtype$1(),
1805
- 'What type of general contractor work?',
1815
+ "generalContractorSubtype",
1816
+ generalContractorSubtype$1(updates.scope, true, updates.input),
1817
+ "What type of general contractor work?",
1806
1818
  updates
1807
1819
  )
1808
1820
  }
1809
1821
 
1810
1822
  function gutterMaterial(updates = {}) {
1811
1823
  return sqstep(
1812
- 'gutterMaterial',
1813
- gutterMaterial$1(),
1814
- 'What type of gutter material?',
1824
+ "gutterMaterial",
1825
+ gutterMaterial$1(updates.scope, true, updates.input),
1826
+ "What type of gutter material?",
1815
1827
  updates
1816
1828
  )
1817
1829
  }
1818
1830
 
1819
- function guttersWorkType(updates = {}) {
1831
+ function gutterWorkType(updates = {}) {
1820
1832
  return sqstep(
1821
- 'guttersWorkType',
1822
- guttersWorkType$1(),
1823
- 'What type of gutter work?',
1833
+ "gutterWorkType",
1834
+ gutterWorkType$1(updates.scope, true, updates.input),
1835
+ "What type of gutter work?",
1824
1836
  updates
1825
1837
  )
1826
1838
  }
1827
1839
 
1828
1840
  function smartHomeSubtype(updates = {}) {
1829
1841
  return sqstep(
1830
- 'smartHomeSubtype',
1831
- smartHomeSubtype$1(),
1832
- 'What type of smart home work?',
1842
+ "smartHomeSubtype",
1843
+ smartHomeSubtype$1(updates.scope, true, updates.input),
1844
+ "What type of smart home work?",
1833
1845
  updates
1834
1846
  )
1835
1847
  }
1836
1848
 
1837
1849
  function homeOrganizationSubtype(updates = {}) {
1838
1850
  return sqstep(
1839
- 'homeOrganizationSubtype',
1840
- homeOrganizationSubtype$1(),
1841
- 'What type of home organization work?',
1851
+ "homeOrganizationSubtype",
1852
+ homeOrganizationSubtype$1(updates.scope, true, updates.input),
1853
+ "What type of home organization work?",
1842
1854
  updates
1843
1855
  )
1844
1856
  }
1845
1857
 
1846
1858
  function numberOfRooms(updates = {}) {
1847
- return sqstep(
1848
- 'numberOfRooms',
1849
- numberOfRooms$1(),
1850
- 'How many rooms?',
1851
- updates
1852
- )
1859
+ return sqstep("numberOfRooms", numberOfRooms$1(updates.scope, true, updates.input), "How many rooms?", updates)
1853
1860
  }
1854
1861
 
1855
1862
  function homeTheaterSubtype(updates = {}) {
1856
1863
  return sqstep(
1857
- 'homeTheaterSubtype',
1858
- homeTheaterSubtype$1(),
1859
- 'What type of home theater work?',
1864
+ "homeTheaterSubtype",
1865
+ homeTheaterSubtype$1(updates.scope, true, updates.input),
1866
+ "What type of home theater work?",
1860
1867
  updates
1861
1868
  )
1862
1869
  }
1863
1870
 
1864
1871
  function heatingCoolingSubtype(updates = {}) {
1865
1872
  return sqstep(
1866
- 'heatingCoolingSubtype',
1867
- heatingCoolingSubtype$1(),
1868
- 'What type of heating and cooling work?',
1873
+ "heatingCoolingSubtype",
1874
+ heatingCoolingSubtype$1(updates.scope, true, updates.input),
1875
+ "What heating or cooling job type?",
1869
1876
  updates
1870
1877
  )
1871
1878
  }
1872
1879
 
1873
1880
  function fuelSource(updates = {}) {
1874
- return sqstep(
1875
- 'fuelSource',
1876
- fuelSource$1(),
1877
- 'What type of fuel source?',
1878
- updates
1879
- )
1881
+ return sqstep("fuelSource", fuelSource$1(updates.scope, true, updates.input), "What type of fuel source?", updates)
1880
1882
  }
1881
1883
 
1882
1884
  function insulationSubtype(updates = {}) {
1883
1885
  return sqstep(
1884
- 'insulationSubtype',
1885
- insulationSubtype$1(),
1886
- 'What type of insulation work?',
1886
+ "insulationSubtype",
1887
+ insulationSubtype$1(updates.scope, true, updates.input),
1888
+ "What type of insulation work?",
1887
1889
  updates
1888
1890
  )
1889
1891
  }
1890
1892
 
1891
1893
  function landscapingSubtype(updates = {}) {
1892
1894
  return sqstep(
1893
- 'landscapingSubtype',
1894
- landscapingSubtype$1(),
1895
- 'What type of landscaping work?',
1895
+ "landscapingSubtype",
1896
+ landscapingSubtype$1(updates.scope, true, updates.input),
1897
+ "What type of landscaping work?",
1896
1898
  updates
1897
1899
  )
1898
1900
  }
1899
1901
 
1900
1902
  function masonrySubtype(updates = {}) {
1901
1903
  return sqstep(
1902
- 'masonrySubtype',
1903
- masonrySubtype$1(),
1904
- 'What type of masonry work?',
1904
+ "masonrySubtype",
1905
+ masonrySubtype$1(updates.scope, true, updates.input),
1906
+ "What masonry job type?",
1905
1907
  updates
1906
1908
  )
1907
1909
  }
1908
1910
 
1909
1911
  function masonryMaterial(updates = {}) {
1910
1912
  return sqstep(
1911
- 'masonryMaterial',
1912
- masonryMaterial$1(),
1913
- 'What type of masonry material?',
1913
+ "masonryMaterial",
1914
+ masonryMaterial$1(updates.scope, true, updates.input),
1915
+ "What type of masonry material?",
1914
1916
  updates
1915
1917
  )
1916
1918
  }
1917
1919
 
1918
1920
  function masonryWorkType(updates = {}) {
1919
1921
  return sqstep(
1920
- 'masonryWorkType',
1921
- masonryWorkType$1(),
1922
- 'What type of masonry work?',
1922
+ "masonryWorkType",
1923
+ masonryWorkType$1(updates.scope, true, updates.input),
1924
+ "What type of masonry work?",
1923
1925
  updates
1924
1926
  )
1925
1927
  }
1926
1928
 
1927
1929
  function restorationSubtype(updates = {}) {
1928
1930
  return sqstep(
1929
- 'restorationSubtype',
1930
- restorationSubtype$1(),
1931
- 'What type of restoration work?',
1931
+ "restorationSubtype",
1932
+ restorationSubtype$1(updates.scope, true, updates.input),
1933
+ "What type of restoration work?",
1932
1934
  updates
1933
1935
  )
1934
1936
  }
@@ -1938,7 +1940,7 @@ function restorationSubtype(updates = {}) {
1938
1940
  // export function movingFromAddress(updates = {}) {
1939
1941
  // return sqstep(
1940
1942
  // 'movingFromAddress',
1941
- // inp.movingFromAddress(),
1943
+ // inp.movingFromAddress(updates.scope, true, updates.input),
1942
1944
  // 'Moving from address:',
1943
1945
  // updates
1944
1946
  // )
@@ -1947,7 +1949,7 @@ function restorationSubtype(updates = {}) {
1947
1949
  // export function movingToAddress(updates = {}) {
1948
1950
  // return sqstep(
1949
1951
  // 'movingToAddress',
1950
- // inp.movingToAddress(),
1952
+ // inp.movingToAddress(updates.scope, true, updates.input),
1951
1953
  // 'Moving to address:',
1952
1954
  // updates
1953
1955
  // )
@@ -1956,7 +1958,7 @@ function restorationSubtype(updates = {}) {
1956
1958
  // export function movingHouseholdSize(updates = {}) {
1957
1959
  // return sqstep(
1958
1960
  // 'movingHouseholdSize',
1959
- // inp.movingHouseholdSize(),
1961
+ // inp.movingHouseholdSize(updates.scope, true, updates.input),
1960
1962
  // 'Household size:',
1961
1963
  // updates
1962
1964
  // )
@@ -1964,245 +1966,245 @@ function restorationSubtype(updates = {}) {
1964
1966
 
1965
1967
  function paintingSubtype(updates = {}) {
1966
1968
  return sqstep(
1967
- 'paintingSubtype',
1968
- paintingSubtype$1(),
1969
- 'What type of painting work?',
1969
+ "paintingSubtype",
1970
+ paintingSubtype$1(updates.scope, true, updates.input),
1971
+ "What type of painting work?",
1970
1972
  updates
1971
1973
  )
1972
1974
  }
1973
1975
 
1974
1976
  function paintingRooms(updates = {}) {
1975
1977
  return sqstep(
1976
- 'paintingRooms',
1977
- paintingRooms$1(),
1978
- 'How many rooms need painting?',
1978
+ "paintingRooms",
1979
+ numberOfRooms$1(updates.scope, true, updates.input),
1980
+ "How many rooms need painting?",
1979
1981
  updates
1980
1982
  )
1981
1983
  }
1982
1984
 
1983
1985
  function pestControlSubtype(updates = {}) {
1984
1986
  return sqstep(
1985
- 'pestControlSubtype',
1986
- pestControlSubtype$1(),
1987
- 'What type of pest control work?',
1987
+ "pestControlSubtype",
1988
+ pestControlSubtype$1(updates.scope, true, updates.input),
1989
+ "What type of pest control work?",
1988
1990
  updates
1989
1991
  )
1990
1992
  }
1991
1993
 
1992
1994
  function poolsWorkType(updates = {}) {
1993
1995
  return sqstep(
1994
- 'poolsWorkType',
1995
- poolsWorkType$1(),
1996
- 'What type of pool work?',
1996
+ "poolsWorkType",
1997
+ poolsWorkType$1(updates.scope, true, updates.input),
1998
+ "What type of pool work?",
1997
1999
  updates
1998
2000
  )
1999
2001
  }
2000
2002
 
2001
2003
  function poolsSubtype(updates = {}) {
2002
2004
  return sqstep(
2003
- 'poolsSubtype',
2004
- poolsSubtype$1(),
2005
- 'What type of pool work?',
2005
+ "poolsSubtype",
2006
+ poolsSubtype$1(updates.scope, true, updates.input),
2007
+ "What type of pool work?",
2006
2008
  updates
2007
2009
  )
2008
2010
  }
2009
2011
 
2010
2012
  function plumbingSubtype(updates = {}) {
2011
2013
  return sqstep(
2012
- 'plumbingSubtype',
2013
- plumbingSubtype$1(),
2014
- 'What type of plumbing work?',
2014
+ "plumbingSubtype",
2015
+ plumbingSubtype$1(updates.scope, true, updates.input),
2016
+ "What plumbing job type?",
2015
2017
  updates
2016
2018
  )
2017
2019
  }
2018
2020
 
2019
2021
  function remodelingSubtype(updates = {}) {
2020
2022
  return sqstep(
2021
- 'remodelingSubtype',
2022
- remodelingSubtype$1(),
2023
- 'What type of remodeling work?',
2023
+ "remodelingSubtype",
2024
+ remodelingSubtype$1(updates.scope, true, updates.input),
2025
+ "What type of remodeling work?",
2024
2026
  updates
2025
2027
  )
2026
2028
  }
2027
2029
 
2028
2030
  function roofingWorkType(updates = {}) {
2029
2031
  return sqstep(
2030
- 'roofingWorkType',
2031
- roofingWorkType$1(),
2032
- 'What type of roofing work?',
2032
+ "roofingWorkType",
2033
+ roofingWorkType$1(updates.scope, true, updates.input),
2034
+ "What type of roofing work?",
2033
2035
  updates
2034
2036
  )
2035
2037
  }
2036
2038
 
2037
2039
  function roofingMaterial(updates = {}) {
2038
2040
  return sqstep(
2039
- 'roofingMaterial',
2040
- roofingMaterial$1(),
2041
- 'What type of roofing material?',
2041
+ "roofingMaterial",
2042
+ roofingMaterial$1(updates.scope, true, updates.input),
2043
+ "What type of roofing material?",
2042
2044
  updates
2043
2045
  )
2044
2046
  }
2045
2047
 
2046
2048
  function sidingMaterial(updates = {}) {
2047
2049
  return sqstep(
2048
- 'sidingMaterial',
2049
- sidingMaterial$1(),
2050
- 'What type of siding material?',
2050
+ "sidingMaterial",
2051
+ sidingMaterial$1(updates.scope, true, updates.input),
2052
+ "What type of siding material?",
2051
2053
  updates
2052
2054
  )
2053
2055
  }
2054
2056
 
2055
2057
  function tilingSubtype(updates = {}) {
2056
2058
  return sqstep(
2057
- 'tilingSubtype',
2058
- tilingSubtype$1(),
2059
- 'What type of tiling work?',
2059
+ "tilingSubtype",
2060
+ tilingSubtype$1(updates.scope, true, updates.input),
2061
+ "What type of tiling work?",
2060
2062
  updates
2061
2063
  )
2062
2064
  }
2063
2065
 
2064
2066
  function waterproofingSubtype(updates = {}) {
2065
2067
  return sqstep(
2066
- 'waterproofingSubtype',
2067
- waterproofingSubtype$1(),
2068
- 'What type of waterproofing work?',
2068
+ "waterproofingSubtype",
2069
+ waterproofingSubtype$1(updates.scope, true, updates.input),
2070
+ "What type of waterproofing work?",
2069
2071
  updates
2070
2072
  )
2071
2073
  }
2072
2074
 
2073
2075
  function windowsWorkType(updates = {}) {
2074
2076
  return sqstep(
2075
- 'windowsWorkType',
2076
- windowsWorkType$1(),
2077
- 'What type of windows work?',
2077
+ "windowsWorkType",
2078
+ windowsWorkType$1(updates.scope, true, updates.input),
2079
+ "What type of windows work?",
2078
2080
  updates
2079
2081
  )
2080
2082
  }
2081
2083
 
2082
2084
  function windowsSubtype(updates = {}) {
2083
2085
  return sqstep(
2084
- 'windowsSubtype',
2085
- windowsSubtype$1(),
2086
- 'What type of windows work?',
2086
+ "windowsSubtype",
2087
+ windowsSubtype$1(updates.scope, true, updates.input),
2088
+ "What windows job type?",
2087
2089
  updates
2088
2090
  )
2089
2091
  }
2090
2092
 
2091
2093
  function numberOfWindows(updates = {}) {
2092
2094
  return sqstep(
2093
- 'numberOfWindows',
2094
- numberOfWindows$1(),
2095
- 'How many windows?',
2095
+ "numberOfWindows",
2096
+ numberOfWindows$1(updates.scope, true, updates.input),
2097
+ "How many windows?",
2096
2098
  updates
2097
2099
  )
2098
2100
  }
2099
2101
 
2100
2102
  const formNavigation = (updates = {}) => ({
2101
- $el: 'div',
2103
+ $el: "div",
2102
2104
  attrs: {
2103
- class: 'step-nav'
2105
+ class: "step-nav",
2104
2106
  },
2105
2107
  children: [
2106
2108
  {
2107
- $formkit: 'button',
2108
- name: 'back_button',
2109
- onClick: '$setPreviousStep($prevStepFunc($get(form)))',
2110
- children: 'Back',
2109
+ $formkit: "button",
2110
+ name: "back_button",
2111
+ onClick: "$setPreviousStep($prevStepFunc($get(form)))",
2112
+ children: "Back",
2111
2113
  style: {
2112
- if: '$activeStep === $firstStep()',
2113
- then: 'visibility: hidden;'
2114
- }
2114
+ if: "$activeStep === $firstStep()",
2115
+ then: "visibility: hidden;",
2116
+ },
2115
2117
  },
2116
2118
  {
2117
- $formkit: 'button',
2118
- name: 'next_button',
2119
- onClick: '$setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form)))',
2119
+ $formkit: "button",
2120
+ name: "next_button",
2121
+ onClick: "$setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form)))",
2120
2122
  children: {
2121
- if: '$activeStep === $firstStep()',
2122
- then: 'Start',
2123
- else: 'Next'
2123
+ if: "$activeStep === $firstStep()",
2124
+ then: "Start",
2125
+ else: "Next",
2124
2126
  },
2125
2127
  outerClass: {
2126
- if: '$activeStep === $lastStep()',
2127
- then: 't-hidden',
2128
- else: ''
2128
+ if: "$activeStep === $lastStep()",
2129
+ then: "t-hidden",
2130
+ else: "",
2129
2131
  },
2130
2132
  style: {
2131
- if: '$activeStep === $lastStep()',
2132
- then: 'display: none;'
2133
- }
2133
+ if: "$activeStep === $lastStep()",
2134
+ then: "display: none;",
2135
+ },
2134
2136
  },
2135
2137
  {
2136
- $formkit: 'submit',
2137
- name: 'submit_button',
2138
- label: updates.submitLabel || 'Submit',
2139
- if: '$activeStep === $lastStep()',
2138
+ $formkit: "submit",
2139
+ name: "submit_button",
2140
+ label: updates.submitLabel || "Submit",
2141
+ if: "$activeStep === $lastStep()",
2140
2142
  style: {
2141
- if: '$activeStep !== $lastStep()',
2142
- then: 'display: none;'
2143
- }
2144
- }
2145
- ]
2143
+ if: "$activeStep !== $lastStep()",
2144
+ then: "display: none;",
2145
+ },
2146
+ },
2147
+ ],
2146
2148
  });
2147
2149
 
2148
2150
  const formDetails = () => ({
2149
- $el: 'pre',
2151
+ $el: "pre",
2150
2152
  if: '$urlParam("fdbg", "") == 1',
2151
2153
  children: [
2152
2154
  {
2153
- $el: 'pre',
2154
- children: '$stringify( $get(form).value )',
2155
+ $el: "pre",
2156
+ children: "$stringify( $get(form).value )",
2155
2157
  attrs: {
2156
- class: 't-text-xs',
2157
- style: 'overflow: scroll'
2158
- }
2158
+ class: "t-text-xs",
2159
+ style: "overflow: scroll",
2160
+ },
2159
2161
  },
2160
2162
  {
2161
- $el: 'pre',
2162
- children: ['activeStep: ', '$activeStep'],
2163
+ $el: "pre",
2164
+ children: ["activeStep: ", "$activeStep"],
2163
2165
  attrs: {
2164
- class: 't-text-xs',
2165
- style: 'overflow: scroll'
2166
- }
2166
+ class: "t-text-xs",
2167
+ style: "overflow: scroll",
2168
+ },
2167
2169
  },
2168
2170
  {
2169
- $el: 'pre',
2170
- children: ['stepHistory: ', '$stepHistory'],
2171
+ $el: "pre",
2172
+ children: ["stepHistory: ", "$stepHistory"],
2171
2173
  attrs: {
2172
- class: 't-text-xs',
2173
- style: 'overflow: scroll'
2174
- }
2174
+ class: "t-text-xs",
2175
+ style: "overflow: scroll",
2176
+ },
2175
2177
  },
2176
2178
  {
2177
- $el: 'pre',
2178
- children: ['stepQueue: ', '$stepQueue'],
2179
+ $el: "pre",
2180
+ children: ["stepQueue: ", "$stepQueue"],
2179
2181
  attrs: {
2180
- class: 't-text-xs',
2181
- style: 'overflow: scroll'
2182
- }
2182
+ class: "t-text-xs",
2183
+ style: "overflow: scroll",
2184
+ },
2183
2185
  },
2184
2186
  {
2185
- $el: 'pre',
2186
- children: ['steps: ', '$stepKeys()'],
2187
+ $el: "pre",
2188
+ children: ["steps: ", "$stepKeys()"],
2187
2189
  attrs: {
2188
- class: 't-text-xs',
2189
- style: 'overflow: scroll'
2190
- }
2191
- }
2192
- ]
2190
+ class: "t-text-xs",
2191
+ style: "overflow: scroll",
2192
+ },
2193
+ },
2194
+ ],
2193
2195
  });
2194
2196
 
2195
2197
  const formPropDefaults = {
2196
- type: 'form',
2197
- id: 'form',
2198
- config: { validationVisibility: 'submit' },
2198
+ type: "form",
2199
+ id: "form",
2200
+ config: { validationVisibility: "submit" },
2199
2201
  onSubmit: '$submit($submitUrl, $prepData, $handleRedirect, "text/plain; charset=UTF-8")',
2200
- plugins: '$plugins',
2202
+ plugins: "$plugins",
2201
2203
  actions: false,
2202
- anchorElement: 'form-anchor',
2204
+ anchorElement: "form-anchor",
2203
2205
  useLocalStorage: true,
2204
2206
  prepop: {
2205
- fromURL: true
2207
+ fromURL: true,
2206
2208
  },
2207
2209
  errorCodes: {
2208
2210
  403: { message: "An Error Occurred", abort: false },
@@ -2210,13 +2212,11 @@ const formPropDefaults = {
2210
2212
  429: "An Error Occurred",
2211
2213
  504: { message: "An Error Occurred", abort: false },
2212
2214
  },
2213
- formClass: '!t-max-w-[40rem]'
2215
+ formClass: "!t-max-w-[40rem]",
2214
2216
  };
2215
2217
 
2216
2218
  function filterMapByKey(obj, keyList) {
2217
- return Object.fromEntries(
2218
- Object.entries(obj).filter(([key]) => keyList.includes(key))
2219
- );
2219
+ return Object.fromEntries(Object.entries(obj).filter(([key]) => keyList.includes(key)))
2220
2220
  }
2221
2221
 
2222
2222
  // export function filteredNextStepsMapLegal(keyList) {
@@ -2226,10 +2226,7 @@ function filterMapByKey(obj, keyList) {
2226
2226
  // }
2227
2227
 
2228
2228
  function formProps(updates) {
2229
- const props = merge(
2230
- formPropDefaults,
2231
- updates
2232
- );
2229
+ const props = merge(formPropDefaults, updates);
2233
2230
  if (props.formId && !props.name) {
2234
2231
  props.name = props.formId;
2235
2232
  }
@@ -2239,13 +2236,10 @@ function formProps(updates) {
2239
2236
  const metaDefaults = {};
2240
2237
 
2241
2238
  function metaProps(updates) {
2242
- const data = merge(
2243
- metaDefaults,
2244
- updates
2245
- );
2239
+ const data = merge(metaDefaults, updates);
2246
2240
  return {
2247
- type: 'meta',
2248
- data
2241
+ type: "meta",
2242
+ data,
2249
2243
  }
2250
2244
  }
2251
2245
 
@@ -2265,236 +2259,289 @@ function defaultMetaPropsHomeImprovement(category = null) {
2265
2259
  defaultFinalHeadline: DEFAULT_FINAL_HEADLINE_HOME_IMPROVEMENT,
2266
2260
  finalHeadlines: finalHeadlines,
2267
2261
  defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE_HOME_IMPROVEMENT,
2268
- finalSubHeadlines: finalSubHeadlines
2262
+ finalSubHeadlines: finalSubHeadlines,
2269
2263
  })
2270
2264
  }
2271
2265
 
2272
- function dynamicSchemaNode(field = 'Type_Of_Legal_Problem') {
2266
+ function defaultMetaPropsHomeImprovementGeneral(defaultSteps = nextStepsHomeImprovementDefault) {
2267
+ const meta = defaultMetaPropsHomeImprovement();
2268
+ meta.data.dynamicSchema = [
2269
+ zipcode(),
2270
+ timeframe(),
2271
+ ownHome(),
2272
+ address(),
2273
+ homeImprovementWorkType(),
2274
+ additionsSubType(),
2275
+ constructionAreaSize(),
2276
+ applianceType(),
2277
+ cabinetWorkType(),
2278
+ carpentrySubtype(),
2279
+ carpetWorkType(),
2280
+ cleaningSubtype(),
2281
+ countertopMaterial(),
2282
+ deckWorkType(),
2283
+ demolitionSubtype(),
2284
+ doorSubtype(),
2285
+ drivewayWorkType(),
2286
+ drivewayMaterial(),
2287
+ wallSurfaceType(),
2288
+ electricalSubtype(),
2289
+ fenceMaterial(),
2290
+ flooringMaterial(),
2291
+ generalContractorSubtype(),
2292
+ gutterMaterial(),
2293
+ gutterWorkType(),
2294
+ smartHomeSubtype(),
2295
+ homeOrganizationSubtype(),
2296
+ numberOfRooms(),
2297
+ homeTheaterSubtype(),
2298
+ heatingCoolingSubtype(),
2299
+ fuelSource(),
2300
+ insulationSubtype(),
2301
+ landscapingSubtype(),
2302
+ masonrySubtype(),
2303
+ masonryMaterial(),
2304
+ masonryWorkType(),
2305
+ restorationSubtype(),
2306
+ // Moving not finished yet
2307
+ // steps.movingFromAddress(),
2308
+ // steps.movingToAddress(),
2309
+ // steps.movingHouseholdSize(),
2310
+ paintingSubtype({
2311
+ nextStepMap: nextStepsMapPainting(defaultSteps),
2312
+ }),
2313
+ paintingRooms(),
2314
+ pestControlSubtype(),
2315
+ poolsWorkType(),
2316
+ poolsSubtype(),
2317
+ plumbingSubtype(),
2318
+ remodelingSubtype(),
2319
+ roofingWorkType(),
2320
+ roofingMaterial(),
2321
+ sidingMaterial(),
2322
+ tilingSubtype(),
2323
+ waterproofingSubtype(),
2324
+ windowsWorkType(),
2325
+ windowsSubtype(),
2326
+ numberOfWindows(),
2327
+ commentsHeadline({
2328
+ label: null,
2329
+ headline: "Please briefly describe your project:",
2330
+ headlineClass: "!t-text-dark",
2331
+ }),
2332
+ firstAndLastV3({
2333
+ headlineClass: "!t-text-dark",
2334
+ }),
2335
+ ];
2336
+ return meta
2337
+ }
2338
+
2339
+ function dynamicSchemaNode(field = "Type_Of_Legal_Problem") {
2273
2340
  return {
2274
- $cmp: 'FormKitSchema',
2275
- if: '$get(' + field + ').value',
2341
+ $cmp: "FormKitSchema",
2342
+ if: "$get(" + field + ").value",
2276
2343
  props: {
2277
- schema: '$meta.dynamicSchema',
2278
- data: '$buildData($meta)'
2279
- }
2344
+ schema: "$meta.dynamicSchema",
2345
+ data: "$buildData($meta)",
2346
+ },
2280
2347
  }
2281
2348
  }
2282
2349
 
2283
2350
  const formAnchorDefaults = {
2284
- $el: 'div',
2351
+ $el: "div",
2285
2352
  children: [
2286
2353
  {
2287
- $el: 'div',
2354
+ $el: "div",
2288
2355
  attrs: {
2289
- id: 'form-anchor',
2290
- class: 't-absolute',
2291
- style: { top: '-30px', left: 0 }
2292
- }
2293
- }
2356
+ id: "form-anchor",
2357
+ class: "t-absolute",
2358
+ style: { top: "-30px", left: 0 },
2359
+ },
2360
+ },
2294
2361
  ],
2295
2362
  attrs: {
2296
- class: 't-relative'
2297
- }
2363
+ class: "t-relative",
2364
+ },
2298
2365
  };
2299
2366
 
2300
2367
  function formAnchor(updates) {
2301
- return merge(
2302
- formAnchorDefaults,
2303
- updates
2304
- )
2368
+ return merge(formAnchorDefaults, updates)
2305
2369
  }
2306
2370
 
2307
2371
  const progressBarDefaults = {
2308
- $el: 'div',
2372
+ $el: "div",
2309
2373
  attrs: {
2310
- class: 't-mt-7 t-mb-5 t-w-full t-flex t-flex-col t-justify-center t-items-center',
2374
+ class: "t-mt-7 t-mb-5 t-w-full t-flex t-flex-col t-justify-center t-items-center",
2311
2375
  style: {
2312
- if: '$fns.eq($activeStep, $firstStep()) || $fns.eq($activeStep, $lastStep())',
2313
- then: 'display: none'
2376
+ if: "$fns.eq($activeStep, $firstStep()) || $fns.eq($activeStep, $lastStep())",
2377
+ then: "display: none",
2314
2378
  },
2315
2379
  },
2316
2380
  children: [
2317
2381
  {
2318
- $el: 'div',
2382
+ $el: "div",
2319
2383
  attrs: {
2320
- class: 't-flex t-justify-center'
2384
+ class: "t-flex t-justify-center",
2321
2385
  },
2322
2386
  children: [
2323
2387
  {
2324
- $el: 'span',
2388
+ $el: "span",
2325
2389
  attrs: {
2326
- id: 'progress-bar-text',
2327
- class: 't-text-sm t-mb-1'
2390
+ id: "progress-bar-text",
2391
+ class: "t-text-sm t-mb-1",
2328
2392
  },
2329
- children: [
2330
- "0% Complete"
2331
- ]
2393
+ children: ["0% Complete"],
2332
2394
  },
2333
- ]
2395
+ ],
2334
2396
  },
2335
2397
  {
2336
- $el: 'div',
2398
+ $el: "div",
2337
2399
  attrs: {
2338
- class: 't-bg-gray-100 t-w-9/12 t-rounded'
2400
+ class: "t-bg-gray-100 t-w-9/12 t-rounded",
2339
2401
  },
2340
2402
  children: [
2341
2403
  {
2342
- $el: 'div',
2404
+ $el: "div",
2343
2405
  attrs: {
2344
- id: 'progress-bar',
2345
- class: 't-flex t-flex-col t-justify-center t-text-center t-whitespace-nowrap t-w-[10%] t-h-1.5 t-rounded t-text-white t-bg-[#007bff]',
2406
+ id: "progress-bar",
2407
+ class:
2408
+ "t-flex t-flex-col t-justify-center t-text-center t-whitespace-nowrap t-w-[10%] t-h-1.5 t-rounded t-text-white t-bg-[#007bff]",
2346
2409
  style: {
2347
- transition: 'width 0.5s ease'
2410
+ transition: "width 0.5s ease",
2348
2411
  },
2349
2412
  },
2350
- }
2351
- ]
2352
- }
2353
- ]
2413
+ },
2414
+ ],
2415
+ },
2416
+ ],
2354
2417
  };
2355
2418
 
2356
2419
  function progressBar(updates) {
2357
- return merge(
2358
- progressBarDefaults,
2359
- updates
2360
- )
2420
+ return merge(progressBarDefaults, updates)
2361
2421
  }
2362
2422
 
2363
2423
  function headlineDefaults(updates = {}) {
2364
2424
  return {
2365
- $el: 'h1',
2425
+ $el: "h1",
2366
2426
  attrs: {
2367
- 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 || '')
2368
- }
2427
+ class:
2428
+ "t-flex t-justify-center t-text-center !t-text-[2rem] t-font-semibold t-pt-5 t-px-7 md:t-px-3" +
2429
+ " " +
2430
+ (updates.headlineClass || ""),
2431
+ },
2369
2432
  }
2370
2433
  }
2371
2434
 
2372
2435
  function headline(updates = {}) {
2373
- return merge(
2374
- headlineDefaults(updates),
2375
- updates
2376
- )
2436
+ return merge(headlineDefaults(updates), updates)
2377
2437
  }
2378
2438
 
2379
2439
  function subHeadlineDefaults(updates = {}) {
2380
2440
  return {
2381
- $el: 'h3',
2441
+ $el: "h3",
2382
2442
  attrs: {
2383
- 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 || '')
2384
- }
2443
+ class:
2444
+ "t-flex t-justify-center t-text-center !t-text-[1.2rem] t-font-medium t-text-blue-500 t-px-10" +
2445
+ " " +
2446
+ (updates.subheadlineClass || ""),
2447
+ },
2385
2448
  }
2386
2449
  }
2387
2450
 
2388
2451
  function subHeadline(updates = {}) {
2389
- return merge(
2390
- subHeadlineDefaults(updates),
2391
- updates
2392
- )
2452
+ return merge(subHeadlineDefaults(updates), updates)
2393
2453
  }
2394
2454
 
2395
2455
  const hiddenInputsBase = [
2396
2456
  {
2397
- $formkit: 'hidden',
2457
+ $formkit: "hidden",
2398
2458
  name: "gclid",
2399
- value: null
2459
+ value: null,
2400
2460
  },
2401
2461
  {
2402
- $formkit: 'hidden',
2462
+ $formkit: "hidden",
2403
2463
  name: "campaignid",
2404
- value: null
2464
+ value: null,
2405
2465
  },
2406
2466
  {
2407
- $formkit: 'hidden',
2467
+ $formkit: "hidden",
2408
2468
  name: "s",
2409
- value: null
2410
- }
2469
+ value: null,
2470
+ },
2411
2471
  ];
2412
2472
 
2413
2473
  const hiddenInputsHomeImprovement = [
2414
2474
  {
2415
- $formkit: 'hidden',
2475
+ $formkit: "hidden",
2416
2476
  name: "vertical",
2417
- value: "HomeImprovement"
2477
+ value: "HomeImprovement",
2418
2478
  },
2419
2479
  {
2420
- $formkit: 'hidden',
2480
+ $formkit: "hidden",
2421
2481
  name: "TCPA_Language",
2422
- value: "$meta.tcpaLanguage"
2482
+ value: "$meta.tcpaLanguage",
2423
2483
  },
2424
- ...hiddenInputsBase
2484
+ ...hiddenInputsBase,
2425
2485
  ];
2426
2486
 
2427
- const homeImprovementRedirectMapDefaults = {
2428
- '*': HomeImprovementRedirectUrl()
2429
- };
2430
-
2431
-
2432
- function homeImprovementRedirectMap(updates) {
2433
- return merge(
2434
- homeImprovementRedirectMapDefaults,
2435
- updates
2436
- )
2437
- }
2438
-
2439
-
2440
2487
  // ------ Home Improvement
2441
2488
 
2442
-
2443
2489
  const HomeImprovementCommentsPlaceholders = {
2444
- 'Additions': 'Example: "I would like to add a sunroom to my home"',
2445
- 'Appliances': 'Example: "I need to repair a dishwasher"',
2446
- 'Appraisals': 'Example: "I need to get my home appraised"',
2447
- 'Cabinets': 'Example: "I want to install new kitchen cabinets"',
2448
- 'Carpentry': 'Example: "I need someone to build custom shelves"',
2449
- 'Carpets': 'Example: "I want to replace the carpets in my living room"',
2450
- 'Cleaning': 'Example: "I need a professional cleaning service for my home"',
2451
- 'Countertops': 'Example: "I want to install granite countertops in my kitchen"',
2452
- 'Decks and Porches': 'Example: "I want to build a new deck in my backyard"',
2453
- 'Demolition': 'Example: "I need to demolish a wall in my home"',
2454
- 'Doors': 'Example: "I want to replace the front door of my house"',
2455
- 'Driveways': 'Example: "I need to repair my driveway"',
2456
- 'Drywall and Plaster': 'Example: "I need to repair a hole in my drywall"',
2457
- 'Electrical': 'Example: "I need an electrician to install new light fixtures"',
2458
- 'Fencing': 'Example: "I want to install a privacy fence in my backyard"',
2459
- 'Flooring': 'Example: "I want to install hardwood flooring in my living room"',
2460
- 'Foundations': 'Example: "I need to repair the foundation of my house"',
2461
- 'Garage Doors': 'Example: "I want to replace my garage door"',
2462
- 'General Contractors': 'Example: "I need a general contractor for a home renovation"',
2463
- 'Gutters': 'Example: "I need to clean and repair my gutters"',
2464
- 'Handyman': 'Example: "I need a handyman to fix various things around my house"',
2465
- 'Holiday Decorators': 'Example: "I want to hire someone to decorate my home for the holidays"',
2466
- 'Smart Home': 'Example: "I want to install a smart home automation system"',
2467
- 'Home Builders': 'Example: "I want to build a custom home"',
2468
- 'Home Inspection': 'Example: "I need a home inspection before buying a house"',
2469
- 'Home Organization': 'Example: "I need help organizing my closets and storage"',
2470
- 'Home Security': 'Example: "I want to install a home security system"',
2471
- 'Home Staging': 'Example: "I need a home staging service to prepare my house for sale"',
2472
- 'Home Theater': 'Example: "I want to set up a home theater system"',
2473
- 'Home Warranties': 'Example: "I want to purchase a home warranty"',
2474
- 'Hot Tubs': 'Example: "I want to install a hot tub in my backyard"',
2475
- 'Heating and Cooling': 'Example: "I need to repair my air conditioning unit"',
2476
- 'Insulation': 'Example: "I want to improve the insulation in my home"',
2477
- 'Junk Removal': 'Example: "I need a service to remove junk and debris from my property"',
2478
- 'Landscaping': 'Example: "I want to redesign my backyard landscaping"',
2479
- 'Locksmiths': 'Example: "I need a locksmith to change the locks on my doors"',
2480
- 'Masonry and Concrete': 'Example: "I need to repair a cracked concrete driveway"',
2481
- 'Restoration': 'Example: "I need water damage restoration services"',
2482
- 'Moving': 'Example: "I need a moving company to help me relocate"',
2483
- 'Painting': 'Example: "I want to paint the interior walls of my house"',
2484
- 'Pest Control': 'Example: "I need pest control services for my home"',
2485
- 'Pools': 'Example: "I want to install a swimming pool in my backyard"',
2486
- 'Plumbing': 'Example: "I need a plumber to fix a leaky faucet"',
2487
- 'Pressure Washing': 'Example: "I want to pressure wash the exterior of my house"',
2488
- 'Remodeling': 'Example: "I want to remodel my kitchen"',
2489
- 'Roofing': 'Example: "I need to repair a leaky roof"',
2490
- 'Sheds': 'Example: "I want to build a storage shed in my backyard"',
2491
- 'Siding': 'Example: "I want to replace the siding on my house"',
2492
- 'Solar': 'Example: "I want to install solar panels on my roof"',
2493
- 'Tiling': 'Example: "I want to install new tiles in my bathroom"',
2494
- 'Walk-in Tubs': 'Example: "I want to install a walk-in tub in my bathroom"',
2495
- 'Waterproofing': 'Example: "I need to waterproof my basement"',
2496
- 'Window Cleaning': 'Example: "I need a professional window cleaning service"',
2497
- 'Windows': 'Example: "I want to replace 3 windows in my house"',
2490
+ Additions: 'Example: "I would like to add a sunroom to my home"',
2491
+ Appliances: 'Example: "I need to repair a dishwasher"',
2492
+ Appraisals: 'Example: "I need to get my home appraised"',
2493
+ Cabinets: 'Example: "I want to install new kitchen cabinets"',
2494
+ Carpentry: 'Example: "I need someone to build custom shelves"',
2495
+ Carpets: 'Example: "I want to replace the carpets in my living room"',
2496
+ Cleaning: 'Example: "I need a professional cleaning service for my home"',
2497
+ Countertops: 'Example: "I want to install granite countertops in my kitchen"',
2498
+ "Decks and Porches": 'Example: "I want to build a new deck in my backyard"',
2499
+ Demolition: 'Example: "I need to demolish a wall in my home"',
2500
+ Doors: 'Example: "I want to replace the front door of my house"',
2501
+ Driveways: 'Example: "I need to repair my driveway"',
2502
+ "Drywall and Plaster": 'Example: "I need to repair a hole in my drywall"',
2503
+ Electrical: 'Example: "I need an electrician to install new light fixtures"',
2504
+ Fencing: 'Example: "I want to install a privacy fence in my backyard"',
2505
+ Flooring: 'Example: "I want to install hardwood flooring in my living room"',
2506
+ Foundations: 'Example: "I need to repair the foundation of my house"',
2507
+ "Garage Doors": 'Example: "I want to replace my garage door"',
2508
+ "General Contractors": 'Example: "I need a general contractor for a home renovation"',
2509
+ Gutters: 'Example: "I need to clean and repair my gutters"',
2510
+ Handyman: 'Example: "I need a handyman to fix various things around my house"',
2511
+ "Holiday Decorators": 'Example: "I want to hire someone to decorate my home for the holidays"',
2512
+ "Smart Home": 'Example: "I want to install a smart home automation system"',
2513
+ "Home Builders": 'Example: "I want to build a custom home"',
2514
+ "Home Inspection": 'Example: "I need a home inspection before buying a house"',
2515
+ "Home Organization": 'Example: "I need help organizing my closets and storage"',
2516
+ "Home Security": 'Example: "I want to install a home security system"',
2517
+ "Home Staging": 'Example: "I need a home staging service to prepare my house for sale"',
2518
+ "Home Theater": 'Example: "I want to set up a home theater system"',
2519
+ "Home Warranties": 'Example: "I want to purchase a home warranty"',
2520
+ "Hot Tubs": 'Example: "I want to install a hot tub in my backyard"',
2521
+ "Heating and Cooling": 'Example: "I need to repair my air conditioning unit"',
2522
+ Insulation: 'Example: "I want to improve the insulation in my home"',
2523
+ "Junk Removal": 'Example: "I need a service to remove junk and debris from my property"',
2524
+ Landscaping: 'Example: "I want to redesign my backyard landscaping"',
2525
+ Locksmiths: 'Example: "I need a locksmith to change the locks on my doors"',
2526
+ "Masonry and Concrete": 'Example: "I need to repair a cracked concrete driveway"',
2527
+ Restoration: 'Example: "I need water damage restoration services"',
2528
+ Moving: 'Example: "I need a moving company to help me relocate"',
2529
+ Painting: 'Example: "I want to paint the interior walls of my house"',
2530
+ "Pest Control": 'Example: "I need pest control services for my home"',
2531
+ Pools: 'Example: "I want to install a swimming pool in my backyard"',
2532
+ Plumbing: 'Example: "I need a plumber to fix a leaky faucet"',
2533
+ "Pressure Washing": 'Example: "I want to pressure wash the exterior of my house"',
2534
+ Remodeling: 'Example: "I want to remodel my kitchen"',
2535
+ Roofing: 'Example: "I need to repair a leaky roof"',
2536
+ Sheds: 'Example: "I want to build a storage shed in my backyard"',
2537
+ Siding: 'Example: "I want to replace the siding on my house"',
2538
+ Solar: 'Example: "I want to install solar panels on my roof"',
2539
+ Tiling: 'Example: "I want to install new tiles in my bathroom"',
2540
+ "Walk-in Tubs": 'Example: "I want to install a walk-in tub in my bathroom"',
2541
+ Waterproofing: 'Example: "I need to waterproof my basement"',
2542
+ "Window Cleaning": 'Example: "I need a professional window cleaning service"',
2543
+ Windows: 'Example: "I want to replace 3 windows in my house"',
2544
+ "Not Sure or Other": 'Example: "I need general handyman services"',
2498
2545
  };
2499
2546
 
2500
2547
  const HomeImprovementFinalHeadlines = {
@@ -2612,409 +2659,149 @@ const HomeImprovementFinalSubHeadlines = {
2612
2659
  };
2613
2660
 
2614
2661
  const nextStepsHomeImprovementDefault = [
2615
- 'comments',
2616
- 'timeframe',
2617
- 'ownHome',
2618
- 'zipcode',
2619
- 'address',
2620
- // 'homeImprovementCrossSells',
2621
- 'firstAndLast',
2622
- 'contactInfo',
2662
+ "comments",
2663
+ "timeframe",
2664
+ "ownHome",
2665
+ "zipcode",
2666
+ "address",
2667
+ "homeImprovementCrossSells",
2668
+ "firstAndLast",
2669
+ "contactInfo",
2623
2670
  ];
2624
2671
 
2625
- const nextStepsMapGeneralHomeImprovement = {
2626
- values: {
2627
- 'Category': {
2628
- 'Additions': [
2629
- 'additionsSubType',
2630
- 'constructionAreaSize',
2631
- ...nextStepsHomeImprovementDefault
2632
- ],
2633
- 'Appliances': [
2634
- 'homeImprovementWorkType',
2635
- 'applianceType',
2636
- ...nextStepsHomeImprovementDefault
2637
- ],
2638
- 'Appraisals': [
2639
- ...nextStepsHomeImprovementDefault
2640
- ],
2641
- 'Cabinets': [
2642
- 'cabinetWorkType',
2643
- ...nextStepsHomeImprovementDefault
2644
- ],
2645
- 'Carpentry': [
2646
- 'carpentrySubtype',
2647
- 'homeImprovementWorkType',
2648
- ...nextStepsHomeImprovementDefault
2649
- ],
2650
- 'Carpets': [
2651
- 'carpetWorkType',
2652
- ...nextStepsHomeImprovementDefault
2653
- ],
2654
- 'Cleaning': [
2655
- 'cleaningSubtype',
2656
- ...nextStepsHomeImprovementDefault
2657
- ],
2658
- 'Countertops': [
2659
- 'countertopMaterial',
2660
- 'homeImprovementWorkType',
2661
- ...nextStepsHomeImprovementDefault
2662
- ],
2663
- 'Decks and Porches': [
2664
- 'deckWorkType',
2665
- ...nextStepsHomeImprovementDefault
2666
- ],
2667
- 'Demolition': [
2668
- 'demolitionSubtype',
2669
- ...nextStepsHomeImprovementDefault
2670
- ],
2671
- 'Doors': [
2672
- 'doorSubtype',
2673
- 'homeImprovementWorkType',
2674
- ...nextStepsHomeImprovementDefault
2675
- ],
2676
- 'Driveways': [
2677
- 'drivewayWorkType',
2678
- 'drivewayMaterial',
2679
- ...nextStepsHomeImprovementDefault
2680
- ],
2681
- 'Drywall and Plaster': [
2682
- 'wallSurfaceType',
2683
- 'homeImprovementWorkType',
2684
- ...nextStepsHomeImprovementDefault
2685
- ],
2686
- 'Electrical': [
2687
- 'electricalSubtype',
2688
- 'homeImprovementWorkType',
2689
- ...nextStepsHomeImprovementDefault
2690
- ],
2691
- 'Fencing': [
2692
- 'fenceMaterial',
2693
- 'homeImprovementWorkType',
2694
- ...nextStepsHomeImprovementDefault
2695
- ],
2696
- 'Flooring': [
2697
- 'flooringMaterial',
2698
- 'homeImprovementWorkType',
2699
- ...nextStepsHomeImprovementDefault
2700
- ],
2701
- 'Foundations': [
2702
- 'homeImprovementWorkType',
2703
- ...nextStepsHomeImprovementDefault
2704
- ],
2705
- 'Garage Doors': [
2706
- 'homeImprovementWorkType',
2707
- ...nextStepsHomeImprovementDefault
2708
- ],
2709
- 'General Contractors': [
2710
- 'generalContractorSubtype',
2711
- ...nextStepsHomeImprovementDefault
2712
- ],
2713
- 'Gutters': [
2714
- 'gutterMaterial',
2715
- 'guttersWorkType',
2716
- ...nextStepsHomeImprovementDefault
2717
- ],
2718
- 'Handyman': [
2719
- ...nextStepsHomeImprovementDefault
2720
- ],
2721
- 'Holiday Decorators': [
2722
- ...nextStepsHomeImprovementDefault
2723
- ],
2724
- 'Smart Home': [
2725
- 'smartHomeSubtype',
2726
- ...nextStepsHomeImprovementDefault
2727
- ],
2728
- 'Home Builders': [
2729
- ...nextStepsHomeImprovementDefault
2730
- ],
2731
- 'Home Inspection': [
2732
- ...nextStepsHomeImprovementDefault
2733
- ],
2734
- 'Home Organization': [
2735
- 'homeOrganizationSubtype',
2736
- ...nextStepsHomeImprovementDefault
2737
- ],
2738
- 'Home Security': [
2739
- ...nextStepsHomeImprovementDefault
2740
- ],
2741
- 'Home Staging': [
2742
- 'numberOfRooms',
2743
- ...nextStepsHomeImprovementDefault
2744
- ],
2745
- 'Home Theater': [
2746
- 'homeTheaterSubtype',
2747
- ...nextStepsHomeImprovementDefault
2748
- ],
2749
- 'Home Warranties': [
2750
- ...nextStepsHomeImprovementDefault
2751
- ],
2752
- 'Hot Tubs': [
2753
- 'homeImprovementWorkType',
2754
- ...nextStepsHomeImprovementDefault
2755
- ],
2756
- 'Heating and Cooling': [
2757
- 'heatingCoolingSubtype',
2758
- 'fuelSource',
2759
- 'homeImprovementWorkType',
2760
- ...nextStepsHomeImprovementDefault
2761
- ],
2762
- 'Insulation': [
2763
- 'insulationSubtype',
2764
- ...nextStepsHomeImprovementDefault
2765
- ],
2766
- 'Junk Removal': [
2767
- ...nextStepsHomeImprovementDefault
2768
- ],
2769
- 'Landscaping': [
2770
- 'landscapingSubtype',
2771
- 'homeImprovementWorkType',
2772
- ...nextStepsHomeImprovementDefault
2773
- ],
2774
- 'Locksmiths': [
2775
- ...nextStepsHomeImprovementDefault
2776
- ],
2777
- 'Masonry and Concrete': [
2778
- 'masonrySubtype',
2779
- 'masonryMaterial',
2780
- 'masonryWorkType',
2781
- ...nextStepsHomeImprovementDefault
2782
- ],
2783
- 'Restoration': [
2784
- 'restorationSubtype',
2785
- ...nextStepsHomeImprovementDefault
2786
- ],
2787
- 'Moving': [
2788
- 'movingFromAddress',
2789
- 'movingToAddress',
2790
- 'movingHouseholdSize',
2791
- ...nextStepsHomeImprovementDefault
2792
- ],
2793
- 'Painting': [
2794
- 'paintingSubtype',
2795
- 'paintingRooms',
2796
- ...nextStepsHomeImprovementDefault
2797
- ],
2798
- 'Pest Control': [
2799
- 'pestControlSubtype',
2800
- ...nextStepsHomeImprovementDefault
2801
- ],
2802
- 'Pools': [
2803
- 'poolsWorkType',
2804
- 'poolsSubtype',
2805
- ...nextStepsHomeImprovementDefault
2806
- ],
2807
- 'Plumbing': [
2808
- 'plumbingSubtype',
2809
- 'homeImprovementWorkType',
2810
- ...nextStepsHomeImprovementDefault
2811
- ],
2812
- 'Pressure Washing': [
2813
- ...nextStepsHomeImprovementDefault
2814
- ],
2815
- 'Remodeling': [
2816
- 'remodelingSubtype',
2817
- ...nextStepsHomeImprovementDefault
2818
- ],
2819
- 'Roofing': [
2820
- 'roofingWorkType',
2821
- 'roofingMaterial',
2822
- ...nextStepsHomeImprovementDefault
2823
- ],
2824
- 'Sheds': [
2825
- 'homeImprovementWorkType',
2826
- ...nextStepsHomeImprovementDefault
2827
- ],
2828
- 'Siding': [
2829
- 'sidingMaterial',
2830
- 'homeImprovementWorkType',
2831
- ...nextStepsHomeImprovementDefault
2832
- ],
2833
- 'Solar': [
2834
- 'homeImprovementWorkType',
2835
- ...nextStepsHomeImprovementDefault
2836
- ],
2837
- 'Tiling': [
2838
- 'tilingSubtype',
2839
- 'homeImprovementWorkType',
2840
- ...nextStepsHomeImprovementDefault
2841
- ],
2842
- 'Walk-in Tubs': [
2843
- ...nextStepsHomeImprovementDefault
2844
- ],
2845
- 'Waterproofing': [
2846
- 'waterproofingSubtype',
2847
- ...nextStepsHomeImprovementDefault
2848
- ],
2849
- 'Window Cleaning': [
2850
- ...nextStepsHomeImprovementDefault
2851
- ],
2852
- 'Windows': [
2853
- 'windowsWorkType',
2854
- 'windowsSubtype',
2855
- 'numberOfWindows',
2856
- ...nextStepsHomeImprovementDefault
2857
- ]
2672
+ const nextStepsMapGeneralHomeImprovement = (defaultSteps = nextStepsHomeImprovementDefault) => {
2673
+ return {
2674
+ values: {
2675
+ Category: {
2676
+ Additions: ["additionsSubType", "constructionAreaSize", ...defaultSteps],
2677
+ Appliances: ["applianceType", "homeImprovementWorkType", ...defaultSteps],
2678
+ Appraisals: [...defaultSteps],
2679
+ Cabinets: ["cabinetWorkType", ...defaultSteps],
2680
+ Carpentry: ["carpentrySubtype", "homeImprovementWorkType", ...defaultSteps],
2681
+ Carpets: ["carpetWorkType", ...defaultSteps],
2682
+ Cleaning: ["cleaningSubtype", ...defaultSteps],
2683
+ Countertops: ["countertopMaterial", "homeImprovementWorkType", ...defaultSteps],
2684
+ "Decks and Porches": ["deckWorkType", ...defaultSteps],
2685
+ Demolition: ["demolitionSubtype", ...defaultSteps],
2686
+ Doors: ["doorSubtype", "homeImprovementWorkType", ...defaultSteps],
2687
+ Driveways: ["drivewayWorkType", "drivewayMaterial", ...defaultSteps],
2688
+ "Drywall and Plaster": ["wallSurfaceType", "homeImprovementWorkType", ...defaultSteps],
2689
+ Electrical: ["electricalSubtype", "homeImprovementWorkType", ...defaultSteps],
2690
+ Fencing: ["fenceMaterial", "homeImprovementWorkType", ...defaultSteps],
2691
+ Flooring: ["flooringMaterial", "homeImprovementWorkType", ...defaultSteps],
2692
+ Foundations: ["homeImprovementWorkType", ...defaultSteps],
2693
+ "Garage Doors": ["homeImprovementWorkType", ...defaultSteps],
2694
+ "General Contractors": ["generalContractorSubtype", ...defaultSteps],
2695
+ Gutters: ["gutterMaterial", "gutterWorkType", ...defaultSteps],
2696
+ Handyman: [...defaultSteps],
2697
+ "Holiday Decorators": [...defaultSteps],
2698
+ "Smart Home": ["smartHomeSubtype", ...defaultSteps],
2699
+ "Home Builders": [...defaultSteps],
2700
+ "Home Inspection": [...defaultSteps],
2701
+ "Home Organization": ["homeOrganizationSubtype", ...defaultSteps],
2702
+ "Home Security": [...defaultSteps],
2703
+ "Home Staging": ["numberOfRooms", ...defaultSteps],
2704
+ "Home Theater": ["homeTheaterSubtype", ...defaultSteps],
2705
+ "Home Warranties": [...defaultSteps],
2706
+ "Hot Tubs": ["homeImprovementWorkType", ...defaultSteps],
2707
+ "Heating and Cooling": ["heatingCoolingSubtype", "fuelSource", "homeImprovementWorkType", ...defaultSteps],
2708
+ Insulation: ["insulationSubtype", ...defaultSteps],
2709
+ "Junk Removal": [...defaultSteps],
2710
+ Landscaping: ["landscapingSubtype", "homeImprovementWorkType", ...defaultSteps],
2711
+ Locksmiths: [...defaultSteps],
2712
+ "Masonry and Concrete": ["masonrySubtype", "masonryMaterial", "masonryWorkType", ...defaultSteps],
2713
+ // TODO :: add support for moving
2714
+ // Moving: ["movingFromAddress", "movingToAddress", "movingHouseholdSize", ...defaultSteps],
2715
+ Restoration: ["restorationSubtype", ...defaultSteps],
2716
+ Painting: ["paintingSubtype", "paintingRooms", ...defaultSteps],
2717
+ "Pest Control": ["pestControlSubtype", ...defaultSteps],
2718
+ Pools: ["poolsSubtype", "poolsWorkType", ...defaultSteps],
2719
+ Plumbing: ["plumbingSubtype", "homeImprovementWorkType", ...defaultSteps],
2720
+ "Pressure Washing": [...defaultSteps],
2721
+ Remodeling: ["remodelingSubtype", ...defaultSteps],
2722
+ Roofing: ["roofingWorkType", "roofingMaterial", ...defaultSteps],
2723
+ Sheds: ["homeImprovementWorkType", ...defaultSteps],
2724
+ Siding: ["sidingMaterial", "homeImprovementWorkType", ...defaultSteps],
2725
+ Solar: ["homeImprovementWorkType", ...defaultSteps],
2726
+ Tiling: ["tilingSubtype", "homeImprovementWorkType", ...defaultSteps],
2727
+ "Walk-in Tubs": [...defaultSteps],
2728
+ Waterproofing: ["waterproofingSubtype", ...defaultSteps],
2729
+ "Window Cleaning": [...defaultSteps],
2730
+ Windows: ["windowsSubtype", "windowsWorkType", "numberOfWindows", ...defaultSteps],
2731
+ },
2732
+ "*": defaultSteps,
2858
2733
  },
2859
- '*': nextStepsHomeImprovementDefault
2860
2734
  }
2861
2735
  };
2862
2736
 
2863
- const nextStepsMapPainting = {
2864
- values: {
2865
- 'Painting_Subtype': {
2866
- 'Whole Exterior': nextStepsHomeImprovementDefault,
2867
- 'Exterior Touch-up': nextStepsHomeImprovementDefault,
2868
- 'Interior Rooms': [
2869
- 'paintingRooms',
2870
- ...nextStepsHomeImprovementDefault
2871
- ],
2872
- 'Interior Touch-up': [
2873
- 'paintingRooms',
2874
- ...nextStepsHomeImprovementDefault
2875
- ],
2876
- 'Ceilings': [
2877
- 'paintingRooms',
2878
- ...nextStepsHomeImprovementDefault
2879
- ],
2880
- 'Deck': nextStepsHomeImprovementDefault,
2881
- 'Shed': nextStepsHomeImprovementDefault,
2882
- 'Cabinets': nextStepsHomeImprovementDefault,
2883
- 'Not Sure or Other': nextStepsHomeImprovementDefault,
2884
- }
2737
+ const nextStepsMapPainting = (defaultSteps = nextStepsHomeImprovementDefault) => {
2738
+ return {
2739
+ values: {
2740
+ Painting_Subtype: {
2741
+ "Whole Exterior": defaultSteps,
2742
+ "Exterior Touch-up": defaultSteps,
2743
+ "Interior Rooms": ["paintingRooms", ...defaultSteps],
2744
+ "Interior Touch-up": ["paintingRooms", ...defaultSteps],
2745
+ Ceilings: ["paintingRooms", ...defaultSteps],
2746
+ Deck: defaultSteps,
2747
+ Shed: defaultSteps,
2748
+ Cabinets: defaultSteps,
2749
+ "Not Sure or Other": defaultSteps,
2750
+ },
2751
+ },
2885
2752
  }
2886
2753
  };
2887
2754
 
2888
- const meta = defaultMetaPropsHomeImprovement();
2889
-
2890
- meta.data.dynamicSchema = [
2891
- zipcode(),
2892
- timeframe(),
2893
- ownHome(),
2894
- address(),
2895
- homeImprovementWorkType(),
2896
- additionsSubType(),
2897
- constructionAreaSize(),
2898
- applianceType(),
2899
- cabinetWorkType(),
2900
- carpentrySubtype(),
2901
- carpetWorkType(),
2902
- cleaningSubtype(),
2903
- countertopMaterial(),
2904
- deckWorkType(),
2905
- demolitionSubtype(),
2906
- doorSubtype(),
2907
- drivewayWorkType(),
2908
- drivewayMaterial(),
2909
- wallSurfaceType(),
2910
- electricalSubtype(),
2911
- fenceMaterial(),
2912
- flooringMaterial(),
2913
- generalContractorSubtype(),
2914
- gutterMaterial(),
2915
- guttersWorkType(),
2916
- smartHomeSubtype(),
2917
- homeOrganizationSubtype(),
2918
- numberOfRooms(),
2919
- homeTheaterSubtype(),
2920
- heatingCoolingSubtype(),
2921
- fuelSource(),
2922
- insulationSubtype(),
2923
- landscapingSubtype(),
2924
- masonrySubtype(),
2925
- masonryMaterial(),
2926
- masonryWorkType(),
2927
- restorationSubtype(),
2928
- // Moving not finished yet
2929
- // steps.movingFromAddress(),
2930
- // steps.movingToAddress(),
2931
- // steps.movingHouseholdSize(),
2932
- paintingSubtype({
2933
- nextStepMap: nextStepsMapPainting
2934
- }),
2935
- paintingRooms(),
2936
- pestControlSubtype(),
2937
- poolsWorkType(),
2938
- poolsSubtype(),
2939
- plumbingSubtype(),
2940
- remodelingSubtype(),
2941
- roofingWorkType(),
2942
- roofingMaterial(),
2943
- sidingMaterial(),
2944
- tilingSubtype(),
2945
- waterproofingSubtype(),
2946
- windowsWorkType(),
2947
- windowsSubtype(),
2948
- numberOfWindows(),
2949
- // steps.plumbingCrossSellQuestions(),
2950
- commentsHeadline({
2951
- label: null,
2952
- headline: 'Please briefly describe your project:',
2953
- headlineClass: '!t-text-dark',
2954
- }),
2955
- // steps.homeImprovementCrossSells({
2956
- // headlineClass: '!t-text-dark',
2957
- // nextStepMap: forms.nextStepsMapHomeImprovementCrossSells,
2958
- // }),
2959
- firstAndLastV3({
2960
- headlineClass: '!t-text-dark'
2961
- }),
2962
- ];
2755
+ // Omits cross sell step
2756
+ const nextStepDefaults = ["comments", "timeframe", "ownHome", "zipcode", "address", "firstAndLast", "contactInfo"];
2757
+
2758
+ const meta = defaultMetaPropsHomeImprovementGeneral(nextStepDefaults);
2963
2759
 
2964
2760
  const schema = [
2965
2761
  meta,
2966
2762
  formAnchor(),
2967
2763
  {
2968
- $cmp: 'FormKit',
2764
+ $cmp: "FormKit",
2969
2765
  props: formProps({
2970
- formId: 'generalHomeImprovement',
2971
- redirectMap: homeImprovementRedirectMap(),
2972
- // valueOverrideMap: forms.homeImprovementAllValueOverrideMap,
2973
- // crossSellOptionMap: forms.homeImprovementCrossSellOptionMap
2766
+ formId: "generalHomeImprovementThankYou",
2767
+ redirectMap: {
2768
+ "*": "/thank-you",
2769
+ },
2974
2770
  }),
2975
2771
  children: [
2976
2772
  progressBar(),
2977
2773
  headline({
2978
2774
  children: '$urlParam("hl", "Get Started Here!")',
2979
- if: '$activeStep === $firstStep()'
2775
+ if: "$activeStep === $firstStep()",
2980
2776
  }),
2981
2777
  subHeadline({
2982
2778
  children: '$urlParam("shl", "Fast. Reliable. Local. Free")',
2983
- if: '$activeStep === $firstStep()'
2779
+ if: "$activeStep === $firstStep()",
2984
2780
  }),
2985
2781
  ...hiddenInputsHomeImprovement,
2986
2782
  {
2987
- $el: 'div',
2783
+ $el: "div",
2988
2784
  attrs: {
2989
- class: 'form-body'
2785
+ class: "form-body",
2990
2786
  },
2991
2787
  children: [
2992
2788
  homeImprovementCategory({
2993
2789
  nextOnInput: false,
2994
- nextStepMap: nextStepsMapGeneralHomeImprovement,
2995
- headlineClass: 't-text-lg',
2790
+ nextStepMap: nextStepsMapGeneralHomeImprovement(nextStepDefaults),
2791
+ headlineClass: "t-text-lg",
2996
2792
  input: {
2997
- placeholder: 'Select a Category',
2998
- innerClass: '!t-max-w-[275px] md:!t-max-w-xl'
2999
- }
2793
+ placeholder: "Select a Category",
2794
+ innerClass: "!t-max-w-[275px] md:!t-max-w-xl",
2795
+ },
3000
2796
  }),
3001
- dynamicSchemaNode('Category'),
2797
+ dynamicSchemaNode("Category"),
3002
2798
  contactInfo(),
3003
2799
  formNavigation(),
3004
- formDetails()
3005
- ]
3006
- }
3007
- ]
3008
- }
2800
+ formDetails(),
2801
+ ],
2802
+ },
2803
+ ],
2804
+ },
3009
2805
  ];
3010
2806
 
3011
- const formKitNode = schema.find(item => item.$cmp === "FormKit");
3012
-
3013
- // HACK: need to update both to mimic formProps behavior
3014
- formKitNode.props.name = 'generalHomeImprovementThankYou';
3015
- formKitNode.props.formId = 'generalHomeImprovementThankYou';
3016
- formKitNode.props.redirectMap = {
3017
- '*': '/thank-you'
3018
- };
3019
-
3020
2807
  export { schema as default };