n8n-editor-ui 1.45.0 → 1.45.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +75 -75
- package/dist/assets/{AuthView-sBgr4ab5.js → AuthView-Bpw90ooz.js} +2 -2
- package/dist/assets/{AuthView-sBgr4ab5.js.map → AuthView-Bpw90ooz.js.map} +1 -1
- package/dist/assets/{CanvasControls-WQFq3IW7.js → CanvasControls-CQPytmej.js} +2 -2
- package/dist/assets/{CanvasControls-WQFq3IW7.js.map → CanvasControls-CQPytmej.js.map} +1 -1
- package/dist/assets/{ChangePasswordView-RoWelfJE.js → ChangePasswordView-tMFb4WIn.js} +2 -2
- package/dist/assets/{ChangePasswordView-RoWelfJE.js.map → ChangePasswordView-tMFb4WIn.js.map} +1 -1
- package/dist/assets/{CollectionParameter-o9-pyF-D.js → CollectionParameter-CwgJAh2M.js} +2 -2
- package/dist/assets/CollectionParameter-CwgJAh2M.js.map +1 -0
- package/dist/assets/{CredentialsView-loSi714I.js → CredentialsView-lvIyWvdA.js} +2 -2
- package/dist/assets/{CredentialsView-loSi714I.js.map → CredentialsView-lvIyWvdA.js.map} +1 -1
- package/dist/assets/{ExecutionsFilter-BwFUjELc.js → ExecutionsFilter-BSWo4-vK.js} +2 -2
- package/dist/assets/{ExecutionsFilter-BwFUjELc.js.map → ExecutionsFilter-BSWo4-vK.js.map} +1 -1
- package/dist/assets/{ExecutionsView-ClvBwy6K.js → ExecutionsView-Bztejjur.js} +2 -2
- package/dist/assets/{ExecutionsView-ClvBwy6K.js.map → ExecutionsView-Bztejjur.js.map} +1 -1
- package/dist/assets/{ForgotMyPasswordView-Da9ejE05.js → ForgotMyPasswordView-n_x-L3AV.js} +2 -2
- package/dist/assets/{ForgotMyPasswordView-Da9ejE05.js.map → ForgotMyPasswordView-n_x-L3AV.js.map} +1 -1
- package/dist/assets/{MainHeader-DCqd1GFf.js → MainHeader-P2afzgJI.js} +2 -2
- package/dist/assets/{MainHeader-DCqd1GFf.js.map → MainHeader-P2afzgJI.js.map} +1 -1
- package/dist/assets/{MainSidebar-D0hPq1hI.js → MainSidebar-CAwsaKp9.js} +2 -2
- package/dist/assets/{MainSidebar-D0hPq1hI.js.map → MainSidebar-CAwsaKp9.js.map} +1 -1
- package/dist/assets/{NodeCreation-Dv1vHhp7.js → NodeCreation-DHuCOx3T.js} +3 -3
- package/dist/assets/{NodeCreation-Dv1vHhp7.js.map → NodeCreation-DHuCOx3T.js.map} +1 -1
- package/dist/assets/{NodeCreator-CTyp0oWz.js → NodeCreator-CRVECYnB.js} +2 -2
- package/dist/assets/{NodeCreator-CTyp0oWz.js.map → NodeCreator-CRVECYnB.js.map} +1 -1
- package/dist/assets/{NodeView-D7js-jl0.js → NodeView-_cMwqhWw.js} +4 -4
- package/dist/assets/{NodeView-D7js-jl0.js.map → NodeView-_cMwqhWw.js.map} +1 -1
- package/dist/assets/{NodeView.v2-Db0N2ZpD.js → NodeView.v2-B5Hn0oJ1.js} +3 -3
- package/dist/assets/{NodeView.v2-Db0N2ZpD.js.map → NodeView.v2-B5Hn0oJ1.js.map} +1 -1
- package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-kI8CSFPH.js → ProjectCardBadge.vue_vue_type_script_setup_true_lang-BzALVLd6.js} +2 -2
- package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-kI8CSFPH.js.map → ProjectCardBadge.vue_vue_type_script_setup_true_lang-BzALVLd6.js.map} +1 -1
- package/dist/assets/{ProjectSettings-DV97_QgF.js → ProjectSettings-D3HQdHi6.js} +2 -2
- package/dist/assets/{ProjectSettings-DV97_QgF.js.map → ProjectSettings-D3HQdHi6.js.map} +1 -1
- package/dist/assets/{ProjectTabs-BiGImjZC.js → ProjectTabs-BjpVZIIc.js} +2 -2
- package/dist/assets/{ProjectTabs-BiGImjZC.js.map → ProjectTabs-BjpVZIIc.js.map} +1 -1
- package/dist/assets/{PushConnectionTracker-DzVbTLAw.js → PushConnectionTracker-Dt9-l7zj.js} +2 -2
- package/dist/assets/{PushConnectionTracker-DzVbTLAw.js.map → PushConnectionTracker-Dt9-l7zj.js.map} +1 -1
- package/dist/assets/{ResourcesListLayout-__5Cg0A9.js → ResourcesListLayout-CjzGJ-eS.js} +2 -2
- package/dist/assets/{ResourcesListLayout-__5Cg0A9.js.map → ResourcesListLayout-CjzGJ-eS.js.map} +1 -1
- package/dist/assets/{RunDataAi-BbEWhRis.js → RunDataAi-D3971Kwm.js} +2 -2
- package/dist/assets/{RunDataAi-BbEWhRis.js.map → RunDataAi-D3971Kwm.js.map} +1 -1
- package/dist/assets/{RunDataJson-7eRqOET2.js → RunDataJson-BLrjtyKU.js} +3 -3
- package/dist/assets/{RunDataJson-7eRqOET2.js.map → RunDataJson-BLrjtyKU.js.map} +1 -1
- package/dist/assets/{RunDataJsonActions-MHoSLGDw.js → RunDataJsonActions-CucOcrrR.js} +2 -2
- package/dist/assets/{RunDataJsonActions-MHoSLGDw.js.map → RunDataJsonActions-CucOcrrR.js.map} +1 -1
- package/dist/assets/{RunDataSchema-C2mrihIi.js → RunDataSchema-B-52gDNr.js} +2 -2
- package/dist/assets/{RunDataSchema-C2mrihIi.js.map → RunDataSchema-B-52gDNr.js.map} +1 -1
- package/dist/assets/{RunDataSearch-CzdgZA0H.js → RunDataSearch-ZA9rLECQ.js} +2 -2
- package/dist/assets/{RunDataSearch-CzdgZA0H.js.map → RunDataSearch-ZA9rLECQ.js.map} +1 -1
- package/dist/assets/{RunDataTable-DmxJXvGM.js → RunDataTable-DQx4IB1X.js} +2 -2
- package/dist/assets/{RunDataTable-DmxJXvGM.js.map → RunDataTable-DQx4IB1X.js.map} +1 -1
- package/dist/assets/{SamlOnboarding-c0vvdXcj.js → SamlOnboarding-DS2hMTul.js} +2 -2
- package/dist/assets/{SamlOnboarding-c0vvdXcj.js.map → SamlOnboarding-DS2hMTul.js.map} +1 -1
- package/dist/assets/{SettingsApiView-BSPOTc-1.js → SettingsApiView-BEBQwqa4.js} +2 -2
- package/dist/assets/{SettingsApiView-BSPOTc-1.js.map → SettingsApiView-BEBQwqa4.js.map} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-3uiMscEF.js → SettingsCommunityNodesView-Zb5NN5TR.js} +2 -2
- package/dist/assets/{SettingsCommunityNodesView-3uiMscEF.js.map → SettingsCommunityNodesView-Zb5NN5TR.js.map} +1 -1
- package/dist/assets/{SettingsExternalSecrets-C5fphQOi.js → SettingsExternalSecrets-BrQz9Rn5.js} +2 -2
- package/dist/assets/{SettingsExternalSecrets-C5fphQOi.js.map → SettingsExternalSecrets-BrQz9Rn5.js.map} +1 -1
- package/dist/assets/{SettingsFakeDoorView-Df4Rs6o0.js → SettingsFakeDoorView-BEtA0RJZ.js} +2 -2
- package/dist/assets/{SettingsFakeDoorView-Df4Rs6o0.js.map → SettingsFakeDoorView-BEtA0RJZ.js.map} +1 -1
- package/dist/assets/{SettingsLdapView-C4lLeRwF.js → SettingsLdapView-BCqjlrE9.js} +2 -2
- package/dist/assets/{SettingsLdapView-C4lLeRwF.js.map → SettingsLdapView-BCqjlrE9.js.map} +1 -1
- package/dist/assets/{SettingsLogStreamingView-bLlhacNh.js → SettingsLogStreamingView-B3vDd25l.js} +2 -2
- package/dist/assets/{SettingsLogStreamingView-bLlhacNh.js.map → SettingsLogStreamingView-B3vDd25l.js.map} +1 -1
- package/dist/assets/{SettingsPersonalView-BgQQgYy0.js → SettingsPersonalView-BxS-VIeh.js} +2 -2
- package/dist/assets/{SettingsPersonalView-BgQQgYy0.js.map → SettingsPersonalView-BxS-VIeh.js.map} +1 -1
- package/dist/assets/{SettingsSourceControl-C2BP11mH.js → SettingsSourceControl-BBk56DIZ.js} +2 -2
- package/dist/assets/{SettingsSourceControl-C2BP11mH.js.map → SettingsSourceControl-BBk56DIZ.js.map} +1 -1
- package/dist/assets/{SettingsSso-CK7JB3Vy.js → SettingsSso-c-njHRi9.js} +2 -2
- package/dist/assets/{SettingsSso-CK7JB3Vy.js.map → SettingsSso-c-njHRi9.js.map} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-Cwa-TbVs.js → SettingsUsageAndPlan-DEnejDAt.js} +2 -2
- package/dist/assets/{SettingsUsageAndPlan-Cwa-TbVs.js.map → SettingsUsageAndPlan-DEnejDAt.js.map} +1 -1
- package/dist/assets/{SettingsUsersView-CbWtmro6.js → SettingsUsersView-CGkw80Ef.js} +2 -2
- package/dist/assets/{SettingsUsersView-CbWtmro6.js.map → SettingsUsersView-CGkw80Ef.js.map} +1 -1
- package/dist/assets/{SettingsView-Big9eFwZ.js → SettingsView-DGukO3mQ.js} +2 -2
- package/dist/assets/{SettingsView-Big9eFwZ.js.map → SettingsView-DGukO3mQ.js.map} +1 -1
- package/dist/assets/{SetupView-fjlw9brZ.js → SetupView-kY1bAskX.js} +2 -2
- package/dist/assets/{SetupView-fjlw9brZ.js.map → SetupView-kY1bAskX.js.map} +1 -1
- package/dist/assets/{SetupWorkflowCredentialsButton-Q123cR2R.js → SetupWorkflowCredentialsButton-DkvMQv2u.js} +2 -2
- package/dist/assets/{SetupWorkflowCredentialsButton-Q123cR2R.js.map → SetupWorkflowCredentialsButton-DkvMQv2u.js.map} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-BcaIdEbq.js → SetupWorkflowFromTemplateView-M7-z0Ko5.js} +2 -2
- package/dist/assets/{SetupWorkflowFromTemplateView-BcaIdEbq.js.map → SetupWorkflowFromTemplateView-M7-z0Ko5.js.map} +1 -1
- package/dist/assets/{SigninView-BqRZRDIW.js → SigninView-CsK0r98m.js} +2 -2
- package/dist/assets/{SigninView-BqRZRDIW.js.map → SigninView-CsK0r98m.js.map} +1 -1
- package/dist/assets/{SignoutView-Ds-XMHbB.js → SignoutView-BST1uR2G.js} +2 -2
- package/dist/assets/{SignoutView-Ds-XMHbB.js.map → SignoutView-BST1uR2G.js.map} +1 -1
- package/dist/assets/{SignupView-Du4cZWtz.js → SignupView-BKYxxBni.js} +2 -2
- package/dist/assets/{SignupView-Du4cZWtz.js.map → SignupView-BKYxxBni.js.map} +1 -1
- package/dist/assets/{TemplateDetails-DYa2o-Sg.js → TemplateDetails-D0r_U1xF.js} +2 -2
- package/dist/assets/{TemplateDetails-DYa2o-Sg.js.map → TemplateDetails-D0r_U1xF.js.map} +1 -1
- package/dist/assets/{TemplateList-BMaBMl6x.js → TemplateList-CDA5KNLL.js} +2 -2
- package/dist/assets/{TemplateList-BMaBMl6x.js.map → TemplateList-CDA5KNLL.js.map} +1 -1
- package/dist/assets/{TemplatesCollectionView-g5_48W2g.js → TemplatesCollectionView-Sd-VkM2v.js} +2 -2
- package/dist/assets/{TemplatesCollectionView-g5_48W2g.js.map → TemplatesCollectionView-Sd-VkM2v.js.map} +1 -1
- package/dist/assets/{TemplatesSearchView-CUEpPGLS.js → TemplatesSearchView-H6B_YHdj.js} +2 -2
- package/dist/assets/{TemplatesSearchView-CUEpPGLS.js.map → TemplatesSearchView-H6B_YHdj.js.map} +1 -1
- package/dist/assets/{TemplatesView-Dt7Yj05N.js → TemplatesView-C1e1VOA1.js} +2 -2
- package/dist/assets/{TemplatesView-Dt7Yj05N.js.map → TemplatesView-C1e1VOA1.js.map} +1 -1
- package/dist/assets/{TemplatesWorkflowView-NUQng_ec.js → TemplatesWorkflowView-EDlr8NNs.js} +2 -2
- package/dist/assets/{TemplatesWorkflowView-NUQng_ec.js.map → TemplatesWorkflowView-EDlr8NNs.js.map} +1 -1
- package/dist/assets/{VariablesView-CNbX7qiw.js → VariablesView-uUyY5gqA.js} +2 -2
- package/dist/assets/{VariablesView-CNbX7qiw.js.map → VariablesView-uUyY5gqA.js.map} +1 -1
- package/dist/assets/{WorkerView-6sYjvVRB.js → WorkerView-f9W1Yivk.js} +2 -2
- package/dist/assets/{WorkerView-6sYjvVRB.js.map → WorkerView-f9W1Yivk.js.map} +1 -1
- package/dist/assets/{WorkflowActivator-BofJdorM.js → WorkflowActivator-Bh0oXchL.js} +2 -2
- package/dist/assets/{WorkflowActivator-BofJdorM.js.map → WorkflowActivator-Bh0oXchL.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsInfoAccordion-QgKEaHPH.js → WorkflowExecutionsInfoAccordion-DvgpWxaO.js} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-QgKEaHPH.js.map → WorkflowExecutionsInfoAccordion-DvgpWxaO.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-C8PoBPw1.js → WorkflowExecutionsLandingPage-DiqNejyi.js} +2 -2
- package/dist/assets/{WorkflowExecutionsLandingPage-C8PoBPw1.js.map → WorkflowExecutionsLandingPage-DiqNejyi.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsPreview-DXRMfRl4.js → WorkflowExecutionsPreview-BJqdf9CJ.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-DXRMfRl4.js.map → WorkflowExecutionsPreview-BJqdf9CJ.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsView-BFIJLItj.js → WorkflowExecutionsView-CY5alI5S.js} +2 -2
- package/dist/assets/{WorkflowExecutionsView-BFIJLItj.js.map → WorkflowExecutionsView-CY5alI5S.js.map} +1 -1
- package/dist/assets/{WorkflowHistory-DrJO6HE6.js → WorkflowHistory-BCAvzdJ2.js} +2 -2
- package/dist/assets/{WorkflowHistory-DrJO6HE6.js.map → WorkflowHistory-BCAvzdJ2.js.map} +1 -1
- package/dist/assets/{WorkflowOnboardingView-CWudc9OX.js → WorkflowOnboardingView-CZaNfPmP.js} +2 -2
- package/dist/assets/{WorkflowOnboardingView-CWudc9OX.js.map → WorkflowOnboardingView-CZaNfPmP.js.map} +1 -1
- package/dist/assets/{WorkflowPreview-CP6H-zD6.js → WorkflowPreview-CLfcNQ-Q.js} +2 -2
- package/dist/assets/{WorkflowPreview-CP6H-zD6.js.map → WorkflowPreview-CLfcNQ-Q.js.map} +1 -1
- package/dist/assets/{WorkflowsView-B8hr4JdS.js → WorkflowsView-BMDRVCFf.js} +2 -2
- package/dist/assets/{WorkflowsView-B8hr4JdS.js.map → WorkflowsView-BMDRVCFf.js.map} +1 -1
- package/dist/assets/{cloud-Nipuweza.js → cloud-D1wkxTEm.js} +2 -2
- package/dist/assets/{cloud-Nipuweza.js.map → cloud-D1wkxTEm.js.map} +1 -1
- package/dist/assets/{collaboration.store-CeJXF3gO.js → collaboration.store-zz8xH0zY.js} +2 -2
- package/dist/assets/{collaboration.store-CeJXF3gO.js.map → collaboration.store-zz8xH0zY.js.map} +1 -1
- package/dist/assets/{index-DeNtBxiT.js → index-DEwaaDne.js} +4 -4
- package/dist/assets/{index-DeNtBxiT.js.map → index-DEwaaDne.js.map} +1 -1
- package/dist/assets/{nodeCreator.store-D1MAzn2w.js → nodeCreator.store-DR3dfsvW.js} +2 -2
- package/dist/assets/{nodeCreator.store-D1MAzn2w.js.map → nodeCreator.store-DR3dfsvW.js.map} +1 -1
- package/dist/assets/{templateActions-DLB6SLyS.js → templateActions-DTyOnhvj.js} +2 -2
- package/dist/assets/{templateActions-DLB6SLyS.js.map → templateActions-DTyOnhvj.js.map} +1 -1
- package/dist/assets/{useExecutionDebugging-B_eoI-oc.js → useExecutionDebugging-vMuoV-iO.js} +2 -2
- package/dist/assets/{useExecutionDebugging-B_eoI-oc.js.map → useExecutionDebugging-vMuoV-iO.js.map} +1 -1
- package/dist/assets/{useExecutionHelpers-BAwOWjv8.js → useExecutionHelpers-C0lzavRV.js} +2 -2
- package/dist/assets/{useExecutionHelpers-BAwOWjv8.js.map → useExecutionHelpers-C0lzavRV.js.map} +1 -1
- package/dist/assets/{usePushConnection-1-1myIro.js → usePushConnection-3xfZ5wSJ.js} +2 -2
- package/dist/assets/{usePushConnection-1-1myIro.js.map → usePushConnection-3xfZ5wSJ.js.map} +1 -1
- package/dist/assets/{useViewStacks-D8rg90P0.js → useViewStacks-BSagsijV.js} +2 -2
- package/dist/assets/{useViewStacks-D8rg90P0.js.map → useViewStacks-BSagsijV.js.map} +1 -1
- package/dist/assets/{useWorkflowActivate-DrsL0BLR.js → useWorkflowActivate-BLjS7M0I.js} +2 -2
- package/dist/assets/{useWorkflowActivate-DrsL0BLR.js.map → useWorkflowActivate-BLjS7M0I.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-o9-pyF-D.js.map +0 -1
package/dist/assets/{SettingsLogStreamingView-bLlhacNh.js → SettingsLogStreamingView-B3vDd25l.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{m as A}from"./pinia-BAhPp3pQ.js";import{G as V,E as M,cQ as O,z as R,ar as x,i as F,j,b as K,r as G,cR as N}from"./index-DeNtBxiT.js";import{h as D,a2 as T,_ as I,b as q}from"./n8n-B6cfQsVX.js";import{G as W,l as o,M as g,O as i,p as s,U as r,S,T as m,I as c,ag as a,n as Q,m as l,F as v,R as _,a7 as Y}from"./vendor-Dv5OeN6t.js";import{v as J}from"./uuid-SoommWqA.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const y={OPEN:"open",DELETE:"delete"},X=W({components:{},setup(){return{...V()}},data(){return{EnterpriseEditionFeature:M,nodeParameters:{}}},props:{eventBus:{type:Object},destination:{type:Object,required:!0,default:D(T)},readonly:Boolean},mounted(){var e;this.nodeParameters=Object.assign(D(T),this.destination),(e=this.eventBus)==null||e.on("destinationWasSaved",this.onDestinationWasSaved)},beforeUnmount(){var e;(e=this.eventBus)==null||e.off("destinationWasSaved",this.onDestinationWasSaved)},computed:{...A(O),actions(){const e=[{label:this.$locale.baseText("workflows.item.open"),value:y.OPEN}];return this.readonly||e.push({label:this.$locale.baseText("workflows.item.delete"),value:y.DELETE}),e},typeLabelName(){return`settings.log-streaming.${this.destination.__type}`}},methods:{onDestinationWasSaved(){this.logStreamingStore.getDestination(this.destination.id)&&(this.nodeParameters=Object.assign(D(T),this.destination))},async onClick(e){const t=this.$refs.cardActions,n=e.target;t===n||t!=null&&t.contains(n)||n!=null&&n.contains(t)||this.$emit("edit",this.destination.id)},onEnabledSwitched(e){this.nodeParameters.enabled=e,this.saveDestination()},async saveDestination(){await this.logStreamingStore.saveDestination(this.nodeParameters)},async onAction(e){if(e===y.OPEN)this.$emit("edit",this.destination.id);else if(e===y.DELETE){if(await this.confirm(this.$locale.baseText("settings.log-streaming.destinationDelete.message",{interpolate:{destinationName:this.destination.label}}),this.$locale.baseText("settings.log-streaming.destinationDelete.headline"),{type:"warning",confirmButtonText:this.$locale.baseText("settings.log-streaming.destinationDelete.confirmButtonText"),cancelButtonText:this.$locale.baseText("settings.log-streaming.destinationDelete.cancelButtonText")})!==R)return;this.$emit("remove",this.destination.id)}}}}),Z="_cardLink_r6102_1",ee="_activeStatusText_r6102_11",te="_cardHeading_r6102_19",ne="_cardDescription_r6102_25",se="_cardActions_r6102_32",oe={cardLink:Z,activeStatusText:ee,cardHeading:te,cardDescription:ne,cardActions:se};function ie(e,t,n,u,H,P){const $=a("n8n-heading"),h=a("n8n-text"),b=a("el-switch"),k=a("n8n-action-toggle"),w=a("n8n-card");return o(),g(w,{class:c(e.$style.cardLink),"data-test-id":"destination-card",onClick:e.onClick},{header:i(()=>[s("div",null,[r($,{tag:"h2",bold:"",class:c(e.$style.cardHeading)},{default:i(()=>[S(m(e.destination.label),1)]),_:1},8,["class"]),s("div",{class:c(e.$style.cardDescription)},[r(h,{color:"text-light",size:"small"},{default:i(()=>[s("span",null,m(e.$locale.baseText(e.typeLabelName)),1)]),_:1})],2)])]),append:i(()=>[s("div",{ref:"cardActions",class:c(e.$style.cardActions)},[s("div",{class:c(e.$style.activeStatusText),"data-test-id":"destination-activator-status"},[e.nodeParameters.enabled?(o(),g(h,{key:0,color:"success",size:"small",bold:""},{default:i(()=>[S(m(e.$locale.baseText("workflowActivator.active")),1)]),_:1})):(o(),g(h,{key:1,color:"text-base",size:"small",bold:""},{default:i(()=>[S(m(e.$locale.baseText("workflowActivator.inactive")),1)]),_:1}))],2),r(b,{class:"mr-s",disabled:e.readonly,"model-value":e.nodeParameters.enabled,title:e.nodeParameters.enabled?e.$locale.baseText("workflowActivator.deactivateWorkflow"):e.$locale.baseText("workflowActivator.activateWorkflow"),"active-color":"#13ce66","inactive-color":"#8899AA","data-test-id":"workflow-activate-switch","onUpdate:modelValue":t[0]||(t[0]=L=>e.onEnabledSwitched(L))},null,8,["disabled","model-value","title"]),r(k,{actions:e.actions,theme:"dark",onAction:e.onAction},null,8,["actions","onAction"])],2)]),_:1},8,["class","onClick"])}const ae={$style:oe},re=I(X,[["render",ie],["__cssModules",ae]]),le=W({name:"SettingsLogStreamingView",components:{EventDestinationCard:re},props:{},data(){return{eventBus:q(),destinations:Array,disableLicense:!1,allDestinations:[]}},async mounted(){this.isLicensed&&(await this.credentialsStore.fetchCredentialTypes(!1),await this.credentialsStore.fetchAllCredentials(),this.uiStore.nodeViewInitialized=!1,await this.getDestinationDataFromBackend(),this.logStreamingStore.$onAction(({name:e,after:t})=>{(e==="removeDestination"||e==="updateDestination")&&t(async()=>{this.$forceUpdate()})}),this.eventBus.on("destinationWasSaved",this.onDestinationWasSaved),this.eventBus.on("remove",this.onRemove),this.eventBus.on("closing",this.onBusClosing))},beforeUnmount(){this.eventBus.off("destinationWasSaved",this.onDestinationWasSaved),this.eventBus.off("remove",this.onRemove),this.eventBus.off("closing",this.onBusClosing)},computed:{...A(K,O,j,F,x),sortedItemKeysByLabel(){var t;const e=[];for(const[n,u]of Object.entries(this.logStreamingStore.items))e.push({key:n,label:((t=u.destination)==null?void 0:t.label)??"Destination"});return e.sort((n,u)=>n.label.localeCompare(u.label))},environment(){return"production"},isLicensed(){return this.disableLicense?!1:this.settingsStore.isEnterpriseFeatureEnabled(M.LogStreaming)},canManageLogStreaming(){return G(["rbac"],{rbac:{scope:"logStreaming:manage"}})}},methods:{onDestinationWasSaved(){this.$forceUpdate()},onBusClosing(){this.workflowsStore.removeAllNodes({setStateDirty:!1,removePinData:!0}),this.uiStore.stateIsDirty=!1},async getDestinationDataFromBackend(){this.logStreamingStore.clearEventNames(),this.logStreamingStore.clearDestinationItemTrees(),this.allDestinations=[];const e=await this.logStreamingStore.fetchEventNames();if(e)for(const n of e)this.logStreamingStore.addEventName(n);const t=await this.logStreamingStore.fetchDestinations();if(t)for(const n of t)this.logStreamingStore.addDestination(n),this.allDestinations.push(n);this.$forceUpdate()},goToUpgrade(){this.uiStore.goToUpgrade("log-streaming","upgrade-log-streaming")},storeHasItems(){return this.logStreamingStore.items&&Object.keys(this.logStreamingStore.items).length>0},async addDestination(){const e=D(T);e.id=J(),this.logStreamingStore.addDestination(e),await Q(),this.uiStore.openModalWithData({name:N,data:{destination:e,isNew:!0,eventBus:this.eventBus}})},async onRemove(e){if(!e)return;await this.logStreamingStore.deleteDestination(e);const t=this.workflowsStore.getNodeByName(e);t&&this.workflowsStore.removeNode(t)},async onEdit(e){if(!e)return;const t=this.logStreamingStore.getDestination(e);t&&this.uiStore.openModalWithData({name:N,data:{destination:t,isNew:!1,eventBus:this.eventBus}})}}}),de="_header_brzxt_1",ce="_destinationItem_brzxt_11",me={header:de,destinationItem:ce},ge={class:"mb-2xl"},ue={class:"ml-m"},he={class:"mb-l"},pe=["innerHTML"],fe={class:"mt-m text-right"},ve={key:1,"data-test-id":"action-box-licensed"},Se=["innerHTML"],be={key:0,class:"mb-l"},_e=["innerHTML"],ye={"data-test-id":"action-box-unlicensed"},De=["innerHTML"];function Te(e,t,n,u,H,P){const $=a("n8n-heading"),h=a("el-switch"),b=a("n8n-info-tip"),k=a("EventDestinationCard"),w=a("el-col"),L=a("el-row"),U=a("n8n-button"),B=a("n8n-action-box");return o(),l("div",null,[s("div",{class:c(e.$style.header)},[s("div",ge,[r($,{size:"2xlarge"},{default:i(()=>[S(m(e.$locale.baseText("settings.log-streaming.heading")),1)]),_:1}),e.environment!=="production"?(o(),l(v,{key:0},[s("strong",ue,"Disable License ("+m(e.environment)+") ",1),r(h,{modelValue:e.disableLicense,"onUpdate:modelValue":t[0]||(t[0]=d=>e.disableLicense=d),size:"large","data-test-id":"disable-license-toggle"},null,8,["modelValue"])],64)):_("",!0)])],2),e.isLicensed?(o(),l(v,{key:0},[s("div",he,[r(b,{theme:"info",type:"note"},{default:i(()=>[s("span",{innerHTML:e.$locale.baseText("settings.log-streaming.infoText")},null,8,pe)]),_:1})]),e.storeHasItems()?(o(),l(v,{key:0},[(o(!0),l(v,null,Y(e.sortedItemKeysByLabel,d=>(o(),g(L,{key:d.key,gutter:10,class:c(e.$style.destinationItem)},{default:i(()=>{var E;return[(E=e.logStreamingStore.items[d.key])!=null&&E.destination?(o(),g(w,{key:0},{default:i(()=>{var C;return[r(k,{destination:(C=e.logStreamingStore.items[d.key])==null?void 0:C.destination,"event-bus":e.eventBus,readonly:!e.canManageLogStreaming,onRemove:z=>{var p,f;return e.onRemove((f=(p=e.logStreamingStore.items[d.key])==null?void 0:p.destination)==null?void 0:f.id)},onEdit:z=>{var p,f;return e.onEdit((f=(p=e.logStreamingStore.items[d.key])==null?void 0:p.destination)==null?void 0:f.id)}},null,8,["destination","event-bus","readonly","onRemove","onEdit"])]}),_:2},1024)):_("",!0)]}),_:2},1032,["class"]))),128)),s("div",fe,[e.canManageLogStreaming?(o(),g(U,{key:0,size:"large",onClick:e.addDestination},{default:i(()=>[S(m(e.$locale.baseText("settings.log-streaming.add")),1)]),_:1},8,["onClick"])):_("",!0)])],64)):(o(),l("div",ve,[r(B,{"button-text":e.$locale.baseText("settings.log-streaming.add"),"onClick:button":e.addDestination},{heading:i(()=>[s("span",{innerHTML:e.$locale.baseText("settings.log-streaming.addFirstTitle")},null,8,Se)]),_:1},8,["button-text","onClick:button"])]))],64)):(o(),l(v,{key:1},[e.$locale.baseText("settings.log-streaming.infoText")?(o(),l("div",be,[r(b,{theme:"info",type:"note"},{default:i(()=>[s("span",{innerHTML:e.$locale.baseText("settings.log-streaming.infoText")},null,8,_e)]),_:1})])):_("",!0),s("div",ye,[r(B,{description:e.$locale.baseText("settings.log-streaming.actionBox.description"),"button-text":e.$locale.baseText("settings.log-streaming.actionBox.button"),"onClick:button":e.goToUpgrade},{heading:i(()=>[s("span",{innerHTML:e.$locale.baseText("settings.log-streaming.actionBox.title")},null,8,De)]),_:1},8,["description","button-text","onClick:button"])])],64))])}const $e={$style:me},et=I(le,[["render",Te],["__cssModules",$e]]);export{et as default};
|
|
2
|
-
//# sourceMappingURL=SettingsLogStreamingView-
|
|
1
|
+
import{m as A}from"./pinia-BAhPp3pQ.js";import{G as V,E as M,cQ as O,z as R,ar as x,i as F,j,b as K,r as G,cR as N}from"./index-DEwaaDne.js";import{h as D,a2 as T,_ as I,b as q}from"./n8n-B6cfQsVX.js";import{G as W,l as o,M as g,O as i,p as s,U as r,S,T as m,I as c,ag as a,n as Q,m as l,F as v,R as _,a7 as Y}from"./vendor-Dv5OeN6t.js";import{v as J}from"./uuid-SoommWqA.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const y={OPEN:"open",DELETE:"delete"},X=W({components:{},setup(){return{...V()}},data(){return{EnterpriseEditionFeature:M,nodeParameters:{}}},props:{eventBus:{type:Object},destination:{type:Object,required:!0,default:D(T)},readonly:Boolean},mounted(){var e;this.nodeParameters=Object.assign(D(T),this.destination),(e=this.eventBus)==null||e.on("destinationWasSaved",this.onDestinationWasSaved)},beforeUnmount(){var e;(e=this.eventBus)==null||e.off("destinationWasSaved",this.onDestinationWasSaved)},computed:{...A(O),actions(){const e=[{label:this.$locale.baseText("workflows.item.open"),value:y.OPEN}];return this.readonly||e.push({label:this.$locale.baseText("workflows.item.delete"),value:y.DELETE}),e},typeLabelName(){return`settings.log-streaming.${this.destination.__type}`}},methods:{onDestinationWasSaved(){this.logStreamingStore.getDestination(this.destination.id)&&(this.nodeParameters=Object.assign(D(T),this.destination))},async onClick(e){const t=this.$refs.cardActions,n=e.target;t===n||t!=null&&t.contains(n)||n!=null&&n.contains(t)||this.$emit("edit",this.destination.id)},onEnabledSwitched(e){this.nodeParameters.enabled=e,this.saveDestination()},async saveDestination(){await this.logStreamingStore.saveDestination(this.nodeParameters)},async onAction(e){if(e===y.OPEN)this.$emit("edit",this.destination.id);else if(e===y.DELETE){if(await this.confirm(this.$locale.baseText("settings.log-streaming.destinationDelete.message",{interpolate:{destinationName:this.destination.label}}),this.$locale.baseText("settings.log-streaming.destinationDelete.headline"),{type:"warning",confirmButtonText:this.$locale.baseText("settings.log-streaming.destinationDelete.confirmButtonText"),cancelButtonText:this.$locale.baseText("settings.log-streaming.destinationDelete.cancelButtonText")})!==R)return;this.$emit("remove",this.destination.id)}}}}),Z="_cardLink_r6102_1",ee="_activeStatusText_r6102_11",te="_cardHeading_r6102_19",ne="_cardDescription_r6102_25",se="_cardActions_r6102_32",oe={cardLink:Z,activeStatusText:ee,cardHeading:te,cardDescription:ne,cardActions:se};function ie(e,t,n,u,H,P){const $=a("n8n-heading"),h=a("n8n-text"),b=a("el-switch"),k=a("n8n-action-toggle"),w=a("n8n-card");return o(),g(w,{class:c(e.$style.cardLink),"data-test-id":"destination-card",onClick:e.onClick},{header:i(()=>[s("div",null,[r($,{tag:"h2",bold:"",class:c(e.$style.cardHeading)},{default:i(()=>[S(m(e.destination.label),1)]),_:1},8,["class"]),s("div",{class:c(e.$style.cardDescription)},[r(h,{color:"text-light",size:"small"},{default:i(()=>[s("span",null,m(e.$locale.baseText(e.typeLabelName)),1)]),_:1})],2)])]),append:i(()=>[s("div",{ref:"cardActions",class:c(e.$style.cardActions)},[s("div",{class:c(e.$style.activeStatusText),"data-test-id":"destination-activator-status"},[e.nodeParameters.enabled?(o(),g(h,{key:0,color:"success",size:"small",bold:""},{default:i(()=>[S(m(e.$locale.baseText("workflowActivator.active")),1)]),_:1})):(o(),g(h,{key:1,color:"text-base",size:"small",bold:""},{default:i(()=>[S(m(e.$locale.baseText("workflowActivator.inactive")),1)]),_:1}))],2),r(b,{class:"mr-s",disabled:e.readonly,"model-value":e.nodeParameters.enabled,title:e.nodeParameters.enabled?e.$locale.baseText("workflowActivator.deactivateWorkflow"):e.$locale.baseText("workflowActivator.activateWorkflow"),"active-color":"#13ce66","inactive-color":"#8899AA","data-test-id":"workflow-activate-switch","onUpdate:modelValue":t[0]||(t[0]=L=>e.onEnabledSwitched(L))},null,8,["disabled","model-value","title"]),r(k,{actions:e.actions,theme:"dark",onAction:e.onAction},null,8,["actions","onAction"])],2)]),_:1},8,["class","onClick"])}const ae={$style:oe},re=I(X,[["render",ie],["__cssModules",ae]]),le=W({name:"SettingsLogStreamingView",components:{EventDestinationCard:re},props:{},data(){return{eventBus:q(),destinations:Array,disableLicense:!1,allDestinations:[]}},async mounted(){this.isLicensed&&(await this.credentialsStore.fetchCredentialTypes(!1),await this.credentialsStore.fetchAllCredentials(),this.uiStore.nodeViewInitialized=!1,await this.getDestinationDataFromBackend(),this.logStreamingStore.$onAction(({name:e,after:t})=>{(e==="removeDestination"||e==="updateDestination")&&t(async()=>{this.$forceUpdate()})}),this.eventBus.on("destinationWasSaved",this.onDestinationWasSaved),this.eventBus.on("remove",this.onRemove),this.eventBus.on("closing",this.onBusClosing))},beforeUnmount(){this.eventBus.off("destinationWasSaved",this.onDestinationWasSaved),this.eventBus.off("remove",this.onRemove),this.eventBus.off("closing",this.onBusClosing)},computed:{...A(K,O,j,F,x),sortedItemKeysByLabel(){var t;const e=[];for(const[n,u]of Object.entries(this.logStreamingStore.items))e.push({key:n,label:((t=u.destination)==null?void 0:t.label)??"Destination"});return e.sort((n,u)=>n.label.localeCompare(u.label))},environment(){return"production"},isLicensed(){return this.disableLicense?!1:this.settingsStore.isEnterpriseFeatureEnabled(M.LogStreaming)},canManageLogStreaming(){return G(["rbac"],{rbac:{scope:"logStreaming:manage"}})}},methods:{onDestinationWasSaved(){this.$forceUpdate()},onBusClosing(){this.workflowsStore.removeAllNodes({setStateDirty:!1,removePinData:!0}),this.uiStore.stateIsDirty=!1},async getDestinationDataFromBackend(){this.logStreamingStore.clearEventNames(),this.logStreamingStore.clearDestinationItemTrees(),this.allDestinations=[];const e=await this.logStreamingStore.fetchEventNames();if(e)for(const n of e)this.logStreamingStore.addEventName(n);const t=await this.logStreamingStore.fetchDestinations();if(t)for(const n of t)this.logStreamingStore.addDestination(n),this.allDestinations.push(n);this.$forceUpdate()},goToUpgrade(){this.uiStore.goToUpgrade("log-streaming","upgrade-log-streaming")},storeHasItems(){return this.logStreamingStore.items&&Object.keys(this.logStreamingStore.items).length>0},async addDestination(){const e=D(T);e.id=J(),this.logStreamingStore.addDestination(e),await Q(),this.uiStore.openModalWithData({name:N,data:{destination:e,isNew:!0,eventBus:this.eventBus}})},async onRemove(e){if(!e)return;await this.logStreamingStore.deleteDestination(e);const t=this.workflowsStore.getNodeByName(e);t&&this.workflowsStore.removeNode(t)},async onEdit(e){if(!e)return;const t=this.logStreamingStore.getDestination(e);t&&this.uiStore.openModalWithData({name:N,data:{destination:t,isNew:!1,eventBus:this.eventBus}})}}}),de="_header_brzxt_1",ce="_destinationItem_brzxt_11",me={header:de,destinationItem:ce},ge={class:"mb-2xl"},ue={class:"ml-m"},he={class:"mb-l"},pe=["innerHTML"],fe={class:"mt-m text-right"},ve={key:1,"data-test-id":"action-box-licensed"},Se=["innerHTML"],be={key:0,class:"mb-l"},_e=["innerHTML"],ye={"data-test-id":"action-box-unlicensed"},De=["innerHTML"];function Te(e,t,n,u,H,P){const $=a("n8n-heading"),h=a("el-switch"),b=a("n8n-info-tip"),k=a("EventDestinationCard"),w=a("el-col"),L=a("el-row"),U=a("n8n-button"),B=a("n8n-action-box");return o(),l("div",null,[s("div",{class:c(e.$style.header)},[s("div",ge,[r($,{size:"2xlarge"},{default:i(()=>[S(m(e.$locale.baseText("settings.log-streaming.heading")),1)]),_:1}),e.environment!=="production"?(o(),l(v,{key:0},[s("strong",ue,"Disable License ("+m(e.environment)+") ",1),r(h,{modelValue:e.disableLicense,"onUpdate:modelValue":t[0]||(t[0]=d=>e.disableLicense=d),size:"large","data-test-id":"disable-license-toggle"},null,8,["modelValue"])],64)):_("",!0)])],2),e.isLicensed?(o(),l(v,{key:0},[s("div",he,[r(b,{theme:"info",type:"note"},{default:i(()=>[s("span",{innerHTML:e.$locale.baseText("settings.log-streaming.infoText")},null,8,pe)]),_:1})]),e.storeHasItems()?(o(),l(v,{key:0},[(o(!0),l(v,null,Y(e.sortedItemKeysByLabel,d=>(o(),g(L,{key:d.key,gutter:10,class:c(e.$style.destinationItem)},{default:i(()=>{var E;return[(E=e.logStreamingStore.items[d.key])!=null&&E.destination?(o(),g(w,{key:0},{default:i(()=>{var C;return[r(k,{destination:(C=e.logStreamingStore.items[d.key])==null?void 0:C.destination,"event-bus":e.eventBus,readonly:!e.canManageLogStreaming,onRemove:z=>{var p,f;return e.onRemove((f=(p=e.logStreamingStore.items[d.key])==null?void 0:p.destination)==null?void 0:f.id)},onEdit:z=>{var p,f;return e.onEdit((f=(p=e.logStreamingStore.items[d.key])==null?void 0:p.destination)==null?void 0:f.id)}},null,8,["destination","event-bus","readonly","onRemove","onEdit"])]}),_:2},1024)):_("",!0)]}),_:2},1032,["class"]))),128)),s("div",fe,[e.canManageLogStreaming?(o(),g(U,{key:0,size:"large",onClick:e.addDestination},{default:i(()=>[S(m(e.$locale.baseText("settings.log-streaming.add")),1)]),_:1},8,["onClick"])):_("",!0)])],64)):(o(),l("div",ve,[r(B,{"button-text":e.$locale.baseText("settings.log-streaming.add"),"onClick:button":e.addDestination},{heading:i(()=>[s("span",{innerHTML:e.$locale.baseText("settings.log-streaming.addFirstTitle")},null,8,Se)]),_:1},8,["button-text","onClick:button"])]))],64)):(o(),l(v,{key:1},[e.$locale.baseText("settings.log-streaming.infoText")?(o(),l("div",be,[r(b,{theme:"info",type:"note"},{default:i(()=>[s("span",{innerHTML:e.$locale.baseText("settings.log-streaming.infoText")},null,8,_e)]),_:1})])):_("",!0),s("div",ye,[r(B,{description:e.$locale.baseText("settings.log-streaming.actionBox.description"),"button-text":e.$locale.baseText("settings.log-streaming.actionBox.button"),"onClick:button":e.goToUpgrade},{heading:i(()=>[s("span",{innerHTML:e.$locale.baseText("settings.log-streaming.actionBox.title")},null,8,De)]),_:1},8,["description","button-text","onClick:button"])])],64))])}const $e={$style:me},et=I(le,[["render",Te],["__cssModules",$e]]);export{et as default};
|
|
2
|
+
//# sourceMappingURL=SettingsLogStreamingView-B3vDd25l.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsLogStreamingView-bLlhacNh.js","sources":["../../src/components/SettingsLogStreaming/EventDestinationCard.ee.vue","../../src/views/SettingsLogStreamingView.vue"],"sourcesContent":["<template>\n\t<n8n-card :class=\"$style.cardLink\" data-test-id=\"destination-card\" @click=\"onClick\">\n\t\t<template #header>\n\t\t\t<div>\n\t\t\t\t<n8n-heading tag=\"h2\" bold :class=\"$style.cardHeading\">\n\t\t\t\t\t{{ destination.label }}\n\t\t\t\t</n8n-heading>\n\t\t\t\t<div :class=\"$style.cardDescription\">\n\t\t\t\t\t<n8n-text color=\"text-light\" size=\"small\">\n\t\t\t\t\t\t<span>{{ $locale.baseText(typeLabelName) }}</span>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #append>\n\t\t\t<div ref=\"cardActions\" :class=\"$style.cardActions\">\n\t\t\t\t<div :class=\"$style.activeStatusText\" data-test-id=\"destination-activator-status\">\n\t\t\t\t\t<n8n-text v-if=\"nodeParameters.enabled\" :color=\"'success'\" size=\"small\" bold>\n\t\t\t\t\t\t{{ $locale.baseText('workflowActivator.active') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text v-else color=\"text-base\" size=\"small\" bold>\n\t\t\t\t\t\t{{ $locale.baseText('workflowActivator.inactive') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\n\t\t\t\t<el-switch\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"readonly\"\n\t\t\t\t\t:model-value=\"nodeParameters.enabled\"\n\t\t\t\t\t:title=\"\n\t\t\t\t\t\tnodeParameters.enabled\n\t\t\t\t\t\t\t? $locale.baseText('workflowActivator.deactivateWorkflow')\n\t\t\t\t\t\t\t: $locale.baseText('workflowActivator.activateWorkflow')\n\t\t\t\t\t\"\n\t\t\t\t\tactive-color=\"#13ce66\"\n\t\t\t\t\tinactive-color=\"#8899AA\"\n\t\t\t\t\tdata-test-id=\"workflow-activate-switch\"\n\t\t\t\t\t@update:model-value=\"onEnabledSwitched($event)\"\n\t\t\t\t>\n\t\t\t\t</el-switch>\n\n\t\t\t\t<n8n-action-toggle :actions=\"actions\" theme=\"dark\" @action=\"onAction\" />\n\t\t\t</div>\n\t\t</template>\n\t</n8n-card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { EnterpriseEditionFeature, MODAL_CONFIRM } from '@/constants';\nimport { useMessage } from '@/composables/useMessage';\nimport { useLogStreamingStore } from '@/stores/logStreaming.store';\nimport type { PropType } from 'vue';\nimport { mapStores } from 'pinia';\nimport type { MessageEventBusDestinationOptions } from 'n8n-workflow';\nimport { deepCopy, defaultMessageEventBusDestinationOptions } from 'n8n-workflow';\nimport type { BaseTextKey } from '@/plugins/i18n';\nimport type { EventBus } from 'n8n-design-system';\n\nexport const DESTINATION_LIST_ITEM_ACTIONS = {\n\tOPEN: 'open',\n\tDELETE: 'delete',\n};\n\nexport default defineComponent({\n\tcomponents: {},\n\tsetup() {\n\t\treturn {\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tEnterpriseEditionFeature,\n\t\t\tnodeParameters: {} as MessageEventBusDestinationOptions,\n\t\t};\n\t},\n\tprops: {\n\t\teventBus: {\n\t\t\ttype: Object as PropType<EventBus>,\n\t\t},\n\t\tdestination: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t\tdefault: deepCopy(defaultMessageEventBusDestinationOptions),\n\t\t},\n\t\treadonly: Boolean,\n\t},\n\tmounted() {\n\t\tthis.nodeParameters = Object.assign(\n\t\t\tdeepCopy(defaultMessageEventBusDestinationOptions),\n\t\t\tthis.destination,\n\t\t);\n\t\tthis.eventBus?.on('destinationWasSaved', this.onDestinationWasSaved);\n\t},\n\tbeforeUnmount() {\n\t\tthis.eventBus?.off('destinationWasSaved', this.onDestinationWasSaved);\n\t},\n\tcomputed: {\n\t\t...mapStores(useLogStreamingStore),\n\t\tactions(): Array<{ label: string; value: string }> {\n\t\t\tconst actions = [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('workflows.item.open'),\n\t\t\t\t\tvalue: DESTINATION_LIST_ITEM_ACTIONS.OPEN,\n\t\t\t\t},\n\t\t\t];\n\t\t\tif (!this.readonly) {\n\t\t\t\tactions.push({\n\t\t\t\t\tlabel: this.$locale.baseText('workflows.item.delete'),\n\t\t\t\t\tvalue: DESTINATION_LIST_ITEM_ACTIONS.DELETE,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn actions;\n\t\t},\n\t\ttypeLabelName(): BaseTextKey {\n\t\t\treturn `settings.log-streaming.${this.destination.__type}` as BaseTextKey;\n\t\t},\n\t},\n\tmethods: {\n\t\tonDestinationWasSaved() {\n\t\t\tconst updatedDestination = this.logStreamingStore.getDestination(this.destination.id);\n\t\t\tif (updatedDestination) {\n\t\t\t\tthis.nodeParameters = Object.assign(\n\t\t\t\t\tdeepCopy(defaultMessageEventBusDestinationOptions),\n\t\t\t\t\tthis.destination,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tasync onClick(event: Event) {\n\t\t\tconst cardActions = this.$refs.cardActions as HTMLDivElement | null;\n\t\t\tconst target = event.target as HTMLDivElement | null;\n\t\t\tif (\n\t\t\t\tcardActions === target ||\n\t\t\t\tcardActions?.contains(target) ||\n\t\t\t\ttarget?.contains(cardActions)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$emit('edit', this.destination.id);\n\t\t},\n\t\tonEnabledSwitched(state: boolean) {\n\t\t\tthis.nodeParameters.enabled = state;\n\t\t\tvoid this.saveDestination();\n\t\t},\n\t\tasync saveDestination() {\n\t\t\tawait this.logStreamingStore.saveDestination(this.nodeParameters);\n\t\t},\n\t\tasync onAction(action: string) {\n\t\t\tif (action === DESTINATION_LIST_ITEM_ACTIONS.OPEN) {\n\t\t\t\tthis.$emit('edit', this.destination.id);\n\t\t\t} else if (action === DESTINATION_LIST_ITEM_ACTIONS.DELETE) {\n\t\t\t\tconst deleteConfirmed = await this.confirm(\n\t\t\t\t\tthis.$locale.baseText('settings.log-streaming.destinationDelete.message', {\n\t\t\t\t\t\tinterpolate: { destinationName: this.destination.label },\n\t\t\t\t\t}),\n\t\t\t\t\tthis.$locale.baseText('settings.log-streaming.destinationDelete.headline'),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t'settings.log-streaming.destinationDelete.confirmButtonText',\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcancelButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t'settings.log-streaming.destinationDelete.cancelButtonText',\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tif (deleteConfirmed !== MODAL_CONFIRM) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.$emit('remove', this.destination.id);\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.cardLink {\n\ttransition: box-shadow 0.3s ease;\n\tcursor: pointer;\n\tpadding: 0 0 0 var(--spacing-s);\n\talign-items: stretch;\n\n\t&:hover {\n\t\tbox-shadow: 0 2px 8px rgba(#441c17, 0.1);\n\t}\n}\n\n.activeStatusText {\n\twidth: 64px; // Required to avoid jumping when changing active state\n\tpadding-right: var(--spacing-2xs);\n\tbox-sizing: border-box;\n\tdisplay: inline-block;\n\ttext-align: right;\n}\n\n.cardHeading {\n\tfont-size: var(--font-size-s);\n\tword-break: break-word;\n\tpadding: var(--spacing-s) 0 0 var(--spacing-s);\n}\n\n.cardDescription {\n\tmin-height: 19px;\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0 0 var(--spacing-s) var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 0 var(--spacing-s) 0 0;\n\tcursor: default;\n}\n</style>\n","<template>\n\t<div>\n\t\t<div :class=\"$style.header\">\n\t\t\t<div class=\"mb-2xl\">\n\t\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t\t{{ $locale.baseText(`settings.log-streaming.heading`) }}\n\t\t\t\t</n8n-heading>\n\t\t\t\t<template v-if=\"environment !== 'production'\">\n\t\t\t\t\t<strong class=\"ml-m\">Disable License ({{ environment }}) </strong>\n\t\t\t\t\t<el-switch v-model=\"disableLicense\" size=\"large\" data-test-id=\"disable-license-toggle\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t\t<template v-if=\"isLicensed\">\n\t\t\t<div class=\"mb-l\">\n\t\t\t\t<n8n-info-tip theme=\"info\" type=\"note\">\n\t\t\t\t\t<span v-html=\"$locale.baseText('settings.log-streaming.infoText')\"></span>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</div>\n\t\t\t<template v-if=\"storeHasItems()\">\n\t\t\t\t<el-row\n\t\t\t\t\tv-for=\"item in sortedItemKeysByLabel\"\n\t\t\t\t\t:key=\"item.key\"\n\t\t\t\t\t:gutter=\"10\"\n\t\t\t\t\t:class=\"$style.destinationItem\"\n\t\t\t\t>\n\t\t\t\t\t<el-col v-if=\"logStreamingStore.items[item.key]?.destination\">\n\t\t\t\t\t\t<EventDestinationCard\n\t\t\t\t\t\t\t:destination=\"logStreamingStore.items[item.key]?.destination\"\n\t\t\t\t\t\t\t:event-bus=\"eventBus\"\n\t\t\t\t\t\t\t:readonly=\"!canManageLogStreaming\"\n\t\t\t\t\t\t\t@remove=\"onRemove(logStreamingStore.items[item.key]?.destination?.id)\"\n\t\t\t\t\t\t\t@edit=\"onEdit(logStreamingStore.items[item.key]?.destination?.id)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</el-col>\n\t\t\t\t</el-row>\n\t\t\t\t<div class=\"mt-m text-right\">\n\t\t\t\t\t<n8n-button v-if=\"canManageLogStreaming\" size=\"large\" @click=\"addDestination\">\n\t\t\t\t\t\t{{ $locale.baseText(`settings.log-streaming.add`) }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<div v-else data-test-id=\"action-box-licensed\">\n\t\t\t\t<n8n-action-box\n\t\t\t\t\t:button-text=\"$locale.baseText(`settings.log-streaming.add`)\"\n\t\t\t\t\t@click:button=\"addDestination\"\n\t\t\t\t>\n\t\t\t\t\t<template #heading>\n\t\t\t\t\t\t<span v-html=\"$locale.baseText(`settings.log-streaming.addFirstTitle`)\" />\n\t\t\t\t\t</template>\n\t\t\t\t</n8n-action-box>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else>\n\t\t\t<div v-if=\"$locale.baseText('settings.log-streaming.infoText')\" class=\"mb-l\">\n\t\t\t\t<n8n-info-tip theme=\"info\" type=\"note\">\n\t\t\t\t\t<span v-html=\"$locale.baseText('settings.log-streaming.infoText')\"></span>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</div>\n\t\t\t<div data-test-id=\"action-box-unlicensed\">\n\t\t\t\t<n8n-action-box\n\t\t\t\t\t:description=\"$locale.baseText('settings.log-streaming.actionBox.description')\"\n\t\t\t\t\t:button-text=\"$locale.baseText('settings.log-streaming.actionBox.button')\"\n\t\t\t\t\t@click:button=\"goToUpgrade\"\n\t\t\t\t>\n\t\t\t\t\t<template #heading>\n\t\t\t\t\t\t<span v-html=\"$locale.baseText('settings.log-streaming.actionBox.title')\" />\n\t\t\t\t\t</template>\n\t\t\t\t</n8n-action-box>\n\t\t\t</div>\n\t\t</template>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, nextTick } from 'vue';\nimport { mapStores } from 'pinia';\nimport { v4 as uuid } from 'uuid';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { hasPermission } from '@/rbac/permissions';\nimport { useCredentialsStore } from '@/stores/credentials.store';\nimport { useLogStreamingStore } from '@/stores/logStreaming.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { LOG_STREAM_MODAL_KEY, EnterpriseEditionFeature } from '@/constants';\nimport type { MessageEventBusDestinationOptions } from 'n8n-workflow';\nimport { deepCopy, defaultMessageEventBusDestinationOptions } from 'n8n-workflow';\nimport EventDestinationCard from '@/components/SettingsLogStreaming/EventDestinationCard.ee.vue';\nimport { createEventBus } from 'n8n-design-system/utils';\n\nexport default defineComponent({\n\tname: 'SettingsLogStreamingView',\n\tcomponents: {\n\t\tEventDestinationCard,\n\t},\n\tprops: {},\n\tdata() {\n\t\treturn {\n\t\t\teventBus: createEventBus(),\n\t\t\tdestinations: Array<MessageEventBusDestinationOptions>,\n\t\t\tdisableLicense: false,\n\t\t\tallDestinations: [] as MessageEventBusDestinationOptions[],\n\t\t};\n\t},\n\tasync mounted() {\n\t\tif (!this.isLicensed) return;\n\n\t\t// Prepare credentialsStore so modals can pick up credentials\n\t\tawait this.credentialsStore.fetchCredentialTypes(false);\n\t\tawait this.credentialsStore.fetchAllCredentials();\n\t\tthis.uiStore.nodeViewInitialized = false;\n\n\t\t// fetch Destination data from the backend\n\t\tawait this.getDestinationDataFromBackend();\n\n\t\t// since we are not really integrated into the hooks, we listen to the store and refresh the destinations\n\t\tthis.logStreamingStore.$onAction(({ name, after }) => {\n\t\t\tif (name === 'removeDestination' || name === 'updateDestination') {\n\t\t\t\tafter(async () => {\n\t\t\t\t\tthis.$forceUpdate();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// refresh when a modal closes\n\t\tthis.eventBus.on('destinationWasSaved', this.onDestinationWasSaved);\n\t\t// listen to remove emission\n\t\tthis.eventBus.on('remove', this.onRemove);\n\t\t// listen to modal closing and remove nodes from store\n\t\tthis.eventBus.on('closing', this.onBusClosing);\n\t},\n\tbeforeUnmount() {\n\t\tthis.eventBus.off('destinationWasSaved', this.onDestinationWasSaved);\n\t\tthis.eventBus.off('remove', this.onRemove);\n\t\tthis.eventBus.off('closing', this.onBusClosing);\n\t},\n\tcomputed: {\n\t\t...mapStores(\n\t\t\tuseSettingsStore,\n\t\t\tuseLogStreamingStore,\n\t\t\tuseWorkflowsStore,\n\t\t\tuseUIStore,\n\t\t\tuseCredentialsStore,\n\t\t),\n\t\tsortedItemKeysByLabel() {\n\t\t\tconst sortedKeys: Array<{ label: string; key: string }> = [];\n\t\t\tfor (const [key, value] of Object.entries(this.logStreamingStore.items)) {\n\t\t\t\tsortedKeys.push({ key, label: value.destination?.label ?? 'Destination' });\n\t\t\t}\n\t\t\treturn sortedKeys.sort((a, b) => a.label.localeCompare(b.label));\n\t\t},\n\t\tenvironment() {\n\t\t\treturn process.env.NODE_ENV;\n\t\t},\n\t\tisLicensed(): boolean {\n\t\t\tif (this.disableLicense) return false;\n\t\t\treturn this.settingsStore.isEnterpriseFeatureEnabled(EnterpriseEditionFeature.LogStreaming);\n\t\t},\n\t\tcanManageLogStreaming(): boolean {\n\t\t\treturn hasPermission(['rbac'], { rbac: { scope: 'logStreaming:manage' } });\n\t\t},\n\t},\n\tmethods: {\n\t\tonDestinationWasSaved() {\n\t\t\tthis.$forceUpdate();\n\t\t},\n\t\tonBusClosing() {\n\t\t\tthis.workflowsStore.removeAllNodes({ setStateDirty: false, removePinData: true });\n\t\t\tthis.uiStore.stateIsDirty = false;\n\t\t},\n\t\tasync getDestinationDataFromBackend(): Promise<void> {\n\t\t\tthis.logStreamingStore.clearEventNames();\n\t\t\tthis.logStreamingStore.clearDestinationItemTrees();\n\t\t\tthis.allDestinations = [];\n\t\t\tconst eventNamesData = await this.logStreamingStore.fetchEventNames();\n\t\t\tif (eventNamesData) {\n\t\t\t\tfor (const eventName of eventNamesData) {\n\t\t\t\t\tthis.logStreamingStore.addEventName(eventName);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst destinationData: MessageEventBusDestinationOptions[] =\n\t\t\t\tawait this.logStreamingStore.fetchDestinations();\n\t\t\tif (destinationData) {\n\t\t\t\tfor (const destination of destinationData) {\n\t\t\t\t\tthis.logStreamingStore.addDestination(destination);\n\t\t\t\t\tthis.allDestinations.push(destination);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$forceUpdate();\n\t\t},\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('log-streaming', 'upgrade-log-streaming');\n\t\t},\n\t\tstoreHasItems(): boolean {\n\t\t\treturn this.logStreamingStore.items && Object.keys(this.logStreamingStore.items).length > 0;\n\t\t},\n\t\tasync addDestination() {\n\t\t\tconst newDestination = deepCopy(defaultMessageEventBusDestinationOptions);\n\t\t\tnewDestination.id = uuid();\n\t\t\tthis.logStreamingStore.addDestination(newDestination);\n\t\t\tawait nextTick();\n\t\t\tthis.uiStore.openModalWithData({\n\t\t\t\tname: LOG_STREAM_MODAL_KEY,\n\t\t\t\tdata: {\n\t\t\t\t\tdestination: newDestination,\n\t\t\t\t\tisNew: true,\n\t\t\t\t\teventBus: this.eventBus,\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tasync onRemove(destinationId?: string) {\n\t\t\tif (!destinationId) return;\n\t\t\tawait this.logStreamingStore.deleteDestination(destinationId);\n\t\t\tconst foundNode = this.workflowsStore.getNodeByName(destinationId);\n\t\t\tif (foundNode) {\n\t\t\t\tthis.workflowsStore.removeNode(foundNode);\n\t\t\t}\n\t\t},\n\t\tasync onEdit(destinationId?: string) {\n\t\t\tif (!destinationId) return;\n\t\t\tconst editDestination = this.logStreamingStore.getDestination(destinationId);\n\t\t\tif (editDestination) {\n\t\t\t\tthis.uiStore.openModalWithData({\n\t\t\t\t\tname: LOG_STREAM_MODAL_KEY,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tdestination: editDestination,\n\t\t\t\t\t\tisNew: false,\n\t\t\t\t\t\teventBus: this.eventBus,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.header {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.destinationItem {\n\tmargin-bottom: 0.5em;\n}\n</style>\n"],"names":["DESTINATION_LIST_ITEM_ACTIONS","_sfc_main$1","defineComponent","useMessage","EnterpriseEditionFeature","deepCopy","defaultMessageEventBusDestinationOptions","_a","mapStores","useLogStreamingStore","actions","event","cardActions","target","state","action","MODAL_CONFIRM","_resolveComponent","_openBlock","_createBlock","_component_n8n_card","_normalizeClass","_ctx","_withCtx","_createElementVNode","_createVNode","_component_n8n_heading","_createTextVNode","_toDisplayString","_component_n8n_text","$style","nodeParameters","readonly","$locale","_cache","$event","_component_n8n_action_toggle","onAction","_sfc_main","EventDestinationCard","createEventBus","name","after","useSettingsStore","useWorkflowsStore","useUIStore","useCredentialsStore","sortedKeys","key","value","a","b","hasPermission","eventNamesData","eventName","destinationData","destination","newDestination","uuid","nextTick","LOG_STREAM_MODAL_KEY","destinationId","foundNode","editDestination","_hoisted_1","_hoisted_2","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","environment","_createElementBlock","_Fragment","disableLicense","_component_el_switch","_createCommentVNode","isLicensed","_hoisted_3","_component_n8n_info_tip","_hoisted_4","storeHasItems","_renderList","item","_component_el_row","_component_el_col","logStreamingStore","_component_EventDestinationCard","canManageLogStreaming","_b","_component_n8n_button","_component_n8n_action_box","_hoisted_10","goToUpgrade","_hoisted_11"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsLogStreamingView-B3vDd25l.js","sources":["../../src/components/SettingsLogStreaming/EventDestinationCard.ee.vue","../../src/views/SettingsLogStreamingView.vue"],"sourcesContent":["<template>\n\t<n8n-card :class=\"$style.cardLink\" data-test-id=\"destination-card\" @click=\"onClick\">\n\t\t<template #header>\n\t\t\t<div>\n\t\t\t\t<n8n-heading tag=\"h2\" bold :class=\"$style.cardHeading\">\n\t\t\t\t\t{{ destination.label }}\n\t\t\t\t</n8n-heading>\n\t\t\t\t<div :class=\"$style.cardDescription\">\n\t\t\t\t\t<n8n-text color=\"text-light\" size=\"small\">\n\t\t\t\t\t\t<span>{{ $locale.baseText(typeLabelName) }}</span>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #append>\n\t\t\t<div ref=\"cardActions\" :class=\"$style.cardActions\">\n\t\t\t\t<div :class=\"$style.activeStatusText\" data-test-id=\"destination-activator-status\">\n\t\t\t\t\t<n8n-text v-if=\"nodeParameters.enabled\" :color=\"'success'\" size=\"small\" bold>\n\t\t\t\t\t\t{{ $locale.baseText('workflowActivator.active') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text v-else color=\"text-base\" size=\"small\" bold>\n\t\t\t\t\t\t{{ $locale.baseText('workflowActivator.inactive') }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\n\t\t\t\t<el-switch\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"readonly\"\n\t\t\t\t\t:model-value=\"nodeParameters.enabled\"\n\t\t\t\t\t:title=\"\n\t\t\t\t\t\tnodeParameters.enabled\n\t\t\t\t\t\t\t? $locale.baseText('workflowActivator.deactivateWorkflow')\n\t\t\t\t\t\t\t: $locale.baseText('workflowActivator.activateWorkflow')\n\t\t\t\t\t\"\n\t\t\t\t\tactive-color=\"#13ce66\"\n\t\t\t\t\tinactive-color=\"#8899AA\"\n\t\t\t\t\tdata-test-id=\"workflow-activate-switch\"\n\t\t\t\t\t@update:model-value=\"onEnabledSwitched($event)\"\n\t\t\t\t>\n\t\t\t\t</el-switch>\n\n\t\t\t\t<n8n-action-toggle :actions=\"actions\" theme=\"dark\" @action=\"onAction\" />\n\t\t\t</div>\n\t\t</template>\n\t</n8n-card>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { EnterpriseEditionFeature, MODAL_CONFIRM } from '@/constants';\nimport { useMessage } from '@/composables/useMessage';\nimport { useLogStreamingStore } from '@/stores/logStreaming.store';\nimport type { PropType } from 'vue';\nimport { mapStores } from 'pinia';\nimport type { MessageEventBusDestinationOptions } from 'n8n-workflow';\nimport { deepCopy, defaultMessageEventBusDestinationOptions } from 'n8n-workflow';\nimport type { BaseTextKey } from '@/plugins/i18n';\nimport type { EventBus } from 'n8n-design-system';\n\nexport const DESTINATION_LIST_ITEM_ACTIONS = {\n\tOPEN: 'open',\n\tDELETE: 'delete',\n};\n\nexport default defineComponent({\n\tcomponents: {},\n\tsetup() {\n\t\treturn {\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tEnterpriseEditionFeature,\n\t\t\tnodeParameters: {} as MessageEventBusDestinationOptions,\n\t\t};\n\t},\n\tprops: {\n\t\teventBus: {\n\t\t\ttype: Object as PropType<EventBus>,\n\t\t},\n\t\tdestination: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t\tdefault: deepCopy(defaultMessageEventBusDestinationOptions),\n\t\t},\n\t\treadonly: Boolean,\n\t},\n\tmounted() {\n\t\tthis.nodeParameters = Object.assign(\n\t\t\tdeepCopy(defaultMessageEventBusDestinationOptions),\n\t\t\tthis.destination,\n\t\t);\n\t\tthis.eventBus?.on('destinationWasSaved', this.onDestinationWasSaved);\n\t},\n\tbeforeUnmount() {\n\t\tthis.eventBus?.off('destinationWasSaved', this.onDestinationWasSaved);\n\t},\n\tcomputed: {\n\t\t...mapStores(useLogStreamingStore),\n\t\tactions(): Array<{ label: string; value: string }> {\n\t\t\tconst actions = [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('workflows.item.open'),\n\t\t\t\t\tvalue: DESTINATION_LIST_ITEM_ACTIONS.OPEN,\n\t\t\t\t},\n\t\t\t];\n\t\t\tif (!this.readonly) {\n\t\t\t\tactions.push({\n\t\t\t\t\tlabel: this.$locale.baseText('workflows.item.delete'),\n\t\t\t\t\tvalue: DESTINATION_LIST_ITEM_ACTIONS.DELETE,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn actions;\n\t\t},\n\t\ttypeLabelName(): BaseTextKey {\n\t\t\treturn `settings.log-streaming.${this.destination.__type}` as BaseTextKey;\n\t\t},\n\t},\n\tmethods: {\n\t\tonDestinationWasSaved() {\n\t\t\tconst updatedDestination = this.logStreamingStore.getDestination(this.destination.id);\n\t\t\tif (updatedDestination) {\n\t\t\t\tthis.nodeParameters = Object.assign(\n\t\t\t\t\tdeepCopy(defaultMessageEventBusDestinationOptions),\n\t\t\t\t\tthis.destination,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tasync onClick(event: Event) {\n\t\t\tconst cardActions = this.$refs.cardActions as HTMLDivElement | null;\n\t\t\tconst target = event.target as HTMLDivElement | null;\n\t\t\tif (\n\t\t\t\tcardActions === target ||\n\t\t\t\tcardActions?.contains(target) ||\n\t\t\t\ttarget?.contains(cardActions)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$emit('edit', this.destination.id);\n\t\t},\n\t\tonEnabledSwitched(state: boolean) {\n\t\t\tthis.nodeParameters.enabled = state;\n\t\t\tvoid this.saveDestination();\n\t\t},\n\t\tasync saveDestination() {\n\t\t\tawait this.logStreamingStore.saveDestination(this.nodeParameters);\n\t\t},\n\t\tasync onAction(action: string) {\n\t\t\tif (action === DESTINATION_LIST_ITEM_ACTIONS.OPEN) {\n\t\t\t\tthis.$emit('edit', this.destination.id);\n\t\t\t} else if (action === DESTINATION_LIST_ITEM_ACTIONS.DELETE) {\n\t\t\t\tconst deleteConfirmed = await this.confirm(\n\t\t\t\t\tthis.$locale.baseText('settings.log-streaming.destinationDelete.message', {\n\t\t\t\t\t\tinterpolate: { destinationName: this.destination.label },\n\t\t\t\t\t}),\n\t\t\t\t\tthis.$locale.baseText('settings.log-streaming.destinationDelete.headline'),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t'settings.log-streaming.destinationDelete.confirmButtonText',\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcancelButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t'settings.log-streaming.destinationDelete.cancelButtonText',\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tif (deleteConfirmed !== MODAL_CONFIRM) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.$emit('remove', this.destination.id);\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.cardLink {\n\ttransition: box-shadow 0.3s ease;\n\tcursor: pointer;\n\tpadding: 0 0 0 var(--spacing-s);\n\talign-items: stretch;\n\n\t&:hover {\n\t\tbox-shadow: 0 2px 8px rgba(#441c17, 0.1);\n\t}\n}\n\n.activeStatusText {\n\twidth: 64px; // Required to avoid jumping when changing active state\n\tpadding-right: var(--spacing-2xs);\n\tbox-sizing: border-box;\n\tdisplay: inline-block;\n\ttext-align: right;\n}\n\n.cardHeading {\n\tfont-size: var(--font-size-s);\n\tword-break: break-word;\n\tpadding: var(--spacing-s) 0 0 var(--spacing-s);\n}\n\n.cardDescription {\n\tmin-height: 19px;\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0 0 var(--spacing-s) var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 0 var(--spacing-s) 0 0;\n\tcursor: default;\n}\n</style>\n","<template>\n\t<div>\n\t\t<div :class=\"$style.header\">\n\t\t\t<div class=\"mb-2xl\">\n\t\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t\t{{ $locale.baseText(`settings.log-streaming.heading`) }}\n\t\t\t\t</n8n-heading>\n\t\t\t\t<template v-if=\"environment !== 'production'\">\n\t\t\t\t\t<strong class=\"ml-m\">Disable License ({{ environment }}) </strong>\n\t\t\t\t\t<el-switch v-model=\"disableLicense\" size=\"large\" data-test-id=\"disable-license-toggle\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t\t<template v-if=\"isLicensed\">\n\t\t\t<div class=\"mb-l\">\n\t\t\t\t<n8n-info-tip theme=\"info\" type=\"note\">\n\t\t\t\t\t<span v-html=\"$locale.baseText('settings.log-streaming.infoText')\"></span>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</div>\n\t\t\t<template v-if=\"storeHasItems()\">\n\t\t\t\t<el-row\n\t\t\t\t\tv-for=\"item in sortedItemKeysByLabel\"\n\t\t\t\t\t:key=\"item.key\"\n\t\t\t\t\t:gutter=\"10\"\n\t\t\t\t\t:class=\"$style.destinationItem\"\n\t\t\t\t>\n\t\t\t\t\t<el-col v-if=\"logStreamingStore.items[item.key]?.destination\">\n\t\t\t\t\t\t<EventDestinationCard\n\t\t\t\t\t\t\t:destination=\"logStreamingStore.items[item.key]?.destination\"\n\t\t\t\t\t\t\t:event-bus=\"eventBus\"\n\t\t\t\t\t\t\t:readonly=\"!canManageLogStreaming\"\n\t\t\t\t\t\t\t@remove=\"onRemove(logStreamingStore.items[item.key]?.destination?.id)\"\n\t\t\t\t\t\t\t@edit=\"onEdit(logStreamingStore.items[item.key]?.destination?.id)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</el-col>\n\t\t\t\t</el-row>\n\t\t\t\t<div class=\"mt-m text-right\">\n\t\t\t\t\t<n8n-button v-if=\"canManageLogStreaming\" size=\"large\" @click=\"addDestination\">\n\t\t\t\t\t\t{{ $locale.baseText(`settings.log-streaming.add`) }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<div v-else data-test-id=\"action-box-licensed\">\n\t\t\t\t<n8n-action-box\n\t\t\t\t\t:button-text=\"$locale.baseText(`settings.log-streaming.add`)\"\n\t\t\t\t\t@click:button=\"addDestination\"\n\t\t\t\t>\n\t\t\t\t\t<template #heading>\n\t\t\t\t\t\t<span v-html=\"$locale.baseText(`settings.log-streaming.addFirstTitle`)\" />\n\t\t\t\t\t</template>\n\t\t\t\t</n8n-action-box>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else>\n\t\t\t<div v-if=\"$locale.baseText('settings.log-streaming.infoText')\" class=\"mb-l\">\n\t\t\t\t<n8n-info-tip theme=\"info\" type=\"note\">\n\t\t\t\t\t<span v-html=\"$locale.baseText('settings.log-streaming.infoText')\"></span>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</div>\n\t\t\t<div data-test-id=\"action-box-unlicensed\">\n\t\t\t\t<n8n-action-box\n\t\t\t\t\t:description=\"$locale.baseText('settings.log-streaming.actionBox.description')\"\n\t\t\t\t\t:button-text=\"$locale.baseText('settings.log-streaming.actionBox.button')\"\n\t\t\t\t\t@click:button=\"goToUpgrade\"\n\t\t\t\t>\n\t\t\t\t\t<template #heading>\n\t\t\t\t\t\t<span v-html=\"$locale.baseText('settings.log-streaming.actionBox.title')\" />\n\t\t\t\t\t</template>\n\t\t\t\t</n8n-action-box>\n\t\t\t</div>\n\t\t</template>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, nextTick } from 'vue';\nimport { mapStores } from 'pinia';\nimport { v4 as uuid } from 'uuid';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { hasPermission } from '@/rbac/permissions';\nimport { useCredentialsStore } from '@/stores/credentials.store';\nimport { useLogStreamingStore } from '@/stores/logStreaming.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { LOG_STREAM_MODAL_KEY, EnterpriseEditionFeature } from '@/constants';\nimport type { MessageEventBusDestinationOptions } from 'n8n-workflow';\nimport { deepCopy, defaultMessageEventBusDestinationOptions } from 'n8n-workflow';\nimport EventDestinationCard from '@/components/SettingsLogStreaming/EventDestinationCard.ee.vue';\nimport { createEventBus } from 'n8n-design-system/utils';\n\nexport default defineComponent({\n\tname: 'SettingsLogStreamingView',\n\tcomponents: {\n\t\tEventDestinationCard,\n\t},\n\tprops: {},\n\tdata() {\n\t\treturn {\n\t\t\teventBus: createEventBus(),\n\t\t\tdestinations: Array<MessageEventBusDestinationOptions>,\n\t\t\tdisableLicense: false,\n\t\t\tallDestinations: [] as MessageEventBusDestinationOptions[],\n\t\t};\n\t},\n\tasync mounted() {\n\t\tif (!this.isLicensed) return;\n\n\t\t// Prepare credentialsStore so modals can pick up credentials\n\t\tawait this.credentialsStore.fetchCredentialTypes(false);\n\t\tawait this.credentialsStore.fetchAllCredentials();\n\t\tthis.uiStore.nodeViewInitialized = false;\n\n\t\t// fetch Destination data from the backend\n\t\tawait this.getDestinationDataFromBackend();\n\n\t\t// since we are not really integrated into the hooks, we listen to the store and refresh the destinations\n\t\tthis.logStreamingStore.$onAction(({ name, after }) => {\n\t\t\tif (name === 'removeDestination' || name === 'updateDestination') {\n\t\t\t\tafter(async () => {\n\t\t\t\t\tthis.$forceUpdate();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// refresh when a modal closes\n\t\tthis.eventBus.on('destinationWasSaved', this.onDestinationWasSaved);\n\t\t// listen to remove emission\n\t\tthis.eventBus.on('remove', this.onRemove);\n\t\t// listen to modal closing and remove nodes from store\n\t\tthis.eventBus.on('closing', this.onBusClosing);\n\t},\n\tbeforeUnmount() {\n\t\tthis.eventBus.off('destinationWasSaved', this.onDestinationWasSaved);\n\t\tthis.eventBus.off('remove', this.onRemove);\n\t\tthis.eventBus.off('closing', this.onBusClosing);\n\t},\n\tcomputed: {\n\t\t...mapStores(\n\t\t\tuseSettingsStore,\n\t\t\tuseLogStreamingStore,\n\t\t\tuseWorkflowsStore,\n\t\t\tuseUIStore,\n\t\t\tuseCredentialsStore,\n\t\t),\n\t\tsortedItemKeysByLabel() {\n\t\t\tconst sortedKeys: Array<{ label: string; key: string }> = [];\n\t\t\tfor (const [key, value] of Object.entries(this.logStreamingStore.items)) {\n\t\t\t\tsortedKeys.push({ key, label: value.destination?.label ?? 'Destination' });\n\t\t\t}\n\t\t\treturn sortedKeys.sort((a, b) => a.label.localeCompare(b.label));\n\t\t},\n\t\tenvironment() {\n\t\t\treturn process.env.NODE_ENV;\n\t\t},\n\t\tisLicensed(): boolean {\n\t\t\tif (this.disableLicense) return false;\n\t\t\treturn this.settingsStore.isEnterpriseFeatureEnabled(EnterpriseEditionFeature.LogStreaming);\n\t\t},\n\t\tcanManageLogStreaming(): boolean {\n\t\t\treturn hasPermission(['rbac'], { rbac: { scope: 'logStreaming:manage' } });\n\t\t},\n\t},\n\tmethods: {\n\t\tonDestinationWasSaved() {\n\t\t\tthis.$forceUpdate();\n\t\t},\n\t\tonBusClosing() {\n\t\t\tthis.workflowsStore.removeAllNodes({ setStateDirty: false, removePinData: true });\n\t\t\tthis.uiStore.stateIsDirty = false;\n\t\t},\n\t\tasync getDestinationDataFromBackend(): Promise<void> {\n\t\t\tthis.logStreamingStore.clearEventNames();\n\t\t\tthis.logStreamingStore.clearDestinationItemTrees();\n\t\t\tthis.allDestinations = [];\n\t\t\tconst eventNamesData = await this.logStreamingStore.fetchEventNames();\n\t\t\tif (eventNamesData) {\n\t\t\t\tfor (const eventName of eventNamesData) {\n\t\t\t\t\tthis.logStreamingStore.addEventName(eventName);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst destinationData: MessageEventBusDestinationOptions[] =\n\t\t\t\tawait this.logStreamingStore.fetchDestinations();\n\t\t\tif (destinationData) {\n\t\t\t\tfor (const destination of destinationData) {\n\t\t\t\t\tthis.logStreamingStore.addDestination(destination);\n\t\t\t\t\tthis.allDestinations.push(destination);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$forceUpdate();\n\t\t},\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('log-streaming', 'upgrade-log-streaming');\n\t\t},\n\t\tstoreHasItems(): boolean {\n\t\t\treturn this.logStreamingStore.items && Object.keys(this.logStreamingStore.items).length > 0;\n\t\t},\n\t\tasync addDestination() {\n\t\t\tconst newDestination = deepCopy(defaultMessageEventBusDestinationOptions);\n\t\t\tnewDestination.id = uuid();\n\t\t\tthis.logStreamingStore.addDestination(newDestination);\n\t\t\tawait nextTick();\n\t\t\tthis.uiStore.openModalWithData({\n\t\t\t\tname: LOG_STREAM_MODAL_KEY,\n\t\t\t\tdata: {\n\t\t\t\t\tdestination: newDestination,\n\t\t\t\t\tisNew: true,\n\t\t\t\t\teventBus: this.eventBus,\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tasync onRemove(destinationId?: string) {\n\t\t\tif (!destinationId) return;\n\t\t\tawait this.logStreamingStore.deleteDestination(destinationId);\n\t\t\tconst foundNode = this.workflowsStore.getNodeByName(destinationId);\n\t\t\tif (foundNode) {\n\t\t\t\tthis.workflowsStore.removeNode(foundNode);\n\t\t\t}\n\t\t},\n\t\tasync onEdit(destinationId?: string) {\n\t\t\tif (!destinationId) return;\n\t\t\tconst editDestination = this.logStreamingStore.getDestination(destinationId);\n\t\t\tif (editDestination) {\n\t\t\t\tthis.uiStore.openModalWithData({\n\t\t\t\t\tname: LOG_STREAM_MODAL_KEY,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tdestination: editDestination,\n\t\t\t\t\t\tisNew: false,\n\t\t\t\t\t\teventBus: this.eventBus,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.header {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.destinationItem {\n\tmargin-bottom: 0.5em;\n}\n</style>\n"],"names":["DESTINATION_LIST_ITEM_ACTIONS","_sfc_main$1","defineComponent","useMessage","EnterpriseEditionFeature","deepCopy","defaultMessageEventBusDestinationOptions","_a","mapStores","useLogStreamingStore","actions","event","cardActions","target","state","action","MODAL_CONFIRM","_resolveComponent","_openBlock","_createBlock","_component_n8n_card","_normalizeClass","_ctx","_withCtx","_createElementVNode","_createVNode","_component_n8n_heading","_createTextVNode","_toDisplayString","_component_n8n_text","$style","nodeParameters","readonly","$locale","_cache","$event","_component_n8n_action_toggle","onAction","_sfc_main","EventDestinationCard","createEventBus","name","after","useSettingsStore","useWorkflowsStore","useUIStore","useCredentialsStore","sortedKeys","key","value","a","b","hasPermission","eventNamesData","eventName","destinationData","destination","newDestination","uuid","nextTick","LOG_STREAM_MODAL_KEY","destinationId","foundNode","editDestination","_hoisted_1","_hoisted_2","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","environment","_createElementBlock","_Fragment","disableLicense","_component_el_switch","_createCommentVNode","isLicensed","_hoisted_3","_component_n8n_info_tip","_hoisted_4","storeHasItems","_renderList","item","_component_el_row","_component_el_col","logStreamingStore","_component_EventDestinationCard","canManageLogStreaming","_b","_component_n8n_button","_component_n8n_action_box","_hoisted_10","goToUpgrade","_hoisted_11"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as v,cD as M,i as _,b as U,a as A,cE as I,cF as $,w as z}from"./index-
|
|
2
|
-
//# sourceMappingURL=SettingsPersonalView-
|
|
1
|
+
import{u as v,cD as M,i as _,b as U,a as A,cE as I,cF as $,w as z}from"./index-DEwaaDne.js";import{m as B}from"./pinia-BAhPp3pQ.js";import{b as N,_ as w}from"./n8n-B6cfQsVX.js";import{G as D,l as i,m as c,p as s,U as t,O as a,S as o,T as r,I as u,R as h,M as b,F as P,a7 as V,ag as l}from"./vendor-Dv5OeN6t.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const q=D({name:"SettingsPersonalView",setup(){return{i18n:z(),...v()}},data(){return{hasAnyBasicInfoChanges:!1,formInputs:null,formBus:N(),readyToSubmit:!1,mfaDocsUrl:M,currentSelectedTheme:_().theme,themeOptions:[{name:"system",label:"settings.personal.theme.systemDefault"},{name:"light",label:"settings.personal.theme.light"},{name:"dark",label:"settings.personal.theme.dark"}]}},computed:{...B(_,A,U),currentUser(){return this.usersStore.currentUser},isExternalAuthEnabled(){var m;const e=this.settingsStore.settings.enterprise.ldap&&((m=this.currentUser)==null?void 0:m.signInType)==="ldap",n=this.settingsStore.isSamlLoginEnabled&&this.settingsStore.isDefaultAuthenticationSaml;return e||n},isPersonalSecurityEnabled(){return this.usersStore.isInstanceOwner||!this.isExternalAuthEnabled},mfaDisabled(){return!this.usersStore.mfaEnabled},isMfaFeatureEnabled(){return this.settingsStore.isMfaFeatureEnabled},hasAnyPersonalisationChanges(){return this.currentSelectedTheme!==this.uiStore.theme},hasAnyChanges(){return this.hasAnyBasicInfoChanges||this.hasAnyPersonalisationChanges}},mounted(){var e,n,m;this.formInputs=[{name:"firstName",initialValue:(e=this.currentUser)==null?void 0:e.firstName,properties:{label:this.i18n.baseText("auth.firstName"),maxlength:32,required:!0,autocomplete:"given-name",capitalize:!0,disabled:this.isExternalAuthEnabled}},{name:"lastName",initialValue:(n=this.currentUser)==null?void 0:n.lastName,properties:{label:this.i18n.baseText("auth.lastName"),maxlength:32,required:!0,autocomplete:"family-name",capitalize:!0,disabled:this.isExternalAuthEnabled}},{name:"email",initialValue:(m=this.currentUser)==null?void 0:m.email,properties:{label:this.i18n.baseText("auth.email"),type:"email",required:!0,validationRules:[{name:"VALID_EMAIL"}],autocomplete:"email",capitalize:!0,disabled:!this.isPersonalSecurityEnabled}}]},methods:{onInput(){this.hasAnyBasicInfoChanges=!0},onReadyToSubmit(e){this.readyToSubmit=e},async onSubmit(e){try{await Promise.all([this.updateUserBasicInfo(e),this.updatePersonalisationSettings()]),this.showToast({title:this.i18n.baseText("settings.personal.personalSettingsUpdated"),message:"",type:"success"})}catch(n){this.showError(n,this.i18n.baseText("settings.personal.personalSettingsUpdatedError"))}},async updateUserBasicInfo(e){!this.hasAnyBasicInfoChanges||!this.usersStore.currentUserId||(await this.usersStore.updateUser({id:this.usersStore.currentUserId,firstName:e.firstName,lastName:e.lastName,email:e.email}),this.hasAnyBasicInfoChanges=!1)},async updatePersonalisationSettings(){this.hasAnyPersonalisationChanges&&this.uiStore.setTheme(this.currentSelectedTheme)},onSaveClick(){this.formBus.emit("submit")},openPasswordModal(){this.uiStore.openModal(I)},onMfaEnableClick(){this.uiStore.openModal($)},async onMfaDisableClick(){try{await this.usersStore.disabledMfa(),this.showToast({title:this.$locale.baseText("settings.personal.mfa.toast.disabledMfa.title"),message:this.$locale.baseText("settings.personal.mfa.toast.disabledMfa.message"),type:"success",duration:0})}catch(e){this.showError(e,this.$locale.baseText("settings.personal.mfa.toast.disabledMfa.error.message"))}}}}),F="_container_z1fqc_1",L="_header_z1fqc_8",O="_user_z1fqc_17",R="_username_z1fqc_27",G="_disableMfaButton_z1fqc_39",K="_button_z1fqc_46",Y="_infoText_z1fqc_53",H="_themeSelect_z1fqc_58",W={container:F,header:L,user:O,username:R,disableMfaButton:G,button:K,infoText:Y,themeSelect:H},j={class:"mb-s"},J={"data-test-id":"personal-data-form"},Q={key:0},X={class:"mb-s"},Z={class:"mb-s"},x={key:0,"data-test-id":"mfa-section"},ee={class:"mb-xs"},te={class:"mb-s"};function se(e,n,m,ne,ie,le){const p=l("n8n-heading"),S=l("n8n-text"),T=l("n8n-avatar"),C=l("n8n-form-inputs"),y=l("n8n-link"),f=l("n8n-input-label"),g=l("n8n-button"),E=l("n8n-option"),k=l("n8n-select");return i(),c("div",{class:u(e.$style.container),"data-test-id":"personal-settings-container"},[s("div",{class:u(e.$style.header)},[t(p,{size:"2xlarge"},{default:a(()=>[o(r(e.i18n.baseText("settings.personal.personalSettings")),1)]),_:1}),e.currentUser?(i(),c("div",{key:0,class:u(e.$style.user)},[s("span",{class:u(e.$style.username),"data-test-id":"current-user-name"},[t(S,{color:"text-light"},{default:a(()=>[o(r(e.currentUser.fullName),1)]),_:1})],2),t(T,{"first-name":e.currentUser.firstName,"last-name":e.currentUser.lastName,size:"large"},null,8,["first-name","last-name"])],2)):h("",!0)],2),s("div",null,[s("div",j,[t(p,{size:"large"},{default:a(()=>[o(r(e.i18n.baseText("settings.personal.basicInformation")),1)]),_:1})]),s("div",J,[e.formInputs?(i(),b(C,{key:0,inputs:e.formInputs,"event-bus":e.formBus,onUpdate:e.onInput,onReady:e.onReadyToSubmit,onSubmit:e.onSubmit},null,8,["inputs","event-bus","onUpdate","onReady","onSubmit"])):h("",!0)])]),e.isPersonalSecurityEnabled?(i(),c("div",Q,[s("div",X,[t(p,{size:"large"},{default:a(()=>[o(r(e.i18n.baseText("settings.personal.security")),1)]),_:1})]),s("div",Z,[t(f,{label:e.i18n.baseText("auth.password")},{default:a(()=>[t(y,{"data-test-id":"change-password-link",onClick:e.openPasswordModal},{default:a(()=>[o(r(e.i18n.baseText("auth.changePassword")),1)]),_:1},8,["onClick"])]),_:1},8,["label"])]),e.isMfaFeatureEnabled?(i(),c("div",x,[s("div",ee,[t(f,{label:e.$locale.baseText("settings.personal.mfa.section.title")},null,8,["label"]),t(S,{bold:!1,class:u(e.$style.infoText)},{default:a(()=>[o(r(e.mfaDisabled?e.$locale.baseText("settings.personal.mfa.button.disabled.infobox"):e.$locale.baseText("settings.personal.mfa.button.enabled.infobox"))+" ",1),t(y,{to:e.mfaDocsUrl,size:"small",bold:!0},{default:a(()=>[o(r(e.$locale.baseText("generic.learnMore")),1)]),_:1},8,["to"])]),_:1},8,["class"])]),e.mfaDisabled?(i(),b(g,{key:0,class:u(e.$style.button),type:"tertiary",label:e.$locale.baseText("settings.personal.mfa.button.enabled"),"data-test-id":"enable-mfa-button",onClick:e.onMfaEnableClick},null,8,["class","label","onClick"])):(i(),b(g,{key:1,class:u(e.$style.disableMfaButton),type:"tertiary",label:e.$locale.baseText("settings.personal.mfa.button.disabled"),"data-test-id":"disable-mfa-button",onClick:e.onMfaDisableClick},null,8,["class","label","onClick"]))])):h("",!0)])):h("",!0),s("div",null,[s("div",te,[t(p,{size:"large"},{default:a(()=>[o(r(e.i18n.baseText("settings.personal.personalisation")),1)]),_:1})]),s("div",null,[t(f,{label:e.i18n.baseText("settings.personal.theme")},{default:a(()=>[t(k,{modelValue:e.currentSelectedTheme,"onUpdate:modelValue":n[0]||(n[0]=d=>e.currentSelectedTheme=d),class:u(e.$style.themeSelect),"data-test-id":"theme-select",size:"small",filterable:""},{default:a(()=>[(i(!0),c(P,null,V(e.themeOptions,d=>(i(),b(E,{key:d.name,label:e.$t(d.label),value:d.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["label"])])]),s("div",null,[t(g,{float:"right",label:e.i18n.baseText("settings.personal.save"),size:"large",disabled:!e.hasAnyChanges||!e.readyToSubmit,"data-test-id":"save-settings-button",onClick:e.onSaveClick},null,8,["label","disabled","onClick"])])],2)}const ae={$style:W},Pe=w(q,[["render",se],["__cssModules",ae]]);export{Pe as default};
|
|
2
|
+
//# sourceMappingURL=SettingsPersonalView-BxS-VIeh.js.map
|
package/dist/assets/{SettingsPersonalView-BgQQgYy0.js.map → SettingsPersonalView-BxS-VIeh.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPersonalView-BgQQgYy0.js","sources":["../../src/views/SettingsPersonalView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\" data-test-id=\"personal-settings-container\">\n\t\t<div :class=\"$style.header\">\n\t\t\t<n8n-heading size=\"2xlarge\">{{\n\t\t\t\ti18n.baseText('settings.personal.personalSettings')\n\t\t\t}}</n8n-heading>\n\t\t\t<div v-if=\"currentUser\" :class=\"$style.user\">\n\t\t\t\t<span :class=\"$style.username\" data-test-id=\"current-user-name\">\n\t\t\t\t\t<n8n-text color=\"text-light\">{{ currentUser.fullName }}</n8n-text>\n\t\t\t\t</span>\n\t\t\t\t<n8n-avatar\n\t\t\t\t\t:first-name=\"currentUser.firstName\"\n\t\t\t\t\t:last-name=\"currentUser.lastName\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div>\n\t\t\t<div class=\"mb-s\">\n\t\t\t\t<n8n-heading size=\"large\">{{\n\t\t\t\t\ti18n.baseText('settings.personal.basicInformation')\n\t\t\t\t}}</n8n-heading>\n\t\t\t</div>\n\t\t\t<div data-test-id=\"personal-data-form\">\n\t\t\t\t<n8n-form-inputs\n\t\t\t\t\tv-if=\"formInputs\"\n\t\t\t\t\t:inputs=\"formInputs\"\n\t\t\t\t\t:event-bus=\"formBus\"\n\t\t\t\t\t@update=\"onInput\"\n\t\t\t\t\t@ready=\"onReadyToSubmit\"\n\t\t\t\t\t@submit=\"onSubmit\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"isPersonalSecurityEnabled\">\n\t\t\t<div class=\"mb-s\">\n\t\t\t\t<n8n-heading size=\"large\">{{ i18n.baseText('settings.personal.security') }}</n8n-heading>\n\t\t\t</div>\n\t\t\t<div class=\"mb-s\">\n\t\t\t\t<n8n-input-label :label=\"i18n.baseText('auth.password')\">\n\t\t\t\t\t<n8n-link data-test-id=\"change-password-link\" @click=\"openPasswordModal\">{{\n\t\t\t\t\t\ti18n.baseText('auth.changePassword')\n\t\t\t\t\t}}</n8n-link>\n\t\t\t\t</n8n-input-label>\n\t\t\t</div>\n\t\t\t<div v-if=\"isMfaFeatureEnabled\" data-test-id=\"mfa-section\">\n\t\t\t\t<div class=\"mb-xs\">\n\t\t\t\t\t<n8n-input-label :label=\"$locale.baseText('settings.personal.mfa.section.title')\" />\n\t\t\t\t\t<n8n-text :bold=\"false\" :class=\"$style.infoText\">\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tmfaDisabled\n\t\t\t\t\t\t\t\t? $locale.baseText('settings.personal.mfa.button.disabled.infobox')\n\t\t\t\t\t\t\t\t: $locale.baseText('settings.personal.mfa.button.enabled.infobox')\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t<n8n-link :to=\"mfaDocsUrl\" size=\"small\" :bold=\"true\">\n\t\t\t\t\t\t\t{{ $locale.baseText('generic.learnMore') }}\n\t\t\t\t\t\t</n8n-link>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-if=\"mfaDisabled\"\n\t\t\t\t\t:class=\"$style.button\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:label=\"$locale.baseText('settings.personal.mfa.button.enabled')\"\n\t\t\t\t\tdata-test-id=\"enable-mfa-button\"\n\t\t\t\t\t@click=\"onMfaEnableClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-else\n\t\t\t\t\t:class=\"$style.disableMfaButton\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:label=\"$locale.baseText('settings.personal.mfa.button.disabled')\"\n\t\t\t\t\tdata-test-id=\"disable-mfa-button\"\n\t\t\t\t\t@click=\"onMfaDisableClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div>\n\t\t\t<div class=\"mb-s\">\n\t\t\t\t<n8n-heading size=\"large\">{{\n\t\t\t\t\ti18n.baseText('settings.personal.personalisation')\n\t\t\t\t}}</n8n-heading>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<n8n-input-label :label=\"i18n.baseText('settings.personal.theme')\">\n\t\t\t\t\t<n8n-select\n\t\t\t\t\t\tv-model=\"currentSelectedTheme\"\n\t\t\t\t\t\t:class=\"$style.themeSelect\"\n\t\t\t\t\t\tdata-test-id=\"theme-select\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tfilterable\n\t\t\t\t\t>\n\t\t\t\t\t\t<n8n-option\n\t\t\t\t\t\t\tv-for=\"item in themeOptions\"\n\t\t\t\t\t\t\t:key=\"item.name\"\n\t\t\t\t\t\t\t:label=\"$t(item.label)\"\n\t\t\t\t\t\t\t:value=\"item.name\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t</n8n-option>\n\t\t\t\t\t</n8n-select>\n\t\t\t\t</n8n-input-label>\n\t\t\t</div>\n\t\t</div>\n\t\t<div>\n\t\t\t<n8n-button\n\t\t\t\tfloat=\"right\"\n\t\t\t\t:label=\"i18n.baseText('settings.personal.save')\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t:disabled=\"!hasAnyChanges || !readyToSubmit\"\n\t\t\t\tdata-test-id=\"save-settings-button\"\n\t\t\t\t@click=\"onSaveClick\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\nimport type { IFormInputs, IUser, ThemeOption } from '@/Interface';\nimport { CHANGE_PASSWORD_MODAL_KEY, MFA_DOCS_URL, MFA_SETUP_MODAL_KEY } from '@/constants';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport { createEventBus } from 'n8n-design-system/utils';\n\nexport default defineComponent({\n\tname: 'SettingsPersonalView',\n\tsetup() {\n\t\tconst i18n = useI18n();\n\n\t\treturn {\n\t\t\ti18n,\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\thasAnyBasicInfoChanges: false,\n\t\t\tformInputs: null as null | IFormInputs,\n\t\t\tformBus: createEventBus(),\n\t\t\treadyToSubmit: false,\n\t\t\tmfaDocsUrl: MFA_DOCS_URL,\n\t\t\tcurrentSelectedTheme: useUIStore().theme,\n\t\t\tthemeOptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'system',\n\t\t\t\t\tlabel: 'settings.personal.theme.systemDefault',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'light',\n\t\t\t\t\tlabel: 'settings.personal.theme.light',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'dark',\n\t\t\t\t\tlabel: 'settings.personal.theme.dark',\n\t\t\t\t},\n\t\t\t] as Array<{ name: ThemeOption; label: string }>,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore, useUsersStore, useSettingsStore),\n\t\tcurrentUser(): IUser | null {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisExternalAuthEnabled(): boolean {\n\t\t\tconst isLdapEnabled =\n\t\t\t\tthis.settingsStore.settings.enterprise.ldap && this.currentUser?.signInType === 'ldap';\n\t\t\tconst isSamlEnabled =\n\t\t\t\tthis.settingsStore.isSamlLoginEnabled && this.settingsStore.isDefaultAuthenticationSaml;\n\t\t\treturn isLdapEnabled || isSamlEnabled;\n\t\t},\n\t\tisPersonalSecurityEnabled(): boolean {\n\t\t\treturn this.usersStore.isInstanceOwner || !this.isExternalAuthEnabled;\n\t\t},\n\t\tmfaDisabled(): boolean {\n\t\t\treturn !this.usersStore.mfaEnabled;\n\t\t},\n\t\tisMfaFeatureEnabled(): boolean {\n\t\t\treturn this.settingsStore.isMfaFeatureEnabled;\n\t\t},\n\t\thasAnyPersonalisationChanges(): boolean {\n\t\t\treturn this.currentSelectedTheme !== this.uiStore.theme;\n\t\t},\n\t\thasAnyChanges() {\n\t\t\treturn this.hasAnyBasicInfoChanges || this.hasAnyPersonalisationChanges;\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.formInputs = [\n\t\t\t{\n\t\t\t\tname: 'firstName',\n\t\t\t\tinitialValue: this.currentUser?.firstName,\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: this.i18n.baseText('auth.firstName'),\n\t\t\t\t\tmaxlength: 32,\n\t\t\t\t\trequired: true,\n\t\t\t\t\tautocomplete: 'given-name',\n\t\t\t\t\tcapitalize: true,\n\t\t\t\t\tdisabled: this.isExternalAuthEnabled,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'lastName',\n\t\t\t\tinitialValue: this.currentUser?.lastName,\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: this.i18n.baseText('auth.lastName'),\n\t\t\t\t\tmaxlength: 32,\n\t\t\t\t\trequired: true,\n\t\t\t\t\tautocomplete: 'family-name',\n\t\t\t\t\tcapitalize: true,\n\t\t\t\t\tdisabled: this.isExternalAuthEnabled,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'email',\n\t\t\t\tinitialValue: this.currentUser?.email,\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: this.i18n.baseText('auth.email'),\n\t\t\t\t\ttype: 'email',\n\t\t\t\t\trequired: true,\n\t\t\t\t\tvalidationRules: [{ name: 'VALID_EMAIL' }],\n\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\tcapitalize: true,\n\t\t\t\t\tdisabled: !this.isPersonalSecurityEnabled,\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n\tmethods: {\n\t\tonInput() {\n\t\t\tthis.hasAnyBasicInfoChanges = true;\n\t\t},\n\t\tonReadyToSubmit(ready: boolean) {\n\t\t\tthis.readyToSubmit = ready;\n\t\t},\n\t\tasync onSubmit(form: { firstName: string; lastName: string; email: string }) {\n\t\t\ttry {\n\t\t\t\tawait Promise.all([this.updateUserBasicInfo(form), this.updatePersonalisationSettings()]);\n\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.i18n.baseText('settings.personal.personalSettingsUpdated'),\n\t\t\t\t\tmessage: '',\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tthis.showError(e, this.i18n.baseText('settings.personal.personalSettingsUpdatedError'));\n\t\t\t}\n\t\t},\n\t\tasync updateUserBasicInfo(form: { firstName: string; lastName: string; email: string }) {\n\t\t\tif (!this.hasAnyBasicInfoChanges || !this.usersStore.currentUserId) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait this.usersStore.updateUser({\n\t\t\t\tid: this.usersStore.currentUserId,\n\t\t\t\tfirstName: form.firstName,\n\t\t\t\tlastName: form.lastName,\n\t\t\t\temail: form.email,\n\t\t\t});\n\t\t\tthis.hasAnyBasicInfoChanges = false;\n\t\t},\n\t\tasync updatePersonalisationSettings() {\n\t\t\tif (!this.hasAnyPersonalisationChanges) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.uiStore.setTheme(this.currentSelectedTheme);\n\t\t},\n\t\tonSaveClick() {\n\t\t\tthis.formBus.emit('submit');\n\t\t},\n\t\topenPasswordModal() {\n\t\t\tthis.uiStore.openModal(CHANGE_PASSWORD_MODAL_KEY);\n\t\t},\n\t\tonMfaEnableClick() {\n\t\t\tthis.uiStore.openModal(MFA_SETUP_MODAL_KEY);\n\t\t},\n\t\tasync onMfaDisableClick() {\n\t\t\ttry {\n\t\t\t\tawait this.usersStore.disabledMfa();\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.personal.mfa.toast.disabledMfa.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.personal.mfa.toast.disabledMfa.message'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\tduration: 0,\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tthis.showError(\n\t\t\t\t\te,\n\t\t\t\t\tthis.$locale.baseText('settings.personal.mfa.toast.disabledMfa.error.message'),\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n\tpadding-bottom: 100px;\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.user {\n\tdisplay: flex;\n\talign-items: center;\n\n\t@media (max-width: $breakpoint-2xs) {\n\t\tdisplay: none;\n\t}\n}\n\n.username {\n\tmargin-right: var(--spacing-s);\n\ttext-align: right;\n\n\t@media (max-width: $breakpoint-sm) {\n\t\tmax-width: 100px;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n.disableMfaButton {\n\t--button-color: var(--color-danger);\n\t> span {\n\t\tfont-weight: var(--font-weight-bold);\n\t}\n}\n\n.button {\n\tfont-size: var(--spacing-xs);\n\t> span {\n\t\tfont-weight: var(--font-weight-bold);\n\t}\n}\n\n.infoText {\n\tfont-size: var(--font-size-2xs);\n\tcolor: var(--color-text-light);\n}\n\n.themeSelect {\n\tmax-width: 50%;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","useI18n","useToast","createEventBus","MFA_DOCS_URL","useUIStore","mapStores","useUsersStore","useSettingsStore","isLdapEnabled","_a","isSamlEnabled","_b","_c","ready","form","e","CHANGE_PASSWORD_MODAL_KEY","MFA_SETUP_MODAL_KEY","_hoisted_1","_hoisted_3","_hoisted_5","_hoisted_6","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_createVNode","_component_n8n_heading","i18n","_withCtx","_createTextVNode","_toDisplayString","currentUser","$style","_createElementVNode","_component_n8n_text","_component_n8n_avatar","_createCommentVNode","_hoisted_2","_createBlock","_component_n8n_form_inputs","onInput","onReadyToSubmit","onSubmit","isPersonalSecurityEnabled","_hoisted_4","_component_n8n_input_label","openPasswordModal","isMfaFeatureEnabled","$locale","_hoisted_7","mfaDocsUrl","_component_n8n_link","onMfaEnableClick","onMfaDisableClick","_hoisted_8","currentSelectedTheme","_component_n8n_select","_cache","$event","_Fragment","_renderList","item","_component_n8n_option","hasAnyChanges","readyToSubmit","onSaveClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsPersonalView-BxS-VIeh.js","sources":["../../src/views/SettingsPersonalView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\" data-test-id=\"personal-settings-container\">\n\t\t<div :class=\"$style.header\">\n\t\t\t<n8n-heading size=\"2xlarge\">{{\n\t\t\t\ti18n.baseText('settings.personal.personalSettings')\n\t\t\t}}</n8n-heading>\n\t\t\t<div v-if=\"currentUser\" :class=\"$style.user\">\n\t\t\t\t<span :class=\"$style.username\" data-test-id=\"current-user-name\">\n\t\t\t\t\t<n8n-text color=\"text-light\">{{ currentUser.fullName }}</n8n-text>\n\t\t\t\t</span>\n\t\t\t\t<n8n-avatar\n\t\t\t\t\t:first-name=\"currentUser.firstName\"\n\t\t\t\t\t:last-name=\"currentUser.lastName\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div>\n\t\t\t<div class=\"mb-s\">\n\t\t\t\t<n8n-heading size=\"large\">{{\n\t\t\t\t\ti18n.baseText('settings.personal.basicInformation')\n\t\t\t\t}}</n8n-heading>\n\t\t\t</div>\n\t\t\t<div data-test-id=\"personal-data-form\">\n\t\t\t\t<n8n-form-inputs\n\t\t\t\t\tv-if=\"formInputs\"\n\t\t\t\t\t:inputs=\"formInputs\"\n\t\t\t\t\t:event-bus=\"formBus\"\n\t\t\t\t\t@update=\"onInput\"\n\t\t\t\t\t@ready=\"onReadyToSubmit\"\n\t\t\t\t\t@submit=\"onSubmit\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"isPersonalSecurityEnabled\">\n\t\t\t<div class=\"mb-s\">\n\t\t\t\t<n8n-heading size=\"large\">{{ i18n.baseText('settings.personal.security') }}</n8n-heading>\n\t\t\t</div>\n\t\t\t<div class=\"mb-s\">\n\t\t\t\t<n8n-input-label :label=\"i18n.baseText('auth.password')\">\n\t\t\t\t\t<n8n-link data-test-id=\"change-password-link\" @click=\"openPasswordModal\">{{\n\t\t\t\t\t\ti18n.baseText('auth.changePassword')\n\t\t\t\t\t}}</n8n-link>\n\t\t\t\t</n8n-input-label>\n\t\t\t</div>\n\t\t\t<div v-if=\"isMfaFeatureEnabled\" data-test-id=\"mfa-section\">\n\t\t\t\t<div class=\"mb-xs\">\n\t\t\t\t\t<n8n-input-label :label=\"$locale.baseText('settings.personal.mfa.section.title')\" />\n\t\t\t\t\t<n8n-text :bold=\"false\" :class=\"$style.infoText\">\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tmfaDisabled\n\t\t\t\t\t\t\t\t? $locale.baseText('settings.personal.mfa.button.disabled.infobox')\n\t\t\t\t\t\t\t\t: $locale.baseText('settings.personal.mfa.button.enabled.infobox')\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t<n8n-link :to=\"mfaDocsUrl\" size=\"small\" :bold=\"true\">\n\t\t\t\t\t\t\t{{ $locale.baseText('generic.learnMore') }}\n\t\t\t\t\t\t</n8n-link>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-if=\"mfaDisabled\"\n\t\t\t\t\t:class=\"$style.button\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:label=\"$locale.baseText('settings.personal.mfa.button.enabled')\"\n\t\t\t\t\tdata-test-id=\"enable-mfa-button\"\n\t\t\t\t\t@click=\"onMfaEnableClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-else\n\t\t\t\t\t:class=\"$style.disableMfaButton\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:label=\"$locale.baseText('settings.personal.mfa.button.disabled')\"\n\t\t\t\t\tdata-test-id=\"disable-mfa-button\"\n\t\t\t\t\t@click=\"onMfaDisableClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div>\n\t\t\t<div class=\"mb-s\">\n\t\t\t\t<n8n-heading size=\"large\">{{\n\t\t\t\t\ti18n.baseText('settings.personal.personalisation')\n\t\t\t\t}}</n8n-heading>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<n8n-input-label :label=\"i18n.baseText('settings.personal.theme')\">\n\t\t\t\t\t<n8n-select\n\t\t\t\t\t\tv-model=\"currentSelectedTheme\"\n\t\t\t\t\t\t:class=\"$style.themeSelect\"\n\t\t\t\t\t\tdata-test-id=\"theme-select\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tfilterable\n\t\t\t\t\t>\n\t\t\t\t\t\t<n8n-option\n\t\t\t\t\t\t\tv-for=\"item in themeOptions\"\n\t\t\t\t\t\t\t:key=\"item.name\"\n\t\t\t\t\t\t\t:label=\"$t(item.label)\"\n\t\t\t\t\t\t\t:value=\"item.name\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t</n8n-option>\n\t\t\t\t\t</n8n-select>\n\t\t\t\t</n8n-input-label>\n\t\t\t</div>\n\t\t</div>\n\t\t<div>\n\t\t\t<n8n-button\n\t\t\t\tfloat=\"right\"\n\t\t\t\t:label=\"i18n.baseText('settings.personal.save')\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t:disabled=\"!hasAnyChanges || !readyToSubmit\"\n\t\t\t\tdata-test-id=\"save-settings-button\"\n\t\t\t\t@click=\"onSaveClick\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\nimport type { IFormInputs, IUser, ThemeOption } from '@/Interface';\nimport { CHANGE_PASSWORD_MODAL_KEY, MFA_DOCS_URL, MFA_SETUP_MODAL_KEY } from '@/constants';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport { createEventBus } from 'n8n-design-system/utils';\n\nexport default defineComponent({\n\tname: 'SettingsPersonalView',\n\tsetup() {\n\t\tconst i18n = useI18n();\n\n\t\treturn {\n\t\t\ti18n,\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\thasAnyBasicInfoChanges: false,\n\t\t\tformInputs: null as null | IFormInputs,\n\t\t\tformBus: createEventBus(),\n\t\t\treadyToSubmit: false,\n\t\t\tmfaDocsUrl: MFA_DOCS_URL,\n\t\t\tcurrentSelectedTheme: useUIStore().theme,\n\t\t\tthemeOptions: [\n\t\t\t\t{\n\t\t\t\t\tname: 'system',\n\t\t\t\t\tlabel: 'settings.personal.theme.systemDefault',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'light',\n\t\t\t\t\tlabel: 'settings.personal.theme.light',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'dark',\n\t\t\t\t\tlabel: 'settings.personal.theme.dark',\n\t\t\t\t},\n\t\t\t] as Array<{ name: ThemeOption; label: string }>,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore, useUsersStore, useSettingsStore),\n\t\tcurrentUser(): IUser | null {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisExternalAuthEnabled(): boolean {\n\t\t\tconst isLdapEnabled =\n\t\t\t\tthis.settingsStore.settings.enterprise.ldap && this.currentUser?.signInType === 'ldap';\n\t\t\tconst isSamlEnabled =\n\t\t\t\tthis.settingsStore.isSamlLoginEnabled && this.settingsStore.isDefaultAuthenticationSaml;\n\t\t\treturn isLdapEnabled || isSamlEnabled;\n\t\t},\n\t\tisPersonalSecurityEnabled(): boolean {\n\t\t\treturn this.usersStore.isInstanceOwner || !this.isExternalAuthEnabled;\n\t\t},\n\t\tmfaDisabled(): boolean {\n\t\t\treturn !this.usersStore.mfaEnabled;\n\t\t},\n\t\tisMfaFeatureEnabled(): boolean {\n\t\t\treturn this.settingsStore.isMfaFeatureEnabled;\n\t\t},\n\t\thasAnyPersonalisationChanges(): boolean {\n\t\t\treturn this.currentSelectedTheme !== this.uiStore.theme;\n\t\t},\n\t\thasAnyChanges() {\n\t\t\treturn this.hasAnyBasicInfoChanges || this.hasAnyPersonalisationChanges;\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.formInputs = [\n\t\t\t{\n\t\t\t\tname: 'firstName',\n\t\t\t\tinitialValue: this.currentUser?.firstName,\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: this.i18n.baseText('auth.firstName'),\n\t\t\t\t\tmaxlength: 32,\n\t\t\t\t\trequired: true,\n\t\t\t\t\tautocomplete: 'given-name',\n\t\t\t\t\tcapitalize: true,\n\t\t\t\t\tdisabled: this.isExternalAuthEnabled,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'lastName',\n\t\t\t\tinitialValue: this.currentUser?.lastName,\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: this.i18n.baseText('auth.lastName'),\n\t\t\t\t\tmaxlength: 32,\n\t\t\t\t\trequired: true,\n\t\t\t\t\tautocomplete: 'family-name',\n\t\t\t\t\tcapitalize: true,\n\t\t\t\t\tdisabled: this.isExternalAuthEnabled,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'email',\n\t\t\t\tinitialValue: this.currentUser?.email,\n\t\t\t\tproperties: {\n\t\t\t\t\tlabel: this.i18n.baseText('auth.email'),\n\t\t\t\t\ttype: 'email',\n\t\t\t\t\trequired: true,\n\t\t\t\t\tvalidationRules: [{ name: 'VALID_EMAIL' }],\n\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\tcapitalize: true,\n\t\t\t\t\tdisabled: !this.isPersonalSecurityEnabled,\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n\tmethods: {\n\t\tonInput() {\n\t\t\tthis.hasAnyBasicInfoChanges = true;\n\t\t},\n\t\tonReadyToSubmit(ready: boolean) {\n\t\t\tthis.readyToSubmit = ready;\n\t\t},\n\t\tasync onSubmit(form: { firstName: string; lastName: string; email: string }) {\n\t\t\ttry {\n\t\t\t\tawait Promise.all([this.updateUserBasicInfo(form), this.updatePersonalisationSettings()]);\n\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.i18n.baseText('settings.personal.personalSettingsUpdated'),\n\t\t\t\t\tmessage: '',\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tthis.showError(e, this.i18n.baseText('settings.personal.personalSettingsUpdatedError'));\n\t\t\t}\n\t\t},\n\t\tasync updateUserBasicInfo(form: { firstName: string; lastName: string; email: string }) {\n\t\t\tif (!this.hasAnyBasicInfoChanges || !this.usersStore.currentUserId) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait this.usersStore.updateUser({\n\t\t\t\tid: this.usersStore.currentUserId,\n\t\t\t\tfirstName: form.firstName,\n\t\t\t\tlastName: form.lastName,\n\t\t\t\temail: form.email,\n\t\t\t});\n\t\t\tthis.hasAnyBasicInfoChanges = false;\n\t\t},\n\t\tasync updatePersonalisationSettings() {\n\t\t\tif (!this.hasAnyPersonalisationChanges) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.uiStore.setTheme(this.currentSelectedTheme);\n\t\t},\n\t\tonSaveClick() {\n\t\t\tthis.formBus.emit('submit');\n\t\t},\n\t\topenPasswordModal() {\n\t\t\tthis.uiStore.openModal(CHANGE_PASSWORD_MODAL_KEY);\n\t\t},\n\t\tonMfaEnableClick() {\n\t\t\tthis.uiStore.openModal(MFA_SETUP_MODAL_KEY);\n\t\t},\n\t\tasync onMfaDisableClick() {\n\t\t\ttry {\n\t\t\t\tawait this.usersStore.disabledMfa();\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.personal.mfa.toast.disabledMfa.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.personal.mfa.toast.disabledMfa.message'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t\tduration: 0,\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tthis.showError(\n\t\t\t\t\te,\n\t\t\t\t\tthis.$locale.baseText('settings.personal.mfa.toast.disabledMfa.error.message'),\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n\tpadding-bottom: 100px;\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.user {\n\tdisplay: flex;\n\talign-items: center;\n\n\t@media (max-width: $breakpoint-2xs) {\n\t\tdisplay: none;\n\t}\n}\n\n.username {\n\tmargin-right: var(--spacing-s);\n\ttext-align: right;\n\n\t@media (max-width: $breakpoint-sm) {\n\t\tmax-width: 100px;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n.disableMfaButton {\n\t--button-color: var(--color-danger);\n\t> span {\n\t\tfont-weight: var(--font-weight-bold);\n\t}\n}\n\n.button {\n\tfont-size: var(--spacing-xs);\n\t> span {\n\t\tfont-weight: var(--font-weight-bold);\n\t}\n}\n\n.infoText {\n\tfont-size: var(--font-size-2xs);\n\tcolor: var(--color-text-light);\n}\n\n.themeSelect {\n\tmax-width: 50%;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","useI18n","useToast","createEventBus","MFA_DOCS_URL","useUIStore","mapStores","useUsersStore","useSettingsStore","isLdapEnabled","_a","isSamlEnabled","_b","_c","ready","form","e","CHANGE_PASSWORD_MODAL_KEY","MFA_SETUP_MODAL_KEY","_hoisted_1","_hoisted_3","_hoisted_5","_hoisted_6","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_ctx","_createVNode","_component_n8n_heading","i18n","_withCtx","_createTextVNode","_toDisplayString","currentUser","$style","_createElementVNode","_component_n8n_text","_component_n8n_avatar","_createCommentVNode","_hoisted_2","_createBlock","_component_n8n_form_inputs","onInput","onReadyToSubmit","onSubmit","isPersonalSecurityEnabled","_hoisted_4","_component_n8n_input_label","openPasswordModal","isMfaFeatureEnabled","$locale","_hoisted_7","mfaDocsUrl","_component_n8n_link","onMfaEnableClick","onMfaDisableClick","_hoisted_8","currentSelectedTheme","_component_n8n_select","_cache","$event","_Fragment","_renderList","item","_component_n8n_option","hasAnyChanges","readyToSubmit","onSaveClick"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as W,i as j,u as J,X as Y,aU as ee,w as te,z as U,G as se}from"./index-DeNtBxiT.js";import{G as oe,r as ne,e as V,b as re,Z as ae,l as m,m as x,U as c,O as a,S as h,T as r,u as s,p as n,I as l,M as _,R as b,ag as g}from"./vendor-Dv5OeN6t.js";import{_ as ce}from"./n8n-B6cfQsVX.js";import"./pinia-BAhPp3pQ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const le={key:0,"data-test-id":"source-control-content-licensed"},ie=["href"],ue={for:"repoUrl"},pe=["href"],de={key:2,"data-test-id":"source-control-connected-content"},ge=n("hr",null,null,-1),me=["href"],he=oe({__name:"SettingsSourceControl",setup(we){const e=te(),o=W(),w=j(),p=J(),S=se(),y=Y(),d=ne(!1),E=V(()=>o.preferences.branches.map(t=>({value:t,label:t}))),K=async()=>{y.startLoading(),y.setLoadingText(e.baseText("settings.sourceControl.loading.connecting"));try{await o.savePreferences({repositoryUrl:o.preferences.repositoryUrl}),await o.getBranches(),d.value=!0,p.showMessage({title:e.baseText("settings.sourceControl.toast.connected.title"),message:e.baseText("settings.sourceControl.toast.connected.message"),type:"success"})}catch(t){p.showError(t,e.baseText("settings.sourceControl.toast.connected.error"))}y.stopLoading()},z=async()=>{try{await S.confirm(e.baseText("settings.sourceControl.modals.disconnect.message"),e.baseText("settings.sourceControl.modals.disconnect.title"),{confirmButtonText:e.baseText("settings.sourceControl.modals.disconnect.confirm"),cancelButtonText:e.baseText("settings.sourceControl.modals.disconnect.cancel")})===U&&(y.startLoading(),await o.disconnect(!0),d.value=!1,p.showMessage({title:e.baseText("settings.sourceControl.toast.disconnected.title"),message:e.baseText("settings.sourceControl.toast.disconnected.message"),type:"success"}))}catch(t){p.showError(t,e.baseText("settings.sourceControl.toast.disconnected.error"))}y.stopLoading()},I=async()=>{y.startLoading();try{await o.updatePreferences({branchName:o.preferences.branchName,branchReadOnly:o.preferences.branchReadOnly,branchColor:o.preferences.branchColor}),p.showMessage({title:e.baseText("settings.sourceControl.saved.title"),type:"success"})}catch(t){p.showError(t,"Error setting branch")}y.stopLoading()},$=async t=>{t!==o.preferences.branchName&&(o.preferences.branchName=t)},N=()=>{w.goToUpgrade("source-control","upgrade-source-control")},R=async()=>{await o.getPreferences(),o.preferences.connected&&(d.value=!0,o.getBranches())};re(async()=>{o.isEnterpriseSourceControlEnabled&&await R()});const B=ae({repoUrl:!1,keyGeneratorType:!1});function C(t,i){B[t]=i}const M=[{name:"REQUIRED"},{name:"MATCH_REGEX",config:{regex:/^(ssh:\/\/)?git@(?:\[[0-9a-fA-F:]+\]|(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+)(?::[0-9]+)*:(?:v[0-9]+\/)?[a-zA-Z0-9_.\-\/]+(\.git)?(?:\/[a-zA-Z0-9_.\-\/]+)*$/,message:e.baseText("settings.sourceControl.repoUrlInvalid")}}],G=[{name:"REQUIRED"}],O=V(()=>B.repoUrl),L=[{name:"REQUIRED"}];async function D(){try{await S.confirm(e.baseText("settings.sourceControl.modals.refreshSshKey.message"),e.baseText("settings.sourceControl.modals.refreshSshKey.title"),{confirmButtonText:e.baseText("settings.sourceControl.modals.refreshSshKey.confirm"),cancelButtonText:e.baseText("settings.sourceControl.modals.refreshSshKey.cancel")})===U&&(await o.generateKeyPair(o.preferences.keyGeneratorType),p.showMessage({title:e.baseText("settings.sourceControl.refreshSshKey.successful.title"),type:"success"}))}catch(t){p.showError(t,e.baseText("settings.sourceControl.refreshSshKey.error.title"))}}const A=async()=>{try{await o.getBranches(),p.showMessage({title:e.baseText("settings.sourceControl.refreshBranches.success"),type:"success"})}catch(t){p.showError(t,e.baseText("settings.sourceControl.refreshBranches.error"))}},F=async t=>{t!==o.preferences.keyGeneratorType&&(o.preferences.keyGeneratorType=t)};return(t,i)=>{const T=g("n8n-heading"),v=g("i18n-t"),P=g("n8n-callout"),k=g("n8n-form-input"),f=g("n8n-button"),Z=g("n8n-notice"),Q=g("n8n-tooltip"),X=g("n8n-checkbox"),q=g("n8n-color-picker"),H=g("n8n-action-box");return m(),x("div",null,[c(T,{size:"2xlarge",tag:"h1"},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.title")),1)]),_:1}),s(o).isEnterpriseSourceControlEnabled?(m(),x("div",le,[c(P,{theme:"secondary",icon:"info-circle",class:"mt-2xl mb-l"},{default:a(()=>[c(v,{keypath:"settings.sourceControl.description",tag:"span"},{link:a(()=>[n("a",{href:s(e).baseText("settings.sourceControl.docs.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.description.link")),9,ie)]),_:1})]),_:1}),c(T,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.gitConfig")),1)]),_:1}),n("div",{class:l(t.$style.group)},[n("label",ue,r(s(e).baseText("settings.sourceControl.repoUrl")),1),n("div",{class:l(t.$style.groupFlex)},[c(k,{id:"repoUrl",modelValue:s(o).preferences.repositoryUrl,"onUpdate:modelValue":i[0]||(i[0]=u=>s(o).preferences.repositoryUrl=u),label:"",class:"ml-0",name:"repoUrl","validate-on-blur":"","validation-rules":M,disabled:d.value,placeholder:s(e).baseText("settings.sourceControl.repoUrlPlaceholder"),onValidate:i[1]||(i[1]=u=>C("repoUrl",u))},null,8,["modelValue","disabled","placeholder"]),d.value?(m(),_(f,{key:0,class:l(t.$style.disconnectButton),type:"tertiary",size:"large",icon:"trash","data-test-id":"source-control-disconnect-button",onClick:z},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.button.disconnect")),1)]),_:1},8,["class"])):b("",!0)],2)],2),s(o).preferences.publicKey?(m(),x("div",{key:0,class:l(t.$style.group)},[n("label",null,r(s(e).baseText("settings.sourceControl.sshKey")),1),n("div",{class:l({[t.$style.sshInput]:!d.value})},[d.value?b("",!0):(m(),_(k,{key:0,id:"keyGeneratorType",class:l(t.$style.sshKeyTypeSelect),label:"",type:"select",name:"keyGeneratorType","data-test-id":"source-control-ssh-key-type-select","validate-on-blur":"","validation-rules":G,options:s(o).sshKeyTypesWithLabel,"model-value":s(o).preferences.keyGeneratorType,onValidate:i[2]||(i[2]=u=>C("keyGeneratorType",u)),"onUpdate:modelValue":F},null,8,["class","options","model-value"])),c(ee,{class:l(t.$style.copyInput),collapse:"",size:"medium",value:s(o).preferences.publicKey,"copy-button-text":s(e).baseText("generic.clickToCopy")},null,8,["class","value","copy-button-text"]),d.value?b("",!0):(m(),_(f,{key:1,size:"large",type:"tertiary",icon:"sync","data-test-id":"source-control-refresh-ssh-key-button",onClick:D},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.refreshSshKey")),1)]),_:1}))],2),c(Z,{type:"info",class:"mt-s"},{default:a(()=>[c(v,{keypath:"settings.sourceControl.sshKeyDescription",tag:"span"},{link:a(()=>[n("a",{href:s(e).baseText("settings.sourceControl.docs.setup.ssh.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.sshKeyDescriptionLink")),9,pe)]),_:1})]),_:1})],2)):b("",!0),d.value?b("",!0):(m(),_(f,{key:1,size:"large",disabled:!O.value,class:l(t.$style.connect),"data-test-id":"source-control-connect-button",onClick:K},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.button.connect")),1)]),_:1},8,["disabled","class"])),d.value?(m(),x("div",de,[n("div",{class:l(t.$style.group)},[ge,c(T,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.instanceSettings")),1)]),_:1}),n("label",null,r(s(e).baseText("settings.sourceControl.branches")),1),n("div",{class:l(t.$style.branchSelection)},[c(k,{id:"branchName",label:"",type:"select",name:"branchName",class:"mb-s","data-test-id":"source-control-branch-select","validate-on-blur":"","validation-rules":L,options:E.value,"model-value":s(o).preferences.branchName,onValidate:i[3]||(i[3]=u=>C("branchName",u)),"onUpdate:modelValue":$},null,8,["options","model-value"]),c(Q,{placement:"top"},{content:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.refreshBranches.tooltip")),1)]),default:a(()=>[c(f,{size:"small",type:"tertiary",icon:"sync",square:"",class:l(t.$style.refreshBranches),"data-test-id":"source-control-refresh-branches-button",onClick:A},null,8,["class"])]),_:1})],2),c(X,{modelValue:s(o).preferences.branchReadOnly,"onUpdate:modelValue":i[4]||(i[4]=u=>s(o).preferences.branchReadOnly=u),class:l(t.$style.readOnly)},{default:a(()=>[c(v,{keypath:"settings.sourceControl.protected",tag:"span"},{bold:a(()=>[n("strong",null,r(s(e).baseText("settings.sourceControl.protected.bold")),1)]),_:1})]),_:1},8,["modelValue","class"])],2),n("div",{class:l(t.$style.group)},[n("label",null,r(s(e).baseText("settings.sourceControl.color")),1),n("div",null,[c(q,{modelValue:s(o).preferences.branchColor,"onUpdate:modelValue":i[5]||(i[5]=u=>s(o).preferences.branchColor=u),size:"small"},null,8,["modelValue"])])],2),n("div",{class:l([t.$style.group,"pt-s"])},[c(f,{size:"large",disabled:!s(o).preferences.branchName,"data-test-id":"source-control-save-settings-button",onClick:I},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.button.save")),1)]),_:1},8,["disabled"])],2)])):b("",!0)])):(m(),_(H,{key:1,"data-test-id":"source-control-content-unlicensed",class:l(t.$style.actionBox),description:s(e).baseText("settings.sourceControl.actionBox.description"),"button-text":s(e).baseText("settings.sourceControl.actionBox.buttonText"),"onClick:button":N},{heading:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.actionBox.title")),1)]),description:a(()=>[h(r(s(e).baseText("settings.sourceControl.actionBox.description"))+" ",1),n("a",{href:s(e).baseText("settings.sourceControl.docs.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.actionBox.description.link")),9,me)]),_:1},8,["class","description","button-text"]))])}}}),ye="_group_1exsh_1",be="_readOnly_1exsh_22",fe="_groupFlex_1exsh_26",_e="_connect_1exsh_40",xe="_disconnectButton_1exsh_44",Ce="_actionBox_1exsh_49",Te="_sshInput_1exsh_53",ve="_copyInput_1exsh_64",ke="_sshKeyTypeSelect_1exsh_68",Se="_branchSelection_1exsh_76",Be="_refreshBranches_1exsh_85",Ue={group:ye,readOnly:be,groupFlex:fe,connect:_e,disconnectButton:xe,actionBox:Ce,sshInput:Te,copyInput:ve,sshKeyTypeSelect:ke,branchSelection:Se,refreshBranches:Be},Ve={$style:Ue},rt=ce(he,[["__cssModules",Ve]]);export{rt as default};
|
|
2
|
-
//# sourceMappingURL=SettingsSourceControl-
|
|
1
|
+
import{n as W,i as j,u as J,X as Y,aU as ee,w as te,z as U,G as se}from"./index-DEwaaDne.js";import{G as oe,r as ne,e as V,b as re,Z as ae,l as m,m as x,U as c,O as a,S as h,T as r,u as s,p as n,I as l,M as _,R as b,ag as g}from"./vendor-Dv5OeN6t.js";import{_ as ce}from"./n8n-B6cfQsVX.js";import"./pinia-BAhPp3pQ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const le={key:0,"data-test-id":"source-control-content-licensed"},ie=["href"],ue={for:"repoUrl"},pe=["href"],de={key:2,"data-test-id":"source-control-connected-content"},ge=n("hr",null,null,-1),me=["href"],he=oe({__name:"SettingsSourceControl",setup(we){const e=te(),o=W(),w=j(),p=J(),S=se(),y=Y(),d=ne(!1),E=V(()=>o.preferences.branches.map(t=>({value:t,label:t}))),K=async()=>{y.startLoading(),y.setLoadingText(e.baseText("settings.sourceControl.loading.connecting"));try{await o.savePreferences({repositoryUrl:o.preferences.repositoryUrl}),await o.getBranches(),d.value=!0,p.showMessage({title:e.baseText("settings.sourceControl.toast.connected.title"),message:e.baseText("settings.sourceControl.toast.connected.message"),type:"success"})}catch(t){p.showError(t,e.baseText("settings.sourceControl.toast.connected.error"))}y.stopLoading()},z=async()=>{try{await S.confirm(e.baseText("settings.sourceControl.modals.disconnect.message"),e.baseText("settings.sourceControl.modals.disconnect.title"),{confirmButtonText:e.baseText("settings.sourceControl.modals.disconnect.confirm"),cancelButtonText:e.baseText("settings.sourceControl.modals.disconnect.cancel")})===U&&(y.startLoading(),await o.disconnect(!0),d.value=!1,p.showMessage({title:e.baseText("settings.sourceControl.toast.disconnected.title"),message:e.baseText("settings.sourceControl.toast.disconnected.message"),type:"success"}))}catch(t){p.showError(t,e.baseText("settings.sourceControl.toast.disconnected.error"))}y.stopLoading()},I=async()=>{y.startLoading();try{await o.updatePreferences({branchName:o.preferences.branchName,branchReadOnly:o.preferences.branchReadOnly,branchColor:o.preferences.branchColor}),p.showMessage({title:e.baseText("settings.sourceControl.saved.title"),type:"success"})}catch(t){p.showError(t,"Error setting branch")}y.stopLoading()},$=async t=>{t!==o.preferences.branchName&&(o.preferences.branchName=t)},N=()=>{w.goToUpgrade("source-control","upgrade-source-control")},R=async()=>{await o.getPreferences(),o.preferences.connected&&(d.value=!0,o.getBranches())};re(async()=>{o.isEnterpriseSourceControlEnabled&&await R()});const B=ae({repoUrl:!1,keyGeneratorType:!1});function C(t,i){B[t]=i}const M=[{name:"REQUIRED"},{name:"MATCH_REGEX",config:{regex:/^(ssh:\/\/)?git@(?:\[[0-9a-fA-F:]+\]|(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+)(?::[0-9]+)*:(?:v[0-9]+\/)?[a-zA-Z0-9_.\-\/]+(\.git)?(?:\/[a-zA-Z0-9_.\-\/]+)*$/,message:e.baseText("settings.sourceControl.repoUrlInvalid")}}],G=[{name:"REQUIRED"}],O=V(()=>B.repoUrl),L=[{name:"REQUIRED"}];async function D(){try{await S.confirm(e.baseText("settings.sourceControl.modals.refreshSshKey.message"),e.baseText("settings.sourceControl.modals.refreshSshKey.title"),{confirmButtonText:e.baseText("settings.sourceControl.modals.refreshSshKey.confirm"),cancelButtonText:e.baseText("settings.sourceControl.modals.refreshSshKey.cancel")})===U&&(await o.generateKeyPair(o.preferences.keyGeneratorType),p.showMessage({title:e.baseText("settings.sourceControl.refreshSshKey.successful.title"),type:"success"}))}catch(t){p.showError(t,e.baseText("settings.sourceControl.refreshSshKey.error.title"))}}const A=async()=>{try{await o.getBranches(),p.showMessage({title:e.baseText("settings.sourceControl.refreshBranches.success"),type:"success"})}catch(t){p.showError(t,e.baseText("settings.sourceControl.refreshBranches.error"))}},F=async t=>{t!==o.preferences.keyGeneratorType&&(o.preferences.keyGeneratorType=t)};return(t,i)=>{const T=g("n8n-heading"),v=g("i18n-t"),P=g("n8n-callout"),k=g("n8n-form-input"),f=g("n8n-button"),Z=g("n8n-notice"),Q=g("n8n-tooltip"),X=g("n8n-checkbox"),q=g("n8n-color-picker"),H=g("n8n-action-box");return m(),x("div",null,[c(T,{size:"2xlarge",tag:"h1"},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.title")),1)]),_:1}),s(o).isEnterpriseSourceControlEnabled?(m(),x("div",le,[c(P,{theme:"secondary",icon:"info-circle",class:"mt-2xl mb-l"},{default:a(()=>[c(v,{keypath:"settings.sourceControl.description",tag:"span"},{link:a(()=>[n("a",{href:s(e).baseText("settings.sourceControl.docs.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.description.link")),9,ie)]),_:1})]),_:1}),c(T,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.gitConfig")),1)]),_:1}),n("div",{class:l(t.$style.group)},[n("label",ue,r(s(e).baseText("settings.sourceControl.repoUrl")),1),n("div",{class:l(t.$style.groupFlex)},[c(k,{id:"repoUrl",modelValue:s(o).preferences.repositoryUrl,"onUpdate:modelValue":i[0]||(i[0]=u=>s(o).preferences.repositoryUrl=u),label:"",class:"ml-0",name:"repoUrl","validate-on-blur":"","validation-rules":M,disabled:d.value,placeholder:s(e).baseText("settings.sourceControl.repoUrlPlaceholder"),onValidate:i[1]||(i[1]=u=>C("repoUrl",u))},null,8,["modelValue","disabled","placeholder"]),d.value?(m(),_(f,{key:0,class:l(t.$style.disconnectButton),type:"tertiary",size:"large",icon:"trash","data-test-id":"source-control-disconnect-button",onClick:z},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.button.disconnect")),1)]),_:1},8,["class"])):b("",!0)],2)],2),s(o).preferences.publicKey?(m(),x("div",{key:0,class:l(t.$style.group)},[n("label",null,r(s(e).baseText("settings.sourceControl.sshKey")),1),n("div",{class:l({[t.$style.sshInput]:!d.value})},[d.value?b("",!0):(m(),_(k,{key:0,id:"keyGeneratorType",class:l(t.$style.sshKeyTypeSelect),label:"",type:"select",name:"keyGeneratorType","data-test-id":"source-control-ssh-key-type-select","validate-on-blur":"","validation-rules":G,options:s(o).sshKeyTypesWithLabel,"model-value":s(o).preferences.keyGeneratorType,onValidate:i[2]||(i[2]=u=>C("keyGeneratorType",u)),"onUpdate:modelValue":F},null,8,["class","options","model-value"])),c(ee,{class:l(t.$style.copyInput),collapse:"",size:"medium",value:s(o).preferences.publicKey,"copy-button-text":s(e).baseText("generic.clickToCopy")},null,8,["class","value","copy-button-text"]),d.value?b("",!0):(m(),_(f,{key:1,size:"large",type:"tertiary",icon:"sync","data-test-id":"source-control-refresh-ssh-key-button",onClick:D},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.refreshSshKey")),1)]),_:1}))],2),c(Z,{type:"info",class:"mt-s"},{default:a(()=>[c(v,{keypath:"settings.sourceControl.sshKeyDescription",tag:"span"},{link:a(()=>[n("a",{href:s(e).baseText("settings.sourceControl.docs.setup.ssh.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.sshKeyDescriptionLink")),9,pe)]),_:1})]),_:1})],2)):b("",!0),d.value?b("",!0):(m(),_(f,{key:1,size:"large",disabled:!O.value,class:l(t.$style.connect),"data-test-id":"source-control-connect-button",onClick:K},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.button.connect")),1)]),_:1},8,["disabled","class"])),d.value?(m(),x("div",de,[n("div",{class:l(t.$style.group)},[ge,c(T,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.instanceSettings")),1)]),_:1}),n("label",null,r(s(e).baseText("settings.sourceControl.branches")),1),n("div",{class:l(t.$style.branchSelection)},[c(k,{id:"branchName",label:"",type:"select",name:"branchName",class:"mb-s","data-test-id":"source-control-branch-select","validate-on-blur":"","validation-rules":L,options:E.value,"model-value":s(o).preferences.branchName,onValidate:i[3]||(i[3]=u=>C("branchName",u)),"onUpdate:modelValue":$},null,8,["options","model-value"]),c(Q,{placement:"top"},{content:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.refreshBranches.tooltip")),1)]),default:a(()=>[c(f,{size:"small",type:"tertiary",icon:"sync",square:"",class:l(t.$style.refreshBranches),"data-test-id":"source-control-refresh-branches-button",onClick:A},null,8,["class"])]),_:1})],2),c(X,{modelValue:s(o).preferences.branchReadOnly,"onUpdate:modelValue":i[4]||(i[4]=u=>s(o).preferences.branchReadOnly=u),class:l(t.$style.readOnly)},{default:a(()=>[c(v,{keypath:"settings.sourceControl.protected",tag:"span"},{bold:a(()=>[n("strong",null,r(s(e).baseText("settings.sourceControl.protected.bold")),1)]),_:1})]),_:1},8,["modelValue","class"])],2),n("div",{class:l(t.$style.group)},[n("label",null,r(s(e).baseText("settings.sourceControl.color")),1),n("div",null,[c(q,{modelValue:s(o).preferences.branchColor,"onUpdate:modelValue":i[5]||(i[5]=u=>s(o).preferences.branchColor=u),size:"small"},null,8,["modelValue"])])],2),n("div",{class:l([t.$style.group,"pt-s"])},[c(f,{size:"large",disabled:!s(o).preferences.branchName,"data-test-id":"source-control-save-settings-button",onClick:I},{default:a(()=>[h(r(s(e).baseText("settings.sourceControl.button.save")),1)]),_:1},8,["disabled"])],2)])):b("",!0)])):(m(),_(H,{key:1,"data-test-id":"source-control-content-unlicensed",class:l(t.$style.actionBox),description:s(e).baseText("settings.sourceControl.actionBox.description"),"button-text":s(e).baseText("settings.sourceControl.actionBox.buttonText"),"onClick:button":N},{heading:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.actionBox.title")),1)]),description:a(()=>[h(r(s(e).baseText("settings.sourceControl.actionBox.description"))+" ",1),n("a",{href:s(e).baseText("settings.sourceControl.docs.url"),target:"_blank"},r(s(e).baseText("settings.sourceControl.actionBox.description.link")),9,me)]),_:1},8,["class","description","button-text"]))])}}}),ye="_group_1exsh_1",be="_readOnly_1exsh_22",fe="_groupFlex_1exsh_26",_e="_connect_1exsh_40",xe="_disconnectButton_1exsh_44",Ce="_actionBox_1exsh_49",Te="_sshInput_1exsh_53",ve="_copyInput_1exsh_64",ke="_sshKeyTypeSelect_1exsh_68",Se="_branchSelection_1exsh_76",Be="_refreshBranches_1exsh_85",Ue={group:ye,readOnly:be,groupFlex:fe,connect:_e,disconnectButton:xe,actionBox:Ce,sshInput:Te,copyInput:ve,sshKeyTypeSelect:ke,branchSelection:Se,refreshBranches:Be},Ve={$style:Ue},rt=ce(he,[["__cssModules",Ve]]);export{rt as default};
|
|
2
|
+
//# sourceMappingURL=SettingsSourceControl-BBk56DIZ.js.map
|
package/dist/assets/{SettingsSourceControl-C2BP11mH.js.map → SettingsSourceControl-BBk56DIZ.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsSourceControl-C2BP11mH.js","sources":["../../src/views/SettingsSourceControl.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, onMounted } from 'vue';\nimport type { Rule, RuleGroup } from 'n8n-design-system/types';\nimport { MODAL_CONFIRM } from '@/constants';\nimport { useSourceControlStore } from '@/stores/sourceControl.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { useLoadingService } from '@/composables/useLoadingService';\nimport { useI18n } from '@/composables/useI18n';\nimport { useMessage } from '@/composables/useMessage';\nimport CopyInput from '@/components/CopyInput.vue';\nimport type { TupleToUnion } from '@/utils/typeHelpers';\nimport type { SshKeyTypes } from '@/Interface';\n\nconst locale = useI18n();\nconst sourceControlStore = useSourceControlStore();\nconst uiStore = useUIStore();\nconst toast = useToast();\nconst message = useMessage();\nconst loadingService = useLoadingService();\n\nconst isConnected = ref(false);\nconst branchNameOptions = computed(() =>\n\tsourceControlStore.preferences.branches.map((branch) => ({\n\t\tvalue: branch,\n\t\tlabel: branch,\n\t})),\n);\n\nconst onConnect = async () => {\n\tloadingService.startLoading();\n\tloadingService.setLoadingText(locale.baseText('settings.sourceControl.loading.connecting'));\n\ttry {\n\t\tawait sourceControlStore.savePreferences({\n\t\t\trepositoryUrl: sourceControlStore.preferences.repositoryUrl,\n\t\t});\n\t\tawait sourceControlStore.getBranches();\n\t\tisConnected.value = true;\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.toast.connected.title'),\n\t\t\tmessage: locale.baseText('settings.sourceControl.toast.connected.message'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.toast.connected.error'));\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onDisconnect = async () => {\n\ttry {\n\t\tconst confirmation = await message.confirm(\n\t\t\tlocale.baseText('settings.sourceControl.modals.disconnect.message'),\n\t\t\tlocale.baseText('settings.sourceControl.modals.disconnect.title'),\n\t\t\t{\n\t\t\t\tconfirmButtonText: locale.baseText('settings.sourceControl.modals.disconnect.confirm'),\n\t\t\t\tcancelButtonText: locale.baseText('settings.sourceControl.modals.disconnect.cancel'),\n\t\t\t},\n\t\t);\n\n\t\tif (confirmation === MODAL_CONFIRM) {\n\t\t\tloadingService.startLoading();\n\t\t\tawait sourceControlStore.disconnect(true);\n\t\t\tisConnected.value = false;\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: locale.baseText('settings.sourceControl.toast.disconnected.title'),\n\t\t\t\tmessage: locale.baseText('settings.sourceControl.toast.disconnected.message'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.toast.disconnected.error'));\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onSave = async () => {\n\tloadingService.startLoading();\n\ttry {\n\t\tawait sourceControlStore.updatePreferences({\n\t\t\tbranchName: sourceControlStore.preferences.branchName,\n\t\t\tbranchReadOnly: sourceControlStore.preferences.branchReadOnly,\n\t\t\tbranchColor: sourceControlStore.preferences.branchColor,\n\t\t});\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.saved.title'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, 'Error setting branch');\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onSelect = async (b: string) => {\n\tif (b === sourceControlStore.preferences.branchName) {\n\t\treturn;\n\t}\n\tsourceControlStore.preferences.branchName = b;\n};\n\nconst goToUpgrade = () => {\n\tvoid uiStore.goToUpgrade('source-control', 'upgrade-source-control');\n};\n\nconst initialize = async () => {\n\tawait sourceControlStore.getPreferences();\n\tif (sourceControlStore.preferences.connected) {\n\t\tisConnected.value = true;\n\t\tvoid sourceControlStore.getBranches();\n\t}\n};\n\nonMounted(async () => {\n\tif (!sourceControlStore.isEnterpriseSourceControlEnabled) return;\n\tawait initialize();\n});\n\nconst formValidationStatus = reactive<Record<string, boolean>>({\n\trepoUrl: false,\n\tkeyGeneratorType: false,\n});\n\nfunction onValidate(key: string, value: boolean) {\n\tformValidationStatus[key] = value;\n}\n\nconst repoUrlValidationRules: Array<Rule | RuleGroup> = [\n\t{ name: 'REQUIRED' },\n\t{\n\t\tname: 'MATCH_REGEX',\n\t\tconfig: {\n\t\t\tregex:\n\t\t\t\t/^(ssh:\\/\\/)?git@(?:\\[[0-9a-fA-F:]+\\]|(?:[a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+)(?::[0-9]+)*:(?:v[0-9]+\\/)?[a-zA-Z0-9_.\\-\\/]+(\\.git)?(?:\\/[a-zA-Z0-9_.\\-\\/]+)*$/,\n\t\t\tmessage: locale.baseText('settings.sourceControl.repoUrlInvalid'),\n\t\t},\n\t},\n];\n\nconst keyGeneratorTypeValidationRules: Array<Rule | RuleGroup> = [{ name: 'REQUIRED' }];\n\nconst validForConnection = computed(() => formValidationStatus.repoUrl);\nconst branchNameValidationRules: Array<Rule | RuleGroup> = [{ name: 'REQUIRED' }];\n\nasync function refreshSshKey() {\n\ttry {\n\t\tconst confirmation = await message.confirm(\n\t\t\tlocale.baseText('settings.sourceControl.modals.refreshSshKey.message'),\n\t\t\tlocale.baseText('settings.sourceControl.modals.refreshSshKey.title'),\n\t\t\t{\n\t\t\t\tconfirmButtonText: locale.baseText('settings.sourceControl.modals.refreshSshKey.confirm'),\n\t\t\t\tcancelButtonText: locale.baseText('settings.sourceControl.modals.refreshSshKey.cancel'),\n\t\t\t},\n\t\t);\n\n\t\tif (confirmation === MODAL_CONFIRM) {\n\t\t\tawait sourceControlStore.generateKeyPair(sourceControlStore.preferences.keyGeneratorType);\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: locale.baseText('settings.sourceControl.refreshSshKey.successful.title'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.refreshSshKey.error.title'));\n\t}\n}\n\nconst refreshBranches = async () => {\n\ttry {\n\t\tawait sourceControlStore.getBranches();\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.refreshBranches.success'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.refreshBranches.error'));\n\t}\n};\n\nconst onSelectSshKeyType = async (sshKeyType: TupleToUnion<SshKeyTypes>) => {\n\tif (sshKeyType === sourceControlStore.preferences.keyGeneratorType) {\n\t\treturn;\n\t}\n\tsourceControlStore.preferences.keyGeneratorType = sshKeyType;\n};\n</script>\n\n<template>\n\t<div>\n\t\t<n8n-heading size=\"2xlarge\" tag=\"h1\">{{\n\t\t\tlocale.baseText('settings.sourceControl.title')\n\t\t}}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"sourceControlStore.isEnterpriseSourceControlEnabled\"\n\t\t\tdata-test-id=\"source-control-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" icon=\"info-circle\" class=\"mt-2xl mb-l\">\n\t\t\t\t<i18n-t keypath=\"settings.sourceControl.description\" tag=\"span\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"locale.baseText('settings.sourceControl.docs.url')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.description.link') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</n8n-callout>\n\t\t\t<n8n-heading size=\"xlarge\" tag=\"h2\" class=\"mb-s\">{{\n\t\t\t\tlocale.baseText('settings.sourceControl.gitConfig')\n\t\t\t}}</n8n-heading>\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label for=\"repoUrl\">{{ locale.baseText('settings.sourceControl.repoUrl') }}</label>\n\t\t\t\t<div :class=\"$style.groupFlex\">\n\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\tid=\"repoUrl\"\n\t\t\t\t\t\tv-model=\"sourceControlStore.preferences.repositoryUrl\"\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\tclass=\"ml-0\"\n\t\t\t\t\t\tname=\"repoUrl\"\n\t\t\t\t\t\tvalidate-on-blur\n\t\t\t\t\t\t:validation-rules=\"repoUrlValidationRules\"\n\t\t\t\t\t\t:disabled=\"isConnected\"\n\t\t\t\t\t\t:placeholder=\"locale.baseText('settings.sourceControl.repoUrlPlaceholder')\"\n\t\t\t\t\t\t@validate=\"(value: boolean) => onValidate('repoUrl', value)\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tv-if=\"isConnected\"\n\t\t\t\t\t\t:class=\"$style.disconnectButton\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\t\tdata-test-id=\"source-control-disconnect-button\"\n\t\t\t\t\t\t@click=\"onDisconnect\"\n\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.disconnect') }}</n8n-button\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"sourceControlStore.preferences.publicKey\" :class=\"$style.group\">\n\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.sshKey') }}</label>\n\t\t\t\t<div :class=\"{ [$style.sshInput]: !isConnected }\">\n\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t\t\tid=\"keyGeneratorType\"\n\t\t\t\t\t\t:class=\"$style.sshKeyTypeSelect\"\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\tname=\"keyGeneratorType\"\n\t\t\t\t\t\tdata-test-id=\"source-control-ssh-key-type-select\"\n\t\t\t\t\t\tvalidate-on-blur\n\t\t\t\t\t\t:validation-rules=\"keyGeneratorTypeValidationRules\"\n\t\t\t\t\t\t:options=\"sourceControlStore.sshKeyTypesWithLabel\"\n\t\t\t\t\t\t:model-value=\"sourceControlStore.preferences.keyGeneratorType\"\n\t\t\t\t\t\t@validate=\"(value: boolean) => onValidate('keyGeneratorType', value)\"\n\t\t\t\t\t\t@update:model-value=\"onSelectSshKeyType\"\n\t\t\t\t\t/>\n\t\t\t\t\t<CopyInput\n\t\t\t\t\t\t:class=\"$style.copyInput\"\n\t\t\t\t\t\tcollapse\n\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t:value=\"sourceControlStore.preferences.publicKey\"\n\t\t\t\t\t\t:copy-button-text=\"locale.baseText('generic.clickToCopy')\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\ticon=\"sync\"\n\t\t\t\t\t\tdata-test-id=\"source-control-refresh-ssh-key-button\"\n\t\t\t\t\t\t@click=\"refreshSshKey\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.refreshSshKey') }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t</div>\n\t\t\t\t<n8n-notice type=\"info\" class=\"mt-s\">\n\t\t\t\t\t<i18n-t keypath=\"settings.sourceControl.sshKeyDescription\" tag=\"span\">\n\t\t\t\t\t\t<template #link>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t:href=\"locale.baseText('settings.sourceControl.docs.setup.ssh.url')\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.sshKeyDescriptionLink') }}</a\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</n8n-notice>\n\t\t\t</div>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t:disabled=\"!validForConnection\"\n\t\t\t\t:class=\"$style.connect\"\n\t\t\t\tdata-test-id=\"source-control-connect-button\"\n\t\t\t\t@click=\"onConnect\"\n\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.connect') }}</n8n-button\n\t\t\t>\n\t\t\t<div v-if=\"isConnected\" data-test-id=\"source-control-connected-content\">\n\t\t\t\t<div :class=\"$style.group\">\n\t\t\t\t\t<hr />\n\t\t\t\t\t<n8n-heading size=\"xlarge\" tag=\"h2\" class=\"mb-s\">{{\n\t\t\t\t\t\tlocale.baseText('settings.sourceControl.instanceSettings')\n\t\t\t\t\t}}</n8n-heading>\n\t\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.branches') }}</label>\n\t\t\t\t\t<div :class=\"$style.branchSelection\">\n\t\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\t\tid=\"branchName\"\n\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\t\tname=\"branchName\"\n\t\t\t\t\t\t\tclass=\"mb-s\"\n\t\t\t\t\t\t\tdata-test-id=\"source-control-branch-select\"\n\t\t\t\t\t\t\tvalidate-on-blur\n\t\t\t\t\t\t\t:validation-rules=\"branchNameValidationRules\"\n\t\t\t\t\t\t\t:options=\"branchNameOptions\"\n\t\t\t\t\t\t\t:model-value=\"sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\t\t@validate=\"(value: boolean) => onValidate('branchName', value)\"\n\t\t\t\t\t\t\t@update:model-value=\"onSelect\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<n8n-tooltip placement=\"top\">\n\t\t\t\t\t\t\t<template #content>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.refreshBranches.tooltip') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t\t\ticon=\"sync\"\n\t\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\t\t:class=\"$style.refreshBranches\"\n\t\t\t\t\t\t\t\tdata-test-id=\"source-control-refresh-branches-button\"\n\t\t\t\t\t\t\t\t@click=\"refreshBranches\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</n8n-tooltip>\n\t\t\t\t\t</div>\n\t\t\t\t\t<n8n-checkbox\n\t\t\t\t\t\tv-model=\"sourceControlStore.preferences.branchReadOnly\"\n\t\t\t\t\t\t:class=\"$style.readOnly\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<i18n-t keypath=\"settings.sourceControl.protected\" tag=\"span\">\n\t\t\t\t\t\t\t<template #bold>\n\t\t\t\t\t\t\t\t<strong>{{ locale.baseText('settings.sourceControl.protected.bold') }}</strong>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</i18n-t>\n\t\t\t\t\t</n8n-checkbox>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.group\">\n\t\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.color') }}</label>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<n8n-color-picker v-model=\"sourceControlStore.preferences.branchColor\" size=\"small\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"[$style.group, 'pt-s']\">\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t:disabled=\"!sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\tdata-test-id=\"source-control-save-settings-button\"\n\t\t\t\t\t\t@click=\"onSave\"\n\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.save') }}</n8n-button\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tdata-test-id=\"source-control-content-unlicensed\"\n\t\t\t:class=\"$style.actionBox\"\n\t\t\t:description=\"locale.baseText('settings.sourceControl.actionBox.description')\"\n\t\t\t:button-text=\"locale.baseText('settings.sourceControl.actionBox.buttonText')\"\n\t\t\t@click:button=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ locale.baseText('settings.sourceControl.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t{{ locale.baseText('settings.sourceControl.actionBox.description') }}\n\t\t\t\t<a :href=\"locale.baseText('settings.sourceControl.docs.url')\" target=\"_blank\">\n\t\t\t\t\t{{ locale.baseText('settings.sourceControl.actionBox.description.link') }}\n\t\t\t\t</a>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.group {\n\tpadding: 0 0 var(--spacing-s);\n\twidth: 100%;\n\tdisplay: block;\n\n\thr {\n\t\tmargin: 0 0 var(--spacing-xl);\n\t\tborder: 1px solid var(--color-foreground-light);\n\t}\n\n\tlabel {\n\t\tdisplay: inline-block;\n\t\tpadding: 0 0 var(--spacing-2xs);\n\t\tfont-size: var(--font-size-s);\n\t}\n\n\tsmall {\n\t\tdisplay: inline-block;\n\t\tpadding: var(--spacing-2xs) 0 0;\n\t\tfont-size: var(--font-size-2xs);\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.readOnly {\n\tspan {\n\t\tfont-size: var(--font-size-s) !important;\n\t}\n}\n\n.groupFlex {\n\tdisplay: flex;\n\talign-items: flex-start;\n\n\t> div {\n\t\tflex: 1;\n\n\t\t&:last-child {\n\t\t\tmargin-left: var(--spacing-2xs);\n\t\t}\n\t}\n\n\tinput {\n\t\twidth: 100%;\n\t}\n}\n\n.connect {\n\tmargin: calc(var(--spacing-2xs) * -1) 0 var(--spacing-2xs);\n}\n\n.disconnectButton {\n\tmargin: 0 0 0 var(--spacing-2xs);\n\theight: 40px;\n}\n\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n\n.sshInput {\n\twidth: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\n\t> div {\n\t\tflex: 1 1 auto;\n\t}\n\n\t> button {\n\t\theight: 42px;\n\t}\n\n\t.copyInput {\n\t\tmargin: 0 var(--spacing-2xs);\n\t}\n}\n\n.sshKeyTypeSelect {\n\tmin-width: 120px;\n}\n\n.copyInput {\n\toverflow: auto;\n}\n\n.branchSelection {\n\tdisplay: flex;\n\n\t> div:first-child {\n\t\tflex: 1;\n\n\t\tinput {\n\t\t\theight: 36px;\n\t\t}\n\t}\n\n\tbutton.refreshBranches {\n\t\theight: 36px;\n\t\twidth: 36px;\n\t\tmargin-left: var(--spacing-xs);\n\t}\n}\n</style>\n"],"names":["locale","useI18n","sourceControlStore","useSourceControlStore","uiStore","useUIStore","toast","useToast","message","useMessage","loadingService","useLoadingService","isConnected","ref","branchNameOptions","computed","branch","onConnect","error","onDisconnect","MODAL_CONFIRM","onSave","onSelect","b","goToUpgrade","initialize","onMounted","formValidationStatus","reactive","onValidate","key","value","repoUrlValidationRules","keyGeneratorTypeValidationRules","validForConnection","branchNameValidationRules","refreshSshKey","refreshBranches","onSelectSshKeyType","sshKeyType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsSourceControl-BBk56DIZ.js","sources":["../../src/views/SettingsSourceControl.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, onMounted } from 'vue';\nimport type { Rule, RuleGroup } from 'n8n-design-system/types';\nimport { MODAL_CONFIRM } from '@/constants';\nimport { useSourceControlStore } from '@/stores/sourceControl.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { useLoadingService } from '@/composables/useLoadingService';\nimport { useI18n } from '@/composables/useI18n';\nimport { useMessage } from '@/composables/useMessage';\nimport CopyInput from '@/components/CopyInput.vue';\nimport type { TupleToUnion } from '@/utils/typeHelpers';\nimport type { SshKeyTypes } from '@/Interface';\n\nconst locale = useI18n();\nconst sourceControlStore = useSourceControlStore();\nconst uiStore = useUIStore();\nconst toast = useToast();\nconst message = useMessage();\nconst loadingService = useLoadingService();\n\nconst isConnected = ref(false);\nconst branchNameOptions = computed(() =>\n\tsourceControlStore.preferences.branches.map((branch) => ({\n\t\tvalue: branch,\n\t\tlabel: branch,\n\t})),\n);\n\nconst onConnect = async () => {\n\tloadingService.startLoading();\n\tloadingService.setLoadingText(locale.baseText('settings.sourceControl.loading.connecting'));\n\ttry {\n\t\tawait sourceControlStore.savePreferences({\n\t\t\trepositoryUrl: sourceControlStore.preferences.repositoryUrl,\n\t\t});\n\t\tawait sourceControlStore.getBranches();\n\t\tisConnected.value = true;\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.toast.connected.title'),\n\t\t\tmessage: locale.baseText('settings.sourceControl.toast.connected.message'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.toast.connected.error'));\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onDisconnect = async () => {\n\ttry {\n\t\tconst confirmation = await message.confirm(\n\t\t\tlocale.baseText('settings.sourceControl.modals.disconnect.message'),\n\t\t\tlocale.baseText('settings.sourceControl.modals.disconnect.title'),\n\t\t\t{\n\t\t\t\tconfirmButtonText: locale.baseText('settings.sourceControl.modals.disconnect.confirm'),\n\t\t\t\tcancelButtonText: locale.baseText('settings.sourceControl.modals.disconnect.cancel'),\n\t\t\t},\n\t\t);\n\n\t\tif (confirmation === MODAL_CONFIRM) {\n\t\t\tloadingService.startLoading();\n\t\t\tawait sourceControlStore.disconnect(true);\n\t\t\tisConnected.value = false;\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: locale.baseText('settings.sourceControl.toast.disconnected.title'),\n\t\t\t\tmessage: locale.baseText('settings.sourceControl.toast.disconnected.message'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.toast.disconnected.error'));\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onSave = async () => {\n\tloadingService.startLoading();\n\ttry {\n\t\tawait sourceControlStore.updatePreferences({\n\t\t\tbranchName: sourceControlStore.preferences.branchName,\n\t\t\tbranchReadOnly: sourceControlStore.preferences.branchReadOnly,\n\t\t\tbranchColor: sourceControlStore.preferences.branchColor,\n\t\t});\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.saved.title'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, 'Error setting branch');\n\t}\n\tloadingService.stopLoading();\n};\n\nconst onSelect = async (b: string) => {\n\tif (b === sourceControlStore.preferences.branchName) {\n\t\treturn;\n\t}\n\tsourceControlStore.preferences.branchName = b;\n};\n\nconst goToUpgrade = () => {\n\tvoid uiStore.goToUpgrade('source-control', 'upgrade-source-control');\n};\n\nconst initialize = async () => {\n\tawait sourceControlStore.getPreferences();\n\tif (sourceControlStore.preferences.connected) {\n\t\tisConnected.value = true;\n\t\tvoid sourceControlStore.getBranches();\n\t}\n};\n\nonMounted(async () => {\n\tif (!sourceControlStore.isEnterpriseSourceControlEnabled) return;\n\tawait initialize();\n});\n\nconst formValidationStatus = reactive<Record<string, boolean>>({\n\trepoUrl: false,\n\tkeyGeneratorType: false,\n});\n\nfunction onValidate(key: string, value: boolean) {\n\tformValidationStatus[key] = value;\n}\n\nconst repoUrlValidationRules: Array<Rule | RuleGroup> = [\n\t{ name: 'REQUIRED' },\n\t{\n\t\tname: 'MATCH_REGEX',\n\t\tconfig: {\n\t\t\tregex:\n\t\t\t\t/^(ssh:\\/\\/)?git@(?:\\[[0-9a-fA-F:]+\\]|(?:[a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+)(?::[0-9]+)*:(?:v[0-9]+\\/)?[a-zA-Z0-9_.\\-\\/]+(\\.git)?(?:\\/[a-zA-Z0-9_.\\-\\/]+)*$/,\n\t\t\tmessage: locale.baseText('settings.sourceControl.repoUrlInvalid'),\n\t\t},\n\t},\n];\n\nconst keyGeneratorTypeValidationRules: Array<Rule | RuleGroup> = [{ name: 'REQUIRED' }];\n\nconst validForConnection = computed(() => formValidationStatus.repoUrl);\nconst branchNameValidationRules: Array<Rule | RuleGroup> = [{ name: 'REQUIRED' }];\n\nasync function refreshSshKey() {\n\ttry {\n\t\tconst confirmation = await message.confirm(\n\t\t\tlocale.baseText('settings.sourceControl.modals.refreshSshKey.message'),\n\t\t\tlocale.baseText('settings.sourceControl.modals.refreshSshKey.title'),\n\t\t\t{\n\t\t\t\tconfirmButtonText: locale.baseText('settings.sourceControl.modals.refreshSshKey.confirm'),\n\t\t\t\tcancelButtonText: locale.baseText('settings.sourceControl.modals.refreshSshKey.cancel'),\n\t\t\t},\n\t\t);\n\n\t\tif (confirmation === MODAL_CONFIRM) {\n\t\t\tawait sourceControlStore.generateKeyPair(sourceControlStore.preferences.keyGeneratorType);\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: locale.baseText('settings.sourceControl.refreshSshKey.successful.title'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.refreshSshKey.error.title'));\n\t}\n}\n\nconst refreshBranches = async () => {\n\ttry {\n\t\tawait sourceControlStore.getBranches();\n\t\ttoast.showMessage({\n\t\t\ttitle: locale.baseText('settings.sourceControl.refreshBranches.success'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, locale.baseText('settings.sourceControl.refreshBranches.error'));\n\t}\n};\n\nconst onSelectSshKeyType = async (sshKeyType: TupleToUnion<SshKeyTypes>) => {\n\tif (sshKeyType === sourceControlStore.preferences.keyGeneratorType) {\n\t\treturn;\n\t}\n\tsourceControlStore.preferences.keyGeneratorType = sshKeyType;\n};\n</script>\n\n<template>\n\t<div>\n\t\t<n8n-heading size=\"2xlarge\" tag=\"h1\">{{\n\t\t\tlocale.baseText('settings.sourceControl.title')\n\t\t}}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"sourceControlStore.isEnterpriseSourceControlEnabled\"\n\t\t\tdata-test-id=\"source-control-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" icon=\"info-circle\" class=\"mt-2xl mb-l\">\n\t\t\t\t<i18n-t keypath=\"settings.sourceControl.description\" tag=\"span\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"locale.baseText('settings.sourceControl.docs.url')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.description.link') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</i18n-t>\n\t\t\t</n8n-callout>\n\t\t\t<n8n-heading size=\"xlarge\" tag=\"h2\" class=\"mb-s\">{{\n\t\t\t\tlocale.baseText('settings.sourceControl.gitConfig')\n\t\t\t}}</n8n-heading>\n\t\t\t<div :class=\"$style.group\">\n\t\t\t\t<label for=\"repoUrl\">{{ locale.baseText('settings.sourceControl.repoUrl') }}</label>\n\t\t\t\t<div :class=\"$style.groupFlex\">\n\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\tid=\"repoUrl\"\n\t\t\t\t\t\tv-model=\"sourceControlStore.preferences.repositoryUrl\"\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\tclass=\"ml-0\"\n\t\t\t\t\t\tname=\"repoUrl\"\n\t\t\t\t\t\tvalidate-on-blur\n\t\t\t\t\t\t:validation-rules=\"repoUrlValidationRules\"\n\t\t\t\t\t\t:disabled=\"isConnected\"\n\t\t\t\t\t\t:placeholder=\"locale.baseText('settings.sourceControl.repoUrlPlaceholder')\"\n\t\t\t\t\t\t@validate=\"(value: boolean) => onValidate('repoUrl', value)\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tv-if=\"isConnected\"\n\t\t\t\t\t\t:class=\"$style.disconnectButton\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\t\tdata-test-id=\"source-control-disconnect-button\"\n\t\t\t\t\t\t@click=\"onDisconnect\"\n\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.disconnect') }}</n8n-button\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"sourceControlStore.preferences.publicKey\" :class=\"$style.group\">\n\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.sshKey') }}</label>\n\t\t\t\t<div :class=\"{ [$style.sshInput]: !isConnected }\">\n\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t\t\tid=\"keyGeneratorType\"\n\t\t\t\t\t\t:class=\"$style.sshKeyTypeSelect\"\n\t\t\t\t\t\tlabel\n\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\tname=\"keyGeneratorType\"\n\t\t\t\t\t\tdata-test-id=\"source-control-ssh-key-type-select\"\n\t\t\t\t\t\tvalidate-on-blur\n\t\t\t\t\t\t:validation-rules=\"keyGeneratorTypeValidationRules\"\n\t\t\t\t\t\t:options=\"sourceControlStore.sshKeyTypesWithLabel\"\n\t\t\t\t\t\t:model-value=\"sourceControlStore.preferences.keyGeneratorType\"\n\t\t\t\t\t\t@validate=\"(value: boolean) => onValidate('keyGeneratorType', value)\"\n\t\t\t\t\t\t@update:model-value=\"onSelectSshKeyType\"\n\t\t\t\t\t/>\n\t\t\t\t\t<CopyInput\n\t\t\t\t\t\t:class=\"$style.copyInput\"\n\t\t\t\t\t\tcollapse\n\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t:value=\"sourceControlStore.preferences.publicKey\"\n\t\t\t\t\t\t:copy-button-text=\"locale.baseText('generic.clickToCopy')\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\ticon=\"sync\"\n\t\t\t\t\t\tdata-test-id=\"source-control-refresh-ssh-key-button\"\n\t\t\t\t\t\t@click=\"refreshSshKey\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.refreshSshKey') }}\n\t\t\t\t\t</n8n-button>\n\t\t\t\t</div>\n\t\t\t\t<n8n-notice type=\"info\" class=\"mt-s\">\n\t\t\t\t\t<i18n-t keypath=\"settings.sourceControl.sshKeyDescription\" tag=\"span\">\n\t\t\t\t\t\t<template #link>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t:href=\"locale.baseText('settings.sourceControl.docs.setup.ssh.url')\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.sshKeyDescriptionLink') }}</a\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</n8n-notice>\n\t\t\t</div>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"!isConnected\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t:disabled=\"!validForConnection\"\n\t\t\t\t:class=\"$style.connect\"\n\t\t\t\tdata-test-id=\"source-control-connect-button\"\n\t\t\t\t@click=\"onConnect\"\n\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.connect') }}</n8n-button\n\t\t\t>\n\t\t\t<div v-if=\"isConnected\" data-test-id=\"source-control-connected-content\">\n\t\t\t\t<div :class=\"$style.group\">\n\t\t\t\t\t<hr />\n\t\t\t\t\t<n8n-heading size=\"xlarge\" tag=\"h2\" class=\"mb-s\">{{\n\t\t\t\t\t\tlocale.baseText('settings.sourceControl.instanceSettings')\n\t\t\t\t\t}}</n8n-heading>\n\t\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.branches') }}</label>\n\t\t\t\t\t<div :class=\"$style.branchSelection\">\n\t\t\t\t\t\t<n8n-form-input\n\t\t\t\t\t\t\tid=\"branchName\"\n\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\t\tname=\"branchName\"\n\t\t\t\t\t\t\tclass=\"mb-s\"\n\t\t\t\t\t\t\tdata-test-id=\"source-control-branch-select\"\n\t\t\t\t\t\t\tvalidate-on-blur\n\t\t\t\t\t\t\t:validation-rules=\"branchNameValidationRules\"\n\t\t\t\t\t\t\t:options=\"branchNameOptions\"\n\t\t\t\t\t\t\t:model-value=\"sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\t\t@validate=\"(value: boolean) => onValidate('branchName', value)\"\n\t\t\t\t\t\t\t@update:model-value=\"onSelect\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<n8n-tooltip placement=\"top\">\n\t\t\t\t\t\t\t<template #content>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t{{ locale.baseText('settings.sourceControl.refreshBranches.tooltip') }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t\t\ticon=\"sync\"\n\t\t\t\t\t\t\t\tsquare\n\t\t\t\t\t\t\t\t:class=\"$style.refreshBranches\"\n\t\t\t\t\t\t\t\tdata-test-id=\"source-control-refresh-branches-button\"\n\t\t\t\t\t\t\t\t@click=\"refreshBranches\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</n8n-tooltip>\n\t\t\t\t\t</div>\n\t\t\t\t\t<n8n-checkbox\n\t\t\t\t\t\tv-model=\"sourceControlStore.preferences.branchReadOnly\"\n\t\t\t\t\t\t:class=\"$style.readOnly\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<i18n-t keypath=\"settings.sourceControl.protected\" tag=\"span\">\n\t\t\t\t\t\t\t<template #bold>\n\t\t\t\t\t\t\t\t<strong>{{ locale.baseText('settings.sourceControl.protected.bold') }}</strong>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</i18n-t>\n\t\t\t\t\t</n8n-checkbox>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.group\">\n\t\t\t\t\t<label>{{ locale.baseText('settings.sourceControl.color') }}</label>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<n8n-color-picker v-model=\"sourceControlStore.preferences.branchColor\" size=\"small\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"[$style.group, 'pt-s']\">\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t:disabled=\"!sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\tdata-test-id=\"source-control-save-settings-button\"\n\t\t\t\t\t\t@click=\"onSave\"\n\t\t\t\t\t\t>{{ locale.baseText('settings.sourceControl.button.save') }}</n8n-button\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tdata-test-id=\"source-control-content-unlicensed\"\n\t\t\t:class=\"$style.actionBox\"\n\t\t\t:description=\"locale.baseText('settings.sourceControl.actionBox.description')\"\n\t\t\t:button-text=\"locale.baseText('settings.sourceControl.actionBox.buttonText')\"\n\t\t\t@click:button=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ locale.baseText('settings.sourceControl.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t{{ locale.baseText('settings.sourceControl.actionBox.description') }}\n\t\t\t\t<a :href=\"locale.baseText('settings.sourceControl.docs.url')\" target=\"_blank\">\n\t\t\t\t\t{{ locale.baseText('settings.sourceControl.actionBox.description.link') }}\n\t\t\t\t</a>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.group {\n\tpadding: 0 0 var(--spacing-s);\n\twidth: 100%;\n\tdisplay: block;\n\n\thr {\n\t\tmargin: 0 0 var(--spacing-xl);\n\t\tborder: 1px solid var(--color-foreground-light);\n\t}\n\n\tlabel {\n\t\tdisplay: inline-block;\n\t\tpadding: 0 0 var(--spacing-2xs);\n\t\tfont-size: var(--font-size-s);\n\t}\n\n\tsmall {\n\t\tdisplay: inline-block;\n\t\tpadding: var(--spacing-2xs) 0 0;\n\t\tfont-size: var(--font-size-2xs);\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.readOnly {\n\tspan {\n\t\tfont-size: var(--font-size-s) !important;\n\t}\n}\n\n.groupFlex {\n\tdisplay: flex;\n\talign-items: flex-start;\n\n\t> div {\n\t\tflex: 1;\n\n\t\t&:last-child {\n\t\t\tmargin-left: var(--spacing-2xs);\n\t\t}\n\t}\n\n\tinput {\n\t\twidth: 100%;\n\t}\n}\n\n.connect {\n\tmargin: calc(var(--spacing-2xs) * -1) 0 var(--spacing-2xs);\n}\n\n.disconnectButton {\n\tmargin: 0 0 0 var(--spacing-2xs);\n\theight: 40px;\n}\n\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n\n.sshInput {\n\twidth: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\n\t> div {\n\t\tflex: 1 1 auto;\n\t}\n\n\t> button {\n\t\theight: 42px;\n\t}\n\n\t.copyInput {\n\t\tmargin: 0 var(--spacing-2xs);\n\t}\n}\n\n.sshKeyTypeSelect {\n\tmin-width: 120px;\n}\n\n.copyInput {\n\toverflow: auto;\n}\n\n.branchSelection {\n\tdisplay: flex;\n\n\t> div:first-child {\n\t\tflex: 1;\n\n\t\tinput {\n\t\t\theight: 36px;\n\t\t}\n\t}\n\n\tbutton.refreshBranches {\n\t\theight: 36px;\n\t\twidth: 36px;\n\t\tmargin-left: var(--spacing-xs);\n\t}\n}\n</style>\n"],"names":["locale","useI18n","sourceControlStore","useSourceControlStore","uiStore","useUIStore","toast","useToast","message","useMessage","loadingService","useLoadingService","isConnected","ref","branchNameOptions","computed","branch","onConnect","error","onDisconnect","MODAL_CONFIRM","onSave","onSelect","b","goToUpgrade","initialize","onMounted","formValidationStatus","reactive","onValidate","key","value","repoUrlValidationRules","keyGeneratorTypeValidationRules","validForConnection","branchNameValidationRules","refreshSshKey","refreshBranches","onSelectSshKeyType","sshKeyType"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{G as K,e as f,r as v,b as Q,l as T,m as C,U as u,O as d,S as x,T as o,u as s,p as a,M as V,I as c,R as W,P as B,V as I,ag as p}from"./vendor-Dv5OeN6t.js";import{l as Y,cG as Z,i as tt,u as et,aU as M,w as st,F as at,G as ot}from"./index-
|
|
2
|
-
//# sourceMappingURL=SettingsSso-
|
|
1
|
+
import{G as K,e as f,r as v,b as Q,l as T,m as C,U as u,O as d,S as x,T as o,u as s,p as a,M as V,I as c,R as W,P as B,V as I,ag as p}from"./vendor-Dv5OeN6t.js";import{l as Y,cG as Z,i as tt,u as et,aU as M,w as st,F as at,G as ot}from"./index-DEwaaDne.js";import{_ as nt}from"./n8n-B6cfQsVX.js";import"./pinia-BAhPp3pQ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const lt={class:"pb-3xl"},it={href:"https://docs.n8n.io/user-management/saml/",target:"_blank"},rt={key:0,"data-test-id":"sso-content-licensed"},ut={class:"mt-2xs mb-s"},dt=K({__name:"SettingsSso",setup(xt){const l={URL:"url",XML:"xml"},e=st(),R=at(),$=Y(),n=Z(),j=tt(),z=ot(),y=et(),X=f(()=>n.isSamlLoginEnabled?e.baseText("settings.sso.activated"):e.baseText("settings.sso.deactivated")),_=v(!1),S=v(),U=v(),N=v([{label:e.baseText("settings.sso.settings.ips.options.url"),value:l.URL},{label:e.baseText("settings.sso.settings.ips.options.xml"),value:l.XML}]),i=v(l.URL),m=v(),g=v(),D=f(()=>{var t,r;return i.value===l.URL?!!m.value&&m.value!==((t=n.samlConfig)==null?void 0:t.metadataUrl):i.value===l.XML?!!g.value&&g.value!==((r=n.samlConfig)==null?void 0:r.metadata):!1}),G=f(()=>i.value===l.URL?!!m.value&&_.value:i.value===l.XML?!!g.value&&_.value:!1),w=async()=>{const t=await n.getSamlConfig();U.value=t==null?void 0:t.entityID,S.value=t==null?void 0:t.returnUrl,t!=null&&t.metadataUrl?i.value=l.URL:t!=null&&t.metadata&&(i.value=l.XML),g.value=t==null?void 0:t.metadata,m.value=t==null?void 0:t.metadataUrl,_.value=!!(t!=null&&t.metadata)},O=async()=>{try{const t=i.value===l.URL?{metadataUrl:m.value}:{metadata:g.value};await n.saveSamlConfig(t),n.isSamlLoginEnabled||await z.confirm(e.baseText("settings.sso.settings.save.activate.message"),e.baseText("settings.sso.settings.save.activate.title"),{confirmButtonText:e.baseText("settings.sso.settings.save.activate.test"),cancelButtonText:e.baseText("settings.sso.settings.save.activate.cancel")})==="confirm"&&await h(),R.track("User updated single sign on settings",{instance_id:$.instanceId,identity_provider:i.value==="url"?"metadata":"xml",is_active:n.isSamlLoginEnabled})}catch(t){y.showError(t,e.baseText("settings.sso.settings.save.error"));return}finally{await w()}},h=async()=>{try{const t=await n.testSamlConfig();typeof window<"u"&&window.open(t,"_blank")}catch(t){y.showError(t,"error")}},P=()=>{j.goToUpgrade("sso","upgrade-sso")};return Q(async()=>{if(n.isEnterpriseSamlEnabled)try{await w()}catch(t){y.showError(t,"error")}}),(t,r)=>{const k=p("n8n-heading"),A=p("el-switch"),F=p("n8n-tooltip"),q=p("n8n-info-tip"),H=p("n8n-radio-buttons"),L=p("n8n-input"),E=p("n8n-button"),J=p("n8n-action-box");return T(),C("div",lt,[u(k,{size:"2xlarge"},{default:d(()=>[x(o(s(e).baseText("settings.sso.title")),1)]),_:1}),a("div",{class:c(t.$style.top)},[u(k,{size:"xlarge"},{default:d(()=>[x(o(s(e).baseText("settings.sso.subtitle")),1)]),_:1}),s(n).isEnterpriseSamlEnabled?(T(),V(F,{key:0,disabled:s(n).isSamlLoginEnabled||_.value},{content:d(()=>[a("span",null,o(s(e).baseText("settings.sso.activation.tooltip")),1)]),default:d(()=>[u(A,{modelValue:s(n).isSamlLoginEnabled,"onUpdate:modelValue":r[0]||(r[0]=b=>s(n).isSamlLoginEnabled=b),disabled:!_.value,class:c(t.$style.switch),"inactive-text":X.value},null,8,["modelValue","disabled","class","inactive-text"])]),_:1},8,["disabled"])):W("",!0)],2),u(q,null,{default:d(()=>[x(o(s(e).baseText("settings.sso.info"))+" ",1),a("a",it,o(s(e).baseText("settings.sso.info.link")),1)]),_:1}),s(n).isEnterpriseSamlEnabled?(T(),C("div",rt,[a("div",{class:c(t.$style.group)},[a("label",null,o(s(e).baseText("settings.sso.settings.redirectUrl.label")),1),u(M,{value:S.value,"copy-button-text":s(e).baseText("generic.clickToCopy"),"toast-title":s(e).baseText("settings.sso.settings.redirectUrl.copied")},null,8,["value","copy-button-text","toast-title"]),a("small",null,o(s(e).baseText("settings.sso.settings.redirectUrl.help")),1)],2),a("div",{class:c(t.$style.group)},[a("label",null,o(s(e).baseText("settings.sso.settings.entityId.label")),1),u(M,{value:U.value,"copy-button-text":s(e).baseText("generic.clickToCopy"),"toast-title":s(e).baseText("settings.sso.settings.entityId.copied")},null,8,["value","copy-button-text","toast-title"]),a("small",null,o(s(e).baseText("settings.sso.settings.entityId.help")),1)],2),a("div",{class:c(t.$style.group)},[a("label",null,o(s(e).baseText("settings.sso.settings.ips.label")),1),a("div",ut,[u(H,{modelValue:i.value,"onUpdate:modelValue":r[1]||(r[1]=b=>i.value=b),options:N.value},null,8,["modelValue","options"])]),B(a("div",null,[u(L,{modelValue:m.value,"onUpdate:modelValue":r[2]||(r[2]=b=>m.value=b),type:"text",name:"metadataUrl",size:"large",placeholder:s(e).baseText("settings.sso.settings.ips.url.placeholder")},null,8,["modelValue","placeholder"]),a("small",null,o(s(e).baseText("settings.sso.settings.ips.url.help")),1)],512),[[I,i.value===l.URL]]),B(a("div",null,[u(L,{modelValue:g.value,"onUpdate:modelValue":r[3]||(r[3]=b=>g.value=b),type:"textarea",name:"metadata",rows:4},null,8,["modelValue"]),a("small",null,o(s(e).baseText("settings.sso.settings.ips.xml.help")),1)],512),[[I,i.value===l.XML]])],2),a("div",{class:c(t.$style.buttons)},[u(E,{disabled:!D.value,size:"large","data-test-id":"sso-save",onClick:O},{default:d(()=>[x(o(s(e).baseText("settings.sso.settings.save")),1)]),_:1},8,["disabled"]),u(E,{disabled:!G.value,size:"large",type:"tertiary","data-test-id":"sso-test",onClick:h},{default:d(()=>[x(o(s(e).baseText("settings.sso.settings.test")),1)]),_:1},8,["disabled"])],2),a("footer",{class:c(t.$style.footer)},o(s(e).baseText("settings.sso.settings.footer.hint")),3)])):(T(),V(J,{key:1,"data-test-id":"sso-content-unlicensed",class:c(t.$style.actionBox),description:s(e).baseText("settings.sso.actionBox.description"),"button-text":s(e).baseText("settings.sso.actionBox.buttonText"),"onClick:button":P},{heading:d(()=>[a("span",null,o(s(e).baseText("settings.sso.actionBox.title")),1)]),_:1},8,["class","description","button-text"]))])}}}),ct="_top_1i3kj_1",pt="_buttons_1i3kj_14",mt="_group_1i3kj_23",gt="_actionBox_1i3kj_39",bt="_footer_1i3kj_43",vt={top:ct,switch:"_switch_1i3kj_8",buttons:pt,group:mt,actionBox:gt,footer:bt},_t={$style:vt},Jt=nt(dt,[["__cssModules",_t]]);export{Jt as default};
|
|
2
|
+
//# sourceMappingURL=SettingsSso-c-njHRi9.js.map
|