2019-10-05 09:10:34 +13:00
|
|
|
import React, { memo } from 'react';
|
|
|
|
|
import URILink from './URILink';
|
|
|
|
|
|
2021-04-22 21:05:53 +12:00
|
|
|
const LinksSentence = memo(({ items, itemType, className, nolinks }) => {
|
2020-03-05 21:32:54 +13:00
|
|
|
if (!items) return <span className={`${className} links-sentence`}>-</span>;
|
2019-10-05 09:10:34 +13:00
|
|
|
|
|
|
|
|
return (
|
2020-03-05 21:32:54 +13:00
|
|
|
<span className={`${className} links-sentence`}>
|
2019-10-05 09:10:34 +13:00
|
|
|
{
|
2021-04-22 21:16:21 +12:00
|
|
|
items.map(({ name, uri, type }, index) => {
|
|
|
|
|
if (!name) return <span>-</span>;
|
2019-10-05 09:10:34 +13:00
|
|
|
|
2021-04-22 21:16:21 +12:00
|
|
|
let separator = null;
|
|
|
|
|
if (index === items.length - 2) {
|
|
|
|
|
separator = ' and ';
|
|
|
|
|
} else if (index < items.length - 2) {
|
|
|
|
|
separator = ', ';
|
|
|
|
|
}
|
2019-10-05 09:10:34 +13:00
|
|
|
|
2021-04-22 21:16:21 +12:00
|
|
|
let content = null;
|
|
|
|
|
if (!name) {
|
|
|
|
|
content = <span>-</span>;
|
|
|
|
|
} else if (!uri || nolinks) {
|
|
|
|
|
content = <span>{name}</span>;
|
|
|
|
|
} else {
|
|
|
|
|
content = (
|
|
|
|
|
<URILink
|
|
|
|
|
className="links-sentence__item links-sentence__item--link"
|
|
|
|
|
uri={uri}
|
|
|
|
|
type={itemType || type}
|
|
|
|
|
>
|
|
|
|
|
{name}
|
|
|
|
|
</URILink>
|
|
|
|
|
);
|
|
|
|
|
}
|
2019-10-05 09:10:34 +13:00
|
|
|
|
2021-04-22 21:16:21 +12:00
|
|
|
return (
|
|
|
|
|
<span key={`index_${uri}`}>
|
|
|
|
|
{content}
|
|
|
|
|
{separator}
|
|
|
|
|
</span>
|
|
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
}
|
2019-10-05 09:10:34 +13:00
|
|
|
</span>
|
|
|
|
|
);
|
|
|
|
|
});
|
2021-01-09 22:52:45 +13:00
|
|
|
|
|
|
|
|
export default LinksSentence;
|