Add ref to focus in Collection List, handle whitespace errors in renaming sketch and collection
This commit is contained in:
parent
47458ae601
commit
d348f79d2a
2 changed files with 34 additions and 19 deletions
|
@ -25,6 +25,7 @@ class CollectionListRowBase extends React.Component {
|
||||||
renameOpen: false,
|
renameOpen: false,
|
||||||
renameValue: '',
|
renameValue: '',
|
||||||
};
|
};
|
||||||
|
this.renameInput = React.createRef();
|
||||||
}
|
}
|
||||||
|
|
||||||
onFocusComponent = () => {
|
onFocusComponent = () => {
|
||||||
|
@ -89,7 +90,7 @@ class CollectionListRowBase extends React.Component {
|
||||||
this.setState({
|
this.setState({
|
||||||
renameOpen: true,
|
renameOpen: true,
|
||||||
renameValue: this.props.collection.name,
|
renameValue: this.props.collection.name,
|
||||||
});
|
}, () => this.renameInput.current.focus());
|
||||||
}
|
}
|
||||||
|
|
||||||
handleRenameChange = (e) => {
|
handleRenameChange = (e) => {
|
||||||
|
@ -99,23 +100,23 @@ class CollectionListRowBase extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
handleRenameEnter = (e) => {
|
handleRenameEnter = (e) => {
|
||||||
const isValid = this.state.renameValue !== '';
|
|
||||||
|
|
||||||
if (e.key === 'Enter') {
|
if (e.key === 'Enter') {
|
||||||
if (isValid) {
|
this.updateName();
|
||||||
this.props.editCollection(this.props.collection.id, { name: this.state.renameValue });
|
|
||||||
}
|
|
||||||
|
|
||||||
// this.resetName();
|
|
||||||
this.closeAll();
|
this.closeAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// resetName = () => {
|
handleRenameBlur = () => {
|
||||||
// this.setState({
|
this.updateName();
|
||||||
// renameValue: this.props.collection.name
|
this.closeAll();
|
||||||
// });
|
}
|
||||||
// }
|
|
||||||
|
updateName = () => {
|
||||||
|
const isValid = this.state.renameValue.trim().length !== 0;
|
||||||
|
if (isValid) {
|
||||||
|
this.props.editCollection(this.props.collection.id, { name: this.state.renameValue.trim() });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
renderActions = () => {
|
renderActions = () => {
|
||||||
const { optionsOpen } = this.state;
|
const { optionsOpen } = this.state;
|
||||||
|
@ -188,8 +189,9 @@ class CollectionListRowBase extends React.Component {
|
||||||
value={renameValue}
|
value={renameValue}
|
||||||
onChange={this.handleRenameChange}
|
onChange={this.handleRenameChange}
|
||||||
onKeyUp={this.handleRenameEnter}
|
onKeyUp={this.handleRenameEnter}
|
||||||
// onBlur={this.resetName}
|
onBlur={this.handleRenameBlur}
|
||||||
onClick={e => e.stopPropagation()}
|
onClick={e => e.stopPropagation()}
|
||||||
|
ref={this.renameInput}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
|
|
|
@ -70,7 +70,8 @@ class SketchListRowBase extends React.Component {
|
||||||
|
|
||||||
openRename = () => {
|
openRename = () => {
|
||||||
this.setState({
|
this.setState({
|
||||||
renameOpen: true
|
renameOpen: true,
|
||||||
|
renameValue: this.props.sketch.name
|
||||||
}, () => this.renameInput.current.focus());
|
}, () => this.renameInput.current.focus());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,15 +96,27 @@ class SketchListRowBase extends React.Component {
|
||||||
|
|
||||||
handleRenameEnter = (e) => {
|
handleRenameEnter = (e) => {
|
||||||
if (e.key === 'Enter') {
|
if (e.key === 'Enter') {
|
||||||
// TODO pass this func
|
this.updateName();
|
||||||
this.props.changeProjectName(this.props.sketch.id, this.state.renameValue);
|
|
||||||
this.closeAll();
|
this.closeAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleRenameBlur = () => {
|
||||||
|
this.updateName();
|
||||||
|
this.closeAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
updateName = () => {
|
||||||
|
const isValid = this.state.renameValue.trim().length !== 0;
|
||||||
|
if (isValid) {
|
||||||
|
this.props.changeProjectName(this.props.sketch.id, this.state.renameValue.trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
resetSketchName = () => {
|
resetSketchName = () => {
|
||||||
this.setState({
|
this.setState({
|
||||||
renameValue: this.props.sketch.name
|
renameValue: this.props.sketch.name,
|
||||||
|
renameOpen: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,7 +269,7 @@ class SketchListRowBase extends React.Component {
|
||||||
value={renameValue}
|
value={renameValue}
|
||||||
onChange={this.handleRenameChange}
|
onChange={this.handleRenameChange}
|
||||||
onKeyUp={this.handleRenameEnter}
|
onKeyUp={this.handleRenameEnter}
|
||||||
onBlur={this.resetSketchName}
|
onBlur={this.handleRenameBlur}
|
||||||
onClick={e => e.stopPropagation()}
|
onClick={e => e.stopPropagation()}
|
||||||
ref={this.renameInput}
|
ref={this.renameInput}
|
||||||
/>
|
/>
|
||||||
|
|
Loading…
Reference in a new issue