#
jordium-gantt-vue3
**π Languages**: [π English Documentation](./README-EN.md) | [π δΈζζζ‘£](./README.md)
[](https://www.npmjs.com/package/jordium-gantt-vue3)
[](https://opensource.org/licenses/MIT)
[](https://vuejs.org/)
[](https://www.typescriptlang.org/)
> Modern Vue 3 Gantt chart component library providing complete solutions for project management and task scheduling
## π Online Demo
π― **[Try Github Live Demo β](https://nelson820125.github.io/jordium-gantt-vue3/)**
*The online demo includes full feature showcase: task management, milestones, theme switching, internationalization, etc.*
## π¨ Theme Support
### Light Theme

### Dark Theme

## π Features
- π **Complete Functionality**: Task management, milestone tracking, dependency relationships, progress visualization
- π¨ **Theme Switching**: Built-in light/dark themes with customizable theme variables
- π±οΈ **Rich Interactions**: Drag adjustment, resizing, double-click editing, context menus
- π **Internationalization**: Built-in Chinese/English support with custom language pack capability
- π± **Responsive**: Desktop and mobile compatible with smooth touch experience
- β‘ **High Performance**: Virtual scrolling, lazy loading, optimized rendering
- π§ **Extensible**: Rich API interfaces supporting custom components and events
- π **Type Safe**: Complete TypeScript support for better development experience
## π¦ Installation
```bash
# npm
npm install jordium-gantt-vue3
# yarn
yarn add jordium-gantt-vue3
# pnpm
pnpm add jordium-gantt-vue3
```
## π License
[MIT License](./LICENSE) Β© 2025 JordiUM
---
> π‘ **Badge Downloads**οΌ
> - npm version badgeοΌhttps://img.shields.io/npm/v/jordium-gantt-vue3.svg
> - MIT license badgeοΌhttps://img.shields.io/badge/license-MIT-blue.svg
> - Vue version badgeοΌhttps://img.shields.io/badge/vue-3.x-green.svg
> - TypeScript badgeοΌhttps://img.shields.io/badge/typescript-5.x-blue.svg
## π Project Structure
```
jordium-gantt-vue3/
βββ src/ # Source code directory
β βββ components/ # Core components
β β βββ GanttChart.vue # Main entry component
β β βββ TaskList.vue # Task list
β β βββ Timeline.vue # Timeline
β β βββ TaskBar.vue # Task bar
β β βββ MilestonePoint.vue # Milestone
β β βββ ... # Other components
β βββ models/ # Data models
β β βββ classes/ # Class definitions
β β βββ configs/ # Configuration interfaces
β βββ composables/ # Composable functions
β βββ styles/ # Style files
β βββ index.ts # Export entry
βββ demo/ # Development demo
βββ dist/ # Build output
βββ docs/ # Documentation
βββ package.json
```
## π§ API Reference
### GanttChart Properties
| Property | Type | Default | Description |
|----------|------|---------|-------------|
| `tasks` | `Task[]` | `[]` | Task data array |
| `milestones` | `Task[]` | `[]` | Milestone data array |
| `editComponent` | `any` | - | Custom edit component |
| `useDefaultDrawer` | `boolean` | `true` | Use default edit drawer |
| `showToolbar` | `boolean` | `true` | Show toolbar |
| `toolbarConfig` | `ToolbarConfig` | `{}` | Toolbar configuration |
| `localeMessages` | `Partial` | - | Custom locale messages |
| `onTaskDoubleClick` | `(task: Task) => void` | - | Task double-click event callback |
| `onTaskDelete` | `(task: Task) => void` | - | Task delete event callback |
| `onTaskUpdate` | `(task: Task) => void` | - | Task update event callback |
| `onTaskAdd` | `(task: Task) => void` | - | Task add event callback |
| `onMilestoneSave` | `(milestone: Task) => void` | - | Milestone save event callback |
| `onMilestoneDelete` | `(milestoneId: number) => void` | - | Milestone delete event callback |
| `onMilestoneIconChange` | `(milestoneId: number, icon: string) => void` | - | Milestone icon change event callback |
| `onAddTask` | `() => void` | - | Add task toolbar event callback |
| `onAddMilestone` | `() => void` | - | Add milestone toolbar event callback |
| `onTodayLocate` | `() => void` | - | Locate today toolbar event callback |
| `onExportCsv` | `() => boolean \| void` | - | Export CSV toolbar event callback |
| `onExportPdf` | `() => void` | - | Export PDF toolbar event callback |
| `onLanguageChange` | `(lang: 'zh-CN' \| 'en-US') => void` | - | Language change toolbar event callback |
| `onThemeChange` | `(isDark: boolean) => void` | - | Theme change toolbar event callback |
| `onFullscreenChange` | `(isFullscreen: boolean) => void` | - | Fullscreen change toolbar event callback |
### GanttChart Events
| Event | Parameters | Description |
|-------|------------|-------------|
| `taskbar-drag-end` | `task: Task` | Task bar drag end |
| `taskbar-resize-end` | `task: Task` | Task bar resize end |
| `milestone-drag-end` | `milestone: Task` | Milestone drag end |
### Data Types
#### Core Types (src/models/classes)
**Task Type**
```typescript
interface Task {
id: number // Unique task identifier
name: string // Task name
predecessor?: string // Predecessor task ID
assignee?: string // Assignee
startDate?: string // Start date (YYYY-MM-DD format)
endDate?: string // End date (YYYY-MM-DD format)
progress?: number // Completion progress (0-100)
estimatedHours?: number // Estimated hours
actualHours?: number // Actual hours
parentId?: number // Parent task ID
children?: Task[] // Child tasks array (supports nested structure)
collapsed?: boolean // Whether child tasks are collapsed
isParent?: boolean // Whether it's a parent task
type?: string // Task type (task/story/bug/milestone)
description?: string // Task description
icon?: string // Task icon
level?: number // Task level
}
```
**Milestone Type**
```typescript
// Milestone is actually a special usage of Task type
// Task object with type: 'milestone' property
interface Milestone extends Task {
type: 'milestone' // Must be 'milestone'
startDate: string // Milestone date (required)
endDate?: string // End date (optional, usually same as startDate)
}
```
**Language Type**
```typescript
type Language = 'zh' | 'en' // Supported language types
type Locale = 'zh-CN' | 'en-US' // Complete language locale identifiers
```
#### Configuration Types (src/models/configs)
**TimelineConfig**
```typescript
interface TimelineConfig {
startDate: Date // Timeline start date
endDate: Date // Timeline end date
zoomLevel: number // Zoom level
}
```
**ToolbarConfig**
```typescript
interface ToolbarConfig {
showAddTask?: boolean // Show add task button
showAddMilestone?: boolean // Show add milestone button
showTodayLocate?: boolean // Show locate today button
showExportCsv?: boolean // Show export CSV button
showExportPdf?: boolean // Show export PDF button
showLanguage?: boolean // Show language switch button
showTheme?: boolean // Show theme switch button
showFullscreen?: boolean // Show fullscreen toggle button
showTimeScale?: boolean // Show time scale toggle buttons (Day|Week|Month)
}
```
#### Composable Functions (src/composables)
**useI18n Internationalization Tool**
```typescript
// Provides multi-language support
const {
locale, // Current language
setLocale, // Switch language
t, // Translation function
formatYearMonth // Year-month formatting
} = useI18n()
// Supported languages
type Locale = 'zh-CN' | 'en-US'
```
**useMessage Message Tool**
```typescript
// Provides global message notifications
const { showMessage } = useMessage()
// Message types
type MessageType = 'success' | 'error' | 'warning' | 'info'
// Usage example
showMessage('Operation successful', 'success')
```
## π» Basic Usage
### Simple Example
```vue
```
### Custom Event Handling
```vue
```
### Theme and Internationalization
```vue
```
## π€ Contributing & Collaboration
### Contributing
We welcome community contributions! If you want to participate in project development:
1. **Fork** this repository
2. **Create** your feature branch (`git checkout -b feature/AmazingFeature`)
3. **Commit** your changes (`git commit -m 'Add some AmazingFeature'`)
4. **Push** to the branch (`git push origin feature/AmazingFeature`)
5. **Open** a Pull Request
### Report Issues
If you find bugs or have feature suggestions:
- π¬ [Submit Github Issue](https://github.com/nelson820125/jordium-gantt-vue3/issues)
- π¬ [Submit Gitee Issue](https://gitee.com/jordium/jordium-gantt-vue3/issues)
- π§ Send email toοΌning.li@jordium.com / nelson820125@gmail.com / lining820125@163.com
### Business Collaboration
We provide professional technical support and custom development services:
- π’ **Enterprise Customization**: Custom Gantt chart features based on business needs
- πΌ **Technical Consulting**: Project management system architecture design consultation
**Contact Information**οΌ
- π§ Business EmailοΌning.li@jordium.com / nelson820125@gmail.com
### Development Environment
```bash
# Clone project
git clone https://github.com/nelson820125/jordium-gantt-vue3.git
# Install dependencies
npm install
# Start development server
npm run dev
# Build library
npm run build:lib
# Run tests
npm run test
```
---
**π Related Links**
- [GitHub Repository](https://github.com/nelson820125/jordium-gantt-vue3)
- [Changelog](./CHANGELOG.md)
> π‘ **Tip**: If this project helps you, please give us a β Star!