mirror of https://github.com/portainer/portainer
28 lines
783 B
TypeScript
28 lines
783 B
TypeScript
![]() |
import { SchemaOf, array, boolean, number, object } from 'yup';
|
||
|
import { useMemo } from 'react';
|
||
|
|
||
|
import { EdgeGroup } from '../../types';
|
||
|
|
||
|
import { FormValues } from './types';
|
||
|
import { useNameValidation } from './NameField';
|
||
|
|
||
|
export function useValidation({
|
||
|
id,
|
||
|
}: { id?: EdgeGroup['Id'] } = {}): SchemaOf<FormValues> {
|
||
|
const nameValidation = useNameValidation(id);
|
||
|
return useMemo(
|
||
|
() =>
|
||
|
object({
|
||
|
name: nameValidation,
|
||
|
dynamic: boolean().default(false),
|
||
|
environmentIds: array(number().required()),
|
||
|
partialMatch: boolean().default(false),
|
||
|
tagIds: array(number().required()).when('dynamic', {
|
||
|
is: true,
|
||
|
then: (schema) => schema.min(1, 'Tags are required'),
|
||
|
}),
|
||
|
}),
|
||
|
[nameValidation]
|
||
|
);
|
||
|
}
|