@hrobarikt/box-ui-elements
Version:
Box UI Elements
107 lines (99 loc) • 5.12 kB
JavaScript
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import classNames from 'classnames';
import getProp from 'lodash/get';
import noop from 'lodash/noop';
import * as React from 'react';
import ActivityError from '../common/activity-error';
import ActivityMessage from '../common/activity-message';
import ActivityTimestamp from '../common/activity-timestamp';
import AnnotationActivityLink from './AnnotationActivityLink';
import AnnotationActivityMenu from './AnnotationActivityMenu';
import Avatar from '../Avatar';
import Media from '../../../../components/media';
import messages from './messages';
import UserLink from '../common/user-link';
import { ACTIVITY_TARGETS } from '../../../common/interactionTargets';
import { PLACEHOLDER_USER } from '../../../../constants';
import './AnnotationActivity.scss';
var AnnotationActivity = function AnnotationActivity(_ref) {
var item = _ref.item,
getAvatarUrl = _ref.getAvatarUrl,
getUserProfileUrl = _ref.getUserProfileUrl,
isCurrentVersion = _ref.isCurrentVersion,
_ref$onDelete = _ref.onDelete,
onDelete = _ref$onDelete === void 0 ? noop : _ref$onDelete,
_ref$onSelect = _ref.onSelect,
onSelect = _ref$onSelect === void 0 ? noop : _ref$onSelect;
var created_at = item.created_at,
created_by = item.created_by,
description = item.description,
error = item.error,
file_version = item.file_version,
id = item.id,
isPending = item.isPending,
_item$permissions = item.permissions,
permissions = _item$permissions === void 0 ? {} : _item$permissions,
target = item.target;
var handleDeleteConfirm = function handleDeleteConfirm() {
onDelete({
id: id,
permissions: permissions
});
};
var handleOnSelect = function handleOnSelect() {
onSelect(item);
};
var createdAtTimestamp = new Date(created_at).getTime();
var createdByUser = created_by || PLACEHOLDER_USER;
var canDelete = permissions.can_delete;
var isFileVersionUnavailable = file_version === null;
var isMenuVisible = canDelete && !isPending;
var message = description && description.message || '';
var linkMessage = isCurrentVersion ? messages.annotationActivityPageItem : messages.annotationActivityVersionLink;
var linkValue = isCurrentVersion ? target.location.value : getProp(file_version, 'version_number');
var activityLinkMessage = isFileVersionUnavailable ? messages.annotationActivityVersionUnavailable : _objectSpread({}, linkMessage, {
values: {
number: linkValue
}
});
return React.createElement("div", {
className: "bcs-AnnotationActivity",
"data-resin-feature": "annotations"
}, React.createElement(Media, {
className: classNames('bcs-AnnotationActivity-media', {
'bcs-is-pending': isPending || error
})
}, React.createElement(Media.Figure, null, React.createElement(Avatar, {
getAvatarUrl: getAvatarUrl,
user: createdByUser
})), React.createElement(Media.Body, null, isMenuVisible && React.createElement(AnnotationActivityMenu, {
canDelete: canDelete,
id: id,
onDeleteConfirm: handleDeleteConfirm
}), React.createElement("div", {
className: "bcs-AnnotationActivity-headline"
}, React.createElement(UserLink, {
"data-resin-target": ACTIVITY_TARGETS.PROFILE,
getUserProfileUrl: getUserProfileUrl,
id: createdByUser.id,
name: createdByUser.name
})), React.createElement("div", null, React.createElement(ActivityTimestamp, {
date: createdAtTimestamp
})), React.createElement(ActivityMessage, {
id: id,
tagged_message: message,
getUserProfileUrl: getUserProfileUrl
}), React.createElement(AnnotationActivityLink, {
"data-resin-iscurrent": isCurrentVersion,
"data-resin-itemid": id,
"data-resin-target": "annotationLink",
id: id,
isDisabled: isFileVersionUnavailable,
message: activityLinkMessage,
onClick: handleOnSelect
}))), error ? React.createElement(ActivityError, error) : null);
};
export default AnnotationActivity;
//# sourceMappingURL=AnnotationActivity.js.map