n8n-editor-ui
Version:
Workflow Editor UI for n8n
2 lines • 36.8 kB
JavaScript
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`n8n@2.16.1`}}catch{}})();try{(function(){var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`af701e04-9e6c-4170-9529-b8164aa554b6`,e._sentryDebugIdIdentifier=`sentry-dbid-af701e04-9e6c-4170-9529-b8164aa554b6`)})()}catch{}import"./chunk-CACdhNlC.js";import{$ as e,A as t,C as n,E as r,F as i,Ft as a,H as o,K as s,N as c,Nt as l,S as u,Sn as d,T as f,U as p,W as m,Wt as h,X as g,_,_n as v,dt as y,gt as b,h as x,it as S,j as C,rt as w,vn as T,w as E,yt as D}from"./vue.runtime.esm-bundler-C3C09Zii.js";import{J as O,at as k,ot as A}from"./core-Bz5WjPxS.js";import{At as j,C as M,Di as N,Ft as P,Ji as ee,Mi as F,Pi as I,Qi as L,Xi as R,Zi as z,_ as B,a as V,et as H,i as U,ji as te,kt as W,lt as ne,tt as G,ut as K,x as re,y as q}from"./src-XqE2yCpG.js";import{t as J}from"./_plugin-vue_export-helper-CIL7EULb.js";import{Er as ie,Nn as ae,Pn as oe,Rt as se,ai as ce,fr as le,mi as Y,r as ue,ri as de,t as fe}from"./users.store-xP93bV7X.js";import{t as X}from"./radio-Cvcn3W3r.js";import{t as Z}from"./dialog-Bs3PLrml.js";import{Bo as pe,Cs as me,Fa as he,Qo as Q,Vr as ge,cl as _e,el as ve,l as ye}from"./constants-DuQbSl-q.js";import{t as be}from"./settings.store-CAFiYCMH.js";import{t as xe}from"./usePageRedirectionHelper-CC6sh9o0.js";import{n as Se}from"./ProjectIcon-BXpCWdRd.js";import{t as Ce}from"./ProjectSharing-Bd5m-jW4.js";import{t as we}from"./roles.store-DRsYq9UX.js";import{t as Te}from"./useSecretsProviderConnection.ee-Bn4PrjQN.js";import{t as Ee}from"./ProjectHeader-CZLMSWNr.js";import{i as De,r as Oe}from"./projectRoleScopes-C6ceL0_o.js";import{t as ke}from"./userRoleProvisioning.store-JMQrCKEv.js";import{t as Ae}from"./useSecretsProvidersList.ee-BI7Qpnip.js";var je={key:1},Me={class:`pt-l`},Ne=J(c({__name:`ProjectDeleteDialog`,props:o({currentProject:{},searchFn:{type:Function},resourceCounts:{}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:o([`confirmDelete`],[`update:modelValue`]),setup(i,{emit:o}){let s=i,c=y(i,`modelValue`),l=u(()=>s.searchFn??de()),p=e=>e.id!==s.currentProject?.id,m=o,g=k(),_=a(null),b=a(null),S=a(``),w=u(()=>s.resourceCounts.credentials+s.resourceCounts.workflows+s.resourceCounts.dataTables>0),T=u(()=>{let e=g.baseText(`projects.settings.delete.question.wipe.placeholder`);return!w.value||b.value===`transfer`&&!!_.value||b.value===`wipe`&&S.value===e}),O=()=>{T.value&&(b.value===`wipe`&&(_.value=null),m(`confirmDelete`,_.value?.id))};return(i,a)=>(e(),E(h(Z),{modelValue:c.value,"onUpdate:modelValue":a[4]||=e=>c.value=e,title:h(g).baseText(`projects.settings.delete.title`,{interpolate:{projectName:s.currentProject?.name??``}}),width:`650`},{footer:D(()=>[C(h(z),{variant:`destructive`,type:`button`,disabled:!T.value,"data-test-id":`project-settings-delete-confirm-button`,onClick:x(O,[`stop`,`prevent`])},{default:D(()=>[t(d(h(g).baseText(`projects.settings.danger.deleteProject`)),1)]),_:1},8,[`disabled`])]),default:D(()=>[w.value?w.value?(e(),r(`div`,je,[C(h(R),{color:`text-base`},{default:D(()=>[t(d(h(g).baseText(`projects.settings.delete.message`)),1)]),_:1}),n(`div`,Me,[C(h(X),{"model-value":b.value??``,label:`transfer`,class:`mb-s`,"onUpdate:modelValue":a[0]||=e=>b.value=`transfer`},{default:D(()=>[C(h(R),{color:`text-dark`},{default:D(()=>[t(d(h(g).baseText(`projects.settings.delete.question.transfer.label`)),1)]),_:1})]),_:1},8,[`model-value`]),b.value===`transfer`?(e(),r(`div`,{key:0,class:v(i.$style.operation)},[C(h(R),{color:`text-dark`},{default:D(()=>[t(d(h(g).baseText(`projects.settings.delete.question.transfer.title`)),1)]),_:1}),C(Ce,{modelValue:_.value,"onUpdate:modelValue":a[1]||=e=>_.value=e,class:`pt-2xs`,"search-fn":l.value,"filter-fn":p,"empty-options-text":h(g).baseText(`projects.sharing.noMatchingProjects`)},null,8,[`modelValue`,`search-fn`,`empty-options-text`])],2)):f(``,!0),C(h(X),{"model-value":b.value??``,label:`wipe`,class:`mb-s`,"onUpdate:modelValue":a[2]||=e=>b.value=`wipe`},{default:D(()=>[C(h(R),{color:`text-dark`},{default:D(()=>[t(d(h(g).baseText(`projects.settings.delete.question.wipe.label`)),1)]),_:1})]),_:1},8,[`model-value`]),b.value===`wipe`?(e(),r(`div`,{key:1,class:v(i.$style.operation)},[C(h(K),{label:h(g).baseText(`projects.settings.delete.question.wipe.title`)},{default:D(()=>[C(h(te),{modelValue:S.value,"onUpdate:modelValue":a[3]||=e=>S.value=e,"data-test-id":`project-delete-confirm-input`,placeholder:h(g).baseText(`projects.settings.delete.question.wipe.placeholder`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])],2)):f(``,!0)])])):f(``,!0):(e(),E(h(R),{key:0,color:`text-base`},{default:D(()=>[t(d(h(g).baseText(`projects.settings.delete.message.empty`)),1)]),_:1}))]),_:1},8,[`modelValue`,`title`]))}}),[[`__cssModules`,{$style:{operation:`_operation_jv0de_125`}}]]),Pe={class:`pt-l`},Fe=c({__name:`ProjectRoleUpgradeDialog`,props:o({limit:{},planName:{}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:[`update:modelValue`],setup(r){let i=r,a=y(r,`modelValue`),o=xe(),s=k(),c=async()=>{await o.goToUpgrade(`rbac`,`upgrade-rbac`),a.value=!1};return(r,o)=>(e(),E(h(Z),{modelValue:a.value,"onUpdate:modelValue":o[1]||=e=>a.value=e,title:h(s).baseText(`projects.settings.role.upgrade.title`),width:`500`},{footer:D(()=>[C(h(z),{variant:`subtle`,"native-type":`button`,onClick:o[0]||=e=>a.value=!1},{default:D(()=>[t(d(h(s).baseText(`generic.cancel`)),1)]),_:1}),C(h(z),{variant:`solid`,"native-type":`button`,onClick:c},{default:D(()=>[t(d(h(s).baseText(`projects.create.limitReached.link`)),1)]),_:1})]),default:D(()=>[n(`div`,Pe,[C(h(A),{keypath:`projects.settings.role.upgrade.message`,scope:`global`},{planName:D(()=>[t(d(i.planName),1)]),limit:D(()=>[t(d(h(s).baseText(`projects.create.limit`,{adjustToNumber:i.limit,interpolate:{count:String(i.limit)}})),1)]),_:1})])]),_:1},8,[`modelValue`,`title`]))}}),Ie=c({__name:`ProjectMembersActionsCell`,props:{data:{},actions:{}},emits:[`action`],setup(t,{emit:n}){let r=t,i=n,a=e=>{i(`action`,{action:e,userId:r.data.id})};return(t,n)=>r.actions.length>0?(e(),E(h(j),{key:0,placement:`bottom`,actions:r.actions,theme:`dark`,onAction:a},null,8,[`actions`])):f(``,!0)}}),Le=J(c({__name:`RoleHoverPopover`,props:{role:{}},setup(r){let i=r,a=k(),o=ne(),s=fe(),c=u(()=>s.isInstanceOwner||s.isAdmin),l=u(()=>c.value&&!i.role.systemRole),p=u(()=>i.role.scopes?.filter(e=>De.has(e)).length??0),m=u(()=>l.value?a.baseText(`projects.settings.role.popover.viewAndEdit`):a.baseText(`projects.settings.role.popover.viewDetails`)),g=()=>{l.value?o.push({name:Q.PROJECT_ROLE_SETTINGS,params:{roleSlug:i.role.slug},query:{from:Q.PROJECT_SETTINGS}}):o.push({name:Q.PROJECT_ROLE_VIEW,params:{roleSlug:i.role.slug},query:{from:Q.PROJECT_SETTINGS}})};return(i,o)=>(e(),E(h(N),{placement:`right`,"show-after":300,enterable:!0,offset:1,"content-class":`role-hover-popover`},{content:D(()=>[n(`div`,{class:v(i.$style.popoverContent)},[C(h(R),{tag:`div`,bold:!0,size:`large`,class:v(i.$style.roleName)},{default:D(()=>[t(d(r.role.displayName),1)]),_:1},8,[`class`]),C(h(R),{tag:`div`,size:`small`,color:`text-light`,class:v(i.$style.permissionCount)},{default:D(()=>[t(d(h(a).baseText(`projects.settings.role.selector.permissionCount`,{interpolate:{count:String(p.value),total:String(h(Oe))}})),1)]),_:1},8,[`class`]),r.role.description?(e(),E(h(R),{key:0,tag:`div`,size:`small`,class:v(i.$style.description)},{default:D(()=>[t(d(r.role.description),1)]),_:1},8,[`class`])):f(``,!0),C(h(z),{variant:`outline`,size:`small`,class:v(i.$style.actionButton),onClick:g},{default:D(()=>[t(d(m.value)+` `,1),C(h(L),{icon:`arrow-up-right`,size:`large`,class:v(i.$style.externalIcon)},null,8,[`class`])]),_:1},8,[`class`])],2)]),default:D(()=>[S(i.$slots,`default`)]),_:3}))}}),[[`__cssModules`,{$style:{popoverContent:`_popoverContent_1vgnc_125`,roleName:`_roleName_1vgnc_130`,permissionCount:`_permissionCount_1vgnc_134`,description:`_description_1vgnc_138`,actionButton:`_actionButton_1vgnc_142`,externalIcon:`_externalIcon_1vgnc_148`}}]]),Re=J(c({__name:`ProjectRoleContactAdminModal`,props:o({customRolesExist:{type:Boolean,default:!1}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:[`update:modelValue`],setup(r){let i=r,a=y(r,`modelValue`),o=k(),s=u(()=>i.customRolesExist?`projects.settings.role.contactAdmin.titleWithRoles`:`projects.settings.role.contactAdmin.title`),c=u(()=>i.customRolesExist?`projects.settings.role.contactAdmin.bodyWithRoles`:`projects.settings.role.contactAdmin.body`);return(r,i)=>(e(),E(h(Z),{modelValue:a.value,"onUpdate:modelValue":i[0]||=e=>a.value=e,width:`400`,"show-close":!0},{header:D(()=>[C(h(R),{tag:`span`,size:`large`,bold:!0},{default:D(()=>[t(d(h(o).baseText(s.value)),1)]),_:1})]),default:D(()=>[n(`div`,{class:v(r.$style.content)},[C(h(R),{tag:`p`,size:`medium`},{default:D(()=>[t(d(h(o).baseText(c.value).split(`{documentation}`)[0]),1),C(h(G),{href:h(ye),"new-window":!0},{default:D(()=>[t(d(h(o).baseText(`generic.documentation`)),1)]),_:1},8,[`href`]),t(d(h(o).baseText(c.value).split(`{documentation}`)[1]||``),1)]),_:1})],2)]),_:1},8,[`modelValue`]))}}),[[`__cssModules`,{$style:{content:`_content_186py_125`}}]]),ze=J(c({__name:`ProjectCustomRolesUpgradeModal`,props:{modelValue:{type:Boolean},modelModifiers:{}},emits:[`update:modelValue`],setup(r){let i=y(r,`modelValue`),a=k(),{goToUpgrade:o}=xe(),s=async()=>{await o(`custom-roles-selector`,`upgrade-custom-roles`),i.value=!1};return(r,o)=>(e(),E(h(Z),{modelValue:i.value,"onUpdate:modelValue":o[1]||=e=>i.value=e,title:h(a).baseText(`projects.settings.role.upgrade.title`),width:`400`},{footer:D(()=>[n(`div`,{class:v(r.$style.footer)},[C(h(z),{type:`secondary`,onClick:o[0]||=e=>i.value=!1},{default:D(()=>[t(d(h(a).baseText(`generic.cancel`)),1)]),_:1}),C(h(z),{type:`primary`,onClick:s},{append:D(()=>[n(`span`,{class:v(r.$style.externalIcon)},`↗`,2)]),default:D(()=>[t(d(h(a).baseText(`projects.settings.role.upgrade.custom.viewPlans`))+` `,1)]),_:1})],2)]),default:D(()=>[n(`div`,{class:v(r.$style.content)},[C(h(R),{tag:`p`,size:`medium`},{default:D(()=>[t(d(h(a).baseText(`projects.settings.role.upgrade.custom.body`).split(`{documentation}`)[0]),1),C(h(G),{href:h(ye),"new-window":!0},{default:D(()=>[t(d(h(a).baseText(`generic.documentation`)),1)]),_:1},8,[`href`]),t(d(h(a).baseText(`projects.settings.role.upgrade.custom.body`).split(`{documentation}`)[1]||``),1)]),_:1})],2)]),_:1},8,[`modelValue`,`title`]))}}),[[`__cssModules`,{$style:{content:`_content_c8g9i_125`,footer:`_footer_c8g9i_129`,externalIcon:`_externalIcon_c8g9i_135`}}]]),Be={key:1},$=J(c({__name:`ProjectMembersRoleCell`,props:{data:{},roles:{}},emits:[`update:role`],setup(i,{emit:o}){let s=i,c=o,l=k(),m=ne(),g=le(),_=be(),y=fe(),S=a(!1),w=a(!1),T=a(!1),O=a(``);b(S,e=>{e||(O.value=``,setTimeout(()=>{document.activeElement instanceof HTMLElement&&document.activeElement.blur()},0))});let A=()=>{S.value=!1},j=u(()=>s.roles.find(e=>e.slug===s.data.role)),M=u(()=>s.data.role!==`project:personalOwner`),N=u(()=>_.isCustomRolesFeatureEnabled),ee=u(()=>y.isInstanceOwner||y.isAdmin),F=u(()=>s.roles.filter(e=>e.systemRole)),I=u(()=>s.roles.filter(e=>!e.systemRole)),z=u(()=>{let e=O.value.toLowerCase().trim();return e?F.value.filter(t=>t.displayName.toLowerCase().includes(e)):F.value}),B=u(()=>{let e=O.value.toLowerCase().trim();return e?I.value.filter(t=>t.displayName.toLowerCase().includes(e)):I.value}),H=u(()=>{let e=[];return z.value.length>0&&(e.push({type:`label`,label:l.baseText(`projects.settings.role.selector.section.system`)}),z.value.forEach(t=>{e.push({value:t.slug,label:t.displayName,role:t})})),(B.value.length>0||!O.value&&!N.value)&&(e.push({type:`label`,label:l.baseText(`projects.settings.role.selector.section.custom`)}),B.value.forEach(t=>{e.push({value:t.slug,label:t.displayName,disabled:!t.licensed,role:t})})),e}),W=e=>{if(!e||typeof e!=`string`)return;let t=s.roles.find(t=>t.slug===e);if(t&&!t.licensed){A(),T.value=!0;return}c(`update:role`,{role:e,userId:s.data.id})},G=()=>{g.track(`User clicked add custom role from role selector`),A(),N.value?ee.value?m.push({name:Q.PROJECT_NEW_ROLE}):w.value=!0:T.value=!0};return(a,o)=>M.value?(e(),r(`div`,{key:0,class:v(a.$style.container)},[C(h(U),{open:S.value,"onUpdate:open":o[4]||=e=>S.value=e,items:H.value,"model-value":i.data.role,size:`small`,variant:`ghost`,position:`popper`,"content-class":a.$style.roleSelectContent,class:v(a.$style.roleSelect),"data-test-id":`project-member-role-dropdown`,"onUpdate:modelValue":W},{default:D(()=>[n(`span`,{class:v(a.$style.triggerContent)},d(j.value?.displayName),3)]),header:D(()=>[n(`div`,{class:v(a.$style.searchContainer)},[C(h(te),{modelValue:O.value,"onUpdate:modelValue":o[0]||=e=>O.value=e,placeholder:h(l).baseText(`generic.search`),size:`medium`,class:v(a.$style.searchInput),onClick:o[1]||=x(()=>{},[`stop`]),onKeydown:o[2]||=x(()=>{},[`stop`])},null,8,[`modelValue`,`placeholder`,`class`])],2)]),item:D(({item:n})=>[n.role?(e(),E(Le,{key:0,role:n.role},{default:D(()=>[C(h(V),p(n,{class:a.$style.selectItem}),{"item-label":D(()=>[C(h(R),{tag:`span`,size:`medium`,color:n.disabled?`text-light`:`text-dark`,class:v(a.$style.itemLabel)},{default:D(()=>[t(d(n.label),1)]),_:2},1032,[`color`,`class`])]),"item-trailing":D(()=>[n.disabled&&N.value?(e(),E(h(P),{key:0,theme:`warning`,class:v(a.$style.upgradeBadge)},{default:D(()=>[t(d(h(l).baseText(`generic.upgrade`)),1)]),_:1},8,[`class`])):f(``,!0)]),_:2},1040,[`class`])]),_:2},1032,[`role`])):f(``,!0)]),label:D(({item:r})=>[n(`span`,{class:v(a.$style.sectionLabelContent)},[t(d(r.label)+` `,1),r.label===h(l).baseText(`projects.settings.role.selector.section.custom`)&&!N.value?(e(),E(h(P),{key:0,theme:`default`,class:v(a.$style.sectionUpgradeBadge),onClick:o[3]||=x(e=>{A(),T.value=!0},[`stop`])},{default:D(()=>[C(h(L),{icon:`lock`,size:`xsmall`}),t(` `+d(h(l).baseText(`generic.upgrade`)),1)]),_:1},8,[`class`])):f(``,!0)],2)]),footer:D(()=>[n(`button`,{type:`button`,class:v(a.$style.addCustomRoleButton),onClick:x(G,[`stop`])},[C(h(L),{icon:`plus`,size:`small`}),C(h(R),{tag:`span`,size:`small`},{default:D(()=>[t(d(h(l).baseText(`projects.settings.role.selector.addCustomRole`)),1)]),_:1})],2)]),_:1},8,[`open`,`items`,`model-value`,`content-class`,`class`]),C(Re,{modelValue:w.value,"onUpdate:modelValue":o[5]||=e=>w.value=e,"custom-roles-exist":I.value.length>0},null,8,[`modelValue`,`custom-roles-exist`]),C(ze,{modelValue:T.value,"onUpdate:modelValue":o[6]||=e=>T.value=e},null,8,[`modelValue`])],2)):(e(),r(`span`,Be,d(j.value?.displayName),1))}}),[[`__cssModules`,{$style:{container:`_container_1ikt5_125`,searchContainer:`_searchContainer_1ikt5_129`,searchInput:`_searchInput_1ikt5_133`,roleSelect:`_roleSelect_1ikt5_141`,triggerContent:`_triggerContent_1ikt5_151`,itemLabel:`_itemLabel_1ikt5_160`,selectItem:`_selectItem_1ikt5_168`,upgradeBadge:`_upgradeBadge_1ikt5_175`,sectionLabelContent:`_sectionLabelContent_1ikt5_180`,sectionUpgradeBadge:`_sectionUpgradeBadge_1ikt5_186`,addCustomRoleButton:`_addCustomRoleButton_1ikt5_193`,roleSelectContent:`_roleSelectContent_1ikt5_209`}}]]),Ve={class:`pt-xs pb-xs`},He=c({__name:`ProjectMembersTable`,props:o({data:{},loading:{type:Boolean},currentUserId:{},projectRoles:{},actions:{},canEditRole:{type:Boolean}},{tableOptions:{default:()=>({page:0,itemsPerPage:10,sortBy:[]})},tableOptionsModifiers:{}}),emits:o([`update:options`,`update:role`,`action`],[`update:tableOptions`]),setup(o,{emit:s}){let c=k(),l=o,f=s,p=y(o,`tableOptions`),m=u(()=>l.data.items),g=a([{title:c.baseText(`projects.settings.table.header.user`),key:`name`,width:400,disableSort:!0,value:e=>e},{title:c.baseText(`projects.settings.table.header.role`),key:`role`,width:200,disableSort:!0},{title:``,key:`actions`,align:`end`,width:46,disableSort:!0,value(){}}]),_=e=>e.id!==l.currentUserId&&l.canEditRole,v=({role:e,userId:t})=>{f(`update:role`,{role:e,userId:t})},b=e=>e.id===l.currentUserId||e.role===`project:personalOwner`?[]:(l.actions??[]).filter(t=>t.guard?.(e)??!0);return(a,s)=>(e(),r(`div`,null,[C(h(B),{"sort-by":p.value.sortBy,"onUpdate:sortBy":s[1]||=e=>p.value.sortBy=e,page:p.value.page,"onUpdate:page":s[2]||=e=>p.value.page=e,"items-per-page":o.data.count,headers:g.value,items:m.value,"items-length":o.data.count,loading:o.loading,"page-sizes":[o.data.count+1],"onUpdate:options":s[3]||=e=>f(`update:options`,e)},{"item.name":D(({value:e})=>[n(`div`,Ve,[C(h(M),T(i(e)),null,16)])]),"item.role":D(({item:n})=>[_(n)?(e(),E($,{key:0,data:n,roles:l.projectRoles,"onUpdate:role":v},null,8,[`data`,`roles`])):(e(),E(h(R),{key:1,color:`text-dark`},{default:D(()=>[t(d(l.projectRoles.find(e=>e.slug===n.role)?.displayName??n.role),1)]),_:2},1024))]),"item.actions":D(({item:e})=>[C(Ie,{data:e,actions:b(e),onAction:s[0]||=e=>a.$emit(`action`,e)},null,8,[`data`,`actions`])]),_:2},1032,[`sort-by`,`page`,`items-per-page`,`headers`,`items`,`items-length`,`loading`,`page-sizes`])]))}}),Ue={key:0,"data-test-id":`external-secrets-section`},We={class:`mb-s`},Ge={for:`projectExternalSecrets`},Ke={key:0},qe=J(c({__name:`ProjectExternalSecrets`,setup(i,{expose:o}){let s=k(),c=oe(),p=ne(),m=ce(),g=ue(),y=Y(),x=be(),S=Ae(),T=Te(m.currentProjectId),O=a([]),A=l({}),j=a(!1),M=a(``),N=a(new Set),P=a(0),V=a(5),H=u(()=>x.moduleSettings[`external-secrets`]?.forProjects??!1),U=u(()=>m.currentProject?.scopes?.includes(`externalSecretsProvider:list`)??!1),W=u(()=>m.currentProject?.scopes?.includes(`externalSecretsProvider:create`)??!1),G=u(()=>y.hasScope(`externalSecretsProvider:create`)),K=u(()=>H.value&&U.value),re=u(()=>O.value.length>0?null:G.value?S.activeProviders.value.length>0?`instance-admin-no-project-providers`:`project-admin-no-providers`:W.value?`project-admin-no-providers`:null),q=u(()=>{let e=re.value;return e?{"instance-admin-no-project-providers":{heading:s.baseText(`projects.settings.externalSecrets.emptyState.heading`),description:s.baseText(`projects.settings.externalSecrets.emptyState.instanceAdmin.noProjectProviders.description`),buttonText:s.baseText(`projects.settings.externalSecrets.button.shareSecretsStore`),buttonAction:ve,testId:`external-secrets-empty-state-no-project-providers`},"project-admin-no-providers":{heading:s.baseText(`projects.settings.externalSecrets.emptyState.heading`),description:s.baseText(`projects.settings.externalSecrets.emptyState.projectAdmin.description`),buttonText:s.baseText(`projects.settings.externalSecrets.button.addSecretsStore`),buttonAction:_e,testId:`external-secrets-empty-state-project-admin`}}[e]:null}),J=u(()=>[...O.value].sort((e,t)=>e.name.localeCompare(t.name))),ie=u(()=>{if(!M.value.trim())return J.value;let e=M.value.toLowerCase();return J.value.filter(t=>t.name.toLowerCase().includes(e)?!0:(A[t.name]??[]).some(t=>t.name.toLowerCase().includes(e)))}),ae=u(()=>{let e=P.value*V.value,t=e+V.value;return ie.value.slice(e,t)});function se(e){let t=A[e]??[],n=M.value.trim().toLowerCase();return n?t.filter(t=>t.name.toLowerCase().includes(n)||e.toLowerCase().includes(n)):t}let le=u(()=>ae.value.map(e=>{let t=N.value.has(e.name);return{id:`header-${e.name}`,connectionName:e.name,secretsCount:e.secretsCount,isExpanded:t,secrets:t?se(e.name):[]}})),de=u(()=>[{title:s.baseText(`projects.settings.externalSecrets.table.header.secretName`),key:`connectionName`,disableSort:!0,resize:!1,value:e=>e.connectionName}]);async function fe(e){if(A[e]?.length)return;let{secrets:t}=await T.getConnection(e);A[e]=t??[]}async function X(){await Promise.all(ae.value.filter(e=>e.secretsCount>0).map(async e=>await fe(e.name)))}async function Z(){if(!(!m.currentProjectId||!U.value||!H.value)){j.value=!0;try{O.value=await m.getProjectSecretProviders(m.currentProjectId),await X()}catch(e){c.showError(e,s.baseText(`projects.settings.externalSecrets.load.error`))}finally{j.value=!1}}}function pe(e){N.value.has(e)?N.value.delete(e):N.value.add(e)}function he(e,t=`connection`){let n=S.activeProviders.value.map(e=>e.name);g.openModalWithData({name:me,data:{activeTab:t,providerKey:e,providerTypes:S.providerTypes.value,existingProviderNames:n,projectId:m.currentProjectId,onClose:async()=>{await Z()}}})}function ge(e){he(e,`connection`)}function _e(){W.value&&he()}function ve(){p.push({name:Q.EXTERNAL_SECRETS_SETTINGS})}return b(M,()=>{P.value=0}),b([P,V],async()=>{await X()}),b([()=>m.currentProjectId,K],async([e,t])=>{e&&t&&await Z()},{immediate:!0}),b(K,async e=>{e&&(await Promise.allSettled([S.fetchProviderTypes(),S.fetchActiveConnections()]),G.value&&await m.getAllProjects())},{immediate:!0}),o({fetchProjectSecretConnections:Z}),(i,a)=>K.value?(e(),r(`fieldset`,Ue,[n(`h3`,We,[n(`label`,Ge,d(h(s).baseText(`projects.settings.externalSecrets`)),1)]),q.value?(e(),E(h(I),{key:0,"data-test-id":q.value.testId,description:`yes`},{description:D(()=>[C(h(ee),{tag:`h3`,size:`small`,class:`mb-2xs`},{default:D(()=>[t(d(q.value.heading),1)]),_:1}),C(h(R),{size:`small`,color:`text-base`,class:v(i.$style.description)},{default:D(()=>[t(d(q.value.description),1)]),_:1},8,[`class`])]),additionalContent:D(()=>[C(h(z),{variant:`ghost`,size:`xsmall`,class:`mr-2xs`,element:`a`,href:h(s).baseText(`settings.externalSecrets.docs`),target:`_blank`,"data-test-id":`secrets-provider-connections-learn-more`},{default:D(()=>[t(d(h(s).baseText(`generic.learnMore`))+` `,1),C(h(L),{icon:`arrow-up-right`})]),_:1},8,[`href`]),C(h(z),{variant:`subtle`,size:`xsmall`,"data-test-id":`${re.value}-button`,onClick:q.value.buttonAction},{default:D(()=>[t(d(q.value.buttonText),1)]),_:1},8,[`data-test-id`,`onClick`])]),_:1},8,[`data-test-id`])):O.value.length>0?(e(),r(`div`,{key:1,class:v(i.$style.secretProvidersContainer)},[n(`div`,{class:v(i.$style.actionsContainer)},[n(`div`,{class:v(i.$style.searchContainer)},[C(h(te),{modelValue:M.value,"onUpdate:modelValue":a[0]||=e=>M.value=e,placeholder:h(s).baseText(`projects.settings.externalSecrets.search.placeholder`),clearable:``,"data-test-id":`secrets-providers-search`,size:`small`},{prefix:D(()=>[C(h(L),{icon:`search`})]),_:1},8,[`modelValue`,`placeholder`])],2),W.value?(e(),E(h(z),{key:0,variant:`outline`,size:`small`,"data-test-id":`external-secrets-add-button`,onClick:_e},{default:D(()=>[t(d(h(s).baseText(`projects.settings.externalSecrets.button.addSecretsStore`)),1)]),_:1})):f(``,!0)],2),C(h(B),{page:P.value,"onUpdate:page":a[1]||=e=>P.value=e,"items-per-page":V.value,"onUpdate:itemsPerPage":a[2]||=e=>V.value=e,headers:de.value,items:le.value,"items-length":ie.value.length,loading:j.value,"page-sizes":[5,10,25,50],"row-props":()=>({class:i.$style.groupHeaderRow}),"data-test-id":`external-secrets-table`},{item:D(({item:a})=>[n(`tr`,{class:v(i.$style.groupHeaderRow)},[n(`td`,{class:v(i.$style.groupHeaderCell)},[n(`div`,{class:v(i.$style.groupHeaderContent)},[C(h(F),{variant:`ghost`,icon:a.isExpanded?`chevron-down`:`chevron-right`,class:v(i.$style.expandButton),disabled:a.secretsCount===0,title:a.isExpanded?h(s).baseText(`projects.settings.externalSecrets.collapse`):h(s).baseText(`projects.settings.externalSecrets.expand`),"data-test-id":`external-secrets-expand-button`,onClick:e=>pe(a.connectionName)},null,8,[`icon`,`class`,`disabled`,`title`,`onClick`]),C(h(R),{class:v(i.$style.connectionLink),bold:``,onClick:e=>ge(a.connectionName)},{default:D(()=>[t(d(a.connectionName),1)]),_:2},1032,[`class`,`onClick`]),C(h(R),{color:`text-light`,size:`small`},{default:D(()=>[t(d(a.secretsCount===1?h(s).baseText(`settings.secretsProviderConnections.oneSecret`):h(s).baseText(`settings.secretsProviderConnections.secrets`,{interpolate:{count:a.secretsCount.toString()}})),1)]),_:2},1024)],2)],2)],2),a.isExpanded&&a.secrets.length>0?(e(),r(`tr`,Ke,[n(`td`,{class:v(i.$style.secretsCell)},[n(`div`,{class:v(i.$style.secretsList)},[(e(!0),r(_,null,w(a.secrets,t=>(e(),r(`div`,{key:t.name,class:v(i.$style.secretRow)},[n(`span`,null,[n(`code`,{class:v(i.$style.secretName)},d(t.name),3)])],2))),128))],2)],2)])):f(``,!0)]),_:1},8,[`page`,`items-per-page`,`headers`,`items`,`items-length`,`loading`,`row-props`])],2)):f(``,!0)])):f(``,!0)}}),[[`__cssModules`,{$style:{description:`_description_3mc48_125`,secretProvidersContainer:`_secretProvidersContainer_3mc48_130`,actionsContainer:`_actionsContainer_3mc48_136`,searchContainer:`_searchContainer_3mc48_141`,groupHeaderRow:`_groupHeaderRow_3mc48_146`,groupHeaderCell:`_groupHeaderCell_3mc48_153`,secretsCell:`_secretsCell_3mc48_165`,secretsList:`_secretsList_3mc48_169`,secretRow:`_secretRow_3mc48_174`,groupHeaderContent:`_groupHeaderContent_3mc48_189`,expandButton:`_expandButton_3mc48_198`,secretName:`_secretName_3mc48_212`,connectionLink:`_connectionLink_3mc48_219`}}]]),Je={for:`projectName`},Ye={for:`projectDescription`},Xe={id:`projectMembers`},Ze={for:`projectMembers`},Qe={key:0,class:`mb-m`},$e={class:`mb-m`},et=10,tt=J(c({__name:`ProjectSettings`,setup(i){let o=fe(),c=k(),l=ce(),p=we(),y=ae(),S=ke(),w=oe(),T=ne(),A=le(),j=se(),M=u(()=>!!pe(l.currentProject?.scopes).project.update),N=e=>{w.showError(e,c.baseText(`projects.settings.save.error.title`))},P=a(!1),ee=a(!1),F=a(!1),I=a(!1),B=a({credentials:-1,dataTables:-1,workflows:-1}),V=a({name:``,description:``,relations:[]}),U=a(!1),G=a(null),K=a({type:`icon`,value:`layers`}),J=a(``),Y=a({page:0,itemsPerPage:10,sortBy:[{id:`firstName`,desc:!1},{id:`lastName`,desc:!1},{id:`email`,desc:!1}]}),ue=a(``),de=a([]),X=a(!1),Z=u(()=>de.value.filter(e=>!(V.value.relations||[]).find(t=>t.id===e.id))),me=u(()=>p.processedProjectRoles.find(e=>e.licensed)?.slug),ye=u(()=>[{label:c.baseText(`projects.settings.table.row.removeUser`),value:`remove`,guard:e=>e.id!==o.currentUser?.id&&e.role!==`project:personalOwner`}]),be=async e=>{if(!l.currentProject)return;let t=o.usersById[e];if(!t)return;let n=me.value;if(n){(t.role===ge.Owner||t.role===ge.Admin)&&p.processedProjectRoles.find(e=>e.slug===`project:admin`&&e.licensed)&&(n=`project:admin`),V.value.relations.find(t=>t.id===e)||V.value.relations.push({id:e,role:n});try{U.value=!0,await l.addMember(l.currentProject.id,{userId:e,role:n}),w.showMessage({type:`success`,title:c.baseText(`projects.settings.member.added.title`)}),A.track(`User added member to project`,{project_id:l.currentProject.id,target_user_id:e,role:n})}catch(t){V.value.relations=V.value.relations.filter(t=>t.id!==e),N(t)}}},xe=async({userId:e,role:t})=>{if(!l.currentProject)return;let n=V.value.relations.findIndex(t=>t.id===e);if(n===-1)return;let r=V.value.relations[n].role;V.value.relations[n].role=t;try{U.value=!0,await l.updateMemberRole(l.currentProject.id,e,t),p.fetchRoles(),w.showMessage({type:`success`,title:c.baseText(`projects.settings.memberRole.updated.title`)}),A.track(`User changed member role on project`,{project_id:l.currentProject.id,target_user_id:e,role:t})}catch(e){V.value.relations[n].role=r,w.showError(e,c.baseText(`projects.settings.memberRole.update.error.title`))}},Ce=()=>{F.value=!0};async function Te(e){let t=l.currentProject;if(!t)return;let n=V.value.relations.findIndex(t=>t.id===e);if(n===-1)return;let r=V.value.relations.splice(n,1)[0];if(t.relations.some(t=>t.id===e))try{U.value=!0,await l.removeMember(t.id,e),w.showMessage({type:`success`,title:c.baseText(`projects.settings.member.removed.title`)}),A.track(`User removed member from project`,{project_id:t.id,target_user_id:e})}catch(e){V.value.relations.splice(n,0,r),N(e)}}let De=async({action:e,userId:t})=>{switch(e){case`remove`:await Te(t);break;default:break}},Oe=()=>{V.value.relations=l.currentProject?.relations?he(l.currentProject.relations):[],V.value.name=l.currentProject?.name??``,V.value.description=l.currentProject?.description??``},Ae=()=>{Oe(),F.value=!1},je=()=>{let e={};return l.currentProject?(V.value.name!==l.currentProject.name&&(e.name=V.value.name??``),V.value.description!==l.currentProject.description&&(e.description=V.value.description??``),V.value.relations.length!==l.currentProject.relations.length&&(e.memberAdded=V.value.relations.filter(e=>!l.currentProject?.relations.find(t=>t.id===e.id)),e.memberRemoved=l.currentProject.relations.filter(e=>!V.value.relations.find(t=>t.id===e.id))),e.role=V.value.relations.filter(t=>l.currentProject?.relations.find(e=>e.id===t.id)?.role!==t.role&&!e.memberAdded?.find(e=>e.id===t.id)),e):e},Me=e=>{let t=l.currentProject?.id;e.name&&A.track(`User changed project name`,{project_id:t,name:e.name}),e.memberAdded?.forEach(e=>{A.track(`User added member to project`,{project_id:t,target_user_id:e.id,role:e.role})}),e.memberRemoved?.forEach(e=>{A.track(`User removed member from project`,{project_id:t,target_user_id:e.id})}),e.role?.forEach(e=>{A.track(`User changed member role on project`,{project_id:t,target_user_id:e.id,role:e.role})})},Pe=async()=>{if(l.currentProject)try{await l.updateProject(l.currentProject.id,{name:V.value.name??``,description:V.value.description??``}),F.value=!1}catch(e){throw N(e),e}},Ie=async()=>{if(F.value)try{await Pe(),Me(je()),w.showMessage({title:c.baseText(`projects.settings.save.successful.title`,{interpolate:{projectName:V.value.name??``}}),type:`success`})}catch{}},Le=async()=>{l.currentProjectId&&(B.value=await l.getResourceCounts(l.currentProjectId)),P.value=!0},Re=async e=>{try{if(l.currentProject){let t=l.currentProject?.name??``;await l.deleteProject(l.currentProject.id,e),await T.push({name:Q.HOMEPAGE}),w.showMessage({title:c.baseText(`projects.settings.delete.successful.title`,{interpolate:{projectName:t}}),type:`success`}),P.value=!0}}catch(e){w.showError(e,c.baseText(`projects.settings.delete.error.title`))}},ze=()=>{V.value.name===c.baseText(`projects.settings.newProjectName`)&&(G.value?.inputRef?.focus(),G.value?.inputRef?.select())},Be=async()=>{if(l.currentProject)try{await l.updateProject(l.currentProject.id,{icon:K.value}),w.showMessage({title:c.baseText(`projects.settings.icon.update.successful.title`),type:`success`})}catch(e){N(e)}};b(()=>l.currentProject,async()=>{if(U.value){U.value=!1;return}Oe(),await m(),ze(),l.currentProject?.icon&&Se(l.currentProject.icon)&&(K.value=l.currentProject.icon)},{immediate:!0});let $=u(()=>V.value.relations.map(e=>{let t=o.usersById[e.id],n=ie(e.role)?e.role:`project:viewer`;return{...t,...e,role:n,firstName:e?.firstName??t?.firstName??null,lastName:e?.lastName??t?.lastName??null,email:e?.email??t?.email??null}})),Ve=u(()=>({items:$.value,count:$.value.length})),Ue=u(()=>{if(!J.value.trim())return Ve.value;let e=J.value.toLowerCase(),t=$.value.filter(t=>{let n=`${t.firstName??``} ${t.lastName??``}`.toLowerCase(),r=(t.email??``).toLowerCase();return n.includes(e)||r.includes(e)});return{items:t,count:t.length}}),We=u(()=>$.value.length>=et);b(We,e=>{!e&&J.value&&(J.value=``)});let Ge=O(()=>{Y.value.page=0},_e(ve.INPUT.SEARCH)),Ke=e=>{J.value=e,Ge()},tt=e=>{Y.value=e},nt=async e=>{ue.value=e,X.value=!0;try{let t=e.trim()?{fullText:e}:void 0;await o.fetchUsers({take:50,filter:t}),e.trim()?de.value=o.allUsers.filter(t=>{let n=e.toLowerCase(),r=`${t.firstName??``} ${t.lastName??``}`.toLowerCase(),i=(t.email??``).toLowerCase();return r.includes(n)||i.includes(n)}):de.value=o.allUsers}catch(e){w.showError(e,c.baseText(`projects.settings.users.search.error`))}finally{X.value=!1}},rt=O(nt,_e(ve.INPUT.SEARCH));s(async()=>{M.value&&await nt(``)});let it=u(()=>S.provisioningConfig?.scopesProvisionProjectRoles||!1);return g(async()=>{j.set(c.baseText(`projects.settings`)),M.value&&(ze(),await Promise.all([S.getProvisioningConfig(),p.fetchRoles()]))}),(i,a)=>(e(),r(`div`,{class:v(i.$style.projectSettings),"data-test-id":`project-settings-container`},[n(`div`,{class:v(i.$style.header)},[C(Ee),M.value?(e(),r(`div`,{key:0,class:v(i.$style.headerRow)},[C(h(R),{tag:`h1`,size:`xlarge`,class:`pt-xs pb-m`},{default:D(()=>[t(d(h(c).baseText(`projects.settings.info`)),1)]),_:1}),n(`div`,{class:v(i.$style.headerButtons)},[C(h(z),{variant:`subtle`,"native-type":`button`,disabled:!F.value,class:`mr-2xs`,"data-test-id":`project-settings-cancel-button`,onClick:x(Ae,[`stop`,`prevent`])},{default:D(()=>[t(d(h(c).baseText(`projects.settings.button.cancel`)),1)]),_:1},8,[`disabled`]),C(h(z),{disabled:!I.value||!F.value,variant:`solid`,"data-test-id":`project-settings-save-button`,onClick:x(Ie,[`stop`,`prevent`])},{default:D(()=>[t(d(h(c).baseText(`projects.settings.button.save`)),1)]),_:1},8,[`disabled`])],2)],2)):f(``,!0)],2),n(`form`,{onSubmit:x(Ie,[`prevent`])},[M.value?(e(),r(_,{key:0},[n(`fieldset`,null,[n(`label`,Je,d(h(c).baseText(`projects.settings.name`)),1),n(`div`,{class:v(i.$style.projectName)},[C(h(q),{modelValue:K.value,"onUpdate:modelValue":[a[0]||=e=>K.value=e,Be],"button-tooltip":h(c).baseText(`projects.settings.iconPicker.button.tooltip`)},null,8,[`modelValue`,`button-tooltip`]),C(h(H),{id:`projectName`,ref_key:`nameInput`,ref:G,modelValue:V.value.name,"onUpdate:modelValue":a[1]||=e=>V.value.name=e,label:``,type:`text`,name:`name`,required:``,"data-test-id":`project-settings-name-input`,class:v(i.$style.projectNameInput),onEnter:Ie,onInput:Ce,onValidate:a[2]||=e=>I.value=e},null,8,[`modelValue`,`class`])],2)]),n(`fieldset`,null,[n(`label`,Ye,d(h(c).baseText(`projects.settings.description`)),1),C(h(H),{id:`projectDescription`,modelValue:V.value.description,"onUpdate:modelValue":a[3]||=e=>V.value.description=e,label:``,name:`description`,type:`textarea`,maxlength:512,autosize:!0,"data-test-id":`project-settings-description-input`,class:v(i.$style.projectDescriptionInput),onEnter:Ie,onInput:Ce,onValidate:a[4]||=e=>I.value=e},null,8,[`modelValue`,`class`])])],64)):f(``,!0),C(qe,{class:v(i.$style.externalSecrets)},null,8,[`class`]),M.value?(e(),r(_,{key:1},[n(`fieldset`,Xe,[n(`h3`,null,[n(`label`,Ze,d(h(c).baseText(`projects.settings.projectMembers`)),1)]),n(`div`,{class:v([i.$style.membersInputRow,`mb-s`])},[C(h(re),{id:`projectMembers`,class:v(i.$style.userSelect),size:`large`,users:Z.value,"current-user-id":h(o).currentUser?.id,placeholder:h(c).baseText(`workflows.shareModal.select.placeholder`),"data-test-id":`project-members-select`,remote:``,"remote-method":h(rt),loading:X.value,"onUpdate:modelValue":be,disabled:it.value},{prefix:D(()=>[C(h(L),{icon:`search`})]),_:1},8,[`class`,`users`,`current-user-id`,`placeholder`,`remote-method`,`loading`,`disabled`]),We.value?(e(),E(h(te),{key:0,class:v(i.$style.search),"model-value":J.value,placeholder:h(c).baseText(`projects.settings.members.search.placeholder`),clearable:``,"data-test-id":`project-members-search`,"onUpdate:modelValue":Ke},{prefix:D(()=>[C(h(L),{icon:`search`})]),_:1},8,[`class`,`model-value`,`placeholder`])):f(``,!0)],2),it.value?(e(),r(`div`,Qe,[C(h(W),{type:`info`,title:h(c).baseText(`settings.provisioningProjectRolesHandledBySsoProvider.description`)},null,8,[`title`])])):f(``,!0),$.value.length>0?(e(),r(`div`,{key:1,class:v(i.$style.membersTableContainer)},[C(He,{"table-options":Y.value,"onUpdate:tableOptions":a[5]||=e=>Y.value=e,"data-test-id":`project-members-table`,data:Ue.value,"current-user-id":h(o).currentUser?.id,"project-roles":h(p).processedProjectRoles,actions:ye.value,"can-edit-role":!it.value,"onUpdate:options":tt,"onUpdate:role":xe,onAction:De},null,8,[`table-options`,`data`,`current-user-id`,`project-roles`,`actions`,`can-edit-role`])],2)):f(``,!0)]),n(`fieldset`,null,[n(`h3`,$e,d(h(c).baseText(`projects.settings.danger.title`)),1),n(`small`,{class:v(i.$style.danger)},d(h(c).baseText(`projects.settings.danger.message`)),3),C(h(z),{variant:`subtle`,size:`large`,"native-type":`button`,"data-test-id":`project-settings-delete-button`,onClick:x(Le,[`stop`,`prevent`])},{default:D(()=>[t(d(h(c).baseText(`projects.settings.danger.deleteProject`)),1)]),_:1})])],64)):f(``,!0)],32),C(Ne,{modelValue:P.value,"onUpdate:modelValue":a[6]||=e=>P.value=e,"current-project":h(l).currentProject,"resource-counts":B.value,onConfirmDelete:Re},null,8,[`modelValue`,`current-project`,`resource-counts`]),C(Fe,{modelValue:ee.value,"onUpdate:modelValue":a[7]||=e=>ee.value=e,limit:h(l).teamProjectsLimit,"plan-name":h(y).currentPlanData?.displayName},null,8,[`modelValue`,`limit`,`plan-name`])],2))}}),[[`__cssModules`,{$style:{projectSettings:`_projectSettings_yap04_125`,header:`_header_yap04_149`,headerRow:`_headerRow_yap04_155`,headerButtons:`_headerButtons_yap04_162`,upgrade:`_upgrade_yap04_168`,externalSecrets:`_externalSecrets_yap04_172`,membersInputRow:`_membersInputRow_yap04_177`,membersTableContainer:`_membersTableContainer_yap04_185`,search:`_search_yap04_189`,projectName:`_projectName_yap04_194`,projectNameInput:`_projectNameInput_yap04_199`,projectDescriptionInput:`_projectDescriptionInput_yap04_203`,userSelect:`_userSelect_yap04_204`,danger:`_danger_yap04_214`}}]]);export{tt as default};
//# sourceMappingURL=ProjectSettings-fAiOILAe.js.map