You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
spa_instat_tv/src/features/UserFavorites/index.tsx

108 lines
2.7 KiB

import {
MouseEvent,
FocusEvent,
useState,
} from 'react'
import map from 'lodash/map'
import { FavoritesActions } from 'requests'
import { Modal } from 'features/Modal'
import { ProfileLink } from 'features/ProfileLink'
import { Close } from 'libs/objects/Close'
import { TooltipBlock } from './TooltipBlock'
import { FavoritesToolip } from './FavoritesTooltip'
import { useUserFavoritesStore } from './store'
import {
UserSportFavItemLogoWrapper,
UserSportFavXWrapper,
UserSportFavImgWrapper,
UserSportFavStar,
UserSportFavWrapper,
ExclamationSign,
FavoriteModal,
Text,
ScrollWrapper,
} from './styled'
type Props = {
marginTop?: number,
}
export const UserFavorites = ({ marginTop }: Props) => {
const {
addRemoveFavorite,
close,
isOpen,
userFavorites,
} = useUserFavoritesStore()
const [position, setPosition] = useState(0)
const getPosition = (event: MouseEvent<HTMLDivElement> | FocusEvent<HTMLDivElement>) => {
if (event.currentTarget) {
setPosition(event.currentTarget.getBoundingClientRect().top)
}
}
return (
<UserSportFavWrapper>
<UserSportFavStar marginTop={marginTop} />
<ScrollWrapper>
{
map(userFavorites, (item) => (
<UserSportFavItemLogoWrapper
onFocus={getPosition}
onMouseOver={getPosition}
key={`${item.type}_${item.sport}_${item.id}`}
id='main_favourites'
>
<UserSportFavXWrapper
onClick={() => addRemoveFavorite({
action: FavoritesActions.REMOVE,
id: item.id,
sport: item.sport,
type: item.type,
})}
>
<Close size={9} />
<FavoritesToolip
topPosition={position}
favorite={item}
/>
</UserSportFavXWrapper>
<TooltipBlock
topPosition={position}
favorite={item}
/>
<ProfileLink
id={item.id}
sportType={item.sport}
profileType={item.type}
>
<UserSportFavImgWrapper
id={item.id}
altNameObj={item}
sportType={item.sport}
profileType={item.type}
/>
</ProfileLink>
</UserSportFavItemLogoWrapper>
))
}
</ScrollWrapper>
<Modal
isOpen={isOpen}
close={close}
>
<FavoriteModal>
<ExclamationSign />
<Text t='add_to_favorites_error' />
</FavoriteModal>
</Modal>
</UserSportFavWrapper>
)
}