From ddd12b30191cb64ac0c90ea98054777a1335279c Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 5 Feb 2026 14:01:37 +0000 Subject: Implement validation for empty checkbox selections in CheckboxListInput - Added useEffect to handle cases where required checkboxes are not selected, setting value to null. - Updated onChange type definition to allow for null values in checkbox selections. --- admin/src/components/CheckboxListInput.tsx | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'admin/src/components/CheckboxListInput.tsx') diff --git a/admin/src/components/CheckboxListInput.tsx b/admin/src/components/CheckboxListInput.tsx index 07d2776..11251b4 100644 --- a/admin/src/components/CheckboxListInput.tsx +++ b/admin/src/components/CheckboxListInput.tsx @@ -1,4 +1,5 @@ import type { ReactNode } from 'react'; +import { useEffect } from 'react'; import { Box, Checkbox, Field, Flex, Typography } from '@strapi/design-system'; import { useIntl } from 'react-intl'; @@ -6,7 +7,10 @@ import { useIntl } from 'react-intl'; type CheckboxListInputProps = { name: string; value?: unknown; - onChange: (eventOrPath: { target: { name: string; value: string[] } }, value?: unknown) => void; + onChange: ( + eventOrPath: { target: { name: string; value: string[] | null } }, + value?: unknown + ) => void; attribute?: { enum?: string[]; options?: { @@ -65,6 +69,21 @@ const CheckboxListInput = ({ const enumValues = getEnumValues(attribute); const selectedValues = normalizeValue(value); + useEffect(() => { + if (!required) { + return; + } + + if (Array.isArray(value) && value.length === 0) { + onChange({ + target: { + name, + value: null, + }, + }); + } + }, [name, onChange, required, value]); + const handleToggle = (option: string, isChecked: boolean) => { const nextValues = isChecked ? Array.from(new Set([...selectedValues, option])) @@ -73,7 +92,7 @@ const CheckboxListInput = ({ onChange({ target: { name, - value: nextValues, + value: required && nextValues.length === 0 ? null : nextValues, }, }); }; -- cgit v1.2.3