You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
portainer/app/react/components/form-components/EnvironmentVariablesFieldset/EnvironmentVariablesFieldse...

61 lines
1.4 KiB

import { useState } from 'react';
import { array, boolean, object, SchemaOf, string } from 'yup';
import { ArrayError } from '../InputList/InputList';
import { buildUniquenessTest } from '../validate-unique';
import { AdvancedMode } from './AdvancedMode';
import { SimpleMode } from './SimpleMode';
import { Values } from './types';
export function EnvironmentVariablesFieldset({
onChange,
values,
errors,
canUndoDelete,
}: {
values: Values;
onChange(value: Values): void;
errors?: ArrayError<Values>;
canUndoDelete?: boolean;
}) {
const [simpleMode, setSimpleMode] = useState(true);
return (
<>
{simpleMode ? (
<SimpleMode
onAdvancedModeClick={() => setSimpleMode(false)}
onChange={onChange}
value={values}
errors={errors}
canUndoDelete={canUndoDelete}
/>
) : (
<AdvancedMode
onSimpleModeClick={() => setSimpleMode(true)}
onChange={onChange}
value={values}
/>
)}
</>
);
}
export function envVarValidation(): SchemaOf<Values> {
return array(
object({
name: string().required('Environment variable name is required'),
value: string().default(''),
needsDeletion: boolean().default(false),
})
).test(
'unique',
'This environment variable is already defined',
buildUniquenessTest(
() => 'This environment variable is already defined',
'name'
)
);
}