mod-build 3.6.80 → 3.6.81

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 (31) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/package.json +1 -1
  3. package/src/templates/_partials/apt-block.html +30 -0
  4. package/src/templates/_partials/scripts/analytics.html +4 -0
  5. package/src/templates/_partials/scripts/deferred-styles.html +16 -0
  6. package/src/templates/_partials/scripts/go-page-hiding-snippet.html +8 -0
  7. package/src/templates/_partials/scripts/google-maps.html +1 -0
  8. package/src/templates/_partials/scripts/google-optimize.html +12 -0
  9. package/src/templates/_partials/scripts/gtm-editorials/body/google-tag-manager-body.html +5 -0
  10. package/src/templates/_partials/scripts/gtm-editorials/head/google-tag-manager-head.html +10 -0
  11. package/src/templates/_partials/scripts/gtm-hil/body/google-tag-manager-body.html +5 -0
  12. package/src/templates/_partials/scripts/gtm-hil/head/google-tag-manager-head.html +10 -0
  13. package/src/templates/_partials/scripts/gtm-pro/body/google-tag-manager-body.html +5 -0
  14. package/src/templates/_partials/scripts/gtm-pro/head/google-tag-manager-head.html +10 -0
  15. package/src/templates/_partials/scripts/gtm-quote/body/google-tag-manager-body.html +5 -0
  16. package/src/templates/_partials/scripts/gtm-quote/head/google-tag-manager-head.html +9 -0
  17. package/src/templates/_partials/scripts/gtm-whitelabel/body/mod-google-tag-manager-body.html +5 -0
  18. package/src/templates/_partials/scripts/gtm-whitelabel/body/non-mod-google-tag-manager-body.html +5 -0
  19. package/src/templates/_partials/scripts/gtm-whitelabel/head/mod-google-tag-manager-head.html +10 -0
  20. package/src/templates/_partials/scripts/gtm-whitelabel/head/non-mod-google-tag-manager-head.html +9 -0
  21. package/src/templates/_partials/scripts/gtm-wordpress/body/google-tag-manager-body.html +5 -0
  22. package/src/templates/_partials/scripts/gtm-wordpress/head/google-tag-manager-head.html +9 -0
  23. package/src/templates/_partials/scripts/heap-bundle.html +7 -0
  24. package/src/templates/_partials/scripts/heap.html +4 -0
  25. package/src/templates/_partials/scripts/utm-params.html +9 -0
  26. package/src/templates/_partials/scripts/visual-website-optimizer.html +5 -0
  27. package/src/templates/_partials/scripts/vwo-redirect-callback.html +49 -0
  28. package/src/templates/components/qs-footer.html +55 -0
  29. package/src/templates/components/quote-footer-v1.html +148 -0
  30. package/src/templates/components/quote-footer-v2.html +169 -0
  31. package/src/templates/index.html +46 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.6.81
4
+
5
+ - Reverting change to .gitignore
6
+
3
7
  ## 3.6.80
4
8
 
5
9
  - Add Dealer Network checkbox to Mod contractor form
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mod-build",
3
- "version": "3.6.80",
3
+ "version": "3.6.81",
4
4
  "description": "Share components for S3 sites.",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -0,0 +1,30 @@
1
+ <div class="apt-block apt-block--instant" id="instant-apt-block" style="display: none">
2
+ <div class="apt-block__suptitle">
3
+ Next steps
4
+ </div>
5
+ <h2 class="apt-block__title">
6
+ Set Appointments
7
+ </h2>
8
+ <div class="apt-block__subtitle">
9
+ Request up to four appointments with contractors to receive free&nbsp;quotes.
10
+ </div>
11
+
12
+ <div class="apt-block__instant-matches" id="apt-block-instant-matches"> </div>
13
+ </div>
14
+
15
+ <div class="apt-block" id="apt-block" style="display: none">
16
+ <h2 class="apt-block__title" id="apt-block-title">
17
+ Loading matches...
18
+ </h2>
19
+
20
+ <div class="apt-block__matches" id="apt-block-matches"> </div>
21
+
22
+ <div class="apt-block__loading" id="apt-block-loading">
23
+ <span class="apt-block__spinner"></span>
24
+ Searching for matches&hellip;
25
+ </div>
26
+ </div>
27
+
28
+ <script>
29
+ var aptBlockTCPA = '{{#x 'this.tcpa("Schedule", "Modernize")'}}{{/x}}';
30
+ </script>
@@ -0,0 +1,4 @@
1
+ <script>
2
+ {{ fileInclude 'node_modules/mod-build/src/scripts/has-qs-params.js' }}
3
+ {{ fileInclude 'node_modules/mod-build/src/scripts/url-cleaner.js' }}
4
+ </script>
@@ -0,0 +1,16 @@
1
+ <noscript id="deferred-styles">
2
+ {{{deferredStyles deferredStyleUrls}}}
3
+ </noscript>
4
+ <script>
5
+ var loadDeferredStyles = function() {
6
+ var addStylesNode = document.getElementById("deferred-styles");
7
+ var replacement = document.createElement("div");
8
+ replacement.innerHTML = addStylesNode.textContent;
9
+ document.body.appendChild(replacement)
10
+ addStylesNode.parentElement.removeChild(addStylesNode);
11
+ };
12
+ var raf = requestAnimationFrame || mozRequestAnimationFrame ||
13
+ webkitRequestAnimationFrame || msRequestAnimationFrame;
14
+ if (raf) raf(function() { window.setTimeout(loadDeferredStyles, 0); });
15
+ else window.addEventListener('load', loadDeferredStyles);
16
+ </script>
@@ -0,0 +1,8 @@
1
+ <!-- Google Optimize Page-hiding snippet -->
2
+ <style>.async-hide { opacity: 0 !important} </style>
3
+ <script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date;
4
+ h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')};
5
+ (a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c;
6
+ })(window,document.documentElement,'async-hide','dataLayer',4000,
7
+ {'{{optimize_GTM}}':true});</script>
8
+ <!-- End Google Optimize Page-hiding snippet -->
@@ -0,0 +1 @@
1
+ <script src="//maps.googleapis.com/maps/api/js?key=AIzaSyBf4HNrR12KgZeMNsdoNIjD57pwVUsZ6e4&language=en&libraries=places&callback=modForm.initAddressAutocomplete" async defer></script>
@@ -0,0 +1,12 @@
1
+ <!-- Google Optimize -->
2
+ <script>
3
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
4
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
5
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
7
+
8
+ ga('create', '{{ga_tracking_ID}}', 'auto');
9
+ ga('require', '{{optimize_GTM}}');
10
+ </script>
11
+ <!-- End Google Optimize -->
12
+
@@ -0,0 +1,5 @@
1
+ <!-- Google Tag Manager (noscript) -->
2
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WPXKC8"
3
+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
4
+ <!-- End Google Tag Manager (noscript) -->
5
+
@@ -0,0 +1,10 @@
1
+ <!-- Google Tag Manager -->
2
+ <script>
3
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
4
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
5
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
6
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
7
+ })(window,document,'script','dataLayer','GTM-WPXKC8');
8
+ </script>
9
+ <!-- End Google Tag Manager -->
10
+
@@ -0,0 +1,5 @@
1
+ <!-- Google Tag Manager (noscript) -->
2
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TDM5ZF6"
3
+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
4
+ <!-- End Google Tag Manager (noscript) -->
5
+
@@ -0,0 +1,10 @@
1
+ <!-- Google Tag Manager -->
2
+ <script>
3
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
4
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
5
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
6
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
7
+ })(window,document,'script','dataLayer','GTM-TDM5ZF6');
8
+ </script>
9
+ <!-- End Google Tag Manager -->
10
+
@@ -0,0 +1,5 @@
1
+ <!-- Google Tag Manager (noscript) -->
2
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WPXKC8"
3
+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
4
+ <!-- End Google Tag Manager (noscript) -->
5
+
@@ -0,0 +1,10 @@
1
+ <!-- Google Tag Manager -->
2
+ <script>
3
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
4
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
5
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
6
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
7
+ })(window,document,'script','dataLayer','GTM-WPXKC8');
8
+ </script>
9
+ <!-- End Google Tag Manager -->
10
+
@@ -0,0 +1,5 @@
1
+ <!-- Google Tag Manager (noscript) -->
2
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NVJQBK2"
3
+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
4
+ <!-- End Google Tag Manager (noscript) -->
5
+
@@ -0,0 +1,9 @@
1
+ <!-- Google Tag Manager -->
2
+ <script>
3
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
4
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
5
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
6
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
7
+ })(window,document,'script','dataLayer','GTM-NVJQBK2');
8
+ </script>
9
+ <!-- End Google Tag Manager -->
@@ -0,0 +1,5 @@
1
+ <!-- Google Tag Manager (noscript) -->
2
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TJ8BFVQ"
3
+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
4
+ <!-- End Google Tag Manager (noscript) -->
5
+
@@ -0,0 +1,5 @@
1
+ <!-- Google Tag Manager (noscript) -->
2
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TBC2FVC"
3
+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
4
+ <!-- End Google Tag Manager (noscript) -->
5
+
@@ -0,0 +1,10 @@
1
+ <!-- Google Tag Manager -->
2
+ <script>
3
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
4
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
5
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
6
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
7
+ })(window,document,'script','dataLayer','GTM-TJ8BFVQ');
8
+ </script>
9
+ <!-- End Google Tag Manager -->
10
+
@@ -0,0 +1,9 @@
1
+ <!-- Google Tag Manager -->
2
+ <script>
3
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
4
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
5
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
6
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
7
+ })(window,document,'script','dataLayer','GTM-TBC2FVC');
8
+ </script>
9
+ <!-- End Google Tag Manager -->
@@ -0,0 +1,5 @@
1
+ <!-- Google Tag Manager (noscript) -->
2
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WPXKC8"
3
+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
4
+ <!-- End Google Tag Manager (noscript) -->
5
+
@@ -0,0 +1,9 @@
1
+ <!-- Google Tag Manager -->
2
+ <script>
3
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
4
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
5
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
6
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
7
+ })(window,document,'script','dataLayer','GTM-WPXKC8');
8
+ </script>
9
+ <!-- End Google Tag Manager -->
@@ -0,0 +1,7 @@
1
+ <script>
2
+ {{ fileInclude 'node_modules/mod-build/src/scripts/vendor/heap-tracking.js' }}
3
+
4
+ {{ fileInclude 'node_modules/mod-build/src/scripts/vendor/heap-vwo.js' }}
5
+
6
+ {{ fileInclude 'node_modules/mod-build/src/scripts/vendor/heap-addeventproperties-identify.js' }}
7
+ </script>
@@ -0,0 +1,4 @@
1
+ <script>
2
+ window.heap=window.heap||[],heap.load=function(e,t){window.heap.appid=e,window.heap.config=t=t||{};var r=t.forceSSL||"https:"===document.location.protocol,a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=(r?"https:":"http:")+"//cdn.heapanalytics.com/js/heap-"+e+".js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n);for(var o=function(e){return function(){heap.push([e].concat(Array.prototype.slice.call(arguments,0)))}},p=["addEventProperties","addUserProperties","clearEventProperties","identify","removeEventProperty","setEventProperties","track","unsetEventProperty"],c=0;c<p.length;c++)heap[p[c]]=o(p[c])};
3
+ heap.load("3246578271");
4
+ </script>
@@ -0,0 +1,9 @@
1
+ <script type="text/javascript">
2
+ (function () {
3
+ var $networkLink = document.getElementById('join-network');
4
+ var pageTrade = ($networkLink.getAttribute('data-trade') ? $networkLink.getAttribute('data-trade').toLowerCase() : "");
5
+ var siteUrl = window.location.hostname + window.location.pathname;
6
+
7
+ $networkLink.href = 'https://modernize.com/pro/register/leads/?trade=' + pageTrade + '&utm_medium=microsites&utm_source=' + siteUrl;
8
+ })();
9
+ </script>
@@ -0,0 +1,5 @@
1
+ <!-- Start Visual Website Optimizer Asynchronous Code -->
2
+ <script>
3
+ {{ fileInclude 'node_modules/mod-build/src/scripts/vendor/visual-website-optimizer.js' }}
4
+ </script>
5
+ <!-- End Visual Website Optimizer Asynchronous Code -->
@@ -0,0 +1,49 @@
1
+ <script>
2
+ {{ fileInclude 'node_modules/mod-build/src/scripts/has-qs-params.js' }}
3
+ {{ fileInclude 'node_modules/mod-build/src/scripts/url-cleaner.js' }}
4
+ {{ fileInclude 'node_modules/mod-build/src/scripts/vendor/visual-website-optimizer.js' }}
5
+
6
+ (function(VWO_HARD_TIMEOUT) {
7
+ window._vwo_evq = window._vwo_evq || [];
8
+ var queue = window._vwo_evq;
9
+ for (var i = 0; i < queue.length; i++) {
10
+ if (queue[i][0] === 'rD') {
11
+ window.willRedirectionOccur = true;
12
+ break;
13
+ }
14
+ }
15
+ var _vwoOldPush = window._vwo_evq.push;
16
+ window._vwo_evq.push = function() {
17
+ var eventData = arguments[0],
18
+ willRedirectionOccur;
19
+ if (eventData[0] === 'rD') {
20
+ willRedirectionOccur = eventData[1];
21
+ // It will be set to true if a redirection is going to be done by VWO.
22
+ window.willRedirectionOccurByVWO = willRedirectionOccur;
23
+ }
24
+ _vwoOldPush.apply(window._vwo_evq, [].slice.call(arguments));
25
+ };
26
+ var hardLimitTimedout = false;
27
+
28
+ function tryNonVWOTracking() {
29
+ if ((window._vwo_code && (window._vwo_code.finished() || window._vwo_code.libExecuted)) || hardLimitTimedout) {
30
+ if (!window.willRedirectionOccurByVWO) {
31
+ clearTimeout(hardLimitTimer);
32
+ try {
33
+ // flag to call Modalytics.initHeapVwo() method in site level js
34
+ window.initHeapVwo = true;
35
+ } catch (e) {}
36
+ return;
37
+ }
38
+ }
39
+ setTimeout(function() {
40
+ tryNonVWOTracking()
41
+ }, 500)
42
+ }
43
+
44
+ var hardLimitTimer = setTimeout(function() {
45
+ hardLimitTimedout = true;
46
+ }, VWO_HARD_TIMEOUT);
47
+ tryNonVWOTracking();
48
+ })(5000 /*MAXIMUM TIME IN SECONDS IN WHICH CODE WILL EXECUTE ANYWAY*/ );
49
+ </script>
@@ -0,0 +1,55 @@
1
+ <footer class="footer">
2
+ <div class="container">
3
+ <div class="footer__head-link">
4
+ {{qsFooterData.contractor.text}}
5
+ <a target="_blank" href="{{qsFooterData.contractor.link}}" rel="noopener noreferrer">
6
+ {{qsFooterData.contractor.linkText}}
7
+ </a>
8
+ </div>
9
+ <ul class="footer__links">
10
+ {{#each qsFooterData.links}}
11
+ <li>
12
+ <a
13
+ {{#xif "!this.modal" }}
14
+ href="{{this.url}}"
15
+ target="_blank"
16
+ rel="noopener noreferrer"
17
+ {{/xif}}
18
+ {{#xif "this.modal" }}
19
+ data-bind="modal-link"
20
+ data-load="/modals{{this.url}}index.html"
21
+ {{/xif}}
22
+ >
23
+ {{{this.name}}}{{#xif 'this.company === true'}}{{#if ../this.companyName}}&nbsp;{{{../this.companyName}}}{{/if}}{{/xif}}
24
+ </a>
25
+ </li>
26
+ {{/each}}
27
+ <!--
28
+ - Define the customFooterLinks array of objects in template.js / siteconfig.js
29
+ - e.g customFooterLinks: [{name: 'Test Link', url: '/test/', modal: true}]
30
+ -->
31
+ {{#if this.customFooterLinks}}
32
+ {{#each this.customFooterLinks}}
33
+ <li>
34
+ <a
35
+ {{#xif "!this.modal" }}
36
+ href="{{this.url}}"
37
+ target="_blank"
38
+ rel="noopener noreferrer"
39
+ {{/xif}}
40
+ {{#xif "this.modal" }}
41
+ data-bind="modal-link"
42
+ data-load="/modals{{this.url}}index.html"
43
+ {{/xif}}
44
+ >
45
+ {{{this.name}}}
46
+ </a>
47
+ </li>
48
+ {{/each}}
49
+ {{/if}}
50
+ </ul>
51
+ <p class="footer__copyright">
52
+ Copyright &copy; {{year}} {{qsFooterData.copyright}}
53
+ </p>
54
+ </div>
55
+ </footer>
@@ -0,0 +1,148 @@
1
+ <div class="footer">
2
+ <div class="container">
3
+ {{#xif "this.hideBbb !== true" }}
4
+ <img src="{{assetsPath}}/images/logos/misc/bbb.svg" alt="BBB Accredited Logo" class="footer__bbb-logo footer__bbb">
5
+ {{/xif}}
6
+ <div class="footer__links contractor-link">
7
+ {{quoteFooterData.contractor.text}}
8
+ <a target="_blank" href="{{quoteFooterData.contractor.link}}" rel="noopener noreferrer">
9
+ {{quoteFooterData.contractor.linkText}}
10
+ </a>
11
+ </div>
12
+ <div class="footer__content">
13
+ {{#xif 'this.copyright === "top"'}}
14
+ <div class="footer__copyright">
15
+ &copy; Copyright {{year}} {{website_name}}.
16
+ {{{quoteFooterData.copyright}}}
17
+ <div class="footer__captcha-disclosure">
18
+ {{quoteFooterData.capchaDisclosure.text}}
19
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
20
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
21
+ </div>
22
+ </div>
23
+ {{/xif}}
24
+ {{#xif "this.privacylinks === 'top'"}}
25
+ <div class="footer__links">
26
+ {{#each quoteFooterData.privacyLinks}}
27
+ <a
28
+ {{#xif "this.modal === true" }}
29
+ href="{{../links.privacy}}"
30
+ data-load="{{#if ../this.variation}}/modals/privacy/index.html{{else}}./modals/privacy/index.html{{/if}}"
31
+ data-bind="modal-link"
32
+ data-anchor="#{{this.anchor}}"
33
+ {{/xif}}
34
+ {{#xif "this.modal === false" }}
35
+ href="{{this.anchor}}"
36
+ target="_blank"
37
+ rel="noopener noreferrer"
38
+ {{/xif}}
39
+ >{{{this.text}}}</a>
40
+ {{/each}}
41
+ <!--
42
+ - Define the customPrivacyLinks array of objects in template.js / siteconfig.js
43
+ - e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
44
+ -->
45
+ {{#if this.customPrivacyLinks}}
46
+ {{#each this.customPrivacyLinks}}
47
+ <a
48
+ {{#xif "this.modal === true" }}
49
+ href="{{../links.privacy}}"
50
+ data-load="{{#if ../this.variation}}/modals/privacy/index.html{{else}}./modals/privacy/index.html{{/if}}"
51
+ data-bind="modal-link"
52
+ data-anchor="#{{this.anchor}}"
53
+ {{/xif}}
54
+ {{#xif "this.modal === false" }}
55
+ href="{{this.anchor}}"
56
+ target="_blank"
57
+ rel="noopener noreferrer"
58
+ {{/xif}}
59
+ >{{{this.text}}}</a>
60
+ {{/each}}
61
+ {{/if}}
62
+ </div>
63
+ {{/xif}}
64
+ {{#xif 'this.copyright === "middle"'}}
65
+ <div class="footer__copyright">
66
+ &copy; Copyright {{year}} {{website_name}}.
67
+ {{{quoteFooterData.copyright}}}
68
+ <div class="footer__captcha-disclosure">
69
+ {{quoteFooterData.capchaDisclosure.text}}
70
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
71
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
72
+ </div>
73
+ </div>
74
+ {{/xif}}
75
+
76
+ <div class="footer__links">
77
+ {{#each quoteFooterData.links}}
78
+ <a href="{{#if this.modal}}/{{this.url}}{{else}}{{this.url}}{{/if}}" {{#xif "this.modal === true" }}
79
+ data-load="{{#if ../this.variation}}/modals/{{this.url}}/index.html{{else}}./modals/{{this.url}}/index.html{{/if}}" data-bind="modal-link"{{/xif}} {{#if this.target}}target="{{this.target}}" {{#xif "this.target === '_blank'"}} rel="noopener noreferrer"{{/xif}} {{/if}}>
80
+ {{{this.text}}}
81
+ </a>
82
+ {{/each}}
83
+ <!--
84
+ - Define the customFooterLinks array of objects in template.js / siteconfig.js
85
+ - e.g customFooterLinks: [{url: '/test', text: 'Test Link'}]
86
+ -->
87
+ {{#if this.customFooterLinks}}
88
+ {{#each this.customFooterLinks}}
89
+ <a href="{{#if this.modal}}/{{this.url}}{{else}}{{this.url}}{{/if}}" {{#xif "this.modal === true" }}data-load="{{#if ../this.variation}}/modals/{{this.url}}/index.html{{else}}./modals/{{this.url}}/index.html{{/if}}" data-bind="modal-link"{{/xif}} {{#if this.target}}target="{{this.target}}" {{#xif "this.target === '_blank'"}} rel="noopener noreferrer"{{/xif}}{{/if}}>{{{this.text}}}</a>
90
+ {{/each}}
91
+ {{/if}}
92
+ </div>
93
+
94
+ {{#xif "this.privacylinks === 'bottom'"}}
95
+ <div class="footer__links">
96
+ {{#each quoteFooterData.privacyLinks}}
97
+ <a
98
+ {{#xif "this.modal === true" }}
99
+ href="{{../links.privacy}}"
100
+ data-load="{{#if ../this.variation}}/modals/privacy/index.html{{else}}./modals/privacy/index.html{{/if}}"
101
+ data-bind="modal-link"
102
+ data-anchor="#{{this.anchor}}"
103
+ {{/xif}}
104
+ {{#xif "this.modal === false" }}
105
+ href="{{this.anchor}}"
106
+ target="_blank"
107
+ rel="noopener noreferrer"
108
+ {{/xif}}
109
+ >{{{this.text}}}</a>
110
+ {{/each}}
111
+ <!--
112
+ - Define the customPrivacyLinks array of objects in template.js / siteconfig.js
113
+ - e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
114
+ -->
115
+ {{#if this.customPrivacyLinks}}
116
+ {{#each this.customPrivacyLinks}}
117
+ <a
118
+ {{#xif "this.modal === true" }}
119
+ href="{{../links.privacy}}"
120
+ data-load="{{#if ../this.variation}}/modals/privacy/index.html{{else}}./modals/privacy/index.html{{/if}}"
121
+ data-bind="modal-link"
122
+ data-anchor="#{{this.anchor}}"
123
+ {{/xif}}
124
+ {{#xif "this.modal === false" }}
125
+ href="{{this.anchor}}"
126
+ target="_blank"
127
+ rel="noopener noreferrer"
128
+ {{/xif}}
129
+ >{{{this.text}}}</a>
130
+ {{/each}}
131
+ {{/if}}
132
+ </div>
133
+ {{/xif}}
134
+
135
+ {{#xif 'this.copyright === "bottom"'}}
136
+ <div class="footer__copyright">
137
+ &copy; Copyright {{year}} {{website_name}}.
138
+ {{{quoteFooterData.copyright}}}
139
+ <div class="footer__captcha-disclosure">
140
+ {{quoteFooterData.capchaDisclosure.text}}
141
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
142
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
143
+ </div>
144
+ </div>
145
+ {{/xif}}
146
+ </div>
147
+ </div>
148
+ </div>
@@ -0,0 +1,169 @@
1
+ <div class="footer container">
2
+ {{#xif "this.hideBbb !== true" }}
3
+ <img src="{{assetsPath}}/images/logos/misc/bbb.svg" alt="BBB Accredited Logo" class="footer__bbb-logo footer__bbb">
4
+ {{/xif}}
5
+ <div class="footer__links contractor-link">
6
+ {{quoteFooterData.contractor.text}}
7
+ <a target="_blank" href="{{quoteFooterData.contractor.link}}" rel="noopener noreferrer">
8
+ {{quoteFooterData.contractor.linkText}}
9
+ </a>
10
+ </div>
11
+ {{#xif 'this.copyright === "top"'}}
12
+ <div class="footer__row">
13
+ <div class="footer__copyright">
14
+ &copy; Copyright {{year}} {{company_name}}. {{{quoteFooterData.copyright}}}
15
+ </div>
16
+ <div class="footer__captcha-disclosure">
17
+ {{quoteFooterData.capchaDisclosure.text}}
18
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
19
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
20
+ </div>
21
+ </div>
22
+ {{/xif}}
23
+ {{#xif "this.privacylinks === 'top'"}}
24
+ <div class="footer__row">
25
+ <ul class="footer__links">
26
+ {{#each quoteFooterData.privacyLinks}}
27
+ <li>
28
+ <a
29
+ {{#xif "this.modal === true" }}
30
+ href="{{../links.privacy}}"
31
+ data-load="{{#if ../this.variation}}/modals/privacy/index.html{{else}}./modals/privacy/index.html{{/if}}"
32
+ data-bind="modal-link"
33
+ data-anchor="#{{this.anchor}}"
34
+ {{/xif}}
35
+ {{#xif "this.modal === false" }}
36
+ href="{{this.anchor}}"
37
+ target="_blank"
38
+ rel="noopener noreferrer"
39
+ {{/xif}}
40
+ >
41
+ {{{this.text}}}
42
+ </a>
43
+ </li>
44
+ {{/each}}
45
+ <!--
46
+ - Define the customPrivacyLinks array of objects in template.js / siteconfig.js
47
+ - e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
48
+ -->
49
+ {{#if this.customPrivacyLinks}}
50
+ {{#each this.customPrivacyLinks}}
51
+ <li>
52
+ <a
53
+ {{#xif "this.modal === true" }}
54
+ href="{{../links.privacy}}"
55
+ data-load="{{#if ../this.variation}}/modals/privacy/index.html{{else}}./modals/privacy/index.html{{/if}}"
56
+ data-bind="modal-link"
57
+ data-anchor="#{{this.anchor}}"
58
+ {{/xif}}
59
+ {{#xif "this.modal === false" }}
60
+ href="{{this.anchor}}"
61
+ target="_blank"
62
+ rel="noopener noreferrer"
63
+ {{/xif}}
64
+ >
65
+ {{{this.text}}}
66
+ </a>
67
+ </li>
68
+ {{/each}}
69
+ {{/if}}
70
+ </ul>
71
+ </div>
72
+ {{/xif}}
73
+ <div class="footer__row">
74
+ <ul class="footer__links">
75
+ {{#each quoteFooterData.links}}
76
+ <li>
77
+ <a href="{{#if this.modal}}/{{this.url}}{{else}}{{this.url}}{{/if}}" {{#xif "this.modal === true" }}
78
+ data-load="{{#if ../this.variation}}/modals/{{this.url}}/index.html{{else}}./modals/{{this.url}}/index.html{{/if}}" data-bind="modal-link"{{/xif}} {{#if this.target}}target="{{this.target}}"{{#xif "this.target === '_blank'"}} rel="noopener noreferrer"{{/xif}}{{/if}}>{{{this.text}}}</a>
79
+ </li>
80
+ {{/each}}
81
+ <!--
82
+ - Define the customFooterLinks array of objects in template.js / siteconfig.js
83
+ - e.g customFooterLinks: [{url: 'test', text: 'Test Link'}]
84
+ -->
85
+ {{#if this.customFooterLinks}}
86
+ {{#each this.customFooterLinks}}
87
+ <li>
88
+ <a href="{{#if this.modal}}/{{this.url}}{{else}}{{this.url}}{{/if}}" {{#xif "this.modal === true" }}
89
+ data-load="{{#if ../this.variation}}/modals/{{this.url}}/index.html{{else}}./modals/{{this.url}}/index.html{{/if}}" data-bind="modal-link"{{/xif}} {{#if this.target}}target="{{this.target}}"{{#xif "this.target === '_blank'"}} rel="noopener noreferrer"{{/xif}}{{/if}}>{{{this.text}}}</a>
90
+ </li>
91
+ {{/each}}
92
+ {{/if}}
93
+ </ul>
94
+ </div>
95
+ {{#xif 'this.copyright === "middle"'}}
96
+ <div class="footer__row">
97
+ <div class="footer__copyright">
98
+ &copy; Copyright {{year}} {{company_name}}. {{{quoteFooterData.copyright}}}
99
+ </div>
100
+ <div class="footer__captcha-disclosure">
101
+ {{quoteFooterData.capchaDisclosure.text}}
102
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
103
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
104
+ </div>
105
+ </div>
106
+ {{/xif}}
107
+ {{#xif "this.privacylinks === 'bottom'"}}
108
+ <div class="footer__row">
109
+ <ul class="footer__links">
110
+ {{#each quoteFooterData.privacyLinks}}
111
+ <li>
112
+ <a
113
+ {{#xif "this.modal === true" }}
114
+ href="{{../links.privacy}}"
115
+ data-load="{{#if ../this.variation}}/modals/privacy/index.html{{else}}./modals/privacy/index.html{{/if}}"
116
+ data-bind="modal-link"
117
+ data-anchor="#{{this.anchor}}"
118
+ {{/xif}}
119
+ {{#xif "this.modal === false" }}
120
+ href="{{this.anchor}}"
121
+ target="_blank"
122
+ rel="noopener noreferrer"
123
+ {{/xif}}
124
+ >
125
+ {{{this.text}}}
126
+ </a>
127
+ </li>
128
+ {{/each}}
129
+ <!--
130
+ - Define the customPrivacyLinks array of objects in template.js / siteconfig.js
131
+ - e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
132
+ -->
133
+ {{#if this.customPrivacyLinks}}
134
+ {{#each this.customPrivacyLinks}}
135
+ <li>
136
+ <a
137
+ {{#xif "this.modal === true" }}
138
+ href="{{../links.privacy}}"
139
+ data-load="{{#if ../this.variation}}/modals/privacy/index.html{{else}}./modals/privacy/index.html{{/if}}"
140
+ data-bind="modal-link"
141
+ data-anchor="#{{this.anchor}}"
142
+ {{/xif}}
143
+ {{#xif "this.modal === false" }}
144
+ href="{{this.anchor}}"
145
+ target="_blank"
146
+ rel="noopener noreferrer"
147
+ {{/xif}}
148
+ >
149
+ {{{this.text}}}
150
+ </a>
151
+ </li>
152
+ {{/each}}
153
+ {{/if}}
154
+ </ul>
155
+ </div>
156
+ {{/xif}}
157
+ {{#xif 'this.copyright === "bottom"'}}
158
+ <div class="footer__row">
159
+ <div class="footer__copyright">
160
+ &copy; Copyright {{year}} {{company_name}}. {{{quoteFooterData.copyright}}}
161
+ </div>
162
+ <div class="footer__captcha-disclosure">
163
+ {{quoteFooterData.capchaDisclosure.text}}
164
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
165
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
166
+ </div>
167
+ </div>
168
+ {{/xif}}
169
+ </div>
@@ -0,0 +1,46 @@
1
+ <!DOCTYPE html>
2
+
3
+ <head lang="en">
4
+ <script>
5
+ </script>
6
+
7
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta name="viewport" content="initial-scale=1.0, width=device-width" />
10
+ <title>modSite</title>
11
+
12
+ <link href="/styles/home.css" rel="stylesheet" type="text/css" />
13
+ </head>
14
+
15
+ <body>
16
+ <h1>
17
+ It works!
18
+ </h1>
19
+
20
+ <form id="form" class="form" novalidate="novalidate">
21
+ <div id="step1" class="step step--active" data-bind="step">
22
+ <input type="tel" name="zip" placeholder="Zip" maxlength="5" />
23
+ </div>
24
+ </form>
25
+
26
+ <!-- build:js /scripts/vendor/jquery.js -->
27
+ <script src="/node_modules/jquery/dist/jquery.js"></script>
28
+ <!-- endbuild -->
29
+
30
+ <!-- build:js /scripts/vendor/jquery.mask.min.js -->
31
+ <script src="/node_modules/jquery-mask-plugin/dist/jquery.mask.min.js"></script>
32
+ <!-- endbuild -->
33
+
34
+ <script src="/scripts/mod-utils.js"></script>
35
+
36
+ <script src="/scripts/mod-form.js"></script>
37
+
38
+ <script src="/scripts/compiled/home.js"></script>
39
+
40
+ <!-- build:js(src) /scripts/es6.js -->
41
+ <script src="/scripts/es6-1.js"></script>
42
+ <script src="/scripts/es6-2.js"></script>
43
+ <!-- endbuild -->
44
+ </body>
45
+
46
+ </html>