UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

2 lines 13 kB
(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]=`54c36e07-1f54-4845-b447-57543fb9716b`,e._sentryDebugIdIdentifier=`sentry-dbid-54c36e07-1f54-4845-b447-57543fb9716b`)})()}catch{}import{o as e}from"./chunk-CACdhNlC.js";import{$ as t,A as n,C as r,E as i,Ft as a,N as o,S as s,Sn as c,T as l,Wt as u,X as d,_ as f,_n as p,bt as m,gt as h,h as g,j as _,p as v,rt as ee,w as y,yt as b}from"./vue.runtime.esm-bundler-C3C09Zii.js";import{at as x}from"./core-Bz5WjPxS.js";import{At as S,Di as C,Ft as w,Pi as T,Qi as E,Xi as D,_t as O,ct as k,dt as te,lt as ne,ut as A,vt as j,wt as M}from"./src-XqE2yCpG.js";import{t as N}from"./_plugin-vue_export-helper-CIL7EULb.js";import{Ba as P,Cr as F,Ln as I,Rt as re,Za as ie,ai as ae,cr as L,ei as R,fr as oe,it as z,n as B,oi as V,r as H,t as se,w as ce}from"./users.store-xP93bV7X.js";import{Bo as U,Qc as le,Qo as W}from"./constants-DuQbSl-q.js";import{t as ue}from"./settings.store-CAFiYCMH.js";import{t as G}from"./dateformat-Cs9X8ykY.js";import{t as de}from"./externalSecrets.ee.store-1A3m4tmC.js";import{t as K}from"./ProjectCardBadge-oqs-4qFh.js";import{t as q}from"./CredentialIcon-BVAlIa2j.js";import{t as fe}from"./useDynamicCredentials-DWt_uw-C.js";import{t as J}from"./TimeAgo-D3e2Vl9V.js";import{t as pe}from"./insights.store-i6LlshbL.js";import{r as me}from"./readyToRun.store-DUyOyjE3.js";import{t as he}from"./EmptySharedSectionActionBox-_g-Zo60Q.js";import{t as ge}from"./ResourcesListLayout-BANHdcmL.js";import{t as _e}from"./ProjectHeader-CZLMSWNr.js";import{n as ve,t as Y}from"./DependencyPill-DaytNi4_.js";import{t as ye}from"./InsightsSummary-fRg21vR0.js";import{t as be}from"./pickBy-jzlqE_3l.js";var xe=e(G(),1),Se={key:0},Ce=N(o({__name:`CredentialCard`,props:{data:{},readOnly:{type:Boolean,default:!1},needsSetup:{type:Boolean,default:!1}},emits:[`click`],setup(e,{emit:a}){let o={OPEN:`open`,DELETE:`delete`,MOVE:`move`},d=a,f=e,h=x(),ee=I(),T=H(),O=z(),k=ae(),{isEnabled:te}=fe(),{hasDependencies:ne}=ve(),A=s(()=>h.baseText(`generic.credential`).toLowerCase()),j=s(()=>O.getCredentialTypeByName(f.data.type??``)),N=s(()=>U(f.data.scopes).credential),F=s(()=>{let e=[{label:h.baseText(`credentials.item.open`),value:o.OPEN}];return N.value.delete&&e.push({label:h.baseText(`credentials.item.delete`),value:o.DELETE}),N.value.move&&k.isTeamProjectFeatureEnabled&&e.push({label:h.baseText(`credentials.item.move`),value:o.MOVE}),e}),re=s(()=>{let e=new Date().getFullYear().toString();return(0,xe.default)(f.data.createdAt,`d mmmm${String(f.data.createdAt).startsWith(e)?``:`, yyyy`}`)}),ie=s(()=>ne(f.data.id));function L(){d(`click`,f.data.id)}async function oe(e){switch(e){case o.OPEN:L();break;case o.DELETE:await B();break;case o.MOVE:V();break}}async function B(){await ee.confirm(h.baseText(`credentialEdit.credentialEdit.confirmMessage.deleteCredential.message`,{interpolate:{savedCredentialName:f.data.name}}),h.baseText(`credentialEdit.credentialEdit.confirmMessage.deleteCredential.headline`),{confirmButtonText:h.baseText(`credentialEdit.credentialEdit.confirmMessage.deleteCredential.confirmButtonText`)})===`confirm`&&await O.deleteCredential({id:f.data.id})}function V(){T.openModalWithData({name:P,data:{resource:f.data,resourceType:R.Credential,resourceTypeLabel:A.value}})}return(a,o)=>(t(),y(u(M),{class:p(a.$style.cardLink),onClick:g(L,[`stop`])},{prepend:b(()=>[_(q,{"credential-type-name":j.value?.name??``},null,8,[`credential-type-name`])]),header:b(()=>[_(u(D),{tag:`h2`,bold:``,class:p(a.$style.cardHeading)},{default:b(()=>[n(c(e.data.name)+` `,1),e.readOnly?(t(),y(u(w),{key:0,class:`ml-3xs`,theme:`tertiary`,bold:``},{default:b(()=>[n(c(u(h).baseText(`credentials.item.readonly`)),1)]),_:1})):l(``,!0),e.needsSetup?(t(),y(u(w),{key:1,class:`ml-3xs`,theme:`warning`},{default:b(()=>[n(c(u(h).baseText(`credentials.item.needsSetup`)),1)]),_:1})):l(``,!0),u(te)&&e.data.isResolvable?(t(),y(u(C),{key:2,placement:`top`},{content:b(()=>[r(`div`,{class:p(a.$style.tooltipContent)},[r(`strong`,null,c(u(h).baseText(`credentials.dynamic.tooltipTitle`)),1),r(`span`,null,c(u(h).baseText(`credentials.dynamic.tooltip`)),1)],2)]),default:b(()=>[_(u(w),{theme:`tertiary`,class:`ml-3xs pl-3xs pr-3xs`,"data-test-id":`credential-card-dynamic`},{default:b(()=>[r(`span`,{class:p(a.$style.dynamicBadgeText)},[_(u(E),{icon:`key-round`,size:`medium`}),n(` `+c(u(h).baseText(`credentials.dynamic.badge`)),1)],2)]),_:1})]),_:1})):l(``,!0)]),_:1},8,[`class`])]),append:b(()=>[r(`div`,{class:p(a.$style.cardActions),onClick:o[0]||=g(()=>{},[`stop`])},[ie.value?(t(),y(Y,{key:0,"resource-type":`credential`,"resource-id":e.data.id,source:`credential_card`,"data-test-id":`credential-card-dependents`},null,8,[`resource-id`])):l(``,!0),_(K,{class:p(a.$style.cardBadge),resource:e.data,"resource-type":u(R).Credential,"resource-type-label":A.value,"personal-project":u(k).personalProject,"show-badge-border":!1,global:e.data.isGlobal},null,8,[`class`,`resource`,`resource-type`,`resource-type-label`,`personal-project`,`global`]),_(u(S),{"data-test-id":`credential-card-actions`,actions:F.value,theme:`dark`,onAction:oe},null,8,[`actions`])],2)]),default:b(()=>[r(`div`,{class:p(a.$style.cardDescription)},[_(u(D),{color:`text-light`,size:`small`},{default:b(()=>[j.value?(t(),i(`span`,Se,c(j.value.displayName)+` | `,1)):l(``,!0),m(r(`span`,null,[n(c(u(h).baseText(`credentials.item.updated`))+` `,1),_(J,{date:e.data.updatedAt},null,8,[`date`]),o[1]||=n(` | `,-1)],512),[[v,e.data]]),m(r(`span`,null,c(u(h).baseText(`credentials.item.created`))+` `+c(re.value),513),[[v,e.data]])]),_:1})],2)]),_:1},8,[`class`]))}}),[[`__cssModules`,{$style:{cardLink:`_cardLink_e3ywi_125`,cardHeading:`_cardHeading_e3ywi_135`,cardDescription:`_cardDescription_e3ywi_142`,cardActions:`_cardActions_e3ywi_149`,dynamicBadgeText:`_dynamicBadgeText_e3ywi_160`,tooltipContent:`_tooltipContent_e3ywi_168`,cardBadge:`_cardBadge_e3ywi_184`}}]]),we=e(be(),1),Te={class:`mb-s`},Ee={class:`mb-s`},De={key:0,class:`mb-s`},X=o({__name:`CredentialsView`,props:{credentialId:{}},setup(e){let o=e,m=z(),g=ce(),v=H(),S=V(),C=de(),w=ae(),E=se(),D=pe(),{fetchDependencyCounts:M}=ve(),N=re(),P=k(),I=ne(),R=oe(),G=x(),K=me(),q=e=>{I.replace({query:(0,we.default)(e)})},fe=e=>{q({...J.value,search:e})},J=a({...P.query,setupNeeded:P.query.setupNeeded?.toString()===`true`,...P.query.externalSecretsStore?{externalSecretsStore:P.query.externalSecretsStore.toString()}:{}}),Y=a(!1),be=e=>{let t=e;return t?Object.keys(t).length===0?!0:Object.values(t).every(e=>!e||e===`__n8n_EMPTY_VALUE_7b1af746-3729-4c60-9b9b-e08eb29e58da`):!1},xe=s(()=>m.allCredentials.map(e=>({resourceType:`credential`,id:e.id,name:e.name,value:``,updatedAt:e.updatedAt,createdAt:e.createdAt,homeProject:e.homeProject,scopes:e.scopes,sharedWithProjects:e.sharedWithProjects,readOnly:!U(e.scopes).credential.update,needsSetup:be(e.data),isGlobal:e.isGlobal,isResolvable:e.isResolvable,type:e.type}))),Se=s(()=>m.allCredentialTypes),X=s(()=>m.credentialTypesById),Z=s(()=>S.preferences.branchReadOnly),Q=s(()=>U(w.currentProject?.scopes??w.personalProject?.scopes)),Oe=s(()=>w.personalProject),ke=s(()=>!!P.query.externalSecretsStore&&C.isEnterpriseExternalSecretsEnabled),Ae=e=>{I.replace({params:{credentialId:e},query:P.query})},je=()=>{Ae(`create`),R.track(`User clicked add cred button`,{source:`Creds list`})};B({store:v,onModalClosed(e){[`selectCredential`,`editCredential`].includes(e)&&I.replace({params:{credentialId:``},query:P.query})}});let Me=(e,t,n)=>{if(!F(e))return!1;let r=t;if(r.type&&r.type.length>0&&(n&&=r.type.includes(e.type)),r.search){let t=r.search.toLowerCase();n||=X.value[e.type]&&X.value[e.type].displayName.toLowerCase().includes(t)}return r.setupNeeded&&(n&&=e.needsSetup),n},Ne=()=>{o.credentialId===`create`&&(Q.value.credential.create?v.openModal(ie):I.replace({name:W.HOMEPAGE}))},Pe=async()=>{if(o.credentialId&&o.credentialId!==`create`){let e=m.getCredentialById(o.credentialId),t=U(e?.scopes).credential;if(!e)return await I.replace({name:W.ENTITY_NOT_FOUND,params:{entityType:`credential`}});if(t.update||t.read){v.openExistingCredential(o.credentialId);return}return await I.replace({name:W.ENTITY_UNAUTHORIZED,params:{entityType:`credential`}})}},$=async()=>{Y.value=!0;let e=ue().isEnterpriseFeatureEnabled[le.Variables],t=!K.isSharedSubPage&&K.isProjectsSubPage&&P?.params?.projectId===w.personalProject?.id,n=[m.fetchAllCredentials({projectId:P?.params?.projectId,includeScopes:!0,onlySharedWithMe:K.isSharedSubPage,includeGlobal:!t,externalSecretsStore:J.value.externalSecretsStore}),m.fetchCredentialTypes(!1),g.loadNodeTypesIfNotLoaded(),e?L().fetchAllVariables():Promise.resolve()];await Promise.all(n),Ne(),await Pe(),Y.value=!1,M(m.allCredentials.map(e=>e.id),`credential`)};return m.$onAction(({name:e,after:t})=>{(e===`createNewCredential`||e===`updateCredential`)&&t(()=>{m.fetchAllCredentials({projectId:P?.params?.projectId,includeScopes:!0,externalSecretsStore:J.value.externalSecretsStore})})}),S.$onAction(({name:e,after:t})=>{e===`pullWorkfolder`&&t(()=>{$()})}),h(()=>P?.params?.projectId,$),h(()=>o.credentialId,()=>{Ne(),Pe()}),h(()=>J.value.externalSecretsStore,async(e,t)=>{e!==t&&(e!==void 0||t!==void 0)&&$()}),d(()=>{N.set(G.baseText(`credentials.heading`))}),(e,a)=>(t(),y(ge,{ref:`layout`,filters:J.value,"onUpdate:filters":[a[0]||=e=>J.value=e,q],"resource-key":`credentials`,resources:xe.value,initialize:$,"additional-filters-handler":Me,"type-props":{itemSize:77},loading:Y.value,disabled:Z.value||!Q.value.credential.create,"onUpdate:search":fe},{header:b(()=>[_(_e,{"main-button":`credential`},{default:b(()=>[u(K).isOverviewSubPage&&u(D).isSummaryEnabled?(t(),y(ye,{key:0,loading:u(D).weeklySummary.isLoading,summary:u(D).weeklySummary.state,"time-range":`week`},null,8,[`loading`,`summary`])):l(``,!0)]),_:1})]),default:b(({data:e})=>[_(Ce,{"data-test-id":`resources-list-item`,class:`mb-2xs`,data:e,"read-only":e.readOnly,"needs-setup":e.needsSetup,onClick:Ae},null,8,[`data`,`read-only`,`needs-setup`])]),filters:b(({setKeyValue:n})=>[r(`div`,Te,[_(u(A),{label:u(G).baseText(`credentials.filters.type`),bold:!1,size:`small`,color:`text-base`,class:`mb-3xs`},null,8,[`label`]),_(u(O),{ref:`typeInput`,"model-value":J.value.type,size:`medium`,multiple:``,filterable:``,class:p(e.$style[`type-input`]),"onUpdate:modelValue":e=>n(`type`,e)},{default:b(()=>[(t(!0),i(f,null,ee(Se.value,e=>(t(),y(u(j),{key:e.name,value:e.name,label:e.displayName},null,8,[`value`,`label`]))),128))]),_:1},8,[`model-value`,`class`,`onUpdate:modelValue`])]),r(`div`,Ee,[_(u(A),{label:u(G).baseText(`credentials.filters.status`),bold:!1,size:`small`,color:`text-base`,class:`mb-3xs`},null,8,[`label`]),_(u(te),{label:u(G).baseText(`credentials.filters.setup`),"data-test-id":`credential-filter-setup-needed`,"model-value":J.value.setupNeeded,"onUpdate:modelValue":e=>n(`setupNeeded`,e)},null,8,[`label`,`model-value`,`onUpdate:modelValue`])]),ke.value&&J.value.externalSecretsStore?(t(),i(`div`,De,[_(u(A),{label:u(G).baseText(`credentials.filters.secretStore`),bold:!1,size:`small`,color:`text-base`,class:`mb-3xs`},null,8,[`label`]),_(u(O),{"model-value":J.value.externalSecretsStore,size:`medium`,disabled:``,"data-test-id":`credential-filter-secret-store`,class:p(e.$style[`type-input`])},{default:b(()=>[_(u(j),{value:J.value.externalSecretsStore,label:J.value.externalSecretsStore},null,8,[`value`,`label`])]),_:1},8,[`model-value`,`class`])])):l(``,!0)]),empty:b(()=>[u(K).isSharedSubPage&&Oe.value?(t(),y(he,{key:0,"personal-project":Oe.value,"resource-type":`credentials`},null,8,[`personal-project`])):(t(),y(u(T),{key:1,"data-test-id":`empty-resources-list`,icon:{type:`icon`,value:`lock`},heading:u(G).baseText(u(E).currentUser?.firstName?`credentials.empty.heading`:`credentials.empty.heading.userNotSetup`,{interpolate:{name:u(E).currentUser?.firstName??``}}),description:u(G).baseText(`credentials.empty.description`),"button-text":u(G).baseText(`credentials.empty.button`),"button-type":`secondary`,"button-disabled":Z.value||!Q.value.credential.create,"button-icon":Z.value||!Q.value.credential.create?`lock`:void 0,"onClick:button":je},{disabledButtonTooltip:b(()=>[n(c(Z.value?u(G).baseText(`readOnlyEnv.cantAdd.credential`):u(G).baseText(`credentials.empty.button.disabled.tooltip`)),1)]),_:1},8,[`heading`,`description`,`button-text`,`button-disabled`,`button-icon`]))]),_:1},8,[`filters`,`resources`,`loading`,`disabled`]))}}),Z=`_sidebarContainer_12nwp_129`,Q=N(X,[[`__cssModules`,{$style:{"type-input":`_type-input_12nwp_125`,sidebarContainer:Z}}]]);export{Q as default}; //# sourceMappingURL=CredentialsView-esUSXHAP.js.map