Files

1 line
2.3 KiB
JavaScript

!function(t){"use strict";class a extends HTMLElement{constructor(){super(),this.$el=null,this.$container=null;let t=window.aiovg_pagination||window.aiovg_public;this._isRendered=!1,this._isAjaxEnabled=!1,this._params={},this._ajaxUrl=t.ajax_url,this._ajaxNonce=t.ajax_nonce,this._pageTopOffset=parseInt(t.scroll_to_top_offset),this._onNextOrPreviousPageButtonClicked=this._onNextOrPreviousPageButtonClicked.bind(this),this._onMoreButtonClicked=this._onMoreButtonClicked.bind(this)}connectedCallback(){return!this._isRendered&&(this._isRendered=!0,this.$el=t(this),(this.$el.hasClass("aiovg-pagination-ajax")||this.$el.hasClass("aiovg-more-ajax"))&&(this._isAjaxEnabled=!0),!!this._isAjaxEnabled&&void(this._params=this.$el.data("params"),this._params.action="aiovg_load_"+this._params.source,this._params.security=this._ajaxNonce,this.$container=t("#aiovg-"+this._params.uid),this.$el.on("click","a.page-numbers",this._onNextOrPreviousPageButtonClicked),this.$el.on("click","button",this._onMoreButtonClicked)))}disconnectedCallback(){if(!this._isAjaxEnabled)return!1;this.$el.off("click","a.page-numbers",this._onNextOrPreviousPageButtonClicked),this.$el.off("click","button",this._onMoreButtonClicked)}_onNextOrPreviousPageButtonClicked(a){a.preventDefault();let e=t(a.target);this.$el.addClass("aiovg-spinner");let i=parseInt(this.$el.data("current")),s=parseInt(e.html());this._params.paged=s,e.hasClass("prev")&&(this._params.paged=i-1),e.hasClass("next")&&(this._params.paged=i+1),this._fetch(this._params,a=>{if(a.success){let e=t(a.data.html).html();this.$container.html(e),this.$el.trigger("AIOVG.onGalleryUpdated"),t("html, body").animate({scrollTop:this.$container.offset().top-this._pageTopOffset},500)}else this.$el.removeClass("aiovg-spinner")})}_onMoreButtonClicked(a){a.preventDefault();let e=t(a.target);this.$el.addClass("aiovg-spinner");let i=parseInt(e.data("numpages")),s=parseInt(e.data("paged"));this._params.paged=++s,this._fetch(this._params,a=>{if(this.$el.removeClass("aiovg-spinner"),a.success){let n=t(a.data.html).find(".aiovg-grid").html();this.$container.find(".aiovg-grid").append(n),s<i?e.data("paged",this._params.paged):e.hide(),this.$el.trigger("AIOVG.onGalleryUpdated")}})}_fetch(a,e){t.post(this._ajaxUrl,a,e)}}t(function(){customElements.get("aiovg-pagination")||customElements.define("aiovg-pagination",a)})}(jQuery);