Skip to content

Commit 0cdb2f1

Browse files
committed
feat: set max number of files to 5 + change description text
1 parent c2d7fe6 commit 0cdb2f1

File tree

6 files changed

+27
-23
lines changed

6 files changed

+27
-23
lines changed

src/app/[locale]/incident/components/IncidentDescriptionForm.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import {
2626
ACCEPTED_IMAGE_TYPES,
2727
FileUpload,
2828
MAX_FILE_SIZE,
29-
MAX_NUMBER_FILES,
3029
MIN_FILE_SIZE,
3130
} from '@/components/ui/upload/FileUpload'
3231

@@ -52,9 +51,6 @@ export const IncidentDescriptionForm = () => {
5251
})
5352
.refine((files) => files.every((file) => file.size >= MIN_FILE_SIZE), {
5453
message: t('errors.file_size_too_small'),
55-
})
56-
.refine((files) => files.length <= MAX_NUMBER_FILES, {
57-
message: t('errors.file_limit_exceeded'), // Your error message here
5854
}),
5955
})
6056

@@ -160,11 +156,12 @@ export const IncidentDescriptionForm = () => {
160156
5. voeg preview toe aan summary [x]
161157
6. check toetsenboard controls pt1.[x] pt2.[]
162158
7. check overige toegankelijkheid []
163-
8. op de een of andere manier worden de files niet goed bewaard bij een refresh []
164-
9. op dit moment wordt de hele array vervangen []
159+
8. op de een of andere manier worden de files niet goed bewaard bij een refresh [x] --> weggoien
160+
9. op dit moment wordt de hele array vervangen [x]
165161
10. ipv form naar upload component alleen een methode passen daarin de update uitvoeren -> makkelijker hergebruik
166162
11. form validatie eerder triggeren []
167163
12. verschillende screen sizes
164+
13. max 5 items en description aanpassen [x]
168165
169166
vraag:
170167
- wat doen bij overschrijden max aantal files?

src/app/[locale]/incident/summary/components/IncidentSummaryForm.tsx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,12 @@ const IncidentSummaryForm = () => {
6161
if (formState.attachments.length > 0) {
6262
const signalId = res.signal_id
6363
if (signalId) {
64-
formState.attachments
65-
.slice(0, MAX_NUMBER_FILES)
66-
.forEach((attachment) => {
67-
const formData = new FormData()
68-
formData.append('signal_id', signalId)
69-
formData.append('file', attachment)
70-
postAttachments(signalId, formData)
71-
})
64+
formState.attachments.forEach((attachment) => {
65+
const formData = new FormData()
66+
formData.append('signal_id', signalId)
67+
formData.append('file', attachment)
68+
postAttachments(signalId, formData)
69+
})
7270
}
7371
}
7472
})
@@ -178,7 +176,7 @@ export const IncidentSummaryFormAttachments = ({
178176
<div className="flex flex-col gap-2">
179177
<p className="font-semibold">{title}</p>
180178
<div className="flex gap-4">
181-
{attachments.slice(0, MAX_NUMBER_FILES).map((image, index) => (
179+
{attachments.map((image, index) => (
182180
<PreviewFile file={image} key={index} />
183181
))}
184182
</div>

src/components/ui/upload/FileUpload.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export const ACCEPTED_IMAGE_TYPES = [
1313

1414
export const MAX_FILE_SIZE = 20971520
1515
export const MIN_FILE_SIZE = 30720
16-
export const MAX_NUMBER_FILES = 3
16+
export const MAX_NUMBER_FILES = 5
1717

1818
interface FormWithFiles extends FieldValues {
1919
files: File[]
@@ -37,7 +37,10 @@ export const FileUpload = ({ form }: FileUploadProps) => {
3737
const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
3838
const files = e.target.files
3939
if (files && files.length > 0) {
40-
const filesArray = Array.from(files)
40+
const filesArray = form
41+
.getValues('files')
42+
.concat(Array.from(files))
43+
.slice(0, MAX_NUMBER_FILES)
4144
form.setValue('files', filesArray)
4245
setNrOfFiles(filesArray.length)
4346
}

src/components/ui/upload/PreviewFile.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ type Props = {
1010

1111
const PreviewFile = ({ file, allowDelete = false, onDelete }: Props) => {
1212
const [imageUrl, setImageUrl] = useState<string>('')
13-
const t = useTranslations('general.button')
13+
const t = useTranslations('general')
1414

1515
useEffect(() => {
1616
const objectUrl = file['name'] ? URL.createObjectURL(file) : ''
@@ -21,11 +21,11 @@ const PreviewFile = ({ file, allowDelete = false, onDelete }: Props) => {
2121

2222
return (
2323
<div className="relative">
24-
<img className="empty-box" src={imageUrl} alt="Voorbeeld weergave" />
24+
<img className="empty-box" src={imageUrl} alt={t('file.preview')} />
2525
{allowDelete && (
2626
<button
2727
onClick={onDelete}
28-
aria-label={t('delete_file')}
28+
aria-label={t('button.delete_file')}
2929
className="absolute bottom-0 right-0 bg-gray-900 bg-opacity-50 text-white w-full flex justify-center items-center py-2 hover:bg-opacity-80 transition-colors duration-200 delay-100"
3030
>
3131
<FaRegTrashCan className="w-5 h-5" />

translations/en.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
"form": {
1515
"describe_textarea_heading": "What is it about?",
1616
"describe_textarea_description": "Do not type personal information in this description. We will ask this of you later in this form.",
17-
"describe_upload_heading": "Add pictures (not required)",
18-
"describe_upload_description": "Add a photo to clarify the situation",
17+
"describe_upload_heading": "Add photos (not required)",
18+
"describe_upload_description": "Add a photo to clarify the situation (maximum of 5 photos).",
1919
"errors": {
2020
"textarea_required": "This is a required field",
2121
"file_type_invalid": "Invalid file type. Only JPEG, PNG, and GIF are accepted.",
@@ -96,6 +96,9 @@
9696
"button": {
9797
"upload_file": "Upload file",
9898
"delete_file": "Delete file"
99+
},
100+
"file": {
101+
"preview": "Preview image"
99102
}
100103
},
101104
"routing": {

translations/nl.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"describe_textarea_heading": "Waar gaat het om?",
1616
"describe_textarea_description": "Typ geen persoonsgegevens in deze omschrijving. We vragen dit later in dit formulier aan u.",
1717
"describe_upload_heading": "Foto's toevoegen (niet verplicht)",
18-
"describe_upload_description": "Voeg een foto toe om de situatie te verduidelijken",
18+
"describe_upload_description": "Voeg een foto toe om de situatie te verduidelijken (maximaal 5 foto's).",
1919
"errors": {
2020
"textarea_required": "Dit is een verplicht veld",
2121
"file_type_invalid": "Ongeldig bestandstype. Alleen JPEG, PNG, en GIF zijn toegestaan.",
@@ -97,6 +97,9 @@
9797
"button": {
9898
"upload_file": "Upload bestand",
9999
"delete_file": "Verwijder bestand"
100+
},
101+
"file": {
102+
"preview": "Voorbeeld weergave"
100103
}
101104
},
102105
"routing": {

0 commit comments

Comments
 (0)