Source: components/filter/filter-result/page/page-list.js

import jQ from 'jquery';
import BaseComponent from "../../../base-component";
import SearchResultPanelItem from "../filter-result-element/search-result-panel-item";
import Selector from '../../../../helpers/selector';
import SearchResultPanels from '../filter-result-element/search-result-panels';
import PageItemList from './page-item-list';
/**
 * Search result - Pages
 */
class PageList extends BaseComponent {
	/**
	 * @constructs
	 */
	constructor() {
		super();
		this.$element = jQ(Selector.pages);
		this.data = null;
		this.totalPage = 0;
		this.settings = {
			searchPanelBlocks: Settings.getSettingValue('search.searchPanelBlocks')
		};
		this.panelData = {};
		if (this.settings.searchPanelBlocks.hasOwnProperty(SearchResultPanelItem.Enum.PAGE)) {
			this.panelData = this.settings.searchPanelBlocks[SearchResultPanelItem.Enum.PAGE];
		}
	}

	/**
	 * Return whether or not the Page list is rendered
	 */
	isRender() {
		return this.data != null && SearchResultPanels.isPanelActive(SearchResultPanelItem.Enum.PAGE);
	}

	/**
	 * Render the page list component
	 */
	render() {
		var pageEls = [];
		// Get all collection item
		this.pageItems.forEach((pageItem) => {
			pageEls.push(pageItem.$element);
		});

		this.$element.html('');
		this.$element.append(pageEls);
	}

	/**
	 * Set data for the page list
	 * @param {Object} data - Filter result data 
	 */
	setData(data) {
		if (data && data.pages && data.pages.length) {
			this.data = data.pages;
			this.totalPage = data.total_page? data.total_page : 0;
			this.pageItems = [];
			this.data.forEach((pageData, index) => {
				var pageItem = new PageItemList();
				this.addComponent(pageItem);
				pageItem.setData(pageData);
				this.pageItems.push(pageItem);
			});
		}
	}
}

export default PageList;