| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 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
|