gantt-lib 0.86.0 → 0.87.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.mjs CHANGED
@@ -2837,6 +2837,7 @@ var TaskRow = React2.memo(
2837
2837
  "div",
2838
2838
  {
2839
2839
  "data-filter-match": isFilterMatch ? "true" : "false",
2840
+ "data-gantt-task-row-id": task.id,
2840
2841
  className: `gantt-tr-row ${isFilterMatch ? "gantt-tr-row-filter-match" : ""}`,
2841
2842
  style: { height: `${rowHeight}px` },
2842
2843
  children: [
@@ -4641,6 +4642,8 @@ var TaskListRow = React9.memo(
4641
4642
  isFilterMatch = false,
4642
4643
  isFilterHideMode = false,
4643
4644
  resolvedColumns,
4645
+ isTaskSelected = false,
4646
+ onTaskSelectionChange,
4644
4647
  taskListMenuCommands = []
4645
4648
  }) => {
4646
4649
  const [editingColumnId, setEditingColumnId] = useState4(null);
@@ -5434,6 +5437,23 @@ var TaskListRow = React9.memo(
5434
5437
  const isSelectedDependencyOwner = selectedChip != null && selectedChip.successorId === task.id;
5435
5438
  const startDateISO = toISODate2(normalizedTask.startDate);
5436
5439
  const endDateISO = editingDuration ? getEndDate(normalizedTask.startDate, durationValue) : toISODate2(normalizedTask.endDate);
5440
+ const selectionCell = /* @__PURE__ */ jsx12(
5441
+ "div",
5442
+ {
5443
+ className: "gantt-tl-cell gantt-tl-cell-selection",
5444
+ onClick: (e) => e.stopPropagation(),
5445
+ children: /* @__PURE__ */ jsx12(
5446
+ "input",
5447
+ {
5448
+ type: "checkbox",
5449
+ className: "gantt-tl-selection-checkbox",
5450
+ "aria-label": `\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0443 ${taskNumber ? `${taskNumber}. ` : ""}${task.name}`,
5451
+ checked: isTaskSelected,
5452
+ onChange: (event) => onTaskSelectionChange?.(task.id, event.target.checked)
5453
+ }
5454
+ )
5455
+ }
5456
+ );
5437
5457
  const numberCell = /* @__PURE__ */ jsxs9(
5438
5458
  "div",
5439
5459
  {
@@ -6151,6 +6171,7 @@ var TaskListRow = React9.memo(
6151
6171
  }
6152
6172
  );
6153
6173
  const builtInCells = {
6174
+ selection: selectionCell,
6154
6175
  number: numberCell,
6155
6176
  name: nameCell,
6156
6177
  startDate: startDateCell,
@@ -6177,6 +6198,7 @@ var TaskListRow = React9.memo(
6177
6198
  isParent ? "gantt-tl-row-parent" : ""
6178
6199
  ].filter(Boolean).join(" "),
6179
6200
  style: { minHeight: `${rowHeight}px`, position: "relative" },
6201
+ "data-gantt-task-row-id": task.id,
6180
6202
  onClick: handleRowClickInternal,
6181
6203
  onKeyDown: handleRowKeyDown,
6182
6204
  onDragOver: (e) => onDragOver?.(rowIndex, e),
@@ -6302,6 +6324,7 @@ var NewTaskRow = ({
6302
6324
 
6303
6325
  // src/components/TaskList/columns/createBuiltInColumns.tsx
6304
6326
  var BUILT_IN_COLUMN_WIDTHS = {
6327
+ selection: 36,
6305
6328
  number: 40,
6306
6329
  name: 200,
6307
6330
  startDate: 90,
@@ -6312,7 +6335,7 @@ var BUILT_IN_COLUMN_WIDTHS = {
6312
6335
  actions: 80
6313
6336
  };
6314
6337
  function createBuiltInColumns(opts) {
6315
- return [
6338
+ const columns = [
6316
6339
  { id: "number", header: "\u2116", width: BUILT_IN_COLUMN_WIDTHS.number, renderCell: () => null },
6317
6340
  { id: "name", header: "\u0418\u043C\u044F", width: BUILT_IN_COLUMN_WIDTHS.name, renderCell: () => null },
6318
6341
  { id: "startDate", header: "\u041D\u0430\u0447\u0430\u043B\u043E", width: BUILT_IN_COLUMN_WIDTHS.startDate, renderCell: () => null },
@@ -6321,6 +6344,15 @@ function createBuiltInColumns(opts) {
6321
6344
  { id: "progress", header: "%", width: BUILT_IN_COLUMN_WIDTHS.progress, renderCell: () => null },
6322
6345
  { id: "dependencies", header: null, width: BUILT_IN_COLUMN_WIDTHS.dependencies, renderCell: () => null }
6323
6346
  ];
6347
+ if (opts?.enableTaskMultiSelect) {
6348
+ columns.unshift({
6349
+ id: "selection",
6350
+ header: null,
6351
+ width: BUILT_IN_COLUMN_WIDTHS.selection,
6352
+ renderCell: () => null
6353
+ });
6354
+ }
6355
+ return columns;
6324
6356
  }
6325
6357
 
6326
6358
  // src/components/TaskList/columns/resolveTaskListColumns.ts
@@ -6381,6 +6413,7 @@ import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
6381
6413
  var LINK_TYPE_ORDER2 = ["FS", "SS", "FF", "SF"];
6382
6414
  var MIN_TASK_LIST_WIDTH = 530;
6383
6415
  var BUILT_IN_CSS_CLASSES = {
6416
+ selection: "gantt-tl-cell-selection",
6384
6417
  number: "gantt-tl-cell-number",
6385
6418
  name: "gantt-tl-cell-name",
6386
6419
  startDate: "gantt-tl-cell-date",
@@ -6456,6 +6489,30 @@ function getTaskNumber(tasks, taskIndex) {
6456
6489
  }
6457
6490
  return `${parentNumber}.${siblingIndex + 1}`;
6458
6491
  }
6492
+ var SelectAllCheckbox = ({
6493
+ checked,
6494
+ indeterminate,
6495
+ onChange
6496
+ }) => {
6497
+ const ref = useRef6(null);
6498
+ useEffect6(() => {
6499
+ if (ref.current) {
6500
+ ref.current.indeterminate = indeterminate;
6501
+ }
6502
+ }, [indeterminate]);
6503
+ return /* @__PURE__ */ jsx14(
6504
+ "input",
6505
+ {
6506
+ ref,
6507
+ type: "checkbox",
6508
+ className: "gantt-tl-selection-checkbox",
6509
+ "aria-label": "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435 \u0432\u0438\u0434\u0438\u043C\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438",
6510
+ checked,
6511
+ onChange: (event) => onChange(event.target.checked),
6512
+ onClick: (event) => event.stopPropagation()
6513
+ }
6514
+ );
6515
+ };
6459
6516
  var TaskList = ({
6460
6517
  tasks,
6461
6518
  rowHeight,
@@ -6486,6 +6543,9 @@ var TaskList = ({
6486
6543
  isWeekend: isWeekend3,
6487
6544
  businessDays,
6488
6545
  highlightedTaskIds = /* @__PURE__ */ new Set(),
6546
+ enableTaskMultiSelect = false,
6547
+ selectedTaskIds,
6548
+ onSelectedTaskIdsChange,
6489
6549
  filterMode = "highlight",
6490
6550
  filteredTaskIds = /* @__PURE__ */ new Set(),
6491
6551
  isFilterActive = false,
@@ -6493,6 +6553,14 @@ var TaskList = ({
6493
6553
  hiddenTaskListColumns,
6494
6554
  taskListMenuCommands
6495
6555
  }) => {
6556
+ const [internalSelectedTaskIds, setInternalSelectedTaskIds] = useState6(/* @__PURE__ */ new Set());
6557
+ const effectiveSelectedTaskIds = selectedTaskIds ?? internalSelectedTaskIds;
6558
+ const emitSelectedTaskIdsChange = useCallback5((nextSelectedTaskIds) => {
6559
+ if (!selectedTaskIds) {
6560
+ setInternalSelectedTaskIds(nextSelectedTaskIds);
6561
+ }
6562
+ onSelectedTaskIdsChange?.(nextSelectedTaskIds);
6563
+ }, [onSelectedTaskIdsChange, selectedTaskIds]);
6496
6564
  const [internalCollapsedParentIds, setInternalCollapsedParentIds] = useState6(/* @__PURE__ */ new Set());
6497
6565
  const collapsedParentIds = externalCollapsedParentIds ?? internalCollapsedParentIds;
6498
6566
  const handleToggleCollapse = externalOnToggleCollapse ?? useCallback5((parentId) => {
@@ -6539,6 +6607,33 @@ var TaskList = ({
6539
6607
  ),
6540
6608
  [visibleTasks]
6541
6609
  );
6610
+ const visibleTaskIds = useMemo8(() => visibleTasks.map((task) => task.id), [visibleTasks]);
6611
+ const selectedVisibleTaskCount = useMemo8(
6612
+ () => visibleTaskIds.filter((taskId) => effectiveSelectedTaskIds.has(taskId)).length,
6613
+ [effectiveSelectedTaskIds, visibleTaskIds]
6614
+ );
6615
+ const areAllVisibleTasksSelected = visibleTaskIds.length > 0 && selectedVisibleTaskCount === visibleTaskIds.length;
6616
+ const areSomeVisibleTasksSelected = selectedVisibleTaskCount > 0 && !areAllVisibleTasksSelected;
6617
+ const handleToggleTaskSelection = useCallback5((taskId, checked) => {
6618
+ const nextSelectedTaskIds = new Set(effectiveSelectedTaskIds);
6619
+ if (checked) {
6620
+ nextSelectedTaskIds.add(taskId);
6621
+ } else {
6622
+ nextSelectedTaskIds.delete(taskId);
6623
+ }
6624
+ emitSelectedTaskIdsChange(nextSelectedTaskIds);
6625
+ }, [effectiveSelectedTaskIds, emitSelectedTaskIdsChange]);
6626
+ const handleToggleAllVisibleTaskSelection = useCallback5((checked) => {
6627
+ const nextSelectedTaskIds = new Set(effectiveSelectedTaskIds);
6628
+ for (const taskId of visibleTaskIds) {
6629
+ if (checked) {
6630
+ nextSelectedTaskIds.add(taskId);
6631
+ } else {
6632
+ nextSelectedTaskIds.delete(taskId);
6633
+ }
6634
+ }
6635
+ emitSelectedTaskIdsChange(nextSelectedTaskIds);
6636
+ }, [effectiveSelectedTaskIds, emitSelectedTaskIdsChange, visibleTaskIds]);
6542
6637
  const originalTaskNumberMap = useMemo8(
6543
6638
  () => {
6544
6639
  const numberMap = /* @__PURE__ */ new Map();
@@ -7020,7 +7115,10 @@ var TaskList = ({
7020
7115
  const duplicatedTasks = duplicateTaskSubtree(taskId, orderedTasks);
7021
7116
  onReorder?.(duplicatedTasks);
7022
7117
  }, [orderedTasks, onReorder]);
7023
- const builtInColumns = useMemo8(() => createBuiltInColumns({ businessDays }), [businessDays]);
7118
+ const builtInColumns = useMemo8(
7119
+ () => createBuiltInColumns({ businessDays, enableTaskMultiSelect }),
7120
+ [businessDays, enableTaskMultiSelect]
7121
+ );
7024
7122
  const resolvedColumns = useMemo8(
7025
7123
  () => resolveTaskListColumns(
7026
7124
  builtInColumns,
@@ -7044,6 +7142,24 @@ var TaskList = ({
7044
7142
  style: { "--tasklist-width": `${effectiveTaskListWidth}px` },
7045
7143
  children: /* @__PURE__ */ jsxs11("div", { className: "gantt-tl-table", children: [
7046
7144
  /* @__PURE__ */ jsx14("div", { className: "gantt-tl-header", style: { height: `${tableHeaderHeight}px` }, children: resolvedColumns.map((col) => {
7145
+ if (col.id === "selection") {
7146
+ return /* @__PURE__ */ jsx14(
7147
+ "div",
7148
+ {
7149
+ className: "gantt-tl-headerCell gantt-tl-cell-selection",
7150
+ "data-column-id": "selection",
7151
+ children: /* @__PURE__ */ jsx14(
7152
+ SelectAllCheckbox,
7153
+ {
7154
+ checked: areAllVisibleTasksSelected,
7155
+ indeterminate: areSomeVisibleTasksSelected,
7156
+ onChange: handleToggleAllVisibleTaskSelection
7157
+ }
7158
+ )
7159
+ },
7160
+ col.id
7161
+ );
7162
+ }
7047
7163
  if (col.id === "dependencies") {
7048
7164
  return /* @__PURE__ */ jsxs11(
7049
7165
  "div",
@@ -7169,6 +7285,8 @@ var TaskList = ({
7169
7285
  isFilterMatch: filterMode === "highlight" ? highlightedTaskIds.has(task.id) : false,
7170
7286
  isFilterHideMode: filterMode === "hide" && isFilterActive,
7171
7287
  resolvedColumns,
7288
+ isTaskSelected: effectiveSelectedTaskIds.has(task.id),
7289
+ onTaskSelectionChange: handleToggleTaskSelection,
7172
7290
  taskListMenuCommands
7173
7291
  }
7174
7292
  ),
@@ -9249,6 +9367,9 @@ function TaskGanttChartInner(props, ref) {
9249
9367
  collapsedParentIds: externalCollapsedParentIds,
9250
9368
  onToggleCollapse: externalOnToggleCollapse,
9251
9369
  highlightedTaskIds,
9370
+ enableTaskMultiSelect = false,
9371
+ selectedTaskIds,
9372
+ onSelectedTaskIdsChange,
9252
9373
  disableTaskDrag = false,
9253
9374
  showChart = true,
9254
9375
  additionalColumns,
@@ -9516,6 +9637,40 @@ function TaskGanttChartInner(props, ref) {
9516
9637
  const handleTaskSelect = useCallback8((taskId) => {
9517
9638
  setSelectedTaskId(taskId);
9518
9639
  }, []);
9640
+ const hoveredRowElementsRef = useRef9([]);
9641
+ const clearHoveredRows = useCallback8(() => {
9642
+ for (const element of hoveredRowElementsRef.current) {
9643
+ element.classList.remove("gantt-tl-row-hovered", "gantt-tr-row-hovered");
9644
+ }
9645
+ hoveredRowElementsRef.current = [];
9646
+ }, []);
9647
+ const applyHoveredRows = useCallback8((taskId) => {
9648
+ const root = scrollContentRef.current;
9649
+ if (!root) return;
9650
+ clearHoveredRows();
9651
+ const nextHoveredRows = Array.from(
9652
+ root.querySelectorAll("[data-gantt-task-row-id]")
9653
+ ).filter((element) => element.dataset.ganttTaskRowId === taskId);
9654
+ for (const element of nextHoveredRows) {
9655
+ if (element.classList.contains("gantt-tl-row")) {
9656
+ element.classList.add("gantt-tl-row-hovered");
9657
+ }
9658
+ if (element.classList.contains("gantt-tr-row")) {
9659
+ element.classList.add("gantt-tr-row-hovered");
9660
+ }
9661
+ }
9662
+ hoveredRowElementsRef.current = nextHoveredRows;
9663
+ }, [clearHoveredRows]);
9664
+ const handleSharedRowHover = useCallback8((event) => {
9665
+ const target = event.target;
9666
+ const row = target.closest("[data-gantt-task-row-id]");
9667
+ const taskId = row?.dataset.ganttTaskRowId;
9668
+ if (!taskId) return;
9669
+ if (hoveredRowElementsRef.current.some((element) => element.dataset.ganttTaskRowId === taskId)) {
9670
+ return;
9671
+ }
9672
+ applyHoveredRows(taskId);
9673
+ }, [applyHoveredRows]);
9519
9674
  const handleToggleCollapse = externalOnToggleCollapse ?? useCallback8((parentId) => {
9520
9675
  setInternalCollapsedParentIds((prev) => {
9521
9676
  const next = new Set(prev);
@@ -9748,157 +9903,169 @@ function TaskGanttChartInner(props, ref) {
9748
9903
  className: "gantt-scrollContainer",
9749
9904
  style: { height: containerHeight ?? "auto", cursor: "grab" },
9750
9905
  onMouseDown: handlePanStart,
9751
- children: /* @__PURE__ */ jsxs13("div", { ref: scrollContentRef, className: "gantt-scrollContent", children: [
9752
- /* @__PURE__ */ jsx16(
9753
- TaskList,
9754
- {
9755
- tasks: normalizedTasks,
9756
- rowHeight,
9757
- headerHeight,
9758
- taskListWidth,
9759
- onTasksChange: handleTaskChange,
9760
- selectedTaskId: selectedTaskId ?? void 0,
9761
- onTaskSelect: handleTaskSelect,
9762
- show: showTaskList,
9763
- hasRightShadow: taskListHasRightShadow,
9764
- disableTaskNameEditing,
9765
- disableDependencyEditing,
9766
- onScrollToTask: scrollToTask,
9767
- onSelectedChipChange: setSelectedChip,
9768
- onAdd,
9769
- onDelete: handleDelete,
9770
- onInsertAfter: handleInsertAfter,
9771
- onReorder: handleReorder,
9772
- editingTaskId,
9773
- enableAddTask,
9774
- defaultTaskDurationDays,
9775
- collapsedParentIds,
9776
- onToggleCollapse: handleToggleCollapse,
9777
- onPromoteTask: onPromoteTask ?? handlePromoteTask,
9778
- onDemoteTask: onDemoteTask ?? handleDemoteTask,
9779
- onUngroupTask: onUngroupTask ?? handleUngroupTask,
9780
- highlightedTaskIds: taskListHighlightedTaskIds,
9781
- customDays,
9782
- isWeekend: isWeekend3,
9783
- businessDays,
9784
- filterMode,
9785
- filteredTaskIds: matchedTaskIds,
9786
- isFilterActive: !!taskFilter,
9787
- additionalColumns,
9788
- hiddenTaskListColumns,
9789
- taskListMenuCommands
9790
- }
9791
- ),
9792
- /* @__PURE__ */ jsxs13(
9793
- "div",
9794
- {
9795
- className: showChart ? "gantt-chartSurface" : "gantt-chartSurface gantt-chart-hidden",
9796
- style: { minWidth: `${gridWidth}px`, flex: 1, display: showChart ? void 0 : "none" },
9797
- children: [
9798
- /* @__PURE__ */ jsx16(
9799
- "div",
9800
- {
9801
- className: "gantt-stickyHeader",
9802
- style: { width: `${gridWidth}px`, height: `${timelineHeaderHeight}px` },
9803
- children: /* @__PURE__ */ jsx16(
9804
- TimeScaleHeader_default,
9906
+ children: /* @__PURE__ */ jsxs13(
9907
+ "div",
9908
+ {
9909
+ ref: scrollContentRef,
9910
+ className: "gantt-scrollContent",
9911
+ onMouseOver: handleSharedRowHover,
9912
+ onMouseLeave: clearHoveredRows,
9913
+ children: [
9914
+ /* @__PURE__ */ jsx16(
9915
+ TaskList,
9916
+ {
9917
+ tasks: normalizedTasks,
9918
+ rowHeight,
9919
+ headerHeight,
9920
+ taskListWidth,
9921
+ onTasksChange: handleTaskChange,
9922
+ selectedTaskId: selectedTaskId ?? void 0,
9923
+ onTaskSelect: handleTaskSelect,
9924
+ show: showTaskList,
9925
+ hasRightShadow: taskListHasRightShadow,
9926
+ disableTaskNameEditing,
9927
+ disableDependencyEditing,
9928
+ onScrollToTask: scrollToTask,
9929
+ onSelectedChipChange: setSelectedChip,
9930
+ onAdd,
9931
+ onDelete: handleDelete,
9932
+ onInsertAfter: handleInsertAfter,
9933
+ onReorder: handleReorder,
9934
+ editingTaskId,
9935
+ enableAddTask,
9936
+ defaultTaskDurationDays,
9937
+ collapsedParentIds,
9938
+ onToggleCollapse: handleToggleCollapse,
9939
+ onPromoteTask: onPromoteTask ?? handlePromoteTask,
9940
+ onDemoteTask: onDemoteTask ?? handleDemoteTask,
9941
+ onUngroupTask: onUngroupTask ?? handleUngroupTask,
9942
+ highlightedTaskIds: taskListHighlightedTaskIds,
9943
+ enableTaskMultiSelect,
9944
+ selectedTaskIds,
9945
+ onSelectedTaskIdsChange,
9946
+ customDays,
9947
+ isWeekend: isWeekend3,
9948
+ businessDays,
9949
+ filterMode,
9950
+ filteredTaskIds: matchedTaskIds,
9951
+ isFilterActive: !!taskFilter,
9952
+ additionalColumns,
9953
+ hiddenTaskListColumns,
9954
+ taskListMenuCommands
9955
+ }
9956
+ ),
9957
+ /* @__PURE__ */ jsxs13(
9958
+ "div",
9959
+ {
9960
+ className: showChart ? "gantt-chartSurface" : "gantt-chartSurface gantt-chart-hidden",
9961
+ style: { minWidth: `${gridWidth}px`, flex: 1, display: showChart ? void 0 : "none" },
9962
+ children: [
9963
+ /* @__PURE__ */ jsx16(
9964
+ "div",
9805
9965
  {
9806
- days: dateRange,
9807
- dayWidth,
9808
- headerHeight,
9809
- viewMode,
9810
- isCustomWeekend
9966
+ className: "gantt-stickyHeader",
9967
+ style: { width: `${gridWidth}px`, height: `${timelineHeaderHeight}px` },
9968
+ children: /* @__PURE__ */ jsx16(
9969
+ TimeScaleHeader_default,
9970
+ {
9971
+ days: dateRange,
9972
+ dayWidth,
9973
+ headerHeight,
9974
+ viewMode,
9975
+ isCustomWeekend
9976
+ }
9977
+ )
9811
9978
  }
9812
- )
9813
- }
9814
- ),
9815
- /* @__PURE__ */ jsxs13(
9816
- "div",
9817
- {
9818
- className: "gantt-taskArea",
9819
- style: {
9820
- position: "relative",
9821
- width: `${gridWidth}px`
9822
- },
9823
- children: [
9824
- /* @__PURE__ */ jsx16(
9825
- GridBackground_default,
9826
- {
9827
- dateRange,
9828
- dayWidth,
9829
- totalHeight: totalGridHeight,
9830
- viewMode,
9831
- isCustomWeekend
9832
- }
9833
- ),
9834
- todayInRange && /* @__PURE__ */ jsx16(TodayIndicator_default, { monthStart, dayWidth }),
9835
- /* @__PURE__ */ jsx16(
9836
- DependencyLines_default,
9837
- {
9838
- tasks: previewVisibleTasks,
9839
- allTasks: previewNormalizedTasks,
9840
- collapsedParentIds,
9841
- monthStart,
9842
- dayWidth,
9843
- rowHeight,
9844
- gridWidth,
9845
- dragOverrides: dependencyOverrides,
9846
- selectedDep: selectedChip,
9847
- businessDays,
9848
- weekendPredicate: isCustomWeekend
9849
- }
9850
- ),
9851
- dragGuideLines && /* @__PURE__ */ jsx16(
9852
- DragGuideLines_default,
9853
- {
9854
- isDragging: dragGuideLines.isDragging,
9855
- dragMode: dragGuideLines.dragMode,
9856
- left: dragGuideLines.left,
9857
- width: dragGuideLines.width,
9858
- totalHeight: totalGridHeight
9859
- }
9860
- ),
9861
- visibleTasks.map((task, index) => /* @__PURE__ */ jsx16(
9862
- TaskRow_default,
9863
- {
9864
- task,
9865
- monthStart,
9866
- dayWidth,
9867
- rowHeight,
9868
- onTasksChange: handleTaskChange,
9869
- onDragStateChange: (state) => {
9870
- if (state.isDragging) {
9871
- setDragGuideLines(state);
9872
- setDraggedTaskOverride({ taskId: task.id, left: state.left, width: state.width });
9873
- } else {
9874
- setDragGuideLines(null);
9875
- setDraggedTaskOverride(null);
9876
- }
9877
- },
9878
- rowIndex: index,
9879
- allTasks: normalizedTasks,
9880
- enableAutoSchedule: enableAutoSchedule ?? false,
9881
- disableConstraints: disableConstraints ?? false,
9882
- overridePosition: cascadeOverrides.get(task.id),
9883
- onCascadeProgress: handleCascadeProgress,
9884
- onCascade: handleCascade,
9885
- highlightExpiredTasks,
9886
- showBaseline,
9887
- isFilterMatch: filterMode === "highlight" ? matchedTaskIds.has(task.id) : false,
9888
- businessDays,
9889
- customDays,
9890
- isWeekend: isWeekend3,
9891
- disableTaskDrag
9979
+ ),
9980
+ /* @__PURE__ */ jsxs13(
9981
+ "div",
9982
+ {
9983
+ className: "gantt-taskArea",
9984
+ style: {
9985
+ position: "relative",
9986
+ width: `${gridWidth}px`
9892
9987
  },
9893
- task.id
9894
- ))
9895
- ]
9896
- }
9897
- )
9898
- ]
9899
- }
9900
- )
9901
- ] })
9988
+ children: [
9989
+ /* @__PURE__ */ jsx16(
9990
+ GridBackground_default,
9991
+ {
9992
+ dateRange,
9993
+ dayWidth,
9994
+ totalHeight: totalGridHeight,
9995
+ viewMode,
9996
+ isCustomWeekend
9997
+ }
9998
+ ),
9999
+ todayInRange && /* @__PURE__ */ jsx16(TodayIndicator_default, { monthStart, dayWidth }),
10000
+ /* @__PURE__ */ jsx16(
10001
+ DependencyLines_default,
10002
+ {
10003
+ tasks: previewVisibleTasks,
10004
+ allTasks: previewNormalizedTasks,
10005
+ collapsedParentIds,
10006
+ monthStart,
10007
+ dayWidth,
10008
+ rowHeight,
10009
+ gridWidth,
10010
+ dragOverrides: dependencyOverrides,
10011
+ selectedDep: selectedChip,
10012
+ businessDays,
10013
+ weekendPredicate: isCustomWeekend
10014
+ }
10015
+ ),
10016
+ dragGuideLines && /* @__PURE__ */ jsx16(
10017
+ DragGuideLines_default,
10018
+ {
10019
+ isDragging: dragGuideLines.isDragging,
10020
+ dragMode: dragGuideLines.dragMode,
10021
+ left: dragGuideLines.left,
10022
+ width: dragGuideLines.width,
10023
+ totalHeight: totalGridHeight
10024
+ }
10025
+ ),
10026
+ visibleTasks.map((task, index) => /* @__PURE__ */ jsx16(
10027
+ TaskRow_default,
10028
+ {
10029
+ task,
10030
+ monthStart,
10031
+ dayWidth,
10032
+ rowHeight,
10033
+ onTasksChange: handleTaskChange,
10034
+ onDragStateChange: (state) => {
10035
+ if (state.isDragging) {
10036
+ setDragGuideLines(state);
10037
+ setDraggedTaskOverride({ taskId: task.id, left: state.left, width: state.width });
10038
+ } else {
10039
+ setDragGuideLines(null);
10040
+ setDraggedTaskOverride(null);
10041
+ }
10042
+ },
10043
+ rowIndex: index,
10044
+ allTasks: normalizedTasks,
10045
+ enableAutoSchedule: enableAutoSchedule ?? false,
10046
+ disableConstraints: disableConstraints ?? false,
10047
+ overridePosition: cascadeOverrides.get(task.id),
10048
+ onCascadeProgress: handleCascadeProgress,
10049
+ onCascade: handleCascade,
10050
+ highlightExpiredTasks,
10051
+ showBaseline,
10052
+ isFilterMatch: filterMode === "highlight" ? matchedTaskIds.has(task.id) : false,
10053
+ businessDays,
10054
+ customDays,
10055
+ isWeekend: isWeekend3,
10056
+ disableTaskDrag
10057
+ },
10058
+ task.id
10059
+ ))
10060
+ ]
10061
+ }
10062
+ )
10063
+ ]
10064
+ }
10065
+ )
10066
+ ]
10067
+ }
10068
+ )
9902
10069
  }
9903
10070
  ) });
9904
10071
  }