PageSourceSearch

https://straw-tech.io/assets/js/main.js

js straw-tech.io collected 2026-10-02 00:37:04 UTC 8,785 bytes, 297 lines download raw bytes

1(function ($) {
2 "use strict";
3 
4    // Sidebar header Expand on Mobile/Tablet
5    var expandWrap = $('.sidebar-layout');
6    expandWrap.on('click', '.menu-icon', function(e){
7      expandWrap.toggleClass('expand');
8      e.stopPropagation()
9    });
10    $(document).on('click',function(e){
11      var withoutTA = $('.sidebar-header'); // Without Targeted/That Area
12      if(!withoutTA.is(e.target) && withoutTA.has(e.target).length === 0 ){
13        expandWrap.removeClass('expand');
14      }
15      
16    });
17
18    // STICKY ACTIVE
19    var activeSticky = $('#active-sticky'),
20        winD = $(window);
21      winD.on('scroll',function() {
22        var scroll = $(window).scrollTop(),
23            isSticky = activeSticky;
24        if (scroll < 115) {
25            isSticky.removeClass("is-sticky");
26        }
27        else{
28          isSticky.addClass("is-sticky");
29        }
30     });
31
32    // Accordion Menu
33    var $AccordianMenu = $('#accordianMenu a');
34    $AccordianMenu.on('click',function() {
35        var link = $(this);
36        var closestUl = link.closest("ul");
37        var parallelActiveLinks = closestUl.find(".active")
38        var closestLi = link.closest("li");
39        var linkStatus = closestLi.hasClass("active");
40        var count = 0;
41
42        closestUl.find("ul").slideUp(function() {
43            if (++count == closestUl.find("ul").length)
44                parallelActiveLinks.removeClass("active");
45        });
46
47        if (!linkStatus) {
48            closestLi.children("ul").slideDown();
49            closestLi.addClass("active");
50        }
51    });
52
53    /*
54      RT Progress
55      ================================== */
56      var rtMainElement = $('.rt-progress');
57      rtMainElement.each(function() {
58        var $rtElement = $(this);
59        $rtElement.waypoint(function() {
60
61          // RT Progress bar
62          var progressBar = $(".progress-bar"),
63               progressBarSpan = $('.progress-bar span');
64           progressBar.each(function(){
65            var eachBarWidth = $(this).attr('aria-valuenow');
66              $(this).width(eachBarWidth + '%');
67            });
68            progressBarSpan.addClass('opacity');
69        },
70        {
71          offset: $rtElement.data('rt-offset')
72        });
73      });
74
75
76      // RT Counter Up
77      var rtCountUp = $('.rt-countup');
78      rtCountUp.waypoint(function() {
79        // Count
80        var count = $('.counter');
81        count.each(function () {
82          $(this).prop('Counter',1).animate({
83              Counter: $(this).text()
84          },{
85              duration: 3000,
86              easing: 'swing',
87              step: function (now) {
88                $(this).text(Math.ceil(now));
89              }
90          });
91        });
92        this.destroy();
93      },
94      {
95        offset: rtCountUp.data('rt-offset')
96      });
97
98
99      // Venobox Active
100      var venoPopup = $('.venobox');
101      venoPopup.venobox();
102
103      // Slick Active
104      var twoInOn = $('#two-in-one'),
105          sevenItems = $('#seven-items');
106
107      twoInOn.slick({
108          dots: true,
109          arrows: false,
110          infinite: true,
111          speed: 300
112      });
113      sevenItems.slick({
114          dots: true,
115          arrows: false,
116          infinite: true,
117          speed: 300,
118          slidesToShow: 7,
119          slidesToScroll: 3,
120          responsive: [
121           {
122             breakpoint: 1024,
123             settings: {
124               slidesToShow: 5,
125               slidesToScroll: 3
126             }
127           },
128           {
129             breakpoint: 600,
130             settings: {
131               slidesToShow: 3,
132               slidesToScroll: 2
133             }
134           },
135           {
136             breakpoint: 480,
137             settings: {
138               slidesToShow: 3,
139               slidesToScroll: 3
140             }
141           }
142          ]
143       });
144      
145    // Scroll UP
146    $.scrollUp({
147        scrollText: '<i class="ti-angle-up"></i>', // Text for element, can contain HTML
148        scrollSpeed: 800
149    });
150     
151      /*
152      MAIL CHIMP AJAX ACTIVE
153      ======================*/
154      var mCForm = $('#mc-form');
155      mCForm.ajaxChimp({
156        callback: mailchimpCallback,
157        //Replace this with your own mailchimp post URL. Don't remove the "". Just paste the url inside "".
158        url: "http://regaltheme.us16.list-manage.com/subscribe/post?u=9779a0e5298ed51ec0ff0a92b&amp;id=5466926a9f"
159      });
160      function mailchimpCallback(resp) {
161        if (resp.result === 'success') {
162          alert(resp.msg);
163
164        } else if(resp.result === 'error') {
165          alert(resp.msg);
166        }
167        return false;
168      }
169
170     /*
171     CONTACT FORM VALIDATIONS SETTINGS
172     ========================================*/
173     var CTForm = $('#contactForm');
174      if ($('#contactForm').length) {
175        CTForm.validate({
176          onfocusout: false,
177          onkeyup: false,
178          rules: {
179            name: "required",
180            email: {
181              required: true,
182              email: true
183            }
184          },
185          errorPlacement: function(error, element) {
186            error.insertBefore(element);
187          },
188          messages: {
189            name: "What's your name?",
190            email: {
191              required: "What's your email?",
192              email: "Please, enter a valid email"
193            }
194          },
195                
196          highlight: function(element) {
197            $(element)
198            .text('').addClass('error')
199          },                    
200                
201          success: function(element) {
202            element
203            .text('').addClass('valid')
204          }
205        });
206      } 
207
208     /*
209     CONTACT FORM SCRIPT
210     ========================================*/
211     if ($('#contactSubmit').length) {
212      var CTSubmit = $('#contactSubmit');
213      CTForm.submit(function() {
214        // submit the form
215        if($(this).valid()){
216           CTSubmit.button('loading'); 
217          var action = $(this).attr('action');
218          $.ajax({
219            url: action,
220            type: 'POST',
221            data: {
222              contactname: $('#name').val(),
223              contactemail: $('#email').val(),
224              contactmessage: $('#message').val()
225            },
226            success: function() {
227               CTSubmit.button('reset');
228               CTSubmit.button('complete');
229            },
230            error: function() {
231              CTSubmit.button('reset');
232              CTSubmit.button('error');
233            }
234          });
235        // return false to prevent normal browser submit and page navigation 
236        } else {
237          CTSubmit.button('reset')
238        }
239        return false; 
240      });
241     }
242
243     /*
244      WINDOW LOAD FUNCTIONS
245      ================================== */
246      var WinD = $(window);
247         WinD.on('load', function() {
248             // Preloader
249             var preeLoad = $('#loading-wrap');
250             preeLoad.fadeOut(1000);
251
252
253            /* Isotope Settings */
254            var fitRowGrid = $('#fitRows-grid'),
255                masonryGrid = $('#masonry-grid'),
256                filterMenu = $('#filter-menu');
257
258             // FITROWS GRID
259           		if (fitRowGrid.length) {
260           		 fitRowGrid.isotope({
261           			 itemSelector: '.grid-item',
262           			 // layout mode options
263           			 layoutMode: 'fitRows'
264           		 });
265           		}
266             // MASONRY GRID
267           		if (masonryGrid.length) {
268           		 masonryGrid.isotope({
269           			itemSelector: '.grid-item',
270           			// layout mode options
271           			layoutMode: 'masonry',
272           			masonryHorizontal: {
273           				   rowHeight: 100
274           			  }
275           		 });
276           		}
277             // filter items on button click
278              filterMenu.on( 'click', 'ul li', function() {
279                var filterValue = $(this).attr('data-filter');
280                fitRowGrid.add(masonryGrid).isotope({ filter: filterValue });
281              });
282              // change is-active class on buttons
283              filterMenu.each( function( i, filterFunction ) {
284                var $filterActive = $( filterFunction );
285                $filterActive.on( 'click', 'ul li', function() {
286                  $filterActive.find('.is-active').removeClass('is-active');
287                  $(this).addClass('is-active');
288                });
289              });
290
291         });
292
293    // Copy Right Year Update
294    $("#currentYear").text( (new Date).getFullYear() );
295
296
297})(jQuery);

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.