UNPKG

labo-components

Version:
104 lines (87 loc) 2.86 kB
import React from 'react'; import PropTypes from 'prop-types'; import Resource from '../../model/Resource'; import PaginationUtil from '../../util/PaginationUtil'; import IDUtil from '../../util/IDUtil'; import ComponentUtil from '../../util/ComponentUtil'; import FlexRouter from '../../util/FlexRouter'; export default class Paging extends React.Component { constructor(props) { super(props); this.renderInfo = PaginationUtil.getSearchResultRenderInfo( this.props.searchResult ); } componentDidMount() { document.addEventListener('keydown', this.onKeyPressed); } componentWillUnmount() { document.removeEventListener('keydown', this.onKeyPressed); } onKeyPressed = e => { if (e.shiftKey && e.keyCode === 221 && !this.renderInfo.isLastHit) { //shift+] ComponentUtil.checkFocusAndExec.call(this, this.next); } if (e.shiftKey && e.keyCode === 219 && !this.renderInfo.isFirstHit) { //shift+[ ComponentUtil.checkFocusAndExec.call(this, this.previous); } }; /* ---------------------------------------- BUTTON HANDLING FUNCTIONS --------------------------------- */ previous = () => { PaginationUtil.pageSearchResults( this.props.searchResult, this.props.collectionConfig, false, this.props.onPaged, () => {} ); }; next = () => { PaginationUtil.pageSearchResults( this.props.searchResult, this.props.collectionConfig, true, this.props.onPaged, () => {} ); }; backToSearch = () => FlexRouter.gotoSingleSearch('cache'); //render based on render() { const previousResourceBtn = ( <button className="btn prev" disabled={this.renderInfo.isFirstHit} onClick={this.previous} > Previous resource </button> ); const nextResourceBtn = ( <button className="btn next" disabled={this.renderInfo.isLastHit} onClick={this.next} > Next resource </button> ); const backToSearchBtn = ( <button className="btn" onClick={this.backToSearch}> Back to results </button> ); return ( <div className={IDUtil.cssClassName('viewer-paging')}> {previousResourceBtn} {nextResourceBtn} {backToSearchBtn} </div> ); } } Paging.propTypes = { searchResult: Resource.getPropTypes(true), collectionConfig: PropTypes.object.isRequired, onPaged: PropTypes.func.isRequired };