D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
build
/
Filename :
TeamPages.864604ad328a4f6a00a0.js
back
Copy
"use strict";(self.webpackChunkgrafana=self.webpackChunkgrafana||[]).push([[8612],{78481:(G,S,t)=>{t.d(S,{f:()=>d});var O=t(27702),e=t(26811),u=t(66574),R=t(18771),P=t(3718),y=t(11349);const d=({teamId:g,roleOptions:h,disabled:r,onApplyRoles:T,pendingRoles:f,apply:A=!1,maxWidth:B})=>{const[{loading:F,value:_=[]},$]=(0,e.Z)(async()=>{try{if(A&&f?.length)return f;if(u.Vt.hasPermission(R.AccessControlAction.ActionTeamsRolesList))return await(0,y._C)(g)}catch(p){console.error("Error loading options",p)}return[]},[g,f]);(0,O.useEffect)(()=>{$()},[g,$,f]);const N=async p=>{A?T&&T(p):(await(0,y.u7)(p,g),await $())},C=u.Vt.hasPermission(R.AccessControlAction.ActionTeamsRolesAdd)&&u.Vt.hasPermission(R.AccessControlAction.ActionTeamsRolesRemove);return O.createElement(P.I,{apply:A,onRolesChange:N,roleOptions:h,appliedRoles:_,isLoading:F,disabled:r,basicRoleDisabled:!0,canUpdateRoles:C,maxWidth:B})}},35817:(G,S,t)=>{t.d(S,{C:()=>y});var O=t(27702),e=t(80601),u=t(66574),R=t(18771),P=t(11349);const y=d=>{const[g,h]=(0,O.useState)(d),{value:r=[]}=(0,e.Z)(async()=>u.Vt.licensedAccessControlEnabled()&&u.Vt.hasPermission(R.AccessControlAction.ActionRolesList)?(0,P.ul)(g):Promise.resolve([]),[g]);return[{roleOptions:r},h]}},54569:(G,S,t)=>{t.d(S,{Z:()=>c,v:()=>l});var O=t(42844),e=t(27702),u=t(11391),R=t(62247),P=t(74639),y=t(86312),d=t(34667),g=t(23839),h=t(5229),r=t(22209),T=t(28580),f=t(79978),A=t(15672),B=t(63014),F=t(96198),_=t(66670),$=t(80402),N=t(81290),C=t(65322),p=t(16832),x=t(97662),Z=t(70828);function H(){const W=p.a2.map(m=>({value:m.code,label:m.name}));return[{value:"",label:(0,C.t)("common.locale.default","Default")},...W]}class l extends e.PureComponent{constructor(L){super(L),this.onSubmitForm=async()=>{if(this.props.onConfirm?await this.props.onConfirm():!0){const{homeDashboardUID:U,theme:w,timezone:V,weekStart:J,language:z,queryHistory:Q}=this.state;await this.service.update({homeDashboardUID:U,theme:w,timezone:V,weekStart:J,language:z,queryHistory:Q}),window.location.reload()}},this.onThemeChanged=m=>{this.setState({theme:m.value}),m.value&&(0,Z.L)(m.value,!0)},this.onTimeZoneChanged=m=>{typeof m=="string"&&this.setState({timezone:m})},this.onWeekStartChanged=m=>{this.setState({weekStart:m})},this.onHomeDashboardChanged=m=>{this.setState({homeDashboardUID:m})},this.onLanguageChanged=m=>{this.setState({language:m}),(0,y.ff)("grafana_preferences_language_changed",{toLanguage:m,preferenceType:this.props.preferenceType})},this.service=new x.y(L.resourceUri),this.state={theme:"",timezone:"",weekStart:"",language:"",queryHistory:{homeTab:""}},this.themeOptions=(0,u.d)(d.config.featureToggles.extraThemes).map(m=>({value:m.id,label:M(m)})),this.themeOptions.unshift({value:"",label:(0,C.t)("shared-preferences.theme.default-label","Default")})}async componentDidMount(){const L=await this.service.load();this.setState({homeDashboardUID:L.homeDashboardUID,theme:L.theme,timezone:L.timezone,weekStart:L.weekStart,language:L.language,queryHistory:L.queryHistory})}render(){const{theme:L,timezone:m,weekStart:U,homeDashboardUID:w,language:V}=this.state,{disabled:J}=this.props,z=v(),Q=H(),Y=this.themeOptions.find(K=>K.value===L)??this.themeOptions[0];return e.createElement(g.l,{onSubmit:this.onSubmitForm},()=>e.createElement(h.C,{label:e.createElement(C.cC,{i18nKey:"shared-preferences.title"},"Preferences"),disabled:J},e.createElement(r.g,{label:(0,C.t)("shared-preferences.fields.theme-label","Interface theme")},e.createElement(T.Ph,{options:this.themeOptions,value:Y,onChange:this.onThemeChanged,inputId:"shared-preferences-theme-select"})),e.createElement(r.g,{label:e.createElement(f._,{htmlFor:"home-dashboard-select"},e.createElement("span",{className:z.labelText},e.createElement(C.cC,{i18nKey:"shared-preferences.fields.home-dashboard-label"},"Home Dashboard"))),"data-testid":"User preferences home dashboard drop down"},e.createElement(N.o,{value:w,onChange:K=>this.onHomeDashboardChanged(K?.uid??""),defaultOptions:!0,isClearable:!0,placeholder:(0,C.t)("shared-preferences.fields.home-dashboard-placeholder","Default dashboard"),inputId:"home-dashboard-select"})),e.createElement(r.g,{label:(0,C.t)("shared-dashboard.fields.timezone-label","Timezone"),"data-testid":P.wl.components.TimeZonePicker.containerV2},e.createElement(A.O,{includeInternal:!0,value:m,onChange:this.onTimeZoneChanged,inputId:"shared-preferences-timezone-picker"})),e.createElement(r.g,{label:(0,C.t)("shared-preferences.fields.week-start-label","Week start"),"data-testid":P.wl.components.WeekStartPicker.containerV2},e.createElement(B.z,{value:U||"",onChange:this.onWeekStartChanged,inputId:"shared-preferences-week-start-picker"})),e.createElement(r.g,{label:e.createElement(f._,{htmlFor:"locale-select"},e.createElement("span",{className:z.labelText},e.createElement(C.cC,{i18nKey:"shared-preferences.fields.locale-label"},"Language")),e.createElement(F.a,{featureState:R.CQ.beta})),"data-testid":"User preferences language drop down"},e.createElement(T.Ph,{value:Q.find(K=>K.value===V),onChange:K=>this.onLanguageChanged(K.value??""),options:Q,placeholder:(0,C.t)("shared-preferences.fields.locale-placeholder","Choose language"),inputId:"locale-select"})),e.createElement("div",{className:"gf-form-button-row"},e.createElement(_.zx,{type:"submit",variant:"primary","data-testid":P.wl.components.UserProfile.preferencesSaveButton},e.createElement(C.cC,{i18nKey:"common.save"},"Save")))))}}const c=l,v=(0,$.B)(()=>({labelText:(0,O.css)` margin-right: 6px; `}));function M(W){switch(W.id){case"dark":return(0,C.t)("shared.preferences.theme.dark-label","Dark");case"light":return(0,C.t)("shared.preferences.theme.light-label","Light");case"system":return(0,C.t)("shared.preferences.theme.system-label","System preference");default:return W.name}}},26543:(G,S,t)=>{t.r(S),t.d(S,{TeamPages:()=>ee,default:()=>xe});var O=t(89949),e=t(27702),u=t(27173),R=t(80978),P=t(66310),y=t(44644),d=t(42844),g=t(86312),h=t(73453),r=t(66670);const T=({featureName:n,className:a,children:s,text:o,featureId:i,eventVariant:E="",size:b="md",...D})=>{const I=(0,P.wW)(j=>f(j,b));return(0,e.useEffect)(()=>{(0,g.SZ)(`feature-highlights-${i}`,"test",E)},[E,i]),e.createElement("div",{className:(0,d.cx)(I.box,a),...D},e.createElement(h.J,{name:"rocket",className:I.icon}),e.createElement("div",{className:I.inner},e.createElement("p",{className:I.text},"You\u2019ve discovered a Pro feature! ",o||`Get the Grafana Pro plan to access ${n}.`),e.createElement(r.Qj,{variant:"secondary",size:b,className:I.button,href:"https://grafana.com/profile/org/subscription",target:"__blank",rel:"noopener noreferrer"},"Upgrade")))},f=(n,a)=>{const s=n.shape.borderRadius(2),o=a==="md"?"body":"bodySmall";return{box:(0,d.css)` display: flex; align-items: center; position: relative; border-radius: ${s}; background: ${n.colors.success.transparent}; padding: ${n.spacing(2)}; color: ${n.colors.success.text}; font-size: ${n.typography[o].fontSize}; text-align: left; line-height: 16px; margin: ${n.spacing(0,"auto",3,"auto")}; max-width: ${n.breakpoints.values.xxl}px; width: 100%; `,inner:(0,d.css)` display: flex; align-items: center; width: 100%; justify-content: space-between; `,text:(0,d.css)` margin: 0; `,button:(0,d.css)` background-color: ${n.colors.success.main}; font-weight: ${n.typography.fontWeightLight}; color: white; &:hover { background-color: ${n.colors.success.main}; } &:focus-visible { box-shadow: none; color: ${n.colors.text.primary}; outline: 2px solid ${n.colors.primary.main}; } `,icon:(0,d.css)` margin: ${n.spacing(.5,1,.5,.5)}; `}},A=({listItems:n,image:a,featureUrl:s,featureName:o,description:i,caption:E,action:b})=>{const D=(0,P.wW)(B);return e.createElement("div",{className:D.container},e.createElement("div",{className:D.content},e.createElement("h3",{className:D.title},"Get started with ",o),i&&e.createElement("h6",{className:D.description},i),e.createElement("ul",{className:D.list},n.map((I,j)=>e.createElement("li",{key:j},e.createElement(h.J,{name:"check",size:"xl",className:D.icon})," ",I))),b?.link&&e.createElement(r.Qj,{variant:"primary",href:b.link},b.text),b?.onClick&&e.createElement(r.zx,{variant:"primary",onClick:b.onClick},b.text),s&&e.createElement(r.Qj,{fill:"text",href:s,className:D.link,target:"_blank",rel:"noreferrer noopener"},"Learn more")),e.createElement("div",{className:D.media},e.createElement("img",{src:$(a),alt:"Feature screenshot"}),E&&e.createElement("p",{className:D.caption},E)))},B=n=>({container:(0,d.css)` display: flex; justify-content: space-between; `,content:(0,d.css)` width: 45%; margin-right: ${n.spacing(4)}; `,media:(0,d.css)` width: 55%; img { width: 100%; } `,title:(0,d.css)` color: ${n.colors.text.maxContrast}; `,description:(0,d.css)` color: ${n.colors.text.primary}; font-weight: ${n.typography.fontWeightLight}; `,list:(0,d.css)` list-style: none; margin: ${n.spacing(4,0,2,0)}; li { display: flex; align-items: flex-start; color: ${n.colors.text.primary}; padding: ${n.spacing(1,0)}; } `,icon:(0,d.css)` color: ${n.colors.success.main}; margin-right: ${n.spacing(1)}; `,link:(0,d.css)` margin-left: ${n.spacing(2)}; `,caption:(0,d.css)` font-weight: ${n.typography.fontWeightLight}; margin: ${n.spacing(1,0,0)}; `}),F=({featureName:n,description:a,featureUrl:s,image:o})=>{const i=useStyles2(_);return React.createElement("div",{className:i.container},React.createElement("h3",{className:i.title},"Get started with ",n),a&&React.createElement("h6",{className:i.description},a),React.createElement(LinkButton,{fill:"text",href:s,target:"_blank",rel:"noreferrer noopener"},"Learn more"),React.createElement("div",{className:i.media},React.createElement("img",{src:$(o),alt:"Feature screenshot"})))},_=n=>({container:css` overflow: auto; height: 100%; `,title:css` color: ${n.colors.text.maxContrast}; `,description:css` color: ${n.colors.text.primary}; font-weight: ${n.typography.fontWeightLight}; `,media:css` width: 100%; margin-top: ${n.spacing(2)}; img { width: 100%; } `}),$=n=>n.startsWith("http")?n:"/public/img/enterprise/highlights/"+n;var N=t(12308),C=t(86809),p=t(91368),x=t(18771),Z=t(80011),H=t(71107),l=t(48024),c=t(1128),v=t(88203),M=t(35952),W=t(66970),L=t(41715),m=t(90689),U=t(89229);function w(n){return{groups:(0,U.JB)(n.team)}}const V={loadTeamGroups:m.j_,addTeamGroup:m.A_,removeTeamGroup:m.P5},J=(0,u.connect)(w,V),z="Sync LDAP, OAuth or SAML groups with your Grafana teams.";class Q extends e.PureComponent{constructor(a){super(a),this.onToggleAdding=()=>{this.setState({isAdding:!this.state.isAdding})},this.onNewGroupIdChanged=s=>{this.setState({newGroupId:s.target.value})},this.onAddGroup=s=>{s.preventDefault(),this.props.addTeamGroup(this.state.newGroupId),this.setState({isAdding:!1,newGroupId:""})},this.onRemoveGroup=s=>{this.props.removeTeamGroup(s.groupId)},this.state={isAdding:!1,newGroupId:""}}componentDidMount(){this.fetchTeamGroups()}async fetchTeamGroups(){await this.props.loadTeamGroups()}isNewGroupValid(){return this.state.newGroupId.length>1}renderGroup(a){const{isReadOnly:s}=this.props;return e.createElement("tr",{key:a.groupId},e.createElement("td",null,a.groupId),e.createElement("td",{style:{width:"1%"}},e.createElement(r.zx,{size:"sm",variant:"destructive",onClick:()=>this.onRemoveGroup(a),disabled:s,"aria-label":`Remove group ${a.groupId}`},e.createElement(h.J,{name:"times"}))))}render(){const{isAdding:a,newGroupId:s}=this.state,{groups:o,isReadOnly:i}=this.props;return e.createElement("div",null,(0,L.d5)()&&e.createElement(T,{featureId:"team-sync",eventVariant:"trial",featureName:"team sync",text:"Add a group to enable team sync for free during your trial of Grafana Pro."}),e.createElement("div",{className:"page-action-bar"},(!(0,L.d5)()||o.length>0)&&e.createElement(e.Fragment,null,e.createElement("h3",{className:"page-sub-heading"},"External group sync"),e.createElement(Z.u,{placement:"auto",content:z},e.createElement(h.J,{className:"icon--has-hover page-sub-heading-icon",name:"question-circle"}))),e.createElement("div",{className:"page-action-bar__spacer"}),o.length>0&&e.createElement(r.zx,{className:"pull-right",onClick:this.onToggleAdding,disabled:i},e.createElement(h.J,{name:"plus"})," Add group")),e.createElement(v.s,{in:a},e.createElement("div",{className:"cta-form"},e.createElement(M.P,{onClick:this.onToggleAdding}),e.createElement("form",{onSubmit:this.onAddGroup},e.createElement(H.Z,null,e.createElement(l._,{label:"Add External Group",tooltip:"LDAP Group Example: cn=users,ou=groups,dc=grafana,dc=org."},e.createElement(c.I,{type:"text",id:"add-external-group",placeholder:"",value:s,onChange:this.onNewGroupIdChanged,disabled:i})),e.createElement(r.zx,{type:"submit",disabled:i||!this.isNewGroupValid(),style:{marginLeft:4}},"Add group"))))),o.length===0&&!a&&((0,L.d5)()?e.createElement(Y,{action:{onClick:this.onToggleAdding,text:"Add group"}}):e.createElement(W.Z,{onClick:this.onToggleAdding,buttonIcon:"users-alt",title:"There are no external groups to sync with",buttonTitle:"Add group",proTip:z,proTipLinkTitle:"Learn more",proTipLink:"https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-team-sync/",proTipTarget:"_blank",buttonDisabled:i})),o.length>0&&e.createElement("div",{className:"admin-list-table"},e.createElement("table",{className:"filter-table filter-table--hover form-inline"},e.createElement("thead",null,e.createElement("tr",null,e.createElement("th",null,"External Group ID"),e.createElement("th",{style:{width:"1%"}}))),e.createElement("tbody",null,o.map(E=>this.renderGroup(E))))))}}const Y=({action:n})=>{const a=(0,P.l4)();return e.createElement(A,{action:n,listItems:["Stop managing user access in two places - assign users to groups in SAML, LDAP or Oauth, and manage access at a Team level in Grafana","Update users\u2019 permissions immediately when you add or remove them from an LDAP group, with no need for them to sign out and back in"],image:`team-sync-${a.isLight?"light":"dark"}.png`,featureName:"team sync",featureUrl:"https://grafana.com/docs/grafana/latest/enterprise/team-sync",description:"Team Sync makes it easier for you to manage users\u2019 access in Grafana, by immediately updating each user\u2019s Grafana teams and permissions based on their single sign-on group membership, instead of when users sign in."})},K=(0,u.connect)(w,V)(Q);var te=t(33716),ae=t(79978),ne=t(79173),k=t(8311);const q=({featureToggle:n,children:a})=>n===!0?e.createElement(e.Fragment,null,a):null;var se=t(28580),re=t(15202);const oe={removeTeamMember:m.zT,updateTeamMember:m.zZ},ie=(0,u.connect)(null,oe);class le extends e.PureComponent{constructor(a){super(a),this.onPermissionChange=(s,o)=>{const i=s.value,E={...o,permission:i};this.props.updateTeamMember(E)},this.renderLabels=this.renderLabels.bind(this),this.renderPermissions=this.renderPermissions.bind(this)}onRemoveMember(a){this.props.removeTeamMember(a.userId)}renderPermissions(a){const{editorsCanAdmin:s,signedInUserIsTeamAdmin:o}=this.props,i=x.teamsPermissionLevels.find(E=>E.value===a.permission);return e.createElement(q,{featureToggle:s},e.createElement("td",{className:"width-5 team-permissions"},o?e.createElement(se.Ph,{isSearchable:!1,options:x.teamsPermissionLevels,onChange:E=>this.onPermissionChange(E,a),value:i,width:32,"aria-label":`Select member's ${a.name} permission level`}):e.createElement("span",null,i.label)))}renderLabels(a){return a?e.createElement("td",null,a.map(s=>e.createElement(k.e,{key:s,label:s,removeIcon:!1,count:0}))):e.createElement("td",null)}render(){const{member:a,syncEnabled:s,signedInUserIsTeamAdmin:o}=this.props;return e.createElement("tr",{key:a.userId},e.createElement("td",{className:"width-4 text-center"},e.createElement("img",{alt:`Avatar for team member "${a.name}"`,className:"filter-table__avatar",src:a.avatarUrl})),e.createElement("td",null,a.login),e.createElement("td",null,a.email),e.createElement("td",null,a.name),this.renderPermissions(a),s&&this.renderLabels(a.labels),e.createElement("td",{className:"text-right"},e.createElement(re.m,{"aria-label":`Remove team member ${a.name}`,size:"sm",disabled:!o,onConfirm:()=>this.onRemoveMember(a)})))}}const ce=ie(le);var me=t(96444);function de(n){return{searchMemberQuery:(0,U.xc)(n.team),editorsCanAdmin:N.config.editorsCanAdmin,signedInUser:p.contextSrv.user}}const ue={addTeamMember:m.Lt,setSearchMemberQuery:me.UD},ge=(0,u.connect)(de,ue);class he extends e.PureComponent{constructor(a){super(a),this.onSearchQueryChange=s=>{this.props.setSearchMemberQuery(s)},this.onToggleAdding=()=>{this.setState({isAdding:!this.state.isAdding})},this.onUserSelected=s=>{this.setState({newTeamMember:s})},this.onAddUserToTeam=async()=>{this.props.addTeamMember(this.state.newTeamMember.id),this.setState({newTeamMember:null})},this.state={isAdding:!1,newTeamMember:null}}renderLabels(a){return a?e.createElement("td",null,a.map(s=>e.createElement(k.e,{key:s,label:s,removeIcon:!1,count:0}))):e.createElement("td",null)}render(){const{isAdding:a}=this.state,{searchMemberQuery:s,members:o,syncEnabled:i,editorsCanAdmin:E,signedInUser:b}=this.props,D=(0,U.vt)({members:o,editorsCanAdmin:E,signedInUser:b});return e.createElement("div",null,e.createElement("div",{className:"page-action-bar"},e.createElement(l._,{grow:!0},e.createElement(te.H,{placeholder:"Search members",value:s,onChange:this.onSearchQueryChange})),e.createElement(r.zx,{className:"pull-right",onClick:this.onToggleAdding,disabled:a||!D},"Add member")),e.createElement(v.s,{in:a},e.createElement("div",{className:"cta-form"},e.createElement(M.P,{"aria-label":"Close 'Add team member' dialogue",onClick:this.onToggleAdding}),e.createElement(ae._,{htmlFor:"user-picker"},"Add team member"),e.createElement("div",{className:"gf-form-inline"},e.createElement(ne.f,{inputId:"user-picker",onSelected:this.onUserSelected,className:"min-width-30"}),this.state.newTeamMember&&e.createElement(r.zx,{type:"submit",onClick:this.onAddUserToTeam},"Add to team")))),e.createElement("div",{className:"admin-list-table"},e.createElement("table",{className:"filter-table filter-table--hover form-inline"},e.createElement("thead",null,e.createElement("tr",null,e.createElement("th",null),e.createElement("th",null,"Login"),e.createElement("th",null,"Email"),e.createElement("th",null,"Name"),e.createElement(q,{featureToggle:E},e.createElement("th",null,"Permission")),i&&e.createElement("th",null),e.createElement("th",{style:{width:"1%"}}))),e.createElement("tbody",null,o&&o.map(I=>e.createElement(ce,{key:I.userId,member:I,syncEnabled:i,editorsCanAdmin:E,signedInUserIsTeamAdmin:D}))))))}}const pe=ge(he);var Ee=t(1541);const fe=n=>{const a=p.contextSrv.hasPermissionInMetadata(x.AccessControlAction.ActionTeamsPermissionsWrite,n.team);return e.createElement(Ee.P,{title:"",addPermissionTitle:"Add member",buttonLabel:"Add member",emptyLabel:"There are no members in this team or you do not have the permissions to list the current members.",resource:"teams",resourceId:n.team.id,canSetPermissions:a})};var ve=t(64022),Te=t(23839),Pe=t(5229),X=t(22209),Ae=t(78481),ye=t(11349),Ce=t(35817),Me=t(54569);const be={updateTeam:m.fs},De=(0,u.connect)(null,be)(({team:n,updateTeam:a})=>{const s=p.contextSrv.hasPermissionInMetadata(x.AccessControlAction.ActionTeamsWrite,n),o=p.contextSrv.user.orgId,[{roleOptions:i}]=(0,Ce.C)(o),[E,b]=(0,e.useState)([]),D=p.contextSrv.hasPermission(x.AccessControlAction.ActionUserRolesAdd)&&p.contextSrv.hasPermission(x.AccessControlAction.ActionUserRolesRemove);return e.createElement(ve.wc,{spacing:"lg"},e.createElement(Te.l,{defaultValues:{...n},onSubmit:async I=>{p.contextSrv.licensedAccessControlEnabled()&&D&&await(0,ye.u7)(E,n.id),a(I.name,I.email||"")},disabled:!s},({register:I,errors:j})=>e.createElement(Pe.C,{label:"Team details"},e.createElement(X.g,{label:"Name",disabled:!s,required:!0,invalid:!!j.name,error:"Name is required"},e.createElement(c.I,{...I("name",{required:!0}),id:"name-input"})),p.contextSrv.licensedAccessControlEnabled()&&e.createElement(X.g,{label:"Role"},e.createElement(Ae.f,{teamId:n.id,roleOptions:i,disabled:!1,apply:!0,onApplyRoles:b,pendingRoles:E,maxWidth:"100%"})),e.createElement(X.g,{label:"Email",description:"This is optional and is primarily used to set the team profile avatar (via gravatar service).",disabled:!s},e.createElement(c.I,{...I("email"),placeholder:"team@email.com",type:"email",id:"email-input"})),e.createElement(r.zx,{type:"submit",disabled:!s},"Update"))),e.createElement(Me.v,{resourceUri:`teams/${n.id}`,disabled:!s,preferenceType:"team"}))});var Ie=t(34398),Oe=(n=>(n.Members="members",n.Settings="settings",n.GroupSync="groupsync",n))(Oe||{});function Le(n,a){const s=parseInt(a.match.params.id,10),o=(0,U.VP)(n.team,s);let i="members";p.contextSrv.accessControlEnabled()&&(!o||!p.contextSrv.hasPermissionInMetadata(x.AccessControlAction.ActionTeamsPermissionsRead,o))&&(i="settings");const E=a.match.params.page??i,b=(0,Ie.o)(E),D=(0,C.ht)(n.navIndex,`team-${E}-${s}`,b).main,I=(0,U.YY)(n.team);return{pageNav:D,teamId:s,pageName:E,team:o,members:I,editorsCanAdmin:N.default.editorsCanAdmin,signedInUser:p.contextSrv.user}}const Re={loadTeam:m.QX,loadTeamMembers:m.ei},Se=(0,u.connect)(Le,Re);class ee extends e.PureComponent{constructor(a){super(a),this.textsAreEqual=(s,o)=>!s&&!o?!0:!s||!o?!1:s.toLocaleLowerCase()===o.toLocaleLowerCase(),this.hideTabsFromNonTeamAdmin=(s,o)=>(p.contextSrv.accessControlEnabled()||!o&&s&&s.children&&s.children.filter(i=>!this.textsAreEqual(i.text,"members")).map(i=>{i.hideFromTabs=!0}),s),this.state={isLoading:!1,isSyncEnabled:(0,R.v)("teamsync")}}async componentDidMount(){await this.fetchTeam()}async fetchTeam(){const{loadTeam:a,teamId:s}=this.props;this.setState({isLoading:!0});const o=await a(s);return p.contextSrv.accessControlEnabled()||await this.props.loadTeamMembers(),this.setState({isLoading:!1}),o}getCurrentPage(){const a=["members","settings","groupsync"],s=this.props.pageName;return(0,O.includes)(a,s)?s:a[0]}renderPage(a){const{isSyncEnabled:s}=this.state,{members:o,team:i}=this.props,E=this.getCurrentPage(),b=p.contextSrv.hasAccessInMetadata(x.AccessControlAction.ActionTeamsRead,i,a),D=p.contextSrv.hasAccessInMetadata(x.AccessControlAction.ActionTeamsPermissionsRead,i,a),I=p.contextSrv.hasAccessInMetadata(x.AccessControlAction.ActionTeamsPermissionsWrite,i,a);switch(E){case"members":return p.contextSrv.accessControlEnabled()?e.createElement(fe,{team:i}):e.createElement(pe,{syncEnabled:s,members:o});case"settings":return b&&e.createElement(De,{team:i});case"groupsync":if(s){if(D)return e.createElement(K,{isReadOnly:!I})}else if(N.default.featureToggles.featureHighlights)return e.createElement(e.Fragment,null,e.createElement(T,{featureName:"team sync",featureId:"team-sync"}),e.createElement(Y,null))}return null}render(){const{team:a,pageNav:s,members:o,editorsCanAdmin:i,signedInUser:E}=this.props,b=(0,U.vt)({members:o,editorsCanAdmin:i,signedInUser:E});return e.createElement(y.T,{navId:"teams",pageNav:this.hideTabsFromNonTeamAdmin(s,b)},e.createElement(y.T.Contents,{isLoading:this.state.isLoading},a&&Object.keys(a).length!==0&&this.renderPage(b)))}}const xe=Se((0,P.HE)(ee))},90689:(G,S,t)=>{t.d(S,{A_:()=>x,Lt:()=>$,P5:()=>Z,QX:()=>f,R5:()=>B,ei:()=>_,fC:()=>A,fs:()=>C,jI:()=>r,j_:()=>p,oO:()=>F,zT:()=>N,zZ:()=>H});var O=t(89949),e=t.n(O),u=t(73289),R=t(33877),P=t(66574),y=t(92317),d=t(18771),g=t(34398),h=t(96444);function r(l=!1){return async(c,v)=>{const{query:M,page:W,perPage:L}=v().teams;if(!P.Vt.hasPermission(d.AccessControlAction.ActionTeamsRead)){c((0,h.PL)({teams:[],totalCount:0,page:1,perPage:L,noTeams:!0}));return}const m=await(0,u.i)().get("/api/teams/search",(0,y.y)({query:M,page:W,perpage:L}));let U=!1;l&&(U=m.teams.length===0),c((0,h.PL)({noTeams:U,...m}))}}const T=(0,O.debounce)(l=>l(r()),500);function f(l){return async c=>{const v=await(0,u.i)().get(`/api/teams/${l}`,(0,y.y)());c((0,h.y$)(v)),c((0,R.RL)((0,g.B)(v)))}}function A(l){return async c=>{await(0,u.i)().delete(`/api/teams/${l}`),await P.Vt.fetchUserPermissions(),c(r())}}function B(l){return async c=>{c((0,h.aj)(l)),T(c)}}function F(l){return async c=>{c((0,h.PJ)(l)),c(r())}}function _(){return async(l,c)=>{const v=c().team.team,M=await(0,u.i)().get(`/api/teams/${v.id}/members`);l((0,h.n2)(M))}}function $(l){return async(c,v)=>{const M=v().team.team;await(0,u.i)().post(`/api/teams/${M.id}/members`,{userId:l}),c(_())}}function N(l){return async(c,v)=>{const M=v().team.team;await(0,u.i)().delete(`/api/teams/${M.id}/members/${l}`),c(_())}}function C(l,c){return async(v,M)=>{const W=M().team.team;await(0,u.i)().put(`/api/teams/${W.id}`,{name:l,email:c}),v(f(W.id))}}function p(){return async(l,c)=>{const v=c().team.team,M=await(0,u.i)().get(`/api/teams/${v.id}/groups`);l((0,h.iI)(M))}}function x(l){return async(c,v)=>{const M=v().team.team;await(0,u.i)().post(`/api/teams/${M.id}/groups`,{groupId:l}),c(p())}}function Z(l){return async(c,v)=>{const M=v().team.team;await(0,u.i)().delete(`/api/teams/${M.id}/groups?groupId=${encodeURIComponent(l)}`),c(p())}}function H(l){return async c=>{await(0,u.i)().put(`/api/teams/${l.teamId}/members/${l.userId}`,{permission:l.permission}),c(_())}}},34398:(G,S,t)=>{t.d(S,{B:()=>g,o:()=>h});var O=t(80978),e=t(99829),u=t(12308),R=t(91368),P=t(41715),y=t(18771);const d={avatarUrl:"public/img/user_profile.png",id:1,name:"Loading",email:"loading",memberCount:0,permission:y.TeamPermissionLevel.Member,accessControl:{isEditor:!1},orgId:0,updated:""};function g(r){const T={img:r.avatarUrl,id:"team-"+r.id,subTitle:"Manage members and settings",url:"",text:r.name,children:[{active:!1,icon:"sliders-v-alt",id:`team-settings-${r.id}`,text:"Settings",url:`org/teams/edit/${r.id}/settings`}]};(r===d||R.contextSrv.hasPermissionInMetadata(y.AccessControlAction.ActionTeamsPermissionsRead,r))&&T.children.unshift({active:!1,icon:"users-alt",id:`team-members-${r.id}`,text:"Members",url:`org/teams/edit/${r.id}/members`});const f={active:!1,icon:"sync",id:`team-groupsync-${r.id}`,text:"External group sync",url:`org/teams/edit/${r.id}/groupsync`},A=r===d;return(0,P.d5)()&&(f.tabSuffix=()=>(0,e.Z)({experimentId:A?"":"feature-highlights-team-sync-badge",eventVariant:"trial"})),(0,O.v)("teamsync")?(A||R.contextSrv.hasPermissionInMetadata(y.AccessControlAction.ActionTeamsPermissionsRead,r))&&T.children.push(f):u.default.featureToggles.featureHighlights&&T.children.push({...f,tabSuffix:()=>(0,e.Z)({experimentId:A?"":"feature-highlights-team-sync-badge"})}),T}function h(r){const T=g(d);let f;for(const A of T.children)if(A.id.indexOf(r)>0){A.active=!0,f=A;break}return{main:T,node:f}}},89229:(G,S,t)=>{t.d(S,{JB:()=>u,VP:()=>R,YY:()=>P,kC:()=>d,vt:()=>y,xc:()=>e});var O=t(18771);const e=g=>g.searchMemberQuery,u=g=>g.groups,R=(g,h)=>g.team.id===parseInt(h,10)?g.team:null,P=g=>{const h=RegExp(g.searchMemberQuery,"i");return g.members.filter(r=>h.test(r.login)||h.test(r.email)||h.test(r.name))},y=g=>{const{members:h,signedInUser:r,editorsCanAdmin:T}=g,f=h.find(B=>B.userId===r.id),A=f?f.permission:O.TeamPermissionLevel.Member;return d({permission:A,signedInUser:r,editorsCanAdmin:T})},d=g=>{const{permission:h,signedInUser:r,editorsCanAdmin:T}=g,f=r.isGrafanaAdmin||r.orgRole===O.OrgRole.Admin,A=h===O.TeamPermissionLevel.Admin;return f||A||!T}},80601:(G,S,t)=>{var O;O={value:!0};var e=t(48314),u=t(27702),R=e.__importDefault(t(58281));function P(y,d){d===void 0&&(d=[]);var g=R.default(y,d,{loading:!0}),h=g[0],r=g[1];return u.useEffect(function(){r()},[r]),h}S.Z=P}}]); //# sourceMappingURL=TeamPages.864604ad328a4f6a00a0.js.map