UNPKG

cspace-ui

Version:
74 lines (64 loc) 1.94 kB
import React, { useState } from 'react'; import PropTypes from 'prop-types'; import Immutable from 'immutable'; import get from 'lodash/get'; import ExportModalContainer from '../../containers/search/ExportModalContainer'; import ExportButton from './ExportButton'; const isResultExportable = (searchDescriptor, config) => { const recordType = searchDescriptor.get('recordType'); const subresource = searchDescriptor.get('subresource'); const serviceType = get(config, ['recordTypes', recordType, 'serviceConfig', 'serviceType']); return ( subresource !== 'terms' && subresource !== 'refs' && ( serviceType === 'procedure' || serviceType === 'object' || serviceType === 'authority' ) ); }; export default function ExportResults({ config, selectedItems, searchDescriptor, }) { if (!isResultExportable(searchDescriptor, config)) { return null; } const [isModalOpen, setIsModalOpen] = useState(false); const recordType = searchDescriptor.get('recordType'); const vocabulary = searchDescriptor.get('vocabulary'); const handleExportButtonClick = () => { setIsModalOpen(true); }; const handleModalClose = () => { setIsModalOpen(false); }; return ( <> <ExportButton disabled={!selectedItems || selectedItems.size < 1} key="export" onClick={handleExportButtonClick} /> <ExportModalContainer config={config} isOpen={isModalOpen} recordType={recordType} vocabulary={vocabulary} selectedItems={selectedItems} onCancelButtonClick={handleModalClose} onCloseButtonClick={handleModalClose} onExportOpened={handleModalClose} /> </> ); } ExportResults.propTypes = { config: PropTypes.shape({ recordTypes: PropTypes.object, }), selectedItems: PropTypes.instanceOf(Immutable.Map), searchDescriptor: PropTypes.object.isRequired, };