PageSourceSearch

https://www.livingwage.org.uk/themes/custom/thelivingwage/assets/scripts/global.js?tm4dx4

js livingwage.org.uk collected 2026-10-01 09:02:57 UTC 22,906 bytes, 540 lines download raw bytes

1"use strict";
2
3(function ($) {
4  $(document).ready(function () {
5    // nav 2025
6    var addHeaderStyleVars = function addHeaderStyleVars() {
7      var header = document.querySelector('.lwf-header');
8      var headerMain = document.querySelector('.lwf-header__main');
9      var headerTopLinks = document.querySelectorAll('.menu__item--expanded');
10
11      // s - m
12      var mq = window.matchMedia("(min-width: 30em) and (max-width: 60em)");
13      if (!mq.matches) {
14        return;
15      }
16
17      // get gap to parent top
18      if (header && headerTopLinks.length) {
19        var navBottom = header.getBoundingClientRect().bottom;
20        // 32 - inner top padding
21        headerTopLinks.forEach(function (link) {
22          link.style.setProperty('--top-gap', Math.floor((link.getBoundingClientRect().top - navBottom) * -1 + 32) + 'px');
23        });
24      }
25      if (headerMain) {
26        // get header height
27        headerMain.style.setProperty('--header-height', Math.floor(headerMain.getBoundingClientRect().height - 32) + 'px');
28      }
29    };
30    var addSubemnuHandler = function addSubemnuHandler() {
31      var submenuLinks = document.querySelectorAll('.menu__item--expanded > a, .menu__item--expanded > span');
32      if (!submenuLinks.length) {
33        return;
34      }
35      submenuLinks.forEach(function (link) {
36        link.addEventListener('click', function (e) {
37          e.preventDefault();
38          link.parentElement.classList.toggle('js-display-submenu');
39        });
40      });
41    };
42    var addBurgerHandler = function addBurgerHandler() {
43      var burgerBtn = document.querySelector('.menu-toggle-btn');
44      var nav = document.querySelector('.lwf-header__main');
45      if (!burgerBtn || !nav) {
46        return;
47      }
48      burgerBtn.addEventListener('click', function (e) {
49        e.preventDefault();
50        burgerBtn.classList.toggle('js-active');
51        nav.classList.toggle('js-nav-visible');
52      });
53    };
54    addBurgerHandler();
55    addSubemnuHandler();
56    addHeaderStyleVars();
57    window.addEventListener("resize", addHeaderStyleVars);
58
59    // Hide Header on on scroll down
60    var didScroll;
61    var lastScrollTop = 0;
62    var delta = 5;
63    var navbarHeight = $('header#navbar').outerHeight();
64    $(window).scroll(function (event) {
65      didScroll = true;
66    });
67    setInterval(function () {
68      if (didScroll) {
69        hasScrolled();
70        didScroll = false;
71      }
72    }, 250);
73    function hasScrolled() {
74      var st = $(this).scrollTop();
75
76      // Make sure they scroll more than delta
77      if (Math.abs(lastScrollTop - st) <= delta) return;
78
79      // If they scrolled down and are past the navbar, add class .nav-up.
80      // This is necessary so you never see what is "behind" the navbar.
81      // if (st > lastScrollTop && st > Math.abs(navbarHeight / 2)){
82      if (st > Math.abs(navbarHeight / 2)) {
83        // Scroll Down
84        $('body').addClass('header-pop');
85        if ($('#toolbar-bar').length > 0) {
86          $('header#navbar').css('margin-top', '32px');
87        }
88      } else if (st < navbarHeight) {
89        $('body').removeClass('header-pop');
90      }
91      lastScrollTop = st;
92    }
93
94    // Page width
95    // if a featured intro is present, add classname 'featured-image' to article.
96    var featuredimage = document.querySelectorAll('.main-container .field--name-field-image');
97    if (featuredimage.length !== 0) {
98      $('article').addClass("featured-image");
99    } else {
100      $('article').addClass("no-featured-image");
101    }
102
103    // Main menu (mobile)
104    $('#superfish-main-toggle').click(function () {
105      if ($(this).hasClass('sf-expanded')) {
106        $(this).children('span').text('Close');
107        $('html').css({
108          'overflow': 'hidden'
109        });
110        $('footer .paragraph--type-social-media-icons').addClass('menu-open');
111        $('.footer.container').addClass('menu-open');
112        $('.field--name-field-footer-links').addClass('menu-open');
113        $('a.logo').addClass('menu-open');
114      } else {
115        $(this).children('span').text('Menu');
116        $('html').css({
117          'overflow': 'initial'
118        });
119        $('footer .paragraph--type-social-media-icons').removeClass('menu-open');
120        $('.footer.container').removeClass('menu-open');
121        $('.field--name-field-footer-links').removeClass('menu-open');
122        $('a.logo').removeClass('menu-open');
123      }
124    });
125    // Main menu (desktop)
126    $('#superfish-new-toggle').click(function () {
127      if ($('#superfish-main').hasClass('open')) {
128        $('#superfish-main').removeClass('open');
129        $(this).removeClass('open');
130        $(this).children('span').text('Menu');
131        $('html').css({
132          'overflow': 'initial'
133        });
134        $('footer .paragraph--type-social-media-icons').removeClass('menu-open');
135        $('.footer.container').removeClass('menu-open');
136        $('.field--name-field-footer-links').removeClass('menu-open');
137        $('a.logo').removeClass('menu-open');
138      } else {
139        $('#superfish-main').addClass('open');
140        $(this).addClass('open');
141        $(this).children('span').text('Close');
142        $('html').css({
143          'overflow': 'hidden'
144        });
145        $('footer .paragraph--type-social-media-icons').addClass('menu-open');
146        $('.footer.container').addClass('menu-open');
147        $('.field--name-field-footer-links').addClass('menu-open');
148        $('a.logo').addClass('menu-open');
149      }
150    });
151    $(document).keyup(function (e) {
152      if (e.keyCode === 27) {
153        if ($('#superfish-new-toggle').hasClass('open')) {
154          $('#superfish-new-toggle').removeClass('open');
155          $('#superfish-main').removeClass('open');
156          $('#superfish-new-toggle').children('span').text('Menu');
157          $('html').css({
158            'overflow': 'initial'
159          });
160          $('footer .paragraph--type-social-media-icons').removeClass('menu-open');
161          $('.footer.container').removeClass('menu-open');
162          $('.field--name-field-footer-links').removeClass('menu-open');
163          $('a.logo').removeClass('menu-open');
164        }
165      }
166    });
167
168    // Employer grid - move total results after filters
169    var gmToggle = $('.grid-map-toggle-block #gm-toggle');
170    $('.view-organisations-employers.view-display-id-block_1 .view-filters').after($('.view-organisations-employers.view-display-id-block_1 .view-header'));
171    $('.view-organisations-employers.view-display-id-block_2 .view-empty').append($('.view-organisations-employers.view-display-id-block_2 .view-header'));
172
173    // Move list and map to correct location on List of Employers page
174    if ($('#block-views-block-organisations-employers-block-1').length > 0) {
175      $('.region-content > article > .content > .field--name-field-page-intro-text').after($('#block-views-block-organisations-employers-block-1'));
176    }
177    if ($('#block-views-block-organisations-employers-block-2').length > 0) {
178      $('.region-content > article > .content > .field--name-field-page-intro-text').after($('#block-views-block-organisations-employers-block-2'));
179      $('#block-views-block-organisations-employers-block-2').addClass('hidden');
180      if ($('.view-id-organisations_employers .views-exposed-form .form--inline #gm-toggle').length < 1) {
181        gmToggle.appendTo($('.view-id-organisations_employers.view-display-id-block_1 .views-exposed-form .form--inline'));
182      }
183    }
184    // Make 'Apply' button truly require input for map to fire
185    $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', true);
186    $('#views-exposed-form-organisations-employers-block-2 .form-item-title input').keydown(function () {
187      if (this.value.length > 0) {
188        $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', false);
189      } else {
190        $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', true);
191      }
192    });
193    $('#views-exposed-form-organisations-employers-block-2 select').on('change', function () {
194      if (this.value != 'All') {
195        $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', false);
196      } else {
197        $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', true);
198      }
199    });
200
201    // Employer grid - pop-up add image
202    $('.emp-logo').each(function () {
203      var img = $(this).children('img').clone();
204      $(this).next().find('.logo').append(img);
205    });
206
207    // List - Map toggle
208    $('.view-id-organisations_employers #gm-toggle a.btn.btn--primary').click(function () {
209      if ($(this).hasClass('active')) {
210        // nothing
211      } else {
212        if ($(this).hasClass('grid')) {
213          gmToggle.appendTo($('.view-id-organisations_employers.view-display-id-block_1 .views-exposed-form .form--inline'));
214          $(this).addClass('active');
215          $(this).next().removeClass('active');
216          $('#block-views-block-organisations-employers-block-1').removeClass('hidden');
217          $('#block-views-block-organisations-employers-block-2').addClass('hidden');
218        } else if ($(this).hasClass('map')) {
219          gmToggle.appendTo($('.view-id-organisations_employers.view-display-id-block_2 .views-exposed-form .form--inline'));
220          $(this).addClass('active');
221          $(this).prev().removeClass('active');
222          $('#block-views-block-organisations-employers-block-2').removeClass('hidden');
223          $('#block-views-block-organisations-employers-block-1').addClass('hidden');
224        }
225      }
226    });
227    var recordType = $('.view-dashboard-content-based-on-sf-record-type.view-display-id-block_1 .record-type').text();
228    $('.view-dashboard-content-based-on-sf-record-type.view-display-id-block_1 .record-type').hide();
229    if (recordType == 'Living Wage - Employers') {
230      $('#block-views-block-dashboard-content-block-4').hide();
231      $('#block-views-block-dashboard-content-block-5').hide();
232    }
233    if (recordType == 'Living Wage - Service Provider') {
234      $('#block-views-block-dashboard-content-block-1').hide();
235      $('#block-views-block-dashboard-content-block-2').hide();
236    }
237
238    // Carousel
239    if ($('.main-container .field--name-field-footer-partner-logo').length > 0) {
240      $('.main-container .field--name-field-footer-partner-logo').slick({
241        arrows: true,
242        infinite: true,
243        speed: 1000,
244        slidesToShow: 5,
245        slidesToScroll: 5,
246        responsive: [{
247          breakpoint: 1399,
248          settings: {
249            slidesToShow: 4,
250            slidesToScroll: 4
251          }
252        }, {
253          breakpoint: 1099,
254          settings: {
255            slidesToShow: 3,
256            slidesToScroll: 3
257          }
258        }, {
259          breakpoint: 767,
260          settings: {
261            slidesToShow: 2,
262            slidesToScroll: 2
263          }
264        }, {
265          breakpoint: 480,
266          settings: {
267            slidesToShow: 1,
268            slidesToScroll: 1
269          }
270        }]
271      });
272    }
273    if ($('#block-ourpartnersfooterblock .field--name-field-footer-partner-logo').length > 0) {
274      $('#block-ourpartnersfooterblock .field--name-field-footer-partner-logo').slick({
275        arrows: true,
276        infinite: true,
277        speed: 2000,
278        autoplay: true,
279        autoplaySpeed: 5000,
280        slidesToShow: 7,
281        slidesToScroll: 7,
282        responsive: [{
283          breakpoint: 1279,
284          settings: {
285            slidesToShow: 5,
286            slidesToScroll: 5
287          }
288        }, {
289          breakpoint: 1023,
290          settings: {
291            slidesToShow: 4,
292            slidesToScroll: 4
293          }
294        }, {
295          breakpoint: 767,
296          settings: {
297            slidesToShow: 3,
298            slidesToScroll: 3
299          }
300        }, {
301          breakpoint: 480,
302          settings: {
303            slidesToShow: 1,
304            slidesToScroll: 1
305          }
306        }]
307      });
308    }
309
310    // Button shortener
311    $('#edit-actions-next').text('Continue');
312    $('#edit-shipping-information-recalculate-shipping').text('Recalculate');
313
314    // Accordion paragraph
315    $('.field--name-field-accordion-section .paragraph--type--accordion').each(function () {
316      $(this).addClass('collapsed');
317      $(this).find('.field--name-field-heading').click(function () {
318        if ($(this).parent().hasClass('collapsed')) {
319          $(this).parent().removeClass('collapsed');
320        } else {
321          $(this).parent().addClass('collapsed');
322        }
323      });
324    });
325
326    // Accordion on dashboard 
327    $('.dashboard .accordion').each(function (i) {
328      $(this).find('h2.block-title').click(function () {
329        if ($(this).parent().hasClass('collapsed')) {
330          $(this).parent().removeClass('collapsed');
331        } else {
332          $(this).parent().addClass('collapsed');
333        }
334      });
335    });
336
337    // Jobs accordion empty fix
338    if ($('.view-jobs .panel-body').text().trim().length == 0) {
339      $('.view-jobs').addClass('hidden');
340    }
341
342    // Webform accordion on .accordion-item pages
343    $('.accordion-item .paragraph--type--webform').each(function (i) {
344      if (i >= 0) {
345        $(this).addClass('collapsed');
346      }
347      $(this).find('h2').click(function () {
348        if ($(this).parent().parent().hasClass('collapsed')) {
349          $(this).parent().parent().removeClass('collapsed');
350        } else {
351          $(this).parent().parent().addClass('collapsed');
352        }
353      });
354    });
355
356    // Hide Search form no results text if form is empty
357    if ($('#search-form').length > 0) {
358      if ($('form#search-form #edit-keys').attr('value').length == 0) {
359        $('form#search-form + h3').hide();
360      }
361    }
362
363    // ID on RSP view
364    $('.view-faq-rsps').parent().parent().parent().parent().prev('.field--item').attr('id', 'rsps');
365    $('.view-faq-living-hours').parent().parent().parent().parent().prev('.field--item').attr('id', 'livinghours');
366
367    // Full width white bg on accredit page - logo carousel and title
368    $('.view-id-partners_join_us_page.view-display-id-block_1').parent().parent().parent().addClass('emp-carousel-wrap');
369
370    // Count up on homepage elements
371
372    var countCurrencyOptions = {
373      duration: 5,
374      decimalPlaces: 2,
375      prefix: '£',
376      startVal: 8
377    };
378    var countE1 = $('#countData1').text();
379    var element1 = new countUp.CountUp('countData1', countE1, countCurrencyOptions);
380    if (!element1.error) {
381      element1.start();
382    } else {
383      console.error(element1.error);
384    }
385    var countE2 = $('#countData2').text();
386    var element2 = new countUp.CountUp('countData2', countE2, countCurrencyOptions);
387    if (!element2.error) {
388      element2.start();
389    } else {
390      console.error(element2.error);
391    }
392    var countIntOptions = {
393      duration: 5,
394      startVal: 300000
395    };
396    var countE3 = $('#countData3').text();
397    var element3 = new countUp.CountUp('countData3', countE3, countIntOptions);
398    if (!element3.error) {
399      element3.start();
400    } else {
401      console.error(element3.error);
402    }
403    var countIntTwoOptions = {
404      duration: 5,
405      startVal: 8000
406    };
407    var countE4 = $('#countData4').text();
408    var element4 = new countUp.CountUp('countData4', countE4, countIntTwoOptions);
409    if (!element4.error) {
410      element4.start();
411    } else {
412      console.error(element4.error);
413    }
414
415    // Add count class to white blocks paragraph instances
416    $('.paragraph--type--white-blocks').each(function () {
417      $(this).addClass('count-' + $(this).find('.field--name-field-add-text-blocks').children().length);
418    });
419
420    // Add count class to white blocks with icons paragraph instances
421    $('.paragraph--type--text-blocks-with-icon').each(function () {
422      $(this).addClass('count-' + $(this).find('.field--name-field-add-blocks').children().length);
423    });
424    $('body.user-reset #edit-submit').text('Save and Log In');
425  });
426  $(document).ajaxComplete(function () {
427    $('.emp-logo').each(function () {
428      var img = $(this).children('img').clone();
429      if ($(this).next().find('.logo').children().length == 0) {
430        $(this).next().find('.logo').append(img);
431      }
432    });
433
434    // Dashboard views visibility
435    var recordType = $('.view-dashboard-content-based-on-sf-record-type.view-display-id-block_1 .record-type').text();
436    $('.view-dashboard-content-based-on-sf-record-type.view-display-id-block_1 .record-type').hide();
437    if (recordType == 'Living Wage - Employers') {
438      $('.view-dashboard-content-based-on-sf-record-type.view-display-id-block_1 .views-field-view-1').hide();
439      $('.view-dashboard-content-based-on-sf-record-type.view-display-id-block_1 .views-field-view-3').hide();
440    }
441    if (recordType == 'Living Wage - Service Providers') {
442      $('.view-dashboard-content-based-on-sf-record-type.view-display-id-block_1 .views-field-view').hide();
443      $('.view-dashboard-content-based-on-sf-record-type.view-display-id-block_1 .views-field-view-2').hide();
444    }
445
446    // Employers grid and map
447    $('.view-organisations-employers.view-display-id-block_1 .view-filters').after($('.view-organisations-employers.view-display-id-block_1 .view-header'));
448    $('.view-organisations-employers.view-display-id-block_2 .view-filters').after($('.view-organisations-employers.view-display-id-block_2 .view-header'));
449    if ($('.view-organisations-employers.view-display-id-block_2 .view-content').length > 0) {
450      $('.view-organisations-employers.view-display-id-block_2 .view-header img').hide();
451    }
452    var gmAjaxToggle = '<div id="gm-toggle"><a class="btn btn--primary grid active">List</a><a class="btn btn--primary map">Map</a></div>';
453    if ($('#block-views-block-organisations-employers-block-1.hidden').length > 0) {
454      if ($('.view-id-organisations_employers .views-exposed-form .form--inline #gm-toggle').length < 1) {
455        $($.parseHTML(gmAjaxToggle)).appendTo($('.view-id-organisations_employers.view-display-id-block_2 .views-exposed-form .form--inline'));
456      }
457      $('.view-id-organisations_employers.view-display-id-block_2 #gm-toggle a.map').addClass('active');
458      $('.view-id-organisations_employers.view-display-id-block_2 #gm-toggle a.grid').removeClass('active');
459    } else {
460      if ($('.view-id-organisations_employers .views-exposed-form .form--inline #gm-toggle').length < 1) {
461        $($.parseHTML(gmAjaxToggle)).appendTo($('.view-id-organisations_employers.view-display-id-block_1 .views-exposed-form .form--inline'));
462      }
463    }
464    $('.view-id-organisations_employers #gm-toggle a.btn.btn--primary').click(function () {
465      if ($(this).hasClass('grid')) {
466        $('.view-id-organisations_employers #gm-toggle').appendTo($('.view-id-organisations_employers.view-display-id-block_1 .views-exposed-form .form--inline'));
467        $(this).addClass('active');
468        $(this).next().removeClass('active');
469        $('#block-views-block-organisations-employers-block-1').removeClass('hidden');
470        $('#block-views-block-organisations-employers-block-2').addClass('hidden');
471      } else if ($(this).hasClass('map')) {
472        $('.view-id-organisations_employers #gm-toggle').appendTo($('.view-id-organisations_employers.view-display-id-block_2 .views-exposed-form .form--inline'));
473        $(this).addClass('active');
474        $(this).prev().removeClass('active');
475        $('#block-views-block-organisations-employers-block-2').removeClass('hidden');
476        $('#block-views-block-organisations-employers-block-1').addClass('hidden');
477      }
478    });
479
480    // Make 'Apply' button truly require input for map to fire
481    $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', true);
482    $('#views-exposed-form-organisations-employers-block-2 .form-item-title input').keydown(function () {
483      if (this.value.length > 0) {
484        $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', false);
485      } else {
486        $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', true);
487      }
488    });
489    $('#views-exposed-form-organisations-employers-block-2 select').on('change', function () {
490      if (this.value != 'All') {
491        $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', false);
492      } else {
493        $('#views-exposed-form-organisations-employers-block-2 button[type="submit"]').attr('disabled', true);
494      }
495    });
496  });
497  $(document).on({
498    ajaxStart: function ajaxStart() {
499      $("body").addClass("loading");
500    },
501    ajaxStop: function ajaxStop() {
502      $("body").removeClass("loading");
503    }
504  });
505  $(window).on('load', function () {
506    // Show page once everything is done loading
507    $('body').css({
508      'opacity': '1',
509      'transition': '0.3s'
510    });
511    $('.countup').css({
512      'font-size': '3rem',
513      'transition': '0.8s'
514    });
515  });
516})(jQuery);
517
518// embedded form assembly iframe code
519var queryString = window.location.search.substring(1);
520window.addEventListener("load", function () {
521  var errorMessage = document.getElementsByClassName('field--name-field-error-message');
522  var errorContact = document.getElementsByClassName('field--name-field-contact-email');
523  if (errorMessage != null && errorMessage[0] != undefined && errorContact != null) {
524    var sourceError = "<div id=\"link-error\"><h3>" + errorMessage[0].innerText + "<br><a href=\"mailto:" + errorContact[0].innerText + "\">" + errorContact[0].innerText + "</a></h3></div>";
525  } else {
526    var sourceError = "<div id=\"link-error\"><h3>It looks like you did not use a personalised link – contact us to get your personalised form link.</h3></div>";
527  }
528  var formPageType = document.getElementsByClassName('node-type-assembly-form');
529  var elem = document.getElementById("formIframeId");
530  var formButtonDiv = document.getElementById("formLink");
531  if (queryString.length !== 0 && elem != null) {
532    var url = document.getElementsByClassName('field--name-field-iframe-source-base-url')["0"].textContent;
533    var formNumber = document.getElementsByClassName('field--name-field-put-the-form-number-here-e')["0"].textContent;
534    var source = "<p class=\"iframe-wrap\"><iframe src=\"" + url + formNumber + "?" + queryString + "\" height=\"100%\" width=\"100%\" style=\"overflow:hidden;height:100%;width:100%\" frameborder=\"0\" id=\"iframeId\" ></iframe><script src=\"//tfaforms.com/js/iframe_resize_helper.js\"></script></p>";
535    elem.innerHTML = source;
536    formButtonDiv.innerHTML = "<div><h3>It looks like you're on a mobile device...</h3></div><br><a class=\"button-style\" target=\"_blank\" href=\"" + url + formNumber + "?" + queryString + "\" >Go to form</a>";
537  } else if (queryString.length === 0 && elem != null) {
538    elem.innerHTML = sourceError;
539  }
540});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.