• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wger-project / react / 25381278702

05 May 2026 02:05PM UTC coverage: 74.492% (-0.1%) from 74.633%
25381278702

push

github

rolandgeider
Upgrade dependencies

2050 of 3129 branches covered (65.52%)

Branch coverage included in aggregate %.

6118 of 7836 relevant lines covered (78.08%)

28.48 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

60.61
/src/components/Exercises/forms/ExerciseNotes.tsx
1
import AddIcon from '@mui/icons-material/Add';
3✔
2
import DeleteIcon from '@mui/icons-material/Delete';
3✔
3
import { IconButton, InputAdornment, TextField } from "@mui/material";
3✔
4
import Grid from '@mui/material/Grid';
3✔
5
import { useField } from "formik";
3✔
6
import React, { useState } from "react";
3✔
7
import { useTranslation } from "react-i18next";
3✔
8

9
export function ExerciseNotes(props: { fieldName: string }) {
3✔
10
    const [t] = useTranslation();
44✔
11
    const [field, meta, helpers] = useField(props.fieldName);
44✔
12
    const [newNoteValue, setNewNoteValue] = useState<string>('');
44✔
13

14
    const deleteAtIndex = (index: number) => {
44✔
15
        helpers.setValue(field.value.filter((_: string, b: number) => b !== index));
×
16
    };
17

18
    const setNoteValueIndex = (index: number, note: string) => {
44✔
19
        field.value[index] = note;
×
20
        helpers.setValue(field.value);
×
21
    };
22
    const addEntry = () => {
44✔
23
        field.value.push(newNoteValue);
×
24
        helpers.setValue(field.value);
×
25
        setNewNoteValue('');
×
26
    };
27

28
    return <>
44✔
29
        <Grid size={12}>
30
            <TextField
31
                fullWidth
32
                label={t('exercises.newNote')}
33
                sx={{ mb: 3 }}
34
                variant="standard"
35
                value={newNoteValue}
36
                onChange={event => setNewNoteValue(event.target.value)}
×
37
                error={meta.touched && Boolean(meta.error)}
48✔
38
                helperText={meta.touched && meta.error ? meta.error : t('exercises.notesHelpText')}
92!
39
                slotProps={{
40
                    input: {
41
                        endAdornment: (
42
                            <InputAdornment position="end">
43
                                <IconButton onClick={addEntry}>
44
                                    <AddIcon />
45
                                </IconButton>
46
                            </InputAdornment>
47
                        ),
48
                    },
49
                }}
50
            />
51
        </Grid>
52
        {field.value.map((note: string, index: number) =>
53
            <TextField
×
54
                key={index}
55
                fullWidth
56
                value={note}
57
                onChange={(event) => setNoteValueIndex(index, event.target.value)}
×
58
                sx={{ mt: 2 }}
59
                variant="standard"
60
                error={meta.touched && Boolean(meta.error)}
×
61
                slotProps={{
62
                    input: {
63
                        endAdornment: (
64
                            <InputAdornment position="end">
65
                                <IconButton onClick={() => deleteAtIndex(index)}>
×
66
                                    <DeleteIcon />
67
                                </IconButton>
68
                            </InputAdornment>
69
                        ),
70
                    },
71
                }}
72

73
            />
74
        )}
75
    </>;
76
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc