@syncfusion/ej2-gantt 20.3.60 → 20.4.38

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.
Files changed (105) hide show
  1. package/.eslintrc.json +16 -1
  2. package/CHANGELOG.md +14 -0
  3. package/dist/ej2-gantt.min.js +2 -2
  4. package/dist/ej2-gantt.umd.min.js +2 -2
  5. package/dist/ej2-gantt.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-gantt.es2015.js +1422 -476
  7. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  8. package/dist/es6/ej2-gantt.es5.js +1448 -484
  9. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  10. package/dist/global/ej2-gantt.min.js +2 -2
  11. package/dist/global/ej2-gantt.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/package.json +19 -18
  14. package/src/gantt/actions/chart-scroll.d.ts +5 -1
  15. package/src/gantt/actions/chart-scroll.js +39 -1
  16. package/src/gantt/actions/connector-line-edit.js +2 -0
  17. package/src/gantt/actions/context-menu.js +36 -5
  18. package/src/gantt/actions/critical-path.d.ts +2 -2
  19. package/src/gantt/actions/critical-path.js +23 -16
  20. package/src/gantt/actions/dialog-edit.js +37 -14
  21. package/src/gantt/actions/edit.d.ts +1 -0
  22. package/src/gantt/actions/edit.js +156 -34
  23. package/src/gantt/actions/excel-export.js +13 -0
  24. package/src/gantt/actions/filter.js +3 -0
  25. package/src/gantt/actions/keyboard.js +1 -0
  26. package/src/gantt/actions/pdf-export.js +12 -0
  27. package/src/gantt/actions/rowdragdrop.js +8 -2
  28. package/src/gantt/actions/taskbar-edit.js +140 -43
  29. package/src/gantt/actions/toolbar.js +21 -1
  30. package/src/gantt/base/date-processor.js +5 -1
  31. package/src/gantt/base/gantt-chart.js +38 -4
  32. package/src/gantt/base/gantt-model.d.ts +25 -2
  33. package/src/gantt/base/gantt.d.ts +64 -21
  34. package/src/gantt/base/gantt.js +396 -26
  35. package/src/gantt/base/interface.d.ts +0 -4
  36. package/src/gantt/base/splitter.js +12 -2
  37. package/src/gantt/base/task-processor.js +4 -3
  38. package/src/gantt/base/tree-grid.js +37 -0
  39. package/src/gantt/base/utils.js +1 -0
  40. package/src/gantt/export/pdf-connector-line.js +185 -187
  41. package/src/gantt/models/loading-indicator-model.d.ts +20 -0
  42. package/src/gantt/models/loading-indicator.d.ts +18 -0
  43. package/src/gantt/models/loading-indicator.js +34 -0
  44. package/src/gantt/models/models.d.ts +2 -0
  45. package/src/gantt/models/models.js +1 -0
  46. package/src/gantt/renderer/chart-rows.js +75 -30
  47. package/src/gantt/renderer/connector-line.js +100 -97
  48. package/src/gantt/renderer/edit-tooltip.js +22 -3
  49. package/src/gantt/renderer/event-marker.js +15 -2
  50. package/src/gantt/renderer/nonworking-day.js +4 -2
  51. package/src/gantt/renderer/timeline.js +21 -1
  52. package/src/gantt/renderer/tooltip.js +1 -0
  53. package/styles/bootstrap-dark.css +179 -12
  54. package/styles/bootstrap.css +179 -12
  55. package/styles/bootstrap4.css +178 -10
  56. package/styles/bootstrap5-dark.css +178 -10
  57. package/styles/bootstrap5.css +178 -10
  58. package/styles/fabric-dark.css +179 -12
  59. package/styles/fabric.css +179 -12
  60. package/styles/fluent-dark.css +180 -10
  61. package/styles/fluent.css +180 -10
  62. package/styles/gantt/_bootstrap-dark-definition.scss +6 -2
  63. package/styles/gantt/_bootstrap-definition.scss +6 -3
  64. package/styles/gantt/_bootstrap4-definition.scss +6 -3
  65. package/styles/gantt/_bootstrap5-definition.scss +6 -3
  66. package/styles/gantt/_fabric-dark-definition.scss +6 -3
  67. package/styles/gantt/_fabric-definition.scss +6 -3
  68. package/styles/gantt/_fluent-definition.scss +6 -3
  69. package/styles/gantt/_fusionnew-definition.scss +6 -3
  70. package/styles/gantt/_highcontrast-definition.scss +7 -4
  71. package/styles/gantt/_highcontrast-light-definition.scss +6 -3
  72. package/styles/gantt/_layout.scss +234 -21
  73. package/styles/gantt/_material-dark-definition.scss +6 -3
  74. package/styles/gantt/_material-definition.scss +6 -3
  75. package/styles/gantt/_material3-definition.scss +6 -3
  76. package/styles/gantt/_tailwind-definition.scss +6 -3
  77. package/styles/gantt/_theme.scss +17 -8
  78. package/styles/gantt/bootstrap-dark.css +179 -12
  79. package/styles/gantt/bootstrap.css +179 -12
  80. package/styles/gantt/bootstrap4.css +178 -10
  81. package/styles/gantt/bootstrap5-dark.css +178 -10
  82. package/styles/gantt/bootstrap5.css +178 -10
  83. package/styles/gantt/fabric-dark.css +179 -12
  84. package/styles/gantt/fabric.css +179 -12
  85. package/styles/gantt/fluent-dark.css +180 -10
  86. package/styles/gantt/fluent.css +180 -10
  87. package/styles/gantt/highcontrast-light.css +178 -10
  88. package/styles/gantt/highcontrast.css +179 -12
  89. package/styles/gantt/icons/_bootstrap-dark.scss +1 -1
  90. package/styles/gantt/icons/_bootstrap.scss +1 -1
  91. package/styles/gantt/icons/_fabric-dark.scss +1 -1
  92. package/styles/gantt/icons/_fabric.scss +1 -1
  93. package/styles/gantt/icons/_highcontrast.scss +1 -1
  94. package/styles/gantt/icons/_material-dark.scss +1 -1
  95. package/styles/gantt/icons/_material.scss +1 -1
  96. package/styles/gantt/material-dark.css +177 -12
  97. package/styles/gantt/material.css +179 -12
  98. package/styles/gantt/tailwind-dark.css +178 -10
  99. package/styles/gantt/tailwind.css +178 -10
  100. package/styles/highcontrast-light.css +178 -10
  101. package/styles/highcontrast.css +179 -12
  102. package/styles/material-dark.css +177 -12
  103. package/styles/material.css +179 -12
  104. package/styles/tailwind-dark.css +178 -10
  105. package/styles/tailwind.css +178 -10
@@ -439,8 +439,14 @@ var TaskbarEdit = /** @class */ (function (_super) {
439
439
  var e = this.getCoordinate(event);
440
440
  if (e.pageX || e.pageY) {
441
441
  var containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
442
- this.mouseDownX = (e.pageX - containerPosition.left) +
443
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
442
+ if (this.parent.enableRtl) {
443
+ this.mouseDownX = Math.abs(e.pageX - (containerPosition.left +
444
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));
445
+ }
446
+ else {
447
+ this.mouseDownX = (e.pageX - containerPosition.left) +
448
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
449
+ }
444
450
  this.tooltipPositionX = this.mouseDownX;
445
451
  this.mouseDownY = e.pageY - containerPosition.top +
446
452
  this.parent.ganttChartModule.scrollObject.previousScroll.top;
@@ -485,23 +491,40 @@ var TaskbarEdit = /** @class */ (function (_super) {
485
491
  }
486
492
  var containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
487
493
  var e = this.getCoordinate(event);
488
- this.mouseMoveX = e.pageX - containerPosition.left +
489
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
494
+ if (this.parent.enableRtl) {
495
+ this.mouseMoveX = Math.abs(e.pageX - (containerPosition.left +
496
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));
497
+ }
498
+ else {
499
+ this.mouseMoveX = e.pageX - containerPosition.left +
500
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
501
+ }
490
502
  this.mouseMoveY = e.pageY - containerPosition.top +
491
503
  this.parent.ganttChartModule.scrollObject.previousScroll.top;
492
504
  this.dragMouseLeave = false;
493
505
  this.isMouseDragCheck();
494
506
  if (this.isMouseDragged && this.taskBarEditAction) {
495
- var args = {
507
+ var args_1 = {
496
508
  cancel: false,
497
509
  requestType: 'taskbarediting',
498
510
  taskBarEditAction: this.taskBarEditAction,
499
511
  data: this.taskBarEditRecord
500
512
  };
501
513
  if (this.segmentIndex !== -1) {
502
- args.requestType = 'mergeSegment';
514
+ args_1.requestType = 'mergeSegment';
503
515
  }
504
- this.parent.trigger('actionBegin', args, function (arg) {
516
+ this.parent.trigger('actionBegin', args_1, function (arg) {
517
+ if (args_1.taskBarEditAction === "ConnectorPointRightDrag" || args_1.taskBarEditAction === "ConnectorPointLeftDrag"
518
+ || args_1.taskBarEditAction === "LeftResizing" || args_1.taskBarEditAction === "RightResizing"
519
+ || args_1.taskBarEditAction === "ProgressResizing" || args_1.taskBarEditAction === "ChildDrag" || args_1.taskBarEditAction === "ParentDrag" || args_1.taskBarEditAction === "MilestoneDrag" || args_1.taskBarEditAction === "ManualParentDrag") {
520
+ _this.parent.showIndicator = false;
521
+ }
522
+ if (!isNullOrUndefined(_this.parent.loadingIndicator) && _this.parent.loadingIndicator.indicatorType === "Shimmer" && _this.parent.showIndicator) {
523
+ _this.parent.showMaskRow();
524
+ }
525
+ else if (_this.parent.showIndicator) {
526
+ _this.parent.showSpinner();
527
+ }
505
528
  if (arg.cancel === false) {
506
529
  _this.taskBarEditingAction(event, false);
507
530
  }
@@ -584,8 +607,14 @@ var TaskbarEdit = /** @class */ (function (_super) {
584
607
  var containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
585
608
  var e = this.getCoordinate(event);
586
609
  if (e.pageX || e.pageY) {
587
- this.mouseMoveX = e.pageX - containerPosition.left +
588
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
610
+ if (this.parent.enableRtl) {
611
+ this.mouseMoveX = Math.abs(e.pageX - (containerPosition.left +
612
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left)));
613
+ }
614
+ else {
615
+ this.mouseMoveX = e.pageX - containerPosition.left +
616
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
617
+ }
589
618
  this.tooltipPositionX = this.mouseMoveX;
590
619
  this.mouseMoveY = e.pageY - containerPosition.top +
591
620
  this.parent.ganttChartModule.scrollObject.previousScroll.top;
@@ -596,8 +625,15 @@ var TaskbarEdit = /** @class */ (function (_super) {
596
625
  if ((this.taskBarEditRecord.ganttProperties.width > 3 && !(this.taskBarEditAction === 'ProgressResizing' &&
597
626
  (this.taskBarEditRecord.ganttProperties.progress === 0 || this.taskBarEditRecord.ganttProperties.progress === 100))) ||
598
627
  isConnectorLineEdit) {
599
- var mouseX = this.mouseMoveX - this.parent.ganttChartModule.scrollObject.previousScroll.left +
600
- containerPosition.left;
628
+ var mouseX = 0;
629
+ if (this.parent.enableRtl) {
630
+ mouseX = Math.abs(Math.abs(this.mouseMoveX) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left) +
631
+ containerPosition.left);
632
+ }
633
+ else {
634
+ mouseX = this.mouseMoveX - this.parent.ganttChartModule.scrollObject.previousScroll.left +
635
+ containerPosition.left;
636
+ }
601
637
  var mouseY = this.mouseMoveY - this.parent.ganttChartModule.scrollObject.previousScroll.top +
602
638
  containerPosition.top;
603
639
  if ((mouseX + 20) >
@@ -605,6 +641,12 @@ var TaskbarEdit = /** @class */ (function (_super) {
605
641
  this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;
606
642
  this.startScrollTimer('right');
607
643
  }
644
+ else if ((mouseX + 40) >
645
+ containerPosition.left + this.parent.ganttChartModule.chartBodyContainer.offsetWidth && this.parent.enableRtl && this.parent.ganttChartModule.scrollObject.previousScroll.left == 0) {
646
+ this.parent.ganttChartModule.scrollObject.previousScroll.left = -1;
647
+ this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;
648
+ this.startScrollTimer('right');
649
+ }
608
650
  else if ((mouseX - 20) < containerPosition.left) {
609
651
  this.timerCount = this.parent.ganttChartModule.scrollObject.previousScroll.left;
610
652
  this.startScrollTimer('left');
@@ -636,7 +678,12 @@ var TaskbarEdit = /** @class */ (function (_super) {
636
678
  TaskbarEdit.prototype.startScrollTimer = function (direction) {
637
679
  var _this = this;
638
680
  this.stopScrollTimer();
681
+ var leftSign = 0;
639
682
  this.scrollTimer = window.setInterval(function () {
683
+ if (Math.sign(_this.timerCount) == -1) {
684
+ leftSign = -1;
685
+ _this.timerCount = Math.abs(_this.timerCount);
686
+ }
640
687
  if (direction === 'right') {
641
688
  _this.timerCount = (_this.timerCount + 1) >= _this.parent.timelineModule.totalTimelineWidth ?
642
689
  _this.parent.timelineModule.totalTimelineWidth : (_this.timerCount + 1);
@@ -651,7 +698,7 @@ var TaskbarEdit = /** @class */ (function (_super) {
651
698
  _this.parent.ganttChartModule.scrollObject.setScrollTop(_this.timerCount);
652
699
  }
653
700
  else {
654
- _this.parent.ganttChartModule.scrollObject.setScrollLeft(_this.timerCount);
701
+ _this.parent.ganttChartModule.scrollObject.setScrollLeft(_this.timerCount, leftSign);
655
702
  }
656
703
  if (_this.taskBarEditAction === 'ConnectorPointLeftDrag'
657
704
  || _this.taskBarEditAction === 'ConnectorPointRightDrag') {
@@ -1347,6 +1394,7 @@ var TaskbarEdit = /** @class */ (function (_super) {
1347
1394
  */
1348
1395
  TaskbarEdit.prototype.setItemPosition = function () {
1349
1396
  var item = this.taskBarEditRecord.ganttProperties;
1397
+ var position = this.parent.enableRtl ? "right" : "left";
1350
1398
  var segment = !isNullOrUndefined(item.segments) ? item.segments[this.segmentIndex] : null;
1351
1399
  var width = this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone ?
1352
1400
  this.parent.chartRowsModule.milestoneHeight : item.width;
@@ -1378,11 +1426,16 @@ var TaskbarEdit = /** @class */ (function (_super) {
1378
1426
  if (segmentedTaskBarContainer && !isNullOrUndefined(item.segments)
1379
1427
  && (this.taskBarEditAction === 'RightResizing' || this.segmentIndex !== 0)) {
1380
1428
  this.taskBarEditElement.style.width = (segment.width) + 'px';
1381
- this.taskBarEditElement.style.left = (segment.left) + 'px';
1429
+ if (this.parent.enableRtl) {
1430
+ this.taskBarEditElement.style.right = (segment.left) + 'px';
1431
+ }
1432
+ else {
1433
+ this.taskBarEditElement.style.left = (segment.left) + 'px';
1434
+ }
1382
1435
  }
1383
1436
  taskBarMainContainer.style.width = (width) + 'px';
1384
- taskBarMainContainer.style.left = (item.left) + 'px';
1385
1437
  leftLabelContainer.style.width = (item.left) + 'px';
1438
+ taskBarMainContainer.style.setProperty(position, (item.left) + 'px');
1386
1439
  if (this.taskBarEditAction === 'LeftResizing' && this.segmentIndex === 0) {
1387
1440
  var parent_1 = this.taskBarEditElement.parentElement;
1388
1441
  var segmentedTasks = parent_1.getElementsByClassName('e-segmented-taskbar');
@@ -1390,31 +1443,42 @@ var TaskbarEdit = /** @class */ (function (_super) {
1390
1443
  var segment_4 = item.segments[i];
1391
1444
  var segmentElement = segmentedTasks[i];
1392
1445
  segmentElement.style.width = (segment_4.width) + 'px';
1393
- segmentElement.style.left = (segment_4.left) + 'px';
1446
+ if (this.parent.enableRtl) {
1447
+ segmentElement.style.right = (segment_4.left) + 'px';
1448
+ }
1449
+ else {
1450
+ segmentElement.style.left = (segment_4.left) + 'px';
1451
+ }
1394
1452
  }
1395
1453
  }
1396
1454
  if (!isNullOrUndefined(rightLabelContainer)) {
1397
- rightLabelContainer.style.left = (item.left + width) + 'px';
1455
+ rightLabelContainer.style.setProperty(position, (item.left + width) + 'px');
1398
1456
  }
1399
1457
  }
1400
1458
  if (traceConnectorPointRight) {
1401
- traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width + 2)) + 'px';
1459
+ if (this.parent.enableRtl) {
1460
+ traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width - 2)) + 'px';
1461
+ }
1462
+ else {
1463
+ traceConnectorPointRight.style.left = (this.parent.isAdaptive ? (width + 10) : (width + 2)) + 'px';
1464
+ }
1402
1465
  }
1403
1466
  if (this.taskBarEditAction === 'MilestoneDrag' || item.isMilestone) {
1404
- taskBarMainContainer.style.left = (item.left - (width / 2)) + 'px';
1467
+ taskBarMainContainer.style.setProperty(position, (item.left - (width / 2)) + 'px');
1405
1468
  leftLabelContainer.style.width = (item.left - (width / 2)) + 'px';
1406
1469
  if (!isNullOrUndefined(rightLabelContainer)) {
1407
- rightLabelContainer.style.left = (item.left + (width / 2)) + 'px';
1470
+ rightLabelContainer.style.setProperty(position, (item.left + (width / 2)) + 'px');
1408
1471
  }
1409
1472
  }
1410
1473
  else if (this.taskBarEditAction === 'ProgressResizing') {
1411
1474
  if (this.segmentIndex === -1) {
1412
- traceChildTaskBar.style.left = (item.left + item.progressWidth - 10) + 'px';
1475
+ traceChildTaskBar.style.setProperty(position, (item.left + item.progressWidth - 10) + 'px');
1413
1476
  if (!isNullOrUndefined(traceChildProgressBar)) {
1414
1477
  traceChildProgressBar.style.width = item.progressWidth + 'px';
1415
1478
  traceChildProgressBar.style.borderBottomRightRadius = this.progressBorderRadius + 'px';
1416
1479
  traceChildProgressBar.style.borderTopRightRadius = this.progressBorderRadius + 'px';
1417
- childProgressResizer.style.left = item.progressWidth - 8 + 'px';
1480
+ var width_1 = this.parent.enableRtl ? item.progressWidth + 8 : item.progressWidth - 8;
1481
+ childProgressResizer.style.setProperty(position, width_1 + 'px');
1418
1482
  }
1419
1483
  }
1420
1484
  else {
@@ -1422,16 +1486,17 @@ var TaskbarEdit = /** @class */ (function (_super) {
1422
1486
  traceChildProgressBar.style.width = item.segments[this.segmentIndex].progressWidth + 'px';
1423
1487
  traceChildProgressBar.style.borderBottomRightRadius = this.progressBorderRadius + 'px';
1424
1488
  traceChildProgressBar.style.borderTopRightRadius = this.progressBorderRadius + 'px';
1425
- childProgressResizer.style.left = item.segments[this.segmentIndex].progressWidth - 8 + 'px';
1489
+ var width_2 = this.parent.enableRtl ? item.segments[this.segmentIndex].progressWidth + 8 : item.segments[this.segmentIndex].progressWidth - 8;
1490
+ childProgressResizer.style.setProperty(position, width_2 + 'px');
1426
1491
  }
1427
1492
  }
1428
1493
  else if (this.taskBarEditAction === 'RightResizing' && !isNullOrUndefined(traceChildTaskBar)) {
1429
1494
  traceChildTaskBar.style.width = (width) + 'px';
1430
1495
  if (!isNullOrUndefined(traceChildProgressBar)) {
1431
1496
  traceChildProgressBar.style.width = (item.progressWidth) + 'px';
1432
- taskBarRightResizer.style.left = rightResizer + 'px';
1497
+ taskBarRightResizer.style.setProperty(position, rightResizer + 'px');
1433
1498
  if (!isNullOrUndefined(childProgressResizer)) {
1434
- childProgressResizer.style.left = (item.progressWidth - 10) + 'px';
1499
+ childProgressResizer.style.setProperty(position, item.progressWidth - 10 + 'px');
1435
1500
  }
1436
1501
  }
1437
1502
  }
@@ -1445,27 +1510,27 @@ var TaskbarEdit = /** @class */ (function (_super) {
1445
1510
  }
1446
1511
  else if (this.taskBarEditAction === 'ParentResizing') {
1447
1512
  manualParentTaskbar.style.width = manualTaskbar.style.width = (item.width) + 'px';
1448
- manualParentRight.style.left = (item.width - manualParentLeft.offsetLeft) + 'px';
1513
+ manualParentRight.style.setProperty(position, item.width - manualParentLeft.offsetLeft + 'px');
1449
1514
  }
1450
1515
  else if (this.taskBarEditAction === 'ManualParentDrag') {
1451
- manualParentTaskbar.style.left = (item.left - item.autoLeft) + 'px';
1516
+ manualParentTaskbar.style.setProperty(position, item.left - item.autoLeft + 'px');
1452
1517
  }
1453
1518
  else {
1454
1519
  if (!isNullOrUndefined(traceChildTaskBar) && !segmentedTaskBarContainer) {
1455
1520
  traceChildTaskBar.style.width = (width) + 'px';
1456
1521
  }
1457
1522
  if (!isNullOrUndefined(traceChildProgressBar)) {
1458
- taskBarRightResizer.style.left = rightResizer + 'px';
1523
+ taskBarRightResizer.style.setProperty(position, rightResizer + 'px');
1459
1524
  traceChildProgressBar.style.width = (item.progressWidth) + 'px';
1460
1525
  if (!isNullOrUndefined(childProgressResizer)) {
1461
- childProgressResizer.style.left = item.progressWidth - 10 + 'px';
1526
+ childProgressResizer.style.setProperty(position, item.progressWidth - 10 + 'px');
1462
1527
  }
1463
1528
  }
1464
1529
  if (segmentedTaskBarContainer) {
1465
- taskBarRightResizer.style.left = rightResizer + 'px';
1530
+ taskBarRightResizer.style.setProperty(position, rightResizer + 'px');
1466
1531
  traceChildProgressBar.style.width = (segment.progressWidth) + 'px';
1467
1532
  if (!isNullOrUndefined(childProgressResizer)) {
1468
- childProgressResizer.style.left = segment.progressWidth - 10 + 'px';
1533
+ childProgressResizer.style.setProperty(position, segment.progressWidth - 10 + 'px');
1469
1534
  }
1470
1535
  }
1471
1536
  }
@@ -1687,25 +1752,51 @@ var TaskbarEdit = /** @class */ (function (_super) {
1687
1752
  var y2 = this.mouseMoveY;
1688
1753
  var length = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
1689
1754
  var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI;
1690
- var transform = 'rotate(' + angle + 'deg)';
1755
+ var transform = 'rotate(' + (this.parent.enableRtl ? -angle : angle) + 'deg)';
1691
1756
  var left;
1757
+ var width = 0;
1758
+ if (!isNullOrUndefined(document.querySelectorAll(".e-chart-row")[0])) {
1759
+ width = document.querySelectorAll(".e-chart-row")[0].offsetWidth;
1760
+ }
1692
1761
  if (this.taskBarEditAction === 'ConnectorPointLeftDrag') {
1693
- left = (this.elementOffsetLeft - (this.parent.chartRowsModule.connectorPointWidth / 2)) -
1694
- this.parent.ganttChartModule.scrollObject.previousScroll.left;
1762
+ if (this.parent.enableRtl) {
1763
+ left = ((width - (this.elementOffsetLeft + (this.parent.chartRowsModule.connectorPointWidth / 2)))) -
1764
+ Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);
1765
+ }
1766
+ else {
1767
+ left = (this.elementOffsetLeft - (this.parent.chartRowsModule.connectorPointWidth / 2)) -
1768
+ this.parent.ganttChartModule.scrollObject.previousScroll.left;
1769
+ }
1695
1770
  }
1696
1771
  if (this.taskBarEditAction === 'ConnectorPointRightDrag') {
1697
- left = (this.elementOffsetLeft + this.elementOffsetWidth) +
1698
- (this.parent.chartRowsModule.connectorPointWidth / 2) - this.parent.ganttChartModule.scrollObject.previousScroll.left;
1772
+ if (this.parent.enableRtl) {
1773
+ left = (width - (this.elementOffsetLeft + this.elementOffsetWidth +
1774
+ (this.parent.chartRowsModule.connectorPointWidth / 2))) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);
1775
+ }
1776
+ else {
1777
+ left = (this.elementOffsetLeft + this.elementOffsetWidth) +
1778
+ (this.parent.chartRowsModule.connectorPointWidth / 2) - Math.abs(this.parent.ganttChartModule.scrollObject.previousScroll.left);
1779
+ }
1699
1780
  }
1700
1781
  var top = ((this.elementOffsetTop) + (this.elementOffsetHeight / 2) +
1701
1782
  this.parent.ganttChartModule.chartBodyContainer.offsetTop) - this.parent.ganttChartModule.scrollObject.previousScroll.top;
1702
1783
  this.removeFalseLine(false);
1703
1784
  this.falseLine = createElement('div', {
1704
1785
  className: cls.falseLine, id: 'ganttfalseline' + this.parent.element.id,
1705
- styles: 'transform-origin: 0% 100%;right: auto;position: absolute;transform:' + transform + ';' +
1786
+ styles: 'position: absolute;transform:' + transform + ';' +
1706
1787
  'border-top-width: 1px;border-top-style: dashed;z-index: 5;width:' + (length - 3) + 'px;' +
1707
- 'left:' + left + 'px;top:' + top + 'px;'
1788
+ 'top:' + top + 'px;'
1708
1789
  });
1790
+ if (this.parent.enableRtl) {
1791
+ this.falseLine.style.left = 'auto';
1792
+ this.falseLine.style.right = left + 'px';
1793
+ this.falseLine.style.transformOrigin = '100% 0%';
1794
+ }
1795
+ else {
1796
+ this.falseLine.style.right = 'auto';
1797
+ this.falseLine.style.left = left + 'px';
1798
+ this.falseLine.style.transformOrigin = '0% 100%';
1799
+ }
1709
1800
  this.parent.ganttChartModule.chartBodyContainer.appendChild(this.falseLine);
1710
1801
  };
1711
1802
  /**
@@ -1790,19 +1881,19 @@ var TaskbarEdit = /** @class */ (function (_super) {
1790
1881
  var element = target;
1791
1882
  var uniqueId = this.parent.viewType === 'ResourceView' ? fromItem.taskId : fromItem.rowUniqueID;
1792
1883
  if (this.taskBarEditAction === 'ConnectorPointLeftDrag') {
1793
- predecessor = uniqueId + 'S';
1884
+ predecessor = uniqueId + (this.parent.enableRtl ? 'F' : 'S');
1794
1885
  }
1795
1886
  else if (this.taskBarEditAction === 'ConnectorPointRightDrag') {
1796
- predecessor = uniqueId + 'F';
1887
+ predecessor = uniqueId + (this.parent.enableRtl ? 'S' : 'F');
1797
1888
  }
1798
1889
  if (this.connectorSecondAction) {
1799
1890
  if (this.connectorSecondAction === 'ConnectorPointLeftDrag') {
1800
- predecessor += 'S';
1801
- currentTarget = 'start';
1891
+ predecessor += this.parent.enableRtl ? 'F' : 'S';
1892
+ currentTarget = this.parent.enableRtl ? 'finish' : 'start';
1802
1893
  }
1803
1894
  else if (this.connectorSecondAction === 'ConnectorPointRightDrag') {
1804
- predecessor += 'F';
1805
- currentTarget = 'finish';
1895
+ predecessor += this.parent.enableRtl ? 'S' : 'F';
1896
+ currentTarget = this.parent.enableRtl ? 'start' : 'finish';
1806
1897
  }
1807
1898
  }
1808
1899
  if (isNullOrUndefined(toItem)) {
@@ -1826,6 +1917,12 @@ var TaskbarEdit = /** @class */ (function (_super) {
1826
1917
  args.isValidLink = isValidLink;
1827
1918
  args.requestType = 'ValidateDependency';
1828
1919
  this.parent.trigger('actionBegin', args);
1920
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer" && args.requestType != "ValidateDependency") {
1921
+ this.parent.showMaskRow();
1922
+ }
1923
+ else if (args.requestType != "ValidateDependency") {
1924
+ this.parent.showSpinner();
1925
+ }
1829
1926
  args.isValidLink = !isValidLink && args.isValidLink ? false : args.isValidLink;
1830
1927
  if (args.isValidLink) {
1831
1928
  if (!this.editTooltip.toolTipObj && !this.parent.isAdaptive) {
@@ -54,6 +54,14 @@ var Toolbar = /** @class */ (function () {
54
54
  this.parent.localeObj.getConstant('tasks') : ''),
55
55
  align: this.parent.isAdaptive ? 'Right' : 'Left'
56
56
  };
57
+ if (this.parent.enableRtl) {
58
+ if (item === 'PrevTimeSpan') {
59
+ this.predefinedItems[item].prefixIcon = 'e-nexttimespan';
60
+ }
61
+ if (item === 'NextTimeSpan') {
62
+ this.predefinedItems[item].prefixIcon = 'e-prevtimespan';
63
+ }
64
+ }
57
65
  }
58
66
  var searchLocalText = this.parent.localeObj.getConstant('search');
59
67
  if (this.parent.isAdaptive) {
@@ -85,6 +93,7 @@ var Toolbar = /** @class */ (function () {
85
93
  var items = this.getItems();
86
94
  this.toolbar = new NavToolbar({
87
95
  items: items,
96
+ enableRtl: this.parent.enableRtl,
88
97
  clicked: this.toolbarClickHandler.bind(this),
89
98
  height: this.parent.isAdaptive ? 48 : 'auto'
90
99
  });
@@ -103,6 +112,7 @@ var Toolbar = /** @class */ (function () {
103
112
  this.searchElement = this.element.querySelector('#' + this.parent.element.id + '_searchbar');
104
113
  var textObj = new TextBox({
105
114
  placeholder: this.parent.localeObj.getConstant('search'),
115
+ enableRtl: this.parent.enableRtl,
106
116
  floatLabelType: 'Never',
107
117
  showClearButton: true
108
118
  });
@@ -221,7 +231,16 @@ var Toolbar = /** @class */ (function () {
221
231
  var _this = this;
222
232
  var gObj = this.parent;
223
233
  var gID = this.id;
234
+ this.parent.isToolBarClick = false;
224
235
  extend(arg, { cancel: false });
236
+ if (arg.item['properties'].id === this.parent.element.id + "_pdfexport" || arg.item['properties'].id === this.parent.element.id + "_critical-path") {
237
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
238
+ this.parent.showMaskRow();
239
+ }
240
+ else {
241
+ this.parent.showSpinner();
242
+ }
243
+ }
225
244
  gObj.trigger(events.toolbarClick, arg, function (args) {
226
245
  if (args.cancel) {
227
246
  return;
@@ -423,7 +442,8 @@ var Toolbar = /** @class */ (function () {
423
442
  else {
424
443
  disableItems.push(gID + '_update', gID + '_cancel');
425
444
  for (var t = 0; t < toolbarItems.length; t++) {
426
- if (enableItems.indexOf(toolbarItems[t].id) === -1 && disableItems.indexOf(toolbarItems[t].id) === -1) {
445
+ if (enableItems.indexOf(toolbarItems[t].id) === -1 &&
446
+ disableItems.indexOf(toolbarItems[t].id) === -1) {
427
447
  enableItems.push(toolbarItems[t].id);
428
448
  }
429
449
  }
@@ -212,6 +212,10 @@ var DateProcessor = /** @class */ (function () {
212
212
  }
213
213
  }
214
214
  }
215
+ if (ganttProp && ganttProp.baselineStartDate && cloneDate &&
216
+ ganttProp.baselineStartDate.getTime() > cloneDate.getTime()) {
217
+ cloneDate.setDate(cloneDate.getDate() + 1);
218
+ }
215
219
  return cloneDate;
216
220
  }
217
221
  };
@@ -282,7 +286,7 @@ var DateProcessor = /** @class */ (function () {
282
286
  tDuration = this.parent.editModule.taskbarEditModule.sumOfDuration(ganttProperties.segments);
283
287
  }
284
288
  else {
285
- if (!isNullOrUndefined(ganttProperties.startDate) && !isNullOrUndefined(ganttProperties.endDate) &&
289
+ if ((!isNullOrUndefined(this.parent.taskFields.milestone)) && (!isNullOrUndefined(ganttProperties.startDate)) && !isNullOrUndefined(ganttProperties.endDate) &&
286
290
  (ganttProperties.startDate).getTime() === (ganttProperties.endDate).getTime() && !isNullOrUndefined(ganttData.taskData[this.parent.taskFields.milestone])) {
287
291
  tDuration = 1;
288
292
  }
@@ -1,5 +1,5 @@
1
1
  import { createElement, formatUnit, EventHandler, Browser } from '@syncfusion/ej2-base';
2
- import { isNullOrUndefined, closest, addClass, removeClass, getValue } from '@syncfusion/ej2-base';
2
+ import { isNullOrUndefined, closest, addClass, removeClass, getValue, setValue } from '@syncfusion/ej2-base';
3
3
  import * as cls from '../base/css-constants';
4
4
  import { ChartScroll } from '../actions/chart-scroll';
5
5
  import { click } from '@syncfusion/ej2-grids';
@@ -93,6 +93,21 @@ var GanttChart = /** @class */ (function () {
93
93
  this.parent.predecessorModule.createConnectorLinesCollection();
94
94
  }
95
95
  this.parent.connectorLineModule.renderConnectorLines(this.parent.updatedConnectorLineCollection);
96
+ for (var i = 0; i < this.parent.chartRowsModule.ganttChartTableBody.children.length; i++) {
97
+ if (this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4]) {
98
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');
99
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[2].setAttribute('tabindex', '-1');
100
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[4].setAttribute('tabindex', '-1');
101
+ }
102
+ else {
103
+ if (this.parent.viewType === 'ProjectView') {
104
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[1].setAttribute('tabindex', '-1');
105
+ }
106
+ else if (this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[0]) {
107
+ this.parent.chartRowsModule.ganttChartTableBody.children[i].children[0].children[1].children[0].setAttribute('tabindex', '-1');
108
+ }
109
+ }
110
+ }
96
111
  if (this.parent.enableCriticalPath) {
97
112
  var crtiticalModule = this.parent.criticalPathModule;
98
113
  this.parent.criticalPathModule.criticalConnectorLine(crtiticalModule.criticalPathCollection, crtiticalModule.detailPredecessorCollection, this.parent.enableCriticalPath, crtiticalModule.predecessorCollectionTaskIds);
@@ -156,11 +171,13 @@ var GanttChart = /** @class */ (function () {
156
171
  for (var i = 0; i < rangeCollection.length; i++) {
157
172
  var height = this.getRangeHeight(currentRecord);
158
173
  var leftDiv = createElement('div', {
159
- className: cls.rangeChildContainer + ' ' + 'e-leftarc', styles: "left:" + rangeCollection[i].left + "px;\n top: " + Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2) + "px;\n height: " + (height + 1) + "px; border-right: 0px"
174
+ className: cls.rangeChildContainer + ' ' + 'e-leftarc', styles: (this.parent.enableRtl ? 'right:' : 'left:') +
175
+ ((this.parent.enableRtl ? rangeCollection[i].left + rangeCollection[i].width - 5 : rangeCollection[i].left) + "px;\n top: " + Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2) + "px;\n height: " + (height + 1) + "px; border-right: 0px")
160
176
  });
161
177
  var rightDiv = createElement('div', {
162
178
  className: cls.rangeChildContainer + ' ' + 'e-rightarc',
163
- styles: "left:" + (rangeCollection[i].left + rangeCollection[i].width - 5) + "px;\n top: " + Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2) + "px; height: " + (height + 1) + "px;\n border-left: 0px"
179
+ styles: (this.parent.enableRtl ? 'right:' : 'left:') + ((this.parent.enableRtl ? rangeCollection[i].left :
180
+ rangeCollection[i].left + rangeCollection[i].width - 5) + "px;\n top: " + Math.floor((this.parent.rowHeight - this.parent.chartRowsModule.taskBarHeight) / 2) + "px; height: " + (height + 1) + "px;\n border-left: 0px")
164
181
  });
165
182
  parentDiv.appendChild(leftDiv);
166
183
  parentDiv.appendChild(rightDiv);
@@ -175,6 +192,10 @@ var GanttChart = /** @class */ (function () {
175
192
  GanttChart.prototype.renderTimelineContainer = function () {
176
193
  this.chartTimelineContainer =
177
194
  createElement('div', { className: cls.timelineHeaderContainer });
195
+ if (this.parent.enableRtl) {
196
+ this.chartTimelineContainer.style.borderLeftWidth = '1px';
197
+ this.chartTimelineContainer.style.borderRightWidth = '0px';
198
+ }
178
199
  this.chartTimelineContainer.setAttribute("role", "presentation");
179
200
  this.chartElement.appendChild(this.chartTimelineContainer);
180
201
  };
@@ -347,7 +368,7 @@ var GanttChart = /** @class */ (function () {
347
368
  scrollLeft = this.scrollElement.scrollWidth <= scrollLeft ? this.scrollElement.scrollWidth : scrollLeft;
348
369
  if ((this.scrollElement.offsetWidth + this.parent.ganttChartModule.scrollElement.scrollLeft) < scrollLeft
349
370
  || (this.scrollElement.scrollLeft > scrollLeft)) {
350
- this.scrollObject.setScrollLeft(scrollLeft - 50);
371
+ this.scrollObject.setScrollLeft(scrollLeft - 50, this.parent.enableRtl ? -1 : 0);
351
372
  }
352
373
  // this.parent.ganttChartModule.scrollObject.updateLeftPosition();
353
374
  };
@@ -382,6 +403,12 @@ var GanttChart = /** @class */ (function () {
382
403
  */
383
404
  GanttChart.prototype.documentMouseUp = function (e) {
384
405
  this.isGanttElement = true;
406
+ if (e.target.classList.contains('e-treegridexpand') ||
407
+ e.target.classList.contains('e-treegridcollapse')) {
408
+ if (getValue('isEditCollapse', this.parent.treeGrid) === true) {
409
+ setValue('isEditCollapse', false, this.parent.treeGrid);
410
+ }
411
+ }
385
412
  if (this.parent.allowRowDragAndDrop) {
386
413
  var ganttDragElemet = this.parent.element.querySelector('.e-ganttdrag');
387
414
  if (ganttDragElemet) {
@@ -399,6 +426,13 @@ var GanttChart = /** @class */ (function () {
399
426
  }
400
427
  this.parent.notify('chartMouseUp', e);
401
428
  if (this.parent.showActiveElement) {
429
+ this.parent.showIndicator = true;
430
+ if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === "Shimmer") {
431
+ this.parent.hideMaskRow();
432
+ }
433
+ else {
434
+ this.parent.hideSpinner();
435
+ }
402
436
  if (this.focusedElement && !e.target.classList.contains('e-split-bar')) {
403
437
  this.focusedElement.tabIndex = this.focusedElement.tabIndex === 0 ? -1 : this.focusedElement.tabIndex;
404
438
  removeClass([this.focusedElement], 'e-active-container');
@@ -1,4 +1,4 @@
1
- import { Component, createElement, Complex, addClass, removeClass, Event, EmitType, formatUnit, Browser } from '@syncfusion/ej2-base';import { Internationalization, extend, getValue, isObjectArray, isObject, setValue, isUndefined } from '@syncfusion/ej2-base';import { Property, NotifyPropertyChanges, INotifyPropertyChanged, L10n, ModuleDeclaration, EventHandler } from '@syncfusion/ej2-base';import { isNullOrUndefined, KeyboardEvents, KeyboardEventArgs, Collection, append, remove } from '@syncfusion/ej2-base';import { createSpinner, showSpinner, hideSpinner, Dialog } from '@syncfusion/ej2-popups';import { RowDragEventArgs, GridColumn } from '@syncfusion/ej2-grids';import { TaskProcessor } from './task-processor';import { GanttChart } from './gantt-chart';import { Timeline } from '../renderer/timeline';import { GanttTreeGrid } from './tree-grid';import { Toolbar } from '../actions/toolbar';import { CriticalPath } from '../actions/critical-path';import { IGanttData, IWorkingTimeRange, IQueryTaskbarInfoEventArgs, BeforeTooltipRenderEventArgs, IDependencyEventArgs } from './interface';import { DataStateChangeEventArgs } from '@syncfusion/ej2-treegrid';import { ITaskbarEditedEventArgs, IParent, ITaskData, PdfColumnHeaderQueryCellInfoEventArgs } from './interface';import { ICollapsingEventArgs, CellEditArgs, PdfQueryTimelineCellInfoEventArgs } from './interface';import { IConnectorLineObject, IValidateArgs, IValidateMode, ITaskAddedEventArgs, IKeyPressedEventArgs } from './interface';import { PdfExportProperties, ISplitterResizedEventArgs } from './interface';import { ZoomEventArgs, IActionBeginEventArgs, CellSelectingEventArgs, RowDeselectEventArgs, PdfQueryCellInfoEventArgs } from './interface';import { ITimeSpanEventArgs, ZoomTimelineSettings, QueryCellInfoEventArgs, RowDataBoundEventArgs, RowSelectEventArgs } from './interface';import { TaskFieldsModel, TimelineSettingsModel, SplitterSettingsModel, SortSettings, SortSettingsModel } from '../models/models';import { EventMarkerModel, AddDialogFieldSettingsModel, EditDialogFieldSettingsModel, EditSettingsModel } from '../models/models';import { HolidayModel, DayWorkingTimeModel, FilterSettingsModel, SelectionSettingsModel } from '../models/models';import { TaskFields, TimelineSettings, Holiday, EventMarker, DayWorkingTime, EditSettings, SelectionSettings } from '../models/models';import { FilterSettings, SplitterSettings, TooltipSettings, LabelSettings, LabelSettingsModel } from '../models/models';import { SearchSettingsModel, SearchSettings, ResourceFields, ResourceFieldsModel } from '../models/models';import { ItemModel, ClickEventArgs } from '@syncfusion/ej2-navigations';import { DateProcessor } from './date-processor';import { ChartRows } from '../renderer/chart-rows';import { Dependency } from '../actions/dependency';import * as cls from './css-constants';import { Query, DataManager } from '@syncfusion/ej2-data';import { Column, ColumnModel } from '../models/column';import { TreeGrid, FilterSettingsModel as TreeGridFilterSettingModel } from '@syncfusion/ej2-treegrid';import { Sort } from '../actions/sort';import { CellSelectEventArgs, ISelectedCell, ContextMenuItemModel } from '@syncfusion/ej2-grids';import { CellDeselectEventArgs, IIndex, FailureEventArgs } from '@syncfusion/ej2-grids';import { HeaderCellInfoEventArgs, ColumnMenuClickEventArgs, ColumnMenuOpenEventArgs } from '@syncfusion/ej2-grids';import { ColumnMenuItemModel, ExcelQueryCellInfoEventArgs } from '@syncfusion/ej2-grids';import { ExcelExportProperties, ExcelExportCompleteArgs, ExcelHeaderQueryCellInfoEventArgs } from '@syncfusion/ej2-grids';import { RowDD } from '../actions/rowdragdrop';import { Filter } from '../actions/filter';import { PageEventArgs, FilterEventArgs, SortEventArgs, ResizeArgs, ColumnDragEventArgs, getActualProperties } from '@syncfusion/ej2-grids';import { RenderDayCellEventArgs } from '@syncfusion/ej2-calendars';import { ConnectorLine } from '../renderer/connector-line';import { ConnectorLineEdit } from '../actions/connector-line-edit';import { Edit } from '../actions/edit';import { Splitter } from './splitter';import { ResizeEventArgs, ResizingEventArgs } from '@syncfusion/ej2-layouts';import { TooltipSettingsModel } from '../models/tooltip-settings-model';import { Tooltip } from '../renderer/tooltip';import { ToolbarItem, ColumnMenuItem, RowPosition, DurationUnit, SortDirection } from './enum';import { GridLine, ContextMenuItem, ScheduleMode, ViewType } from './enum';import { Selection } from '../actions/selection';import { ExcelExport } from '../actions/excel-export';import { DayMarkers } from '../actions/day-markers';import { ContextMenu } from './../actions/context-menu';import { RowSelectingEventArgs } from './interface';import { ContextMenuOpenEventArgs as CMenuOpenEventArgs, ContextMenuClickEventArgs as CMenuClickEventArgs } from './interface';import { ColumnMenu } from '../actions/column-menu';import { ITaskbarClickEventArgs, RecordDoubleClickEventArgs, IMouseMoveEventArgs } from './interface';import { PdfExport } from '../actions/pdf-export';import { WorkUnit, TaskType } from './enum';import { FocusModule } from '../actions/keyboard';import { VirtualScroll } from '../actions/virtual-scroll';import { isCountRequired } from './utils';import { TaskbarEdit } from '../actions/taskbar-edit';
1
+ import { Component, createElement, Complex, addClass, removeClass, Event, EmitType, formatUnit, Browser, closest } from '@syncfusion/ej2-base';import { Internationalization, extend, getValue, isObjectArray, isObject, setValue, isUndefined } from '@syncfusion/ej2-base';import { Property, NotifyPropertyChanges, INotifyPropertyChanged, L10n, ModuleDeclaration, EventHandler } from '@syncfusion/ej2-base';import { isNullOrUndefined, KeyboardEvents, KeyboardEventArgs, Collection, append, remove } from '@syncfusion/ej2-base';import { createSpinner, showSpinner, hideSpinner, Dialog } from '@syncfusion/ej2-popups';import { RowDragEventArgs, GridColumn} from '@syncfusion/ej2-grids';import { TaskProcessor } from './task-processor';import { GanttChart } from './gantt-chart';import { Timeline } from '../renderer/timeline';import { GanttTreeGrid } from './tree-grid';import { Toolbar } from '../actions/toolbar';import { CriticalPath } from '../actions/critical-path';import { IGanttData, IWorkingTimeRange, IQueryTaskbarInfoEventArgs, BeforeTooltipRenderEventArgs, IDependencyEventArgs } from './interface';import { DataStateChangeEventArgs } from '@syncfusion/ej2-treegrid';import { ITaskbarEditedEventArgs, IParent, ITaskData, PdfColumnHeaderQueryCellInfoEventArgs } from './interface';import { ICollapsingEventArgs, CellEditArgs, PdfQueryTimelineCellInfoEventArgs } from './interface';import { IConnectorLineObject, IValidateArgs, IValidateMode, ITaskAddedEventArgs, IKeyPressedEventArgs } from './interface';import { PdfExportProperties, ISplitterResizedEventArgs } from './interface';import { ZoomEventArgs, IActionBeginEventArgs, CellSelectingEventArgs, RowDeselectEventArgs, PdfQueryCellInfoEventArgs } from './interface';import { ITimeSpanEventArgs, ZoomTimelineSettings, QueryCellInfoEventArgs, RowDataBoundEventArgs, RowSelectEventArgs } from './interface';import { TaskFieldsModel, TimelineSettingsModel, SplitterSettingsModel, SortSettings, SortSettingsModel } from '../models/models';import { EventMarkerModel, AddDialogFieldSettingsModel, EditDialogFieldSettingsModel, EditSettingsModel } from '../models/models';import { HolidayModel, DayWorkingTimeModel, FilterSettingsModel, SelectionSettingsModel,LoadingIndicatorModel, LoadingIndicator } from '../models/models';import { TaskFields, TimelineSettings, Holiday, EventMarker, DayWorkingTime, EditSettings, SelectionSettings } from '../models/models';import { FilterSettings, SplitterSettings, TooltipSettings, LabelSettings, LabelSettingsModel } from '../models/models';import { SearchSettingsModel, SearchSettings, ResourceFields, ResourceFieldsModel } from '../models/models';import { ItemModel, ClickEventArgs } from '@syncfusion/ej2-navigations';import { DateProcessor } from './date-processor';import { ChartRows } from '../renderer/chart-rows';import { Dependency } from '../actions/dependency';import * as cls from './css-constants';import { Query, DataManager } from '@syncfusion/ej2-data';import { Column, ColumnModel } from '../models/column';import { TreeGrid, FilterSettingsModel as TreeGridFilterSettingModel } from '@syncfusion/ej2-treegrid';import { Sort } from '../actions/sort';import { CellSelectEventArgs, ISelectedCell, ContextMenuItemModel } from '@syncfusion/ej2-grids';import { CellDeselectEventArgs, IIndex, FailureEventArgs } from '@syncfusion/ej2-grids';import { HeaderCellInfoEventArgs, ColumnMenuClickEventArgs, ColumnMenuOpenEventArgs } from '@syncfusion/ej2-grids';import { ColumnMenuItemModel, ExcelQueryCellInfoEventArgs } from '@syncfusion/ej2-grids';import { ExcelExportProperties, ExcelExportCompleteArgs, ExcelHeaderQueryCellInfoEventArgs } from '@syncfusion/ej2-grids';import { RowDD } from '../actions/rowdragdrop';import { Filter } from '../actions/filter';import { PageEventArgs, FilterEventArgs, SortEventArgs, ResizeArgs, ColumnDragEventArgs, getActualProperties } from '@syncfusion/ej2-grids';import { RenderDayCellEventArgs } from '@syncfusion/ej2-calendars';import { ConnectorLine } from '../renderer/connector-line';import { ConnectorLineEdit } from '../actions/connector-line-edit';import { Edit } from '../actions/edit';import { Splitter } from './splitter';import { ResizeEventArgs, ResizingEventArgs } from '@syncfusion/ej2-layouts';import { TooltipSettingsModel } from '../models/tooltip-settings-model';import { Tooltip } from '../renderer/tooltip';import { ToolbarItem, ColumnMenuItem, RowPosition, DurationUnit, SortDirection } from './enum';import { GridLine, ContextMenuItem, ScheduleMode, ViewType } from './enum';import { Selection } from '../actions/selection';import { ExcelExport } from '../actions/excel-export';import { DayMarkers } from '../actions/day-markers';import { ContextMenu } from './../actions/context-menu';import { RowSelectingEventArgs } from './interface';import { ContextMenuOpenEventArgs as CMenuOpenEventArgs, ContextMenuClickEventArgs as CMenuClickEventArgs } from './interface';import { ColumnMenu } from '../actions/column-menu';import { ITaskbarClickEventArgs, RecordDoubleClickEventArgs, IMouseMoveEventArgs } from './interface';import { PdfExport } from '../actions/pdf-export';import { WorkUnit, TaskType } from './enum';import { FocusModule } from '../actions/keyboard';import { VirtualScroll } from '../actions/virtual-scroll';import { isCountRequired } from './utils';import { TaskbarEdit } from '../actions/taskbar-edit';
2
2
  import {ComponentModel} from '@syncfusion/ej2-base';
3
3
 
4
4
  /**
@@ -28,6 +28,20 @@ export interface GanttModel extends ComponentModel{
28
28
  */
29
29
  disableHtmlEncode?: boolean;
30
30
 
31
+ /**
32
+ * Configures the loading indicator of the Gantt Chart. Specifies whether to display spinner or shimmer effect during the waiting time on any actions performed in Gantt Chart.
33
+ *
34
+ * @default {indicatorType: 'Spinner'}
35
+ */
36
+ loadingIndicator?: LoadingIndicatorModel;
37
+
38
+ /**
39
+ * Specifies whether to display shimmer effect during scrolling action in virtual scrolling feature. If disabled, spinner is shown instead of shimmer effect.
40
+ *
41
+ * @default true
42
+ */
43
+ enableVirtualMaskRow?: boolean;
44
+
31
45
  /**
32
46
  * Enables or disables the focusing the task bar on click action.
33
47
  *
@@ -156,6 +170,8 @@ export interface GanttModel extends ComponentModel{
156
170
 
157
171
  /**
158
172
  * Configures the grid lines in tree grid and gantt chart.
173
+ *
174
+ * @default 'Horizontal'
159
175
  */
160
176
  gridLines?: GridLine;
161
177
 
@@ -188,6 +204,8 @@ export interface GanttModel extends ComponentModel{
188
204
 
189
205
  /**
190
206
  * Defines the baseline bar color.
207
+ *
208
+ * @default null
191
209
  */
192
210
  baselineColor?: string;
193
211
 
@@ -273,7 +291,8 @@ export interface GanttModel extends ComponentModel{
273
291
 
274
292
  /**
275
293
  * Defines height of taskbar element in Gantt.
276
- *
294
+ *
295
+ * @default null
277
296
  * @aspType int?
278
297
  */
279
298
  taskbarHeight?: number;
@@ -393,6 +412,8 @@ export interface GanttModel extends ComponentModel{
393
412
 
394
413
  /**
395
414
  * Defines the view type of the Gantt.
415
+ *
416
+ * @default 'ProjectView'
396
417
  */
397
418
  viewType?: ViewType;
398
419
 
@@ -566,6 +587,8 @@ export interface GanttModel extends ComponentModel{
566
587
 
567
588
  /**
568
589
  * Specifies task schedule mode for a project.
590
+ *
591
+ * @default 'Auto'
569
592
  */
570
593
  taskMode?: ScheduleMode;
571
594