n8n-editor-ui 1.22.0 → 1.22.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 +62 -62
- package/dist/assets/{AuthView-_5lvIORY.js → AuthView--On8E3VP.js} +2 -2
- package/dist/assets/{AuthView-_5lvIORY.js.map → AuthView--On8E3VP.js.map} +1 -1
- package/dist/assets/{CanvasControls-_S6dAUFr.js → CanvasControls-ebFBI-_5.js} +2 -2
- package/dist/assets/{CanvasControls-_S6dAUFr.js.map → CanvasControls-ebFBI-_5.js.map} +1 -1
- package/dist/assets/{ChangePasswordView-Gto324pL.js → ChangePasswordView-gj93rkzc.js} +2 -2
- package/dist/assets/{ChangePasswordView-Gto324pL.js.map → ChangePasswordView-gj93rkzc.js.map} +1 -1
- package/dist/assets/{CollectionParameter-ThiBAc6J.js → CollectionParameter-V1n0L6ao.js} +2 -2
- package/dist/assets/CollectionParameter-V1n0L6ao.js.map +1 -0
- package/dist/assets/{CredentialsView-WF2GuXwX.js → CredentialsView-9Nq2fOpi.js} +2 -2
- package/dist/assets/{CredentialsView-WF2GuXwX.js.map → CredentialsView-9Nq2fOpi.js.map} +1 -1
- package/dist/assets/{ExecutionFilter-6e5m1hky.js → ExecutionFilter-dfrYJ_Rf.js} +2 -2
- package/dist/assets/{ExecutionFilter-6e5m1hky.js.map → ExecutionFilter-dfrYJ_Rf.js.map} +1 -1
- package/dist/assets/{ExecutionPreview-qQdwo4nO.js → ExecutionPreview-yFW7oTRf.js} +2 -2
- package/dist/assets/{ExecutionPreview-qQdwo4nO.js.map → ExecutionPreview-yFW7oTRf.js.map} +1 -1
- package/dist/assets/{ExecutionsInfoAccordion-HQZywboM.js → ExecutionsInfoAccordion-EztI4QOE.js} +2 -2
- package/dist/assets/{ExecutionsInfoAccordion-HQZywboM.js.map → ExecutionsInfoAccordion-EztI4QOE.js.map} +1 -1
- package/dist/assets/{ExecutionsLandingPage-FEiybFSK.js → ExecutionsLandingPage-ygQGHLu2.js} +2 -2
- package/dist/assets/{ExecutionsLandingPage-FEiybFSK.js.map → ExecutionsLandingPage-ygQGHLu2.js.map} +1 -1
- package/dist/assets/{ExecutionsList-9Pc2Zrql.js → ExecutionsList-H9VKc4jb.js} +2 -2
- package/dist/assets/{ExecutionsList-9Pc2Zrql.js.map → ExecutionsList-H9VKc4jb.js.map} +1 -1
- package/dist/assets/{ExecutionsView-Li55aBU0.js → ExecutionsView-NdkXn6EA.js} +2 -2
- package/dist/assets/{ExecutionsView-Li55aBU0.js.map → ExecutionsView-NdkXn6EA.js.map} +1 -1
- package/dist/assets/{FixedCollectionParameter-d68rB1aT.js → FixedCollectionParameter-tJFyljoK.js} +3 -3
- package/dist/assets/{FixedCollectionParameter-d68rB1aT.js.map → FixedCollectionParameter-tJFyljoK.js.map} +1 -1
- package/dist/assets/{ForgotMyPasswordView-3lTe1SvY.js → ForgotMyPasswordView-VxAVQQgB.js} +2 -2
- package/dist/assets/{ForgotMyPasswordView-3lTe1SvY.js.map → ForgotMyPasswordView-VxAVQQgB.js.map} +1 -1
- package/dist/assets/{MainHeader-wtrPt4Uz.js → MainHeader-luMJdQn2.js} +2 -2
- package/dist/assets/{MainHeader-wtrPt4Uz.js.map → MainHeader-luMJdQn2.js.map} +1 -1
- package/dist/assets/{MainSidebar-dKXNC9E9.js → MainSidebar-nf-k1wHF.js} +2 -2
- package/dist/assets/{MainSidebar-dKXNC9E9.js.map → MainSidebar-nf-k1wHF.js.map} +1 -1
- package/dist/assets/{NodeCreation-lpcdOti7.js → NodeCreation-RvlbocPg.js} +3 -3
- package/dist/assets/{NodeCreation-lpcdOti7.js.map → NodeCreation-RvlbocPg.js.map} +1 -1
- package/dist/assets/{NodeCreator-YAF-VpA5.js → NodeCreator-zDLKC62A.js} +2 -2
- package/dist/assets/{NodeCreator-YAF-VpA5.js.map → NodeCreator-zDLKC62A.js.map} +1 -1
- package/dist/assets/{NodeList-8URsrxUQ.js → NodeList-U4qs88M0.js} +2 -2
- package/dist/assets/{NodeList-8URsrxUQ.js.map → NodeList-U4qs88M0.js.map} +1 -1
- package/dist/assets/{NodeView-caDno-kw.js → NodeView-fUdpq96X.js} +3 -3
- package/dist/assets/{NodeView-caDno-kw.js.map → NodeView-fUdpq96X.js.map} +1 -1
- package/dist/assets/{ResourcesListLayout-N4zg03Vf.js → ResourcesListLayout-y5FSwJeu.js} +2 -2
- package/dist/assets/{ResourcesListLayout-N4zg03Vf.js.map → ResourcesListLayout-y5FSwJeu.js.map} +1 -1
- package/dist/assets/{RunDataAi-EdxjRrVc.js → RunDataAi-dgEyN_Yl.js} +2 -2
- package/dist/assets/{RunDataAi-EdxjRrVc.js.map → RunDataAi-dgEyN_Yl.js.map} +1 -1
- package/dist/assets/{RunDataJson-wqxHrAY5.js → RunDataJson-RuNn5FTw.js} +3 -3
- package/dist/assets/{RunDataJson-wqxHrAY5.js.map → RunDataJson-RuNn5FTw.js.map} +1 -1
- package/dist/assets/{RunDataJsonActions-MfJV4quL.js → RunDataJsonActions-wMN8ObC3.js} +2 -2
- package/dist/assets/{RunDataJsonActions-MfJV4quL.js.map → RunDataJsonActions-wMN8ObC3.js.map} +1 -1
- package/dist/assets/{RunDataSchema-rxgd4Q_M.js → RunDataSchema-NrdiV0Bv.js} +2 -2
- package/dist/assets/{RunDataSchema-rxgd4Q_M.js.map → RunDataSchema-NrdiV0Bv.js.map} +1 -1
- package/dist/assets/{RunDataTable-2IMpD8oi.js → RunDataTable-vThTeakV.js} +2 -2
- package/dist/assets/{RunDataTable-2IMpD8oi.js.map → RunDataTable-vThTeakV.js.map} +1 -1
- package/dist/assets/{SamlOnboarding-RIlvbmgY.js → SamlOnboarding-7ZeWtOoT.js} +2 -2
- package/dist/assets/{SamlOnboarding-RIlvbmgY.js.map → SamlOnboarding-7ZeWtOoT.js.map} +1 -1
- package/dist/assets/SettingsApiView-d7znGVgB.js +2 -0
- package/dist/assets/SettingsApiView-d7znGVgB.js.map +1 -0
- package/dist/assets/{SettingsCommunityNodesView-xqn73tJO.js → SettingsCommunityNodesView-U2OqH5_g.js} +2 -2
- package/dist/assets/{SettingsCommunityNodesView-xqn73tJO.js.map → SettingsCommunityNodesView-U2OqH5_g.js.map} +1 -1
- package/dist/assets/{SettingsExternalSecrets-yr_g8DWk.js → SettingsExternalSecrets-OK2zcF3w.js} +2 -2
- package/dist/assets/{SettingsExternalSecrets-yr_g8DWk.js.map → SettingsExternalSecrets-OK2zcF3w.js.map} +1 -1
- package/dist/assets/{SettingsFakeDoorView-ogkrrHSL.js → SettingsFakeDoorView-wbngwN3n.js} +2 -2
- package/dist/assets/{SettingsFakeDoorView-ogkrrHSL.js.map → SettingsFakeDoorView-wbngwN3n.js.map} +1 -1
- package/dist/assets/{SettingsLdapView-aWCvc1gM.js → SettingsLdapView-rYSjSdpv.js} +2 -2
- package/dist/assets/{SettingsLdapView-aWCvc1gM.js.map → SettingsLdapView-rYSjSdpv.js.map} +1 -1
- package/dist/assets/{SettingsLogStreamingView-IdWAQAEz.js → SettingsLogStreamingView-r4yJe9rt.js} +2 -2
- package/dist/assets/{SettingsLogStreamingView-IdWAQAEz.js.map → SettingsLogStreamingView-r4yJe9rt.js.map} +1 -1
- package/dist/assets/{SettingsSourceControl-s8B2f1Et.js → SettingsSourceControl-2sJrfiQZ.js} +2 -2
- package/dist/assets/{SettingsSourceControl-s8B2f1Et.js.map → SettingsSourceControl-2sJrfiQZ.js.map} +1 -1
- package/dist/assets/{SettingsSso-xhUlnU8v.js → SettingsSso-F08fTaoT.js} +2 -2
- package/dist/assets/{SettingsSso-xhUlnU8v.js.map → SettingsSso-F08fTaoT.js.map} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-qguburG-.js → SettingsUsageAndPlan-P3NemeAe.js} +2 -2
- package/dist/assets/{SettingsUsageAndPlan-qguburG-.js.map → SettingsUsageAndPlan-P3NemeAe.js.map} +1 -1
- package/dist/assets/{SettingsUsersView-mRes9Qkr.js → SettingsUsersView-qkwybUvB.js} +2 -2
- package/dist/assets/{SettingsUsersView-mRes9Qkr.js.map → SettingsUsersView-qkwybUvB.js.map} +1 -1
- package/dist/assets/{SettingsView-3Vqg8kdv.js → SettingsView-9Bw0MXcT.js} +2 -2
- package/dist/assets/{SettingsView-3Vqg8kdv.js.map → SettingsView-9Bw0MXcT.js.map} +1 -1
- package/dist/assets/{SetupView-RR2VulZH.js → SetupView-s0yzV7Gm.js} +2 -2
- package/dist/assets/{SetupView-RR2VulZH.js.map → SetupView-s0yzV7Gm.js.map} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-BbMhs31Z.js → SetupWorkflowFromTemplateView-6De7ws36.js} +2 -2
- package/dist/assets/{SetupWorkflowFromTemplateView-BbMhs31Z.js.map → SetupWorkflowFromTemplateView-6De7ws36.js.map} +1 -1
- package/dist/assets/{SigninView-hIeIEews.js → SigninView-QvYhHXWz.js} +2 -2
- package/dist/assets/{SigninView-hIeIEews.js.map → SigninView-QvYhHXWz.js.map} +1 -1
- package/dist/assets/{SignupView-iaO_BXyp.js → SignupView-ZLqXA-fI.js} +2 -2
- package/dist/assets/{SignupView-iaO_BXyp.js.map → SignupView-ZLqXA-fI.js.map} +1 -1
- package/dist/assets/{TemplateDetails-HasVFCUO.js → TemplateDetails-qWnefMYx.js} +2 -2
- package/dist/assets/{TemplateDetails-HasVFCUO.js.map → TemplateDetails-qWnefMYx.js.map} +1 -1
- package/dist/assets/{TemplateList-uT0I7BC-.js → TemplateList-Ek8NkQLd.js} +2 -2
- package/dist/assets/{TemplateList-uT0I7BC-.js.map → TemplateList-Ek8NkQLd.js.map} +1 -1
- package/dist/assets/{TemplatesCollectionView-WwdzPK0w.js → TemplatesCollectionView-xoRz-QfG.js} +2 -2
- package/dist/assets/{TemplatesCollectionView-WwdzPK0w.js.map → TemplatesCollectionView-xoRz-QfG.js.map} +1 -1
- package/dist/assets/{TemplatesInfoCarousel-WUt6CUAt.js → TemplatesInfoCarousel-TKGxiVaR.js} +2 -2
- package/dist/assets/{TemplatesInfoCarousel-WUt6CUAt.js.map → TemplatesInfoCarousel-TKGxiVaR.js.map} +1 -1
- package/dist/assets/{TemplatesSearchView-pwVBF7_m.js → TemplatesSearchView-gwbhQE6_.js} +2 -2
- package/dist/assets/{TemplatesSearchView-pwVBF7_m.js.map → TemplatesSearchView-gwbhQE6_.js.map} +1 -1
- package/dist/assets/{TemplatesWorkflowView-OxfZO4yX.js → TemplatesWorkflowView-VbJuwYVl.js} +2 -2
- package/dist/assets/{TemplatesWorkflowView-OxfZO4yX.js.map → TemplatesWorkflowView-VbJuwYVl.js.map} +1 -1
- package/dist/assets/{VariablesView-O1dh47w6.js → VariablesView-ZNxPDs_G.js} +2 -2
- package/dist/assets/{VariablesView-O1dh47w6.js.map → VariablesView-ZNxPDs_G.js.map} +1 -1
- package/dist/assets/{WorkerView-ehe17h1Q.js → WorkerView-Rzm_p5Pv.js} +2 -2
- package/dist/assets/{WorkerView-ehe17h1Q.js.map → WorkerView-Rzm_p5Pv.js.map} +1 -1
- package/dist/assets/{WorkflowActivator-EK3d11st.js → WorkflowActivator-H10vhdIV.js} +2 -2
- package/dist/assets/{WorkflowActivator-EK3d11st.js.map → WorkflowActivator-H10vhdIV.js.map} +1 -1
- package/dist/assets/{WorkflowHistory-mqWH3nQZ.js → WorkflowHistory-diO3ekal.js} +2 -2
- package/dist/assets/{WorkflowHistory-mqWH3nQZ.js.map → WorkflowHistory-diO3ekal.js.map} +1 -1
- package/dist/assets/{WorkflowOnboardingView-LZfOfbX4.js → WorkflowOnboardingView-gUVzVQsZ.js} +2 -2
- package/dist/assets/{WorkflowOnboardingView-LZfOfbX4.js.map → WorkflowOnboardingView-gUVzVQsZ.js.map} +1 -1
- package/dist/assets/{WorkflowsView-NL0wKv4C.js → WorkflowsView-Qqq1sZTo.js} +2 -2
- package/dist/assets/{WorkflowsView-NL0wKv4C.js.map → WorkflowsView-Qqq1sZTo.js.map} +1 -1
- package/dist/assets/{cloud-JhkwKZAE.js → cloud-g7GqwUFZ.js} +2 -2
- package/dist/assets/{cloud-JhkwKZAE.js.map → cloud-g7GqwUFZ.js.map} +1 -1
- package/dist/assets/{executionsHelpers-Gkj6bYJi.js → executionsHelpers-gnbzcx5j.js} +2 -2
- package/dist/assets/{executionsHelpers-Gkj6bYJi.js.map → executionsHelpers-gnbzcx5j.js.map} +1 -1
- package/dist/assets/{index--RuZ5wHr.js → index-RXjMHIPR.js} +11 -11
- package/dist/assets/{index--RuZ5wHr.js.map → index-RXjMHIPR.js.map} +1 -1
- package/dist/assets/{pushConnection-UpdxMjHa.js → pushConnection-HdjAqr4R.js} +2 -2
- package/dist/assets/{pushConnection-UpdxMjHa.js.map → pushConnection-HdjAqr4R.js.map} +1 -1
- package/dist/assets/{templateActions-CZfTXoBx.js → templateActions-y8msVyEB.js} +2 -2
- package/dist/assets/{templateActions-CZfTXoBx.js.map → templateActions-y8msVyEB.js.map} +1 -1
- package/dist/assets/{useExecutionDebugging-FPo5qMF0.js → useExecutionDebugging-Yog1CJXv.js} +2 -2
- package/dist/assets/{useExecutionDebugging-FPo5qMF0.js.map → useExecutionDebugging-Yog1CJXv.js.map} +1 -1
- package/dist/assets/{workflowActivate-FltKJaAB.js → workflowActivate-IRvCsxq5.js} +2 -2
- package/dist/assets/{workflowActivate-FltKJaAB.js.map → workflowActivate-IRvCsxq5.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-ThiBAc6J.js.map +0 -1
- package/dist/assets/SettingsApiView-_7qUJ2zm.js +0 -2
- package/dist/assets/SettingsApiView-_7qUJ2zm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsLdapView-aWCvc1gM.js","sources":["../../src/views/SettingsLdapView.vue"],"sourcesContent":["<template>\n\t<div v-if=\"!isLDAPFeatureEnabled\">\n\t\t<div :class=\"[$style.header, 'mb-2xl']\">\n\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t{{ $locale.baseText('settings.ldap') }}\n\t\t\t</n8n-heading>\n\t\t</div>\n\n\t\t<n8n-info-tip type=\"note\" theme=\"info\" tooltipPlacement=\"right\" class=\"mb-l\">\n\t\t\t{{ $locale.baseText('settings.ldap.note') }}\n\t\t</n8n-info-tip>\n\t\t<n8n-action-box\n\t\t\t:description=\"$locale.baseText('settings.ldap.disabled.description')\"\n\t\t\t:buttonText=\"$locale.baseText('settings.ldap.disabled.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.ldap.disabled.title') }}</span>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n\t<div v-else>\n\t\t<div :class=\"$style.container\">\n\t\t\t<div :class=\"$style.header\">\n\t\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t\t{{ $locale.baseText('settings.ldap') }}\n\t\t\t\t</n8n-heading>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.docsInfoTip\">\n\t\t\t\t<n8n-info-tip theme=\"info\" type=\"note\">\n\t\t\t\t\t<span v-html=\"$locale.baseText('settings.ldap.infoTip')\"></span>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.settingsForm\">\n\t\t\t\t<n8n-form-inputs\n\t\t\t\t\tv-if=\"formInputs\"\n\t\t\t\t\tref=\"ldapConfigForm\"\n\t\t\t\t\t:inputs=\"formInputs\"\n\t\t\t\t\t:eventBus=\"formBus\"\n\t\t\t\t\t:columnView=\"true\"\n\t\t\t\t\tverticalSpacing=\"l\"\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\t<div>\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-if=\"loginEnabled\"\n\t\t\t\t\t:label=\"\n\t\t\t\t\t\tloadingTestConnection\n\t\t\t\t\t\t\t? $locale.baseText('settings.ldap.testingConnection')\n\t\t\t\t\t\t\t: $locale.baseText('settings.ldap.testConnection')\n\t\t\t\t\t\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingTestConnection\"\n\t\t\t\t\t@click=\"onTestConnectionClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.save')\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t:disabled=\"!hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t@click=\"onSaveClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"loginEnabled\">\n\t\t\t<n8n-heading tag=\"h1\" class=\"mb-xl mt-3xl\" size=\"medium\">{{\n\t\t\t\t$locale.baseText('settings.ldap.section.synchronization.title')\n\t\t\t}}</n8n-heading>\n\t\t\t<div :class=\"$style.syncTable\">\n\t\t\t\t<el-table\n\t\t\t\t\tv-loading=\"loadingTable\"\n\t\t\t\t\t:border=\"true\"\n\t\t\t\t\t:stripe=\"true\"\n\t\t\t\t\t:data=\"dataTable\"\n\t\t\t\t\t:cell-style=\"cellClassStyle\"\n\t\t\t\t\tstyle=\"width: 100%\"\n\t\t\t\t\theight=\"250\"\n\t\t\t\t\t:key=\"tableKey\"\n\t\t\t\t>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"status\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.status')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"endedAt\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.endedAt')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"runMode\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.runMode')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"runTime\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.runTime')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"details\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.details')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<template #empty>{{\n\t\t\t\t\t\t$locale.baseText('settings.ldap.synchronizationTable.empty.message')\n\t\t\t\t\t}}</template>\n\t\t\t\t\t<template #append>\n\t\t\t\t\t\t<infinite-loading\n\t\t\t\t\t\t\t@infinite=\"getLdapSynchronizations\"\n\t\t\t\t\t\t\tforce-use-infinite-wrapper=\".el-table__body-wrapper\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t</infinite-loading>\n\t\t\t\t\t</template>\n\t\t\t\t</el-table>\n\t\t\t</div>\n\t\t\t<div class=\"pb-3xl\">\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.dryRun')\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingDryRun\"\n\t\t\t\t\t@click=\"onDryRunClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizeNow')\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingLiveRun\"\n\t\t\t\t\t@click=\"onLiveRunClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { capitalizeFirstLetter } from '@/utils/htmlUtils';\nimport { convertToDisplayDate } from '@/utils/typesUtils';\nimport { useToast } from '@/composables/useToast';\nimport { useMessage } from '@/composables/useMessage';\nimport type {\n\tILdapConfig,\n\tILdapSyncData,\n\tILdapSyncTable,\n\tIFormInput,\n\tIFormInputs,\n\tIUser,\n} from '@/Interface';\nimport { MODAL_CONFIRM } from '@/constants';\n\nimport humanizeDuration from 'humanize-duration';\nimport { ElTable, ElTableColumn } from 'element-plus';\nimport InfiniteLoading from 'v3-infinite-loading';\nimport { mapStores } from 'pinia';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { createEventBus } from 'n8n-design-system/utils';\nimport type { N8nFormInputs } from 'n8n-design-system';\nimport type { CellStyle } from 'element-plus';\n\ntype N8nFormInputsRef = InstanceType<typeof N8nFormInputs>;\n\ntype TableRow = {\n\tstatus: string;\n\tstartAt: string;\n\tendedAt: string;\n\terror: string;\n\trunMode: string;\n};\n\nexport default defineComponent({\n\tname: 'SettingsLdapView',\n\tcomponents: {\n\t\tInfiniteLoading,\n\t\tElTable,\n\t\tElTableColumn,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdataTable: [] as ILdapSyncTable[],\n\t\t\ttableKey: 0,\n\t\t\tadConfig: {} as ILdapConfig,\n\t\t\tloadingTestConnection: false,\n\t\t\tloadingDryRun: false,\n\t\t\tloadingLiveRun: false,\n\t\t\tloadingTable: false,\n\t\t\thasAnyChanges: false,\n\t\t\tformInputs: null as null | IFormInputs,\n\t\t\tformBus: createEventBus(),\n\t\t\treadyToSubmit: false,\n\t\t\tpage: 0,\n\t\t\tloginEnabled: false,\n\t\t\tsyncEnabled: false,\n\t\t};\n\t},\n\tasync mounted() {\n\t\tif (!this.isLDAPFeatureEnabled) return;\n\t\tawait this.getLdapConfig();\n\t},\n\tcomputed: {\n\t\t...mapStores(useUsersStore, useSettingsStore, useUIStore),\n\t\tcurrentUser(): null | IUser {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisLDAPFeatureEnabled(): boolean {\n\t\t\treturn this.settingsStore.settings.enterprise.ldap;\n\t\t},\n\t},\n\tmethods: {\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('ldap', 'upgrade-ldap');\n\t\t},\n\t\tcellClassStyle({ row, column }: CellStyle<TableRow>) {\n\t\t\tif (column.property === 'status') {\n\t\t\t\tif (row.status === 'Success') {\n\t\t\t\t\treturn { color: 'green' };\n\t\t\t\t} else if (row.status === 'Error') {\n\t\t\t\t\treturn { color: 'red' };\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (column.property === 'runMode') {\n\t\t\t\tif (row.runMode === 'Dry') {\n\t\t\t\t\treturn { color: 'orange' };\n\t\t\t\t} else if (row.runMode === 'Live') {\n\t\t\t\t\treturn { color: 'blue' };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {};\n\t\t},\n\t\tonInput(input: { name: string; value: string | number | boolean }) {\n\t\t\tif (input.name === 'loginEnabled' && typeof input.value === 'boolean') {\n\t\t\t\tthis.loginEnabled = input.value;\n\t\t\t}\n\t\t\tif (input.name === 'synchronizationEnabled' && typeof input.value === 'boolean') {\n\t\t\t\tthis.syncEnabled = input.value;\n\t\t\t}\n\t\t\tthis.hasAnyChanges = true;\n\t\t},\n\t\tonReadyToSubmit(ready: boolean) {\n\t\t\tthis.readyToSubmit = ready;\n\t\t},\n\t\tsyncDataMapper(sync: ILdapSyncData): ILdapSyncTable {\n\t\t\tconst startedAt = new Date(sync.startedAt);\n\t\t\tconst endedAt = new Date(sync.endedAt);\n\t\t\tconst runTimeInMinutes = endedAt.getTime() - startedAt.getTime();\n\t\t\treturn {\n\t\t\t\trunTime: humanizeDuration(runTimeInMinutes),\n\t\t\t\trunMode: capitalizeFirstLetter(sync.runMode),\n\t\t\t\tstatus: capitalizeFirstLetter(sync.status),\n\t\t\t\tendedAt: convertToDisplayDate(endedAt.getTime()),\n\t\t\t\tdetails: this.$locale.baseText('settings.ldap.usersScanned', {\n\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\tscanned: sync.scanned.toString(),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t};\n\t\t},\n\t\tasync onSubmit(): Promise<void> {\n\t\t\t// We want to save all form values (incl. the hidden onces), so we are using\n\t\t\t// `values` data prop of the `FormInputs` child component since they are all preserved there\n\t\t\tconst formInputsRef = this.$refs.ldapConfigForm as N8nFormInputsRef | undefined;\n\t\t\tif (!this.hasAnyChanges || !formInputsRef) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newConfiguration: ILdapConfig = {\n\t\t\t\tloginEnabled: formInputsRef.values.loginEnabled,\n\t\t\t\tloginLabel: formInputsRef.values.loginLabel,\n\t\t\t\tconnectionUrl: formInputsRef.values.serverAddress,\n\t\t\t\tallowUnauthorizedCerts: formInputsRef.values.allowUnauthorizedCerts,\n\t\t\t\tconnectionPort: +formInputsRef.values.port,\n\t\t\t\tconnectionSecurity: formInputsRef.values.connectionSecurity,\n\t\t\t\tbaseDn: formInputsRef.values.baseDn,\n\t\t\t\tbindingAdminDn:\n\t\t\t\t\tformInputsRef.values.bindingType === 'admin' ? formInputsRef.values.adminDn : '',\n\t\t\t\tbindingAdminPassword:\n\t\t\t\t\tformInputsRef.values.bindingType === 'admin' ? formInputsRef.values.adminPassword : '',\n\t\t\t\temailAttribute: formInputsRef.values.email,\n\t\t\t\tfirstNameAttribute: formInputsRef.values.firstName,\n\t\t\t\tlastNameAttribute: formInputsRef.values.lastName,\n\t\t\t\tloginIdAttribute: formInputsRef.values.loginId,\n\t\t\t\tldapIdAttribute: formInputsRef.values.ldapId,\n\t\t\t\tuserFilter: formInputsRef.values.userFilter,\n\t\t\t\tsynchronizationEnabled: formInputsRef.values.synchronizationEnabled,\n\t\t\t\tsynchronizationInterval: +formInputsRef.values.synchronizationInterval,\n\t\t\t\tsearchPageSize: +formInputsRef.values.pageSize,\n\t\t\t\tsearchTimeout: +formInputsRef.values.searchTimeout,\n\t\t\t};\n\n\t\t\tlet saveForm = true;\n\n\t\t\ttry {\n\t\t\t\tif (this.adConfig.loginEnabled && !newConfiguration.loginEnabled) {\n\t\t\t\t\tconst confirmAction = await this.confirm(\n\t\t\t\t\t\tthis.$locale.baseText('settings.ldap.confirmMessage.beforeSaveForm.message'),\n\t\t\t\t\t\tthis.$locale.baseText('settings.ldap.confirmMessage.beforeSaveForm.headline'),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcancelButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tsaveForm = confirmAction === MODAL_CONFIRM;\n\t\t\t\t}\n\n\t\t\t\tif (!saveForm) {\n\t\t\t\t\tthis.hasAnyChanges = true;\n\t\t\t\t}\n\n\t\t\t\tthis.adConfig = await this.settingsStore.updateLdapConfig(newConfiguration);\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.updateConfiguration'),\n\t\t\t\t\tmessage: '',\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.configurationError'));\n\t\t\t} finally {\n\t\t\t\tif (saveForm) {\n\t\t\t\t\tthis.hasAnyChanges = false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonSaveClick() {\n\t\t\tthis.formBus.emit('submit');\n\t\t},\n\t\tasync onTestConnectionClick() {\n\t\t\tthis.loadingTestConnection = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.testLdapConnection();\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.connectionTest'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.connection.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.connectionTestError'),\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tthis.loadingTestConnection = false;\n\t\t\t}\n\t\t},\n\t\tasync onDryRunClick() {\n\t\t\tthis.loadingDryRun = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.runLdapSync({ type: 'dry' });\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.runSync.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.sync.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t} finally {\n\t\t\t\tthis.loadingDryRun = false;\n\t\t\t\tawait this.reloadLdapSynchronizations();\n\t\t\t}\n\t\t},\n\t\tasync onLiveRunClick() {\n\t\t\tthis.loadingLiveRun = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.runLdapSync({ type: 'live' });\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.runSync.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.sync.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t} finally {\n\t\t\t\tthis.loadingLiveRun = false;\n\t\t\t\tawait this.reloadLdapSynchronizations();\n\t\t\t}\n\t\t},\n\t\tasync getLdapConfig() {\n\t\t\ttry {\n\t\t\t\tthis.adConfig = await this.settingsStore.getLdapConfig();\n\t\t\t\tthis.loginEnabled = this.adConfig.loginEnabled;\n\t\t\t\tthis.syncEnabled = this.adConfig.synchronizationEnabled;\n\t\t\t\tconst whenLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.loginEnabled === true;\n\t\t\t\tconst whenSyncAndLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.synchronizationEnabled === true && values.loginEnabled === true;\n\t\t\t\tconst whenAdminBindingAndLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.bindingType === 'admin' && values.loginEnabled === true;\n\t\t\t\tthis.formInputs = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginEnabled',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginEnabled,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginEnabled.label'),\n\t\t\t\t\t\t\ttooltipText: this.$locale.baseText('settings.ldap.form.loginEnabled.tooltip'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginLabel',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginLabel,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginLabel.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.loginLabel.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.loginLabel.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'serverAddress',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionUrl,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.serverAddress.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.serverAddress.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.serverAddress.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'port',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionPort,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.port.label'),\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.port.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'connectionSecurity',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionSecurity,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.connectionSecurity.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.connectionSecurity.infoText'),\n\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'None',\n\t\t\t\t\t\t\t\t\tvalue: 'none',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'TLS',\n\t\t\t\t\t\t\t\t\tvalue: 'tls',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'STARTTLS',\n\t\t\t\t\t\t\t\t\tvalue: 'startTls',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'allowUnauthorizedCerts',\n\t\t\t\t\t\tinitialValue: this.adConfig.allowUnauthorizedCerts,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.allowUnauthorizedCerts.label'),\n\t\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay(values): boolean {\n\t\t\t\t\t\t\treturn values.connectionSecurity !== 'none' && values.loginEnabled === true;\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'baseDn',\n\t\t\t\t\t\tinitialValue: this.adConfig.baseDn,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.baseDn.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.baseDn.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.baseDn.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'bindingType',\n\t\t\t\t\t\tinitialValue: 'admin',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.bindingType.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.bindingType.infoText'),\n\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'admin',\n\t\t\t\t\t\t\t\t\tlabel: 'Admin',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'anonymous',\n\t\t\t\t\t\t\t\t\tlabel: 'Anonymous',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'adminDn',\n\t\t\t\t\t\tinitialValue: this.adConfig.bindingAdminDn,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.adminDn.label'),\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.adminDn.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.adminDn.infoText'),\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenAdminBindingAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'adminPassword',\n\t\t\t\t\t\tinitialValue: this.adConfig.bindingAdminPassword,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.adminPassword.label'),\n\t\t\t\t\t\t\ttype: 'password',\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.adminPassword.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenAdminBindingAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'userFilter',\n\t\t\t\t\t\tinitialValue: this.adConfig.userFilter,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.userFilter.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.userFilter.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.userFilter.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'attributeMappingInfo',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.attributeMappingInfo.label'),\n\t\t\t\t\t\t\ttype: 'info',\n\t\t\t\t\t\t\tlabelSize: 'large',\n\t\t\t\t\t\t\tlabelAlignment: 'left',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'ldapId',\n\t\t\t\t\t\tinitialValue: this.adConfig.ldapIdAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.ldapId.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.ldapId.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.ldapId.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginId',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginIdAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginId.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.loginId.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.loginId.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'email',\n\t\t\t\t\t\tinitialValue: this.adConfig.emailAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.email.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.email.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.email.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'firstName',\n\t\t\t\t\t\tinitialValue: this.adConfig.firstNameAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.firstName.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.firstName.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.firstName.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'lastName',\n\t\t\t\t\t\tinitialValue: this.adConfig.lastNameAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.lastName.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.lastName.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.lastName.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'synchronizationEnabled',\n\t\t\t\t\t\tinitialValue: this.adConfig.synchronizationEnabled,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.synchronizationEnabled.label'),\n\t\t\t\t\t\t\ttooltipText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.form.synchronizationEnabled.tooltip',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'synchronizationInterval',\n\t\t\t\t\t\tinitialValue: this.adConfig.synchronizationInterval,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.synchronizationInterval.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.form.synchronizationInterval.infoText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'pageSize',\n\t\t\t\t\t\tinitialValue: this.adConfig.searchPageSize,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.pageSize.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.pageSize.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'searchTimeout',\n\t\t\t\t\t\tinitialValue: this.adConfig.searchTimeout,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.searchTimeout.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.searchTimeout.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.configurationError'));\n\t\t\t}\n\t\t},\n\t\tasync getLdapSynchronizations(state: { loaded: () => void; complete: () => void }) {\n\t\t\ttry {\n\t\t\t\tthis.loadingTable = true;\n\t\t\t\tconst data = await this.settingsStore.getLdapSynchronizations({\n\t\t\t\t\tpage: this.page,\n\t\t\t\t});\n\n\t\t\t\tif (data.length !== 0) {\n\t\t\t\t\tthis.dataTable.push(...data.map(this.syncDataMapper));\n\t\t\t\t\tthis.page += 1;\n\t\t\t\t\tstate.loaded();\n\t\t\t\t} else {\n\t\t\t\t\tstate.complete();\n\t\t\t\t}\n\t\t\t\tthis.loadingTable = false;\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t}\n\t\t},\n\t\tasync reloadLdapSynchronizations() {\n\t\t\ttry {\n\t\t\t\tthis.page = 0;\n\t\t\t\tthis.tableKey += 1;\n\t\t\t\tthis.dataTable = [];\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\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}\n\n.syncTable {\n\tmargin-bottom: var(--spacing-2xl);\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.enableFeatureContainer {\n\tmargin-bottom: var(--spacing-1xl);\n}\n\n.enableFeatureContainer > span {\n\tfont-size: var(--font-size-s);\n\tfont-weight: var(--font-weight-bold);\n\tpadding: 0;\n}\n\n.enableFeatureContainer {\n\t> * {\n\t\tpadding: 0.5em;\n\t}\n}\n\n.sectionHeader {\n\tmargin-bottom: var(--spacing-s);\n}\n\n.settingsForm {\n\t:global(.form-text) {\n\t\tmargin-top: var(--spacing-xl);\n\t}\n}\n\n.docsInfoTip {\n\t&,\n\t& > div {\n\t\tmargin-bottom: var(--spacing-xl);\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","InfiniteLoading","ElTable","ElTableColumn","useToast","useMessage","createEventBus","mapStores","useUsersStore","useSettingsStore","useUIStore","row","column","input","ready","sync","startedAt","endedAt","runTimeInMinutes","humanizeDuration","capitalizeFirstLetter","convertToDisplayDate","formInputsRef","newConfiguration","saveForm","MODAL_CONFIRM","error","whenLoginEnabled","values","whenSyncAndLoginEnabled","whenAdminBindingAndLoginEnabled","state","data","_hoisted_3","_resolveDirective","_ctx","_openBlock","_createElementBlock","_hoisted_2","_createElementVNode","_normalizeClass","_withCtx","_component_n8n_info_tip","_createBlock","_component_n8n_form_inputs","_createCommentVNode","_component_n8n_button","_createVNode","_hoisted_4","_component_n8n_heading","_withDirectives","_component_el_table","_createTextVNode","_toDisplayString","_component_infinite_loading","_component_el_table_column","_hoisted_5","_hoisted_1","_component_n8n_action_box"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsLdapView-rYSjSdpv.js","sources":["../../src/views/SettingsLdapView.vue"],"sourcesContent":["<template>\n\t<div v-if=\"!isLDAPFeatureEnabled\">\n\t\t<div :class=\"[$style.header, 'mb-2xl']\">\n\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t{{ $locale.baseText('settings.ldap') }}\n\t\t\t</n8n-heading>\n\t\t</div>\n\n\t\t<n8n-info-tip type=\"note\" theme=\"info\" tooltipPlacement=\"right\" class=\"mb-l\">\n\t\t\t{{ $locale.baseText('settings.ldap.note') }}\n\t\t</n8n-info-tip>\n\t\t<n8n-action-box\n\t\t\t:description=\"$locale.baseText('settings.ldap.disabled.description')\"\n\t\t\t:buttonText=\"$locale.baseText('settings.ldap.disabled.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.ldap.disabled.title') }}</span>\n\t\t\t</template>\n\t\t</n8n-action-box>\n\t</div>\n\t<div v-else>\n\t\t<div :class=\"$style.container\">\n\t\t\t<div :class=\"$style.header\">\n\t\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t\t{{ $locale.baseText('settings.ldap') }}\n\t\t\t\t</n8n-heading>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.docsInfoTip\">\n\t\t\t\t<n8n-info-tip theme=\"info\" type=\"note\">\n\t\t\t\t\t<span v-html=\"$locale.baseText('settings.ldap.infoTip')\"></span>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.settingsForm\">\n\t\t\t\t<n8n-form-inputs\n\t\t\t\t\tv-if=\"formInputs\"\n\t\t\t\t\tref=\"ldapConfigForm\"\n\t\t\t\t\t:inputs=\"formInputs\"\n\t\t\t\t\t:eventBus=\"formBus\"\n\t\t\t\t\t:columnView=\"true\"\n\t\t\t\t\tverticalSpacing=\"l\"\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\t<div>\n\t\t\t\t<n8n-button\n\t\t\t\t\tv-if=\"loginEnabled\"\n\t\t\t\t\t:label=\"\n\t\t\t\t\t\tloadingTestConnection\n\t\t\t\t\t\t\t? $locale.baseText('settings.ldap.testingConnection')\n\t\t\t\t\t\t\t: $locale.baseText('settings.ldap.testConnection')\n\t\t\t\t\t\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingTestConnection\"\n\t\t\t\t\t@click=\"onTestConnectionClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.save')\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t:disabled=\"!hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t@click=\"onSaveClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"loginEnabled\">\n\t\t\t<n8n-heading tag=\"h1\" class=\"mb-xl mt-3xl\" size=\"medium\">{{\n\t\t\t\t$locale.baseText('settings.ldap.section.synchronization.title')\n\t\t\t}}</n8n-heading>\n\t\t\t<div :class=\"$style.syncTable\">\n\t\t\t\t<el-table\n\t\t\t\t\tv-loading=\"loadingTable\"\n\t\t\t\t\t:border=\"true\"\n\t\t\t\t\t:stripe=\"true\"\n\t\t\t\t\t:data=\"dataTable\"\n\t\t\t\t\t:cell-style=\"cellClassStyle\"\n\t\t\t\t\tstyle=\"width: 100%\"\n\t\t\t\t\theight=\"250\"\n\t\t\t\t\t:key=\"tableKey\"\n\t\t\t\t>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"status\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.status')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"endedAt\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.endedAt')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"runMode\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.runMode')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"runTime\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.runTime')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<el-table-column\n\t\t\t\t\t\tprop=\"details\"\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizationTable.column.details')\"\n\t\t\t\t\t>\n\t\t\t\t\t</el-table-column>\n\t\t\t\t\t<template #empty>{{\n\t\t\t\t\t\t$locale.baseText('settings.ldap.synchronizationTable.empty.message')\n\t\t\t\t\t}}</template>\n\t\t\t\t\t<template #append>\n\t\t\t\t\t\t<infinite-loading\n\t\t\t\t\t\t\t@infinite=\"getLdapSynchronizations\"\n\t\t\t\t\t\t\tforce-use-infinite-wrapper=\".el-table__body-wrapper\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t</infinite-loading>\n\t\t\t\t\t</template>\n\t\t\t\t</el-table>\n\t\t\t</div>\n\t\t\t<div class=\"pb-3xl\">\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.dryRun')\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\tclass=\"mr-s\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingDryRun\"\n\t\t\t\t\t@click=\"onDryRunClick\"\n\t\t\t\t/>\n\t\t\t\t<n8n-button\n\t\t\t\t\t:label=\"$locale.baseText('settings.ldap.synchronizeNow')\"\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t:disabled=\"hasAnyChanges || !readyToSubmit\"\n\t\t\t\t\t:loading=\"loadingLiveRun\"\n\t\t\t\t\t@click=\"onLiveRunClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { capitalizeFirstLetter } from '@/utils/htmlUtils';\nimport { convertToDisplayDate } from '@/utils/typesUtils';\nimport { useToast } from '@/composables/useToast';\nimport { useMessage } from '@/composables/useMessage';\nimport type {\n\tILdapConfig,\n\tILdapSyncData,\n\tILdapSyncTable,\n\tIFormInput,\n\tIFormInputs,\n\tIUser,\n} from '@/Interface';\nimport { MODAL_CONFIRM } from '@/constants';\n\nimport humanizeDuration from 'humanize-duration';\nimport { ElTable, ElTableColumn } from 'element-plus';\nimport InfiniteLoading from 'v3-infinite-loading';\nimport { mapStores } from 'pinia';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { createEventBus } from 'n8n-design-system/utils';\nimport type { N8nFormInputs } from 'n8n-design-system';\nimport type { CellStyle } from 'element-plus';\n\ntype N8nFormInputsRef = InstanceType<typeof N8nFormInputs>;\n\ntype TableRow = {\n\tstatus: string;\n\tstartAt: string;\n\tendedAt: string;\n\terror: string;\n\trunMode: string;\n};\n\nexport default defineComponent({\n\tname: 'SettingsLdapView',\n\tcomponents: {\n\t\tInfiniteLoading,\n\t\tElTable,\n\t\tElTableColumn,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdataTable: [] as ILdapSyncTable[],\n\t\t\ttableKey: 0,\n\t\t\tadConfig: {} as ILdapConfig,\n\t\t\tloadingTestConnection: false,\n\t\t\tloadingDryRun: false,\n\t\t\tloadingLiveRun: false,\n\t\t\tloadingTable: false,\n\t\t\thasAnyChanges: false,\n\t\t\tformInputs: null as null | IFormInputs,\n\t\t\tformBus: createEventBus(),\n\t\t\treadyToSubmit: false,\n\t\t\tpage: 0,\n\t\t\tloginEnabled: false,\n\t\t\tsyncEnabled: false,\n\t\t};\n\t},\n\tasync mounted() {\n\t\tif (!this.isLDAPFeatureEnabled) return;\n\t\tawait this.getLdapConfig();\n\t},\n\tcomputed: {\n\t\t...mapStores(useUsersStore, useSettingsStore, useUIStore),\n\t\tcurrentUser(): null | IUser {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisLDAPFeatureEnabled(): boolean {\n\t\t\treturn this.settingsStore.settings.enterprise.ldap;\n\t\t},\n\t},\n\tmethods: {\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('ldap', 'upgrade-ldap');\n\t\t},\n\t\tcellClassStyle({ row, column }: CellStyle<TableRow>) {\n\t\t\tif (column.property === 'status') {\n\t\t\t\tif (row.status === 'Success') {\n\t\t\t\t\treturn { color: 'green' };\n\t\t\t\t} else if (row.status === 'Error') {\n\t\t\t\t\treturn { color: 'red' };\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (column.property === 'runMode') {\n\t\t\t\tif (row.runMode === 'Dry') {\n\t\t\t\t\treturn { color: 'orange' };\n\t\t\t\t} else if (row.runMode === 'Live') {\n\t\t\t\t\treturn { color: 'blue' };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {};\n\t\t},\n\t\tonInput(input: { name: string; value: string | number | boolean }) {\n\t\t\tif (input.name === 'loginEnabled' && typeof input.value === 'boolean') {\n\t\t\t\tthis.loginEnabled = input.value;\n\t\t\t}\n\t\t\tif (input.name === 'synchronizationEnabled' && typeof input.value === 'boolean') {\n\t\t\t\tthis.syncEnabled = input.value;\n\t\t\t}\n\t\t\tthis.hasAnyChanges = true;\n\t\t},\n\t\tonReadyToSubmit(ready: boolean) {\n\t\t\tthis.readyToSubmit = ready;\n\t\t},\n\t\tsyncDataMapper(sync: ILdapSyncData): ILdapSyncTable {\n\t\t\tconst startedAt = new Date(sync.startedAt);\n\t\t\tconst endedAt = new Date(sync.endedAt);\n\t\t\tconst runTimeInMinutes = endedAt.getTime() - startedAt.getTime();\n\t\t\treturn {\n\t\t\t\trunTime: humanizeDuration(runTimeInMinutes),\n\t\t\t\trunMode: capitalizeFirstLetter(sync.runMode),\n\t\t\t\tstatus: capitalizeFirstLetter(sync.status),\n\t\t\t\tendedAt: convertToDisplayDate(endedAt.getTime()),\n\t\t\t\tdetails: this.$locale.baseText('settings.ldap.usersScanned', {\n\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\tscanned: sync.scanned.toString(),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t};\n\t\t},\n\t\tasync onSubmit(): Promise<void> {\n\t\t\t// We want to save all form values (incl. the hidden onces), so we are using\n\t\t\t// `values` data prop of the `FormInputs` child component since they are all preserved there\n\t\t\tconst formInputsRef = this.$refs.ldapConfigForm as N8nFormInputsRef | undefined;\n\t\t\tif (!this.hasAnyChanges || !formInputsRef) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newConfiguration: ILdapConfig = {\n\t\t\t\tloginEnabled: formInputsRef.values.loginEnabled,\n\t\t\t\tloginLabel: formInputsRef.values.loginLabel,\n\t\t\t\tconnectionUrl: formInputsRef.values.serverAddress,\n\t\t\t\tallowUnauthorizedCerts: formInputsRef.values.allowUnauthorizedCerts,\n\t\t\t\tconnectionPort: +formInputsRef.values.port,\n\t\t\t\tconnectionSecurity: formInputsRef.values.connectionSecurity,\n\t\t\t\tbaseDn: formInputsRef.values.baseDn,\n\t\t\t\tbindingAdminDn:\n\t\t\t\t\tformInputsRef.values.bindingType === 'admin' ? formInputsRef.values.adminDn : '',\n\t\t\t\tbindingAdminPassword:\n\t\t\t\t\tformInputsRef.values.bindingType === 'admin' ? formInputsRef.values.adminPassword : '',\n\t\t\t\temailAttribute: formInputsRef.values.email,\n\t\t\t\tfirstNameAttribute: formInputsRef.values.firstName,\n\t\t\t\tlastNameAttribute: formInputsRef.values.lastName,\n\t\t\t\tloginIdAttribute: formInputsRef.values.loginId,\n\t\t\t\tldapIdAttribute: formInputsRef.values.ldapId,\n\t\t\t\tuserFilter: formInputsRef.values.userFilter,\n\t\t\t\tsynchronizationEnabled: formInputsRef.values.synchronizationEnabled,\n\t\t\t\tsynchronizationInterval: +formInputsRef.values.synchronizationInterval,\n\t\t\t\tsearchPageSize: +formInputsRef.values.pageSize,\n\t\t\t\tsearchTimeout: +formInputsRef.values.searchTimeout,\n\t\t\t};\n\n\t\t\tlet saveForm = true;\n\n\t\t\ttry {\n\t\t\t\tif (this.adConfig.loginEnabled && !newConfiguration.loginEnabled) {\n\t\t\t\t\tconst confirmAction = await this.confirm(\n\t\t\t\t\t\tthis.$locale.baseText('settings.ldap.confirmMessage.beforeSaveForm.message'),\n\t\t\t\t\t\tthis.$locale.baseText('settings.ldap.confirmMessage.beforeSaveForm.headline'),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcancelButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tsaveForm = confirmAction === MODAL_CONFIRM;\n\t\t\t\t}\n\n\t\t\t\tif (!saveForm) {\n\t\t\t\t\tthis.hasAnyChanges = true;\n\t\t\t\t}\n\n\t\t\t\tthis.adConfig = await this.settingsStore.updateLdapConfig(newConfiguration);\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.updateConfiguration'),\n\t\t\t\t\tmessage: '',\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.configurationError'));\n\t\t\t} finally {\n\t\t\t\tif (saveForm) {\n\t\t\t\t\tthis.hasAnyChanges = false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonSaveClick() {\n\t\t\tthis.formBus.emit('submit');\n\t\t},\n\t\tasync onTestConnectionClick() {\n\t\t\tthis.loadingTestConnection = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.testLdapConnection();\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.connectionTest'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.connection.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.connectionTestError'),\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tthis.loadingTestConnection = false;\n\t\t\t}\n\t\t},\n\t\tasync onDryRunClick() {\n\t\t\tthis.loadingDryRun = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.runLdapSync({ type: 'dry' });\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.runSync.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.sync.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t} finally {\n\t\t\t\tthis.loadingDryRun = false;\n\t\t\t\tawait this.reloadLdapSynchronizations();\n\t\t\t}\n\t\t},\n\t\tasync onLiveRunClick() {\n\t\t\tthis.loadingLiveRun = true;\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.runLdapSync({ type: 'live' });\n\t\t\t\tthis.showToast({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.ldap.runSync.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('settings.ldap.toast.sync.success'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t} finally {\n\t\t\t\tthis.loadingLiveRun = false;\n\t\t\t\tawait this.reloadLdapSynchronizations();\n\t\t\t}\n\t\t},\n\t\tasync getLdapConfig() {\n\t\t\ttry {\n\t\t\t\tthis.adConfig = await this.settingsStore.getLdapConfig();\n\t\t\t\tthis.loginEnabled = this.adConfig.loginEnabled;\n\t\t\t\tthis.syncEnabled = this.adConfig.synchronizationEnabled;\n\t\t\t\tconst whenLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.loginEnabled === true;\n\t\t\t\tconst whenSyncAndLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.synchronizationEnabled === true && values.loginEnabled === true;\n\t\t\t\tconst whenAdminBindingAndLoginEnabled: IFormInput['shouldDisplay'] = (values) =>\n\t\t\t\t\tvalues.bindingType === 'admin' && values.loginEnabled === true;\n\t\t\t\tthis.formInputs = [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginEnabled',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginEnabled,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginEnabled.label'),\n\t\t\t\t\t\t\ttooltipText: this.$locale.baseText('settings.ldap.form.loginEnabled.tooltip'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginLabel',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginLabel,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginLabel.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.loginLabel.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.loginLabel.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'serverAddress',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionUrl,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.serverAddress.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.serverAddress.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.serverAddress.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'port',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionPort,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.port.label'),\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.port.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'connectionSecurity',\n\t\t\t\t\t\tinitialValue: this.adConfig.connectionSecurity,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.connectionSecurity.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.connectionSecurity.infoText'),\n\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'None',\n\t\t\t\t\t\t\t\t\tvalue: 'none',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'TLS',\n\t\t\t\t\t\t\t\t\tvalue: 'tls',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'STARTTLS',\n\t\t\t\t\t\t\t\t\tvalue: 'startTls',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'allowUnauthorizedCerts',\n\t\t\t\t\t\tinitialValue: this.adConfig.allowUnauthorizedCerts,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.allowUnauthorizedCerts.label'),\n\t\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay(values): boolean {\n\t\t\t\t\t\t\treturn values.connectionSecurity !== 'none' && values.loginEnabled === true;\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'baseDn',\n\t\t\t\t\t\tinitialValue: this.adConfig.baseDn,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.baseDn.label'),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.baseDn.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.baseDn.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'bindingType',\n\t\t\t\t\t\tinitialValue: 'admin',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.bindingType.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.bindingType.infoText'),\n\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'admin',\n\t\t\t\t\t\t\t\t\tlabel: 'Admin',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'anonymous',\n\t\t\t\t\t\t\t\t\tlabel: 'Anonymous',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'adminDn',\n\t\t\t\t\t\tinitialValue: this.adConfig.bindingAdminDn,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.adminDn.label'),\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.adminDn.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.adminDn.infoText'),\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenAdminBindingAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'adminPassword',\n\t\t\t\t\t\tinitialValue: this.adConfig.bindingAdminPassword,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.adminPassword.label'),\n\t\t\t\t\t\t\ttype: 'password',\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.adminPassword.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenAdminBindingAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'userFilter',\n\t\t\t\t\t\tinitialValue: this.adConfig.userFilter,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.userFilter.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.userFilter.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.userFilter.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'attributeMappingInfo',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.attributeMappingInfo.label'),\n\t\t\t\t\t\t\ttype: 'info',\n\t\t\t\t\t\t\tlabelSize: 'large',\n\t\t\t\t\t\t\tlabelAlignment: 'left',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'ldapId',\n\t\t\t\t\t\tinitialValue: this.adConfig.ldapIdAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.ldapId.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.ldapId.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.ldapId.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'loginId',\n\t\t\t\t\t\tinitialValue: this.adConfig.loginIdAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.loginId.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.loginId.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.loginId.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'email',\n\t\t\t\t\t\tinitialValue: this.adConfig.emailAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.email.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.email.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.email.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'firstName',\n\t\t\t\t\t\tinitialValue: this.adConfig.firstNameAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.firstName.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.firstName.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.firstName.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'lastName',\n\t\t\t\t\t\tinitialValue: this.adConfig.lastNameAttribute,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.lastName.label'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tautocomplete: 'email',\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\tcapitalize: true,\n\t\t\t\t\t\t\tplaceholder: this.$locale.baseText('settings.ldap.form.lastName.placeholder'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.lastName.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'synchronizationEnabled',\n\t\t\t\t\t\tinitialValue: this.adConfig.synchronizationEnabled,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'toggle',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.synchronizationEnabled.label'),\n\t\t\t\t\t\t\ttooltipText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.form.synchronizationEnabled.tooltip',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'synchronizationInterval',\n\t\t\t\t\t\tinitialValue: this.adConfig.synchronizationInterval,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.synchronizationInterval.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText(\n\t\t\t\t\t\t\t\t'settings.ldap.form.synchronizationInterval.infoText',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'pageSize',\n\t\t\t\t\t\tinitialValue: this.adConfig.searchPageSize,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.pageSize.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.pageSize.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'searchTimeout',\n\t\t\t\t\t\tinitialValue: this.adConfig.searchTimeout,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tlabel: this.$locale.baseText('settings.ldap.form.searchTimeout.label'),\n\t\t\t\t\t\t\tinfoText: this.$locale.baseText('settings.ldap.form.searchTimeout.infoText'),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshouldDisplay: whenSyncAndLoginEnabled,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.configurationError'));\n\t\t\t}\n\t\t},\n\t\tasync getLdapSynchronizations(state: { loaded: () => void; complete: () => void }) {\n\t\t\ttry {\n\t\t\t\tthis.loadingTable = true;\n\t\t\t\tconst data = await this.settingsStore.getLdapSynchronizations({\n\t\t\t\t\tpage: this.page,\n\t\t\t\t});\n\n\t\t\t\tif (data.length !== 0) {\n\t\t\t\t\tthis.dataTable.push(...data.map(this.syncDataMapper));\n\t\t\t\t\tthis.page += 1;\n\t\t\t\t\tstate.loaded();\n\t\t\t\t} else {\n\t\t\t\t\tstate.complete();\n\t\t\t\t}\n\t\t\t\tthis.loadingTable = false;\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\n\t\t\t}\n\t\t},\n\t\tasync reloadLdapSynchronizations() {\n\t\t\ttry {\n\t\t\t\tthis.page = 0;\n\t\t\t\tthis.tableKey += 1;\n\t\t\t\tthis.dataTable = [];\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.ldap.synchronizationError'));\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}\n\n.syncTable {\n\tmargin-bottom: var(--spacing-2xl);\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.enableFeatureContainer {\n\tmargin-bottom: var(--spacing-1xl);\n}\n\n.enableFeatureContainer > span {\n\tfont-size: var(--font-size-s);\n\tfont-weight: var(--font-weight-bold);\n\tpadding: 0;\n}\n\n.enableFeatureContainer {\n\t> * {\n\t\tpadding: 0.5em;\n\t}\n}\n\n.sectionHeader {\n\tmargin-bottom: var(--spacing-s);\n}\n\n.settingsForm {\n\t:global(.form-text) {\n\t\tmargin-top: var(--spacing-xl);\n\t}\n}\n\n.docsInfoTip {\n\t&,\n\t& > div {\n\t\tmargin-bottom: var(--spacing-xl);\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","InfiniteLoading","ElTable","ElTableColumn","useToast","useMessage","createEventBus","mapStores","useUsersStore","useSettingsStore","useUIStore","row","column","input","ready","sync","startedAt","endedAt","runTimeInMinutes","humanizeDuration","capitalizeFirstLetter","convertToDisplayDate","formInputsRef","newConfiguration","saveForm","MODAL_CONFIRM","error","whenLoginEnabled","values","whenSyncAndLoginEnabled","whenAdminBindingAndLoginEnabled","state","data","_hoisted_3","_resolveDirective","_ctx","_openBlock","_createElementBlock","_hoisted_2","_createElementVNode","_normalizeClass","_withCtx","_component_n8n_info_tip","_createBlock","_component_n8n_form_inputs","_createCommentVNode","_component_n8n_button","_createVNode","_hoisted_4","_component_n8n_heading","_withDirectives","_component_el_table","_createTextVNode","_toDisplayString","_component_infinite_loading","_component_el_table_column","_hoisted_5","_hoisted_1","_component_n8n_action_box"],"mappings":"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"}
|
package/dist/assets/{SettingsLogStreamingView-IdWAQAEz.js → SettingsLogStreamingView-r4yJe9rt.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{m as N}from"./pinia-jX93eZRS.js";import{R as M,U as T,du as D,ac as R,_ as I,s as z,y as F,u as j,B as x,t as K,n as G,ds as C}from"./n8n-ZKR6bms9.js";import{a as Q,aQ as O}from"./index--RuZ5wHr.js";import{G as W,ag as a,l as s,M as g,O as i,I as c,p as n,T as r,S,R as m,n as q,m as l,F as v,Q as _,a7 as Y}from"./vendor-2CfOYFi2.js";import{v as J}from"./uuid-McvpxQtQ.js";import"./lodash-es-s_m9YyW7.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-viEZCtbZ.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const y={OPEN:"open",DELETE:"delete"},X=W({data(){return{EnterpriseEditionFeature:M,nodeParameters:{}}},setup(){return{...Q()}},components:{},props:{eventBus:{type:Object},destination:{type:Object,required:!0,default:T(D)},readonly:Boolean},mounted(){var e;this.nodeParameters=Object.assign(T(D),this.destination),(e=this.eventBus)==null||e.on("destinationWasSaved",this.onDestinationWasSaved)},beforeUnmount(){var e;(e=this.eventBus)==null||e.off("destinationWasSaved",this.onDestinationWasSaved)},computed:{...N(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(T(D),this.destination))},async onClick(e){var t,o;this.$refs.cardActions===e.target||(t=this.$refs.cardActions)!=null&&t.contains(e.target)||(o=e.target)!=null&&o.contains(this.$refs.cardActions)||this.$emit("edit",this.destination.id)},onEnabledSwitched(e,t){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_ump6w_5",ee="_activeStatusText_ump6w_15",te="_cardHeading_ump6w_23",ne="_cardDescription_ump6w_29",se="_cardActions_ump6w_36",ie={cardLink:Z,activeStatusText:ee,cardHeading:te,cardDescription:ne,cardActions:se};function oe(e,t,o,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 s(),g(w,{class:c(e.$style.cardLink),"data-test-id":"destination-card",onClick:e.onClick},{header:i(()=>[n("div",null,[r($,{tag:"h2",bold:"",class:c(e.$style.cardHeading)},{default:i(()=>[S(m(e.destination.label),1)]),_:1},8,["class"]),n("div",{class:c(e.$style.cardDescription)},[r(h,{color:"text-light",size:"small"},{default:i(()=>[n("span",null,m(e.$locale.baseText(e.typeLabelName)),1)]),_:1})],2)])]),append:i(()=>[n("div",{class:c(e.$style.cardActions),ref:"cardActions"},[n("div",{class:c(e.$style.activeStatusText),"data-test-id":"destination-activator-status"},[e.nodeParameters.enabled?(s(),g(h,{key:0,color:"success",size:"small",bold:""},{default:i(()=>[S(m(e.$locale.baseText("workflowActivator.active")),1)]),_:1})):(s(),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,modelValue:e.nodeParameters.enabled,"onUpdate:modelValue":t[0]||(t[0]=B=>e.onEnabledSwitched(B,e.destination.id)),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"},null,8,["disabled","modelValue","title"]),r(k,{actions:e.actions,theme:"dark",onAction:e.onAction},null,8,["actions","onAction"])],2)]),_:1},8,["class","onClick"])}const ae={$style:ie},re=I(X,[["render",oe],["__cssModules",ae]]),le=W({name:"SettingsLogStreamingView",props:{},components:{EventDestinationCard:re},data(){return{eventBus:z(),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:{...N(K,O,x,j,F),sortedItemKeysByLabel(){var t;const e=[];for(const[o,u]of Object.entries(this.logStreamingStore.items))e.push({key:o,label:((t=u.destination)==null?void 0:t.label)??"Destination"});return e.sort((o,u)=>o.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 o of e)this.logStreamingStore.addEventName(o);const t=await this.logStreamingStore.fetchDestinations();if(t)for(const o of t)this.logStreamingStore.addDestination(o),this.allDestinations.push(o);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=T(D);e.id=J(),this.logStreamingStore.addDestination(e),await q(),this.uiStore.openModalWithData({name:C,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:C,data:{destination:t,isNew:!1,eventBus:this.eventBus}})}}}),de="_header_1lkg8_5",ce="_destinationItem_1lkg8_15",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"},Te=["innerHTML"];function De(e,t,o,u,H,P){const $=a("n8n-heading"),h=a("el-switch"),b=a("n8n-info-tip"),k=a("event-destination-card"),w=a("el-col"),B=a("el-row"),V=a("n8n-button"),L=a("n8n-action-box");return s(),l("div",null,[n("div",{class:c(e.$style.header)},[n("div",ge,[r($,{size:"2xlarge"},{default:i(()=>[S(m(e.$locale.baseText("settings.log-streaming.heading")),1)]),_:1}),e.environment!=="production"?(s(),l(v,{key:0},[n("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?(s(),l(v,{key:0},[n("div",he,[r(b,{theme:"info",type:"note"},{default:i(()=>[n("span",{innerHTML:e.$locale.baseText("settings.log-streaming.infoText")},null,8,pe)]),_:1})]),e.storeHasItems()?(s(),l(v,{key:0},[(s(!0),l(v,null,Y(e.sortedItemKeysByLabel,d=>(s(),g(B,{gutter:10,key:d.key,class:c(e.$style.destinationItem)},{default:i(()=>{var E;return[(E=e.logStreamingStore.items[d.key])!=null&&E.destination?(s(),g(w,{key:0},{default:i(()=>{var A;return[r(k,{destination:(A=e.logStreamingStore.items[d.key])==null?void 0:A.destination,eventBus:e.eventBus,readonly:!e.canManageLogStreaming,onRemove:U=>{var p,f;return e.onRemove((f=(p=e.logStreamingStore.items[d.key])==null?void 0:p.destination)==null?void 0:f.id)},onEdit:U=>{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","eventBus","readonly","onRemove","onEdit"])]}),_:2},1024)):_("",!0)]}),_:2},1032,["class"]))),128)),n("div",fe,[e.canManageLogStreaming?(s(),g(V,{key:0,size:"large",onClick:e.addDestination},{default:i(()=>[S(m(e.$locale.baseText("settings.log-streaming.add")),1)]),_:1},8,["onClick"])):_("",!0)])],64)):(s(),l("div",ve,[r(L,{buttonText:e.$locale.baseText("settings.log-streaming.add"),"onClick:button":e.addDestination},{heading:i(()=>[n("span",{innerHTML:e.$locale.baseText("settings.log-streaming.addFirstTitle")},null,8,Se)]),_:1},8,["buttonText","onClick:button"])]))],64)):(s(),l(v,{key:1},[e.$locale.baseText("settings.log-streaming.infoText")?(s(),l("div",be,[r(b,{theme:"info",type:"note"},{default:i(()=>[n("span",{innerHTML:e.$locale.baseText("settings.log-streaming.infoText")},null,8,_e)]),_:1})])):_("",!0),n("div",ye,[r(L,{description:e.$locale.baseText("settings.log-streaming.actionBox.description"),buttonText:e.$locale.baseText("settings.log-streaming.actionBox.button"),"onClick:button":e.goToUpgrade},{heading:i(()=>[n("span",{innerHTML:e.$locale.baseText("settings.log-streaming.actionBox.title")},null,8,Te)]),_:1},8,["description","buttonText","onClick:button"])])],64))])}const $e={$style:me},Ze=I(le,[["render",De],["__cssModules",$e]]);export{Ze as default};
|
|
2
|
-
//# sourceMappingURL=SettingsLogStreamingView-
|
|
1
|
+
import{m as N}from"./pinia-jX93eZRS.js";import{R as M,U as T,du as D,ac as R,_ as I,s as z,y as F,u as j,B as x,t as K,n as G,ds as C}from"./n8n-ZKR6bms9.js";import{a as Q,aQ as O}from"./index-RXjMHIPR.js";import{G as W,ag as a,l as s,M as g,O as i,I as c,p as n,T as r,S,R as m,n as q,m as l,F as v,Q as _,a7 as Y}from"./vendor-2CfOYFi2.js";import{v as J}from"./uuid-McvpxQtQ.js";import"./lodash-es-s_m9YyW7.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-viEZCtbZ.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const y={OPEN:"open",DELETE:"delete"},X=W({data(){return{EnterpriseEditionFeature:M,nodeParameters:{}}},setup(){return{...Q()}},components:{},props:{eventBus:{type:Object},destination:{type:Object,required:!0,default:T(D)},readonly:Boolean},mounted(){var e;this.nodeParameters=Object.assign(T(D),this.destination),(e=this.eventBus)==null||e.on("destinationWasSaved",this.onDestinationWasSaved)},beforeUnmount(){var e;(e=this.eventBus)==null||e.off("destinationWasSaved",this.onDestinationWasSaved)},computed:{...N(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(T(D),this.destination))},async onClick(e){var t,o;this.$refs.cardActions===e.target||(t=this.$refs.cardActions)!=null&&t.contains(e.target)||(o=e.target)!=null&&o.contains(this.$refs.cardActions)||this.$emit("edit",this.destination.id)},onEnabledSwitched(e,t){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_ump6w_5",ee="_activeStatusText_ump6w_15",te="_cardHeading_ump6w_23",ne="_cardDescription_ump6w_29",se="_cardActions_ump6w_36",ie={cardLink:Z,activeStatusText:ee,cardHeading:te,cardDescription:ne,cardActions:se};function oe(e,t,o,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 s(),g(w,{class:c(e.$style.cardLink),"data-test-id":"destination-card",onClick:e.onClick},{header:i(()=>[n("div",null,[r($,{tag:"h2",bold:"",class:c(e.$style.cardHeading)},{default:i(()=>[S(m(e.destination.label),1)]),_:1},8,["class"]),n("div",{class:c(e.$style.cardDescription)},[r(h,{color:"text-light",size:"small"},{default:i(()=>[n("span",null,m(e.$locale.baseText(e.typeLabelName)),1)]),_:1})],2)])]),append:i(()=>[n("div",{class:c(e.$style.cardActions),ref:"cardActions"},[n("div",{class:c(e.$style.activeStatusText),"data-test-id":"destination-activator-status"},[e.nodeParameters.enabled?(s(),g(h,{key:0,color:"success",size:"small",bold:""},{default:i(()=>[S(m(e.$locale.baseText("workflowActivator.active")),1)]),_:1})):(s(),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,modelValue:e.nodeParameters.enabled,"onUpdate:modelValue":t[0]||(t[0]=B=>e.onEnabledSwitched(B,e.destination.id)),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"},null,8,["disabled","modelValue","title"]),r(k,{actions:e.actions,theme:"dark",onAction:e.onAction},null,8,["actions","onAction"])],2)]),_:1},8,["class","onClick"])}const ae={$style:ie},re=I(X,[["render",oe],["__cssModules",ae]]),le=W({name:"SettingsLogStreamingView",props:{},components:{EventDestinationCard:re},data(){return{eventBus:z(),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:{...N(K,O,x,j,F),sortedItemKeysByLabel(){var t;const e=[];for(const[o,u]of Object.entries(this.logStreamingStore.items))e.push({key:o,label:((t=u.destination)==null?void 0:t.label)??"Destination"});return e.sort((o,u)=>o.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 o of e)this.logStreamingStore.addEventName(o);const t=await this.logStreamingStore.fetchDestinations();if(t)for(const o of t)this.logStreamingStore.addDestination(o),this.allDestinations.push(o);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=T(D);e.id=J(),this.logStreamingStore.addDestination(e),await q(),this.uiStore.openModalWithData({name:C,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:C,data:{destination:t,isNew:!1,eventBus:this.eventBus}})}}}),de="_header_1lkg8_5",ce="_destinationItem_1lkg8_15",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"},Te=["innerHTML"];function De(e,t,o,u,H,P){const $=a("n8n-heading"),h=a("el-switch"),b=a("n8n-info-tip"),k=a("event-destination-card"),w=a("el-col"),B=a("el-row"),V=a("n8n-button"),L=a("n8n-action-box");return s(),l("div",null,[n("div",{class:c(e.$style.header)},[n("div",ge,[r($,{size:"2xlarge"},{default:i(()=>[S(m(e.$locale.baseText("settings.log-streaming.heading")),1)]),_:1}),e.environment!=="production"?(s(),l(v,{key:0},[n("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?(s(),l(v,{key:0},[n("div",he,[r(b,{theme:"info",type:"note"},{default:i(()=>[n("span",{innerHTML:e.$locale.baseText("settings.log-streaming.infoText")},null,8,pe)]),_:1})]),e.storeHasItems()?(s(),l(v,{key:0},[(s(!0),l(v,null,Y(e.sortedItemKeysByLabel,d=>(s(),g(B,{gutter:10,key:d.key,class:c(e.$style.destinationItem)},{default:i(()=>{var E;return[(E=e.logStreamingStore.items[d.key])!=null&&E.destination?(s(),g(w,{key:0},{default:i(()=>{var A;return[r(k,{destination:(A=e.logStreamingStore.items[d.key])==null?void 0:A.destination,eventBus:e.eventBus,readonly:!e.canManageLogStreaming,onRemove:U=>{var p,f;return e.onRemove((f=(p=e.logStreamingStore.items[d.key])==null?void 0:p.destination)==null?void 0:f.id)},onEdit:U=>{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","eventBus","readonly","onRemove","onEdit"])]}),_:2},1024)):_("",!0)]}),_:2},1032,["class"]))),128)),n("div",fe,[e.canManageLogStreaming?(s(),g(V,{key:0,size:"large",onClick:e.addDestination},{default:i(()=>[S(m(e.$locale.baseText("settings.log-streaming.add")),1)]),_:1},8,["onClick"])):_("",!0)])],64)):(s(),l("div",ve,[r(L,{buttonText:e.$locale.baseText("settings.log-streaming.add"),"onClick:button":e.addDestination},{heading:i(()=>[n("span",{innerHTML:e.$locale.baseText("settings.log-streaming.addFirstTitle")},null,8,Se)]),_:1},8,["buttonText","onClick:button"])]))],64)):(s(),l(v,{key:1},[e.$locale.baseText("settings.log-streaming.infoText")?(s(),l("div",be,[r(b,{theme:"info",type:"note"},{default:i(()=>[n("span",{innerHTML:e.$locale.baseText("settings.log-streaming.infoText")},null,8,_e)]),_:1})])):_("",!0),n("div",ye,[r(L,{description:e.$locale.baseText("settings.log-streaming.actionBox.description"),buttonText:e.$locale.baseText("settings.log-streaming.actionBox.button"),"onClick:button":e.goToUpgrade},{heading:i(()=>[n("span",{innerHTML:e.$locale.baseText("settings.log-streaming.actionBox.title")},null,8,Te)]),_:1},8,["description","buttonText","onClick:button"])])],64))])}const $e={$style:me},Ze=I(le,[["render",De],["__cssModules",$e]]);export{Ze as default};
|
|
2
|
+
//# sourceMappingURL=SettingsLogStreamingView-r4yJe9rt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsLogStreamingView-IdWAQAEz.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 :class=\"$style.cardActions\" ref=\"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:modelValue=\"nodeParameters.enabled\"\n\t\t\t\t\t@update:modelValue=\"onEnabledSwitched($event, destination.id)\"\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>\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\tdata() {\n\t\treturn {\n\t\t\tEnterpriseEditionFeature,\n\t\t\tnodeParameters: {} as MessageEventBusDestinationOptions,\n\t\t};\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tcomponents: {},\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\tif (\n\t\t\t\tthis.$refs.cardActions === event.target ||\n\t\t\t\tthis.$refs.cardActions?.contains(event.target) ||\n\t\t\t\tevent.target?.contains(this.$refs.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, destinationId: string) {\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\t:gutter=\"10\"\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: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<event-destination-card\n\t\t\t\t\t\t\t:destination=\"logStreamingStore.items[item.key]?.destination\"\n\t\t\t\t\t\t\t:eventBus=\"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:buttonText=\"$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:buttonText=\"$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\tprops: {},\n\tcomponents: {\n\t\tEventDestinationCard,\n\t},\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","EnterpriseEditionFeature","useMessage","deepCopy","defaultMessageEventBusDestinationOptions","_a","mapStores","useLogStreamingStore","actions","event","_b","state","destinationId","action","MODAL_CONFIRM","_resolveComponent","_openBlock","_createBlock","_component_n8n_card","_normalizeClass","_ctx","_withCtx","_createElementVNode","_createVNode","_component_n8n_heading","_component_n8n_text","_component_el_switch","_cache","$event","_component_n8n_action_toggle","_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","foundNode","editDestination","_hoisted_1","_hoisted_6","_hoisted_8","_createElementBlock","_Fragment","_hoisted_2","_toDisplayString","_hoisted_3","_component_n8n_info_tip","_renderList","item","_component_el_row","_component_el_col","_component_event_destination_card","_hoisted_5","_component_n8n_button","_component_n8n_action_box","_createCommentVNode","_hoisted_10"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsLogStreamingView-r4yJe9rt.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 :class=\"$style.cardActions\" ref=\"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:modelValue=\"nodeParameters.enabled\"\n\t\t\t\t\t@update:modelValue=\"onEnabledSwitched($event, destination.id)\"\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>\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\tdata() {\n\t\treturn {\n\t\t\tEnterpriseEditionFeature,\n\t\t\tnodeParameters: {} as MessageEventBusDestinationOptions,\n\t\t};\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tcomponents: {},\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\tif (\n\t\t\t\tthis.$refs.cardActions === event.target ||\n\t\t\t\tthis.$refs.cardActions?.contains(event.target) ||\n\t\t\t\tevent.target?.contains(this.$refs.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, destinationId: string) {\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\t:gutter=\"10\"\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: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<event-destination-card\n\t\t\t\t\t\t\t:destination=\"logStreamingStore.items[item.key]?.destination\"\n\t\t\t\t\t\t\t:eventBus=\"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:buttonText=\"$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:buttonText=\"$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\tprops: {},\n\tcomponents: {\n\t\tEventDestinationCard,\n\t},\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","EnterpriseEditionFeature","useMessage","deepCopy","defaultMessageEventBusDestinationOptions","_a","mapStores","useLogStreamingStore","actions","event","_b","state","destinationId","action","MODAL_CONFIRM","_resolveComponent","_openBlock","_createBlock","_component_n8n_card","_normalizeClass","_ctx","_withCtx","_createElementVNode","_createVNode","_component_n8n_heading","_component_n8n_text","_component_el_switch","_cache","$event","_component_n8n_action_toggle","_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","foundNode","editDestination","_hoisted_1","_hoisted_6","_hoisted_8","_createElementBlock","_Fragment","_hoisted_2","_toDisplayString","_hoisted_3","_component_n8n_info_tip","_renderList","item","_component_el_row","_component_el_col","_component_event_destination_card","_hoisted_5","_component_n8n_button","_component_n8n_action_box","_createCommentVNode","_hoisted_10"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as X,o as j,M as J,ac as V,_ as Y}from"./n8n-ZKR6bms9.js";import{b as ee,e as te,O as se,a as oe}from"./index--RuZ5wHr.js";import{G as ne,r as re,e as U,b as ae,Z as ce,ag as g,l as m,m as C,T as c,O as a,u as s,p as n,R as r,I as l,M as _,Q as h,S as y}from"./vendor-2CfOYFi2.js";import"./lodash-es-s_m9YyW7.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./pinia-jX93eZRS.js";import"./@vueuse/core-viEZCtbZ.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.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"],ye=ne({__name:"SettingsSourceControl",setup(we){const e=J(),o=ee(),w=X(),p=j(),S=oe(),b=te(),d=re(!1),K=U(()=>o.preferences.branches.map(t=>({value:t,label:t}))),R=async()=>{b.startLoading(),b.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"))}b.stopLoading()},E=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")})===V&&(b.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"))}b.stopLoading()},I=async()=>{b.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")}b.stopLoading()},$=async t=>{t!==o.preferences.branchName&&(o.preferences.branchName=t)},z=()=>{w.goToUpgrade("source-control","upgrade-source-control")},N=async()=>{await o.getPreferences(),o.preferences.connected&&(d.value=!0,o.getBranches())};ae(async()=>{await N()});const B=ce({repoUrl:!1,keyGeneratorType:!1});function T(t,i){B[t]=i}const O=[{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")}}],M=[{name:"REQUIRED"}],q=U(()=>B.repoUrl),G=[{name:"REQUIRED"}];async function L(){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")})===V&&(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 D=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"))}},A=async t=>{t!==o.preferences.keyGeneratorType&&(o.preferences.keyGeneratorType=t)};return(t,i)=>{const x=g("n8n-heading"),v=g("i18n-t"),F=g("n8n-callout"),k=g("n8n-form-input"),f=g("n8n-button"),P=g("n8n-notice"),Z=g("n8n-tooltip"),Q=g("n8n-checkbox"),H=g("n8n-color-picker"),W=g("n8n-action-box");return m(),C("div",null,[c(x,{size:"2xlarge",tag:"h1"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.title")),1)]),_:1}),s(o).isEnterpriseSourceControlEnabled?(m(),C("div",le,[c(F,{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(x,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[y(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,{label:"",class:"ml-0",id:"repoUrl",name:"repoUrl",validateOnBlur:"",validationRules:O,disabled:d.value,placeholder:s(e).baseText("settings.sourceControl.repoUrlPlaceholder"),modelValue:s(o).preferences.repositoryUrl,"onUpdate:modelValue":i[0]||(i[0]=u=>s(o).preferences.repositoryUrl=u),onValidate:i[1]||(i[1]=u=>T("repoUrl",u))},null,8,["disabled","placeholder","modelValue"]),d.value?(m(),_(f,{key:0,class:l(t.$style.disconnectButton),type:"tertiary",onClick:E,size:"large",icon:"trash","data-test-id":"source-control-disconnect-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.disconnect")),1)]),_:1},8,["class"])):h("",!0)],2)],2),s(o).preferences.publicKey?(m(),C("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?h("",!0):(m(),_(k,{key:0,class:l(t.$style.sshKeyTypeSelect),label:"",type:"select",id:"keyGeneratorType",name:"keyGeneratorType","data-test-id":"source-control-ssh-key-type-select",validateOnBlur:"",validationRules:M,options:s(o).sshKeyTypesWithLabel,modelValue:s(o).preferences.keyGeneratorType,onValidate:i[2]||(i[2]=u=>T("keyGeneratorType",u)),"onUpdate:modelValue":A},null,8,["class","options","modelValue"])),c(se,{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?h("",!0):(m(),_(f,{key:1,size:"large",type:"tertiary",icon:"sync",onClick:L,"data-test-id":"source-control-refresh-ssh-key-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.refreshSshKey")),1)]),_:1}))],2),c(P,{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)):h("",!0),d.value?h("",!0):(m(),_(f,{key:1,onClick:R,size:"large",disabled:!q.value,class:l(t.$style.connect),"data-test-id":"source-control-connect-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.connect")),1)]),_:1},8,["disabled","class"])),d.value?(m(),C("div",de,[n("div",{class:l(t.$style.group)},[ge,c(x,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[y(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,{label:"",type:"select",id:"branchName",name:"branchName",class:"mb-s","data-test-id":"source-control-branch-select",validateOnBlur:"",validationRules:G,options:K.value,modelValue:s(o).preferences.branchName,onValidate:i[3]||(i[3]=u=>T("branchName",u)),"onUpdate:modelValue":$},null,8,["options","modelValue"]),c(Z,{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),onClick:D,"data-test-id":"source-control-refresh-branches-button"},null,8,["class"])]),_:1})],2),c(Q,{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(H,{size:"small",modelValue:s(o).preferences.branchColor,"onUpdate:modelValue":i[5]||(i[5]=u=>s(o).preferences.branchColor=u)},null,8,["modelValue"])])],2),n("div",{class:l([t.$style.group,"pt-s"])},[c(f,{onClick:I,size:"large",disabled:!s(o).preferences.branchName,"data-test-id":"source-control-save-settings-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.save")),1)]),_:1},8,["disabled"])],2)])):h("",!0)])):(m(),_(W,{key:1,"data-test-id":"source-control-content-unlicensed",class:l(t.$style.actionBox),description:s(e).baseText("settings.sourceControl.actionBox.description"),buttonText:s(e).baseText("settings.sourceControl.actionBox.buttonText"),"onClick:button":z},{heading:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.actionBox.title")),1)]),description:a(()=>[y(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","buttonText"]))])}}}),be="_group_1qvoi_5",he="_readOnly_1qvoi_26",fe="_groupFlex_1qvoi_30",_e="_connect_1qvoi_44",Ce="_disconnectButton_1qvoi_48",Te="_actionBox_1qvoi_53",xe="_sshInput_1qvoi_57",ve="_copyInput_1qvoi_68",ke="_sshKeyTypeSelect_1qvoi_72",Se="_branchSelection_1qvoi_80",Be="_refreshBranches_1qvoi_89",Ve={group:be,readOnly:he,groupFlex:fe,connect:_e,disconnectButton:Ce,actionBox:Te,sshInput:xe,copyInput:ve,sshKeyTypeSelect:ke,branchSelection:Se,refreshBranches:Be},Ue={$style:Ve},nt=Y(ye,[["__cssModules",Ue]]);export{nt as default};
|
|
2
|
-
//# sourceMappingURL=SettingsSourceControl-
|
|
1
|
+
import{u as X,o as j,M as J,ac as V,_ as Y}from"./n8n-ZKR6bms9.js";import{b as ee,e as te,O as se,a as oe}from"./index-RXjMHIPR.js";import{G as ne,r as re,e as U,b as ae,Z as ce,ag as g,l as m,m as C,T as c,O as a,u as s,p as n,R as r,I as l,M as _,Q as h,S as y}from"./vendor-2CfOYFi2.js";import"./lodash-es-s_m9YyW7.js";import"./axios-QLjAsgXu.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./pinia-jX93eZRS.js";import"./@vueuse/core-viEZCtbZ.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-2T2QU_2c.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-QL7QI0sV.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-RhDdw38P.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.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"],ye=ne({__name:"SettingsSourceControl",setup(we){const e=J(),o=ee(),w=X(),p=j(),S=oe(),b=te(),d=re(!1),K=U(()=>o.preferences.branches.map(t=>({value:t,label:t}))),R=async()=>{b.startLoading(),b.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"))}b.stopLoading()},E=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")})===V&&(b.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"))}b.stopLoading()},I=async()=>{b.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")}b.stopLoading()},$=async t=>{t!==o.preferences.branchName&&(o.preferences.branchName=t)},z=()=>{w.goToUpgrade("source-control","upgrade-source-control")},N=async()=>{await o.getPreferences(),o.preferences.connected&&(d.value=!0,o.getBranches())};ae(async()=>{await N()});const B=ce({repoUrl:!1,keyGeneratorType:!1});function T(t,i){B[t]=i}const O=[{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")}}],M=[{name:"REQUIRED"}],q=U(()=>B.repoUrl),G=[{name:"REQUIRED"}];async function L(){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")})===V&&(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 D=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"))}},A=async t=>{t!==o.preferences.keyGeneratorType&&(o.preferences.keyGeneratorType=t)};return(t,i)=>{const x=g("n8n-heading"),v=g("i18n-t"),F=g("n8n-callout"),k=g("n8n-form-input"),f=g("n8n-button"),P=g("n8n-notice"),Z=g("n8n-tooltip"),Q=g("n8n-checkbox"),H=g("n8n-color-picker"),W=g("n8n-action-box");return m(),C("div",null,[c(x,{size:"2xlarge",tag:"h1"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.title")),1)]),_:1}),s(o).isEnterpriseSourceControlEnabled?(m(),C("div",le,[c(F,{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(x,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[y(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,{label:"",class:"ml-0",id:"repoUrl",name:"repoUrl",validateOnBlur:"",validationRules:O,disabled:d.value,placeholder:s(e).baseText("settings.sourceControl.repoUrlPlaceholder"),modelValue:s(o).preferences.repositoryUrl,"onUpdate:modelValue":i[0]||(i[0]=u=>s(o).preferences.repositoryUrl=u),onValidate:i[1]||(i[1]=u=>T("repoUrl",u))},null,8,["disabled","placeholder","modelValue"]),d.value?(m(),_(f,{key:0,class:l(t.$style.disconnectButton),type:"tertiary",onClick:E,size:"large",icon:"trash","data-test-id":"source-control-disconnect-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.disconnect")),1)]),_:1},8,["class"])):h("",!0)],2)],2),s(o).preferences.publicKey?(m(),C("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?h("",!0):(m(),_(k,{key:0,class:l(t.$style.sshKeyTypeSelect),label:"",type:"select",id:"keyGeneratorType",name:"keyGeneratorType","data-test-id":"source-control-ssh-key-type-select",validateOnBlur:"",validationRules:M,options:s(o).sshKeyTypesWithLabel,modelValue:s(o).preferences.keyGeneratorType,onValidate:i[2]||(i[2]=u=>T("keyGeneratorType",u)),"onUpdate:modelValue":A},null,8,["class","options","modelValue"])),c(se,{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?h("",!0):(m(),_(f,{key:1,size:"large",type:"tertiary",icon:"sync",onClick:L,"data-test-id":"source-control-refresh-ssh-key-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.refreshSshKey")),1)]),_:1}))],2),c(P,{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)):h("",!0),d.value?h("",!0):(m(),_(f,{key:1,onClick:R,size:"large",disabled:!q.value,class:l(t.$style.connect),"data-test-id":"source-control-connect-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.connect")),1)]),_:1},8,["disabled","class"])),d.value?(m(),C("div",de,[n("div",{class:l(t.$style.group)},[ge,c(x,{size:"xlarge",tag:"h2",class:"mb-s"},{default:a(()=>[y(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,{label:"",type:"select",id:"branchName",name:"branchName",class:"mb-s","data-test-id":"source-control-branch-select",validateOnBlur:"",validationRules:G,options:K.value,modelValue:s(o).preferences.branchName,onValidate:i[3]||(i[3]=u=>T("branchName",u)),"onUpdate:modelValue":$},null,8,["options","modelValue"]),c(Z,{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),onClick:D,"data-test-id":"source-control-refresh-branches-button"},null,8,["class"])]),_:1})],2),c(Q,{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(H,{size:"small",modelValue:s(o).preferences.branchColor,"onUpdate:modelValue":i[5]||(i[5]=u=>s(o).preferences.branchColor=u)},null,8,["modelValue"])])],2),n("div",{class:l([t.$style.group,"pt-s"])},[c(f,{onClick:I,size:"large",disabled:!s(o).preferences.branchName,"data-test-id":"source-control-save-settings-button"},{default:a(()=>[y(r(s(e).baseText("settings.sourceControl.button.save")),1)]),_:1},8,["disabled"])],2)])):h("",!0)])):(m(),_(W,{key:1,"data-test-id":"source-control-content-unlicensed",class:l(t.$style.actionBox),description:s(e).baseText("settings.sourceControl.actionBox.description"),buttonText:s(e).baseText("settings.sourceControl.actionBox.buttonText"),"onClick:button":z},{heading:a(()=>[n("span",null,r(s(e).baseText("settings.sourceControl.actionBox.title")),1)]),description:a(()=>[y(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","buttonText"]))])}}}),be="_group_1qvoi_5",he="_readOnly_1qvoi_26",fe="_groupFlex_1qvoi_30",_e="_connect_1qvoi_44",Ce="_disconnectButton_1qvoi_48",Te="_actionBox_1qvoi_53",xe="_sshInput_1qvoi_57",ve="_copyInput_1qvoi_68",ke="_sshKeyTypeSelect_1qvoi_72",Se="_branchSelection_1qvoi_80",Be="_refreshBranches_1qvoi_89",Ve={group:be,readOnly:he,groupFlex:fe,connect:_e,disconnectButton:Ce,actionBox:Te,sshInput:xe,copyInput:ve,sshKeyTypeSelect:ke,branchSelection:Se,refreshBranches:Be},Ue={$style:Ve},nt=Y(ye,[["__cssModules",Ue]]);export{nt as default};
|
|
2
|
+
//# sourceMappingURL=SettingsSourceControl-2sJrfiQZ.js.map
|
package/dist/assets/{SettingsSourceControl-s8B2f1Et.js.map → SettingsSourceControl-2sJrfiQZ.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsSourceControl-s8B2f1Et.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\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\tlabel\n\t\t\t\t\t\tclass=\"ml-0\"\n\t\t\t\t\t\tid=\"repoUrl\"\n\t\t\t\t\t\tname=\"repoUrl\"\n\t\t\t\t\t\tvalidateOnBlur\n\t\t\t\t\t\t:validationRules=\"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\tv-model=\"sourceControlStore.preferences.repositoryUrl\"\n\t\t\t\t\t\t@validate=\"(value) => onValidate('repoUrl', value)\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t:class=\"$style.disconnectButton\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\tv-if=\"isConnected\"\n\t\t\t\t\t\t@click=\"onDisconnect\"\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>{{ 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\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\tid=\"keyGeneratorType\"\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\tvalidateOnBlur\n\t\t\t\t\t\t:validationRules=\"keyGeneratorTypeValidationRules\"\n\t\t\t\t\t\t:options=\"sourceControlStore.sshKeyTypesWithLabel\"\n\t\t\t\t\t\t:modelValue=\"sourceControlStore.preferences.keyGeneratorType\"\n\t\t\t\t\t\t@validate=\"(value) => onValidate('keyGeneratorType', value)\"\n\t\t\t\t\t\t@update:modelValue=\"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\t@click=\"refreshSshKey\"\n\t\t\t\t\t\tdata-test-id=\"source-control-refresh-ssh-key-button\"\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\t@click=\"onConnect\"\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>{{ 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\tlabel\n\t\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\t\tid=\"branchName\"\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\tvalidateOnBlur\n\t\t\t\t\t\t\t:validationRules=\"branchNameValidationRules\"\n\t\t\t\t\t\t\t:options=\"branchNameOptions\"\n\t\t\t\t\t\t\t:modelValue=\"sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\t\t@validate=\"(value) => onValidate('branchName', value)\"\n\t\t\t\t\t\t\t@update:modelValue=\"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\t@click=\"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/>\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 size=\"small\" v-model=\"sourceControlStore.preferences.branchColor\" />\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\t@click=\"onSave\"\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>{{ 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:buttonText=\"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":"i7CAcA,MAAMA,EAASC,IACTC,EAAqBC,KACrBC,EAAUC,IACVC,EAAQC,IACRC,EAAUC,KACVC,EAAiBC,KAEjBC,EAAcC,GAAI,EAAK,EACvBC,EAAoBC,EAAS,IAClCb,EAAmB,YAAY,SAAS,IAAKc,IAAY,CACxD,MAAOA,EACP,MAAOA,CAAA,EACN,CAAA,EAGGC,EAAY,SAAY,CAC7BP,EAAe,aAAa,EAC5BA,EAAe,eAAeV,EAAO,SAAS,2CAA2C,CAAC,EACtF,GAAA,CACH,MAAME,EAAmB,gBAAgB,CACxC,cAAeA,EAAmB,YAAY,aAAA,CAC9C,EACD,MAAMA,EAAmB,cACzBU,EAAY,MAAQ,GACpBN,EAAM,YAAY,CACjB,MAAON,EAAO,SAAS,8CAA8C,EACrE,QAASA,EAAO,SAAS,gDAAgD,EACzE,KAAM,SAAA,CACN,QACOkB,EAAO,CACfZ,EAAM,UAAUY,EAAOlB,EAAO,SAAS,8CAA8C,CAAC,CACvF,CACAU,EAAe,YAAY,CAAA,EAGtBS,EAAe,SAAY,CAC5B,GAAA,CACkB,MAAMX,EAAQ,QAClCR,EAAO,SAAS,kDAAkD,EAClEA,EAAO,SAAS,gDAAgD,EAChE,CACC,kBAAmBA,EAAO,SAAS,kDAAkD,EACrF,iBAAkBA,EAAO,SAAS,iDAAiD,CACpF,CAAA,IAGoBoB,IACpBV,EAAe,aAAa,EACtB,MAAAR,EAAmB,WAAW,EAAI,EACxCU,EAAY,MAAQ,GACpBN,EAAM,YAAY,CACjB,MAAON,EAAO,SAAS,iDAAiD,EACxE,QAASA,EAAO,SAAS,mDAAmD,EAC5E,KAAM,SAAA,CACN,SAEMkB,EAAO,CACfZ,EAAM,UAAUY,EAAOlB,EAAO,SAAS,iDAAiD,CAAC,CAC1F,CACAU,EAAe,YAAY,CAAA,EAGtBW,EAAS,SAAY,CAC1BX,EAAe,aAAa,EACxB,GAAA,CACH,MAAMR,EAAmB,kBAAkB,CAC1C,WAAYA,EAAmB,YAAY,WAC3C,eAAgBA,EAAmB,YAAY,eAC/C,YAAaA,EAAmB,YAAY,WAAA,CAC5C,EACDI,EAAM,YAAY,CACjB,MAAON,EAAO,SAAS,oCAAoC,EAC3D,KAAM,SAAA,CACN,QACOkB,EAAO,CACTZ,EAAA,UAAUY,EAAO,sBAAsB,CAC9C,CACAR,EAAe,YAAY,CAAA,EAGtBY,EAAW,MAAOC,GAAc,CACjCA,IAAMrB,EAAmB,YAAY,aAGzCA,EAAmB,YAAY,WAAaqB,EAAA,EAGvCC,EAAc,IAAM,CACpBpB,EAAQ,YAAY,iBAAkB,wBAAwB,CAAA,EAG9DqB,EAAa,SAAY,CAC9B,MAAMvB,EAAmB,iBACrBA,EAAmB,YAAY,YAClCU,EAAY,MAAQ,GACfV,EAAmB,cACzB,EAGDwB,GAAU,SAAY,CACrB,MAAMD,EAAW,CAAA,CACjB,EAED,MAAME,EAAuBC,GAAkC,CAC9D,QAAS,GACT,iBAAkB,EAAA,CAClB,EAEQ,SAAAC,EAAWC,EAAaC,EAAgB,CAChDJ,EAAqBG,CAAG,EAAIC,CAC7B,CAEA,MAAMC,EAAkD,CACvD,CAAE,KAAM,UAAW,EACnB,CACC,KAAM,cACN,OAAQ,CACP,MACC,yJACD,QAAShC,EAAO,SAAS,uCAAuC,CACjE,CACD,CAAA,EAGKiC,EAA2D,CAAC,CAAE,KAAM,UAAY,CAAA,EAEhFC,EAAqBnB,EAAS,IAAMY,EAAqB,OAAO,EAChEQ,EAAqD,CAAC,CAAE,KAAM,UAAY,CAAA,EAEhF,eAAeC,GAAgB,CAC1B,GAAA,CACkB,MAAM5B,EAAQ,QAClCR,EAAO,SAAS,qDAAqD,EACrEA,EAAO,SAAS,mDAAmD,EACnE,CACC,kBAAmBA,EAAO,SAAS,qDAAqD,EACxF,iBAAkBA,EAAO,SAAS,oDAAoD,CACvF,CAAA,IAGoBoB,IACpB,MAAMlB,EAAmB,gBAAgBA,EAAmB,YAAY,gBAAgB,EACxFI,EAAM,YAAY,CACjB,MAAON,EAAO,SAAS,uDAAuD,EAC9E,KAAM,SAAA,CACN,SAEMkB,EAAO,CACfZ,EAAM,UAAUY,EAAOlB,EAAO,SAAS,kDAAkD,CAAC,CAC3F,CACD,CAEA,MAAMqC,EAAkB,SAAY,CAC/B,GAAA,CACH,MAAMnC,EAAmB,cACzBI,EAAM,YAAY,CACjB,MAAON,EAAO,SAAS,gDAAgD,EACvE,KAAM,SAAA,CACN,QACOkB,EAAO,CACfZ,EAAM,UAAUY,EAAOlB,EAAO,SAAS,8CAA8C,CAAC,CACvF,CAAA,EAGKsC,EAAqB,MAAOC,GAA0C,CACvEA,IAAerC,EAAmB,YAAY,mBAGlDA,EAAmB,YAAY,iBAAmBqC,EAAA"}
|
|
1
|
+
{"version":3,"file":"SettingsSourceControl-2sJrfiQZ.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\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\tlabel\n\t\t\t\t\t\tclass=\"ml-0\"\n\t\t\t\t\t\tid=\"repoUrl\"\n\t\t\t\t\t\tname=\"repoUrl\"\n\t\t\t\t\t\tvalidateOnBlur\n\t\t\t\t\t\t:validationRules=\"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\tv-model=\"sourceControlStore.preferences.repositoryUrl\"\n\t\t\t\t\t\t@validate=\"(value) => onValidate('repoUrl', value)\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-button\n\t\t\t\t\t\t:class=\"$style.disconnectButton\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\tv-if=\"isConnected\"\n\t\t\t\t\t\t@click=\"onDisconnect\"\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>{{ 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\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\tid=\"keyGeneratorType\"\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\tvalidateOnBlur\n\t\t\t\t\t\t:validationRules=\"keyGeneratorTypeValidationRules\"\n\t\t\t\t\t\t:options=\"sourceControlStore.sshKeyTypesWithLabel\"\n\t\t\t\t\t\t:modelValue=\"sourceControlStore.preferences.keyGeneratorType\"\n\t\t\t\t\t\t@validate=\"(value) => onValidate('keyGeneratorType', value)\"\n\t\t\t\t\t\t@update:modelValue=\"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\t@click=\"refreshSshKey\"\n\t\t\t\t\t\tdata-test-id=\"source-control-refresh-ssh-key-button\"\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\t@click=\"onConnect\"\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>{{ 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\tlabel\n\t\t\t\t\t\t\ttype=\"select\"\n\t\t\t\t\t\t\tid=\"branchName\"\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\tvalidateOnBlur\n\t\t\t\t\t\t\t:validationRules=\"branchNameValidationRules\"\n\t\t\t\t\t\t\t:options=\"branchNameOptions\"\n\t\t\t\t\t\t\t:modelValue=\"sourceControlStore.preferences.branchName\"\n\t\t\t\t\t\t\t@validate=\"(value) => onValidate('branchName', value)\"\n\t\t\t\t\t\t\t@update:modelValue=\"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\t@click=\"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/>\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 size=\"small\" v-model=\"sourceControlStore.preferences.branchColor\" />\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\t@click=\"onSave\"\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>{{ 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:buttonText=\"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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"}
|