n8n-editor-ui 1.62.0 → 1.63.0

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 (127) hide show
  1. package/dist/assets/@jsplumb/{browser-ui-BphmFVJY.js → browser-ui-D3WTv2iL.js} +41 -76
  2. package/dist/assets/@jsplumb/{common-s1StEx7B.js → common-Cn2WooAp.js} +3 -6
  3. package/dist/assets/@jsplumb/{connector-bezier-D659hq4c.js → connector-bezier-BsoOTqok.js} +16 -29
  4. package/dist/assets/@jsplumb/{core-B__RSZHf.js → core-DLCSr9D4.js} +33 -57
  5. package/dist/assets/@jsplumb/{util-BwtpiQ4c.js → util-DggqnqQo.js} +12 -24
  6. package/dist/assets/@lezer/{common-CnY9etib.js → common-Bs5t-XhT.js} +93 -97
  7. package/dist/assets/@n8n/api-types-Clq_Leox.js +1 -0
  8. package/dist/assets/@n8n/{codemirror-lang-CIGGB1t0.js → codemirror-lang-Bizw8G99.js} +168 -196
  9. package/dist/assets/@n8n/{codemirror-lang-sql-Bygy_eOg.js → codemirror-lang-sql-C9sfSTUi.js} +61 -65
  10. package/dist/assets/@sentry/{vue-UFuYeDxK.js → vue-By9cUXYj.js} +217 -261
  11. package/dist/assets/@vue-flow/{background-VFdKMN89.js → background-B1J8rodd.js} +2 -2
  12. package/dist/assets/@vue-flow/{controls-ByUYVWad.js → controls-B4bXJQnK.js} +2 -2
  13. package/dist/assets/@vue-flow/{core-DgOSPOHv.js → core-tETEFGtP.js} +3116 -3001
  14. package/dist/assets/@vue-flow/{minimap-CXuyA5pl.js → minimap-CGW7BbeH.js} +13 -7
  15. package/dist/assets/@vue-flow/{node-resizer-BiyXe9J3.js → node-resizer-C7hxX6Ea.js} +2 -2
  16. package/dist/assets/@vueuse/{core-A8AAAljH.js → core-BTO0AmLR.js} +5 -8
  17. package/dist/assets/{AnnotationTagsDropdown.ee-mUu5T0tU.js → AnnotationTagsDropdown.ee-c1s6_1ml.js} +4 -5
  18. package/dist/assets/{AuthView-cCH1ZFxz.js → AuthView-DM3fg-uZ.js} +4 -4
  19. package/dist/assets/{CanvasControls-Dzk7BXvt.js → CanvasControls-BZsnpR-P.js} +27 -27
  20. package/dist/assets/{ChangePasswordView-C-hzAV5J.js → ChangePasswordView-BOX9wOkY.js} +30 -32
  21. package/dist/assets/{CredentialsView-Bi4lOx9G.js → CredentialsView-BfctUnEE.js} +217 -212
  22. package/dist/assets/{ErrorView-CL_B0_IM.js → ErrorView-CmGFwk2i.js} +27 -27
  23. package/dist/assets/{ExecutionsFilter-Bmf8tmri.js → ExecutionsFilter-ClKCOgil.js} +4 -4
  24. package/dist/assets/{ExecutionsView-BhkQu2ph.js → ExecutionsView-CXoBpkr1.js} +30 -30
  25. package/dist/assets/{FixedCollectionParameter-CtjVOOBw.js → FixedCollectionParameter-m6vT-d6U.js} +27 -27
  26. package/dist/assets/{ForgotMyPasswordView-lCgL2d4C.js → ForgotMyPasswordView-CPctWsln.js} +28 -28
  27. package/dist/assets/{MainHeader-xZeUKO3O.js → MainHeader-DpZ1_HJp.js} +45 -52
  28. package/dist/assets/{MainHeader-PNFUlNPa.css → MainHeader-m131IPYi.css} +9 -9
  29. package/dist/assets/{MainSidebar-nNVDMzvW.js → MainSidebar-BgMIQ9GG.js} +28 -28
  30. package/dist/assets/{NodeCreation-CUrrlBgR.js → NodeCreation-Dmhfjt0Z.js} +14 -21
  31. package/dist/assets/{NodeCreator-DHaVpCdb.js → NodeCreator-DvXH1Kxq.js} +70 -95
  32. package/dist/assets/{NodeViewSwitcher-DZNvWE_C.css → NodeViewSwitcher-BMWd0Gm9.css} +166 -128
  33. package/dist/assets/{NodeViewSwitcher-vGEVZgHJ.js → NodeViewSwitcher-CinMnxE6.js} +657 -633
  34. package/dist/assets/{ProjectCardBadge-38h9YkEV.js → ProjectCardBadge-B5sNmxJw.js} +2 -2
  35. package/dist/assets/{ProjectSettings-Ba7NDCJu.js → ProjectSettings-DaJRjK2L.js} +29 -30
  36. package/dist/assets/{ProjectTabs-CcHROgCr.js → ProjectTabs-BFoImsk7.js} +3 -3
  37. package/dist/assets/{PushConnectionTracker-Cswc3AVS.js → PushConnectionTracker-BkaXfrU7.js} +4 -4
  38. package/dist/assets/{ResourcesListLayout-DchHS6X4.js → ResourcesListLayout-DHM3u-kO.js} +4 -4
  39. package/dist/assets/{RunDataAi-BASZn4vn.js → RunDataAi-DEKDhaOo.js} +11 -18
  40. package/dist/assets/{RunDataJson-Dc-zyTVL.js → RunDataJson--CgJB7Jk.js} +30 -30
  41. package/dist/assets/{RunDataJsonActions-By8uYyXg.js → RunDataJsonActions-CS-LkHBr.js} +28 -28
  42. package/dist/assets/{RunDataSearch-DKdf85VL.js → RunDataSearch-CdIlaJ49.js} +27 -27
  43. package/dist/assets/{RunDataTable-Cn6nzmGa.js → RunDataTable-BaqMokFl.js} +27 -27
  44. package/dist/assets/{SamlOnboarding-Dfhrttxd.js → SamlOnboarding-ELcbPJ9B.js} +29 -30
  45. package/dist/assets/{SettingsApiView-BbRTrXcD.js → SettingsApiView-CXwvsUoX.js} +29 -31
  46. package/dist/assets/{SettingsCommunityNodesView-BfDdkK-x.js → SettingsCommunityNodesView-BM40NtvG.js} +31 -33
  47. package/dist/assets/{SettingsExternalSecrets-Bl-wlBde.js → SettingsExternalSecrets-BnbTOMJG.js} +28 -29
  48. package/dist/assets/{SettingsFakeDoorView-QqE3QukO.js → SettingsFakeDoorView-BoA9Kqh_.js} +27 -27
  49. package/dist/assets/{SettingsLdapView-BE8xSeHz.js → SettingsLdapView-9chGyutG.js} +31 -33
  50. package/dist/assets/{SettingsLogStreamingView-BPJCiQ1I.js → SettingsLogStreamingView-BSsUL2og.js} +31 -35
  51. package/dist/assets/{SettingsPersonalView-DSvT3Zu1.js → SettingsPersonalView-2XgZR1ZL.js} +27 -27
  52. package/dist/assets/{SettingsSourceControl-DUJaw-Xf.js → SettingsSourceControl-BgKQxMlN.js} +28 -29
  53. package/dist/assets/{SettingsSso-8NreTxhm.js → SettingsSso-cID_6cjA.js} +27 -27
  54. package/dist/assets/{SettingsUsageAndPlan-DDB0UVxU.css → SettingsUsageAndPlan-B72odhIc.css} +30 -16
  55. package/dist/assets/{SettingsUsageAndPlan-CDh5zcRw.js → SettingsUsageAndPlan-Bvu_wsFm.js} +110 -152
  56. package/dist/assets/{SettingsUsersView-DQ-DCRZ1.js → SettingsUsersView-Bn80qMWT.js} +27 -27
  57. package/dist/assets/{SettingsView-_vMUadDF.js → SettingsView-BrIPYcEj.js} +28 -28
  58. package/dist/assets/{SetupView-Df7KdxaQ.js → SetupView-HTuQjpZp.js} +28 -28
  59. package/dist/assets/{SetupWorkflowCredentialsButton-DQQqU73T.js → SetupWorkflowCredentialsButton-C3CEondE.js} +27 -27
  60. package/dist/assets/{SetupWorkflowFromTemplateView-CamrTW9w.js → SetupWorkflowFromTemplateView-B0BngWKW.js} +29 -29
  61. package/dist/assets/{SigninView-Bk-N1gPe.js → SigninView-DZgEz73_.js} +29 -30
  62. package/dist/assets/SignoutView-CDLvIUvc.js +57 -0
  63. package/dist/assets/{SignupView-BLXUTU5v.js → SignupView-Cg7az6VN.js} +28 -28
  64. package/dist/assets/{TemplateDetails-DvcKd566.js → TemplateDetails-B_ESLx0M.js} +4 -4
  65. package/dist/assets/{TemplateList-BmQV74po.js → TemplateList-CW4e8mt1.js} +3 -3
  66. package/dist/assets/{TemplatesCollectionView-C3-PQCQu.js → TemplatesCollectionView-D7Vqcq9c.js} +31 -31
  67. package/dist/assets/{TemplatesSearchView-cuS8bvak.js → TemplatesSearchView-C96qFt9M.js} +30 -30
  68. package/dist/assets/{TemplatesView-ClNtJ2ov.js → TemplatesView-CdKHOSQn.js} +3 -3
  69. package/dist/assets/{TemplatesWorkflowView-CzrIrhUD.js → TemplatesWorkflowView-IBdLRKjM.js} +31 -31
  70. package/dist/assets/{VariablesView-CCnuUdXB.js → VariablesView-DGeKYvRy.js} +29 -30
  71. package/dist/assets/{WorkerView-DyoF7ooc.js → WorkerView-DpU5rxqv.js} +33 -35
  72. package/dist/assets/{WorkflowActivator-RvLc-qAh.js → WorkflowActivator-DivXM6DQ.js} +4 -4
  73. package/dist/assets/{WorkflowExecutionsInfoAccordion-Bg0qCmnO.js → WorkflowExecutionsInfoAccordion-DjeQdz8i.js} +3 -3
  74. package/dist/assets/{WorkflowExecutionsLandingPage-gbIC1-W0.js → WorkflowExecutionsLandingPage-CS5M1O2I.js} +28 -28
  75. package/dist/assets/{WorkflowExecutionsPreview-K6TfT99N.js → WorkflowExecutionsPreview-CYfunkNH.js} +31 -31
  76. package/dist/assets/{WorkflowExecutionsView-B153CRdQ.js → WorkflowExecutionsView-BPn3-0Z8.js} +33 -35
  77. package/dist/assets/{WorkflowHistory-BDoz9lQx.js → WorkflowHistory-DPzO-d3v.js} +30 -31
  78. package/dist/assets/{WorkflowOnboardingView-BxjLFVFS.js → WorkflowOnboardingView-CXCNCb3T.js} +27 -27
  79. package/dist/assets/{WorkflowPreview-CzGXadkf.js → WorkflowPreview-jN_lhBHw.js} +3 -3
  80. package/dist/assets/WorkflowsView-DZQ572rS.js +791 -0
  81. package/dist/assets/{axios-B4zXCSve.js → axios-BW6T4tHC.js} +12 -24
  82. package/dist/assets/{bowser-C3wWO1p5.js → bowser-CDCHPFWD.js} +16 -32
  83. package/dist/assets/change-case-Dux1iW35.js +137 -0
  84. package/dist/assets/{chart.js-DiBOFLDH.js → chart.js-BYpPl_l4.js} +1 -4
  85. package/dist/assets/{cloud-B1p-KZWU.js → cloud-bUMc8Agc.js} +27 -27
  86. package/dist/assets/{codemirror-lang-html-n8n-COz1fWJn.js → codemirror-lang-html-n8n-BElKE4vf.js} +50 -92
  87. package/dist/assets/{dateFormatter-vLfenR8L.js → dateFormatter-B-oph3V5.js} +1 -1
  88. package/dist/assets/{dateformat-BGl-JyZv.js → dateformat-BevCJF2z.js} +1 -1
  89. package/dist/assets/email-providers-Brdpqw-Z.js +1 -0
  90. package/dist/assets/{fast-json-stable-stringify-U-rSQs8f.js → fast-json-stable-stringify-D9R5x91P.js} +11 -21
  91. package/dist/assets/{file-saver-kjhT_TS0.js → file-saver-Dbfm4l4I.js} +6 -11
  92. package/dist/assets/{flatted-D70IerrI.js → flatted-BLlNkUR-.js} +1 -2
  93. package/dist/assets/highlight.js-Brdpqw-Z.js +1 -0
  94. package/dist/assets/{humanize-duration-Ctua_P33.js → humanize-duration-DdvB4QXM.js} +1 -1
  95. package/dist/assets/{index-DLT0DWwS.css → index-B5Pl_Rdy.css} +97 -21
  96. package/dist/assets/{index-Cpj7dgjR.js → index-CPY4xf2i.js} +4539 -5975
  97. package/dist/assets/{jsonpath-B3CL4C9V.js → jsonpath--XXuA3UN.js} +92 -183
  98. package/dist/assets/{lodash-es-kRWQHL5K.js → lodash-es-DCRmYdQ5.js} +2 -1
  99. package/dist/assets/{luxon-Bt_g4NOb.js → luxon-N8mghSWH.js} +68 -136
  100. package/dist/assets/{n8n-2AIRllP4.css → n8n-C6KBCWah.css} +69 -27
  101. package/dist/assets/{n8n-DKG-k8tQ.js → n8n-o-6nV4eX.js} +2364 -3490
  102. package/dist/assets/{pinia-CH9HlKCh.js → pinia-BWzoPyXU.js} +1 -1
  103. package/dist/assets/{prettier-DuWRKCwA.js → prettier-eWLVZldr.js} +332 -576
  104. package/dist/assets/{pushConnection.store-CWlxAgml.js → pushConnection.store-DSDmSF0s.js} +4 -5
  105. package/dist/assets/{qrcode.vue-BxNS_c3b.js → qrcode.vue-BavVPFUM.js} +9 -18
  106. package/dist/assets/{templateActions-Db-OKiDw.js → templateActions-B7oHjFje.js} +1 -1
  107. package/dist/assets/{useBeforeUnload-D7668b41.js → useBeforeUnload-QdvdNyCn.js} +2 -2
  108. package/dist/assets/{useExecutionDebugging-qJjrenaZ.js → useExecutionDebugging-DTgWI86M.js} +2 -2
  109. package/dist/assets/{usePushConnection-DZy6DvZv.js → usePushConnection-DNuBIs4x.js} +7 -19
  110. package/dist/assets/{useUserHelpers-BvVDIqe5.js → useUserHelpers-BQpOEdTK.js} +1 -1
  111. package/dist/assets/{useWorkflowActivate-DHaWjPqY.js → useWorkflowActivate-ImhuE4H6.js} +2 -2
  112. package/dist/assets/{uuid-BoySKAeK.js → uuid-DRDfXVM2.js} +2 -4
  113. package/dist/assets/{v3-infinite-loading-lAZO0HDs.js → v3-infinite-loading-CHlSsXAy.js} +1 -1
  114. package/dist/assets/{vendor-DCeaNtb_.js → vendor-D8YCjNHu.js} +18 -17
  115. package/dist/assets/{vue-agile-CSC3AwtI.js → vue-agile-Busf3nxn.js} +3 -3
  116. package/dist/assets/{vue-chartjs-CAJPqBur.js → vue-chartjs-DBNEiLG-.js} +3 -4
  117. package/dist/assets/{vue-i18n-CVQE9o3c.js → vue-i18n-CeifA_Nk.js} +2 -3
  118. package/dist/assets/{vue-json-pretty-D1Elveao.js → vue-json-pretty-DHS8nWi_.js} +21 -40
  119. package/dist/assets/xss-Brdpqw-Z.js +1 -0
  120. package/dist/index.html +29 -29
  121. package/package.json +1 -1
  122. package/dist/assets/@n8n/api-types-CxHrH5Ag.js +0 -1
  123. package/dist/assets/SignoutView-ChwcohBv.js +0 -57
  124. package/dist/assets/WorkflowsView-CwxMKB51.js +0 -846
  125. package/dist/assets/email-providers-DKCy3_XM.js +0 -1
  126. package/dist/assets/highlight.js-DKCy3_XM.js +0 -1
  127. package/dist/assets/xss-DKCy3_XM.js +0 -1
@@ -0,0 +1,791 @@
1
+ import { I as defineComponent, aM as useRouter, f as computed, an as resolveComponent, J as openBlock, V as createBlock, a3 as withCtx, a8 as createVNode, a6 as createTextVNode, a7 as toDisplayString, u as unref, U as createCommentVNode, _ as normalizeClass, L as createBaseVNode, ac as withModifiers, a4 as withDirectives, a9 as vShow, K as createElementBlock, aE as useRoute, r as ref, b as watch, q as onMounted, af as renderList, R as Fragment } from "./vendor-D8YCjNHu.js";
2
+ import { R as ResourcesListLayout } from "./ResourcesListLayout-DHM3u-kO.js";
3
+ import { a as useToast, c as useSettingsStore, f as useUIStore, u as useUsersStore, k as useWorkflowsStore, o as useProjectsStore, t as getResourcePermissions, em as ResourceType, dQ as _sfc_main$3, z as useMessage, b as useI18n, y as useTelemetry, V as VIEWS, A as WORKFLOW_SHARE_MODAL_KEY, J as DUPLICATE_MODAL_KEY, D as MODAL_CONFIRM, en as PROJECT_MOVE_RESOURCE_MODAL, n as useSourceControlStore, d0 as usePostHog, $ as useTemplatesStore, d as useTagsStore, q as useDocumentTitle, E as EnterpriseEditionFeature, dL as MORE_ONBOARDING_OPTIONS_EXPERIMENT, _ as _sfc_main$4 } from "./index-CPY4xf2i.js";
4
+ import { d as dateformat } from "./dateformat-BevCJF2z.js";
5
+ import { W as WorkflowActivator } from "./WorkflowActivator-DivXM6DQ.js";
6
+ import { _ as _sfc_main$2 } from "./ProjectCardBadge-B5sNmxJw.js";
7
+ import { _ as _export_sfc, $ as N8nButton, Z as N8nTooltip, av as N8nHeading, a3 as N8nText, aW as N8nIcon, aX as N8nCard, a0 as N8nInputLabel, a2 as _sfc_main$5, a1 as N8nSelect } from "./n8n-o-6nV4eX.js";
8
+ import { P as ProjectTabs } from "./ProjectTabs-BFoImsk7.js";
9
+ import { G as pickBy } from "./lodash-es-DCRmYdQ5.js";
10
+ import "./pinia-BWzoPyXU.js";
11
+ import "./@sentry/vue-By9cUXYj.js";
12
+ import "./axios-BW6T4tHC.js";
13
+ import "./flatted-BLlNkUR-.js";
14
+ import "./bowser-CDCHPFWD.js";
15
+ import "./@vueuse/core-BTO0AmLR.js";
16
+ import "./uuid-DRDfXVM2.js";
17
+ import "./vue-i18n-CeifA_Nk.js";
18
+ import "./@n8n/permissions-BxSXRD9U.js";
19
+ import "./luxon-N8mghSWH.js";
20
+ import "./@jsplumb/util-DggqnqQo.js";
21
+ import "./@jsplumb/core-DLCSr9D4.js";
22
+ import "./@jsplumb/common-Cn2WooAp.js";
23
+ import "./@jsplumb/connector-bezier-BsoOTqok.js";
24
+ import "./@jsplumb/browser-ui-D3WTv2iL.js";
25
+ import "./@n8n/codemirror-lang-Bizw8G99.js";
26
+ import "./@lezer/common-Bs5t-XhT.js";
27
+ import "./@n8n/codemirror-lang-sql-C9sfSTUi.js";
28
+ import "./prettier-eWLVZldr.js";
29
+ import "./codemirror-lang-html-n8n-BElKE4vf.js";
30
+ import "./esprima-next-DUEu30kB.js";
31
+ import "./fast-json-stable-stringify-D9R5x91P.js";
32
+ import "./timeago.js-CgQus8nl.js";
33
+ import "./qrcode.vue-BavVPFUM.js";
34
+ import "./vue3-touch-events-DVOgU3fI.js";
35
+ import "./chart.js-BYpPl_l4.js";
36
+ import "./useWorkflowActivate-ImhuE4H6.js";
37
+ const _hoisted_1$1 = { key: 0 };
38
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
39
+ __name: "WorkflowCard",
40
+ props: {
41
+ data: { default: () => ({
42
+ id: "",
43
+ createdAt: "",
44
+ updatedAt: "",
45
+ active: false,
46
+ connections: {},
47
+ nodes: [],
48
+ name: "",
49
+ sharedWithProjects: [],
50
+ homeProject: {},
51
+ versionId: ""
52
+ }) },
53
+ readOnly: { type: Boolean, default: false }
54
+ },
55
+ emits: ["expand:tags", "click:tag"],
56
+ setup(__props, { emit: __emit }) {
57
+ const WORKFLOW_LIST_ITEM_ACTIONS = {
58
+ OPEN: "open",
59
+ SHARE: "share",
60
+ DUPLICATE: "duplicate",
61
+ DELETE: "delete",
62
+ MOVE: "move"
63
+ };
64
+ const props = __props;
65
+ const emit = __emit;
66
+ const toast = useToast();
67
+ const message = useMessage();
68
+ const locale = useI18n();
69
+ const router = useRouter();
70
+ const telemetry = useTelemetry();
71
+ const settingsStore = useSettingsStore();
72
+ const uiStore = useUIStore();
73
+ const usersStore = useUsersStore();
74
+ const workflowsStore = useWorkflowsStore();
75
+ const projectsStore = useProjectsStore();
76
+ const resourceTypeLabel = computed(() => locale.baseText("generic.workflow").toLowerCase());
77
+ const currentUser = computed(() => usersStore.currentUser ?? {});
78
+ const workflowPermissions = computed(() => getResourcePermissions(props.data.scopes).workflow);
79
+ const actions = computed(() => {
80
+ const items = [
81
+ {
82
+ label: locale.baseText("workflows.item.open"),
83
+ value: WORKFLOW_LIST_ITEM_ACTIONS.OPEN
84
+ },
85
+ {
86
+ label: locale.baseText("workflows.item.share"),
87
+ value: WORKFLOW_LIST_ITEM_ACTIONS.SHARE
88
+ }
89
+ ];
90
+ if (workflowPermissions.value.create && !props.readOnly) {
91
+ items.push({
92
+ label: locale.baseText("workflows.item.duplicate"),
93
+ value: WORKFLOW_LIST_ITEM_ACTIONS.DUPLICATE
94
+ });
95
+ }
96
+ if (workflowPermissions.value.move && projectsStore.isTeamProjectFeatureEnabled) {
97
+ items.push({
98
+ label: locale.baseText("workflows.item.move"),
99
+ value: WORKFLOW_LIST_ITEM_ACTIONS.MOVE
100
+ });
101
+ }
102
+ if (workflowPermissions.value.delete && !props.readOnly) {
103
+ items.push({
104
+ label: locale.baseText("workflows.item.delete"),
105
+ value: WORKFLOW_LIST_ITEM_ACTIONS.DELETE
106
+ });
107
+ }
108
+ return items;
109
+ });
110
+ const formattedCreatedAtDate = computed(() => {
111
+ const currentYear = (/* @__PURE__ */ new Date()).getFullYear().toString();
112
+ return dateformat(
113
+ props.data.createdAt,
114
+ `d mmmm${String(props.data.createdAt).startsWith(currentYear) ? "" : ", yyyy"}`
115
+ );
116
+ });
117
+ async function onClick(event) {
118
+ if ((event == null ? void 0 : event.ctrlKey) || (event == null ? void 0 : event.metaKey)) {
119
+ const route = router.resolve({
120
+ name: VIEWS.WORKFLOW,
121
+ params: { name: props.data.id }
122
+ });
123
+ window.open(route.href, "_blank");
124
+ return;
125
+ }
126
+ await router.push({
127
+ name: VIEWS.WORKFLOW,
128
+ params: { name: props.data.id }
129
+ });
130
+ }
131
+ function onClickTag(tagId, event) {
132
+ event.stopPropagation();
133
+ emit("click:tag", tagId, event);
134
+ }
135
+ function onExpandTags() {
136
+ emit("expand:tags");
137
+ }
138
+ async function onAction(action) {
139
+ switch (action) {
140
+ case WORKFLOW_LIST_ITEM_ACTIONS.OPEN:
141
+ await onClick();
142
+ break;
143
+ case WORKFLOW_LIST_ITEM_ACTIONS.DUPLICATE:
144
+ uiStore.openModalWithData({
145
+ name: DUPLICATE_MODAL_KEY,
146
+ data: {
147
+ id: props.data.id,
148
+ name: props.data.name,
149
+ tags: (props.data.tags ?? []).map(
150
+ (tag) => typeof tag !== "string" && "id" in tag ? tag.id : tag
151
+ )
152
+ }
153
+ });
154
+ break;
155
+ case WORKFLOW_LIST_ITEM_ACTIONS.SHARE:
156
+ uiStore.openModalWithData({
157
+ name: WORKFLOW_SHARE_MODAL_KEY,
158
+ data: { id: props.data.id }
159
+ });
160
+ telemetry.track("User opened sharing modal", {
161
+ workflow_id: props.data.id,
162
+ user_id_sharer: currentUser.value.id,
163
+ sub_view: "Workflows listing"
164
+ });
165
+ break;
166
+ case WORKFLOW_LIST_ITEM_ACTIONS.DELETE:
167
+ await deleteWorkflow();
168
+ break;
169
+ case WORKFLOW_LIST_ITEM_ACTIONS.MOVE:
170
+ moveResource();
171
+ break;
172
+ }
173
+ }
174
+ async function deleteWorkflow() {
175
+ const deleteConfirmed = await message.confirm(
176
+ locale.baseText("mainSidebar.confirmMessage.workflowDelete.message", {
177
+ interpolate: { workflowName: props.data.name }
178
+ }),
179
+ locale.baseText("mainSidebar.confirmMessage.workflowDelete.headline"),
180
+ {
181
+ type: "warning",
182
+ confirmButtonText: locale.baseText(
183
+ "mainSidebar.confirmMessage.workflowDelete.confirmButtonText"
184
+ ),
185
+ cancelButtonText: locale.baseText(
186
+ "mainSidebar.confirmMessage.workflowDelete.cancelButtonText"
187
+ )
188
+ }
189
+ );
190
+ if (deleteConfirmed !== MODAL_CONFIRM) {
191
+ return;
192
+ }
193
+ try {
194
+ await workflowsStore.deleteWorkflow(props.data.id);
195
+ } catch (error) {
196
+ toast.showError(error, locale.baseText("generic.deleteWorkflowError"));
197
+ return;
198
+ }
199
+ toast.showMessage({
200
+ title: locale.baseText("mainSidebar.showMessage.handleSelect1.title"),
201
+ type: "success"
202
+ });
203
+ }
204
+ function moveResource() {
205
+ uiStore.openModalWithData({
206
+ name: PROJECT_MOVE_RESOURCE_MODAL,
207
+ data: {
208
+ resource: props.data,
209
+ resourceType: ResourceType.Workflow,
210
+ resourceTypeLabel: resourceTypeLabel.value
211
+ }
212
+ });
213
+ }
214
+ return (_ctx, _cache) => {
215
+ const _component_N8nBadge = resolveComponent("N8nBadge");
216
+ const _component_n8n_heading = resolveComponent("n8n-heading");
217
+ const _component_n8n_tags = resolveComponent("n8n-tags");
218
+ const _component_n8n_text = resolveComponent("n8n-text");
219
+ const _component_n8n_action_toggle = resolveComponent("n8n-action-toggle");
220
+ const _component_n8n_card = resolveComponent("n8n-card");
221
+ return openBlock(), createBlock(_component_n8n_card, {
222
+ class: normalizeClass(_ctx.$style.cardLink),
223
+ onClick
224
+ }, {
225
+ header: withCtx(() => [
226
+ createVNode(_component_n8n_heading, {
227
+ tag: "h2",
228
+ bold: "",
229
+ class: normalizeClass(_ctx.$style.cardHeading),
230
+ "data-test-id": "workflow-card-name"
231
+ }, {
232
+ default: withCtx(() => [
233
+ createTextVNode(toDisplayString(_ctx.data.name) + " ", 1),
234
+ !workflowPermissions.value.update ? (openBlock(), createBlock(_component_N8nBadge, {
235
+ key: 0,
236
+ class: "ml-3xs",
237
+ theme: "tertiary",
238
+ bold: ""
239
+ }, {
240
+ default: withCtx(() => [
241
+ createTextVNode(toDisplayString(unref(locale).baseText("workflows.item.readonly")), 1)
242
+ ]),
243
+ _: 1
244
+ })) : createCommentVNode("", true)
245
+ ]),
246
+ _: 1
247
+ }, 8, ["class"])
248
+ ]),
249
+ append: withCtx(() => [
250
+ createBaseVNode("div", {
251
+ class: normalizeClass(_ctx.$style.cardActions),
252
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {
253
+ }, ["stop"]))
254
+ }, [
255
+ createVNode(_sfc_main$2, {
256
+ resource: _ctx.data,
257
+ "resource-type": unref(ResourceType).Workflow,
258
+ "resource-type-label": resourceTypeLabel.value,
259
+ "personal-project": unref(projectsStore).personalProject
260
+ }, null, 8, ["resource", "resource-type", "resource-type-label", "personal-project"]),
261
+ createVNode(WorkflowActivator, {
262
+ class: "mr-s",
263
+ "workflow-active": _ctx.data.active,
264
+ "workflow-id": _ctx.data.id,
265
+ "workflow-permissions": workflowPermissions.value,
266
+ "data-test-id": "workflow-card-activator"
267
+ }, null, 8, ["workflow-active", "workflow-id", "workflow-permissions"]),
268
+ createVNode(_component_n8n_action_toggle, {
269
+ actions: actions.value,
270
+ theme: "dark",
271
+ "data-test-id": "workflow-card-actions",
272
+ onAction
273
+ }, null, 8, ["actions"])
274
+ ], 2)
275
+ ]),
276
+ default: withCtx(() => [
277
+ createBaseVNode("div", {
278
+ class: normalizeClass(_ctx.$style.cardDescription)
279
+ }, [
280
+ createVNode(_component_n8n_text, {
281
+ color: "text-light",
282
+ size: "small"
283
+ }, {
284
+ default: withCtx(() => [
285
+ withDirectives(createBaseVNode("span", null, [
286
+ createTextVNode(toDisplayString(unref(locale).baseText("workflows.item.updated")) + " ", 1),
287
+ createVNode(_sfc_main$3, {
288
+ date: String(_ctx.data.updatedAt)
289
+ }, null, 8, ["date"]),
290
+ createTextVNode(" | ")
291
+ ], 512), [
292
+ [vShow, _ctx.data]
293
+ ]),
294
+ withDirectives(createBaseVNode("span", { class: "mr-2xs" }, toDisplayString(unref(locale).baseText("workflows.item.created")) + " " + toDisplayString(formattedCreatedAtDate.value), 513), [
295
+ [vShow, _ctx.data]
296
+ ]),
297
+ unref(settingsStore).areTagsEnabled && _ctx.data.tags && _ctx.data.tags.length > 0 ? withDirectives((openBlock(), createElementBlock("span", _hoisted_1$1, [
298
+ createVNode(_component_n8n_tags, {
299
+ tags: _ctx.data.tags,
300
+ "truncate-at": 3,
301
+ truncate: "",
302
+ "data-test-id": "workflow-card-tags",
303
+ "onClick:tag": onClickTag,
304
+ onExpand: onExpandTags
305
+ }, null, 8, ["tags"])
306
+ ], 512)), [
307
+ [vShow, _ctx.data]
308
+ ]) : createCommentVNode("", true)
309
+ ]),
310
+ _: 1
311
+ })
312
+ ], 2)
313
+ ]),
314
+ _: 1
315
+ }, 8, ["class"]);
316
+ };
317
+ }
318
+ });
319
+ const cardLink = "_cardLink_1ahnz_1";
320
+ const cardHeading = "_cardHeading_1ahnz_11";
321
+ const cardDescription = "_cardDescription_1ahnz_20";
322
+ const cardActions = "_cardActions_1ahnz_27";
323
+ const style0$1 = {
324
+ cardLink,
325
+ cardHeading,
326
+ cardDescription,
327
+ cardActions
328
+ };
329
+ const cssModules$1 = {
330
+ "$style": style0$1
331
+ };
332
+ const WorkflowCard = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1]]);
333
+ const _hoisted_1 = {
334
+ target: "_blank",
335
+ href: "https://docs.n8n.io/source-control-environments/"
336
+ };
337
+ const _hoisted_2 = { class: "text-center mt-s" };
338
+ const _hoisted_3 = ["href"];
339
+ const _hoisted_4 = {
340
+ key: 0,
341
+ class: "mb-s"
342
+ };
343
+ const _hoisted_5 = { class: "mb-s" };
344
+ const _sfc_main = /* @__PURE__ */ defineComponent({
345
+ __name: "WorkflowsView",
346
+ setup(__props) {
347
+ const i18n = useI18n();
348
+ const route = useRoute();
349
+ const router = useRouter();
350
+ const sourceControlStore = useSourceControlStore();
351
+ const usersStore = useUsersStore();
352
+ const workflowsStore = useWorkflowsStore();
353
+ const settingsStore = useSettingsStore();
354
+ const posthogStore = usePostHog();
355
+ const projectsStore = useProjectsStore();
356
+ const templatesStore = useTemplatesStore();
357
+ const telemetry = useTelemetry();
358
+ const uiStore = useUIStore();
359
+ const tagsStore = useTagsStore();
360
+ const documentTitle = useDocumentTitle();
361
+ const StatusFilter = {
362
+ ACTIVE: true,
363
+ DEACTIVATED: false,
364
+ ALL: ""
365
+ };
366
+ const loading = ref(false);
367
+ const filters = ref({
368
+ search: "",
369
+ homeProject: "",
370
+ status: StatusFilter.ALL,
371
+ tags: []
372
+ });
373
+ const readOnlyEnv = computed(() => sourceControlStore.preferences.branchReadOnly);
374
+ const currentUser = computed(() => usersStore.currentUser ?? {});
375
+ const allWorkflows = computed(() => workflowsStore.allWorkflows);
376
+ const isShareable = computed(
377
+ () => settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.Sharing]
378
+ );
379
+ const statusFilterOptions = computed(() => [
380
+ {
381
+ label: i18n.baseText("workflows.filters.status.all"),
382
+ value: StatusFilter.ALL
383
+ },
384
+ {
385
+ label: i18n.baseText("workflows.filters.status.active"),
386
+ value: StatusFilter.ACTIVE
387
+ },
388
+ {
389
+ label: i18n.baseText("workflows.filters.status.deactivated"),
390
+ value: StatusFilter.DEACTIVATED
391
+ }
392
+ ]);
393
+ const userRole = computed(() => {
394
+ var _a, _b;
395
+ const role = (_a = usersStore.currentUserCloudInfo) == null ? void 0 : _a.role;
396
+ if (role) return role;
397
+ const answers = (_b = usersStore.currentUser) == null ? void 0 : _b.personalizationAnswers;
398
+ if (answers && "role" in answers) {
399
+ return answers.role;
400
+ }
401
+ return void 0;
402
+ });
403
+ const isOnboardingExperimentEnabled = computed(() => {
404
+ return posthogStore.getVariant(MORE_ONBOARDING_OPTIONS_EXPERIMENT.name) === MORE_ONBOARDING_OPTIONS_EXPERIMENT.variant;
405
+ });
406
+ const isSalesUser = computed(() => {
407
+ return ["Sales", "sales-and-marketing"].includes(userRole.value || "");
408
+ });
409
+ const addWorkflowButtonText = computed(() => {
410
+ return projectsStore.currentProject ? i18n.baseText("workflows.project.add") : i18n.baseText("workflows.add");
411
+ });
412
+ const projectPermissions = computed(() => {
413
+ var _a, _b;
414
+ return getResourcePermissions(
415
+ ((_a = projectsStore.currentProject) == null ? void 0 : _a.scopes) ?? ((_b = projectsStore.personalProject) == null ? void 0 : _b.scopes)
416
+ );
417
+ });
418
+ const emptyListDescription = computed(() => {
419
+ if (readOnlyEnv.value) {
420
+ return i18n.baseText("workflows.empty.description.readOnlyEnv");
421
+ } else if (!projectPermissions.value.workflow.create) {
422
+ return i18n.baseText("workflows.empty.description.noPermission");
423
+ } else {
424
+ return i18n.baseText("workflows.empty.description");
425
+ }
426
+ });
427
+ const onFilter = (resource, newFilters, matches) => {
428
+ if (settingsStore.areTagsEnabled && newFilters.tags.length > 0) {
429
+ matches = matches && newFilters.tags.every(
430
+ (tag) => {
431
+ var _a;
432
+ return (_a = resource.tags) == null ? void 0 : _a.find(
433
+ (resourceTag) => typeof resourceTag === "object" ? `${resourceTag.id}` === `${tag}` : `${resourceTag}` === `${tag}`
434
+ );
435
+ }
436
+ );
437
+ }
438
+ if (newFilters.status !== "") {
439
+ matches = matches && resource.active === newFilters.status;
440
+ }
441
+ return matches;
442
+ };
443
+ const onFiltersUpdated = (newFilters) => {
444
+ Object.assign(filters.value, newFilters);
445
+ };
446
+ const addWorkflow = () => {
447
+ var _a;
448
+ uiStore.nodeViewInitialized = false;
449
+ void router.push({
450
+ name: VIEWS.NEW_WORKFLOW,
451
+ query: { projectId: (_a = route.params) == null ? void 0 : _a.projectId }
452
+ });
453
+ telemetry.track("User clicked add workflow button", {
454
+ source: "Workflows list"
455
+ });
456
+ trackEmptyCardClick("blank");
457
+ };
458
+ const getTemplateRepositoryURL = () => templatesStore.websiteTemplateRepositoryURL;
459
+ const trackEmptyCardClick = (option) => {
460
+ telemetry.track("User clicked empty page option", {
461
+ option
462
+ });
463
+ if (option === "templates" && isSalesUser.value) {
464
+ trackCategoryLinkClick("Sales");
465
+ }
466
+ };
467
+ const trackCategoryLinkClick = (category) => {
468
+ var _a;
469
+ telemetry.track(`User clicked Browse ${category} Templates`, {
470
+ role: (_a = usersStore.currentUserCloudInfo) == null ? void 0 : _a.role,
471
+ active_workflow_count: workflowsStore.activeWorkflows.length
472
+ });
473
+ };
474
+ const initialize = async () => {
475
+ var _a;
476
+ loading.value = true;
477
+ await Promise.all([
478
+ usersStore.fetchUsers(),
479
+ workflowsStore.fetchAllWorkflows((_a = route.params) == null ? void 0 : _a.projectId),
480
+ workflowsStore.fetchActiveWorkflows()
481
+ ]);
482
+ loading.value = false;
483
+ };
484
+ const onClickTag = (tagId) => {
485
+ if (!filters.value.tags.includes(tagId)) {
486
+ filters.value.tags.push(tagId);
487
+ }
488
+ };
489
+ const saveFiltersOnQueryString = () => {
490
+ const query = {};
491
+ if (filters.value.search) {
492
+ query.search = filters.value.search;
493
+ }
494
+ if (typeof filters.value.status !== "string") {
495
+ query.status = filters.value.status.toString();
496
+ }
497
+ if (filters.value.tags.length) {
498
+ query.tags = filters.value.tags.join(",");
499
+ }
500
+ if (filters.value.homeProject) {
501
+ query.homeProject = filters.value.homeProject;
502
+ }
503
+ void router.replace({
504
+ query: Object.keys(query).length ? query : void 0
505
+ });
506
+ };
507
+ function isValidProjectId(projectId) {
508
+ return projectsStore.availableProjects.some((project) => project.id === projectId);
509
+ }
510
+ const setFiltersFromQueryString = async () => {
511
+ const { tags, status, search, homeProject } = route.query ?? {};
512
+ const filtersToApply = {};
513
+ if (homeProject && typeof homeProject === "string") {
514
+ await projectsStore.getAvailableProjects();
515
+ if (isValidProjectId(homeProject)) {
516
+ filtersToApply.homeProject = homeProject;
517
+ }
518
+ }
519
+ if (search && typeof search === "string") {
520
+ filtersToApply.search = search;
521
+ }
522
+ if (tags && typeof tags === "string") {
523
+ await tagsStore.fetchAll();
524
+ const currentTags = tagsStore.allTags.map((tag) => tag.id);
525
+ filtersToApply.tags = tags.split(",").filter((tag) => currentTags.includes(tag));
526
+ }
527
+ if (status && typeof status === "string" && [StatusFilter.ACTIVE.toString(), StatusFilter.DEACTIVATED.toString()].includes(status)) {
528
+ filtersToApply.status = status === "true";
529
+ }
530
+ if (Object.keys(filtersToApply).length) {
531
+ Object.assign(filters.value, filtersToApply);
532
+ }
533
+ void router.replace({ query: pickBy(route.query) });
534
+ };
535
+ sourceControlStore.$onAction(({ name, after }) => {
536
+ if (name !== "pullWorkfolder") return;
537
+ after(async () => await initialize());
538
+ });
539
+ watch(filters, () => saveFiltersOnQueryString(), { deep: true });
540
+ watch(
541
+ () => {
542
+ var _a;
543
+ return (_a = route.params) == null ? void 0 : _a.projectId;
544
+ },
545
+ async () => await initialize()
546
+ );
547
+ onMounted(async () => {
548
+ documentTitle.set(i18n.baseText("workflows.heading"));
549
+ await setFiltersFromQueryString();
550
+ void usersStore.showPersonalizationSurvey();
551
+ });
552
+ return (_ctx, _cache) => {
553
+ const _component_i18n_t = resolveComponent("i18n-t");
554
+ return openBlock(), createBlock(ResourcesListLayout, {
555
+ "resource-key": "workflows",
556
+ resources: allWorkflows.value,
557
+ filters: filters.value,
558
+ "additional-filters-handler": onFilter,
559
+ "type-props": { itemSize: 80 },
560
+ shareable: isShareable.value,
561
+ initialize,
562
+ disabled: readOnlyEnv.value || !projectPermissions.value.workflow.create,
563
+ loading: loading.value,
564
+ "onClick:add": addWorkflow,
565
+ "onUpdate:filters": onFiltersUpdated
566
+ }, {
567
+ header: withCtx(() => [
568
+ createVNode(ProjectTabs)
569
+ ]),
570
+ "add-button": withCtx(({ disabled }) => [
571
+ createVNode(unref(N8nTooltip), {
572
+ disabled: !readOnlyEnv.value
573
+ }, {
574
+ content: withCtx(() => [
575
+ createVNode(_component_i18n_t, {
576
+ tag: "span",
577
+ keypath: "mainSidebar.workflows.readOnlyEnv.tooltip"
578
+ }, {
579
+ link: withCtx(() => [
580
+ createBaseVNode("a", _hoisted_1, toDisplayString(unref(i18n).baseText("mainSidebar.workflows.readOnlyEnv.tooltip.link")), 1)
581
+ ]),
582
+ _: 1
583
+ })
584
+ ]),
585
+ default: withCtx(() => [
586
+ createBaseVNode("div", null, [
587
+ createVNode(unref(N8nButton), {
588
+ size: "large",
589
+ block: "",
590
+ disabled,
591
+ "data-test-id": "resources-list-add",
592
+ onClick: addWorkflow
593
+ }, {
594
+ default: withCtx(() => [
595
+ createTextVNode(toDisplayString(addWorkflowButtonText.value), 1)
596
+ ]),
597
+ _: 2
598
+ }, 1032, ["disabled"])
599
+ ])
600
+ ]),
601
+ _: 2
602
+ }, 1032, ["disabled"])
603
+ ]),
604
+ default: withCtx(({ data, updateItemSize }) => [
605
+ createVNode(WorkflowCard, {
606
+ "data-test-id": "resources-list-item",
607
+ class: "mb-2xs",
608
+ data,
609
+ "read-only": readOnlyEnv.value,
610
+ "onExpand:tags": ($event) => updateItemSize(data),
611
+ "onClick:tag": onClickTag
612
+ }, null, 8, ["data", "read-only", "onExpand:tags"])
613
+ ]),
614
+ empty: withCtx(() => [
615
+ createBaseVNode("div", _hoisted_2, [
616
+ createVNode(unref(N8nHeading), {
617
+ tag: "h2",
618
+ size: "xlarge",
619
+ class: "mb-2xs"
620
+ }, {
621
+ default: withCtx(() => [
622
+ createTextVNode(toDisplayString(currentUser.value.firstName ? unref(i18n).baseText("workflows.empty.heading", {
623
+ interpolate: { name: currentUser.value.firstName }
624
+ }) : unref(i18n).baseText("workflows.empty.heading.userNotSetup")), 1)
625
+ ]),
626
+ _: 1
627
+ }),
628
+ !isOnboardingExperimentEnabled.value ? (openBlock(), createBlock(unref(N8nText), {
629
+ key: 0,
630
+ size: "large",
631
+ color: "text-base"
632
+ }, {
633
+ default: withCtx(() => [
634
+ createTextVNode(toDisplayString(emptyListDescription.value), 1)
635
+ ]),
636
+ _: 1
637
+ })) : createCommentVNode("", true)
638
+ ]),
639
+ !readOnlyEnv.value && projectPermissions.value.workflow.create ? (openBlock(), createElementBlock("div", {
640
+ key: 0,
641
+ class: normalizeClass(["text-center", "mt-2xl", _ctx.$style.actionsContainer])
642
+ }, [
643
+ createVNode(unref(N8nCard), {
644
+ class: normalizeClass(_ctx.$style.emptyStateCard),
645
+ hoverable: "",
646
+ "data-test-id": "new-workflow-card",
647
+ onClick: addWorkflow
648
+ }, {
649
+ default: withCtx(() => [
650
+ createVNode(unref(N8nIcon), {
651
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
652
+ icon: "file"
653
+ }, null, 8, ["class"]),
654
+ createVNode(unref(N8nText), {
655
+ size: "large",
656
+ class: "mt-xs",
657
+ color: "text-dark"
658
+ }, {
659
+ default: withCtx(() => [
660
+ createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.startFromScratch")), 1)
661
+ ]),
662
+ _: 1
663
+ })
664
+ ]),
665
+ _: 1
666
+ }, 8, ["class"]),
667
+ isSalesUser.value || isOnboardingExperimentEnabled.value ? (openBlock(), createElementBlock("a", {
668
+ key: 0,
669
+ href: "https://docs.n8n.io/courses/#available-courses",
670
+ class: normalizeClass(_ctx.$style.emptyStateCard),
671
+ target: "_blank"
672
+ }, [
673
+ createVNode(unref(N8nCard), {
674
+ hoverable: "",
675
+ "data-test-id": "browse-sales-templates-card",
676
+ onClick: _cache[0] || (_cache[0] = ($event) => trackEmptyCardClick("courses"))
677
+ }, {
678
+ default: withCtx(() => [
679
+ createVNode(unref(N8nIcon), {
680
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
681
+ icon: "graduation-cap"
682
+ }, null, 8, ["class"]),
683
+ createVNode(unref(N8nText), {
684
+ size: "large",
685
+ class: "mt-xs",
686
+ color: "text-dark"
687
+ }, {
688
+ default: withCtx(() => [
689
+ createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.learnN8n")), 1)
690
+ ]),
691
+ _: 1
692
+ })
693
+ ]),
694
+ _: 1
695
+ })
696
+ ], 2)) : createCommentVNode("", true),
697
+ isSalesUser.value || isOnboardingExperimentEnabled.value ? (openBlock(), createElementBlock("a", {
698
+ key: 1,
699
+ href: getTemplateRepositoryURL(),
700
+ class: normalizeClass(_ctx.$style.emptyStateCard),
701
+ target: "_blank"
702
+ }, [
703
+ createVNode(unref(N8nCard), {
704
+ hoverable: "",
705
+ "data-test-id": "browse-sales-templates-card",
706
+ onClick: _cache[1] || (_cache[1] = ($event) => trackEmptyCardClick("templates"))
707
+ }, {
708
+ default: withCtx(() => [
709
+ createVNode(unref(N8nIcon), {
710
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
711
+ icon: "box-open"
712
+ }, null, 8, ["class"]),
713
+ createVNode(unref(N8nText), {
714
+ size: "large",
715
+ class: "mt-xs",
716
+ color: "text-dark"
717
+ }, {
718
+ default: withCtx(() => [
719
+ createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.browseTemplates")), 1)
720
+ ]),
721
+ _: 1
722
+ })
723
+ ]),
724
+ _: 1
725
+ })
726
+ ], 10, _hoisted_3)) : createCommentVNode("", true)
727
+ ], 2)) : createCommentVNode("", true)
728
+ ]),
729
+ filters: withCtx(({ setKeyValue }) => [
730
+ unref(settingsStore).areTagsEnabled ? (openBlock(), createElementBlock("div", _hoisted_4, [
731
+ createVNode(unref(N8nInputLabel), {
732
+ label: unref(i18n).baseText("workflows.filters.tags"),
733
+ bold: false,
734
+ size: "small",
735
+ color: "text-base",
736
+ class: "mb-3xs"
737
+ }, null, 8, ["label"]),
738
+ createVNode(_sfc_main$4, {
739
+ placeholder: unref(i18n).baseText("workflowOpen.filterWorkflows"),
740
+ "model-value": filters.value.tags,
741
+ "create-enabled": false,
742
+ "onUpdate:modelValue": ($event) => setKeyValue("tags", $event)
743
+ }, null, 8, ["placeholder", "model-value", "onUpdate:modelValue"])
744
+ ])) : createCommentVNode("", true),
745
+ createBaseVNode("div", _hoisted_5, [
746
+ createVNode(unref(N8nInputLabel), {
747
+ label: unref(i18n).baseText("workflows.filters.status"),
748
+ bold: false,
749
+ size: "small",
750
+ color: "text-base",
751
+ class: "mb-3xs"
752
+ }, null, 8, ["label"]),
753
+ createVNode(unref(N8nSelect), {
754
+ "data-test-id": "status-dropdown",
755
+ "model-value": filters.value.status,
756
+ "onUpdate:modelValue": ($event) => setKeyValue("status", $event)
757
+ }, {
758
+ default: withCtx(() => [
759
+ (openBlock(true), createElementBlock(Fragment, null, renderList(statusFilterOptions.value, (option) => {
760
+ return openBlock(), createBlock(unref(_sfc_main$5), {
761
+ key: option.label,
762
+ label: option.label,
763
+ value: option.value,
764
+ "data-test-id": "status"
765
+ }, null, 8, ["label", "value"]);
766
+ }), 128))
767
+ ]),
768
+ _: 2
769
+ }, 1032, ["model-value", "onUpdate:modelValue"])
770
+ ])
771
+ ]),
772
+ _: 1
773
+ }, 8, ["resources", "filters", "shareable", "disabled", "loading"]);
774
+ };
775
+ }
776
+ });
777
+ const actionsContainer = "_actionsContainer_1gv00_1";
778
+ const emptyStateCard = "_emptyStateCard_1gv00_6";
779
+ const emptyStateCardIcon = "_emptyStateCardIcon_1gv00_19";
780
+ const style0 = {
781
+ actionsContainer,
782
+ emptyStateCard,
783
+ emptyStateCardIcon
784
+ };
785
+ const cssModules = {
786
+ "$style": style0
787
+ };
788
+ const WorkflowsView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
789
+ export {
790
+ WorkflowsView as default
791
+ };