import jQ from 'jquery';
import BaseComponent from "../../../../base-component";
import Selector from "../../../../../helpers/selector";
import Settings from "../../../../../helpers/settings";
import SearchResultPanels from '../search-result-panels';
import SearchResultPanelItem from '../search-result-panel-item';
/**
* Product pagination
* @extends BaseComponent
*/
class ProductPagination extends BaseComponent {
/**
* @constructs
*/
constructor() {
super();
this.data = null;
this.totalProduct = null;
this.paginationType = '';
this.$loadMore = jQ(Selector.loadMore);
this.settings = {
limit: Settings.getSettingValue('general.limit'),
showLoading: Settings.getSettingValue('general.showLoading'),
showLoadMoreLoading: Settings.getSettingValue('general.showLoadMoreLoading')
}
}
/**
* Get the pagination types enum
*/
static get Type() {
return {
DEFAULT: 'default',
LOAD_MORE: 'load_more',
INFINITE: 'infinite'
}
}
/**
* Returns whether or not this component is rendered
*/
isRender() {
return this.data !== null;
}
/**
* Set data for pagination
* @param {Object} data - Filter result data
*/
setData(data) {
if (data) {
this.data = data;
}
this.totalProduct = this.parent.totalProduct;
this.paginationType = Settings.getSettingValue('general.paginationType');
}
/**
* Show load more loading
*/
showLoading() {
if (this.settings.showLoadMoreLoading && this.settings.showLoading === false) {
this.$loadMore.find(Selector.loadMoreLoading).show();
}
}
/**
* Hide load more loading
*/
hideLoading() {
if (this.settings.showLoadMoreLoading) {
this.$loadMore.find(Selector.loadMoreLoading).hide();
}
}
}
export default ProductPagination;