1(function ($) { 2 'use strict'; 3 4 var WritersNavUtilities = { 5 init: function () { 6 if (!$('.fl-page-nav-utilities').length || typeof FLTheme === 'undefined') { 7 return; 8 } 9 10 this.bind(); 11 $(window).on('resize.writers-nav-utilities', $.throttle(500, this.bind.bind(this))); 12 }, 13 14 isCompactNav: function () { 15 return $('.fl-page-nav-utilities').closest('.fl-page-nav').find('.navbar-toggle').is(':visible'); 16 }, 17 18 isDesktopHover: function () { 19 return !this.isCompactNav() && !FLTheme._isMobile(); 20 }, 21 22 bind: function () { 23 this.unbindAll(); 24 25 if (this.isCompactNav()) { 26 this.bindSearchClick(); 27 return; 28 } 29 30 this.bindSearchClick(); 31 32 if (this.isDesktopHover()) { 33 this.bindDesktopHover(); 34 return; 35 } 36 37 this.bindTouchClick(); 38 }, 39 40 unbindAll: function () { 41 var container = $('.fl-page-nav-utilities'); 42 43 container.find('.fl-nav-search-item').off('.writers-utilities'); 44 container.find('.fl-nav-account-item').off('.writers-utilities'); 45 container.find('a.fl-nav-search-toggle').off('.writers-utilities'); 46 container.find('.fl-nav-account-item > a').off('.writers-utilities'); 47 container.find('.fl-nav-account-item .fl-submenu-toggle-icon').off('.writers-utilities'); 48 }, 49 50 bindSearchClick: function () { 51 $('.fl-page-nav-utilities a.fl-nav-search-toggle') 52 .on('click.writers-utilities', function (e) { 53 e.preventDefault(); 54 e.stopPropagation(); 55 56 var trigger = $(this); 57 var form = trigger.closest('.writers-nav-search').find('.writers-nav-search-form'); 58 59 WritersNavUtilities.closeAccountDropdown(); 60 61 if (form.is(':visible')) { 62 WritersNavUtilities.hideSearch(); 63 } else { 64 WritersNavUtilities.showSearch(trigger); 65 } 66 }); 67 }, 68 69 bindDesktopHover: function () { 70 var searchItem = $('.fl-page-nav-utilities .fl-nav-search-item'); 71 var accountItem = $('.fl-page-nav-utilities .fl-nav-account-item'); 72 73 searchItem 74 .on('mouseenter.writers-utilities', function () { 75 WritersNavUtilities.closeAccountDropdown(); 76 WritersNavUtilities.showSearch($(this).find('a.fl-nav-search-toggle')); 77 }) 78 .on('mouseleave.writers-utilities', function () { 79 WritersNavUtilities.hideSearch(); 80 }); 81 82 accountItem 83 .on('mouseenter.writers-utilities', function () { 84 WritersNavUtilities.hideSearch(); 85 WritersNavUtilities.openAccountDropdown($(this)); 86 }) 87 .on('mouseleave.writers-utilities', function () { 88 WritersNavUtilities.closeAccountDropdown(); 89 }); 90 }, 91 92 bindTouchClick: function () { 93 $('.fl-page-nav-utilities .fl-nav-account-item > a') 94 .on('click.writers-utilities', function (e) { 95 e.preventDefault(); 96 e.stopPropagation(); 97 98 var li = $(this).closest('.fl-nav-account-item'); 99 100 if (li.hasClass('fl-sub-menu-open')) { 101 WritersNavUtilities.closeAccountDropdown(); 102 } else { 103 WritersNavUtilities.hideSearch(); 104 WritersNavUtilities.openAccountDropdown(li); 105 } 106 }); 107 }, 108 109 showSearch: function (trigger) { 110 var form = trigger.closest('.writers-nav-search').find('.writers-nav-search-form'); 111 112 form.stop().fadeIn(200); 113 trigger.attr('aria-expanded', 'true'); 114 }, 115 116 hideSearch: function () { 117 $('.fl-page-nav-utilities .writers-nav-search-form').stop().fadeOut(200); 118 $('.fl-page-nav-utilities a.fl-nav-search-toggle').attr('aria-expanded', 'false'); 119 }, 120 121 openAccountDropdown: function (li) { 122 var subMenu = li.find('> ul.sub-menu'); 123 124 $('.fl-page-nav-utilities .fl-nav-account-item') 125 .not(li) 126 .removeClass('fl-sub-menu-open fl-sub-menu-right') 127 .find('> ul.sub-menu') 128 .stop() 129 .hide(); 130 131 li.addClass('fl-sub-menu-open'); 132 subMenu.stop().fadeIn(200); 133 }, 134 135 closeAccountDropdown: function () { 136 var account = $('.fl-page-nav-utilities .fl-nav-account-item'); 137 138 account.removeClass('fl-sub-menu-open fl-sub-menu-right'); 139 account.find('> ul.sub-menu').stop().hide(); 140 } 141 }; 142 143 $(function () { 144 WritersNavUtilities.init(); 145 146 $('body').on('click.writers-utilities', function (e) { 147 if ($(e.target).closest('.fl-page-nav-utilities').length) { 148 return; 149 } 150 151 WritersNavUtilities.closeAccountDropdown(); 152 WritersNavUtilities.hideSearch(); 153 }); 154 }); 155}(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.