n8n-editor-ui 1.45.0 → 1.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/.turbo/turbo-build.log +75 -75
  2. package/dist/assets/{AuthView-sBgr4ab5.js → AuthView-Bpw90ooz.js} +2 -2
  3. package/dist/assets/{AuthView-sBgr4ab5.js.map → AuthView-Bpw90ooz.js.map} +1 -1
  4. package/dist/assets/{CanvasControls-WQFq3IW7.js → CanvasControls-CQPytmej.js} +2 -2
  5. package/dist/assets/{CanvasControls-WQFq3IW7.js.map → CanvasControls-CQPytmej.js.map} +1 -1
  6. package/dist/assets/{ChangePasswordView-RoWelfJE.js → ChangePasswordView-tMFb4WIn.js} +2 -2
  7. package/dist/assets/{ChangePasswordView-RoWelfJE.js.map → ChangePasswordView-tMFb4WIn.js.map} +1 -1
  8. package/dist/assets/{CollectionParameter-o9-pyF-D.js → CollectionParameter-CwgJAh2M.js} +2 -2
  9. package/dist/assets/CollectionParameter-CwgJAh2M.js.map +1 -0
  10. package/dist/assets/{CredentialsView-loSi714I.js → CredentialsView-lvIyWvdA.js} +2 -2
  11. package/dist/assets/{CredentialsView-loSi714I.js.map → CredentialsView-lvIyWvdA.js.map} +1 -1
  12. package/dist/assets/{ExecutionsFilter-BwFUjELc.js → ExecutionsFilter-BSWo4-vK.js} +2 -2
  13. package/dist/assets/{ExecutionsFilter-BwFUjELc.js.map → ExecutionsFilter-BSWo4-vK.js.map} +1 -1
  14. package/dist/assets/{ExecutionsView-ClvBwy6K.js → ExecutionsView-Bztejjur.js} +2 -2
  15. package/dist/assets/{ExecutionsView-ClvBwy6K.js.map → ExecutionsView-Bztejjur.js.map} +1 -1
  16. package/dist/assets/{ForgotMyPasswordView-Da9ejE05.js → ForgotMyPasswordView-n_x-L3AV.js} +2 -2
  17. package/dist/assets/{ForgotMyPasswordView-Da9ejE05.js.map → ForgotMyPasswordView-n_x-L3AV.js.map} +1 -1
  18. package/dist/assets/{MainHeader-DCqd1GFf.js → MainHeader-P2afzgJI.js} +2 -2
  19. package/dist/assets/{MainHeader-DCqd1GFf.js.map → MainHeader-P2afzgJI.js.map} +1 -1
  20. package/dist/assets/{MainSidebar-D0hPq1hI.js → MainSidebar-CAwsaKp9.js} +2 -2
  21. package/dist/assets/{MainSidebar-D0hPq1hI.js.map → MainSidebar-CAwsaKp9.js.map} +1 -1
  22. package/dist/assets/{NodeCreation-Dv1vHhp7.js → NodeCreation-DHuCOx3T.js} +3 -3
  23. package/dist/assets/{NodeCreation-Dv1vHhp7.js.map → NodeCreation-DHuCOx3T.js.map} +1 -1
  24. package/dist/assets/{NodeCreator-CTyp0oWz.js → NodeCreator-CRVECYnB.js} +2 -2
  25. package/dist/assets/{NodeCreator-CTyp0oWz.js.map → NodeCreator-CRVECYnB.js.map} +1 -1
  26. package/dist/assets/{NodeView-D7js-jl0.js → NodeView-_cMwqhWw.js} +4 -4
  27. package/dist/assets/{NodeView-D7js-jl0.js.map → NodeView-_cMwqhWw.js.map} +1 -1
  28. package/dist/assets/{NodeView.v2-Db0N2ZpD.js → NodeView.v2-B5Hn0oJ1.js} +3 -3
  29. package/dist/assets/{NodeView.v2-Db0N2ZpD.js.map → NodeView.v2-B5Hn0oJ1.js.map} +1 -1
  30. package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-kI8CSFPH.js → ProjectCardBadge.vue_vue_type_script_setup_true_lang-BzALVLd6.js} +2 -2
  31. package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-kI8CSFPH.js.map → ProjectCardBadge.vue_vue_type_script_setup_true_lang-BzALVLd6.js.map} +1 -1
  32. package/dist/assets/{ProjectSettings-DV97_QgF.js → ProjectSettings-D3HQdHi6.js} +2 -2
  33. package/dist/assets/{ProjectSettings-DV97_QgF.js.map → ProjectSettings-D3HQdHi6.js.map} +1 -1
  34. package/dist/assets/{ProjectTabs-BiGImjZC.js → ProjectTabs-BjpVZIIc.js} +2 -2
  35. package/dist/assets/{ProjectTabs-BiGImjZC.js.map → ProjectTabs-BjpVZIIc.js.map} +1 -1
  36. package/dist/assets/{PushConnectionTracker-DzVbTLAw.js → PushConnectionTracker-Dt9-l7zj.js} +2 -2
  37. package/dist/assets/{PushConnectionTracker-DzVbTLAw.js.map → PushConnectionTracker-Dt9-l7zj.js.map} +1 -1
  38. package/dist/assets/{ResourcesListLayout-__5Cg0A9.js → ResourcesListLayout-CjzGJ-eS.js} +2 -2
  39. package/dist/assets/{ResourcesListLayout-__5Cg0A9.js.map → ResourcesListLayout-CjzGJ-eS.js.map} +1 -1
  40. package/dist/assets/{RunDataAi-BbEWhRis.js → RunDataAi-D3971Kwm.js} +2 -2
  41. package/dist/assets/{RunDataAi-BbEWhRis.js.map → RunDataAi-D3971Kwm.js.map} +1 -1
  42. package/dist/assets/{RunDataJson-7eRqOET2.js → RunDataJson-BLrjtyKU.js} +3 -3
  43. package/dist/assets/{RunDataJson-7eRqOET2.js.map → RunDataJson-BLrjtyKU.js.map} +1 -1
  44. package/dist/assets/{RunDataJsonActions-MHoSLGDw.js → RunDataJsonActions-CucOcrrR.js} +2 -2
  45. package/dist/assets/{RunDataJsonActions-MHoSLGDw.js.map → RunDataJsonActions-CucOcrrR.js.map} +1 -1
  46. package/dist/assets/{RunDataSchema-C2mrihIi.js → RunDataSchema-B-52gDNr.js} +2 -2
  47. package/dist/assets/{RunDataSchema-C2mrihIi.js.map → RunDataSchema-B-52gDNr.js.map} +1 -1
  48. package/dist/assets/{RunDataSearch-CzdgZA0H.js → RunDataSearch-ZA9rLECQ.js} +2 -2
  49. package/dist/assets/{RunDataSearch-CzdgZA0H.js.map → RunDataSearch-ZA9rLECQ.js.map} +1 -1
  50. package/dist/assets/{RunDataTable-DmxJXvGM.js → RunDataTable-DQx4IB1X.js} +2 -2
  51. package/dist/assets/{RunDataTable-DmxJXvGM.js.map → RunDataTable-DQx4IB1X.js.map} +1 -1
  52. package/dist/assets/{SamlOnboarding-c0vvdXcj.js → SamlOnboarding-DS2hMTul.js} +2 -2
  53. package/dist/assets/{SamlOnboarding-c0vvdXcj.js.map → SamlOnboarding-DS2hMTul.js.map} +1 -1
  54. package/dist/assets/{SettingsApiView-BSPOTc-1.js → SettingsApiView-BEBQwqa4.js} +2 -2
  55. package/dist/assets/{SettingsApiView-BSPOTc-1.js.map → SettingsApiView-BEBQwqa4.js.map} +1 -1
  56. package/dist/assets/{SettingsCommunityNodesView-3uiMscEF.js → SettingsCommunityNodesView-Zb5NN5TR.js} +2 -2
  57. package/dist/assets/{SettingsCommunityNodesView-3uiMscEF.js.map → SettingsCommunityNodesView-Zb5NN5TR.js.map} +1 -1
  58. package/dist/assets/{SettingsExternalSecrets-C5fphQOi.js → SettingsExternalSecrets-BrQz9Rn5.js} +2 -2
  59. package/dist/assets/{SettingsExternalSecrets-C5fphQOi.js.map → SettingsExternalSecrets-BrQz9Rn5.js.map} +1 -1
  60. package/dist/assets/{SettingsFakeDoorView-Df4Rs6o0.js → SettingsFakeDoorView-BEtA0RJZ.js} +2 -2
  61. package/dist/assets/{SettingsFakeDoorView-Df4Rs6o0.js.map → SettingsFakeDoorView-BEtA0RJZ.js.map} +1 -1
  62. package/dist/assets/{SettingsLdapView-C4lLeRwF.js → SettingsLdapView-BCqjlrE9.js} +2 -2
  63. package/dist/assets/{SettingsLdapView-C4lLeRwF.js.map → SettingsLdapView-BCqjlrE9.js.map} +1 -1
  64. package/dist/assets/{SettingsLogStreamingView-bLlhacNh.js → SettingsLogStreamingView-B3vDd25l.js} +2 -2
  65. package/dist/assets/{SettingsLogStreamingView-bLlhacNh.js.map → SettingsLogStreamingView-B3vDd25l.js.map} +1 -1
  66. package/dist/assets/{SettingsPersonalView-BgQQgYy0.js → SettingsPersonalView-BxS-VIeh.js} +2 -2
  67. package/dist/assets/{SettingsPersonalView-BgQQgYy0.js.map → SettingsPersonalView-BxS-VIeh.js.map} +1 -1
  68. package/dist/assets/{SettingsSourceControl-C2BP11mH.js → SettingsSourceControl-BBk56DIZ.js} +2 -2
  69. package/dist/assets/{SettingsSourceControl-C2BP11mH.js.map → SettingsSourceControl-BBk56DIZ.js.map} +1 -1
  70. package/dist/assets/{SettingsSso-CK7JB3Vy.js → SettingsSso-c-njHRi9.js} +2 -2
  71. package/dist/assets/{SettingsSso-CK7JB3Vy.js.map → SettingsSso-c-njHRi9.js.map} +1 -1
  72. package/dist/assets/{SettingsUsageAndPlan-Cwa-TbVs.js → SettingsUsageAndPlan-DEnejDAt.js} +2 -2
  73. package/dist/assets/{SettingsUsageAndPlan-Cwa-TbVs.js.map → SettingsUsageAndPlan-DEnejDAt.js.map} +1 -1
  74. package/dist/assets/{SettingsUsersView-CbWtmro6.js → SettingsUsersView-CGkw80Ef.js} +2 -2
  75. package/dist/assets/{SettingsUsersView-CbWtmro6.js.map → SettingsUsersView-CGkw80Ef.js.map} +1 -1
  76. package/dist/assets/{SettingsView-Big9eFwZ.js → SettingsView-DGukO3mQ.js} +2 -2
  77. package/dist/assets/{SettingsView-Big9eFwZ.js.map → SettingsView-DGukO3mQ.js.map} +1 -1
  78. package/dist/assets/{SetupView-fjlw9brZ.js → SetupView-kY1bAskX.js} +2 -2
  79. package/dist/assets/{SetupView-fjlw9brZ.js.map → SetupView-kY1bAskX.js.map} +1 -1
  80. package/dist/assets/{SetupWorkflowCredentialsButton-Q123cR2R.js → SetupWorkflowCredentialsButton-DkvMQv2u.js} +2 -2
  81. package/dist/assets/{SetupWorkflowCredentialsButton-Q123cR2R.js.map → SetupWorkflowCredentialsButton-DkvMQv2u.js.map} +1 -1
  82. package/dist/assets/{SetupWorkflowFromTemplateView-BcaIdEbq.js → SetupWorkflowFromTemplateView-M7-z0Ko5.js} +2 -2
  83. package/dist/assets/{SetupWorkflowFromTemplateView-BcaIdEbq.js.map → SetupWorkflowFromTemplateView-M7-z0Ko5.js.map} +1 -1
  84. package/dist/assets/{SigninView-BqRZRDIW.js → SigninView-CsK0r98m.js} +2 -2
  85. package/dist/assets/{SigninView-BqRZRDIW.js.map → SigninView-CsK0r98m.js.map} +1 -1
  86. package/dist/assets/{SignoutView-Ds-XMHbB.js → SignoutView-BST1uR2G.js} +2 -2
  87. package/dist/assets/{SignoutView-Ds-XMHbB.js.map → SignoutView-BST1uR2G.js.map} +1 -1
  88. package/dist/assets/{SignupView-Du4cZWtz.js → SignupView-BKYxxBni.js} +2 -2
  89. package/dist/assets/{SignupView-Du4cZWtz.js.map → SignupView-BKYxxBni.js.map} +1 -1
  90. package/dist/assets/{TemplateDetails-DYa2o-Sg.js → TemplateDetails-D0r_U1xF.js} +2 -2
  91. package/dist/assets/{TemplateDetails-DYa2o-Sg.js.map → TemplateDetails-D0r_U1xF.js.map} +1 -1
  92. package/dist/assets/{TemplateList-BMaBMl6x.js → TemplateList-CDA5KNLL.js} +2 -2
  93. package/dist/assets/{TemplateList-BMaBMl6x.js.map → TemplateList-CDA5KNLL.js.map} +1 -1
  94. package/dist/assets/{TemplatesCollectionView-g5_48W2g.js → TemplatesCollectionView-Sd-VkM2v.js} +2 -2
  95. package/dist/assets/{TemplatesCollectionView-g5_48W2g.js.map → TemplatesCollectionView-Sd-VkM2v.js.map} +1 -1
  96. package/dist/assets/{TemplatesSearchView-CUEpPGLS.js → TemplatesSearchView-H6B_YHdj.js} +2 -2
  97. package/dist/assets/{TemplatesSearchView-CUEpPGLS.js.map → TemplatesSearchView-H6B_YHdj.js.map} +1 -1
  98. package/dist/assets/{TemplatesView-Dt7Yj05N.js → TemplatesView-C1e1VOA1.js} +2 -2
  99. package/dist/assets/{TemplatesView-Dt7Yj05N.js.map → TemplatesView-C1e1VOA1.js.map} +1 -1
  100. package/dist/assets/{TemplatesWorkflowView-NUQng_ec.js → TemplatesWorkflowView-EDlr8NNs.js} +2 -2
  101. package/dist/assets/{TemplatesWorkflowView-NUQng_ec.js.map → TemplatesWorkflowView-EDlr8NNs.js.map} +1 -1
  102. package/dist/assets/{VariablesView-CNbX7qiw.js → VariablesView-uUyY5gqA.js} +2 -2
  103. package/dist/assets/{VariablesView-CNbX7qiw.js.map → VariablesView-uUyY5gqA.js.map} +1 -1
  104. package/dist/assets/{WorkerView-6sYjvVRB.js → WorkerView-f9W1Yivk.js} +2 -2
  105. package/dist/assets/{WorkerView-6sYjvVRB.js.map → WorkerView-f9W1Yivk.js.map} +1 -1
  106. package/dist/assets/{WorkflowActivator-BofJdorM.js → WorkflowActivator-Bh0oXchL.js} +2 -2
  107. package/dist/assets/{WorkflowActivator-BofJdorM.js.map → WorkflowActivator-Bh0oXchL.js.map} +1 -1
  108. package/dist/assets/{WorkflowExecutionsInfoAccordion-QgKEaHPH.js → WorkflowExecutionsInfoAccordion-DvgpWxaO.js} +2 -2
  109. package/dist/assets/{WorkflowExecutionsInfoAccordion-QgKEaHPH.js.map → WorkflowExecutionsInfoAccordion-DvgpWxaO.js.map} +1 -1
  110. package/dist/assets/{WorkflowExecutionsLandingPage-C8PoBPw1.js → WorkflowExecutionsLandingPage-DiqNejyi.js} +2 -2
  111. package/dist/assets/{WorkflowExecutionsLandingPage-C8PoBPw1.js.map → WorkflowExecutionsLandingPage-DiqNejyi.js.map} +1 -1
  112. package/dist/assets/{WorkflowExecutionsPreview-DXRMfRl4.js → WorkflowExecutionsPreview-BJqdf9CJ.js} +2 -2
  113. package/dist/assets/{WorkflowExecutionsPreview-DXRMfRl4.js.map → WorkflowExecutionsPreview-BJqdf9CJ.js.map} +1 -1
  114. package/dist/assets/{WorkflowExecutionsView-BFIJLItj.js → WorkflowExecutionsView-CY5alI5S.js} +2 -2
  115. package/dist/assets/{WorkflowExecutionsView-BFIJLItj.js.map → WorkflowExecutionsView-CY5alI5S.js.map} +1 -1
  116. package/dist/assets/{WorkflowHistory-DrJO6HE6.js → WorkflowHistory-BCAvzdJ2.js} +2 -2
  117. package/dist/assets/{WorkflowHistory-DrJO6HE6.js.map → WorkflowHistory-BCAvzdJ2.js.map} +1 -1
  118. package/dist/assets/{WorkflowOnboardingView-CWudc9OX.js → WorkflowOnboardingView-CZaNfPmP.js} +2 -2
  119. package/dist/assets/{WorkflowOnboardingView-CWudc9OX.js.map → WorkflowOnboardingView-CZaNfPmP.js.map} +1 -1
  120. package/dist/assets/{WorkflowPreview-CP6H-zD6.js → WorkflowPreview-CLfcNQ-Q.js} +2 -2
  121. package/dist/assets/{WorkflowPreview-CP6H-zD6.js.map → WorkflowPreview-CLfcNQ-Q.js.map} +1 -1
  122. package/dist/assets/{WorkflowsView-B8hr4JdS.js → WorkflowsView-BMDRVCFf.js} +2 -2
  123. package/dist/assets/{WorkflowsView-B8hr4JdS.js.map → WorkflowsView-BMDRVCFf.js.map} +1 -1
  124. package/dist/assets/{cloud-Nipuweza.js → cloud-D1wkxTEm.js} +2 -2
  125. package/dist/assets/{cloud-Nipuweza.js.map → cloud-D1wkxTEm.js.map} +1 -1
  126. package/dist/assets/{collaboration.store-CeJXF3gO.js → collaboration.store-zz8xH0zY.js} +2 -2
  127. package/dist/assets/{collaboration.store-CeJXF3gO.js.map → collaboration.store-zz8xH0zY.js.map} +1 -1
  128. package/dist/assets/{index-DeNtBxiT.js → index-DEwaaDne.js} +4 -4
  129. package/dist/assets/{index-DeNtBxiT.js.map → index-DEwaaDne.js.map} +1 -1
  130. package/dist/assets/{nodeCreator.store-D1MAzn2w.js → nodeCreator.store-DR3dfsvW.js} +2 -2
  131. package/dist/assets/{nodeCreator.store-D1MAzn2w.js.map → nodeCreator.store-DR3dfsvW.js.map} +1 -1
  132. package/dist/assets/{templateActions-DLB6SLyS.js → templateActions-DTyOnhvj.js} +2 -2
  133. package/dist/assets/{templateActions-DLB6SLyS.js.map → templateActions-DTyOnhvj.js.map} +1 -1
  134. package/dist/assets/{useExecutionDebugging-B_eoI-oc.js → useExecutionDebugging-vMuoV-iO.js} +2 -2
  135. package/dist/assets/{useExecutionDebugging-B_eoI-oc.js.map → useExecutionDebugging-vMuoV-iO.js.map} +1 -1
  136. package/dist/assets/{useExecutionHelpers-BAwOWjv8.js → useExecutionHelpers-C0lzavRV.js} +2 -2
  137. package/dist/assets/{useExecutionHelpers-BAwOWjv8.js.map → useExecutionHelpers-C0lzavRV.js.map} +1 -1
  138. package/dist/assets/{usePushConnection-1-1myIro.js → usePushConnection-3xfZ5wSJ.js} +2 -2
  139. package/dist/assets/{usePushConnection-1-1myIro.js.map → usePushConnection-3xfZ5wSJ.js.map} +1 -1
  140. package/dist/assets/{useViewStacks-D8rg90P0.js → useViewStacks-BSagsijV.js} +2 -2
  141. package/dist/assets/{useViewStacks-D8rg90P0.js.map → useViewStacks-BSagsijV.js.map} +1 -1
  142. package/dist/assets/{useWorkflowActivate-DrsL0BLR.js → useWorkflowActivate-BLjS7M0I.js} +2 -2
  143. package/dist/assets/{useWorkflowActivate-DrsL0BLR.js.map → useWorkflowActivate-BLjS7M0I.js.map} +1 -1
  144. package/dist/index.html +1 -1
  145. package/package.json +1 -1
  146. package/dist/assets/CollectionParameter-o9-pyF-D.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsCommunityNodesView-3uiMscEF.js","sources":["../../src/components/CommunityPackageCard.vue","../../src/views/SettingsCommunityNodesView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.cardContainer\">\n\t\t<div v-if=\"loading\" :class=\"$style.cardSkeleton\">\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t</div>\n\t\t<div v-else-if=\"communityPackage\" :class=\"$style.packageCard\">\n\t\t\t<div :class=\"$style.cardInfoContainer\">\n\t\t\t\t<div :class=\"$style.cardTitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"large\">{{ communityPackage.packageName }}</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.cardSubtitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$locale.baseText('settings.communityNodes.packageNodes.label', {\n\t\t\t\t\t\t\t\tadjustToNumber: communityPackage.installedNodes.length,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}:&nbsp;\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<span v-for=\"(node, index) in communityPackage.installedNodes\" :key=\"node.name\">\n\t\t\t\t\t\t\t{{ node.name\n\t\t\t\t\t\t\t}}<span v-if=\"index != communityPackage.installedNodes.length - 1\">,</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.cardControlsContainer\">\n\t\t\t\t<n8n-text :bold=\"true\" size=\"large\" color=\"text-light\">\n\t\t\t\t\tv{{ communityPackage.installedVersion }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-tooltip v-if=\"communityPackage.failedLoading === true\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.failedToLoad.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"exclamation-triangle\" color=\"danger\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else-if=\"communityPackage.updateAvailable\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.updateAvailable.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-button outline label=\"Update\" @click=\"onUpdateClick\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.upToDate.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"check-circle\" color=\"text-light\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<div :class=\"$style.cardActions\">\n\t\t\t\t\t<n8n-action-toggle :actions=\"packageActions\" @action=\"onAction\"></n8n-action-toggle>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { useUIStore } from '@/stores/ui.store';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport { NPM_PACKAGE_DOCS_BASE_URL, COMMUNITY_PACKAGE_MANAGE_ACTIONS } from '@/constants';\n\nexport default defineComponent({\n\tname: 'CommunityPackageCard',\n\tprops: {\n\t\tcommunityPackage: {\n\t\t\ttype: Object as () => PublicInstalledPackage | null,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpackageActions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.viewDocsAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS,\n\t\t\t\t\ttype: 'external-link',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.uninstallAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t},\n\tmethods: {\n\t\tasync onAction(value: string) {\n\t\t\tif (!this.communityPackage) return;\n\t\t\tswitch (value) {\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS:\n\t\t\t\t\tthis.$telemetry.track('user clicked to browse the cnr package documentation', {\n\t\t\t\t\t\tpackage_name: this.communityPackage.packageName,\n\t\t\t\t\t\tpackage_version: this.communityPackage.installedVersion,\n\t\t\t\t\t});\n\t\t\t\t\twindow.open(`${NPM_PACKAGE_DOCS_BASE_URL}${this.communityPackage.packageName}`, '_blank');\n\t\t\t\t\tbreak;\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL:\n\t\t\t\t\tthis.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tonUpdateClick() {\n\t\t\tif (!this.communityPackage) return;\n\t\t\tthis.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.cardContainer {\n\tdisplay: flex;\n\tpadding: var(--spacing-s);\n\tborder: var(--border-width-base) var(--border-style-base) var(--color-info-tint-1);\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-background-xlight);\n}\n\n.packageCard,\n.cardSkeleton {\n\tdisplay: flex;\n\tflex-basis: 100%;\n\tjustify-content: space-between;\n}\n\n.packageCard {\n\talign-items: center;\n}\n\n.cardSkeleton {\n\tflex-direction: column;\n}\n\n.loader {\n\twidth: 50%;\n\ttransform: scaleY(-1);\n\n\t&:last-child {\n\t\twidth: 70%;\n\n\t\tdiv {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n.cardInfoContainer {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n.cardTitle {\n\tflex-basis: 100%;\n\n\tspan {\n\t\tline-height: 1;\n\t}\n}\n\n.cardSubtitle {\n\tmargin-top: 2px;\n\tpadding-right: var(--spacing-m);\n}\n\n.cardControlsContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--spacing-3xs);\n}\n\n.cardActions {\n\tpadding-left: var(--spacing-3xs);\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.headingContainer\">\n\t\t\t<n8n-heading size=\"2xlarge\">{{ $locale.baseText('settings.communityNodes') }}</n8n-heading>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"\n\t\t\t\t\t!settingsStore.isQueueModeEnabled &&\n\t\t\t\t\tcommunityNodesStore.getInstalledPackages.length > 0 &&\n\t\t\t\t\t!loading\n\t\t\t\t\"\n\t\t\t\t:label=\"$locale.baseText('settings.communityNodes.installModal.installButton.label')\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t@click=\"openInstallModal\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-if=\"settingsStore.isQueueModeEnabled\" :class=\"$style.actionBoxContainer\">\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:callout-text=\"actionBoxConfig.calloutText\"\n\t\t\t\t:callout-theme=\"actionBoxConfig.calloutTheme\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-else-if=\"loading\" :class=\"$style.cardsContainer\">\n\t\t\t<CommunityPackageCard\n\t\t\t\tv-for=\"n in 2\"\n\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t:loading=\"true\"\n\t\t\t></CommunityPackageCard>\n\t\t</div>\n\t\t<div\n\t\t\tv-else-if=\"communityNodesStore.getInstalledPackages.length === 0\"\n\t\t\t:class=\"$style.actionBoxContainer\"\n\t\t>\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:button-text=\"getEmptyStateButtonText\"\n\t\t\t\t:callout-text=\"actionBoxConfig.calloutText\"\n\t\t\t\t:callout-theme=\"actionBoxConfig.calloutTheme\"\n\t\t\t\t@click:button=\"onClickEmptyStateButton\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-else :class=\"$style.cardsContainer\">\n\t\t\t<CommunityPackageCard\n\t\t\t\tv-for=\"communityPackage in communityNodesStore.getInstalledPackages\"\n\t\t\t\t:key=\"communityPackage.packageName\"\n\t\t\t\t:community-package=\"communityPackage\"\n\t\t\t></CommunityPackageCard>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport {\n\tCOMMUNITY_PACKAGE_INSTALL_MODAL_KEY,\n\tCOMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_NPM_INSTALLATION_URL,\n} from '@/constants';\nimport CommunityPackageCard from '@/components/CommunityPackageCard.vue';\nimport { useToast } from '@/composables/useToast';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\n\nimport { useCommunityNodesStore } from '@/stores/communityNodes.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { defineComponent } from 'vue';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useRouter } from 'vue-router';\nimport { usePushConnection } from '@/composables/usePushConnection';\nimport { usePushConnectionStore } from '@/stores/pushConnection.store';\n\nconst PACKAGE_COUNT_THRESHOLD = 31;\n\nexport default defineComponent({\n\tname: 'SettingsCommunityNodesView',\n\tcomponents: {\n\t\tCommunityPackageCard,\n\t},\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst pushConnection = usePushConnection({ router });\n\t\tconst externalHooks = useExternalHooks();\n\n\t\treturn {\n\t\t\texternalHooks,\n\t\t\t...useToast(),\n\t\t\tpushConnection,\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useCommunityNodesStore, useSettingsStore, useUIStore, usePushConnectionStore),\n\t\tgetEmptyStateDescription(): string {\n\t\t\tconst packageCount = this.communityNodesStore.availablePackageCount;\n\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.description.desktop');\n\t\t\t}\n\n\t\t\treturn packageCount < PACKAGE_COUNT_THRESHOLD\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.description.no-packages', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t: this.$locale.baseText('settings.communityNodes.empty.description', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t\tcount: (Math.floor(packageCount / 10) * 10).toString(),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t},\n\t\tgetEmptyStateButtonText(): string {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.button.desktop');\n\t\t\t}\n\n\t\t\treturn this.shouldShowInstallButton\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.installPackageLabel')\n\t\t\t\t: '';\n\t\t},\n\t\tshouldShowInstallButton(): boolean {\n\t\t\treturn this.settingsStore.isDesktopDeployment || this.settingsStore.isNpmAvailable;\n\t\t},\n\t\tactionBoxConfig(): {\n\t\t\tcalloutText: string;\n\t\t\tcalloutTheme: 'warning' | string;\n\t\t\thideButton: boolean;\n\t\t} {\n\t\t\tif (!this.settingsStore.isNpmAvailable) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.npmUnavailable.warning', {\n\t\t\t\t\t\tinterpolate: { npmUrl: COMMUNITY_NODES_NPM_INSTALLATION_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.settingsStore.isQueueModeEnabled) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.queueMode.warning', {\n\t\t\t\t\t\tinterpolate: { docURL: COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcalloutText: '',\n\t\t\t\tcalloutTheme: '',\n\t\t\t\thideButton: false,\n\t\t\t};\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.pushConnection.initialize();\n\t\t// The push connection is needed here to receive `reloadNodeType` and `removeNodeType` events when community nodes are installed, updated, or removed.\n\t\tthis.pushStore.pushConnect();\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tthis.loading = true;\n\t\t\tawait this.communityNodesStore.fetchInstalledPackages();\n\n\t\t\tconst installedPackages: PublicInstalledPackage[] =\n\t\t\t\tthis.communityNodesStore.getInstalledPackages;\n\t\t\tconst packagesToUpdate: PublicInstalledPackage[] = installedPackages.filter(\n\t\t\t\t(p) => p.updateAvailable,\n\t\t\t);\n\t\t\tthis.$telemetry.track('user viewed cnr settings page', {\n\t\t\t\tnum_of_packages_installed: installedPackages.length,\n\t\t\t\tinstalled_packages: installedPackages.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version: p.installedVersion,\n\t\t\t\t\t\tpackage_nodes: p.installedNodes.map((node) => `${node.name}-v${node.latestVersion}`),\n\t\t\t\t\t\tis_update_available: p.updateAvailable !== undefined,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tpackages_to_update: packagesToUpdate.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version_current: p.installedVersion,\n\t\t\t\t\t\tpackage_version_available: p.updateAvailable,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tnumber_of_updates_available: packagesToUpdate.length,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.showError(\n\t\t\t\terror,\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.title'),\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.message'),\n\t\t\t);\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t\ttry {\n\t\t\tawait this.communityNodesStore.fetchAvailableCommunityPackageCount();\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tthis.pushStore.pushDisconnect();\n\t\tthis.pushConnection.terminate();\n\t},\n\tmethods: {\n\t\tonClickEmptyStateButton(): void {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.goToUpgrade();\n\t\t\t}\n\n\t\t\tthis.openInstallModal();\n\t\t},\n\t\tgoToUpgrade(): void {\n\t\t\tvoid this.uiStore.goToUpgrade('community-nodes', 'upgrade-community-nodes');\n\t\t},\n\t\topenInstallModal(): void {\n\t\t\tconst telemetryPayload = {\n\t\t\t\tis_empty_state: this.communityNodesStore.getInstalledPackages.length === 0,\n\t\t\t};\n\t\t\tthis.$telemetry.track('user clicked cnr install button', telemetryPayload);\n\n\t\t\tvoid this.externalHooks.run('settingsCommunityNodesView.openInstallModal', telemetryPayload);\n\t\t\tthis.uiStore.openModal(COMMUNITY_PACKAGE_INSTALL_MODAL_KEY);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\theight: 100%;\n\tpadding-right: var(--spacing-2xs);\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.headingContainer {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.loadingContainer {\n\tdisplay: flex;\n\tgap: var(--spacing-xs);\n}\n\n.actionBoxContainer {\n\ttext-align: center;\n}\n\n.cardsContainer {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","COMMUNITY_PACKAGE_MANAGE_ACTIONS","mapStores","useUIStore","value","NPM_PACKAGE_DOCS_BASE_URL","_resolveComponent","loading","_ctx","_openBlock","_createElementBlock","$style","_normalizeClass","_component_n8n_loading","_createVNode","_component_n8n_text","_createTextVNode","_toDisplayString","_createElementVNode","communityPackage","_Fragment","_renderList","node","index","_hoisted_1","_createCommentVNode","_createBlock","_component_n8n_tooltip","_withCtx","_component_n8n_icon","_component_n8n_button","onUpdateClick","onAction","PACKAGE_COUNT_THRESHOLD","_sfc_main","CommunityPackageCard","router","useRouter","pushConnection","usePushConnection","useExternalHooks","useToast","useCommunityNodesStore","useSettingsStore","usePushConnectionStore","packageCount","COMMUNITY_NODES_INSTALLATION_DOCS_URL","COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL","COMMUNITY_NODES_NPM_INSTALLATION_URL","installedPackages","packagesToUpdate","p","error","telemetryPayload","COMMUNITY_PACKAGE_INSTALL_MODAL_KEY","_component_n8n_heading","$locale","settingsStore","openInstallModal","_component_n8n_action_box","getEmptyStateDescription","actionBoxConfig","n","_component_CommunityPackageCard","communityNodesStore","getEmptyStateButtonText","onClickEmptyStateButton"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsCommunityNodesView-Zb5NN5TR.js","sources":["../../src/components/CommunityPackageCard.vue","../../src/views/SettingsCommunityNodesView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.cardContainer\">\n\t\t<div v-if=\"loading\" :class=\"$style.cardSkeleton\">\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t\t<n8n-loading :class=\"$style.loader\" variant=\"p\" :rows=\"1\" />\n\t\t</div>\n\t\t<div v-else-if=\"communityPackage\" :class=\"$style.packageCard\">\n\t\t\t<div :class=\"$style.cardInfoContainer\">\n\t\t\t\t<div :class=\"$style.cardTitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"large\">{{ communityPackage.packageName }}</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"$style.cardSubtitle\">\n\t\t\t\t\t<n8n-text :bold=\"true\" size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$locale.baseText('settings.communityNodes.packageNodes.label', {\n\t\t\t\t\t\t\t\tadjustToNumber: communityPackage.installedNodes.length,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}:&nbsp;\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text size=\"small\" color=\"text-light\">\n\t\t\t\t\t\t<span v-for=\"(node, index) in communityPackage.installedNodes\" :key=\"node.name\">\n\t\t\t\t\t\t\t{{ node.name\n\t\t\t\t\t\t\t}}<span v-if=\"index != communityPackage.installedNodes.length - 1\">,</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.cardControlsContainer\">\n\t\t\t\t<n8n-text :bold=\"true\" size=\"large\" color=\"text-light\">\n\t\t\t\t\tv{{ communityPackage.installedVersion }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-tooltip v-if=\"communityPackage.failedLoading === true\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.failedToLoad.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"exclamation-triangle\" color=\"danger\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else-if=\"communityPackage.updateAvailable\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.updateAvailable.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-button outline label=\"Update\" @click=\"onUpdateClick\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<n8n-tooltip v-else placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{{ $locale.baseText('settings.communityNodes.upToDate.tooltip') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-icon icon=\"check-circle\" color=\"text-light\" size=\"large\" />\n\t\t\t\t</n8n-tooltip>\n\t\t\t\t<div :class=\"$style.cardActions\">\n\t\t\t\t\t<n8n-action-toggle :actions=\"packageActions\" @action=\"onAction\"></n8n-action-toggle>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { useUIStore } from '@/stores/ui.store';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport { NPM_PACKAGE_DOCS_BASE_URL, COMMUNITY_PACKAGE_MANAGE_ACTIONS } from '@/constants';\n\nexport default defineComponent({\n\tname: 'CommunityPackageCard',\n\tprops: {\n\t\tcommunityPackage: {\n\t\t\ttype: Object as () => PublicInstalledPackage | null,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpackageActions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.viewDocsAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS,\n\t\t\t\t\ttype: 'external-link',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.$locale.baseText('settings.communityNodes.uninstallAction.label'),\n\t\t\t\t\tvalue: COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t},\n\tmethods: {\n\t\tasync onAction(value: string) {\n\t\t\tif (!this.communityPackage) return;\n\t\t\tswitch (value) {\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.VIEW_DOCS:\n\t\t\t\t\tthis.$telemetry.track('user clicked to browse the cnr package documentation', {\n\t\t\t\t\t\tpackage_name: this.communityPackage.packageName,\n\t\t\t\t\t\tpackage_version: this.communityPackage.installedVersion,\n\t\t\t\t\t});\n\t\t\t\t\twindow.open(`${NPM_PACKAGE_DOCS_BASE_URL}${this.communityPackage.packageName}`, '_blank');\n\t\t\t\t\tbreak;\n\t\t\t\tcase COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL:\n\t\t\t\t\tthis.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tonUpdateClick() {\n\t\t\tif (!this.communityPackage) return;\n\t\t\tthis.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.cardContainer {\n\tdisplay: flex;\n\tpadding: var(--spacing-s);\n\tborder: var(--border-width-base) var(--border-style-base) var(--color-info-tint-1);\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-background-xlight);\n}\n\n.packageCard,\n.cardSkeleton {\n\tdisplay: flex;\n\tflex-basis: 100%;\n\tjustify-content: space-between;\n}\n\n.packageCard {\n\talign-items: center;\n}\n\n.cardSkeleton {\n\tflex-direction: column;\n}\n\n.loader {\n\twidth: 50%;\n\ttransform: scaleY(-1);\n\n\t&:last-child {\n\t\twidth: 70%;\n\n\t\tdiv {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n.cardInfoContainer {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n.cardTitle {\n\tflex-basis: 100%;\n\n\tspan {\n\t\tline-height: 1;\n\t}\n}\n\n.cardSubtitle {\n\tmargin-top: 2px;\n\tpadding-right: var(--spacing-m);\n}\n\n.cardControlsContainer {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--spacing-3xs);\n}\n\n.cardActions {\n\tpadding-left: var(--spacing-3xs);\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.headingContainer\">\n\t\t\t<n8n-heading size=\"2xlarge\">{{ $locale.baseText('settings.communityNodes') }}</n8n-heading>\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"\n\t\t\t\t\t!settingsStore.isQueueModeEnabled &&\n\t\t\t\t\tcommunityNodesStore.getInstalledPackages.length > 0 &&\n\t\t\t\t\t!loading\n\t\t\t\t\"\n\t\t\t\t:label=\"$locale.baseText('settings.communityNodes.installModal.installButton.label')\"\n\t\t\t\tsize=\"large\"\n\t\t\t\t@click=\"openInstallModal\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-if=\"settingsStore.isQueueModeEnabled\" :class=\"$style.actionBoxContainer\">\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:callout-text=\"actionBoxConfig.calloutText\"\n\t\t\t\t:callout-theme=\"actionBoxConfig.calloutTheme\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-else-if=\"loading\" :class=\"$style.cardsContainer\">\n\t\t\t<CommunityPackageCard\n\t\t\t\tv-for=\"n in 2\"\n\t\t\t\t:key=\"'index-' + n\"\n\t\t\t\t:loading=\"true\"\n\t\t\t></CommunityPackageCard>\n\t\t</div>\n\t\t<div\n\t\t\tv-else-if=\"communityNodesStore.getInstalledPackages.length === 0\"\n\t\t\t:class=\"$style.actionBoxContainer\"\n\t\t>\n\t\t\t<n8n-action-box\n\t\t\t\t:heading=\"$locale.baseText('settings.communityNodes.empty.title')\"\n\t\t\t\t:description=\"getEmptyStateDescription\"\n\t\t\t\t:button-text=\"getEmptyStateButtonText\"\n\t\t\t\t:callout-text=\"actionBoxConfig.calloutText\"\n\t\t\t\t:callout-theme=\"actionBoxConfig.calloutTheme\"\n\t\t\t\t@click:button=\"onClickEmptyStateButton\"\n\t\t\t/>\n\t\t</div>\n\t\t<div v-else :class=\"$style.cardsContainer\">\n\t\t\t<CommunityPackageCard\n\t\t\t\tv-for=\"communityPackage in communityNodesStore.getInstalledPackages\"\n\t\t\t\t:key=\"communityPackage.packageName\"\n\t\t\t\t:community-package=\"communityPackage\"\n\t\t\t></CommunityPackageCard>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport {\n\tCOMMUNITY_PACKAGE_INSTALL_MODAL_KEY,\n\tCOMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL,\n\tCOMMUNITY_NODES_NPM_INSTALLATION_URL,\n} from '@/constants';\nimport CommunityPackageCard from '@/components/CommunityPackageCard.vue';\nimport { useToast } from '@/composables/useToast';\nimport type { PublicInstalledPackage } from 'n8n-workflow';\n\nimport { useCommunityNodesStore } from '@/stores/communityNodes.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { defineComponent } from 'vue';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useRouter } from 'vue-router';\nimport { usePushConnection } from '@/composables/usePushConnection';\nimport { usePushConnectionStore } from '@/stores/pushConnection.store';\n\nconst PACKAGE_COUNT_THRESHOLD = 31;\n\nexport default defineComponent({\n\tname: 'SettingsCommunityNodesView',\n\tcomponents: {\n\t\tCommunityPackageCard,\n\t},\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst pushConnection = usePushConnection({ router });\n\t\tconst externalHooks = useExternalHooks();\n\n\t\treturn {\n\t\t\texternalHooks,\n\t\t\t...useToast(),\n\t\t\tpushConnection,\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useCommunityNodesStore, useSettingsStore, useUIStore, usePushConnectionStore),\n\t\tgetEmptyStateDescription(): string {\n\t\t\tconst packageCount = this.communityNodesStore.availablePackageCount;\n\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.description.desktop');\n\t\t\t}\n\n\t\t\treturn packageCount < PACKAGE_COUNT_THRESHOLD\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.description.no-packages', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t: this.$locale.baseText('settings.communityNodes.empty.description', {\n\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\tdocURL: COMMUNITY_NODES_INSTALLATION_DOCS_URL,\n\t\t\t\t\t\t\tcount: (Math.floor(packageCount / 10) * 10).toString(),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t},\n\t\tgetEmptyStateButtonText(): string {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.$locale.baseText('contextual.communityNodes.unavailable.button.desktop');\n\t\t\t}\n\n\t\t\treturn this.shouldShowInstallButton\n\t\t\t\t? this.$locale.baseText('settings.communityNodes.empty.installPackageLabel')\n\t\t\t\t: '';\n\t\t},\n\t\tshouldShowInstallButton(): boolean {\n\t\t\treturn this.settingsStore.isDesktopDeployment || this.settingsStore.isNpmAvailable;\n\t\t},\n\t\tactionBoxConfig(): {\n\t\t\tcalloutText: string;\n\t\t\tcalloutTheme: 'warning' | string;\n\t\t\thideButton: boolean;\n\t\t} {\n\t\t\tif (!this.settingsStore.isNpmAvailable) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.npmUnavailable.warning', {\n\t\t\t\t\t\tinterpolate: { npmUrl: COMMUNITY_NODES_NPM_INSTALLATION_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.settingsStore.isQueueModeEnabled) {\n\t\t\t\treturn {\n\t\t\t\t\tcalloutText: this.$locale.baseText('settings.communityNodes.queueMode.warning', {\n\t\t\t\t\t\tinterpolate: { docURL: COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL },\n\t\t\t\t\t}),\n\t\t\t\t\tcalloutTheme: 'warning',\n\t\t\t\t\thideButton: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcalloutText: '',\n\t\t\t\tcalloutTheme: '',\n\t\t\t\thideButton: false,\n\t\t\t};\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.pushConnection.initialize();\n\t\t// The push connection is needed here to receive `reloadNodeType` and `removeNodeType` events when community nodes are installed, updated, or removed.\n\t\tthis.pushStore.pushConnect();\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tthis.loading = true;\n\t\t\tawait this.communityNodesStore.fetchInstalledPackages();\n\n\t\t\tconst installedPackages: PublicInstalledPackage[] =\n\t\t\t\tthis.communityNodesStore.getInstalledPackages;\n\t\t\tconst packagesToUpdate: PublicInstalledPackage[] = installedPackages.filter(\n\t\t\t\t(p) => p.updateAvailable,\n\t\t\t);\n\t\t\tthis.$telemetry.track('user viewed cnr settings page', {\n\t\t\t\tnum_of_packages_installed: installedPackages.length,\n\t\t\t\tinstalled_packages: installedPackages.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version: p.installedVersion,\n\t\t\t\t\t\tpackage_nodes: p.installedNodes.map((node) => `${node.name}-v${node.latestVersion}`),\n\t\t\t\t\t\tis_update_available: p.updateAvailable !== undefined,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tpackages_to_update: packagesToUpdate.map((p) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpackage_name: p.packageName,\n\t\t\t\t\t\tpackage_version_current: p.installedVersion,\n\t\t\t\t\t\tpackage_version_available: p.updateAvailable,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\tnumber_of_updates_available: packagesToUpdate.length,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.showError(\n\t\t\t\terror,\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.title'),\n\t\t\t\tthis.$locale.baseText('settings.communityNodes.fetchError.message'),\n\t\t\t);\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t\ttry {\n\t\t\tawait this.communityNodesStore.fetchAvailableCommunityPackageCount();\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tthis.pushStore.pushDisconnect();\n\t\tthis.pushConnection.terminate();\n\t},\n\tmethods: {\n\t\tonClickEmptyStateButton(): void {\n\t\t\tif (this.settingsStore.isDesktopDeployment) {\n\t\t\t\treturn this.goToUpgrade();\n\t\t\t}\n\n\t\t\tthis.openInstallModal();\n\t\t},\n\t\tgoToUpgrade(): void {\n\t\t\tvoid this.uiStore.goToUpgrade('community-nodes', 'upgrade-community-nodes');\n\t\t},\n\t\topenInstallModal(): void {\n\t\t\tconst telemetryPayload = {\n\t\t\t\tis_empty_state: this.communityNodesStore.getInstalledPackages.length === 0,\n\t\t\t};\n\t\t\tthis.$telemetry.track('user clicked cnr install button', telemetryPayload);\n\n\t\t\tvoid this.externalHooks.run('settingsCommunityNodesView.openInstallModal', telemetryPayload);\n\t\t\tthis.uiStore.openModal(COMMUNITY_PACKAGE_INSTALL_MODAL_KEY);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\theight: 100%;\n\tpadding-right: var(--spacing-2xs);\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.headingContainer {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.loadingContainer {\n\tdisplay: flex;\n\tgap: var(--spacing-xs);\n}\n\n.actionBoxContainer {\n\ttext-align: center;\n}\n\n.cardsContainer {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--spacing-2xs);\n}\n</style>\n"],"names":["_sfc_main$1","defineComponent","COMMUNITY_PACKAGE_MANAGE_ACTIONS","mapStores","useUIStore","value","NPM_PACKAGE_DOCS_BASE_URL","_resolveComponent","loading","_ctx","_openBlock","_createElementBlock","$style","_normalizeClass","_component_n8n_loading","_createVNode","_component_n8n_text","_createTextVNode","_toDisplayString","_createElementVNode","communityPackage","_Fragment","_renderList","node","index","_hoisted_1","_createCommentVNode","_createBlock","_component_n8n_tooltip","_withCtx","_component_n8n_icon","_component_n8n_button","onUpdateClick","onAction","PACKAGE_COUNT_THRESHOLD","_sfc_main","CommunityPackageCard","router","useRouter","pushConnection","usePushConnection","useExternalHooks","useToast","useCommunityNodesStore","useSettingsStore","usePushConnectionStore","packageCount","COMMUNITY_NODES_INSTALLATION_DOCS_URL","COMMUNITY_NODES_MANUAL_INSTALLATION_DOCS_URL","COMMUNITY_NODES_NPM_INSTALLATION_URL","installedPackages","packagesToUpdate","p","error","telemetryPayload","COMMUNITY_PACKAGE_INSTALL_MODAL_KEY","_component_n8n_heading","$locale","settingsStore","openInstallModal","_component_n8n_action_box","getEmptyStateDescription","actionBoxConfig","n","_component_CommunityPackageCard","communityNodesStore","getEmptyStateButtonText","onClickEmptyStateButton"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{bs as I,i as P,u as $,d$ as F,e0 as X,e1 as q,e2 as G,w as O,e3 as K}from"./index-DeNtBxiT.js";import{D as W}from"./luxon-CLwAIbs0.js";import{G as M,X as Y,e as _,b as N,ag as i,l as s,M as x,O as a,p as d,I as m,U as p,S as v,T as c,u as n,R as H,m as f,n as J,F as Q,a7 as Z}from"./vendor-Dv5OeN6t.js";import{_ as ee}from"./n8n-B6cfQsVX.js";import"./pinia-BAhPp3pQ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const te=M({__name:"ExternalSecretsProviderCard.ee",props:{provider:{type:Object,required:!0}},setup(w){const e=w,u=I(),t=O(),y=P(),g=$(),r=Y(e,"provider"),l=_(()=>r.value.data??{}),{connectionState:S,testConnection:h,setConnectionState:T}=F(r,l),k=_(()=>[{value:"setup",label:t.baseText("settings.externalSecrets.card.actionDropdown.setup")},...e.provider.connected?[{value:"reload",label:t.baseText("settings.externalSecrets.card.actionDropdown.reload")}]:[]]),C=_(()=>e.provider.connected||Object.keys(l.value).length>0),b=_(()=>W.fromISO(X(r.value.connectedAt)?r.value.connectedAt.toISOString():r.value.connectedAt||new Date().toISOString()).toFormat("dd LLL yyyy"));N(()=>{T(e.provider.state)});async function L(){return e.provider.connected?!0:(await u.getProvider(e.provider.name),await J(),await h()!=="error")}function D(){y.openModalWithData({name:K,data:{name:e.provider.name}})}async function R(){try{await u.reloadProvider(e.provider.name),g.showMessage({title:t.baseText("settings.externalSecrets.card.reload.success.title"),message:t.baseText("settings.externalSecrets.card.reload.success.description",{interpolate:{provider:e.provider.displayName}}),type:"success"})}catch(o){g.showError(o,t.baseText("error"))}}async function U(o){switch(o){case"setup":D();break;case"reload":await R();break}}return(o,A)=>{const B=i("n8n-text"),V=i("n8n-action-toggle"),j=i("n8n-button"),z=i("n8n-card");return s(),x(z,{class:m(o.$style.card)},{default:a(()=>[d("div",{class:m(o.$style.cardBody)},[p(q,{class:m(o.$style.cardImage),provider:r.value},null,8,["class","provider"]),d("div",{class:m(o.$style.cardContent)},[p(B,{bold:""},{default:a(()=>[v(c(r.value.displayName),1)]),_:1}),r.value.connected?(s(),x(B,{key:0,color:"text-light",size:"small"},{default:a(()=>{var E;return[d("span",null,c(n(t).baseText("settings.externalSecrets.card.secretsCount",{interpolate:{count:`${(E=n(u).secrets[r.value.name])==null?void 0:E.length}`}})),1),v(" | "),d("span",null,c(n(t).baseText("settings.externalSecrets.card.connectedAt",{interpolate:{date:b.value}})),1)]}),_:1})):H("",!0)],2),C.value?(s(),f("div",{key:0,class:m(o.$style.cardActions)},[p(G,{provider:r.value,"before-update":L,disabled:n(S)==="error"&&!r.value.connected},null,8,["provider","disabled"]),p(V,{class:"ml-s",theme:"dark",actions:k.value,onAction:U},null,8,["actions"])],2)):(s(),x(j,{key:1,type:"tertiary",onClick:A[0]||(A[0]=E=>D())},{default:a(()=>[v(c(n(t).baseText("settings.externalSecrets.card.setUp")),1)]),_:1}))],2)]),_:1},8,["class"])}}}),ne="_card_1v5vt_1",re="_cardImage_1v5vt_6",oe="_cardBody_1v5vt_11",se="_cardContent_1v5vt_17",ae="_cardActions_1v5vt_24",ce={card:ne,cardImage:re,cardBody:oe,cardContent:se,cardActions:ae},ie={$style:ce},le=ee(te,[["__cssModules",ie]]),de={class:"pb-3xl"},pe={key:0,"data-test-id":"external-secrets-content-licensed"},ue=["href"],me=["href"],Fe=M({__name:"SettingsExternalSecrets",setup(w){const e=O(),u=P(),t=I(),y=$(),g=_(()=>[...t.providers].sort((l,S)=>S.name.localeCompare(l.name)));N(()=>{if(t.isEnterpriseExternalSecretsEnabled)try{t.fetchAllSecrets(),t.getProviders()}catch(l){y.showError(l,e.baseText("error"))}});function r(){u.goToUpgrade("external-secrets","upgrade-external-secrets")}return(l,S)=>{const h=i("n8n-heading"),T=i("n8n-callout"),k=i("i18n-t"),C=i("n8n-action-box");return s(),f("div",de,[p(h,{size:"2xlarge"},{default:a(()=>[v(c(n(e).baseText("settings.externalSecrets.title")),1)]),_:1}),n(t).isEnterpriseExternalSecretsEnabled?(s(),f("div",pe,[p(T,{theme:"secondary",class:"mt-2xl mb-l"},{default:a(()=>[v(c(n(e).baseText("settings.externalSecrets.info"))+" ",1),d("a",{href:n(e).baseText("settings.externalSecrets.docs"),target:"_blank"},c(n(e).baseText("settings.externalSecrets.info.link")),9,ue)]),_:1}),(s(!0),f(Q,null,Z(g.value,b=>(s(),x(le,{key:b.name,provider:b},null,8,["provider"]))),128))])):(s(),x(C,{key:1,class:"mt-2xl mb-l","data-test-id":"external-secrets-content-unlicensed","button-text":n(e).baseText("settings.externalSecrets.actionBox.buttonText"),onClick:r},{heading:a(()=>[d("span",null,c(n(e).baseText("settings.externalSecrets.actionBox.title")),1)]),description:a(()=>[p(k,{keypath:"settings.externalSecrets.actionBox.description"},{link:a(()=>[d("a",{href:n(e).baseText("settings.externalSecrets.docs"),target:"_blank"},c(n(e).baseText("settings.externalSecrets.actionBox.description.link")),9,me)]),_:1})]),_:1},8,["button-text"]))])}}});export{Fe as default};
2
- //# sourceMappingURL=SettingsExternalSecrets-C5fphQOi.js.map
1
+ import{bs as I,i as P,u as $,d$ as F,e0 as X,e1 as q,e2 as G,w as O,e3 as K}from"./index-DEwaaDne.js";import{D as W}from"./luxon-CLwAIbs0.js";import{G as M,X as Y,e as _,b as N,ag as i,l as s,M as x,O as a,p as d,I as m,U as p,S as v,T as c,u as n,R as H,m as f,n as J,F as Q,a7 as Z}from"./vendor-Dv5OeN6t.js";import{_ as ee}from"./n8n-B6cfQsVX.js";import"./pinia-BAhPp3pQ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const te=M({__name:"ExternalSecretsProviderCard.ee",props:{provider:{type:Object,required:!0}},setup(w){const e=w,u=I(),t=O(),y=P(),g=$(),r=Y(e,"provider"),l=_(()=>r.value.data??{}),{connectionState:S,testConnection:h,setConnectionState:T}=F(r,l),k=_(()=>[{value:"setup",label:t.baseText("settings.externalSecrets.card.actionDropdown.setup")},...e.provider.connected?[{value:"reload",label:t.baseText("settings.externalSecrets.card.actionDropdown.reload")}]:[]]),C=_(()=>e.provider.connected||Object.keys(l.value).length>0),b=_(()=>W.fromISO(X(r.value.connectedAt)?r.value.connectedAt.toISOString():r.value.connectedAt||new Date().toISOString()).toFormat("dd LLL yyyy"));N(()=>{T(e.provider.state)});async function L(){return e.provider.connected?!0:(await u.getProvider(e.provider.name),await J(),await h()!=="error")}function D(){y.openModalWithData({name:K,data:{name:e.provider.name}})}async function R(){try{await u.reloadProvider(e.provider.name),g.showMessage({title:t.baseText("settings.externalSecrets.card.reload.success.title"),message:t.baseText("settings.externalSecrets.card.reload.success.description",{interpolate:{provider:e.provider.displayName}}),type:"success"})}catch(o){g.showError(o,t.baseText("error"))}}async function U(o){switch(o){case"setup":D();break;case"reload":await R();break}}return(o,A)=>{const B=i("n8n-text"),V=i("n8n-action-toggle"),j=i("n8n-button"),z=i("n8n-card");return s(),x(z,{class:m(o.$style.card)},{default:a(()=>[d("div",{class:m(o.$style.cardBody)},[p(q,{class:m(o.$style.cardImage),provider:r.value},null,8,["class","provider"]),d("div",{class:m(o.$style.cardContent)},[p(B,{bold:""},{default:a(()=>[v(c(r.value.displayName),1)]),_:1}),r.value.connected?(s(),x(B,{key:0,color:"text-light",size:"small"},{default:a(()=>{var E;return[d("span",null,c(n(t).baseText("settings.externalSecrets.card.secretsCount",{interpolate:{count:`${(E=n(u).secrets[r.value.name])==null?void 0:E.length}`}})),1),v(" | "),d("span",null,c(n(t).baseText("settings.externalSecrets.card.connectedAt",{interpolate:{date:b.value}})),1)]}),_:1})):H("",!0)],2),C.value?(s(),f("div",{key:0,class:m(o.$style.cardActions)},[p(G,{provider:r.value,"before-update":L,disabled:n(S)==="error"&&!r.value.connected},null,8,["provider","disabled"]),p(V,{class:"ml-s",theme:"dark",actions:k.value,onAction:U},null,8,["actions"])],2)):(s(),x(j,{key:1,type:"tertiary",onClick:A[0]||(A[0]=E=>D())},{default:a(()=>[v(c(n(t).baseText("settings.externalSecrets.card.setUp")),1)]),_:1}))],2)]),_:1},8,["class"])}}}),ne="_card_1v5vt_1",re="_cardImage_1v5vt_6",oe="_cardBody_1v5vt_11",se="_cardContent_1v5vt_17",ae="_cardActions_1v5vt_24",ce={card:ne,cardImage:re,cardBody:oe,cardContent:se,cardActions:ae},ie={$style:ce},le=ee(te,[["__cssModules",ie]]),de={class:"pb-3xl"},pe={key:0,"data-test-id":"external-secrets-content-licensed"},ue=["href"],me=["href"],Fe=M({__name:"SettingsExternalSecrets",setup(w){const e=O(),u=P(),t=I(),y=$(),g=_(()=>[...t.providers].sort((l,S)=>S.name.localeCompare(l.name)));N(()=>{if(t.isEnterpriseExternalSecretsEnabled)try{t.fetchAllSecrets(),t.getProviders()}catch(l){y.showError(l,e.baseText("error"))}});function r(){u.goToUpgrade("external-secrets","upgrade-external-secrets")}return(l,S)=>{const h=i("n8n-heading"),T=i("n8n-callout"),k=i("i18n-t"),C=i("n8n-action-box");return s(),f("div",de,[p(h,{size:"2xlarge"},{default:a(()=>[v(c(n(e).baseText("settings.externalSecrets.title")),1)]),_:1}),n(t).isEnterpriseExternalSecretsEnabled?(s(),f("div",pe,[p(T,{theme:"secondary",class:"mt-2xl mb-l"},{default:a(()=>[v(c(n(e).baseText("settings.externalSecrets.info"))+" ",1),d("a",{href:n(e).baseText("settings.externalSecrets.docs"),target:"_blank"},c(n(e).baseText("settings.externalSecrets.info.link")),9,ue)]),_:1}),(s(!0),f(Q,null,Z(g.value,b=>(s(),x(le,{key:b.name,provider:b},null,8,["provider"]))),128))])):(s(),x(C,{key:1,class:"mt-2xl mb-l","data-test-id":"external-secrets-content-unlicensed","button-text":n(e).baseText("settings.externalSecrets.actionBox.buttonText"),onClick:r},{heading:a(()=>[d("span",null,c(n(e).baseText("settings.externalSecrets.actionBox.title")),1)]),description:a(()=>[p(k,{keypath:"settings.externalSecrets.actionBox.description"},{link:a(()=>[d("a",{href:n(e).baseText("settings.externalSecrets.docs"),target:"_blank"},c(n(e).baseText("settings.externalSecrets.actionBox.description.link")),9,me)]),_:1})]),_:1},8,["button-text"]))])}}});export{Fe as default};
2
+ //# sourceMappingURL=SettingsExternalSecrets-BrQz9Rn5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsExternalSecrets-C5fphQOi.js","sources":["../../src/components/ExternalSecretsProviderCard.ee.vue","../../src/views/SettingsExternalSecrets.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PropType } from 'vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\nimport ExternalSecretsProviderImage from '@/components/ExternalSecretsProviderImage.ee.vue';\nimport ExternalSecretsProviderConnectionSwitch from '@/components/ExternalSecretsProviderConnectionSwitch.ee.vue';\nimport { useExternalSecretsStore } from '@/stores/externalSecrets.ee.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { useI18n } from '@/composables/useI18n';\nimport { useExternalSecretsProvider } from '@/composables/useExternalSecretsProvider';\nimport { EXTERNAL_SECRETS_PROVIDER_MODAL_KEY } from '@/constants';\nimport { DateTime } from 'luxon';\nimport { computed, nextTick, onMounted, toRef } from 'vue';\nimport { isDateObject } from '@/utils/typeGuards';\n\nconst props = defineProps({\n\tprovider: {\n\t\ttype: Object as PropType<ExternalSecretsProvider>,\n\t\trequired: true,\n\t},\n});\n\nconst externalSecretsStore = useExternalSecretsStore();\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst toast = useToast();\n\nconst provider = toRef(props, 'provider');\nconst providerData = computed(() => provider.value.data ?? {});\nconst { connectionState, testConnection, setConnectionState } = useExternalSecretsProvider(\n\tprovider,\n\tproviderData,\n);\n\nconst actionDropdownOptions = computed(() => [\n\t{\n\t\tvalue: 'setup',\n\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.setup'),\n\t},\n\t...(props.provider.connected\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'reload',\n\t\t\t\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.reload'),\n\t\t\t\t},\n\t\t\t]\n\t\t: []),\n]);\n\nconst canConnect = computed(() => {\n\treturn props.provider.connected || Object.keys(providerData.value).length > 0;\n});\n\nconst formattedDate = computed(() => {\n\treturn DateTime.fromISO(\n\t\tisDateObject(provider.value.connectedAt)\n\t\t\t? provider.value.connectedAt.toISOString()\n\t\t\t: provider.value.connectedAt || new Date().toISOString(),\n\t).toFormat('dd LLL yyyy');\n});\n\nonMounted(() => {\n\tsetConnectionState(props.provider.state);\n});\n\nasync function onBeforeConnectionUpdate() {\n\tif (props.provider.connected) {\n\t\treturn true;\n\t}\n\n\tawait externalSecretsStore.getProvider(props.provider.name);\n\tawait nextTick();\n\tconst status = await testConnection();\n\n\treturn status !== 'error';\n}\n\nfunction openExternalSecretProvider() {\n\tuiStore.openModalWithData({\n\t\tname: EXTERNAL_SECRETS_PROVIDER_MODAL_KEY,\n\t\tdata: { name: props.provider.name },\n\t});\n}\n\nasync function reloadProvider() {\n\ttry {\n\t\tawait externalSecretsStore.reloadProvider(props.provider.name);\n\t\ttoast.showMessage({\n\t\t\ttitle: i18n.baseText('settings.externalSecrets.card.reload.success.title'),\n\t\t\tmessage: i18n.baseText('settings.externalSecrets.card.reload.success.description', {\n\t\t\t\tinterpolate: { provider: props.provider.displayName },\n\t\t\t}),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n}\n\nasync function onActionDropdownClick(id: string) {\n\tswitch (id) {\n\t\tcase 'setup':\n\t\t\topenExternalSecretProvider();\n\t\t\tbreak;\n\t\tcase 'reload':\n\t\t\tawait reloadProvider();\n\t\t\tbreak;\n\t}\n}\n</script>\n\n<template>\n\t<n8n-card :class=\"$style.card\">\n\t\t<div :class=\"$style.cardBody\">\n\t\t\t<ExternalSecretsProviderImage :class=\"$style.cardImage\" :provider=\"provider\" />\n\t\t\t<div :class=\"$style.cardContent\">\n\t\t\t\t<n8n-text bold>{{ provider.displayName }}</n8n-text>\n\t\t\t\t<n8n-text v-if=\"provider.connected\" color=\"text-light\" size=\"small\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.secretsCount', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tcount: `${externalSecretsStore.secrets[provider.name]?.length}`,\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</span>\n\t\t\t\t\t|\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.connectedAt', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tdate: formattedDate,\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</span>\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div v-if=\"canConnect\" :class=\"$style.cardActions\">\n\t\t\t\t<ExternalSecretsProviderConnectionSwitch\n\t\t\t\t\t:provider=\"provider\"\n\t\t\t\t\t:before-update=\"onBeforeConnectionUpdate\"\n\t\t\t\t\t:disabled=\"connectionState === 'error' && !provider.connected\"\n\t\t\t\t/>\n\t\t\t\t<n8n-action-toggle\n\t\t\t\t\tclass=\"ml-s\"\n\t\t\t\t\ttheme=\"dark\"\n\t\t\t\t\t:actions=\"actionDropdownOptions\"\n\t\t\t\t\t@action=\"onActionDropdownClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<n8n-button v-else type=\"tertiary\" @click=\"openExternalSecretProvider()\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.card.setUp') }}\n\t\t\t</n8n-button>\n\t\t</div>\n\t</n8n-card>\n</template>\n\n<style lang=\"scss\" module>\n.card {\n\tposition: relative;\n\tmargin-bottom: var(--spacing-2xs);\n}\n\n.cardImage {\n\twidth: 28px;\n\theight: 28px;\n}\n\n.cardBody {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n.cardContent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-left: var(--spacing-s);\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { useUIStore } from '@/stores/ui.store';\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\nimport { useExternalSecretsStore } from '@/stores/externalSecrets.ee.store';\nimport { computed, onMounted } from 'vue';\nimport ExternalSecretsProviderCard from '@/components/ExternalSecretsProviderCard.ee.vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\n\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst externalSecretsStore = useExternalSecretsStore();\nconst toast = useToast();\n\nconst sortedProviders = computed(() => {\n\treturn ([...externalSecretsStore.providers] as ExternalSecretsProvider[]).sort((a, b) => {\n\t\treturn b.name.localeCompare(a.name);\n\t});\n});\n\nonMounted(() => {\n\tif (!externalSecretsStore.isEnterpriseExternalSecretsEnabled) return;\n\ttry {\n\t\tvoid externalSecretsStore.fetchAllSecrets();\n\t\tvoid externalSecretsStore.getProviders();\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n});\n\nfunction goToUpgrade() {\n\tvoid uiStore.goToUpgrade('external-secrets', 'upgrade-external-secrets');\n}\n</script>\n\n<template>\n\t<div class=\"pb-3xl\">\n\t\t<n8n-heading size=\"2xlarge\">{{ i18n.baseText('settings.externalSecrets.title') }}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"externalSecretsStore.isEnterpriseExternalSecretsEnabled\"\n\t\t\tdata-test-id=\"external-secrets-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" class=\"mt-2xl mb-l\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info') }}\n\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info.link') }}\n\t\t\t\t</a>\n\t\t\t</n8n-callout>\n\t\t\t<ExternalSecretsProviderCard\n\t\t\t\tv-for=\"provider in sortedProviders\"\n\t\t\t\t:key=\"provider.name\"\n\t\t\t\t:provider=\"provider\"\n\t\t\t/>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tclass=\"mt-2xl mb-l\"\n\t\t\tdata-test-id=\"external-secrets-content-unlicensed\"\n\t\t\t:button-text=\"i18n.baseText('settings.externalSecrets.actionBox.buttonText')\"\n\t\t\t@click=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ i18n.baseText('settings.externalSecrets.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t<i18n-t keypath=\"settings.externalSecrets.actionBox.description\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.actionBox.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</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n"],"names":["props","__props","externalSecretsStore","useExternalSecretsStore","i18n","useI18n","uiStore","useUIStore","toast","useToast","provider","toRef","providerData","computed","connectionState","testConnection","setConnectionState","useExternalSecretsProvider","actionDropdownOptions","canConnect","formattedDate","DateTime","isDateObject","onMounted","onBeforeConnectionUpdate","nextTick","openExternalSecretProvider","EXTERNAL_SECRETS_PROVIDER_MODAL_KEY","reloadProvider","error","onActionDropdownClick","id","sortedProviders","a","b","goToUpgrade"],"mappings":"k1CAeA,MAAMA,EAAQC,EAORC,EAAuBC,IACvBC,EAAOC,IACPC,EAAUC,IACVC,EAAQC,IAERC,EAAWC,EAAMX,EAAO,UAAU,EAClCY,EAAeC,EAAS,IAAMH,EAAS,MAAM,MAAQ,CAAA,CAAE,EACvD,CAAE,gBAAAI,EAAiB,eAAAC,EAAgB,mBAAAC,CAAuB,EAAAC,EAC/DP,EACAE,CAAA,EAGKM,EAAwBL,EAAS,IAAM,CAC5C,CACC,MAAO,QACP,MAAOT,EAAK,SAAS,oDAAoD,CAC1E,EACA,GAAIJ,EAAM,SAAS,UAChB,CACA,CACC,MAAO,SACP,MAAOI,EAAK,SAAS,qDAAqD,CAC3E,CAAA,EAEA,CAAC,CAAA,CACJ,EAEKe,EAAaN,EAAS,IACpBb,EAAM,SAAS,WAAa,OAAO,KAAKY,EAAa,KAAK,EAAE,OAAS,CAC5E,EAEKQ,EAAgBP,EAAS,IACvBQ,EAAS,QACfC,EAAaZ,EAAS,MAAM,WAAW,EACpCA,EAAS,MAAM,YAAY,YAAY,EACvCA,EAAS,MAAM,aAAmB,IAAA,OAAO,YAAY,CAAA,EACvD,SAAS,aAAa,CACxB,EAEDa,EAAU,IAAM,CACIP,EAAAhB,EAAM,SAAS,KAAK,CAAA,CACvC,EAED,eAAewB,GAA2B,CACrC,OAAAxB,EAAM,SAAS,UACX,IAGR,MAAME,EAAqB,YAAYF,EAAM,SAAS,IAAI,EAC1D,MAAMyB,EAAS,EACA,MAAMV,MAEH,QACnB,CAEA,SAASW,GAA6B,CACrCpB,EAAQ,kBAAkB,CACzB,KAAMqB,EACN,KAAM,CAAE,KAAM3B,EAAM,SAAS,IAAK,CAAA,CAClC,CACF,CAEA,eAAe4B,GAAiB,CAC3B,GAAA,CACH,MAAM1B,EAAqB,eAAeF,EAAM,SAAS,IAAI,EAC7DQ,EAAM,YAAY,CACjB,MAAOJ,EAAK,SAAS,oDAAoD,EACzE,QAASA,EAAK,SAAS,2DAA4D,CAClF,YAAa,CAAE,SAAUJ,EAAM,SAAS,WAAY,CAAA,CACpD,EACD,KAAM,SAAA,CACN,QACO6B,EAAO,CACfrB,EAAM,UAAUqB,EAAOzB,EAAK,SAAS,OAAO,CAAC,CAC9C,CACD,CAEA,eAAe0B,EAAsBC,EAAY,CAChD,OAAQA,EAAI,CACX,IAAK,QACuBL,IAC3B,MACD,IAAK,SACJ,MAAME,EAAe,EACrB,KACF,CACD,+jDCnGA,MAAMxB,EAAOC,IACPC,EAAUC,IACVL,EAAuBC,IACvBK,EAAQC,IAERuB,EAAkBnB,EAAS,IACxB,CAAC,GAAGX,EAAqB,SAAS,EAAgC,KAAK,CAAC+B,EAAGC,IAC3EA,EAAE,KAAK,cAAcD,EAAE,IAAI,CAClC,CACD,EAEDV,EAAU,IAAM,CACf,GAAKrB,EAAqB,mCACtB,GAAA,CACEA,EAAqB,kBACrBA,EAAqB,qBAClB2B,EAAO,CACfrB,EAAM,UAAUqB,EAAOzB,EAAK,SAAS,OAAO,CAAC,CAC9C,CAAA,CACA,EAED,SAAS+B,GAAc,CACjB7B,EAAQ,YAAY,mBAAoB,0BAA0B,CACxE"}
1
+ {"version":3,"file":"SettingsExternalSecrets-BrQz9Rn5.js","sources":["../../src/components/ExternalSecretsProviderCard.ee.vue","../../src/views/SettingsExternalSecrets.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PropType } from 'vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\nimport ExternalSecretsProviderImage from '@/components/ExternalSecretsProviderImage.ee.vue';\nimport ExternalSecretsProviderConnectionSwitch from '@/components/ExternalSecretsProviderConnectionSwitch.ee.vue';\nimport { useExternalSecretsStore } from '@/stores/externalSecrets.ee.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useToast } from '@/composables/useToast';\nimport { useI18n } from '@/composables/useI18n';\nimport { useExternalSecretsProvider } from '@/composables/useExternalSecretsProvider';\nimport { EXTERNAL_SECRETS_PROVIDER_MODAL_KEY } from '@/constants';\nimport { DateTime } from 'luxon';\nimport { computed, nextTick, onMounted, toRef } from 'vue';\nimport { isDateObject } from '@/utils/typeGuards';\n\nconst props = defineProps({\n\tprovider: {\n\t\ttype: Object as PropType<ExternalSecretsProvider>,\n\t\trequired: true,\n\t},\n});\n\nconst externalSecretsStore = useExternalSecretsStore();\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst toast = useToast();\n\nconst provider = toRef(props, 'provider');\nconst providerData = computed(() => provider.value.data ?? {});\nconst { connectionState, testConnection, setConnectionState } = useExternalSecretsProvider(\n\tprovider,\n\tproviderData,\n);\n\nconst actionDropdownOptions = computed(() => [\n\t{\n\t\tvalue: 'setup',\n\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.setup'),\n\t},\n\t...(props.provider.connected\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'reload',\n\t\t\t\t\tlabel: i18n.baseText('settings.externalSecrets.card.actionDropdown.reload'),\n\t\t\t\t},\n\t\t\t]\n\t\t: []),\n]);\n\nconst canConnect = computed(() => {\n\treturn props.provider.connected || Object.keys(providerData.value).length > 0;\n});\n\nconst formattedDate = computed(() => {\n\treturn DateTime.fromISO(\n\t\tisDateObject(provider.value.connectedAt)\n\t\t\t? provider.value.connectedAt.toISOString()\n\t\t\t: provider.value.connectedAt || new Date().toISOString(),\n\t).toFormat('dd LLL yyyy');\n});\n\nonMounted(() => {\n\tsetConnectionState(props.provider.state);\n});\n\nasync function onBeforeConnectionUpdate() {\n\tif (props.provider.connected) {\n\t\treturn true;\n\t}\n\n\tawait externalSecretsStore.getProvider(props.provider.name);\n\tawait nextTick();\n\tconst status = await testConnection();\n\n\treturn status !== 'error';\n}\n\nfunction openExternalSecretProvider() {\n\tuiStore.openModalWithData({\n\t\tname: EXTERNAL_SECRETS_PROVIDER_MODAL_KEY,\n\t\tdata: { name: props.provider.name },\n\t});\n}\n\nasync function reloadProvider() {\n\ttry {\n\t\tawait externalSecretsStore.reloadProvider(props.provider.name);\n\t\ttoast.showMessage({\n\t\t\ttitle: i18n.baseText('settings.externalSecrets.card.reload.success.title'),\n\t\t\tmessage: i18n.baseText('settings.externalSecrets.card.reload.success.description', {\n\t\t\t\tinterpolate: { provider: props.provider.displayName },\n\t\t\t}),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n}\n\nasync function onActionDropdownClick(id: string) {\n\tswitch (id) {\n\t\tcase 'setup':\n\t\t\topenExternalSecretProvider();\n\t\t\tbreak;\n\t\tcase 'reload':\n\t\t\tawait reloadProvider();\n\t\t\tbreak;\n\t}\n}\n</script>\n\n<template>\n\t<n8n-card :class=\"$style.card\">\n\t\t<div :class=\"$style.cardBody\">\n\t\t\t<ExternalSecretsProviderImage :class=\"$style.cardImage\" :provider=\"provider\" />\n\t\t\t<div :class=\"$style.cardContent\">\n\t\t\t\t<n8n-text bold>{{ provider.displayName }}</n8n-text>\n\t\t\t\t<n8n-text v-if=\"provider.connected\" color=\"text-light\" size=\"small\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.secretsCount', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tcount: `${externalSecretsStore.secrets[provider.name]?.length}`,\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</span>\n\t\t\t\t\t|\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\ti18n.baseText('settings.externalSecrets.card.connectedAt', {\n\t\t\t\t\t\t\t\tinterpolate: {\n\t\t\t\t\t\t\t\t\tdate: formattedDate,\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</span>\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div v-if=\"canConnect\" :class=\"$style.cardActions\">\n\t\t\t\t<ExternalSecretsProviderConnectionSwitch\n\t\t\t\t\t:provider=\"provider\"\n\t\t\t\t\t:before-update=\"onBeforeConnectionUpdate\"\n\t\t\t\t\t:disabled=\"connectionState === 'error' && !provider.connected\"\n\t\t\t\t/>\n\t\t\t\t<n8n-action-toggle\n\t\t\t\t\tclass=\"ml-s\"\n\t\t\t\t\ttheme=\"dark\"\n\t\t\t\t\t:actions=\"actionDropdownOptions\"\n\t\t\t\t\t@action=\"onActionDropdownClick\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<n8n-button v-else type=\"tertiary\" @click=\"openExternalSecretProvider()\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.card.setUp') }}\n\t\t\t</n8n-button>\n\t\t</div>\n\t</n8n-card>\n</template>\n\n<style lang=\"scss\" module>\n.card {\n\tposition: relative;\n\tmargin-bottom: var(--spacing-2xs);\n}\n\n.cardImage {\n\twidth: 28px;\n\theight: 28px;\n}\n\n.cardBody {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n.cardContent {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-left: var(--spacing-s);\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { useUIStore } from '@/stores/ui.store';\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\nimport { useExternalSecretsStore } from '@/stores/externalSecrets.ee.store';\nimport { computed, onMounted } from 'vue';\nimport ExternalSecretsProviderCard from '@/components/ExternalSecretsProviderCard.ee.vue';\nimport type { ExternalSecretsProvider } from '@/Interface';\n\nconst i18n = useI18n();\nconst uiStore = useUIStore();\nconst externalSecretsStore = useExternalSecretsStore();\nconst toast = useToast();\n\nconst sortedProviders = computed(() => {\n\treturn ([...externalSecretsStore.providers] as ExternalSecretsProvider[]).sort((a, b) => {\n\t\treturn b.name.localeCompare(a.name);\n\t});\n});\n\nonMounted(() => {\n\tif (!externalSecretsStore.isEnterpriseExternalSecretsEnabled) return;\n\ttry {\n\t\tvoid externalSecretsStore.fetchAllSecrets();\n\t\tvoid externalSecretsStore.getProviders();\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('error'));\n\t}\n});\n\nfunction goToUpgrade() {\n\tvoid uiStore.goToUpgrade('external-secrets', 'upgrade-external-secrets');\n}\n</script>\n\n<template>\n\t<div class=\"pb-3xl\">\n\t\t<n8n-heading size=\"2xlarge\">{{ i18n.baseText('settings.externalSecrets.title') }}</n8n-heading>\n\t\t<div\n\t\t\tv-if=\"externalSecretsStore.isEnterpriseExternalSecretsEnabled\"\n\t\t\tdata-test-id=\"external-secrets-content-licensed\"\n\t\t>\n\t\t\t<n8n-callout theme=\"secondary\" class=\"mt-2xl mb-l\">\n\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info') }}\n\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.info.link') }}\n\t\t\t\t</a>\n\t\t\t</n8n-callout>\n\t\t\t<ExternalSecretsProviderCard\n\t\t\t\tv-for=\"provider in sortedProviders\"\n\t\t\t\t:key=\"provider.name\"\n\t\t\t\t:provider=\"provider\"\n\t\t\t/>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else\n\t\t\tclass=\"mt-2xl mb-l\"\n\t\t\tdata-test-id=\"external-secrets-content-unlicensed\"\n\t\t\t:button-text=\"i18n.baseText('settings.externalSecrets.actionBox.buttonText')\"\n\t\t\t@click=\"goToUpgrade\"\n\t\t>\n\t\t\t<template #heading>\n\t\t\t\t<span>{{ i18n.baseText('settings.externalSecrets.actionBox.title') }}</span>\n\t\t\t</template>\n\t\t\t<template #description>\n\t\t\t\t<i18n-t keypath=\"settings.externalSecrets.actionBox.description\">\n\t\t\t\t\t<template #link>\n\t\t\t\t\t\t<a :href=\"i18n.baseText('settings.externalSecrets.docs')\" target=\"_blank\">\n\t\t\t\t\t\t\t{{ i18n.baseText('settings.externalSecrets.actionBox.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</template>\n\t\t</n8n-action-box>\n\t</div>\n</template>\n"],"names":["props","__props","externalSecretsStore","useExternalSecretsStore","i18n","useI18n","uiStore","useUIStore","toast","useToast","provider","toRef","providerData","computed","connectionState","testConnection","setConnectionState","useExternalSecretsProvider","actionDropdownOptions","canConnect","formattedDate","DateTime","isDateObject","onMounted","onBeforeConnectionUpdate","nextTick","openExternalSecretProvider","EXTERNAL_SECRETS_PROVIDER_MODAL_KEY","reloadProvider","error","onActionDropdownClick","id","sortedProviders","a","b","goToUpgrade"],"mappings":"k1CAeA,MAAMA,EAAQC,EAORC,EAAuBC,IACvBC,EAAOC,IACPC,EAAUC,IACVC,EAAQC,IAERC,EAAWC,EAAMX,EAAO,UAAU,EAClCY,EAAeC,EAAS,IAAMH,EAAS,MAAM,MAAQ,CAAA,CAAE,EACvD,CAAE,gBAAAI,EAAiB,eAAAC,EAAgB,mBAAAC,CAAuB,EAAAC,EAC/DP,EACAE,CAAA,EAGKM,EAAwBL,EAAS,IAAM,CAC5C,CACC,MAAO,QACP,MAAOT,EAAK,SAAS,oDAAoD,CAC1E,EACA,GAAIJ,EAAM,SAAS,UAChB,CACA,CACC,MAAO,SACP,MAAOI,EAAK,SAAS,qDAAqD,CAC3E,CAAA,EAEA,CAAC,CAAA,CACJ,EAEKe,EAAaN,EAAS,IACpBb,EAAM,SAAS,WAAa,OAAO,KAAKY,EAAa,KAAK,EAAE,OAAS,CAC5E,EAEKQ,EAAgBP,EAAS,IACvBQ,EAAS,QACfC,EAAaZ,EAAS,MAAM,WAAW,EACpCA,EAAS,MAAM,YAAY,YAAY,EACvCA,EAAS,MAAM,aAAmB,IAAA,OAAO,YAAY,CAAA,EACvD,SAAS,aAAa,CACxB,EAEDa,EAAU,IAAM,CACIP,EAAAhB,EAAM,SAAS,KAAK,CAAA,CACvC,EAED,eAAewB,GAA2B,CACrC,OAAAxB,EAAM,SAAS,UACX,IAGR,MAAME,EAAqB,YAAYF,EAAM,SAAS,IAAI,EAC1D,MAAMyB,EAAS,EACA,MAAMV,MAEH,QACnB,CAEA,SAASW,GAA6B,CACrCpB,EAAQ,kBAAkB,CACzB,KAAMqB,EACN,KAAM,CAAE,KAAM3B,EAAM,SAAS,IAAK,CAAA,CAClC,CACF,CAEA,eAAe4B,GAAiB,CAC3B,GAAA,CACH,MAAM1B,EAAqB,eAAeF,EAAM,SAAS,IAAI,EAC7DQ,EAAM,YAAY,CACjB,MAAOJ,EAAK,SAAS,oDAAoD,EACzE,QAASA,EAAK,SAAS,2DAA4D,CAClF,YAAa,CAAE,SAAUJ,EAAM,SAAS,WAAY,CAAA,CACpD,EACD,KAAM,SAAA,CACN,QACO6B,EAAO,CACfrB,EAAM,UAAUqB,EAAOzB,EAAK,SAAS,OAAO,CAAC,CAC9C,CACD,CAEA,eAAe0B,EAAsBC,EAAY,CAChD,OAAQA,EAAI,CACX,IAAK,QACuBL,IAC3B,MACD,IAAK,SACJ,MAAME,EAAe,EACrB,KACF,CACD,+jDCnGA,MAAMxB,EAAOC,IACPC,EAAUC,IACVL,EAAuBC,IACvBK,EAAQC,IAERuB,EAAkBnB,EAAS,IACxB,CAAC,GAAGX,EAAqB,SAAS,EAAgC,KAAK,CAAC+B,EAAGC,IAC3EA,EAAE,KAAK,cAAcD,EAAE,IAAI,CAClC,CACD,EAEDV,EAAU,IAAM,CACf,GAAKrB,EAAqB,mCACtB,GAAA,CACEA,EAAqB,kBACrBA,EAAqB,qBAClB2B,EAAO,CACfrB,EAAM,UAAUqB,EAAOzB,EAAK,SAAS,OAAO,CAAC,CAC9C,CAAA,CACA,EAED,SAAS+B,GAAc,CACjB7B,EAAQ,YAAY,mBAAoB,0BAA0B,CACxE"}
@@ -1,2 +1,2 @@
1
- import{cS as e,i as r}from"./index-DeNtBxiT.js";import{m as i}from"./pinia-BAhPp3pQ.js";import{G as p,l as m,M as n,ag as s}from"./vendor-Dv5OeN6t.js";import{_ as a}from"./n8n-B6cfQsVX.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const u=p({name:"SettingsFakeDoorView",components:{FeatureComingSoon:e},props:{featureId:{type:String,required:!0}},computed:{...i(r),featureInfo(){return this.uiStore.getFakeDoorById(this.featureId)}},methods:{openLinkPage(){this.featureInfo&&window.open(this.featureInfo.linkURL,"_blank")}}}),f="_header_fa9t3_1",c={header:f};function d(o,l,h,S,g,k){const t=s("FeatureComingSoon");return m(),n(t,{"feature-id":o.featureId,"show-title":""},null,8,["feature-id"])}const _={$style:c},T=a(u,[["render",d],["__cssModules",_]]);export{T as default};
2
- //# sourceMappingURL=SettingsFakeDoorView-Df4Rs6o0.js.map
1
+ import{cS as e,i as r}from"./index-DEwaaDne.js";import{m as i}from"./pinia-BAhPp3pQ.js";import{G as p,l as m,M as n,ag as s}from"./vendor-Dv5OeN6t.js";import{_ as a}from"./n8n-B6cfQsVX.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const u=p({name:"SettingsFakeDoorView",components:{FeatureComingSoon:e},props:{featureId:{type:String,required:!0}},computed:{...i(r),featureInfo(){return this.uiStore.getFakeDoorById(this.featureId)}},methods:{openLinkPage(){this.featureInfo&&window.open(this.featureInfo.linkURL,"_blank")}}}),f="_header_fa9t3_1",c={header:f};function d(o,l,h,S,g,k){const t=s("FeatureComingSoon");return m(),n(t,{"feature-id":o.featureId,"show-title":""},null,8,["feature-id"])}const _={$style:c},T=a(u,[["render",d],["__cssModules",_]]);export{T as default};
2
+ //# sourceMappingURL=SettingsFakeDoorView-BEtA0RJZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsFakeDoorView-Df4Rs6o0.js","sources":["../../src/views/SettingsFakeDoorView.vue"],"sourcesContent":["<template>\n\t<FeatureComingSoon :feature-id=\"featureId\" show-title />\n</template>\n\n<script lang=\"ts\">\nimport type { IFakeDoor } from '@/Interface';\nimport { defineComponent } from 'vue';\nimport FeatureComingSoon from '@/components/FeatureComingSoon.vue';\nimport { mapStores } from 'pinia';\nimport { useUIStore } from '@/stores/ui.store';\n\nexport default defineComponent({\n\tname: 'SettingsFakeDoorView',\n\tcomponents: {\n\t\tFeatureComingSoon,\n\t},\n\tprops: {\n\t\tfeatureId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t\tfeatureInfo(): IFakeDoor | undefined {\n\t\t\treturn this.uiStore.getFakeDoorById(this.featureId);\n\t\t},\n\t},\n\tmethods: {\n\t\topenLinkPage() {\n\t\t\tif (this.featureInfo) {\n\t\t\t\twindow.open(this.featureInfo.linkURL, '_blank');\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\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</style>\n"],"names":["_sfc_main","defineComponent","FeatureComingSoon","mapStores","useUIStore","_component_FeatureComingSoon","_resolveComponent","_openBlock","_createBlock","_ctx"],"mappings":"ykCAWA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,uBACN,WAAY,CACX,kBAAAC,CACD,EACA,MAAO,CACN,UAAW,CACV,KAAM,OACN,SAAU,EACX,CACD,EACA,SAAU,CACT,GAAGC,EAAUC,CAAU,EACvB,aAAqC,CACpC,OAAO,KAAK,QAAQ,gBAAgB,KAAK,SAAS,CACnD,CACD,EACA,QAAS,CACR,cAAe,CACV,KAAK,aACR,OAAO,KAAK,KAAK,YAAY,QAAS,QAAQ,CAEhD,CACD,CACD,CAAC,2DAlCwD,MAAAC,EAAAC,EAAA,mBAAA,SAAbC,EAAU,EAAAC,EAAAH,EAAA,CAAA,aAAAI,EAAA"}
1
+ {"version":3,"file":"SettingsFakeDoorView-BEtA0RJZ.js","sources":["../../src/views/SettingsFakeDoorView.vue"],"sourcesContent":["<template>\n\t<FeatureComingSoon :feature-id=\"featureId\" show-title />\n</template>\n\n<script lang=\"ts\">\nimport type { IFakeDoor } from '@/Interface';\nimport { defineComponent } from 'vue';\nimport FeatureComingSoon from '@/components/FeatureComingSoon.vue';\nimport { mapStores } from 'pinia';\nimport { useUIStore } from '@/stores/ui.store';\n\nexport default defineComponent({\n\tname: 'SettingsFakeDoorView',\n\tcomponents: {\n\t\tFeatureComingSoon,\n\t},\n\tprops: {\n\t\tfeatureId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore),\n\t\tfeatureInfo(): IFakeDoor | undefined {\n\t\t\treturn this.uiStore.getFakeDoorById(this.featureId);\n\t\t},\n\t},\n\tmethods: {\n\t\topenLinkPage() {\n\t\t\tif (this.featureInfo) {\n\t\t\t\twindow.open(this.featureInfo.linkURL, '_blank');\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\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</style>\n"],"names":["_sfc_main","defineComponent","FeatureComingSoon","mapStores","useUIStore","_component_FeatureComingSoon","_resolveComponent","_openBlock","_createBlock","_ctx"],"mappings":"ykCAWA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,uBACN,WAAY,CACX,kBAAAC,CACD,EACA,MAAO,CACN,UAAW,CACV,KAAM,OACN,SAAU,EACX,CACD,EACA,SAAU,CACT,GAAGC,EAAUC,CAAU,EACvB,aAAqC,CACpC,OAAO,KAAK,QAAQ,gBAAgB,KAAK,SAAS,CACnD,CACD,EACA,QAAS,CACR,cAAe,CACV,KAAK,aACR,OAAO,KAAK,KAAK,YAAY,QAAS,QAAQ,CAEhD,CACD,CACD,CAAC,2DAlCwD,MAAAC,EAAAC,EAAA,mBAAA,SAAbC,EAAU,EAAAC,EAAAH,EAAA,CAAA,aAAAI,EAAA"}
@@ -1,2 +1,2 @@
1
- import{u as z,G as E,i as D,b as w,a as A,cB as y,cC as L,z as I}from"./index-DeNtBxiT.js";import{h as k}from"./humanize-duration-K_pl0TKk.js";import{K as F}from"./v3-infinite-loading-X6A7v07E.js";import{m as V}from"./pinia-BAhPp3pQ.js";import{at as M,au as _,b as N,_ as R}from"./n8n-B6cfQsVX.js";import{G as U,l as r,m as g,p as l,U as s,O as n,S as u,T as d,I as p,M as m,R as f,P as q,ag as o,aq as B}from"./vendor-Dv5OeN6t.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const P=U({name:"SettingsLdapView",components:{InfiniteLoading:F,ElTable:M,ElTableColumn:_},setup(){return{...z(),...E()}},data(){return{dataTable:[],tableKey:0,adConfig:{},loadingTestConnection:!1,loadingDryRun:!1,loadingLiveRun:!1,loadingTable:!1,hasAnyChanges:!1,formInputs:null,formBus:N(),readyToSubmit:!1,page:0,loginEnabled:!1,syncEnabled:!1}},computed:{...V(A,w,D),currentUser(){return this.usersStore.currentUser},isLDAPFeatureEnabled(){return this.settingsStore.settings.enterprise.ldap}},async mounted(){this.isLDAPFeatureEnabled&&await this.getLdapConfig()},methods:{goToUpgrade(){this.uiStore.goToUpgrade("ldap","upgrade-ldap")},cellClassStyle({data:e}){const{row:t,column:i}=e;if(i.property==="status"){if(t.status==="Success")return{color:"green"};if(t.status==="Error")return{color:"red"}}if(i.property==="runMode"){if(t.runMode==="Dry")return{color:"orange"};if(t.runMode==="Live")return{color:"blue"}}return{}},onInput(e){e.name==="loginEnabled"&&typeof e.value=="boolean"&&(this.loginEnabled=e.value),e.name==="synchronizationEnabled"&&typeof e.value=="boolean"&&(this.syncEnabled=e.value),this.hasAnyChanges=!0},onReadyToSubmit(e){this.readyToSubmit=e},syncDataMapper(e){const t=new Date(e.startedAt),i=new Date(e.endedAt),a=i.getTime()-t.getTime();return{runTime:k(a),runMode:y(e.runMode),status:y(e.status),endedAt:L(i.getTime()),details:this.$locale.baseText("settings.ldap.usersScanned",{interpolate:{scanned:e.scanned.toString()}})}},async onSubmit(){const e=this.$refs.ldapConfigForm;if(!this.hasAnyChanges||!e)return;const t={loginEnabled:e.values.loginEnabled,loginLabel:e.values.loginLabel,connectionUrl:e.values.serverAddress,allowUnauthorizedCerts:e.values.allowUnauthorizedCerts,connectionPort:+e.values.port,connectionSecurity:e.values.connectionSecurity,baseDn:e.values.baseDn,bindingAdminDn:e.values.bindingType==="admin"?e.values.adminDn:"",bindingAdminPassword:e.values.bindingType==="admin"?e.values.adminPassword:"",emailAttribute:e.values.email,firstNameAttribute:e.values.firstName,lastNameAttribute:e.values.lastName,loginIdAttribute:e.values.loginId,ldapIdAttribute:e.values.ldapId,userFilter:e.values.userFilter,synchronizationEnabled:e.values.synchronizationEnabled,synchronizationInterval:+e.values.synchronizationInterval,searchPageSize:+e.values.pageSize,searchTimeout:+e.values.searchTimeout};let i=!0;try{this.adConfig.loginEnabled&&!t.loginEnabled&&(i=await this.confirm(this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.message"),this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.headline"),{cancelButtonText:this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText"),confirmButtonText:this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText")})===I),i||(this.hasAnyChanges=!0),this.adConfig=await this.settingsStore.updateLdapConfig(t),this.showToast({title:this.$locale.baseText("settings.ldap.updateConfiguration"),message:"",type:"success"})}catch(a){this.showError(a,this.$locale.baseText("settings.ldap.configurationError"))}finally{i&&(this.hasAnyChanges=!1)}},onSaveClick(){this.formBus.emit("submit")},async onTestConnectionClick(){this.loadingTestConnection=!0;try{await this.settingsStore.testLdapConnection(),this.showToast({title:this.$locale.baseText("settings.ldap.connectionTest"),message:this.$locale.baseText("settings.ldap.toast.connection.success"),type:"success"})}catch(e){this.showToast({title:this.$locale.baseText("settings.ldap.connectionTestError"),message:e.message,type:"error"})}finally{this.loadingTestConnection=!1}},async onDryRunClick(){this.loadingDryRun=!0;try{await this.settingsStore.runLdapSync({type:"dry"}),this.showToast({title:this.$locale.baseText("settings.ldap.runSync.title"),message:this.$locale.baseText("settings.ldap.toast.sync.success"),type:"success"})}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}finally{this.loadingDryRun=!1,await this.reloadLdapSynchronizations()}},async onLiveRunClick(){this.loadingLiveRun=!0;try{await this.settingsStore.runLdapSync({type:"live"}),this.showToast({title:this.$locale.baseText("settings.ldap.runSync.title"),message:this.$locale.baseText("settings.ldap.toast.sync.success"),type:"success"})}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}finally{this.loadingLiveRun=!1,await this.reloadLdapSynchronizations()}},async getLdapConfig(){try{this.adConfig=await this.settingsStore.getLdapConfig(),this.loginEnabled=this.adConfig.loginEnabled,this.syncEnabled=this.adConfig.synchronizationEnabled;const e=a=>a.loginEnabled===!0,t=a=>a.synchronizationEnabled===!0&&a.loginEnabled===!0,i=a=>a.bindingType==="admin"&&a.loginEnabled===!0;this.formInputs=[{name:"loginEnabled",initialValue:this.adConfig.loginEnabled,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.loginEnabled.label"),tooltipText:this.$locale.baseText("settings.ldap.form.loginEnabled.tooltip"),required:!0}},{name:"loginLabel",initialValue:this.adConfig.loginLabel,properties:{label:this.$locale.baseText("settings.ldap.form.loginLabel.label"),required:!0,placeholder:this.$locale.baseText("settings.ldap.form.loginLabel.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.loginLabel.infoText")},shouldDisplay:e},{name:"serverAddress",initialValue:this.adConfig.connectionUrl,properties:{label:this.$locale.baseText("settings.ldap.form.serverAddress.label"),required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.serverAddress.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.serverAddress.infoText")},shouldDisplay:e},{name:"port",initialValue:this.adConfig.connectionPort,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.port.label"),capitalize:!0,infoText:this.$locale.baseText("settings.ldap.form.port.infoText")},shouldDisplay:e},{name:"connectionSecurity",initialValue:this.adConfig.connectionSecurity,properties:{type:"select",label:this.$locale.baseText("settings.ldap.form.connectionSecurity.label"),infoText:this.$locale.baseText("settings.ldap.form.connectionSecurity.infoText"),options:[{label:"None",value:"none"},{label:"TLS",value:"tls"},{label:"STARTTLS",value:"startTls"}],required:!0,capitalize:!0},shouldDisplay:e},{name:"allowUnauthorizedCerts",initialValue:this.adConfig.allowUnauthorizedCerts,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.allowUnauthorizedCerts.label"),required:!1},shouldDisplay(a){return a.connectionSecurity!=="none"&&a.loginEnabled===!0}},{name:"baseDn",initialValue:this.adConfig.baseDn,properties:{label:this.$locale.baseText("settings.ldap.form.baseDn.label"),required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.baseDn.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.baseDn.infoText")},shouldDisplay:e},{name:"bindingType",initialValue:"admin",properties:{type:"select",label:this.$locale.baseText("settings.ldap.form.bindingType.label"),infoText:this.$locale.baseText("settings.ldap.form.bindingType.infoText"),options:[{value:"admin",label:"Admin"},{value:"anonymous",label:"Anonymous"}]},shouldDisplay:e},{name:"adminDn",initialValue:this.adConfig.bindingAdminDn,properties:{label:this.$locale.baseText("settings.ldap.form.adminDn.label"),placeholder:this.$locale.baseText("settings.ldap.form.adminDn.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.adminDn.infoText"),capitalize:!0},shouldDisplay:i},{name:"adminPassword",initialValue:this.adConfig.bindingAdminPassword,properties:{label:this.$locale.baseText("settings.ldap.form.adminPassword.label"),type:"password",capitalize:!0,infoText:this.$locale.baseText("settings.ldap.form.adminPassword.infoText")},shouldDisplay:i},{name:"userFilter",initialValue:this.adConfig.userFilter,properties:{label:this.$locale.baseText("settings.ldap.form.userFilter.label"),type:"text",required:!1,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.userFilter.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.userFilter.infoText")},shouldDisplay:e},{name:"attributeMappingInfo",properties:{label:this.$locale.baseText("settings.ldap.form.attributeMappingInfo.label"),type:"info",labelSize:"large",labelAlignment:"left"},shouldDisplay:e},{name:"ldapId",initialValue:this.adConfig.ldapIdAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.ldapId.label"),type:"text",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.ldapId.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.ldapId.infoText")},shouldDisplay:e},{name:"loginId",initialValue:this.adConfig.loginIdAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.loginId.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.loginId.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.loginId.infoText")},shouldDisplay:e},{name:"email",initialValue:this.adConfig.emailAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.email.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.email.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.email.infoText")},shouldDisplay:e},{name:"firstName",initialValue:this.adConfig.firstNameAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.firstName.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.firstName.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.firstName.infoText")},shouldDisplay:e},{name:"lastName",initialValue:this.adConfig.lastNameAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.lastName.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.lastName.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.lastName.infoText")},shouldDisplay:e},{name:"synchronizationEnabled",initialValue:this.adConfig.synchronizationEnabled,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.synchronizationEnabled.label"),tooltipText:this.$locale.baseText("settings.ldap.form.synchronizationEnabled.tooltip"),required:!0},shouldDisplay:e},{name:"synchronizationInterval",initialValue:this.adConfig.synchronizationInterval,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.synchronizationInterval.label"),infoText:this.$locale.baseText("settings.ldap.form.synchronizationInterval.infoText")},shouldDisplay:t},{name:"pageSize",initialValue:this.adConfig.searchPageSize,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.pageSize.label"),infoText:this.$locale.baseText("settings.ldap.form.pageSize.infoText")},shouldDisplay:t},{name:"searchTimeout",initialValue:this.adConfig.searchTimeout,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.searchTimeout.label"),infoText:this.$locale.baseText("settings.ldap.form.searchTimeout.infoText")},shouldDisplay:t}]}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.configurationError"))}},async getLdapSynchronizations(e){try{this.loadingTable=!0;const t=await this.settingsStore.getLdapSynchronizations({page:this.page});t.length!==0?(this.dataTable.push(...t.map(this.syncDataMapper)),this.page+=1,e.loaded()):e.complete(),this.loadingTable=!1}catch(t){this.showError(t,this.$locale.baseText("settings.ldap.synchronizationError"))}},async reloadLdapSynchronizations(){try{this.page=0,this.tableKey+=1,this.dataTable=[]}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}}}}),H="_container_17k3n_1",K="_syncTable_17k3n_5",O="_header_17k3n_9",G="_enableFeatureContainer_17k3n_18",j="_sectionHeader_17k3n_32",J="_settingsForm_17k3n_36",Q="_docsInfoTip_17k3n_40",W={container:H,syncTable:K,header:O,enableFeatureContainer:G,sectionHeader:j,settingsForm:J,docsInfoTip:Q},X={key:0},Y={key:1},Z=["innerHTML"],ee={key:0},te={class:"pb-3xl"};function ae(e,t,i,a,ie,le){const h=o("n8n-heading"),T=o("n8n-info-tip"),$=o("n8n-action-box"),x=o("n8n-form-inputs"),b=o("n8n-button"),c=o("ElTableColumn"),C=o("InfiniteLoading"),v=o("ElTable"),S=B("loading");return e.isLDAPFeatureEnabled?(r(),g("div",Y,[l("div",{class:p(e.$style.container)},[l("div",{class:p(e.$style.header)},[s(h,{size:"2xlarge"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap")),1)]),_:1})],2),l("div",{class:p(e.$style.docsInfoTip)},[s(T,{theme:"info",type:"note"},{default:n(()=>[l("span",{innerHTML:e.$locale.baseText("settings.ldap.infoTip")},null,8,Z)]),_:1})],2),l("div",{class:p(e.$style.settingsForm)},[e.formInputs?(r(),m(x,{key:0,ref:"ldapConfigForm",inputs:e.formInputs,"event-bus":e.formBus,"column-view":!0,"vertical-spacing":"l",onUpdate:e.onInput,onReady:e.onReadyToSubmit,onSubmit:e.onSubmit},null,8,["inputs","event-bus","onUpdate","onReady","onSubmit"])):f("",!0)],2),l("div",null,[e.loginEnabled?(r(),m(b,{key:0,label:e.loadingTestConnection?e.$locale.baseText("settings.ldap.testingConnection"):e.$locale.baseText("settings.ldap.testConnection"),size:"large",class:"mr-s",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingTestConnection,onClick:e.onTestConnectionClick},null,8,["label","disabled","loading","onClick"])):f("",!0),s(b,{label:e.$locale.baseText("settings.ldap.save"),size:"large",disabled:!e.hasAnyChanges||!e.readyToSubmit,onClick:e.onSaveClick},null,8,["label","disabled","onClick"])])],2),e.loginEnabled?(r(),g("div",ee,[s(h,{tag:"h1",class:"mb-xl mt-3xl",size:"medium"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap.section.synchronization.title")),1)]),_:1}),l("div",{class:p(e.$style.syncTable)},[q((r(),m(v,{key:e.tableKey,border:!0,stripe:!0,data:e.dataTable,"cell-style":e.cellClassStyle,style:{width:"100%"},"max-height":"250"},{empty:n(()=>[u(d(e.$locale.baseText("settings.ldap.synchronizationTable.empty.message")),1)]),append:n(()=>[s(C,{target:".el-table__body-wrapper",onInfinite:e.getLdapSynchronizations},null,8,["onInfinite"])]),default:n(()=>[s(c,{prop:"status",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.status")},null,8,["label"]),s(c,{prop:"endedAt",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.endedAt")},null,8,["label"]),s(c,{prop:"runMode",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.runMode")},null,8,["label"]),s(c,{prop:"runTime",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.runTime")},null,8,["label"]),s(c,{prop:"details",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.details")},null,8,["label"])]),_:1},8,["data","cell-style"])),[[S,e.loadingTable]])],2),l("div",te,[s(b,{label:e.$locale.baseText("settings.ldap.dryRun"),type:"secondary",size:"large",class:"mr-s",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingDryRun,onClick:e.onDryRunClick},null,8,["label","disabled","loading","onClick"]),s(b,{label:e.$locale.baseText("settings.ldap.synchronizeNow"),size:"large",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingLiveRun,onClick:e.onLiveRunClick},null,8,["label","disabled","loading","onClick"])])])):f("",!0)])):(r(),g("div",X,[l("div",{class:p([e.$style.header,"mb-2xl"])},[s(h,{size:"2xlarge"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap")),1)]),_:1})],2),s(T,{type:"note",theme:"info","tooltip-placement":"right",class:"mb-l"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap.note")),1)]),_:1}),s($,{description:e.$locale.baseText("settings.ldap.disabled.description"),"button-text":e.$locale.baseText("settings.ldap.disabled.buttonText"),"onClick:button":e.goToUpgrade},{heading:n(()=>[l("span",null,d(e.$locale.baseText("settings.ldap.disabled.title")),1)]),_:1},8,["description","button-text","onClick:button"])]))}const se={$style:W},Ne=R(P,[["render",ae],["__cssModules",se]]);export{Ne as default};
2
- //# sourceMappingURL=SettingsLdapView-C4lLeRwF.js.map
1
+ import{u as z,G as E,i as D,b as w,a as A,cB as y,cC as L,z as I}from"./index-DEwaaDne.js";import{h as k}from"./humanize-duration-K_pl0TKk.js";import{K as F}from"./v3-infinite-loading-X6A7v07E.js";import{m as V}from"./pinia-BAhPp3pQ.js";import{at as M,au as _,b as N,_ as R}from"./n8n-B6cfQsVX.js";import{G as U,l as r,m as g,p as l,U as s,O as n,S as u,T as d,I as p,M as m,R as f,P as q,ag as o,aq as B}from"./vendor-Dv5OeN6t.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-9E8Shwsg.js";import"./lodash-es-BxV-E8rt.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-B9ocXky7.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-LluJPcs3.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const P=U({name:"SettingsLdapView",components:{InfiniteLoading:F,ElTable:M,ElTableColumn:_},setup(){return{...z(),...E()}},data(){return{dataTable:[],tableKey:0,adConfig:{},loadingTestConnection:!1,loadingDryRun:!1,loadingLiveRun:!1,loadingTable:!1,hasAnyChanges:!1,formInputs:null,formBus:N(),readyToSubmit:!1,page:0,loginEnabled:!1,syncEnabled:!1}},computed:{...V(A,w,D),currentUser(){return this.usersStore.currentUser},isLDAPFeatureEnabled(){return this.settingsStore.settings.enterprise.ldap}},async mounted(){this.isLDAPFeatureEnabled&&await this.getLdapConfig()},methods:{goToUpgrade(){this.uiStore.goToUpgrade("ldap","upgrade-ldap")},cellClassStyle({data:e}){const{row:t,column:i}=e;if(i.property==="status"){if(t.status==="Success")return{color:"green"};if(t.status==="Error")return{color:"red"}}if(i.property==="runMode"){if(t.runMode==="Dry")return{color:"orange"};if(t.runMode==="Live")return{color:"blue"}}return{}},onInput(e){e.name==="loginEnabled"&&typeof e.value=="boolean"&&(this.loginEnabled=e.value),e.name==="synchronizationEnabled"&&typeof e.value=="boolean"&&(this.syncEnabled=e.value),this.hasAnyChanges=!0},onReadyToSubmit(e){this.readyToSubmit=e},syncDataMapper(e){const t=new Date(e.startedAt),i=new Date(e.endedAt),a=i.getTime()-t.getTime();return{runTime:k(a),runMode:y(e.runMode),status:y(e.status),endedAt:L(i.getTime()),details:this.$locale.baseText("settings.ldap.usersScanned",{interpolate:{scanned:e.scanned.toString()}})}},async onSubmit(){const e=this.$refs.ldapConfigForm;if(!this.hasAnyChanges||!e)return;const t={loginEnabled:e.values.loginEnabled,loginLabel:e.values.loginLabel,connectionUrl:e.values.serverAddress,allowUnauthorizedCerts:e.values.allowUnauthorizedCerts,connectionPort:+e.values.port,connectionSecurity:e.values.connectionSecurity,baseDn:e.values.baseDn,bindingAdminDn:e.values.bindingType==="admin"?e.values.adminDn:"",bindingAdminPassword:e.values.bindingType==="admin"?e.values.adminPassword:"",emailAttribute:e.values.email,firstNameAttribute:e.values.firstName,lastNameAttribute:e.values.lastName,loginIdAttribute:e.values.loginId,ldapIdAttribute:e.values.ldapId,userFilter:e.values.userFilter,synchronizationEnabled:e.values.synchronizationEnabled,synchronizationInterval:+e.values.synchronizationInterval,searchPageSize:+e.values.pageSize,searchTimeout:+e.values.searchTimeout};let i=!0;try{this.adConfig.loginEnabled&&!t.loginEnabled&&(i=await this.confirm(this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.message"),this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.headline"),{cancelButtonText:this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.cancelButtonText"),confirmButtonText:this.$locale.baseText("settings.ldap.confirmMessage.beforeSaveForm.confirmButtonText")})===I),i||(this.hasAnyChanges=!0),this.adConfig=await this.settingsStore.updateLdapConfig(t),this.showToast({title:this.$locale.baseText("settings.ldap.updateConfiguration"),message:"",type:"success"})}catch(a){this.showError(a,this.$locale.baseText("settings.ldap.configurationError"))}finally{i&&(this.hasAnyChanges=!1)}},onSaveClick(){this.formBus.emit("submit")},async onTestConnectionClick(){this.loadingTestConnection=!0;try{await this.settingsStore.testLdapConnection(),this.showToast({title:this.$locale.baseText("settings.ldap.connectionTest"),message:this.$locale.baseText("settings.ldap.toast.connection.success"),type:"success"})}catch(e){this.showToast({title:this.$locale.baseText("settings.ldap.connectionTestError"),message:e.message,type:"error"})}finally{this.loadingTestConnection=!1}},async onDryRunClick(){this.loadingDryRun=!0;try{await this.settingsStore.runLdapSync({type:"dry"}),this.showToast({title:this.$locale.baseText("settings.ldap.runSync.title"),message:this.$locale.baseText("settings.ldap.toast.sync.success"),type:"success"})}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}finally{this.loadingDryRun=!1,await this.reloadLdapSynchronizations()}},async onLiveRunClick(){this.loadingLiveRun=!0;try{await this.settingsStore.runLdapSync({type:"live"}),this.showToast({title:this.$locale.baseText("settings.ldap.runSync.title"),message:this.$locale.baseText("settings.ldap.toast.sync.success"),type:"success"})}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}finally{this.loadingLiveRun=!1,await this.reloadLdapSynchronizations()}},async getLdapConfig(){try{this.adConfig=await this.settingsStore.getLdapConfig(),this.loginEnabled=this.adConfig.loginEnabled,this.syncEnabled=this.adConfig.synchronizationEnabled;const e=a=>a.loginEnabled===!0,t=a=>a.synchronizationEnabled===!0&&a.loginEnabled===!0,i=a=>a.bindingType==="admin"&&a.loginEnabled===!0;this.formInputs=[{name:"loginEnabled",initialValue:this.adConfig.loginEnabled,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.loginEnabled.label"),tooltipText:this.$locale.baseText("settings.ldap.form.loginEnabled.tooltip"),required:!0}},{name:"loginLabel",initialValue:this.adConfig.loginLabel,properties:{label:this.$locale.baseText("settings.ldap.form.loginLabel.label"),required:!0,placeholder:this.$locale.baseText("settings.ldap.form.loginLabel.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.loginLabel.infoText")},shouldDisplay:e},{name:"serverAddress",initialValue:this.adConfig.connectionUrl,properties:{label:this.$locale.baseText("settings.ldap.form.serverAddress.label"),required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.serverAddress.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.serverAddress.infoText")},shouldDisplay:e},{name:"port",initialValue:this.adConfig.connectionPort,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.port.label"),capitalize:!0,infoText:this.$locale.baseText("settings.ldap.form.port.infoText")},shouldDisplay:e},{name:"connectionSecurity",initialValue:this.adConfig.connectionSecurity,properties:{type:"select",label:this.$locale.baseText("settings.ldap.form.connectionSecurity.label"),infoText:this.$locale.baseText("settings.ldap.form.connectionSecurity.infoText"),options:[{label:"None",value:"none"},{label:"TLS",value:"tls"},{label:"STARTTLS",value:"startTls"}],required:!0,capitalize:!0},shouldDisplay:e},{name:"allowUnauthorizedCerts",initialValue:this.adConfig.allowUnauthorizedCerts,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.allowUnauthorizedCerts.label"),required:!1},shouldDisplay(a){return a.connectionSecurity!=="none"&&a.loginEnabled===!0}},{name:"baseDn",initialValue:this.adConfig.baseDn,properties:{label:this.$locale.baseText("settings.ldap.form.baseDn.label"),required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.baseDn.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.baseDn.infoText")},shouldDisplay:e},{name:"bindingType",initialValue:"admin",properties:{type:"select",label:this.$locale.baseText("settings.ldap.form.bindingType.label"),infoText:this.$locale.baseText("settings.ldap.form.bindingType.infoText"),options:[{value:"admin",label:"Admin"},{value:"anonymous",label:"Anonymous"}]},shouldDisplay:e},{name:"adminDn",initialValue:this.adConfig.bindingAdminDn,properties:{label:this.$locale.baseText("settings.ldap.form.adminDn.label"),placeholder:this.$locale.baseText("settings.ldap.form.adminDn.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.adminDn.infoText"),capitalize:!0},shouldDisplay:i},{name:"adminPassword",initialValue:this.adConfig.bindingAdminPassword,properties:{label:this.$locale.baseText("settings.ldap.form.adminPassword.label"),type:"password",capitalize:!0,infoText:this.$locale.baseText("settings.ldap.form.adminPassword.infoText")},shouldDisplay:i},{name:"userFilter",initialValue:this.adConfig.userFilter,properties:{label:this.$locale.baseText("settings.ldap.form.userFilter.label"),type:"text",required:!1,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.userFilter.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.userFilter.infoText")},shouldDisplay:e},{name:"attributeMappingInfo",properties:{label:this.$locale.baseText("settings.ldap.form.attributeMappingInfo.label"),type:"info",labelSize:"large",labelAlignment:"left"},shouldDisplay:e},{name:"ldapId",initialValue:this.adConfig.ldapIdAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.ldapId.label"),type:"text",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.ldapId.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.ldapId.infoText")},shouldDisplay:e},{name:"loginId",initialValue:this.adConfig.loginIdAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.loginId.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.loginId.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.loginId.infoText")},shouldDisplay:e},{name:"email",initialValue:this.adConfig.emailAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.email.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.email.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.email.infoText")},shouldDisplay:e},{name:"firstName",initialValue:this.adConfig.firstNameAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.firstName.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.firstName.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.firstName.infoText")},shouldDisplay:e},{name:"lastName",initialValue:this.adConfig.lastNameAttribute,properties:{label:this.$locale.baseText("settings.ldap.form.lastName.label"),type:"text",autocomplete:"email",required:!0,capitalize:!0,placeholder:this.$locale.baseText("settings.ldap.form.lastName.placeholder"),infoText:this.$locale.baseText("settings.ldap.form.lastName.infoText")},shouldDisplay:e},{name:"synchronizationEnabled",initialValue:this.adConfig.synchronizationEnabled,properties:{type:"toggle",label:this.$locale.baseText("settings.ldap.form.synchronizationEnabled.label"),tooltipText:this.$locale.baseText("settings.ldap.form.synchronizationEnabled.tooltip"),required:!0},shouldDisplay:e},{name:"synchronizationInterval",initialValue:this.adConfig.synchronizationInterval,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.synchronizationInterval.label"),infoText:this.$locale.baseText("settings.ldap.form.synchronizationInterval.infoText")},shouldDisplay:t},{name:"pageSize",initialValue:this.adConfig.searchPageSize,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.pageSize.label"),infoText:this.$locale.baseText("settings.ldap.form.pageSize.infoText")},shouldDisplay:t},{name:"searchTimeout",initialValue:this.adConfig.searchTimeout,properties:{type:"number",label:this.$locale.baseText("settings.ldap.form.searchTimeout.label"),infoText:this.$locale.baseText("settings.ldap.form.searchTimeout.infoText")},shouldDisplay:t}]}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.configurationError"))}},async getLdapSynchronizations(e){try{this.loadingTable=!0;const t=await this.settingsStore.getLdapSynchronizations({page:this.page});t.length!==0?(this.dataTable.push(...t.map(this.syncDataMapper)),this.page+=1,e.loaded()):e.complete(),this.loadingTable=!1}catch(t){this.showError(t,this.$locale.baseText("settings.ldap.synchronizationError"))}},async reloadLdapSynchronizations(){try{this.page=0,this.tableKey+=1,this.dataTable=[]}catch(e){this.showError(e,this.$locale.baseText("settings.ldap.synchronizationError"))}}}}),H="_container_17k3n_1",K="_syncTable_17k3n_5",O="_header_17k3n_9",G="_enableFeatureContainer_17k3n_18",j="_sectionHeader_17k3n_32",J="_settingsForm_17k3n_36",Q="_docsInfoTip_17k3n_40",W={container:H,syncTable:K,header:O,enableFeatureContainer:G,sectionHeader:j,settingsForm:J,docsInfoTip:Q},X={key:0},Y={key:1},Z=["innerHTML"],ee={key:0},te={class:"pb-3xl"};function ae(e,t,i,a,ie,le){const h=o("n8n-heading"),T=o("n8n-info-tip"),$=o("n8n-action-box"),x=o("n8n-form-inputs"),b=o("n8n-button"),c=o("ElTableColumn"),C=o("InfiniteLoading"),v=o("ElTable"),S=B("loading");return e.isLDAPFeatureEnabled?(r(),g("div",Y,[l("div",{class:p(e.$style.container)},[l("div",{class:p(e.$style.header)},[s(h,{size:"2xlarge"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap")),1)]),_:1})],2),l("div",{class:p(e.$style.docsInfoTip)},[s(T,{theme:"info",type:"note"},{default:n(()=>[l("span",{innerHTML:e.$locale.baseText("settings.ldap.infoTip")},null,8,Z)]),_:1})],2),l("div",{class:p(e.$style.settingsForm)},[e.formInputs?(r(),m(x,{key:0,ref:"ldapConfigForm",inputs:e.formInputs,"event-bus":e.formBus,"column-view":!0,"vertical-spacing":"l",onUpdate:e.onInput,onReady:e.onReadyToSubmit,onSubmit:e.onSubmit},null,8,["inputs","event-bus","onUpdate","onReady","onSubmit"])):f("",!0)],2),l("div",null,[e.loginEnabled?(r(),m(b,{key:0,label:e.loadingTestConnection?e.$locale.baseText("settings.ldap.testingConnection"):e.$locale.baseText("settings.ldap.testConnection"),size:"large",class:"mr-s",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingTestConnection,onClick:e.onTestConnectionClick},null,8,["label","disabled","loading","onClick"])):f("",!0),s(b,{label:e.$locale.baseText("settings.ldap.save"),size:"large",disabled:!e.hasAnyChanges||!e.readyToSubmit,onClick:e.onSaveClick},null,8,["label","disabled","onClick"])])],2),e.loginEnabled?(r(),g("div",ee,[s(h,{tag:"h1",class:"mb-xl mt-3xl",size:"medium"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap.section.synchronization.title")),1)]),_:1}),l("div",{class:p(e.$style.syncTable)},[q((r(),m(v,{key:e.tableKey,border:!0,stripe:!0,data:e.dataTable,"cell-style":e.cellClassStyle,style:{width:"100%"},"max-height":"250"},{empty:n(()=>[u(d(e.$locale.baseText("settings.ldap.synchronizationTable.empty.message")),1)]),append:n(()=>[s(C,{target:".el-table__body-wrapper",onInfinite:e.getLdapSynchronizations},null,8,["onInfinite"])]),default:n(()=>[s(c,{prop:"status",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.status")},null,8,["label"]),s(c,{prop:"endedAt",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.endedAt")},null,8,["label"]),s(c,{prop:"runMode",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.runMode")},null,8,["label"]),s(c,{prop:"runTime",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.runTime")},null,8,["label"]),s(c,{prop:"details",label:e.$locale.baseText("settings.ldap.synchronizationTable.column.details")},null,8,["label"])]),_:1},8,["data","cell-style"])),[[S,e.loadingTable]])],2),l("div",te,[s(b,{label:e.$locale.baseText("settings.ldap.dryRun"),type:"secondary",size:"large",class:"mr-s",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingDryRun,onClick:e.onDryRunClick},null,8,["label","disabled","loading","onClick"]),s(b,{label:e.$locale.baseText("settings.ldap.synchronizeNow"),size:"large",disabled:e.hasAnyChanges||!e.readyToSubmit,loading:e.loadingLiveRun,onClick:e.onLiveRunClick},null,8,["label","disabled","loading","onClick"])])])):f("",!0)])):(r(),g("div",X,[l("div",{class:p([e.$style.header,"mb-2xl"])},[s(h,{size:"2xlarge"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap")),1)]),_:1})],2),s(T,{type:"note",theme:"info","tooltip-placement":"right",class:"mb-l"},{default:n(()=>[u(d(e.$locale.baseText("settings.ldap.note")),1)]),_:1}),s($,{description:e.$locale.baseText("settings.ldap.disabled.description"),"button-text":e.$locale.baseText("settings.ldap.disabled.buttonText"),"onClick:button":e.goToUpgrade},{heading:n(()=>[l("span",null,d(e.$locale.baseText("settings.ldap.disabled.title")),1)]),_:1},8,["description","button-text","onClick:button"])]))}const se={$style:W},Ne=R(P,[["render",ae],["__cssModules",se]]);export{Ne as default};
2
+ //# sourceMappingURL=SettingsLdapView-BCqjlrE9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsLdapView-C4lLeRwF.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\" tooltip-placement=\"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:button-text=\"$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:event-bus=\"formBus\"\n\t\t\t\t\t:column-view=\"true\"\n\t\t\t\t\tvertical-spacing=\"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<ElTable\n\t\t\t\t\t:key=\"tableKey\"\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\tmax-height=\"250\"\n\t\t\t\t>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\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<InfiniteLoading target=\".el-table__body-wrapper\" @infinite=\"getLdapSynchronizations\">\n\t\t\t\t\t\t</InfiniteLoading>\n\t\t\t\t\t</template>\n\t\t\t\t</ElTable>\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 type { CSSProperties } from 'vue';\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 type { Events } from 'v3-infinite-loading';\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 { TableColumnCtx } from 'element-plus';\n\ntype TableRow = {\n\tstatus: string;\n\tstartAt: string;\n\tendedAt: string;\n\terror: string;\n\trunMode: string;\n};\n\ntype LDAPConfigForm = {\n\tloginEnabled: boolean;\n\tloginLabel: string;\n\tserverAddress: string;\n\tallowUnauthorizedCerts: boolean;\n\tport: number;\n\tconnectionSecurity: string;\n\tbaseDn: string;\n\tbindingType: 'admin' | 'anonymous';\n\tadminDn: string;\n\tadminPassword: string;\n\temail: string;\n\tfirstName: string;\n\tlastName: string;\n\tloginId: string;\n\tldapId: string;\n\tuserFilter: string;\n\tsynchronizationEnabled: boolean;\n\tsynchronizationInterval: string;\n\tpageSize: string;\n\tsearchTimeout: string;\n};\n\ntype CellClassStyleMethodParams<T> = {\n\tdata: {\n\t\trow: T;\n\t\trowIndex: number;\n\t\tcolumn: TableColumnCtx<T>;\n\t\tcolumnIndex: number;\n\t};\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\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\tasync mounted() {\n\t\tif (!this.isLDAPFeatureEnabled) return;\n\t\tawait this.getLdapConfig();\n\t},\n\tmethods: {\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('ldap', 'upgrade-ldap');\n\t\t},\n\t\tcellClassStyle({ data }: CellClassStyleMethodParams<TableRow>): CSSProperties {\n\t\t\tconst { row, column } = data;\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 { values: LDAPConfigForm };\n\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: Parameters<Events['infinite']>[0]) {\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","data","row","column","input","ready","sync","startedAt","endedAt","runTimeInMinutes","humanizeDuration","capitalizeFirstLetter","convertToDisplayDate","formInputsRef","newConfiguration","saveForm","MODAL_CONFIRM","error","whenLoginEnabled","values","whenSyncAndLoginEnabled","whenAdminBindingAndLoginEnabled","state","_hoisted_1","_hoisted_2","_hoisted_3","isLDAPFeatureEnabled","_ctx","_openBlock","_createElementBlock","$style","_createElementVNode","_normalizeClass","_createVNode","_component_n8n_heading","$locale","_withCtx","_createTextVNode","_toDisplayString","_component_n8n_info_tip","formInputs","_createBlock","_component_n8n_form_inputs","onInput","onReadyToSubmit","onSubmit","_createCommentVNode","loginEnabled","_component_n8n_button","loadingTestConnection","onTestConnectionClick","hasAnyChanges","readyToSubmit","_hoisted_4","_withDirectives","_component_ElTable","dataTable","_component_InfiniteLoading","getLdapSynchronizations","_hoisted_5","onDryRunClick","onLiveRunClick","_component_n8n_action_box","goToUpgrade"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsLdapView-BCqjlrE9.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\" tooltip-placement=\"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:button-text=\"$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:event-bus=\"formBus\"\n\t\t\t\t\t:column-view=\"true\"\n\t\t\t\t\tvertical-spacing=\"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<ElTable\n\t\t\t\t\t:key=\"tableKey\"\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\tmax-height=\"250\"\n\t\t\t\t>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\n\t\t\t\t\t<ElTableColumn\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</ElTableColumn>\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<InfiniteLoading target=\".el-table__body-wrapper\" @infinite=\"getLdapSynchronizations\">\n\t\t\t\t\t\t</InfiniteLoading>\n\t\t\t\t\t</template>\n\t\t\t\t</ElTable>\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 type { CSSProperties } from 'vue';\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 type { Events } from 'v3-infinite-loading';\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 { TableColumnCtx } from 'element-plus';\n\ntype TableRow = {\n\tstatus: string;\n\tstartAt: string;\n\tendedAt: string;\n\terror: string;\n\trunMode: string;\n};\n\ntype LDAPConfigForm = {\n\tloginEnabled: boolean;\n\tloginLabel: string;\n\tserverAddress: string;\n\tallowUnauthorizedCerts: boolean;\n\tport: number;\n\tconnectionSecurity: string;\n\tbaseDn: string;\n\tbindingType: 'admin' | 'anonymous';\n\tadminDn: string;\n\tadminPassword: string;\n\temail: string;\n\tfirstName: string;\n\tlastName: string;\n\tloginId: string;\n\tldapId: string;\n\tuserFilter: string;\n\tsynchronizationEnabled: boolean;\n\tsynchronizationInterval: string;\n\tpageSize: string;\n\tsearchTimeout: string;\n};\n\ntype CellClassStyleMethodParams<T> = {\n\tdata: {\n\t\trow: T;\n\t\trowIndex: number;\n\t\tcolumn: TableColumnCtx<T>;\n\t\tcolumnIndex: number;\n\t};\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\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\tasync mounted() {\n\t\tif (!this.isLDAPFeatureEnabled) return;\n\t\tawait this.getLdapConfig();\n\t},\n\tmethods: {\n\t\tgoToUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('ldap', 'upgrade-ldap');\n\t\t},\n\t\tcellClassStyle({ data }: CellClassStyleMethodParams<TableRow>): CSSProperties {\n\t\t\tconst { row, column } = data;\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 { values: LDAPConfigForm };\n\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: Parameters<Events['infinite']>[0]) {\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","data","row","column","input","ready","sync","startedAt","endedAt","runTimeInMinutes","humanizeDuration","capitalizeFirstLetter","convertToDisplayDate","formInputsRef","newConfiguration","saveForm","MODAL_CONFIRM","error","whenLoginEnabled","values","whenSyncAndLoginEnabled","whenAdminBindingAndLoginEnabled","state","_hoisted_1","_hoisted_2","_hoisted_3","isLDAPFeatureEnabled","_ctx","_openBlock","_createElementBlock","$style","_createElementVNode","_normalizeClass","_createVNode","_component_n8n_heading","$locale","_withCtx","_createTextVNode","_toDisplayString","_component_n8n_info_tip","formInputs","_createBlock","_component_n8n_form_inputs","onInput","onReadyToSubmit","onSubmit","_createCommentVNode","loginEnabled","_component_n8n_button","loadingTestConnection","onTestConnectionClick","hasAnyChanges","readyToSubmit","_hoisted_4","_withDirectives","_component_ElTable","dataTable","_component_InfiniteLoading","getLdapSynchronizations","_hoisted_5","onDryRunClick","onLiveRunClick","_component_n8n_action_box","goToUpgrade"],"mappings":"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"}