preview-download-button.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import React from 'react'
  2. import PropTypes from 'prop-types'
  3. import { Dropdown, OverlayTrigger, Tooltip } from 'react-bootstrap'
  4. import { useTranslation } from 'react-i18next'
  5. import PreviewDownloadFileList from './preview-download-file-list'
  6. import Icon from '../../../shared/components/icon'
  7. function PreviewDownloadButton({
  8. isCompiling,
  9. outputFiles,
  10. pdfDownloadUrl,
  11. showText
  12. }) {
  13. const { t } = useTranslation()
  14. let textStyle = {}
  15. if (!showText) {
  16. textStyle = {
  17. position: 'absolute',
  18. right: '-100vw'
  19. }
  20. }
  21. const buttonElement = (
  22. <a
  23. className="btn btn-xs btn-info"
  24. disabled={isCompiling || !pdfDownloadUrl}
  25. download
  26. href={pdfDownloadUrl || '#'}
  27. >
  28. <Icon type="download" modifier="fw" />
  29. <span className="toolbar-text" style={textStyle}>
  30. {t('download_pdf')}
  31. </span>
  32. </a>
  33. )
  34. return (
  35. <Dropdown
  36. id="download-dropdown"
  37. className="toolbar-item"
  38. disabled={isCompiling}
  39. >
  40. {showText ? (
  41. buttonElement
  42. ) : (
  43. <OverlayTrigger
  44. placement="bottom"
  45. overlay={
  46. <Tooltip id="tooltip-download-pdf">{t('download_pdf')}</Tooltip>
  47. }
  48. >
  49. {buttonElement}
  50. </OverlayTrigger>
  51. )}
  52. <Dropdown.Toggle
  53. className="btn btn-xs btn-info dropdown-toggle"
  54. aria-label={t('toggle_output_files_list')}
  55. bsStyle="info"
  56. />
  57. <Dropdown.Menu id="download-dropdown-list">
  58. <PreviewDownloadFileList fileList={outputFiles} />
  59. </Dropdown.Menu>
  60. </Dropdown>
  61. )
  62. }
  63. PreviewDownloadButton.propTypes = {
  64. isCompiling: PropTypes.bool.isRequired,
  65. outputFiles: PropTypes.array,
  66. pdfDownloadUrl: PropTypes.string,
  67. showText: PropTypes.bool.isRequired
  68. }
  69. export default PreviewDownloadButton