/* eslint-env jquery */ const axios = require( 'axios' ); export default class LoadMore { constructor( selector ) { this.selector = selector; this.init = this.init.bind( this ); this.init(); } init() { const that = this; $( this.selector ).each( function() { const item = $( this ); item.on( 'click', ( e ) => { e.preventDefault(); that.initQuery( item ); } ); } ); } afterDone( item, parent ) { const prev_page_num = item.data( 'current' ); parent.find( '.pagination' ).removeClass( 'loading' ); item.data( 'current', parseInt( prev_page_num ) + 1 ); item.attr( 'data-current', parseInt( prev_page_num ) + 1 ); } initQuery( item ) { const query = item.data( 'query' ), current = item.data( 'current' ), meta = item.data( 'meta' ), parent = item.parents( '.posts-wrap' ); const form_data = new FormData(); form_data.append( 'action', 'bastet_load_more_posts' ); form_data.append( 'nonce', BASTET.nonce ); form_data.append( 'query', jQuery.param( query ) ); form_data.append( 'current', parseInt( current ) ); form_data.append( 'meta', jQuery.param( meta ) ); parent.find( '.pagination' ).addClass( 'loading' ); axios.post( BASTET.ajax_url, form_data ).then( ( response ) => { console.log( response ); parent.find( '.posts' ).append( response.data ); this.afterDone( item, parent ); } ); } }