import React from 'react'; import {Router, Link} from 'react-router'; import FilterOptions from './filter-options'; import Item from './item'; import Api from '../api'; class Box extends React.Component { constructor(props) { super(props); this.state = { // No need to sync parent items. items: this.props.items, moreLoaded: false, moreToLoad: true, currentLoaded: config.loadingItems, activeKey: null }; } componentWillReceiveProps(nextProps) { this.setState({ items: nextProps.items }); } render() { let loadContent; if( ! this.state.moreLoaded) { loadContent =
Load more {this.props.category.name}
} else { loadContent = } let items = this.state.items.map((value) => { return }); return (
{this.props.category.name} ({this.props.category.items_count.aggregate})
{ ! this.state.items.length ? : items}
{this.state.items.length >= config.loadingItems && this.state.moreToLoad && this.props.category ?
{loadContent}
: ''}
); } changeFilter(filterBy, category) { Api.changeUsersFilterFor(category, filterBy); this.setState({ items: [] }); setTimeout(() => { Api.items(this.props.type, this.props.category.slug, filterBy).then((value) => { this.setState({ items: value.items }); }) }, 200); } loadMore() { this.setState({ moreLoaded: true }); setTimeout(() => { Api.moreCategoryItems(this.props.category, this.state.currentLoaded).then((value) => { this.setState({ currentLoaded: this.state.currentLoaded + config.loadingItems, items: this.state.items.concat(value), moreLoaded: false, moreToLoad: value.length ? true : false }); }); }, 400); } changeActiveKey(key) { this.setState({ activeKey: key }); } } export default Box;