PageSourceSearch

https://illinet.org/wp-content/plugins/the-events-calendar/src/res…/js/views/events-bar-inputs.js?ver=5.14.2.1

js illinet.org collected 2026-10-05 03:18:58 UTC 4,551 bytes, 184 lines download raw bytes

1/**
2 * Makes sure we have all the required levels on the Tribe Object
3 *
4 * @since 4.9.4
5 *
6 * @type   {PlainObject}
7 */
8tribe.events = tribe.events || {};
9tribe.events.views = tribe.events.views || {};
10
11/**
12 * Configures Events Bar Inputs Object in the Global Tribe variable
13 *
14 * @since 4.9.4
15 *
16 * @type   {PlainObject}
17 */
18tribe.events.views.eventsBarInputs = {};
19
20/**
21 * Initializes in a Strict env the code that manages the Event Views
22 *
23 * @since 4.9.4
24 *
25 * @param  {PlainObject} $   jQuery
26 * @param  {PlainObject} obj tribe.events.views.eventsBarInputs
27 *
28 * @return {void}
29 */
30( function( $, obj ) {
31	'use strict';
32	var $document = $( document );
33
34	/**
35	 * Selectors used for configuration and setup
36	 *
37	 * @since 4.9.4
38	 *
39	 * @type {PlainObject}
40	 */
41	obj.selectors = {
42		input: '[data-js="tribe-events-events-bar-input-control-input"]',
43		inputWrapper: '[data-js="tribe-events-events-bar-input-control"]',
44	};
45
46	/**
47	 * Toggles input class if it has a value
48	 *
49	 * @since 4.9.4
50	 *
51	 * @param {Event} event event object of click event
52	 *
53	 * @return {void}
54	 */
55	obj.handleInputChange = function( event ) {
56		var $input = event.data.target;
57		var $wrapper = event.data.wrapper;
58
59		// Set the focus class if it has content.
60		$wrapper.toggleClass( event.data.inputClassFocus, '' !== $input.val().trim() );
61	};
62
63	/**
64	 * Unbind events for the events bar input.
65	 *
66	 * @since 4.9.5
67	 *
68	 * @param {jQuery} $container jQuery object of container.
69	 *
70	 * @return {void}
71	 */
72	obj.unbindInputEvents = function( $container ) {
73		$container
74			.find( obj.selectors.inputWrapper )
75			.each( function( index, wrapper ) {
76				var $input = $( wrapper ).find( obj.selectors.input );
77
78				// Bail in case we dont find the input.
79				if ( ! $input.length ) {
80					return;
81				}
82
83				$input.off();
84			} );
85	};
86
87	/**
88	 * Bind events for the events bar input, on focus and according to their value.
89	 *
90	 * @since 4.9.4
91	 *
92	 * @param {jQuery} $container jQuery object of container.
93	 *
94	 * @return {void}
95	 */
96	obj.bindInputEvents = function( $container ) {
97		$container
98			.find( obj.selectors.inputWrapper )
99			.each( function( index, wrapper ) {
100				var inputWrapperClass = wrapper
101					.className
102					.match( /tribe-events-c-search__input-control--[a-z]+/ );
103
104				if ( ! inputWrapperClass ) {
105					return;
106				}
107
108				var inputWrapperFocus = inputWrapperClass[0] + '-focus';
109				var $wrapper = $( wrapper );
110				var $input = $wrapper.find( obj.selectors.input );
111
112				// Bail in case we dont find the input.
113				if ( ! $input.length ) {
114					return;
115				}
116
117				$wrapper.toggleClass( inputWrapperFocus, '' !== $input.val().trim() );
118
119				$input.on(
120					'change',
121					{ target: $input, wrapper: $wrapper, inputClassFocus: inputWrapperFocus },
122					obj.handleInputChange
123				);
124			} );
125	};
126
127	/**
128	 * Unbinds events for container
129	 *
130	 * @since  4.9.5
131	 *
132	 * @param  {Event}       event    event object for 'beforeAjaxSuccess.tribeEvents' event
133	 * @param  {jqXHR}       jqXHR    Request object
134	 * @param  {PlainObject} settings Settings that this request was made with
135	 *
136	 * @return {void}
137	 */
138	obj.unbindEvents = function( event, jqXHR, settings ) { // eslint-disable-line no-unused-vars
139		var $container = event.data.container;
140		obj.unbindInputEvents( $container );
141		$container.off( 'beforeAjaxSuccess.tribeEvents', obj.unbindEvents );
142	};
143
144	/**
145	 * Binds events for the events bar input change listeners
146	 *
147	 * @since 4.9.8
148	 *
149	 * @param  {Event}   event      event object for 'afterSetup.tribeEvents' event
150	 * @param  {integer} index      jQuery.each index param from 'afterSetup.tribeEvents' event
151	 * @param  {jQuery}  $container jQuery object of view container
152	 * @param  {object}  data       data object passed from 'afterSetup.tribeEvents' event
153	 *
154	 * @return {void}
155	 */
156	obj.bindEvents = function( event, index, $container, data ) { // eslint-disable-line no-unused-vars, max-len
157		var $inputWrapper = $container.find( obj.selectors.inputWrapper );
158
159		if ( ! $inputWrapper.length ) {
160			return;
161		}
162
163		obj.bindInputEvents( $container );
164		$container.on( 'beforeAjaxSuccess.tribeEvents', { container: $container }, obj.unbindEvents );
165	};
166
167	/**
168	 * Handles the initialization of the Events Bar Inputs when Document is ready
169	 *
170	 * @since 4.9.4
171	 *
172	 * @return {void}
173	 */
174	obj.ready = function() {
175		$document.on(
176			'afterSetup.tribeEvents',
177			tribe.events.views.manager.selectors.container,
178			obj.bindEvents
179		);
180	};
181
182	// Configure on document ready
183	$( obj.ready );
184} )( jQuery, tribe.events.views.eventsBarInputs );

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.