@syncfusion/ej2-gantt 20.4.54 → 21.1.35

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 (93) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -1
  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 +1086 -419
  7. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  8. package/dist/es6/ej2-gantt.es5.js +1064 -397
  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 +20 -20
  14. package/src/gantt/actions/cell-edit.js +8 -6
  15. package/src/gantt/actions/chart-scroll.d.ts +1 -0
  16. package/src/gantt/actions/chart-scroll.js +15 -4
  17. package/src/gantt/actions/connector-line-edit.js +39 -28
  18. package/src/gantt/actions/context-menu.js +5 -5
  19. package/src/gantt/actions/dependency.js +28 -12
  20. package/src/gantt/actions/dialog-edit.js +41 -21
  21. package/src/gantt/actions/edit.js +51 -30
  22. package/src/gantt/actions/filter.d.ts +2 -1
  23. package/src/gantt/actions/filter.js +88 -2
  24. package/src/gantt/actions/keyboard.js +0 -1
  25. package/src/gantt/actions/pdf-export.d.ts +3 -1
  26. package/src/gantt/actions/pdf-export.js +12 -6
  27. package/src/gantt/actions/rowdragdrop.js +2 -2
  28. package/src/gantt/actions/selection.js +5 -2
  29. package/src/gantt/actions/taskbar-edit.d.ts +5 -0
  30. package/src/gantt/actions/taskbar-edit.js +114 -10
  31. package/src/gantt/base/date-processor.js +78 -52
  32. package/src/gantt/base/gantt-chart.js +20 -4
  33. package/src/gantt/base/gantt-model.d.ts +43 -0
  34. package/src/gantt/base/gantt.d.ts +39 -1
  35. package/src/gantt/base/gantt.js +78 -33
  36. package/src/gantt/base/interface.d.ts +2 -0
  37. package/src/gantt/base/task-processor.js +135 -98
  38. package/src/gantt/base/tree-grid.js +31 -1
  39. package/src/gantt/base/utils.js +1 -1
  40. package/src/gantt/renderer/chart-rows.d.ts +2 -0
  41. package/src/gantt/renderer/chart-rows.js +156 -24
  42. package/src/gantt/renderer/connector-line.js +50 -20
  43. package/src/gantt/renderer/edit-tooltip.js +0 -3
  44. package/src/gantt/renderer/event-marker.js +4 -1
  45. package/src/gantt/renderer/nonworking-day.js +4 -1
  46. package/src/gantt/renderer/timeline.js +3 -3
  47. package/src/gantt/renderer/tooltip.js +101 -33
  48. package/styles/bootstrap-dark.css +33 -10
  49. package/styles/bootstrap.css +31 -10
  50. package/styles/bootstrap4.css +28 -7
  51. package/styles/bootstrap5-dark.css +30 -9
  52. package/styles/bootstrap5.css +30 -9
  53. package/styles/fabric-dark.css +28 -7
  54. package/styles/fabric.css +28 -7
  55. package/styles/fluent-dark.css +56 -29
  56. package/styles/fluent.css +56 -29
  57. package/styles/gantt/_bootstrap-dark-definition.scss +5 -4
  58. package/styles/gantt/_bootstrap-definition.scss +5 -4
  59. package/styles/gantt/_bootstrap4-definition.scss +3 -2
  60. package/styles/gantt/_bootstrap5-definition.scss +15 -14
  61. package/styles/gantt/_fabric-dark-definition.scss +3 -2
  62. package/styles/gantt/_fabric-definition.scss +3 -2
  63. package/styles/gantt/_fluent-definition.scss +18 -17
  64. package/styles/gantt/_fusionnew-definition.scss +5 -4
  65. package/styles/gantt/_highcontrast-definition.scss +3 -2
  66. package/styles/gantt/_highcontrast-light-definition.scss +3 -2
  67. package/styles/gantt/_layout.scss +45 -13
  68. package/styles/gantt/_material-dark-definition.scss +3 -2
  69. package/styles/gantt/_material-definition.scss +3 -2
  70. package/styles/gantt/_tailwind-definition.scss +9 -8
  71. package/styles/gantt/_theme.scss +25 -6
  72. package/styles/gantt/bootstrap-dark.css +33 -10
  73. package/styles/gantt/bootstrap.css +31 -10
  74. package/styles/gantt/bootstrap4.css +28 -7
  75. package/styles/gantt/bootstrap5-dark.css +30 -9
  76. package/styles/gantt/bootstrap5.css +30 -9
  77. package/styles/gantt/fabric-dark.css +28 -7
  78. package/styles/gantt/fabric.css +28 -7
  79. package/styles/gantt/fluent-dark.css +56 -29
  80. package/styles/gantt/fluent.css +56 -29
  81. package/styles/gantt/highcontrast-light.css +28 -9
  82. package/styles/gantt/highcontrast.css +28 -7
  83. package/styles/gantt/material-dark.css +31 -14
  84. package/styles/gantt/material.css +28 -7
  85. package/styles/gantt/tailwind-dark.css +28 -7
  86. package/styles/gantt/tailwind.css +28 -7
  87. package/styles/highcontrast-light.css +28 -9
  88. package/styles/highcontrast.css +28 -7
  89. package/styles/material-dark.css +31 -14
  90. package/styles/material.css +28 -7
  91. package/styles/tailwind-dark.css +28 -7
  92. package/styles/tailwind.css +28 -7
  93. package/styles/gantt/_material3-definition.scss +0 -218
@@ -170,7 +170,7 @@ var Timeline = /** @class */ (function () {
170
170
  else {
171
171
  var value = property === 'topTier' ? 'bottomTier' : 'topTier';
172
172
  var assignValue = 'bottomTier';
173
- if (newTimeline[assignValue].unit != "None") {
173
+ if (newTimeline["" + assignValue].unit != "None") {
174
174
  _this.customTimelineSettings[value] = __assign({}, newTimeline[assignValue]);
175
175
  }
176
176
  }
@@ -473,7 +473,7 @@ var Timeline = /** @class */ (function () {
473
473
  else {
474
474
  secondValue = sortedUnitLevels[i + 1];
475
475
  }
476
- if (count >= firstValue[tier].count) {
476
+ if (count >= firstValue["" + tier].count) {
477
477
  currentZoomCollection = sortedUnitLevels[i];
478
478
  checkSameCountLevels = sortedUnitLevels.filter(function (tempLevel) {
479
479
  if (tier === "bottomTier") {
@@ -491,7 +491,7 @@ var Timeline = /** @class */ (function () {
491
491
  }
492
492
  break;
493
493
  }
494
- else if (count < firstValue[tier].count && count > secondValue[tier].count) {
494
+ else if (count < firstValue["" + tier].count && count > secondValue["" + tier].count) {
495
495
  currentZoomCollection = sortedUnitLevels[i + 1];
496
496
  checkSameCountLevels = sortedUnitLevels.filter(function (tempLevel) {
497
497
  if (tier === "bottomTier") {
@@ -1,7 +1,7 @@
1
1
  import { Tooltip as TooltipComponent } from '@syncfusion/ej2-popups';
2
2
  import { parentsUntil } from '../base/utils';
3
3
  import * as cls from '../base/css-constants';
4
- import { extend, isNullOrUndefined, getValue, EventHandler, closest } from '@syncfusion/ej2-base';
4
+ import { extend, isNullOrUndefined, getValue, EventHandler, closest, SanitizeHtmlHelper } from '@syncfusion/ej2-base';
5
5
  import { Deferred } from '@syncfusion/ej2-data';
6
6
  /**
7
7
  * File for handling tooltip in Gantt.
@@ -28,7 +28,7 @@ var Tooltip = /** @class */ (function () {
28
28
  this.toolTipObj.position = 'BottomCenter';
29
29
  this.toolTipObj.openDelay = 700;
30
30
  this.toolTipObj.enableRtl = this.parent.enableRtl;
31
- this.toolTipObj.enableHtmlSanitizer = false;
31
+ this.toolTipObj.enableHtmlSanitizer = this.parent.enableHtmlSanitizer;
32
32
  this.toolTipObj.cssClass = cls.ganttTooltip;
33
33
  this.toolTipObj.animation = { open: { effect: 'None', delay: 0 }, close: { effect: 'None', delay: 0 } };
34
34
  this.toolTipObj.afterOpen = this.updateTooltipPosition.bind(this);
@@ -241,8 +241,12 @@ var Tooltip = /** @class */ (function () {
241
241
  var taskName;
242
242
  if (ganttData) {
243
243
  data = ganttData.ganttProperties;
244
- taskName = !isNullOrUndefined(data.taskName) ? '<tr class = "e-gantt-tooltip-rowcell"><td colspan="3">' +
245
- (this.parent.disableHtmlEncode ? data.taskName.replace(/</g, "&lt;").replace(/>/g, "&gt;") : data.taskName) + '</td></tr>' : '';
244
+ var taskNameValue = data.taskName;
245
+ if (this.parent.enableHtmlSanitizer && typeof (taskNameValue) === 'string') {
246
+ taskNameValue = SanitizeHtmlHelper.sanitize(taskNameValue);
247
+ }
248
+ taskName = !isNullOrUndefined(taskNameValue) ? '<tr class = "e-gantt-tooltip-rowcell"><td colspan="3">' +
249
+ (this.parent.disableHtmlEncode ? taskNameValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : taskNameValue) + '</td></tr>' : '';
246
250
  }
247
251
  switch (elementType) {
248
252
  case 'milestone':
@@ -254,9 +258,13 @@ var Tooltip = /** @class */ (function () {
254
258
  else if (!isNullOrUndefined(data.startDate)) {
255
259
  milestoneStartDate = data.startDate;
256
260
  }
261
+ var sDateValue = this.parent.getFormatedDate(milestoneStartDate, this.parent.getDateFormat());
262
+ if (this.parent.enableHtmlSanitizer && typeof (sDateValue) === 'string') {
263
+ sDateValue = SanitizeHtmlHelper.sanitize(sDateValue);
264
+ }
257
265
  var sDate = !isNullOrUndefined(milestoneStartDate) ? '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
258
266
  '<td class = "e-gantt-tooltip-value">' +
259
- this.parent.getFormatedDate(milestoneStartDate, this.parent.getDateFormat()) + '</td></tr>' : '';
267
+ sDateValue + '</td></tr>' : '';
260
268
  content = '<table class = "e-gantt-tooltiptable"><tbody>' +
261
269
  taskName + sDate + '</tbody></table>';
262
270
  break;
@@ -264,20 +272,28 @@ var Tooltip = /** @class */ (function () {
264
272
  case 'taskbar':
265
273
  {
266
274
  var scheduledTask = !ganttData.hasChildRecords || data.isAutoSchedule ? true : false;
275
+ var startDateValue = this.parent.getFormatedDate(scheduledTask ? data.startDate : data.autoStartDate, this.parent.getDateFormat());
276
+ var endDateValue = this.parent.getFormatedDate(scheduledTask ? data.endDate : data.autoEndDate, this.parent.getDateFormat());
277
+ var durationValue = this.parent.getDurationString((scheduledTask ? data.duration : data.autoDuration), data.durationUnit);
278
+ var progressValue = data.progress;
279
+ if (this.parent.enableHtmlSanitizer) {
280
+ startDateValue = typeof (startDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(startDateValue) : startDateValue;
281
+ endDateValue = typeof (endDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(endDateValue) : endDateValue;
282
+ durationValue = typeof (durationValue) === 'string' ? SanitizeHtmlHelper.sanitize(durationValue) : durationValue;
283
+ progressValue = typeof (progressValue) === 'string' ? SanitizeHtmlHelper.sanitize(progressValue) : progressValue;
284
+ }
267
285
  var startDate = data.startDate ? '<tr><td class = "e-gantt-tooltip-label">' +
268
286
  this.parent.localeObj.getConstant(scheduledTask ? 'startDate' : 'subTasksStartDate') +
269
- '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value"> ' +
270
- this.parent.getFormatedDate(scheduledTask ? data.startDate : data.autoStartDate, this.parent.getDateFormat()) +
271
- '</td></tr>' : '';
287
+ '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value"> ' + startDateValue + '</td></tr>' : '';
272
288
  var endDate = data.endDate ? '<tr><td class = "e-gantt-tooltip-label">' +
273
289
  this.parent.localeObj.getConstant(scheduledTask ? 'endDate' : 'subTasksEndDate') +
274
- '</td><td>:</td><td class = "e-gantt-tooltip-value">' + this.parent.getFormatedDate(scheduledTask ? data.endDate : data.autoEndDate, this.parent.getDateFormat()) + '</td></tr>' : '';
290
+ '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' + endDateValue + '</td></tr>' : '';
275
291
  var duration = !isNullOrUndefined(data.duration) ? '<tr><td class = "e-gantt-tooltip-label">' +
276
292
  this.parent.localeObj.getConstant('duration') + '</td><td>:</td>' +
277
- '<td class = "e-gantt-tooltip-value"> ' + this.parent.getDurationString((scheduledTask ? data.duration : data.autoDuration), data.durationUnit) +
293
+ '<td class = "e-gantt-tooltip-value"> ' + durationValue +
278
294
  '</td></tr>' : '';
279
295
  var progress = !isNullOrUndefined(data.progress) ? '<tr><td class = "e-gantt-tooltip-label">' +
280
- this.parent.localeObj.getConstant('progress') + '</td><td>:</td><td>' + data.progress +
296
+ this.parent.localeObj.getConstant('progress') + '</td><td>:</td><td>' + progressValue +
281
297
  '</td></tr>' : '';
282
298
  content = '<table class = "e-gantt-tooltiptable"><tbody>' +
283
299
  taskName + startDate + endDate + duration + progress + '</tbody></table>';
@@ -285,82 +301,131 @@ var Tooltip = /** @class */ (function () {
285
301
  }
286
302
  case 'baseline':
287
303
  {
304
+ var baselineStartDateValue = this.parent.getFormatedDate(data.baselineStartDate, this.parent.getDateFormat());
305
+ var baselineEndDateValue = this.parent.getFormatedDate(data.baselineEndDate, this.parent.getDateFormat());
306
+ if (this.parent.enableHtmlSanitizer) {
307
+ baselineStartDateValue = typeof (baselineStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(baselineStartDateValue) : baselineStartDateValue;
308
+ baselineEndDateValue = typeof (baselineEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(baselineEndDateValue) : baselineEndDateValue;
309
+ }
288
310
  content = '<table class = "e-gantt-tooltiptable"><tbody>' +
289
311
  taskName + '<tr><td class = "e-gantt-tooltip-label">' +
290
312
  this.parent.localeObj.getConstant('baselineStartDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
291
- this.parent.getFormatedDate(data.baselineStartDate, this.parent.getDateFormat()) + '</td></tr><tr>' +
313
+ baselineStartDateValue + '</td></tr><tr>' +
292
314
  '<td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('baselineEndDate') +
293
315
  '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
294
- this.parent.getFormatedDate(data.baselineEndDate, this.parent.getDateFormat()) + '</td></tr></tbody></table>';
316
+ baselineEndDateValue + '</td></tr></tbody></table>';
295
317
  break;
296
318
  }
297
319
  case 'marker':
298
320
  {
299
321
  var markerTooltipElement = parent.tooltipModule.getMarkerTooltipData(args);
322
+ var markerTooltipElementValue = this.parent.getFormatedDate(this.parent.dateValidationModule.getDateFromFormat(markerTooltipElement.day), this.parent.getDateFormat());
300
323
  var markerLabel = markerTooltipElement.label ? markerTooltipElement.label : '';
324
+ if (this.parent.enableHtmlSanitizer) {
325
+ markerLabel = typeof (markerLabel) === 'string' ? SanitizeHtmlHelper.sanitize(markerLabel) : markerLabel;
326
+ markerTooltipElementValue = typeof (markerTooltipElementValue) === 'string' ? SanitizeHtmlHelper.sanitize(markerTooltipElementValue) : markerTooltipElementValue;
327
+ }
301
328
  content = '<table class = "e-gantt-tooltiptable"><tbody><tr><td>' +
302
- this.parent.getFormatedDate(this.parent.dateValidationModule.getDateFromFormat(markerTooltipElement.day), this.parent.getDateFormat()) +
303
- '</td></tr><tr><td>' +
304
- markerLabel + '</td></tr></tbody></table>';
329
+ markerTooltipElementValue + '</td></tr><tr><td>' + (this.parent.disableHtmlEncode ? markerLabel.replace(/</g, "&lt;").replace(/>/g, "&gt;") : markerLabel) + '</td></tr></tbody></table>';
305
330
  break;
306
331
  }
307
332
  case 'connectorLine':
308
333
  {
334
+ var fromNameValue = parent.tooltipModule.predecessorTooltipData.fromName;
335
+ var fromIdValue = parent.tooltipModule.predecessorTooltipData.fromId;
336
+ var toNameValue = parent.tooltipModule.predecessorTooltipData.toName;
337
+ var toIdValue = parent.tooltipModule.predecessorTooltipData.toId;
338
+ var linkTextValue = parent.tooltipModule.predecessorTooltipData.linkText;
339
+ var offsetStringValue = parent.tooltipModule.predecessorTooltipData.offsetString;
340
+ if (this.parent.enableHtmlSanitizer) {
341
+ fromNameValue = typeof (fromNameValue) === 'string' ? SanitizeHtmlHelper.sanitize(fromNameValue) : fromNameValue;
342
+ fromIdValue = typeof (fromIdValue) === 'string' ? SanitizeHtmlHelper.sanitize(fromIdValue) : fromIdValue;
343
+ toNameValue = typeof (toNameValue) === 'string' ? SanitizeHtmlHelper.sanitize(toNameValue) : toNameValue;
344
+ toIdValue = typeof (toIdValue) === 'string' ? SanitizeHtmlHelper.sanitize(toIdValue) : toIdValue;
345
+ linkTextValue = typeof (linkTextValue) === 'string' ? SanitizeHtmlHelper.sanitize(linkTextValue) : linkTextValue;
346
+ offsetStringValue = typeof (offsetStringValue) === 'string' ? SanitizeHtmlHelper.sanitize(offsetStringValue) : offsetStringValue;
347
+ }
309
348
  content = '<table class = "e-gantt-tooltiptable"><tbody><tr><td class = "e-gantt-tooltip-label">' +
310
349
  this.parent.localeObj.getConstant('from') + '</td><td>:</td>' +
311
- '<td class = "e-gantt-tooltip-value">' + parent.tooltipModule.predecessorTooltipData.fromName + ' (' +
312
- parent.tooltipModule.predecessorTooltipData.fromId + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' +
350
+ '<td class = "e-gantt-tooltip-value">' + (this.parent.disableHtmlEncode ? fromNameValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : fromNameValue) + ' (' +
351
+ (this.parent.disableHtmlEncode ? (typeof (fromIdValue) === 'string' ? fromIdValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : fromIdValue) : fromIdValue) + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' +
313
352
  this.parent.localeObj.getConstant('to') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
314
- parent.tooltipModule.predecessorTooltipData.toName +
315
- ' (' + parent.tooltipModule.predecessorTooltipData.toId + ')' +
316
- '</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('taskLink') +
317
- '</td><td>:</td><td class = "e-gantt-tooltip-value"> ' + parent.tooltipModule.predecessorTooltipData.linkText +
353
+ (this.parent.disableHtmlEncode ? toNameValue.replace(/</g, "&lt;").replace(/>/g, "&gt;") : toNameValue) + ' (' + toIdValue + ')' + '</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('taskLink') +
354
+ '</td><td>:</td><td class = "e-gantt-tooltip-value"> ' + linkTextValue +
318
355
  '</td></tr><tr><td class = "e-gantt-tooltip-label">' + this.parent.localeObj.getConstant('lag') +
319
356
  '</td><td>:</td><td class = "e-gantt-tooltip-value">' +
320
- parent.tooltipModule.predecessorTooltipData.offsetString + '</td></tr></tbody></table>';
357
+ offsetStringValue + '</td></tr></tbody></table>';
321
358
  break;
322
359
  }
323
360
  case 'indicator':
324
361
  if (args.target.title.length) {
325
- content = '<table class = "e-gantt-tooltiptable"><tbody><tr>' + args.target.title + '</tr></tbody></table>';
362
+ var titleValue = args.target.title;
363
+ if (this.parent.enableHtmlSanitizer && typeof (titleValue) === 'string') {
364
+ titleValue = SanitizeHtmlHelper.sanitize(titleValue);
365
+ }
366
+ content = '<table class = "e-gantt-tooltiptable"><tbody><tr>' + titleValue + '</tr></tbody></table>';
326
367
  }
327
368
  break;
328
369
  case 'timeline':
329
- content = '<table class = "e-gantt-tooltiptable"><tbody><tr>' + args.target.title + '</tr></tbody></table>';
370
+ var timlineTitleValue = args.target.title;
371
+ if (this.parent.enableHtmlSanitizer && typeof (timlineTitleValue) === 'string') {
372
+ timlineTitleValue = SanitizeHtmlHelper.sanitize(timlineTitleValue);
373
+ }
374
+ content = '<table class = "e-gantt-tooltiptable"><tbody><tr>' + timlineTitleValue + '</tr></tbody></table>';
330
375
  break;
331
376
  case 'manualtaskbar':
332
377
  {
378
+ var autoStartDateValue = this.parent.getFormatedDate(data.autoStartDate, this.parent.getDateFormat());
379
+ var autoEndDateValue = this.parent.getFormatedDate(data.autoEndDate, this.parent.getDateFormat());
380
+ var durationUnitValue = this.parent.getDurationString(data.duration, data.durationUnit);
381
+ var manualStartDateValue = this.parent.getFormatedDate(data.startDate, this.parent.getDateFormat());
382
+ var manualEndDateValue = this.parent.getFormatedDate(data.endDate, this.parent.getDateFormat());
383
+ if (this.parent.enableHtmlSanitizer) {
384
+ autoStartDateValue = typeof (autoStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoStartDateValue) : autoStartDateValue;
385
+ autoEndDateValue = typeof (autoEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoEndDateValue) : autoEndDateValue;
386
+ durationUnitValue = typeof (durationUnitValue) === 'string' ? SanitizeHtmlHelper.sanitize(durationUnitValue) : durationUnitValue;
387
+ manualStartDateValue = typeof (manualStartDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(manualStartDateValue) : manualStartDateValue;
388
+ manualEndDateValue = typeof (manualEndDateValue) === 'string' ? SanitizeHtmlHelper.sanitize(manualEndDateValue) : manualEndDateValue;
389
+ }
333
390
  var autoStartDate = data.autoStartDate ? '<tr><td class = "e-gantt-tooltip-label">' +
334
391
  this.parent.localeObj.getConstant('subTasksStartDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value"> ' +
335
- this.parent.getFormatedDate(data.autoStartDate, this.parent.getDateFormat()) + '</td></tr>' : '';
392
+ autoStartDateValue + '</td></tr>' : '';
336
393
  var autoEndDate = data.autoEndDate ? '<tr><td class = "e-gantt-tooltip-label">' +
337
394
  this.parent.localeObj.getConstant('subTasksEndDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
338
- this.parent.getFormatedDate(data.autoEndDate, this.parent.getDateFormat()) + '</td></tr>' : '';
395
+ autoEndDateValue + '</td></tr>' : '';
339
396
  var durationValue = !isNullOrUndefined(data.duration) ? '<tr><td class = "e-gantt-tooltip-label">' +
340
397
  this.parent.localeObj.getConstant('duration') + '</td><td>:</td>' +
341
- '<td class = "e-gantt-tooltip-value"> ' + this.parent.getDurationString(data.duration, data.durationUnit) +
398
+ '<td class = "e-gantt-tooltip-value"> ' + durationUnitValue +
342
399
  '</td></tr>' : '';
343
400
  var manualStartDate = data.startDate ? '<tr><td class = "e-gantt-tooltip-label">' +
344
401
  this.parent.localeObj.getConstant('startDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value"> ' +
345
- this.parent.getFormatedDate(data.startDate, this.parent.getDateFormat()) + '</td></tr>' : '';
402
+ manualStartDateValue + '</td></tr>' : '';
346
403
  var manualEndDate = data.endDate ? '<tr><td class = "e-gantt-tooltip-label">' +
347
404
  this.parent.localeObj.getConstant('endDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
348
- this.parent.getFormatedDate(data.endDate, this.parent.getDateFormat()) + '</td></tr>' : '';
405
+ manualEndDateValue + '</td></tr>' : '';
349
406
  content = '<table class = "e-gantt-tooltiptable"><tbody>' +
350
407
  taskName + manualStartDate + autoStartDate + manualEndDate + autoEndDate + durationValue + '</tbody></table>';
351
408
  break;
352
409
  }
353
410
  case 'manualmilestone':
354
411
  {
412
+ var autoStartValue = this.parent.getFormatedDate(data.autoStartDate, this.parent.getDateFormat());
413
+ var autoEndValue = this.parent.getFormatedDate(data.autoEndDate, this.parent.getDateFormat());
414
+ var dateValue = this.parent.getFormatedDate(data.startDate, this.parent.getDateFormat());
415
+ if (this.parent.enableHtmlSanitizer) {
416
+ autoStartValue = typeof (autoStartValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoStartValue) : autoStartValue;
417
+ autoEndValue = typeof (autoEndValue) === 'string' ? SanitizeHtmlHelper.sanitize(autoEndValue) : autoEndValue;
418
+ dateValue = typeof (dateValue) === 'string' ? SanitizeHtmlHelper.sanitize(dateValue) : dateValue;
419
+ }
355
420
  var autoStart = data.autoStartDate ? '<tr><td class = "e-gantt-tooltip-label">' +
356
421
  this.parent.localeObj.getConstant('subTasksStartDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value"> ' +
357
- this.parent.getFormatedDate(data.autoStartDate, this.parent.getDateFormat()) + '</td></tr>' : '';
422
+ autoStartValue + '</td></tr>' : '';
358
423
  var autoEnd = data.autoEndDate ? '<tr><td class = "e-gantt-tooltip-label">' +
359
424
  this.parent.localeObj.getConstant('subTasksEndDate') + '</td><td>:</td>' + '<td class = "e-gantt-tooltip-value">' +
360
- this.parent.getFormatedDate(data.autoEndDate, this.parent.getDateFormat()) + '</td></tr>' : '';
425
+ autoEndValue + '</td></tr>' : '';
361
426
  var date = '<tr><td class = "e-gantt-tooltip-label"> Date</td><td>:</td>' +
362
427
  '<td class = "e-gantt-tooltip-value">' +
363
- this.parent.getFormatedDate(data.startDate, this.parent.getDateFormat()) + '</tr>';
428
+ dateValue + '</tr>';
364
429
  content = '<table class = "e-gantt-tooltiptable"><tbody>' +
365
430
  taskName + date + autoStart + autoEnd + '</tbody></table>';
366
431
  break;
@@ -389,6 +454,9 @@ var Tooltip = /** @class */ (function () {
389
454
  */
390
455
  Tooltip.prototype.getPredecessorTooltipData = function (args) {
391
456
  var predeceesorParent = args.target.parentElement.id;
457
+ if (this.parent.enableHtmlSanitizer && typeof (predeceesorParent) === 'string') {
458
+ predeceesorParent = SanitizeHtmlHelper.sanitize(predeceesorParent);
459
+ }
392
460
  var taskIds = predeceesorParent.match(/ConnectorLineparent(.*)child(.*)/);
393
461
  taskIds.shift();
394
462
  var fromTask;
@@ -312,6 +312,12 @@
312
312
  .e-bigger .e-gantt .e-gantt-tree-grid-pane .e-columnheader .e-headercell {
313
313
  height: 63px !important; /* stylelint-disable-line declaration-no-important */
314
314
  }
315
+ .e-bigger .e-gantt .e-gantt-dialog .e-tab .e-tab-header {
316
+ padding-left: 12px;
317
+ }
318
+ .e-bigger .e-gantt .e-gantt-dialog .e-tab .e-tab-header .e-indicator {
319
+ display: block;
320
+ }
315
321
  .e-bigger .e-gantt .e-dialog .e-dlg-header-content {
316
322
  padding: 16px 4px 16px 16px !important; /* stylelint-disable-line declaration-no-important */
317
323
  }
@@ -341,7 +347,7 @@
341
347
  border-radius: 6px !important;
342
348
  padding: 32px 16px 16px !important;
343
349
  }
344
- .e-bigger .e-grid .e-columnmenu {
350
+ .e-bigger .e-gantt .e-grid .e-columnmenu {
345
351
  top: 40px;
346
352
  }
347
353
  .e-bigger .e-gantt-dialog .e-dialog {
@@ -380,6 +386,7 @@
380
386
  border-radius: 50%;
381
387
  height: auto !important; /* stylelint-disable-line declaration-no-important */
382
388
  width: auto;
389
+ box-shadow: none;
383
390
  }
384
391
  .e-bigger .e-gantt-dialog .e-tab .e-tab-header .e-toolbar-item.e-active {
385
392
  margin-left: 5px !important;
@@ -1268,7 +1275,6 @@
1268
1275
  outline: 1px solid;
1269
1276
  outline-offset: 2px;
1270
1277
  }
1271
-
1272
1278
  .e-gantt-dialog .e-tab .e-tab-header {
1273
1279
  padding-left: 12px;
1274
1280
  }
@@ -1361,6 +1367,7 @@
1361
1367
  border-radius: 50%;
1362
1368
  height: auto !important; /* stylelint-disable-line declaration-no-important */
1363
1369
  width: auto;
1370
+ box-shadow: none;
1364
1371
  }
1365
1372
 
1366
1373
  .e-icon-rowselect::before {
@@ -1665,13 +1672,13 @@
1665
1672
  }
1666
1673
  .e-gantt .e-gantt-chart .e-gantt-parent-progressbar-inner-div {
1667
1674
  background-color: #4cc7ba;
1668
- border: 1px solid #4cc7ba;
1675
+ border: 0px solid #4cc7ba;
1669
1676
  border-radius: 4px;
1670
1677
  }
1671
1678
  .e-gantt .e-gantt-chart .e-gantt-child-progressbar-inner-div {
1672
1679
  background-color: #0070f0;
1673
- border: 1px solid #0070f0;
1674
- border-radius: 4px;
1680
+ border: 0px solid #0070f0;
1681
+ border-radius: 3px;
1675
1682
  }
1676
1683
  .e-gantt .e-gantt-chart .e-gantt-child-manualtaskbar {
1677
1684
  background-color: #8dd1c4;
@@ -1682,7 +1689,7 @@
1682
1689
  }
1683
1690
  .e-gantt .e-gantt-chart .e-gantt-child-manualprogressbar {
1684
1691
  background-color: #67c1b2;
1685
- border: #4fb29f;
1692
+ outline: #4fb29f;
1686
1693
  }
1687
1694
  .e-gantt .e-gantt-chart .e-gantt-critical-child-manualprogressbar {
1688
1695
  background-color: #67c1b2;
@@ -1742,6 +1749,18 @@
1742
1749
  .e-gantt .e-gantt-chart .e-line {
1743
1750
  border-color: #0070f0;
1744
1751
  }
1752
+ .e-gantt .e-gantt-chart .e-connector-line {
1753
+ stroke: #0070f0;
1754
+ }
1755
+ .e-gantt .e-gantt-chart .e-critical-line {
1756
+ stroke: #d13438;
1757
+ }
1758
+ .e-gantt .e-gantt-chart .e-connector-line-arrow {
1759
+ fill: #0070f0;
1760
+ }
1761
+ .e-gantt .e-gantt-chart .e-critical-line-arrow {
1762
+ fill: #d13438;
1763
+ }
1745
1764
  .e-gantt .e-gantt-chart .e-connector-line-right-arrow {
1746
1765
  border-left-color: #0070f0;
1747
1766
  }
@@ -1793,7 +1812,10 @@
1793
1812
  padding-right: 25px;
1794
1813
  }
1795
1814
  .e-gantt .e-gantt-chart .e-connectorpoint-right {
1796
- margin-left: 2px;
1815
+ margin-left: 3px;
1816
+ }
1817
+ .e-gantt .e-gantt-chart .e-connectorpoint-left {
1818
+ margin-right: 3px;
1797
1819
  }
1798
1820
  .e-gantt .e-gantt-chart .e-right-connectorpoint-outer-div,
1799
1821
  .e-gantt .e-gantt-chart .e-left-connectorpoint-outer-div {
@@ -2054,14 +2076,15 @@
2054
2076
 
2055
2077
  .e-gantt .e-gantt-chart .e-gantt-child-critical-taskbar-inner-div {
2056
2078
  background-color: #F3D8DA;
2057
- border: 1px solid #F3D8DA;
2079
+ outline: 1px solid #F3D8DA;
2058
2080
  border-radius: 4px;
2059
2081
  }
2060
2082
 
2061
2083
  .e-gantt .e-gantt-chart .e-gantt-child-critical-progressbar-inner-div {
2062
2084
  background-color: #D13438;
2063
- border: 1px solid #0070f0;
2064
- border-radius: 4px;
2085
+ border: 0px solid #0070f0;
2086
+ position: absolute;
2087
+ border-radius: 3px;
2065
2088
  }
2066
2089
 
2067
2090
  .e-gantt .e-gantt-chart .e-gantt-critical-unscheduled-taskbar {
@@ -456,6 +456,12 @@
456
456
  .e-bigger .e-gantt .e-gantt-tree-grid-pane .e-columnheader .e-headercell {
457
457
  height: 63px !important; /* stylelint-disable-line declaration-no-important */
458
458
  }
459
+ .e-bigger .e-gantt .e-gantt-dialog .e-tab .e-tab-header {
460
+ padding-left: 12px;
461
+ }
462
+ .e-bigger .e-gantt .e-gantt-dialog .e-tab .e-tab-header .e-indicator {
463
+ display: block;
464
+ }
459
465
  .e-bigger .e-gantt .e-dialog .e-dlg-header-content {
460
466
  padding: 16px 4px 16px 16px !important; /* stylelint-disable-line declaration-no-important */
461
467
  }
@@ -485,7 +491,7 @@
485
491
  border-radius: 6px !important;
486
492
  padding: 32px 16px 16px !important;
487
493
  }
488
- .e-bigger .e-grid .e-columnmenu {
494
+ .e-bigger .e-gantt .e-grid .e-columnmenu {
489
495
  top: 40px;
490
496
  }
491
497
  .e-bigger .e-gantt-dialog .e-dialog {
@@ -1412,7 +1418,6 @@
1412
1418
  outline: 1px solid;
1413
1419
  outline-offset: 2px;
1414
1420
  }
1415
-
1416
1421
  .e-gantt-dialog .e-tab .e-tab-header {
1417
1422
  padding-left: 12px;
1418
1423
  }
@@ -1809,13 +1814,13 @@
1809
1814
  }
1810
1815
  .e-gantt .e-gantt-chart .e-gantt-parent-progressbar-inner-div {
1811
1816
  background-color: #555;
1812
- border: 1px solid #555;
1817
+ border: 0px solid #555;
1813
1818
  border-radius: 4px;
1814
1819
  }
1815
1820
  .e-gantt .e-gantt-chart .e-gantt-child-progressbar-inner-div {
1816
1821
  background-color: #21527d;
1817
- border: 1px solid #21527d;
1818
- border-radius: 4px;
1822
+ border: 0px solid #21527d;
1823
+ border-radius: 3px;
1819
1824
  }
1820
1825
  .e-gantt .e-gantt-chart .e-gantt-child-manualtaskbar {
1821
1826
  background-color: #7538C9;
@@ -1826,7 +1831,7 @@
1826
1831
  }
1827
1832
  .e-gantt .e-gantt-chart .e-gantt-child-manualprogressbar {
1828
1833
  background-color: #572A96;
1829
- border: 0px;
1834
+ outline: 0px;
1830
1835
  }
1831
1836
  .e-gantt .e-gantt-chart .e-gantt-critical-child-manualprogressbar {
1832
1837
  background-color: #572A96;
@@ -1886,6 +1891,18 @@
1886
1891
  .e-gantt .e-gantt-chart .e-line {
1887
1892
  border-color: #21527d;
1888
1893
  }
1894
+ .e-gantt .e-gantt-chart .e-connector-line {
1895
+ stroke: #21527d;
1896
+ }
1897
+ .e-gantt .e-gantt-chart .e-critical-line {
1898
+ stroke: #d13438;
1899
+ }
1900
+ .e-gantt .e-gantt-chart .e-connector-line-arrow {
1901
+ fill: #21527d;
1902
+ }
1903
+ .e-gantt .e-gantt-chart .e-critical-line-arrow {
1904
+ fill: #d13438;
1905
+ }
1889
1906
  .e-gantt .e-gantt-chart .e-connector-line-right-arrow {
1890
1907
  border-left-color: #21527d;
1891
1908
  }
@@ -1937,7 +1954,10 @@
1937
1954
  padding-right: 25px;
1938
1955
  }
1939
1956
  .e-gantt .e-gantt-chart .e-connectorpoint-right {
1940
- margin-left: 2px;
1957
+ margin-left: 3px;
1958
+ }
1959
+ .e-gantt .e-gantt-chart .e-connectorpoint-left {
1960
+ margin-right: 3px;
1941
1961
  }
1942
1962
  .e-gantt .e-gantt-chart .e-right-connectorpoint-outer-div,
1943
1963
  .e-gantt .e-gantt-chart .e-left-connectorpoint-outer-div {
@@ -2198,14 +2218,15 @@
2198
2218
 
2199
2219
  .e-gantt .e-gantt-chart .e-gantt-child-critical-taskbar-inner-div {
2200
2220
  background-color: #F3D8DA;
2201
- border: 1px solid #F3D8DA;
2221
+ outline: 1px solid #F3D8DA;
2202
2222
  border-radius: 4px;
2203
2223
  }
2204
2224
 
2205
2225
  .e-gantt .e-gantt-chart .e-gantt-child-critical-progressbar-inner-div {
2206
2226
  background-color: #D13438;
2207
- border: 1px solid #21527d;
2208
- border-radius: 4px;
2227
+ border: 0px solid #21527d;
2228
+ position: absolute;
2229
+ border-radius: 3px;
2209
2230
  }
2210
2231
 
2211
2232
  .e-gantt .e-gantt-chart .e-gantt-critical-unscheduled-taskbar {
@@ -637,6 +637,12 @@
637
637
  .e-bigger .e-gantt .e-gantt-tree-grid-pane .e-columnheader .e-headercell {
638
638
  height: 63px !important; /* stylelint-disable-line declaration-no-important */
639
639
  }
640
+ .e-bigger .e-gantt .e-gantt-dialog .e-tab .e-tab-header {
641
+ padding-left: 12px;
642
+ }
643
+ .e-bigger .e-gantt .e-gantt-dialog .e-tab .e-tab-header .e-indicator {
644
+ display: block;
645
+ }
640
646
  .e-bigger .e-gantt .e-dialog .e-dlg-header-content {
641
647
  padding: 16px 4px 16px 16px !important; /* stylelint-disable-line declaration-no-important */
642
648
  }
@@ -666,7 +672,7 @@
666
672
  border-radius: 6px !important;
667
673
  padding: 32px 16px 16px !important;
668
674
  }
669
- .e-bigger .e-grid .e-columnmenu {
675
+ .e-bigger .e-gantt .e-grid .e-columnmenu {
670
676
  top: 38px;
671
677
  }
672
678
  .e-bigger .e-gantt-dialog .e-dialog {
@@ -1596,7 +1602,6 @@
1596
1602
  outline: 1px solid;
1597
1603
  outline-offset: 2px;
1598
1604
  }
1599
-
1600
1605
  .e-gantt-dialog .e-tab .e-tab-header {
1601
1606
  padding-left: 12px;
1602
1607
  }
@@ -1999,7 +2004,7 @@
1999
2004
  .e-gantt .e-gantt-chart .e-gantt-child-progressbar-inner-div {
2000
2005
  background-color: #0056b3;
2001
2006
  border: 0px;
2002
- border-radius: 4px;
2007
+ border-radius: 3px;
2003
2008
  }
2004
2009
  .e-gantt .e-gantt-chart .e-gantt-child-manualtaskbar {
2005
2010
  background-color: #8553F1;
@@ -2010,7 +2015,7 @@
2010
2015
  }
2011
2016
  .e-gantt .e-gantt-chart .e-gantt-child-manualprogressbar {
2012
2017
  background-color: #6628EE;
2013
- border: 0px;
2018
+ outline: 0px;
2014
2019
  }
2015
2020
  .e-gantt .e-gantt-chart .e-gantt-critical-child-manualprogressbar {
2016
2021
  background-color: #6628EE;
@@ -2070,6 +2075,18 @@
2070
2075
  .e-gantt .e-gantt-chart .e-line {
2071
2076
  border-color: #0056b3;
2072
2077
  }
2078
+ .e-gantt .e-gantt-chart .e-connector-line {
2079
+ stroke: #0056b3;
2080
+ }
2081
+ .e-gantt .e-gantt-chart .e-critical-line {
2082
+ stroke: #d13438;
2083
+ }
2084
+ .e-gantt .e-gantt-chart .e-connector-line-arrow {
2085
+ fill: #0056b3;
2086
+ }
2087
+ .e-gantt .e-gantt-chart .e-critical-line-arrow {
2088
+ fill: #d13438;
2089
+ }
2073
2090
  .e-gantt .e-gantt-chart .e-connector-line-right-arrow {
2074
2091
  border-left-color: #0056b3;
2075
2092
  }
@@ -2121,7 +2138,10 @@
2121
2138
  padding-right: 25px;
2122
2139
  }
2123
2140
  .e-gantt .e-gantt-chart .e-connectorpoint-right {
2124
- margin-left: 2px;
2141
+ margin-left: 3px;
2142
+ }
2143
+ .e-gantt .e-gantt-chart .e-connectorpoint-left {
2144
+ margin-right: 3px;
2125
2145
  }
2126
2146
  .e-gantt .e-gantt-chart .e-right-connectorpoint-outer-div,
2127
2147
  .e-gantt .e-gantt-chart .e-left-connectorpoint-outer-div {
@@ -2382,14 +2402,15 @@
2382
2402
 
2383
2403
  .e-gantt .e-gantt-chart .e-gantt-child-critical-taskbar-inner-div {
2384
2404
  background-color: #F3D8DA;
2385
- border: 1px solid #F3D8DA;
2405
+ outline: 1px solid #F3D8DA;
2386
2406
  border-radius: 4px;
2387
2407
  }
2388
2408
 
2389
2409
  .e-gantt .e-gantt-chart .e-gantt-child-critical-progressbar-inner-div {
2390
2410
  background-color: #D13438;
2391
2411
  border: 0px;
2392
- border-radius: 4px;
2412
+ position: absolute;
2413
+ border-radius: 3px;
2393
2414
  }
2394
2415
 
2395
2416
  .e-gantt .e-gantt-chart .e-gantt-critical-unscheduled-taskbar {