import { ExerciseDeleteDialog } from "@/components/Exercises/screens/Detail/Head/ExerciseDeleteDialog"; import { Exercise } from '@/components/Exercises/models/exercise'; import { Language } from '@/components/Exercises/models/language'; import { usePermissionQuery, useProfileQuery, WgerPermissions } from "@/components/User"; import AddIcon from '@mui/icons-material/Add'; import MoreVertIcon from '@mui/icons-material/MoreVert'; import RedoIcon from '@mui/icons-material/Redo'; import { Button, Chip, Dialog, Divider, ListItemIcon, ListItemText, Menu, MenuItem, Stack, Typography } from '@mui/material'; import Grid from '@mui/material/Grid'; import React, { useState } from 'react'; import { useTranslation } from "react-i18next"; import { Link } from 'react-router-dom'; import styles from './head.module.css'; export interface HeadProp { exercise: Exercise languages: Language[] changeLanguage: (lang: Language) => void, language: Language | undefined // language displayed in the head since it's not found in the translations setEditMode: Function, editMode: boolean } export const Head = ({ exercise, languages, changeLanguage, language, setEditMode, editMode }: HeadProp) => { const [anchorMenuEl, setAnchorMenuEl] = useState(null); const [openDialog, setOpenDialog] = React.useState(false); const openLanguageMenu = Boolean(anchorMenuEl); const [t] = useTranslation(); const deletePermissionQuery = usePermissionQuery(WgerPermissions.DELETE_EXERCISE); const editPermissionQuery = usePermissionQuery(WgerPermissions.EDIT_EXERCISE); const profileQuery = useProfileQuery(); const userIsAnonymous = profileQuery.isSuccess && profileQuery.data === null; let canUserContribute = false; if (profileQuery.isSuccess && editPermissionQuery.isSuccess) { canUserContribute = editPermissionQuery.data || (profileQuery.data !== null && profileQuery.data!.isTrustworthy); } const handleLanguageButtonClick = (event: React.MouseEvent) => { setAnchorMenuEl(event.currentTarget); }; const handleMenuClose = () => { setAnchorMenuEl(null); }; const handleLanguageClick = (lang: Language) => { changeLanguage(lang); handleMenuClose(); }; const languagesList = languages.map(l => { return handleLanguageClick(l)} selected={language?.id === l.id}> {l.nameLong} {exercise.availableLanguages.includes(l.id) ? : } ; }); return ( (
setOpenDialog(false)}> setOpenDialog(false)} onChangeLanguage={() => changeLanguage(languages[0])} currentExercise={exercise} currentLanguage={language} />
{t('exercises.exercises')} > {exercise.getTranslation(language)?.name}
{t('exercises.changeExerciseLanguage')} {languagesList}
{exercise.getTranslation(language)?.name} {!userIsAnonymous && }
{exercise.equipment.map(e => { return ; })}
) ); };