|
5 | 5 | */ |
6 | 6 |
|
7 | 7 | import React from 'react' |
| 8 | +import R from 'ramda' |
8 | 9 | import PropTypes from 'prop-types' |
9 | 10 |
|
| 11 | +import shortid from 'shortid' |
| 12 | + |
| 13 | +import ReactTooltip from 'react-tooltip' |
10 | 14 | import { makeDebugger } from '../../utils' |
11 | 15 | import { Wrapper, Logo, Title } from './styles' |
12 | 16 |
|
13 | 17 | /* eslint-disable no-unused-vars */ |
14 | 18 | const debug = makeDebugger('c:CommunityCell:index') |
15 | 19 | /* eslint-enable no-unused-vars */ |
16 | 20 |
|
17 | | -// TODO: array version |
18 | | -const CommunityCell = ({ data }) => ( |
19 | | - <Wrapper> |
20 | | - <Logo src={data.logo} /> |
21 | | - <Title>{data.title}</Title> |
22 | | - </Wrapper> |
| 21 | +const tooltipOffset = JSON.stringify({ top: 1 }) |
| 22 | + |
| 23 | +const renderContent = (data, array) => { |
| 24 | + if (!R.isEmpty(data)) { |
| 25 | + return ( |
| 26 | + <Wrapper> |
| 27 | + <Logo src={data.logo} /> |
| 28 | + <Title>{data.title}</Title> |
| 29 | + </Wrapper> |
| 30 | + ) |
| 31 | + } else if (!R.isEmpty(array)) { |
| 32 | + return ( |
| 33 | + <Wrapper> |
| 34 | + {array.map(c => ( |
| 35 | + <Wrapper key={shortid.generate()}> |
| 36 | + <div |
| 37 | + data-tip={c.title} |
| 38 | + data-for="community_cell" |
| 39 | + data-offset={tooltipOffset} |
| 40 | + > |
| 41 | + <Logo src={c.logo} /> |
| 42 | + </div> |
| 43 | + </Wrapper> |
| 44 | + ))} |
| 45 | + </Wrapper> |
| 46 | + ) |
| 47 | + } |
| 48 | + return <div /> |
| 49 | +} |
| 50 | + |
| 51 | +// TODO: array version && tooltip |
| 52 | +const CommunityCell = ({ data, array }) => ( |
| 53 | + <div> |
| 54 | + {renderContent(data, array)} |
| 55 | + <ReactTooltip effect="solid" place="bottom" id="community_cell" /> |
| 56 | + </div> |
23 | 57 | ) |
24 | 58 |
|
25 | 59 | CommunityCell.propTypes = { |
26 | 60 | // https://www.npmjs.com/package/prop-types |
27 | 61 | data: PropTypes.shape({ |
28 | | - id: PropTypes.string.isRequired, |
29 | | - logo: PropTypes.string.isRequired, |
30 | | - title: PropTypes.string.isRequired, |
31 | | - }).isRequired, |
| 62 | + id: PropTypes.string, |
| 63 | + logo: PropTypes.string, |
| 64 | + title: PropTypes.string, |
| 65 | + }), |
| 66 | + |
| 67 | + array: PropTypes.arrayOf( |
| 68 | + PropTypes.shape({ |
| 69 | + logo: PropTypes.string, |
| 70 | + title: PropTypes.string, |
| 71 | + }) |
| 72 | + ), |
32 | 73 | } |
33 | 74 |
|
34 | | -CommunityCell.defaultProps = {} |
| 75 | +CommunityCell.defaultProps = { |
| 76 | + array: [], |
| 77 | + data: {}, |
| 78 | +} |
35 | 79 |
|
36 | 80 | export default CommunityCell |
0 commit comments