overleaf/services/web/frontend/js/features/preview/components/preview-download-button.js
Jakob Ackermann 9d47b05486 Merge pull request #3549 from overleaf/jpa-disable-downloads-before-clearing-cache
[frontend] PdfController: disable download buttons before clearing cache

GitOrigin-RevId: e685411c12c9962732a5ab88fcb7466b0f6df7ce
2021-01-13 03:04:11 +00:00

83 lines
2 KiB
JavaScript

import React from 'react'
import PropTypes from 'prop-types'
import { Dropdown, OverlayTrigger, Tooltip } from 'react-bootstrap'
import { useTranslation } from 'react-i18next'
import PreviewDownloadFileList from './preview-download-file-list'
import Icon from '../../../shared/components/icon'
function PreviewDownloadButton({
isCompiling,
outputFiles,
pdfDownloadUrl,
showText
}) {
const { t } = useTranslation()
let textStyle = {}
if (!showText) {
textStyle = {
position: 'absolute',
right: '-100vw'
}
}
const pdfDownloadDisabled = isCompiling || !pdfDownloadUrl
const buttonElement = (
<a
className="btn btn-xs btn-info"
disabled={pdfDownloadDisabled}
download
href={pdfDownloadUrl || '#'}
style={{ pointerEvents: 'auto' }}
>
<Icon type="download" modifier="fw" />
<span className="toolbar-text" style={textStyle}>
{t('download_pdf')}
</span>
</a>
)
const hideTooltip = showText && pdfDownloadUrl
return (
<Dropdown
id="download-dropdown"
className="toolbar-item"
disabled={isCompiling}
>
{hideTooltip ? (
buttonElement
) : (
<OverlayTrigger
placement="bottom"
overlay={
<Tooltip id="tooltip-download-pdf">
{pdfDownloadDisabled
? t('please_compile_pdf_before_download')
: t('download_pdf')}
</Tooltip>
}
>
{buttonElement}
</OverlayTrigger>
)}
<Dropdown.Toggle
className="btn btn-xs btn-info dropdown-toggle"
aria-label={t('toggle_output_files_list')}
bsStyle="info"
/>
<Dropdown.Menu id="download-dropdown-list">
<PreviewDownloadFileList fileList={outputFiles} />
</Dropdown.Menu>
</Dropdown>
)
}
PreviewDownloadButton.propTypes = {
isCompiling: PropTypes.bool.isRequired,
outputFiles: PropTypes.array,
pdfDownloadUrl: PropTypes.string,
showText: PropTypes.bool.isRequired
}
export default PreviewDownloadButton