|
1 | 1 | import React from 'react'; |
2 | 2 | import PropTypes from 'prop-types'; |
3 | | -import classnames from 'classnames'; |
4 | | -import ErrorSublist from './ErrorSublist'; |
| 3 | +import map from 'lodash/map'; |
| 4 | +import partial from 'lodash/partial'; |
| 5 | +import {t} from 'i18next'; |
| 6 | +import ErrorItem from './ErrorItem'; |
5 | 7 |
|
6 | | -function ErrorList(props) { |
7 | | - return ( |
8 | | - <div |
9 | | - className={classnames( |
10 | | - 'error-list', |
11 | | - 'output__item', |
12 | | - {'error-list_docked': props.docked, output__item_shrink: props.docked}, |
| 8 | +function ErrorList({errors, onErrorClick, language}) { |
| 9 | + if (errors.state === 'passed') { |
| 10 | + return false; |
| 11 | + } |
| 12 | + |
| 13 | + const errorItems = map(errors.items, error => ( |
| 14 | + <ErrorItem |
| 15 | + {...error} |
| 16 | + key={[error.reason, error.row]} |
| 17 | + onClick={partial( |
| 18 | + onErrorClick, |
| 19 | + language, |
13 | 20 | )} |
14 | | - > |
15 | | - <ErrorSublist |
16 | | - errors={props.html} |
17 | | - language="html" |
18 | | - onErrorClick={props.onErrorClick} |
19 | | - /> |
20 | | - <ErrorSublist |
21 | | - errors={props.css} |
22 | | - language="css" |
23 | | - onErrorClick={props.onErrorClick} |
24 | | - /> |
25 | | - <ErrorSublist |
26 | | - errors={props.javascript} |
27 | | - language="javascript" |
28 | | - onErrorClick={props.onErrorClick} |
29 | | - /> |
| 21 | + /> |
| 22 | + )); |
| 23 | + |
| 24 | + const errorMessage = t( |
| 25 | + 'errors.notice', |
| 26 | + {count: errors.items.length, language}, |
| 27 | + ); |
| 28 | + |
| 29 | + return ( |
| 30 | + <div> |
| 31 | + <h2 className="error-list__header"> |
| 32 | + {errorMessage} |
| 33 | + </h2> |
| 34 | + <ul className="error-list__errors"> |
| 35 | + {errorItems} |
| 36 | + </ul> |
30 | 37 | </div> |
31 | 38 | ); |
32 | 39 | } |
33 | 40 |
|
34 | 41 | ErrorList.propTypes = { |
35 | | - css: PropTypes.object.isRequired, |
36 | | - docked: PropTypes.bool, |
37 | | - html: PropTypes.object.isRequired, |
38 | | - javascript: PropTypes.object.isRequired, |
| 42 | + errors: PropTypes.object.isRequired, |
| 43 | + language: PropTypes.oneOf(['html', 'css', 'javascript']).isRequired, |
39 | 44 | onErrorClick: PropTypes.func.isRequired, |
40 | 45 | }; |
41 | 46 |
|
42 | | -ErrorList.defaultProps = { |
43 | | - docked: false, |
44 | | -}; |
45 | | - |
46 | 47 | export default ErrorList; |
0 commit comments