@atlaskit/profilecard
Version:
A React component to display a card with user information.
104 lines • 4.83 kB
JavaScript
/* ReportingLinesDetails.tsx generated by @compiled/babel-plugin v0.39.1 */
import "./ReportingLinesDetails.compiled.css";
import { ax, ix } from "@compiled/react/runtime";
import React from 'react';
import { FormattedMessage, useIntl } from 'react-intl-next';
import Avatar from '@atlaskit/avatar';
import AvatarGroup from '@atlaskit/avatar-group';
import { cx } from '@atlaskit/css';
import { Box, Pressable } from '@atlaskit/primitives/compiled';
import messages from '../../messages';
import { ManagerName, ManagerSection, OffsetWrapper, ReportingLinesSection } from '../../styled/ReportingLines';
import { PACKAGE_META_DATA } from '../../util/analytics';
import { getPageTime } from '../../util/performance';
function getProfileHref(userId, profileUrl) {
return profileUrl ? profileUrl + userId : undefined;
}
const styles = {
reportingLinesButton: "_ca0qze3t _u5f3ze3t _n3tdze3t _19bvze3t _bfhksm61 _irr31dpa",
reportingLinesHeadingDefaultStyles: "_11c8i4vh _syazi7uo _k48p1pd9 _otyru2gc",
reportingLinesHeadingStyles: "_otyrze3t"
};
const avatarGroupMaxCount = 5;
const ReportingLinesDetails = props => {
var _manager$pii, _manager$pii2, _manager$pii3;
const {
formatMessage
} = useIntl();
const {
fireAnalyticsWithDuration,
reportingLines = {},
reportingLinesProfileUrl,
onReportingLinesClick
} = props;
const {
managers = [],
reports = []
} = reportingLines;
const manager = managers.length >= 1 ? managers[0] : undefined;
const hasReports = reports.length > 0;
const getReportingLinesOnClick = (user, userType) => onReportingLinesClick ? () => {
fireAnalyticsWithDuration('ui.profilecard.clicked.reportingLines', duration => ({
duration,
userType,
firedAt: Math.round(getPageTime()),
...PACKAGE_META_DATA
}));
onReportingLinesClick(user);
} : undefined;
const onReportingLinksClick = (user, userType, href) => {
let shouldPreventDefault = false;
if (onReportingLinesClick) {
shouldPreventDefault = onReportingLinesClick(user) === false;
}
fireAnalyticsWithDuration('ui.profilecard.clicked.reportingLines', duration => ({
duration,
userType,
firedAt: Math.round(getPageTime()),
...PACKAGE_META_DATA
}));
if (shouldPreventDefault) {
return;
}
if (href) {
window.location.href = href;
}
};
const showMoreButtonProps = {
'aria-label': formatMessage(messages.profileCardMoreReportingLinesLabel, {
count: reports.length - avatarGroupMaxCount + 1
})
};
return /*#__PURE__*/React.createElement(React.Fragment, null, manager && /*#__PURE__*/React.createElement(ReportingLinesSection, null, /*#__PURE__*/React.createElement(Box, {
xcss: cx(styles.reportingLinesHeadingDefaultStyles, styles.reportingLinesHeadingStyles)
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.managerSectionHeading)), /*#__PURE__*/React.createElement(OffsetWrapper, null, /*#__PURE__*/React.createElement(Pressable, {
onClick: () => onReportingLinksClick(manager, 'manager', getProfileHref(manager.accountIdentifier, reportingLinesProfileUrl)),
isDisabled: !onReportingLinesClick,
xcss: styles.reportingLinesButton,
"aria-label": formatMessage(messages.viewManagerProfile, {
name: (_manager$pii = manager.pii) === null || _manager$pii === void 0 ? void 0 : _manager$pii.name
})
}, /*#__PURE__*/React.createElement(ManagerSection, null, /*#__PURE__*/React.createElement(Avatar, {
size: "xsmall",
src: (_manager$pii2 = manager.pii) === null || _manager$pii2 === void 0 ? void 0 : _manager$pii2.picture
}), /*#__PURE__*/React.createElement(ManagerName, null, (_manager$pii3 = manager.pii) === null || _manager$pii3 === void 0 ? void 0 : _manager$pii3.name))))), hasReports && /*#__PURE__*/React.createElement(ReportingLinesSection, null, /*#__PURE__*/React.createElement(Box, {
xcss: styles.reportingLinesHeadingDefaultStyles
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.directReportsSectionHeading)), /*#__PURE__*/React.createElement(AvatarGroup, {
appearance: "stack",
size: "small",
data: reports.map(member => {
var _member$pii, _member$pii2;
return {
key: member.accountIdentifier,
name: ((_member$pii = member.pii) === null || _member$pii === void 0 ? void 0 : _member$pii.name) || '',
src: (_member$pii2 = member.pii) === null || _member$pii2 === void 0 ? void 0 : _member$pii2.picture,
href: getProfileHref(member.accountIdentifier, reportingLinesProfileUrl),
onClick: getReportingLinesOnClick(member, 'direct-report')
};
}),
maxCount: avatarGroupMaxCount,
testId: "profilecard-reports-avatar-group",
showMoreButtonProps: showMoreButtonProps
})));
};
export default ReportingLinesDetails;