import {useTranslation} from "react-i18next"; import React, {useCallback, useEffect, useState} from "react"; import {Card, Form} from "react-bootstrap"; import CardHeader from "../CardHeader.jsx"; import {faCheck, faList, faPencil} from "@fortawesome/free-solid-svg-icons"; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import MultiSelect from "../../input/MultiSelect.jsx"; import {faTrashAlt} from "@fortawesome/free-regular-svg-icons"; const AddressListCard = ({n, group, editGroup, allAddresses, remove}) => { const {t} = useTranslation(); const [selectedIndexes, setSelectedIndexes] = useState([]); const [editingName, setEditingName] = useState(false); const [name, setName] = useState(group.name); useEffect(() => { if (!selectedIndexes.length && allAddresses?.length && group?.addresses?.length) { setSelectedIndexes(group.addresses.map(address => allAddresses.indexOf(address))) } }, [selectedIndexes, group, allAddresses]) const applySelected = useCallback(() => { editGroup({...group, addresses: allAddresses.filter((a, i) => selectedIndexes.includes(i))}) }, [editGroup, group, allAddresses, selectedIndexes]); const editName = useCallback(newName => { editGroup({...group, name: newName}); }, [editGroup, group]); useEffect(() => { if (!editingName && name !== group.name) editName(name); }, [editName, editingName, name]) const selectedAddresses = allAddresses.filter((a, i) => selectedIndexes.includes(i)); const isUpToDate = !selectedIndexes.length || selectedAddresses.length === group.addresses.length && selectedAddresses.every((a, i) => a === group.addresses[i]); return ( setName(e.target.value)}/> : group.name }> ) } export default AddressListCard;