UNPKG

cspace-ui

Version:
60 lines (51 loc) 1.6 kB
import React, { Component } from 'react'; import PropTypes from 'prop-types'; import Immutable from 'immutable'; import SearchResultTableContainer from '../../containers/search/SearchResultTableContainer'; const propTypes = { searchDescriptor: PropTypes.instanceOf(Immutable.Map), searchError: PropTypes.instanceOf(Immutable.Map), searchResult: PropTypes.instanceOf(Immutable.Map), search: PropTypes.func, onSearchDescriptorChange: PropTypes.func, }; /** * A wrapper around SearchResultTable that notifies when the search descriptor is changed, and * re-executes the search if the search results are cleared. */ export default class WatchedSearchResultTable extends Component { componentDidUpdate(prevProps) { const { searchDescriptor: prevSearchDescriptor, searchResult: prevSearchResult, } = prevProps; const { search, searchDescriptor, searchError, searchResult, onSearchDescriptorChange, } = this.props; if (onSearchDescriptorChange && !Immutable.is(prevSearchDescriptor, searchDescriptor)) { onSearchDescriptorChange(searchDescriptor); } if (search && (typeof searchResult === 'undefined' && prevSearchResult && !searchError)) { search(); } } render() { const { /* eslint-disable no-unused-vars */ onSearchDescriptorChange, search, /* eslint-enable no-unused-vars */ ...remainingProps } = this.props; return ( <SearchResultTableContainer {...remainingProps} /> ); } } WatchedSearchResultTable.propTypes = propTypes;