refactor(enhanced-kanban): relocate EnhancedKanbanBoardNativeDnD component

- Moved EnhancedKanbanBoardNativeDnD to a new directory for better organization.
- Updated import paths in ProjectViewEnhancedBoard to reflect the new location.
This commit is contained in:
shancds
2025-07-02 16:36:11 +05:30
parent 11e5a6d379
commit 775a91889f
2 changed files with 53 additions and 52 deletions

View File

@@ -3,10 +3,10 @@ import { useSelector, useDispatch } from 'react-redux';
import { RootState } from '@/app/store'; import { RootState } from '@/app/store';
import { ITaskListGroup } from '@/types/tasks/taskList.types'; import { ITaskListGroup } from '@/types/tasks/taskList.types';
import { IProjectTask } from '@/types/project/projectTasksViewModel.types'; import { IProjectTask } from '@/types/project/projectTasksViewModel.types';
import './EnhancedKanbanBoard.css'; import '../EnhancedKanbanBoard.css';
import './EnhancedKanbanGroup.css'; import '../EnhancedKanbanGroup.css';
import './EnhancedKanbanTaskCard.css'; import '../EnhancedKanbanTaskCard.css';
import ImprovedTaskFilters from '../task-management/improved-task-filters'; import ImprovedTaskFilters from '../../task-management/improved-task-filters';
import Card from 'antd/es/card'; import Card from 'antd/es/card';
import Spin from 'antd/es/spin'; import Spin from 'antd/es/spin';
import Empty from 'antd/es/empty'; import Empty from 'antd/es/empty';
@@ -63,56 +63,56 @@ const KanbanGroup: React.FC<{
hoveredTaskIdx: number | null; hoveredTaskIdx: number | null;
hoveredGroupId: string | null; hoveredGroupId: string | null;
}> = ({ group, onGroupDragStart, onGroupDragOver, onGroupDrop, onTaskDragStart, onTaskDragOver, onTaskDrop, hoveredTaskIdx, hoveredGroupId }) => { }> = ({ group, onGroupDragStart, onGroupDragOver, onGroupDrop, onTaskDragStart, onTaskDragOver, onTaskDrop, hoveredTaskIdx, hoveredGroupId }) => {
const themeMode = useAppSelector(state => state.themeReducer.mode); const themeMode = useAppSelector(state => state.themeReducer.mode);
const headerBackgroundColor = useMemo(() => {
const headerBackgroundColor = useMemo(() => { if (themeMode === 'dark') {
if (themeMode === 'dark') { return group.color_code_dark || group.color_code || '#1e1e1e';
return group.color_code_dark || group.color_code || '#1e1e1e'; }
} return group.color_code || '#f5f5f5';
return group.color_code || '#f5f5f5'; }, [themeMode, group.color_code, group.color_code_dark]);
}, [themeMode, group.color_code, group.color_code_dark]); return (
return ( <div className="enhanced-kanban-group">
<div className="enhanced-kanban-group"> <div
<div className="enhanced-kanban-group-header"
className="enhanced-kanban-group-header" style={{
style={{
backgroundColor: headerBackgroundColor, backgroundColor: headerBackgroundColor,
}} }}
draggable draggable
onDragStart={e => onGroupDragStart(e, group.id)} onDragStart={e => onGroupDragStart(e, group.id)}
onDragOver={onGroupDragOver} onDragOver={onGroupDragOver}
onDrop={e => onGroupDrop(e, group.id)} onDrop={e => onGroupDrop(e, group.id)}
> >
<h3>{group.name}</h3> <h3>{group.name}</h3>
<span className="task-count">{group.tasks.length}</span> <span className="task-count">{group.tasks.length}</span>
</div>
<div className="enhanced-kanban-group-tasks"
onDragOver={e => onTaskDragOver(e, group.id, 0)}
onDrop={e => onTaskDrop(e, group.id, 0)}
>
{/* Drop indicator at the top of the group */}
{hoveredGroupId === group.id && hoveredTaskIdx === 0 && (
<div className="drop-preview-indicator"><div className="drop-line" /></div>
)}
{group.tasks.map((task, idx) => (
<React.Fragment key={task.id}>
<TaskCard
task={task}
onTaskDragStart={onTaskDragStart}
onTaskDragOver={onTaskDragOver}
onTaskDrop={onTaskDrop}
groupId={group.id}
isDropIndicator={hoveredGroupId === group.id && hoveredTaskIdx === idx + 1}
/>
</React.Fragment>
))}
{/* Drop indicator at the end of the group */}
{hoveredGroupId === group.id && hoveredTaskIdx === group.tasks.length && (
<div className="drop-preview-indicator"><div className="drop-line" /></div>
)}
</div>
</div> </div>
<div className="enhanced-kanban-group-tasks" )
onDragOver={e => onTaskDragOver(e, group.id, 0)} };
onDrop={e => onTaskDrop(e, group.id, 0)}
>
{/* Drop indicator at the top of the group */}
{hoveredGroupId === group.id && hoveredTaskIdx === 0 && (
<div className="drop-preview-indicator"><div className="drop-line" /></div>
)}
{group.tasks.map((task, idx) => (
<React.Fragment key={task.id}>
<TaskCard
task={task}
onTaskDragStart={onTaskDragStart}
onTaskDragOver={onTaskDragOver}
onTaskDrop={onTaskDrop}
groupId={group.id}
isDropIndicator={hoveredGroupId === group.id && hoveredTaskIdx === idx + 1}
/>
</React.Fragment>
))}
{/* Drop indicator at the end of the group */}
{hoveredGroupId === group.id && hoveredTaskIdx === group.tasks.length && (
<div className="drop-preview-indicator"><div className="drop-line" /></div>
)}
</div>
</div>
)};
const EnhancedKanbanBoardNativeDnD: React.FC<{ projectId: string }> = ({ projectId }) => { const EnhancedKanbanBoardNativeDnD: React.FC<{ projectId: string }> = ({ projectId }) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
@@ -135,6 +135,7 @@ const EnhancedKanbanBoardNativeDnD: React.FC<{ projectId: string }> = ({ project
dispatch(fetchEnhancedKanbanTaskAssignees(projectId) as any); dispatch(fetchEnhancedKanbanTaskAssignees(projectId) as any);
dispatch(fetchEnhancedKanbanLabels(projectId) as any); dispatch(fetchEnhancedKanbanLabels(projectId) as any);
} }
if (!statusCategories.length) { if (!statusCategories.length) {
dispatch(fetchStatusesCategories() as any); dispatch(fetchStatusesCategories() as any);
} }

View File

@@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppSelector } from '@/hooks/useAppSelector';
import EnhancedKanbanBoard from '@/components/enhanced-kanban/EnhancedKanbanBoard'; import EnhancedKanbanBoard from '@/components/enhanced-kanban/EnhancedKanbanBoard';
import EnhancedKanbanBoardNativeDnD from '@/components/enhanced-kanban/EnhancedKanbanBoardNativeDnD'; import EnhancedKanbanBoardNativeDnD from '@/components/enhanced-kanban/EnhancedKanbanBoardNativeDnD/EnhancedKanbanBoardNativeDnD';
const ProjectViewEnhancedBoard: React.FC = () => { const ProjectViewEnhancedBoard: React.FC = () => {
const { project } = useAppSelector(state => state.projectReducer); const { project } = useAppSelector(state => state.projectReducer);