bhl-forms 0.7.4 → 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 (84) hide show
  1. package/dist/bhl-forms.iife.js +1 -1
  2. package/dist/bhl-forms.modern.iife.js +1 -1
  3. package/dist/bhl-forms.modern.umd.js +1 -1
  4. package/dist/bhl-forms.umd.js +1 -1
  5. package/dist/forms/accidentsAndInjuries.es.js +9 -7
  6. package/dist/forms/accidentsAndInjuries.iife.js +1 -1
  7. package/dist/forms/accidentsAndInjuries.json +1 -1
  8. package/dist/forms/business.es.js +9 -7
  9. package/dist/forms/business.iife.js +1 -1
  10. package/dist/forms/business.json +1 -1
  11. package/dist/forms/childAndFamily.es.js +9 -7
  12. package/dist/forms/childAndFamily.iife.js +1 -1
  13. package/dist/forms/childAndFamily.json +1 -1
  14. package/dist/forms/childAndFamilySingle.es.js +9 -7
  15. package/dist/forms/childAndFamilySingle.iife.js +1 -1
  16. package/dist/forms/childAndFamilySingle.json +1 -1
  17. package/dist/forms/civilLawsuit.es.js +9 -7
  18. package/dist/forms/civilLawsuit.iife.js +1 -1
  19. package/dist/forms/civilLawsuit.json +1 -1
  20. package/dist/forms/contracts.es.js +9 -7
  21. package/dist/forms/contracts.iife.js +1 -1
  22. package/dist/forms/contracts.json +1 -1
  23. package/dist/forms/criminal.es.js +9 -7
  24. package/dist/forms/criminal.iife.js +1 -1
  25. package/dist/forms/criminal.json +1 -1
  26. package/dist/forms/divorce.es.js +9 -7
  27. package/dist/forms/divorce.iife.js +1 -1
  28. package/dist/forms/divorce.json +1 -1
  29. package/dist/forms/employmentAndWorkplace.es.js +9 -7
  30. package/dist/forms/employmentAndWorkplace.iife.js +1 -1
  31. package/dist/forms/employmentAndWorkplace.json +1 -1
  32. package/dist/forms/generalHomeImprovement.es.js +1649 -668
  33. package/dist/forms/generalHomeImprovement.iife.js +1 -1
  34. package/dist/forms/generalHomeImprovement.json +1 -1
  35. package/dist/forms/generalHomeImprovementThankYou.es.js +1142 -745
  36. package/dist/forms/generalHomeImprovementThankYou.iife.js +1 -1
  37. package/dist/forms/generalHomeImprovementThankYou.json +1 -1
  38. package/dist/forms/generalLegal.es.js +9 -7
  39. package/dist/forms/generalLegal.iife.js +1 -1
  40. package/dist/forms/generalLegal.json +1 -1
  41. package/dist/forms/generalLegalJustAnswer.es.js +9 -7
  42. package/dist/forms/generalLegalJustAnswer.iife.js +1 -1
  43. package/dist/forms/generalLegalJustAnswer.json +1 -1
  44. package/dist/forms/generalLegalPopUnder.es.js +9 -7
  45. package/dist/forms/generalLegalPopUnder.iife.js +1 -1
  46. package/dist/forms/generalLegalPopUnder.json +1 -1
  47. package/dist/forms/generalLegalPopUnderSingle.es.js +9 -7
  48. package/dist/forms/generalLegalPopUnderSingle.iife.js +1 -1
  49. package/dist/forms/generalLegalPopUnderSingle.json +1 -1
  50. package/dist/forms/generalLegalSingle.es.js +9 -7
  51. package/dist/forms/generalLegalSingle.iife.js +1 -1
  52. package/dist/forms/generalLegalSingle.json +1 -1
  53. package/dist/forms/generalLegalThankYou.es.js +8 -6
  54. package/dist/forms/generalLegalThankYou.iife.js +1 -1
  55. package/dist/forms/generalLegalThankYouConsultation.es.js +9 -7
  56. package/dist/forms/generalLegalThankYouConsultation.iife.js +1 -1
  57. package/dist/forms/generalLegalThankYouConsultation.json +1 -1
  58. package/dist/forms/harassmentAndDiscrimination.es.js +9 -7
  59. package/dist/forms/harassmentAndDiscrimination.iife.js +1 -1
  60. package/dist/forms/harassmentAndDiscrimination.json +1 -1
  61. package/dist/forms/landlordTenant.es.js +9 -7
  62. package/dist/forms/landlordTenant.iife.js +1 -1
  63. package/dist/forms/landlordTenant.json +1 -1
  64. package/dist/forms/malpractice.es.js +9 -7
  65. package/dist/forms/malpractice.iife.js +1 -1
  66. package/dist/forms/malpractice.json +1 -1
  67. package/dist/forms/mechanics.es.js +2 -1
  68. package/dist/forms/mechanics.iife.js +1 -1
  69. package/dist/forms/patentsAndIP.es.js +9 -7
  70. package/dist/forms/patentsAndIP.iife.js +1 -1
  71. package/dist/forms/patentsAndIP.json +1 -1
  72. package/dist/forms/realEstate.es.js +9 -7
  73. package/dist/forms/realEstate.iife.js +1 -1
  74. package/dist/forms/realEstate.json +1 -1
  75. package/dist/forms/repossession.es.js +9 -7
  76. package/dist/forms/repossession.iife.js +1 -1
  77. package/dist/forms/repossession.json +1 -1
  78. package/dist/forms/testRedirects.es.js +2 -1
  79. package/dist/forms/testRedirects.iife.js +1 -1
  80. package/dist/forms/willsAndTrusts.es.js +9 -7
  81. package/dist/forms/willsAndTrusts.iife.js +1 -1
  82. package/dist/forms/willsAndTrusts.json +1 -1
  83. package/dist/main.css +1 -1
  84. package/package.json +1 -1
@@ -19,6 +19,97 @@ const DEFAULT_FINAL_HEADLINE_HOME_IMPROVEMENT = "We Found Contractors Near You";
19
19
  const DEFAULT_FINAL_SUBHEADLINE_HOME_IMPROVEMENT = "Compare quotes and save! Please verify your contact info:";
20
20
  const TCPA_LANGUAGE_HOME_IMPROVEMENT =
21
21
  '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.';
22
+ const defaultHomeImprovementCrossSells = ["Painting", "Plumbing", "Electrical", "Siding", "Remodeling", "Roofing"];
23
+ const CROSS_SELL_OPTION_MAP_HOME_IMPROVEMENT = {
24
+ // Values can be a list or a map of value -> display value
25
+ Additions: ["Painting", "Landscaping", "Plumbing", "Appliances", "Heating and Cooling", "Driveways"],
26
+ // 'Appliances': [],
27
+ // 'Appraisals': [],
28
+ // 'Cabinets': [],
29
+ // 'Carpentry': [],
30
+ // 'Carpets': [],
31
+ // 'Cleaning': [],
32
+ // 'Countertops': [],
33
+ // 'Decks and Porches': [],
34
+ // 'Demolition': [],
35
+ // 'Doors': [],
36
+ // 'Driveways': [],
37
+ // 'Drywall and Plaster': [],
38
+ Electrical: ["Painting", "Plumbing", "Drywall and Plaster", "Flooring", "Remodeling", "Roofing"],
39
+ // 'Fencing': [],
40
+ Flooring: ["Painting", "Plumbing", "Electrical", "Carpentry", "Remodeling", "Roofing"],
41
+ // 'Foundations': [],
42
+ // 'Garage Doors': [],
43
+ "General Contractors": ["Painting", "Plumbing", "Electrical", "Flooring", "Landscaping", "Roofing"],
44
+ // 'Gutters': [],
45
+ // 'Handyman': [],
46
+ // 'Holiday Decorators': [],
47
+ // 'Smart Home': [],
48
+ "Home Builders": ["Painting", "Driveways", "Masonry and Concrete", "Pest Control", "Landscaping", "Windows"],
49
+ // 'Home Inspection': [],
50
+ // 'Home Organization': [],
51
+ // 'Home Security': [],
52
+ // 'Home Staging': [],
53
+ // 'Home Theater': [],
54
+ // 'Home Warranties': [],
55
+ // 'Hot Tubs': [],
56
+ // 'Heating and Cooling': [],
57
+ // 'Insulation': [],
58
+ // 'Junk Removal': [],
59
+ // 'Landscaping': [],
60
+ // 'Locksmiths': [],
61
+ // 'Masonry and Concrete': [],
62
+ // 'Restoration': [],
63
+ // // 'Moving': [],
64
+ Painting: ["Plumbing", "Electrical", "Flooring", "Remodeling", "Roofing", "Windows"],
65
+ // 'Pest Control': [],
66
+ // 'Pools': [],
67
+ Plumbing: ["Painting", "Appliances", "Electrical", "Flooring", "Remodeling", "Roofing"],
68
+ // 'Pressure Washing': [],
69
+ Remodeling: ["Painting", "Landscaping", "Electrical", "Flooring", "Masonry and Concrete", "Roofing"],
70
+ Roofing: ["Painting", "Plumbing", "Electrical", "Flooring", "Remodeling", "Windows"],
71
+ // 'Sheds': [],
72
+ // 'Siding': [],
73
+ // 'Solar': [],
74
+ // 'Tiling': [],
75
+ // 'Walk-in Tubs': [],
76
+ // 'Waterproofing': [],
77
+ // 'Window Cleaning': [],
78
+ // 'Windows': []
79
+ "*": defaultHomeImprovementCrossSells,
80
+ };
81
+
82
+ // ------ Common Base Settings
83
+
84
+ const checkbox = (updates) => {
85
+ if (updates.name && !updates.id) {
86
+ updates.id = updates.name;
87
+ }
88
+ return merge(
89
+ {
90
+ $formkit: "checkbox",
91
+ validation: "required",
92
+ validationMessages: {
93
+ required: "Field is required",
94
+ },
95
+ },
96
+ updates
97
+ )
98
+ };
99
+
100
+ const verticalCol2Checkbox = (updates) => {
101
+ if (!updates || !updates.legendClass) {
102
+ updates.legendClass = "required t-w-[100%] t-text-center";
103
+ }
104
+ updates.fieldsetClass = "$reset t-flex t-justify-center t-flex-col";
105
+ updates.innerClass = "t-items-start";
106
+ updates.wrapperClass = "$reset t-flex t-cursor-pointer t-mb-3";
107
+ updates.optionClass = "t-pl-4 md:t-pl-16 md:t-min-w-[200px]";
108
+ updates.optionsClass = "t-pl-4 t-pt-3 t-grid t-grid-cols-1 md:t-grid-cols-2";
109
+ updates.messagesClass = "t-flex t-justify-center";
110
+ updates.helpClass = "t-mt-0 t-mb-4 !t-text-sm t-text-center";
111
+ return checkbox(updates)
112
+ };
22
113
 
23
114
  const radio = (updates) => {
24
115
  if (updates.name && !updates.id) {
@@ -38,6 +129,30 @@ const radio = (updates) => {
38
129
  )
39
130
  };
40
131
 
132
+ // TODO: rename
133
+ const col2RadioCenter = (updates) => {
134
+ updates.legendClass = "required t-w-[100%] t-text-center";
135
+ if (typeof updates.fieldsetClass === "undefined") {
136
+ updates.fieldsetClass = "$reset t-flex t-justify-center";
137
+ }
138
+ updates.innerClass = "t-items-start";
139
+ updates.wrapperClass = "$reset t-flex t-cursor-pointer t-mb-3";
140
+ updates.optionClass = "t-pl-4 md:t-pl-8 md:t-min-w-[200px]";
141
+ updates.optionsClass = "t-pl-4 t-pt-3 t-grid t-grid-cols-1 md:t-grid-cols-2";
142
+ updates.messagesClass = "t-flex t-justify-center";
143
+ updates.helpClass = "t-mt-0 t-mb-4 !t-text-sm t-text-center";
144
+ return radio(updates)
145
+ };
146
+
147
+ const sbsRadio = (updates) => {
148
+ updates.legendClass = "legend-left required";
149
+ updates.fieldsetClass = "$reset side-by-side";
150
+ updates.optionsClass = "t-pl-1";
151
+ updates.innerClass = "t-flex t-items-center";
152
+ updates.wrapperClass = "t-mb-3";
153
+ return radio(updates)
154
+ };
155
+
41
156
  const verticalRadio = (updates) => {
42
157
  updates.legendClass = "required";
43
158
  updates.fieldsetClass = "$reset t-flex t-justify-center";
@@ -68,6 +183,14 @@ const select = (updates) => {
68
183
  )
69
184
  };
70
185
 
186
+ const sbsSelect = (updates) => {
187
+ updates.labelClass = "required";
188
+ updates.wrapperClass = "side-by-side t-items-center";
189
+ updates.innerClass = "select-height-content";
190
+ updates.helpClass = "t-mt-2.5 md:t-text-right md:t-mt-[-5px]";
191
+ return select(updates)
192
+ };
193
+
71
194
  const verticalSelect = (updates) => {
72
195
  updates.labelClass = "required";
73
196
  updates.wrapperClass = "t-flex t-justify-center";
@@ -274,6 +397,132 @@ const TCPAConsent = (scope) => ({
274
397
  },
275
398
  });
276
399
 
400
+ // ------ Question Groups - TODO: move these go separate file groups.js
401
+
402
+ // NOTE: name must be unique within a form!
403
+ const group = (name, updates) => {
404
+ return merge(
405
+ {
406
+ $cmp: "FormKit",
407
+ props: {
408
+ type: "group",
409
+ key: name,
410
+ id: name,
411
+ name: name,
412
+ },
413
+ },
414
+ updates
415
+ )
416
+ };
417
+
418
+ // ------ Home Improvement
419
+
420
+ const homeImprovementCrossSells$1 = () =>
421
+ verticalCol2Checkbox({
422
+ id: "Home_Improvement_CrossSells",
423
+ name: "Home_Improvement_CrossSells",
424
+ help: 'Just hit "Next" if none apply',
425
+ helpClass: "t-text-center !t-text-sm",
426
+ validation: null,
427
+ options: '$getCrossSellOptions($get(form), $getVal($get(form), "Category"))',
428
+ });
429
+
430
+ const ApplianceQuestions = (condition, scope) =>
431
+ group("ApplianceQuestions", {
432
+ if: condition || '$get(Category).value == "Appliances"',
433
+ children: [applianceType$1(scope), homeImprovementWorkType$1(scope)],
434
+ });
435
+
436
+ const CarpentryQuestions = (condition, scope) =>
437
+ group("CarpentryQuestions", {
438
+ if: condition || '$get(Category).value == "Carpentry"',
439
+ children: [carpentrySubtype$1(scope), homeImprovementWorkType$1(scope)],
440
+ });
441
+
442
+ const DrivewaysQuestions = (condition, scope) =>
443
+ group("DrivewaysQuestions", {
444
+ if: condition || '$get(Category).value == "Driveways"',
445
+ children: [drivewayWorkType$1(scope), drivewayMaterial$1(scope)],
446
+ });
447
+
448
+ const DrywallAndPlasterQuestions = (condition, scope) =>
449
+ group("DrywallAndPlasterQuestions", {
450
+ if: condition || '$get(Category).value == "Drywall and Plaster"',
451
+ children: [wallSurfaceType$1(scope), homeImprovementWorkType$1(scope)],
452
+ });
453
+
454
+ const ElectricalQuestions = (condition, scope) =>
455
+ group("ElectricalQuestions", {
456
+ if: condition || '$get(Category).value == "Electrical"',
457
+ children: [electricalSubtype$1(scope), homeImprovementWorkType$1(scope)],
458
+ });
459
+
460
+ const FlooringQuestions = (condition, scope) =>
461
+ group("FlooringQuestions", {
462
+ if: condition || '$get(Category).value == "Flooring"',
463
+ children: [flooringMaterial$1(scope), homeImprovementWorkType$1(scope)],
464
+ });
465
+
466
+ const HeatingAndCoolingQuestions = (condition, scope) =>
467
+ group("HeatingAndCoolingQuestions", {
468
+ if: condition || '$get(Category).value == "Heating and Cooling"',
469
+ children: [heatingCoolingSubtype$1(scope), fuelSource$1(scope), homeImprovementWorkType$1(scope)],
470
+ });
471
+
472
+ const LandscapingQuestions = (condition, scope) =>
473
+ group("LandscapingQuestions", {
474
+ if: condition || '$get(Category).value == "Landscaping"',
475
+ children: [landscapingSubtype$1(scope), homeImprovementWorkType$1(scope)],
476
+ });
477
+
478
+ const MasonryAndConcreteQuestions = (condition, scope) =>
479
+ group("MasonryAndConcreteQuestions", {
480
+ if: condition || '$get(Category).value == "Masonry and Concrete"',
481
+ children: [masonrySubtype$1(scope), masonryMaterial$1(scope), masonryWorkType$1(scope)],
482
+ });
483
+
484
+ const PaintingQuestions = (condition, scope) =>
485
+ group("PaintingQuestions", {
486
+ if: condition || '$get(Category).value == "Painting"',
487
+ children: [paintingSubtype$1(scope), numberOfRooms$1(scope)],
488
+ });
489
+
490
+ const PestControlQuestions = (condition, scope) =>
491
+ group("PestControlQuestions", {
492
+ if: condition || '$get(Category).value == "Pest Control"',
493
+ children: [pestControlSubtype$1(scope)],
494
+ });
495
+
496
+ const PlumbingQuestions = (condition, scope) =>
497
+ group("PlumbingQuestions", {
498
+ if: condition || '$get(Category).value == "Plumbing"',
499
+ children: [plumbingSubtype$1(scope), homeImprovementWorkType$1(scope)],
500
+ });
501
+
502
+ const RemodelingQuestions = (condition, scope) =>
503
+ group("RemodelingQuestions", {
504
+ if: condition || '$get(Category).value == "Remodeling"',
505
+ children: [remodelingSubtype$1(scope)],
506
+ });
507
+
508
+ const RoofingQuestions = (condition, scope) =>
509
+ group("RoofingQuestions", {
510
+ if: condition || '$get(Category).value == "Roofing"',
511
+ children: [roofingMaterial$1(scope), roofingWorkType$1(scope)],
512
+ });
513
+
514
+ const SidingQuestions = (condition, scope) =>
515
+ group("SidingQuestions", {
516
+ if: condition || '$get(Category).value == "Siding"',
517
+ children: [sidingMaterial$1(scope), homeImprovementWorkType$1(scope)],
518
+ });
519
+
520
+ const WindowsQuestions = (condition, scope) =>
521
+ group("WindowsQuestions", {
522
+ if: condition || '$get(Category).value == "Windows"',
523
+ children: [windowsSubtype$1(scope), windowsWorkType$1(scope), numberOfWindows$1(scope)],
524
+ });
525
+
277
526
  const HomeImprovementCategoryOptions = [
278
527
  "Additions",
279
528
  "Appliances",
@@ -329,368 +578,679 @@ const HomeImprovementCategoryOptions = [
329
578
  "Waterproofing",
330
579
  "Window Cleaning",
331
580
  "Windows",
581
+ "Not Sure or Other",
332
582
  ];
333
583
 
334
- const homeImprovementCategory$1 = (updates) =>
335
- verticalSelect(
584
+ const homeImprovementCategory$1 = (scope, vertical, updates = {}) => {
585
+ const func = vertical ? verticalSelect : sbsSelect;
586
+ const label = vertical ? updates.label : "Select a Category:";
587
+ return func(
336
588
  merge(
337
589
  {
338
- name: "Category",
339
- id: "Category",
590
+ label,
591
+ name: scope ? scope + ":" + "Category" : "Category",
340
592
  options: HomeImprovementCategoryOptions,
341
593
  },
342
594
  updates
343
595
  )
344
- );
596
+ )
597
+ };
345
598
 
346
- const timeframe$1 = (scope) =>
347
- verticalRadio({
348
- name: scope ? scope + ":" + "Timeframe" : "Timeframe",
349
- // label: 'What is the project timeframe?',
350
- options: ["Immediate", "1-6 Months", "More than 6 Months"],
351
- });
599
+ const timeframe$1 = (scope, vertical, updates = {}) => {
600
+ const func = vertical ? verticalRadio : sbsRadio;
601
+ const label = vertical ? updates.label : "What is the project timeframe?";
602
+ return func(
603
+ merge(
604
+ {
605
+ label,
606
+ name: scope ? scope + ":" + "Timeframe" : "Timeframe",
607
+ options: ["Immediate", "1-6 Months", "More than 6 Months"],
608
+ },
609
+ updates
610
+ )
611
+ )
612
+ };
352
613
 
353
- const ownHome$1 = (scope) =>
354
- verticalRadio({
355
- name: scope ? scope + ":" + "Own_Home" : "Own_Home",
356
- // label: 'Do you own the home?',
357
- options: ["Yes", "No", "No but authorized"],
358
- });
614
+ const ownHome$1 = (scope, vertical, updates = {}) => {
615
+ const func = vertical ? verticalRadio : sbsRadio;
616
+ const label = vertical ? updates.label : "Do you own the home?";
617
+ return func(
618
+ merge(
619
+ {
620
+ label,
621
+ name: scope ? scope + ":" + "Own_Home" : "Own_Home",
622
+ options: ["Yes", "No", "No but authorized"],
623
+ },
624
+ updates
625
+ )
626
+ )
627
+ };
359
628
 
360
- const additionsSubType$1 = (scope) =>
361
- verticalSelect({
362
- name: scope ? scope + ":" + "Additions_Subtype" : "Additions_Subtype",
363
- // label: 'What type of addition?',
364
- options: [
365
- "Garage",
366
- "In-Law Suite",
367
- "Additional Rooms",
368
- "Additional Stories",
369
- "Bump-out",
370
- "Sunroom",
371
- "Accessory Dwelling Unit",
372
- "Basement Remodeling",
373
- "Attic Remodeling",
374
- "Not Sure or Other",
375
- ],
376
- });
629
+ const additionsSubType$1 = (scope, vertical, updates = {}) => {
630
+ const func = vertical ? verticalSelect : sbsSelect;
631
+ const label = vertical ? updates.label : "What type of addition?";
632
+ return func(
633
+ merge(
634
+ {
635
+ label,
636
+ name: scope ? scope + ":" + "Additions_Subtype" : "Additions_Subtype",
637
+ options: [
638
+ "Garage",
639
+ "In-Law Suite",
640
+ "Additional Rooms",
641
+ "Additional Stories",
642
+ "Bump-out",
643
+ "Sunroom",
644
+ "Accessory Dwelling Unit",
645
+ "Basement Remodeling",
646
+ "Attic Remodeling",
647
+ "Not Sure or Other",
648
+ ],
649
+ },
650
+ updates
651
+ )
652
+ )
653
+ };
377
654
 
378
- const constructionAreaSize$1 = (scope) =>
379
- verticalRadio({
380
- name: scope ? scope + ":" + "Construction_Area_Size" : "Construction_Area_Size",
381
- // label: 'What is the size of the construction area?',
382
- options: ["Less than 1000 square feet", "1000 to 2000 square feet", "More than 2000 square feet"],
383
- });
655
+ const constructionAreaSize$1 = (scope, vertical, updates = {}) => {
656
+ const func = vertical ? verticalRadio : sbsRadio;
657
+ const label = vertical ? updates.label : "What is the size of the construction area?";
658
+ return func(
659
+ merge(
660
+ {
661
+ label,
662
+ name: scope ? scope + ":" + "Construction_Area_Size" : "Construction_Area_Size",
663
+ options: ["Less than 1000 square feet", "1000 to 2000 square feet", "More than 2000 square feet"],
664
+ },
665
+ updates
666
+ )
667
+ )
668
+ };
384
669
 
385
- const homeImprovementWorkType$1 = (scope) =>
386
- verticalRadio({
387
- name: scope ? scope + ":" + "Work_Type" : "Work_Type",
388
- // label: 'What type of work do you need?',
389
- options: ["Install or Replace", "Repair", "Not Sure or Other"],
390
- });
670
+ const homeImprovementWorkType$1 = (scope, vertical, updates = {}) => {
671
+ const func = vertical ? verticalRadio : sbsRadio;
672
+ const label = vertical ? updates.label : "What type of work?";
673
+ return func(
674
+ merge(
675
+ {
676
+ label,
677
+ name: scope ? scope + ":" + "Work_Type" : "Work_Type",
678
+ options: ["Install or Replace", "Repair", "Not Sure or Other"],
679
+ },
680
+ updates
681
+ )
682
+ )
683
+ };
391
684
 
392
- const applianceType$1 = (scope) =>
393
- verticalSelect({
394
- name: scope ? scope + ":" + "Appliance_Type" : "Appliance_Type",
395
- // label: 'What type of appliance?',
396
- options: [
397
- "Cooktop",
398
- "Dishwasher",
399
- "Dryer",
400
- "Freezer",
401
- "Garbage Disposal",
402
- "Ice Maker",
403
- "Microwave",
404
- "Range",
405
- "Refrigerator",
406
- "Stove",
407
- "Trash Compactor",
408
- "Oven",
409
- "Vacuum",
410
- "Washer Machine",
411
- "Not Sure or Other",
412
- ],
413
- });
685
+ const applianceType$1 = (scope, vertical, updates = {}) => {
686
+ const func = vertical ? verticalSelect : sbsSelect;
687
+ const label = vertical ? updates.label : "What type of appliance?";
688
+ return func(
689
+ merge(
690
+ {
691
+ label,
692
+ name: scope ? scope + ":" + "Appliance_Type" : "Appliance_Type",
693
+ options: [
694
+ "Cooktop",
695
+ "Dishwasher",
696
+ "Dryer",
697
+ "Freezer",
698
+ "Garbage Disposal",
699
+ "Ice Maker",
700
+ "Microwave",
701
+ "Range",
702
+ "Refrigerator",
703
+ "Stove",
704
+ "Trash Compactor",
705
+ "Oven",
706
+ "Vacuum",
707
+ "Washer Machine",
708
+ "Not Sure or Other",
709
+ ],
710
+ },
711
+ updates
712
+ )
713
+ )
714
+ };
414
715
 
415
- const cabinetWorkType$1 = (scope) =>
416
- verticalRadio({
417
- name: scope ? scope + ":" + "Cabinet_Work_Type" : "Cabinet_Work_Type",
418
- // label: 'What type of work do you need?',
419
- options: ["Install", "Refinish", "Reface", "Repair", "Not Sure or Other"],
420
- });
716
+ const cabinetWorkType$1 = (scope, vertical, updates = {}) => {
717
+ const func = vertical ? verticalRadio : sbsRadio;
718
+ const label = vertical ? updates.label : "What type of work?";
719
+ return func(
720
+ merge(
721
+ {
722
+ label,
723
+ name: scope ? scope + ":" + "Cabinet_Work_Type" : "Cabinet_Work_Type",
724
+ options: ["Install", "Refinish", "Reface", "Repair", "Not Sure or Other"],
725
+ },
726
+ updates
727
+ )
728
+ )
729
+ };
421
730
 
422
- const carpentrySubtype$1 = (scope) =>
423
- verticalSelect({
424
- name: scope ? scope + ":" + "Carpentry_Subtype" : "Carpentry_Subtype",
425
- // label: 'What type of carpentry work?',
426
- options: [
427
- "Closets",
428
- "Custom Furniture",
429
- "Built-ins",
430
- "Framing",
431
- "Interior Trim",
432
- "Exterior Trim",
433
- "Windows",
434
- "Stairways and Railings",
435
- "Gazebo or Pergola",
436
- "Multiple Jobs",
437
- "Not Sure or Other",
438
- ],
439
- });
731
+ const carpentrySubtype$1 = (scope, vertical, updates = {}) => {
732
+ const func = vertical ? verticalSelect : sbsSelect;
733
+ const label = vertical ? updates.label : "What carpentry job type?";
734
+ return func(
735
+ merge(
736
+ {
737
+ label,
738
+ name: scope ? scope + ":" + "Carpentry_Subtype" : "Carpentry_Subtype",
739
+ options: [
740
+ "Closets",
741
+ "Custom Furniture",
742
+ "Built-ins",
743
+ "Framing",
744
+ "Interior Trim",
745
+ "Exterior Trim",
746
+ "Windows",
747
+ "Stairways and Railings",
748
+ "Gazebo or Pergola",
749
+ "Multiple Jobs",
750
+ "Not Sure or Other",
751
+ ],
752
+ },
753
+ updates
754
+ )
755
+ )
756
+ };
440
757
 
441
- const carpetWorkType$1 = (scope) =>
442
- verticalRadio({
443
- name: scope ? scope + ":" + "Carpet_Work_Type" : "Carpet_Work_Type",
444
- // label: 'What type of work do you need?',
445
- options: ["Install or Replace", "Repair", "Cleaning", "Not Sure or Other"],
446
- });
758
+ const carpetWorkType$1 = (scope, vertical, updates = {}) => {
759
+ const func = vertical ? verticalRadio : sbsRadio;
760
+ const label = vertical ? updates.label : "What type of work?";
761
+ return func(
762
+ merge(
763
+ {
764
+ label,
765
+ name: scope ? scope + ":" + "Carpet_Work_Type" : "Carpet_Work_Type",
766
+ options: ["Install or Replace", "Repair", "Cleaning", "Not Sure or Other"],
767
+ },
768
+ updates
769
+ )
770
+ )
771
+ };
447
772
 
448
- const cleaningSubtype$1 = (scope) =>
449
- verticalSelect({
450
- name: scope ? scope + ":" + "Cleaning_Subtype" : "Cleaning_Subtype",
451
- // label: 'What type of cleaning?',
452
- options: [
453
- "Whole Home",
454
- "Office",
455
- "Carpets",
456
- "Windows",
457
- "Air Ducts or Vents",
458
- "Chimney",
459
- "Deck",
460
- "Tile or Grout",
461
- "Garage",
462
- "Shed",
463
- "Gutters",
464
- "Pool",
465
- "Junk Removal",
466
- "Not Sure or Other",
467
- ],
468
- });
773
+ const cleaningSubtype$1 = (scope, vertical, updates = {}) => {
774
+ const func = vertical ? verticalSelect : sbsSelect;
775
+ const label = vertical ? updates.label : "What type of cleaning?";
776
+ return func(
777
+ merge(
778
+ {
779
+ label,
780
+ name: scope ? scope + ":" + "Cleaning_Subtype" : "Cleaning_Subtype",
781
+ options: [
782
+ "Whole Home",
783
+ "Office",
784
+ "Carpets",
785
+ "Windows",
786
+ "Air Ducts or Vents",
787
+ "Chimney",
788
+ "Deck",
789
+ "Tile or Grout",
790
+ "Garage",
791
+ "Shed",
792
+ "Gutters",
793
+ "Pool",
794
+ "Junk Removal",
795
+ "Not Sure or Other",
796
+ ],
797
+ },
798
+ updates
799
+ )
800
+ )
801
+ };
469
802
 
470
- const countertopMaterial$1 = (scope) =>
471
- verticalSelect({
472
- name: scope ? scope + ":" + "Countertop_Material" : "Countertop_Material",
473
- // label: 'What type of countertop?',
474
- options: ["Concrete", "Granite", "Laminate", "Marble", "Quartz", "Stainless Steel", "Wood", "Not Sure or Other"],
475
- });
803
+ const countertopMaterial$1 = (scope, vertical, updates = {}) => {
804
+ const func = vertical ? verticalSelect : sbsSelect;
805
+ const label = vertical ? updates.label : "What type of countertop?";
806
+ return func(
807
+ merge(
808
+ {
809
+ label,
810
+ name: scope ? scope + ":" + "Countertop_Material" : "Countertop_Material",
811
+ options: [
812
+ "Concrete",
813
+ "Granite",
814
+ "Laminate",
815
+ "Marble",
816
+ "Quartz",
817
+ "Stainless Steel",
818
+ "Wood",
819
+ "Not Sure or Other",
820
+ ],
821
+ },
822
+ updates
823
+ )
824
+ )
825
+ };
476
826
 
477
- const deckWorkType$1 = (scope) =>
478
- verticalRadio({
479
- name: scope ? scope + ":" + "Deck_Work_Type" : "Deck_Work_Type",
480
- // label: 'What type of work do you need?',
481
- options: ["Paint or Stain", "Install or Replace", "Repair", "Not Sure or Other"],
482
- });
827
+ const deckWorkType$1 = (scope, vertical, updates = {}) => {
828
+ const func = vertical ? verticalRadio : sbsRadio;
829
+ const label = vertical ? updates.label : "What type of work?";
830
+ return func(
831
+ merge(
832
+ {
833
+ label,
834
+ name: scope ? scope + ":" + "Deck_Work_Type" : "Deck_Work_Type",
835
+ options: ["Paint or Stain", "Install or Replace", "Repair", "Not Sure or Other"],
836
+ },
837
+ updates
838
+ )
839
+ )
840
+ };
483
841
 
484
- const demolitionSubtype$1 = (scope) =>
485
- verticalRadio({
486
- name: scope ? scope + ":" + "Demolition_Subtype" : "Demolition_Subtype",
487
- // label: 'What type of demolition?',
488
- options: ["Whole Structure", "Partial Home", "Shed", "Not Sure or Other"],
489
- });
842
+ const demolitionSubtype$1 = (scope, vertical, updates = {}) => {
843
+ const func = vertical ? verticalRadio : sbsRadio;
844
+ const label = vertical ? updates.label : "What type of demolition?";
845
+ return func(
846
+ merge(
847
+ {
848
+ label,
849
+ name: scope ? scope + ":" + "Demolition_Subtype" : "Demolition_Subtype",
850
+ options: ["Whole Structure", "Partial Home", "Shed", "Not Sure or Other"],
851
+ },
852
+ updates
853
+ )
854
+ )
855
+ };
490
856
 
491
- const doorSubtype$1 = (scope) =>
492
- verticalRadio({
493
- name: scope ? scope + ":" + "Door_Subtype" : "Door_Subtype",
494
- // label: 'What type of door?',
495
- options: ["Interior", "Exterior", "Garage", "Sliding", "Storm", "Not Sure or Other"],
496
- });
857
+ const doorSubtype$1 = (scope, vertical, updates = {}) => {
858
+ const func = vertical ? verticalRadio : sbsRadio;
859
+ const label = vertical ? updates.label : "What type of door?";
860
+ return func(
861
+ merge(
862
+ {
863
+ label,
864
+ name: scope ? scope + ":" + "Door_Subtype" : "Door_Subtype",
865
+ options: ["Interior", "Exterior", "Garage", "Sliding", "Storm", "Not Sure or Other"],
866
+ },
867
+ updates
868
+ )
869
+ )
870
+ };
497
871
 
498
- const drivewayWorkType$1 = (scope) =>
499
- verticalRadio({
500
- name: scope ? scope + ":" + "Driveway_Work_Type" : "Driveway_Work_Type",
501
- // label: 'What type of work do you need?',
502
- options: ["Install or Replace", "Repair", "Sealing", "Not Sure or Other"],
503
- });
872
+ const drivewayWorkType$1 = (scope, vertical, updates = {}) => {
873
+ const func = vertical ? verticalRadio : sbsRadio;
874
+ const label = vertical ? updates.label : "What type of work?";
875
+ return func(
876
+ merge(
877
+ {
878
+ label,
879
+ name: scope ? scope + ":" + "Driveway_Work_Type" : "Driveway_Work_Type",
880
+ options: ["Install or Replace", "Repair", "Sealing", "Not Sure or Other"],
881
+ },
882
+ updates
883
+ )
884
+ )
885
+ };
504
886
 
505
- const drivewayMaterial$1 = (scope) =>
506
- verticalRadio({
507
- name: scope ? scope + ":" + "Driveway_Material" : "Driveway_Material",
508
- // label: 'What type of driveway material?',
509
- options: ["Asphalt", "Brick", "Cobblestone", "Pebble", "Concrete", "Pavers", "Not Sure or Other"],
510
- });
887
+ const drivewayMaterial$1 = (scope, vertical, updates = {}) => {
888
+ const func = vertical ? verticalRadio : sbsRadio;
889
+ const label = vertical ? updates.label : "What driveway material?";
890
+ return func(
891
+ merge(
892
+ {
893
+ label,
894
+ name: scope ? scope + ":" + "Driveway_Material" : "Driveway_Material",
895
+ options: ["Asphalt", "Brick", "Cobblestone", "Pebble", "Concrete", "Pavers", "Not Sure or Other"],
896
+ },
897
+ updates
898
+ )
899
+ )
900
+ };
511
901
 
512
- const wallSurfaceType$1 = (scope) =>
513
- verticalRadio({
514
- name: scope ? scope + ":" + "Wall_Surface_Type" : "Wall_Surface_Type",
515
- // label: 'What type of surface?',
516
- options: ["Drywall", "Plaster", "Stucco", "Not Sure or Other"],
517
- });
902
+ const wallSurfaceType$1 = (scope, vertical, updates = {}) => {
903
+ const func = vertical ? verticalRadio : sbsRadio;
904
+ const label = vertical ? updates.label : "What surface type?";
905
+ return func(
906
+ merge(
907
+ {
908
+ label,
909
+ name: scope ? scope + ":" + "Wall_Surface_Type" : "Wall_Surface_Type",
910
+ options: ["Drywall", "Plaster", "Stucco", "Not Sure or Other"],
911
+ },
912
+ updates
913
+ )
914
+ )
915
+ };
518
916
 
519
- const electricalSubtype$1 = (scope) =>
520
- verticalSelect({
521
- name: scope ? scope + ":" + "Electrical_Subtype" : "Electrical_Subtype",
522
- // label: 'What type of electrical work do you need?',
523
- options: [
524
- "Electrical Panel",
525
- "Outlets and Fixtures",
526
- "Home Theater",
527
- "Exhaust Fans",
528
- "Ceiling Fans",
529
- "EV Charging Station",
530
- "Addition or Remodel",
531
- "Generator",
532
- "Outdoor Lighting",
533
- "Pet Fence",
534
- "Thermostat",
535
- "Wall or Baseboard Heater",
536
- "Holiday Lighting",
537
- "Not Sure or Other",
538
- ],
539
- });
917
+ const electricalSubtype$1 = (scope, vertical, updates = {}) => {
918
+ const func = vertical ? verticalSelect : sbsSelect;
919
+ const label = vertical ? updates.label : "What electrical job type?";
920
+ return func(
921
+ merge(
922
+ {
923
+ label,
924
+ name: scope ? scope + ":" + "Electrical_Subtype" : "Electrical_Subtype",
925
+ options: [
926
+ "Electrical Panel",
927
+ "Outlets and Fixtures",
928
+ "Home Theater",
929
+ "Exhaust Fans",
930
+ "Ceiling Fans",
931
+ "EV Charging Station",
932
+ "Addition or Remodel",
933
+ "Generator",
934
+ "Outdoor Lighting",
935
+ "Pet Fence",
936
+ "Thermostat",
937
+ "Wall or Baseboard Heater",
938
+ "Holiday Lighting",
939
+ "Not Sure or Other",
940
+ ],
941
+ },
942
+ updates
943
+ )
944
+ )
945
+ };
540
946
 
541
- const fenceMaterial$1 = (scope) =>
542
- verticalRadio({
543
- name: scope ? scope + ":" + "Fence_Material" : "Fence_Material",
544
- // label: 'What type of fence material?',
545
- options: ["Aluminum", "Chain Link", "Wood", "Wire", "Vinyl", "Iron", "Not Sure or Other"],
546
- });
947
+ const fenceMaterial$1 = (scope, vertical, updates = {}) => {
948
+ const func = vertical ? verticalRadio : sbsRadio;
949
+ const label = vertical ? updates.label : "What fence material?";
950
+ return func(
951
+ merge(
952
+ {
953
+ label,
954
+ name: scope ? scope + ":" + "Fence_Material" : "Fence_Material",
955
+ options: ["Aluminum", "Chain Link", "Wood", "Wire", "Vinyl", "Iron", "Not Sure or Other"],
956
+ },
957
+ updates
958
+ )
959
+ )
960
+ };
547
961
 
548
- const flooringMaterial$1 = (scope) =>
549
- verticalRadio({
550
- name: scope ? scope + ":" + "Flooring_Material" : "Flooring_Material",
551
- // label: 'What type of flooring material?',
552
- options: ["Carpet", "Concrete", "Hardwood", "Laminate", "Linoleum", "Slate", "Tile", "Vinyl", "Not Sure or Other"],
553
- });
962
+ const flooringMaterial$1 = (scope, vertical, updates = {}) => {
963
+ const func = vertical ? verticalRadio : sbsSelect;
964
+ const label = vertical ? updates.label : "What flooring material?";
965
+ return func(
966
+ merge(
967
+ {
968
+ label,
969
+ name: scope ? scope + ":" + "Flooring_Material" : "Flooring_Material",
970
+ options: [
971
+ "Carpet",
972
+ "Concrete",
973
+ "Hardwood",
974
+ "Laminate",
975
+ "Linoleum",
976
+ "Slate",
977
+ "Tile",
978
+ "Vinyl",
979
+ "Not Sure or Other",
980
+ ],
981
+ },
982
+ updates
983
+ )
984
+ )
985
+ };
554
986
 
555
- const generalContractorSubtype$1 = (scope) =>
556
- verticalRadio({
557
- name: scope ? scope + ":" + "General_Contractor_Subtype" : "General_Contractor_Subtype",
558
- // label: 'What type of general contractor work do you need?',
559
- options: [
560
- "Remodeling",
561
- "Additions",
562
- "Major Home Repairs",
563
- "Excavation",
564
- "Demolition",
565
- "Dumpster Rental",
566
- "Not Sure or Other",
567
- ],
568
- });
987
+ const generalContractorSubtype$1 = (scope, vertical, updates = {}) => {
988
+ const func = vertical ? col2RadioCenter : sbsRadio;
989
+ const label = vertical ? updates.label : "What contractor job type?";
990
+ return func(
991
+ merge(
992
+ {
993
+ label,
994
+ name: scope ? scope + ":" + "General_Contractor_Subtype" : "General_Contractor_Subtype",
995
+ options: [
996
+ "Remodeling",
997
+ "Additions",
998
+ "Major Home Repairs",
999
+ "Excavation",
1000
+ "Demolition",
1001
+ "Dumpster Rental",
1002
+ "Not Sure or Other",
1003
+ ],
1004
+ },
1005
+ updates
1006
+ )
1007
+ )
1008
+ };
569
1009
 
570
- const gutterMaterial$1 = (scope) =>
571
- verticalRadio({
572
- name: scope ? scope + ":" + "Gutter_Material" : "Gutter_Material",
573
- // label: 'What type of gutter material?',
574
- options: ["Galvanized", "Metal", "PVC", "Wood", "Not Sure or Other"],
575
- });
1010
+ const gutterMaterial$1 = (scope, vertical, updates = {}) => {
1011
+ const func = vertical ? col2RadioCenter : sbsRadio;
1012
+ const label = vertical ? updates.label : "What gutter material?";
1013
+ return func(
1014
+ merge(
1015
+ {
1016
+ label,
1017
+ name: scope ? scope + ":" + "Gutter_Material" : "Gutter_Material",
1018
+ options: ["Galvanized", "Metal", "PVC", "Wood", "Not Sure or Other"],
1019
+ },
1020
+ updates
1021
+ )
1022
+ )
1023
+ };
576
1024
 
577
- const guttersWorkType$1 = (scope) =>
578
- verticalRadio({
579
- name: scope ? scope + ":" + "Gutters_Work_Type" : "Gutters_Work_Type",
580
- options: ["Install or Replace", "Repair", "Cleaning", "Not Sure or Other"],
581
- });
1025
+ const gutterWorkType$1 = (scope, vertical, updates = {}) => {
1026
+ const func = vertical ? verticalRadio : sbsRadio;
1027
+ const label = vertical ? updates.label : "What type of work?";
1028
+ return func(
1029
+ merge(
1030
+ {
1031
+ label,
1032
+ name: scope ? scope + ":" + "Gutter_Work_Type" : "Gutter_Work_Type",
1033
+ options: ["Install or Replace", "Repair", "Cleaning", "Not Sure or Other"],
1034
+ },
1035
+ updates
1036
+ )
1037
+ )
1038
+ };
582
1039
 
583
- const smartHomeSubtype$1 = (scope) =>
584
- verticalRadio({
585
- name: scope ? scope + ":" + "Smart_Home_Subtype" : "Smart_Home_Subtype",
586
- // label: 'What type of smart home work do you need?',
587
- options: ["Thermostats", "Video Doorbells", "Camera Systems", "Lighting", "Speaker Systems", "Not Sure or Other"],
588
- });
1040
+ const smartHomeSubtype$1 = (scope, vertical, updates = {}) => {
1041
+ const func = vertical ? verticalRadio : sbsRadio;
1042
+ const label = vertical ? updates.label : "What smart home job type?";
1043
+ return func(
1044
+ merge(
1045
+ {
1046
+ label,
1047
+ name: scope ? scope + ":" + "Smart_Home_Subtype" : "Smart_Home_Subtype",
1048
+ options: [
1049
+ "Thermostats",
1050
+ "Video Doorbells",
1051
+ "Camera Systems",
1052
+ "Lighting",
1053
+ "Speaker Systems",
1054
+ "Not Sure or Other",
1055
+ ],
1056
+ },
1057
+ updates
1058
+ )
1059
+ )
1060
+ };
589
1061
 
590
- const homeOrganizationSubtype$1 = (scope) =>
591
- verticalRadio({
592
- name: scope ? scope + ":" + "Home_Organization_Subtype" : "Home_Organization_Subtype",
593
- // label: 'What type of home organization work do you need?',
594
- options: [
595
- "Packing or Unpacking",
596
- "Room Organization",
597
- "Shed Organization",
598
- "Storage Solutions",
599
- "Decluttering",
600
- "Not Sure or Other",
601
- ],
602
- });
1062
+ const homeOrganizationSubtype$1 = (scope, vertical, updates = {}) => {
1063
+ const func = vertical ? verticalRadio : sbsRadio;
1064
+ const label = vertical ? updates.label : "What home organization job?";
1065
+ return func(
1066
+ merge(
1067
+ {
1068
+ label,
1069
+ name: scope ? scope + ":" + "Home_Organization_Subtype" : "Home_Organization_Subtype",
1070
+ options: [
1071
+ "Packing or Unpacking",
1072
+ "Room Organization",
1073
+ "Shed Organization",
1074
+ "Storage Solutions",
1075
+ "Decluttering",
1076
+ "Not Sure or Other",
1077
+ ],
1078
+ },
1079
+ updates
1080
+ )
1081
+ )
1082
+ };
603
1083
 
604
- const numberOfRooms$1 = (scope) =>
605
- verticalRadio({
606
- name: scope ? scope + ":" + "Number_Of_Rooms" : "Number_Of_Rooms",
607
- // label: 'How many rooms?',
608
- options: ["1", "2", "3", "4", "5 or more"],
609
- });
1084
+ const numberOfRooms$1 = (scope, vertical, updates = {}) => {
1085
+ const func = vertical ? verticalRadio : sbsRadio;
1086
+ const label = vertical ? updates.label : "How many rooms?";
1087
+ return func(
1088
+ merge(
1089
+ {
1090
+ label,
1091
+ name: scope ? scope + ":" + "Number_Of_Rooms" : "Number_Of_Rooms",
1092
+ options: ["1-2", "3-4", "4-5", "5-6", "6+"],
1093
+ },
1094
+ updates
1095
+ )
1096
+ )
1097
+ };
610
1098
 
611
- const homeTheaterSubtype$1 = (scope) =>
612
- verticalRadio({
613
- name: scope ? scope + ":" + "Home_Theater_Subtype" : "Home_Theater_Subtype",
614
- // label: 'What type of home theater work do you need?',
615
- options: ["Hang TV", "Install Sound System", "Wiring", "Troubleshooting", "Not Sure or Other"],
616
- });
1099
+ const homeTheaterSubtype$1 = (scope, vertical, updates = {}) => {
1100
+ const func = vertical ? verticalRadio : sbsRadio;
1101
+ const label = vertical ? updates.label : "What home theater job?";
1102
+ return func(
1103
+ merge(
1104
+ {
1105
+ label,
1106
+ name: scope ? scope + ":" + "Home_Theater_Subtype" : "Home_Theater_Subtype",
1107
+ options: ["Hang TV", "Install Sound System", "Wiring", "Troubleshooting", "Not Sure or Other"],
1108
+ },
1109
+ updates
1110
+ )
1111
+ )
1112
+ };
617
1113
 
618
- const heatingCoolingSubtype$1 = (scope) =>
619
- verticalSelect({
620
- name: scope ? scope + ":" + "Heating_Cooling_Subtype" : "Heating_Cooling_Subtype",
621
- // label: 'What type of heating and cooling work do you need?',
622
- options: [
623
- "Central Air",
624
- "Humidifier",
625
- "Ducts and Vents",
626
- "Furnace",
627
- "Heat Pump",
628
- "Radiant Floor",
629
- "Swamp Cooler",
630
- "Not Sure or Other",
631
- ],
632
- });
1114
+ const heatingCoolingSubtype$1 = (scope, vertical, updates = {}) => {
1115
+ const func = vertical ? verticalSelect : sbsSelect;
1116
+ const label = vertical ? updates.label : "What heating or cooling job?";
1117
+ return func(
1118
+ merge(
1119
+ {
1120
+ label,
1121
+ name: scope ? scope + ":" + "Heating_Cooling_Subtype" : "Heating_Cooling_Subtype",
1122
+ options: [
1123
+ "Central Air",
1124
+ "Humidifier",
1125
+ "Ducts and Vents",
1126
+ "Furnace",
1127
+ "Heat Pump",
1128
+ "Radiant Floor",
1129
+ "Swamp Cooler",
1130
+ "Not Sure or Other",
1131
+ ],
1132
+ },
1133
+ updates
1134
+ )
1135
+ )
1136
+ };
633
1137
 
634
- const fuelSource$1 = (scope) =>
635
- verticalRadio({
636
- name: scope ? scope + ":" + "Fuel_Source" : "Fuel_Source",
637
- // label: 'What is the fuel source?',
638
- options: ["Gas", "Oil", "Electric", "Propane", "Not Sure or Other"],
639
- });
1138
+ const fuelSource$1 = (scope, vertical, updates = {}) => {
1139
+ const func = vertical ? verticalRadio : sbsSelect;
1140
+ const label = vertical ? updates.label : "What is the fuel source?";
1141
+ return func(
1142
+ merge(
1143
+ {
1144
+ label,
1145
+ name: scope ? scope + ":" + "Fuel_Source" : "Fuel_Source",
1146
+ options: ["Gas", "Oil", "Electric", "Propane", "Not Sure or Other"],
1147
+ },
1148
+ updates
1149
+ )
1150
+ )
1151
+ };
640
1152
 
641
- const insulationSubtype$1 = (scope) =>
642
- verticalRadio({
643
- name: scope ? scope + ":" + "Insulation_Subtype" : "Insulation_Subtype",
644
- // label: 'What type of insulation work do you need?',
645
- options: ["Batt or Roll", "Spray Foam", "Blown-in", "Reflective", "Not Sure or Other"],
646
- });
1153
+ const insulationSubtype$1 = (scope, vertical, updates = {}) => {
1154
+ const func = vertical ? verticalRadio : sbsRadio;
1155
+ const label = vertical ? updates.label : "What type of insulation job?";
1156
+ return func(
1157
+ merge(
1158
+ {
1159
+ label,
1160
+ name: scope ? scope + ":" + "Insulation_Subtype" : "Insulation_Subtype",
1161
+ options: ["Batt or Roll", "Spray Foam", "Blown-in", "Reflective", "Not Sure or Other"],
1162
+ },
1163
+ updates
1164
+ )
1165
+ )
1166
+ };
647
1167
 
648
- const landscapingSubtype$1 = (scope) =>
649
- verticalSelect({
650
- name: scope ? scope + ":" + "Landscaping_Subtype" : "Landscaping_Subtype",
651
- // label: 'What type of landscaping work do you need?',
652
- options: [
653
- "Lawn Mowing",
654
- "Lawn Care or Fertilization",
655
- "Yard or Leaf Cleanup",
656
- "Patios or Walkways",
657
- "Stonework",
658
- "Architects",
659
- "Landscape Construction",
660
- "Outdoor Lighting",
661
- "Grading",
662
- "Materials Delivery",
663
- "Spinklers",
664
- ],
665
- });
1168
+ const landscapingSubtype$1 = (scope, vertical, updates = {}) => {
1169
+ const func = vertical ? verticalSelect : sbsSelect;
1170
+ const label = vertical ? updates.label : "What landscaping job?";
1171
+ return func(
1172
+ merge(
1173
+ {
1174
+ label,
1175
+ name: scope ? scope + ":" + "Landscaping_Subtype" : "Landscaping_Subtype",
1176
+ options: [
1177
+ "Lawn Mowing",
1178
+ "Lawn Care or Fertilization",
1179
+ "Yard or Leaf Cleanup",
1180
+ "Patios or Walkways",
1181
+ "Stonework",
1182
+ "Architects",
1183
+ "Landscape Construction",
1184
+ "Outdoor Lighting",
1185
+ "Grading",
1186
+ "Materials Delivery",
1187
+ "Spinklers",
1188
+ ],
1189
+ },
1190
+ updates
1191
+ )
1192
+ )
1193
+ };
666
1194
 
667
- const masonrySubtype$1 = (scope) =>
668
- verticalRadio({
669
- name: scope ? scope + ":" + "Masonry_Subtype" : "Masonry_Subtype",
670
- // label: 'What type of masonry work do you need?',
671
- options: ["Driveways", "Walkways", "Floors", "Walls", "Facades", "Material Delivery", "Not Sure or Other"],
672
- });
1195
+ const masonrySubtype$1 = (scope, vertical, updates = {}) => {
1196
+ const func = vertical ? verticalRadio : sbsSelect;
1197
+ const label = vertical ? updates.label : "What masonry job?";
1198
+ return func(
1199
+ merge(
1200
+ {
1201
+ label,
1202
+ name: scope ? scope + ":" + "Masonry_Subtype" : "Masonry_Subtype",
1203
+ options: ["Driveways", "Walkways", "Floors", "Walls", "Facades", "Material Delivery", "Not Sure or Other"],
1204
+ },
1205
+ updates
1206
+ )
1207
+ )
1208
+ };
673
1209
 
674
- const masonryMaterial$1 = (scope) =>
675
- verticalRadio({
676
- name: scope ? scope + ":" + "Masonry_Material" : "Masonry_Material",
677
- // label: 'What type of masonry material?',
678
- options: ["Brick or Stone", "Pavers", "Concrete", "Not Sure or Other"],
679
- });
1210
+ const masonryMaterial$1 = (scope, vertical, updates = {}) => {
1211
+ const func = vertical ? verticalRadio : sbsRadio;
1212
+ const label = vertical ? updates.label : "What masonry material?";
1213
+ return func(
1214
+ merge(
1215
+ {
1216
+ label,
1217
+ name: scope ? scope + ":" + "Masonry_Material" : "Masonry_Material",
1218
+ options: ["Brick or Stone", "Pavers", "Concrete", "Not Sure or Other"],
1219
+ },
1220
+ updates
1221
+ )
1222
+ )
1223
+ };
680
1224
 
681
- const masonryWorkType$1 = (scope) =>
682
- verticalRadio({
683
- name: scope ? scope + ":" + "Masonry_Work_Type" : "Masonry_Work_Type",
684
- // label: 'What type of masonry work do you need?',
685
- options: ["Install or Replace", "Repoint Brick or Stone", "Repair", "Not Sure or Other"],
686
- });
1225
+ const masonryWorkType$1 = (scope, vertical, updates = {}) => {
1226
+ const func = vertical ? verticalRadio : sbsRadio;
1227
+ const label = vertical ? updates.label : "What type of work?";
1228
+ return func(
1229
+ merge(
1230
+ {
1231
+ label,
1232
+ name: scope ? scope + ":" + "Masonry_Work_Type" : "Masonry_Work_Type",
1233
+ options: ["Install or Replace", "Repoint Brick or Stone", "Repair", "Not Sure or Other"],
1234
+ },
1235
+ updates
1236
+ )
1237
+ )
1238
+ };
687
1239
 
688
- const restorationSubtype$1 = (scope) =>
689
- verticalRadio({
690
- name: scope ? scope + ":" + "Restoration_Subtype" : "Restoration_Subtype",
691
- // label: 'What type of restoration work do you need?',
692
- options: ["Mold Remediation", "Fire Damage", "Water Damage", "Not Sure or Other"],
693
- });
1240
+ const restorationSubtype$1 = (scope, vertical, updates = {}) => {
1241
+ const func = vertical ? verticalSelect : sbsSelect;
1242
+ const label = vertical ? updates.label : "What restoration job?";
1243
+ return func(
1244
+ merge(
1245
+ {
1246
+ label,
1247
+ name: scope ? scope + ":" + "Restoration_Subtype" : "Restoration_Subtype",
1248
+ options: ["Mold Remediation", "Fire Damage", "Water Damage", "Not Sure or Other"],
1249
+ },
1250
+ updates
1251
+ )
1252
+ )
1253
+ };
694
1254
 
695
1255
  // TODO: need to finalize support for moving
696
1256
 
@@ -728,165 +1288,280 @@ const restorationSubtype$1 = (scope) =>
728
1288
  // ]
729
1289
  // })
730
1290
 
731
- const paintingSubtype$1 = (scope) =>
732
- verticalSelect({
733
- name: scope ? scope + ":" + "Painting_Subtype" : "Painting_Subtype",
734
- // label: 'What type of painting work do you need?',
735
- options: [
736
- "Whole Exterior",
737
- "Exterior Touch-up",
738
- "Interior Rooms",
739
- "Interior Touch-up",
740
- "Ceilings",
741
- "Deck",
742
- "Shed",
743
- "Cabinets",
744
- "Not Sure or Other",
745
- ],
746
- });
747
-
748
- const paintingRooms$1 = (scope) =>
749
- verticalRadio({
750
- name: scope ? scope + ":" + "Painting_Rooms" : "Painting_Rooms",
751
- // label: 'How many rooms need painting?',
752
- options: ["1-2", "3-4", "4-5", "5-6", "6+"],
753
- });
1291
+ const paintingSubtype$1 = (scope, vertical, updates = {}) => {
1292
+ const func = vertical ? verticalSelect : sbsSelect;
1293
+ const label = vertical ? updates.label : "What painting job type?";
1294
+ return func(
1295
+ merge(
1296
+ {
1297
+ label,
1298
+ name: scope ? scope + ":" + "Painting_Subtype" : "Painting_Subtype",
1299
+ options: [
1300
+ "Whole Exterior",
1301
+ "Exterior Touch-up",
1302
+ "Interior Rooms",
1303
+ "Interior Touch-up",
1304
+ "Ceilings",
1305
+ "Deck",
1306
+ "Shed",
1307
+ "Cabinets",
1308
+ "Not Sure or Other",
1309
+ ],
1310
+ },
1311
+ updates
1312
+ )
1313
+ )
1314
+ };
754
1315
 
755
- const pestControlSubtype$1 = (scope) =>
756
- verticalSelect({
757
- name: scope ? scope + ":" + "Pest_Control_Subtype" : "Pest_Control_Subtype",
758
- // label: 'What type of pest control work do you need?',
759
- options: [
760
- "Bed Bugs",
761
- "Flying Animals",
762
- "Insects",
763
- "Rodents",
764
- "Small Animals",
765
- "Bees",
766
- "Termites",
767
- "Not Sure or Other",
768
- ],
769
- });
1316
+ const pestControlSubtype$1 = (scope, vertical, updates = {}) => {
1317
+ const func = vertical ? verticalSelect : sbsSelect;
1318
+ const label = vertical ? updates.label : "What pest control job type?";
1319
+ return func(
1320
+ merge(
1321
+ {
1322
+ label,
1323
+ name: scope ? scope + ":" + "Pest_Control_Subtype" : "Pest_Control_Subtype",
1324
+ options: [
1325
+ "Bed Bugs",
1326
+ "Flying Animals",
1327
+ "Insects",
1328
+ "Rodents",
1329
+ "Small Animals",
1330
+ "Bees",
1331
+ "Termites",
1332
+ "Not Sure or Other",
1333
+ ],
1334
+ },
1335
+ updates
1336
+ )
1337
+ )
1338
+ };
770
1339
 
771
- const poolsWorkType$1 = (scope) =>
772
- verticalRadio({
773
- name: scope ? scope + ":" + "Pools_Work_Type" : "Pools_Work_Type",
774
- // label: 'What type of pool work do you need?',
775
- options: ["Install or Replace", "Repair", "Cleaning", "Close or Open Pool", "Not Sure or Other"],
776
- });
1340
+ const poolsWorkType$1 = (scope, vertical, updates = {}) => {
1341
+ const func = vertical ? verticalRadio : sbsRadio;
1342
+ const label = vertical ? updates.label : "What type of work?";
1343
+ return func(
1344
+ merge(
1345
+ {
1346
+ label,
1347
+ name: scope ? scope + ":" + "Pools_Work_Type" : "Pools_Work_Type",
1348
+ options: ["Install or Replace", "Repair", "Cleaning", "Close or Open Pool", "Not Sure or Other"],
1349
+ },
1350
+ updates
1351
+ )
1352
+ )
1353
+ };
777
1354
 
778
- const poolsSubtype$1 = (scope) =>
779
- verticalSelect({
780
- name: scope ? scope + ":" + "Pools_Subtype" : "Pools_Subtype",
781
- // label: 'What type of pool do you have?',
782
- options: [
783
- "Above Ground",
784
- "Inground Concrete",
785
- "Inground Fiberglass",
786
- "Inground Vinyl",
787
- "Inground Gunite",
788
- "Pool Liners",
789
- "Pool Filters",
790
- "Not Sure or Other",
791
- ],
792
- });
1355
+ const poolsSubtype$1 = (scope, vertical, updates = {}) => {
1356
+ const func = vertical ? verticalSelect : sbsSelect;
1357
+ const label = vertical ? updates.label : "What type of pool?";
1358
+ return func(
1359
+ merge(
1360
+ {
1361
+ label,
1362
+ name: scope ? scope + ":" + "Pools_Subtype" : "Pools_Subtype",
1363
+ options: [
1364
+ "Above Ground",
1365
+ "Inground Concrete",
1366
+ "Inground Fiberglass",
1367
+ "Inground Vinyl",
1368
+ "Inground Gunite",
1369
+ "Pool Liners",
1370
+ "Pool Filters",
1371
+ "Not Sure or Other",
1372
+ ],
1373
+ },
1374
+ updates
1375
+ )
1376
+ )
1377
+ };
793
1378
 
794
- const plumbingSubtype$1 = (scope) =>
795
- verticalSelect({
796
- name: scope ? scope + ":" + "Plumbing_Subtype" : "Plumbing_Subtype",
797
- // label: 'What type of plumbing work do you need?',
798
- options: [
799
- "Tub or Shower",
800
- "Drain",
801
- "Sink",
802
- "Toilet",
803
- "Boiler",
804
- "Water Heater",
805
- "Sump Pump",
806
- "Piping",
807
- "Septic",
808
- "Water Main",
809
- "Hot Tub",
810
- "Additions and Remodels",
811
- "Not Sure or Other",
812
- ],
813
- });
1379
+ const plumbingSubtype$1 = (scope, vertical, updates = {}) => {
1380
+ const func = vertical ? verticalSelect : sbsSelect;
1381
+ const label = vertical ? updates.label : "What plumbing job type?";
1382
+ return func(
1383
+ merge(
1384
+ {
1385
+ label,
1386
+ name: scope ? scope + ":" + "Plumbing_Subtype" : "Plumbing_Subtype",
1387
+ options: [
1388
+ "Tub or Shower",
1389
+ "Drain",
1390
+ "Sink",
1391
+ "Toilet",
1392
+ "Boiler",
1393
+ "Water Heater",
1394
+ "Sump Pump",
1395
+ "Piping",
1396
+ "Septic",
1397
+ "Water Main",
1398
+ "Hot Tub",
1399
+ "Additions and Remodels",
1400
+ "Not Sure or Other",
1401
+ ],
1402
+ },
1403
+ updates
1404
+ )
1405
+ )
1406
+ };
814
1407
 
815
- const remodelingSubtype$1 = (scope) =>
816
- verticalSelect({
817
- name: scope ? scope + ":" + "Remodeling_Subtype" : "Remodeling_Subtype",
818
- // label: 'What type of remodeling work do you need?',
819
- options: [
820
- "Interior Designer",
821
- "Interior Decorator",
822
- "Kitchen Remodeling",
823
- "Bathroom Remodeling",
824
- "Garage Remodeling",
825
- "Home Remodeling",
826
- "Dumpster Rental",
827
- "Landscape Architect",
828
- "Outdoor Kitchen",
829
- "Outdoor Enclosure",
830
- "Additions",
831
- "Not Sure or Other",
832
- ],
833
- });
1408
+ const remodelingSubtype$1 = (scope, vertical, updates = {}) => {
1409
+ const func = vertical ? verticalSelect : sbsSelect;
1410
+ const label = vertical ? updates.label : "What remodeling job?";
1411
+ return func(
1412
+ merge(
1413
+ {
1414
+ label,
1415
+ name: scope ? scope + ":" + "Remodeling_Subtype" : "Remodeling_Subtype",
1416
+ options: [
1417
+ "Interior Designer",
1418
+ "Interior Decorator",
1419
+ "Kitchen Remodeling",
1420
+ "Bathroom Remodeling",
1421
+ "Garage Remodeling",
1422
+ "Home Remodeling",
1423
+ "Dumpster Rental",
1424
+ "Landscape Architect",
1425
+ "Outdoor Kitchen",
1426
+ "Outdoor Enclosure",
1427
+ "Additions",
1428
+ "Not Sure or Other",
1429
+ ],
1430
+ },
1431
+ updates
1432
+ )
1433
+ )
1434
+ };
834
1435
 
835
- const roofingWorkType$1 = (scope) =>
836
- verticalRadio({
837
- name: scope ? scope + ":" + "Roofing_Work_Type" : "Roofing_Work_Type",
838
- // label: 'What type of roofing work do you need?',
839
- options: ["Install or Replace Roof", "Repair Roof", "Ice Dams", "Gutters", "Not Sure or Other"],
840
- });
1436
+ const roofingWorkType$1 = (scope, vertical, updates = {}) => {
1437
+ const func = vertical ? verticalRadio : sbsRadio;
1438
+ const label = vertical ? updates.label : "What type of work?";
1439
+ return func(
1440
+ merge(
1441
+ {
1442
+ label,
1443
+ name: scope ? scope + ":" + "Roofing_Work_Type" : "Roofing_Work_Type",
1444
+ options: ["Install or Replace Roof", "Repair Roof", "Ice Dams", "Gutters", "Not Sure or Other"],
1445
+ },
1446
+ updates
1447
+ )
1448
+ )
1449
+ };
841
1450
 
842
- const roofingMaterial$1 = (scope) =>
843
- verticalSelect({
844
- name: scope ? scope + ":" + "Roofing_Material" : "Roofing_Material",
845
- // label: 'What type of roofing material?',
846
- options: ["Asphalt Shingle", "Metal", "Composite", "Flat", "Foam", "Tile", "Wood", "Slate", "Not Sure or Other"],
847
- });
1451
+ const roofingMaterial$1 = (scope, vertical, updates = {}) => {
1452
+ const func = vertical ? verticalSelect : sbsSelect;
1453
+ const label = vertical ? updates.label : "What roofing material?";
1454
+ return func(
1455
+ merge(
1456
+ {
1457
+ label,
1458
+ name: scope ? scope + ":" + "Roofing_Material" : "Roofing_Material",
1459
+ options: [
1460
+ "Asphalt Shingle",
1461
+ "Metal",
1462
+ "Composite",
1463
+ "Flat",
1464
+ "Foam",
1465
+ "Tile",
1466
+ "Wood",
1467
+ "Slate",
1468
+ "Not Sure or Other",
1469
+ ],
1470
+ },
1471
+ updates
1472
+ )
1473
+ )
1474
+ };
848
1475
 
849
- const sidingMaterial$1 = (scope) =>
850
- verticalRadio({
851
- name: scope ? scope + ":" + "Siding_Material" : "Siding_Material",
852
- // label: 'What type of siding material?',
853
- options: ["Vinyl", "Composite", "Brick", "Stone", "Wood", "Stucco", "Not Sure or Other"],
854
- });
1476
+ const sidingMaterial$1 = (scope, vertical, updates = {}) => {
1477
+ const func = vertical ? col2RadioCenter : sbsSelect;
1478
+ const label = vertical ? updates.label : "What siding material?";
1479
+ return func(
1480
+ merge(
1481
+ {
1482
+ label,
1483
+ name: scope ? scope + ":" + "Siding_Material" : "Siding_Material",
1484
+ options: ["Vinyl", "Composite", "Brick", "Stone", "Wood", "Stucco", "Not Sure or Other"],
1485
+ },
1486
+ updates
1487
+ )
1488
+ )
1489
+ };
855
1490
 
856
- const tilingSubtype$1 = (scope) =>
857
- verticalRadio({
858
- name: scope ? scope + ":" + "Tiling_Subtype" : "Tiling_Subtype",
859
- // label: 'What type of tiling work do you need?',
860
- options: ["Floor", "Backsplash", "Bathroom", "Wall", "Not Sure or Other"],
861
- });
1491
+ const tilingSubtype$1 = (scope, vertical, updates = {}) => {
1492
+ const func = vertical ? verticalRadio : sbsRadio;
1493
+ const label = vertical ? updates.label : "What tiling job type?";
1494
+ return func(
1495
+ merge(
1496
+ {
1497
+ label,
1498
+ name: scope ? scope + ":" + "Tiling_Subtype" : "Tiling_Subtype",
1499
+ options: ["Floor", "Backsplash", "Bathroom", "Wall", "Not Sure or Other"],
1500
+ },
1501
+ updates
1502
+ )
1503
+ )
1504
+ };
862
1505
 
863
- const waterproofingSubtype$1 = (scope) =>
864
- verticalRadio({
865
- name: scope ? scope + ":" + "Waterproofing_Subtype" : "Waterproofing_Subtype",
866
- // label: 'What type of waterproofing work do you need?',
867
- options: ["Foundations", "Basements", "Drainage", "Not Sure or Other"],
868
- });
1506
+ const waterproofingSubtype$1 = (scope, vertical, updates = {}) => {
1507
+ const func = vertical ? verticalRadio : sbsRadio;
1508
+ const label = vertical ? updates.label : "What waterproofing job?";
1509
+ return func(
1510
+ merge(
1511
+ {
1512
+ label,
1513
+ name: scope ? scope + ":" + "Waterproofing_Subtype" : "Waterproofing_Subtype",
1514
+ options: ["Foundations", "Basements", "Drainage", "Not Sure or Other"],
1515
+ },
1516
+ updates
1517
+ )
1518
+ )
1519
+ };
869
1520
 
870
- const windowsWorkType$1 = (scope) =>
871
- verticalRadio({
872
- name: scope ? scope + ":" + "Windows_Work_Type" : "Windows_Work_Type",
873
- // label: 'What type of windows work do you need?',
874
- options: ["Install or Replace", "Repair", "Cleaning", "Not Sure or Other"],
875
- });
1521
+ const windowsWorkType$1 = (scope, vertical, updates = {}) => {
1522
+ const func = vertical ? verticalRadio : sbsRadio;
1523
+ const label = vertical ? updates.label : "What type of work?";
1524
+ return func(
1525
+ merge(
1526
+ {
1527
+ label,
1528
+ name: scope ? scope + ":" + "Windows_Work_Type" : "Windows_Work_Type",
1529
+ options: ["Install or Replace", "Repair", "Cleaning", "Not Sure or Other"],
1530
+ },
1531
+ updates
1532
+ )
1533
+ )
1534
+ };
876
1535
 
877
- const windowsSubtype$1 = (scope) =>
878
- verticalSelect({
879
- name: scope ? scope + ":" + "Windows_Subtype" : "Windows_Subtype",
880
- // label: 'What type of windows do you have?',
881
- options: ["Whole Windows", "Frames", "Glass", "Hardware", "Storm Windows", "Screens", "Not Sure or Other"],
882
- });
1536
+ const windowsSubtype$1 = (scope, vertical, updates = {}) => {
1537
+ const func = vertical ? verticalSelect : sbsSelect;
1538
+ const label = vertical ? updates.label : "What windows job type?";
1539
+ return func(
1540
+ merge(
1541
+ {
1542
+ label,
1543
+ name: scope ? scope + ":" + "Windows_Subtype" : "Windows_Subtype",
1544
+ options: ["Whole Windows", "Frames", "Glass", "Hardware", "Storm Windows", "Screens", "Not Sure or Other"],
1545
+ },
1546
+ updates
1547
+ )
1548
+ )
1549
+ };
883
1550
 
884
- const numberOfWindows$1 = (scope) =>
885
- verticalRadio({
886
- name: scope ? scope + ":" + "Number_Of_Windows" : "Number_Of_Windows",
887
- // label: 'How many windows?',
888
- options: ["1", "2", "3-5", "6+"],
889
- });
1551
+ const numberOfWindows$1 = (scope, vertical, updates = {}) => {
1552
+ const func = vertical ? verticalRadio : sbsRadio;
1553
+ const label = vertical ? updates.label : "How many windows?";
1554
+ return func(
1555
+ merge(
1556
+ {
1557
+ label,
1558
+ name: scope ? scope + ":" + "Number_Of_Windows" : "Number_Of_Windows",
1559
+ options: ["1", "2", "3-5", "6+"],
1560
+ },
1561
+ updates
1562
+ )
1563
+ )
1564
+ };
890
1565
 
891
1566
  const NEXT_ON_ENTER = "$onEnter($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))";
892
1567
  const NEXT_ON_INPUT = "$onInput($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))";
@@ -949,6 +1624,16 @@ function secureIcon(updates) {
949
1624
  return merge(secureIconDefault, updates)
950
1625
  }
951
1626
 
1627
+ function crossSellQuestionsStepHeadline(updates) {
1628
+ return {
1629
+ $el: "h3",
1630
+ children: updates.headline || "Tell Us About Your Situation",
1631
+ attrs: {
1632
+ class: "t-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-blue-500 t-pb-4 t-pt-0 t-px-1",
1633
+ },
1634
+ }
1635
+ }
1636
+
952
1637
  function verticalStepHeadline(updates) {
953
1638
  return {
954
1639
  $el: "h3",
@@ -1182,46 +1867,289 @@ function zipcode(updates = {}) {
1182
1867
  return sqstep("zipcode", zipcode$1(updates.scope, true, updates.input), "Please verify your Zip Code", updates)
1183
1868
  }
1184
1869
 
1185
- // export function remodelingCrossSellQuestions(updates = {}) {
1186
- // return step(
1187
- // 'remodelingCrossSellQuestions',
1188
- // [
1189
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Remodeler' }),
1190
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your remodeling needs:' }),
1191
- // inp.RemodelingQuestions("true", 'CrossSell:Remodeling'),
1192
- // inp.comments('CrossSell:Remodeling', false,
1193
- // {
1194
- // label: 'Project Description:',
1195
- // placeholder: 'Please describe your project in a few words...',
1196
- // inputClass: '!t-h-16'
1197
- // },
1198
- // )
1199
- // ],
1200
- // updates
1201
- // )
1202
- // }
1870
+ // ------ Home Improvement
1203
1871
 
1204
- // export function roofingCrossSellQuestions(updates = {}) {
1205
- // return step(
1206
- // 'roofingCrossSellQuestions',
1207
- // [
1208
- // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Roofer' }),
1209
- // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your roofing needs:' }),
1210
- // inp.RoofingQuestions("true", 'CrossSell:Roofing'),
1211
- // inp.comments('CrossSell:Roofing', false,
1212
- // {
1213
- // label: 'Project Description:',
1214
- // placeholder: 'Please describe your project in a few words...',
1215
- // inputClass: '!t-h-16'
1216
- // },
1217
- // )
1218
- // ],
1219
- // updates
1220
- // )
1221
- // }
1872
+ function homeImprovementCrossSellsStepHeadline(updates) {
1873
+ return {
1874
+ $el: "h3",
1875
+ children: updates.headline || "Interested in free quotes for other projects?",
1876
+ attrs: {
1877
+ class:
1878
+ "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" +
1879
+ " " +
1880
+ (updates.headlineClass || ""),
1881
+ },
1882
+ }
1883
+ }
1884
+
1885
+ function homeImprovementCrossSells(updates = {}) {
1886
+ updates.nextOnInput = false;
1887
+ updates.stepKey = "$get(Category).value";
1888
+ return step(
1889
+ "homeImprovementCrossSells",
1890
+ [homeImprovementCrossSellsStepHeadline(updates), homeImprovementCrossSells$1(updates.scope)],
1891
+ updates
1892
+ )
1893
+ }
1894
+
1895
+ function appliancesCrossSellQuestions(updates = {}) {
1896
+ return step(
1897
+ "appliancesCrossSellQuestions",
1898
+ [
1899
+ crossSellQuestionsStepHeadline({ headline: "Connect With Appliance Pros" }),
1900
+ ApplianceQuestions("true", "CrossSell:Appliances"),
1901
+ comments("CrossSell:Appliances", false, {
1902
+ label: "Project Description:",
1903
+ placeholder: "Please describe your project in a few words...",
1904
+ inputClass: "!t-h-16",
1905
+ }),
1906
+ ],
1907
+ updates
1908
+ )
1909
+ }
1910
+
1911
+ function carpentryCrossSellQuestions(updates = {}) {
1912
+ return step(
1913
+ "carpentryCrossSellQuestions",
1914
+ [
1915
+ crossSellQuestionsStepHeadline({ headline: "Connect With a Carpenter" }),
1916
+ CarpentryQuestions("true", "CrossSell:Carpentry"),
1917
+ comments("CrossSell:Carpentry", false, {
1918
+ label: "Project Description:",
1919
+ placeholder: "Please describe your project in a few words...",
1920
+ inputClass: "!t-h-16",
1921
+ }),
1922
+ ],
1923
+ updates
1924
+ )
1925
+ }
1926
+
1927
+ function drivewaysCrossSellQuestions(updates = {}) {
1928
+ return step(
1929
+ "drivewaysCrossSellQuestions",
1930
+ [
1931
+ crossSellQuestionsStepHeadline({ headline: "Connect With Driveway Pros" }),
1932
+ DrivewaysQuestions("true", "CrossSell:Driveways"),
1933
+ comments("CrossSell:Driveways", false, {
1934
+ label: "Project Description:",
1935
+ placeholder: "Please describe your project in a few words...",
1936
+ inputClass: "!t-h-16",
1937
+ }),
1938
+ ],
1939
+ updates
1940
+ )
1941
+ }
1942
+
1943
+ function drywallAndPlasterCrossSellQuestions(updates = {}) {
1944
+ return step(
1945
+ "drywallCrossSellQuestions",
1946
+ [
1947
+ crossSellQuestionsStepHeadline({ headline: "Connect With Drywall Pros" }),
1948
+ DrywallAndPlasterQuestions("true", "CrossSell:Drywall and Plaster"),
1949
+ comments("CrossSell:Drywall and Plaster", false, {
1950
+ label: "Project Description:",
1951
+ placeholder: "Please describe your project in a few words...",
1952
+ inputClass: "!t-h-16",
1953
+ }),
1954
+ ],
1955
+ updates
1956
+ )
1957
+ }
1958
+
1959
+ function electricalCrossSellQuestions(updates = {}) {
1960
+ return step(
1961
+ "electricalCrossSellQuestions",
1962
+ [
1963
+ crossSellQuestionsStepHeadline({ headline: "Connect With Electrical Pros" }),
1964
+ ElectricalQuestions("true", "CrossSell:Electrical"),
1965
+ comments("CrossSell:Electrical", false, {
1966
+ label: "Project Description:",
1967
+ placeholder: "Please describe your project in a few words...",
1968
+ inputClass: "!t-h-16",
1969
+ }),
1970
+ ],
1971
+ updates
1972
+ )
1973
+ }
1974
+
1975
+ function flooringCrossSellQuestions(updates = {}) {
1976
+ return step(
1977
+ "flooringCrossSellQuestions",
1978
+ [
1979
+ crossSellQuestionsStepHeadline({ headline: "Connect With Flooring Pros" }),
1980
+ FlooringQuestions("true", "CrossSell:Flooring"),
1981
+ comments("CrossSell:Flooring", false, {
1982
+ label: "Project Description:",
1983
+ placeholder: "Please describe your project in a few words...",
1984
+ inputClass: "!t-h-16",
1985
+ }),
1986
+ ],
1987
+ updates
1988
+ )
1989
+ }
1990
+
1991
+ function heatingCoolingCrossSellQuestions(updates = {}) {
1992
+ return step(
1993
+ "heatingCoolingCrossSellQuestions",
1994
+ [
1995
+ crossSellQuestionsStepHeadline({ headline: "Connect With HVAC Pros" }),
1996
+ HeatingAndCoolingQuestions("true", "CrossSell:Heating and Cooling"),
1997
+ comments("CrossSell:Heating and Cooling", false, {
1998
+ label: "Project Description:",
1999
+ placeholder: "Please describe your project in a few words...",
2000
+ inputClass: "!t-h-16",
2001
+ }),
2002
+ ],
2003
+ updates
2004
+ )
2005
+ }
2006
+
2007
+ function landscapingCrossSellQuestions(updates = {}) {
2008
+ return step(
2009
+ "landscapingCrossSellQuestions",
2010
+ [
2011
+ crossSellQuestionsStepHeadline({ headline: "Connect With a Landscaper" }),
2012
+ LandscapingQuestions("true", "CrossSell:Landscaping"),
2013
+ comments("CrossSell:Landscaping", false, {
2014
+ label: "Project Description:",
2015
+ placeholder: "Please describe your project in a few words...",
2016
+ inputClass: "!t-h-16",
2017
+ }),
2018
+ ],
2019
+ updates
2020
+ )
2021
+ }
2022
+
2023
+ function masonryAndConcreteCrossSellQuestions(updates = {}) {
2024
+ return step(
2025
+ "masonryAndConcreteCrossSellQuestions",
2026
+ [
2027
+ crossSellQuestionsStepHeadline({ headline: "Connect With Masonry Pros" }),
2028
+ MasonryAndConcreteQuestions("true", "CrossSell:Masonry and Concrete"),
2029
+ comments("CrossSell:Masonry and Concrete", false, {
2030
+ label: "Project Description:",
2031
+ placeholder: "Please describe your project in a few words...",
2032
+ inputClass: "!t-h-16",
2033
+ }),
2034
+ ],
2035
+ updates
2036
+ )
2037
+ }
2038
+
2039
+ function paintingCrossSellQuestions(updates = {}) {
2040
+ return step(
2041
+ "paintingCrossSellQuestions",
2042
+ [
2043
+ crossSellQuestionsStepHeadline({ headline: "Connect With a Painter" }),
2044
+ PaintingQuestions("true", "CrossSell:Painting"),
2045
+ comments("CrossSell:Painting", false, {
2046
+ label: "Project Description:",
2047
+ placeholder: "Please describe your project in a few words...",
2048
+ inputClass: "!t-h-16",
2049
+ }),
2050
+ ],
2051
+ updates
2052
+ )
2053
+ }
2054
+
2055
+ function pestControlCrossSellQuestions(updates = {}) {
2056
+ return step(
2057
+ "pestControlCrossSellQuestions",
2058
+ [
2059
+ crossSellQuestionsStepHeadline({ headline: "Get Pest Control Help" }),
2060
+ PestControlQuestions("true", "CrossSell:Pest Control"),
2061
+ comments("CrossSell:Pest Control", false, {
2062
+ label: "Project Description:",
2063
+ placeholder: "Please describe your project in a few words...",
2064
+ inputClass: "!t-h-16",
2065
+ }),
2066
+ ],
2067
+ updates
2068
+ )
2069
+ }
2070
+
2071
+ function plumbingCrossSellQuestions(updates = {}) {
2072
+ return step(
2073
+ "plumbingCrossSellQuestions",
2074
+ [
2075
+ crossSellQuestionsStepHeadline({ headline: "Connect With a Plumber" }),
2076
+ PlumbingQuestions("true", "CrossSell:Plumbing"),
2077
+ comments("CrossSell:Plumbing", false, {
2078
+ label: "Project Description:",
2079
+ placeholder: "Please describe your project in a few words...",
2080
+ inputClass: "!t-h-16",
2081
+ }),
2082
+ ],
2083
+ updates
2084
+ )
2085
+ }
2086
+
2087
+ function remodelingCrossSellQuestions(updates = {}) {
2088
+ return step(
2089
+ "remodelingCrossSellQuestions",
2090
+ [
2091
+ crossSellQuestionsStepHeadline({ headline: "Connect With Remodelers" }),
2092
+ RemodelingQuestions("true", "CrossSell:Remodeling"),
2093
+ comments("CrossSell:Remodeling", false, {
2094
+ label: "Project Description:",
2095
+ placeholder: "Please describe your project in a few words...",
2096
+ inputClass: "!t-h-16",
2097
+ }),
2098
+ ],
2099
+ updates
2100
+ )
2101
+ }
2102
+
2103
+ function roofingCrossSellQuestions(updates = {}) {
2104
+ return step(
2105
+ "roofingCrossSellQuestions",
2106
+ [
2107
+ crossSellQuestionsStepHeadline({ headline: "Connect With a Roofer" }),
2108
+ RoofingQuestions("true", "CrossSell:Roofing"),
2109
+ comments("CrossSell:Roofing", false, {
2110
+ label: "Project Description:",
2111
+ placeholder: "Please describe your project in a few words...",
2112
+ inputClass: "!t-h-16",
2113
+ }),
2114
+ ],
2115
+ updates
2116
+ )
2117
+ }
2118
+
2119
+ function sidingCrossSellQuestions(updates = {}) {
2120
+ return step(
2121
+ "sidingCrossSellQuestions",
2122
+ [
2123
+ crossSellQuestionsStepHeadline({ headline: "Connect With Siding Pros" }),
2124
+ SidingQuestions("true", "CrossSell:Siding"),
2125
+ comments("CrossSell:Siding", false, {
2126
+ label: "Project Description:",
2127
+ placeholder: "Please describe your project in a few words...",
2128
+ inputClass: "!t-h-16",
2129
+ }),
2130
+ ],
2131
+ updates
2132
+ )
2133
+ }
2134
+
2135
+ function windowsCrossSellQuestions(updates = {}) {
2136
+ return step(
2137
+ "windowsCrossSellQuestions",
2138
+ [
2139
+ crossSellQuestionsStepHeadline({ headline: "Connect With Window Pros" }),
2140
+ WindowsQuestions("true", "CrossSell:Windows"),
2141
+ comments("CrossSell:Windows", false, {
2142
+ label: "Project Description:",
2143
+ placeholder: "Please describe your project in a few words...",
2144
+ inputClass: "!t-h-16",
2145
+ }),
2146
+ ],
2147
+ updates
2148
+ )
2149
+ }
1222
2150
 
1223
2151
  function homeImprovementCategory(updates = {}) {
1224
- return step("homeImprovementCategory", [homeImprovementCategory$1(updates.scope, false, updates.input)], updates)
2152
+ return step("homeImprovementCategory", [homeImprovementCategory$1(updates.scope, true, updates.input)], updates)
1225
2153
  }
1226
2154
 
1227
2155
  function timeframe(updates = {}) {
@@ -1286,7 +2214,7 @@ function carpentrySubtype(updates = {}) {
1286
2214
  return sqstep(
1287
2215
  "carpentrySubtype",
1288
2216
  carpentrySubtype$1(updates.scope, true, updates.input),
1289
- "What type of carpentry work?",
2217
+ "What carpentry job type?",
1290
2218
  updates
1291
2219
  )
1292
2220
  }
@@ -1371,7 +2299,7 @@ function electricalSubtype(updates = {}) {
1371
2299
  return sqstep(
1372
2300
  "electricalSubtype",
1373
2301
  electricalSubtype$1(updates.scope, true, updates.input),
1374
- "What type of electrical work?",
2302
+ "What electrical job type?",
1375
2303
  updates
1376
2304
  )
1377
2305
  }
@@ -1412,10 +2340,10 @@ function gutterMaterial(updates = {}) {
1412
2340
  )
1413
2341
  }
1414
2342
 
1415
- function guttersWorkType(updates = {}) {
2343
+ function gutterWorkType(updates = {}) {
1416
2344
  return sqstep(
1417
- "guttersWorkType",
1418
- guttersWorkType$1(updates.scope, true, updates.input),
2345
+ "gutterWorkType",
2346
+ gutterWorkType$1(updates.scope, true, updates.input),
1419
2347
  "What type of gutter work?",
1420
2348
  updates
1421
2349
  )
@@ -1456,7 +2384,7 @@ function heatingCoolingSubtype(updates = {}) {
1456
2384
  return sqstep(
1457
2385
  "heatingCoolingSubtype",
1458
2386
  heatingCoolingSubtype$1(updates.scope, true, updates.input),
1459
- "What type of heating and cooling work?",
2387
+ "What heating or cooling job type?",
1460
2388
  updates
1461
2389
  )
1462
2390
  }
@@ -1487,7 +2415,7 @@ function masonrySubtype(updates = {}) {
1487
2415
  return sqstep(
1488
2416
  "masonrySubtype",
1489
2417
  masonrySubtype$1(updates.scope, true, updates.input),
1490
- "What type of masonry work?",
2418
+ "What masonry job type?",
1491
2419
  updates
1492
2420
  )
1493
2421
  }
@@ -1560,7 +2488,7 @@ function paintingSubtype(updates = {}) {
1560
2488
  function paintingRooms(updates = {}) {
1561
2489
  return sqstep(
1562
2490
  "paintingRooms",
1563
- paintingRooms$1(updates.scope, true, updates.input),
2491
+ numberOfRooms$1(updates.scope, true, updates.input),
1564
2492
  "How many rooms need painting?",
1565
2493
  updates
1566
2494
  )
@@ -1597,7 +2525,7 @@ function plumbingSubtype(updates = {}) {
1597
2525
  return sqstep(
1598
2526
  "plumbingSubtype",
1599
2527
  plumbingSubtype$1(updates.scope, true, updates.input),
1600
- "What type of plumbing work?",
2528
+ "What plumbing job type?",
1601
2529
  updates
1602
2530
  )
1603
2531
  }
@@ -1669,7 +2597,7 @@ function windowsSubtype(updates = {}) {
1669
2597
  return sqstep(
1670
2598
  "windowsSubtype",
1671
2599
  windowsSubtype$1(updates.scope, true, updates.input),
1672
- "What type of windows work?",
2600
+ "What windows job type?",
1673
2601
  updates
1674
2602
  )
1675
2603
  }
@@ -1847,6 +2775,79 @@ function defaultMetaPropsHomeImprovement(category = null) {
1847
2775
  })
1848
2776
  }
1849
2777
 
2778
+ function defaultMetaPropsHomeImprovementGeneral(defaultSteps = nextStepsHomeImprovementDefault) {
2779
+ const meta = defaultMetaPropsHomeImprovement();
2780
+ meta.data.dynamicSchema = [
2781
+ zipcode(),
2782
+ timeframe(),
2783
+ ownHome(),
2784
+ address(),
2785
+ homeImprovementWorkType(),
2786
+ additionsSubType(),
2787
+ constructionAreaSize(),
2788
+ applianceType(),
2789
+ cabinetWorkType(),
2790
+ carpentrySubtype(),
2791
+ carpetWorkType(),
2792
+ cleaningSubtype(),
2793
+ countertopMaterial(),
2794
+ deckWorkType(),
2795
+ demolitionSubtype(),
2796
+ doorSubtype(),
2797
+ drivewayWorkType(),
2798
+ drivewayMaterial(),
2799
+ wallSurfaceType(),
2800
+ electricalSubtype(),
2801
+ fenceMaterial(),
2802
+ flooringMaterial(),
2803
+ generalContractorSubtype(),
2804
+ gutterMaterial(),
2805
+ gutterWorkType(),
2806
+ smartHomeSubtype(),
2807
+ homeOrganizationSubtype(),
2808
+ numberOfRooms(),
2809
+ homeTheaterSubtype(),
2810
+ heatingCoolingSubtype(),
2811
+ fuelSource(),
2812
+ insulationSubtype(),
2813
+ landscapingSubtype(),
2814
+ masonrySubtype(),
2815
+ masonryMaterial(),
2816
+ masonryWorkType(),
2817
+ restorationSubtype(),
2818
+ // Moving not finished yet
2819
+ // steps.movingFromAddress(),
2820
+ // steps.movingToAddress(),
2821
+ // steps.movingHouseholdSize(),
2822
+ paintingSubtype({
2823
+ nextStepMap: nextStepsMapPainting(defaultSteps),
2824
+ }),
2825
+ paintingRooms(),
2826
+ pestControlSubtype(),
2827
+ poolsWorkType(),
2828
+ poolsSubtype(),
2829
+ plumbingSubtype(),
2830
+ remodelingSubtype(),
2831
+ roofingWorkType(),
2832
+ roofingMaterial(),
2833
+ sidingMaterial(),
2834
+ tilingSubtype(),
2835
+ waterproofingSubtype(),
2836
+ windowsWorkType(),
2837
+ windowsSubtype(),
2838
+ numberOfWindows(),
2839
+ commentsHeadline({
2840
+ label: null,
2841
+ headline: "Please briefly describe your project:",
2842
+ headlineClass: "!t-text-dark",
2843
+ }),
2844
+ firstAndLastV3({
2845
+ headlineClass: "!t-text-dark",
2846
+ }),
2847
+ ];
2848
+ return meta
2849
+ }
2850
+
1850
2851
  function dynamicSchemaNode(field = "Type_Of_Legal_Problem") {
1851
2852
  return {
1852
2853
  $cmp: "FormKitSchema",
@@ -2060,6 +3061,7 @@ const HomeImprovementCommentsPlaceholders = {
2060
3061
  Waterproofing: 'Example: "I need to waterproof my basement"',
2061
3062
  "Window Cleaning": 'Example: "I need a professional window cleaning service"',
2062
3063
  Windows: 'Example: "I want to replace 3 windows in my house"',
3064
+ "Not Sure or Other": 'Example: "I need general handyman services"',
2063
3065
  };
2064
3066
 
2065
3067
  const HomeImprovementFinalHeadlines = {
@@ -2182,175 +3184,155 @@ const nextStepsHomeImprovementDefault = [
2182
3184
  "ownHome",
2183
3185
  "zipcode",
2184
3186
  "address",
2185
- // 'homeImprovementCrossSells',
3187
+ "homeImprovementCrossSells",
2186
3188
  "firstAndLast",
2187
3189
  "contactInfo",
2188
3190
  ];
2189
3191
 
2190
- const nextStepsMapGeneralHomeImprovement = {
2191
- values: {
2192
- Category: {
2193
- Additions: ["additionsSubType", "constructionAreaSize", ...nextStepsHomeImprovementDefault],
2194
- Appliances: ["homeImprovementWorkType", "applianceType", ...nextStepsHomeImprovementDefault],
2195
- Appraisals: [...nextStepsHomeImprovementDefault],
2196
- Cabinets: ["cabinetWorkType", ...nextStepsHomeImprovementDefault],
2197
- Carpentry: ["carpentrySubtype", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2198
- Carpets: ["carpetWorkType", ...nextStepsHomeImprovementDefault],
2199
- Cleaning: ["cleaningSubtype", ...nextStepsHomeImprovementDefault],
2200
- Countertops: ["countertopMaterial", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2201
- "Decks and Porches": ["deckWorkType", ...nextStepsHomeImprovementDefault],
2202
- Demolition: ["demolitionSubtype", ...nextStepsHomeImprovementDefault],
2203
- Doors: ["doorSubtype", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2204
- Driveways: ["drivewayWorkType", "drivewayMaterial", ...nextStepsHomeImprovementDefault],
2205
- "Drywall and Plaster": ["wallSurfaceType", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2206
- Electrical: ["electricalSubtype", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2207
- Fencing: ["fenceMaterial", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2208
- Flooring: ["flooringMaterial", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2209
- Foundations: ["homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2210
- "Garage Doors": ["homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2211
- "General Contractors": ["generalContractorSubtype", ...nextStepsHomeImprovementDefault],
2212
- Gutters: ["gutterMaterial", "guttersWorkType", ...nextStepsHomeImprovementDefault],
2213
- Handyman: [...nextStepsHomeImprovementDefault],
2214
- "Holiday Decorators": [...nextStepsHomeImprovementDefault],
2215
- "Smart Home": ["smartHomeSubtype", ...nextStepsHomeImprovementDefault],
2216
- "Home Builders": [...nextStepsHomeImprovementDefault],
2217
- "Home Inspection": [...nextStepsHomeImprovementDefault],
2218
- "Home Organization": ["homeOrganizationSubtype", ...nextStepsHomeImprovementDefault],
2219
- "Home Security": [...nextStepsHomeImprovementDefault],
2220
- "Home Staging": ["numberOfRooms", ...nextStepsHomeImprovementDefault],
2221
- "Home Theater": ["homeTheaterSubtype", ...nextStepsHomeImprovementDefault],
2222
- "Home Warranties": [...nextStepsHomeImprovementDefault],
2223
- "Hot Tubs": ["homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2224
- "Heating and Cooling": [
2225
- "heatingCoolingSubtype",
2226
- "fuelSource",
2227
- "homeImprovementWorkType",
2228
- ...nextStepsHomeImprovementDefault,
2229
- ],
2230
- Insulation: ["insulationSubtype", ...nextStepsHomeImprovementDefault],
2231
- "Junk Removal": [...nextStepsHomeImprovementDefault],
2232
- Landscaping: ["landscapingSubtype", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2233
- Locksmiths: [...nextStepsHomeImprovementDefault],
2234
- "Masonry and Concrete": [
2235
- "masonrySubtype",
2236
- "masonryMaterial",
2237
- "masonryWorkType",
2238
- ...nextStepsHomeImprovementDefault,
2239
- ],
2240
- Restoration: ["restorationSubtype", ...nextStepsHomeImprovementDefault],
2241
- Moving: ["movingFromAddress", "movingToAddress", "movingHouseholdSize", ...nextStepsHomeImprovementDefault],
2242
- Painting: ["paintingSubtype", "paintingRooms", ...nextStepsHomeImprovementDefault],
2243
- "Pest Control": ["pestControlSubtype", ...nextStepsHomeImprovementDefault],
2244
- Pools: ["poolsWorkType", "poolsSubtype", ...nextStepsHomeImprovementDefault],
2245
- Plumbing: ["plumbingSubtype", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2246
- "Pressure Washing": [...nextStepsHomeImprovementDefault],
2247
- Remodeling: ["remodelingSubtype", ...nextStepsHomeImprovementDefault],
2248
- Roofing: ["roofingWorkType", "roofingMaterial", ...nextStepsHomeImprovementDefault],
2249
- Sheds: ["homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2250
- Siding: ["sidingMaterial", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2251
- Solar: ["homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2252
- Tiling: ["tilingSubtype", "homeImprovementWorkType", ...nextStepsHomeImprovementDefault],
2253
- "Walk-in Tubs": [...nextStepsHomeImprovementDefault],
2254
- Waterproofing: ["waterproofingSubtype", ...nextStepsHomeImprovementDefault],
2255
- "Window Cleaning": [...nextStepsHomeImprovementDefault],
2256
- Windows: ["windowsWorkType", "windowsSubtype", "numberOfWindows", ...nextStepsHomeImprovementDefault],
3192
+ const nextStepsMapGeneralHomeImprovement = (defaultSteps = nextStepsHomeImprovementDefault) => {
3193
+ return {
3194
+ values: {
3195
+ Category: {
3196
+ Additions: ["additionsSubType", "constructionAreaSize", ...defaultSteps],
3197
+ Appliances: ["applianceType", "homeImprovementWorkType", ...defaultSteps],
3198
+ Appraisals: [...defaultSteps],
3199
+ Cabinets: ["cabinetWorkType", ...defaultSteps],
3200
+ Carpentry: ["carpentrySubtype", "homeImprovementWorkType", ...defaultSteps],
3201
+ Carpets: ["carpetWorkType", ...defaultSteps],
3202
+ Cleaning: ["cleaningSubtype", ...defaultSteps],
3203
+ Countertops: ["countertopMaterial", "homeImprovementWorkType", ...defaultSteps],
3204
+ "Decks and Porches": ["deckWorkType", ...defaultSteps],
3205
+ Demolition: ["demolitionSubtype", ...defaultSteps],
3206
+ Doors: ["doorSubtype", "homeImprovementWorkType", ...defaultSteps],
3207
+ Driveways: ["drivewayWorkType", "drivewayMaterial", ...defaultSteps],
3208
+ "Drywall and Plaster": ["wallSurfaceType", "homeImprovementWorkType", ...defaultSteps],
3209
+ Electrical: ["electricalSubtype", "homeImprovementWorkType", ...defaultSteps],
3210
+ Fencing: ["fenceMaterial", "homeImprovementWorkType", ...defaultSteps],
3211
+ Flooring: ["flooringMaterial", "homeImprovementWorkType", ...defaultSteps],
3212
+ Foundations: ["homeImprovementWorkType", ...defaultSteps],
3213
+ "Garage Doors": ["homeImprovementWorkType", ...defaultSteps],
3214
+ "General Contractors": ["generalContractorSubtype", ...defaultSteps],
3215
+ Gutters: ["gutterMaterial", "gutterWorkType", ...defaultSteps],
3216
+ Handyman: [...defaultSteps],
3217
+ "Holiday Decorators": [...defaultSteps],
3218
+ "Smart Home": ["smartHomeSubtype", ...defaultSteps],
3219
+ "Home Builders": [...defaultSteps],
3220
+ "Home Inspection": [...defaultSteps],
3221
+ "Home Organization": ["homeOrganizationSubtype", ...defaultSteps],
3222
+ "Home Security": [...defaultSteps],
3223
+ "Home Staging": ["numberOfRooms", ...defaultSteps],
3224
+ "Home Theater": ["homeTheaterSubtype", ...defaultSteps],
3225
+ "Home Warranties": [...defaultSteps],
3226
+ "Hot Tubs": ["homeImprovementWorkType", ...defaultSteps],
3227
+ "Heating and Cooling": ["heatingCoolingSubtype", "fuelSource", "homeImprovementWorkType", ...defaultSteps],
3228
+ Insulation: ["insulationSubtype", ...defaultSteps],
3229
+ "Junk Removal": [...defaultSteps],
3230
+ Landscaping: ["landscapingSubtype", "homeImprovementWorkType", ...defaultSteps],
3231
+ Locksmiths: [...defaultSteps],
3232
+ "Masonry and Concrete": ["masonrySubtype", "masonryMaterial", "masonryWorkType", ...defaultSteps],
3233
+ // TODO :: add support for moving
3234
+ // Moving: ["movingFromAddress", "movingToAddress", "movingHouseholdSize", ...defaultSteps],
3235
+ Restoration: ["restorationSubtype", ...defaultSteps],
3236
+ Painting: ["paintingSubtype", "paintingRooms", ...defaultSteps],
3237
+ "Pest Control": ["pestControlSubtype", ...defaultSteps],
3238
+ Pools: ["poolsSubtype", "poolsWorkType", ...defaultSteps],
3239
+ Plumbing: ["plumbingSubtype", "homeImprovementWorkType", ...defaultSteps],
3240
+ "Pressure Washing": [...defaultSteps],
3241
+ Remodeling: ["remodelingSubtype", ...defaultSteps],
3242
+ Roofing: ["roofingWorkType", "roofingMaterial", ...defaultSteps],
3243
+ Sheds: ["homeImprovementWorkType", ...defaultSteps],
3244
+ Siding: ["sidingMaterial", "homeImprovementWorkType", ...defaultSteps],
3245
+ Solar: ["homeImprovementWorkType", ...defaultSteps],
3246
+ Tiling: ["tilingSubtype", "homeImprovementWorkType", ...defaultSteps],
3247
+ "Walk-in Tubs": [...defaultSteps],
3248
+ Waterproofing: ["waterproofingSubtype", ...defaultSteps],
3249
+ "Window Cleaning": [...defaultSteps],
3250
+ Windows: ["windowsSubtype", "windowsWorkType", "numberOfWindows", ...defaultSteps],
3251
+ },
3252
+ "*": defaultSteps,
2257
3253
  },
2258
- "*": nextStepsHomeImprovementDefault,
2259
- },
3254
+ }
3255
+ };
3256
+
3257
+ const nextStepsMapPainting = (defaultSteps = nextStepsHomeImprovementDefault) => {
3258
+ return {
3259
+ values: {
3260
+ Painting_Subtype: {
3261
+ "Whole Exterior": defaultSteps,
3262
+ "Exterior Touch-up": defaultSteps,
3263
+ "Interior Rooms": ["paintingRooms", ...defaultSteps],
3264
+ "Interior Touch-up": ["paintingRooms", ...defaultSteps],
3265
+ Ceilings: ["paintingRooms", ...defaultSteps],
3266
+ Deck: defaultSteps,
3267
+ Shed: defaultSteps,
3268
+ Cabinets: defaultSteps,
3269
+ "Not Sure or Other": defaultSteps,
3270
+ },
3271
+ },
3272
+ }
2260
3273
  };
2261
3274
 
2262
- const nextStepsMapPainting = {
3275
+ const homeImprovementCrossSellOptionMap = CROSS_SELL_OPTION_MAP_HOME_IMPROVEMENT;
3276
+
3277
+ const nextStepsMapHomeImprovementCrossSells = {
2263
3278
  values: {
2264
- Painting_Subtype: {
2265
- "Whole Exterior": nextStepsHomeImprovementDefault,
2266
- "Exterior Touch-up": nextStepsHomeImprovementDefault,
2267
- "Interior Rooms": ["paintingRooms", ...nextStepsHomeImprovementDefault],
2268
- "Interior Touch-up": ["paintingRooms", ...nextStepsHomeImprovementDefault],
2269
- Ceilings: ["paintingRooms", ...nextStepsHomeImprovementDefault],
2270
- Deck: nextStepsHomeImprovementDefault,
2271
- Shed: nextStepsHomeImprovementDefault,
2272
- Cabinets: nextStepsHomeImprovementDefault,
2273
- "Not Sure or Other": nextStepsHomeImprovementDefault,
3279
+ Home_Improvement_CrossSells: {
3280
+ Appliances: ["appliancesCrossSellQuestions"],
3281
+ Carpentry: ["carpentryCrossSellQuestions"],
3282
+ Driveways: ["drivewaysCrossSellQuestions"],
3283
+ "Drywall and Plaster": ["drywallCrossSellQuestions"],
3284
+ Electrical: ["electricalCrossSellQuestions"],
3285
+ Flooring: ["flooringCrossSellQuestions"],
3286
+ "Heating and Cooling": ["heatingCoolingCrossSellQuestions"],
3287
+ Landscaping: ["landscapingCrossSellQuestions"],
3288
+ "Masonry and Concrete": ["masonryAndConcreteCrossSellQuestions"],
3289
+ Painting: ["paintingCrossSellQuestions"],
3290
+ "Pest Control": ["pestControlCrossSellQuestions"],
3291
+ Plumbing: ["plumbingCrossSellQuestions"],
3292
+ Remodeling: ["remodelingCrossSellQuestions"],
3293
+ Roofing: ["roofingCrossSellQuestions"],
3294
+ Siding: ["sidingCrossSellQuestions"],
3295
+ Windows: ["windowsCrossSellQuestions"],
3296
+ // TODO:
3297
+ // Insulation, Cabinets, Countertops, Decks and Porches, Doors,
3298
+ // Fencing, Gutters, Handyman, Pressure Washing
2274
3299
  },
3300
+ "*": ["firstAndLast", "contactInfo"],
2275
3301
  },
3302
+ // NOTE: this assumes a certain placement of the cross sell question
3303
+ // in the form flow.
3304
+ appendSteps: ["firstAndLast", "contactInfo"],
3305
+ // TODO: revisit what's allowed here
3306
+ matchesAllowed: 1,
2276
3307
  };
2277
3308
 
2278
- const meta = defaultMetaPropsHomeImprovement();
2279
-
2280
- meta.data.dynamicSchema = [
2281
- zipcode(),
2282
- timeframe(),
2283
- ownHome(),
2284
- address(),
2285
- homeImprovementWorkType(),
2286
- additionsSubType(),
2287
- constructionAreaSize(),
2288
- applianceType(),
2289
- cabinetWorkType(),
2290
- carpentrySubtype(),
2291
- carpetWorkType(),
2292
- cleaningSubtype(),
2293
- countertopMaterial(),
2294
- deckWorkType(),
2295
- demolitionSubtype(),
2296
- doorSubtype(),
2297
- drivewayWorkType(),
2298
- drivewayMaterial(),
2299
- wallSurfaceType(),
2300
- electricalSubtype(),
2301
- fenceMaterial(),
2302
- flooringMaterial(),
2303
- generalContractorSubtype(),
2304
- gutterMaterial(),
2305
- guttersWorkType(),
2306
- smartHomeSubtype(),
2307
- homeOrganizationSubtype(),
2308
- numberOfRooms(),
2309
- homeTheaterSubtype(),
2310
- heatingCoolingSubtype(),
2311
- fuelSource(),
2312
- insulationSubtype(),
2313
- landscapingSubtype(),
2314
- masonrySubtype(),
2315
- masonryMaterial(),
2316
- masonryWorkType(),
2317
- restorationSubtype(),
2318
- // Moving not finished yet
2319
- // steps.movingFromAddress(),
2320
- // steps.movingToAddress(),
2321
- // steps.movingHouseholdSize(),
2322
- paintingSubtype({
2323
- nextStepMap: nextStepsMapPainting,
2324
- }),
2325
- paintingRooms(),
2326
- pestControlSubtype(),
2327
- poolsWorkType(),
2328
- poolsSubtype(),
2329
- plumbingSubtype(),
2330
- remodelingSubtype(),
2331
- roofingWorkType(),
2332
- roofingMaterial(),
2333
- sidingMaterial(),
2334
- tilingSubtype(),
2335
- waterproofingSubtype(),
2336
- windowsWorkType(),
2337
- windowsSubtype(),
2338
- numberOfWindows(),
2339
- // steps.plumbingCrossSellQuestions(),
2340
- commentsHeadline({
2341
- label: null,
2342
- headline: "Please briefly describe your project:",
2343
- headlineClass: "!t-text-dark",
2344
- }),
2345
- // steps.homeImprovementCrossSells({
2346
- // headlineClass: "!t-text-dark",
2347
- // nextStepMap: forms.nextStepsMapHomeImprovementCrossSells,
2348
- // }),
2349
- firstAndLastV3({
3309
+ const meta = defaultMetaPropsHomeImprovementGeneral();
3310
+
3311
+ const extraSteps = [
3312
+ appliancesCrossSellQuestions(),
3313
+ carpentryCrossSellQuestions(),
3314
+ drivewaysCrossSellQuestions(),
3315
+ drywallAndPlasterCrossSellQuestions(),
3316
+ electricalCrossSellQuestions(),
3317
+ flooringCrossSellQuestions(),
3318
+ heatingCoolingCrossSellQuestions(),
3319
+ landscapingCrossSellQuestions(),
3320
+ masonryAndConcreteCrossSellQuestions(),
3321
+ paintingCrossSellQuestions(),
3322
+ pestControlCrossSellQuestions(),
3323
+ plumbingCrossSellQuestions(),
3324
+ remodelingCrossSellQuestions(),
3325
+ roofingCrossSellQuestions(),
3326
+ sidingCrossSellQuestions(),
3327
+ windowsCrossSellQuestions(),
3328
+ homeImprovementCrossSells({
2350
3329
  headlineClass: "!t-text-dark",
3330
+ nextStepMap: nextStepsMapHomeImprovementCrossSells,
2351
3331
  }),
2352
3332
  ];
2353
3333
 
3334
+ meta.data.dynamicSchema = meta.data.dynamicSchema.concat(extraSteps);
3335
+
2354
3336
  const schema = [
2355
3337
  meta,
2356
3338
  formAnchor(),
@@ -2359,8 +3341,7 @@ const schema = [
2359
3341
  props: formProps({
2360
3342
  formId: "generalHomeImprovement",
2361
3343
  redirectMap: homeImprovementRedirectMap(),
2362
- // valueOverrideMap: forms.homeImprovementAllValueOverrideMap,
2363
- // crossSellOptionMap: forms.homeImprovementCrossSellOptionMap,
3344
+ crossSellOptionMap: homeImprovementCrossSellOptionMap,
2364
3345
  }),
2365
3346
  children: [
2366
3347
  progressBar(),
@@ -2381,7 +3362,7 @@ const schema = [
2381
3362
  children: [
2382
3363
  homeImprovementCategory({
2383
3364
  nextOnInput: false,
2384
- nextStepMap: nextStepsMapGeneralHomeImprovement,
3365
+ nextStepMap: nextStepsMapGeneralHomeImprovement(),
2385
3366
  headlineClass: "t-text-lg",
2386
3367
  input: {
2387
3368
  placeholder: "Select a Category",