// @flow import React from "react"; import { translate } from "react-i18next"; import type { 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: BranchRequest => void, repository: Repository, branches: Branch[], loading?: boolean, transmittedName?: string, disabled?: boolean, t: 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 ( <>