@emberai-engg/task-board 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +21 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -361,6 +361,7 @@ declare function useTaskBoard(isDragging?: React.RefObject<boolean>): {
|
|
|
361
361
|
tasks: TasksByStatus;
|
|
362
362
|
setTasks: React$1.Dispatch<React$1.SetStateAction<TasksByStatus>>;
|
|
363
363
|
columnTotals: ColumnTotals;
|
|
364
|
+
setColumnTotals: React$1.Dispatch<React$1.SetStateAction<ColumnTotals>>;
|
|
364
365
|
columnUnreads: ColumnUnreads;
|
|
365
366
|
setColumnUnreads: React$1.Dispatch<React$1.SetStateAction<ColumnUnreads>>;
|
|
366
367
|
boardLoading: boolean;
|
|
@@ -373,7 +374,7 @@ declare function useTaskBoard(isDragging?: React.RefObject<boolean>): {
|
|
|
373
374
|
loadMoreTasks: (statusKey: string) => Promise<void>;
|
|
374
375
|
};
|
|
375
376
|
|
|
376
|
-
declare function useTaskActions(tasks: TasksByStatus, setTasks: React.Dispatch<React.SetStateAction<TasksByStatus>>, fetchTasks: () => Promise<void>, isDragging?: React.RefObject<boolean
|
|
377
|
+
declare function useTaskActions(tasks: TasksByStatus, setTasks: React.Dispatch<React.SetStateAction<TasksByStatus>>, fetchTasks: () => Promise<void>, isDragging?: React.RefObject<boolean>, setColumnTotals?: React.Dispatch<React.SetStateAction<ColumnTotals>>): {
|
|
377
378
|
createTask: (data: CreateTaskPayload) => Promise<Task>;
|
|
378
379
|
updateTask: (taskId: string, data: UpdateTaskPayload) => Promise<Task>;
|
|
379
380
|
deleteTask: (taskId: string) => Promise<void>;
|
package/dist/index.d.ts
CHANGED
|
@@ -361,6 +361,7 @@ declare function useTaskBoard(isDragging?: React.RefObject<boolean>): {
|
|
|
361
361
|
tasks: TasksByStatus;
|
|
362
362
|
setTasks: React$1.Dispatch<React$1.SetStateAction<TasksByStatus>>;
|
|
363
363
|
columnTotals: ColumnTotals;
|
|
364
|
+
setColumnTotals: React$1.Dispatch<React$1.SetStateAction<ColumnTotals>>;
|
|
364
365
|
columnUnreads: ColumnUnreads;
|
|
365
366
|
setColumnUnreads: React$1.Dispatch<React$1.SetStateAction<ColumnUnreads>>;
|
|
366
367
|
boardLoading: boolean;
|
|
@@ -373,7 +374,7 @@ declare function useTaskBoard(isDragging?: React.RefObject<boolean>): {
|
|
|
373
374
|
loadMoreTasks: (statusKey: string) => Promise<void>;
|
|
374
375
|
};
|
|
375
376
|
|
|
376
|
-
declare function useTaskActions(tasks: TasksByStatus, setTasks: React.Dispatch<React.SetStateAction<TasksByStatus>>, fetchTasks: () => Promise<void>, isDragging?: React.RefObject<boolean
|
|
377
|
+
declare function useTaskActions(tasks: TasksByStatus, setTasks: React.Dispatch<React.SetStateAction<TasksByStatus>>, fetchTasks: () => Promise<void>, isDragging?: React.RefObject<boolean>, setColumnTotals?: React.Dispatch<React.SetStateAction<ColumnTotals>>): {
|
|
377
378
|
createTask: (data: CreateTaskPayload) => Promise<Task>;
|
|
378
379
|
updateTask: (taskId: string, data: UpdateTaskPayload) => Promise<Task>;
|
|
379
380
|
deleteTask: (taskId: string) => Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -374,6 +374,7 @@ function useTaskBoard(isDragging) {
|
|
|
374
374
|
tasks,
|
|
375
375
|
setTasks,
|
|
376
376
|
columnTotals,
|
|
377
|
+
setColumnTotals,
|
|
377
378
|
columnUnreads,
|
|
378
379
|
setColumnUnreads,
|
|
379
380
|
boardLoading,
|
|
@@ -389,7 +390,7 @@ function useTaskBoard(isDragging) {
|
|
|
389
390
|
|
|
390
391
|
// src/hooks/useTaskActions.ts
|
|
391
392
|
var import_react3 = require("react");
|
|
392
|
-
function useTaskActions(tasks, setTasks, fetchTasks, isDragging) {
|
|
393
|
+
function useTaskActions(tasks, setTasks, fetchTasks, isDragging, setColumnTotals) {
|
|
393
394
|
const { service, config } = useTaskBoardContext();
|
|
394
395
|
const internalDragging = (0, import_react3.useRef)(false);
|
|
395
396
|
const draggingRef = isDragging ?? internalDragging;
|
|
@@ -443,6 +444,13 @@ function useTaskActions(tasks, setTasks, fetchTasks, isDragging) {
|
|
|
443
444
|
}
|
|
444
445
|
return newTasks;
|
|
445
446
|
});
|
|
447
|
+
if (sourceStatus !== destStatus && setColumnTotals) {
|
|
448
|
+
setColumnTotals((prev) => ({
|
|
449
|
+
...prev,
|
|
450
|
+
[sourceStatus]: Math.max(0, (prev[sourceStatus] || 0) - 1),
|
|
451
|
+
[destStatus]: (prev[destStatus] || 0) + 1
|
|
452
|
+
}));
|
|
453
|
+
}
|
|
446
454
|
try {
|
|
447
455
|
await service.updateTask(taskId, { status: destStatus, position: newPosition });
|
|
448
456
|
} catch {
|
|
@@ -450,7 +458,7 @@ function useTaskActions(tasks, setTasks, fetchTasks, isDragging) {
|
|
|
450
458
|
} finally {
|
|
451
459
|
draggingRef.current = false;
|
|
452
460
|
}
|
|
453
|
-
}, [setTasks, service, fetchTasks]);
|
|
461
|
+
}, [setTasks, setColumnTotals, service, fetchTasks]);
|
|
454
462
|
return { createTask, updateTask, deleteTask, markTaskRead, moveTask };
|
|
455
463
|
}
|
|
456
464
|
|
|
@@ -543,11 +551,15 @@ function formatDateTime(dateStr) {
|
|
|
543
551
|
minute: "2-digit"
|
|
544
552
|
});
|
|
545
553
|
}
|
|
554
|
+
function stripMentionMarkup(text) {
|
|
555
|
+
return text.replace(/@\[(.*?)\]\(.*?\)/g, "@$1");
|
|
556
|
+
}
|
|
546
557
|
function getDescriptionPreview(desc) {
|
|
547
558
|
if (!desc) return "";
|
|
548
|
-
if (typeof desc === "string") return desc;
|
|
559
|
+
if (typeof desc === "string") return stripMentionMarkup(desc);
|
|
549
560
|
for (const section of DESCRIPTION_SECTIONS) {
|
|
550
|
-
|
|
561
|
+
const val = desc[section.key]?.trim();
|
|
562
|
+
if (val) return stripMentionMarkup(val);
|
|
551
563
|
}
|
|
552
564
|
return "";
|
|
553
565
|
}
|
|
@@ -692,18 +704,20 @@ var TaskCard = (0, import_react5.memo)(function TaskCard2({ task, index, onClick
|
|
|
692
704
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
693
705
|
function LoadMoreSentinel({ loading, onLoadMore, remaining }) {
|
|
694
706
|
const sentinelRef = (0, import_react6.useRef)(null);
|
|
707
|
+
const onLoadMoreRef = (0, import_react6.useRef)(onLoadMore);
|
|
708
|
+
onLoadMoreRef.current = onLoadMore;
|
|
695
709
|
(0, import_react6.useEffect)(() => {
|
|
696
710
|
const el = sentinelRef.current;
|
|
697
711
|
if (!el) return;
|
|
698
712
|
const observer = new IntersectionObserver(
|
|
699
713
|
([entry]) => {
|
|
700
|
-
if (entry.isIntersecting && !loading)
|
|
714
|
+
if (entry.isIntersecting && !loading) onLoadMoreRef.current();
|
|
701
715
|
},
|
|
702
716
|
{ threshold: 0.1 }
|
|
703
717
|
);
|
|
704
718
|
observer.observe(el);
|
|
705
719
|
return () => observer.disconnect();
|
|
706
|
-
}, [loading
|
|
720
|
+
}, [loading]);
|
|
707
721
|
const skeletonCount = loading ? Math.min(remaining, 10) : 0;
|
|
708
722
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { ref: sentinelRef, className: "space-y-2 pt-2", children: Array.from({ length: skeletonCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SkeletonCard, {}, i)) });
|
|
709
723
|
}
|
|
@@ -2098,7 +2112,7 @@ function TaskBoard({
|
|
|
2098
2112
|
const { columns, features, service } = useTaskBoardContext();
|
|
2099
2113
|
const isDraggingRef = (0, import_react13.useRef)(false);
|
|
2100
2114
|
const board = useTaskBoard(isDraggingRef);
|
|
2101
|
-
const actions = useTaskActions(board.tasks, board.setTasks, board.fetchTasks, isDraggingRef);
|
|
2115
|
+
const actions = useTaskActions(board.tasks, board.setTasks, board.fetchTasks, isDraggingRef, board.setColumnTotals);
|
|
2102
2116
|
const { copiedTaskId, copyShareLink } = useShareLink();
|
|
2103
2117
|
const [selectedTask, setSelectedTask] = (0, import_react13.useState)(null);
|
|
2104
2118
|
const [createForStatus, setCreateForStatus] = (0, import_react13.useState)("");
|