diff --git a/public/locales/en/files.json b/public/locales/en/files.json index c44340915..b83ab9771 100644 --- a/public/locales/en/files.json +++ b/public/locales/en/files.json @@ -110,6 +110,7 @@ "filesImportStatus": { "imported": "{count, plural, one {Imported 1 item} other {Imported {count} items}}", "importing": "{count, plural, one {Importing 1 item} other {Importing {count} items}}", + "failed": "{count, plural, one {Failed to import 1 item} other {Failed to import {count} items}}", "toggleDropdown": "Toggle dropdown", "closeDropdown": "Close dropdown", "count": "{count} of {count}" diff --git a/src/files/file-import-status/FileImportStatus.css b/src/files/file-import-status/FileImportStatus.css index eef38099d..d14ffbe7d 100644 --- a/src/files/file-import-status/FileImportStatus.css +++ b/src/files/file-import-status/FileImportStatus.css @@ -54,4 +54,14 @@ .fileImportStatusName { flex: 1 1; +} + +.fileImportStatusError { + background: #fff5f5 !important; + border-color: #feb2b2 !important; +} + +.fileImportStatusError .fileImportStatusButton { + background: #fff5f5 !important; + color: #c53030 !important; } \ No newline at end of file diff --git a/src/files/file-import-status/FileImportStatus.js b/src/files/file-import-status/FileImportStatus.js index 5ea3c2a02..37aa6432c 100644 --- a/src/files/file-import-status/FileImportStatus.js +++ b/src/files/file-import-status/FileImportStatus.js @@ -4,13 +4,13 @@ import PropTypes from 'prop-types' import { connect } from 'redux-bundler-react' import { withTranslation } from 'react-i18next' // Icons -import DocumentIcon from '../../icons/GlyphDocGeneric.js' -import FolderIcon from '../../icons/GlyphFolder.js' +import DocumentIcon from '../../icons/GlyphDocGeneric.tsx' +import FolderIcon from '../../icons/GlyphFolder.tsx' import './FileImportStatus.css' -import GlyphSmallArrows from '../../icons/GlyphSmallArrow.js' -import GlyphTick from '../../icons/GlyphTick.js' -import GlyphCancel from '../../icons/GlyphCancel.js' -import GlyphSmallCancel from '../../icons/GlyphSmallCancel.js' +import GlyphSmallArrows from '../../icons/GlyphSmallArrow.tsx' +import GlyphTick from '../../icons/GlyphTick.tsx' +import GlyphCancel from '../../icons/GlyphCancel.tsx' +import GlyphSmallCancel from '../../icons/GlyphSmallCancel.tsx' import ProgressBar from '../../components/progress-bar/ProgressBar.js' const Import = (job, t) => @@ -109,12 +109,16 @@ export const FileImportStatus = ({ filesFinished, filesPending, filesErrors, doF } const numberOfImportedItems = !filesFinished.length ? 0 : filesFinished.reduce((prev, finishedFile) => prev + finishedFile.message.entries.length, 0) + const numberOfFailedItems = !filesErrors.length ? 0 : filesErrors.reduce((prev, failedFile) => prev + failedFile.message.entries.length, 0) const numberOfPendingItems = filesPending.reduce((total, pending) => total + groupByPath(pending.message.entries).size, 0) const progress = Math.floor(filesPending.reduce((total, { message: { progress } }) => total + progress, 0) / filesPending.length) + const hasErrors = numberOfFailedItems > 0 && !filesPending.length + const containerClass = hasErrors ? 'fileImportStatusError' : '' + return (