PluginProbe
WP Ultimate Post Grid / 4.1.1
WP Ultimate Post Grid v4.1.1
4.1.1 trunk 1.5 1.6 1.7 1.7.1 1.7.2 1.8 1.9 2.0 2.1 2.2 2.3 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.2 3.0.0 3.3.0 3.4.0 3.5.0 3.6.0 3.7.0 All 32 releases
wp-ultimate-post-grid / assets / js / public / grid.js

grid.js in WP Ultimate Post Grid 4.1.1, at assets/js/public/grid.js

120 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import Isotope from 'isotope-layout';
2 import imagesLoaded from 'imagesloaded';
3
4 import '../../css/public/filter.scss';
5 import '../../css/public/grid.scss';
6 import '../../css/public/pagination.scss';
7 import '../../css/public/responsive.scss';
8
9 import './filters/clear';
10 import './filters/isotope';
11 import './pagination/pages';
12
13 import gridCustomFields from './grid/custom-fields';
14 import gridDeeplinking from './grid/deeplinking';
15 import gridEmpty from './grid/empty';
16 import gridEvents from './grid/events';
17 import gridFilters from './grid/filters';
18 import gridHover from './grid/hover';
19 import gridLayout from './grid/layout';
20 import gridPagination from './grid/pagination';
21 import gridResponsive from './grid/responsive';
22 import gridSorting from './grid/sorting';
23
24 window.WPUPG_Grids = {};
25
26 window.WPUPG_Grid = {
27 init: ( elemId, args = false ) => {
28 const elem = document.querySelector( '#' + elemId );
29
30 if ( elem ) {
31 if ( wpupg_public.debugging ) { console.log( 'WPUPG Init', args ); }
32
33 const gridId = elem.dataset.hasOwnProperty( 'gridId' ) ? elem.dataset.gridId : elemId.substr( 11 );
34 const gridSlug = elemId.substr( 11 );
35
36 // Remove loading class.
37 elem.classList.remove( 'wpupg-grid-loading' );
38
39 // Try to get args from localized data if not set.
40 if ( false === args ) {
41 if ( window.hasOwnProperty( `wpupg_grid_args_${ gridId }` ) ) {
42 args = window[ `wpupg_grid_args_${ gridId }` ];
43 } else {
44 // No arguments found to init, return.
45 return;
46 }
47 }
48
49 // Check if already exists.
50 if ( WPUPG_Grids.hasOwnProperty( elemId ) ) {
51 WPUPG_Grids[ elemId ].isotope.destroy();
52 delete WPUPG_Grids[ elemId ];
53 }
54
55 WPUPG_Grids[ elemId ] = {
56 args,
57 elem,
58 gridId,
59 gridSlug,
60 elemId,
61 isPreview: args.hasOwnProperty( 'is_preview' ) ? args.is_preview : false,
62 isotope: new Isotope( elem, args.isotope ),
63 layout() {
64 this.isotope.layout();
65 },
66 // Moved to separate files for readability.
67 ...gridCustomFields( elemId, args ),
68 ...gridDeeplinking( elemId, args ),
69 ...gridEmpty( elemId, args ),
70 ...gridEvents( elemId, args ),
71 ...gridFilters( elemId, args ),
72 ...gridHover( elemId, args ),
73 ...gridLayout( elemId, args ),
74 ...gridPagination( elemId, args ),
75 ...gridResponsive( elemId, args ),
76 ...gridSorting( elemId, args ),
77 init() {
78 // Init events first.
79 this.initEvents();
80
81 // Init rest.
82 this.initDeeplinking();
83 this.initEmpty();
84 this.initHover();
85 this.initLayout();
86 this.initPagination();
87 this.initResponsive();
88 this.initFilters();
89
90 // Fire init ready hook.
91 this.fireEvent( 'initReady' );
92
93 // Relayout after images have loaded.
94 imagesLoaded( this.elem, () => {
95 this.layout();
96 } );
97 },
98 };
99 WPUPG_Grids[ elemId ].init();
100 }
101 },
102 };
103
104 // Init all grids we can find when the page is ready.
105 ready(() => {
106 const grids = document.querySelectorAll( '.wpupg-grid' );
107
108 for ( let grid of grids ) {
109 WPUPG_Grid.init( grid.id );
110 }
111 });
112
113 // Source: http://youmightnotneedjquery.com/#ready
114 function ready( fn ) {
115 if (document.readyState != 'loading'){
116 fn();
117 } else {
118 document.addEventListener('DOMContentLoaded', fn);
119 }
120 }