1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-22 22:59:44 +02:00
planka/client/src/components/CardModal/Attachments/Attachments.jsx

61 lines
1.4 KiB
React
Raw Normal View History

2020-04-21 05:04:34 +05:00
import React, { useCallback } from 'react';
import PropTypes from 'prop-types';
import Item from './Item';
2020-04-23 03:02:53 +05:00
const Attachments = React.memo(({ items, onUpdate, onDelete, onCoverUpdate }) => {
const handleCoverSelect = useCallback(
(id) => {
onCoverUpdate(id);
},
[onCoverUpdate],
);
const handleCoverDeselect = useCallback(() => {
onCoverUpdate(null);
}, [onCoverUpdate]);
2020-04-21 05:04:34 +05:00
const handleUpdate = useCallback(
(id, data) => {
onUpdate(id, data);
},
[onUpdate],
);
const handleDelete = useCallback(
(id) => {
onDelete(id);
},
[onDelete],
);
return (
<>
{items.map((item) => (
<Item
key={item.id}
name={item.name}
url={item.url}
2020-04-23 03:02:53 +05:00
coverUrl={item.coverUrl}
2020-04-21 05:04:34 +05:00
createdAt={item.createdAt}
2020-04-23 03:02:53 +05:00
isCover={item.isCover}
2020-04-21 05:04:34 +05:00
isPersisted={item.isPersisted}
2020-04-23 03:02:53 +05:00
onCoverSelect={() => handleCoverSelect(item.id)}
onCoverDeselect={handleCoverDeselect}
2020-04-21 05:04:34 +05:00
onUpdate={(data) => handleUpdate(item.id, data)}
onDelete={() => handleDelete(item.id)}
/>
))}
</>
);
});
Attachments.propTypes = {
items: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types
onUpdate: PropTypes.func.isRequired,
onDelete: PropTypes.func.isRequired,
2020-04-23 03:02:53 +05:00
onCoverUpdate: PropTypes.func.isRequired,
2020-04-21 05:04:34 +05:00
};
export default Attachments;