metadata-based-explorer1
Version:
Box UI Elements
95 lines (83 loc) • 3.2 kB
JavaScript
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;