metadata-based-explorer1
Version:
Box UI Elements
91 lines (88 loc) • 3.69 kB
JavaScript
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import PropTypes from 'prop-types';
import React from 'react';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import classNames from 'classnames';
import Badge from '../../components/badge';
import FileIcon from '../../icons/file-icon';
import { VersionPropType } from './prop-types';
import FileVersionActions from './FileVersionActions';
import FileVersionInfo from './FileVersionInfo';
import messages from './messages';
var FileVersionListItem = function FileVersionListItem(_ref) {
var canDelete = _ref.canDelete,
canUpload = _ref.canUpload,
intl = _ref.intl,
_ref$isOverVersionLim = _ref.isOverVersionLimit,
isOverVersionLimit = _ref$isOverVersionLim === void 0 ? false : _ref$isOverVersionLim,
_ref$isProcessing = _ref.isProcessing,
isProcessing = _ref$isProcessing === void 0 ? false : _ref$isProcessing,
onDelete = _ref.onDelete,
onDownload = _ref.onDownload,
onMakeCurrent = _ref.onMakeCurrent,
onRestore = _ref.onRestore,
style = _ref.style,
version = _ref.version,
versionLimit = _ref.versionLimit;
var classes = classNames('file-version-row', {
'is-deleted': version.deleted > 0
});
return React.createElement("div", {
className: classes,
style: style
}, React.createElement("div", {
className: "file-version-icon"
}, React.createElement(FileIcon, {
extension: version.extension
})), React.createElement("div", {
className: "file-version-content"
}, React.createElement("div", {
className: "file-version-title"
}, React.createElement(Badge, {
"aria-label": intl.formatMessage(messages.versionNumberLabel, {
versionNumber: version.versionNumber
}),
className: "file-version-badge"
}, React.createElement(FormattedMessage, _extends({}, messages.versionNumberBadge, {
values: {
versionNumber: version.versionNumber
}
}))), React.createElement("span", {
className: "file-version-name"
}, version.itemName), version.isCurrent && React.createElement(Badge, {
"aria-label": intl.formatMessage(messages.currentVersionLabel),
type: "highlight"
}, React.createElement(FormattedMessage, messages.current))), React.createElement(FileVersionInfo, {
version: version
}), isOverVersionLimit ? React.createElement("span", {
className: "file-version-limit-exceeded-message"
}, React.createElement(FormattedMessage, _extends({}, messages.versionLimitExceeded, {
values: {
versionLimit: versionLimit
}
}))) : React.createElement(FileVersionActions, {
canDelete: canDelete,
canUpload: canUpload,
isProcessing: isProcessing,
onDelete: onDelete,
onDownload: onDownload,
onMakeCurrent: onMakeCurrent,
onRestore: onRestore,
version: version
})));
};
FileVersionListItem.propTypes = {
intl: intlShape.isRequired,
isOverVersionLimit: PropTypes.bool,
// This value cannot be computed within this component
isProcessing: PropTypes.bool,
onDelete: PropTypes.func.isRequired,
onDownload: PropTypes.func.isRequired,
onMakeCurrent: PropTypes.func.isRequired,
onRestore: PropTypes.func.isRequired,
style: PropTypes.any,
version: VersionPropType.isRequired,
versionLimit: PropTypes.number.isRequired
};
export { FileVersionListItem as FileVersionListItemBase };
export default injectIntl(FileVersionListItem);