Files
backroad/app/react/portainer/gitops/ComposePathField/ComposePathField.tsx

81 lines
2.3 KiB
TypeScript

import { useStateWrapper } from '@/react/hooks/useStateWrapper';
import { FormControl } from '@@/form-components/FormControl';
import { TextTip } from '@@/Tip/TextTip';
import { Input } from '@@/form-components/Input';
import { GitFormModel } from '../types';
import { isBE } from '../../feature-flags/feature-flags.service';
import { PathSelector } from './PathSelector';
interface Props {
errors?: string;
value: string;
onChange(value: string): void;
isCompose: boolean;
model: GitFormModel;
isDockerStandalone: boolean;
}
export function ComposePathField({
value,
onChange,
isCompose,
model,
isDockerStandalone,
errors,
}: Props) {
const [inputValue, updateInputValue] = useStateWrapper(value, onChange);
return (
<div className="form-group">
<span className="col-sm-12">
<TextTip color="blue" className="mb-2">
<span>
Indicate the path to the {isCompose ? 'Compose' : 'Manifest'} file
from the root of your repository (requires a yaml, yml, json, or hcl
file extension).
</span>
{isDockerStandalone && (
<span className="ml-2">
To enable rebuilding of an image if already present on Docker
standalone environments, include
<code>pull_policy: build</code> in your compose file as per{' '}
<a href="https://docs.docker.com/compose/compose-file/#pull_policy">
Docker documentation
</a>
.
</span>
)}
</TextTip>
</span>
<div className="col-sm-12">
<FormControl
label={isCompose ? 'Compose path' : 'Manifest path'}
inputId="stack_repository_path"
required
errors={errors}
>
{isBE ? (
<PathSelector
value={value}
onChange={onChange}
placeholder={isCompose ? 'docker-compose.yml' : 'manifest.yml'}
model={model}
/>
) : (
<Input
value={inputValue}
onChange={(e) => {
updateInputValue(e.target.value);
}}
placeholder={isCompose ? 'docker-compose.yml' : 'manifest.yml'}
/>
)}
</FormControl>
</div>
</div>
);
}