1"use strict";(self.webpackChunksmarpshare_frontend=self.webpackChunksmarpshare_frontend||[]).push([[1036,6113],{4143:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{TeamDetail:()=>TeamDetail,TeamList:()=>TeamList});var react=__webpack_require__(96540),es=__webpack_require__(49924),react_router=__webpack_require__(56347),query_string=__webpack_require__(86663),tracking_utils=__webpack_require__(48458),components=__webpack_require__(66931),page_header=__webpack_require__(13639),alert_utils=__webpack_require__(20987),use_session=__webpack_require__(84280),common_components=__webpack_require__(10046),effects=__webpack_require__(61412),redux_effects=__webpack_require__(60994),formik_esm=__webpack_require__(65755),prop_types=__webpack_require__(5556),lib=__webpack_require__(85821);class AddTeam extends react.Component{constructor(props,state){super(props,state),this.onSubmit=(values,{setSubmitting,resetForm,setFieldError})=>{const{name:inputName}=values,teamToAdd={name:this._sanitizeField(inputName),groupId:this.props.groupId,description:this._sanitizeField(values.description||"")};return this.props.onAdd(teamToAdd).then((()=>{resetForm(),this.setModalShow(!1),setSubmitting(!1)})).catch((err=>{setFieldError("name",err.toString()),setSubmitting(!1)}))},this.validate=({name})=>{const errors={},hasComma=this._hasCharacter(","),hasSemiColon=this._hasCharacter(";");return(hasComma(name)||hasSemiColon(name))&&(errors.name=this.context.gettext("Team name can not have Comma(,) or Semicolon(;) in it")),errors},this.setModalShow=showForm=>{this.setState({showForm})},this._sanitizeField=name=>name.trim(),this._hasCharacter=char=>str=>-1!==str.indexOf(char),this.state={showForm:!1}}render(){const{state:{showForm},context:{gettext}}=this;return react.createElement("div",null,react.createElement(formik_esm.l1,{initialValues:{name:"",description:""},onSubmit:this.onSubmit,validate:this.validate},(({values,errors,isSubmitting,handleSubmit,resetForm})=>{const closeModal=()=>{resetForm(),this.setModalShow(!1)};return react.createElement(react.Fragment,null,react.createElement(components.$n,{style:"link",onClick:()=>this.setModalShow(!0),text:gettext("Create new team")}),react.createElement(components.Au,{show:showForm,onClose:closeModal},react.createElement(components.Au.Header,{title:gettext("Create new team")}),react.createElement(components.Au.Content,null,react.createElement(formik_esm.D0,{name:"name"},(({field})=>react.createElement(components.TZ,{...field,style:{width:"100%"},type:"text",labelText:gettext("Team name"),subText:gettext("Name must be unique."),state:errors.name?"error":"default",error:errors.name||"",dataTestId:"teamName-id"}))),react.createElement("div",{className:"cat-mt-m"},react.createElement(formik_esm.D0,{name:"description"},(({field})=>react.createElement(components.TZ,{...field,style:{width:"100%"},type:"text",labelText:gettext("Team description"),dataTestId:"teamDescription-id"}))))),react.createElement(components.Au.FooterActions,null,react.createElement(components.$n,{style:"link",onClick:closeModal,text:gettext("Cancel")}),react.createElement(components.hK,{size:"s",dir:"x"}),react.createElement(components.$n,{onClick:()=>handleSubmit(),style:"primary",disabled:!values.name||!!errors.name,isLoading:isSubmitting,text:gettext("Create")}))))})))}}AddTeam.propTypes={onAdd:prop_types.func.isRequired},AddTeam.contextType=lib.dg;var string_utils=__webpack_require__(73225),use_get_text=__webpack_require__(87914);const useError=err=>{const{gettext}=(0,use_get_text.z)();react.useEffect((()=>{err&&(alert_utils.A.errorFromApi(err,gettext),tracking_utils.A.error((0,string_utils.fi)(err),"TeamList.useError",(0,string_utils.hT)(err)))}),[err])},TeamList=()=>{const dispatch=(0,es.wA)(),location=(0,react_router.zy)(),history=(0,react_router.W6)(),{session,sessionUtil:{isManager}}=(0,use_session.w)(),{gettext}=(0,use_get_text.z)(),groupSettingsList=(0,es.d4)((state=>state.Group.groupList)),groupError=(0,es.d4)((state=>state.Group.error)),teamMap=(0,es.d4)((state=>state.Team.teamMap)),teamError=(0,es.d4)((state=>state.Team.error)),addTeamError=(0,es.d4)((state=>state.Team.addError)),[sortBy,setSortBy]=react.useState("name"),[sortAsc,setSortAsc]=react.useState(!0),[selectedGroup,setSelectedGroup]=react.useState(),groupId=react.useMemo((()=>query_string.qg(location.search).groupId),[location.search]),groupList=react.useMemo((()=>Object.keys(groupSettingsList).map((groupId=>({value:groupSettingsList[groupId].general._id,display:groupSettingsList[groupId].general.name})))),[groupSettingsList]);react.useEffect((()=>{session.company.isGroupEnabled&&isManager()?dispatch((0,effects.pl)()):(setSelectedGroup({value:session.user.groupId,display:session.user.groupName}),groupId!==session.user.groupId&&history.push({...location,search:`groupId=${session.user.groupId}`})),dispatch((0,redux_effects.uf)(groupId))}
1),[dispatch,groupId,history,isManager,location,session]),react.useEffect((()=>{setSelectedGroup(groupList.find((group=>group.value===groupId)))}),[groupId,groupList]),useError(groupError),useError(teamError),useError(addTeamError);const sortTeamListByName=react.useCallback((teamList=>[...teamList].sort(((a,b)=>sortAsc?a.name.toLowerCase().localeCompare(b.name.toLowerCase()):b.name.toLowerCase().localeCompare(a.name.toLowerCase())))),[sortAsc]),sortTeamListByMemberCount=react.useCallback((teamList=>[...teamList].sort(((a,b)=>sortAsc?a.memberCount-b.memberCount:b.memberCount-a.memberCount))),[sortAsc]),getSortedTeamList=react.useCallback((teamList=>{switch(sortBy){case"name":return sortTeamListByName(teamList);case"memberCount":return sortTeamListByMemberCount(teamList);default:return[]}}),[sortBy,sortTeamListByMemberCount,sortTeamListByName]),teamList=teamMap[groupId]||[],sortedTeamList=react.useMemo((()=>getSortedTeamList(teamList)),[getSortedTeamList,teamList]),handleSort=attribute=>{sortBy===attribute?setSortAsc(!sortAsc):(setSortBy(attribute),setSortAsc("name"===attribute))},renderCaret=attribute=>sortBy!==attribute?null:react.createElement("i",{className:"i-caret-"+(sortAsc?"up":"down")}),renderTeamName=({name})=>react.createElement("div",{"data-testid":"team-name-id"},name,react.createElement("i",{className:"i-pencil-square-o team-list-edit-icon"})),renderTeamDescription=({description})=>react.createElement("div",{"data-testid":"team-description-id"},description,react.createElement("i",{className:"i-pencil-square-o team-list-edit-icon"})),renderTeamMemberCount=({memberCount})=>react.createElement("div",{"data-testid":"team-member-count"},memberCount),headings=[react.createElement("button",{className:"team-name-header-wrapper",onClick:()=>handleSort("name")},react.createElement("span",{className:"label"},gettext("Team")),renderCaret("name")),react.createElement("button",{className:"team-name-header-wrapper",onClick:()=>handleSort("memberCount")},react.createElement("span",{className:"label"},gettext("Member")),renderCaret("memberCount")),react.createElement("span",{className:"label"},gettext("Team description"))],rows=sortedTeamList.map((item=>[renderTeamName(item),renderTeamMemberCount(item),renderTeamDescription(item)]));return react.createElement("div",{style:{marginTop:"83px"}},react.createElement("div",{className:"page-wrapper"},react.createElement(page_header.z,{onSelect:selectedGroupId=>{history.push({...location,search:`groupId=${selectedGroupId}`})},filterList:isManager()?groupList:void 0,defaultItem:selectedGroup,pageName:gettext("Teams"),isGroupEnabled:session.company.isGroupEnabled}),react.createElement(components.Zp,null,react.createElement(components.Zp.HeaderTitle,{title:gettext("Team list")}),react.createElement(components.Zp.HeaderActions,null,react.createElement(AddTeam,{onAdd:async newTeam=>{if(sortedTeamList.some((team=>team.name.toLowerCase()===newTeam.name.toLowerCase())))throw new Error("There's an existing team with this name");dispatch((0,redux_effects.Zs)(newTeam))},groupId:selectedGroup?selectedGroup.value:session.user.groupId})),react.createElement(components.Zp.Content,null,react.createElement(common_components.fI,null,react.createElement(components.YC,null,`${sortedTeamList.length} ${1===sortedTeamList.length?gettext("Team"):gettext("Teams")}`)),react.createElement(common_components.fI,null,react.createElement(components.bQ,{headings,columnStyles:[{},{}],rows,getRowProps:index=>({onClick:()=>(({_id})=>{history.push({...location,pathname:`/team/${_id}`})})(sortedTeamList[index]),className:"team-list-row","data-testid":`${sortedTeamList[index]._id}-id`})}))))))};var jed=__webpack_require__(69407),redux=__webpack_require__(82960),api=__webpack_require__(56433),default_channel_select=__webpack_require__(54073),default_channel_model=__webpack_require__(52685),user_list_table=__webpack_require__(62061),session_util=__webpack_require__(7031);const DeleteTeam=props=>{const{gettext}=react.useContext(lib.dg),[showForm,setShowForm]=react.useState(!1);return react.createElement(react.Fragment,null,react.createElement("span",{className:"team-delete-btn",onClick:()=>{setShowForm(!0)}},react.createElement("i",{className:"i-trash-o",style:{marginRight:"10px"}}),gettext("Delete this team")),react.createElement(components.Au,{show:showForm,onClose:()=>setShowForm(!1)},react.createElement(components.Au.Header,{title:gettext("Delete this team")}),react.createElement(components.Au.Content,null,react.createElement(components.P,null,react.createElement(react.Fragment,null,gettext("Are you sure you want to delete team"),react.createElement("b",null," ",props.name," "),gettext("? This will permanently delete the team.")))),react.createElement(components.Au.FooterActions,null,react.createElement(components.$n,{style:"link",text:gettext("Cancel"),type:"button",onClick:()=>setShowForm(!1)}),react.createElement(components.hK,{size:"s",dir:"x"}),react.createElement(components.$n,{style:"primary",text:gettext("Remove"),onClick:props.deleteTeam}))))};DeleteTeam.displayName="DeleteTeam";const RemoveUserControls=({hideAddSubscriberCtrl,onGoingSelectCount,onRemoveConfirm})=>
1{const[showForm,setShowForm]=react.useState(!1),{gettext,ngettext}=react.useContext(lib.dg);return react.createElement("div",{className:"page_controls_b"},react.createElement(react.Fragment,null,react.createElement(components.$n,{style:"secondary",onClick:()=>{setShowForm(!0),hideAddSubscriberCtrl()},text:gettext("Remove")}),react.createElement(components.Au,{show:showForm,onClose:()=>setShowForm(!1)},react.createElement(components.Au.Header,{title:gettext("Are you sure you want to remove these members?")}),react.createElement(components.Au.Content,null,react.createElement(components.P,null,(0,jed.sprintf)(ngettext("Remove %s member from this team","Remove %s members from this team",onGoingSelectCount),onGoingSelectCount))),react.createElement(components.Au.FooterActions,null,react.createElement(components.$n,{style:"link",text:gettext("Cancel"),type:"button",onClick:()=>setShowForm(!1)}),react.createElement(components.hK,{size:"s",dir:"x"}),react.createElement(components.$n,{style:"primary",text:gettext("Remove"),onClick:onRemoveConfirm})))))};var react_select_esm=__webpack_require__(37823),debounce=__webpack_require__(23549),loader_loader=__webpack_require__(95259),image_proxy=__webpack_require__(79561),dist=__webpack_require__(71287);class UserOption extends react.Component{render(){const{props:{isFocused,isDisabled,data}}=this,composedClassName=isDisabled?"is-disabled":isFocused?"is-focused":"";return react.createElement("div",{className:`user-option ${composedClassName}`},react.createElement("div",{className:"avatar-image-sm"},react.createElement(image_proxy.C,{imageUrl:data.avatarUrl,token:dist.JRo.Avatar})),react.createElement("div",{className:"info"},react.createElement("div",{className:"name","data-testid":"user-option-name"},""!==data.firstName||""!==data.lastName?`${data.firstName} ${data.lastName}`:null),react.createElement("div",{className:"email"},data.email)),react.createElement("div",{className:"disabled-meta"},isDisabled&&this.props.disabledNotation))}}UserOption.contextType=lib.dg;class UserSelector extends react.Component{constructor(){super(...arguments),this.loadUserList=(input,page,callback)=>{1===page&&(this._lastSortValue=null,this._fromId=null);const req={lastSortValue:this._lastSortValue,fromId:this._fromId,searchTerm:input};this.props.fetch(req).then((userList=>{const lastUser=userList.concat([]).pop();lastUser&&(this._lastSortValue=lastUser[this.props.lastSortKey],this._fromId=lastUser._id),callback(userList)}))}}render(){const{context:{gettext}}=this,loader=react.createElement(loader_loader.a,{isShow:!0});return react.createElement(react_select_esm.jg,{className:this.props.className,isMulti:!0,getOptionLabel:this.props.getOptionLabel,getOptionValue:option=>option._id,isOptionDisabled:this.props.isOptionDisabled,placeholder:gettext("Search by name or email"),noOptionsMessage:()=>gettext("We cannot find any user that fits the criteria"),pagination:!0,closeMenuOnSelect:!1,cacheOptions:!0,components:{Option:props=>react.createElement(react_select_esm.dK.Option,{...props},react.createElement(UserOption,{...props,disabledNotation:this.props.disabledNotation}))},loadingMessage:()=>loader,value:this.props.value,onChange:this.props.onChange,defaultOptions:!0,loadOptions:(0,debounce.A)(this.loadUserList,300,{trailing:!0}),styles:UserSelector.baseStyle,isDisabled:this.props.isDisabled,autoFocus:this.props.autoFocus,filterOption:()=>!0})}}UserSelector.defaultProps={getOptionLabel:user=>user.firstName?`${user.firstName} ${user.lastName}`:user.email},UserSelector.baseStyle={container:(base,state)=>({...base,flexGrow:1,cursor:state.isDisabled?"not-allowed":"auto",pointerEvents:"auto"}),menuList:base=>({...base,flexFlow:"row wrap",display:"flex",padding:"10px 30px"}),control:(base,state)=>({...base,border:"1px solid #d9d9de",borderRadius:0,transition:"border-color .15s ease-in-out,box-shadow .15s ease-in-out",backgroundColor:state.isDisabled?"#f9f9f9":"#FFF",borderColor:state.isFocused?"#428bca":"#d9d9de",boxShadow:state.isFocused?"0 1px 0 rgba(0, 0, 0, 0.06)":"0",cursor:state.isDisabled?"not-allowed":"auto","&:hover":{borderColor:state.isDisabled?"#d9d9de":"#428bca"}}),multiValue:base=>({...base,borderRadius:"2px",backgroundColor:"#428bca",border:"1px solid #357ebd",color:"#fff"}),multiValueLabel:(base,state)=>({...base,color:"#fff",fontSize:"13px",borderRight:0,cursor:state.isDisabled?"not-allowed":"auto",paddingRight:state.isDisabled?"6px":"unset"}),multiValueRemove:(base,state)=>({...base,borderLeft:0,borderRadius:0,"&:hover":{backgroundColor:"#3071a9",cursor:state.isDisabled?"not-allowed":"pointer",color:"#fff"},display:state.isDisabled?"none":base.display}),menu:base=>({...base,border:"1px solid #d9d9de",borderRadius:0,marginTop:0,"&:hover":{borderColor:"#428bca"},boxShadow:0}),option:(base,state)=>({paddingLeft:"0px",margin:0,"&:hover":{cursor:state.isDisabled?"not-allowed":"pointer"},flex:"1 0 310px",borderBottom:"1px solid #d9d9de",marginRight:"30px",maxWidth:"310px"}),loadingMessage:base=>({...base,margin:"0 auto"})},UserSelector.contextType=lib.dg;const AddUserControls=({fetchUser,onChange,selectedUserList,addSubscriberToChannel,cancel,isControlsShow,showAddSubscriberCtrl})=>{const{gettext}=react.useContext(lib.dg);return react.createElement("div",{className:"page_controls_b"},isControlsShow?react.createElement("div",{className:"add-users-ctrl-group"},react.createElement("span",{className:"title"},gettext("Add users")),react.createElement(UserSelector,{fetch:fetchUser,isOptionDisabled:user=>user.isMember,disabledNotation:"Member",lastSortKey:"isMember",onChange,value:selectedUserList,autoFocus:!0}),react.createElement(components.$n,{style:"link",onClick:cancel,text:gettext("Cancel")}),react.createElement(components.$n,{type:"submit",style:"primary",onClick:addSubscriberToChannel,text:gettext("Add")})):react.createElement("div",{style:{display:"flex",height:"36px"}},react.createElement(components.$n,{type:"submit",icon:"fas-plus",style:"secondary",onClick:showAddSubscriberCtrl,text:gettext("Add")})))};class MemberControls extends react.Component{constructor(props,state){super(props,state),this.fetchUser=async reqObj=>{if(!this.props.teamId)return;const req={isFull:!0,teamId:this.props.teamId,sortAttr:"status",sortReverse:!1,...reqObj},{data}=await api.YV.getTeamMemberList(req.teamId,req.fromId,req.searchTerm,req.lastSortValue,req.sortAttr,req.
1sortReverse,req.isFull);return data},this.onChange=selectedUserList=>{this.setState({selectedUserList})},this.addMemberToTeam=async()=>{const selectedUserList=this.state.selectedUserList;if(0===selectedUserList.length)return;const userIdList=selectedUserList.map((user=>user._id));await this.props.addTeamMember({userIdList})||(this._reset(),this.toggleAddMemberCtrl())},this.toggleAddMemberCtrl=()=>{this.setState({isAddCtrlShown:!this.state.isAddCtrlShown})},this.cancel=()=>{this._reset(),this.toggleAddMemberCtrl()},this.state={selectedUserList:[],isAddCtrlShown:!1}}UNSAFE_componentWillReceiveProps(nextProps){this.props.onGoingSelectCount!==nextProps.onGoingSelectCount&&0===nextProps.onGoingSelectCount&&!0===this.state.isAddCtrlShown&&this.setState({isAddCtrlShown:!1})}render(){return this.props.teamId?0===this.props.onGoingSelectCount?react.createElement(AddUserControls,{fetchUser:this.fetchUser,onChange:this.onChange,selectedUserList:this.state.selectedUserList,addSubscriberToChannel:this.addMemberToTeam,cancel:this.cancel,isControlsShow:this.state.isAddCtrlShown,showAddSubscriberCtrl:this.toggleAddMemberCtrl}):react.createElement(RemoveUserControls,{onRemoveConfirm:this.props.onRemoveConfirm,hideAddSubscriberCtrl:this.toggleAddMemberCtrl,onGoingSelectCount:this.props.onGoingSelectCount}):null}_reset(){this.setState({selectedUserList:[]})}}MemberControls.contextType=lib.dg;class TeamDetailRenderer extends react.Component{constructor(props,state){super(props,state),this.getCustomOptionForSelect=optionProps=>{const{state:{companyBasedChannels:{mandatoryChannelList,recommendedChannelList}},context:{gettext}}=this;return mandatoryChannelList.find((channel=>channel._id===optionProps.data._id))?react.createElement(components.O5,{...optionProps,secondaryText:gettext("Essential for company")}):recommendedChannelList.find((channel=>channel._id===optionProps.data._id))?react.createElement(components.O5,{...optionProps,secondaryText:gettext("Default for company")}):react.createElement(components.O5,{...optionProps})},this.goBack=()=>{this.props.history.goBack()},this.loadTeamInfo=async()=>{try{const{data:teamItem}=await api.YV.getTeamById(this.teamId);return this.setState({teamItem}),teamItem}catch(err){alert_utils.A.errorFromApi(err,this.context.gettext)}},this.loadCompanyBasedChannels=async()=>{const{session}=this.props;if(session&&session.company)try{const companyBasedChannels=await(0,default_channel_model.pZ)(session.company._id);return companyBasedChannels&&this.setState({companyBasedChannels}),companyBasedChannels}catch(err){alert_utils.A.errorFromApi(err,this.context.gettext)}},this.loadMemberList=async params=>{try{const req={...params,isFull:!1,teamId:this.teamId},{data}=await api.YV.getTeamMemberList(req.teamId,req.fromId,req.searchTerm,req.lastSortValue,req.sortAttr,req.sortReverse,req.isFull);return data}catch(err){alert_utils.A.errorFromApi(err,this.context.gettext)}},this.removeMember=async()=>{const userIdList=Object.keys(this.state.selectMap),selectAll=this.state.selectAll;if(0===userIdList.length&&!1===selectAll)return;const req={userIdList,selectAll};if(await this.props.removeTeamMember(this.state.teamItem._id,req,this.getGroupIdFromParam()),this.props.removeMemberError)return alert_utils.A.errorFromApi(this.props.removeMemberError,this.context.gettext),this.props.removeMemberError;alert_utils.A.success(this.context.gettext("Team settings has been updated!"));const teamItem={...this.state.teamItem};teamItem.memberCount=selectAll?0:teamItem.memberCount-userIdList.length,this.setState({teamItem}),this.clearSelection(),this._resetMemberList()},this.toggleSelect=(item,all,list)=>{if(null!==all)return void this.setState({selectMap:{},selectAll:all});if(!0===item.subscriptionStatus)return;let selectMap={...this.state.selectMap};!0===this.state.selectAll?(selectMap={},list.forEach((user=>{selectMap[user._id]=!0})),delete selectMap[item._id]):selectMap[item._id]?delete selectMap[item._id]:selectMap[item._id]=!0,this.setState({selectMap,selectAll:!1})},this.clearSelection=()=>{this.setState({selectMap:{},selectAll:!1})},this.onNameChange=e=>{const name=e.target.value,item={...this.state.teamItem,name};this.setState({teamItem:item})},this.onDescriptionChange=e=>{const description=e.target.value,item={...this.state.teamItem,description};this.setState({teamItem:item})},this.setMandatoryChannel=mandatoryChannelList=>{const editItem=this.state.teamItem,recommendedChannelList=this._getLeftDifference(editItem.recommendedChannelList,mandatoryChannelList);this.setState({teamItem:{...this.state.teamItem,mandatoryChannelList,recommendedChannelList}})},this.setRecomendedChannel=recommendedChannelList=>{const editItem=this.state.teamItem,mandatoryChannelList=this._getLeftDifference(editItem.mandatoryChannelList,recommendedChannelList);this.setState({teamItem:{...this.state.teamItem,mandatoryChannelList,recommendedChannelList}})},this.onSubmit=async e=>{e&&e.preventDefault();const name=this._sanitizeName(this.state.teamItem.name),description=this._sanitizeName(this.state.teamItem.description),editItem={...this.state.teamItem,name,description};await this.props.editTeam(editItem,this.getGroupIdFromParam(),!!this.props.session);const{editError}=this.props;if(editError)return alert_utils.A.errorFromApi(editError,this.context.gettext),editError;alert_utils.A.success(this.context.gettext("Team settings has been updated!"))},this.addTeamMember=async request=>{this._resetMemberList(),await this.props.addTeamMember(this.state.teamItem._id,request,this.getGroupIdFromParam());const{addMemberError}=this.props;if(addMemberError)return alert_utils.A.errorFromApi(addMemberError,this.context.gettext),addMemberError;const teamItem={...this.state.teamItem};teamItem.memberCount+=request.userIdList.length,this.setState({teamItem})},this.deleteTeam=async()=>{await this.props.deleteTeam(this.state.teamItem._id,this.getGroupIdFromParam()),this.props.deleteError?alert_utils.A.errorFromApi(this.props.deleteError,this.context.gettext):(alert_utils.A.success(this.context.gettext("Team has been deleted")),this.goBack())},this.getGroupIdFromParam=()=>query_string.qg(this.props.location.search).groupId||"",this._sanitizeName=name=>name.trim(),this._resetMemberList=()=>{this.setState({resetMemberList:!0},(()=>this.setState({resetMemberList:!1})))},this.state={teamItem:{_id:"",name:"",memberCount:0,mandatoryChannelList:[],recommendedChannelList:[],groupName:"",description:""}
1,error:"",sortMap:{email:!1,point:null,lastActive:null},resetMemberList:!1,selectMap:{},selectAll:!1,companyBasedChannels:{mandatoryChannelList:[],recommendedChannelList:[]}}}componentDidMount(){this.teamId=this.props.match.params.teamId,this.loadTeamInfo(),this.loadCompanyBasedChannels()}render(){const{props:{session},state:{teamItem},context:{ngettext,gettext}}=this,{isManager,isGroupAdmin}=(0,session_util.d)(session);if(!teamItem||!session)return null;const selectedCount=!0===this.state.selectAll?teamItem.memberCount:Object.keys(this.state.selectMap).length;return react.createElement("div",{className:"page-wrapper"},react.createElement("a",{className:"view-back-btn",onClick:this.goBack},"<< ",gettext("Back to Team list")),react.createElement("div",{className:"extra-box"},react.createElement("h1",{className:"page-header"},gettext("Team details"),react.createElement(DeleteTeam,{name:teamItem.name,deleteTeam:this.deleteTeam})),react.createElement("div",{className:"form-group"},react.createElement("div",{className:"md-block"},react.createElement("div",{className:"form-group-2"},react.createElement("span",{className:"section-title"},gettext("Team name")),react.createElement("input",{type:"text",value:teamItem.name,onChange:this.onNameChange,className:"form-control"})))),react.createElement("div",{className:"form-group"},react.createElement("div",{className:"md-block"},react.createElement("div",{className:"form-group-2"},react.createElement("span",{className:"section-title"},gettext("Team description")),react.createElement("input",{type:"text",value:teamItem.description,onChange:this.onDescriptionChange,className:"form-control"})))),react.createElement("div",{className:"form-group"},react.createElement("div",{className:"default-channels-select-name"},gettext("Subscription settings")),react.createElement(default_channel_select.m,{selectedMandatoryChannelList:teamItem.mandatoryChannelList,selectedRecomededChannelList:teamItem.recommendedChannelList,setMandatoryChannels:this.setMandatoryChannel,setRecomendedChannels:this.setRecomendedChannel,level:"team",isDisabled:!isManager()&&!isGroupAdmin(),customOption:this.getCustomOptionForSelect})),react.createElement("div",{className:"form-group-2"},react.createElement(components.$n,{onClick:this.onSubmit,style:"primary",type:"submit",text:gettext("Update")})),react.createElement("div",{className:"clear",style:{marginBottom:"40px"}}),react.createElement(MemberControls,{teamId:teamItem._id,addTeamMember:this.addTeamMember,onRemoveConfirm:this.removeMember,onGoingSelectCount:selectedCount}),react.createElement("div",{style:{margin:"20px 0px"}},react.createElement("i",{className:"i-user",style:{marginRight:"5px",color:"#b9b9b9"}}),react.createElement("span",null,(0,jed.sprintf)(ngettext(gettext("%s user found"),gettext("%s users found"),teamItem.memberCount),teamItem.memberCount)),selectedCount>0&&react.createElement("span",null,react.createElement("span",null,(0,jed.sprintf)(ngettext(` | ${gettext("%s user selected")} | `,` | ${gettext("%s users selected")} | `,selectedCount),selectedCount)),react.createElement("a",{onClick:()=>this.clearSelection(),style:{color:"#7c7c7c",textDecoration:"underline"}},"clear selection"))),react.createElement(user_list_table.o,{columnMap:{select:!0,info:!0,avatar:!0,teams:!0,lastActive:!0},sortMap:this.state.sortMap,fetch:this.loadMemberList,count:this.state.teamItem.memberCount,reset:this.state.resetMemberList,selectMap:this.state.selectMap,selectAll:this.state.selectAll,toggleSelect:this.toggleSelect})))}_getLeftDifference(leftChannelList,rightChannelList){return leftChannelList.filter((leftItem=>!rightChannelList.some((rightItem=>leftItem._id===rightItem._id))))}}TeamDetailRenderer.contextType=lib.dg;const TeamDetail=(0,es.Ng)((state=>({editError:state.Team.editError,deleteError:state.Team.deleteError,removeMemberError:state.Team.removeMemberError,addMemberError:state.Team.addMemberError,session:state.Session})),(dispatch=>(0,redux.bindActionCreators)({editTeam:redux_effects.wp,deleteTeam:redux_effects.To,removeTeamMember:redux_effects.i3,addTeamMember:redux_effects.dr},dispatch)))((0,react_router.y)(TeamDetailRenderer))},10046:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{VP:()=>Column.V,SS:()=>CompanyLink,fI:()=>Row.f,XQ:()=>SingleDatePicker,XA:()=>
1SocnetDisplay,Tu:()=>UserSelector.T});var react=__webpack_require__(96540);var Column=__webpack_require__(20118);__webpack_require__(95093);var Row=__webpack_require__(99490),react_select_esm=__webpack_require__(37823);class Select extends react.Component{constructor(props,state){super(props,state)}render(){const{styles,...selectProps}=this.props,merged=styles?(0,react_select_esm.Zq)(Select.baseStyle,styles):Select.baseStyle;return react.createElement(react_select_esm.Ay,{...selectProps,styles:merged})}}Select.baseStyle={control:(base,state)=>({...base,transition:"border-color .15s ease-in-out,box-shadow .15s ease-in-out",border:"1px solid #8e8e8e",borderRadius:3,borderColor:"#8e8e8e",backgroundColor:state.isDisabled?"#f9f9f9":"#FFF",cursor:state.isDisabled?"not-allowed":"auto",width:330,minHeight:50}),multiValueLabel:()=>({overflow:"hidden",padding:"3px",paddingLeft:"6px",textOverflow:"ellipsis",whiteSpace:"nowrap",boxSizing:"border-box"}),multiValue:base=>({...base,backgroundColor:"#8e8e8e",borderRadius:"2px",color:"#fff",fontSize:"13px"}),multiValueRemove:base=>({...base,"&:hover":{backgroundColor:"#7e7e7e",cursor:"pointer",color:"#fff"}}),menu:base=>({...base,padding:"0 10px",borderRadius:0,border:"1px solid #8e8e8e",boxShadow:0,marginTop:0}),option:(base,state)=>({fontSize:"15px",padding:"2px 0px",borderBottom:"1px solid #d9d9de",paddingLeft:"15px",verticalAlign:"center",minHeight:"40px",margin:"auto",display:"flex",alignItems:"center","&:hover":{cursor:"pointer",color:"#8e8e8e"},color:state.isSelected?"#8e8e8e":"inherit"})};var react_dates=__webpack_require__(13292),components=__webpack_require__(66931);const SingleDatePicker=({labelText,hintElement,...datePickerProps})=>react.createElement(components.ks,{labelText,hintElement,labelClassName:"ds-single-date-picker"},(labelMarkup=>react.createElement(react.Fragment,null,labelMarkup,react.createElement(react_dates.SingleDatePicker,{...datePickerProps,displayFormat:"D MMM YYYY",small:!0,numberOfMonths:1,hideKeyboardShortcutsPanel:!0,daySize:30}))));var socnet_enums=__webpack_require__(28431);const SocnetDisplay=props=>{const{socnet,isDisabled}=props,disabledClassName=isDisabled?"ds-socnet-display-disabled":"";return react.createElement("div",{className:`ds-socnet-display ${disabledClassName}`,"data-testid":"socnet-display-"+socnet},react.createElement("i",{className:`ds-socnet-display-icon ds-socnet-display-icon-${socnet} i-${socnet}`}),(0,socnet_enums.Os)(socnet))};var UserSelector=__webpack_require__(73846),react_router_dom=__webpack_require__(54625),es=__webpack_require__(49924);const CompanyLink=({to,children,className})=>{const linkColor=(0,es.d4)((state=>state.Session)).company.HighlightColor||"#ED5D40";return react.createElement(react_router_dom.N_,{className,to,style:{color:linkColor}},children)}},13639:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{z:()=>PageHeader});var noop=__webpack_require__(42302),prop_types=__webpack_require__(5556),react=__webpack_require__(96540),emotion_styled_browser_esm=__webpack_require__(59295),get_text=__webpack_require__(59247),stencil_generated=(__webpack_require__(52925),__webpack_require__(86055),__webpack_require__(11432));const DropdownToggle=(0,emotion_styled_browser_esm.A)(stencil_generated.B$)` 2 font-weight: ${p=>p.theme.cat.fontWeight.head}; 3`,GroupDropdown=({filterList,defaultItem,onSelect})=>{const[selectedItem,setSelectedItem]=react.useState(defaultItem);return react.createElement(stencil_generated.Cz,{"data-testid":"group-selector"},react.createElement(DropdownToggle,{slot:"trigger",color:"secondary",variant:"text",icon:"16-chevron-down",iconRight:!0,nativeAttributes:{"data-testid":"group-selector-trigger"}},selectedItem.display),react.createElement("nav",{slot:"content"},react.createElement("ul",null,filterList.map((item=>react.createElement("li",{key:item.value},react.createElement(stencil_generated.B$,{color:"secondary",variant:"text",className:"cat-nav-item",active:item.value===selectedItem.value,nativeAttributes:{"data-testid":`group-selector-button-${item.value}`},onClick:()=>(value=>{const newSelectedItem=filterList.find((item=>item.value===value));newSelectedItem&&selectedItem.value!==newSelectedItem.value&&(setSelectedItem(newSelectedItem),onSelect(value))})(item.value)},item.display)))))))},PageContentHeader=emotion_styled_browser_esm.A.div` 4 ${({theme:{cat:{spacing}}})=>`\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: baseline;\n\t\tgap: 12px;\n\t\tpadding-bottom: 12px;\n\t\tmargin-bottom: ${spacing.xl};\n\t`} 5`,PageHeaderTitle=emotion_styled_browser_esm.A.div` 6 ${({theme:{cat:{fontSize,fontWeight,lineHeight,color}}})=>`\n\t\tfont-size: ${fontSize.h1};\n\t\tfont-weight: ${fontWeight.head};\n\t\tline-height: ${lineHeight.h1};\n\t\tcolor: ${color.uiFontBase};\n\t`} 7`,PageContentHeaderGroupName=emotion_styled_browser_esm.A.div` 8 ${({theme:{cat:{fontSize,fontWeight,lineHeight,spacing}}})=>`\n\t\tfont-size: ${fontSize.h2};\n\t\tfont-weight: ${fontWeight.body};\n\t\tline-height: ${lineHeight.h2};\n\t\tmargin-left: ${spacing.s};\n\t`} 9`,PageHeader=({pageName,isGroupEnabled,defaultItem,filterList,containerStyle,onSelect=noop.A})=>{const canShowGroup=isGroupEnabled&&defaultItem,filterHasMoreThanOneItem=Array.isArray(filterList)&&filterList.length>=2,shouldShowGroupName=canShowGroup&&!filterHasMoreThanOneItem,shouldShowDropdown=canS
9howGroup&&filterHasMoreThanOneItem;return react.createElement(PageContentHeader,{style:containerStyle},react.createElement(PageHeaderTitle,null,react.createElement(get_text.q,null,pageName)),shouldShowGroupName&&react.createElement(PageContentHeaderGroupName,null,react.createElement(get_text.q,null,defaultItem.display)),shouldShowDropdown&&react.createElement(GroupDropdown,{filterList,defaultItem,onSelect}))};prop_types.string.isRequired,prop_types.bool,prop_types.any,prop_types.any,prop_types.object,prop_types.any},20118:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{V:()=>Column});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540);const Column=({children,style,dataTestId})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"ds-flex-column","data-testid":dataTestId,style},children)},52685:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{FD:()=>setCompanyDefaultChannels,pZ:()=>getCompanyDefaultChannels});var src_api__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(56433);const getCompanyDefaultChannels=async companyId=>(await src_api__WEBPACK_IMPORTED_MODULE_0__._K.getCompanyDefaultChannels(companyId)).data,setCompanyDefaultChannels=async(companyId,defaultChannels)=>{await src_api__WEBPACK_IMPORTED_MODULE_0__._K.setCompanyDefaultChannels(companyId,defaultChannels)}},54073:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{m:()=>DefaultChannels});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540),react_redux__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(49924),_Util_channels_util_adapters__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(59008),src_app_modules_app_channel_redux_effects__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(13226),src_app_modules_core_helpers_labs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(25231),src_app_react_common_hooks_use_get_text__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(87914),src_app_react_common_hooks_use_session__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(84280),src_design_system_components__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(66931);const mapDispatchToProps={fetchGroupedChannels:src_app_modules_app_channel_redux_effects__WEBPACK_IMPORTED_MODULE_2__.Vx},DefaultChannels=(0,react_redux__WEBPACK_IMPORTED_MODULE_1__.Ng)((state=>({channelListForSelect:(0,_Util_channels_util_adapters__WEBPACK_IMPORTED_MODULE_7__.DI)(state.Channel.groupedChannelList,state.Session.user.groupId),isLoading:state.Channel.isFetchingGroupedChannelList,error:state.Channel.groupedChannelListError})),mapDispatchToProps)((({customOption=props=>react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_5__.O5,{...props}),level,setMandatoryChannels,setRecomendedChannels,isDisabled,channelListForSelect,selectedMandatoryChannelList,selectedRecomededChannelList,fetchGroupedChannels})=>{const{gettext}=(0,src_app_react_common_hooks_use_get_text__WEBPACK_IMPORTED_MODULE_3__.z)(),{session,sessionUtil:{isLabEnabled,isManager}}=(0,src_app_react_common_hooks_use_session__WEBPACK_IMPORTED_MODULE_4__.w)();react__WEBPACK_IMPORTED_MODULE_0__.useEffect((()=>{fetchGroupedChannels({ignoreAccessibilityFilter:isManager()},{forceFetch:!0})}),[]);return react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-flex-col cat-gap-l cat-text-m"},react__WEBPACK_IMPORTED_MODULE_0__.createElement("p",{className:"cat-m-0"},"team"===level?gettext("Existing and new team members will be automatically subscribed to these channels."):"group"===level?gettext("Existing and new group members will be automatically subscribed to these channels."):"company"===level?gettext("Existing and new users will be automatically subscribed to these channels."):""),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-text-l cat-mb-s"},gettext("Essential channels")),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-mb-m cat-flex-col"},react__WEBPACK_IMPORTED_MODULE_0__.createElement("span",{className:"cat-text-m"}
9,"team"===level?gettext("Make sure important content will reach everyone in the team. Team members cannot unsubscribe from these channels"):"group"===level?gettext("Make sure important content will reach everyone in the group. Group members cannot unsubscribe from these channels"):"company"===level?gettext("Make sure important content will reach everyone in the company. Users cannot unsubscribe from these channels"):""),isLabEnabled(src_app_modules_core_helpers_labs__WEBPACK_IMPORTED_MODULE_6__.fS)&&"company"===level&&react__WEBPACK_IMPORTED_MODULE_0__.createElement("span",{className:"cat-text-m"},gettext("Users from Groups with limited access will not be automatically subscribed to these Channels"))),react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_5__.xI,{channelList:channelListForSelect,value:selectedMandatoryChannelList,onChange:setMandatoryChannels,showGroups:session.company.isGroupEnabled,isDisabled,components:{Option:customOption},placeholder:gettext("Choose channels")})),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-text-l cat-mb-s"},gettext("Default channels")),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"cat-mb-m cat-flex-col"},react__WEBPACK_IMPORTED_MODULE_0__.createElement("span",{className:"cat-text-m"},"team"===level?gettext("Team members can unsubscribe from these channels."):"group"===level?gettext("Group members can unsubscribe from these channels."):"company"===level?gettext("Users can unsubscribe from these channels."):""),isLabEnabled(src_app_modules_core_helpers_labs__WEBPACK_IMPORTED_MODULE_6__.fS)&&"company"===level&&react__WEBPACK_IMPORTED_MODULE_0__.createElement("span",{className:"cat-text-m"},gettext("Users from Groups with limited access will not be automatically subscribed to these Channels"))),react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_5__.xI,{channelList:channelListForSelect,value:selectedRecomededChannelList,onChange:setRecomendedChannels,showGroups:session.company.isGroupEnabled,isDisabled,components:{Option:customOption},placeholder:gettext("Choose channels")})))}))},59008:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{CM:()=>filterGroupedChannelsByGroupId,DI:()=>convertGroupedChannelsToObjectForSelect,sT:()=>convertToSectionedListForSelect});var _filter_channel_manager_filter_channel_manager__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(18901);const filterGroupedChannelsByGroupId=(groupedChannels,groupId)=>groupedChannels.filter((group=>group.groupId===groupId)),convertGroupedChannelsToObjectForSelect=(groupedChannels,userGroupId)=>groupedChannels.map((group=>({groupId:group.groupId,groupName:userGroupId===group.groupId?`My group: ${group.groupName}`:group.groupName,options:group.channelList}))),convertToSectionedListForSelect=(groupedChannels,userGroupId,sectionNames)=>{const groupedChannelsForSelect=convertGroupedChannelsToObjectForSelect(groupedChannels,userGroupId),sectionedManagedChannels=groupedChannelsForSelect.map((groupedList=>({...groupedList,isPrimarySection:!0,options:groupedList.options.filter(_filter_channel_manager_filter_channel_manager__WEBPACK_IMPORTED_MODULE_0__._W)}))).filter((groupedList=>groupedList.options.length>0));sectionedManagedChannels.length>0&&(sectionedManagedChannels[0].sectionName=sectionNames.publishableChannel);const sectionedOtherChannels=groupedChannelsForSelect.map((groupedList=>({...groupedList,isPrimarySection:!1,options:groupedList.options.filter(_filter_channel_manager_filter_channel_manager__WEBPACK_IMPORTED_MODULE_0__.TA)}))).filter((groupedList=>groupedList.options.length>0));return sectionedOtherChannels.length>0&&(sectionedOtherChannels[0].sectionName=sectionNames.proposableChannel),[...sectionedManagedChannels,...sectionedOtherChannels]}},62061:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{o:()=>UserTable});var jed=__webpack_require__(69407),react=__webpack_require__(96540),lib=__webpack_require__(85821),es=__webpack_require__(9053),loader=__webpack_require__(95259),shared_react_components=__webpack_require__(67940),human_readable_date=__webpack_require__(19551),dist=__webpack_require__(71287),show_by_condition=__webpack_require__(5775);class UserRow extends react.Component{render(){const{props:{user,columnMap,selectMap,selectAll,disableSelect}}=this,canShowUserRoleText=user.role&&![dist.u8N.Sharer,dist.u8N.ChannelManager].includes(user.role);return react.createElement("tr",null,columnMap.select?react.createElement("td",{className:"table-checkbox"},react.createElement("input",{type:"checkbox",checked:selectAll||!!selectMap[user._id],disabled:disableSelect,onChange:()=>this.props.toggleSelect(user)})):react.createElement("td",{className:"table-checkbox"}),!!columnMap.avatar&&react.createElement("td",{className:"table-avatar"},react.createElement(shared_react_components.Cr,{imageUrl:user.avatarUrl,token:dist.JRo.Avatar})),!!columnMap.info&&react.createElement("td",{className:"table-info"},react.createElement("div",null,""!==user.firstName||""!==user.lastName?`${user.firstName} ${user.lastName}`:null),react.createElement("div",{className:"email"},user.email),react.createElement("div",null,user.socnetList.map((socnet=>{const socnetClass=`i-${socnet}`;return react.createElement("i",{key:socnet,className:`user-socnet ${socnetClass}`})}))),react.createElement(show_by_condition.q,{isShow:canShowUserRoleText},react.createElement("div",{style:{fontWeight:"bold",textTransform:"capitalize"}},user.role))),!!columnMap.point&&react.createElement("td",null,react.createElement("i",{className:"lifetime",style:{marginRight:"5px"}}),user.point),!!columnMap.teams&&react.createElement("td",{className:"table-user-tag"},user.teamList.map((team=>react.createElement("span",{key:team._id},team.name)))),!!columnMap.lastActive&&react.createElement("td",{className:"table-date-status"},react.createElement("div",{className:"table-date-status-value"},react.createElement(human_readable_date.q,{date:user.lastActive}))),!!columnMap.subDate&&react.createElement("td",{className:"table-date-status"},react.createElement("div",{className:"table-date-status-value"},react.createElement(human_readable_date.q,{date:user.subscribedAt}))),!!columnMap.subStatus&&react.createElement("td",null,react.createElement("div",null,user.subscriptionStatus?"Subscribed":"")))}}class UserTable extends react.Component{constructor(props,state){super(props,state),this.get
9SortPosition=(sortAttr,sortMap)=>{if(void 0!==sortMap[sortAttr]){if(!1===sortMap[sortAttr])return react.createElement("i",{className:"i-caret-up"});if(!0===sortMap[sortAttr])return react.createElement("i",{className:"i-caret-down"})}return null},this.sort=attr=>{const sortMap={...this.state.sortMap};Object.keys(sortMap).forEach((key=>{sortMap[key]=key===attr?!sortMap[key]:null})),this.setState({sortMap},this.resetList)},this.fetch=async()=>{if(this.state.isLoading)return;this.setState({isLoading:!0});const req=this.prepareRetrieveRequest();let response;try{if(response=await this.props.fetch(req),response instanceof Array&&0===response.length)return void this.setState({listEnded:!0,isLoading:!1});const list=this.state.list.concat(response);return this.setState({list,isLoading:!1}),response}catch(err){this.setState({isLoading:!1,listEnded:!0})}},this.toggleSelect=item=>{this.props.toggleSelect(item,null,this.state.list)},this.prepareRetrieveRequest=()=>{let fromId="",lastSortValue=null;const sortAttr=this.getSortAttr(),sortReverse=this.state.sortMap[sortAttr];if(this.state.list.length>0){const lastElem=this.state.list.slice(0).pop();if(lastElem)switch(fromId=lastElem._id,sortAttr){case"point":lastSortValue=lastElem.point;break;case"lastActive":lastSortValue=lastElem.lastActive;break;default:lastSortValue=lastElem.email}}return{fromId,sortAttr,sortReverse,lastSortValue}},this.getSortAttr=()=>{let sortAttr="email";return Object.keys(this.state.sortMap).forEach((key=>{null!==this.state.sortMap[key]&&void 0!==this.state.sortMap[key]&&(sortAttr=key)})),sortAttr},this.resetList=()=>{this.setState({list:[],listEnded:!1,isLoading:!1})},this.state={isLoading:!1,listEnded:!1,list:[],sortMap:this.props.sortMap}}UNSAFE_componentWillReceiveProps(nextProps){this.props.reset!==nextProps.reset&&!0===nextProps.reset&&this.resetList()}render(){const{props:{count,columnMap,disableSelectAll,disableSelectOnRow},context:{gettext,ngettext}}=this,{getSortPosition,state:{list,sortMap}}=this;return react.createElement("div",{className:"data-table table-responsive"},react.createElement("div",{style:{position:"relative"}},react.createElement("table",{className:`table select-table user-table ${this.props.className}`},react.createElement("thead",null,react.createElement("tr",null,columnMap.select&&!disableSelectAll?react.createElement("th",{className:"table-checkbox",onClick:()=>this.props.toggleSelect(null,!this.props.selectAll,this.state.list)},react.createElement("input",{type:"checkbox",readOnly:!0,checked:this.props.selectAll})):react.createElement("th",{className:"table-checkbox"}
9),!!columnMap.avatar&&react.createElement("th",null),!!columnMap.info&&react.createElement("th",null,react.createElement("a",{onClick:()=>this.sort("email")},react.createElement("span",{className:"label"},gettext("Info")),getSortPosition("email",sortMap))),!!columnMap.point&&react.createElement("th",null,react.createElement("a",{onClick:()=>this.sort("point")},react.createElement("span",{className:"label"},gettext("Points")),getSortPosition("point",sortMap))),!!columnMap.teams&&react.createElement("th",null,react.createElement("a",null,react.createElement("span",{className:"label"},gettext("Teams")))),!!columnMap.lastActive&&react.createElement("th",null,react.createElement("a",{onClick:()=>this.sort("lastActive")},react.createElement("span",{className:"label"},gettext("Last active")),getSortPosition("lastActive",sortMap))),!!columnMap.subDate&&react.createElement("th",null,react.createElement("a",null,react.createElement("span",{className:"label"},gettext("Subscription date")))),!!columnMap.subStatus&&react.createElement("th",
9null,react.createElement("a",{onClick:()=>this.sort("status")},react.createElement("span",{className:"label"},gettext("Status")),getSortPosition("status",sortMap))))),react.createElement("tbody",null,list.map((user=>react.createElement(UserRow,{key:user._id,user,columnMap,toggleSelect:this.toggleSelect,selectMap:this.props.selectMap,selectAll:this.props.selectAll,disableSelect:disableSelectOnRow(user)}))))),react.createElement(loader.a,{isShow:this.state.isLoading,cssStyle:{textAlign:"center"}}),this.state.listEnded?react.createElement("div",{className:"graytext aligncenter"},react.createElement("span",null,(0,jed.sprintf)(ngettext(gettext("Showing %s user"),gettext("Showing all %s users"),count),count))):react.createElement(es.Y,{key:`user-table-wp-${count}`,onEnter:this.fetch})))}}UserTable.defaultProps={disableSelectOnRow:()=>!1},UserTable.contextType=lib.dg},73846:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{T:()=>UserSelector});var _thesharpieone_react_select_async_pagination__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(37823),lodash_es__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(23549),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(96540),_SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(71287),_SharedReactComponents_image_proxy_image_proxy__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(79561),src_app_modules_app_widgets_loader_loader__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(95259);const getOptionLabel=user=>user.firstName?`${user.firstName} ${user.lastName}`:user.email;class UserSelector extends react__WEBPACK_IMPORTED_MODULE_1__.Component{constructor(){super(...arguments),this.loadUserList=(input,page,callback)=>{1===page&&(this._lastSortValue="",this._fromId="");const req={lastSortValue:this._lastSortValue,fromId:this._fromId,searchTerm:input};this.props.fetchUsers(req).then((userList=>{var _a;const lastUser=userList.concat([]).pop();lastUser&&(this._lastSortValue=lastUser[this.props.lastSortKey],this._fromId=null!==(_a=lastUser._id)&&void 0!==_a?_a:"");const{disabledOptions}=this.props;let options=[...userList];(null==disabledOptions?void 0:disabledOptions.length)&&(options=options.map((user=>{const{_id=""}=user;return disabledOptions.includes(_id)?{...user,isDisabled:!0}:user}))),callback(options)}))}}render(){const{gettext,...selectProps}=this.props;return react__WEBPACK_IMPORTED_MODULE_1__.createElement(_thesharpieone_react_select_async_pagination__WEBPACK_IMPORTED_MODULE_0__.jg,{isMulti:!0,pagination:!0,cacheOptions:!0,defaultOptions:!0,closeMenuOnSelect:!1,filterOption:()=>!0,classNamePrefix:"ds-user-selector",className:"ds-user-selector__container",getOptionLabel,getOptionValue:option=>option._id,loadingMessage:()=>react__WEBPACK_IMPORTED_MODULE_1__.createElement(src_app_modules_app_widgets_loader_loader__WEBPACK_IMPORTED_MODULE_4__.a,{isShow:!0}),loadOptions:(0,lodash_es__WEBPACK_IMPORTED_MODULE_5__.A)(this.loadUserList,300,{trailing:!0}),placeholder:gettext("Search by name or email"),noOptionsMessage:()=>gettext("We cannot find any user that fits the criteria"),components:{Option:props=>react__WEBPACK_IMPORTED_MODULE_1__.createElement(_thesharpieone_react_select_async_pagination__WEBPACK_IMPORTED_MODULE_0__.dK.Option,{...props},react__WEBPACK_IMPORTED_MODULE_1__.createElement(UserSelectorOption,{...props,disabledNotation:this.props.disabledNotation}))},...selectProps})}}const UserSelectorOption=props=>{const{className,cx,isDisabled,isFocused,isSelected,innerRef,innerProps,getStyles,data,selectProps}=props,classNames=(null==cx?void 0:cx("ds-user-selector",{option:!0,"option--is-disabled":Boolean(isDisabled),"option--is-focused":Boolean(isFocused),"option--is-selected":Boolean(isSelected)},className))||"";return react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{ref:innerRef,style:getStyles?getStyles("option",props):{},className:classNames,...innerProps,onClick:e=>{e.stopPropagation(),(null==innerProps?void 0:innerProps.onClick)&&innerProps.onClick(e)}},react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{className:"option-user-avatar"},react__WEBPACK_IMPORTED_MODULE_1__.createElement(_SharedReactComponents_image_proxy_image_proxy__WEBPACK_IMPORTED_MODULE_3__.C,{imageUrl:data.avatarUrl,token:_SmarpJSClient_dist__WEBPACK_IMPORTED_MODULE_2__.JRo.Avatar})),react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{className:"option-user-info"},react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{className:"option-user-name"},`${data.firstName} ${data.lastName}`),react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{className:"option-user-email"},data.email)),isDisabled&&(null==selectProps?void 0:selectProps.disabledNote)&&react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{className:"option-disabled-note"},selectProps.disabledNote))};UserSelectorOption.displayName="UserSelectorOpiton"},99490:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{f:()=>Row});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540);const Row=({children,style})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"ds-flex-row",style},children)}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.