2022-02-25 17:38:58 +00:00
|
|
|
import React, { memo } from "react";
|
|
|
|
import PropTypes from "prop-types";
|
|
|
|
|
|
|
|
import { EmailSettings, parseAddress } from "../../utils/email";
|
|
|
|
import Chip from "./chip";
|
|
|
|
|
2022-03-06 19:35:31 +00:00
|
|
|
import { StyledAllChips } from "../styled-emailchips";
|
2022-02-25 17:38:58 +00:00
|
|
|
|
|
|
|
const ChipsRender = memo(
|
|
|
|
({
|
|
|
|
chips,
|
|
|
|
currentChip,
|
|
|
|
blockRef,
|
|
|
|
checkSelected,
|
|
|
|
invalidEmailText,
|
2022-03-01 11:53:57 +00:00
|
|
|
chipOverLimitText,
|
2022-02-25 17:38:58 +00:00
|
|
|
onDelete,
|
|
|
|
onDoubleClick,
|
|
|
|
onSaveNewChip,
|
|
|
|
onClick,
|
|
|
|
...props
|
|
|
|
}) => {
|
|
|
|
const emailSettings = new EmailSettings();
|
|
|
|
|
|
|
|
const checkEmail = (email) => {
|
|
|
|
const emailObj = parseAddress(email, emailSettings);
|
|
|
|
return emailObj.isValid();
|
|
|
|
};
|
|
|
|
|
|
|
|
const checkIsSelected = (value) => {
|
|
|
|
return checkSelected(value);
|
|
|
|
};
|
|
|
|
|
|
|
|
return (
|
|
|
|
<StyledAllChips ref={blockRef}>
|
|
|
|
{chips?.map((it) => {
|
|
|
|
return (
|
|
|
|
<Chip
|
2022-03-06 19:35:31 +00:00
|
|
|
key={it?.email}
|
2022-02-25 17:38:58 +00:00
|
|
|
value={it}
|
|
|
|
currentChip={currentChip}
|
|
|
|
isSelected={checkIsSelected(it)}
|
2022-03-06 19:35:31 +00:00
|
|
|
isValid={checkEmail(it?.email)}
|
2022-02-25 17:38:58 +00:00
|
|
|
invalidEmailText={invalidEmailText}
|
2022-03-01 11:53:57 +00:00
|
|
|
chipOverLimitText={chipOverLimitText}
|
2022-02-25 17:38:58 +00:00
|
|
|
onDelete={onDelete}
|
|
|
|
onDoubleClick={onDoubleClick}
|
|
|
|
onSaveNewChip={onSaveNewChip}
|
|
|
|
onClick={onClick}
|
|
|
|
/>
|
|
|
|
);
|
|
|
|
})}
|
|
|
|
</StyledAllChips>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
ChipsRender.propTypes = {
|
|
|
|
chips: PropTypes.arrayOf(PropTypes.object),
|
|
|
|
currentChip: PropTypes.object,
|
|
|
|
|
|
|
|
invalidEmailText: PropTypes.string,
|
2022-03-01 11:53:57 +00:00
|
|
|
chipOverLimitText: PropTypes.string,
|
2022-02-25 17:38:58 +00:00
|
|
|
|
2022-02-28 07:56:54 +00:00
|
|
|
blockRef: PropTypes.shape({ current: PropTypes.any }),
|
2022-02-25 17:38:58 +00:00
|
|
|
|
|
|
|
checkSelected: PropTypes.func,
|
|
|
|
onDelete: PropTypes.func,
|
|
|
|
onDoubleClick: PropTypes.func,
|
|
|
|
onSaveNewChip: PropTypes.func,
|
|
|
|
onClick: PropTypes.func,
|
|
|
|
};
|
|
|
|
|
|
|
|
ChipsRender.displayName = "ChipsRender";
|
|
|
|
|
|
|
|
export default ChipsRender;
|