All Downloads are FREE. Search and download functionalities are using the official Maven repository.

theme.keycloak.v2.admin.resources.assets.GroupsSection-2c422bab.js Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
import{bk as qe,bz as He,bl as ze,bj as Pe,bm as We,_ as se,r as u,k as V,bA as ue,X as Xe,bv as N,aY as ve,bB as Je,m as Ye,ak as ye,bC as we,n as Ze,u as K,bD as J,c as ce,b0 as ae,j as t,bE as Qe,bF as je,L as ie,d as z,e as Ie,q as le,P as Ee,bG as ke,b5 as et,y as tt,g as G,z as st,A as P,B as H,l as Te,F as at,V as re,au as ne,D as pe,a7 as ge,G as q,a8 as Q,K as Ve,aO as nt,bH as rt,b as _e,O as ot,bs as me,bI as it,x as Ae,bJ as ct,aF as lt,af as dt,ag as ut,bK as mt,bL as pt,bw as gt,Z as ht}from"./index-831988f6.js";import{P as ft}from"./PermissionTab-952802f9.js";import{V as bt}from"./ViewHeader-2b1ad3ef.js";import{f as ee}from"./admin-ui-endpoint-cc06c193.js";import{u as xt,F as vt}from"./useIsFeatureEnabled-d2f044ea.js";import{u as U}from"./useToggle-039c9b34.js";import{A as yt}from"./AttributeForm-022c18f3.js";import{R as wt}from"./AddRoleMappingModal-e0605cd7.js";import{L as he,P as jt}from"./PaginatingTableToolbar-c55a17f1.js";import{K as fe,o as Nt}from"./KeycloakDataTable-2267a354.js";import{K as Ct}from"./KeycloakTextInput-ead44014.js";import{M as Me,a as Re}from"./Modal-5d8a3df4.js";import{F as St}from"./Form-bd3cf98e.js";import{C as Gt}from"./ConfirmDialog-927d61dd.js";import{b as X}from"./ToolbarContent-186be8fd.js";import{G as It,a as Et}from"./GroupPickerDialog-71e86661.js";import{S as kt}from"./TableToolbar-af5dff6f.js";import{C as De}from"./Checkbox-d44d2684.js";import{X as Ne,$ as Ce}from"./Td-bb613d18.js";import{T as Tt,a as Y,b as Z}from"./Tabs-f8972b46.js";import"./useLocaleSort-6d6b4eec.js";import"./Trans-a7161087.js";import"./Card-f255349a.js";import"./CardTitle-234a430a.js";import"./CardBody-7b8c88cd.js";import"./Text-2a2c2dcc.js";import"./getAuthorizationHeaders-f2376d1a.js";import"./FormAccess-589a8032.js";import"./copy-icon-476b0d6d.js";import"./GridItem-2c75fd83.js";import"./KeyValueInput-edcd33df.js";import"./Select-9c61d949.js";import"./check-fc57dbe1.js";import"./star-icon-f5649401.js";import"./minus-icon-9c8a6df2.js";import"./minus-circle-icon-d374d13f.js";import"./ActionListItem-90f0e72b.js";import"./plus-circle-icon-3c14c705.js";import"./EmptyStateBody-dd392e69.js";import"./resource-edcf6e4d.js";import"./filter-icon-5bbef384.js";import"./EmptyStateSecondaryActions-3d9f7969.js";import"./DataListItemRow-e4e4ea8b.js";import"./data-list-7d55714c.js";import"./grip-vertical-icon-0333850c.js";import"./plus-icon-1b237b1a.js";import"./MenuList-d75eeee8.js";var Vt=qe(function(e){var s=He(e);return Ne(s)&&(s=void 0),ze(We(e,1,Ne,!0),Pe(s))});const Se=Vt,Fe=e=>{var{className:s="",children:o,hasNoPadding:i=!1}=e,a=se(e,["className","children","hasNoPadding"]);return u.createElement("div",Object.assign({className:V(ue.drawerBody,i&&ue.modifiers.noPadding,s)},a),o)};Fe.displayName="DrawerPanelBody";const Oe=e=>{var{className:s="",children:o,hasNoPadding:i=!1}=e,a=se(e,["className","children","hasNoPadding"]);return u.createElement(Fe,{hasNoPadding:i},u.createElement("div",Object.assign({className:V(ue.drawerHead,s)},a),o))};Oe.displayName="DrawerHead";const Ke=e=>{var{isNested:s=!1,toolbar:o,children:i}=e,a=se(e,["isNested","toolbar","children"]);return u.createElement(u.Fragment,null,o&&u.createElement(u.Fragment,null,o,u.createElement(Xe,null)),u.createElement("ul",Object.assign({className:V("pf-c-tree-view__list"),role:s?"group":"tree"},a),i))};Ke.displayName="TreeViewList";const C={badge:"pf-c-badge",modifiers:{compact:"pf-m-compact",guides:"pf-m-guides",expanded:"pf-m-expanded",noBackground:"pf-m-no-background",current:"pf-m-current",read:"pf-m-read",selectable:"pf-m-selectable",truncate:"pf-m-truncate"},themeDark:"pf-theme-dark",treeView:"pf-c-tree-view",treeViewAction:"pf-c-tree-view__action",treeViewContent:"pf-c-tree-view__content",treeViewListItem:"pf-c-tree-view__list-item",treeViewNode:"pf-c-tree-view__node",treeViewNodeCheck:"pf-c-tree-view__node-check",treeViewNodeContainer:"pf-c-tree-view__node-container",treeViewNodeContent:"pf-c-tree-view__node-content",treeViewNodeCount:"pf-c-tree-view__node-count",treeViewNodeIcon:"pf-c-tree-view__node-icon",treeViewNodeText:"pf-c-tree-view__node-text",treeViewNodeTitle:"pf-c-tree-view__node-title",treeViewNodeToggle:"pf-c-tree-view__node-toggle",treeViewNodeToggleIcon:"pf-c-tree-view__node-toggle-icon",treeViewSearch:"pf-c-tree-view__search"},_t=({name:e,title:s,id:o,isExpanded:i,defaultExpanded:a=!1,children:c=null,onSelect:l,onCheck:n,hasCheck:r=!1,checkProps:d={checked:!1},hasBadge:g=!1,customBadgeContent:f,badgeProps:v={isRead:!0},isSelectable:p=!1,isCompact:y,activeItems:I=[],itemData:E,parentItem:k,icon:T,expandedIcon:_,action:A,compareItems:D,useMemo:h})=>{const[w,m]=u.useState(a);u.useEffect(()=>{i!=null?m(i):a!=null&&m(w||a)},[i,a]);let S="button";r?S="label":p&&(S="div");const j=r||p?"button":"span",F=b=>N.createElement(j,Object.assign({className:V(C.treeViewNodeToggle),onClick:x=>{(p||r)&&m(!w),p&&x.stopPropagation()}},(r||p)&&{"aria-labelledby":`label-${b}`},{tabIndex:-1}),N.createElement("span",{className:V(C.treeViewNodeToggleIcon)},N.createElement(Ye,{"aria-hidden":"true"}))),L=b=>N.createElement("span",{className:V(C.treeViewNodeCheck)},N.createElement("input",Object.assign({type:"checkbox",onChange:x=>n&&n(x,E,k),onClick:x=>x.stopPropagation(),ref:x=>x&&(x.indeterminate=d.checked===null)},d,{checked:d.checked===null?!1:d.checked,id:b,tabIndex:-1}))),O=N.createElement("span",{className:V(C.treeViewNodeIcon)},!w&&T,w&&(_||T)),$=()=>{const b=N.createElement(N.Fragment,null,y&&s&&N.createElement("span",{className:V(C.treeViewNodeTitle)},s),p?N.createElement("button",{tabIndex:-1,className:V(C.treeViewNodeText)},e):N.createElement("span",{className:V(C.treeViewNodeText)},e));return y?N.createElement("span",{className:V(C.treeViewNodeContent)},b):b},W=N.createElement(N.Fragment,null,g&&c&&N.createElement("span",{className:V(C.treeViewNodeCount)},N.createElement(ve,Object.assign({},v),f||c.props.data.length)),g&&!c&&f!==void 0&&N.createElement("span",{className:V(C.treeViewNodeCount)},N.createElement(ve,Object.assign({},v),f)));return N.createElement("li",Object.assign({id:o,className:V(C.treeViewListItem,w&&C.modifiers.expanded)},w&&{"aria-expanded":"true"},{role:"treeitem",tabIndex:-1}),N.createElement("div",{className:V(C.treeViewContent)},N.createElement(Je,{prefix:p?"selectable-id":"checkbox-id"},b=>N.createElement(S,Object.assign({className:V(C.treeViewNode,c&&(p||r)&&C.modifiers.selectable,(!c||p)&&I&&I.length>0&&I.some(x=>D&&x&&D(x,E))?C.modifiers.current:""),onClick:x=>{r||(l&&l(x,E,k),!p&&c&&x.isDefaultPrevented()!==!0&&m(!w))}},r&&{htmlFor:b},(r||p&&c)&&{id:`label-${b}`}),N.createElement("span",{className:V(C.treeViewNodeContainer)},c&&F(b),r&&L(b),T&&O,$(),W))),A&&N.createElement("div",{className:V(C.treeViewAction)},A)),w&&c)},Le=N.memo(_t,(e,s)=>{if(!s.useMemo)return!1;const o=e.activeItems&&e.activeItems.length>0&&e.activeItems.some(a=>e.compareItems&&a&&e.compareItems(a,e.itemData)),i=s.activeItems&&s.activeItems.length>0&&s.activeItems.some(a=>s.compareItems&&a&&s.compareItems(a,s.itemData));return!(o||i||e.name!==s.name||e.title!==s.title||e.id!==s.id||e.isExpanded!==s.isExpanded||e.defaultExpanded!==s.defaultExpanded||e.onSelect!==s.onSelect||e.onCheck!==s.onCheck||e.hasCheck!==s.hasCheck||e.checkProps!==s.checkProps||e.hasBadge!==s.hasBadge||e.customBadgeContent!==s.customBadgeContent||e.badgeProps!==s.badgeProps||e.isCompact!==s.isCompact||e.icon!==s.icon||e.expandedIcon!==s.expandedIcon||e.action!==s.action||e.parentItem!==s.parentItem||e.itemData!==s.itemData)});Le.displayName="TreeViewListItem";class At extends u.Component{constructor(){super(...arguments),this.displayName="TreeViewRoot",this.treeRef=u.createRef(),this.handleKeys=s=>{var o,i,a,c,l,n,r;if(!this.treeRef.current.contains(s.target))return;const d=document.activeElement,g=s.key,f=Array.from((o=this.treeRef.current)===null||o===void 0?void 0:o.getElementsByClassName("pf-c-tree-view__node")).filter(v=>!v.classList.contains("pf-m-disabled"));if(g===ye.Space&&(d.click(),s.preventDefault()),Ce(s,f,v=>d===v,void 0,[],void 0,!0,!0),["ArrowLeft","ArrowRight"].includes(g)){const v=(a=(i=d?.firstElementChild)===null||i===void 0?void 0:i.firstElementChild)===null||a===void 0?void 0:a.classList.contains("pf-c-tree-view__node-toggle"),p=(c=d?.closest("li"))===null||c===void 0?void 0:c.classList.contains("pf-m-expanded");if(g==="ArrowLeft")if(v&&p)d.click();else{const y=(l=d?.closest("ul"))===null||l===void 0?void 0:l.parentElement;if(y?.tagName!=="DIV"){const I=y?.querySelector("button");d.tabIndex=-1,I&&(I.tabIndex=0,I.focus())}}else if(v&&!p){d.tabIndex=-1,d.click();const y=(r=(n=d?.closest("li"))===null||n===void 0?void 0:n.querySelector("ul > li"))===null||r===void 0?void 0:r.querySelector("button");y&&(y.tabIndex=0,y.focus())}s.preventDefault()}},this.handleKeysCheckbox=s=>{var o,i,a,c,l;if(!this.treeRef.current.contains(s.target))return;const n=document.activeElement,r=s.key;r===ye.Space&&(n.click(),s.preventDefault());const d=Array.from((o=this.treeRef.current)===null||o===void 0?void 0:o.getElementsByClassName("pf-c-tree-view__node"));Ce(s,d,g=>g.contains(n),g=>g.querySelector("button,input"),[],void 0,!0,!0),["ArrowLeft","ArrowRight"].includes(r)&&(r==="ArrowLeft"?n?.tagName==="INPUT"?!((i=n?.parentElement)===null||i===void 0)&&i.previousSibling&&n.parentElement.previousSibling.focus():n?.previousSibling&&(((a=n.previousElementSibling)===null||a===void 0?void 0:a.tagName)==="SPAN"?n.previousSibling.firstChild.focus():n.previousSibling.focus()):n?.tagName==="INPUT"?!((c=n.parentElement)===null||c===void 0)&&c.nextSibling&&n.parentElement.nextSibling.focus():n?.nextSibling&&(((l=n.nextElementSibling)===null||l===void 0?void 0:l.tagName)==="SPAN"?n.nextSibling.firstChild.focus():n.nextSibling.focus()),s.preventDefault())},this.variantStyleModifiers={default:"",compact:C.modifiers.compact,compactNoBackground:[C.modifiers.compact,C.modifiers.noBackground]}}componentDidMount(){var s;if(we&&window.addEventListener("keydown",this.props.hasChecks||this.props.hasSelectableNodes?this.handleKeysCheckbox:this.handleKeys),this.props.hasChecks||this.props.hasSelectableNodes){const o=this.treeRef.current.getElementsByClassName("pf-c-tree-view__node-toggle")[0];if(o&&(o.tabIndex=0),this.props.hasChecks){const i=this.treeRef.current.getElementsByTagName("INPUT")[0];i&&(i.tabIndex=0)}if(this.props.hasSelectableNodes){const i=this.treeRef.current.getElementsByClassName("pf-c-tree-view__node-text")[0];i&&(i.tabIndex=0)}}else((s=this.treeRef.current)===null||s===void 0?void 0:s.getElementsByClassName("pf-c-tree-view__node")[0]).tabIndex=0}componentWillUnmount(){we&&window.removeEventListener("keydown",this.props.hasChecks||this.props.hasSelectableNodes?this.handleKeysCheckbox:this.handleKeys)}render(){const s=this.props,{children:o,hasChecks:i,hasGuides:a,variant:c,className:l,hasSelectableNodes:n}=s,r=se(s,["children","hasChecks","hasGuides","variant","className","hasSelectableNodes"]);return u.createElement("div",Object.assign({className:V(C.treeView,a&&C.modifiers.guides,this.variantStyleModifiers[c],l),ref:this.treeRef},r),o)}}const be=e=>{var{data:s,isNested:o=!1,hasChecks:i=!1,hasBadges:a=!1,hasGuides:c=!1,hasSelectableNodes:l=!1,variant:n="default",defaultAllExpanded:r=!1,allExpanded:d,icon:g,expandedIcon:f,parentItem:v,onSelect:p,onCheck:y,toolbar:I,activeItems:E,compareItems:k=(h,w)=>h.id===w.id,className:T,useMemo:_}=e,A=se(e,["data","isNested","hasChecks","hasBadges","hasGuides","hasSelectableNodes","variant","defaultAllExpanded","allExpanded","icon","expandedIcon","parentItem","onSelect","onCheck","toolbar","activeItems","compareItems","className","useMemo"]);const D=u.createElement(Ke,{isNested:o,toolbar:I},s.map(h=>{var w,m;return u.createElement(Le,Object.assign({key:((w=h.id)===null||w===void 0?void 0:w.toString())||((m=h.name)===null||m===void 0?void 0:m.toString()),name:h.name,title:h.title,id:h.id,isExpanded:d,isSelectable:l,defaultExpanded:h.defaultExpanded!==void 0?h.defaultExpanded:r,onSelect:p,onCheck:y,hasCheck:h.hasCheck!==void 0?h.hasCheck:i,checkProps:h.checkProps,hasBadge:h.hasBadge!==void 0?h.hasBadge:a,customBadgeContent:h.customBadgeContent,badgeProps:h.badgeProps,activeItems:E,parentItem:v,itemData:h,icon:h.icon!==void 0?h.icon:g,expandedIcon:h.expandedIcon!==void 0?h.expandedIcon:f,action:h.action,compareItems:k,isCompact:n==="compact"||n==="compactNoBackground",useMemo:_},h.children&&{children:u.createElement(be,{data:h.children,isNested:!0,parentItem:h,hasChecks:i,hasBadges:a,hasGuides:c,hasSelectableNodes:l,variant:n,allExpanded:d,defaultAllExpanded:r,onSelect:p,onCheck:y,activeItems:E,icon:g,expandedIcon:f})}))}));return u.createElement(u.Fragment,null,v?D:u.createElement(At,Object.assign({hasSelectableNodes:l,hasChecks:i,hasGuides:c,variant:n,className:T},A),D))};be.displayName="TreeView";const Mt={name:"TreeIcon",height:512,width:384,svgPath:"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z",yOffset:0,xOffset:0},Rt=Ze(Mt),Dt=()=>{const{t:e}=K(),{clear:s,remove:o,subGroups:i}=J(),{realm:a}=ce(),c=ae();return u.useEffect(()=>{const{pathname:l}=c;(!l.includes("/groups")||l.endsWith("/groups"))&&s()},[c]),i.length!==0?t.jsxs(Qe,{children:[t.jsx(je,{children:t.jsx(ie,{to:`/${a}/groups`,children:e("groups")})},"home"),i.map((l,n)=>{const r=n===i.length-1;return t.jsxs(je,{isActive:r,children:[!r&&t.jsx(ie,{to:c.pathname.substring(0,c.pathname.indexOf(l.id)+l.id.length),onClick:()=>o(l),children:l.name}),r&&(l.id==="search"?l.name:e("groups:groupDetails"))]},l.id)})]}):null},Be=e=>{const s=e.substr(1).split("/");return s.length>1?s.splice(2):void 0},de=e=>{const s=Be(e);return s?s[s.length-1]:void 0},Ft=()=>{const{t:e}=K("groups"),{addAlert:s,addError:o}=z(),i=Ie({mode:"onChange"}),a=ae(),c=de(a.pathname),[l,n]=u.useState();le(()=>G.groups.findOne({id:c}),d=>{tt(d,i.setValue),n(d)},[]);const r=async d=>{try{const g=st(d).attributes;await G.groups.update({id:c},{...l,attributes:g}),n({...l,attributes:g}),s(e("groupUpdated"),P.success)}catch(g){o("groups:groupUpdateError",g)}};return t.jsx(Ee,{variant:ke.light,children:t.jsx(yt,{form:i,save:r,fineGrainedAccess:l?.access?.manage,reset:()=>i.reset({attributes:et(l?.attributes)})})})},Ot=({id:e,name:s})=>{const{t:o}=K("clients"),{addAlert:i,addError:a}=z(),c=async l=>{try{const n=l.filter(r=>r.client===void 0).map(r=>r.role).flat();await G.groups.addRealmRoleMappings({id:e,roles:n}),await Promise.all(l.filter(r=>r.client!==void 0).map(r=>G.groups.addClientRoleMappings({id:e,clientUniqueId:r.client.id,roles:[r.role]}))),i(o("roleMappingUpdatedSuccess"),P.success)}catch(n){a("clients:roleMappingUpdatedError",n)}};return t.jsx(wt,{name:s,id:e,type:"groups",save:c})},te=({id:e,rename:s,handleModalToggle:o,refresh:i})=>{const{t:a}=K("groups"),{addAlert:c,addError:l}=z(),{register:n,handleSubmit:r,formState:{errors:d}}=Ie({defaultValues:{name:s?.name}}),g=async f=>{f.name=f.name?.trim();try{e?s?await G.groups.update({id:e},{...s,name:f.name}):await(f.id?G.groups.updateChildGroup({id:e},f):G.groups.createChildGroup({id:e},f)):await G.groups.create(f),i(s?{...s,name:f.name}:void 0),o(),c(a(s?"groupUpdated":"groupCreated"),P.success)}catch(v){l("groups:couldNotCreateGroup",v)}};return t.jsx(Me,{variant:Re.small,title:a(s?"renameAGroup":"createAGroup"),isOpen:!0,onClose:o,actions:[t.jsx(H,{"data-testid":`${s?"rename":"create"}Group`,variant:"primary",type:"submit",form:"group-form",children:a(s?"rename":"create")},"confirm"),t.jsx(H,{id:"modal-cancel","data-testid":"cancel",variant:Te.link,onClick:()=>{o()},children:a("common:cancel")},"cancel")],children:t.jsx(St,{id:"group-form",isHorizontal:!0,onSubmit:r(g),children:t.jsx(at,{name:"create-modal-group",label:a("common:name"),fieldId:"create-group-name",helperTextInvalid:a("common:required"),validated:d.name?re.error:re.default,isRequired:!0,children:t.jsx(Ct,{"data-testid":"groupNameInput",autoFocus:!0,id:"create-group-name",validated:d.name?re.error:re.default,...n("name",{required:!0})})})})})},xe=({selectedRows:e,show:s,toggleDialog:o,refresh:i})=>{const{t:a}=K("groups"),{addAlert:c,addError:l}=z(),n=async()=>{try{for(const r of e)await G.groups.del({id:r.id});i(),c(a("groupDeleted",{count:e.length}))}catch(r){l("groups:groupDeleteError",r)}};return t.jsx(Gt,{titleKey:a("deleteConfirmTitle",{count:e.length}),messageKey:a("deleteConfirm",{count:e.length,groupName:e[0]?.name}),continueButtonLabel:"common:delete",continueButtonVariant:Te.danger,onConfirm:n,open:s,toggleDialog:o})},Kt=({toggleCreate:e,toggleDelete:s,kebabDisabled:o})=>{const{t:i}=K("groups"),{currentGroup:a}=J(),{hasAccess:c}=ne(),l=c("manage-users")||a()?.access?.manage,[n,r]=U();return l?t.jsxs(t.Fragment,{children:[t.jsx(X,{children:t.jsx(H,{"data-testid":"openCreateGroupModal",variant:"primary",onClick:e,children:i("createGroup")})}),t.jsx(X,{children:t.jsx(pe,{toggle:t.jsx(ge,{onToggle:r,isDisabled:o}),isOpen:n,isPlain:!0,dropdownItems:[t.jsx(q,{component:"button",onClick:()=>{s(),r()},children:i("common:delete")},"action")]})})]}):t.jsx("div",{})},Lt=e=>e.id?G.groups.updateRoot(e):G.groups.create(e),Bt=async(e,s)=>G.groups.updateChildGroup({id:s.id},e),Ue=({source:e,onClose:s,refresh:o})=>{const{t:i}=K("groups"),{addAlert:a,addError:c}=z(),l=async n=>{try{await(n?Bt(e,n[0]):Lt(e)),o(),a(i("moveGroupSuccess"))}catch(r){c("groups:moveGroupError",r)}};return t.jsx(It,{type:"selectOne",filterGroups:[e],text:{title:"groups:moveToGroup",ok:"groups:moveHere"},onClose:s,onConfirm:l})},Ge=({refresh:e,canViewDetails:s})=>{const{t:o}=K("groups"),[i,a]=u.useState([]),[c,l]=u.useState(),[n,r]=U(),[d,g]=U(),[f,v]=u.useState(),{currentGroup:p}=J(),[y,I]=u.useState(0),E=()=>I(y+1),[k,T]=u.useState(),_=ae(),A=de(_.pathname),{hasAccess:D}=ne(),h=D("manage-users")||p()?.access?.manage,w=async(m,S)=>{const j={search:k||"",first:m?.toString()||"",max:S?.toString()||""};let F;return A?F=await ee("ui-ext/groups/subgroup",{...j,id:A}):F=await ee("ui-ext/groups",{...j,global:"false"}),F};return t.jsxs(t.Fragment,{children:[t.jsx(xe,{show:d,toggleDialog:g,selectedRows:i,refresh:()=>{E(),e(),a([])}}),c&&t.jsx(te,{id:c.id,rename:c,refresh:()=>{E(),e()},handleModalToggle:()=>l(void 0)}),n&&t.jsx(te,{id:i[0]?.id||A,handleModalToggle:r,refresh:()=>{a([]),E(),e()}}),f&&t.jsx(Ue,{source:f,refresh:()=>{v(void 0),E(),e()},onClose:()=>v(void 0)}),t.jsx(fe,{onSelect:m=>a([...m]),canSelectAll:!0,loader:w,ariaLabelKey:"groups:groups",isPaginated:!0,isSearching:!!k,toolbarItem:t.jsxs(t.Fragment,{children:[t.jsx(X,{children:t.jsx(kt,{"data-testid":"group-search",placeholder:o("filterGroups"),value:k,onChange:(m,S)=>{T(S)},onSearch:E,onClear:()=>{T(""),E()}})}),t.jsx(Kt,{toggleCreate:r,toggleDelete:g,kebabDisabled:i.length===0})]}),actions:h?[{title:o("rename"),onRowClick:async m=>(l(m),!1)},{title:o("moveTo"),onRowClick:async m=>(v(m),!1)},{title:o("createChildGroup"),onRowClick:async m=>(a([m]),r(),!1)},{isSeparator:!0},{title:o("common:delete"),onRowClick:async m=>(a([m]),g(),!0)}]:[],columns:[{name:"name",displayKey:"groups:groupName",cellRenderer:m=>s?t.jsx(ie,{to:`${_.pathname}/${m.id}`,children:m.name},m.id):t.jsx("span",{children:m.name})}],emptyState:t.jsx(he,{hasIcon:!0,message:o(`noGroupsInThis${A?"SubGroup":"Realm"}`),instructions:o(`noGroupsInThis${A?"SubGroup":"Realm"}Instructions`),primaryActionText:o("createGroup"),onPrimaryAction:r})},`${A}${y}`)]})},Ut=({groupId:e,onClose:s})=>{const{t:o}=K("groups"),{addAlert:i,addError:a}=z(),[c,l]=u.useState([]),n=async(r,d,g)=>{const f=await G.groups.listMembers({id:e}),v={first:r,max:d+f.length,search:g||""};try{const p=await G.users.find({...v});return Nt(p,f,"id").slice(0,d)}catch(p){return a("groups:noUsersFoundError",p),[]}};return t.jsx(Me,{variant:Re.large,title:o("addMember"),isOpen:!0,onClose:s,actions:[t.jsx(H,{"data-testid":"add",variant:"primary",onClick:async()=>{try{await Promise.all(c.map(r=>G.users.addToGroup({id:r.id,groupId:e}))),s(),i(o("usersAdded",{count:c.length}),P.success)}catch(r){a("groups:usersAddedError",r)}},children:o("common:add")},"confirm"),t.jsx(H,{"data-testid":"cancel",variant:"link",onClick:s,children:o("common:cancel")},"cancel")],children:t.jsx(fe,{loader:n,isPaginated:!0,ariaLabelKey:"users:title",searchPlaceholderKey:"users:searchForUser",canSelectAll:!0,onSelect:r=>l([...r]),emptyState:t.jsx(he,{message:o("users:noUsersFound"),instructions:o("users:emptyInstructions")}),columns:[{name:"username",displayKey:"users:username"},{name:"email",displayKey:"users:email"},{name:"lastName",displayKey:"users:lastName",cellFormatters:[Q()]},{name:"firstName",displayKey:"users:firstName",cellFormatters:[Q()]}]})})},$t=e=>t.jsx(t.Fragment,{children:e.membership.map((s,o)=>t.jsxs(t.Fragment,{children:[t.jsx(Et,{group:s},s.id),e.membership[o+1]?", ":""]}))}),qt=e=>{const{realm:s}=ce();return t.jsx(ie,{to:nt({realm:s,id:e.id,tab:"settings"}),children:e.username},e.id)},Ht=()=>{const{t:e}=K("groups"),{addAlert:s,addError:o}=z(),i=ae(),a=de(i.pathname),[c,l]=u.useState(!1),{currentGroup:n}=J(),[r,d]=u.useState(),[g,f]=u.useState(!1),[v,p]=u.useState(!1),[y,I]=u.useState([]),{hasAccess:E}=ne();le(()=>G.groups.findOne({id:n().id}),d,[]);const k=E("manage-users")||r?.access.manageMembership,[T,_]=u.useState(0),A=()=>_(new Date().getTime()),D=async m=>await G.users.listGroups({id:m}),h=m=>{let S=[];for(const j of m){S.push(j);const F=h(j.subGroups);S=S.concat(F)}return S},w=async(m,S)=>{let j=await G.groups.listMembers({id:a,first:m,max:S});if(c){const L=h(r?.subGroups||[]);for(const O of L)j=j.concat(await G.groups.listMembers({id:O.id}));j=rt(j,O=>O.username)}const F=await Promise.all(j.map(L=>D(L.id)));return j.map((L,O)=>({...L,membership:F[O]}))};return r?t.jsxs(t.Fragment,{children:[g&&t.jsx(Ut,{groupId:a,onClose:()=>{f(!1),A()}}),t.jsx(fe,{"data-testid":"members-table",loader:w,ariaLabelKey:"groups:members",isPaginated:!0,canSelectAll:!0,onSelect:m=>I([...m]),toolbarItem:k&&t.jsxs(t.Fragment,{children:[t.jsx(X,{children:t.jsx(H,{"data-testid":"addMember",variant:"primary",onClick:()=>f(!0),children:e("addMember")})}),t.jsx(X,{children:t.jsx(De,{"data-testid":"includeSubGroupsCheck",label:e("includeSubGroups"),id:"kc-include-sub-groups",isChecked:c,onChange:()=>l(!c)})}),t.jsx(X,{children:t.jsx(pe,{toggle:t.jsx(ge,{onToggle:()=>p(!v),isDisabled:y.length===0}),isOpen:v,isPlain:!0,dropdownItems:[t.jsx(q,{component:"button",onClick:async()=>{try{await Promise.all(y.map(m=>G.users.delFromGroup({id:m.id,groupId:a}))),p(!1),s(e("usersLeft",{count:y.length}),P.success)}catch(m){o("groups:usersLeftError",m)}A()},children:e("leave")},"action")]})})]}),actions:k?[{title:e("leave"),onRowClick:async m=>{try{await G.users.delFromGroup({id:m.id,groupId:a}),s(e("usersLeft",{count:1}),P.success)}catch(S){o("groups:usersLeftError",S)}return!0}}]:[],columns:[{name:"username",displayKey:"common:name",cellRenderer:qt},{name:"email",displayKey:"groups:email",cellFormatters:[Q()]},{name:"firstName",displayKey:"groups:firstName",cellFormatters:[Q()]},{name:"lastName",displayKey:"groups:lastName",cellFormatters:[Q()]},{name:"membership",displayKey:"groups:membership",cellRenderer:$t}],emptyState:t.jsx(he,{message:e("users:noUsersFound"),instructions:k?e("users:emptyInstructions"):void 0,primaryActionText:k?e("addMember"):void 0,onPrimaryAction:()=>f(!0),secondaryActions:[{text:e("includeSubGroups"),onClick:()=>l(!0)}]})},`${a}${T}${c}`)]}):t.jsx(Ve,{})};const zt=({group:e,refresh:s})=>{const{t:o}=K("groups"),[i,a]=U(),[c,l]=U(),[n,r]=U(),[d,g]=U(),[f,v]=U();return t.jsxs(t.Fragment,{children:[c&&t.jsx(te,{id:e.id,rename:e,refresh:()=>{s()},handleModalToggle:l}),n&&t.jsx(te,{id:e.id,handleModalToggle:r,refresh:s}),d&&t.jsx(Ue,{source:e,refresh:s,onClose:g}),t.jsx(xe,{show:f,toggleDialog:v,selectedRows:[e],refresh:s}),t.jsx(pe,{toggle:t.jsx(ge,{onToggle:a}),isOpen:i,isPlain:!0,position:ct.right,dropdownItems:[t.jsx(q,{onClick:l,children:o("rename")},"rename"),t.jsx(q,{onClick:g,children:o("moveTo")},"move"),t.jsx(q,{onClick:r,children:o("createChildGroup")},"create"),t.jsx(lt,{},"separator"),t.jsx(q,{onClick:v,children:o("common:delete")},"delete")]})]})},oe=50,Pt=({refresh:e,canViewDetails:s})=>{const{t:o}=K("groups"),{realm:i}=ce(),a=_e(),{addAlert:c}=z(),{hasAccess:l}=ne(),[n,r]=u.useState(),[d,g]=u.useState([]),{subGroups:f,setSubGroups:v}=J(),[p,y]=u.useState(""),[I,E]=u.useState(20),[k,T]=u.useState(0),[_,A]=u.useState(0),[D,h]=u.useState(!1),[w,m]=u.useState(),[S,j]=u.useState(0),[F,L]=u.useState(0),O=()=>{L(F+1),e()},$=(b,x)=>({id:b.id,name:t.jsx(Ae,{content:b.name,children:t.jsx("span",{children:b.name})}),children:b.subGroups&&b.subGroups.length>0?b.subGroups.map(R=>$(R,x)):void 0,action:(l("manage-users")||b.access?.manage)&&t.jsx(zt,{group:b,refresh:x}),defaultExpanded:f.map(R=>R.id).includes(b.id)});le(async()=>{const b=await ee("ui-ext/groups",Object.assign({first:`${k}`,max:`${I+1}`,exact:`${D}`,global:`${p!==""}`},p===""?null:{search:p})),x=(await G.groups.count({search:p,top:!0})).count;let R=[];return w&&(R=await ee("ui-ext/groups/subgroup",{id:w.id,first:`${S}`,max:`${oe}`})),{groups:b,count:x,subGroups:R}},({groups:b,count:x,subGroups:R})=>{const B=[];if(w&&W(n||[],w.id,[],B),B.length&&R.length){const M=B.pop();M.children=[...(Se(M.children||[]).splice(0,oe),R.map($e=>$($e,O),"id")),...R.length===oe?[{id:"next",name:t.jsx(H,{variant:"plain",onClick:()=>j(S+oe),children:t.jsx(it,{})})}]:[]]}g(b),r(p?b.map(M=>$(M,O)):Se(n,b.map(M=>$(M,O)),"id")),A(x)},[F,k,S,I,p,D,w]);const W=(b,x,R,B)=>b.map(M=>{B.length>0||("subGroups"in M&&M.subGroups?.length&&W(M.subGroups,x,[...R,M],B),"children"in M&&M.children&&W(M.children,x,[...R,M],B),M.id===x&&B.push(...R,M))});return n?t.jsx(jt,{count:_-k,first:k,max:I,onNextClick:T,onPreviousClick:T,onPerPageSelect:(b,x)=>{T(b),E(x)},inputGroupName:"searchForGroups",inputGroupPlaceholder:o("groups:searchForGroups"),inputGroupOnEnter:y,toolbarItem:t.jsxs(ot,{className:"pf-u-pt-sm",children:[t.jsx(De,{id:"exact","data-testid":"exact-search",name:"exact",isChecked:D,onChange:b=>h(b)}),t.jsx("label",{htmlFor:"exact",className:"pf-u-pl-sm",children:o("exactSearch")})]}),children:n.length>0&&t.jsx(be,{data:n.slice(0,I),allExpanded:p.length>0,activeItems:w?[w]:void 0,hasGuides:!0,hasSelectableNodes:!0,className:"keycloak_groups_treeview",onSelect:(b,x)=>{if(x.id==="next")return;m(x);const R=x.id?.substring(x.id.lastIndexOf("/")+1),B=[];W(d,R,[],B),v(B),s||B.at(-1)?.access?.view?a(me({realm:i,id:x.id})):(c(o("noViewRights"),P.warning),a(me({realm:i})))}})}):t.jsx(Ve,{})};function Bs(){const{t:e}=K("groups"),[s,o]=u.useState(0),{subGroups:i,setSubGroups:a,currentGroup:c}=J(),{realm:l}=ce(),[n,r]=u.useState(),[d,g]=U(),f=_e(),v=ae(),p=de(v.pathname),[y,I]=U(!0),[E,k]=u.useState(0),T=()=>k(E+1),{hasAccess:_}=ne(),D=xt()(vt.AdminFineGrainedAuthz)&&_("manage-authorization","manage-users","manage-clients"),h=_("manage-users")||c()?.access?.manage,w=_("manage-users"),m=_("query-groups","view-users")||_("manage-users","query-groups"),S=_("view-users")||c()?.access?.viewMembers||c()?.access?.manageMembers;return le(async()=>{const j=Be(v.pathname);if(j&&j.length>i.length){const L=[];for(const O of j){const $=O!=="search"?await ee("ui-ext/groups/"+O):{name:e("searchGroups"),id:"search"};if($)L.push($);else throw new Error(e("common:notFound"))}return L}return[]},j=>{j.length&&a(j)},[p]),t.jsxs(t.Fragment,{children:[t.jsx(xe,{show:d,toggleDialog:g,selectedRows:[c()],refresh:()=>{f(me({realm:l})),T()}}),n&&t.jsx(te,{id:p,rename:n,refresh:j=>{T(),a([...i.slice(0,i.length-1),j])},handleModalToggle:()=>r(void 0)}),t.jsx(Ee,{variant:ke.light,className:"pf-u-p-0",children:t.jsx(dt,{isInline:!0,isExpanded:y,position:"left",children:t.jsx(ut,{panelContent:t.jsx(mt,{isResizable:!0,children:t.jsx(Oe,{children:t.jsx(Pt,{refresh:T,canViewDetails:m})})}),children:t.jsxs(pt,{children:[t.jsx(Ae,{content:e(y?"common:hide":"common:show"),children:t.jsx(H,{"aria-label":e(y?"common:hide":"common:show"),variant:"plain",icon:y?t.jsx(gt,{}):t.jsx(Rt,{}),onClick:I})}),t.jsx(Dt,{}),t.jsx(bt,{titleKey:p?c()?.name:"groups:groups",subKey:p?"":"groups:groupsDescription",helpUrl:p?"":ht.groupsUrl,divider:!p,dropdownItems:p&&h?[t.jsx(q,{"data-testid":"renameGroupAction",onClick:()=>r(c()),children:e("renameGroup")},"renameGroup"),t.jsx(q,{"data-testid":"deleteGroup",onClick:g,children:e("deleteGroup")},"deleteGroup")]:void 0}),i.length>0&&t.jsxs(Tt,{inset:{default:"insetNone",md:"insetSm",xl:"insetLg","2xl":"inset2xl"},activeKey:s,onSelect:(j,F)=>o(F),isBox:!0,mountOnEnter:!0,unmountOnExit:!0,children:[t.jsx(Y,{"data-testid":"groups",eventKey:0,title:t.jsx(Z,{children:e("childGroups")}),children:t.jsx(Ge,{refresh:T,canViewDetails:m})}),S&&t.jsx(Y,{"data-testid":"members",eventKey:1,title:t.jsx(Z,{children:e("members")}),children:t.jsx(Ht,{})}),t.jsx(Y,{"data-testid":"attributes",eventKey:2,title:t.jsx(Z,{children:e("common:attributes")}),children:t.jsx(Ft,{})}),w&&t.jsx(Y,{eventKey:3,"data-testid":"role-mapping-tab",title:t.jsx(Z,{children:e("roleMapping")}),children:t.jsx(Ot,{id:p,name:c()?.name})}),D&&t.jsx(Y,{eventKey:4,"data-testid":"permissionsTab",title:t.jsx(Z,{children:e("common:permissions")}),children:t.jsx(ft,{id:p,type:"groups"})})]}),i.length===0&&t.jsx(Ge,{refresh:T,canViewDetails:m})]})})},E)})]})}export{Bs as default};
//# sourceMappingURL=GroupsSection-2c422bab.js.map




© 2015 - 2024 Weber Informatics LLC | Privacy Policy