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:
@@ -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);
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user