azure-devops-ui
Version:
React components for building web UI in Azure DevOps
1 lines • 5.85 kB
JavaScript
import{__assign,__extends}from"tslib";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";var IdentityCard=function(s){function t(t){var a=s.call(this,t)||this,i=(a.calloutRef=React.createRef(),a.onDismissCallback=function(){a.props.onDismissCallback&&a.props.onDismissCallback()},a.headerOnClickHandler=function(){a.state.dataState.previousDataState?a.setState({dataState:a.state.dataState.previousDataState,working:!1}):a.props.initialHeader&&a.props.initialHeader.onClickFunction&&a.props.initialHeader.onClickFunction()},a.onShowContactCard=function(){var t=__assign(__assign({},a.state.dataState),{previousDataState:a.state.dataState,cardType:CardType.Contact,header:a.state.dataState.identity});a.setState({dataState:t})},a.onShowOrganizationCard=function(){var t,i,e;a.state.working||a.dismissed||((i=a.state.dataState).isGroup?(t=a.state.dataState,e=__assign(__assign({},t),{cardType:CardType.Organization,header:t.identity,previousDataState:t}),a.setState({dataState:e}),(!t.successors||t.successors.length<=1)&&(a.setState({working:!0}),a.resolveIdentity(e,a.props.onRequestConnectionInformation(t.identity)))):i.managerList&&i.managerList.length<=1?(t=a.state.dataState,e=__assign(__assign({},t),{cardType:CardType.Organization,header:t.identity,previousDataState:t}),a.setState({dataState:e,working:!0}),a.resolveIdentity(e,a.props.onRequestConnectionInformation(t.identity,!0))):(i=a.state.dataState,e=__assign(__assign({},i),{cardType:CardType.Organization,header:i.identity,previousDataState:i}),a.setState({dataState:e,working:!1})))},a.onClickEntity=function(t){var i;a.state.working||(i=a.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},a.setState({dataState:i,working:!0}),a.getIdentityByUniqueAttribute(t))},a.updateConnections=function(t,i){a.dismissed||a.state.dataState&&t.identity===a.state.dataState.identity&&a.setState({dataState:__assign(__assign({},a.state.dataState),{managerList:i.managers&&i.managers.reverse(),directReportList:i.directReports,successors:i.successors}),working:!1})},a.updateEntity=function(t){var i,e;t?Utils.isCompleteIdentity(t,!0)?(i=Utils.isGroup(t)&&(!a.state.dataState.successors||a.state.dataState.successors.length<=0)||Utils.isAadUser(t)||Utils.isAdUser(t),e=a.props.imageUrl||t.image,e=__assign(__assign({},a.state.dataState),{identity:t,displayName:t.displayName,imageUrl:e,isGroup:Utils.isGroup(t)}),i?(a.setState({dataState:e,working:!1}),a.resolveIdentity(e,a.props.onRequestConnectionInformation(e.identity))):a.setState({dataState:e,working:!1})):a.setState({working:!1,showUnknownUser:!0}):a.setState({working:!1})},{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:a.getEmail(),isGroup:Utils.isGroup(t.identity)}),e=!0;return t.identity||t.uniqueAttribute||!t.displayName||(e=!(i.identity={entityId:"",entityType:"user",originDirectory:"vsd",originId:"",displayName:t.displayName,image:t.imageUrl,signInAddress:i.email})),a.state={dataState:i,showUnknownUser:!1,working:e},a}return __extends(t,s),t.prototype.componentDidMount=function(){this.state.working&&this.setupInitialData(this.props.uniqueAttribute)},t.prototype.componentDidUpdate=function(){this.calloutRef.current&&!this.state.working&&this.calloutRef.current.updateLayout()},t.prototype.componentWillUnmount=function(){this.dismissed=!0},t.prototype.render=function(){return this.props.uniqueAttribute||this.props.identity||this.props.displayName?React.createElement(IdentityCardContent,__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},t.prototype.setupInitialData=function(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))},t.prototype.resolveIdentity=function(i,t){var e=this,a=t;t&&t.then?t.then(function(t){e.updateConnections(i,t)}):a&&this.updateConnections(i,a)},t.prototype.resolveIEntity=function(t){var i=this,e=t;t&&t.then?t.then(function(t){i.updateEntity(t)}):this.updateEntity(e)},t.prototype.getIdentityByUniqueAttribute=function(t){t="string"==typeof t?t:Utils.isGroup(t)||Utils.isAadUser(t)||Utils.isAdUser(t)?t.entityId:t.signInAddress||"";this.resolveIEntity(this.props.getEntityFromUniqueAttribute(t))},t.prototype.getEmail=function(){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""},t}(React.Component);export{IdentityCard};