diff --git a/src/components/inputs/reactHookForm/text/UniqueNameInput.tsx b/src/components/inputs/reactHookForm/text/UniqueNameInput.tsx index d2694325..a6034750 100644 --- a/src/components/inputs/reactHookForm/text/UniqueNameInput.tsx +++ b/src/components/inputs/reactHookForm/text/UniqueNameInput.tsx @@ -27,6 +27,7 @@ export interface UniqueNameInputProps { >; activeDirectory?: UUID; currentName?: string; + isPrefilled?: boolean; sx?: SxStyle; fullWidth?: boolean; } @@ -42,6 +43,7 @@ export function UniqueNameInput({ onManualChangeCallback, formProps, currentName = '', + isPrefilled = false, activeDirectory, sx, fullWidth = true, @@ -58,6 +60,7 @@ export function UniqueNameInput({ currentName, elementType, activeDirectory, + isPrefilled, }); // Handle on user's change diff --git a/src/hooks/use-unique-name-validation.ts b/src/hooks/use-unique-name-validation.ts index 03cefa3b..b30457e8 100644 --- a/src/hooks/use-unique-name-validation.ts +++ b/src/hooks/use-unique-name-validation.ts @@ -18,6 +18,7 @@ interface UseUniqueNameValidationParams { elementType: ElementType; activeDirectory?: string; elementExists?: (directory: UUID, name: string, type: ElementType) => Promise; + isPrefilled?: boolean; } export function useUniqueNameValidation({ @@ -26,6 +27,7 @@ export function useUniqueNameValidation({ elementType, activeDirectory, elementExists = elementAlreadyExists, + isPrefilled = false, }: UseUniqueNameValidationParams) { const { setError, @@ -36,6 +38,7 @@ export function useUniqueNameValidation({ const { field: { value }, + fieldState: { isDirty: fieldIsDirty }, } = useController({ name }); const { @@ -92,14 +95,20 @@ export function useUniqueNameValidation({ debouncedHandleCheckName(trimmedValue); } - // if the form is unchanged, we don't do custom validation - if (!formIsDirty) { + // if the name is unchanged, we don't do custom validation + if (!isPrefilled && !fieldIsDirty) { clearErrors(name); return; } - if (trimmedValue === defaultFieldValue && trimmedValue.length > 0) { + if (isPrefilled && !formIsDirty) { + clearErrors(name); return; } + + if (isPrefilled && trimmedValue === defaultFieldValue && trimmedValue.length > 0) { + return; + } + if (trimmedValue) { clearErrors(name); setError('root.isValidating', { @@ -120,7 +129,9 @@ export function useUniqueNameValidation({ setError, clearErrors, name, + fieldIsDirty, formIsDirty, + isPrefilled, defaultFieldValue, directory, selectedDirectory,