cspace-ui
Version:
CollectionSpace user interface for browsers
74 lines (64 loc) • 1.94 kB
JSX
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,
};