docs: remove outdated implementation documentation files - Deleted AI_TOOLS_IMPLEMENTATION.md (296 lines) - outdated AI tools integration guide - Deleted ALIGN_INDENT_COLUMNS_FIX.md (557 lines) - obsolete column alignment fix documentation - Deleted BLOCK_COMMENTS_IMPLEMENTATION.md (400 lines) - superseded block comments implementation notes - Deleted DRAG_DROP_COLUMNS_IMPLEMENTATION.md (500 lines) - outdated drag-and-drop columns guide - Deleted INLINE_TOOLBAR_IMPLEMENTATION.md (350 lines) - obsol
429 lines
12 KiB
Markdown
429 lines
12 KiB
Markdown
# Kanban Board Refactoring - FuseBase Style
|
||
## Complete Implementation Guide
|
||
|
||
## 📊 Status
|
||
|
||
### ✅ Completed Files (11 files)
|
||
1. **Types & Models**
|
||
- `src/app/blocks/kanban/models/kanban.types.ts` ✅
|
||
|
||
2. **Services (7 services)**
|
||
- `src/app/blocks/kanban/services/kanban-board.service.ts` ✅
|
||
- `src/app/blocks/kanban/services/kanban-task.service.ts` ✅
|
||
- `src/app/blocks/kanban/services/labels.service.ts` ✅
|
||
- `src/app/blocks/kanban/services/attachments.service.ts` ✅
|
||
- `src/app/blocks/kanban/services/time-tracking.service.ts` ✅
|
||
- `src/app/blocks/kanban/services/date.service.ts` ✅
|
||
|
||
3. **Main Board Component**
|
||
- `src/app/blocks/kanban/kanban-board.component.ts` ✅
|
||
- `src/app/blocks/kanban/kanban-board.component.html` ✅
|
||
- `src/app/blocks/kanban/kanban-board.component.css` ✅
|
||
|
||
4. **Column Component**
|
||
- `src/app/blocks/kanban/components/kanban-column/kanban-column.component.ts` ✅
|
||
- `src/app/blocks/kanban/components/kanban-column/kanban-column.component.html` ✅
|
||
- `src/app/blocks/kanban/components/kanban-column/kanban-column.component.css` ✅
|
||
|
||
---
|
||
|
||
## 🚧 Remaining Files to Create (25+ files)
|
||
|
||
### Phase 1: Core Components (5 components)
|
||
|
||
#### 1. Task Card Component
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/kanban-task-card/kanban-task-card.component.ts`
|
||
- `src/app/blocks/kanban/components/kanban-task-card/kanban-task-card.component.html`
|
||
- `src/app/blocks/kanban/components/kanban-task-card/kanban-task-card.component.css`
|
||
|
||
**Features:**
|
||
- Checkbox (completion toggle)
|
||
- Task title
|
||
- Labels display (pills)
|
||
- Due date with icon
|
||
- Estimated time icon + text
|
||
- Actual time icon + text
|
||
- Attachments count/thumbnail
|
||
- Selected state (blue border)
|
||
- Hover effects
|
||
|
||
#### 2. Task Detail Panel
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/task-detail-panel/task-detail-panel.component.ts`
|
||
- `src/app/blocks/kanban/components/task-detail-panel/task-detail-panel.component.html`
|
||
- `src/app/blocks/kanban/components/task-detail-panel/task-detail-panel.component.css`
|
||
|
||
**Features:**
|
||
- Header with navigation (back/forward)
|
||
- Mark Complete button
|
||
- Close button
|
||
- Editable title
|
||
- Description editor (multiline)
|
||
- Created by section
|
||
- Action buttons: Assignee, Labels, Date, Attach, Estimated time, Time
|
||
- Comments section with avatar
|
||
- Attachment preview grid
|
||
- Slide-in animation from right
|
||
|
||
#### 3. Column Context Menu
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/column-context-menu/column-context-menu.component.ts`
|
||
- `src/app/blocks/kanban/components/column-context-menu/column-context-menu.component.html`
|
||
- `src/app/blocks/kanban/components/column-context-menu/column-context-menu.component.css`
|
||
|
||
**Menu Options:**
|
||
- ✏️ Rename
|
||
- ☑️ Complete all
|
||
- 📋 Convert to Task list
|
||
- 📄 Duplicate
|
||
- ⬅️ Add column left
|
||
- ➡️ Add column right
|
||
- 🗑️ Delete
|
||
|
||
#### 4. Task Context Menu
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/task-context-menu/task-context-menu.component.ts`
|
||
- `src/app/blocks/kanban/components/task-context-menu/task-context-menu.component.html`
|
||
- `src/app/blocks/kanban/components/task-context-menu/task-context-menu.component.css`
|
||
|
||
**Menu Options:**
|
||
- 📋 Copy task
|
||
- 🔗 Copy link to task
|
||
- 📄 Duplicate task
|
||
- ➕ Add new task
|
||
- 🗑️ Delete task
|
||
|
||
---
|
||
|
||
### Phase 2: Dialog Components (5 dialogs)
|
||
|
||
#### 5. Labels Dialog
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/labels-dialog/labels-dialog.component.ts`
|
||
- `src/app/blocks/kanban/components/labels-dialog/labels-dialog.component.html`
|
||
- `src/app/blocks/kanban/components/labels-dialog/labels-dialog.component.css`
|
||
|
||
**Features:**
|
||
- Input field "Type label name"
|
||
- Create on Enter
|
||
- Label pills with X button
|
||
- Color-coded (from LABEL_COLORS)
|
||
- Overlay backdrop
|
||
- Click outside to close
|
||
|
||
#### 6. Date Picker Dialog
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/date-picker-dialog/date-picker-dialog.component.ts`
|
||
- `src/app/blocks/kanban/components/date-picker-dialog/date-picker-dialog.component.html`
|
||
- `src/app/blocks/kanban/components/date-picker-dialog/date-picker-dialog.component.css`
|
||
|
||
**Features:**
|
||
- Calendar grid (month view)
|
||
- Time picker (hours:minutes wheel)
|
||
- "Show time" toggle
|
||
- Alert dropdown (None, 5min, 10min, 15min, 30min, 1hour, 1day)
|
||
- Cancel / Done buttons
|
||
- Animated time wheel (FuseBase style)
|
||
|
||
#### 7. Estimated Time Dialog
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/estimated-time-dialog/estimated-time-dialog.component.ts`
|
||
- `src/app/blocks/kanban/components/estimated-time-dialog/estimated-time-dialog.component.html`
|
||
- `src/app/blocks/kanban/components/estimated-time-dialog/estimated-time-dialog.component.css`
|
||
|
||
**Features:**
|
||
- 3 wheels: days (d), hours (h), minutes (m)
|
||
- Scroll picker style
|
||
- Cancel / Save buttons
|
||
- Blue highlight on selected value
|
||
|
||
#### 8. Actual Time Dialog
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/actual-time-dialog/actual-time-dialog.component.ts`
|
||
- `src/app/blocks/kanban/components/actual-time-dialog/actual-time-dialog.component.html`
|
||
- `src/app/blocks/kanban/components/actual-time-dialog/actual-time-dialog.component.css`
|
||
|
||
**Features:**
|
||
- 3 wheels: days (d), hours (h), minutes (m)
|
||
- Work type section (chips)
|
||
- Editable work type tags (development, design, etc.)
|
||
- Work description textarea
|
||
- Billable toggle
|
||
- Cancel / Save buttons
|
||
|
||
#### 9. Assignee Dialog
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/assignee-dialog/assignee-dialog.component.ts`
|
||
- `src/app/blocks/kanban/components/assignee-dialog/assignee-dialog.component.html`
|
||
- `src/app/blocks/kanban/components/assignee-dialog/assignee-dialog.component.css`
|
||
|
||
**Features:**
|
||
- User search input
|
||
- User list with avatars
|
||
- Selected state
|
||
- "Unassign" option
|
||
|
||
---
|
||
|
||
### Phase 3: Utility Components (3 components)
|
||
|
||
#### 10. Time Wheel Picker
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/time-wheel-picker/time-wheel-picker.component.ts`
|
||
- `src/app/blocks/kanban/components/time-wheel-picker/time-wheel-picker.component.html`
|
||
- `src/app/blocks/kanban/components/time-wheel-picker/time-wheel-picker.component.css`
|
||
|
||
**Features:**
|
||
- Reusable scroll wheel
|
||
- Configurable range (0-23 for hours, 0-59 for minutes, etc.)
|
||
- Center highlight
|
||
- Smooth scrolling
|
||
- Snap to value
|
||
|
||
#### 11. Calendar Grid
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/calendar-grid/calendar-grid.component.ts`
|
||
- `src/app/blocks/kanban/components/calendar-grid/calendar-grid.component.html`
|
||
- `src/app/blocks/kanban/components/calendar-grid/calendar-grid.component.css`
|
||
|
||
**Features:**
|
||
- Month/year navigation
|
||
- 7-column grid (S M T W T F S)
|
||
- Selected date highlight (blue circle)
|
||
- Today indicator
|
||
- Previous/next month days (grayed out)
|
||
|
||
#### 12. Attachment Preview
|
||
**Files:**
|
||
- `src/app/blocks/kanban/components/attachment-preview/attachment-preview.component.ts`
|
||
- `src/app/blocks/kanban/components/attachment-preview/attachment-preview.component.html`
|
||
- `src/app/blocks/kanban/components/attachment-preview/attachment-preview.component.css`
|
||
|
||
**Features:**
|
||
- Image thumbnail
|
||
- PDF icon with filename
|
||
- File size display
|
||
- Remove button (X)
|
||
- Download button
|
||
- Grid layout
|
||
|
||
---
|
||
|
||
## 🔧 Integration with BlockHostComponent
|
||
|
||
### File to Modify
|
||
`src/app/editor/components/block/block-host.component.ts`
|
||
|
||
### Changes Required
|
||
|
||
1. **Import Kanban Component**
|
||
```typescript
|
||
import { KanbanBoardComponent } from '../../../blocks/kanban/kanban-board.component';
|
||
```
|
||
|
||
2. **Add to Switch Case**
|
||
```typescript
|
||
case 'kanban':
|
||
this.dynamicComponentRef = viewContainerRef.createComponent(KanbanBoardComponent);
|
||
this.dynamicComponentRef.setInput('blockId', this.block.id);
|
||
if (this.block.data) {
|
||
this.dynamicComponentRef.setInput('initialData', JSON.parse(this.block.data));
|
||
}
|
||
break;
|
||
```
|
||
|
||
3. **Update onMenuAction Method**
|
||
Add case for 'kanban' block type to handle save/export.
|
||
|
||
---
|
||
|
||
## 📐 Architecture Summary
|
||
|
||
### Services Layer
|
||
```
|
||
KanbanBoardService
|
||
├─ Board state management
|
||
├─ Column operations
|
||
└─ Serialization
|
||
|
||
KanbanTaskService
|
||
├─ Task CRUD
|
||
├─ Selection state
|
||
└─ Task operations
|
||
|
||
LabelsService
|
||
├─ Label creation
|
||
└─ Color assignment
|
||
|
||
AttachmentsService
|
||
├─ File upload
|
||
├─ Thumbnail generation
|
||
└─ File type detection
|
||
|
||
TimeTrackingService
|
||
├─ Time formatting
|
||
├─ Time calculations
|
||
└─ Work type management
|
||
|
||
DateService
|
||
├─ Date formatting
|
||
├─ Relative dates
|
||
└─ Alert scheduling
|
||
```
|
||
|
||
### Component Hierarchy
|
||
```
|
||
KanbanBoardComponent (Main)
|
||
├─ KanbanColumnComponent (Multiple)
|
||
│ ├─ KanbanTaskCardComponent (Multiple)
|
||
│ └─ ColumnContextMenuComponent
|
||
│
|
||
├─ TaskDetailPanelComponent
|
||
│ ├─ LabelsDialog
|
||
│ ├─ DatePickerDialog
|
||
│ ├─ EstimatedTimeDialog
|
||
│ ├─ ActualTimeDialog
|
||
│ ├─ AssigneeDialog
|
||
│ └─ AttachmentPreview
|
||
│
|
||
└─ TaskContextMenuComponent
|
||
```
|
||
|
||
### Data Flow
|
||
```
|
||
User Action
|
||
↓
|
||
Component Event
|
||
↓
|
||
Service Method
|
||
↓
|
||
Signal Update
|
||
↓
|
||
UI Re-render (OnPush)
|
||
```
|
||
|
||
---
|
||
|
||
## 🎨 Styling Guide
|
||
|
||
### Color Palette (Dark Theme)
|
||
```css
|
||
Background: #2b2b2b
|
||
Column Header: #404040
|
||
Column Body: #3a3a3a
|
||
Card Background: #353535
|
||
Border: #555555
|
||
Text Primary: #ffffff
|
||
Text Secondary: #a0a0a0
|
||
Accent Blue: #4a9eff
|
||
Hover: #4a4a4a
|
||
```
|
||
|
||
### Color Palette (Light Theme)
|
||
```css
|
||
Background: #f5f5f5
|
||
Column Header: #e0e0e0
|
||
Column Body: #f9f9f9
|
||
Card Background: #ffffff
|
||
Border: #d0d0d0
|
||
Text Primary: #1a1a1a
|
||
Text Secondary: #666666
|
||
Accent Blue: #2563eb
|
||
Hover: #eeeeee
|
||
```
|
||
|
||
### Key Measurements
|
||
- Column width: 320px (w-80)
|
||
- Card min-height: 60px
|
||
- Gap between cards: 8px (space-y-2)
|
||
- Border radius: 12px (rounded-xl)
|
||
- Task card padding: 12px (p-3)
|
||
|
||
---
|
||
|
||
## ✅ Implementation Checklist
|
||
|
||
### Phase 1: Core Components
|
||
- [x] Types & Interfaces
|
||
- [x] All 7 Services
|
||
- [x] Main Board Component
|
||
- [x] Column Component
|
||
- [ ] Task Card Component
|
||
- [ ] Task Detail Panel
|
||
- [ ] Column Context Menu
|
||
- [ ] Task Context Menu
|
||
|
||
### Phase 2: Dialogs
|
||
- [ ] Labels Dialog
|
||
- [ ] Date Picker Dialog
|
||
- [ ] Estimated Time Dialog
|
||
- [ ] Actual Time Dialog
|
||
- [ ] Assignee Dialog
|
||
|
||
### Phase 3: Utilities
|
||
- [ ] Time Wheel Picker
|
||
- [ ] Calendar Grid
|
||
- [ ] Attachment Preview
|
||
|
||
### Phase 4: Integration
|
||
- [ ] Integrate with BlockHostComponent
|
||
- [ ] Add block type 'kanban' to menu
|
||
- [ ] Persistence (save/load from note frontmatter)
|
||
|
||
### Phase 5: Testing
|
||
- [ ] Create new kanban block
|
||
- [ ] Add columns
|
||
- [ ] Add tasks
|
||
- [ ] Test drag & drop
|
||
- [ ] Test all dialogs
|
||
- [ ] Test context menus
|
||
- [ ] Test time tracking
|
||
- [ ] Test attachments
|
||
|
||
---
|
||
|
||
## 🚀 Next Steps
|
||
|
||
1. **Create remaining 25+ component files** (Task Card, Detail Panel, Dialogs, Menus)
|
||
2. **Implement drag & drop** (already scaffolded with Angular CDK)
|
||
3. **Add persistence layer** (save board state to block.data)
|
||
4. **Test all interactions** following the 10 images provided
|
||
5. **Polish animations & transitions**
|
||
6. **Add keyboard shortcuts**
|
||
7. **Mobile responsiveness**
|
||
|
||
---
|
||
|
||
## 📦 Dependencies
|
||
|
||
Already available in project:
|
||
- Angular 20 ✅
|
||
- Tailwind CSS 3.4 ✅
|
||
- Angular CDK Drag-Drop ✅
|
||
- Angular CDK Overlay ✅
|
||
- Angular Signals ✅
|
||
|
||
---
|
||
|
||
## 🎯 Result
|
||
|
||
A fully functional Kanban board identical to FuseBase with:
|
||
- ✅ Columns (add, rename, delete, reorder)
|
||
- ✅ Tasks (create, edit, complete, duplicate, delete)
|
||
- ✅ Labels (create, assign, colored pills)
|
||
- ✅ Due dates (calendar + time picker + alerts)
|
||
- ✅ Estimated time (d/h/m picker)
|
||
- ✅ Actual time tracking (with work types)
|
||
- ✅ Attachments (upload, preview, thumbnails)
|
||
- ✅ Comments
|
||
- ✅ Drag & drop (tasks + columns)
|
||
- ✅ Detail panel (slide-in from right)
|
||
- ✅ Context menus (column + task)
|
||
- ✅ Smooth animations (FuseBase style)
|
||
|
||
**Total Files:** 40+ files
|
||
**Total Lines:** ~6000+ lines
|
||
**Effort:** 2-3 days for full implementation
|
||
|