PageSourceSearch

https://writers.com/wp-content/themes/bb-theme-child/js/nav-utilities.js?ver=1.2.4

js writers.com collected 2026-09-24 09:10:01 UTC 4,222 bytes, 155 lines download raw bytes

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.