mod-build 3.7.1 → 3.7.2-7.beta-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 (41) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/gulp-tasks/build.js +4 -4
  3. package/gulp-tasks/get-default-trade-questions.js +155 -0
  4. package/gulp-tasks/grab-cdn.js +26 -21
  5. package/gulp-tasks/grab-mhsadmin-data.js +418 -0
  6. package/gulp-tasks/grab-section-deals-components.js +47 -0
  7. package/gulp-tasks/grab-shared-scripts.js +21 -5
  8. package/gulp-tasks/serve.js +5 -5
  9. package/gulp-tasks/tasks.js +36 -3
  10. package/gulp-tasks/templates.js +95 -12
  11. package/package.json +1 -1
  12. package/src/scripts/vendor/heap-addeventproperties-identify.js +1 -1
  13. package/src/scripts/vendor/heap-tracking.js +1 -1
  14. package/src/scripts/vendor/heap-vwo.js +1 -1
  15. package/src/scripts/vendor/visual-website-optimizer.js +7 -8
  16. package/src/templates/_partials/scripts/vwo-redirect-callback.html +20 -0
  17. package/src/trade-questions/alerts_medical.js +111 -0
  18. package/src/trade-questions/bathroom_refacing.js +96 -0
  19. package/src/trade-questions/cabinet_refacing.js +251 -0
  20. package/src/trade-questions/cabinets.js +35 -0
  21. package/src/trade-questions/concrete_foundation.js +57 -0
  22. package/src/trade-questions/door.js +143 -0
  23. package/src/trade-questions/flooring.js +185 -0
  24. package/src/trade-questions/garage_door.js +89 -0
  25. package/src/trade-questions/gutters.js +45 -0
  26. package/src/trade-questions/home_security.js +130 -0
  27. package/src/trade-questions/home_warranty.js +57 -0
  28. package/src/trade-questions/hot_tubs.js +92 -0
  29. package/src/trade-questions/hvac.js +179 -0
  30. package/src/trade-questions/index.js +26 -0
  31. package/src/trade-questions/insulation.js +118 -0
  32. package/src/trade-questions/plumbing.js +260 -0
  33. package/src/trade-questions/roofing.js +118 -0
  34. package/src/trade-questions/siding.js +150 -0
  35. package/src/trade-questions/solar.js +69 -0
  36. package/src/trade-questions/stair_lifts.js +47 -0
  37. package/src/trade-questions/tree_services.js +169 -0
  38. package/src/trade-questions/walk_in_tubs.js +47 -0
  39. package/src/trade-questions/water_treatment.js +48 -0
  40. package/src/trade-questions/windows.js +132 -0
  41. package/src/trade-questions-config.js +139 -0
@@ -0,0 +1,35 @@
1
+ const cabinets = {
2
+ ProductService: {
3
+ fields: [
4
+ {
5
+ legend: {
6
+ text: 'Which are you interested in?'
7
+ },
8
+ options: [
9
+ {
10
+ text: 'Kitchen Cabinet Install',
11
+ attributes: {
12
+ name: 'ProductService',
13
+ value: 'CABINET_INSTALL',
14
+ checked: '',
15
+ data: {
16
+ required: 'nonempty'
17
+ }
18
+ }
19
+ },
20
+ {
21
+ text: 'Kitchen Cabinet Refacing',
22
+ attributes: {
23
+ name: 'ProductService',
24
+ value: 'CABINET_REFACING',
25
+ data: {
26
+ required: 'nonempty'
27
+ }
28
+ }
29
+ }
30
+ ]
31
+ }
32
+ ]
33
+ }
34
+ };
35
+ module.exports = cabinets;
@@ -0,0 +1,57 @@
1
+ /* eslint-disable */
2
+ const concrete_foundation = {
3
+ ServiceDetails: {
4
+ fields: [
5
+ {
6
+ legend: {
7
+ text: 'What is the nature of your project?'
8
+ },
9
+ options: [
10
+ {
11
+ attributes: {
12
+ name: 'service',
13
+ value: 'CONCRETE_FOUNDATION',
14
+ checked: '',
15
+ data: {
16
+ required: 'nonempty'
17
+ }
18
+ },
19
+ text: 'Foundation Repair'
20
+ },
21
+ {
22
+ attributes: {
23
+ name: 'service',
24
+ value: 'BASEMENT_WATERPROOFING',
25
+ data: {
26
+ required: 'nonempty'
27
+ }
28
+ },
29
+ text: 'Basement Waterproofing'
30
+ },
31
+ {
32
+ attributes: {
33
+ name: 'service',
34
+ value: 'CRAWLSPACE_ENCAPSULATION',
35
+ data: {
36
+ required: 'nonempty'
37
+ }
38
+ },
39
+ text: 'Crawlspace Waterproofing'
40
+ },
41
+ {
42
+ attributes: {
43
+ name: 'service',
44
+ value: 'CONCRETE_FOUNDATION',
45
+ data: {
46
+ required: 'nonempty'
47
+ }
48
+ },
49
+ text: 'Unsure'
50
+ }
51
+ ]
52
+ }
53
+ ]
54
+ }
55
+ };
56
+
57
+ module.exports = concrete_foundation;
@@ -0,0 +1,143 @@
1
+ const door = {
2
+ DoorType: {
3
+ fields: [
4
+ {
5
+ legend: {
6
+ text: 'What type of door are you interested in?'
7
+ },
8
+ options: [
9
+ {
10
+ text: 'Exterior Door',
11
+ attributes: {
12
+ name: 'DoorType',
13
+ value: 'Exterior',
14
+ checked: '',
15
+ data: {
16
+ required: 'nonempty'
17
+ }
18
+ }
19
+ },
20
+ {
21
+ text: 'Sliding Door',
22
+ attributes: {
23
+ name: 'DoorType',
24
+ value: 'SlidingDoor',
25
+ data: {
26
+ required: 'nonempty'
27
+ }
28
+ }
29
+ },
30
+ {
31
+ text: 'Interior Door',
32
+ attributes: {
33
+ name: 'DoorType',
34
+ value: 'Interior',
35
+ data: {
36
+ required: 'nonempty'
37
+ }
38
+ }
39
+ },
40
+ {
41
+ text: 'Storm Door',
42
+ attributes: {
43
+ name: 'DoorType',
44
+ value: 'StormDoor',
45
+ data: {
46
+ required: 'nonempty'
47
+ }
48
+ }
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ },
54
+ DoorProjectScope: {
55
+ fields: [
56
+ {
57
+ legend: {
58
+ text: 'What is the nature of your door project?'
59
+ },
60
+ options: [
61
+ {
62
+ text: 'Install a new door',
63
+ attributes: {
64
+ name: 'DoorProjectScope',
65
+ value: 'Install',
66
+ checked: '',
67
+ data: {
68
+ required: 'nonempty'
69
+ }
70
+ }
71
+ },
72
+ {
73
+ text: 'Repair an existing door',
74
+ attributes: {
75
+ name: 'DoorProjectScope',
76
+ value: 'Repair',
77
+ data: {
78
+ required: 'nonempty'
79
+ }
80
+ }
81
+ }
82
+ ]
83
+ }
84
+ ]
85
+ },
86
+ DoorsNumber: {
87
+ fields: [
88
+ {
89
+ legend: {
90
+ text: 'Are you interested in receiving manufacturer catalogs?'
91
+ },
92
+ options: [
93
+ {
94
+ text: '1',
95
+ attributes: {
96
+ name: 'DoorsNumber',
97
+ value: '1 door',
98
+ checked: '',
99
+ data: {
100
+ required: 'nonempty'
101
+ }
102
+ }
103
+ },
104
+ {
105
+ text: '2',
106
+ attributes: {
107
+ name: 'DoorsNumber',
108
+ value: '2 doors',
109
+ checked: '',
110
+ data: {
111
+ required: 'nonempty'
112
+ }
113
+ }
114
+ },
115
+ {
116
+ text: '3-5',
117
+ attributes: {
118
+ name: 'DoorsNumber',
119
+ value: '3-5 doors',
120
+ checked: '',
121
+ data: {
122
+ required: 'nonempty'
123
+ }
124
+ }
125
+ },
126
+ {
127
+ text: '6+',
128
+ attributes: {
129
+ name: 'DoorsNumber',
130
+ value: '6+ doors',
131
+ checked: '',
132
+ data: {
133
+ required: 'nonempty'
134
+ }
135
+ }
136
+ }
137
+ ]
138
+ }
139
+ ]
140
+ }
141
+ };
142
+
143
+ module.exports = door;
@@ -0,0 +1,185 @@
1
+ const flooring = {
2
+ ProductService: {
3
+ fields: [
4
+ {
5
+ legend: {
6
+ text: 'What type of flooring are you looking for?'
7
+ },
8
+ options: [
9
+ {
10
+ attributes: {
11
+ name: 'ProductService',
12
+ value: 'FLOORING_LAMINATE',
13
+ checked: '',
14
+ data: {
15
+ required: 'nonempty'
16
+ }
17
+ },
18
+ text: 'Laminate'
19
+ },
20
+ {
21
+ attributes: {
22
+ name: 'ProductService',
23
+ value: 'FLOORING_HARDWOOD',
24
+ data: {
25
+ required: 'nonempty'
26
+ }
27
+ },
28
+ text: 'Hardwood'
29
+ },
30
+ {
31
+ attributes: {
32
+ name: 'ProductService',
33
+ value: 'CARPET',
34
+ data: {
35
+ required: 'nonempty'
36
+ }
37
+ },
38
+ wrapper: {
39
+ attributes: {
40
+ class: 'hidden ProductService-carpet'
41
+ }
42
+ },
43
+ text: 'Carpet'
44
+ },
45
+ {
46
+ attributes: {
47
+ name: 'ProductService',
48
+ value: 'FLOORING_TILE',
49
+ data: {
50
+ required: 'nonempty'
51
+ }
52
+ },
53
+ text: 'Tile'
54
+ },
55
+ {
56
+ attributes: {
57
+ name: 'ProductService',
58
+ value: 'FLOORING_VINYL_LINOLEUM',
59
+ data: {
60
+ required: 'nonempty'
61
+ }
62
+ },
63
+ text: 'Vinyl'
64
+ },
65
+ {
66
+ attributes: {
67
+ name: 'ProductService',
68
+ value: 'FLOORING_VINYL_LINOLEUM',
69
+ data: {
70
+ required: 'nonempty'
71
+ }
72
+ },
73
+ text: 'Luxury Vinyl Tiles/LVT'
74
+ }
75
+ ]
76
+ }
77
+ ]
78
+ },
79
+ FlooringProjectScope: {
80
+ fields: [
81
+ {
82
+ legend: {
83
+ text: 'Which of these best describes your needs?'
84
+ },
85
+ options: [
86
+ {
87
+ attributes: {
88
+ name: 'FlooringProjectScope',
89
+ value: 'Install',
90
+ checked: '',
91
+ data: {
92
+ required: 'nonempty'
93
+ }
94
+ },
95
+ text: 'Install new flooring'
96
+ },
97
+ {
98
+ attributes: {
99
+ name: 'FlooringProjectScope',
100
+ value: 'Repair',
101
+ data: {
102
+ required: 'nonempty'
103
+ }
104
+ },
105
+ text: 'Repair existing flooring'
106
+ },
107
+ {
108
+ attributes: {
109
+ name: 'FlooringProjectScope',
110
+ value: 'Refinishing',
111
+ data: {
112
+ required: 'nonempty'
113
+ }
114
+ },
115
+ text: 'Refinish existing hardwood flooring'
116
+ }
117
+ ]
118
+ }
119
+ ]
120
+ },
121
+ MaterialPurchase: {
122
+ fields: [
123
+ {
124
+ legend: {
125
+ text: 'Have you already purchased the material you need?'
126
+ },
127
+ options: [
128
+ {
129
+ attributes: {
130
+ name: 'MaterialPurchase',
131
+ value: 'Yes',
132
+ checked: '',
133
+ data: {
134
+ required: 'nonempty'
135
+ }
136
+ },
137
+ text: 'Yes'
138
+ },
139
+ {
140
+ attributes: {
141
+ name: 'MaterialPurchase',
142
+ value: 'No',
143
+ data: {
144
+ required: 'nonempty'
145
+ }
146
+ },
147
+ text: 'No'
148
+ }
149
+ ]
150
+ }
151
+ ]
152
+ },
153
+ CommercialLocation: {
154
+ fields: [
155
+ {
156
+ legend: {
157
+ text: 'What kind of location is this?'
158
+ },
159
+ options: [
160
+ {
161
+ attributes: {
162
+ name: 'CommercialLocation',
163
+ value: 'Home',
164
+ data: {
165
+ required: 'nonempty'
166
+ }
167
+ },
168
+ text: 'Home'
169
+ },
170
+ {
171
+ attributes: {
172
+ name: 'CommercialLocation',
173
+ value: 'Business',
174
+ data: {
175
+ required: 'nonempty'
176
+ }
177
+ },
178
+ text: 'Business'
179
+ }
180
+ ]
181
+ }
182
+ ]
183
+ }
184
+ };
185
+ module.exports = flooring;
@@ -0,0 +1,89 @@
1
+ /* eslint-disable */
2
+ const garage_door = {
3
+ ProjectScope: {
4
+ fields: [
5
+ {
6
+ legend: {
7
+ text: 'What is the nature of your project?'
8
+ },
9
+ options: [
10
+ {
11
+ text: 'Replace',
12
+ attributes: {
13
+ name: 'ProjectScope',
14
+ value: 'Replace',
15
+ checked: '',
16
+ data: {
17
+ required: 'nonempty'
18
+ }
19
+ }
20
+ },
21
+ {
22
+ text: 'Repair',
23
+ attributes: {
24
+ name: 'ProjectScope',
25
+ value: 'Repair',
26
+ data: {
27
+ required: 'nonempty'
28
+ }
29
+ }
30
+ }
31
+ ]
32
+ }
33
+ ]
34
+ },
35
+ GarageDoorSize: {
36
+ fields: [
37
+ {
38
+ legend: {
39
+ text: 'What size do you need?'
40
+ },
41
+ options: [
42
+ {
43
+ text: 'One Car',
44
+ attributes: {
45
+ name: 'GarageDoorSize',
46
+ value: 'One Car',
47
+ checked: '',
48
+ data: {
49
+ required: 'nonempty'
50
+ }
51
+ }
52
+ },
53
+ {
54
+ text: 'Two Car',
55
+ attributes: {
56
+ name: 'GarageDoorSize',
57
+ value: 'Two Car',
58
+ data: {
59
+ required: 'nonempty'
60
+ }
61
+ }
62
+ },
63
+ {
64
+ text: 'RV',
65
+ attributes: {
66
+ name: 'GarageDoorSize',
67
+ value: 'RV',
68
+ data: {
69
+ required: 'nonempty'
70
+ }
71
+ }
72
+ },
73
+ {
74
+ text: 'Custom',
75
+ attributes: {
76
+ name: 'GarageDoorSize',
77
+ value: 'Custom',
78
+ data: {
79
+ required: 'nonempty'
80
+ }
81
+ }
82
+ }
83
+ ]
84
+ }
85
+ ]
86
+ }
87
+ };
88
+
89
+ module.exports = garage_door;
@@ -0,0 +1,45 @@
1
+ const gutters = {
2
+ ProductService: {
3
+ fields: [
4
+ {
5
+ legend: {
6
+ text: 'What kind of service are you looking for?'
7
+ },
8
+ options: [
9
+ {
10
+ text: 'Gutter Installation',
11
+ attributes: {
12
+ name: 'ProductService',
13
+ value: 'GUTTERS',
14
+ checked: '',
15
+ data: {
16
+ required: 'nonempty'
17
+ }
18
+ }
19
+ },
20
+ {
21
+ text: 'Gutter Guard',
22
+ attributes: {
23
+ name: 'ProductService',
24
+ value: 'GUTTER_COVERS',
25
+ data: {
26
+ required: 'nonempty'
27
+ }
28
+ }
29
+ },
30
+ {
31
+ text: 'Gutter Repair',
32
+ attributes: {
33
+ name: 'ProductService',
34
+ value: 'GUTTERS_REPAIR',
35
+ data: {
36
+ required: 'nonempty'
37
+ }
38
+ }
39
+ }
40
+ ]
41
+ }
42
+ ]
43
+ }
44
+ };
45
+ module.exports = gutters;
@@ -0,0 +1,130 @@
1
+ /* eslint-disable */
2
+ const home_security = {
3
+ HomeSecurityProjectScope: {
4
+ fields: [
5
+ {
6
+ legend: {
7
+ text: 'What kind of service do you need?'
8
+ },
9
+ options: [
10
+ {
11
+ text: 'New System Installation',
12
+ attributes: {
13
+ name: 'HomeSecurityProjectScope',
14
+ value: 'Install',
15
+ checked: '',
16
+ data: {
17
+ required: 'nonempty'
18
+ }
19
+ }
20
+ },
21
+ {
22
+ text: 'Reactivate an Existing System',
23
+ attributes: {
24
+ name: 'HomeSecurityProjectScope',
25
+ value: 'Reactivate',
26
+ data: {
27
+ required: 'nonempty'
28
+ }
29
+ }
30
+ },
31
+ {
32
+ text: 'Equipment Only (No Monitoring Service)',
33
+ attributes: {
34
+ name: 'HomeSecurityProjectScope',
35
+ value: 'Equipment',
36
+ data: {
37
+ required: 'nonempty'
38
+ }
39
+ }
40
+ }
41
+ ]
42
+ }
43
+ ]
44
+ },
45
+ SecuritySystemInstallationType: {
46
+ fields: [
47
+ {
48
+ legend: {
49
+ text: 'What is your installation preference?'
50
+ },
51
+ options: [
52
+ {
53
+ text: 'Professional Installation',
54
+ attributes: {
55
+ name: 'SecuritySystemInstallationType',
56
+ value: 'ProfessionalInstall',
57
+ checked: '',
58
+ data: {
59
+ required: 'nonempty'
60
+ }
61
+ }
62
+ },
63
+ {
64
+ text: 'Self Installation',
65
+ attributes: {
66
+ name: 'SecuritySystemInstallationType',
67
+ value: 'SelfInstall',
68
+ data: {
69
+ required: 'nonempty'
70
+ }
71
+ }
72
+ },
73
+ {
74
+ text: 'No Preference',
75
+ attributes: {
76
+ name: 'SecuritySystemInstallationType',
77
+ value: 'NoPreference',
78
+ data: {
79
+ required: 'nonempty'
80
+ }
81
+ }
82
+ }
83
+ ]
84
+ }
85
+ ]
86
+ },
87
+ CommercialLocation: {
88
+ fields: [
89
+ {
90
+ legend: {
91
+ text: 'What type of property is this system for?'
92
+ },
93
+ options: [
94
+ {
95
+ text: 'Owned',
96
+ attributes: {
97
+ name: 'CommercialLocation',
98
+ value: 'Home',
99
+ checked: '',
100
+ data: {
101
+ required: 'nonempty'
102
+ }
103
+ }
104
+ },
105
+ {
106
+ text: 'Rented',
107
+ attributes: {
108
+ name: 'CommercialLocation',
109
+ value: 'Homerent',
110
+ data: {
111
+ required: 'nonempty'
112
+ }
113
+ }
114
+ },
115
+ {
116
+ text: 'Business',
117
+ attributes: {
118
+ name: 'CommercialLocation',
119
+ value: 'Commercial',
120
+ data: {
121
+ required: 'nonempty'
122
+ }
123
+ }
124
+ }
125
+ ]
126
+ }
127
+ ]
128
+ }
129
+ };
130
+ module.exports = home_security;