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;