import React from 'react'; import { translate } from 'react-i18next'; import { Repository, Branch, BranchRequest } from '@scm-manager/ui-types'; import { Select, InputField, SubmitButton, validation as validator, } from '@scm-manager/ui-components'; import { orderBranches } from '../util/orderBranches'; type Props = { submitForm: (p: BranchRequest) => void; repository: Repository; branches: Branch[]; loading?: boolean; transmittedName?: string; disabled?: boolean; t: (p: string) => string; }; type State = { source?: string; name?: string; nameValidationError: boolean; }; class BranchForm extends React.Component { constructor(props: Props) { super(props); this.state = { nameValidationError: false, name: props.transmittedName, }; } isFalsy(value) { return !value; } isValid = () => { const { source, name } = this.state; return !( this.state.nameValidationError || this.isFalsy(source) || this.isFalsy(name) ); }; submit = (event: Event) => { event.preventDefault(); if (this.isValid()) { this.props.submitForm({ name: this.state.name, parent: this.state.source, }); } }; render() { const { t, branches, loading, transmittedName, disabled } = this.props; const { name } = this.state; orderBranches(branches); const options = branches.map(branch => ({ label: branch.name, value: branch.name, })); return ( <>