ezux 1.1.19 → 1.1.21
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/README.md +7 -1
- package/dist/{DeleteConfirmationModal-CukNDgtX.cjs → DeleteConfirmationModal-BM1PoL6P.cjs} +1 -1
- package/dist/{DeleteConfirmationModal-p8XGDGIw.js → DeleteConfirmationModal-B_tXm0N0.js} +4 -4
- package/dist/{EzEventModal-BrCBSXBM.cjs → EzEventModal-D1EzXBsQ.cjs} +1 -1
- package/dist/{EzEventModal-BDSHG11m.js → EzEventModal-D5lX9XuW.js} +2 -2
- package/dist/{EzFlow-CQFeY7DL.cjs → EzFlow-B4qRm5KH.cjs} +3 -3
- package/dist/{EzFlow-C74NbZA9.js → EzFlow-CEfPykao.js} +278 -278
- package/dist/EzKanban-2b9skOep.cjs +2 -0
- package/dist/{EzKanban-COcGidzh.js → EzKanban-CpYH8b8g.js} +86 -80
- package/dist/{EzLayout-CiaPLniV.js → EzLayout-DFxegglu.js} +30 -24
- package/dist/EzLayout-EYOfpFXs.cjs +1 -0
- package/dist/{EzScheduler-CjQbi1Na.js → EzScheduler-D7aH4KCY.js} +60 -55
- package/dist/EzScheduler-hC9PsLrI.cjs +1 -0
- package/dist/{EzSchedulerQuickAdd-BeNfGdWs.cjs → EzSchedulerQuickAdd-BYrV9PQ-.cjs} +1 -1
- package/dist/{EzSchedulerQuickAdd-BIC8xbSn.js → EzSchedulerQuickAdd-D0kGTzE3.js} +2 -2
- package/dist/{EzSchedulerToolbar-jMw8KB8k.js → EzSchedulerToolbar-BhlCMeOT.js} +2 -2
- package/dist/{EzSchedulerToolbar-ihfe-5Yd.cjs → EzSchedulerToolbar-Dy62PVnH.cjs} +1 -1
- package/dist/{EzSignature-7UHO5lSP.js → EzSignature-B-CPcf7e.js} +5 -2
- package/dist/{EzSignature-Df7UZ-IS.cjs → EzSignature-DcmWBPIL.cjs} +1 -1
- package/dist/EzTable-Bcq7TByw.cjs +3 -0
- package/dist/{EzTable-D2p1IWHc.js → EzTable-DLbb3nl7.js} +1296 -1161
- package/dist/EzTableEditDialog--8pD39Rp.cjs +1 -0
- package/dist/EzTableEditDialog-m0zW6r6z.js +100 -0
- package/dist/{EzTableFooter-DrLoWelo.js → EzTableFooter-BuTS3wDK.js} +1 -1
- package/dist/{EzTableToolbar-DwuumvWP.cjs → EzTableToolbar-BWjqKfwx.cjs} +1 -1
- package/dist/{EzTableToolbar-BH5z9fSJ.js → EzTableToolbar-BiRfKm9d.js} +2 -2
- package/dist/{EzTreeView-D1G0Aomc.js → EzTreeView-B2B_Ruwm.js} +37 -37
- package/dist/EzTreeView-DLoPKe2i.cjs +1 -0
- package/dist/{KanbanBoard-BsZP_PJi.js → KanbanBoard-CRF0-mYa.js} +119 -119
- package/dist/{KanbanBoard-C9bjU_gk.cjs → KanbanBoard-DdXD-Zjt.cjs} +1 -1
- package/dist/advanced.cjs +2 -2
- package/dist/advanced.es.js +30 -29
- package/dist/card-NlCLCGFb.cjs +1 -0
- package/dist/{card-ZUNxcdIM.js → card-urNaa5h-.js} +1 -1
- package/dist/{checkbox-BrCh_Iid.cjs → checkbox-B9yPkCYi.cjs} +1 -1
- package/dist/{checkbox-DRkQuB4W.js → checkbox-BTuckDEm.js} +1 -1
- package/dist/components/EzTable/EzTableEditDialog.d.ts +1 -1
- package/dist/components/EzTable/hooks/useTableFiltering.d.ts +6 -6
- package/dist/components/EzTable/hooks/useTableHistory.d.ts +3 -3
- package/dist/components/EzTable/hooks/useTableImperative.d.ts +9 -6
- package/dist/components/EzTable/hooks/useTableState.d.ts +12 -12
- package/dist/components/EzTable/types/EzTableProps.d.ts +9 -1
- package/dist/ezux.css +1 -1
- package/dist/flow.cjs +1 -1
- package/dist/flow.es.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.es.js +20 -20
- package/dist/input-CcRi0LeO.js +14 -0
- package/dist/input-DOh8O0iX.cjs +1 -0
- package/dist/kanban.cjs +1 -1
- package/dist/kanban.es.js +2 -2
- package/dist/layout.cjs +1 -1
- package/dist/layout.es.js +1 -1
- package/dist/mock-services.cjs +1 -1
- package/dist/mock-services.es.js +1 -1
- package/dist/scheduler.cjs +1 -1
- package/dist/scheduler.es.js +1 -1
- package/dist/signature.cjs +1 -1
- package/dist/signature.es.js +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.es.js +1 -1
- package/dist/theme-vars.css +25 -5
- package/dist/treeview.cjs +1 -1
- package/dist/treeview.es.js +1 -1
- package/package.json +39 -36
- package/dist/EzKanban-DokdXGqQ.cjs +0 -2
- package/dist/EzLayout-BGnqFtvO.cjs +0 -1
- package/dist/EzScheduler-B8nV1VWY.cjs +0 -1
- package/dist/EzTable-CEXvJR1t.cjs +0 -3
- package/dist/EzTableEditDialog-BXnnYSSy.cjs +0 -1
- package/dist/EzTableEditDialog-Ccd5XoHm.js +0 -84
- package/dist/EzTreeView-KMGlU4ax.cjs +0 -1
- package/dist/card-CPlRZxbq.cjs +0 -1
- package/dist/input-CYlvlbF7.cjs +0 -1
- package/dist/input-Cj3sQK3M.js +0 -14
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./button-BBMwzUtG.cjs"),n=require("./input-DOh8O0iX.cjs"),r=require("./label-BGgvoZWD.cjs"),i=require("./EzErrorBoundary-d_2g-_EK.cjs"),a=require("./useInitCoreServices-DlALVDNx.cjs"),o=require("./NotificationPanel-CFME00wq.cjs"),s=require("./card-NlCLCGFb.cjs"),c=require("./EzScheduler-hC9PsLrI.cjs"),l=require("./useServiceState-PyYQWxHi.cjs"),u=require("./popover-wZKNvYM5.cjs"),d=require("./select-sVieKbLu.cjs"),f=require("./checkbox-B9yPkCYi.cjs"),p=require("./KanbanBoard-DdXD-Zjt.cjs"),m=require("./scroll-area-DSkE2KB_.cjs"),h=require("./DeleteConfirmationModal-BM1PoL6P.cjs");let g=require("react");g=e.y(g,1);let _=require("lucide-react"),v=require("react/jsx-runtime"),y=require("@tanstack/store"),b=require("@tanstack/react-store"),x=require("@tanstack/react-query");var S=()=>(0,v.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,v.jsxs)(`div`,{className:`flex flex-col items-center gap-4 max-w-md`,children:[(0,v.jsx)(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-full bg-destructive/10`,children:(0,v.jsx)(_.AlertTriangle,{className:`w-8 h-8 text-destructive`})}),(0,v.jsxs)(`div`,{className:`flex flex-col items-center gap-2 text-center`,children:[(0,v.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Kanban Board Error`}),(0,v.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`An error occurred while rendering the Kanban board. Please refresh the page or contact support if the issue persists.`})]}),(0,v.jsx)(t.t,{onClick:()=>window.location.reload(),children:`Reload Board`})]})}),C=(e,t=`standard`)=>new y.Store({board:e,selectedCards:[],selectedColumnId:null,view:t,searchQuery:``,activeFilters:{},history:[e],historyIndex:0}),w=e=>({setBoard:t=>{e.setState(e=>{let n=[...e.history.slice(0,e.historyIndex+1),t];return{...e,board:t,history:n,historyIndex:n.length-1}})},addCard:t=>{e.setState(e=>{let n={...e.board,cards:[...e.board.cards,t]},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},updateCard:(t,n)=>{e.setState(e=>{let r={...e.board,cards:e.board.cards.map(e=>e.id===t?{...e,...n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},deleteCard:t=>{e.setState(e=>{let n={...e.board,cards:e.board.cards.filter(e=>e.id!==t)},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},moveCard:(t,n)=>{e.setState(e=>{let r={...e.board,cards:e.board.cards.map(e=>e.id===t?{...e,columnId:n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},addColumn:t=>{e.setState(e=>{let n={...e.board,columns:[...e.board.columns,t]},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},updateColumn:(t,n)=>{e.setState(e=>{let r={...e.board,columns:e.board.columns.map(e=>e.id===t?{...e,...n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},deleteColumn:t=>{e.setState(e=>{let n={...e.board,columns:e.board.columns.filter(e=>e.id!==t),cards:e.board.cards.filter(e=>e.columnId!==t)},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},setSelectedCards:t=>{e.setState(e=>({...e,selectedCards:t}))},setSelectedColumnId:t=>{e.setState(e=>({...e,selectedColumnId:t}))},setView:t=>{e.setState(e=>({...e,view:t}))},setSearchQuery:t=>{e.setState(e=>({...e,searchQuery:t}))},setActiveFilters:t=>{e.setState(e=>({...e,activeFilters:t}))},undo:()=>{e.setState(e=>e.historyIndex>0?{...e,board:e.history[e.historyIndex-1],historyIndex:e.historyIndex-1}:e)},redo:()=>{e.setState(e=>e.historyIndex<e.history.length-1?{...e,board:e.history[e.historyIndex+1],historyIndex:e.historyIndex+1}:e)},canUndo:()=>e.state.historyIndex>0,canRedo:()=>e.state.historyIndex<e.state.history.length-1}),T={id:`default-board`,name:`Default Board`,columns:[],cards:[],settings:{allowDragAndDrop:!0,allowMultiSelect:!0,enableWipLimits:!1,defaultView:`standard`},createdAt:new Date,updatedAt:new Date},E=e=>{let t=e.board||T,n=t.id,r=(0,g.useMemo)(()=>C(t,e.view),[n,e.view]),i=(0,g.useMemo)(()=>w(r),[r]),a=(0,b.useStore)(r,e=>e.board),o=(0,b.useStore)(r,e=>e.selectedCards),s=(0,b.useStore)(r,e=>e.selectedColumnId),c=(0,b.useStore)(r,e=>e.view),l=(0,b.useStore)(r,e=>e.searchQuery),u=(0,b.useStore)(r,e=>e.activeFilters),d=(0,g.useRef)(e.board?JSON.stringify(e.board):``),f=(0,g.useRef)(e.view);return(0,g.useEffect)(()=>{if(!e.board)return;let t=JSON.stringify(e.board);t!==d.current&&(d.current=t,i.setBoard(e.board)),e.view&&e.view!==f.current&&(f.current=e.view,i.setView(e.view))},[e.board,e.view,i]),{board:a,selectedCards:o,selectedColumnId:s,view:c,searchQuery:l,activeFilters:u,setBoard:i.setBoard,setSelectedCards:i.setSelectedCards,setSelectedColumnId:i.setSelectedColumnId,setView:i.setView,setSearchQuery:i.setSearchQuery,setActiveFilters:i.setActiveFilters,addCard:i.addCard,updateCard:i.updateCard,deleteCard:i.deleteCard,moveCard:i.moveCard,addColumn:i.addColumn,updateColumn:i.updateColumn,deleteColumn:i.deleteColumn,undo:i.undo,redo:i.redo,canUndo:i.canUndo(),canRedo:i.canRedo(),store:r,actions:i}},D=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createCard(n.id,e):await t.onCardCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r={...n,cards:[...n.cards,e]};return s(r),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create card. Please try again.`,5e3)},onSuccess:e=>{o(`success`,`Card "${e.title}" created successfully`)}}),l=(0,g.useCallback)(async e=>{let t={id:`card-${Date.now()}`,type:e.type||`standard`,title:e.title||`New Card`,description:e.description,columnId:e.columnId||n.columns[0]?.id||``,position:e.position??n.cards.filter(t=>t.columnId===e.columnId).length,assignees:e.assignees||[],tags:e.tags||[],priority:e.priority,metadata:e.metadata||{},createdBy:`current-user`,createdAt:new Date,updatedBy:`current-user`,updatedAt:new Date,...e};return c.mutateAsync(t)},[n,c]),u=(0,x.useMutation)({mutationFn:async({cardId:e,updates:r})=>{let i=a();if(i)await i.updateCard(e,r);else{let i=n.cards.find(t=>t.id===e);i&&await t.onCardUpdate?.({...i,...r},`edit`)}return{cardId:e,updates:r}},onMutate:async({cardId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]),a=n.cards.map(n=>n.id===e?{...n,...t,updatedAt:new Date}:n),o={...n,cards:a};return s(o),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update card`,5e3)},onSuccess:()=>{o(`success`,`Card updated successfully`,2e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({cardId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteCard(e):await t.onCardDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r={...n,cards:n.cards.filter(t=>t.id!==e)};return s(r),{previousBoard:t,deletedCardTitle:t?.cards.find(t=>t.id===e)?.title}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete card`,5e3)},onSuccess:(e,t,n)=>{let r=n?.deletedCardTitle||`Card`;o(`success`,`Card "${r}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let{cardId:r,targetColumnId:i,targetSwimlaneId:o,targetPosition:s}=e,c=a();if(c)await c.moveCard(r,i,o,s);else{let e=n.cards.find(e=>e.id===r);e&&await t.onCardUpdate?.({...e,columnId:i,swimlaneId:o},`move`)}},onMutate:async({cardId:e,targetColumnId:t,targetSwimlaneId:r,targetPosition:a})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let o=i.getQueryData([`board`,n.id]),c=n.cards.find(t=>t.id===e);if(!c)return{previousBoard:o};let l=n.cards.filter(t=>t.id!==e),u=l.filter(e=>e.columnId===t).sort((e,t)=>(e.position??0)-(t.position??0)),d=a===void 0?u.length:Math.min(a,u.length),f=[...u.slice(0,d),{...c,columnId:t,swimlaneId:r,updatedAt:new Date},...u.slice(d)].map((e,t)=>({...e,position:t})),p=c.columnId,m=l.filter(e=>e.columnId===p).sort((e,t)=>(e.position??0)-(t.position??0)).map((e,t)=>({...e,position:t})),h=[...l.filter(e=>e.columnId!==t&&e.columnId!==p),...m,...f],g={...n,cards:h};return s(g),{previousBoard:o}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to move card`,3e3)}});return{createCard:l,updateCard:d,deleteCard:p,moveCard:(0,g.useCallback)(async(e,t,n,r)=>m.mutateAsync({cardId:e,targetColumnId:t,targetSwimlaneId:n,targetPosition:r}),[m]),duplicateCard:(0,g.useCallback)(async e=>{let t=n.cards.find(t=>t.id===e);if(!t)throw Error(`Card not found`);let r={...t,id:`card-${Date.now()}`,title:`${t.title} (Copy)`,position:(t.position??0)+1,createdAt:new Date,updatedAt:new Date};return l(r)},[n.cards,l]),archiveCard:(0,g.useCallback)(async e=>d(e,{isArchived:!0}),[d]),restoreCard:(0,g.useCallback)(async e=>d(e,{isArchived:!1}),[d])}},O=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createColumn(n.id,e):await t.onColumnCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r={...n,columns:[...n.columns,e]};return s(r),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create column`,5e3)},onSuccess:e=>{o(`success`,`Column "${e.name}" added`)}}),l=(0,g.useCallback)(async e=>{let t={id:`column-${Date.now()}`,name:e.name||`New Column`,color:e.color,icon:e.icon,wipLimit:e.wipLimit,position:e.position??n.columns.length,isCollapsed:!1,...e};return c.mutateAsync(t)},[n.columns.length,c]),u=(0,x.useMutation)({mutationFn:async({columnId:e,updates:r})=>{let i=a();if(i)await i.updateColumn(e,r);else{let i=n.columns.find(t=>t.id===e);i&&await t.onColumnUpdate?.({...i,...r})}return{columnId:e,updates:r}},onMutate:async({columnId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]),a={...n,columns:n.columns.map(n=>n.id===e?{...n,...t}:n)};return s(a),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update column`,5e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({columnId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteColumn(e):await t.onColumnDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r=t?.columns.find(t=>t.id===e),a={...n,columns:n.columns.filter(t=>t.id!==e),cards:n.cards.filter(t=>t.columnId!==e)};return s(a),{previousBoard:t,deletedColumnName:r?.name}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete column`,5e3)},onSuccess:(e,t,n)=>{let r=n?.deletedColumnName||`Column`;o(`success`,`Column "${r}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let t=a();if(t){let n=e.map((e,n)=>t.updateColumn(e,{position:n}));await Promise.all(n)}return e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r={...n,columns:e.map((e,t)=>{let r=n.columns.find(t=>t.id===e);if(!r)throw Error(`Column ${e} not found`);return{...r,position:t}})};return s(r),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to reorder columns`,3e3)}});return{createColumn:l,updateColumn:d,deleteColumn:p,reorderColumns:(0,g.useCallback)(async e=>m.mutateAsync(e),[m]),collapseColumn:(0,g.useCallback)(e=>{d(e,{isCollapsed:!0})},[d]),expandColumn:(0,g.useCallback)(e=>{d(e,{isCollapsed:!1})},[d])}},k=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createSwimlane(n.id,e):await t.onSwimlaneCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r={...n,swimlanes:[...n.swimlanes||[],e]};return s(r),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create swimlane`,5e3)},onSuccess:e=>{o(`success`,`Swimlane "${e.name}" added`)}}),l=(0,g.useCallback)(async e=>{let t={id:`swimlane-${Date.now()}`,name:e.name||`New Swimlane`,type:e.type||`custom`,color:e.color,position:e.position??(n.swimlanes?.length||0),isCollapsed:!1,...e};return c.mutateAsync(t)},[n.swimlanes,c]),u=(0,x.useMutation)({mutationFn:async({swimlaneId:e,updates:r})=>{let i=a();if(i)await i.updateSwimlane(e,r);else{let i=n.swimlanes?.find(t=>t.id===e);i&&await t.onSwimlaneUpdate?.({...i,...r})}return{swimlaneId:e,updates:r}},onMutate:async({swimlaneId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]),a={...n,swimlanes:(n.swimlanes||[]).map(n=>n.id===e?{...n,...t}:n)};return s(a),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update swimlane`,5e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({swimlaneId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteSwimlane(e):await t.onSwimlaneDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r=t?.swimlanes?.find(t=>t.id===e),a={...n,swimlanes:(n.swimlanes||[]).filter(t=>t.id!==e),cards:n.cards.map(t=>t.swimlaneId===e?{...t,swimlaneId:void 0}:t)};return s(a),{previousBoard:t,deletedSwimlaneName:r?.name}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete swimlane`,5e3)},onSuccess:(e,t,n)=>{let r=n?.deletedSwimlaneName||`Swimlane`;o(`success`,`Swimlane "${r}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let t=a();if(t){let n=e.map((e,n)=>t.updateSwimlane(e,{position:n}));await Promise.all(n)}return e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r={...n,swimlanes:e.map((e,t)=>{let r=n.swimlanes?.find(t=>t.id===e);return r?{...r,position:t}:null}).filter(Boolean)};return s(r),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to reorder swimlanes`,3e3)}});return{createSwimlane:l,updateSwimlane:d,deleteSwimlane:p,reorderSwimlanes:(0,g.useCallback)(async e=>m.mutateAsync(e),[m]),collapseSwimlane:(0,g.useCallback)(e=>{d(e,{isCollapsed:!0}),t.onSwimlaneToggle?.({swimlaneId:e,isCollapsed:!0})},[d,t.onSwimlaneToggle]),expandSwimlane:(0,g.useCallback)(e=>{d(e,{isCollapsed:!1}),t.onSwimlaneToggle?.({swimlaneId:e,isCollapsed:!1})},[d,t.onSwimlaneToggle])}},A=e=>{let[t,n]=(0,g.useState)(``),[r,i]=(0,g.useState)({});return{filteredCards:(0,g.useMemo)(()=>e.cards.filter(e=>{if(t){let n=t.toLowerCase();if(!(e.title.toLowerCase().includes(n)||e.description?.toLowerCase().includes(n)||e.tags.some(e=>e.name.toLowerCase().includes(n))))return!1}return!(r.tags&&r.tags.length>0&&!e.tags.some(e=>r.tags?.includes(e.id))||r.assignees&&r.assignees.length>0&&!e.assignees.some(e=>r.assignees?.includes(e.id))||r.priority&&r.priority.length>0&&e.priority&&!r.priority.includes(e.priority)||r.columns&&r.columns.length>0&&!r.columns.includes(e.columnId))}),[e.cards,t,r]),searchQuery:t,setSearchQuery:n,activeFilters:r,setActiveFilters:i,clearFilters:()=>{n(``),i({})}}},ee=(t,n,r=!1,i)=>{let a=e.n(),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(null);return{draggedCard:o,dragOverColumn:c,dragOverSwimlane:u,handleDragStart:(0,g.useCallback)(e=>{if(i?.onCardDragStart){let t={card:e,columnId:e.columnId,cancel:!1};if(i.onCardDragStart(t),t.cancel)return}s(e)},[i?.onCardDragStart]),handleDragOver:(0,g.useCallback)((e,t)=>{o&&c!==e&&(c&&i?.onCardDragLeave&&i.onCardDragLeave({card:o,targetColumnId:c}),i?.onCardDragEnter&&i.onCardDragEnter({card:o,targetColumnId:e})),l(e),t&&d(t)},[o,i,c]),handleDragEnd:(0,g.useCallback)(()=>{o&&i?.onCardDragStop&&i.onCardDragStop({card:o,columnId:o.columnId}),s(null),l(null),d(null)},[o,i?.onCardDragStop]),handleDrop:(0,g.useCallback)((e,c,u)=>{if(!o)return;let f=t.columns.find(t=>t.id===e);if(f?.wipLimit&&t.cards.filter(t=>t.columnId===e&&!t.isArchived).length>=f.wipLimit&&(o.columnId!==e||o.swimlaneId!==c)){let e=a.get(`NotificationService`);if(e&&e.add({type:`warning`,message:`WIP limit reached for "${f.name}" (${f.wipLimit} cards)`,duration:4e3}),r){e?.add({type:`error`,message:`Cannot move card: "${f.name}" is full (Strict WIP)`,duration:4e3}),s(null),l(null),d(null);return}}n(o.id,e,c,u),i?.onCardDragStop&&i.onCardDragStop({card:o,columnId:e}),s(null),l(null),d(null)},[o,t,n,i?.onCardDragStop])}},j=(e,t={})=>{let n=l.t(`I18nService`)?.dir||`ltr`,r=e.dir===`auto`||!e.dir?n:e.dir,i={showSpinner:()=>{},hideSpinner:()=>{}},{board:a,setBoard:o,selectedCards:s,setSelectedCards:u,selectedColumnId:d,setSelectedColumnId:f,view:p,setView:m,undo:h,redo:_,canUndo:v,canRedo:y}=E(e),[b,x]=(0,g.useState)(null),{createCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N}=D(e,a),{createColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z}=O(e,a),{createSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G}=k(e,a),{draggedCard:K,dragOverColumn:q,handleDragStart:te,handleDragOver:ne,handleDragEnd:re,handleDrop:ie}=ee(a,T,e.wipStrict,e),{filteredCards:J,searchQuery:Y,setSearchQuery:X,activeFilters:Z,setActiveFilters:Q,clearFilters:$}=A(a),{selectedIndex:ae,setSelectedIndex:oe}=c.i({totalItems:J.length,columns:1,enabled:!e.readOnly,onSelect:e=>{let t=J[e];t&&(x(t.id),(document.getElementById(t.id)||document.querySelector(`[data-card-id="${t.id}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`}))},onAction:e=>{let n=J[e];n&&t.onCardClick&&t.onCardClick(n)}}),se=(0,g.useMemo)(()=>({addCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N,getCard:e=>a.cards.find(t=>t.id===e),getCards:()=>a.cards,getCardsInColumn:e=>a.cards.filter(t=>t.columnId===e),getOrderedCards:e=>a.cards.filter(t=>t.columnId===e).sort((e,t)=>(e.position??0)-(t.position??0)),addColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z,getColumn:e=>a.columns.find(t=>t.id===e),getColumns:()=>a.columns,addSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G,getSwimlane:e=>a.swimlanes?.find(t=>t.id===e),getSwimlanes:()=>a.swimlanes||[],selectCard:e=>u([e]),selectCards:u,deselectCard:e=>{let t=s.filter(t=>t!==e);u(t)},deselectAllCards:()=>u([]),getSelectedCards:()=>a.cards.filter(e=>s.includes(e.id)),focusCard:e=>{let t=document.getElementById(e)||document.querySelector(`[data-card-id="${e}"]`);t instanceof HTMLElement&&(t.focus(),t.scrollIntoView({behavior:`smooth`,block:`center`}))},highlightCard:(e,t=2e3)=>{x(e),setTimeout(()=>x(null),t)},setView:m,getView:()=>p,scrollToColumn:(e,t)=>{(document.getElementById(`column-${e}`)||document.querySelector(`[data-column-id="${e}"]`))?.scrollIntoView(t||{behavior:`smooth`,block:`center`,inline:`center`})},scrollToCard:(e,t)=>{(document.getElementById(e)||document.querySelector(`[data-card-id="${e}"]`))?.scrollIntoView(t||{behavior:`smooth`,block:`center`})},setSearchQuery:X,getSearchQuery:()=>Y,setActiveFilters:Q,getActiveFilters:()=>Z,clearFilters:$,getFilteredCards:()=>J,getBoard:()=>a,setBoard:o,refresh:async()=>{},reset:()=>o(e.board),showSpinner:i.showSpinner,hideSpinner:i.hideSpinner,forceUpdate:()=>{},getStatistics:()=>({totalCards:a.cards.length,totalColumns:a.columns.length}),validate:()=>({isValid:!0,errors:[]}),...t}),[a,S,C,w,T,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,s,u,d,f,Y,X,Z,Q,$,J,o,e.board,i,t,p,e.wipStrict,e]);return(0,g.useMemo)(()=>({state:{board:a,selectedCards:s,highlightedCardId:b,selectedColumnId:d,view:p,draggedCard:K,dragOverColumn:q,filteredCards:J,searchQuery:Y,activeFilters:Z,selectedIndex:ae,canUndo:v,canRedo:y},actions:{setBoard:o,setSelectedCards:u,setSelectedColumnId:f,setView:m,createCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N,createColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z,createSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G,handleDragStart:te,handleDragOver:ne,handleDragEnd:re,handleDrop:ie,setSearchQuery:X,setActiveFilters:Q,clearFilters:$,setSelectedIndex:oe,undo:h,redo:_},services:{serviceRegistry:null},imperativeAPI:se,dir:r,baseApi:i}),[i,se,a,o,s,u,b,d,f,p,m,r,S,C,w,T,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,K,q,te,ne,re,ie,J,Y,X,Z,Q,$,null,ae,oe,h,_,v,y])};function M(e,t=300){let[n,r]=(0,g.useState)(e);return(0,g.useEffect)(()=>{let n=setTimeout(()=>{r(e)},t);return()=>{clearTimeout(n)}},[e,t]),n}var N=({board:e,activeFilters:n,onFiltersChange:i,onClearFilters:a})=>{let o=Array.from(new Set(e.cards.flatMap(e=>e.tags).map(e=>JSON.stringify(e)))).map(e=>JSON.parse(e)).filter((e,t,n)=>t===n.findIndex(t=>t.id===e.id)),s=Array.from(new Set(e.cards.flatMap(e=>e.assignees).map(e=>JSON.stringify(e)))).map(e=>JSON.parse(e)).filter((e,t,n)=>t===n.findIndex(t=>t.id===e.id)),c=[`low`,`medium`,`high`,`critical`],l=e=>{let t=n.priority||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,priority:r.length?r:void 0})},d=e=>{let t=n.tags||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,tags:r.length?r:void 0})},h=e=>{let t=n.assignees||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,assignees:r.length?r:void 0})},g=(n.priority?.length||0)+(n.tags?.length||0)+(n.assignees?.length||0);return(0,v.jsxs)(u.t,{children:[(0,v.jsx)(u.r,{asChild:!0,children:(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`relative`,children:[(0,v.jsx)(_.Filter,{className:`h-4 w-4 mr-2`}),`Filters`,g>0&&(0,v.jsx)(p.f,{variant:`secondary`,className:`ml-2 h-5 min-w-[20px] px-1 text-[10px] flex items-center justify-center`,children:g})]})}),(0,v.jsxs)(u.n,{className:`w-80 p-4`,align:`start`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,v.jsx)(`h4`,{className:`font-medium leading-none`,children:`Filters`}),g>0&&(0,v.jsx)(t.t,{variant:`ghost`,size:`sm`,className:`h-auto p-0 text-xs text-muted-foreground`,onClick:a,children:`Clear all`})]}),(0,v.jsx)(m.t,{className:`h-[300px] pr-4`,children:(0,v.jsxs)(`div`,{className:`space-y-6`,children:[(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Priority`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:c.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(f.t,{id:`priority-${e}`,checked:n.priority?.includes(e),onCheckedChange:()=>l(e)}),(0,v.jsx)(r.t,{htmlFor:`priority-${e}`,className:`capitalize text-sm font-normal cursor-pointer`,children:e})]},e))})]}),s.length>0&&(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Assignees`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:s.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(f.t,{id:`assignee-${e.id}`,checked:n.assignees?.includes(e.id),onCheckedChange:()=>h(e.id)}),(0,v.jsxs)(r.t,{htmlFor:`assignee-${e.id}`,className:`text-sm font-normal cursor-pointer flex items-center gap-2`,children:[e.avatarUrl&&(0,v.jsx)(`img`,{src:e.avatarUrl,alt:``,className:`w-4 h-4 rounded-full`}),e.name]})]},e.id))})]}),o.length>0&&(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Tags`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:o.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(f.t,{id:`tag-${e.id}`,checked:n.tags?.includes(e.id),onCheckedChange:()=>d(e.id)}),(0,v.jsxs)(r.t,{htmlFor:`tag-${e.id}`,className:`text-sm font-normal cursor-pointer flex items-center gap-2`,children:[(0,v.jsx)(`div`,{className:`w-2 h-2 rounded-full`,style:{backgroundColor:e.color}}),e.name]})]},e.id))})]})]})})]})]})},P=({searchQuery:r,onSearchChange:i,onAddCardClick:a,onAddColumn:o,board:c,className:l,view:u=`standard`,onViewChange:f,onUndo:p,onRedo:m,canUndo:h,canRedo:y,activeFilters:b,onFiltersChange:x})=>{let S=e.n(),[C,w]=(0,g.useState)(r),{t:T}=s.c(),E=M(C,300);(0,g.useEffect)(()=>{i(E)},[E,i]),(0,g.useEffect)(()=>{w(r)},[r]);let D=()=>{a?.()},O=e=>{if(c)try{let t=S.get(`ExportService`);if(e===`csv`){let e=c.cards.map(e=>({id:e.id,title:e.title,description:e.description||``,column:c.columns.find(t=>t.id===e.columnId)?.name||``,priority:e.priority||``,assignees:e.assignees?.map(e=>e.name).join(`; `)||``,tags:e.tags?.map(e=>e.name).join(`; `)||``,dueDate:e.dueDate?new Date(e.dueDate).toISOString().split(`T`)[0]:``,isArchived:e.isArchived?`Yes`:`No`}));if(t)t.exportToCSV(e,[{header:`ID`,accessorKey:`id`},{header:`Title`,accessorKey:`title`},{header:`Description`,accessorKey:`description`},{header:`Column`,accessorKey:`column`},{header:`Priority`,accessorKey:`priority`},{header:`Assignees`,accessorKey:`assignees`},{header:`Tags`,accessorKey:`tags`},{header:`Due Date`,accessorKey:`dueDate`},{header:`Archived`,accessorKey:`isArchived`}],{fileName:`kanban-board-${c.id}`});else{let t=Object.keys(e[0]||{}),n=[t.join(`,`),...e.map(e=>t.map(t=>`"${e[t]}"`).join(`,`))].join(`
|
|
2
|
+
`),r=new Blob([n],{type:`text/csv`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`kanban-board-${c.id}.csv`,a.click(),URL.revokeObjectURL(i)}}else{let e=JSON.stringify(c,null,2);if(t&&t.download)t.download(e,`kanban-board-${c.id}.json`);else{let t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`kanban-board-${c.id}.json`,r.click(),URL.revokeObjectURL(n)}}let n=S.get(`NotificationService`);n&&n.add({type:`success`,message:`Board exported as ${e.toUpperCase()}`,duration:3e3})}catch(e){let t=S.get(`NotificationService`);t&&t.add({type:`error`,message:`Failed to export board: ${e instanceof Error?e.message:`Unknown error`}`,duration:4e3})}};return(0,v.jsx)(v.Fragment,{children:(0,v.jsxs)(`div`,{className:`flex items-center gap-4 p-4 border-b ${l||``}`,children:[(0,v.jsxs)(`div`,{className:`flex gap-1 mr-2`,children:[(0,v.jsx)(t.t,{variant:`ghost`,size:`icon`,onClick:p,disabled:!h,title:`Undo (Ctrl+Z)`,children:(0,v.jsx)(_.Undo2,{className:`h-4 w-4`})}),(0,v.jsx)(t.t,{variant:`ghost`,size:`icon`,onClick:m,disabled:!y,title:`Redo (Ctrl+Shift+Z)`,children:(0,v.jsx)(_.Redo2,{className:`h-4 w-4`})})]}),(0,v.jsxs)(`div`,{className:`relative flex-1 max-w-sm`,children:[(0,v.jsx)(_.Search,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),(0,v.jsx)(n.t,{placeholder:T(`search_placeholder`),value:C,onChange:e=>w(e.target.value),className:`pl-9`})]}),(0,v.jsx)(`div`,{className:`w-[180px]`,children:(0,v.jsxs)(d.t,{value:u,onValueChange:e=>f?.(e),children:[(0,v.jsx)(d.i,{children:(0,v.jsx)(d.a,{placeholder:`Select view`})}),(0,v.jsxs)(d.n,{children:[(0,v.jsx)(d.r,{value:`standard`,children:(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_.Layout,{className:`h-4 w-4 mr-2`}),T(`view_standard`)]})}),(0,v.jsx)(d.r,{value:`swimlane`,children:(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_.Layers,{className:`h-4 w-4 mr-2`}),T(`view_swimlane`)]})}),(0,v.jsx)(d.r,{value:`timeline`,children:(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_.Layout,{className:`h-4 w-4 mr-2`}),` `,T(`view_timeline`)]})})]})]})}),c&&(0,v.jsx)(N,{board:c,activeFilters:b||{},onFiltersChange:e=>x?.(e),onClearFilters:()=>x?.({})}),c&&(0,v.jsxs)(`div`,{className:`flex gap-1`,children:[(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:()=>O(`csv`),title:`Export as CSV`,children:[(0,v.jsx)(_.Download,{className:`h-4 w-4 mr-2`}),`CSV`]}),(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:()=>O(`json`),title:`Export as JSON`,children:[(0,v.jsx)(_.Download,{className:`h-4 w-4 mr-2`}),`JSON`]})]}),(0,v.jsxs)(`div`,{className:`ml-auto flex gap-2`,children:[(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:o,children:[(0,v.jsx)(_.Plus,{className:`h-4 w-4 mr-2`}),T(`add_column`)]}),(0,v.jsxs)(t.t,{size:`sm`,onClick:D,children:[(0,v.jsx)(_.Plus,{className:`h-4 w-4 mr-2`}),T(`add_card`)]})]})]})})},F=new x.QueryClient,I=(0,g.forwardRef)((e,t)=>{let{className:n,readOnly:r,...o}=e;return a.t(),(0,v.jsx)(x.QueryClientProvider,{client:F,children:(0,v.jsx)(i.t,{fallback:(0,v.jsx)(S,{}),children:(0,v.jsx)(L,{ref:t,className:n,readOnly:r,...o})})})});I.displayName=`EzKanban`;var L=(0,g.forwardRef)((t,n)=>{let{className:r,readOnly:i,onCardClick:a,onCardDoubleClick:s}=t,{state:c,actions:l,dir:u,imperativeAPI:d}=j(t,n),[f,m]=(0,g.useState)(!1),[_,y]=(0,g.useState)(void 0),[b,x]=(0,g.useState)(!1),[S,C]=(0,g.useState)(null);(0,g.useImperativeHandle)(n,()=>d,[d]);let w=e=>{let t=e||c.selectedColumnId||c.board.columns[0]?.id;y({columnId:t,title:``,description:``,priority:`medium`}),m(!0)},T=async e=>{e.id?await l.updateCard(e.id,e):await l.createCard(e),m(!1)},E=e=>{t.confirmOnDelete===!1?(l.deleteCard(e),m(!1)):(C(e),x(!0),m(!1))},D=async()=>{S&&(await l.deleteCard(S),x(!1),C(null))},O=e=>{i||(y(e),m(!0)),a?.(e)},k=e=>{let t=c.board.columns.find(t=>t.id===e);t&&(t.isCollapsed?l.expandColumn(e):l.collapseColumn(e))},A=e=>{let t=c.board.swimlanes?.find(t=>t.id===e);t&&(t.isCollapsed?l.expandSwimlane(e):l.collapseSwimlane(e))};return(0,v.jsxs)(`div`,{className:e._(`flex flex-col h-full bg-background`,r),dir:u,children:[(0,v.jsx)(o.t,{}),(0,v.jsx)(o.t,{}),!i&&(t.slots?.toolbar?(0,v.jsx)(t.slots.toolbar,{searchQuery:c.searchQuery,onSearchChange:l.setSearchQuery,onAddCardClick:()=>w(),onAddColumn:()=>{l.createColumn({name:`New Column`,position:c.board.columns.length}).then(e=>{l.setSelectedColumnId(e.id)})},activeFilters:c.activeFilters,onFiltersChange:l.setActiveFilters,view:c.view,onViewChange:l.setView,onUndo:l.undo,onRedo:l.redo,canUndo:c.canUndo,canRedo:c.canRedo,...t.slotProps?.toolbar||{}}):(0,v.jsx)(P,{searchQuery:c.searchQuery,onSearchChange:l.setSearchQuery,onAddCardClick:()=>w(),onAddColumn:()=>{l.createColumn({name:`New Column`,position:c.board.columns.length}).then(e=>{l.setSelectedColumnId(e.id)})},activeFilters:c.activeFilters,onFiltersChange:l.setActiveFilters,view:c.view,onViewChange:l.setView,onUndo:l.undo,onRedo:l.redo,canUndo:c.canUndo,canRedo:c.canRedo})),(0,v.jsx)(`div`,{className:`flex-1 overflow-hidden h-full`,children:t.slots?.board?(0,v.jsx)(t.slots.board,{board:c.board,onCardClick:O,onCardDoubleClick:s,onCardDragStart:l.handleDragStart,onCardDragEnd:l.handleDragEnd,onCardDrop:l.handleDrop,onAddCard:w,onToggleColumnCollapse:k,onToggleSwimlaneCollapse:A,onDeleteColumn:l.deleteColumn,onUpdateColumn:l.updateColumn,onColumnClick:l.setSelectedColumnId,onCreateCard:T,selectedColumnId:c.selectedColumnId,draggedCardId:c.draggedCard?.id,filteredCards:c.filteredCards,slots:t.slots,slotProps:t.slotProps,view:c.view,dir:u,className:`flex-1 h-full`,...t.slotProps?.board||{}}):(0,v.jsx)(p.t,{board:c.board,onCardClick:O,onCardDoubleClick:s,onCardDragStart:l.handleDragStart,onCardDragEnd:l.handleDragEnd,onCardDrop:l.handleDrop,onAddCard:w,onToggleColumnCollapse:k,onToggleSwimlaneCollapse:A,onDeleteColumn:l.deleteColumn,onUpdateColumn:l.updateColumn,onColumnClick:l.setSelectedColumnId,onCreateCard:T,selectedColumnId:c.selectedColumnId,draggedCardId:c.draggedCard?.id,filteredCards:c.filteredCards,slots:t.slots,slotProps:t.slotProps,view:c.view,dir:u,className:`flex-1 h-full`})}),t.slots?.cardEditor?(0,v.jsx)(t.slots.cardEditor,{isOpen:f,onClose:()=>m(!1),onSave:T,onDelete:E,card:_,columns:c.board.columns,...t.slotProps?.cardEditor||{}}):(0,v.jsx)(p.s,{isOpen:f,onClose:()=>m(!1),onSave:T,onDelete:E,card:_,columns:c.board.columns}),(0,v.jsx)(h.t,{isOpen:b,onClose:()=>x(!1),onConfirm:D,title:`Confirm Delete`,message:`Are you sure you want to delete this card?`,description:`This action cannot be undone.`})]})});L.displayName=`EzKanbanInner`,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return I}});
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { _ as e, n as t } from "./EzProvider-AlmsYIDk.js";
|
|
2
2
|
import { t as n } from "./button-CYyNwV8S.js";
|
|
3
|
-
import { t as r } from "./input-
|
|
3
|
+
import { t as r } from "./input-CcRi0LeO.js";
|
|
4
4
|
import { t as i } from "./label-DWEV--5W.js";
|
|
5
5
|
import { t as a } from "./EzErrorBoundary-C7a6VisX.js";
|
|
6
6
|
import { t as o } from "./useInitCoreServices-CuBrviDM.js";
|
|
7
7
|
import { t as s } from "./NotificationPanel-BzpDc10Q.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { t as v } from "./
|
|
13
|
-
import {
|
|
14
|
-
import { f as b, s as x, t as S } from "./KanbanBoard-
|
|
8
|
+
import { c } from "./card-urNaa5h-.js";
|
|
9
|
+
import { i as l } from "./EzScheduler-D7aH4KCY.js";
|
|
10
|
+
import { t as u } from "./useServiceState-CkrJZm1D.js";
|
|
11
|
+
import { n as d, r as f, t as p } from "./popover-D1akYj0W.js";
|
|
12
|
+
import { a as m, i as h, n as g, r as _, t as v } from "./select-D4tFaSai.js";
|
|
13
|
+
import { t as y } from "./checkbox-BTuckDEm.js";
|
|
14
|
+
import { f as b, s as x, t as S } from "./KanbanBoard-CRF0-mYa.js";
|
|
15
15
|
import { t as C } from "./scroll-area-BJs87d45.js";
|
|
16
|
-
import { t as w } from "./DeleteConfirmationModal-
|
|
16
|
+
import { t as w } from "./DeleteConfirmationModal-B_tXm0N0.js";
|
|
17
17
|
import { forwardRef as T, useCallback as E, useEffect as D, useImperativeHandle as O, useMemo as k, useRef as A, useState as j } from "react";
|
|
18
18
|
import { AlertTriangle as M, Download as N, Filter as P, Layers as F, Layout as I, Plus as L, Redo2 as R, Search as z, Undo2 as B } from "lucide-react";
|
|
19
19
|
import { Fragment as V, jsx as H, jsxs as U } from "react/jsx-runtime";
|
|
@@ -288,11 +288,11 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
288
288
|
},
|
|
289
289
|
onMutate: async (e) => {
|
|
290
290
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
291
|
-
let t = i.getQueryData(["board", n.id])
|
|
292
|
-
return s({
|
|
291
|
+
let t = i.getQueryData(["board", n.id]), r = {
|
|
293
292
|
...n,
|
|
294
293
|
cards: [...n.cards, e]
|
|
295
|
-
}
|
|
294
|
+
};
|
|
295
|
+
return s(r), { previousBoard: t };
|
|
296
296
|
},
|
|
297
297
|
onError: (e, t, n) => {
|
|
298
298
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to create card. Please try again.", 5e3);
|
|
@@ -341,11 +341,11 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
341
341
|
...n,
|
|
342
342
|
...t,
|
|
343
343
|
updatedAt: /* @__PURE__ */ new Date()
|
|
344
|
-
} : n)
|
|
345
|
-
return s({
|
|
344
|
+
} : n), o = {
|
|
346
345
|
...n,
|
|
347
346
|
cards: a
|
|
348
|
-
}
|
|
347
|
+
};
|
|
348
|
+
return s(o), { previousBoard: r };
|
|
349
349
|
},
|
|
350
350
|
onError: (e, t, n) => {
|
|
351
351
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to update card", 5e3);
|
|
@@ -363,11 +363,11 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
363
363
|
},
|
|
364
364
|
onMutate: async (e) => {
|
|
365
365
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
366
|
-
let t = i.getQueryData(["board", n.id])
|
|
367
|
-
return s({
|
|
366
|
+
let t = i.getQueryData(["board", n.id]), r = {
|
|
368
367
|
...n,
|
|
369
368
|
cards: n.cards.filter((t) => t.id !== e)
|
|
370
|
-
}
|
|
369
|
+
};
|
|
370
|
+
return s(r), {
|
|
371
371
|
previousBoard: t,
|
|
372
372
|
deletedCardTitle: t?.cards.find((t) => t.id === e)?.title
|
|
373
373
|
};
|
|
@@ -376,7 +376,8 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
376
376
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to delete card", 5e3);
|
|
377
377
|
},
|
|
378
378
|
onSuccess: (e, t, n) => {
|
|
379
|
-
|
|
379
|
+
let r = n?.deletedCardTitle || "Card";
|
|
380
|
+
o("success", `Card "${r}" deleted`);
|
|
380
381
|
}
|
|
381
382
|
}), p = E(async (e) => f.mutateAsync(e), [f]), m = K({
|
|
382
383
|
mutationFn: async (t) => {
|
|
@@ -414,11 +415,11 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
414
415
|
...l.filter((e) => e.columnId !== t && e.columnId !== p),
|
|
415
416
|
...m,
|
|
416
417
|
...f
|
|
417
|
-
]
|
|
418
|
-
return s({
|
|
418
|
+
], g = {
|
|
419
419
|
...n,
|
|
420
420
|
cards: h
|
|
421
|
-
}
|
|
421
|
+
};
|
|
422
|
+
return s(g), { previousBoard: o };
|
|
422
423
|
},
|
|
423
424
|
onError: (e, t, n) => {
|
|
424
425
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to move card", 3e3);
|
|
@@ -437,14 +438,15 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
437
438
|
duplicateCard: E(async (e) => {
|
|
438
439
|
let t = n.cards.find((t) => t.id === e);
|
|
439
440
|
if (!t) throw Error("Card not found");
|
|
440
|
-
|
|
441
|
+
let r = {
|
|
441
442
|
...t,
|
|
442
443
|
id: `card-${Date.now()}`,
|
|
443
444
|
title: `${t.title} (Copy)`,
|
|
444
445
|
position: (t.position ?? 0) + 1,
|
|
445
446
|
createdAt: /* @__PURE__ */ new Date(),
|
|
446
447
|
updatedAt: /* @__PURE__ */ new Date()
|
|
447
|
-
}
|
|
448
|
+
};
|
|
449
|
+
return l(r);
|
|
448
450
|
}, [n.cards, l]),
|
|
449
451
|
archiveCard: E(async (e) => d(e, { isArchived: !0 }), [d]),
|
|
450
452
|
restoreCard: E(async (e) => d(e, { isArchived: !1 }), [d])
|
|
@@ -466,11 +468,11 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
466
468
|
},
|
|
467
469
|
onMutate: async (e) => {
|
|
468
470
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
469
|
-
let t = i.getQueryData(["board", n.id])
|
|
470
|
-
return s({
|
|
471
|
+
let t = i.getQueryData(["board", n.id]), r = {
|
|
471
472
|
...n,
|
|
472
473
|
columns: [...n.columns, e]
|
|
473
|
-
}
|
|
474
|
+
};
|
|
475
|
+
return s(r), { previousBoard: t };
|
|
474
476
|
},
|
|
475
477
|
onError: (e, t, n) => {
|
|
476
478
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to create column", 5e3);
|
|
@@ -508,14 +510,14 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
508
510
|
},
|
|
509
511
|
onMutate: async ({ columnId: e, updates: t }) => {
|
|
510
512
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
511
|
-
let r = i.getQueryData(["board", n.id])
|
|
512
|
-
return s({
|
|
513
|
+
let r = i.getQueryData(["board", n.id]), a = {
|
|
513
514
|
...n,
|
|
514
515
|
columns: n.columns.map((n) => n.id === e ? {
|
|
515
516
|
...n,
|
|
516
517
|
...t
|
|
517
518
|
} : n)
|
|
518
|
-
}
|
|
519
|
+
};
|
|
520
|
+
return s(a), { previousBoard: r };
|
|
519
521
|
},
|
|
520
522
|
onError: (e, t, n) => {
|
|
521
523
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to update column", 5e3);
|
|
@@ -530,12 +532,12 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
530
532
|
},
|
|
531
533
|
onMutate: async (e) => {
|
|
532
534
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
533
|
-
let t = i.getQueryData(["board", n.id]), r = t?.columns.find((t) => t.id === e)
|
|
534
|
-
return s({
|
|
535
|
+
let t = i.getQueryData(["board", n.id]), r = t?.columns.find((t) => t.id === e), a = {
|
|
535
536
|
...n,
|
|
536
537
|
columns: n.columns.filter((t) => t.id !== e),
|
|
537
538
|
cards: n.cards.filter((t) => t.columnId !== e)
|
|
538
|
-
}
|
|
539
|
+
};
|
|
540
|
+
return s(a), {
|
|
539
541
|
previousBoard: t,
|
|
540
542
|
deletedColumnName: r?.name
|
|
541
543
|
};
|
|
@@ -544,7 +546,8 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
544
546
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to delete column", 5e3);
|
|
545
547
|
},
|
|
546
548
|
onSuccess: (e, t, n) => {
|
|
547
|
-
|
|
549
|
+
let r = n?.deletedColumnName || "Column";
|
|
550
|
+
o("success", `Column "${r}" deleted`);
|
|
548
551
|
}
|
|
549
552
|
}), p = E(async (e) => f.mutateAsync(e), [f]), m = K({
|
|
550
553
|
mutationFn: async (e) => {
|
|
@@ -557,8 +560,7 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
557
560
|
},
|
|
558
561
|
onMutate: async (e) => {
|
|
559
562
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
560
|
-
let t = i.getQueryData(["board", n.id])
|
|
561
|
-
return s({
|
|
563
|
+
let t = i.getQueryData(["board", n.id]), r = {
|
|
562
564
|
...n,
|
|
563
565
|
columns: e.map((e, t) => {
|
|
564
566
|
let r = n.columns.find((t) => t.id === e);
|
|
@@ -568,7 +570,8 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
568
570
|
position: t
|
|
569
571
|
};
|
|
570
572
|
})
|
|
571
|
-
}
|
|
573
|
+
};
|
|
574
|
+
return s(r), { previousBoard: t };
|
|
572
575
|
},
|
|
573
576
|
onError: (e, t, n) => {
|
|
574
577
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to reorder columns", 3e3);
|
|
@@ -603,11 +606,11 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
603
606
|
},
|
|
604
607
|
onMutate: async (e) => {
|
|
605
608
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
606
|
-
let t = i.getQueryData(["board", n.id])
|
|
607
|
-
return s({
|
|
609
|
+
let t = i.getQueryData(["board", n.id]), r = {
|
|
608
610
|
...n,
|
|
609
611
|
swimlanes: [...n.swimlanes || [], e]
|
|
610
|
-
}
|
|
612
|
+
};
|
|
613
|
+
return s(r), { previousBoard: t };
|
|
611
614
|
},
|
|
612
615
|
onError: (e, t, n) => {
|
|
613
616
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to create swimlane", 5e3);
|
|
@@ -644,14 +647,14 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
644
647
|
},
|
|
645
648
|
onMutate: async ({ swimlaneId: e, updates: t }) => {
|
|
646
649
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
647
|
-
let r = i.getQueryData(["board", n.id])
|
|
648
|
-
return s({
|
|
650
|
+
let r = i.getQueryData(["board", n.id]), a = {
|
|
649
651
|
...n,
|
|
650
652
|
swimlanes: (n.swimlanes || []).map((n) => n.id === e ? {
|
|
651
653
|
...n,
|
|
652
654
|
...t
|
|
653
655
|
} : n)
|
|
654
|
-
}
|
|
656
|
+
};
|
|
657
|
+
return s(a), { previousBoard: r };
|
|
655
658
|
},
|
|
656
659
|
onError: (e, t, n) => {
|
|
657
660
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to update swimlane", 5e3);
|
|
@@ -666,15 +669,15 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
666
669
|
},
|
|
667
670
|
onMutate: async (e) => {
|
|
668
671
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
669
|
-
let t = i.getQueryData(["board", n.id]), r = t?.swimlanes?.find((t) => t.id === e)
|
|
670
|
-
return s({
|
|
672
|
+
let t = i.getQueryData(["board", n.id]), r = t?.swimlanes?.find((t) => t.id === e), a = {
|
|
671
673
|
...n,
|
|
672
674
|
swimlanes: (n.swimlanes || []).filter((t) => t.id !== e),
|
|
673
675
|
cards: n.cards.map((t) => t.swimlaneId === e ? {
|
|
674
676
|
...t,
|
|
675
677
|
swimlaneId: void 0
|
|
676
678
|
} : t)
|
|
677
|
-
}
|
|
679
|
+
};
|
|
680
|
+
return s(a), {
|
|
678
681
|
previousBoard: t,
|
|
679
682
|
deletedSwimlaneName: r?.name
|
|
680
683
|
};
|
|
@@ -683,7 +686,8 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
683
686
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to delete swimlane", 5e3);
|
|
684
687
|
},
|
|
685
688
|
onSuccess: (e, t, n) => {
|
|
686
|
-
|
|
689
|
+
let r = n?.deletedSwimlaneName || "Swimlane";
|
|
690
|
+
o("success", `Swimlane "${r}" deleted`);
|
|
687
691
|
}
|
|
688
692
|
}), p = E(async (e) => f.mutateAsync(e), [f]), m = K({
|
|
689
693
|
mutationFn: async (e) => {
|
|
@@ -696,8 +700,7 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
696
700
|
},
|
|
697
701
|
onMutate: async (e) => {
|
|
698
702
|
await i.cancelQueries({ queryKey: ["board", n.id] });
|
|
699
|
-
let t = i.getQueryData(["board", n.id])
|
|
700
|
-
return s({
|
|
703
|
+
let t = i.getQueryData(["board", n.id]), r = {
|
|
701
704
|
...n,
|
|
702
705
|
swimlanes: e.map((e, t) => {
|
|
703
706
|
let r = n.swimlanes?.find((t) => t.id === e);
|
|
@@ -706,7 +709,8 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
706
709
|
position: t
|
|
707
710
|
} : null;
|
|
708
711
|
}).filter(Boolean)
|
|
709
|
-
}
|
|
712
|
+
};
|
|
713
|
+
return s(r), { previousBoard: t };
|
|
710
714
|
},
|
|
711
715
|
onError: (e, t, n) => {
|
|
712
716
|
n?.previousBoard && s(n.previousBoard), o("error", "Failed to reorder swimlanes", 3e3);
|
|
@@ -818,10 +822,10 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
818
822
|
])
|
|
819
823
|
};
|
|
820
824
|
}, Q = (e, t = {}) => {
|
|
821
|
-
let n =
|
|
825
|
+
let n = u("I18nService")?.dir || "ltr", r = e.dir === "auto" || !e.dir ? n : e.dir, i = {
|
|
822
826
|
showSpinner: () => {},
|
|
823
827
|
hideSpinner: () => {}
|
|
824
|
-
}, { board: a, setBoard: o, selectedCards: s, setSelectedCards:
|
|
828
|
+
}, { board: a, setBoard: o, selectedCards: s, setSelectedCards: c, selectedColumnId: d, setSelectedColumnId: f, view: p, setView: m, undo: h, redo: g, canUndo: _, canRedo: v } = ne(e), [y, b] = j(null), { createCard: x, updateCard: S, deleteCard: C, moveCard: w, duplicateCard: T, archiveCard: E, restoreCard: D } = re(e, a), { createColumn: O, updateColumn: A, deleteColumn: M, reorderColumns: N, collapseColumn: P, expandColumn: F } = ie(e, a), { createSwimlane: I, updateSwimlane: L, deleteSwimlane: R, reorderSwimlanes: z, collapseSwimlane: B, expandSwimlane: V } = ae(e, a), { draggedCard: H, dragOverColumn: U, handleDragStart: W, handleDragOver: G, handleDragEnd: ee, handleDrop: te } = se(a, w, e.wipStrict, e), { filteredCards: K, searchQuery: q, setSearchQuery: J, activeFilters: Y, setActiveFilters: X, clearFilters: Z } = oe(a), { selectedIndex: Q, setSelectedIndex: $ } = l({
|
|
825
829
|
totalItems: K.length,
|
|
826
830
|
columns: 1,
|
|
827
831
|
enabled: !e.readOnly,
|
|
@@ -864,12 +868,13 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
864
868
|
expandSwimlane: V,
|
|
865
869
|
getSwimlane: (e) => a.swimlanes?.find((t) => t.id === e),
|
|
866
870
|
getSwimlanes: () => a.swimlanes || [],
|
|
867
|
-
selectCard: (e) =>
|
|
868
|
-
selectCards:
|
|
871
|
+
selectCard: (e) => c([e]),
|
|
872
|
+
selectCards: c,
|
|
869
873
|
deselectCard: (e) => {
|
|
870
|
-
|
|
874
|
+
let t = s.filter((t) => t !== e);
|
|
875
|
+
c(t);
|
|
871
876
|
},
|
|
872
|
-
deselectAllCards: () =>
|
|
877
|
+
deselectAllCards: () => c([]),
|
|
873
878
|
getSelectedCards: () => a.cards.filter((e) => s.includes(e.id)),
|
|
874
879
|
focusCard: (e) => {
|
|
875
880
|
let t = document.getElementById(e) || document.querySelector(`[data-card-id="${e}"]`);
|
|
@@ -940,7 +945,7 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
940
945
|
B,
|
|
941
946
|
V,
|
|
942
947
|
s,
|
|
943
|
-
|
|
948
|
+
c,
|
|
944
949
|
d,
|
|
945
950
|
f,
|
|
946
951
|
q,
|
|
@@ -975,7 +980,7 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
975
980
|
},
|
|
976
981
|
actions: {
|
|
977
982
|
setBoard: o,
|
|
978
|
-
setSelectedCards:
|
|
983
|
+
setSelectedCards: c,
|
|
979
984
|
setSelectedColumnId: f,
|
|
980
985
|
setView: m,
|
|
981
986
|
createCard: x,
|
|
@@ -1018,7 +1023,7 @@ var J = () => /* @__PURE__ */ H("div", {
|
|
|
1018
1023
|
a,
|
|
1019
1024
|
o,
|
|
1020
1025
|
s,
|
|
1021
|
-
|
|
1026
|
+
c,
|
|
1022
1027
|
y,
|
|
1023
1028
|
d,
|
|
1024
1029
|
f,
|
|
@@ -1092,7 +1097,7 @@ var ce = ({ board: e, activeFilters: t, onFiltersChange: r, onClearFilters: a })
|
|
|
1092
1097
|
...t,
|
|
1093
1098
|
priority: i.length ? i : void 0
|
|
1094
1099
|
});
|
|
1095
|
-
},
|
|
1100
|
+
}, u = (e) => {
|
|
1096
1101
|
let n = t.tags || [], i = n.includes(e) ? n.filter((t) => t !== e) : [...n, e];
|
|
1097
1102
|
r({
|
|
1098
1103
|
...t,
|
|
@@ -1105,7 +1110,7 @@ var ce = ({ board: e, activeFilters: t, onFiltersChange: r, onClearFilters: a })
|
|
|
1105
1110
|
assignees: i.length ? i : void 0
|
|
1106
1111
|
});
|
|
1107
1112
|
}, h = (t.priority?.length || 0) + (t.tags?.length || 0) + (t.assignees?.length || 0);
|
|
1108
|
-
return /* @__PURE__ */ U(
|
|
1113
|
+
return /* @__PURE__ */ U(p, { children: [/* @__PURE__ */ H(f, {
|
|
1109
1114
|
asChild: !0,
|
|
1110
1115
|
children: /* @__PURE__ */ U(n, {
|
|
1111
1116
|
variant: "outline",
|
|
@@ -1121,7 +1126,7 @@ var ce = ({ board: e, activeFilters: t, onFiltersChange: r, onClearFilters: a })
|
|
|
1121
1126
|
})
|
|
1122
1127
|
]
|
|
1123
1128
|
})
|
|
1124
|
-
}), /* @__PURE__ */ U(
|
|
1129
|
+
}), /* @__PURE__ */ U(d, {
|
|
1125
1130
|
className: "w-80 p-4",
|
|
1126
1131
|
align: "start",
|
|
1127
1132
|
children: [/* @__PURE__ */ U("div", {
|
|
@@ -1150,7 +1155,7 @@ var ce = ({ board: e, activeFilters: t, onFiltersChange: r, onClearFilters: a })
|
|
|
1150
1155
|
className: "space-y-2",
|
|
1151
1156
|
children: c.map((e) => /* @__PURE__ */ U("div", {
|
|
1152
1157
|
className: "flex items-center space-x-2",
|
|
1153
|
-
children: [/* @__PURE__ */ H(
|
|
1158
|
+
children: [/* @__PURE__ */ H(y, {
|
|
1154
1159
|
id: `priority-${e}`,
|
|
1155
1160
|
checked: t.priority?.includes(e),
|
|
1156
1161
|
onCheckedChange: () => l(e)
|
|
@@ -1171,7 +1176,7 @@ var ce = ({ board: e, activeFilters: t, onFiltersChange: r, onClearFilters: a })
|
|
|
1171
1176
|
className: "space-y-2",
|
|
1172
1177
|
children: s.map((e) => /* @__PURE__ */ U("div", {
|
|
1173
1178
|
className: "flex items-center space-x-2",
|
|
1174
|
-
children: [/* @__PURE__ */ H(
|
|
1179
|
+
children: [/* @__PURE__ */ H(y, {
|
|
1175
1180
|
id: `assignee-${e.id}`,
|
|
1176
1181
|
checked: t.assignees?.includes(e.id),
|
|
1177
1182
|
onCheckedChange: () => m(e.id)
|
|
@@ -1196,10 +1201,10 @@ var ce = ({ board: e, activeFilters: t, onFiltersChange: r, onClearFilters: a })
|
|
|
1196
1201
|
className: "space-y-2",
|
|
1197
1202
|
children: o.map((e) => /* @__PURE__ */ U("div", {
|
|
1198
1203
|
className: "flex items-center space-x-2",
|
|
1199
|
-
children: [/* @__PURE__ */ H(
|
|
1204
|
+
children: [/* @__PURE__ */ H(y, {
|
|
1200
1205
|
id: `tag-${e.id}`,
|
|
1201
1206
|
checked: t.tags?.includes(e.id),
|
|
1202
|
-
onCheckedChange: () =>
|
|
1207
|
+
onCheckedChange: () => u(e.id)
|
|
1203
1208
|
}), /* @__PURE__ */ U(i, {
|
|
1204
1209
|
htmlFor: `tag-${e.id}`,
|
|
1205
1210
|
className: "text-sm font-normal cursor-pointer flex items-center gap-2",
|
|
@@ -1215,8 +1220,8 @@ var ce = ({ board: e, activeFilters: t, onFiltersChange: r, onClearFilters: a })
|
|
|
1215
1220
|
})
|
|
1216
1221
|
})]
|
|
1217
1222
|
})] });
|
|
1218
|
-
}, le = ({ searchQuery: e, onSearchChange: i, onAddCardClick: a, onAddColumn: o, board: s, className:
|
|
1219
|
-
let C = t(), [w, T] = j(e), { t: E } =
|
|
1223
|
+
}, le = ({ searchQuery: e, onSearchChange: i, onAddCardClick: a, onAddColumn: o, board: s, className: l, view: u = "standard", onViewChange: d, onUndo: f, onRedo: p, canUndo: y, canRedo: b, activeFilters: x, onFiltersChange: S }) => {
|
|
1224
|
+
let C = t(), [w, T] = j(e), { t: E } = c(), O = $(w, 300);
|
|
1220
1225
|
D(() => {
|
|
1221
1226
|
i(O);
|
|
1222
1227
|
}, [O, i]), D(() => {
|
|
@@ -1305,21 +1310,21 @@ var ce = ({ board: e, activeFilters: t, onFiltersChange: r, onClearFilters: a })
|
|
|
1305
1310
|
}
|
|
1306
1311
|
};
|
|
1307
1312
|
return /* @__PURE__ */ H(V, { children: /* @__PURE__ */ U("div", {
|
|
1308
|
-
className: `flex items-center gap-4 p-4 border-b ${
|
|
1313
|
+
className: `flex items-center gap-4 p-4 border-b ${l || ""}`,
|
|
1309
1314
|
children: [
|
|
1310
1315
|
/* @__PURE__ */ U("div", {
|
|
1311
1316
|
className: "flex gap-1 mr-2",
|
|
1312
1317
|
children: [/* @__PURE__ */ H(n, {
|
|
1313
1318
|
variant: "ghost",
|
|
1314
1319
|
size: "icon",
|
|
1315
|
-
onClick:
|
|
1316
|
-
disabled: !
|
|
1320
|
+
onClick: f,
|
|
1321
|
+
disabled: !y,
|
|
1317
1322
|
title: "Undo (Ctrl+Z)",
|
|
1318
1323
|
children: /* @__PURE__ */ H(B, { className: "h-4 w-4" })
|
|
1319
1324
|
}), /* @__PURE__ */ H(n, {
|
|
1320
1325
|
variant: "ghost",
|
|
1321
1326
|
size: "icon",
|
|
1322
|
-
onClick:
|
|
1327
|
+
onClick: p,
|
|
1323
1328
|
disabled: !b,
|
|
1324
1329
|
title: "Redo (Ctrl+Shift+Z)",
|
|
1325
1330
|
children: /* @__PURE__ */ H(R, { className: "h-4 w-4" })
|
|
@@ -1336,25 +1341,25 @@ var ce = ({ board: e, activeFilters: t, onFiltersChange: r, onClearFilters: a })
|
|
|
1336
1341
|
}),
|
|
1337
1342
|
/* @__PURE__ */ H("div", {
|
|
1338
1343
|
className: "w-[180px]",
|
|
1339
|
-
children: /* @__PURE__ */ U(
|
|
1340
|
-
value:
|
|
1341
|
-
onValueChange: (e) =>
|
|
1342
|
-
children: [/* @__PURE__ */ H(
|
|
1343
|
-
/* @__PURE__ */ H(
|
|
1344
|
+
children: /* @__PURE__ */ U(v, {
|
|
1345
|
+
value: u,
|
|
1346
|
+
onValueChange: (e) => d?.(e),
|
|
1347
|
+
children: [/* @__PURE__ */ H(h, { children: /* @__PURE__ */ H(m, { placeholder: "Select view" }) }), /* @__PURE__ */ U(g, { children: [
|
|
1348
|
+
/* @__PURE__ */ H(_, {
|
|
1344
1349
|
value: "standard",
|
|
1345
1350
|
children: /* @__PURE__ */ U("div", {
|
|
1346
1351
|
className: "flex items-center",
|
|
1347
1352
|
children: [/* @__PURE__ */ H(I, { className: "h-4 w-4 mr-2" }), E("view_standard")]
|
|
1348
1353
|
})
|
|
1349
1354
|
}),
|
|
1350
|
-
/* @__PURE__ */ H(
|
|
1355
|
+
/* @__PURE__ */ H(_, {
|
|
1351
1356
|
value: "swimlane",
|
|
1352
1357
|
children: /* @__PURE__ */ U("div", {
|
|
1353
1358
|
className: "flex items-center",
|
|
1354
1359
|
children: [/* @__PURE__ */ H(F, { className: "h-4 w-4 mr-2" }), E("view_swimlane")]
|
|
1355
1360
|
})
|
|
1356
1361
|
}),
|
|
1357
|
-
/* @__PURE__ */ H(
|
|
1362
|
+
/* @__PURE__ */ H(_, {
|
|
1358
1363
|
value: "timeline",
|
|
1359
1364
|
children: /* @__PURE__ */ U("div", {
|
|
1360
1365
|
className: "flex items-center",
|
|
@@ -1425,8 +1430,9 @@ var fe = T((t, n) => {
|
|
|
1425
1430
|
let { className: r, readOnly: i, onCardClick: a, onCardDoubleClick: o } = t, { state: c, actions: l, dir: u, imperativeAPI: d } = Q(t, n), [f, p] = j(!1), [m, h] = j(void 0), [g, _] = j(!1), [v, y] = j(null);
|
|
1426
1431
|
O(n, () => d, [d]);
|
|
1427
1432
|
let b = (e) => {
|
|
1433
|
+
let t = e || c.selectedColumnId || c.board.columns[0]?.id;
|
|
1428
1434
|
h({
|
|
1429
|
-
columnId:
|
|
1435
|
+
columnId: t,
|
|
1430
1436
|
title: "",
|
|
1431
1437
|
description: "",
|
|
1432
1438
|
priority: "medium"
|