1import{jsx as i,jsxs as c,Fragment as h}from"react/jsx-runtime";import{u as ae,a as j,m as se,v as ce,M as Se,o as Ve,g as D,I as Le,y as xe,ar as re,d as Ae,B as Fe,b as Ee,n as Ke,e as Re,f as $,s as k,eW as w,eX as I,U as Be,D as Ge,P as Me,p as Oe,O as $e,R as He,dt as je,A as _e,ay as Z,az as S,K as V,N as L,_ as x,L as H,eY as qe,ae as J,eZ as ze,aa as Q,e_ as Ue}from"./main-CdTyjLTW.js";import{useState as u}from"react";import{u as A}from"./ConfirmDialog-BpghauDa.js";import{F as We}from"./FormAccess-Chb1jekR.js";import{V as Xe}from"./ViewHeader-DlSfixri.js";import{u as Ye}from"./useParams-ncjyfZeQ.js";import{t as Ze}from"./translationFormatter-FIcT_WMC.js";/* empty css */import{d as ee,D as ie,a as te,b as le,c as oe}from"./DataListItemRow-C3LqP3Yr.js";import{T as ne}from"./trash-icon-CzUx6NTZ.js";import"react-dom";const Je=({name:a,global:t})=>{const{t:n}=j();return c(h,{children:[a," ",t&&i(re,{color:"blue",children:n("global")})]})},Qe=a=>{const{adminClient:t}=ae(),{t:n}=j(),[p,C]=u([]),[f,F]=u();se(()=>t.clientPolicies.listProfiles({includeGlobalProfiles:!0}),y=>{const E=y.globalProfiles?.map(N=>({...N,global:!0})),K=y.profiles?.map(N=>({...N,global:!1}));F([...E??[],...K??[]])},[]);const r=async()=>f?.filter(y=>!a.allProfiles.includes(y.name))??[];return f?i(Se,{"data-testid":"addClientProfile",title:n("addClientProfile"),isOpen:a.open,onClose:a.toggleDialog,variant:Ve.large,actions:[i(D,{"data-testid":"add-client-profile-button",variant:"primary",isDisabled:!p.length,onClick:()=>{a.toggleDialog(),a.onConfirm(p)},children:n("add")},"add"),i(D,{variant:"link",onClick:()=>{a.toggleDialog()},children:n("cancel")},"cancel")],children:i(Le,{loader:r,ariaLabelKey:"profilesList",searchPlaceholderKey:"searchProfile",canSelectAll:!0,onSelect:y=>{C([...y])},columns:[{name:"name",displayKey:"clientProfileName",cellRenderer:Je},{name:"description",cellFormatters:[Ze(n)]}],emptyState:i(xe,{hasIcon:!0,message:n("noRoles"),instructions:n("noRolesInstructions"),primaryActionText:n("createRole")})})}):i(ce,{})},ei={name:"",description:"",conditions:[],enabled:!0,profiles:[]};function pi(){const{adminClient:a}=ae(),{t}=j(),{realm:n}=Ae(),{addAlert:p,addError:C}=Fe(),[f,F]=u(!1),[r,y]=u(),[E,K]=u(),[N,_]=u(),[de,me]=u([]),[g,q]=u(),[v,z]=u(!1),[R,fe]=u(),[U,ue]=u(!1),[B,pe]=u(),{policyName:s}=Ye(),b=Ee(),d=Ke({mode:"onChange",defaultValues:ei}),{handleSubmit:Pe}=d,G=d.getValues();se(async()=>{const[e,l]=await Promise.all([a.clientPolicies.listPolicies({includeGlobalPolicies:!0}),a.clientPolicies.listProfiles({includeGlobalProfiles:!0})]);return{policies:e,profiles:l}},({policies:e,profiles:l})=>{let o=e.policies?.find(O=>O.name===s);o===void 0&&(o=e.globalPolicies?.find(O=>O.name===s),F(o!==void 0));const P=[...l.globalProfiles??[],...l.profiles??[]],m=[...e.globalPolicies??[],...e.policies??[]];y(e.policies??[]),K(e.globalPolicies??[]),_(m),o&&(Ce(o),me(P),q(o),z(!0))},[]);const Ce=e=>{d.reset(e)},W=(N||[]).filter(e=>e.name===s),X=W[0]?.conditions||[],T=W[0]?.profiles||[],ye=Re().componentTypes?.["org.keycloak.services.clientpolicy.condition.ClientPolicyConditionProvider"],M=async()=>{const e=d.getValues(),l={...e},o=()=>r?.some(m=>m.name===l.name)?r?.map(m=>m.name===l.name?l:m):e.name!==s?r?.filter(m=>m.name!==s).concat(e):r?.concat(e);try{await a.clientPolicies.updatePolicy({policies:o()}),p(t(s?"updateClientPolicySuccess":"createClientPolicySuccess"),k.success),b(I({realm:n,policyName:e.name})),z(!0)}catch(P){C("createClientPolicyError",P)}},[ge,he]=A({titleKey:t("deleteClientPolicyConfirmTitle"),messageKey:t("deleteClientPolicyConfirm",{policyName:s}),continueButtonLabel:t("delete"),continueButtonVariant:$.danger,onConfirm:async()=>{const e=r?.filter(l=>l.name!==s);try{await a.clientPolicies.updatePolicy({policies:e}),p(t("deleteClientPolicySuccess"),k.success),b(w({realm:n,tab:"policies"}))}catch(l){C("deleteClientPolicyError",l)}}}),[be,De]=A({titleKey:t("deleteClientPolicyConditionConfirmTitle"),messageKey:t("deleteClientPolicyConditionConfirm",{condition:R?.name}),continueButtonLabel:t("delete"),continueButtonVariant:$.danger,onConfirm:async()=>
1{if(R?.name){g?.conditions?.splice(R.idx,1);try{await a.clientPolicies.updatePolicy({policies:r}),p(t("deleteConditionSuccess"),k.success),b(I({realm:n,policyName:G.name}))}catch(e){C("deleteConditionError",e)}}else{const e=r?.filter(l=>l.name!==s);try{await a.clientPolicies.updatePolicy({policies:e}),p(t("deleteClientSuccess"),k.success),b(w({realm:n,tab:"policies"}))}catch(l){C("deleteClientError",l)}}}}),[ke,ve]=A({titleKey:t("deleteClientPolicyProfileConfirmTitle"),messageKey:t("deleteClientPolicyProfileConfirm",{profileName:B?.name,policyName:s}),continueButtonLabel:t("delete"),continueButtonVariant:$.danger,onConfirm:async()=>{if(B?.name){g?.profiles?.splice(B.idx,1);try{await a.clientPolicies.updatePolicy({policies:r}),p(t("deleteClientPolicyProfileSuccess"),k.success),d.setValue("profiles",g?.profiles||[]),b(I({realm:n,policyName:G.name}))}catch(e){C("deleteClientPolicyProfileError",e)}}else{const e=r?.filter(l=>l.name!==s);try{await a.clientPolicies.updatePolicy({policies:e}),p(t("deleteClientSuccess"),k.success),b(w({realm:n,tab:"policies"}))}catch(l){C("deleteClientError",l)}}}}),Ne=()=>{g?.name!==void 0&&d.setValue("name",g.name),g?.description!==void 0&&d.setValue("description",g.description)},Y=()=>{ue(!U)},Te=async e=>{const l={...g,profiles:T.concat(e),conditions:g?.conditions},o=r?.findIndex(m=>l.name===m.name);if(o===void 0||o===-1)return;const P=[...(r||[]).slice(0,o),l,...(r||[]).slice(o+1)];try{await a.clientPolicies.updatePolicy({policies:P}),y(P);const m=[...E||[],...P];_(m),q(l),d.setValue("profiles",l.profiles),b(I({realm:n,policyName:G.name})),p(t("addClientProfileSuccess"),k.success)}catch(m){C("addClientProfileError",m)}},[we,Ie]=A({titleKey:"disablePolicyConfirmTitle",messageKey:"disablePolicyConfirm",continueButtonLabel:"disable",onConfirm:()=>{d.setValue("enabled",!d.getValues().enabled),M()}});return r?c(h,{children:[i(De,{}),i(ve,{}),i(Qe,{onConfirm:e=>{Te(e.map(l=>l.name))},allProfiles:T,open:U,toggleDialog:Y}),i(Be,{name:"enabled",defaultValue:!0,control:d.control,render:({field:e})=>c(h,{children:[i(Ie,{}),i(he,{}),i(Xe,{titleKey:v||s?s:"createPolicy",badges:[{id:"global-client-policy-badge",text:f?i(re,{color:"blue",children:t("global")}):""}],divider:!0,dropdownItems:(v||s)&&!f?[i(Ge,{value:"delete",onClick:()=>{ge()},"data-testid":"deleteClientPolicyDropdown",children:t("deleteClientPolicy")},"delete")]:void 0,isReadOnly:f,isEnabled:e.value,onToggle:l=>{l?(e.onChange(l),M()):we()}})]})}),i(Me,{variant:"light",children:i(We,{onSubmit:Pe(M),isHorizontal:!0,role:"view-realm",className:"pf-v5-u-mt-lg",children:c(Oe,{...d,children:[i($e,{name:"name",label:t("name"),rules:{required:t("required"),validate:e=>r.some(l=>l.name===e)?t("createClientProfileNameHelperText").toString():!0}}),i(He,{label:t("description"),fieldId:"kc-description",children:i(je,{"aria-label":t("description"),id:"kc-client-policy-description","data-testid":"client-policy-description",...d.register("description")})}),c(_e,{children:[i(D,{variant:"primary",type:"submit","data-testid":"saveCreatePolicy",isDisabled:!d.formState.isValid||f,children:t("save")}),i(D,{id:"cancelCreatePolicy",variant:"link",onClick:()=>(v||s)&&!f?Ne():b(w({realm:n,tab:"policies"})),"data-testid":"cancelCreatePolicy",children:t(v&&!f?"reload":"cancel")})]}),(v||d.formState.isSubmitted)&&c(h,{children:[c(Z,{children:[i(S,{children:c(V,{className:"kc-conditions",component:L.h1,children:[t("conditions"),i(x,{helpText:t("conditionsHelp"),fieldLabelId:"conditions"})]})}),!f&&i(S,{align:{default:"alignRight"},children:i(D,{id:"addCondition",component:e=>i(H,{...e,to:qe({realm:n,policyName:s})}),variant:"link",className:"kc-addCondition","data-testid":"addCondition",icon:i(J,{}),children:t("addCondition")})})]}),X.length>0?i(ee,{"aria-label":t("conditions"),isCompact:!0,children:X.map((e,l)=>i(ie,{"aria-labelledby":"conditions-list-item",id:e.condition,"data-testid":"conditions-list-item",children:i(te,{"data-testid":"conditions-list-row",children:i(le,{dataListCells:[c(oe,{"data-testid":"condition-type",children:[Object.keys(e.configuration).length!==0?i(H,{"data-testid":`${e.condition}-condition-link`,to:ze({realm:n,conditionName:e.condition,policyName:s}),className:"kc-condition-link",children:e.condition},e.condition):e.condition,ye?.map(o=>o.id===e.condition&&c(h,{children:[i(x,{helpText:o.helpText,fieldLabelId:e.condition}),!f&&i(D,{variant:"link","aria-label":"remove-condition",isInline:!0,icon:i(ne,{className:"kc-conditionType-trash-icon","data-testid":`delete-${e.condition}-condition`,onClick:()=>{be(),fe({idx:l,name:o.id})}})})]}))]},`name-${l}`)]})})},`list-item-${l}`))}):c(h,{children:[i(Q,{}),i(V,{className:"kc-emptyConditions",component:L.h2,children:t("emptyConditions")})]})]}),(v||d.formState.isSubmitted)&&c(h,{children:[c(Z,{children:[i(S,{children:c(V,{className:"kc-client-profiles",component:L.h1,children:[t("clientProfiles"),i(x,{helpText:t("clientProfilesHelp"),fieldLabelId:"clientProfiles"})]})}),!f&&i(S,{align:{default:"alignRight"},children:i(D,{id:"addClientProfile",variant:"link",className:"kc-addClientProfile","data-testid":"addClientProfile",icon:i(J,{}),onClick:Y,children:t("addClientProfile")})})]}),T.length>0?i(ee,{"aria-label":t("profiles"),isCompact:!0,children:T.map((e,l)=>i(ie,{"aria-labelledby":`${e}-profile-list-item`,id:`${e}-profile-list-item`,"data-testid":"profile-list-item",children:i(te,{"data-testid":"profile-list-row",children:i(le,{dataListCells:[c(oe,{"data-testid":"profile-name",children:[e&&i(H,{"data-testid":"profile-name-link",to:Ue({realm:n,profileName:e}),className:"kc-profile-link",children:e},e),T.filter(o=>o===e).map(o=>c(h,{children:[i(x,{helpText:de.find(P=>o===P.name)?.description,fieldLabelId:e}),!f&&i(D,{variant:"link","aria-label":"remove-client-profile",isInline:!0,icon:i(ne,{className:"kc-conditionType-trash-icon","data-testid":"deleteClientProfileDropdown",onClick:()=>{ke(),pe({idx:l,name:o})}})})]}))]},"name")]})})},e))}):c(h,{children:[i(Q,{}),i(V,{className:"kc-emptyClientProfiles",component:L.h2,children:t("emptyProfiles")})]})]})]})})})]}):i(ce,{})}export{pi as default}; 2//# sourceMappingURL=NewClientPolicy-CXZgSPLr.js.map
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.