UNPKG

azure-devops-ui

Version:

React components for building web UI in Azure DevOps

1 lines 5.77 kB
import"../../CommonImports";import"../../Core/core.css";import"./IdentityCard.css";import*as React from"react";import{CardType}from"./IdentityCard.Props";import{IdentityCardContent}from"./IdentityCardContent";import*as Utils from"./IdentityCardIdentityUtils";class IdentityCard extends React.Component{constructor(t){super(t),this.calloutRef=React.createRef(),this.onDismissCallback=()=>{this.props.onDismissCallback&&this.props.onDismissCallback()},this.headerOnClickHandler=()=>{this.state.dataState.previousDataState?this.setState({dataState:this.state.dataState.previousDataState,working:!1}):this.props.initialHeader&&this.props.initialHeader.onClickFunction&&this.props.initialHeader.onClickFunction()},this.onShowContactCard=()=>{var t=Object.assign(Object.assign({},this.state.dataState),{previousDataState:this.state.dataState,cardType:CardType.Contact,header:this.state.dataState.identity});this.setState({dataState:t})},this.onShowOrganizationCard=()=>{if(!this.state.working&&!this.dismissed){const i=this.state.dataState;if(i.isGroup){const i=this.state.dataState;var t=Object.assign(Object.assign({},i),{cardType:CardType.Organization,header:i.identity,previousDataState:i});this.setState({dataState:t}),(!i.successors||i.successors.length<=1)&&(this.setState({working:!0}),this.resolveIdentity(t,this.props.onRequestConnectionInformation(i.identity)))}else if(i.managerList&&i.managerList.length<=1){const i=this.state.dataState;t=Object.assign(Object.assign({},i),{cardType:CardType.Organization,header:i.identity,previousDataState:i});this.setState({dataState:t,working:!0}),this.resolveIdentity(t,this.props.onRequestConnectionInformation(i.identity,!0))}else{const i=this.state.dataState;t=Object.assign(Object.assign({},i),{cardType:CardType.Organization,header:i.identity,previousDataState:i});this.setState({dataState:t,working:!1})}}},this.onClickEntity=t=>{var i;this.state.working||(i=this.state.dataState,i={identity:t,cardType:CardType.Default,header:i.identity,isGroup:Utils.isGroup(i.identity),directReportList:[],managerList:[],previousDataState:i,displayName:t.displayName,imageUrl:t.image,email:t.mail},this.setState({dataState:i,working:!0}),this.getIdentityByUniqueAttribute(t))},this.updateConnections=(t,i)=>{this.dismissed||this.state.dataState&&t.identity===this.state.dataState.identity&&this.setState({dataState:Object.assign(Object.assign({},this.state.dataState),{managerList:i.managers&&i.managers.reverse(),directReportList:i.directReports,successors:i.successors}),working:!1})},this.updateEntity=t=>{var i,e;t?Utils.isCompleteIdentity(t,!0)?(i=Utils.isGroup(t)&&(!this.state.dataState.successors||this.state.dataState.successors.length<=0)||Utils.isAadUser(t)||Utils.isAdUser(t),e=this.props.imageUrl||t.image,e=Object.assign(Object.assign({},this.state.dataState),{identity:t,displayName:t.displayName,imageUrl:e,isGroup:Utils.isGroup(t)}),i?(this.setState({dataState:e,working:!1}),this.resolveIdentity(e,this.props.onRequestConnectionInformation(e.identity))):this.setState({dataState:e,working:!1})):this.setState({working:!1,showUnknownUser:!0}):this.setState({working:!1})};var i={identity:t.identity,managerList:void 0,directReportList:void 0,previousDataState:void 0,cardType:CardType.Default,header:t.initialHeader?t.initialHeader.identity:void 0,displayName:t.displayName,imageUrl:t.imageUrl,email:this.getEmail(),isGroup:Utils.isGroup(t.identity)};let e=!0;t.identity||t.uniqueAttribute||!t.displayName||(i.identity={entityId:"",entityType:"user",originDirectory:"vsd",originId:"",displayName:t.displayName,image:t.imageUrl,signInAddress:i.email},e=!1),this.state={dataState:i,showUnknownUser:!1,working:e}}componentDidMount(){this.state.working&&this.setupInitialData(this.props.uniqueAttribute)}componentDidUpdate(){this.calloutRef.current&&!this.state.working&&this.calloutRef.current.updateLayout()}componentWillUnmount(){this.dismissed=!0}render(){return this.props.uniqueAttribute||this.props.identity||this.props.displayName?React.createElement(IdentityCardContent,Object.assign({},this.props,{dataProps:this.state.dataState,onClickEntity:this.onClickEntity,onDismissCallback:this.onDismissCallback,onShowContactCard:this.onShowContactCard,onShowOrganizationCard:this.onShowOrganizationCard,working:this.state.working,onHeaderClick:this.headerOnClickHandler,calloutRef:this.calloutRef,showUnknownUser:this.state.showUnknownUser})):null}setupInitialData(t){var i=this.state.dataState;!i.identity&&t?this.getIdentityByUniqueAttribute(t):i.identity&&!Utils.isCompleteIdentity(i.identity)?this.getIdentityByUniqueAttribute(i.identity):Utils.isGroup(i.identity)&&i.successors&&0<i.successors.length?this.resolveIdentity(i,{successors:i.successors}):this.resolveIdentity(i,this.props.onRequestConnectionInformation(i.identity))}resolveIdentity(i,t){var e=t;t&&t.then?t.then(t=>{this.updateConnections(i,t)}):e&&this.updateConnections(i,e)}resolveIEntity(t){var i=t;t&&t.then?t.then(t=>{this.updateEntity(t)}):this.updateEntity(i)}getIdentityByUniqueAttribute(t){let i;i="string"==typeof t?t:Utils.isGroup(t)||Utils.isAadUser(t)||Utils.isAdUser(t)?t.entityId:t.signInAddress||"",this.resolveIEntity(this.props.getEntityFromUniqueAttribute(i))}getEmail(){if(this.props.identity){if((Utils.isAadUser(this.props.identity)||Utils.isAdUser(this.props.identity))&&this.props.identity.mail)return this.props.identity.mail;if(this.props.identity&&this.props.identity.signInAddress)return this.props.identity.signInAddress;if(this.props.identity&&this.props.identity.mail)return this.props.identity.mail;if(this.props.uniqueAttribute){var t=this.props.uniqueAttribute.split("@");if(2===t.length&&1<=t[0].length&&3<=t[1].length)if(1<t[1].split(".").length)return this.props.uniqueAttribute}}return""}}export{IdentityCard};