n8n-editor-ui 1.91.1 → 1.93.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 (120) hide show
  1. package/dist/assets/{AnimatedSpinner-BrkRvAXQ.js → AnimatedSpinner-hbTZDd93.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DRamY8Fo.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CYzc5StE.js} +1 -1
  3. package/dist/assets/{AuthView-ehh7NFh5.js → AuthView-8SLMP0H_.js} +2 -2
  4. package/dist/assets/{CanvasChatSwitch-DUBgoMXw.js → CanvasChatSwitch-Dt8TgNJg.js} +22 -10
  5. package/dist/assets/{ChangePasswordView-BLFb7_-o.js → ChangePasswordView-DIRyDp89.js} +3 -3
  6. package/dist/assets/CollectionParameter-Cj4t6-hd.js +4 -0
  7. package/dist/assets/{CredentialsView-1uYUpp0G.js → CredentialsView-B6-VxAJ6.js} +26 -11
  8. package/dist/assets/{DemoFooter-CNfkqkRC.js → DemoFooter-CIHwH5PG.js} +8 -8
  9. package/dist/assets/{ErrorView-CmYweWFA.js → ErrorView-C7i0TZwT.js} +1 -1
  10. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-DAWTDTON.js → ExecutionsTime.vue_vue_type_script_setup_true_lang--2G21NNR.js} +2 -2
  11. package/dist/assets/{ExecutionsView-fotg1R4V.js → ExecutionsView-C_YtciAr.js} +10 -9
  12. package/dist/assets/{FileSaver.min-CcnqpaV-.js → FileSaver.min-bgn7Q9Gt.js} +1 -1
  13. package/dist/assets/{FixedCollectionParameter-BYR4RzWw.js → FixedCollectionParameter-BPCJ5aaq.js} +1 -1
  14. package/dist/assets/{ForgotMyPasswordView-CQMKtpr-.js → ForgotMyPasswordView-DyUaGd6Z.js} +3 -3
  15. package/dist/assets/{InsightsChartAverageRuntime-B-9BU5qw.js → InsightsChartAverageRuntime-BB2I2vpV.js} +4 -4
  16. package/dist/assets/{InsightsChartFailed-Bd1BlFEm.js → InsightsChartFailed-CN_Rl3Bl.js} +4 -4
  17. package/dist/assets/{InsightsChartFailureRate-DPTCueAp.js → InsightsChartFailureRate-CHKlg6tg.js} +4 -4
  18. package/dist/assets/{InsightsChartTimeSaved-CSVKB08W.js → InsightsChartTimeSaved-Cd05cM8q.js} +4 -4
  19. package/dist/assets/{InsightsChartTotal-Bxjmisao.js → InsightsChartTotal-ChAO7myf.js} +4 -4
  20. package/dist/assets/{InsightsDashboard-5cOORj5z.js → InsightsDashboard-BeCfBVUz.js} +10 -10
  21. package/dist/assets/{InsightsPaywall-Bdo_3Ic_.js → InsightsPaywall-Chz8CDc3.js} +1 -1
  22. package/dist/assets/{InsightsSummary-DB62HhNM.js → InsightsSummary-MECenLJQ.js} +1 -1
  23. package/dist/assets/{InsightsTableWorkflows-BEC5Yh0b.js → InsightsTableWorkflows-5rpYY7YT.js} +2 -2
  24. package/dist/assets/{Logo-CK8euEWT.js → Logo-DUDCllkm.js} +1 -1
  25. package/dist/assets/{LogsPanel-CrGEYFLo.js → LogsPanel-D9r5AcQH.js} +75 -106
  26. package/dist/assets/{LogsPanel-DLC2TAqh.css → LogsPanel-mTaFEGk_.css} +38 -34
  27. package/dist/assets/{MainHeader-CEPLiR-5.css → MainHeader-CEMGASqv.css} +18 -11
  28. package/dist/assets/{MainHeader-C7XOaZKu.js → MainHeader-DkKOOZ_D.js} +145 -79
  29. package/dist/assets/{MainSidebar-CKMiDGvH.css → MainSidebar-D1_1YFQZ.css} +13 -12
  30. package/dist/assets/{MainSidebar-DD_ugRL3.js → MainSidebar-ZUBIWeXm.js} +36 -19
  31. package/dist/assets/{NodeCreation-S2FoBcnW.js → NodeCreation-DCfAFuL5.js} +10 -5
  32. package/dist/assets/{NodeCreator-D9fmPdS2.css → NodeCreator-D18StsVZ.css} +1021 -174
  33. package/dist/assets/{NodeCreator-D6TKVgLu.js → NodeCreator-a0YVv1IE.js} +863 -418
  34. package/dist/assets/{NodeDetailsView-DtvMtBqp.js → NodeDetailsView-C5_hVJzj.js} +60 -47
  35. package/dist/assets/{NodeDetailsView-CGgV4Pn_.css → NodeDetailsView-pYP-34nS.css} +20 -20
  36. package/dist/assets/{NodeView-BPhaaoWK.js → NodeView-Bk9h8GYy.js} +49 -25
  37. package/dist/assets/{ProjectCardBadge-C_L_pqWA.js → ProjectCardBadge-DRlDZx3d.js} +38 -2
  38. package/dist/assets/{ProjectHeader-C0FZTxjm.js → ProjectHeader-DNm605Kk.js} +106 -64
  39. package/dist/assets/{ProjectSettings-DlggJ6Ti.js → ProjectSettings-Dge_6KaR.js} +3 -2
  40. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-BNtCDFSj.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-CUf0LkWR.js} +1 -1
  41. package/dist/assets/{ResourcesListLayout-HzoSFUaj.js → ResourcesListLayout-Bbl-1i4l.js} +156 -53
  42. package/dist/assets/{ResourcesListLayout-CtGME7aU.css → ResourcesListLayout-DuNjbsMn.css} +8 -8
  43. package/dist/assets/{RunData-C9dtm1M2.css → RunData-DQeENuzG.css} +12 -2
  44. package/dist/assets/{RunData-D8Eax0cQ.js → RunData-b0RE2JWc.js} +418 -207
  45. package/dist/assets/{RunDataAi-BF2gZZGr.css → RunDataAi-D9VLFXIf.css} +10 -51
  46. package/dist/assets/{RunDataAi-BUnCQIRN.js → RunDataAi-DnWcCR_0.js} +27 -310
  47. package/dist/assets/{RunDataJson-DXd3nZxI.js → RunDataJson-CptVuHuA.js} +7 -7
  48. package/dist/assets/{RunDataJsonActions-aivOaol2.js → RunDataJsonActions-3jjDztw7.js} +1 -1
  49. package/dist/assets/RunDataParsedAiContent-9EEUzCKp.css +176 -0
  50. package/dist/assets/RunDataParsedAiContent-BbXv-NPD.js +148 -0
  51. package/dist/assets/{RunDataSearch-DJ9BZGTu.js → RunDataSearch-B90wjsDA.js} +1 -1
  52. package/dist/assets/{RunDataTable-vEPCwbcC.js → RunDataTable-CpS78GlT.js} +3 -3
  53. package/dist/assets/{SamlOnboarding--OTxMEws.js → SamlOnboarding-Ch9K5rRW.js} +3 -3
  54. package/dist/assets/{SettingsApiView-BulxWyyY.js → SettingsApiView-9GU5n_rm.js} +1 -1
  55. package/dist/assets/{SettingsCommunityNodesView-4wwPXFO2.js → SettingsCommunityNodesView-CPnVRzNX.js} +24 -11
  56. package/dist/assets/{SettingsExternalSecrets-zt7dxBKK.js → SettingsExternalSecrets-D7xTMV9h.js} +1 -1
  57. package/dist/assets/{SettingsLdapView-xneO6UIv.js → SettingsLdapView-OfrjGKkt.js} +1 -1
  58. package/dist/assets/{SettingsLogStreamingView-_h8wUzum.js → SettingsLogStreamingView-C_VnOaeX.js} +1 -1
  59. package/dist/assets/{SettingsPersonalView-CwYMP4sk.js → SettingsPersonalView-Dm24akPV.js} +14 -13
  60. package/dist/assets/{SettingsSourceControl-B9Tg93u3.js → SettingsSourceControl-DDCmL82j.js} +1 -1
  61. package/dist/assets/{SettingsSso-XaL1PzfW.js → SettingsSso-BGGQ0Cpg.js} +14 -1
  62. package/dist/assets/{SettingsUsageAndPlan-Ci15FW81.js → SettingsUsageAndPlan-BzO_zdkH.js} +1 -1
  63. package/dist/assets/{SettingsUsersView-DBJV4vSK.js → SettingsUsersView-DHQUqhqB.js} +1 -1
  64. package/dist/assets/{SettingsView-DMzdPF-1.js → SettingsView-CbtAqjOX.js} +1 -1
  65. package/dist/assets/{SetupView-BqWgdvDq.js → SetupView-BME1OE6U.js} +3 -3
  66. package/dist/assets/{SetupWorkflowCredentialsButton-B2wnuUnF.js → SetupWorkflowCredentialsButton-DZr4TCPC.js} +1 -1
  67. package/dist/assets/{SetupWorkflowFromTemplateView-BwC_wFSc.js → SetupWorkflowFromTemplateView-CPkKEY04.js} +3 -3
  68. package/dist/assets/{SigninView-DpTLJJwD.js → SigninView-DUeRvOiY.js} +3 -3
  69. package/dist/assets/{SignoutView-dkTtOCo1.js → SignoutView-BC7SBunZ.js} +1 -1
  70. package/dist/assets/{SignupView-CJFJJO3L.js → SignupView-B5ecYJ2q.js} +3 -3
  71. package/dist/assets/{TemplateDetails-84YElIBA.js → TemplateDetails-DjanZgC1.js} +1 -1
  72. package/dist/assets/{TemplateList-CGsfKuVA.js → TemplateList-8TyNGxY-.js} +1 -1
  73. package/dist/assets/{TemplatesCollectionView-2y8KZk0I.js → TemplatesCollectionView-BkH4pJCv.js} +5 -5
  74. package/dist/assets/{TemplatesSearchView-DgosiOzl.js → TemplatesSearchView-Bcdhi1SL.js} +3 -3
  75. package/dist/assets/{TemplatesView-CgQSZO4a.js → TemplatesView-De2XB6We.js} +1 -1
  76. package/dist/assets/{TemplatesWorkflowView-2pSUmAbX.js → TemplatesWorkflowView-BVnwtrMa.js} +5 -5
  77. package/dist/assets/{TestDefinitionEditView-C26sWE7p.js → TestDefinitionEditView-DjmPnrTk.js} +7 -7
  78. package/dist/assets/{TestDefinitionListView-Cyl6bsLP.js → TestDefinitionListView-BL2s_qBZ.js} +1 -1
  79. package/dist/assets/{TestDefinitionNewView-CfIZ0atk.js → TestDefinitionNewView-B9BqJZST.js} +2 -2
  80. package/dist/assets/{TestDefinitionRootView-CYg7HBL-.js → TestDefinitionRootView-AlWyxbc0.js} +1 -1
  81. package/dist/assets/{VariablesView-BFE9B0_b.js → VariablesView-BZCvPfan.js} +4 -3
  82. package/dist/assets/{WorkerView-BUMCMS_B.js → WorkerView-CigxqnWi.js} +6 -6
  83. package/dist/assets/{WorkflowActivator-BDLto9c0.js → WorkflowActivator-B7jRy4L1.js} +8 -4
  84. package/dist/assets/{WorkflowActivator-DAyH7N29.css → WorkflowActivator-DrMTmuTZ.css} +2 -2
  85. package/dist/assets/{WorkflowExecutionsInfoAccordion-manN-WIj.js → WorkflowExecutionsInfoAccordion-C_ZycbsF.js} +1 -1
  86. package/dist/assets/{WorkflowExecutionsLandingPage-BzGmpGvf.js → WorkflowExecutionsLandingPage-DOqrfKlC.js} +2 -2
  87. package/dist/assets/{WorkflowExecutionsPreview-CNEV2lom.js → WorkflowExecutionsPreview-B4Cj2gXW.js} +6 -6
  88. package/dist/assets/{WorkflowExecutionsView-WiNvtAmD.js → WorkflowExecutionsView-RXfP7zkJ.js} +11 -9
  89. package/dist/assets/{WorkflowHistory-6uJJqB4x.js → WorkflowHistory-DrXrRwIS.js} +37 -19
  90. package/dist/assets/{WorkflowOnboardingView-CPt_AUR-.js → WorkflowOnboardingView-CXH1vCW2.js} +1 -1
  91. package/dist/assets/{WorkflowPreview-CHUEX6H6.js → WorkflowPreview-B_MuFEV8.js} +1 -1
  92. package/dist/assets/{WorkflowsView-B2_HJCJ5.css → WorkflowsView-CQvTAWQ0.css} +24 -13
  93. package/dist/assets/{WorkflowsView-DbGBRbfc.js → WorkflowsView-D90hfJ35.js} +300 -158
  94. package/dist/assets/{chartjs.utils-C--HONKb.js → chartjs.utils-DalQn9bk.js} +2 -2
  95. package/dist/assets/{dateFormatter-DbKqmK4w.js → dateFormatter-BPfJSa6q.js} +1 -1
  96. package/dist/assets/{easyAiWorkflowUtils-BWgfZ0am.js → easyAiWorkflowUtils-kgtpBx2h.js} +1 -1
  97. package/dist/assets/{global-link-actions-COf-9vBh.js → global-link-actions-CnWOMvqA.js} +1 -1
  98. package/dist/assets/{import-curl-BiXaU2jk.js → import-curl-BvX_O56D.js} +1 -1
  99. package/dist/assets/{index-B6xE9gZ1.js → index-Bb2NNknG.js} +1 -1
  100. package/dist/assets/{index-BLAboPd2.js → index-DZ6VpjNj.js} +4635 -2824
  101. package/dist/assets/{index-sq5ggyEC.css → index-yNaoC3fo.css} +363 -97
  102. package/dist/assets/{pickBy-gZHb6vZ2.js → pickBy-B_HGYyxS.js} +1 -1
  103. package/dist/assets/{templateActions-DCx74tPa.js → templateActions-DQfZ3ni5.js} +1 -1
  104. package/dist/assets/{useBeforeUnload-DbfysOS-.js → useBeforeUnload-Cu0LPVWe.js} +1 -1
  105. package/dist/assets/{useCanvasMapping-CSuq_dYj.js → useCanvasMapping-CTTq6x8X.js} +62 -40
  106. package/dist/assets/{useCanvasMapping-cuXLM-h-.css → useCanvasMapping-VtpW_QZA.css} +6 -5
  107. package/dist/assets/{useCanvasOperations-C0pQBHW3.js → useCanvasOperations-u8oSDa_u.js} +96 -445
  108. package/dist/assets/{useClearExecutionButtonVisible-Cvfxw8xC.js → useClearExecutionButtonVisible-Dwc1_eG9.js} +2 -2
  109. package/dist/assets/{useExecutionDebugging-D2H5O6fT.js → useExecutionDebugging-rc72wLIp.js} +1 -1
  110. package/dist/assets/{useExecutionHelpers-C--m0pTQ.js → useExecutionHelpers-DqwMonFW.js} +2 -2
  111. package/dist/assets/{useImportCurlCommand-XFn6Ezp2.js → useImportCurlCommand-D_onuFvo.js} +19 -10
  112. package/dist/assets/useProjectPages-e8b03-5_.js +17 -0
  113. package/dist/assets/usePushConnection-wm-7Id6Q.js +629 -0
  114. package/dist/assets/{useTestDefinitionForm-2YP-8pAN.js → useTestDefinitionForm-DlUOnNC0.js} +1 -1
  115. package/dist/assets/{useWorkflowActivate-CvmIpy5T.js → useWorkflowActivate-65xML23U.js} +1 -1
  116. package/dist/assets/useWorkflowSaving-CUel20JA.js +66 -0
  117. package/dist/index.html +2 -2
  118. package/package.json +1 -1
  119. package/dist/assets/CollectionParameter-BaH_a73u.js +0 -4
  120. package/dist/assets/usePushConnection-x0iF1Axz.js +0 -537
@@ -1,4 +1,5 @@
1
- import { _ as _export_sfc, i as createElementBlock, g as openBlock, x as renderSlot, k as createBaseVNode, n as normalizeClass, d as defineComponent, f as createCommentVNode, a1 as useProjectsStore, q as computed, X as watch, az as onBeforeMount, h as resolveComponent, e as createBlock, w as withCtx, m as unref, aa as EnterpriseEditionFeature, j as createVNode, c as useI18n, gp as ProjectSharing, l as createTextVNode, t as toDisplayString, R as useRoute, b as useRouter, G as useDebounce, u as useUsersStore, r as ref, fO as useSlots, gq as isSharedResource, gr as isResourceSortableByDate, o as onMounted, z as nextTick, y as onBeforeUnmount, F as Fragment, D as renderList, aA as withDirectives, b4 as normalizeProps, b5 as guardReactiveProps, aB as vShow, ag as useTelemetry } from "./index-BLAboPd2.js";
1
+ import { _ as _export_sfc, i as createElementBlock, g as openBlock, x as renderSlot, k as createBaseVNode, n as normalizeClass, d as defineComponent, f as createCommentVNode, a1 as useProjectsStore, q as computed, X as watch, az as onBeforeMount, h as resolveComponent, e as createBlock, w as withCtx, m as unref, aa as EnterpriseEditionFeature, j as createVNode, c as useI18n, gB as ProjectSharing, l as createTextVNode, t as toDisplayString, av as useLocalStorage, gC as LOCAL_STORAGE_WORKFLOW_LIST_PREFERENCES_KEY, R as useRoute, b as useRouter, G as useDebounce, u as useUsersStore, r as ref, fZ as useSlots, gD as isSharedResource, gE as isResourceSortableByDate, o as onMounted, z as nextTick, y as onBeforeUnmount, F as Fragment, D as renderList, aA as withDirectives, b4 as normalizeProps, b5 as guardReactiveProps, aB as vShow, ag as useTelemetry } from "./index-DZ6VpjNj.js";
2
+ import { u as useProjectPages } from "./useProjectPages-e8b03-5_.js";
2
3
  const wrapper$1 = "_wrapper_1x8n3_123";
3
4
  const content = "_content_1x8n3_139";
4
5
  const style0$3 = {
@@ -242,6 +243,46 @@ const cssModules$1 = {
242
243
  "$style": style0$1
243
244
  };
244
245
  const ResourceFiltersDropdown = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1]]);
246
+ function useN8nLocalStorage() {
247
+ const projectPages = useProjectPages();
248
+ const getProjectKey = (projectId) => {
249
+ return projectPages.isOverviewSubPage ? "home" : projectId;
250
+ };
251
+ const saveProjectPreferencesToLocalStorage = (projectId, tabKey, preferences) => {
252
+ const projectKey = getProjectKey(projectId);
253
+ if (!projectKey) {
254
+ return;
255
+ }
256
+ const localStorage = useLocalStorage(
257
+ LOCAL_STORAGE_WORKFLOW_LIST_PREFERENCES_KEY,
258
+ {}
259
+ );
260
+ if (!localStorage.value[projectKey]) {
261
+ localStorage.value[projectKey] = {};
262
+ }
263
+ localStorage.value[projectKey][tabKey] = {
264
+ ...localStorage.value[projectKey][tabKey],
265
+ ...preferences
266
+ };
267
+ };
268
+ const loadProjectPreferencesFromLocalStorage = (projectId, tabKey) => {
269
+ const projectKey = getProjectKey(projectId);
270
+ if (!projectKey) {
271
+ return {};
272
+ }
273
+ const localStorage = useLocalStorage(
274
+ LOCAL_STORAGE_WORKFLOW_LIST_PREFERENCES_KEY,
275
+ {}
276
+ );
277
+ const projectPreferences = localStorage.value[projectKey]?.[tabKey] || {};
278
+ return projectPreferences;
279
+ };
280
+ return {
281
+ saveProjectPreferencesToLocalStorage,
282
+ loadProjectPreferencesFromLocalStorage,
283
+ getProjectKey
284
+ };
285
+ }
245
286
  const _hoisted_1 = {
246
287
  key: 0,
247
288
  class: "resource-list-loading"
@@ -249,7 +290,8 @@ const _hoisted_1 = {
249
290
  const _hoisted_2 = { key: 0 };
250
291
  const _hoisted_3 = {
251
292
  key: 0,
252
- class: "mt-xs"
293
+ class: "mt-xs",
294
+ "data-test-id": "resources-list-filters-applied-info"
253
295
  };
254
296
  const _hoisted_4 = {
255
297
  key: 0,
@@ -280,7 +322,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
280
322
  dontPerformSortingAndFiltering: { type: Boolean, default: false },
281
323
  hasEmptyState: { type: Boolean, default: true }
282
324
  },
283
- emits: ["update:filters", "click:add", "update:current-page", "update:page-size", "sort", "update:search"],
325
+ emits: ["update:filters", "click:add", "update:pagination-and-sort", "update:search"],
284
326
  setup(__props, { expose: __expose, emit: __emit }) {
285
327
  const route = useRoute();
286
328
  const router = useRouter();
@@ -288,6 +330,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
288
330
  const { callDebounced } = useDebounce();
289
331
  const usersStore = useUsersStore();
290
332
  const telemetry = useTelemetry();
333
+ const n8nLocalStorage = useN8nLocalStorage();
291
334
  const props = __props;
292
335
  const sortBy = ref(props.sortOptions[0]);
293
336
  const hasFilters = ref(false);
@@ -295,6 +338,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
295
338
  const rowsPerPage = ref(props.customPageSize);
296
339
  const resettingFilters = ref(false);
297
340
  const search2 = ref(null);
341
+ const preferredPageSize = ref(props.customPageSize);
342
+ const preferredSort = ref(props.sortOptions[0]);
298
343
  const emit = __emit;
299
344
  useSlots();
300
345
  const filtersModel = computed({
@@ -391,21 +436,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
391
436
  sendFiltersTelemetry("incomplete");
392
437
  }
393
438
  );
394
- watch(
395
- () => sortBy.value,
396
- (newValue) => {
397
- emit("sort", newValue);
398
- sendSortingTelemetry();
399
- }
400
- );
401
- watch(
402
- () => route?.params?.projectId,
403
- async () => {
404
- await resetFilters();
405
- }
406
- );
439
+ watch([() => route.params?.projectId, () => route.name], async () => {
440
+ await resetFilters();
441
+ await loadPaginationPreferences();
442
+ await props.initialize();
443
+ });
407
444
  onMounted(async () => {
408
- await loadPaginationFromQueryString();
445
+ await loadPaginationPreferences();
409
446
  await props.initialize();
410
447
  await nextTick();
411
448
  if (hasAppliedFilters()) {
@@ -427,32 +464,52 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
427
464
  search2.value.focus();
428
465
  }
429
466
  };
430
- const hasAppliedFilters = () => {
431
- return !!filterKeys.value.find((key) => {
432
- if (key === "search") return false;
433
- if (typeof props.filters[key] === "boolean") {
434
- return props.filters[key];
435
- }
436
- if (Array.isArray(props.filters[key])) {
437
- return props.filters[key].length > 0;
438
- }
439
- return props.filters[key] !== "";
467
+ const isFilterApplied = (key) => {
468
+ if (key === "search") return false;
469
+ if (typeof props.filters[key] === "boolean") {
470
+ return props.filters[key];
471
+ }
472
+ if (Array.isArray(props.filters[key])) {
473
+ return props.filters[key].length > 0;
474
+ }
475
+ return props.filters[key] !== "";
476
+ };
477
+ const hasOnlyFiltersThatShowMoreResults = computed(() => {
478
+ const activeFilters = filterKeys.value.filter(isFilterApplied);
479
+ const filtersThatShowMoreResults = ["showArchived"];
480
+ return activeFilters.every((filter) => {
481
+ return filtersThatShowMoreResults.includes(filter);
440
482
  });
483
+ });
484
+ const hasAppliedFilters = () => {
485
+ return !!filterKeys.value.find(isFilterApplied);
441
486
  };
442
487
  const setRowsPerPage = async (numberOfRowsPerPage) => {
443
488
  rowsPerPage.value = numberOfRowsPerPage;
444
- await savePaginationToQueryString();
445
- emit("update:page-size", numberOfRowsPerPage);
489
+ await savePaginationPreferences();
490
+ emit("update:pagination-and-sort", {
491
+ pageSize: numberOfRowsPerPage
492
+ });
446
493
  };
447
- const setCurrentPage = async (page) => {
494
+ const setSorting = async (sort, persistUpdate = true) => {
495
+ sortBy.value = sort;
496
+ if (persistUpdate) {
497
+ await savePaginationPreferences();
498
+ }
499
+ emit("update:pagination-and-sort", {
500
+ sort
501
+ });
502
+ sendSortingTelemetry();
503
+ };
504
+ const setCurrentPage = async (page, persistUpdate = true) => {
448
505
  currentPage.value = page;
449
- await savePaginationToQueryString();
450
- emit("update:current-page", page);
506
+ if (persistUpdate) {
507
+ await savePaginationPreferences();
508
+ }
509
+ emit("update:pagination-and-sort", {
510
+ page
511
+ });
451
512
  };
452
- __expose({
453
- currentPage,
454
- setCurrentPage
455
- });
456
513
  const sendFiltersTelemetry = (source) => {
457
514
  if (resettingFilters.value) {
458
515
  if (source !== "reset") {
@@ -486,7 +543,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
486
543
  Object.keys(filtersModel.value).forEach((key) => {
487
544
  filtersModel.value[key] = Array.isArray(filtersModel.value[key]) ? [] : "";
488
545
  });
489
- await setCurrentPage(1);
546
+ await setCurrentPage(1, false);
490
547
  resettingFilters.value = true;
491
548
  hasFilters.value = false;
492
549
  sendFiltersTelemetry("reset");
@@ -521,7 +578,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
521
578
  (prev, curr) => Math.abs(curr - size) < Math.abs(prev - size) ? curr : prev
522
579
  );
523
580
  };
524
- const savePaginationToQueryString = async () => {
581
+ const savePaginationPreferences = async () => {
525
582
  if (props.type !== "list-paginated") {
526
583
  return;
527
584
  }
@@ -531,31 +588,75 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
531
588
  } else {
532
589
  delete currentQuery.page;
533
590
  }
534
- if (rowsPerPage.value !== props.customPageSize) {
591
+ if (rowsPerPage.value !== preferredPageSize.value) {
535
592
  currentQuery.pageSize = rowsPerPage.value.toString();
593
+ preferredPageSize.value = rowsPerPage.value;
536
594
  } else {
537
595
  delete currentQuery.pageSize;
538
596
  }
597
+ if (sortBy.value !== preferredSort.value) {
598
+ currentQuery.sort = sortBy.value;
599
+ preferredSort.value = sortBy.value;
600
+ } else {
601
+ delete currentQuery.sort;
602
+ }
603
+ n8nLocalStorage.saveProjectPreferencesToLocalStorage(
604
+ route.params.projectId ?? "",
605
+ "workflows",
606
+ {
607
+ sort: sortBy.value,
608
+ pageSize: rowsPerPage.value
609
+ }
610
+ );
539
611
  await router.replace({
540
612
  query: Object.keys(currentQuery).length ? currentQuery : void 0
541
613
  });
542
614
  };
543
- const loadPaginationFromQueryString = async () => {
615
+ const loadPaginationPreferences = async () => {
544
616
  if (props.type !== "list-paginated") {
545
617
  return;
546
618
  }
547
- const query = router.currentRoute.value.query;
619
+ const query = route.query;
620
+ const localStorageValues = n8nLocalStorage.loadProjectPreferencesFromLocalStorage(
621
+ route.params.projectId ?? "",
622
+ "workflows"
623
+ );
624
+ const emitPayload = {};
548
625
  if (query.page) {
549
- await setCurrentPage(parseInt(query.page, 10));
626
+ const newPage = parseInt(query.page, 10);
627
+ if (newPage > 1) {
628
+ currentPage.value = newPage;
629
+ emitPayload.page = newPage;
630
+ }
550
631
  }
551
- if (query.pageSize) {
552
- const parsedSize = parseInt(query.pageSize, 10);
553
- await setRowsPerPage(findNearestPageSize(parsedSize));
632
+ if (query.pageSize ?? localStorageValues.pageSize) {
633
+ const parsedSize = parseInt(
634
+ query.pageSize || String(localStorageValues.pageSize),
635
+ 10
636
+ );
637
+ const newPageSize = findNearestPageSize(parsedSize);
638
+ rowsPerPage.value = newPageSize;
639
+ emitPayload.pageSize = newPageSize;
640
+ preferredPageSize.value = newPageSize;
641
+ } else {
642
+ rowsPerPage.value = props.customPageSize;
643
+ emitPayload.pageSize = props.customPageSize;
554
644
  }
555
645
  if (query.sort) {
556
- sortBy.value = query.sort;
646
+ sortBy.value = emitPayload.sort = preferredSort.value = query.sort;
647
+ } else if (localStorageValues.sort) {
648
+ await setSorting(localStorageValues.sort, false);
649
+ emitPayload.sort = localStorageValues.sort;
650
+ preferredSort.value = localStorageValues.sort;
651
+ } else {
652
+ sortBy.value = props.sortOptions[0];
557
653
  }
654
+ emit("update:pagination-and-sort", emitPayload);
558
655
  };
656
+ __expose({
657
+ currentPage,
658
+ setCurrentPage
659
+ });
559
660
  return (_ctx, _cache) => {
560
661
  const _component_n8n_loading = resolveComponent("n8n-loading");
561
662
  const _component_n8n_action_box = resolveComponent("n8n-action-box");
@@ -635,7 +736,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
635
736
  modelValue: sortBy.value,
636
737
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => sortBy.value = $event),
637
738
  size: "small",
638
- "data-test-id": "resources-list-sort"
739
+ "data-test-id": "resources-list-sort",
740
+ onChange: _cache[1] || (_cache[1] = ($event) => setSorting(sortBy.value))
639
741
  }, {
640
742
  default: withCtx(() => [
641
743
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.sortOptions, (sortOption) => {
@@ -676,7 +778,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
676
778
  _ctx.showFiltersDropdown ? withDirectives((openBlock(), createElementBlock("div", _hoisted_3, [
677
779
  createVNode(_component_n8n_info_tip, { bold: false }, {
678
780
  default: withCtx(() => [
679
- createTextVNode(toDisplayString(unref(i18n).baseText(`${_ctx.resourceKey}.filters.active`)) + " ", 1),
781
+ createTextVNode(toDisplayString(hasOnlyFiltersThatShowMoreResults.value ? unref(i18n).baseText(`${_ctx.resourceKey}.filters.active.shortText`) : unref(i18n).baseText(`${_ctx.resourceKey}.filters.active`)) + " ", 1),
680
782
  createVNode(_component_n8n_link, {
681
783
  "data-test-id": "workflows-filter-reset",
682
784
  size: "small",
@@ -693,7 +795,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
693
795
  ], 512)), [
694
796
  [vShow, hasFilters.value]
695
797
  ]) : createCommentVNode("", true),
696
- _cache[3] || (_cache[3] = createBaseVNode("div", { class: "pb-xs" }, null, -1))
798
+ _cache[4] || (_cache[4] = createBaseVNode("div", { class: "pb-xs" }, null, -1))
697
799
  ]),
698
800
  default: withCtx(() => [
699
801
  renderSlot(_ctx.$slots, "preamble", {}, void 0, true),
@@ -724,7 +826,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
724
826
  _: 3
725
827
  }, 8, ["items", "item-size"])) : _ctx.type === "list-paginated" ? (openBlock(), createElementBlock("div", {
726
828
  key: 1,
727
- class: normalizeClass(_ctx.$style.paginatedListWrapper)
829
+ class: normalizeClass(_ctx.$style.paginatedListWrapper),
830
+ "data-test-id": "paginated-list"
728
831
  }, [
729
832
  createBaseVNode("div", {
730
833
  class: normalizeClass(_ctx.$style.listItems)
@@ -749,11 +852,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
749
852
  createVNode(_component_el_pagination, {
750
853
  "current-page": currentPage.value,
751
854
  "onUpdate:currentPage": [
752
- _cache[1] || (_cache[1] = ($event) => currentPage.value = $event),
855
+ _cache[2] || (_cache[2] = ($event) => currentPage.value = $event),
753
856
  setCurrentPage
754
857
  ],
755
858
  "page-size": rowsPerPage.value,
756
- "onUpdate:pageSize": _cache[2] || (_cache[2] = ($event) => rowsPerPage.value = $event),
859
+ "onUpdate:pageSize": _cache[3] || (_cache[3] = ($event) => rowsPerPage.value = $event),
757
860
  background: "",
758
861
  total: _ctx.totalItems,
759
862
  "page-sizes": _ctx.availablePageSizeOptions,
@@ -823,7 +926,7 @@ const style0 = {
823
926
  const cssModules = {
824
927
  "$style": style0
825
928
  };
826
- const ResourcesListLayout = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules], ["__scopeId", "data-v-b91b324f"]]);
929
+ const ResourcesListLayout = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules], ["__scopeId", "data-v-267490a8"]]);
827
930
  export {
828
931
  ResourcesListLayout as R
829
932
  };
@@ -754,7 +754,7 @@
754
754
  -------------------------- */
755
755
  /* BEM
756
756
  -------------------------- */
757
- .resource-list-loading[data-v-b91b324f] {
757
+ .resource-list-loading[data-v-267490a8] {
758
758
  position: relative;
759
759
  height: 0;
760
760
  width: 100%;
@@ -762,25 +762,25 @@
762
762
  /*
763
763
  Show the loading skeleton only if the loading takes longer than 300ms
764
764
  */
765
- animation: 0.01s linear 0.3s forwards changeVisibility-b91b324f;
765
+ animation: 0.01s linear 0.3s forwards changeVisibility-267490a8;
766
766
  }
767
- .resource-list-loading[data-v-b91b324f] .el-skeleton {
767
+ .resource-list-loading[data-v-267490a8] .el-skeleton {
768
768
  position: absolute;
769
769
  height: 100%;
770
770
  width: 100%;
771
771
  overflow: hidden;
772
772
  }
773
- .resource-list-loading[data-v-b91b324f] .el-skeleton > div > div:first-child .el-skeleton__item {
773
+ .resource-list-loading[data-v-267490a8] .el-skeleton > div > div:first-child .el-skeleton__item {
774
774
  height: 42px;
775
775
  margin: 0;
776
776
  }
777
- .resource-list-loading[data-v-b91b324f] .el-skeleton .el-skeleton__item {
777
+ .resource-list-loading[data-v-267490a8] .el-skeleton .el-skeleton__item {
778
778
  height: 69px;
779
779
  }
780
- .resource-list-loading-instant[data-v-b91b324f] {
781
- animation: 0.01s linear 0s forwards changeVisibility-b91b324f;
780
+ .resource-list-loading-instant[data-v-267490a8] {
781
+ animation: 0.01s linear 0s forwards changeVisibility-267490a8;
782
782
  }
783
- @keyframes changeVisibility-b91b324f {
783
+ @keyframes changeVisibility-267490a8 {
784
784
  from {
785
785
  height: 0;
786
786
  }
@@ -127,6 +127,10 @@
127
127
  border: 1px solid var(--color-foreground-base);
128
128
  border-radius: var(--border-radius-large);
129
129
  }
130
+ .node-error-view_compact .node-error-view__header {
131
+ margin: 0 auto var(--spacing-2xs) auto;
132
+ border-radius: var(--border-radius-base);
133
+ }
130
134
  .node-error-view__header-title {
131
135
  padding: var(--spacing-2xs) var(--spacing-s);
132
136
  border-bottom: 1px solid var(--color-danger-tint-1);
@@ -136,6 +140,9 @@
136
140
  border-radius: var(--border-radius-large) var(--border-radius-large) 0 0;
137
141
  color: var(--color-danger);
138
142
  }
143
+ .node-error-view_compact .node-error-view__header-title {
144
+ border-radius: var(--border-radius-base);
145
+ }
139
146
  .node-error-view__header-message {
140
147
  display: flex;
141
148
  justify-content: space-between;
@@ -213,6 +220,9 @@
213
220
  border: 1px solid var(--color-foreground-base);
214
221
  border-radius: var(--border-radius-large);
215
222
  }
223
+ .node-error-view_compact .node-error-view__info {
224
+ border-radius: var(--border-radius-base);
225
+ }
216
226
  .node-error-view__info-header {
217
227
  display: flex;
218
228
  align-items: center;
@@ -1718,7 +1728,7 @@ video {
1718
1728
  -------------------------- */
1719
1729
  /* BEM
1720
1730
  -------------------------- */
1721
- .run-data .code-node-editor[data-v-5b056086] {
1731
+ .run-data .code-node-editor[data-v-148793aa] {
1722
1732
  height: 100%;
1723
1733
  }/* BEM support Func
1724
1734
  -------------------------- */
@@ -1842,7 +1852,7 @@ video {
1842
1852
  -------------------------- */
1843
1853
  /* BEM
1844
1854
  -------------------------- */
1845
- [data-v-5b056086] .highlight {
1855
+ [data-v-148793aa] .highlight {
1846
1856
  background-color: #f7dc55;
1847
1857
  color: black;
1848
1858
  border-radius: var(--border-radius-base);