Merge branch 'snackbar'
This commit is contained in:
commit
2a7b9dd4d7
@ -21,21 +21,49 @@ const styles = (theme) => ({
|
|||||||
|
|
||||||
class Snackbar extends Component {
|
class Snackbar extends Component {
|
||||||
|
|
||||||
|
constructor(props){
|
||||||
|
super(props);
|
||||||
|
this.state = {
|
||||||
|
open: props.open
|
||||||
|
};
|
||||||
|
this.timeout = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount(){
|
||||||
|
if(this.state.open){
|
||||||
|
this.autoHideDuration();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount(){
|
||||||
|
if(this.state.open){
|
||||||
|
clearTimeout(this.timeout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClose = () => {
|
||||||
|
this.setState({open: false});
|
||||||
|
}
|
||||||
|
|
||||||
|
autoHideDuration = () => {
|
||||||
|
this.timeout = setTimeout(() => {
|
||||||
|
this.onClose();
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<MaterialUISnackbar
|
<MaterialUISnackbar
|
||||||
anchorOrigin={{vertical: 'bottom', horizontal: 'left' }}
|
anchorOrigin={{vertical: 'bottom', horizontal: 'left' }}
|
||||||
open={this.props.open}
|
open={this.state.open}
|
||||||
onClose={this.props.onClose}
|
key={this.props.key}
|
||||||
key={Date.now()+this.props.message}
|
|
||||||
autoHideDuration={5000}
|
|
||||||
style={{left: '22px', bottom: '40px', width: '300px', zIndex: '100'}}
|
style={{left: '22px', bottom: '40px', width: '300px', zIndex: '100'}}
|
||||||
>
|
>
|
||||||
<SnackbarContent
|
<SnackbarContent
|
||||||
style={{flexWrap: 'nowrap'}}
|
style={{flexWrap: 'nowrap'}}
|
||||||
className={this.props.type === 'error' ? this.props.classes.error : this.props.classes.success}
|
className={this.props.type === 'error' ? this.props.classes.error : this.props.classes.success}
|
||||||
action={
|
action={
|
||||||
<IconButton onClick={this.props.onClose} style={{color: 'inherit'}}>
|
<IconButton onClick={this.onClose} style={{color: 'inherit'}}>
|
||||||
<FontAwesomeIcon icon={faTimes} size="xs"/>
|
<FontAwesomeIcon icon={faTimes} size="xs"/>
|
||||||
</IconButton>
|
</IconButton>
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ class Builder extends Component {
|
|||||||
content: '',
|
content: '',
|
||||||
string: false,
|
string: false,
|
||||||
snackbar: false,
|
snackbar: false,
|
||||||
|
key: '',
|
||||||
message: ''
|
message: ''
|
||||||
};
|
};
|
||||||
this.inputRef = React.createRef();
|
this.inputRef = React.createRef();
|
||||||
@ -49,7 +50,7 @@ class Builder extends Component {
|
|||||||
submit = () => {
|
submit = () => {
|
||||||
var isError = this.props.checkError();
|
var isError = this.props.checkError();
|
||||||
if(isError){
|
if(isError){
|
||||||
this.setState({ snackbar: true, message: `Die Angaben für das Tutorial sind nicht vollständig.`, type: 'error'});
|
this.setState({ snackbar: true, key: Date.now(), message: `Die Angaben für das Tutorial sind nicht vollständig.`, type: 'error'});
|
||||||
window.scrollTo(0, 0);
|
window.scrollTo(0, 0);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@ -65,7 +66,7 @@ class Builder extends Component {
|
|||||||
|
|
||||||
reset = () => {
|
reset = () => {
|
||||||
this.props.resetTutorial();
|
this.props.resetTutorial();
|
||||||
this.setState({ snackbar: true, message: `Das Tutorial wurde erfolgreich zurückgesetzt.`, type: 'success'});
|
this.setState({ snackbar: true, key: Date.now(), message: `Das Tutorial wurde erfolgreich zurückgesetzt.`, type: 'success'});
|
||||||
window.scrollTo(0, 0);
|
window.scrollTo(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +96,7 @@ class Builder extends Component {
|
|||||||
result.steps = [{}];
|
result.steps = [{}];
|
||||||
}
|
}
|
||||||
this.props.readJSON(result);
|
this.props.readJSON(result);
|
||||||
this.setState({ snackbar: true, message: `${isFile ? 'Die übergebene JSON-Datei' : 'Der übergebene JSON-String'} wurde erfolgreich übernommen.`, type: 'success'});
|
this.setState({ snackbar: true, key: Date.now(), message: `${isFile ? 'Die übergebene JSON-Datei' : 'Der übergebene JSON-String'} wurde erfolgreich übernommen.`, type: 'success'});
|
||||||
} catch(err){
|
} catch(err){
|
||||||
console.log(err);
|
console.log(err);
|
||||||
this.props.progress(false);
|
this.props.progress(false);
|
||||||
@ -115,10 +116,6 @@ class Builder extends Component {
|
|||||||
this.setState({ open: !this.state });
|
this.setState({ open: !this.state });
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleSnackbar = () => {
|
|
||||||
this.setState({ snackbar: !this.state, message: '', type: null });
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
@ -185,9 +182,9 @@ class Builder extends Component {
|
|||||||
|
|
||||||
<Snackbar
|
<Snackbar
|
||||||
open={this.state.snackbar}
|
open={this.state.snackbar}
|
||||||
onClose={this.toggleSnackbar}
|
|
||||||
message={this.state.message}
|
message={this.state.message}
|
||||||
type={this.state.type}
|
type={this.state.type}
|
||||||
|
key={this.state.key}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -62,6 +62,7 @@ class WorkspaceFunc extends Component {
|
|||||||
saveXml: false,
|
saveXml: false,
|
||||||
name: props.name,
|
name: props.name,
|
||||||
snackbar: false,
|
snackbar: false,
|
||||||
|
key: '',
|
||||||
message: ''
|
message: ''
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -76,10 +77,6 @@ class WorkspaceFunc extends Component {
|
|||||||
this.setState({ open: !this.state });
|
this.setState({ open: !this.state });
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleSnackbar = () => {
|
|
||||||
this.setState({ snackbar: !this.state, message: '' });
|
|
||||||
}
|
|
||||||
|
|
||||||
saveXmlFile = () => {
|
saveXmlFile = () => {
|
||||||
var code = this.props.xml;
|
var code = this.props.xml;
|
||||||
this.toggleDialog();
|
this.toggleDialog();
|
||||||
@ -128,7 +125,7 @@ class WorkspaceFunc extends Component {
|
|||||||
var extensionPosition = xmlFile.name.lastIndexOf('.');
|
var extensionPosition = xmlFile.name.lastIndexOf('.');
|
||||||
this.props.workspaceName(xmlFile.name.substr(0, extensionPosition));
|
this.props.workspaceName(xmlFile.name.substr(0, extensionPosition));
|
||||||
}
|
}
|
||||||
this.setState({ snackbar: true, message: 'Das Projekt aus gegebener XML-Datei wurde erfolgreich eingefügt.' });
|
this.setState({ snackbar: true, key: Date.now(), message: 'Das Projekt aus gegebener XML-Datei wurde erfolgreich eingefügt.' });
|
||||||
}
|
}
|
||||||
} catch(err){
|
} catch(err){
|
||||||
this.setState({ open: true, file: false, title: 'Ungültige XML', content: 'Die XML-Datei konnte nicht in Blöcke zerlegt werden. Bitte überprüfe den XML-Code und versuche es erneut.' });
|
this.setState({ open: true, file: false, title: 'Ungültige XML', content: 'Die XML-Datei konnte nicht in Blöcke zerlegt werden. Bitte überprüfe den XML-Code und versuche es erneut.' });
|
||||||
@ -140,7 +137,7 @@ class WorkspaceFunc extends Component {
|
|||||||
renameWorkspace = () => {
|
renameWorkspace = () => {
|
||||||
this.props.workspaceName(this.state.name);
|
this.props.workspaceName(this.state.name);
|
||||||
this.toggleDialog();
|
this.toggleDialog();
|
||||||
this.setState({ snackbar: true, message: `Das Projekt wurde erfolgreich in '${this.state.name}' umbenannt.` });
|
this.setState({ snackbar: true, key: Date.now(), message: `Das Projekt wurde erfolgreich in '${this.state.name}' umbenannt.` });
|
||||||
}
|
}
|
||||||
|
|
||||||
resetWorkspace = () => {
|
resetWorkspace = () => {
|
||||||
@ -156,7 +153,7 @@ class WorkspaceFunc extends Component {
|
|||||||
if(!this.props.solutionCheck){
|
if(!this.props.solutionCheck){
|
||||||
this.props.workspaceName(null);
|
this.props.workspaceName(null);
|
||||||
}
|
}
|
||||||
this.setState({ snackbar: true, message: 'Das Projekt wurde erfolgreich zurückgesetzt.' });
|
this.setState({ snackbar: true, key: Date.now(), message: 'Das Projekt wurde erfolgreich zurückgesetzt.' });
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@ -226,9 +223,9 @@ class WorkspaceFunc extends Component {
|
|||||||
|
|
||||||
<Snackbar
|
<Snackbar
|
||||||
open={this.state.snackbar}
|
open={this.state.snackbar}
|
||||||
onClose={this.toggleSnackbar}
|
|
||||||
message={this.state.message}
|
message={this.state.message}
|
||||||
type='success'
|
type='success'
|
||||||
|
key={this.state.key}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user