// @flow import React from "react"; import { translate } from "react-i18next"; import { Checkbox, InputField, SubmitButton } from "../../../../../scm-ui-components/packages/ui-components/src/index"; import TypeSelector from "./TypeSelector"; import type { PermissionCollection, PermissionEntry } from "../types/Permissions"; type Props = { t: string => string, createPermission: (permission: PermissionEntry) => void, loading: boolean, currentPermissions: PermissionCollection }; type State = { name: string, type: string, groupPermission: boolean }; class CreatePermissionForm extends React.Component { constructor(props: Props) { super(props); this.state = { name: "", type: "READ", groupPermission: false }; } render() { const { t, loading } = this.props; const { name, type, groupPermission } = this.state; return (

{t("add-permission.add-permission-heading")}

{t("permission.name")}
{t("permission.group-permission")}
{t("permission.type")}
); } isValid = () => { if ( this.state.name === null || this.state.name === "" || this.currentPermissionIncludeName() ) { return true; } return false; }; currentPermissionIncludeName = () => { for (let i = 0; i < this.props.currentPermissions.length; i++) { if (this.props.currentPermissions[i].name === this.state.name) return true; } return false; }; submit = () => { this.props.createPermission({ name: this.state.name, type: this.state.type, groupPermission: this.state.groupPermission }); this.removeState(); }; removeState = () => { this.setState({ name: "", type: "READ", groupPermission: false }); }; handleTypeChange = (type: string) => { this.setState({ type: type }); }; handleNameChange = (name: string) => { this.setState({ name: name }); }; handleGroupPermissionChange = (groupPermission: boolean) => { this.setState({ groupPermission: groupPermission }); }; } export default translate("permissions")(CreatePermissionForm);