UNPKG

azure-devops-ui

Version:

React components for building web UI in Azure DevOps

1 lines 1.65 kB
import"../../CommonImports";import"../../Core/core.css";import*as React from"react";import{Coin,CoinSize}from"../../Coin";import{getUniquefiedIdentityName}from"../../Utilities/PersonaHelper";class Persona extends React.Component{constructor(e){super(e),this.targetElement=React.createRef(),this.showIdentityCard=()=>{this.props.personaProvider&&this.props.personaProvider.renderIdentityCard&&this.setState({showIdentityCard:!0})},this.onClick=e=>{this.props.personaProvider&&this.props.personaProvider.renderIdentityCard&&this.setState({showIdentityCard:!0}),e.preventDefault()},this.hideIdentityCard=()=>{this.setState({showIdentityCard:!1})},this.state={imageError:!1,imageLoaded:!1,showIdentityCard:!1}}render(){var{ariaLabel:e,ariaHidden:t,className:i,personaProvider:r,identity:s,role:a,size:o,tooltipProps:n}=this.props,d=!!r&&!!r.renderIdentityCard,p=s.image||s.imageUrl,m="entityId"in s?getUniquefiedIdentityName(s):"";return React.createElement(React.Fragment,null,React.createElement("div",{"aria-hidden":t,ref:this.targetElement},React.createElement(Coin,{ariaLabel:e,className:i,dataIsFocusable:d,isTabStop:d,onClick:d?this.onClick:void 0,displayName:s.displayName||"",principalName:m,imageUrl:this.getServerImageFromSize(p),role:a,size:o,tooltipProps:n})),this.state.showIdentityCard&&r&&r.renderIdentityCard&&r.renderIdentityCard(s,r,this.hideIdentityCard,this.targetElement.current))}getServerImageFromSize(e){if(e){if(this.props.size){if(this.props.size<=CoinSize.size24)return e+(-1===e.indexOf("?")?"?size=0":"&size=0");if(this.props.size>CoinSize.size40)return e+(-1===e.indexOf("?")?"?size=2":"&size=2")}return e}}}export{Persona};