1/*! HugoçWebStackä¸»é¢ - v2.0.0 2* https://github.com/iplaycode/webstack-hugo/ */ 3var public_vars = public_vars || {}; 4jQuery.extend(public_vars, { 5 breakpoints: { 6 largescreen: [991, -1], 7 tabletscreen: [768, 990], 8 devicescreen: [420, 767], 9 sdevicescreen: [0, 419] 10 }, 11 lastBreakpoint: null 12}); 13/* Main Function that will be called each time when the screen breakpoint changes */ 14function resizable(breakpoint) 15{ 16 var sb_with_animation; 17 // Large Screen Specific Script 18 if(is('largescreen')) 19 { 20 } 21 // Tablet or larger screen 22 if(ismdxl()) 23 { 24 } 25 // Tablet Screen Specific Script 26 if(is('tabletscreen')) 27 { 28 } 29 // Tablet device screen 30 if(is('tabletscreen')) 31 { 32 public_vars.$sidebarMenu.addClass('collapsed'); 33 ps_destroy(); 34 } 35 // Tablet Screen Specific Script 36 if(isxs()) 37 { 38 } 39 // Trigger Event 40 jQuery(window).trigger('xenon.resize'); 41} 42// Get current breakpoint 43function get_current_breakpoint() 44{ 45 var width = jQuery(window).width(), 46 breakpoints = public_vars.breakpoints; 47 for(var breakpont_label in breakpoints) 48 { 49 var bp_arr = breakpoints[breakpont_label], 50 min = bp_arr[0], 51 max = bp_arr[1]; 52 if(max == -1) 53 max = width; 54 if(min <= width && max >= width) 55 { 56 return breakpont_label; 57 } 58 } 59 return null; 60} 61// Check current screen breakpoint 62function is(screen_label) 63{ 64 return get_current_breakpoint() == screen_label; 65} 66// Is xs device 67function isxs() 68{ 69 return is('devicescreen') || is('sdevicescreen'); 70} 71// Is md or xl 72function ismdxl() 73{ 74 return is('tabletscreen') || is('largescreen'); 75} 76// Trigger Resizable Function 77function trigger_resizable() 78{ 79 if(public_vars.lastBreakpoint != get_current_breakpoint()) 80 { 81 public_vars.lastBreakpoint = get_current_breakpoint(); 82 resizable(public_vars.lastBreakpoint); 83 } 84 // Trigger Event (Repeated) 85 jQuery(window).trigger('xenon.resized'); 86} 87 88;(function($, window, undefined) 89{ 90 "use strict"; 91 $(document).ready(function() 92 { 93 // Chat Toggler 94 $('a[data-toggle="chat"]').each(function(i, el) 95 { 96 $(el).on('click', function(ev) 97 { 98 ev.preventDefault(); 99 public_vars.$body.toggleClass('chat-open'); 100 if($.isFunction($.fn.perfectScrollbar)) 101 { 102 setTimeout(function() 103 { 104 public_vars.$chat.find('.chat_inner').perfectScrollbar('update'); 105 $(window).trigger('xenon.resize'); 106 }, 1); 107 } 108 }); 109 }); 110 // Settings Pane Toggler 111 $('a[data-toggle="settings-pane"]').each(function(i, el) 112 { 113 $(el).on('click', function(ev) 114 { 115 ev.preventDefault(); 116 var use_animation = attrDefault($(el), 'animate', false) && ! isxs(); 117 var scroll = { 118 top: $(document).scrollTop(), 119 toTop: 0 120 }; 121 if(public_vars.$body.hasClass('settings-pane-open')) 122 { 123 scroll.toTop = scroll.top; 124 } 125 TweenMax.to(scroll, (use_animation ? .1 : 0), {top: scroll.toTop, roundProps: ['top'], ease: scroll.toTop < 10 ? null : Sine.easeOut, onUpdate: function() 126 { 127 $(window).scrollTop( scroll.top ); 128 }, 129 onComplete: function() 130 { 131 if(use_animation) 132 { 133 // With Animation 134 public_vars.$settingsPaneIn.addClass('with-animation'); 135 // Opening 136 if( ! public_vars.$settingsPane.is(':visible')) 137 { 138 public_vars.$body.addClass('settings-pane-open'); 139 var height = public_vars.$settingsPane.outerHeight(true); 140 public_vars.$settingsPane.css({ 141 height: 0 142 }); 143 TweenMax.to(public_vars.$settingsPane, .25, {css: {height: height}, ease: Circ.easeInOut, onComplete: function() 144 { 145 public_vars.$settingsPane.css({height: ''}); 146 }}); 147 public_vars.$settingsPaneIn.addClass('visible'); 148 } 149 // Closing 150 else 151 { 152 public_vars.$settingsPaneIn.addClass('closing'); 153 TweenMax.to(public_vars.$settingsPane, .25, {css: {height: 0}, delay: .15, ease: Power1.easeInOut, onComplete: function() 154 { 155 public_vars.$body.removeClass('settings-pane-open'); 156 public_vars.$settingsPane.css({height: ''}); 157 public_vars.$settingsPaneIn.removeClass('closing visible'); 158 }}); 159 } 160 } 161 else 162 { 163 // Without Animation 164 public_vars.$body.toggleClass('settings-pane-open'); 165 public_vars.$settingsPaneIn.removeClass('visible'); 166 public_vars.$settingsPaneIn.removeClass('with-animation'); 167 } 168 } 169 }); 170 }); 171 }); 172 // Sidebar Toggle 173 $('a[data-toggle="sidebar"]').each(function(i, el) 174 { 175 $(el).on('click', function(ev) 176 { 177 ev.preventDefault(); 178 if(public_vars.$sidebarMenu.hasClass('collapsed')) 179 { 180 public_vars.$sidebarMenu.removeClass('collapsed'); 181 ps_init(); 182 } 183 else 184 { 185 public_vars.$sidebarMenu.addClass('collapsed'); 186 ps_destroy(); 187 } 188 $(window).trigger('xenon.resize'); 189 }); 190 }); 191 // Mobile Menu Trigger 192 $('a[data-toggle="mobile-menu"]').on('click', function(ev) 193 { 194 ev.preventDefault(); 195 public_vars.$mainMenu.add(public_vars.$sidebarProfile).toggleClass('mobile-is-visible'); 196 if($("#main-menu").hasClass('mobile-is-visible') === true){ 197 public_vars.$sidebarMenu.removeClass('collapsed'); 198 $(".sidebar-menu-inner").css("max-height",window.innerHeight); 199 ps_init(); 200 } 201 else{ 202 ps_destroy(); 203 } 204 }); 205 // Mobile Menu Trigger for Horizontal Menu 206 $('a[data-toggle="mobile-menu-horizontal"]').on('click', function(ev) 207 { 208 ev.preventDefault(); 209 public_vars.$horizontalMenu.toggleClass('mobile-is-visible'); 210 }); 211 // Mobile Menu Trigger for Sidebar & Horizontal Menu 212 $('a[data-toggle="mobile-menu-both"]').on('click', function(ev) 213 { 214 ev.preventDefault(); 215 public_vars.$mainMenu.toggleClass('mobile-is-visible both-menus-visible'); 216 public_vars.$horizontalMenu.toggleClass('mobile-is-visible both-menus-visible'); 217 }); 218 // Mobile User Info Menu Trigger 219 $('a[data-toggle="user-info-menu"]').on('click', function(ev) 220 { 221 ev.preventDefault(); 222 public_vars.$userInfoMenu.toggleClass('mobile-is-visible'); 223 }); 224 // Mobile User Info Menu Trigger for Horizontal Menu 225 $('a[data-toggle="user-info-menu-horizontal"]').on('click', function(ev) 226 { 227 ev.preventDefault(); 228 public_vars.$userInfoMenuHor.find('.nav.nav-userinfo').toggleClass('mobile-is-visible'); 229 }); 230 // Panel Close 231 $('body').on('click', '.panel a[data-toggle="remove"]', function(ev) 232 { 233 ev.preventDefault(); 234 var $panel = $(this).closest('.panel'), 235 $panel_parent = $panel.parent(); 236 $panel.remove(); 237 if($panel_parent.children().length == 0) 238 { 239 $panel_parent.remove(); 240 } 241 }); 242 // Panel Reload 243 $('body').on('click', '.panel a[data-toggle="reload"]', function(ev) 244 { 245 ev.preventDefault(); 246 var $panel = $(this).closest('.panel'); 247 // This is just a simulation, nothing is going to be reloaded 248 $panel.append('<div class="panel-disabled"><div class="loader-1"></div></div>'); 249 var $pd = $panel.find('.panel-disabled'); 250 setTimeout(function() 251 { 252 $pd.fadeOut('fast', function() 253 { 254 $pd.remove(); 255 }); 256 }, 500 + 300 * (Math.random() * 5)); 257 }); 258 // Panel Expand/Collapse Toggle 259 $('body').on('click', '.panel a[data-toggle="panel"]', function(ev) 260 { 261 ev.preventDefault(); 262 var $panel = $(this).closest('.panel'); 263 $panel.toggleClass('collapsed'); 264 }); 265 // Loading Text toggle 266 $('[data-loading-text]').each(function(i, el) // Temporary for demo purpose only 267 { 268 var $this = $(el); 269 $this.on('click', function(ev) 270 { 271 $this.button('loading'); 272 setTimeout(function(){ $this.button('reset'); }, 1800); 273 }); 274 }); 275 // Popovers and tooltips 276 $('[data-toggle="popover"]').each(function(i, el) 277 { 278 var $this = $(el), 279 placement = attrDefault($this, 'placement', 'right'), 280 trigger = attrDefault($this, 'trigger', 'click'), 281 popover_class = $this.get(0).className.match(/(popover-[a-z0-9]+)/i); 282 $this.popover({ 283 placement: placement, 284 trigger: trigger 285 }); 286 if(popover_class) 287 { 288 $this.removeClass(popover_class[1]); 289 $this.on('show.bs.popover', function(ev) 290 { 291 setTimeout(function() 292 { 293 var $popover = $this.next(); 294 $popover.addClass(popover_class[1]); 295 }, 0); 296 }); 297 } 298 }); 299 $('[data-toggle="tooltip"]').each(function(i, el) 300 { 301 var $this = $(el), 302 placement = attrDefault($this, 'placement', 'top'), 303 trigger = attrDefault($this, 'trigger', 'hover'), 304 tooltip_class = $this.get(0).className.match(/(tooltip-[a-z0-9]+)/i); 305 $this.tooltip({ 306 placement: placement, 307 trigger: trigger 308 }); 309 if(tooltip_class) 310 { 311 $this.removeClass(tooltip_class[1]); 312 $this.on('show.bs.tooltip', function(ev) 313 { 314 setTimeout(function() 315 { 316 var $tooltip = $this.next(); 317 $tooltip.addClass(tooltip_class[1]); 318 }, 0); 319 }); 320 } 321 }); 322 }); 323})(jQuery, window); 324 325/** 326 * Xenon Main 327 * 328 **/ 329var public_vars = public_vars || {}; 330;(function($, window, undefined){ 331 "use strict"; 332 $(document).ready(function() 333 { 334 // Main Vars 335 public_vars.$body = $("body");
336 public_vars.$pageContainer = public_vars.$body.find(".page-container"); 337 public_vars.$chat = public_vars.$pageContainer.find("#chat"); 338 public_vars.$sidebarMenu = public_vars.$pageContainer.find('.sidebar-menu'); 339 public_vars.$sidebarProfile = public_vars.$sidebarMenu.find('.sidebar-user-info'); 340 public_vars.$mainMenu = public_vars.$sidebarMenu.find('.main-menu'); 341 public_vars.$horizontalNavbar = public_vars.$body.find('.navbar.horizontal-menu'); 342 public_vars.$horizontalMenu = public_vars.$horizontalNavbar.find('.navbar-nav'); 343 public_vars.$mainContent = public_vars.$pageContainer.find('.main-content'); 344 public_vars.$mainFooter = public_vars.$body.find('footer.main-footer'); 345 public_vars.$userInfoMenuHor = public_vars.$body.find('.navbar.horizontal-menu'); 346 public_vars.$userInfoMenu = public_vars.$body.find('nav.navbar.user-info-navbar'); 347 public_vars.$settingsPane = public_vars.$body.find('.settings-pane'); 348 public_vars.$settingsPaneIn = public_vars.$settingsPane.find('.settings-pane-inner'); 349 public_vars.wheelPropagation = true; // used in Main menu (sidebar) 350 public_vars.$pageLoadingOverlay = public_vars.$body.find('.page-loading-overlay'); 351 public_vars.defaultColorsPalette = ['#68b828','#7c38bc','#0e62c7','#fcd036','#4fcdfc','#00b19d','#ff6264','#f7aa47']; 352 // Setup Sidebar Menu 353 setup_sidebar_menu(); 354 // Setup Horizontal Menu 355 setup_horizontal_menu(); 356 // Sticky Footer 357 if(public_vars.$mainFooter.hasClass('sticky')) 358 { 359 stickFooterToBottom(); 360 $(window).on('xenon.resized', stickFooterToBottom); 361 } 362 // Perfect Scrollbar 363 if($.isFunction($.fn.perfectScrollbar)) 364 { 365 if(public_vars.$sidebarMenu.hasClass('fixed')) 366 ps_init(); 367 $(".ps-scrollbar").each(function(i, el) 368 { 369 var $el = $(el); 370 if($el.hasClass('ps-scroll-down')) 371 { 372 $el.scrollTop($el.prop('scrollHeight')); 373 } 374 $el.perfectScrollbar({ 375 wheelPropagation: false 376 }); 377 }); 378 // Chat Scrollbar 379 var $chat_inner = public_vars.$pageContainer.find('#chat .chat-inner'); 380 if($chat_inner.parent().hasClass('fixed')) 381 $chat_inner.css({maxHeight: $(window).height()}).perfectScrollbar(); 382 // User info opening dropdown trigger PS update 383 $(".dropdown:has(.ps-scrollbar)").each(function(i, el) 384 { 385 var $scrollbar = $(this).find('.ps-scrollbar'); 386 $(this).on('click', '[data-toggle="dropdown"]', function(ev) 387 { 388 ev.preventDefault(); 389 setTimeout(function() 390 { 391 $scrollbar.perfectScrollbar('update'); 392 }, 1); 393 }); 394 }); 395 // Scrollable 396 $("div.scrollable").each(function(i, el) 397 { 398 var $this = $(el), 399 max_height = parseInt(attrDefault($this, 'max-height', 200), 10); 400 max_height = max_height < 0 ? 200 : max_height; 401 $this.css({maxHeight: max_height}).perfectScrollbar({ 402 wheelPropagation: true 403 }); 404 }); 405 } 406 // Go to top links 407 $('body').on('click', 'a[rel="go-top"]', function(ev) 408 { 409 ev.preventDefault(); 410 var obj = {pos: $(window).scrollTop()}; 411 TweenLite.to(obj, .3, {pos: 0, ease:Power4.easeOut, onUpdate: function() 412 { 413 $(window).scrollTop(obj.pos); 414 }}); 415 }); 416 // Auto hidden breadcrumbs 417 $(".breadcrumb.auto-hidden").each(function(i, el) 418 { 419 var $bc = $(el), 420 $as = $bc.find('li a'), 421 collapsed_width = $as.width(), 422 expanded_width = 0; 423 $as.each(function(i, el) 424 { 425 var $a = $(el); 426 expanded_width = $a.outerWidth(true) + 5; 427 $a.addClass('collapsed').width(expanded_width); 428 $a.hover(function() 429 { 430 $a.removeClass('collapsed'); 431 }, 432 function() 433 { 434 $a.addClass('collapsed'); 435 }); 436 }); 437 }); 438 }); 439 // Enable/Disable Resizable Event 440 var wid = 0; 441 $(window).resize(function() { 442 clearTimeout(wid); 443 wid = setTimeout(trigger_resizable, 200); 444 }); 445})(jQuery, window); 446// Sideber Menu Setup function 447var sm_duration = .2, 448 sm_transition_delay = 150; 449function setup_sidebar_menu() 450{ 451 if(public_vars.$sidebarMenu.length) 452 { 453 var $items_with_subs = public_vars.$sidebarMenu.find('li:has(> ul)'), 454 toggle_others = public_vars.$sidebarMenu.hasClass('toggle-others'); 455 $items_with_subs.filter('.active').addClass('expanded'); 456 // On larger screens collapse sidebar when the window is tablet screen 457 if(is('largescreen') && public_vars.$sidebarMenu.hasClass('collapsed') == false) 458 { 459 $(window).on('resize', function() 460 { 461 if(is('tabletscreen')) 462 { 463 public_vars.$sidebarMenu.addClass('collapsed'); 464 ps_destroy(); 465 } 466 else 467 if(is('largescreen')) 468 { 469 public_vars.$sidebarMenu.removeClass('collapsed'); 470 ps_init(); 471 } 472 }); 473 } 474 $items_with_subs.each(function(i, el) 475 { 476 var $li = jQuery(el), 477 $a = $li.children('a'), 478 $sub = $li.children('ul'); 479 $li.addClass('has-sub'); 480 $a.on('click', function(ev) 481 { 482 ev.preventDefault(); 483 if(toggle_others) 484 { 485 sidebar_menu_close_items_siblings($li); 486 } 487 if($li.hasClass('expanded') || $li.hasClass('opened')) 488 sidebar_menu_item_collapse($li, $sub); 489 else 490 sidebar_menu_item_expand($li, $sub); 491 }); 492 }); 493 } 494} 495function sidebar_menu_item_expand($li, $sub) 496{ 497 /* ä¿®å¤å·¦ä¾§æ ä¸å±å¼æ¶ç¹å»å¾æ æ¾ç¤ºå¼å¸¸ - shenweiyan.2022.09.30 - start 498 if($li.data('is-busy') || ($li.parent('.main-menu').length && public_vars.$sidebarMenu.hasClass('collapsed'))) 499 return; 500 $li.addClass('expanded').data('is-busy', true); 501 $sub.show(); 502 var $sub_items = $sub.children(), 503 sub_height = $sub.outerHeight(), 504 win_y = jQuery(window).height(), 505 total_height = $li.outerHeight(), 506 current_y = public_vars.$sidebarMenu.scrollTop(),
507 item_max_y = $li.position().top + current_y, 508 fit_to_viewpport = public_vars.$sidebarMenu.hasClass('fit-in-viewport'); 509 $sub_items.addClass('is-hidden'); 510 $sub.height(0); 511 TweenMax.to($sub, sm_duration, {css: {height: sub_height}, onUpdate: ps_update, onComplete: function(){ 512 $sub.height(''); 513 }}); 514 var interval_1 = $li.data('sub_i_1'), 515 interval_2 = $li.data('sub_i_2'); 516 window.clearTimeout(interval_1); 517 interval_1 = setTimeout(function() 518 { 519 $sub_items.each(function(i, el) 520 { 521 var $sub_item = jQuery(el); 522 $sub_item.addClass('is-shown'); 523 }); 524 var finish_on = sm_transition_delay * $sub_items.length, 525 t_duration = parseFloat($sub_items.eq(0).css('transition-duration')), 526 t_delay = parseFloat($sub_items.last().css('transition-delay')); 527 if(t_duration && t_delay) 528 { 529 finish_on = (t_duration + t_delay) * 1000; 530 } 531 // In the end 532 window.clearTimeout(interval_2); 533 interval_2 = setTimeout(function() 534 { 535 $sub_items.removeClass('is-hidden is-shown'); 536 }, finish_on); 537 $li.data('is-busy', false); 538 }, 0); 539 $li.data('sub_i_1', interval_1), 540 $li.data('sub_i_2', interval_2); 541 // ä¿®å¤å·¦ä¾§æ ä¸å±å¼æ¶ç¹å»å¾æ æ¾ç¤ºå¼å¸¸ - shenweiyan.2022.09.30 - end 542 */ 543} 544function sidebar_menu_item_collapse($li, $sub) 545{ 546 if($li.data('is-busy')) 547 return; 548 var $sub_items = $sub.children(); 549 $li.removeClass('expanded').data('is-busy', true); 550 $sub_items.addClass('hidden-item'); 551 TweenMax.to($sub, sm_duration, {css: {height: 0}, onUpdate: ps_update, onComplete: function() 552 { 553 $li.data('is-busy', false).removeClass('opened'); 554 $sub.attr('style', '').hide(); 555 $sub_items.removeClass('hidden-item'); 556 $li.find('li.expanded ul').attr('style', '').hide().parent().removeClass('expanded'); 557 ps_update(true); 558 }}); 559} 560function sidebar_menu_close_items_siblings($li) 561{ 562 $li.siblings().not($li).filter('.expanded, .opened').each(function(i, el) 563 { 564 var $_li = jQuery(el), 565 $_sub = $_li.children('ul'); 566 sidebar_menu_item_collapse($_li, $_sub); 567 }); 568} 569// Horizontal Menu 570function setup_horizontal_menu() 571{ 572 if(public_vars.$horizontalMenu.length) 573 { 574 var $items_with_subs = public_vars.$horizontalMenu.find('li:has(> ul)'), 575 click_to_expand = public_vars.$horizontalMenu.hasClass('click-to-expand'); 576 if(click_to_expand) 577 { 578 public_vars.$mainContent.add( public_vars.$sidebarMenu ).on('click', function(ev) 579 { 580 $items_with_subs.removeClass('hover'); 581 }); 582 } 583 $items_with_subs.each(function(i, el) 584 { 585 var $li = jQuery(el), 586 $a = $li.children('a'), 587 $sub = $li.children('ul'), 588 is_root_element = $li.parent().is('.navbar-nav'); 589 $li.addClass('has-sub'); 590 // Mobile Only 591 $a.on('click', function(ev) 592 { 593 if(isxs()) 594 { 595 ev.preventDefault(); 596 // Automatically will toggle other menu items in mobile view 597 if(true) 598 { 599 sidebar_menu_close_items_siblings($li); 600 } 601 if($li.hasClass('expanded') || $li.hasClass('opened')) 602 sidebar_menu_item_collapse($li, $sub); 603 else 604 sidebar_menu_item_expand($li, $sub); 605 } 606 }); 607 // Click To Expand 608 if(click_to_expand) 609 { 610 $a.on('click', function(ev) 611 { 612 ev.preventDefault(); 613 if(isxs()) 614 return; 615 // For parents only 616 if(is_root_element) 617 { 618 $items_with_subs.filter(function(i, el){ return jQuery(el).parent().is('.navbar-nav'); }).not($li).removeClass('hover'); 619 $li.toggleClass('hover'); 620 } 621 // Sub menus 622 else 623 { 624 var sub_height; 625 // To Expand 626 if($li.hasClass('expanded') == false) 627 { 628 $li.addClass('expanded'); 629 $sub.addClass('is-visible'); 630 sub_height = $sub.outerHeight(); 631 $sub.height(0); 632 TweenLite.to($sub, .15, {css: {height: sub_height}, ease: Sine.easeInOut, onComplete: function(){ $sub.attr('style', ''); }}); 633 // Hide Existing in the list 634 $li.siblings().find('> ul.is-visible').not($sub).each(function(i, el) 635 { 636 var $el = jQuery(el); 637 sub_height = $el.outerHeight(); 638 $el.removeClass('is-visible').height(sub_height); 639 $el.parent().removeClass('expanded'); 640 TweenLite.to($el, .15, {css: {height: 0}, onComplete: function(){ $el.attr('style', ''); }}); 641 }); 642 } 643 // To Collapse 644 else 645 { 646 sub_height = $sub.outerHeight(); 647 $li.removeClass('expanded'); 648 $sub.removeClass('is-visible').height(sub_height); 649 TweenLite.to($sub, .15, {css: {height: 0}, onComplete: function(){ $sub.attr('style', ''); }}); 650 } 651 } 652 }); 653 } 654 // Hover To Expand 655 else 656 {
657 $li.hoverIntent({ 658 over: function() 659 { 660 if(isxs()) 661 return; 662 if(is_root_element) 663 { 664 $li.addClass('hover'); 665 } 666 else 667 { 668 $sub.addClass('is-visible'); 669 sub_height = $sub.outerHeight(); 670 $sub.height(0); 671 TweenLite.to($sub, .25, {css: {height: sub_height}, ease: Sine.easeInOut, onComplete: function(){ $sub.attr('style', ''); }}); 672 } 673 }, 674 out: function() 675 { 676 if(isxs()) 677 return; 678 if(is_root_element) 679 { 680 $li.removeClass('hover'); 681 } 682 else 683 { 684 sub_height = $sub.outerHeight(); 685 $li.removeClass('expanded'); 686 $sub.removeClass('is-visible').height(sub_height); 687 TweenLite.to($sub, .25, {css: {height: 0}, onComplete: function(){ $sub.attr('style', ''); }}); 688 } 689 }, 690 timeout: 200, 691 interval: is_root_element ? 10 : 100 692 }); 693 } 694 }); 695 } 696} 697function stickFooterToBottom() 698{ 699 public_vars.$mainFooter.add( public_vars.$mainContent ).add( public_vars.$sidebarMenu ).attr('style', ''); 700 if(isxs()) 701 return false; 702 if(public_vars.$mainFooter.hasClass('sticky')) 703 { 704 var win_height = jQuery(window).height(), 705 footer_height = public_vars.$mainFooter.outerHeight(true), 706 main_content_height = public_vars.$mainFooter.position().top + footer_height, 707 main_content_height_only = main_content_height - footer_height, 708 extra_height = public_vars.$horizontalNavbar.outerHeight(); 709 if(win_height > main_content_height - parseInt(public_vars.$mainFooter.css('marginTop'), 10)) 710 { 711 public_vars.$mainFooter.css({ 712 marginTop: win_height - main_content_height - extra_height 713 }); 714 } 715 } 716} 717// Perfect scroll bar functions by Arlind Nushi 718function ps_update(destroy_init) 719{ 720 //if(isxs()) 721 // return; 722 if(jQuery.isFunction(jQuery.fn.perfectScrollbar)) 723 { 724 if(public_vars.$sidebarMenu.hasClass('collapsed')) 725 { 726 return; 727 } 728 public_vars.$sidebarMenu.find('.sidebar-menu-inner').perfectScrollbar('update'); 729 if(destroy_init) 730 { 731 ps_destroy(); 732 ps_init(); 733 } 734 } 735} 736function ps_init() 737{ 738 //if(isxs()) 739 // return; 740 if(jQuery.isFunction(jQuery.fn.perfectScrollbar)) 741 { 742 if(public_vars.$sidebarMenu.hasClass('collapsed') || ! public_vars.$sidebarMenu.hasClass('fixed')) 743 { 744 return; 745 } 746 public_vars.$sidebarMenu.find('.sidebar-menu-inner').perfectScrollbar({ 747 wheelSpeed: 1, 748 wheelPropagation: public_vars.wheelPropagation 749 }); 750 } 751} 752function ps_destroy() 753{ 754 if(jQuery.isFunction(jQuery.fn.perfectScrollbar)) 755 { 756 public_vars.$sidebarMenu.find('.sidebar-menu-inner').perfectScrollbar('destroy'); 757 } 758} 759// Element Attribute Helper 760function attrDefault($el, data_var, default_val) 761{ 762 if(typeof $el.data(data_var) != 'undefined') 763 { 764 return $el.data(data_var); 765 } 766 return default_val; 767}
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.