pdf-hybrid-code-check-button.jsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { memo, useCallback } from 'react'
  2. import Icon from '../../../shared/components/icon'
  3. import { useTranslation } from 'react-i18next'
  4. import { useDetachCompileContext as useCompileContext } from '../../../shared/context/detach-compile-context'
  5. import OLButton from '@/features/ui/components/ol/ol-button'
  6. import BootstrapVersionSwitcher from '@/features/ui/components/bootstrap-5/bootstrap-version-switcher'
  7. import MaterialIcon from '@/shared/components/material-icon'
  8. import { bsVersion } from '@/features/utils/bootstrap-5'
  9. function PdfHybridCodeCheckButton() {
  10. const { codeCheckFailed, error, toggleLogs } = useCompileContext()
  11. const { t } = useTranslation()
  12. const handleClick = useCallback(() => {
  13. toggleLogs()
  14. }, [toggleLogs])
  15. if (!codeCheckFailed) {
  16. return null
  17. }
  18. return (
  19. <OLButton
  20. variant="danger"
  21. size="sm"
  22. disabled={Boolean(error)}
  23. className="btn-toggle-logs toolbar-item"
  24. onClick={handleClick}
  25. bs3Props={{
  26. bsSize: 'xsmall',
  27. }}
  28. >
  29. <BootstrapVersionSwitcher
  30. bs3={<Icon type="exclamation-triangle" />}
  31. bs5={<MaterialIcon type="warning" />}
  32. />
  33. <span className={bsVersion({ bs3: 'toolbar-text' })}>
  34. {t('code_check_failed')}
  35. </span>
  36. </OLButton>
  37. )
  38. }
  39. export default memo(PdfHybridCodeCheckButton)