n8n-editor-ui 1.84.0 → 1.85.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-78eP7HIe.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DrqkIVnu.js} +1 -1
- package/dist/assets/{AuthView-Bn_LB3Kw.js → AuthView-Dr5rONBJ.js} +2 -2
- package/dist/assets/{CanvasChat-CGGQcCRA.css → CanvasChatSwitch-BcSDHC-c.css} +522 -24
- package/dist/assets/{CanvasChat-tuKMnT6J.js → CanvasChatSwitch-KHakeUZr.js} +919 -509
- package/dist/assets/{ChangePasswordView-aXYIR8zr.js → ChangePasswordView-nboaqw83.js} +3 -3
- package/dist/assets/CollectionParameter-EiFxXbJy.js +4 -0
- package/dist/assets/CommitMonoVariable-ytizKI8U.woff2 +0 -0
- package/dist/assets/{CredentialsView-k8CeiyMJ.js → CredentialsView-Dz4nfk1f.js} +19 -8
- package/dist/assets/{ErrorView-e-cpk6J7.js → ErrorView-NNkncv05.js} +1 -1
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-BYacEmlc.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-CRWcQqp0.js} +2 -2
- package/dist/assets/{ExecutionsView-CQi8A4ps.js → ExecutionsView-DBrozEb_.js} +25 -8
- package/dist/assets/{ExecutionsView-CRTcP3sx.css → ExecutionsView-JCKikuIS.css} +2 -2
- package/dist/assets/{FileSaver.min-DmMmlWYQ.js → FileSaver.min-CH9W7aQx.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-BfUPtP5M.js → FixedCollectionParameter-C4mulUvT.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-Dzao5PZ9.js → ForgotMyPasswordView-Di4MSlMs.js} +3 -3
- package/dist/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
- package/dist/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
- package/dist/assets/{Logo-DVRZ2qRx.js → Logo-B7J8RW26.js} +1 -1
- package/dist/assets/{MainHeader-CX-ZfeKE.css → MainHeader-CWA2JfVJ.css} +22 -22
- package/dist/assets/{MainHeader-BUw_JG4S.js → MainHeader-CtvSBfpo.js} +47 -22
- package/dist/assets/{MainSidebar-C6aXqICd.js → MainSidebar-DsEI7EAh.js} +2 -2
- package/dist/assets/{NodeCreation-B9-99kNr.js → NodeCreation-BxJhTqFb.js} +5 -5
- package/dist/assets/{NodeCreator-DDiuO5S0.css → NodeCreator-D9fmPdS2.css} +12 -12
- package/dist/assets/{NodeCreator-DH90304h.js → NodeCreator-IiXwtAjo.js} +10 -11
- package/dist/assets/{NodeDetailsView-0RXvy-0D.css → NodeDetailsView-C1z3N5z_.css} +46 -46
- package/dist/assets/{NodeDetailsView-Ci-9Cz_w.js → NodeDetailsView-DUaaykvi.js} +38 -38
- package/dist/assets/{NodeView-CFUO-Q9X.js → NodeView-SJePfWTh.js} +20 -23
- package/dist/assets/{ProjectCardBadge-CGqr1_BG.js → ProjectCardBadge-BiNKaCmD.js} +1 -1
- package/dist/assets/{ProjectHeader-CQjB5wC7.css → ProjectHeader-B-a6_GH6.css} +7 -7
- package/dist/assets/{ProjectHeader-C8hRwBFC.js → ProjectHeader-CyLw5s53.js} +8 -22
- package/dist/assets/{ProjectSettings-motYfWGR.js → ProjectSettings-DWDPCOgu.js} +2 -2
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-DzkWenq4.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-Cc6mPRv6.js} +2 -2
- package/dist/assets/{ResourcesListLayout-BqQI0lCG.css → ResourcesListLayout-CWgWhtKq.css} +39 -36
- package/dist/assets/{ResourcesListLayout-BYVhS2j5.js → ResourcesListLayout-D3QxB6Mt.js} +21 -18
- package/dist/assets/{RunDataAi-pfKF0Nfm.js → RunDataAi-BtLQbSfL.js} +25 -20
- package/dist/assets/{RunDataAi-DJ-PSs_k.css → RunDataAi-CN9FrT9c.css} +2 -2
- package/dist/assets/{RunDataJson-CNT_rM-i.js → RunDataJson-Dq5WcTmp.js} +12 -12
- package/dist/assets/{RunDataJsonActions-BTLAUv9R.js → RunDataJsonActions-CTPgZ_Ap.js} +2 -2
- package/dist/assets/{RunDataSearch-BpcbBojC.js → RunDataSearch-Dhj2W7Uo.js} +1 -1
- package/dist/assets/{RunDataTable-ZnG9QEzJ.js → RunDataTable-7bn1EkU7.js} +2 -2
- package/dist/assets/{SamlOnboarding-DjhCWFIr.js → SamlOnboarding-D1PM8HAM.js} +3 -3
- package/dist/assets/{SettingsApiView-C1ClqjeG.js → SettingsApiView-5hGK32Zv.js} +2 -3
- package/dist/assets/{SettingsCommunityNodesView-D5eLIpQC.js → SettingsCommunityNodesView-cgiOdmlI.js} +5 -5
- package/dist/assets/{SettingsExternalSecrets-ubf6jijA.js → SettingsExternalSecrets-BzRxl3F3.js} +1 -1
- package/dist/assets/{SettingsLdapView-BezV6JLr.js → SettingsLdapView-EKueQ2CB.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-ETOxA5Tw.js → SettingsLogStreamingView-BtKQsZkR.js} +2 -2
- package/dist/assets/{SettingsPersonalView-DGxUC8Q4.js → SettingsPersonalView-tM84kaF9.js} +1 -1
- package/dist/assets/{SettingsSourceControl-1vHHG6W9.js → SettingsSourceControl-CzoIPnXf.js} +1 -1
- package/dist/assets/{SettingsSso-CdI26YPF.js → SettingsSso-Bp6l5AlD.js} +7 -7
- package/dist/assets/{SettingsSso-BjoJZ2DU.css → SettingsSso-DyrGnPdA.css} +10 -10
- package/dist/assets/{SettingsUsageAndPlan-Cul4YcIk.css → SettingsUsageAndPlan-b3WY2Ea_.css} +3 -3
- package/dist/assets/{SettingsUsageAndPlan-BmI8cSiq.js → SettingsUsageAndPlan-fPYKlrNm.js} +8 -3
- package/dist/assets/{SettingsUsersView-90JmT1qM.js → SettingsUsersView-Dcmef7Ov.js} +1 -1
- package/dist/assets/{SettingsView-i7rE7s3I.js → SettingsView-CE7pqxNy.js} +1 -1
- package/dist/assets/{SetupView-Lp4ullGE.js → SetupView-oDFJN3je.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-CoXXUd3B.js → SetupWorkflowCredentialsButton-C8VmrRKt.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-TVU0-Zq4.js → SetupWorkflowFromTemplateView-B01aWC7Z.js} +3 -3
- package/dist/assets/{SigninView-BqF8j6-h.js → SigninView-BOEnSofB.js} +3 -3
- package/dist/assets/{SignoutView-DrYJ9Qe3.js → SignoutView-DR8Sm3bw.js} +1 -1
- package/dist/assets/{SignupView-_EKPhYKN.js → SignupView-BvtcynJk.js} +3 -3
- package/dist/assets/{TemplateDetails-DAalg9G2.js → TemplateDetails-y8AXGWbs.js} +1 -1
- package/dist/assets/{TemplateList-BEYMeJMu.js → TemplateList-D-1dO4Eq.js} +1 -1
- package/dist/assets/{TemplatesCollectionView-fMELXCRX.js → TemplatesCollectionView-ClzAzyXF.js} +5 -5
- package/dist/assets/{TemplatesSearchView-BO-e3IH7.js → TemplatesSearchView-CmiSgpTu.js} +3 -3
- package/dist/assets/{TemplatesView-p57nARMp.js → TemplatesView-CyBLc8qH.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-DAbL5S1-.js → TemplatesWorkflowView-3W3FI7bJ.js} +5 -5
- package/dist/assets/{TestDefinitionEditView-BTo9LlAU.js → TestDefinitionEditView-BnNPA8Y7.js} +7 -8
- package/dist/assets/{TestDefinitionListView-D_-DyZDv.js → TestDefinitionListView-CKxRJzbr.js} +1 -1
- package/dist/assets/{TestDefinitionNewView-Crk5OePO.js → TestDefinitionNewView-BwxuCFrb.js} +2 -2
- package/dist/assets/{TestDefinitionRootView-BtiqAWW1.js → TestDefinitionRootView-XxqAJ8by.js} +1 -1
- package/dist/assets/{VariablesView-BvDpOTm3.css → VariablesView-ATWfdJsE.css} +5 -5
- package/dist/assets/{VariablesView-Bg3GI1iE.js → VariablesView-Jmww_g5c.js} +5 -5
- package/dist/assets/{WorkerView-CaTyr1ci.js → WorkerView-B6RZF_3e.js} +7 -7
- package/dist/assets/{WorkflowActivator-BvmRhIkt.js → WorkflowActivator-1S83wg3m.js} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-BuIbG1kZ.js → WorkflowExecutionsInfoAccordion-DyYf5xnM.js} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-BirtsKx4.js → WorkflowExecutionsLandingPage-BJJkMmAN.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-CPGOOAq2.css → WorkflowExecutionsPreview-CHu6M3Dh.css} +22 -22
- package/dist/assets/{WorkflowExecutionsPreview-DFyHWF9H.js → WorkflowExecutionsPreview-DOgsT3qO.js} +22 -22
- package/dist/assets/{WorkflowExecutionsView-IUjVjxU9.js → WorkflowExecutionsView-C5pQ01YU.js} +6 -7
- package/dist/assets/{WorkflowHistory-BqKSxr_5.js → WorkflowHistory-JYpRDL5b.js} +3 -3
- package/dist/assets/{WorkflowOnboardingView-Bs0Rmm6I.js → WorkflowOnboardingView-CI-nHjPv.js} +1 -1
- package/dist/assets/{WorkflowPreview-1jsK9hpV.js → WorkflowPreview-DeccEeOD.js} +1 -1
- package/dist/assets/{WorkflowsView-MzPw02jI.js → WorkflowsView-DpE8yGfm.js} +333 -80
- package/dist/assets/{WorkflowsView-Sg6GR5kC.css → WorkflowsView-r9qJOUEb.css} +22 -15
- package/dist/assets/{easyAiWorkflowUtils-DlyLBhIZ.js → easyAiWorkflowUtils-CZVa9QJH.js} +5 -5
- package/dist/assets/{global-link-actions-DvwtxSrW.js → global-link-actions-fxxB6c1M.js} +1 -1
- package/dist/assets/{import-curl-CbxpR02g.js → import-curl-BMQD81WG.js} +1 -1
- package/dist/assets/{index-tzkIB4Tg.js → index-CFXicF1K.js} +1 -1
- package/dist/assets/{index-74EeM2i2.css → index-CgXKy7t-.css} +1208 -1185
- package/dist/assets/{index-CyVlLoqB.js → index-TONfBAHg.js} +2656 -2132
- package/dist/assets/{pickBy-DI3cF803.js → pickBy-DMdfAEN5.js} +1 -1
- package/dist/assets/{pushConnection.store-BhUCpqAg.js → pushConnection.store-CXF122Ff.js} +1 -1
- package/dist/assets/{templateActions-BnGO7zdc.js → templateActions-BMN7PUps.js} +1 -1
- package/dist/assets/{useBeforeUnload-DtKxjKeS.js → useBeforeUnload-DaIbVPhm.js} +1 -1
- package/dist/assets/{useCanvasMapping-BCP7UO9p.js → useCanvasMapping-BkYlSNdK.js} +53 -54
- package/dist/assets/{useCanvasMapping-CI4ehFWu.css → useCanvasMapping-CJcAsQmx.css} +47 -47
- package/dist/assets/{useCanvasOperations-Ctquo5LL.js → useCanvasOperations-B2wChId3.js} +453 -183
- package/dist/assets/useClearExecutionButtonVisible-DXrP_YDx.js +23 -0
- package/dist/assets/{useExecutionDebugging-C0TAc9fj.js → useExecutionDebugging-B26z6tvj.js} +1 -1
- package/dist/assets/{useExecutionHelpers-BQHL3OpL.js → useExecutionHelpers-tpdv0KUa.js} +1 -1
- package/dist/assets/{useImportCurlCommand-IE8oJ9bp.js → useImportCurlCommand-DPFdzFcL.js} +2 -2
- package/dist/assets/useOverview-C8mSc1uX.js +161 -0
- package/dist/assets/useOverview-DcRuPjLJ.css +232 -0
- package/dist/assets/{usePushConnection-DXozzPWi.js → usePushConnection-C8yfU7M_.js} +4 -4
- package/dist/assets/{useRunWorkflow-D9JIEr1s.js → useRunWorkflow-B3mpLXeb.js} +12 -12
- package/dist/assets/{useTestDefinitionForm-8dJH3v29.js → useTestDefinitionForm-DsiSBIWm.js} +1 -1
- package/dist/assets/{useWorkflowActivate-CI3X35ZJ.js → useWorkflowActivate-wAFdzwEx.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-DR9e0MGf.js +0 -4
- package/dist/assets/open-sans-latin-400-normal-kLvSbl7y.woff +0 -0
- package/dist/assets/open-sans-latin-400-normal-sjvN8RAh.woff2 +0 -0
- package/dist/assets/open-sans-latin-600-normal-BYc6TgXR.woff2 +0 -0
- package/dist/assets/open-sans-latin-600-normal-CJ2UE_uF.woff +0 -0
- package/dist/assets/open-sans-latin-700-normal-DMXgkrz3.woff +0 -0
- package/dist/assets/open-sans-latin-700-normal-DXyImmHa.woff2 +0 -0
- package/dist/assets/usePinnedData-CtRDhd6k.js +0 -274
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { d as defineComponent, U as useRoute, b as useRouter, q as computed,
|
|
2
|
-
import { R as ResourcesListLayout } from "./ResourcesListLayout-
|
|
3
|
-
import { W as WorkflowActivator } from "./WorkflowActivator-
|
|
4
|
-
import { P as ProjectCardBadge } from "./ProjectCardBadge-
|
|
5
|
-
import { P as ProjectHeader } from "./ProjectHeader-
|
|
6
|
-
import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-
|
|
7
|
-
import "./
|
|
1
|
+
import { d as defineComponent, U as useRoute, b as useRouter, q as computed, ac as ProjectTypes, c as useI18n, V as VIEWS, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, n as normalizeClass, k as createBaseVNode, f as createCommentVNode, e as createBlock, gj as __unplugin_components_0$1, l as createTextVNode, t as toDisplayString, J as withModifiers, m as unref, cO as _sfc_main$4, _ as _export_sfc, a3 as useProjectsStore, aV as createSlots, a as useToast, p as useSettingsStore, L as useUIStore, u as useUsersStore, T as useWorkflowsStore, gk as useFoldersStore, r as ref, a8 as getResourcePermissions, fi as dateFormat, aB as withDirectives, aC as vShow, gl as ResourceType, ag as WORKFLOW_SHARE_MODAL_KEY, ah as useTelemetry, ao as DUPLICATE_MODAL_KEY, aj as useMessage, ak as MODAL_CONFIRM, gm as PROJECT_MOVE_RESOURCE_MODAL, gn as FOLDER_NAME_ILLEGAL_CHARACTERS_REGEX, go as ILLEGAL_FOLDER_CHARACTERS, gp as FOLDER_NAME_ONLY_DOTS_REGEX, gq as FOLDER_NAME_MAX_LENGTH, a2 as useSourceControlStore, av as usePostHog, E as useTagsStore, d7 as useUsageStore, gr as useInsightsStore, a5 as useDocumentTitle, K as useDebounce, ab as EnterpriseEditionFeature, gs as EASY_AI_WORKFLOW_EXPERIMENT, I as watch, o as onMounted, C as createEventBus, y as onBeforeUnmount, A as debounce, d4 as N8nInputLabel, ae as _sfc_main$5, gt as N8nSelect, F as Fragment, D as renderList, gu as _sfc_main$6, cU as N8nHeading, by as N8nText, gv as N8nCard, c6 as N8nIcon, gw as DEFAULT_WORKFLOW_PAGE_SIZE, bS as AI_CREDITS_EXPERIMENT, da as COMMUNITY_PLUS_ENROLLMENT_MODAL } from "./index-TONfBAHg.js";
|
|
2
|
+
import { R as ResourcesListLayout } from "./ResourcesListLayout-D3QxB6Mt.js";
|
|
3
|
+
import { W as WorkflowActivator } from "./WorkflowActivator-1S83wg3m.js";
|
|
4
|
+
import { P as ProjectCardBadge } from "./ProjectCardBadge-BiNKaCmD.js";
|
|
5
|
+
import { P as ProjectHeader } from "./ProjectHeader-CyLw5s53.js";
|
|
6
|
+
import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-CZVa9QJH.js";
|
|
7
|
+
import { u as useOverview, I as InsightsSummary } from "./useOverview-C8mSc1uX.js";
|
|
8
|
+
import "./useWorkflowActivate-wAFdzwEx.js";
|
|
8
9
|
const FOLDER_LIST_ITEM_ACTIONS = {
|
|
9
10
|
OPEN: "open",
|
|
10
11
|
CREATE: "create",
|
|
@@ -323,18 +324,20 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
323
324
|
_ctx.breadcrumbs.visibleItems ? (openBlock(), createBlock(_component_n8n_action_toggle, {
|
|
324
325
|
key: 1,
|
|
325
326
|
actions: _ctx.actions,
|
|
327
|
+
class: normalizeClass(_ctx.$style["action-toggle"]),
|
|
326
328
|
theme: "dark",
|
|
327
329
|
"data-test-id": "folder-breadcrumbs-actions",
|
|
328
330
|
onAction
|
|
329
|
-
}, null, 8, ["actions"])) : createCommentVNode("", true)
|
|
331
|
+
}, null, 8, ["actions", "class"])) : createCommentVNode("", true)
|
|
330
332
|
], 2);
|
|
331
333
|
};
|
|
332
334
|
}
|
|
333
335
|
});
|
|
334
|
-
const container = "
|
|
336
|
+
const container = "_container_4mxjz_123";
|
|
335
337
|
const style0$2 = {
|
|
336
338
|
container,
|
|
337
|
-
"
|
|
339
|
+
"action-toggle": "_action-toggle_4mxjz_128",
|
|
340
|
+
"home-project": "_home-project_4mxjz_132"
|
|
338
341
|
};
|
|
339
342
|
const cssModules$2 = {
|
|
340
343
|
"$style": style0$2
|
|
@@ -371,12 +374,50 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
371
374
|
const usersStore = useUsersStore();
|
|
372
375
|
const workflowsStore = useWorkflowsStore();
|
|
373
376
|
const projectsStore = useProjectsStore();
|
|
377
|
+
const foldersStore = useFoldersStore();
|
|
378
|
+
const hiddenBreadcrumbsItemsAsync = ref(new Promise(() => {
|
|
379
|
+
}));
|
|
374
380
|
const resourceTypeLabel = computed(() => locale.baseText("generic.workflow").toLowerCase());
|
|
375
381
|
const currentUser = computed(() => usersStore.currentUser ?? {});
|
|
376
382
|
const workflowPermissions = computed(() => getResourcePermissions(props.data.scopes).workflow);
|
|
383
|
+
const isOverviewPage = computed(() => route.name === VIEWS.WORKFLOWS);
|
|
377
384
|
const showFolders = computed(() => {
|
|
378
385
|
return settingsStore.isFoldersFeatureEnabled && route.name !== VIEWS.WORKFLOWS;
|
|
379
386
|
});
|
|
387
|
+
const projectIcon = computed(() => {
|
|
388
|
+
const defaultIcon = { type: "icon", value: "layer-group" };
|
|
389
|
+
if (props.data.homeProject?.type === ProjectTypes.Personal) {
|
|
390
|
+
return { type: "icon", value: "user" };
|
|
391
|
+
} else if (props.data.homeProject?.type === ProjectTypes.Team) {
|
|
392
|
+
return props.data.homeProject.icon ?? defaultIcon;
|
|
393
|
+
}
|
|
394
|
+
return defaultIcon;
|
|
395
|
+
});
|
|
396
|
+
const projectName = computed(() => {
|
|
397
|
+
if (props.data.homeProject?.type === ProjectTypes.Personal) {
|
|
398
|
+
return locale.baseText("projects.menu.personal");
|
|
399
|
+
}
|
|
400
|
+
return props.data.homeProject?.name;
|
|
401
|
+
});
|
|
402
|
+
const cardBreadcrumbs = computed(() => {
|
|
403
|
+
if (props.data.parentFolder) {
|
|
404
|
+
return [
|
|
405
|
+
{
|
|
406
|
+
id: props.data.parentFolder.id,
|
|
407
|
+
name: props.data.parentFolder.name,
|
|
408
|
+
label: props.data.parentFolder.name,
|
|
409
|
+
href: router.resolve({
|
|
410
|
+
name: VIEWS.PROJECTS_FOLDERS,
|
|
411
|
+
params: {
|
|
412
|
+
projectId: props.data.homeProject?.id,
|
|
413
|
+
folderId: props.data.parentFolder.id
|
|
414
|
+
}
|
|
415
|
+
}).href
|
|
416
|
+
}
|
|
417
|
+
];
|
|
418
|
+
}
|
|
419
|
+
return [];
|
|
420
|
+
});
|
|
380
421
|
const actions = computed(() => {
|
|
381
422
|
const items = [
|
|
382
423
|
{
|
|
@@ -517,6 +558,16 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
517
558
|
});
|
|
518
559
|
emit("workflow:deleted");
|
|
519
560
|
}
|
|
561
|
+
const fetchHiddenBreadCrumbsItems = async () => {
|
|
562
|
+
if (!props.data.homeProject?.id || !projectName.value || !props.data.parentFolder) {
|
|
563
|
+
hiddenBreadcrumbsItemsAsync.value = Promise.resolve([]);
|
|
564
|
+
} else {
|
|
565
|
+
hiddenBreadcrumbsItemsAsync.value = foldersStore.getHiddenBreadcrumbsItems(
|
|
566
|
+
{ id: props.data.homeProject.id, name: projectName.value },
|
|
567
|
+
props.data.parentFolder.id
|
|
568
|
+
);
|
|
569
|
+
}
|
|
570
|
+
};
|
|
520
571
|
function moveResource() {
|
|
521
572
|
uiStore.openModalWithData({
|
|
522
573
|
name: PROJECT_MOVE_RESOURCE_MODAL,
|
|
@@ -531,11 +582,18 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
531
582
|
const emitWorkflowActiveToggle = (value) => {
|
|
532
583
|
emit("workflow:active-toggle", value);
|
|
533
584
|
};
|
|
585
|
+
const onBreadcrumbItemClick = async (item) => {
|
|
586
|
+
if (item.href) {
|
|
587
|
+
await router.push(item.href);
|
|
588
|
+
}
|
|
589
|
+
};
|
|
534
590
|
return (_ctx, _cache) => {
|
|
535
591
|
const _component_N8nBadge = resolveComponent("N8nBadge");
|
|
536
|
-
const _component_n8n_heading = resolveComponent("n8n-heading");
|
|
537
|
-
const _component_n8n_tags = resolveComponent("n8n-tags");
|
|
538
592
|
const _component_n8n_text = resolveComponent("n8n-text");
|
|
593
|
+
const _component_n8n_tags = resolveComponent("n8n-tags");
|
|
594
|
+
const _component_ProjectIcon = __unplugin_components_0$1;
|
|
595
|
+
const _component_n8n_link = resolveComponent("n8n-link");
|
|
596
|
+
const _component_n8n_breadcrumbs = resolveComponent("n8n-breadcrumbs");
|
|
539
597
|
const _component_n8n_action_toggle = resolveComponent("n8n-action-toggle");
|
|
540
598
|
const _component_n8n_card = resolveComponent("n8n-card");
|
|
541
599
|
return openBlock(), createBlock(_component_n8n_card, {
|
|
@@ -544,7 +602,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
544
602
|
onClick
|
|
545
603
|
}, {
|
|
546
604
|
header: withCtx(() => [
|
|
547
|
-
createVNode(
|
|
605
|
+
createVNode(_component_n8n_text, {
|
|
548
606
|
tag: "h2",
|
|
549
607
|
bold: "",
|
|
550
608
|
class: normalizeClass(_ctx.$style.cardHeading),
|
|
@@ -573,13 +631,64 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
573
631
|
onClick: _cache[0] || (_cache[0] = withModifiers(() => {
|
|
574
632
|
}, ["stop"]))
|
|
575
633
|
}, [
|
|
576
|
-
|
|
634
|
+
isOverviewPage.value ? (openBlock(), createElementBlock("div", {
|
|
635
|
+
key: 0,
|
|
636
|
+
class: normalizeClass(_ctx.$style.breadcrumbs)
|
|
637
|
+
}, [
|
|
638
|
+
createVNode(_component_n8n_breadcrumbs, {
|
|
639
|
+
items: cardBreadcrumbs.value,
|
|
640
|
+
"hidden-items": hiddenBreadcrumbsItemsAsync.value,
|
|
641
|
+
"path-truncated": true,
|
|
642
|
+
"show-border": true,
|
|
643
|
+
"highlight-last-item": false,
|
|
644
|
+
"hidden-items-trigger": "hover",
|
|
645
|
+
theme: "small",
|
|
646
|
+
"data-test-id": "workflow-card-breadcrumbs",
|
|
647
|
+
onTooltipOpened: fetchHiddenBreadCrumbsItems,
|
|
648
|
+
onItemSelected: onBreadcrumbItemClick
|
|
649
|
+
}, createSlots({ _: 2 }, [
|
|
650
|
+
_ctx.data.homeProject ? {
|
|
651
|
+
name: "prepend",
|
|
652
|
+
fn: withCtx(() => [
|
|
653
|
+
createBaseVNode("div", {
|
|
654
|
+
class: normalizeClass(_ctx.$style["home-project"])
|
|
655
|
+
}, [
|
|
656
|
+
createVNode(_component_n8n_link, {
|
|
657
|
+
to: `/projects/${_ctx.data.homeProject.id}`
|
|
658
|
+
}, {
|
|
659
|
+
default: withCtx(() => [
|
|
660
|
+
createVNode(_component_ProjectIcon, {
|
|
661
|
+
icon: projectIcon.value,
|
|
662
|
+
"border-less": true,
|
|
663
|
+
size: "mini"
|
|
664
|
+
}, null, 8, ["icon"]),
|
|
665
|
+
createVNode(_component_n8n_text, {
|
|
666
|
+
size: "small",
|
|
667
|
+
compact: true,
|
|
668
|
+
bold: true,
|
|
669
|
+
color: "text-base"
|
|
670
|
+
}, {
|
|
671
|
+
default: withCtx(() => [
|
|
672
|
+
createTextVNode(toDisplayString(projectName.value), 1)
|
|
673
|
+
]),
|
|
674
|
+
_: 1
|
|
675
|
+
})
|
|
676
|
+
]),
|
|
677
|
+
_: 1
|
|
678
|
+
}, 8, ["to"])
|
|
679
|
+
], 2)
|
|
680
|
+
]),
|
|
681
|
+
key: "0"
|
|
682
|
+
} : void 0
|
|
683
|
+
]), 1032, ["items", "hidden-items"])
|
|
684
|
+
], 2)) : (openBlock(), createBlock(ProjectCardBadge, {
|
|
685
|
+
key: 1,
|
|
577
686
|
class: normalizeClass(_ctx.$style.cardBadge),
|
|
578
687
|
resource: _ctx.data,
|
|
579
688
|
"resource-type": unref(ResourceType).Workflow,
|
|
580
689
|
"resource-type-label": resourceTypeLabel.value,
|
|
581
690
|
"personal-project": unref(projectsStore).personalProject
|
|
582
|
-
}, null, 8, ["class", "resource", "resource-type", "resource-type-label", "personal-project"]),
|
|
691
|
+
}, null, 8, ["class", "resource", "resource-type", "resource-type-label", "personal-project"])),
|
|
583
692
|
createVNode(WorkflowActivator, {
|
|
584
693
|
class: "mr-s",
|
|
585
694
|
"workflow-active": _ctx.data.active,
|
|
@@ -658,12 +767,53 @@ const cssModules$1 = {
|
|
|
658
767
|
"$style": style0$1
|
|
659
768
|
};
|
|
660
769
|
const WorkflowCard = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1]]);
|
|
661
|
-
|
|
662
|
-
const
|
|
770
|
+
function useFolders() {
|
|
771
|
+
const i18n = useI18n();
|
|
772
|
+
function validateFolderName(folderName) {
|
|
773
|
+
if (FOLDER_NAME_ILLEGAL_CHARACTERS_REGEX.test(folderName)) {
|
|
774
|
+
return i18n.baseText("folders.invalidName.invalidCharacters.message", {
|
|
775
|
+
interpolate: {
|
|
776
|
+
illegalChars: ILLEGAL_FOLDER_CHARACTERS.join(" ")
|
|
777
|
+
}
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
if (FOLDER_NAME_ONLY_DOTS_REGEX.test(folderName)) {
|
|
781
|
+
return i18n.baseText("folders.invalidName.only.dots.message");
|
|
782
|
+
}
|
|
783
|
+
if (folderName.startsWith(".")) {
|
|
784
|
+
return i18n.baseText("folders.invalidName.starts.with.dot..message");
|
|
785
|
+
}
|
|
786
|
+
if (folderName.trim() === "") {
|
|
787
|
+
return i18n.baseText("folders.invalidName.empty.message");
|
|
788
|
+
}
|
|
789
|
+
if (folderName.length > FOLDER_NAME_MAX_LENGTH) {
|
|
790
|
+
return i18n.baseText("folders.invalidName.tooLong.message", {
|
|
791
|
+
interpolate: {
|
|
792
|
+
maxLength: FOLDER_NAME_MAX_LENGTH
|
|
793
|
+
}
|
|
794
|
+
});
|
|
795
|
+
}
|
|
796
|
+
return true;
|
|
797
|
+
}
|
|
798
|
+
return {
|
|
799
|
+
validateFolderName
|
|
800
|
+
};
|
|
801
|
+
}
|
|
802
|
+
const _hoisted_1 = { key: 0 };
|
|
803
|
+
const _hoisted_2 = { key: 0 };
|
|
804
|
+
const _hoisted_3 = { key: 1 };
|
|
805
|
+
const _hoisted_4 = { key: 1 };
|
|
806
|
+
const _hoisted_5 = {
|
|
807
|
+
class: "text-center mt-s",
|
|
808
|
+
"data-test-id": "list-empty-state"
|
|
809
|
+
};
|
|
810
|
+
const _hoisted_6 = {
|
|
663
811
|
key: 0,
|
|
664
812
|
class: "mb-s"
|
|
665
813
|
};
|
|
666
|
-
const
|
|
814
|
+
const _hoisted_7 = { class: "mb-s" };
|
|
815
|
+
const SEARCH_DEBOUNCE_TIME = 300;
|
|
816
|
+
const FILTERS_DEBOUNCE_TIME = 100;
|
|
667
817
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
668
818
|
__name: "WorkflowsView",
|
|
669
819
|
setup(__props) {
|
|
@@ -683,6 +833,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
683
833
|
const router = useRouter();
|
|
684
834
|
const message = useMessage();
|
|
685
835
|
const toast = useToast();
|
|
836
|
+
const folderHelpers = useFolders();
|
|
686
837
|
const sourceControlStore = useSourceControlStore();
|
|
687
838
|
const usersStore = useUsersStore();
|
|
688
839
|
const workflowsStore = useWorkflowsStore();
|
|
@@ -693,8 +844,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
693
844
|
const uiStore = useUIStore();
|
|
694
845
|
const tagsStore = useTagsStore();
|
|
695
846
|
const foldersStore = useFoldersStore();
|
|
847
|
+
const usageStore = useUsageStore();
|
|
848
|
+
const insightsStore = useInsightsStore();
|
|
696
849
|
const documentTitle = useDocumentTitle();
|
|
697
850
|
const { callDebounced } = useDebounce();
|
|
851
|
+
const overview = useOverview();
|
|
698
852
|
const loading = ref(false);
|
|
699
853
|
const breadcrumbsLoading = ref(false);
|
|
700
854
|
const filters = ref({
|
|
@@ -759,8 +913,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
759
913
|
const isShareable = computed(
|
|
760
914
|
() => settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.Sharing]
|
|
761
915
|
);
|
|
916
|
+
const foldersEnabled = computed(() => {
|
|
917
|
+
return settingsStore.isFoldersFeatureEnabled;
|
|
918
|
+
});
|
|
919
|
+
const teamProjectsEnabled = computed(() => {
|
|
920
|
+
return projectsStore.isTeamProjectFeatureEnabled;
|
|
921
|
+
});
|
|
762
922
|
const showFolders = computed(() => {
|
|
763
|
-
return
|
|
923
|
+
return foldersEnabled.value && !isOverviewPage.value;
|
|
764
924
|
});
|
|
765
925
|
const currentFolder = computed(() => {
|
|
766
926
|
return currentFolderId.value ? foldersStore.breadcrumbsCache[currentFolderId.value] : null;
|
|
@@ -861,6 +1021,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
861
1021
|
return i18n.baseText("workflows.empty.description");
|
|
862
1022
|
}
|
|
863
1023
|
});
|
|
1024
|
+
const hasFilters = computed(() => {
|
|
1025
|
+
return !!(filters.value.search || filters.value.status !== StatusFilter.ALL || filters.value.tags.length);
|
|
1026
|
+
});
|
|
1027
|
+
const isSelfHostedDeployment = computed(() => settingsStore.deploymentType === "default");
|
|
1028
|
+
const canUserRegisterCommunityPlus = computed(
|
|
1029
|
+
() => getResourcePermissions(usersStore.currentUser?.globalScopes).community.register
|
|
1030
|
+
);
|
|
1031
|
+
const showRegisteredCommunityCTA = computed(
|
|
1032
|
+
() => isSelfHostedDeployment.value && !foldersEnabled.value && canUserRegisterCommunityPlus.value
|
|
1033
|
+
);
|
|
864
1034
|
watch(
|
|
865
1035
|
() => route.params?.projectId,
|
|
866
1036
|
async () => {
|
|
@@ -878,9 +1048,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
878
1048
|
if (name !== "pullWorkfolder") return;
|
|
879
1049
|
after(async () => await initialize());
|
|
880
1050
|
});
|
|
1051
|
+
const onWorkflowDeleted = async () => {
|
|
1052
|
+
await Promise.all([
|
|
1053
|
+
fetchWorkflows(),
|
|
1054
|
+
foldersStore.fetchTotalWorkflowsAndFoldersCount(route.params.projectId)
|
|
1055
|
+
]);
|
|
1056
|
+
};
|
|
881
1057
|
const onFolderDeleted = async (payload) => {
|
|
882
1058
|
const folderInfo = foldersStore.getCachedFolder(payload.folderId);
|
|
883
1059
|
foldersStore.deleteFoldersFromCache([payload.folderId, folderInfo?.parentFolder ?? ""]);
|
|
1060
|
+
await foldersStore.fetchTotalWorkflowsAndFoldersCount(
|
|
1061
|
+
route.params.projectId
|
|
1062
|
+
);
|
|
884
1063
|
if (currentFolderId.value === payload.folderId) {
|
|
885
1064
|
void router.push({
|
|
886
1065
|
name: VIEWS.PROJECTS_FOLDERS,
|
|
@@ -918,7 +1097,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
918
1097
|
const [, resourcesPage] = await Promise.all([
|
|
919
1098
|
usersStore.fetchUsers(),
|
|
920
1099
|
fetchWorkflows(),
|
|
921
|
-
workflowsStore.fetchActiveWorkflows()
|
|
1100
|
+
workflowsStore.fetchActiveWorkflows(),
|
|
1101
|
+
usageStore.getLicenseInfo(),
|
|
1102
|
+
foldersStore.fetchTotalWorkflowsAndFoldersCount(route.params.projectId)
|
|
922
1103
|
]);
|
|
923
1104
|
breadcrumbsLoading.value = false;
|
|
924
1105
|
workflowsAndFolders.value = resourcesPage;
|
|
@@ -959,7 +1140,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
959
1140
|
await foldersStore.getFolderPath(routeProjectId, parentFolder);
|
|
960
1141
|
breadcrumbsLoading.value = false;
|
|
961
1142
|
}
|
|
962
|
-
await foldersStore.fetchTotalWorkflowsAndFoldersCount(routeProjectId);
|
|
963
1143
|
workflowsAndFolders.value = fetchedResources;
|
|
964
1144
|
return fetchedResources;
|
|
965
1145
|
} catch (error) {
|
|
@@ -986,24 +1166,24 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
986
1166
|
const onFiltersUpdated = async () => {
|
|
987
1167
|
currentPage.value = 1;
|
|
988
1168
|
saveFiltersOnQueryString();
|
|
989
|
-
await callDebounced(fetchWorkflows, { debounceTime:
|
|
1169
|
+
await callDebounced(fetchWorkflows, { debounceTime: FILTERS_DEBOUNCE_TIME, trailing: true });
|
|
990
1170
|
};
|
|
991
1171
|
const onSearchUpdated = async (search) => {
|
|
992
1172
|
currentPage.value = 1;
|
|
993
1173
|
saveFiltersOnQueryString();
|
|
994
1174
|
if (search) {
|
|
995
|
-
await callDebounced(fetchWorkflows, { debounceTime:
|
|
1175
|
+
await callDebounced(fetchWorkflows, { debounceTime: SEARCH_DEBOUNCE_TIME, trailing: true });
|
|
996
1176
|
} else {
|
|
997
1177
|
await fetchWorkflows();
|
|
998
1178
|
}
|
|
999
1179
|
};
|
|
1000
1180
|
const setCurrentPage = async (page) => {
|
|
1001
1181
|
currentPage.value = page;
|
|
1002
|
-
await callDebounced(fetchWorkflows, { debounceTime:
|
|
1182
|
+
await callDebounced(fetchWorkflows, { debounceTime: FILTERS_DEBOUNCE_TIME, trailing: true });
|
|
1003
1183
|
};
|
|
1004
1184
|
const setPageSize = async (size) => {
|
|
1005
1185
|
pageSize.value = size;
|
|
1006
|
-
await callDebounced(fetchWorkflows, { debounceTime:
|
|
1186
|
+
await callDebounced(fetchWorkflows, { debounceTime: FILTERS_DEBOUNCE_TIME, trailing: true });
|
|
1007
1187
|
};
|
|
1008
1188
|
const onClickTag = async (tagId) => {
|
|
1009
1189
|
if (!filters.value.tags.includes(tagId)) {
|
|
@@ -1263,11 +1443,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1263
1443
|
if (!clickedFolder) return;
|
|
1264
1444
|
switch (payload.action) {
|
|
1265
1445
|
case FOLDER_LIST_ITEM_ACTIONS.CREATE:
|
|
1266
|
-
await createFolder(
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1446
|
+
await createFolder(
|
|
1447
|
+
{
|
|
1448
|
+
id: clickedFolder.id,
|
|
1449
|
+
name: clickedFolder.name,
|
|
1450
|
+
type: "folder"
|
|
1451
|
+
},
|
|
1452
|
+
{ openAfterCreate: true }
|
|
1453
|
+
);
|
|
1271
1454
|
break;
|
|
1272
1455
|
case FOLDER_LIST_ITEM_ACTIONS.CREATE_WORKFLOW:
|
|
1273
1456
|
currentFolderId.value = clickedFolder.id;
|
|
@@ -1297,14 +1480,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1297
1480
|
break;
|
|
1298
1481
|
}
|
|
1299
1482
|
};
|
|
1300
|
-
const createFolder = async (parent) => {
|
|
1483
|
+
const createFolder = async (parent, options = { openAfterCreate: false }) => {
|
|
1301
1484
|
const promptResponsePromise = message.prompt(
|
|
1302
1485
|
i18n.baseText("folders.add.to.parent.message", { interpolate: { parent: parent.name } }),
|
|
1303
1486
|
{
|
|
1304
1487
|
confirmButtonText: i18n.baseText("generic.create"),
|
|
1305
1488
|
cancelButtonText: i18n.baseText("generic.cancel"),
|
|
1306
|
-
|
|
1307
|
-
inputPattern: VALID_FOLDER_NAME_REGEX,
|
|
1489
|
+
inputValidator: folderHelpers.validateFolderName,
|
|
1308
1490
|
customClass: "add-folder-modal"
|
|
1309
1491
|
}
|
|
1310
1492
|
);
|
|
@@ -1337,29 +1519,36 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1337
1519
|
},
|
|
1338
1520
|
type: "success"
|
|
1339
1521
|
});
|
|
1340
|
-
if (!workflowsAndFolders.value.length) {
|
|
1341
|
-
workflowsAndFolders.value = [
|
|
1342
|
-
{
|
|
1343
|
-
id: newFolder.id,
|
|
1344
|
-
name: newFolder.name,
|
|
1345
|
-
resource: "folder",
|
|
1346
|
-
createdAt: newFolder.createdAt,
|
|
1347
|
-
updatedAt: newFolder.updatedAt,
|
|
1348
|
-
homeProject: projectsStore.currentProject,
|
|
1349
|
-
sharedWithProjects: [],
|
|
1350
|
-
workflowCount: 0,
|
|
1351
|
-
subFolderCount: 0
|
|
1352
|
-
}
|
|
1353
|
-
];
|
|
1354
|
-
foldersStore.cacheFolders([
|
|
1355
|
-
{ id: newFolder.id, name: newFolder.name, parentFolder: currentFolder.value?.id }
|
|
1356
|
-
]);
|
|
1357
|
-
} else {
|
|
1358
|
-
await fetchWorkflows();
|
|
1359
|
-
}
|
|
1360
1522
|
telemetry.track("User created folder", {
|
|
1361
1523
|
folder_id: newFolder.id
|
|
1362
1524
|
});
|
|
1525
|
+
if (options.openAfterCreate) {
|
|
1526
|
+
await router.push({
|
|
1527
|
+
name: VIEWS.PROJECTS_FOLDERS,
|
|
1528
|
+
params: { projectId: route.params.projectId, folderId: parent.id }
|
|
1529
|
+
});
|
|
1530
|
+
} else {
|
|
1531
|
+
if (!workflowsAndFolders.value.length) {
|
|
1532
|
+
workflowsAndFolders.value = [
|
|
1533
|
+
{
|
|
1534
|
+
id: newFolder.id,
|
|
1535
|
+
name: newFolder.name,
|
|
1536
|
+
resource: "folder",
|
|
1537
|
+
createdAt: newFolder.createdAt,
|
|
1538
|
+
updatedAt: newFolder.updatedAt,
|
|
1539
|
+
homeProject: projectsStore.currentProject,
|
|
1540
|
+
sharedWithProjects: [],
|
|
1541
|
+
workflowCount: 0,
|
|
1542
|
+
subFolderCount: 0
|
|
1543
|
+
}
|
|
1544
|
+
];
|
|
1545
|
+
foldersStore.cacheFolders([
|
|
1546
|
+
{ id: newFolder.id, name: newFolder.name, parentFolder: currentFolder.value?.id }
|
|
1547
|
+
]);
|
|
1548
|
+
} else {
|
|
1549
|
+
await fetchWorkflows();
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1363
1552
|
} catch (error) {
|
|
1364
1553
|
toast.showError(error, i18n.baseText("folders.create.error.title"));
|
|
1365
1554
|
}
|
|
@@ -1373,10 +1562,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1373
1562
|
{
|
|
1374
1563
|
confirmButtonText: i18n.baseText("generic.rename"),
|
|
1375
1564
|
cancelButtonText: i18n.baseText("generic.cancel"),
|
|
1376
|
-
inputErrorMessage: i18n.baseText("folders.invalidName.message"),
|
|
1377
1565
|
inputValue: folder.name,
|
|
1378
|
-
|
|
1379
|
-
|
|
1566
|
+
customClass: "rename-folder-modal",
|
|
1567
|
+
inputValidator: folderHelpers.validateFolderName
|
|
1380
1568
|
}
|
|
1381
1569
|
);
|
|
1382
1570
|
const promptResponse = await promptResponsePromise;
|
|
@@ -1401,6 +1589,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1401
1589
|
}
|
|
1402
1590
|
};
|
|
1403
1591
|
const createFolderInCurrent = async () => {
|
|
1592
|
+
if (showRegisteredCommunityCTA.value) {
|
|
1593
|
+
uiStore.openModalWithData({
|
|
1594
|
+
name: COMMUNITY_PLUS_ENROLLMENT_MODAL,
|
|
1595
|
+
data: { customHeading: i18n.baseText("folders.registeredCommunity.cta.heading") }
|
|
1596
|
+
});
|
|
1597
|
+
return;
|
|
1598
|
+
}
|
|
1404
1599
|
if (!route.params.projectId) return;
|
|
1405
1600
|
const currentParent = currentFolder.value?.name || projectName.value;
|
|
1406
1601
|
if (!currentParent) return;
|
|
@@ -1431,12 +1626,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1431
1626
|
await foldersStore.moveFolder(
|
|
1432
1627
|
route.params.projectId,
|
|
1433
1628
|
payload.folder.id,
|
|
1434
|
-
payload.newParent.id
|
|
1629
|
+
payload.newParent.type === "project" ? "0" : payload.newParent.id
|
|
1435
1630
|
);
|
|
1436
1631
|
const isCurrentFolder = currentFolderId.value === payload.folder.id;
|
|
1437
1632
|
const newFolderURL = router.resolve({
|
|
1438
1633
|
name: VIEWS.PROJECTS_FOLDERS,
|
|
1439
|
-
params: {
|
|
1634
|
+
params: {
|
|
1635
|
+
projectId: route.params.projectId,
|
|
1636
|
+
folderId: payload.newParent.type === "project" ? void 0 : payload.newParent.id
|
|
1637
|
+
}
|
|
1440
1638
|
}).href;
|
|
1441
1639
|
if (isCurrentFolder) {
|
|
1442
1640
|
void router.push(newFolderURL);
|
|
@@ -1461,6 +1659,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1461
1659
|
}
|
|
1462
1660
|
};
|
|
1463
1661
|
const moveWorkflowToFolder = async (payload) => {
|
|
1662
|
+
if (showRegisteredCommunityCTA.value) {
|
|
1663
|
+
uiStore.openModalWithData({
|
|
1664
|
+
name: COMMUNITY_PLUS_ENROLLMENT_MODAL,
|
|
1665
|
+
data: { customHeading: i18n.baseText("folders.registeredCommunity.cta.heading") }
|
|
1666
|
+
});
|
|
1667
|
+
return;
|
|
1668
|
+
}
|
|
1464
1669
|
uiStore.openMoveToFolderModal(
|
|
1465
1670
|
"workflow",
|
|
1466
1671
|
{ id: payload.id, name: payload.name, parentFolderId: payload.parentFolderId },
|
|
@@ -1472,13 +1677,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1472
1677
|
try {
|
|
1473
1678
|
const newFolderURL = router.resolve({
|
|
1474
1679
|
name: VIEWS.PROJECTS_FOLDERS,
|
|
1475
|
-
params: {
|
|
1680
|
+
params: {
|
|
1681
|
+
projectId: route.params.projectId,
|
|
1682
|
+
folderId: payload.newParent.type === "project" ? void 0 : payload.newParent.id
|
|
1683
|
+
}
|
|
1476
1684
|
}).href;
|
|
1477
1685
|
const workflowResource = workflowsAndFolders.value.find(
|
|
1478
1686
|
(resource) => resource.id === payload.workflow.id
|
|
1479
1687
|
);
|
|
1480
1688
|
await workflowsStore.updateWorkflow(payload.workflow.id, {
|
|
1481
|
-
parentFolderId: payload.newParent.id,
|
|
1689
|
+
parentFolderId: payload.newParent.type === "project" ? "0" : payload.newParent.id,
|
|
1482
1690
|
versionId: workflowResource?.versionId
|
|
1483
1691
|
});
|
|
1484
1692
|
await fetchWorkflows();
|
|
@@ -1504,6 +1712,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1504
1712
|
toast.showError(error, i18n.baseText("folders.move.workflow.error.title"));
|
|
1505
1713
|
}
|
|
1506
1714
|
};
|
|
1715
|
+
const onCreateWorkflowClick = () => {
|
|
1716
|
+
void router.push({
|
|
1717
|
+
name: VIEWS.NEW_WORKFLOW,
|
|
1718
|
+
query: {
|
|
1719
|
+
projectId: currentProject.value?.id,
|
|
1720
|
+
parentFolderId: route.params.folderId
|
|
1721
|
+
}
|
|
1722
|
+
});
|
|
1723
|
+
};
|
|
1507
1724
|
return (_ctx, _cache) => {
|
|
1508
1725
|
const _component_N8nButton = resolveComponent("N8nButton");
|
|
1509
1726
|
const _component_N8nTooltip = resolveComponent("N8nTooltip");
|
|
@@ -1512,6 +1729,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1512
1729
|
const _component_n8n_loading = resolveComponent("n8n-loading");
|
|
1513
1730
|
const _component_FolderBreadcrumbs = __unplugin_components_0;
|
|
1514
1731
|
const _component_FolderCard = __unplugin_components_1;
|
|
1732
|
+
const _component_n8n_action_box = resolveComponent("n8n-action-box");
|
|
1515
1733
|
return openBlock(), createBlock(ResourcesListLayout, {
|
|
1516
1734
|
filters: filters.value,
|
|
1517
1735
|
"onUpdate:filters": [
|
|
@@ -1538,7 +1756,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1538
1756
|
onSort: onSortUpdated
|
|
1539
1757
|
}, createSlots({
|
|
1540
1758
|
header: withCtx(() => [
|
|
1541
|
-
createVNode(ProjectHeader, { onCreateFolder: createFolderInCurrent }
|
|
1759
|
+
createVNode(ProjectHeader, { onCreateFolder: createFolderInCurrent }, {
|
|
1760
|
+
default: withCtx(() => [
|
|
1761
|
+
unref(overview).isOverviewSubPage ? (openBlock(), createBlock(InsightsSummary, {
|
|
1762
|
+
key: 0,
|
|
1763
|
+
loading: unref(insightsStore).summary.isLoading,
|
|
1764
|
+
summary: unref(insightsStore).summary.state
|
|
1765
|
+
}, null, 8, ["loading", "summary"])) : createCommentVNode("", true)
|
|
1766
|
+
]),
|
|
1767
|
+
_: 1
|
|
1768
|
+
})
|
|
1542
1769
|
]),
|
|
1543
1770
|
callout: withCtx(() => [
|
|
1544
1771
|
showEasyAIWorkflowCallout.value && easyAICalloutVisible.value ? (openBlock(), createBlock(_component_N8nCallout, {
|
|
@@ -1610,13 +1837,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1610
1837
|
onAction: onFolderCardAction
|
|
1611
1838
|
}, null, 8, ["data", "actions", "read-only"])) : (openBlock(), createBlock(WorkflowCard, {
|
|
1612
1839
|
key: 1,
|
|
1613
|
-
"data-test-id": "resources-list-item",
|
|
1840
|
+
"data-test-id": "resources-list-item-workflow",
|
|
1614
1841
|
class: "mb-2xs",
|
|
1615
1842
|
data,
|
|
1616
1843
|
"workflow-list-event-bus": unref(workflowListEventBus),
|
|
1617
1844
|
"read-only": readOnlyEnv.value,
|
|
1618
1845
|
"onClick:tag": onClickTag,
|
|
1619
|
-
"onWorkflow:deleted":
|
|
1846
|
+
"onWorkflow:deleted": onWorkflowDeleted,
|
|
1620
1847
|
"onWorkflow:moved": fetchWorkflows,
|
|
1621
1848
|
"onWorkflow:duplicated": fetchWorkflows,
|
|
1622
1849
|
"onWorkflow:activeToggle": onWorkflowActiveToggle,
|
|
@@ -1624,7 +1851,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1624
1851
|
}, null, 8, ["data", "workflow-list-event-bus", "read-only"]))
|
|
1625
1852
|
]),
|
|
1626
1853
|
empty: withCtx(() => [
|
|
1627
|
-
createBaseVNode("div",
|
|
1854
|
+
createBaseVNode("div", _hoisted_5, [
|
|
1628
1855
|
createVNode(unref(N8nHeading), {
|
|
1629
1856
|
tag: "h2",
|
|
1630
1857
|
size: "xlarge",
|
|
@@ -1703,7 +1930,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1703
1930
|
], 2)) : createCommentVNode("", true)
|
|
1704
1931
|
]),
|
|
1705
1932
|
filters: withCtx(({ setKeyValue }) => [
|
|
1706
|
-
unref(settingsStore).areTagsEnabled ? (openBlock(), createElementBlock("div",
|
|
1933
|
+
unref(settingsStore).areTagsEnabled ? (openBlock(), createElementBlock("div", _hoisted_6, [
|
|
1707
1934
|
createVNode(unref(N8nInputLabel), {
|
|
1708
1935
|
label: unref(i18n).baseText("workflows.filters.tags"),
|
|
1709
1936
|
bold: false,
|
|
@@ -1718,7 +1945,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1718
1945
|
"onUpdate:modelValue": ($event) => setKeyValue("tags", $event)
|
|
1719
1946
|
}, null, 8, ["placeholder", "model-value", "onUpdate:modelValue"])
|
|
1720
1947
|
])) : createCommentVNode("", true),
|
|
1721
|
-
createBaseVNode("div",
|
|
1948
|
+
createBaseVNode("div", _hoisted_7, [
|
|
1722
1949
|
createVNode(unref(N8nInputLabel), {
|
|
1723
1950
|
label: unref(i18n).baseText("workflows.filters.status"),
|
|
1724
1951
|
bold: false,
|
|
@@ -1745,28 +1972,53 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1745
1972
|
}, 1032, ["model-value", "onUpdate:modelValue"])
|
|
1746
1973
|
])
|
|
1747
1974
|
]),
|
|
1975
|
+
postamble: withCtx(() => [
|
|
1976
|
+
workflowsAndFolders.value.length === 0 && currentFolder.value && !hasFilters.value ? (openBlock(), createElementBlock("div", {
|
|
1977
|
+
key: 0,
|
|
1978
|
+
class: normalizeClass(_ctx.$style["empty-folder-container"]),
|
|
1979
|
+
"data-test-id": "empty-folder-container"
|
|
1980
|
+
}, [
|
|
1981
|
+
createVNode(_component_n8n_action_box, {
|
|
1982
|
+
"data-test-id": "empty-folder-action-box",
|
|
1983
|
+
heading: unref(i18n).baseText("folders.empty.actionbox.title", {
|
|
1984
|
+
interpolate: { folderName: currentFolder.value.name }
|
|
1985
|
+
}),
|
|
1986
|
+
"button-text": unref(i18n).baseText("generic.create.workflow"),
|
|
1987
|
+
"button-type": "secondary",
|
|
1988
|
+
"button-disabled": readOnlyEnv.value || !projectPermissions.value.workflow.create,
|
|
1989
|
+
"onClick:button": onCreateWorkflowClick
|
|
1990
|
+
}, {
|
|
1991
|
+
disabledButtonTooltip: withCtx(() => [
|
|
1992
|
+
createTextVNode(toDisplayString(readOnlyEnv.value ? unref(i18n).baseText("readOnlyEnv.cantAdd.workflow") : unref(i18n).baseText("generic.missing.permissions")), 1)
|
|
1993
|
+
]),
|
|
1994
|
+
_: 1
|
|
1995
|
+
}, 8, ["heading", "button-text", "button-disabled"])
|
|
1996
|
+
], 2)) : createCommentVNode("", true)
|
|
1997
|
+
]),
|
|
1748
1998
|
_: 2
|
|
1749
1999
|
}, [
|
|
1750
|
-
|
|
2000
|
+
foldersEnabled.value || showRegisteredCommunityCTA.value ? {
|
|
1751
2001
|
name: "add-button",
|
|
1752
2002
|
fn: withCtx(() => [
|
|
1753
2003
|
createVNode(_component_N8nTooltip, {
|
|
1754
2004
|
placement: "top",
|
|
1755
|
-
disabled:
|
|
2005
|
+
disabled: !(isOverviewPage.value || !readOnlyEnv.value && hasPermissionToCreateFolders.value)
|
|
1756
2006
|
}, {
|
|
1757
2007
|
content: withCtx(() => [
|
|
1758
|
-
|
|
2008
|
+
isOverviewPage.value && !showRegisteredCommunityCTA.value ? (openBlock(), createElementBlock("span", _hoisted_1, [
|
|
2009
|
+
teamProjectsEnabled.value ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(unref(i18n).baseText("folders.add.overview.withProjects.message")), 1)) : (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(unref(i18n).baseText("folders.add.overview.community.message")), 1))
|
|
2010
|
+
])) : (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(currentParentName.value ? unref(i18n).baseText("folders.add.to.parent.message", {
|
|
1759
2011
|
interpolate: { parent: currentParentName.value }
|
|
1760
|
-
}) : unref(i18n).baseText("folders.add.here.message")), 1)
|
|
2012
|
+
}) : unref(i18n).baseText("folders.add.here.message")), 1))
|
|
1761
2013
|
]),
|
|
1762
2014
|
default: withCtx(() => [
|
|
1763
2015
|
createVNode(_component_N8nButton, {
|
|
1764
|
-
size: "
|
|
2016
|
+
size: "small",
|
|
1765
2017
|
icon: "folder-plus",
|
|
1766
2018
|
type: "tertiary",
|
|
1767
2019
|
"data-test-id": "add-folder-button",
|
|
1768
2020
|
class: normalizeClass(_ctx.$style["add-folder-button"]),
|
|
1769
|
-
disabled: readOnlyEnv.value || !hasPermissionToCreateFolders.value,
|
|
2021
|
+
disabled: !showRegisteredCommunityCTA.value && (readOnlyEnv.value || !hasPermissionToCreateFolders.value),
|
|
1770
2022
|
onClick: createFolderInCurrent
|
|
1771
2023
|
}, null, 8, ["class", "disabled"])
|
|
1772
2024
|
]),
|
|
@@ -1779,18 +2031,19 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1779
2031
|
};
|
|
1780
2032
|
}
|
|
1781
2033
|
});
|
|
1782
|
-
const actionsContainer = "
|
|
1783
|
-
const emptyStateCard = "
|
|
1784
|
-
const emptyStateCardIcon = "
|
|
2034
|
+
const actionsContainer = "_actionsContainer_f2oet_123";
|
|
2035
|
+
const emptyStateCard = "_emptyStateCard_f2oet_139";
|
|
2036
|
+
const emptyStateCardIcon = "_emptyStateCardIcon_f2oet_152";
|
|
1785
2037
|
const style0 = {
|
|
1786
2038
|
actionsContainer,
|
|
1787
|
-
"easy-ai-workflow-callout": "_easy-ai-workflow-
|
|
1788
|
-
"callout-trailing-content": "_callout-trailing-
|
|
2039
|
+
"easy-ai-workflow-callout": "_easy-ai-workflow-callout_f2oet_128",
|
|
2040
|
+
"callout-trailing-content": "_callout-trailing-content_f2oet_133",
|
|
1789
2041
|
emptyStateCard,
|
|
1790
2042
|
emptyStateCardIcon,
|
|
1791
|
-
"add-folder-button": "_add-folder-
|
|
1792
|
-
"breadcrumbs-container": "_breadcrumbs-
|
|
1793
|
-
"breadcrumbs-loading": "_breadcrumbs-
|
|
2043
|
+
"add-folder-button": "_add-folder-button_f2oet_161",
|
|
2044
|
+
"breadcrumbs-container": "_breadcrumbs-container_f2oet_166",
|
|
2045
|
+
"breadcrumbs-loading": "_breadcrumbs-loading_f2oet_172",
|
|
2046
|
+
"empty-folder-container": "_empty-folder-container_f2oet_178"
|
|
1794
2047
|
};
|
|
1795
2048
|
const cssModules = {
|
|
1796
2049
|
"$style": style0
|