gantt-task-react-powern 0.6.28 → 0.6.29

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.
@@ -49,5 +49,6 @@ export declare type TaskListProps = {
49
49
  }>;
50
50
  containerWidth?: number;
51
51
  innerScrollRef?: React.RefObject<HTMLDivElement>;
52
+ horizontalContainerRef?: React.RefObject<HTMLDivElement>;
52
53
  } & EventOption;
53
54
  export declare const TaskList: React.FC<TaskListProps>;
package/dist/index.js CHANGED
@@ -898,8 +898,26 @@ var TaskList = function TaskList(_ref) {
898
898
  taskLabelRenderer = _ref.taskLabelRenderer,
899
899
  onMultiSelect = _ref.onMultiSelect,
900
900
  containerWidth = _ref.containerWidth,
901
- innerScrollRef = _ref.innerScrollRef;
902
- var horizontalContainerRef = React.useRef(null);
901
+ innerScrollRef = _ref.innerScrollRef,
902
+ externalHorizontalContainerRef = _ref.horizontalContainerRef;
903
+ var internalHorizontalContainerRef = React.useRef(null);
904
+ var horizontalContainerRef = externalHorizontalContainerRef != null ? externalHorizontalContainerRef : internalHorizontalContainerRef;
905
+ var headerScrollRef = React.useRef(null);
906
+ React.useEffect(function () {
907
+ var rowsEl = horizontalContainerRef.current;
908
+ if (!rowsEl) return;
909
+
910
+ var onScroll = function onScroll() {
911
+ if (headerScrollRef.current) {
912
+ headerScrollRef.current.scrollLeft = rowsEl.scrollLeft;
913
+ }
914
+ };
915
+
916
+ rowsEl.addEventListener("scroll", onScroll);
917
+ return function () {
918
+ return rowsEl.removeEventListener("scroll", onScroll);
919
+ };
920
+ }, [horizontalContainerRef]);
903
921
 
904
922
  var _useState = React.useState([]),
905
923
  selectedTasks = _useState[0],
@@ -1086,9 +1104,14 @@ var TaskList = function TaskList(_ref) {
1086
1104
  ref: innerScrollRef,
1087
1105
  className: styles$4.hideScrollbar,
1088
1106
  style: {
1089
- overflowX: "auto"
1107
+ overflowX: "hidden"
1090
1108
  }
1091
- }, React__default.createElement(TaskListHeader, Object.assign({}, headerProps)), React__default.createElement("div", {
1109
+ }, React__default.createElement("div", {
1110
+ ref: headerScrollRef,
1111
+ style: {
1112
+ overflow: "hidden"
1113
+ }
1114
+ }, React__default.createElement(TaskListHeader, Object.assign({}, headerProps))), React__default.createElement("div", {
1092
1115
  ref: horizontalContainerRef,
1093
1116
  className: horizontalContainerClass,
1094
1117
  style: ganttHeight ? {
@@ -1356,6 +1379,7 @@ var GridBody = function GridBody(_ref) {
1356
1379
  });
1357
1380
  var rowBackgrounds = [];
1358
1381
  var rowLines = [];
1382
+ var rowOverlays = [];
1359
1383
  rowLines.push(React__default.createElement("line", {
1360
1384
  key: "top-line",
1361
1385
  x1: 0,
@@ -1364,6 +1388,7 @@ var GridBody = function GridBody(_ref) {
1364
1388
  y2: visibleStartY,
1365
1389
  className: styles$5.gridRowLine
1366
1390
  }));
1391
+ var showPerRowOffDays = viewMode !== exports.ViewMode.Month && viewMode !== exports.ViewMode.Quarter;
1367
1392
 
1368
1393
  for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
1369
1394
  var vi = _step.value;
@@ -1388,6 +1413,63 @@ var GridBody = function GridBody(_ref) {
1388
1413
  y2: y + rowHeight,
1389
1414
  className: styles$5.gridRowLine
1390
1415
  }));
1416
+
1417
+ if (showPerRowOffDays) {
1418
+ var rowEven = vi.index % 2 === 1;
1419
+ var rowFill = isMilestone ? "#e6e4e4" : scheduleType === "lookAhead" ? "#fff" : rowEven ? "#f5f5f5" : "#fff";
1420
+ rowOverlays.push(React__default.createElement("rect", {
1421
+ key: "row-clean-" + vi.key,
1422
+ x: 0,
1423
+ y: y,
1424
+ width: svgWidth,
1425
+ height: rowHeight,
1426
+ fill: rowFill
1427
+ }));
1428
+ var cal = task.calender;
1429
+
1430
+ if (cal) {
1431
+ for (var _i = 0, _x = 0; _i < dates.length; _i++, _x += columnWidth) {
1432
+ var _dates2;
1433
+
1434
+ var _pEnd = (_dates2 = dates[_i + 1]) != null ? _dates2 : addToDate(dates[_i], 1, "day");
1435
+
1436
+ var _periodMs = _pEnd.getTime() - dates[_i].getTime();
1437
+
1438
+ if (_periodMs <= 0) continue;
1439
+
1440
+ var _cursor = new Date(dates[_i]);
1441
+
1442
+ _cursor.setHours(0, 0, 0, 0);
1443
+
1444
+ while (_cursor.getTime() < _pEnd.getTime()) {
1445
+ if (isOffDay(_cursor, cal)) {
1446
+ var _ds = _cursor.getTime() - dates[_i].getTime();
1447
+
1448
+ var _de = _ds + 86400000;
1449
+
1450
+ var _startFrac = Math.max(0, _ds) / _periodMs;
1451
+
1452
+ var _endFrac = Math.min(_periodMs, _de) / _periodMs;
1453
+
1454
+ var _rw = (_endFrac - _startFrac) * columnWidth;
1455
+
1456
+ if (_rw > 0.5) {
1457
+ rowOverlays.push(React__default.createElement("rect", {
1458
+ key: "row-offday-" + vi.key + "-" + _cursor.getTime(),
1459
+ x: rtl ? _x + columnWidth - (_startFrac * columnWidth + _rw) : _x + _startFrac * columnWidth,
1460
+ y: y,
1461
+ width: _rw,
1462
+ height: rowHeight,
1463
+ fill: weekendColor
1464
+ }));
1465
+ }
1466
+ }
1467
+
1468
+ _cursor.setDate(_cursor.getDate() + 1);
1469
+ }
1470
+ }
1471
+ }
1472
+ }
1391
1473
  }
1392
1474
 
1393
1475
  return React__default.createElement("g", {
@@ -1399,6 +1481,8 @@ var GridBody = function GridBody(_ref) {
1399
1481
  }, rowLines), React__default.createElement("g", {
1400
1482
  className: "offdays"
1401
1483
  }, offDayRects), React__default.createElement("g", {
1484
+ className: "rowOverlays"
1485
+ }, rowOverlays), React__default.createElement("g", {
1402
1486
  className: "ticks"
1403
1487
  }, tickLines), React__default.createElement("g", {
1404
1488
  className: "today"
@@ -3733,8 +3817,6 @@ var HorizontalScroll = function HorizontalScroll(_ref) {
3733
3817
  };
3734
3818
 
3735
3819
  var Gantt = function Gantt(_ref) {
3736
- var _tasks$find$calender, _tasks$find;
3737
-
3738
3820
  var tasks = _ref.tasks,
3739
3821
  _ref$leafTasks = _ref.leafTasks,
3740
3822
  leafTasks = _ref$leafTasks === void 0 ? [] : _ref$leafTasks,
@@ -3825,9 +3907,6 @@ var Gantt = function Gantt(_ref) {
3825
3907
  projectCalendar = _ref.projectCalendar,
3826
3908
  onCalendarError = _ref.onCalendarError,
3827
3909
  sliderTime = _ref.sliderTime;
3828
- var effectiveCalendar = (_tasks$find$calender = (_tasks$find = tasks.find(function (t) {
3829
- return t.calender;
3830
- })) === null || _tasks$find === void 0 ? void 0 : _tasks$find.calender) != null ? _tasks$find$calender : projectCalendar;
3831
3910
  var wrapperRef = React.useRef(null);
3832
3911
  var taskListRef = React.useRef(null);
3833
3912
  var isDraggingTable = React.useRef(false);
@@ -3840,6 +3919,7 @@ var Gantt = function Gantt(_ref) {
3840
3919
  setTableContainerWidth = _useState[1];
3841
3920
 
3842
3921
  var tableInnerScrollRef = React.useRef(null);
3922
+ var tableHorizontalContainerRef = React.useRef(null);
3843
3923
  var tableHScrollRef = React.useRef(null);
3844
3924
 
3845
3925
  var _useState2 = React.useState(0),
@@ -3875,18 +3955,20 @@ var Gantt = function Gantt(_ref) {
3875
3955
  setTaskListWidth = _useState5[1];
3876
3956
 
3877
3957
  React.useEffect(function () {
3878
- if (tableInnerScrollRef.current) {
3958
+ if (tableHorizontalContainerRef.current) {
3959
+ setTableScrollableWidth(tableHorizontalContainerRef.current.scrollWidth);
3960
+ } else if (tableInnerScrollRef.current) {
3879
3961
  setTableScrollableWidth(tableInnerScrollRef.current.scrollWidth);
3880
3962
  }
3881
3963
  }, [taskListWidth, listCellWidth]);
3882
3964
 
3883
3965
  var handleTableResizeMouseDown = function handleTableResizeMouseDown(e) {
3884
- var _taskListRef$current$, _taskListRef$current, _tableInnerScrollRef$, _tableInnerScrollRef$2, _wrapperRef$current$o, _wrapperRef$current;
3966
+ var _taskListRef$current$, _taskListRef$current, _ref2, _tableHorizontalConta, _tableHorizontalConta2, _tableInnerScrollRef$, _wrapperRef$current$o, _wrapperRef$current;
3885
3967
 
3886
3968
  isDraggingTable.current = true;
3887
3969
  dragStartX.current = e.clientX;
3888
3970
  dragStartWidth.current = tableContainerWidth != null ? tableContainerWidth : (_taskListRef$current$ = (_taskListRef$current = taskListRef.current) === null || _taskListRef$current === void 0 ? void 0 : _taskListRef$current.offsetWidth) != null ? _taskListRef$current$ : 0;
3889
- dragMaxWidth.current = (_tableInnerScrollRef$ = (_tableInnerScrollRef$2 = tableInnerScrollRef.current) === null || _tableInnerScrollRef$2 === void 0 ? void 0 : _tableInnerScrollRef$2.scrollWidth) != null ? _tableInnerScrollRef$ : Math.max(100, ((_wrapperRef$current$o = (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.offsetWidth) != null ? _wrapperRef$current$o : Infinity) - 200);
3971
+ dragMaxWidth.current = (_ref2 = (_tableHorizontalConta = (_tableHorizontalConta2 = tableHorizontalContainerRef.current) === null || _tableHorizontalConta2 === void 0 ? void 0 : _tableHorizontalConta2.scrollWidth) != null ? _tableHorizontalConta : (_tableInnerScrollRef$ = tableInnerScrollRef.current) === null || _tableInnerScrollRef$ === void 0 ? void 0 : _tableInnerScrollRef$.scrollWidth) != null ? _ref2 : Math.max(100, ((_wrapperRef$current$o = (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.offsetWidth) != null ? _wrapperRef$current$o : Infinity) - 200);
3890
3972
  e.preventDefault();
3891
3973
  };
3892
3974
 
@@ -4004,13 +4086,13 @@ var Gantt = function Gantt(_ref) {
4004
4086
  }
4005
4087
 
4006
4088
  debounceRef.current = setTimeout(function () {
4007
- var _effectiveCalendar$qu;
4089
+ var _projectCalendar$quar;
4008
4090
 
4009
4091
  var filteredTasks;
4010
4092
  filteredTasks = removeHiddenTasks(tasks);
4011
4093
  filteredTasks = filteredTasks.sort(sortTasks);
4012
4094
 
4013
- var _ganttDateRange2 = ganttDateRange(filteredTasks, viewMode, preStepsCount, (_effectiveCalendar$qu = effectiveCalendar === null || effectiveCalendar === void 0 ? void 0 : effectiveCalendar.quarter_start) != null ? _effectiveCalendar$qu : 0),
4095
+ var _ganttDateRange2 = ganttDateRange(filteredTasks, viewMode, preStepsCount, (_projectCalendar$quar = projectCalendar === null || projectCalendar === void 0 ? void 0 : projectCalendar.quarter_start) != null ? _projectCalendar$quar : 0),
4014
4096
  startDateRange = _ganttDateRange2[0],
4015
4097
  endDateRange = _ganttDateRange2[1];
4016
4098
 
@@ -4049,7 +4131,7 @@ var Gantt = function Gantt(_ref) {
4049
4131
  setBarTasks(convertToBarTasks(filteredTasks, newDates, effectiveColumnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor));
4050
4132
  setIsProcessing(false);
4051
4133
  }, delayToRender);
4052
- }, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl, shouldNotShowLoadingOverlay, effectiveColumnWidth, effectiveCalendar]);
4134
+ }, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl, shouldNotShowLoadingOverlay, effectiveColumnWidth, projectCalendar]);
4053
4135
  React.useEffect(function () {
4054
4136
  return function () {
4055
4137
  clearTimeout(debounceRef.current);
@@ -4321,7 +4403,7 @@ var Gantt = function Gantt(_ref) {
4321
4403
  rtl: rtl,
4322
4404
  visibleStartY: visibleStartY,
4323
4405
  visibleEndY: visibleEndY,
4324
- projectCalendar: effectiveCalendar,
4406
+ projectCalendar: projectCalendar,
4325
4407
  viewMode: viewMode
4326
4408
  };
4327
4409
  var calendarProps = {
@@ -4333,7 +4415,7 @@ var Gantt = function Gantt(_ref) {
4333
4415
  fontFamily: fontFamily,
4334
4416
  fontSize: fontSize,
4335
4417
  rtl: rtl,
4336
- projectCalendar: effectiveCalendar
4418
+ projectCalendar: projectCalendar
4337
4419
  };
4338
4420
  var barProps = {
4339
4421
  tasks: barTasks,
@@ -4360,7 +4442,7 @@ var Gantt = function Gantt(_ref) {
4360
4442
  onClick: onClick,
4361
4443
  onDelete: onDelete,
4362
4444
  onCalendarError: onCalendarError,
4363
- projectCalendar: effectiveCalendar,
4445
+ projectCalendar: projectCalendar,
4364
4446
  visibleStartY: visibleStartY,
4365
4447
  visibleEndY: visibleEndY,
4366
4448
  sliderTime: sliderTime
@@ -4393,7 +4475,8 @@ var Gantt = function Gantt(_ref) {
4393
4475
  taskLabelRenderer: taskLabelRenderer,
4394
4476
  onMultiSelect: onMultiSelect,
4395
4477
  containerWidth: tableContainerWidth != null ? tableContainerWidth : undefined,
4396
- innerScrollRef: tableInnerScrollRef
4478
+ innerScrollRef: tableInnerScrollRef,
4479
+ horizontalContainerRef: tableHorizontalContainerRef
4397
4480
  };
4398
4481
  return React__default.createElement("div", {
4399
4482
  style: {
@@ -4489,8 +4572,8 @@ var Gantt = function Gantt(_ref) {
4489
4572
  flexShrink: 0
4490
4573
  },
4491
4574
  onScroll: function onScroll(e) {
4492
- if (tableInnerScrollRef.current) {
4493
- tableInnerScrollRef.current.scrollLeft = e.currentTarget.scrollLeft;
4575
+ if (tableHorizontalContainerRef.current) {
4576
+ tableHorizontalContainerRef.current.scrollLeft = e.currentTarget.scrollLeft;
4494
4577
  }
4495
4578
  }
4496
4579
  }, React__default.createElement("div", {