PageSourceSearch

https://lifesmarts.org/wp-content/plugins/the-events-calendar/src/…/js/views/breakpoints.js?ver=6.0.0.1

js lifesmarts.org collected 2026-10-02 02:12:05 UTC 5,513 bytes, 228 lines download raw bytes

1/**
2 * Makes sure we have all the required levels on the Tribe Object
3 *
4 * @since 5.0.0
5 *
6 * @type   {Object}
7 */
8tribe.events = tribe.events || {};
9tribe.events.views = tribe.events.views || {};
10
11/**
12 * Configures Breakpoints Object in the Global Tribe variable
13 *
14 * @since 5.0.0
15 *
16 * @type   {Object}
17 */
18tribe.events.views.breakpoints = {};
19
20/**
21 * Initializes in a Strict env the code that manages the Event Views
22 *
23 * @since  5.0.0
24 *
25 * @param  {FunctionConstructor} $   jQuery
26 * @param  {Object} obj tribe.events.views.breakpoints
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 5.0.0
38	 *
39	 * @type {Object}
40	 */
41	obj.selectors = {
42		container: '[data-js="tribe-events-view"]',
43		dataScript: '[data-js="tribe-events-view-data"]',
44		breakpointClassPrefix: 'tribe-common--breakpoint-',
45	};
46
47	/**
48	 * Object of breakpoints
49	 *
50	 * @since 5.0.0
51	 *
52	 * @type {Object}
53	 */
54	obj.breakpoints = {};
55
56	/**
57	 * Sets container classes based on breakpoint
58	 *
59	 * @since  5.0.0
60	 *
61	 * @param  {jQuery}  $container jQuery object of view container.
62	 * @param  {object}  data       data object passed from 'afterSetup.tribeEvents' event.
63	 *
64	 * @return {void}
65	 */
66	obj.setContainerClasses = function( $container, data ) {
67		var breakpoints = Object.keys( data.breakpoints );
68
69		breakpoints.forEach( function( breakpoint ) {
70			var className = obj.selectors.breakpointClassPrefix + breakpoint;
71			obj.breakpoints[ breakpoint ] = data.breakpoints[ breakpoint ];
72
73			if ( $container.outerWidth() < data.breakpoints[ breakpoint ] ) {
74				$container.removeClass( className );
75			} else {
76				$container.addClass( className );
77			}
78		} );
79	};
80
81	/**
82	 * Handles resize event for window
83	 *
84	 * @since  5.0.0
85	 *
86	 * @param  {Event} event event object for 'resize' event
87	 *
88	 * @return {void}
89	 */
90	obj.handleResize = function( event ) {
91		obj.setContainerClasses( event.data.container, event.data.data );
92	};
93
94	/**
95	 * Unbinds events for container
96	 *
97	 * @since  5.0.0
98	 *
99	 * @param  {jQuery} $container jQuery object of view container
100	 *
101	 * @return {void}
102	 */
103	obj.unbindEvents = function( $container ) {
104		$container
105			.off( 'resize.tribeEvents', obj.handleResize )
106			.off( 'beforeAjaxSuccess.tribeEvents', obj.deinit );
107	};
108
109	/**
110	 * Binds events for container
111	 *
112	 * @since  5.0.0
113	 *
114	 * @param  {jQuery}  $container jQuery object of view container.
115	 * @param  {object}  data       data object passed from 'afterSetup.tribeEvents' event.
116	 *
117	 * @return {void}
118	 */
119	obj.bindEvents = function( $container, data ) {
120		$container
121			.on( 'resize.tribeEvents', { container: $container, data: data }, obj.handleResize )
122			.on( 'beforeAjaxSuccess.tribeEvents', { container: $container }, obj.deinit );
123	};
124
125	/**
126	 * De-initialize breakpoints JS
127	 *
128	 * @since  5.0.0
129	 *
130	 * @param  {Event}       event    event object for 'beforeAjaxSuccess.tribeEvents' event
131	 * @param  {jqXHR}       jqXHR    Request object
132	 * @param  {Object} settings Settings that this request was made with
133	 *
134	 * @return {void}
135	 */
136	obj.deinit = function( event, jqXHR, settings ) { // eslint-disable-line no-unused-vars
137		obj.unbindEvents( event.data.container );
138	};
139
140	/**
141	 * Common initialization tasks
142	 *
143	 * @since  5.0.0
144	 *
145	 * @param  {jQuery}  $container jQuery object of view container.
146	 * @param  {object}  data       data object passed from 'afterSetup.tribeEvents' event.
147	 *
148	 * @return {void}
149	 */
150	obj.initTasks = function( $container, data ) {
151		if ( ! ( $container instanceof jQuery ) ) {
152			// eslint-disable-next-line no-param-reassign
153			$container = $( $container );
154		}
155
156		obj.bindEvents( $container, data );
157		obj.setContainerClasses( $container, data );
158
159		var state = { initialized: true };
160		$container.data( 'tribeEventsBreakpoints', state );
161	};
162
163	/**
164	 * Initialize breakpoints JS
165	 *
166	 * @since  5.0.0
167	 *
168	 * @param  {Event}   event      event object for 'afterSetup.tribeEvents' event
169	 * @param  {int}     index      jQuery.each index param from 'afterSetup.tribeEvents' event.
170	 * @param  {jQuery}  $container jQuery object of view container.
171	 * @param  {object}  data       data object passed from 'afterSetup.tribeEvents' event.
172	 *
173	 * @return {void}
174	 */
175	obj.init = function( event, index, $container, data ) {
176		if ( ! ( $container instanceof jQuery ) ) {
177			// eslint-disable-next-line no-param-reassign
178			$container = $( $container );
179		}
180
181		var state = $container.data( 'tribeEventsBreakpoints' );
182		if ( state && state.initialized ) {
183			return;
184		}
185
186		obj.initTasks( $container, data );
187	};
188
189	/**
190	 * Setup breakpoints JS
191	 *
192	 * @since  5.0.0
193	 *
194	 * @param  {HTMLElement} container HTML element of the script tag calling setup
195	 *
196	 * @return {void}
197	 */
198	obj.setup = function( container ) {
199		var $container = $( container );
200
201		if ( ! $container.is( obj.selectors.container ) ) {
202			return;
203		}
204		var $data = $container.find( obj.selectors.dataScript );
205		var data = {};
206
207		// If we have data element set it up.
208		if ( $data.length ) {
209			data = JSON.parse( $data.text().trim() );
210		}
211
212		obj.initTasks( $container, data );
213	};
214
215	/**
216	 * Handles the initialization of breakpoints when Document is ready
217	 *
218	 * @since  5.0.0
219	 *
220	 * @return {void}
221	 */
222	obj.ready = function() {
223		$document.on( 'afterSetup.tribeEvents', obj.selectors.container, obj.init );
224	};
225
226	// Configure on document ready
227	$( obj.ready );
228} )( jQuery, tribe.events.views.breakpoints );

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.