import React from "react"; import { connect } from "react-redux"; import AnnoDialog from "../../annoDialog"; import LabelInput from "../../labelInput"; @connect((state) => ({ annotations: state.annotations, schema: state.annoMatrix?.schema, obsCrossfilter: state.obsCrossfilter, genesetsUI: state.genesetsUI, genesets: state.genesets.genesets, })) class RenameGeneset extends React.PureComponent { constructor(props) { super(props); this.state = { newGenesetName: props.parentGeneset, newGenesetDescription: props.parentGenesetDescription, }; } disableEditGenesetNameMode = (e) => { const { dispatch } = this.props; this.setState({ newGenesetName: "", newGenesetDescription: "", }); dispatch({ type: "geneset: disable rename geneset mode", }); if (e) e.preventDefault(); }; renameGeneset = (e) => { const { dispatch, genesetsUI } = this.props; const { newGenesetName, newGenesetDescription } = this.state; dispatch({ type: "geneset: update", genesetName: genesetsUI.isEditingGenesetName, update: { genesetName: newGenesetName, genesetDescription: newGenesetDescription, }, }); dispatch({ type: "geneset: disable rename geneset mode", }); e.preventDefault(); }; genesetNameError = () => { return false; }; handleChange = (e) => { this.setState({ newGenesetName: e }); }; handleChangeDescription = (e) => { this.setState({ newGenesetDescription: e }); }; validate = (genesetName, genesets) => { return ( !genesets.has(genesetName) && // eslint-disable-next-line no-control-regex -- unicode 0-31 127-65535 genesetName.match(/^\s|[\u0000-\u001F\u007F-\uFFFF]|[ ]{2,}|^$|\s$/g) ?.length ); }; render() { const { newGenesetName, newGenesetDescription } = this.state; const { genesetsUI, parentGeneset, parentGenesetDescription, genesets, } = this.props; return ( <> } secondaryInstructions="Edit description" secondaryInput={ } handleSubmit={this.renameGeneset} handleCancel={this.disableEditGenesetNameMode} /> ); } } export default RenameGeneset;