X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/fd9ad9a425f6aed71c18948cf29c0535292a14c6..3c7e3cdc547ad5468421e1c049daa94b0d4b8bc0:/src/views-components/form-fields/project-form-fields.tsx diff --git a/src/views-components/form-fields/project-form-fields.tsx b/src/views-components/form-fields/project-form-fields.tsx index 8243cfe3..be762b51 100644 --- a/src/views-components/form-fields/project-form-fields.tsx +++ b/src/views-components/form-fields/project-form-fields.tsx @@ -2,18 +2,40 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from "react"; -import { Field } from "redux-form"; -import { TextField, RichEditorTextField } from "~/components/text-field/text-field"; -import { PROJECT_NAME_VALIDATION } from "~/validators/validators"; +import React from "react"; +import { Field, Validator } from "redux-form"; +import { TextField, RichEditorTextField } from "components/text-field/text-field"; +import { PROJECT_NAME_VALIDATION, PROJECT_NAME_VALIDATION_ALLOW_SLASH } from "validators/validators"; +import { connect } from "react-redux"; +import { RootState } from "store/store"; -export const ProjectNameField = () => - ; +interface ProjectNameFieldProps { + validate: Validator[]; + label?: string; +} + +// Validation behavior depends on the value of ForwardSlashNameSubstitution. +// +// Redux form doesn't let you pass anonymous functions to 'validate' +// -- it fails with a very confusing recursive-update-exceeded error. +// So we can't construct the validation function on the fly. +// +// As a workaround, use ForwardSlashNameSubstitution to choose between one of two const-defined validators. + +export const ProjectNameField = connect( + (state: RootState) => { + return { + validate: (state.auth.config.clusterConfig.Collections.ForwardSlashNameSubstitution === "" ? + PROJECT_NAME_VALIDATION : PROJECT_NAME_VALIDATION_ALLOW_SLASH) + }; + })((props: ProjectNameFieldProps) => + + ); export const ProjectDescriptionField = () =>