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

IQSS / dataverse-frontend / 8394432721

22 Mar 2024 05:52PM UTC coverage: 97.123% (-0.4%) from 97.473%
8394432721

Pull #351

github

ekraffmiller
fix: move AuthorFormGroup.stories.tsx to Sections folder
Pull Request #351: 337 multiple values field type

564 of 589 branches covered (95.76%)

Branch coverage included in aggregate %.

26 of 34 new or added lines in 4 files covered. (76.47%)

1664 of 1705 relevant lines covered (97.6%)

3620.63 hits per line

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

89.47
/src/sections/create-dataset/AuthorFormGroup.tsx
1
import { Form } from '@iqss/dataverse-design-system'
2
import { useTranslation } from 'react-i18next'
3
import { SubmissionStatus } from './useCreateDatasetForm'
4
import { DatasetMetadataSubField } from '../../dataset/domain/models/Dataset'
5
import { Col, Row } from '@iqss/dataverse-design-system'
6
import { DynamicFieldsButtons } from './dynamic-fields-buttons/DynamicFieldsButtons'
7

8
import { ChangeEvent } from 'react'
9
import _ from 'lodash'
10
import { useMultipleFields } from './useMultipleFields'
11
interface AuthorFormGroupProps {
12
  submissionStatus: SubmissionStatus
13
  initialAuthorFields: DatasetMetadataSubField[]
14
  updateFormData: (name: string, value: string | DatasetMetadataSubField[]) => void
15
}
16

17
export function AuthorFormGroup({
10✔
18
  submissionStatus,
19
  initialAuthorFields,
20
  updateFormData
21
}: AuthorFormGroupProps) {
483✔
22
  const { t } = useTranslation('createDataset')
483✔
23
  const { multipleFields, setMultipleFields, addField, removeField } =
24
    useMultipleFields(initialAuthorFields)
483✔
25

26
  const isAuthorValid = (index: number) => {
483✔
27
    return !!multipleFields[index].authorName
483✔
28
  }
29
  const handleFieldChange = (index: number, event: ChangeEvent<HTMLInputElement>) => {
483✔
30
    const updatedAuthorFields = _.cloneDeep(multipleFields)
80✔
31
    updatedAuthorFields[index].authorName = (event.target as HTMLInputElement).value
80✔
32
    setMultipleFields(updatedAuthorFields)
80✔
33
    updateFormData('metadataBlocks.0.fields.author', multipleFields)
80✔
34
  }
35

36
  return (
483✔
37
    <>
38
      {multipleFields.map((author, index) => (
39
        <Form.Group controlId="author-name" required key={index}>
483✔
40
          <Row>
41
            <Col sm={3}>
42
              {index === 0 && (
966✔
43
                <Form.Group.Label required message={t('datasetForm.fields.authorName.tooltip')}>
44
                  {t('datasetForm.fields.authorName.label')}
45
                </Form.Group.Label>
46
              )}
47
            </Col>
48
            <Col sm={6}>
49
              <Form.Group.Input
50
                disabled={submissionStatus === SubmissionStatus.IsSubmitting}
51
                type="text"
52
                name={`metadataBlocks.0.fields.author.${index}.authorName`}
53
                onChange={(event: ChangeEvent<HTMLInputElement>) => handleFieldChange(index, event)}
80✔
54
                isInvalid={!isAuthorValid(index)}
55
                value={author.authorName}
56
                required
57
              />
58
              <Form.Group.Feedback type="invalid">
59
                {t('datasetForm.fields.authorName.feedback')}
60
              </Form.Group.Feedback>
61
            </Col>
62
            <Col sm={3}>
63
              <DynamicFieldsButtons
64
                originalField={index === 0}
65
                onAddButtonClick={() => {
NEW
66
                  addField(index, { authorName: '' })
×
67
                }}
68
                onRemoveButtonClick={() => {
NEW
69
                  removeField(index)
×
70
                }}
71
              />
72
            </Col>
73
          </Row>
74
        </Form.Group>
75
      ))}
76
    </>
77
  )
78
}
10✔
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

© 2025 Coveralls, Inc