Add param to validator if creating new or editing old

This commit is contained in:
arttu
2024-06-28 00:40:11 +03:00
parent 1c90b6ea39
commit 83d65d8be5
2 changed files with 6 additions and 3 deletions
@@ -63,7 +63,7 @@ export type DetailContextType<T> = {
disabled?: boolean
) => JSX.Element
radioSelection: (field: keyof EditDataType<T>, options: Array<DropdownOption | string>, name: string) => JSX.Element
validator: (editData: EditDataType<T>, field: keyof EditDataType<T>) => ValidationObject
validator: (editData: EditDataType<T>, field: keyof EditDataType<T>, isNew: boolean) => ValidationObject
}
export const DetailContext = createContext<DetailContextType<unknown>>(null!)
@@ -90,7 +90,7 @@ export const DetailContextProvider = <T extends object>({
editData,
setEditData: (data: unknown) => setEditData(data as EditDataType<T>),
validator: (editData: unknown, fieldName: keyof EditDataType<T>) =>
contextState.validator(editData as EditDataType<T>, fieldName),
contextState.validator(editData as EditDataType<T>, fieldName, !contextState.mode.new),
}}
>
{children}
+4 -1
View File
@@ -3,12 +3,15 @@ import { Validators, validator } from './validator'
export const validateLocality = (
editData: EditDataType<LocalityDetailsType>,
fieldName: keyof EditDataType<LocalityDetailsType>
fieldName: keyof EditDataType<LocalityDetailsType>,
isNew: boolean
) => {
const validators: Validators<Partial<EditDataType<LocalityDetailsType>>> = {
max_age: {
name: 'Age (max)',
asNumber: (num: number) => {
// eslint-disable-next-line no-console
if (isNew) console.log('Is new') // TODO remove
if (editData.min_age && num < editData.min_age) return 'Max value cannot be lower than min'
return
},