gantt-lib 0.90.0 → 0.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React$1, { ReactNode } from 'react';
2
- import { T as Task$1, R as ResourceTimelineItem, V as ValidationResult, a as ResourcePlannerChartProps, b as ResourceTimelineResource } from './index-CQI1GCao.mjs';
3
- export { D as DAY_MS, c as DependencyError, G as GanttChartMode, d as GanttDateRange, e as GridConfig, f as GridLine, L as LinkType, M as MonthSpan, g as ResourceTimelineMove, h as ResourceTimelineResourceMenuCommand, i as TaskBarGeometry, W as WeekendBlock, j as alignToWorkingDay, k as areTasksHierarchicallyRelated, l as buildAdjacencyList, m as buildTaskRangeFromEnd, n as buildTaskRangeFromStart, o as calculateSuccessorDate, p as cascadeByLinks, q as clampTaskRangeForIncomingFS, r as computeLagFromDates, s as computeParentDates, t as computeParentProgress, u as detectCycles, v as findParentId, w as getAllDependencyEdges, x as getAllDescendants, y as getBusinessDayOffset, z as getChildren, A as getDependencyLag, B as getSuccessorChain, C as getTaskDuration, E as getTransitiveCascadeChain, F as isAncestorTask, H as isTaskParent, I as moveTaskRange, J as moveTaskWithCascade, K as normalizeDependencyLag, N as normalizePredecessorDates, O as normalizeTaskDependencyLags, P as normalizeUTCDate, Q as parseDateOnly, S as recalculateIncomingLags, U as recalculateProjectSchedule, X as recalculateTaskFromDependencies, Y as reflowTasksOnModeSwitch, Z as removeDependenciesBetweenTasks, _ as resizeTaskWithCascade, $ as shiftBusinessDayOffset, a0 as universalCascade, a1 as validateDependencies } from './index-CQI1GCao.mjs';
2
+ import { T as Task$1, R as ResourceTimelineItem, V as ValidationResult, a as TaskDateChangeMode, b as ResourcePlannerChartProps, c as ResourceTimelineResource } from './index-CCzxqxfE.mjs';
3
+ export { D as DAY_MS, d as DependencyError, G as GanttChartMode, e as GanttDateRange, f as GridConfig, g as GridLine, L as LinkType, M as MonthSpan, h as ResourceTimelineMove, i as ResourceTimelineResourceMenuCommand, j as TaskBarGeometry, W as WeekendBlock, k as alignToWorkingDay, l as areTasksHierarchicallyRelated, m as buildAdjacencyList, n as buildTaskRangeFromEnd, o as buildTaskRangeFromStart, p as calculateSuccessorDate, q as cascadeByLinks, r as clampTaskRangeForIncomingFS, s as computeLagFromDates, t as computeParentDates, u as computeParentProgress, v as detectCycles, w as findParentId, x as getAllDependencyEdges, y as getAllDescendants, z as getBusinessDayOffset, A as getChildren, B as getDependencyLag, C as getSuccessorChain, E as getTaskDuration, F as getTransitiveCascadeChain, H as isAncestorTask, I as isTaskParent, J as moveTaskRange, K as moveTaskWithCascade, N as normalizeDependencyLag, O as normalizePredecessorDates, P as normalizeTaskDependencyLags, Q as normalizeUTCDate, S as parseDateOnly, U as recalculateIncomingLags, X as recalculateProjectSchedule, Y as recalculateTaskFromDependencies, Z as reflowTasksOnModeSwitch, _ as removeDependenciesBetweenTasks, $ as resizeTaskWithCascade, a0 as shiftBusinessDayOffset, a1 as universalCascade, a2 as validateDependencies } from './index-CCzxqxfE.mjs';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import * as RadixPopover from '@radix-ui/react-popover';
6
6
 
@@ -314,6 +314,7 @@ interface TaskListColumnContext<TTask extends Task> {
314
314
  task: TTask;
315
315
  rowIndex: number;
316
316
  isEditing: boolean;
317
+ editStartValue?: string;
317
318
  openEditor: () => void;
318
319
  closeEditor: () => void;
319
320
  updateTask: (patch: Partial<TTask>) => void;
@@ -323,12 +324,52 @@ type TaskListColumn<TTask extends Task> = TaskListColumnAnchor & {
323
324
  header: ReactNode;
324
325
  width?: number;
325
326
  minWidth?: number;
327
+ align?: 'left' | 'center' | 'right';
326
328
  editable?: boolean;
327
329
  renderCell: (ctx: TaskListColumnContext<TTask>) => ReactNode;
328
330
  renderEditor?: (ctx: TaskListColumnContext<TTask>) => ReactNode;
329
331
  meta?: Record<string, unknown>;
330
332
  };
331
333
 
334
+ interface TableMatrixColumnGroup {
335
+ id: string;
336
+ header: React$1.ReactNode;
337
+ width?: number;
338
+ className?: string;
339
+ }
340
+ interface TableMatrixColumn<TTask extends Task = Task> {
341
+ id: string;
342
+ header: React$1.ReactNode;
343
+ width: number;
344
+ groupId?: string;
345
+ align?: 'left' | 'center' | 'right';
346
+ className?: string;
347
+ headerClassName?: string;
348
+ cellClassName?: string | ((task: TTask) => string | undefined);
349
+ renderCell: (task: TTask) => React$1.ReactNode;
350
+ }
351
+ interface TableMatrixCellClickContext<TTask extends Task = Task> {
352
+ task: TTask;
353
+ column: TableMatrixColumn<TTask>;
354
+ rowIndex: number;
355
+ columnIndex: number;
356
+ event: React$1.MouseEvent<HTMLDivElement>;
357
+ }
358
+ interface TableMatrixProps<TTask extends Task = Task> {
359
+ tasks: TTask[];
360
+ allTasks?: TTask[];
361
+ columns: Array<TableMatrixColumn<TTask>>;
362
+ columnGroups?: Array<TableMatrixColumnGroup>;
363
+ rowHeight: number;
364
+ headerHeight: number;
365
+ selectedTaskId?: string | null;
366
+ onTaskSelect?: (taskId: string | null) => void;
367
+ onCellClick?: (context: TableMatrixCellClickContext<TTask>) => void;
368
+ highlightedTaskIds?: Set<string>;
369
+ filterMode?: 'highlight' | 'hide';
370
+ }
371
+ declare function TableMatrix<TTask extends Task = Task>({ tasks, allTasks, columns, columnGroups, rowHeight, headerHeight, selectedTaskId, onTaskSelect, onCellClick, highlightedTaskIds, filterMode, }: TableMatrixProps<TTask>): react_jsx_runtime.JSX.Element;
372
+
332
373
  /**
333
374
  * Task data structure for Gantt chart
334
375
  */
@@ -420,13 +461,9 @@ interface TaskListMenuCommand<TTask extends Task = Task> {
420
461
  /** Close the menu after click (default: true) */
421
462
  closeOnSelect?: boolean;
422
463
  }
423
- interface GanttModeProps<TTask extends Task = Task> {
424
- /** Omitted mode keeps the historical task-based gantt behavior. */
425
- mode?: 'gantt';
464
+ interface TaskChartSharedProps<TTask extends Task = Task> {
426
465
  /** Array of tasks to display */
427
466
  tasks: TTask[];
428
- /** Width of each day column in pixels (default: 40) */
429
- dayWidth?: number;
430
467
  /** Height of each task row in pixels (default: 40) */
431
468
  rowHeight?: number;
432
469
  /** Height of the header row in pixels (default: 40) */
@@ -511,8 +548,39 @@ interface GanttModeProps<TTask extends Task = Task> {
511
548
  hiddenTaskListColumns?: readonly TaskListColumnId[];
512
549
  /** Additional commands rendered in the TaskList row three-dots menu */
513
550
  taskListMenuCommands?: TaskListMenuCommand<TTask>[];
551
+ /** Hide row action controls in the TaskList for table-like read/edit presentations. */
552
+ hideTaskListRowActions?: boolean;
553
+ /** Global number of text lines the row height should accommodate in table-like presentations. */
554
+ rowContentLines?: number;
555
+ /** How task-list date pickers apply start/end edits (default: preserve-duration) */
556
+ taskDateChangeMode?: TaskDateChangeMode;
557
+ /** Controlled callback for task-list date picker mode changes */
558
+ onTaskDateChangeModeChange?: (mode: TaskDateChangeMode) => void;
514
559
  }
515
- type GanttChartProps<TTask extends Task = Task, TItem extends ResourceTimelineItem = ResourceTimelineItem> = GanttModeProps<TTask> | ResourcePlannerChartProps<TItem>;
560
+ interface GanttModeProps<TTask extends Task = Task> extends TaskChartSharedProps<TTask> {
561
+ /** Omitted mode keeps the historical task-based gantt behavior. */
562
+ mode?: 'gantt';
563
+ /** Width of each day column in pixels (default: 40) */
564
+ dayWidth?: number;
565
+ /** View mode: 'day' renders one column per day, 'week' renders one column per 7 days, 'month' renders one column per month (default: 'day') */
566
+ viewMode?: 'day' | 'week' | 'month';
567
+ /** Custom day configurations with explicit type (weekend or workday) */
568
+ customDays?: CustomDayConfig[];
569
+ /** Optional base weekend predicate (checked before customDays overrides) */
570
+ isWeekend?: (date: Date) => boolean;
571
+ /** Считать duration в рабочих днях, исключая выходные (default: true) */
572
+ businessDays?: boolean;
573
+ }
574
+ interface TableMatrixModeProps<TTask extends Task = Task> extends TaskChartSharedProps<TTask> {
575
+ mode: 'table-matrix';
576
+ /** Width of the arbitrary right-side matrix columns. */
577
+ matrixColumns: Array<TableMatrixColumn<TTask>>;
578
+ /** Optional grouped header row above matrix columns (e.g. months over weekly columns). */
579
+ matrixColumnGroups?: Array<TableMatrixColumnGroup>;
580
+ /** Called when any data cell in the right-side matrix is clicked. */
581
+ onMatrixCellClick?: (context: TableMatrixCellClickContext<TTask>) => void;
582
+ }
583
+ type GanttChartProps<TTask extends Task = Task, TItem extends ResourceTimelineItem = ResourceTimelineItem> = GanttModeProps<TTask> | TableMatrixModeProps<TTask> | ResourcePlannerChartProps<TItem>;
516
584
  interface ExportToPdfOptions {
517
585
  /** Structured header displayed above the exported chart */
518
586
  header?: ExportToPdfHeaderOptions;
@@ -758,6 +826,8 @@ interface TaskListProps {
758
826
  onInsertAfter?: (taskId: string, newTask: Task) => void;
759
827
  /** Callback when tasks are reordered via drag in the task list */
760
828
  onReorder?: (tasks: Task[], movedTaskId?: string, inferredParentId?: string) => void;
829
+ /** Disable task row drag/reorder in the task list (default: false) */
830
+ disableTaskDrag?: boolean;
761
831
  /** ID of task that should enter edit mode on mount (for auto-edit after insert) */
762
832
  editingTaskId?: string | null;
763
833
  /** Enable add task button at bottom of task list (default: true) */
@@ -800,6 +870,14 @@ interface TaskListProps {
800
870
  hiddenTaskListColumns?: readonly TaskListColumnId[];
801
871
  /** Additional commands rendered in each row three-dots menu */
802
872
  taskListMenuCommands?: TaskListMenuCommand<Task>[];
873
+ /** Hide row action controls such as insert, hierarchy action buttons, and the context menu trigger. */
874
+ hideTaskListRowActions?: boolean;
875
+ /** Global number of visible content lines used to size every row consistently. */
876
+ rowContentLines?: number;
877
+ /** How task-list date pickers apply start/end edits */
878
+ taskDateChangeMode?: TaskDateChangeMode;
879
+ /** Controlled callback for task-list date picker mode changes */
880
+ onTaskDateChangeModeChange?: (mode: TaskDateChangeMode) => void;
803
881
  }
804
882
  /**
805
883
  * TaskList component - displays tasks in a table format as an overlay
@@ -898,6 +976,8 @@ interface DatePickerProps {
898
976
  isWeekend?: (date: Date) => boolean;
899
977
  /** Whether to use business days for +1/+7 buttons (default: true) */
900
978
  businessDays?: boolean;
979
+ /** Optional footer content rendered below the calendar popup */
980
+ footer?: React$1.ReactNode;
901
981
  }
902
982
  /**
903
983
  * DatePicker component — shows formatted date as a button, opens calendar popup on click.
@@ -1295,4 +1375,4 @@ interface VisibleReorderPosition {
1295
1375
  */
1296
1376
  declare function getVisibleReorderPosition(orderedTasks: TaskLike[], visibleTasks: TaskLike[], movedTaskId: string, originVisibleIndex: number, dropVisibleIndex: number): VisibleReorderPosition | null;
1297
1377
 
1298
- export { type BuiltInTaskListColumnId, Button, type ButtonProps, Calendar, type CalendarProps, type CustomDayConfig, type CustomDayPredicateConfig, DatePicker, type DatePickerProps, DragGuideLines, type ExportToPdfHeaderOptions, type ExportToPdfOptions, GanttChart, type GanttChartHandle, type GanttChartProps, type GanttModeProps, GridBackground, Input, type InputProps, type MonthBlock, Popover, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, ResourcePlannerChartProps, ResourceTimelineChart, type ResourceTimelineConflictRange, ResourceTimelineItem, type ResourceTimelineLayoutDiagnostic, type ResourceTimelineLayoutItem, type ResourceTimelineLayoutOptions, type ResourceTimelineLayoutResult, type ResourceTimelineLayoutRow, ResourceTimelineResource, type Task, type TaskDependency, TaskList, type TaskListColumn, type TaskListColumnContext, type TaskListColumnId, type TaskListMenuCommand, type TaskListProps, type TaskPredicate, TaskRow, TimeScaleHeader, TodayIndicator, ValidationResult, type VisibleReorderPosition, type WeekBlock, type WeekSpan, type WithoutDepsOptions, type YearSpan, addBusinessDays, and, calculateBezierPath, calculateDependencyPath, calculateGridLines, calculateGridWidth, calculateMilestoneConnectionBounds, calculateMilestoneGeometry, calculateMonthGridLines, calculateOrthogonalPath, calculateTaskBar, calculateWeekGridLines, calculateWeekendBlocks, clampDateRangeForIncomingFS, createCustomDayPredicate, createDateKey, detectEdgeZone, expired, flattenHierarchy, formatDateLabel, formatDateRangeLabel, getBusinessDaysCount, getCursorForPosition, getDayOffset, getMonthBlocks, getMonthDays, getMonthSpans, getMultiMonthDays, getVisibleReorderPosition, getWeekBlocks, getWeekSpans, getYearSpans, inDateRange, isTaskExpired, isToday, isWeekend, layoutResourceTimelineItems, nameContains, normalizeHierarchyTasks, normalizeTaskDates, not, or, parseUTCDate, pixelsToDate, progressInRange, resolveDateRangeFromPixels, resolveTaskHorizontalGeometry, subtractBusinessDays, useTaskDrag, withoutDeps };
1378
+ export { type BuiltInTaskListColumnId, Button, type ButtonProps, Calendar, type CalendarProps, type CustomDayConfig, type CustomDayPredicateConfig, DatePicker, type DatePickerProps, DragGuideLines, type ExportToPdfHeaderOptions, type ExportToPdfOptions, GanttChart, type GanttChartHandle, type GanttChartProps, type GanttModeProps, GridBackground, Input, type InputProps, type MonthBlock, Popover, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, ResourcePlannerChartProps, ResourceTimelineChart, type ResourceTimelineConflictRange, ResourceTimelineItem, type ResourceTimelineLayoutDiagnostic, type ResourceTimelineLayoutItem, type ResourceTimelineLayoutOptions, type ResourceTimelineLayoutResult, type ResourceTimelineLayoutRow, ResourceTimelineResource, TableMatrix, type TableMatrixCellClickContext, type TableMatrixColumn, type TableMatrixColumnGroup, type TableMatrixModeProps, type Task, TaskDateChangeMode, type TaskDependency, TaskList, type TaskListColumn, type TaskListColumnContext, type TaskListColumnId, type TaskListMenuCommand, type TaskListProps, type TaskPredicate, TaskRow, TimeScaleHeader, TodayIndicator, ValidationResult, type VisibleReorderPosition, type WeekBlock, type WeekSpan, type WithoutDepsOptions, type YearSpan, addBusinessDays, and, calculateBezierPath, calculateDependencyPath, calculateGridLines, calculateGridWidth, calculateMilestoneConnectionBounds, calculateMilestoneGeometry, calculateMonthGridLines, calculateOrthogonalPath, calculateTaskBar, calculateWeekGridLines, calculateWeekendBlocks, clampDateRangeForIncomingFS, createCustomDayPredicate, createDateKey, detectEdgeZone, expired, flattenHierarchy, formatDateLabel, formatDateRangeLabel, getBusinessDaysCount, getCursorForPosition, getDayOffset, getMonthBlocks, getMonthDays, getMonthSpans, getMultiMonthDays, getVisibleReorderPosition, getWeekBlocks, getWeekSpans, getYearSpans, inDateRange, isTaskExpired, isToday, isWeekend, layoutResourceTimelineItems, nameContains, normalizeHierarchyTasks, normalizeTaskDates, not, or, parseUTCDate, pixelsToDate, progressInRange, resolveDateRangeFromPixels, resolveTaskHorizontalGeometry, subtractBusinessDays, useTaskDrag, withoutDeps };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React$1, { ReactNode } from 'react';
2
- import { T as Task$1, R as ResourceTimelineItem, V as ValidationResult, a as ResourcePlannerChartProps, b as ResourceTimelineResource } from './index-CQI1GCao.js';
3
- export { D as DAY_MS, c as DependencyError, G as GanttChartMode, d as GanttDateRange, e as GridConfig, f as GridLine, L as LinkType, M as MonthSpan, g as ResourceTimelineMove, h as ResourceTimelineResourceMenuCommand, i as TaskBarGeometry, W as WeekendBlock, j as alignToWorkingDay, k as areTasksHierarchicallyRelated, l as buildAdjacencyList, m as buildTaskRangeFromEnd, n as buildTaskRangeFromStart, o as calculateSuccessorDate, p as cascadeByLinks, q as clampTaskRangeForIncomingFS, r as computeLagFromDates, s as computeParentDates, t as computeParentProgress, u as detectCycles, v as findParentId, w as getAllDependencyEdges, x as getAllDescendants, y as getBusinessDayOffset, z as getChildren, A as getDependencyLag, B as getSuccessorChain, C as getTaskDuration, E as getTransitiveCascadeChain, F as isAncestorTask, H as isTaskParent, I as moveTaskRange, J as moveTaskWithCascade, K as normalizeDependencyLag, N as normalizePredecessorDates, O as normalizeTaskDependencyLags, P as normalizeUTCDate, Q as parseDateOnly, S as recalculateIncomingLags, U as recalculateProjectSchedule, X as recalculateTaskFromDependencies, Y as reflowTasksOnModeSwitch, Z as removeDependenciesBetweenTasks, _ as resizeTaskWithCascade, $ as shiftBusinessDayOffset, a0 as universalCascade, a1 as validateDependencies } from './index-CQI1GCao.js';
2
+ import { T as Task$1, R as ResourceTimelineItem, V as ValidationResult, a as TaskDateChangeMode, b as ResourcePlannerChartProps, c as ResourceTimelineResource } from './index-CCzxqxfE.js';
3
+ export { D as DAY_MS, d as DependencyError, G as GanttChartMode, e as GanttDateRange, f as GridConfig, g as GridLine, L as LinkType, M as MonthSpan, h as ResourceTimelineMove, i as ResourceTimelineResourceMenuCommand, j as TaskBarGeometry, W as WeekendBlock, k as alignToWorkingDay, l as areTasksHierarchicallyRelated, m as buildAdjacencyList, n as buildTaskRangeFromEnd, o as buildTaskRangeFromStart, p as calculateSuccessorDate, q as cascadeByLinks, r as clampTaskRangeForIncomingFS, s as computeLagFromDates, t as computeParentDates, u as computeParentProgress, v as detectCycles, w as findParentId, x as getAllDependencyEdges, y as getAllDescendants, z as getBusinessDayOffset, A as getChildren, B as getDependencyLag, C as getSuccessorChain, E as getTaskDuration, F as getTransitiveCascadeChain, H as isAncestorTask, I as isTaskParent, J as moveTaskRange, K as moveTaskWithCascade, N as normalizeDependencyLag, O as normalizePredecessorDates, P as normalizeTaskDependencyLags, Q as normalizeUTCDate, S as parseDateOnly, U as recalculateIncomingLags, X as recalculateProjectSchedule, Y as recalculateTaskFromDependencies, Z as reflowTasksOnModeSwitch, _ as removeDependenciesBetweenTasks, $ as resizeTaskWithCascade, a0 as shiftBusinessDayOffset, a1 as universalCascade, a2 as validateDependencies } from './index-CCzxqxfE.js';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import * as RadixPopover from '@radix-ui/react-popover';
6
6
 
@@ -314,6 +314,7 @@ interface TaskListColumnContext<TTask extends Task> {
314
314
  task: TTask;
315
315
  rowIndex: number;
316
316
  isEditing: boolean;
317
+ editStartValue?: string;
317
318
  openEditor: () => void;
318
319
  closeEditor: () => void;
319
320
  updateTask: (patch: Partial<TTask>) => void;
@@ -323,12 +324,52 @@ type TaskListColumn<TTask extends Task> = TaskListColumnAnchor & {
323
324
  header: ReactNode;
324
325
  width?: number;
325
326
  minWidth?: number;
327
+ align?: 'left' | 'center' | 'right';
326
328
  editable?: boolean;
327
329
  renderCell: (ctx: TaskListColumnContext<TTask>) => ReactNode;
328
330
  renderEditor?: (ctx: TaskListColumnContext<TTask>) => ReactNode;
329
331
  meta?: Record<string, unknown>;
330
332
  };
331
333
 
334
+ interface TableMatrixColumnGroup {
335
+ id: string;
336
+ header: React$1.ReactNode;
337
+ width?: number;
338
+ className?: string;
339
+ }
340
+ interface TableMatrixColumn<TTask extends Task = Task> {
341
+ id: string;
342
+ header: React$1.ReactNode;
343
+ width: number;
344
+ groupId?: string;
345
+ align?: 'left' | 'center' | 'right';
346
+ className?: string;
347
+ headerClassName?: string;
348
+ cellClassName?: string | ((task: TTask) => string | undefined);
349
+ renderCell: (task: TTask) => React$1.ReactNode;
350
+ }
351
+ interface TableMatrixCellClickContext<TTask extends Task = Task> {
352
+ task: TTask;
353
+ column: TableMatrixColumn<TTask>;
354
+ rowIndex: number;
355
+ columnIndex: number;
356
+ event: React$1.MouseEvent<HTMLDivElement>;
357
+ }
358
+ interface TableMatrixProps<TTask extends Task = Task> {
359
+ tasks: TTask[];
360
+ allTasks?: TTask[];
361
+ columns: Array<TableMatrixColumn<TTask>>;
362
+ columnGroups?: Array<TableMatrixColumnGroup>;
363
+ rowHeight: number;
364
+ headerHeight: number;
365
+ selectedTaskId?: string | null;
366
+ onTaskSelect?: (taskId: string | null) => void;
367
+ onCellClick?: (context: TableMatrixCellClickContext<TTask>) => void;
368
+ highlightedTaskIds?: Set<string>;
369
+ filterMode?: 'highlight' | 'hide';
370
+ }
371
+ declare function TableMatrix<TTask extends Task = Task>({ tasks, allTasks, columns, columnGroups, rowHeight, headerHeight, selectedTaskId, onTaskSelect, onCellClick, highlightedTaskIds, filterMode, }: TableMatrixProps<TTask>): react_jsx_runtime.JSX.Element;
372
+
332
373
  /**
333
374
  * Task data structure for Gantt chart
334
375
  */
@@ -420,13 +461,9 @@ interface TaskListMenuCommand<TTask extends Task = Task> {
420
461
  /** Close the menu after click (default: true) */
421
462
  closeOnSelect?: boolean;
422
463
  }
423
- interface GanttModeProps<TTask extends Task = Task> {
424
- /** Omitted mode keeps the historical task-based gantt behavior. */
425
- mode?: 'gantt';
464
+ interface TaskChartSharedProps<TTask extends Task = Task> {
426
465
  /** Array of tasks to display */
427
466
  tasks: TTask[];
428
- /** Width of each day column in pixels (default: 40) */
429
- dayWidth?: number;
430
467
  /** Height of each task row in pixels (default: 40) */
431
468
  rowHeight?: number;
432
469
  /** Height of the header row in pixels (default: 40) */
@@ -511,8 +548,39 @@ interface GanttModeProps<TTask extends Task = Task> {
511
548
  hiddenTaskListColumns?: readonly TaskListColumnId[];
512
549
  /** Additional commands rendered in the TaskList row three-dots menu */
513
550
  taskListMenuCommands?: TaskListMenuCommand<TTask>[];
551
+ /** Hide row action controls in the TaskList for table-like read/edit presentations. */
552
+ hideTaskListRowActions?: boolean;
553
+ /** Global number of text lines the row height should accommodate in table-like presentations. */
554
+ rowContentLines?: number;
555
+ /** How task-list date pickers apply start/end edits (default: preserve-duration) */
556
+ taskDateChangeMode?: TaskDateChangeMode;
557
+ /** Controlled callback for task-list date picker mode changes */
558
+ onTaskDateChangeModeChange?: (mode: TaskDateChangeMode) => void;
514
559
  }
515
- type GanttChartProps<TTask extends Task = Task, TItem extends ResourceTimelineItem = ResourceTimelineItem> = GanttModeProps<TTask> | ResourcePlannerChartProps<TItem>;
560
+ interface GanttModeProps<TTask extends Task = Task> extends TaskChartSharedProps<TTask> {
561
+ /** Omitted mode keeps the historical task-based gantt behavior. */
562
+ mode?: 'gantt';
563
+ /** Width of each day column in pixels (default: 40) */
564
+ dayWidth?: number;
565
+ /** View mode: 'day' renders one column per day, 'week' renders one column per 7 days, 'month' renders one column per month (default: 'day') */
566
+ viewMode?: 'day' | 'week' | 'month';
567
+ /** Custom day configurations with explicit type (weekend or workday) */
568
+ customDays?: CustomDayConfig[];
569
+ /** Optional base weekend predicate (checked before customDays overrides) */
570
+ isWeekend?: (date: Date) => boolean;
571
+ /** Считать duration в рабочих днях, исключая выходные (default: true) */
572
+ businessDays?: boolean;
573
+ }
574
+ interface TableMatrixModeProps<TTask extends Task = Task> extends TaskChartSharedProps<TTask> {
575
+ mode: 'table-matrix';
576
+ /** Width of the arbitrary right-side matrix columns. */
577
+ matrixColumns: Array<TableMatrixColumn<TTask>>;
578
+ /** Optional grouped header row above matrix columns (e.g. months over weekly columns). */
579
+ matrixColumnGroups?: Array<TableMatrixColumnGroup>;
580
+ /** Called when any data cell in the right-side matrix is clicked. */
581
+ onMatrixCellClick?: (context: TableMatrixCellClickContext<TTask>) => void;
582
+ }
583
+ type GanttChartProps<TTask extends Task = Task, TItem extends ResourceTimelineItem = ResourceTimelineItem> = GanttModeProps<TTask> | TableMatrixModeProps<TTask> | ResourcePlannerChartProps<TItem>;
516
584
  interface ExportToPdfOptions {
517
585
  /** Structured header displayed above the exported chart */
518
586
  header?: ExportToPdfHeaderOptions;
@@ -758,6 +826,8 @@ interface TaskListProps {
758
826
  onInsertAfter?: (taskId: string, newTask: Task) => void;
759
827
  /** Callback when tasks are reordered via drag in the task list */
760
828
  onReorder?: (tasks: Task[], movedTaskId?: string, inferredParentId?: string) => void;
829
+ /** Disable task row drag/reorder in the task list (default: false) */
830
+ disableTaskDrag?: boolean;
761
831
  /** ID of task that should enter edit mode on mount (for auto-edit after insert) */
762
832
  editingTaskId?: string | null;
763
833
  /** Enable add task button at bottom of task list (default: true) */
@@ -800,6 +870,14 @@ interface TaskListProps {
800
870
  hiddenTaskListColumns?: readonly TaskListColumnId[];
801
871
  /** Additional commands rendered in each row three-dots menu */
802
872
  taskListMenuCommands?: TaskListMenuCommand<Task>[];
873
+ /** Hide row action controls such as insert, hierarchy action buttons, and the context menu trigger. */
874
+ hideTaskListRowActions?: boolean;
875
+ /** Global number of visible content lines used to size every row consistently. */
876
+ rowContentLines?: number;
877
+ /** How task-list date pickers apply start/end edits */
878
+ taskDateChangeMode?: TaskDateChangeMode;
879
+ /** Controlled callback for task-list date picker mode changes */
880
+ onTaskDateChangeModeChange?: (mode: TaskDateChangeMode) => void;
803
881
  }
804
882
  /**
805
883
  * TaskList component - displays tasks in a table format as an overlay
@@ -898,6 +976,8 @@ interface DatePickerProps {
898
976
  isWeekend?: (date: Date) => boolean;
899
977
  /** Whether to use business days for +1/+7 buttons (default: true) */
900
978
  businessDays?: boolean;
979
+ /** Optional footer content rendered below the calendar popup */
980
+ footer?: React$1.ReactNode;
901
981
  }
902
982
  /**
903
983
  * DatePicker component — shows formatted date as a button, opens calendar popup on click.
@@ -1295,4 +1375,4 @@ interface VisibleReorderPosition {
1295
1375
  */
1296
1376
  declare function getVisibleReorderPosition(orderedTasks: TaskLike[], visibleTasks: TaskLike[], movedTaskId: string, originVisibleIndex: number, dropVisibleIndex: number): VisibleReorderPosition | null;
1297
1377
 
1298
- export { type BuiltInTaskListColumnId, Button, type ButtonProps, Calendar, type CalendarProps, type CustomDayConfig, type CustomDayPredicateConfig, DatePicker, type DatePickerProps, DragGuideLines, type ExportToPdfHeaderOptions, type ExportToPdfOptions, GanttChart, type GanttChartHandle, type GanttChartProps, type GanttModeProps, GridBackground, Input, type InputProps, type MonthBlock, Popover, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, ResourcePlannerChartProps, ResourceTimelineChart, type ResourceTimelineConflictRange, ResourceTimelineItem, type ResourceTimelineLayoutDiagnostic, type ResourceTimelineLayoutItem, type ResourceTimelineLayoutOptions, type ResourceTimelineLayoutResult, type ResourceTimelineLayoutRow, ResourceTimelineResource, type Task, type TaskDependency, TaskList, type TaskListColumn, type TaskListColumnContext, type TaskListColumnId, type TaskListMenuCommand, type TaskListProps, type TaskPredicate, TaskRow, TimeScaleHeader, TodayIndicator, ValidationResult, type VisibleReorderPosition, type WeekBlock, type WeekSpan, type WithoutDepsOptions, type YearSpan, addBusinessDays, and, calculateBezierPath, calculateDependencyPath, calculateGridLines, calculateGridWidth, calculateMilestoneConnectionBounds, calculateMilestoneGeometry, calculateMonthGridLines, calculateOrthogonalPath, calculateTaskBar, calculateWeekGridLines, calculateWeekendBlocks, clampDateRangeForIncomingFS, createCustomDayPredicate, createDateKey, detectEdgeZone, expired, flattenHierarchy, formatDateLabel, formatDateRangeLabel, getBusinessDaysCount, getCursorForPosition, getDayOffset, getMonthBlocks, getMonthDays, getMonthSpans, getMultiMonthDays, getVisibleReorderPosition, getWeekBlocks, getWeekSpans, getYearSpans, inDateRange, isTaskExpired, isToday, isWeekend, layoutResourceTimelineItems, nameContains, normalizeHierarchyTasks, normalizeTaskDates, not, or, parseUTCDate, pixelsToDate, progressInRange, resolveDateRangeFromPixels, resolveTaskHorizontalGeometry, subtractBusinessDays, useTaskDrag, withoutDeps };
1378
+ export { type BuiltInTaskListColumnId, Button, type ButtonProps, Calendar, type CalendarProps, type CustomDayConfig, type CustomDayPredicateConfig, DatePicker, type DatePickerProps, DragGuideLines, type ExportToPdfHeaderOptions, type ExportToPdfOptions, GanttChart, type GanttChartHandle, type GanttChartProps, type GanttModeProps, GridBackground, Input, type InputProps, type MonthBlock, Popover, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, ResourcePlannerChartProps, ResourceTimelineChart, type ResourceTimelineConflictRange, ResourceTimelineItem, type ResourceTimelineLayoutDiagnostic, type ResourceTimelineLayoutItem, type ResourceTimelineLayoutOptions, type ResourceTimelineLayoutResult, type ResourceTimelineLayoutRow, ResourceTimelineResource, TableMatrix, type TableMatrixCellClickContext, type TableMatrixColumn, type TableMatrixColumnGroup, type TableMatrixModeProps, type Task, TaskDateChangeMode, type TaskDependency, TaskList, type TaskListColumn, type TaskListColumnContext, type TaskListColumnId, type TaskListMenuCommand, type TaskListProps, type TaskPredicate, TaskRow, TimeScaleHeader, TodayIndicator, ValidationResult, type VisibleReorderPosition, type WeekBlock, type WeekSpan, type WithoutDepsOptions, type YearSpan, addBusinessDays, and, calculateBezierPath, calculateDependencyPath, calculateGridLines, calculateGridWidth, calculateMilestoneConnectionBounds, calculateMilestoneGeometry, calculateMonthGridLines, calculateOrthogonalPath, calculateTaskBar, calculateWeekGridLines, calculateWeekendBlocks, clampDateRangeForIncomingFS, createCustomDayPredicate, createDateKey, detectEdgeZone, expired, flattenHierarchy, formatDateLabel, formatDateRangeLabel, getBusinessDaysCount, getCursorForPosition, getDayOffset, getMonthBlocks, getMonthDays, getMonthSpans, getMultiMonthDays, getVisibleReorderPosition, getWeekBlocks, getWeekSpans, getYearSpans, inDateRange, isTaskExpired, isToday, isWeekend, layoutResourceTimelineItems, nameContains, normalizeHierarchyTasks, normalizeTaskDates, not, or, parseUTCDate, pixelsToDate, progressInRange, resolveDateRangeFromPixels, resolveTaskHorizontalGeometry, subtractBusinessDays, useTaskDrag, withoutDeps };