/ embark-ui / src / components / TextEditorToolbar.js
TextEditorToolbar.js
 1  import React, { Component } from 'react';
 2  import PropTypes from 'prop-types';
 3  import {Button, Nav, NavLink} from 'reactstrap';
 4  import classnames from 'classnames';
 5  import FontAwesomeIcon from 'react-fontawesome';
 6  
 7  const TextEditorToolbarTabs = {
 8    Overview: 'overview',
 9    Detail: 'detail',
10    Transactions: 'transactions',
11    Debugger: 'debugger',
12    Browser: 'browser'
13  };
14  
15  class TextEditorToolbar extends Component {
16  
17    isActiveTab(tab) {
18      return this.props.activeTab === tab;
19    }
20  
21    render() {
22      return (
23        <ol className="breadcrumb mb-0">
24          <li className="breadcrumb-item">
25            <Button color="success" size="sm" className="mr-1" onClick={this.props.save}>
26              <FontAwesomeIcon className="mr-2" name="save"/>
27              Save
28            </Button>
29            <Button color="danger" size="sm" onClick={this.props.remove}>
30              <FontAwesomeIcon className="mr-2" name="trash"/>
31              Delete
32            </Button>
33          </li>
34          <li className="breadcrumb-menu">
35            <Nav className="btn-group">
36              {this.props.isContract &&
37                <React.Fragment>
38                  <NavLink className={classnames('btn', { active: this.isActiveTab(TextEditorToolbarTabs.Overview)})} onClick={() => this.props.openAsideTab(TextEditorToolbarTabs.Overview)}>
39                    <FontAwesomeIcon className="mr-2" name="bolt" /> Interact
40                  </NavLink>
41                  <NavLink className={classnames('btn', { active: this.isActiveTab(TextEditorToolbarTabs.Detail)})} href="#" onClick={() => this.props.openAsideTab(TextEditorToolbarTabs.Detail)}>
42                    <FontAwesomeIcon className="mr-2" name="info-circle" /> Details
43                  </NavLink>
44                  <NavLink className={classnames('btn', { active: this.isActiveTab(TextEditorToolbarTabs.Transactions)})} href="#" onClick={() => this.props.openAsideTab(TextEditorToolbarTabs.Transactions)}>
45                    <FontAwesomeIcon className="mr-2" name="list-alt" /> Transactions
46                  </NavLink>
47                  <NavLink className={classnames('btn', { active: this.isActiveTab(TextEditorToolbarTabs.Debugger)})} href="#" onClick={() => this.props.openAsideTab(TextEditorToolbarTabs.Debugger)}>
48                    <FontAwesomeIcon className="mr-2" name="bug" /> Debugger
49                  </NavLink>
50                </React.Fragment>
51              }
52              <NavLink className={classnames('btn', { active: this.isActiveTab(TextEditorToolbarTabs.Browser)})} href="#" onClick={() => this.props.openAsideTab(TextEditorToolbarTabs.Browser)}>
53                <FontAwesomeIcon className="mr-2" name="internet-explorer" /> Preview
54              </NavLink>
55            </Nav>
56  
57          </li>
58        </ol>
59      );
60    }
61  }
62  
63  TextEditorToolbar.propTypes = {
64    isContract: PropTypes.bool,
65    save: PropTypes.func,
66    remove: PropTypes.func,
67    toggleShowHiddenFiles: PropTypes.func,
68    openAsideTab: PropTypes.func,
69    activeTab: PropTypes.string
70  };
71  
72  export default TextEditorToolbar;