import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { ButtonGroup, Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap'; import IconButton from '../icon-button'; import { gettext, siteRoot } from '../../utils/constants'; import { Utils } from '../../utils/utils'; import ModalPortal from '../modal-portal'; import ShareDialog from '../dialog/share-dialog'; const propTypes = { isLocked: PropTypes.bool.isRequired, lockedByMe: PropTypes.bool.isRequired, toggleLockFile: PropTypes.func.isRequired, toggleCommentPanel: PropTypes.func.isRequired }; const { canLockUnlockFile, canGenerateShareLink, repoID, repoName, repoEncrypted, parentDir, filePerm, filePath, fileName, canEditFile, err, fileEnc, // for 'edit', not undefined only for some kinds of files (e.g. text file) canDownloadFile, enableComment } = window.app.pageOptions; class FileToolbar extends React.Component { constructor(props) { super(props); this.state = { dropdownOpen: false, isShareDialogOpen: false }; } toggleShareDialog = () => { this.setState({isShareDialogOpen: !this.state.isShareDialogOpen}); } toggle = () => { this.setState({ dropdownOpen: !this.state.dropdownOpen }); } render() { const { isLocked, lockedByMe } = this.props; let showLockUnlockBtn = false; let lockUnlockText, lockUnlockIcon; if (canLockUnlockFile) { if (!isLocked) { showLockUnlockBtn = true; lockUnlockText = gettext('Lock'); lockUnlockIcon = 'fa fa-lock'; } else if (lockedByMe) { showLockUnlockBtn = true; lockUnlockText = gettext('Unlock'); lockUnlockIcon = 'fa fa-unlock'; } } let showShareBtn = false; if (!repoEncrypted && (filePerm == 'rw' || filePerm == 'r') && canGenerateShareLink) { showShareBtn = true; } return ( {showLockUnlockBtn && ( )} {showShareBtn && ( )} {filePerm == 'rw' && ( )} {(canEditFile && !err) && ( )} {canDownloadFile && ( )} {enableComment && ( )} {gettext('Open parent folder')} {showLockUnlockBtn && ( {lockUnlockText} )} {showShareBtn && ( {gettext('Share')} )} {filePerm == 'rw' && ( {gettext('History')} )} {(canEditFile && !err) && ( {gettext('Edit')} )} {canDownloadFile && ( {gettext('Download')} )} {enableComment && ( {gettext('Comment')} )} {this.state.isShareDialogOpen && } ); } } FileToolbar.propTypes = propTypes; export default FileToolbar;