// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import React from "react"; import { Field, FieldArray, Validator, WrappedFieldArrayProps } 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"; import { Participant, ParticipantSelect } from "views-components/sharing-dialog/participant-select"; 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 = () => ; export const UsersField = () => ; export const UsersSelect = ({ fields }: WrappedFieldArrayProps) => ;