88 lines
1.9 KiB
JavaScript
Raw Normal View History

2018-02-16 16:53:01 +01:00
/**
*
* ListHeader
*
*/
import React from 'react';
import { FormattedMessage } from 'react-intl';
import PropTypes from 'prop-types';
2018-02-16 16:53:01 +01:00
import StyledLi from './StyledLi';
2018-02-16 16:53:01 +01:00
/* eslint-disable jsx-a11y/no-static-element-interactions */
/* eslint-disable react/no-array-index-key */
function ListHeader({ changeSort, sort }) {
2018-02-16 16:53:01 +01:00
const titles = [
'hash',
'name',
'updated',
'size',
// 'related',
'',
2018-02-22 12:08:11 +01:00
'',
2018-02-16 16:53:01 +01:00
];
const handleChangeSort = name => {
2019-09-11 11:00:40 +02:00
if (sort === `${name}:ASC`) {
changeSort(`${name}:DESC`);
} else if (sort === `${name}:DESC`) {
changeSort('hash:ASC');
} else if (name === 'updated' || name === 'related') {
2019-09-11 11:00:40 +02:00
changeSort('hash:ASC');
} else {
2019-09-11 11:00:40 +02:00
changeSort(`${name}:ASC`);
}
};
const shouldDisplaySort = title =>
2019-09-11 11:00:40 +02:00
(sort === `${title}:ASC` && 'icon') ||
(sort === `${title}:DESC` && 'iconDesc') ||
'';
2018-02-16 16:53:01 +01:00
return (
<StyledLi>
<div className="listHeader">
2018-02-23 12:21:57 +01:00
<div>
<div />
<div
className={shouldDisplaySort('type')}
onClick={() => handleChangeSort('type')}
>
2018-02-23 12:21:57 +01:00
<FormattedMessage id="upload.ListHeader.type" />
<span />
2018-02-23 12:21:57 +01:00
</div>
</div>
2018-02-16 16:53:01 +01:00
{titles.map((title, key) => {
if (title !== '') {
return (
<div
key={key}
className={shouldDisplaySort(title)}
onClick={() => handleChangeSort(title)}
>
2018-02-16 16:53:01 +01:00
<FormattedMessage id={`upload.ListHeader.${title}`} />
<span />
2018-02-16 16:53:01 +01:00
</div>
);
}
return <div key={key} />;
})}
</div>
</StyledLi>
2018-02-16 16:53:01 +01:00
);
}
ListHeader.defaultProps = {
changeSort: () => {},
};
ListHeader.propTypes = {
changeSort: PropTypes.func,
sort: PropTypes.string.isRequired,
};
2018-02-16 16:53:01 +01:00
export default ListHeader;