gantt-task-react-v 1.4.5 → 1.4.6

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.
@@ -4606,7 +4606,7 @@
4606
4606
  const tooltipDefaultContainerParagraph = "_tooltipDefaultContainerParagraph_16o9s_31";
4607
4607
  const tooltipDetailsContainer = "_tooltipDetailsContainer_16o9s_47";
4608
4608
  const tooltipDetailsContainerHidden = "_tooltipDetailsContainerHidden_16o9s_71";
4609
- const styles$l = {
4609
+ const styles$m = {
4610
4610
  tooltipDefaultContainer,
4611
4611
  tooltipDefaultContainerTexts,
4612
4612
  tooltipDefaultContainerParagraph,
@@ -4649,26 +4649,26 @@
4649
4649
  return /* @__PURE__ */ jsxRuntime.jsxs(
4650
4650
  "div",
4651
4651
  {
4652
- className: styles$l.tooltipDefaultContainer,
4652
+ className: styles$m.tooltipDefaultContainer,
4653
4653
  style: { fontSize: "var(--gantt-font-size)" },
4654
4654
  children: [
4655
4655
  /* @__PURE__ */ jsxRuntime.jsx("b", { style: { fontSize: "var(--gantt-font-size)" }, children: `${task.name}: ${task.start.getDate()}-${task.start.getMonth() + 1}-${task.start.getFullYear()} - ${task.end.getDate()}-${task.end.getMonth() + 1}-${task.end.getFullYear()}` }),
4656
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles$l.tooltipDefaultContainerTexts, children: [
4656
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles$m.tooltipDefaultContainerTexts, children: [
4657
4657
  task.end.getTime() - task.start.getTime() !== 0 && /* @__PURE__ */ jsxRuntime.jsx(
4658
4658
  "p",
4659
4659
  {
4660
- className: styles$l.tooltipDefaultContainerParagraph,
4660
+ className: styles$m.tooltipDefaultContainerParagraph,
4661
4661
  children: `${locale.tooltip.duration},: ${~~((task.end.getTime() - task.start.getTime()) / (1e3 * 60 * 60 * 24))} ${locale.suffix.days}`
4662
4662
  }
4663
4663
  ),
4664
- !!locale.tooltip.progress && /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles$l.tooltipDefaultContainerParagraph, children: !!task.progress && `${locale.tooltip.progress}: ${task.progress} %` })
4664
+ !!locale.tooltip.progress && /* @__PURE__ */ jsxRuntime.jsx("p", { className: styles$m.tooltipDefaultContainerParagraph, children: !!task.progress && `${locale.tooltip.progress}: ${task.progress} %` })
4665
4665
  ] })
4666
4666
  ]
4667
4667
  }
4668
4668
  );
4669
4669
  };
4670
4670
  const scroll = "_scroll_hp3qb_1";
4671
- const styles$k = {
4671
+ const styles$l = {
4672
4672
  scroll
4673
4673
  };
4674
4674
  const VerticalScroll = ({
@@ -4689,7 +4689,7 @@
4689
4689
  marginLeft: rtl ? void 0 : "-1rem",
4690
4690
  pointerEvents: isChangeInProgress ? "none" : void 0
4691
4691
  },
4692
- className: styles$k.scroll,
4692
+ className: styles$l.scroll,
4693
4693
  onScroll,
4694
4694
  ref: verticalScrollbarRef,
4695
4695
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: { height: ganttFullHeight, width: 1 } })
@@ -4767,7 +4767,7 @@
4767
4767
  const taskListExpander = "_taskListExpander_16z6n_23";
4768
4768
  const taskListEmptyExpander = "_taskListEmptyExpander_16z6n_45";
4769
4769
  const taskName = "_taskName_16z6n_55";
4770
- const styles$j = {
4770
+ const styles$k = {
4771
4771
  taskListNameWrapper,
4772
4772
  dragging,
4773
4773
  taskListExpander,
@@ -4844,7 +4844,7 @@
4844
4844
  "div",
4845
4845
  {
4846
4846
  "data-testid": `title-table-cell-${name}`,
4847
- className: `${styles$j.taskListNameWrapper}`,
4847
+ className: `${styles$k.taskListNameWrapper}`,
4848
4848
  style: {
4849
4849
  paddingLeft: depth * nestedTaskNameOffset
4850
4850
  },
@@ -4853,7 +4853,7 @@
4853
4853
  /* @__PURE__ */ jsxRuntime.jsx(
4854
4854
  "div",
4855
4855
  {
4856
- className: `gantt-expander ${styles$j.taskListExpander} ${!hasChildren ? styles$j.taskListEmptyExpander : ""}`,
4856
+ className: `gantt-expander ${styles$k.taskListExpander} ${!hasChildren ? styles$k.taskListEmptyExpander : ""}`,
4857
4857
  style: {
4858
4858
  left: depth * nestedTaskNameOffset
4859
4859
  },
@@ -4864,7 +4864,7 @@
4864
4864
  /* @__PURE__ */ jsxRuntime.jsxs(
4865
4865
  "div",
4866
4866
  {
4867
- className: styles$j.taskName,
4867
+ className: styles$k.taskName,
4868
4868
  style: { fontWeight: isProject ? "bold" : "regular" },
4869
4869
  children: [
4870
4870
  isShowTaskNumbers && /* @__PURE__ */ jsxRuntime.jsxs("b", { children: [
@@ -4919,7 +4919,7 @@
4919
4919
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: dependencies.map(({ name }) => name).join(", ") });
4920
4920
  };
4921
4921
  const button = "_button_l55x0_1";
4922
- const styles$i = {
4922
+ const styles$j = {
4923
4923
  button
4924
4924
  };
4925
4925
  const DeleteIcon = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
@@ -4953,7 +4953,7 @@
4953
4953
  e.stopPropagation();
4954
4954
  },
4955
4955
  onClick,
4956
- className: styles$i.button,
4956
+ className: styles$j.button,
4957
4957
  children: (icons == null ? void 0 : icons.renderDeleteIcon) ? icons.renderDeleteIcon() : /* @__PURE__ */ jsxRuntime.jsx(DeleteIcon, {})
4958
4958
  }
4959
4959
  );
@@ -4988,7 +4988,7 @@
4988
4988
  e.stopPropagation();
4989
4989
  },
4990
4990
  onClick,
4991
- className: styles$i.button,
4991
+ className: styles$j.button,
4992
4992
  children: (icons == null ? void 0 : icons.renderEditIcon) ? icons.renderEditIcon() : /* @__PURE__ */ jsxRuntime.jsx(EditIcon, {})
4993
4993
  }
4994
4994
  );
@@ -5029,7 +5029,7 @@
5029
5029
  e.stopPropagation();
5030
5030
  },
5031
5031
  onClick,
5032
- className: styles$i.button,
5032
+ className: styles$j.button,
5033
5033
  children: (icons == null ? void 0 : icons.renderAddIcon) ? icons.renderAddIcon() : /* @__PURE__ */ jsxRuntime.jsx(AddIcon, {})
5034
5034
  }
5035
5035
  );
@@ -5538,7 +5538,7 @@
5538
5538
  const ganttTable_HeaderSeparator = "_ganttTable_HeaderSeparator_5goa0_39";
5539
5539
  const ganttTable_HeaderItem = "_ganttTable_HeaderItem_5goa0_53";
5540
5540
  const resizer = "_resizer_5goa0_77";
5541
- const styles$h = {
5541
+ const styles$i = {
5542
5542
  ganttTable,
5543
5543
  ganttTable_Header,
5544
5544
  ganttTable_HeaderMoveTask,
@@ -5587,7 +5587,7 @@
5587
5587
  return /* @__PURE__ */ jsxRuntime.jsx(
5588
5588
  "div",
5589
5589
  {
5590
- className: styles$h.ganttTable,
5590
+ className: styles$i.ganttTable,
5591
5591
  style: {
5592
5592
  fontFamily: "var(--gantt-font-family)",
5593
5593
  fontSize: "var(--gantt-font-size)"
@@ -5595,18 +5595,18 @@
5595
5595
  children: /* @__PURE__ */ jsxRuntime.jsxs(
5596
5596
  "div",
5597
5597
  {
5598
- className: styles$h.ganttTable_Header,
5598
+ className: styles$i.ganttTable_Header,
5599
5599
  style: {
5600
5600
  height: headerHeight - 2
5601
5601
  },
5602
5602
  children: [
5603
- canMoveTasks && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$h.ganttTable_HeaderMoveTask }),
5603
+ canMoveTasks && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$i.ganttTable_HeaderMoveTask }),
5604
5604
  columns.map(({ title, width, canResize }, index2) => {
5605
5605
  return /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
5606
5606
  index2 > 0 && !!title && /* @__PURE__ */ jsxRuntime.jsx(
5607
5607
  "div",
5608
5608
  {
5609
- className: styles$h.ganttTable_HeaderSeparator,
5609
+ className: styles$i.ganttTable_HeaderSeparator,
5610
5610
  style: {
5611
5611
  height: headerHeight * 0.5,
5612
5612
  marginTop: headerHeight * 0.2
@@ -5617,7 +5617,7 @@
5617
5617
  "div",
5618
5618
  {
5619
5619
  "data-testid": `table-column-header-${title}`,
5620
- className: styles$h.ganttTable_HeaderItem,
5620
+ className: styles$i.ganttTable_HeaderItem,
5621
5621
  style: {
5622
5622
  minWidth: width,
5623
5623
  maxWidth: width,
@@ -5629,7 +5629,7 @@
5629
5629
  "div",
5630
5630
  {
5631
5631
  "data-testid": `table-column-header-resize-handle-${title}`,
5632
- className: styles$h.resizer,
5632
+ className: styles$i.resizer,
5633
5633
  onMouseDown: (event) => {
5634
5634
  onColumnResizeStart(index2, event.clientX);
5635
5635
  },
@@ -9843,7 +9843,7 @@
9843
9843
  }
9844
9844
  [KeyboardCode.Down, KeyboardCode.Right, KeyboardCode.Up, KeyboardCode.Left];
9845
9845
  const taskListWrapper$1 = "_taskListWrapper_196te_3";
9846
- const styles$g = {
9846
+ const styles$h = {
9847
9847
  taskListWrapper: taskListWrapper$1
9848
9848
  };
9849
9849
  function getDragDepth(offset2, indentationWidth2) {
@@ -10029,7 +10029,7 @@
10029
10029
  const dragIndicatorIcon = "_dragIndicatorIcon_1yqtr_119";
10030
10030
  const isCut = "_isCut_1yqtr_135";
10031
10031
  const taskListCell = "_taskListCell_1yqtr_167";
10032
- const styles$f = {
10032
+ const styles$g = {
10033
10033
  taskListTableRow,
10034
10034
  isAfter,
10035
10035
  isBefore,
@@ -10169,18 +10169,18 @@
10169
10169
  return isSelected ? "var(--gantt-table-selected-task-background-color)" : isEven ? "var(--gantt-table-even-background-color)" : void 0;
10170
10170
  }, [isEven, isOverlay2, isSelected]);
10171
10171
  const rowClassName = React.useMemo(() => {
10172
- const classNames = [styles$f.taskListTableRow];
10172
+ const classNames = [styles$g.taskListTableRow];
10173
10173
  if (moveOverPosition === "after") {
10174
- classNames.push(styles$f.isAfter);
10174
+ classNames.push(styles$g.isAfter);
10175
10175
  }
10176
10176
  if (moveOverPosition === "before") {
10177
- classNames.push(styles$f.isBefore);
10177
+ classNames.push(styles$g.isBefore);
10178
10178
  }
10179
10179
  if (isOverlay2 && !isDragging) {
10180
- classNames.push(styles$f.isOverlay);
10180
+ classNames.push(styles$g.isOverlay);
10181
10181
  }
10182
10182
  if (isCut2) {
10183
- classNames.push(styles$f.isCut);
10183
+ classNames.push(styles$g.isCut);
10184
10184
  }
10185
10185
  return classNames.join(" ");
10186
10186
  }, [isCut2, moveOverPosition, isOverlay2, isDragging]);
@@ -10228,12 +10228,12 @@
10228
10228
  },
10229
10229
  onContextMenu,
10230
10230
  children: [
10231
- task.type !== "project" && task.id !== "no-project-asigned" && !isOverlay2 && moveHandleProps ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles$f.dragIndicator}`, ...moveHandleProps, children: /* @__PURE__ */ jsxRuntime.jsx(DragIndicatorIcon, { className: styles$f.dragIndicatorIcon }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", {}),
10231
+ task.type !== "project" && task.id !== "no-project-asigned" && !isOverlay2 && moveHandleProps ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles$g.dragIndicator}`, ...moveHandleProps, children: /* @__PURE__ */ jsxRuntime.jsx(DragIndicatorIcon, { className: styles$g.dragIndicatorIcon }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", {}),
10232
10232
  columns.map(({ id: id2, component: Component, width }, index2) => {
10233
10233
  return /* @__PURE__ */ jsxRuntime.jsx(
10234
10234
  "div",
10235
10235
  {
10236
- className: styles$f.taskListCell,
10236
+ className: styles$g.taskListCell,
10237
10237
  style: {
10238
10238
  minWidth: width,
10239
10239
  maxWidth: width,
@@ -10644,7 +10644,7 @@
10644
10644
  children: /* @__PURE__ */ jsxRuntime.jsx(
10645
10645
  "div",
10646
10646
  {
10647
- className: styles$g.taskListWrapper,
10647
+ className: styles$h.taskListWrapper,
10648
10648
  style: {
10649
10649
  fontFamily: "var(--gantt-font-family)",
10650
10650
  fontSize: "var(--gantt-font-size)"
@@ -10683,7 +10683,7 @@
10683
10683
  };
10684
10684
  const TaskListSortableTable = React.memo(TaskListSortableTableDefaultInner);
10685
10685
  const taskListWrapper = "_taskListWrapper_196te_3";
10686
- const styles$e = {
10686
+ const styles$f = {
10687
10687
  taskListWrapper
10688
10688
  };
10689
10689
  const TaskListTableDefaultInner = ({
@@ -10729,7 +10729,7 @@
10729
10729
  return /* @__PURE__ */ jsxRuntime.jsx(
10730
10730
  "div",
10731
10731
  {
10732
- className: styles$e.taskListWrapper,
10732
+ className: styles$f.taskListWrapper,
10733
10733
  style: {
10734
10734
  fontFamily: "var(--gantt-font-family)",
10735
10735
  fontSize: "var(--gantt-font-size)"
@@ -10747,7 +10747,7 @@
10747
10747
  const scrollToTop = "_scrollToTop_yoz76_173";
10748
10748
  const scrollToBottom = "_scrollToBottom_yoz76_189";
10749
10749
  const hidden = "_hidden_yoz76_205";
10750
- const styles$d = {
10750
+ const styles$e = {
10751
10751
  taskListRoot,
10752
10752
  taskListHorizontalScroll,
10753
10753
  taskListResizer,
@@ -10886,12 +10886,12 @@
10886
10886
  ]
10887
10887
  );
10888
10888
  const RenderTaskListTable = canReorderTasks ? TaskListSortableTable : TaskListTable;
10889
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles$d.taskListRoot, ref: taskListRef, children: [
10889
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles$e.taskListRoot, ref: taskListRef, children: [
10890
10890
  /* @__PURE__ */ jsxRuntime.jsxs(
10891
10891
  "div",
10892
10892
  {
10893
10893
  ref: taskListHorizontalScrollRef,
10894
- className: styles$d.taskListHorizontalScroll,
10894
+ className: styles$e.taskListHorizontalScroll,
10895
10895
  style: {
10896
10896
  width: tableWidth
10897
10897
  },
@@ -10906,12 +10906,12 @@
10906
10906
  canResizeColumns
10907
10907
  }
10908
10908
  ),
10909
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles$d.tableWrapper, children: [
10909
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles$e.tableWrapper, children: [
10910
10910
  /* @__PURE__ */ jsxRuntime.jsx(
10911
10911
  "div",
10912
10912
  {
10913
10913
  ref: taskListContainerRef,
10914
- className: styles$d.horizontalContainer,
10914
+ className: styles$e.horizontalContainer,
10915
10915
  style: {
10916
10916
  height: Math.max(
10917
10917
  ganttHeight - ((tableBottom == null ? void 0 : tableBottom.height) || 0),
@@ -10973,13 +10973,13 @@
10973
10973
  /* @__PURE__ */ jsxRuntime.jsx(
10974
10974
  "div",
10975
10975
  {
10976
- className: `${styles$d.scrollToTop} ${!renderedIndexes || renderedIndexes[2] ? styles$d.hidden : ""}`
10976
+ className: `${styles$e.scrollToTop} ${!renderedIndexes || renderedIndexes[2] ? styles$e.hidden : ""}`
10977
10977
  }
10978
10978
  ),
10979
10979
  /* @__PURE__ */ jsxRuntime.jsx(
10980
10980
  "div",
10981
10981
  {
10982
- className: `${styles$d.scrollToBottom} ${!renderedIndexes || renderedIndexes[3] ? styles$d.hidden : ""}`
10982
+ className: `${styles$e.scrollToBottom} ${!renderedIndexes || renderedIndexes[3] ? styles$e.hidden : ""}`
10983
10983
  }
10984
10984
  )
10985
10985
  ] }),
@@ -10990,7 +10990,7 @@
10990
10990
  /* @__PURE__ */ jsxRuntime.jsx(
10991
10991
  "div",
10992
10992
  {
10993
- className: styles$d.taskListResizer,
10993
+ className: styles$e.taskListResizer,
10994
10994
  onMouseDown: (event) => {
10995
10995
  onTableResizeStart(event.clientX);
10996
10996
  },
@@ -11007,7 +11007,7 @@
11007
11007
  const TaskList = React.memo(TaskListInner);
11008
11008
  const ganttToday = "_ganttToday_1oyhk_1";
11009
11009
  const ganttTodayCircle = "_ganttTodayCircle_1oyhk_9";
11010
- const styles$c = {
11010
+ const styles$d = {
11011
11011
  ganttToday,
11012
11012
  ganttTodayCircle
11013
11013
  };
@@ -11073,7 +11073,7 @@
11073
11073
  /* @__PURE__ */ jsxRuntime.jsx(
11074
11074
  "circle",
11075
11075
  {
11076
- className: styles$c.ganttTodayCircle,
11076
+ className: styles$d.ganttTodayCircle,
11077
11077
  cx: x + 1,
11078
11078
  cy: 6,
11079
11079
  r: 6,
@@ -11150,7 +11150,7 @@
11150
11150
  /* @__PURE__ */ jsxRuntime.jsx(
11151
11151
  "circle",
11152
11152
  {
11153
- className: styles$c.ganttTodayCircle,
11153
+ className: styles$d.ganttTodayCircle,
11154
11154
  cx: x + 1,
11155
11155
  cy: 6,
11156
11156
  r: 6,
@@ -11193,7 +11193,7 @@
11193
11193
  const calendarHeader = "_calendarHeader_15t8b_61";
11194
11194
  const calendar = "_calendar_15t8b_1";
11195
11195
  const calendarDragging$1 = "_calendarDragging_15t8b_85";
11196
- const styles$b = {
11196
+ const styles$c = {
11197
11197
  calendarBottomText,
11198
11198
  calendarTopTick,
11199
11199
  calendarTopText,
@@ -11224,10 +11224,10 @@
11224
11224
  y1: y1Line,
11225
11225
  x2: x1Line,
11226
11226
  y2: y2Line,
11227
- className: styles$b.calendarTopTick
11227
+ className: styles$c.calendarTopTick
11228
11228
  }
11229
11229
  ),
11230
- value !== null && /* @__PURE__ */ jsxRuntime.jsx("text", { y: yText - 4, x: xText, className: styles$b.calendarTopText, children: value.toString().split(",")[1] ? t(value.toString().split(",")[0]) + "," + value.toString().split(",")[1] : value.toString().length >= 3 ? t(value.toString()) : value })
11230
+ value !== null && /* @__PURE__ */ jsxRuntime.jsx("text", { y: yText - 4, x: xText, className: styles$c.calendarTopText, children: value.toString().split(",")[1] ? t(value.toString().split(",")[0]) + "," + value.toString().split(",")[1] : value.toString().length >= 3 ? t(value.toString()) : value })
11231
11231
  ] });
11232
11232
  };
11233
11233
  const defaultRenderBottomHeader = (date, viewMode, dateSetup, index2, isUnknownDates) => {
@@ -11387,7 +11387,7 @@
11387
11387
  [renderTopHeader, dateSetup]
11388
11388
  );
11389
11389
  const renderBottomText = (x, y, key2, text) => {
11390
- return /* @__PURE__ */ jsxRuntime.jsx("g", { className: styles$b.calendarBottomText, children: /* @__PURE__ */ jsxRuntime.jsx(
11390
+ return /* @__PURE__ */ jsxRuntime.jsx("g", { className: styles$c.calendarBottomText, children: /* @__PURE__ */ jsxRuntime.jsx(
11391
11391
  "text",
11392
11392
  {
11393
11393
  y,
@@ -11682,7 +11682,7 @@
11682
11682
  scrollLeft: scrollRef.current.scrollLeft,
11683
11683
  scrollTop: scrollRef.current.scrollTop
11684
11684
  };
11685
- calendarContainer.classList.add(styles$b.calendarDragging);
11685
+ calendarContainer.classList.add(styles$c.calendarDragging);
11686
11686
  };
11687
11687
  const onScrollMove = (event) => {
11688
11688
  if (!moveStateRef.current) {
@@ -11697,7 +11697,7 @@
11697
11697
  const onScrollEnd = (event) => {
11698
11698
  event.preventDefault();
11699
11699
  moveStateRef.current = null;
11700
- calendarContainer.classList.remove(styles$b.calendarDragging);
11700
+ calendarContainer.classList.remove(styles$c.calendarDragging);
11701
11701
  };
11702
11702
  calendarContainer.addEventListener("mousemove", onScrollMove);
11703
11703
  calendarContainer.addEventListener("mousedown", onScrollStart);
@@ -11714,7 +11714,7 @@
11714
11714
  "g",
11715
11715
  {
11716
11716
  ref: calendarRef,
11717
- className: `${styles$b.calendar} calendar`,
11717
+ className: `${styles$c.calendar} calendar`,
11718
11718
  fontSize: "var(--gantt-font-size)",
11719
11719
  fontFamily: "var(--gantt-font-family)",
11720
11720
  children: [
@@ -11725,7 +11725,7 @@
11725
11725
  y: 0,
11726
11726
  width: fullSvgWidth,
11727
11727
  height: headerHeight,
11728
- className: styles$b.calendarHeader
11728
+ className: styles$c.calendarHeader
11729
11729
  }
11730
11730
  ),
11731
11731
  topValues,
@@ -11744,10 +11744,10 @@
11744
11744
  ${x - width},${y - width}
11745
11745
  ${x - width},${y + width}`;
11746
11746
  };
11747
- const arrow_clickable = "_arrow_clickable_1xrbf_1";
11748
- const mainPath = "_mainPath_1xrbf_11";
11749
- const clickZone = "_clickZone_1xrbf_57";
11750
- const styles$a = {
11747
+ const arrow_clickable = "_arrow_clickable_13ifc_1";
11748
+ const mainPath = "_mainPath_13ifc_9";
11749
+ const clickZone = "_clickZone_13ifc_33";
11750
+ const styles$b = {
11751
11751
  arrow_clickable,
11752
11752
  mainPath,
11753
11753
  clickZone
@@ -11770,6 +11770,7 @@
11770
11770
  isCritical,
11771
11771
  rtl,
11772
11772
  onArrowDoubleClick = void 0,
11773
+ onArrowClick = void 0,
11773
11774
  fromConnectionIndex = 0,
11774
11775
  fromTotalConnections = 1,
11775
11776
  toConnectionIndex = 0,
@@ -11788,6 +11789,11 @@
11788
11789
  onArrowDoubleClick(taskFrom, taskTo);
11789
11790
  }
11790
11791
  }, [taskFrom, taskTo, onArrowDoubleClick]);
11792
+ const handleClick = React.useCallback(() => {
11793
+ if (onArrowClick) {
11794
+ onArrowClick(taskFrom, taskTo);
11795
+ }
11796
+ }, [taskFrom, taskTo, onArrowClick]);
11791
11797
  const [path, trianglePoints] = React.useMemo(
11792
11798
  () => drownPathAndTriangle(
11793
11799
  indexFrom,
@@ -11835,19 +11841,29 @@
11835
11841
  }
11836
11842
  return "var(--gantt-arrow-color)";
11837
11843
  }, [isCritical]);
11838
- return /* @__PURE__ */ jsxRuntime.jsx("g", { fill: color, stroke: color, children: /* @__PURE__ */ jsxRuntime.jsxs(
11844
+ return /* @__PURE__ */ jsxRuntime.jsx(
11839
11845
  "g",
11840
11846
  {
11841
- "data-testid": `task-arrow-${targetFrom}-${taskFrom.name}-${targetTo}-${taskTo.name}`,
11842
- className: `arrow ${styles$a.arrow_clickable}`,
11843
- onDoubleClick,
11844
- children: [
11845
- onArrowDoubleClick && /* @__PURE__ */ jsxRuntime.jsx("path", { d: path, className: styles$a.clickZone }),
11846
- /* @__PURE__ */ jsxRuntime.jsx("path", { className: `${styles$a.mainPath} arrowMainPath`, d: path }),
11847
- /* @__PURE__ */ jsxRuntime.jsx("polygon", { className: "polygon arrowPolygon", points: trianglePoints })
11848
- ]
11847
+ fill: color,
11848
+ stroke: color,
11849
+ "data-arrow-from": taskFrom.id,
11850
+ "data-arrow-to": taskTo.id,
11851
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
11852
+ "g",
11853
+ {
11854
+ "data-testid": `task-arrow-${targetFrom}-${taskFrom.name}-${targetTo}-${taskTo.name}`,
11855
+ className: `arrow ${styles$b.arrow_clickable}`,
11856
+ onDoubleClick,
11857
+ onClick: handleClick,
11858
+ children: [
11859
+ onArrowDoubleClick && /* @__PURE__ */ jsxRuntime.jsx("path", { d: path, className: styles$b.clickZone }),
11860
+ /* @__PURE__ */ jsxRuntime.jsx("path", { className: styles$b.mainPath, d: path }),
11861
+ /* @__PURE__ */ jsxRuntime.jsx("polygon", { className: "polygon", points: trianglePoints })
11862
+ ]
11863
+ }
11864
+ )
11849
11865
  }
11850
- ) });
11866
+ );
11851
11867
  };
11852
11868
  const Arrow = React.memo(ArrowInner);
11853
11869
  const roundedPath = (points, radius) => {
@@ -11939,7 +11955,7 @@
11939
11955
  return [path, trianglePoints];
11940
11956
  };
11941
11957
  const relationLine = "_relationLine_wh2qy_1";
11942
- const styles$9 = {
11958
+ const styles$a = {
11943
11959
  relationLine
11944
11960
  };
11945
11961
  const RelationLine = ({
@@ -11955,7 +11971,7 @@
11955
11971
  x2,
11956
11972
  y1,
11957
11973
  y2,
11958
- className: styles$9.relationLine
11974
+ className: styles$a.relationLine
11959
11975
  }
11960
11976
  );
11961
11977
  };
@@ -12178,7 +12194,7 @@
12178
12194
  const barHandleImportantVisible = "_barHandleImportantVisible_5jhkr_37";
12179
12195
  const barHandleImportantHidden = "_barHandleImportantHidden_5jhkr_47";
12180
12196
  const barBackground = "_barBackground_5jhkr_57";
12181
- const styles$8 = {
12197
+ const styles$9 = {
12182
12198
  barWrapper,
12183
12199
  barHandle,
12184
12200
  barHandleImportantVisible,
@@ -12280,7 +12296,7 @@
12280
12296
  ry: barCornerRadius,
12281
12297
  rx: barCornerRadius,
12282
12298
  fill: barColor,
12283
- className: styles$8.barBackground
12299
+ className: styles$9.barBackground
12284
12300
  }
12285
12301
  ),
12286
12302
  showProgress && /* @__PURE__ */ jsxRuntime.jsx(
@@ -12337,7 +12353,7 @@
12337
12353
  const projectWrapper = "_projectWrapper_1maxt_1";
12338
12354
  const projectBackground = "_projectBackground_1maxt_11";
12339
12355
  const projectTop = "_projectTop_1maxt_21";
12340
- const styles$7 = {
12356
+ const styles$8 = {
12341
12357
  projectWrapper,
12342
12358
  projectBackground,
12343
12359
  projectTop
@@ -12418,7 +12434,7 @@
12418
12434
  startMoveFullTask(firstTouch.clientX);
12419
12435
  }
12420
12436
  },
12421
- className: styles$7.projectWrapper,
12437
+ className: styles$8.projectWrapper,
12422
12438
  children: [
12423
12439
  /* @__PURE__ */ jsxRuntime.jsx(
12424
12440
  "rect",
@@ -12430,7 +12446,7 @@
12430
12446
  height: taskHeight,
12431
12447
  rx: barCornerRadius,
12432
12448
  ry: barCornerRadius,
12433
- className: styles$7.projectBackground
12449
+ className: styles$8.projectBackground
12434
12450
  }
12435
12451
  ),
12436
12452
  showProgress && /* @__PURE__ */ jsxRuntime.jsx(
@@ -12455,13 +12471,13 @@
12455
12471
  height: taskHalfHeight,
12456
12472
  rx: barCornerRadius,
12457
12473
  ry: barCornerRadius,
12458
- className: styles$7.projectTop
12474
+ className: styles$8.projectTop
12459
12475
  }
12460
12476
  ),
12461
12477
  /* @__PURE__ */ jsxRuntime.jsx(
12462
12478
  "polygon",
12463
12479
  {
12464
- className: styles$7.projectTop,
12480
+ className: styles$8.projectTop,
12465
12481
  points: projectLeftTriangle,
12466
12482
  fill: barColor
12467
12483
  }
@@ -12469,7 +12485,7 @@
12469
12485
  /* @__PURE__ */ jsxRuntime.jsx(
12470
12486
  "polygon",
12471
12487
  {
12472
- className: styles$7.projectTop,
12488
+ className: styles$8.projectTop,
12473
12489
  points: projectRightTriangle,
12474
12490
  fill: barColor
12475
12491
  }
@@ -12481,7 +12497,7 @@
12481
12497
  const barRelationHandleWrapper = "_barRelationHandleWrapper_eluno_1";
12482
12498
  const barRelationHandle = "_barRelationHandle_eluno_1";
12483
12499
  const barRelationHandle_drawMode = "_barRelationHandle_drawMode_eluno_9";
12484
- const styles$6 = {
12500
+ const styles$7 = {
12485
12501
  barRelationHandleWrapper,
12486
12502
  barRelationHandle,
12487
12503
  barRelationHandle_drawMode
@@ -12501,7 +12517,7 @@
12501
12517
  cx: x,
12502
12518
  cy: y,
12503
12519
  r: radius,
12504
- className: `${styles$6.barRelationHandle} ${isRelationDrawMode ? styles$6.barRelationHandle_drawMode : ""}`,
12520
+ className: `${styles$7.barRelationHandle} ${isRelationDrawMode ? styles$7.barRelationHandle_drawMode : ""}`,
12505
12521
  onMouseDown: startDrawRelation,
12506
12522
  onTouchStart: startDrawRelation
12507
12523
  }
@@ -12514,7 +12530,7 @@
12514
12530
  {
12515
12531
  ref,
12516
12532
  tabIndex: 0,
12517
- className: `${styles$6.barRelationHandleWrapper} ${className || ""}`,
12533
+ className: `${styles$7.barRelationHandleWrapper} ${className || ""}`,
12518
12534
  children
12519
12535
  }
12520
12536
  );
@@ -12655,12 +12671,12 @@
12655
12671
  return () => {
12656
12672
  };
12657
12673
  }, []);
12658
- return /* @__PURE__ */ jsxRuntime.jsxs(BarRelationWrapper, { ref: rootRef, className: styles$8.barWrapper, children: [
12674
+ return /* @__PURE__ */ jsxRuntime.jsxs(BarRelationWrapper, { ref: rootRef, className: styles$9.barWrapper, children: [
12659
12675
  task.id !== "no-project-asigned" && renderBarDisplay(),
12660
12676
  ctrlPressed && isDateChangeable(task) && /* @__PURE__ */ jsxRuntime.jsx(
12661
12677
  BarDateHandle,
12662
12678
  {
12663
- className: `${styles$8.barHandle} ${isMovingDate ? styles$8.barHandleImportantVisible : ""} ${isMovingProgress || isRelationDrawMode ? styles$8.barHandleImportantHidden : ""}`,
12679
+ className: `${styles$9.barHandle} ${isMovingDate ? styles$9.barHandleImportantVisible : ""} ${isMovingProgress || isRelationDrawMode ? styles$9.barHandleImportantHidden : ""}`,
12664
12680
  dataTestId: `bar-date-handle-left-${task.id}`,
12665
12681
  barCornerRadius,
12666
12682
  height: handleHeight,
@@ -12673,7 +12689,7 @@
12673
12689
  ctrlPressed && isDateChangeable(task) && /* @__PURE__ */ jsxRuntime.jsx(
12674
12690
  BarDateHandle,
12675
12691
  {
12676
- className: `${styles$8.barHandle} ${isMovingDate ? styles$8.barHandleImportantVisible : ""} ${isMovingProgress || isRelationDrawMode ? styles$8.barHandleImportantHidden : ""}`,
12692
+ className: `${styles$9.barHandle} ${isMovingDate ? styles$9.barHandleImportantVisible : ""} ${isMovingProgress || isRelationDrawMode ? styles$9.barHandleImportantHidden : ""}`,
12677
12693
  dataTestId: `bar-date-handle-right-${task.id}`,
12678
12694
  barCornerRadius,
12679
12695
  height: handleHeight,
@@ -12689,7 +12705,7 @@
12689
12705
  };
12690
12706
  const milestoneWrapper = "_milestoneWrapper_vcirf_1";
12691
12707
  const milestoneBackground = "_milestoneBackground_vcirf_11";
12692
- const styles$5 = {
12708
+ const styles$6 = {
12693
12709
  milestoneWrapper,
12694
12710
  milestoneBackground
12695
12711
  };
@@ -12719,7 +12735,7 @@
12719
12735
  }
12720
12736
  return "var(--gantt-milestone-background-color)";
12721
12737
  }, [isSelected, isCritical]);
12722
- return /* @__PURE__ */ jsxRuntime.jsxs(BarRelationWrapper, { className: styles$5.milestoneWrapper, children: [
12738
+ return /* @__PURE__ */ jsxRuntime.jsxs(BarRelationWrapper, { className: styles$6.milestoneWrapper, children: [
12723
12739
  /* @__PURE__ */ jsxRuntime.jsx(
12724
12740
  "rect",
12725
12741
  {
@@ -12732,7 +12748,7 @@
12732
12748
  rx: barCornerRadius,
12733
12749
  ry: barCornerRadius,
12734
12750
  transform,
12735
- className: styles$5.milestoneBackground,
12751
+ className: styles$6.milestoneBackground,
12736
12752
  onMouseDown: (e) => {
12737
12753
  e.stopPropagation();
12738
12754
  onTaskEventStart("move", e.clientX);
@@ -13058,11 +13074,11 @@
13058
13074
  };
13059
13075
  const TaskItem = React.memo(TaskItemInner);
13060
13076
  const TaskItemWrapper = "_TaskItemWrapper_8x02m_1";
13061
- const styles$4 = {
13077
+ const styles$5 = {
13062
13078
  TaskItemWrapper
13063
13079
  };
13064
13080
  const barComparison = "_barComparison_14078_1";
13065
- const styles$3 = {
13081
+ const styles$4 = {
13066
13082
  barComparison
13067
13083
  };
13068
13084
  const BarComparison = (props) => {
@@ -13117,7 +13133,7 @@
13117
13133
  ry: barCornerRadius,
13118
13134
  rx: barCornerRadius,
13119
13135
  fill: barColor,
13120
- className: styles$3.barComparison
13136
+ className: styles$4.barComparison
13121
13137
  }
13122
13138
  ),
13123
13139
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -13187,7 +13203,9 @@
13187
13203
  waitCommitTasks,
13188
13204
  viewMode,
13189
13205
  showProgress = true,
13190
- progressColor
13206
+ progressColor,
13207
+ onArrowClick,
13208
+ selectedArrow
13191
13209
  } = props;
13192
13210
  const renderedHolidays = React.useMemo(() => {
13193
13211
  const { columnWidth } = distances;
@@ -13220,13 +13238,6 @@
13220
13238
  getDate,
13221
13239
  startColumnIndex
13222
13240
  ]);
13223
- const [hoveredTaskId, setHoveredTaskId] = React.useState(null);
13224
- const handleTaskHover = React.useCallback((taskId) => {
13225
- setHoveredTaskId(taskId);
13226
- }, []);
13227
- const handleTaskLeave = React.useCallback(() => {
13228
- setHoveredTaskId(null);
13229
- }, []);
13230
13241
  const [renderedTasks, renderedArrows, renderedSelectedTasks] = React.useMemo(() => {
13231
13242
  if (!renderedRowIndexes) {
13232
13243
  return [null, null, null];
@@ -13324,13 +13335,11 @@
13324
13335
  "svg",
13325
13336
  {
13326
13337
  id: task.id,
13327
- className: `${styles$4.TaskItemWrapper} TaskItemWrapper`,
13338
+ className: `${styles$5.TaskItemWrapper} TaskItemWrapper`,
13328
13339
  x: Math.max(safeContainerX + (additionalLeftSpace || 0), 0),
13329
13340
  y: safeLevelY,
13330
13341
  width: Math.max(safeContainerWidth, 0),
13331
13342
  height: fullRowHeight,
13332
- onMouseEnter: () => handleTaskHover(task.id),
13333
- onMouseLeave: handleTaskLeave,
13334
13343
  children: /* @__PURE__ */ jsxRuntime.jsx(
13335
13344
  TaskItem,
13336
13345
  {
@@ -13459,8 +13468,6 @@
13459
13468
  y: containerY,
13460
13469
  width: safeArrowContainerWidth,
13461
13470
  height: containerHeight,
13462
- "data-from-id": source.id,
13463
- "data-to-id": taskId,
13464
13471
  children: /* @__PURE__ */ jsxRuntime.jsx(
13465
13472
  Arrow,
13466
13473
  {
@@ -13480,6 +13487,7 @@
13480
13487
  isCritical: isCritical2,
13481
13488
  rtl,
13482
13489
  onArrowDoubleClick,
13490
+ onArrowClick,
13483
13491
  fromConnectionIndex: getConnectionIndex(
13484
13492
  `${source.id}|${sourceTarget}|out`
13485
13493
  ),
@@ -13545,8 +13553,6 @@
13545
13553
  y: containerY,
13546
13554
  width: safeArrowContainerWidth,
13547
13555
  height: containerHeight,
13548
- "data-from-id": taskId,
13549
- "data-to-id": dependent.id,
13550
13556
  children: /* @__PURE__ */ jsxRuntime.jsx(
13551
13557
  Arrow,
13552
13558
  {
@@ -13566,6 +13572,7 @@
13566
13572
  isCritical: isCritical2,
13567
13573
  rtl,
13568
13574
  onArrowDoubleClick,
13575
+ onArrowClick,
13569
13576
  fromConnectionIndex: getConnectionIndex(
13570
13577
  `${taskId}|${ownTarget}|out`
13571
13578
  ),
@@ -13644,8 +13651,6 @@
13644
13651
  y: containerY,
13645
13652
  width: safeCW,
13646
13653
  height: containerHeight,
13647
- "data-from-id": source.id,
13648
- "data-to-id": taskId,
13649
13654
  children: /* @__PURE__ */ jsxRuntime.jsx(
13650
13655
  Arrow,
13651
13656
  {
@@ -13665,6 +13670,7 @@
13665
13670
  isCritical,
13666
13671
  rtl,
13667
13672
  onArrowDoubleClick,
13673
+ onArrowClick,
13668
13674
  fromConnectionIndex: getConnectionIndex(
13669
13675
  `${source.id}|${sourceTarget}|out`
13670
13676
  ),
@@ -13722,36 +13728,81 @@
13722
13728
  isRelationChangeable,
13723
13729
  visibleTasksMirror,
13724
13730
  onArrowDoubleClick,
13731
+ onArrowClick,
13725
13732
  showProgress,
13726
- progressColor,
13727
- handleTaskHover,
13728
- handleTaskLeave
13733
+ progressColor
13729
13734
  ]);
13730
- const arrowHighlightStyle = React.useMemo(() => {
13731
- if (!hoveredTaskId)
13732
- return null;
13733
- const safeId = CSS.escape(hoveredTaskId);
13734
- return /* @__PURE__ */ jsxRuntime.jsx("style", { children: `
13735
- g.arrows svg { opacity: 0.08 !important; transition: opacity 0.15s; }
13736
- g.arrows svg[data-from-id="${safeId}"],
13737
- g.arrows svg[data-to-id="${safeId}"] {
13738
- opacity: 1 !important;
13739
- }
13740
- g.arrows svg[data-from-id="${safeId}"] .arrowMainPath,
13741
- g.arrows svg[data-to-id="${safeId}"] .arrowMainPath {
13742
- opacity: 1 !important;
13743
- stroke-width: 2px !important;
13744
- stroke: var(--gantt-arrow-hover-color, #1976D2) !important;
13745
- }
13746
- g.arrows svg[data-from-id="${safeId}"] .arrowPolygon,
13747
- g.arrows svg[data-to-id="${safeId}"] .arrowPolygon {
13748
- fill: var(--gantt-arrow-hover-color, #1976D2) !important;
13749
- opacity: 1 !important;
13750
- }
13751
- ` });
13752
- }, [hoveredTaskId]);
13753
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { className: "content", children: [
13754
- arrowHighlightStyle,
13735
+ const contentRef = React.useRef(null);
13736
+ React.useEffect(() => {
13737
+ const contentEl = contentRef.current;
13738
+ if (!contentEl)
13739
+ return void 0;
13740
+ const svgRoot = contentEl.ownerSVGElement;
13741
+ if (!svgRoot)
13742
+ return void 0;
13743
+ let currentHighlightedTask = null;
13744
+ const highlightArrows = (taskId) => {
13745
+ if (currentHighlightedTask === taskId)
13746
+ return;
13747
+ clearHighlights();
13748
+ currentHighlightedTask = taskId;
13749
+ const arrows = svgRoot.querySelectorAll(
13750
+ `[data-arrow-from="${taskId}"], [data-arrow-to="${taskId}"]`
13751
+ );
13752
+ arrows.forEach((el) => el.classList.add("gantt-arrow-highlighted"));
13753
+ };
13754
+ const clearHighlights = () => {
13755
+ if (!currentHighlightedTask)
13756
+ return;
13757
+ svgRoot.querySelectorAll(".gantt-arrow-highlighted").forEach((el) => el.classList.remove("gantt-arrow-highlighted"));
13758
+ currentHighlightedTask = null;
13759
+ };
13760
+ const onMouseOver = (e) => {
13761
+ const target = e.target;
13762
+ const taskWrapper = target.closest(".TaskItemWrapper");
13763
+ if (taskWrapper && taskWrapper.id) {
13764
+ highlightArrows(taskWrapper.id);
13765
+ }
13766
+ };
13767
+ const onMouseOut = (e) => {
13768
+ const target = e.target;
13769
+ const taskWrapper = target.closest(".TaskItemWrapper");
13770
+ if (taskWrapper) {
13771
+ const relatedTarget = e.relatedTarget;
13772
+ if (!relatedTarget || !taskWrapper.contains(relatedTarget)) {
13773
+ clearHighlights();
13774
+ }
13775
+ }
13776
+ };
13777
+ contentEl.addEventListener("mouseover", onMouseOver);
13778
+ contentEl.addEventListener("mouseout", onMouseOut);
13779
+ return () => {
13780
+ contentEl.removeEventListener("mouseover", onMouseOver);
13781
+ contentEl.removeEventListener("mouseout", onMouseOut);
13782
+ };
13783
+ }, []);
13784
+ React.useLayoutEffect(() => {
13785
+ const contentEl = contentRef.current;
13786
+ if (!contentEl)
13787
+ return;
13788
+ const svgRoot = contentEl.ownerSVGElement;
13789
+ if (!svgRoot)
13790
+ return;
13791
+ svgRoot.querySelectorAll(".gantt-arrow-selected").forEach((el) => el.classList.remove("gantt-arrow-selected"));
13792
+ if (!selectedArrow)
13793
+ return;
13794
+ if (selectedArrow.taskId) {
13795
+ svgRoot.querySelectorAll(
13796
+ `[data-arrow-from="${selectedArrow.taskId}"], [data-arrow-to="${selectedArrow.taskId}"]`
13797
+ ).forEach((el) => el.classList.add("gantt-arrow-selected"));
13798
+ }
13799
+ if (selectedArrow.fromId && selectedArrow.toId) {
13800
+ svgRoot.querySelectorAll(
13801
+ `[data-arrow-from="${selectedArrow.fromId}"][data-arrow-to="${selectedArrow.toId}"]`
13802
+ ).forEach((el) => el.classList.add("gantt-arrow-selected"));
13803
+ }
13804
+ }, [selectedArrow, renderedArrows]);
13805
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { className: "content", ref: contentRef, children: [
13755
13806
  renderedSelectedTasks,
13756
13807
  /* @__PURE__ */ jsxRuntime.jsx("g", { children: renderedHolidays }),
13757
13808
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -13788,7 +13839,7 @@
13788
13839
  const horizontalContainer = "_horizontalContainer_1wr55_73";
13789
13840
  const wrapper = "_wrapper_1wr55_85";
13790
13841
  const calendarDragging = "_calendarDragging_1wr55_109";
13791
- const styles$2 = {
13842
+ const styles$3 = {
13792
13843
  ganttVerticalContainer,
13793
13844
  horizontalContainer,
13794
13845
  wrapper,
@@ -13872,7 +13923,7 @@
13872
13923
  scrollLeft: verticalScrollbarRef.current.scrollLeft,
13873
13924
  scrollTop: verticalScrollbarRef.current.scrollTop
13874
13925
  };
13875
- contentContainer.classList.add(styles$2.calendarDragging);
13926
+ contentContainer.classList.add(styles$3.calendarDragging);
13876
13927
  };
13877
13928
  const onScrollMove = (event) => {
13878
13929
  if (!moveStateVertRef.current) {
@@ -13905,7 +13956,7 @@
13905
13956
  event.preventDefault();
13906
13957
  moveStateVertRef.current = null;
13907
13958
  moveStateHorRef.current = null;
13908
- contentContainer.classList.remove(styles$2.calendarDragging);
13959
+ contentContainer.classList.remove(styles$3.calendarDragging);
13909
13960
  };
13910
13961
  contentContainer.addEventListener("mousemove", onScrollMove);
13911
13962
  contentContainer.addEventListener("mousedown", onScrollStart);
@@ -13921,7 +13972,7 @@
13921
13972
  return /* @__PURE__ */ jsxRuntime.jsxs(
13922
13973
  "div",
13923
13974
  {
13924
- className: styles$2.ganttVerticalContainer,
13975
+ className: styles$3.ganttVerticalContainer,
13925
13976
  ref: verticalGanttContainerRef,
13926
13977
  onScroll: onVerticalScrollbarScrollX,
13927
13978
  dir: "ltr",
@@ -13940,7 +13991,7 @@
13940
13991
  "div",
13941
13992
  {
13942
13993
  ref: horizontalContainerRef,
13943
- className: styles$2.horizontalContainer,
13994
+ className: styles$3.horizontalContainer,
13944
13995
  style: containerStyle,
13945
13996
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: gridStyle, children: /* @__PURE__ */ jsxRuntime.jsxs(
13946
13997
  "svg",
@@ -18432,7 +18483,7 @@
18432
18483
  const menuOption = "_menuOption_1c3e3_3";
18433
18484
  const icon = "_icon_1c3e3_81";
18434
18485
  const label = "_label_1c3e3_89";
18435
- const styles$1 = {
18486
+ const styles$2 = {
18436
18487
  menuOption,
18437
18488
  icon,
18438
18489
  label
@@ -18526,7 +18577,7 @@
18526
18577
  /* @__PURE__ */ jsxRuntime.jsxs(
18527
18578
  "button",
18528
18579
  {
18529
- className: styles$1.menuOption,
18580
+ className: styles$2.menuOption,
18530
18581
  "aria-disabled": disabled,
18531
18582
  disabled,
18532
18583
  style: {
@@ -18541,7 +18592,7 @@
18541
18592
  /* @__PURE__ */ jsxRuntime.jsx(
18542
18593
  "div",
18543
18594
  {
18544
- className: styles$1.icon,
18595
+ className: styles$2.icon,
18545
18596
  style: {
18546
18597
  width: contextMenuIconWidth,
18547
18598
  color: "var(--gantt-context-menu-text-color)",
@@ -18550,7 +18601,7 @@
18550
18601
  children: icon2
18551
18602
  }
18552
18603
  ),
18553
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$1.label, children: label2 }),
18604
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles$2.label, children: label2 }),
18554
18605
  children && children.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
18555
18606
  "div",
18556
18607
  {
@@ -19359,15 +19410,119 @@
19359
19410
  const loader = "_loader_covn4_5";
19360
19411
  const l16 = "_l16_covn4_1";
19361
19412
  const loaderHidden = "_loaderHidden_covn4_49";
19362
- const styles = {
19413
+ const styles$1 = {
19363
19414
  loader,
19364
19415
  l16,
19365
19416
  loaderHidden
19366
19417
  };
19367
19418
  const GanttLoaderInner = ({ loading }) => {
19368
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.loader} ${loading ? "" : styles.loaderHidden}` });
19419
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles$1.loader} ${loading ? "" : styles$1.loaderHidden}` });
19369
19420
  };
19370
19421
  const GanttLoader = React.memo(GanttLoaderInner);
19422
+ const drawerOverlay = "_drawerOverlay_3p2w6_1";
19423
+ const drawer = "_drawer_3p2w6_1";
19424
+ const slideIn = "_slideIn_3p2w6_1";
19425
+ const drawerHeader = "_drawerHeader_3p2w6_71";
19426
+ const closeButton = "_closeButton_3p2w6_89";
19427
+ const drawerContent = "_drawerContent_3p2w6_127";
19428
+ const defaultSection = "_defaultSection_3p2w6_139";
19429
+ const defaultField = "_defaultField_3p2w6_175";
19430
+ const defaultFieldLabel = "_defaultFieldLabel_3p2w6_191";
19431
+ const styles = {
19432
+ drawerOverlay,
19433
+ drawer,
19434
+ slideIn,
19435
+ drawerHeader,
19436
+ closeButton,
19437
+ drawerContent,
19438
+ defaultSection,
19439
+ defaultField,
19440
+ defaultFieldLabel
19441
+ };
19442
+ const DefaultDrawerContent = ({
19443
+ data
19444
+ }) => {
19445
+ var _a, _b, _c, _d, _e, _f;
19446
+ if (data.type === "task" && data.task) {
19447
+ const { task } = data;
19448
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultSection, children: [
19449
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { children: "Task Details" }),
19450
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19451
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "Name:" }),
19452
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: task.name })
19453
+ ] }),
19454
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19455
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "Start:" }),
19456
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: (_a = task.start) == null ? void 0 : _a.toLocaleDateString() })
19457
+ ] }),
19458
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19459
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "End:" }),
19460
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: (_b = task.end) == null ? void 0 : _b.toLocaleDateString() })
19461
+ ] }),
19462
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19463
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "Progress:" }),
19464
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
19465
+ Math.round(task.progress || 0),
19466
+ "%"
19467
+ ] })
19468
+ ] })
19469
+ ] });
19470
+ }
19471
+ if (data.type === "connection" && data.taskFrom && data.taskTo) {
19472
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultSection, children: [
19473
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { children: "Connection Details" }),
19474
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { children: "From" }),
19475
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19476
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "Name:" }),
19477
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: data.taskFrom.name })
19478
+ ] }),
19479
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19480
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "Start:" }),
19481
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: (_c = data.taskFrom.start) == null ? void 0 : _c.toLocaleDateString() })
19482
+ ] }),
19483
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19484
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "End:" }),
19485
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: (_d = data.taskFrom.end) == null ? void 0 : _d.toLocaleDateString() })
19486
+ ] }),
19487
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { children: "To" }),
19488
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19489
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "Name:" }),
19490
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: data.taskTo.name })
19491
+ ] }),
19492
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19493
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "Start:" }),
19494
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: (_e = data.taskTo.start) == null ? void 0 : _e.toLocaleDateString() })
19495
+ ] }),
19496
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.defaultField, children: [
19497
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.defaultFieldLabel, children: "End:" }),
19498
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: (_f = data.taskTo.end) == null ? void 0 : _f.toLocaleDateString() })
19499
+ ] })
19500
+ ] });
19501
+ }
19502
+ return null;
19503
+ };
19504
+ const GanttDrawer = ({
19505
+ open,
19506
+ width,
19507
+ data,
19508
+ onClose,
19509
+ renderContent
19510
+ }) => {
19511
+ if (!open || !data)
19512
+ return null;
19513
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.drawerOverlay, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.drawer, style: { width }, children: [
19514
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.drawerHeader, children: /* @__PURE__ */ jsxRuntime.jsx(
19515
+ "button",
19516
+ {
19517
+ className: styles.closeButton,
19518
+ onClick: onClose,
19519
+ "aria-label": "Close drawer",
19520
+ children: "×"
19521
+ }
19522
+ ) }),
19523
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.drawerContent, children: renderContent ? renderContent(data) : /* @__PURE__ */ jsxRuntime.jsx(DefaultDrawerContent, { data }) })
19524
+ ] }) });
19525
+ };
19371
19526
  const Gantt = (props) => {
19372
19527
  var _a, _b;
19373
19528
  const {
@@ -19413,7 +19568,11 @@
19413
19568
  dataDateLabel = "Data Date",
19414
19569
  showProgress = true,
19415
19570
  progressColor,
19416
- scrollToTaskId
19571
+ scrollToTaskId,
19572
+ enableDrawer = false,
19573
+ drawerWidth = 300,
19574
+ renderDrawerContent,
19575
+ onArrowClick: onArrowClickProp
19417
19576
  } = props;
19418
19577
  const ganttSVGRef = React.useRef(null);
19419
19578
  const wrapperRef = React.useRef(null);
@@ -19430,6 +19589,36 @@
19430
19589
  [theme, rowHeight]
19431
19590
  );
19432
19591
  const [waitCommitTasks, setWaitCommitTasks] = React.useState(false);
19592
+ const [drawerData, setDrawerData] = React.useState(null);
19593
+ const [selectedArrow, setSelectedArrow] = React.useState(null);
19594
+ const handleDrawerClose = React.useCallback(() => {
19595
+ setDrawerData(null);
19596
+ setSelectedArrow(null);
19597
+ }, []);
19598
+ const handleBarClickForDrawer = React.useCallback(
19599
+ (task, _event) => {
19600
+ if (clientTaskBar == null ? void 0 : clientTaskBar.onClick) {
19601
+ clientTaskBar.onClick(task);
19602
+ }
19603
+ if (enableDrawer) {
19604
+ setDrawerData({ type: "task", task });
19605
+ setSelectedArrow({ taskId: task.id });
19606
+ }
19607
+ },
19608
+ [clientTaskBar == null ? void 0 : clientTaskBar.onClick, enableDrawer]
19609
+ );
19610
+ const handleArrowClickForDrawer = React.useCallback(
19611
+ (taskFrom, taskTo) => {
19612
+ if (onArrowClickProp) {
19613
+ onArrowClickProp(taskFrom, taskTo);
19614
+ }
19615
+ if (enableDrawer) {
19616
+ setDrawerData({ type: "connection", taskFrom, taskTo });
19617
+ setSelectedArrow({ fromId: taskFrom.id, toId: taskTo.id });
19618
+ }
19619
+ },
19620
+ [onArrowClickProp, enableDrawer]
19621
+ );
19433
19622
  const taskBar = React.useMemo(() => {
19434
19623
  return mergeDeepObj(
19435
19624
  {},
@@ -20742,7 +20931,10 @@
20742
20931
  visibleTasksMirror,
20743
20932
  viewMode,
20744
20933
  showProgress,
20745
- progressColor
20934
+ progressColor,
20935
+ onArrowClick: enableDrawer ? handleArrowClickForDrawer : void 0,
20936
+ onClick: enableDrawer ? handleBarClickForDrawer : taskBar.onClick,
20937
+ selectedArrow
20746
20938
  }),
20747
20939
  [
20748
20940
  viewMode,
@@ -20781,7 +20973,11 @@
20781
20973
  changeInProgress == null ? void 0 : changeInProgress.action,
20782
20974
  handleDeleteTasks,
20783
20975
  showProgress,
20784
- progressColor
20976
+ progressColor,
20977
+ enableDrawer,
20978
+ handleArrowClickForDrawer,
20979
+ handleBarClickForDrawer,
20980
+ selectedArrow
20785
20981
  ]
20786
20982
  );
20787
20983
  const renderTaskListProps = React.useMemo(
@@ -20850,7 +21046,7 @@
20850
21046
  "div",
20851
21047
  {
20852
21048
  style: cssVars,
20853
- className: `${styles$2.wrapper} gantt`,
21049
+ className: `${styles$3.wrapper} gantt`,
20854
21050
  onKeyDown: handleKeyDown,
20855
21051
  tabIndex: 0,
20856
21052
  ref: wrapperRef,
@@ -20934,7 +21130,17 @@
20934
21130
  boundaryElement: verticalGanttContainerRef
20935
21131
  }
20936
21132
  ),
20937
- /* @__PURE__ */ jsxRuntime.jsx(GanttLoader, { loading: waitCommitTasks })
21133
+ /* @__PURE__ */ jsxRuntime.jsx(GanttLoader, { loading: waitCommitTasks }),
21134
+ enableDrawer && /* @__PURE__ */ jsxRuntime.jsx(
21135
+ GanttDrawer,
21136
+ {
21137
+ open: drawerData !== null,
21138
+ width: drawerWidth,
21139
+ data: drawerData,
21140
+ onClose: handleDrawerClose,
21141
+ renderContent: renderDrawerContent
21142
+ }
21143
+ )
20938
21144
  ]
20939
21145
  }
20940
21146
  ) }) });