0.4.21 • Published 7 months ago

@danyilf/gantt-task-react v0.4.21

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

gantt-task-react

Interactive Gantt Chart for React with TypeScript.

example

Live Demo

Install

npm install gantt-task-react

How to use it

import { Gantt, Task, EventOption, StylingOption, ViewMode, DisplayOption } from 'gantt-task-react';
import "gantt-task-react/dist/index.css";

let tasks: Task[] = [
    {
      start: new Date(2020, 1, 1),
      end: new Date(2020, 1, 2),
      name: 'Idea',
      id: 'Task 0',
      type:'task',
      progress: 45,
      isDisabled: true,
      styles: { progressColor: '#ffbb54', progressSelectedColor: '#ff9e0d' },
    },
    ...
];

// Basic usage
<Gantt tasks={tasks} />

// With styling options
<Gantt
  tasks={tasks}
  viewMode={ViewMode.Day}
  listCellWidth="155px"
  hideTimeColumns={false} // Set to true to hide "From" and "To" columns
/>

// With today line enabled (instead of cell highlighting)
<Gantt
  tasks={tasks}
  todayLineEnabled={true} 
  todayLineColor="#0066FF"
/>

// With event handlers
<Gantt
  tasks={tasks}
  viewMode={view}
  onDateChange={onTaskChange}
  onTaskDelete={onTaskDelete}
  onProgressChange={onProgressChange}
  onDoubleClick={onDblClick}
  onClick={onClick}
/>

How to run example

cd ./example
npm install
npm start

Gantt Configuration

GanttProps

Parameter NameTypeDescription
tasks*TaskTasks array.
EventOptioninterfaceSpecifies gantt events.
DisplayOptioninterfaceSpecifies view type and display timeline language.
StylingOptioninterfaceSpecifies chart and global tasks styles

EventOption

Parameter NameTypeDescription
onSelect(task: Task, isSelected: boolean) => voidSpecifies the function to be executed on the taskbar select or unselect event.
onDoubleClick(task: Task) => voidSpecifies the function to be executed on the taskbar onDoubleClick event.
onClick(task: Task) => voidSpecifies the function to be executed on the taskbar onClick event.
onDelete*(task: Task) => void/boolean/Promise/PromiseSpecifies the function to be executed on the taskbar on Delete button press event.
onDateChange*(task: Task, children: Task[]) => void/boolean/Promise/PromiseSpecifies the function to be executed when drag taskbar event on timeline has finished.
onProgressChange*(task: Task, children: Task[]) => void/boolean/Promise/PromiseSpecifies the function to be executed when drag taskbar progress event has finished.
onExpanderClick*(task: Task | Task[]) => voidSpecifies the function to be executed on the table expander click. Can handle a single task or an array of tasks.
timeStepnumberA time step value for onDateChange. Specify in milliseconds.

* Chart undoes operation if method return false or error. Parameter children returns one level deep records.

DisplayOption

Parameter NameTypeDescription
viewModeenumSpecifies the time scale. Hour, Quarter Day, Half Day, Day, Week(ISO-8601, 1st day is Monday), Month, QuarterYear, Year.
viewDatedateSpecifies display date and time for display.
preStepsCountnumberSpecifies empty space before the fist task
localestringSpecifies the month name language. Able formats: ISO 639-2, Java Locale.
rtlbooleanSets rtl mode.

StylingOption

Parameter NameTypeDescription
headerHeightnumberSpecifies the header height.
ganttHeightnumberSpecifies the gantt chart height without header. Default is 0. It`s mean no height limitation.
columnWidthnumberSpecifies the time period width.
listCellWidthstringSpecifies the task list cell width. Empty string is mean "no display".
hideTimeColumnsbooleanWhether to hide the "From" and "To" columns in the task list while keeping the "Name" column.
enhancedTooltipsbooleanWhether to show enhanced tooltips with more task details (start, end, progress) on hover. Default is false.
rowHeightnumberSpecifies the task row height.
barCornerRadiusnumberSpecifies the taskbar corner rounding.
barFillnumberSpecifies the taskbar occupation. Sets in percent from 0 to 100.
handleWidthnumberSpecifies width the taskbar drag event control for start and end dates.
fontFamilystringSpecifies the application font.
fontSizestringSpecifies the application font size.
barProgressColorstringSpecifies the taskbar progress fill color globally.
barProgressSelectedColorstringSpecifies the taskbar progress fill color globally on select.
barBackgroundColorstringSpecifies the taskbar background fill color globally.
barBackgroundSelectedColorstringSpecifies the taskbar background fill color globally on select.
arrowColorstringSpecifies the relationship arrow fill color.
arrowIndentnumberSpecifies the relationship arrow right indent. Sets in px
todayColorstringSpecifies the current period column fill color.
todayLineEnabledbooleanEnables displaying the current time as a vertical line instead of coloring the cell.
todayLineColorstringSpecifies the color of the vertical line representing current time when todayLineEnabled=true.
TooltipContentSpecifies the Tooltip view for selected taskbar.
TaskListHeaderSpecifies the task list Header view
TaskListTableSpecifies the task list Table view
  • TooltipContent: React.FC<{ task: Task; fontSize: string; fontFamily: string; }>;
  • TaskListHeader: React.FC<{ headerHeight: number; rowWidth: string; fontFamily: string; fontSize: string;}>;
  • TaskListTable: React.FC<{ rowHeight: number; rowWidth: string; fontFamily: string; fontSize: string; locale: string; tasks: Task[]; selectedTaskId: string; setSelectedTask: (taskId: string) => void; }>;

Task

Parameter NameTypeDescription
id*stringTask id.
name*stringTask display name.
type*stringTask display type: task, milestone, project
start*DateTask start date.
end*DateTask end date.
progress*numberTask progress. Sets in percent from 0 to 100.
dependenciesstring[]Specifies the parent dependencies ids.
iconReact.ReactNodeOptional. Allows adding a React node (e.g., an icon component) next to the task name in the task list. Example: icon: <MyIconComponent />
stylesobjectSpecifies the taskbar styling settings locally. Object is passed with the following attributes:
- backgroundColor: String. Specifies the taskbar background fill color locally.
- backgroundSelectedColor: String. Specifies the taskbar background fill color locally on select.
- progressColor: String. Specifies the taskbar progress fill color locally.
- progressSelectedColor: String. Specifies the taskbar progress fill color globally on select.
isDisabledboolDisables all action for current task.
fontSizestringSpecifies the taskbar font size locally.
projectstringTask project name
hideChildrenboolHide children items. Parameter works with project type only

*Required

Example: Using the icon property

You can use the icon property to display icons next to task names. This property accepts any React.ReactNode.

import React from 'react';
import { Task } from 'gantt-task-react';
import { Bug, Settings } from 'lucide-react'; // Example using lucide-react

const tasks: Task[] = [
  {
    id: 'Task 1',
    name: 'Setup Project',
    type: 'task',
    start: new Date(2024, 5, 1),
    end: new Date(2024, 5, 2),
    progress: 100,
    icon: <Settings size={16} /> // Simple icon
  },
  {
    id: 'Task 2',
    name: 'Fix Critical Bug',
    type: 'task',
    start: new Date(2024, 5, 3),
    end: new Date(2024, 5, 4),
    progress: 0,
    // Icon with custom styling (e.g., background color)
    icon: (
      <span
        style={{
          backgroundColor: '#E53E3E', // Red background
          color: 'white',
          padding: '2px 4px',
          borderRadius: '3px',
          display: 'inline-flex',
          alignItems: 'center',
          justifyContent: 'center',
        }}
      >
        <Bug size={12} />
      </span>
    ),
  },
];

License

MIT

Using refs to control the Gantt chart

You can use refs to access methods that control the Gantt chart programmatically:

import React, { useRef } from 'react';
import { Gantt, Task, GanttRef } from 'gantt-task-react';

const App = () => {
  const ganttRef = useRef<GanttRef>(null);
  
  const handleJumpToNow = () => {
    ganttRef.current?.jumpToNow();
  };
  
  const handleExpandAll = () => {
    ganttRef.current?.expandAll();
  };
  
  const handleCollapseAll = () => {
    ganttRef.current?.collapseAll();
  };
  
  return (
    <div>
      <button onClick={handleJumpToNow}>Jump to Current Time</button>
      <button onClick={handleExpandAll}>Expand All</button>
      <button onClick={handleCollapseAll}>Collapse All</button>
      <Gantt 
        ref={ganttRef}
        tasks={tasks} 
        todayLineEnabled={true}
        todayLineColor="#0066FF"
      />
    </div>
  );
};

GanttRef Methods

Method NameDescription
jumpToNow()Scrolls the chart horizontally to center on the current time/date.
expandAll()Expands all tasks that have children (tasks with the hideChildren property).
collapseAll()Collapses all tasks that have children (tasks with the hideChildren property).
0.4.21

7 months ago

0.4.2

7 months ago

0.4.1

7 months ago

0.4.0

8 months ago