UNPKG

metadata-based-explorer1

Version:
95 lines (83 loc) 3.2 kB
import PropTypes from 'prop-types'; import React from 'react'; import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; import PlainButton from '../../components/plain-button'; import { VersionPropType } from './prop-types'; import messages from './messages'; // @NOTE: Having an identical "key" on the restore and remove button // allows browser to maintain focus correctly on the link, otherwise it focuses // body after the links swap. This let's the ESCAPE key work correctly. var REMOVE_RESTORE_BUTTON_KEY = 'remove-restore-button'; var FileVersionActions = function FileVersionActions(_ref) { var canDelete = _ref.canDelete, canUpload = _ref.canUpload, isProcessing = _ref.isProcessing, onDelete = _ref.onDelete, onDownload = _ref.onDownload, onMakeCurrent = _ref.onMakeCurrent, onRestore = _ref.onRestore, version = _ref.version; var btnClasses = classNames('lnk', { 'is-disabled': isProcessing }); var renderRestoreButton = function renderRestoreButton() { if (version.deleted <= 0 || !onRestore) { return null; } return React.createElement(PlainButton, { key: REMOVE_RESTORE_BUTTON_KEY, className: btnClasses, onClick: function onClick() { return !isProcessing && onRestore(version); } }, React.createElement(FormattedMessage, messages.restore)); }; var renderDownloadButton = function renderDownloadButton() { if (!version.canDownload || version.deleted > 0 || !onDownload) { return null; } return React.createElement(PlainButton, { className: btnClasses, onClick: function onClick() { return !isProcessing && onDownload(version); } }, React.createElement(FormattedMessage, messages.download)); }; var renderMakeCurrentButton = function renderMakeCurrentButton() { if (version.isCurrent || version.deleted > 0 || !onMakeCurrent || !canUpload) { return null; } return React.createElement(PlainButton, { className: btnClasses, onClick: function onClick() { return !isProcessing && onMakeCurrent(version); } }, React.createElement(FormattedMessage, messages.makeCurrent)); }; var renderRemoveButton = function renderRemoveButton() { if (version.isCurrent || version.deleted > 0 || version.isRetained || !onDelete || !canDelete) { return null; } return React.createElement(PlainButton, { key: REMOVE_RESTORE_BUTTON_KEY, className: btnClasses, onClick: function onClick() { return !isProcessing && onDelete(version); } }, React.createElement(FormattedMessage, messages.remove)); }; return React.createElement("div", { className: "file-version-actions" }, renderRestoreButton(), renderDownloadButton(), renderMakeCurrentButton(), renderRemoveButton()); }; FileVersionActions.propTypes = { canDelete: PropTypes.bool, canUpload: PropTypes.bool, isProcessing: PropTypes.bool, onDelete: PropTypes.func, onDownload: PropTypes.func, onMakeCurrent: PropTypes.func, onRestore: PropTypes.func, version: VersionPropType.isRequired }; export default FileVersionActions;