@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
@@ -17,7 +17,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
17
17
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
18
  return c > 3 && r && Object.defineProperty(target, key, r), r;
19
19
  };
20
- import { Component, createElement, Complex, addClass, removeClass, Event, formatUnit, Browser } from '@syncfusion/ej2-base';
20
+ import { Component, createElement, Complex, addClass, removeClass, Event, formatUnit, Browser, closest } from '@syncfusion/ej2-base';
21
21
  import { Internationalization, extend, getValue, isObjectArray, isObject, setValue, isUndefined } from '@syncfusion/ej2-base';
22
22
  import { Property, NotifyPropertyChanges, L10n, EventHandler } from '@syncfusion/ej2-base';
23
23
  import { isNullOrUndefined, KeyboardEvents, Collection, append, remove } from '@syncfusion/ej2-base';
@@ -27,6 +27,7 @@ import { GanttChart } from './gantt-chart';
27
27
  import { Timeline } from '../renderer/timeline';
28
28
  import { GanttTreeGrid } from './tree-grid';
29
29
  import { SortSettings } from '../models/models';
30
+ import { LoadingIndicator } from '../models/models';
30
31
  import { TaskFields, TimelineSettings, Holiday, EventMarker, DayWorkingTime, EditSettings, SelectionSettings } from '../models/models';
31
32
  import { FilterSettings, SplitterSettings, TooltipSettings, LabelSettings } from '../models/models';
32
33
  import { SearchSettings, ResourceFields } from '../models/models';
@@ -58,6 +59,8 @@ var Gantt = /** @class */ (function (_super) {
58
59
  __extends(Gantt, _super);
59
60
  function Gantt(options, element) {
60
61
  var _this = _super.call(this, options, element) || this;
62
+ _this.showIndicator = true;
63
+ _this.singleTier = 0;
61
64
  /** @hidden */
62
65
  _this.isCancelled = false;
63
66
  /** @hidden */
@@ -253,7 +256,7 @@ var Gantt = /** @class */ (function (_super) {
253
256
  /**
254
257
  * To check whether the date is in DST.
255
258
  *
256
- * @param {Date} date .
259
+ * @param {Date} date - Defines the date to check whether it is DST.
257
260
  * @returns {boolean} .
258
261
  * @private
259
262
  */
@@ -344,9 +347,348 @@ var Gantt = /** @class */ (function (_super) {
344
347
  }
345
348
  this.splitterModule.renderSplitter();
346
349
  this.notify('renderPanels', null);
347
- this.showSpinner();
350
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
351
+ this.showMaskRow();
352
+ }
353
+ else {
354
+ this.showSpinner();
355
+ }
348
356
  this.dataOperation.checkDataBinding();
349
357
  };
358
+ Gantt.prototype.hideMaskRow = function () {
359
+ var isTablePresent = this.element.querySelectorAll('.e-masked-table').length;
360
+ if (!isNullOrUndefined(this.contentMaskTable) && isTablePresent != 0) {
361
+ var maskTable = this.contentMaskTable;
362
+ remove(maskTable);
363
+ this.contentMaskTable = null;
364
+ }
365
+ isTablePresent = this.element.querySelectorAll('.e-masked-table').length;
366
+ if (!isNullOrUndefined(this.headerMaskTable) && isTablePresent != 0) {
367
+ var maskTable = this.headerMaskTable;
368
+ remove(maskTable);
369
+ this.headerMaskTable = null;
370
+ }
371
+ while ((this.element.querySelectorAll('.e-table-background')).length != 0) {
372
+ this.element.querySelectorAll('.e-table-background')[0].remove();
373
+ }
374
+ while ((this.element.querySelectorAll('.e-temp-timeline')).length != 0) {
375
+ this.element.querySelectorAll('.e-temp-timeline')[0].remove();
376
+ }
377
+ if (this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer).length != 0) {
378
+ for (var i = 0; i < this.singleTier; i++) {
379
+ if (!isNullOrUndefined(this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer)[i])) {
380
+ this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer)[i]['style'].visibility = "visible";
381
+ }
382
+ }
383
+ }
384
+ if (!isNullOrUndefined(this.element.querySelector('.' + cls.timelineHeaderContainer))) {
385
+ this.element.querySelector('.' + cls.timelineHeaderContainer)['style'].position = "relative";
386
+ }
387
+ if (!isNullOrUndefined(this.element.getElementsByClassName(cls.chartBodyContent)[0])) {
388
+ this.element.getElementsByClassName(cls.chartBodyContent)[0]['style'].visibility = "visible";
389
+ }
390
+ };
391
+ Gantt.prototype.showMaskRow = function () {
392
+ var ganttHeader = this.chartPane.childNodes[0].childNodes[0];
393
+ this.scrollLeftValue = this.chartPane.childNodes[0].childNodes[0]['scrollLeft'];
394
+ var ganttContent = this.chartPane.childNodes[0].childNodes[1];
395
+ if (!this.contentMaskTable) {
396
+ if (ganttContent) {
397
+ var content = ganttContent;
398
+ this.renderBackGround(content);
399
+ if (this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer).length != 0) {
400
+ this.singleTier = this.timelineModule.isSingleTier ? 1 : 2;
401
+ for (var i = 0; i < this.singleTier; i++) {
402
+ this.element.querySelectorAll('.' + cls.timelineHeaderTableContainer)[i]['style'].visibility = "hidden";
403
+ }
404
+ }
405
+ if (this.singleTier === 0) {
406
+ this.singleTier = 2;
407
+ }
408
+ this.element.getElementsByClassName(cls.chartBodyContent)[0]['style'].visibility = "hidden";
409
+ this.contentMaskTable = this.contentMaskTable = this.createMaskTable(content);
410
+ }
411
+ if (ganttHeader) {
412
+ this.element.querySelector('.' + cls.timelineHeaderContainer)['style'].position = "static";
413
+ var content = ganttHeader;
414
+ this.renderHeaderBackground(content);
415
+ this.headerMaskTable = this.headerMaskTable = this.createMaskTable(content);
416
+ }
417
+ }
418
+ };
419
+ Gantt.prototype.renderHeaderBackground = function (element) {
420
+ var parentElement = element;
421
+ var timelineHeight = element.getBoundingClientRect().height;
422
+ var header = closest(parentElement, '.' + cls.timelineHeaderContainer) ? true : false;
423
+ if (header) {
424
+ var div = this.createElement('div', { className: 'e-table-background' });
425
+ var tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
426
+ style: 'height: ' + timelineHeight + 'px;'
427
+ } });
428
+ var backgroundLines = 0;
429
+ var containerWidth = Math.round(element.getBoundingClientRect().width);
430
+ for (var i = 0; i < 3; i++) {
431
+ if (this.enableRtl) {
432
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
433
+ style: 'left: ' + (containerWidth -= ((160))) + 'px; top:0px;'
434
+ } }));
435
+ }
436
+ else {
437
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
438
+ style: 'left: ' + (backgroundLines += ((160))) + 'px; top:0px;'
439
+ } }));
440
+ }
441
+ }
442
+ parentElement.insertBefore(div, parentElement.firstChild);
443
+ }
444
+ };
445
+ Gantt.prototype.renderBackGround = function (element) {
446
+ var parentElement = element;
447
+ var timelineHeight = element.getBoundingClientRect().height;
448
+ var content = closest(parentElement, '.' + cls.chartBodyContainer) ? true : false;
449
+ if (content) {
450
+ var div = this.createElement('div', { className: 'e-table-background' });
451
+ var tempRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
452
+ style: 'height: ' + timelineHeight + 'px;'
453
+ } });
454
+ var backgroundLines = 0;
455
+ var containerWidth = Math.round(element.getBoundingClientRect().width);
456
+ for (var i = 0; i < 3; i++) {
457
+ if (this.enableRtl) {
458
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
459
+ style: 'left: ' + (containerWidth -= (160)) + 'px;z-index:1;'
460
+ } }));
461
+ }
462
+ else {
463
+ div.appendChild(this.createElement('div', { className: 'e-div-background', attrs: {
464
+ style: 'left: ' + (backgroundLines += (160)) + 'px;z-index:1;'
465
+ } }));
466
+ }
467
+ }
468
+ parentElement.insertBefore(div, parentElement.firstChild);
469
+ }
470
+ };
471
+ Gantt.prototype.createMaskTable = function (element) {
472
+ var parentElement = element;
473
+ var shimmerContainerHeight = element.getBoundingClientRect().height;
474
+ var header = closest(parentElement, '.' + cls.timelineHeaderContainer) ? true : false;
475
+ var maskTable;
476
+ if (header) {
477
+ maskTable = this.createEmptyTimeLineTable(shimmerContainerHeight);
478
+ maskTable.style.position = 'sticky';
479
+ maskTable.style.left = 0 + 'px';
480
+ if (this.enableRtl) {
481
+ maskTable.style.removeProperty('left');
482
+ }
483
+ }
484
+ else {
485
+ maskTable = this.createEmptyMaskTable(shimmerContainerHeight);
486
+ maskTable.style.position = 'absolute';
487
+ maskTable.style.zIndex = 1;
488
+ }
489
+ if (!header) {
490
+ maskTable.style.height = element.getBoundingClientRect().height + 'px';
491
+ parentElement.insertBefore(maskTable, parentElement.firstChild);
492
+ }
493
+ else {
494
+ maskTable.style.height = element.getBoundingClientRect().height + 'px';
495
+ var div = this.createElement('div', { className: 'e-temp-timeline' });
496
+ div.style.width = 614 + 'px';
497
+ div.style.position = 'sticky';
498
+ if (this.enableRtl) {
499
+ div.style['margin-right'] = Math.abs(this.scrollLeftValue) + 'px';
500
+ }
501
+ else {
502
+ div.style['margin-left'] = this.scrollLeftValue + 'px';
503
+ }
504
+ div.appendChild(maskTable);
505
+ parentElement.insertBefore(div, parentElement.firstChild);
506
+ }
507
+ return maskTable;
508
+ };
509
+ Gantt.prototype.createEmptyTimeLineTable = function (timelineHeight) {
510
+ var table = this.createElement('table', { className: 'e-table e-masked-table' });
511
+ var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });
512
+ var row = [];
513
+ var duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
514
+ style: 'height: ' + timelineHeight / 2 + 'px;'
515
+ } });
516
+ for (var i = 0; i < this.singleTier; i++) {
517
+ row.push(duplicateRow.cloneNode(true));
518
+ }
519
+ this.topBottomHeader = 0;
520
+ for (var i = 0; i < row.length; i++) {
521
+ tbody.appendChild(this.applyTimelineMaskRow(row[i]));
522
+ this.topBottomHeader = this.topBottomHeader + 1;
523
+ }
524
+ table.appendChild(tbody);
525
+ table.style.width = 100 + '%';
526
+ return table;
527
+ };
528
+ Gantt.prototype.applyTimelineMaskRow = function (row) {
529
+ var maskRow = row;
530
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
531
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
532
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
533
+ maskRow.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
534
+ for (var i = 0; i < maskRow.childNodes.length - 1; i++) {
535
+ maskRow.childNodes[i]['style']['width'] = 166 + 'px';
536
+ }
537
+ var maskCells = [].slice.call(maskRow.childNodes);
538
+ for (var i = 0; i < maskCells.length; i++) {
539
+ var maskCell = maskCells[i];
540
+ switch (this.topBottomHeader) {
541
+ case 0:
542
+ if (this.enableRtl) {
543
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-timelineHeader"></span>';
544
+ maskCell.children[0]['style'].left = -20 + 'px';
545
+ }
546
+ else {
547
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-timelineHeader"></span>';
548
+ }
549
+ break;
550
+ case 1:
551
+ maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
552
+ maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
553
+ maskCell.appendChild(this.createElement('td', { className: 'e-timeline-masked-top-header-cell' }));
554
+ var innerMaskCells = [].slice.call(maskCell.childNodes);
555
+ for (var i_1 = 0; i_1 < innerMaskCells.length; i_1++) {
556
+ var htmlInner = innerMaskCells[i_1];
557
+ if (i_1 === 0) {
558
+ if (this.enableRtl) {
559
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML"></span>';
560
+ htmlInner.children[0]['style'].left = -14 + 'px';
561
+ }
562
+ else {
563
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML"></span>';
564
+ }
565
+ }
566
+ else if (i_1 === 1) {
567
+ if (this.enableRtl) {
568
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML1"></span>';
569
+ htmlInner.children[0]['style'].left = -30 + 'px';
570
+ }
571
+ else {
572
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML1"></span>';
573
+ }
574
+ }
575
+ else {
576
+ if (this.enableRtl) {
577
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML2"></span>';
578
+ htmlInner.children[0]['style'].left = -60 + 'px';
579
+ }
580
+ else {
581
+ htmlInner.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-innerHTML2"></span>';
582
+ }
583
+ }
584
+ }
585
+ break;
586
+ }
587
+ }
588
+ return maskRow;
589
+ };
590
+ Gantt.prototype.createEmptyMaskTable = function (timelineHeight) {
591
+ var table = this.createElement('table', { className: 'e-table e-masked-table' });
592
+ var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });
593
+ var row = [];
594
+ var duplicateRow = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {
595
+ style: 'height: ' + timelineHeight / 7 + 'px;'
596
+ } });
597
+ this.columnLoop = 0;
598
+ for (var i = 0; i < 6; i++) {
599
+ row.push(duplicateRow.cloneNode(true));
600
+ }
601
+ for (var j = 0; j < row.length; j++) {
602
+ if (this.columnLoop < 4) {
603
+ this.columnLoop = this.columnLoop + 1;
604
+ }
605
+ else if (this.columnLoop === 4) {
606
+ this.columnLoop = 1;
607
+ }
608
+ tbody.appendChild(this.applyMaskRow(row[j]));
609
+ }
610
+ table.appendChild(tbody);
611
+ table.style.width = 100 + '%';
612
+ var div = this.createElement('div', { className: 'e-temp-container' });
613
+ div.style.width = 'calc(100% - ' + 17 + 'px)';
614
+ div.style.overflow = 'hidden';
615
+ div.appendChild(table);
616
+ return div;
617
+ };
618
+ Gantt.prototype.applyMaskRow = function (row) {
619
+ var maskRow = row;
620
+ if (this.columnLoop < 4) {
621
+ maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));
622
+ maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));
623
+ }
624
+ else {
625
+ maskRow.appendChild(this.createElement('td', { className: 'e-masked-cell e-rowcell' }));
626
+ }
627
+ var maskCells = [].slice.call(maskRow.childNodes);
628
+ for (var i = 0; i < maskCells.length; i++) {
629
+ var maskCell = maskCells[i];
630
+ switch (this.columnLoop) {
631
+ case 1:
632
+ if (i === 0) {
633
+ if (this.enableRtl) {
634
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell01"></span>';
635
+ maskCell.children[0]['style'].left = -14 + 'px';
636
+ }
637
+ else {
638
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell01"></span>';
639
+ }
640
+ }
641
+ else {
642
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell02"></span>';
643
+ }
644
+ break;
645
+ case 2:
646
+ if (i === 0) {
647
+ if (this.enableRtl) {
648
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell03"></span>';
649
+ maskCell.children[0]['style'].left = -14 + 'px';
650
+ }
651
+ else {
652
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell03"></span>';
653
+ }
654
+ }
655
+ else {
656
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell04"></span>';
657
+ }
658
+ break;
659
+ case 3:
660
+ if (i === 0) {
661
+ if (this.enableRtl) {
662
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell05"></span>';
663
+ maskCell.children[0]['style'].left = -64 + 'px';
664
+ }
665
+ else {
666
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell05"></span>';
667
+ }
668
+ }
669
+ else {
670
+ if (this.enableRtl) {
671
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell06"></span>';
672
+ maskCell.children[0]['style'].left = -192 + 'px';
673
+ }
674
+ else {
675
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell06"></span>';
676
+ }
677
+ }
678
+ break;
679
+ case 4:
680
+ if (this.enableRtl) {
681
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell07"></span>';
682
+ maskCell.children[0]['style'].left = -388 + 'px';
683
+ }
684
+ else {
685
+ maskCell.innerHTML = '<span class="e-mask e-skeleton e-skeleton-text e-shimmer-wave e-maskcell07"></span>';
686
+ }
687
+ break;
688
+ }
689
+ }
690
+ return maskRow;
691
+ };
350
692
  /**
351
693
  * Method used to show spinner.
352
694
  *
@@ -372,7 +714,7 @@ var Gantt = /** @class */ (function (_super) {
372
714
  this.timelineModule.calculateZoomingLevelsPerDayWidth(); // To calculate the perDaywidth
373
715
  };
374
716
  /**
375
- * @param {boolean} isChange .
717
+ * @param {boolean} isChange -Defines whether task data is changed.
376
718
  * @returns {void} .
377
719
  * @private
378
720
  */
@@ -472,7 +814,7 @@ var Gantt = /** @class */ (function (_super) {
472
814
  /**
473
815
  * Method for updating row height value in connector line collections
474
816
  *
475
- * @param {IConnectorLineObject[]} collection .
817
+ * @param {IConnectorLineObject[]} collection -Defines the CollectorLine collection.
476
818
  * @returns {void} .
477
819
  * @private
478
820
  */
@@ -508,7 +850,7 @@ var Gantt = /** @class */ (function (_super) {
508
850
  this.currentViewData = this.treeGrid.getCurrentViewRecords().slice();
509
851
  };
510
852
  /**
511
- * @param {IGanttData} records .
853
+ * @param {IGanttData} records -Defines the delete record collections.
512
854
  * @returns {IGanttData} .
513
855
  * @private
514
856
  */
@@ -520,7 +862,7 @@ var Gantt = /** @class */ (function (_super) {
520
862
  return updatedRecord;
521
863
  };
522
864
  /**
523
- * @param {object} args .
865
+ * @param {object} args -Update the gantt element content height.
524
866
  * @returns {void} .
525
867
  * @private
526
868
  */
@@ -873,7 +1215,12 @@ var Gantt = /** @class */ (function (_super) {
873
1215
  this.treeGrid.height = '100%';
874
1216
  this.notify('tree-grid-created', {});
875
1217
  this.createGanttPopUpElement();
876
- this.hideSpinner();
1218
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
1219
+ this.hideMaskRow();
1220
+ }
1221
+ else {
1222
+ this.hideSpinner();
1223
+ }
877
1224
  setValue('isGanttCreated', true, args);
878
1225
  this.renderComplete();
879
1226
  }
@@ -885,6 +1232,11 @@ var Gantt = /** @class */ (function (_super) {
885
1232
  this.criticalPathModule.showCriticalPath(this.enableCriticalPath);
886
1233
  }
887
1234
  this.notify('recordsUpdated', {});
1235
+ for (var i = 0; i < document.getElementsByClassName('e-timeline-header-table-container').length; i++) {
1236
+ for (var j = 0; j < document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children.length; j++) {
1237
+ document.getElementsByClassName('e-timeline-header-table-container')[i].children[0].children[0].children[j].children[0].setAttribute('tabindex', '-1');
1238
+ }
1239
+ }
888
1240
  if (this.enableCriticalPath && this.criticalPathModule) {
889
1241
  var criticalModule = this.criticalPathModule;
890
1242
  this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
@@ -916,8 +1268,8 @@ var Gantt = /** @class */ (function (_super) {
916
1268
  /**
917
1269
  * Called internally, if any of the property value changed.
918
1270
  *
919
- * @param {GanttModel} newProp .
920
- * @param {GanttModel} oldProp .
1271
+ * @param {GanttModel} newProp - Defines the New GanttModel.
1272
+ * @param {GanttModel} oldProp - Defines the old GanttModel.
921
1273
  * @returns {void} .
922
1274
  * @private
923
1275
  */
@@ -980,6 +1332,12 @@ var Gantt = /** @class */ (function (_super) {
980
1332
  this.dataOperation.checkDataBinding(true);
981
1333
  break;
982
1334
  case 'enableCriticalPath':
1335
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
1336
+ this.hideMaskRow();
1337
+ }
1338
+ else {
1339
+ this.hideSpinner();
1340
+ }
983
1341
  if (this.enableCriticalPath && this.criticalPathModule) {
984
1342
  this.criticalPathModule.showCriticalPath(this.enableCriticalPath);
985
1343
  var criticalModule = this.criticalPathModule;
@@ -1526,7 +1884,7 @@ var Gantt = /** @class */ (function (_super) {
1526
1884
  thWidth = thElements[n].style.width;
1527
1885
  var divElement = createElement('div', {
1528
1886
  className: 'e-line-container-cell',
1529
- styles: 'left:' + leftPos + 'px'
1887
+ styles: (this.enableRtl ? 'right:' + (leftPos + 1) : 'left:' + leftPos) + 'px'
1530
1888
  });
1531
1889
  containerDiv.appendChild(divElement);
1532
1890
  }
@@ -1661,12 +2019,18 @@ var Gantt = /** @class */ (function (_super) {
1661
2019
  };
1662
2020
  /**
1663
2021
  *
1664
- * @param {object} args .
2022
+ * @param {object} args -Defines the edited event args.
1665
2023
  * @returns {void} .
1666
2024
  * @private
1667
2025
  */
1668
2026
  Gantt.prototype.actionBeginTask = function (args) {
1669
2027
  this.trigger('actionBegin', args);
2028
+ if (!isNullOrUndefined(this.loadingIndicator) && this.loadingIndicator.indicatorType === "Shimmer") {
2029
+ this.showMaskRow();
2030
+ }
2031
+ else {
2032
+ this.showSpinner();
2033
+ }
1670
2034
  };
1671
2035
  /**
1672
2036
  * To move horizontal scroll bar of Gantt to specific date.
@@ -1702,7 +2066,7 @@ var Gantt = /** @class */ (function (_super) {
1702
2066
  if (!isNullOrUndefined(left)) {
1703
2067
  left = this.ganttChartModule.scrollElement.scrollWidth <= left ?
1704
2068
  this.ganttChartModule.scrollElement.scrollWidth : left;
1705
- this.ganttChartModule.scrollObject.setScrollLeft(left);
2069
+ this.ganttChartModule.scrollObject.setScrollLeft(left, this.enableRtl ? -1 : 0);
1706
2070
  }
1707
2071
  if (!isNullOrUndefined(top)) {
1708
2072
  top = this.ganttChartModule.scrollElement.scrollHeight <= top ? this.ganttChartModule.scrollElement.scrollHeight : top;
@@ -1735,8 +2099,8 @@ var Gantt = /** @class */ (function (_super) {
1735
2099
  /**
1736
2100
  * Get parent task by clone parent item.
1737
2101
  *
1738
- * @param {IGanttData} ganttRecord .
1739
- * @param {number} level .
2102
+ * @param {IGanttData} ganttRecord -Defines the Gantt record.
2103
+ * @param {number} level -Defines the selected record level.
1740
2104
  * @returns {IGanttData} .
1741
2105
  * @hidden
1742
2106
  */
@@ -1849,7 +2213,7 @@ var Gantt = /** @class */ (function (_super) {
1849
2213
  /**
1850
2214
  * To update timeline at start point with one unit.
1851
2215
  *
1852
- * @param {string} mode .
2216
+ * @param {string} mode - Render previous span of Timeline.
1853
2217
  * @returns {void} .
1854
2218
  * @public
1855
2219
  */
@@ -1859,7 +2223,7 @@ var Gantt = /** @class */ (function (_super) {
1859
2223
  /**
1860
2224
  * To update timeline at end point with one unit.
1861
2225
  *
1862
- * @param {string} mode .
2226
+ * @param {string} mode - Render next span of Timeline.
1863
2227
  * @returns {void} .
1864
2228
  * @public
1865
2229
  */
@@ -1933,7 +2297,7 @@ var Gantt = /** @class */ (function (_super) {
1933
2297
  /**
1934
2298
  * Method to clear edited collections in gantt set edit flag value
1935
2299
  *
1936
- * @param {boolean} isStart .
2300
+ * @param {boolean} isStart -Defines whether to initiate edit action.
1937
2301
  * @returns {void} .
1938
2302
  * @private
1939
2303
  */
@@ -2206,8 +2570,8 @@ var Gantt = /** @class */ (function (_super) {
2206
2570
  /**
2207
2571
  * To update existing taskId with new unique Id.
2208
2572
  *
2209
- * @param {number | string} currentId .
2210
- * @param {number | string} newId .
2573
+ * @param {number | string} currentId - Defines the current Id of the record.
2574
+ * @param {number | string} newId - Defines the new Id of the record.
2211
2575
  * @returns {void} .
2212
2576
  */
2213
2577
  Gantt.prototype.updateTaskId = function (currentId, newId) {
@@ -2309,9 +2673,9 @@ var Gantt = /** @class */ (function (_super) {
2309
2673
  /**
2310
2674
  * Reorder the rows based on given indexes and position
2311
2675
  *
2312
- * @param {number[]} fromIndexes .
2313
- * @param {number} toIndex .
2314
- * @param {string} position .
2676
+ * @param {number[]} fromIndexes - Defines the Dragged record index.
2677
+ * @param {number} toIndex - Defines the Dropped record index.
2678
+ * @param {string} position -Defines the position of the dropped row.
2315
2679
  * @returns {void} .
2316
2680
  */
2317
2681
  Gantt.prototype.reorderRows = function (fromIndexes, toIndex, position) {
@@ -2486,7 +2850,7 @@ var Gantt = /** @class */ (function (_super) {
2486
2850
  /**
2487
2851
  * Method to get class name for unscheduled tasks
2488
2852
  *
2489
- * @param {ITaskData} ganttProp .
2853
+ * @param {ITaskData} ganttProp -Defines the Gantt propertie.
2490
2854
  * @returns {boolean} .
2491
2855
  * @private
2492
2856
  */
@@ -2560,7 +2924,7 @@ var Gantt = /** @class */ (function (_super) {
2560
2924
  var clientTop = document.documentElement.clientTop || document.body.clientTop || 0;
2561
2925
  var clientLeft = document.documentElement.clientLeft || document.body.clientLeft || 0;
2562
2926
  var top = box.top + scrollTop - clientTop;
2563
- var left = box.left + scrollLeft - clientLeft;
2927
+ var left = this.enableRtl ? box.right + scrollLeft - clientLeft : box.left + scrollLeft - clientLeft;
2564
2928
  return { top: Math.round(top), left: Math.round(left), width: box.width, height: box.height };
2565
2929
  };
2566
2930
  /**
@@ -2833,7 +3197,7 @@ var Gantt = /** @class */ (function (_super) {
2833
3197
  /**
2834
3198
  * To change the mode of a record.
2835
3199
  *
2836
- * @param {object} data .
3200
+ * @param {object} data - Use to change the TaskMode either manual, auto or custom.
2837
3201
  * @returns {void} .
2838
3202
  */
2839
3203
  Gantt.prototype.changeTaskMode = function (data) {
@@ -2904,6 +3268,12 @@ var Gantt = /** @class */ (function (_super) {
2904
3268
  __decorate([
2905
3269
  Property(true)
2906
3270
  ], Gantt.prototype, "disableHtmlEncode", void 0);
3271
+ __decorate([
3272
+ Complex({}, LoadingIndicator)
3273
+ ], Gantt.prototype, "loadingIndicator", void 0);
3274
+ __decorate([
3275
+ Property(true)
3276
+ ], Gantt.prototype, "enableVirtualMaskRow", void 0);
2907
3277
  __decorate([
2908
3278
  Property(true)
2909
3279
  ], Gantt.prototype, "autoFocusTasks", void 0);
@@ -37,10 +37,6 @@ export interface IGanttData {
37
37
  parentItem?: IParent;
38
38
  /** Defines the parent unique id of task. */
39
39
  parentUniqueID?: string;
40
- /**
41
- * Specifies the checkbox state of a record
42
- */
43
- checkboxState?: string;
44
40
  /** Defines the data which specified in data source.
45
41
  *
46
42
  * @isGenericType true
@@ -20,12 +20,19 @@ var Splitter = /** @class */ (function () {
20
20
  this.parent.splitterElement = createElement('div', { className: cls.splitter });
21
21
  this.parent.treeGridPane = createElement('div', { className: cls.treeGridPane });
22
22
  this.parent.chartPane = createElement('div', { className: cls.ganttChartPane });
23
- this.parent.splitterElement.appendChild(this.parent.treeGridPane);
24
- this.parent.splitterElement.appendChild(this.parent.chartPane);
23
+ if (this.parent.enableRtl) {
24
+ this.parent.splitterElement.appendChild(this.parent.chartPane);
25
+ this.parent.splitterElement.appendChild(this.parent.treeGridPane);
26
+ }
27
+ else {
28
+ this.parent.splitterElement.appendChild(this.parent.treeGridPane);
29
+ this.parent.splitterElement.appendChild(this.parent.chartPane);
30
+ }
25
31
  this.splitterObject = new SplitterLayout({
26
32
  height: null,
27
33
  width: this.parent.ganttWidth.toString(),
28
34
  enablePersistence: this.parent.enablePersistence,
35
+ enableRtl: this.parent.enableRtl,
29
36
  separatorSize: this.parent.splitterSettings.separatorSize,
30
37
  paneSettings: [
31
38
  {
@@ -39,6 +46,9 @@ var Splitter = /** @class */ (function () {
39
46
  ],
40
47
  orientation: 'Horizontal',
41
48
  resizeStart: function (args) {
49
+ if (_this.parent.contextMenuModule && _this.parent.contextMenuModule.isOpen) {
50
+ _this.parent.contextMenuModule.contextMenu.close();
51
+ }
42
52
  var leftPane = args.pane[0];
43
53
  var rightPane = args.pane[1];
44
54
  _this.splitterPreviousPositionGrid = leftPane.scrollWidth + 1 + 'px';
@@ -366,7 +366,6 @@ var TaskProcessor = /** @class */ (function (_super) {
366
366
  this.parent.setRecordValue('parentId', data[taskSettings.parentID], ganttProperties, true);
367
367
  }
368
368
  this.addCustomFieldValue(data, ganttData);
369
- ganttData.checkboxState = 'uncheck';
370
369
  this.parent.setRecordValue('isAutoSchedule', autoSchedule, ganttProperties, true);
371
370
  this.parent.setRecordValue('resourceInfo', this.setResourceInfo(data), ganttProperties, true);
372
371
  this.parent.setRecordValue('isMilestone', false, ganttProperties, true);
@@ -558,8 +557,10 @@ var TaskProcessor = /** @class */ (function (_super) {
558
557
  taskData.push(this.setSegmentTaskData(segment, segments[i]));
559
558
  }
560
559
  this.parent.setRecordValue('duration', sumOfDuration, data.ganttProperties, true);
561
- this.parent.setRecordValue('endDate', ganttSegments[ganttSegments.length - 1].endDate, data.ganttProperties, true);
562
- if (!isNullOrUndefined(taskSettings.endDate)) {
560
+ if (!isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {
561
+ this.parent.setRecordValue('endDate', ganttSegments[ganttSegments.length - 1].endDate, data.ganttProperties, true);
562
+ }
563
+ if (!isNullOrUndefined(taskSettings.endDate) && !isNullOrUndefined(ganttSegments[ganttSegments.length - 1])) {
563
564
  this.parent.setRecordValue(this.parent.taskFields.endDate, ganttSegments[ganttSegments.length - 1].endDate, data, true);
564
565
  }
565
566
  this.parent.setRecordValue('taskData.' + this.parent.taskFields.segments, taskData, data);