import * as React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; import Checkbox from '../../components/checkbox'; import TextInputWithCopyButton from '../../components/text-input-with-copy-button'; import Fieldset from '../../components/fieldset'; import Tooltip from '../../components/tooltip'; import messages from './messages'; import './AllowDownloadSection.scss'; const AllowDownloadSection = ({ canChangeDownload, classification, directLink, directLinkInputProps = {}, downloadCheckboxProps = {}, isDirectLinkAvailable, isDirectLinkUnavailableDueToDownloadSettings, isDirectLinkUnavailableDueToAccessPolicy, isDirectLinkUnavailableDueToMaliciousContent, isDownloadAvailable, isDownloadEnabled, onChange, }) => { if (!isDownloadAvailable && !isDirectLinkAvailable) { return null; } const directLinkSection = (
} type="url" value={directLink} {...directLinkInputProps} />
); const isDirectLinkUnavailable = isDirectLinkUnavailableDueToAccessPolicy || isDirectLinkUnavailableDueToMaliciousContent; const allowDownloadSectionClass = classNames('bdl-AllowDownloadSection', { 'bdl-is-disabled': isDirectLinkUnavailable, }); const isDirectLinkSectionVisible = (isDirectLinkAvailable || isDirectLinkUnavailableDueToDownloadSettings) && isDownloadEnabled; let tooltipMessage = null; if (isDirectLinkUnavailableDueToMaliciousContent) { tooltipMessage = { ...messages.directDownloadBlockedByMaliciousContent }; } else if (classification) { tooltipMessage = { ...messages.directDownloadBlockedByAccessPolicyWithClassification }; } else { tooltipMessage = { ...messages.directDownloadBlockedByAccessPolicyWithoutClassification }; } if (isDownloadAvailable) { return (

} position="middle-left" >
} > } name="isDownloadEnabled" onChange={onChange} {...downloadCheckboxProps} /> {isDirectLinkSectionVisible && directLinkSection}
); } // When download section not available but direct link is available return (

{directLinkSection}
); }; AllowDownloadSection.propTypes = { canChangeDownload: PropTypes.bool.isRequired, classification: PropTypes.string, directLink: PropTypes.string.isRequired, directLinkInputProps: PropTypes.object, downloadCheckboxProps: PropTypes.object, isDirectLinkAvailable: PropTypes.bool.isRequired, isDirectLinkUnavailableDueToMaliciousContent: PropTypes.bool, isDirectLinkUnavailableDueToAccessPolicy: PropTypes.bool, isDirectLinkUnavailableDueToDownloadSettings: PropTypes.bool.isRequired, isDownloadAvailable: PropTypes.bool.isRequired, isDownloadEnabled: PropTypes.bool.isRequired, onChange: PropTypes.func.isRequired, }; export default AllowDownloadSection;