n8n-editor-ui
Version:
Workflow Editor UI for n8n
2 lines • 14.1 kB
JavaScript
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`n8n@2.16.1`}}catch{}})();try{(function(){var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`73f19500-1ef1-4237-a39e-e1f1d37ac2d0`,e._sentryDebugIdIdentifier=`sentry-dbid-73f19500-1ef1-4237-a39e-e1f1d37ac2d0`)})()}catch{}import"./chunk-CACdhNlC.js";import{$ as e,A as t,C as n,E as r,F as i,Ft as a,N as o,S as s,Sn as c,T as l,W as ee,Wt as u,X as te,_ as d,_n as f,bt as ne,ft as re,gt as p,it as m,j as h,p as ie,q as ae,rt as g,vn as oe,w as _,yt as v}from"./vue.runtime.esm-bundler-C3C09Zii.js";import{at as y,v as b}from"./core-Bz5WjPxS.js";import{J as se,M as ce,Pi as le,Qi as ue,Rt as de,Xi as fe,_t as pe,ct as me,ht as he,ji as ge,jt as x,lt as _e,tt as ve,vt as ye}from"./src-XqE2yCpG.js";import{t as S}from"./_plugin-vue_export-helper-CIL7EULb.js";import{Ar as be,Or as xe,fr as Se,t as Ce,yr as C}from"./users.store-xP93bV7X.js";import{lc as w}from"./constants-DuQbSl-q.js";import{t as we}from"./useDebounce-DyDXl6eh.js";import{r as T}from"./readyToRun.store-DUyOyjE3.js";import{t as Te}from"./ResourceFiltersDropdown-BV4QI37D.js";var E={wrapper:`_wrapper_1bol0_125`,content:`_content_1bol0_141`},D={};function O(t,i){return e(),r(`div`,{class:f(t.$style.wrapper)},[m(t.$slots,`header`),n(`main`,{class:f(t.$style.content)},[m(t.$slots,`default`)],2)],2)}var Ee=S(D,[[`render`,O],[`__cssModules`,{$style:E}]]),De=S(o({__name:`PageViewLayoutList`,props:{overflow:{type:Boolean}},setup(t){return(i,a)=>(e(),r(`div`,{class:f({[i.$style.wrapper]:!0,[i.$style.overflow]:t.overflow})},[n(`div`,{class:f(i.$style.list)},[i.$slots.header?(e(),r(`div`,{key:0,class:f(i.$style.header)},[m(i.$slots,`header`)],2)):l(``,!0),n(`div`,{class:f(i.$style.body)},[m(i.$slots,`default`)],2)],2)],2))}}),[[`__cssModules`,{$style:{wrapper:`_wrapper_mbox7_125`,overflow:`_overflow_mbox7_130`,list:`_list_mbox7_130`,body:`_body_mbox7_130`}}]]);function Oe(){let e=T(),t=t=>e.isOverviewSubPage?`home`:t;return{saveProjectPreferencesToLocalStorage:(e,n,r)=>{let i=t(e);if(!i)return;let a=b(w,{});a.value[i]||(a.value[i]={}),a.value[i][n]={...a.value[i][n],...r}},loadProjectPreferencesFromLocalStorage:(e,n)=>{let r=t(e);return r&&b(`N8N_WORKFLOWS_LIST_PREFERENCES`,{}).value[r]?.[n]||{}},getProjectKey:t}}function ke(e){let t=y();return{getResourceText:(n,r,i)=>{let a=`${e}.${n}`,o=`resources.${n}`,s=r?`resources.${r}`:void 0;return C(a)?t.baseText(a,{interpolate:i}):C(o)?t.baseText(o,{interpolate:i}):s&&C(s)?t.baseText(s,{interpolate:i}):n.split(`.`).pop()?.replace(/([A-Z])/g,` $1`).trim()||n}}}var Ae={key:0,class:`resource-list-loading`},je={key:0},Me={key:0,class:`mt-xs`,"data-test-id":`resources-list-filters-applied-info`},Ne={key:0,class:`resource-list-loading resource-list-loading-instant`},k=o({__name:`ResourcesListLayout`,props:{resourceKey:{},displayName:{type:Function,default:e=>e.name||``},resources:{},disabled:{type:Boolean},initialize:{type:Function,default:async()=>{}},filters:{default:()=>({search:``,homeProject:``})},additionalFiltersHandler:{type:Function,default:void 0},shareable:{type:Boolean,default:!0},sortFns:{default:()=>({})},sortOptions:{default:()=>[`lastUpdated`,`lastCreated`,`nameAsc`,`nameDesc`]},type:{default:`list-full`},typeProps:{default:()=>({itemSize:80})},loading:{type:Boolean,default:!0},customPageSize:{default:25},availablePageSizeOptions:{default:()=>[10,25,50,100]},totalItems:{default:0},resourcesRefreshing:{type:Boolean,default:!1},dontPerformSortingAndFiltering:{type:Boolean,default:!1},hasEmptyState:{type:Boolean,default:!0},uiConfig:{default:()=>({searchEnabled:!0,showFiltersDropdown:!0,sortEnabled:!0})},tabKey:{default:`workflows`},persistKeyExclusions:{default:()=>[]}},emits:[`update:filters`,`click:add`,`update:pagination-and-sort`,`update:search`],setup(o,{expose:y,emit:b}){let S=me(),C=_e(),{callDebounced:w}=we(),T=Ce(),E=Se(),D=Oe(),O=o,{getResourceText:k}=ke(O.resourceKey),A=a(O.sortOptions[0]),j=a(!1),M=a(1),N=a(O.customPageSize),P=a(!1),F=a(null),I=a(null),L=a(null),R=a(O.customPageSize),z=a(O.sortOptions[0]),B=b;re();let V=s({get:()=>O.filters,set:e=>B(`update:filters`,e)}),Pe=s(()=>O.hasEmptyState&&O.resources.length===0&&!j.value&&!V.value.search&&!O.resourcesRefreshing),H=s(()=>Object.keys(V.value)),U=s(()=>O.dontPerformSortingAndFiltering?O.resources:O.resources.filter(e=>{let t=!0;if(V.value.homeProject&&be(e)&&(t&&=!!(`homeProject`in e&&e.homeProject&&e.homeProject.id===V.value.homeProject)),V.value.search){let n=V.value.search.toLowerCase();t&&=O.displayName(e).toLowerCase().includes(n)}return O.additionalFiltersHandler&&(t=O.additionalFiltersHandler(e,V.value,t)),t}).sort((e,t)=>{let n=xe(e)&&xe(t);switch(A.value){case`lastUpdated`:return n&&`updatedAt`in e&&`updatedAt`in t?O.sortFns.lastUpdated?O.sortFns.lastUpdated(e,t):new Date(t.updatedAt??``).valueOf()-new Date(e.updatedAt??``).valueOf():0;case`lastCreated`:return n&&`createdAt`in e&&`createdAt`in t?O.sortFns.lastCreated?O.sortFns.lastCreated(e,t):new Date(t.createdAt??``).valueOf()-new Date(e.createdAt??``).valueOf():0;case`nameAsc`:return O.sortFns.nameAsc?O.sortFns.nameAsc(e,t):O.displayName(e).trim().localeCompare(O.displayName(t).trim());case`nameDesc`:return O.sortFns.nameDesc?O.sortFns.nameDesc(e,t):O.displayName(t).trim().localeCompare(O.displayName(e).trim());default:return O.sortFns[A.value]?O.sortFns[A.value](e,t):0}}));p(()=>O.filters,e=>{V.value=e,K()&&(j.value=!0)}),p(()=>V.value.homeProject,()=>{X(`homeProject`)}),p(()=>V.value.tags,()=>{X(`tags`)}),p(()=>V.value.type,()=>{X(`type`)}),p(()=>V.value.search,()=>w(X,{debounceTime:1e3,trailing:!0},`search`)),p(()=>V.value.setupNeeded,()=>{X(`setupNeeded`)}),p(()=>V.value.incomplete,()=>{X(`incomplete`)}),p([()=>S.params?.projectId,()=>S.name],async()=>{await Z(),await $(),await O.initialize()}),te(async()=>{await $(),await O.initialize(),await ee(),K()&&(j.value=!0),window.addEventListener(`keydown`,W)}),ae(()=>{window.removeEventListener(`keydown`,W)});let W=e=>{O.uiConfig.searchEnabled&&(e.ctrlKey||e.metaKey)&&e.key===`f`&&(e.preventDefault(),Fe())},Fe=()=>{F.value&&F.value.focus()},G=e=>e===`search`?!1:typeof O.filters[e]==`boolean`?O.filters[e]:Array.isArray(O.filters[e])?O.filters[e].length>0:O.filters[e]!==``,Ie=s(()=>{let e=H.value.filter(G),t=[`showArchived`];return e.every(e=>t.includes(e))}),K=()=>!!H.value.find(G),q=async e=>{N.value=e,await Q(),B(`update:pagination-and-sort`,{pageSize:e})},J=async(e,t=!0)=>{A.value=e,t&&(await Q(),Ve()),B(`update:pagination-and-sort`,{sort:e})},Y=async(e,t=!0)=>{M.value=e,t&&await Q(),B(`update:pagination-and-sort`,{page:e})},X=e=>{if(P.value){if(e!==`reset`)return;setTimeout(()=>P.value=!1,1500)}let t=V.value,n=[],r=[];Object.keys(t).forEach(e=>{t[e]&&(n.push(e),r.push(e===`search`?null:t[e]))}),E.track(`User set filters in ${O.resourceKey} list`,{filters_set:n,filter_values:r,[`${O.resourceKey}_total_in_view`]:O.resources.length,[`${O.resourceKey}_after_filtering`]:U.value.length})},Le=e=>{B(`click:add`,e)},Re=e=>{B(`update:filters`,e)},Z=async()=>{Object.keys(V.value).forEach(e=>{V.value[e]=Array.isArray(V.value[e])?[]:``}),await Y(1,!1),P.value=!0,j.value=!1,X(`reset`),B(`update:filters`,V.value)},ze=()=>`itemSize`in O.typeProps?O.typeProps.itemSize:0,Be=()=>`columns`in O.typeProps?O.typeProps.columns:[],Ve=()=>{E.track(`User changed sorting in ${O.resourceKey} list`,{sorting:A.value})},He=e=>{j.value=e>0},Ue=e=>{V.value.search=e,B(`update:search`,e)},We=e=>O.availablePageSizeOptions.reduce((t,n)=>Math.abs(n-e)<Math.abs(t-e)?n:t),Q=async()=>{if(O.type!==`list-paginated`)return;let e={...S.query};M.value===1?delete e.page:e.page=M.value.toString(),N.value===R.value?delete e.pageSize:(e.pageSize=N.value.toString(),R.value=N.value),A.value!==z.value&&!O.persistKeyExclusions.includes(A.value)?(e.sort=A.value,z.value=A.value):delete e.sort,D.saveProjectPreferencesToLocalStorage(S.params.projectId??``,O.tabKey,{sort:O.persistKeyExclusions.includes(A.value)?z.value:A.value,pageSize:N.value}),await C.replace({query:Object.keys(e).length?e:void 0})},$=async()=>{if(O.type!==`list-paginated`)return;let e=S.query,t=D.loadProjectPreferencesFromLocalStorage(S.params.projectId??``,O.tabKey),n={};if(e.page){let t=parseInt(e.page,10);t>1&&(M.value=t,n.page=t)}if(e.pageSize??t.pageSize){let r=We(parseInt(e.pageSize||String(t.pageSize),10));N.value=r,n.pageSize=r,R.value=r}else N.value=O.customPageSize,n.pageSize=O.customPageSize;e.sort?A.value=n.sort=z.value=e.sort:t.sort?(await J(t.sort,!1),n.sort=t.sort,z.value=t.sort):A.value=O.sortOptions[0],B(`update:pagination-and-sort`,n)};return y({currentPage:M,setCurrentPage:Y,getScrollContainer:()=>O.type===`list-paginated`?L.value??null:I.value??null}),(a,s)=>(e(),_(Ee,null,{header:v(()=>[m(a.$slots,`header`,{},void 0,!0)]),default:v(()=>[o.loading?(e(),r(`div`,Ae,[h(u(x),{rows:25,"shrink-last":!1})])):(e(),r(d,{key:1},[Pe.value?(e(),r(`div`,je,[m(a.$slots,`empty`,{},()=>[h(u(le),{"data-test-id":`empty-resources-list`,icon:{type:`emoji`,value:`👋`},heading:u(k)(u(T).currentUser?.firstName?`empty.heading`:`empty.heading.userNotSetup`,u(T).currentUser?.firstName?`empty.heading`:`empty.heading.userNotSetup`,{name:u(T).currentUser?.firstName??``}),description:u(k)(`empty.description`),"button-text":u(k)(`empty.button`),"button-type":`secondary`,"button-disabled":o.disabled,"onClick:button":Le},{disabledButtonTooltip:v(()=>[t(c(u(k)(`empty.button.disabled.tooltip`)),1)]),_:1},8,[`heading`,`description`,`button-text`,`button-disabled`])],!0)])):(e(),_(De,{key:1},{header:v(()=>[n(`div`,{class:f(a.$style[`filters-row`])},[n(`div`,{class:f(a.$style.filters)},[m(a.$slots,`breadcrumbs`,{},void 0,!0),O.uiConfig.searchEnabled?(e(),_(u(ge),{key:0,ref_key:`search`,ref:F,"model-value":V.value.search,class:f(a.$style.search),placeholder:u(k)(`search.placeholder`,`search.placeholder`),size:`medium`,clearable:``,"data-test-id":`resources-list-search`,"onUpdate:modelValue":Ue},{prefix:v(()=>[h(u(ue),{icon:`search`})]),_:1},8,[`model-value`,`class`,`placeholder`])):l(``,!0),O.uiConfig.sortEnabled?(e(),r(`div`,{key:1,class:f(a.$style[`sort-and-filter`])},[h(u(pe),{modelValue:A.value,"onUpdate:modelValue":s[0]||=e=>A.value=e,size:`small`,class:f(a.$style.resourceList),"data-test-id":`resources-list-sort`,onChange:s[1]||=e=>J(A.value)},{default:v(()=>[(e(!0),r(d,null,g(o.sortOptions,t=>(e(),_(u(ye),{key:t,"data-test-id":`resources-list-sort-item`,value:t,label:u(k)(`sort.${t}`,`sort.${t}`)},null,8,[`value`,`label`]))),128))]),_:1},8,[`modelValue`,`class`])],2)):l(``,!0),O.uiConfig.showFiltersDropdown?(e(),r(`div`,{key:2,class:f(a.$style[`sort-and-filter`])},[h(Te,{keys:H.value,reset:Z,"model-value":V.value,shareable:o.shareable,"just-icon":!0,"onUpdate:modelValue":Re,"onUpdate:filtersLength":He},{default:v(e=>[m(a.$slots,`filters`,oe(i(e)),void 0,!0)]),_:3},8,[`keys`,`model-value`,`shareable`]),m(a.$slots,`add-button`,{},void 0,!0)],2)):l(``,!0)],2)],2),m(a.$slots,`callout`,{},void 0,!0),O.uiConfig.showFiltersDropdown?ne((e(),r(`div`,Me,[h(u(se),{bold:!1},{default:v(()=>[t(c(Ie.value?u(k)(`filters.active.shortText`,`filters.active.shortText`):u(k)(`filters.active`,`filters.active`))+` `,1),h(u(ve),{"data-test-id":`workflows-filter-reset`,size:`small`,onClick:Z},{default:v(()=>[t(c(u(k)(`filters.active.reset`,`filters.active.reset`)),1)]),_:1})]),_:1})],512)),[[ie,j.value]]):l(``,!0),s[4]||=n(`div`,{class:`pb-xs`},null,-1)]),default:v(()=>[m(a.$slots,`preamble`,{},void 0,!0),o.resourcesRefreshing?(e(),r(`div`,Ne,[h(u(x),{rows:N.value,"shrink-last":!1},null,8,[`rows`])])):U.value.length>0?(e(),r(`div`,{key:1,ref_key:`listWrapperRef`,ref:I,"data-test-id":`resources-list-wrapper`,class:f(a.$style.listWrapper)},[o.type===`list-full`?(e(),_(u(ce),{key:0,"data-test-id":`resources-list`,items:U.value,"item-size":ze(),"item-key":`id`},{default:v(({item:e,updateItemSize:t})=>[m(a.$slots,`default`,{data:e,updateItemSize:t},void 0,!0)]),_:3},8,[`items`,`item-size`])):o.type===`list-paginated`?(e(),r(`div`,{key:1,class:f(a.$style.paginatedListWrapper),"data-test-id":`paginated-list`},[n(`div`,{ref_key:`listItemsRef`,ref:L,class:f(a.$style.listItems)},[(e(!0),r(d,null,g(o.resources,(n,i)=>(e(),r(`div`,{key:i,class:f(a.$style.listItem)},[m(a.$slots,`item`,{item:n,index:i},()=>[t(c(n),1)],!0)],2))),128))],2),n(`div`,{class:f(a.$style.listPagination)},[h(u(de),{"current-page":M.value,"onUpdate:currentPage":[s[2]||=e=>M.value=e,Y],"page-size":N.value,"onUpdate:pageSize":s[3]||=e=>N.value=e,background:``,total:o.totalItems,"page-sizes":o.availablePageSizeOptions,layout:`total, prev, pager, next, sizes`,"data-test-id":`resources-list-pagination`,onSizeChange:q},null,8,[`current-page`,`page-size`,`total`,`page-sizes`])],2)],2)):l(``,!0),o.type===`datatable`?(e(),_(u(he),{key:2,"data-test-id":`resources-table`,class:f(a.$style.datatable),columns:Be(),rows:U.value,"current-page":M.value,"rows-per-page":N.value,"onUpdate:currentPage":Y,"onUpdate:rowsPerPage":q},{row:v(({columns:e,row:t})=>[m(a.$slots,`default`,{data:t,columns:e},void 0,!0)]),postdata:v(()=>[m(a.$slots,`postdata`,{},void 0,!0)]),_:3},8,[`class`,`columns`,`rows`,`current-page`,`rows-per-page`])):l(``,!0)],2)):K()||V.value.search!==``?(e(),_(u(fe),{key:2,color:`text-base`,size:`medium`,"data-test-id":`resources-list-empty`},{default:v(()=>[t(c(u(k)(`noResults`,`noResults`)),1)]),_:1})):l(``,!0),m(a.$slots,`postamble`,{},void 0,!0)]),_:3}))],64))]),_:3}))}}),A=`_filters_sk3u7_125`,j=`_search_sk3u7_161`,M=`_listWrapper_sk3u7_171`,N=`_paginatedListWrapper_sk3u7_177`,P=`_listItems_sk3u7_185`,F=`_listPagination_sk3u7_189`,I=`_datatable_sk3u7_216`,L=S(k,[[`__cssModules`,{$style:{"filters-row":`_filters-row_sk3u7_125`,filters:A,"sort-and-filter":`_sort-and-filter_sk3u7_143`,search:j,listWrapper:M,paginatedListWrapper:N,listItems:P,listPagination:F,datatable:I}}],[`__scopeId`,`data-v-83bc4a30`]]);export{L as t};
//# sourceMappingURL=ResourcesListLayout-BANHdcmL.js.map