@syncfusion/ej2-gantt 22.2.7 → 22.2.9

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 (58) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/ej2-gantt.min.js +2 -2
  3. package/dist/ej2-gantt.umd.min.js +2 -2
  4. package/dist/ej2-gantt.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-gantt.es2015.js +102 -51
  6. package/dist/es6/ej2-gantt.es2015.js.map +1 -1
  7. package/dist/es6/ej2-gantt.es5.js +102 -51
  8. package/dist/es6/ej2-gantt.es5.js.map +1 -1
  9. package/dist/global/ej2-gantt.min.js +2 -2
  10. package/dist/global/ej2-gantt.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +18 -18
  13. package/src/gantt/actions/context-menu.js +8 -2
  14. package/src/gantt/actions/dependency.js +1 -1
  15. package/src/gantt/actions/taskbar-edit.js +19 -1
  16. package/src/gantt/base/css-constants.d.ts +1 -0
  17. package/src/gantt/base/css-constants.js +1 -0
  18. package/src/gantt/base/gantt.js +10 -3
  19. package/src/gantt/base/task-processor.js +5 -4
  20. package/src/gantt/renderer/chart-rows.js +13 -1
  21. package/src/gantt/renderer/edit-tooltip.js +7 -7
  22. package/src/gantt/renderer/timeline.js +8 -1
  23. package/src/gantt/renderer/tooltip.js +28 -29
  24. package/styles/bootstrap-dark.css +1 -1
  25. package/styles/bootstrap.css +1 -1
  26. package/styles/bootstrap4.css +1 -1
  27. package/styles/bootstrap5-dark.css +1 -1
  28. package/styles/bootstrap5.css +1 -1
  29. package/styles/fabric-dark.css +1 -1
  30. package/styles/fabric.css +1 -1
  31. package/styles/fluent-dark.css +1 -1
  32. package/styles/fluent.css +1 -1
  33. package/styles/gantt/_layout.scss +1 -1
  34. package/styles/gantt/bootstrap-dark.css +1 -1
  35. package/styles/gantt/bootstrap.css +1 -1
  36. package/styles/gantt/bootstrap4.css +1 -1
  37. package/styles/gantt/bootstrap5-dark.css +1 -1
  38. package/styles/gantt/bootstrap5.css +1 -1
  39. package/styles/gantt/fabric-dark.css +1 -1
  40. package/styles/gantt/fabric.css +1 -1
  41. package/styles/gantt/fluent-dark.css +1 -1
  42. package/styles/gantt/fluent.css +1 -1
  43. package/styles/gantt/highcontrast-light.css +1 -1
  44. package/styles/gantt/highcontrast.css +1 -1
  45. package/styles/gantt/material-dark.css +1 -1
  46. package/styles/gantt/material.css +1 -1
  47. package/styles/gantt/material3-dark.css +1 -1
  48. package/styles/gantt/material3.css +1 -1
  49. package/styles/gantt/tailwind-dark.css +1 -1
  50. package/styles/gantt/tailwind.css +1 -1
  51. package/styles/highcontrast-light.css +1 -1
  52. package/styles/highcontrast.css +1 -1
  53. package/styles/material-dark.css +1 -1
  54. package/styles/material.css +1 -1
  55. package/styles/material3-dark.css +1 -1
  56. package/styles/material3.css +1 -1
  57. package/styles/tailwind-dark.css +1 -1
  58. package/styles/tailwind.css +1 -1
@@ -1701,7 +1701,7 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
1701
1701
  }
1702
1702
  }
1703
1703
  if (!this.parent.taskFields.child) {
1704
- this.parent.taskFields.child = 'Children';
1704
+ this.parent.setProperties({ taskFields: { child: 'Children' } }, true);
1705
1705
  }
1706
1706
  this.constructDataSource(data);
1707
1707
  hierarchicalData = this.hierarchyData;
@@ -2149,6 +2149,7 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
2149
2149
  segment.endDate = !taskSettings.duration && taskSettings.endDate
2150
2150
  && segment.endDate > data.ganttProperties.endDate ? data.ganttProperties.endDate : segment.endDate;
2151
2151
  segment.offsetDuration = 1;
2152
+ segment.duration = this.getDuration(segment.startDate, segment.endDate, data.ganttProperties.durationUnit, data.ganttProperties.isAutoSchedule, data.ganttProperties.isMilestone);
2152
2153
  }
2153
2154
  }
2154
2155
  else {
@@ -2757,17 +2758,17 @@ var TaskProcessor = /** @__PURE__ @class */ (function (_super) {
2757
2758
  var isValid = false;
2758
2759
  var modifiedsDate = new Date(startDate.getTime());
2759
2760
  var hour = 0;
2760
- if (ganttData && ganttData.durationUnit == 'hour') {
2761
+ if (!isNullOrUndefined(ganttData) && ganttData.durationUnit == 'hour') {
2761
2762
  modifiedsDate = new Date(modifiedsDate.getTime() + ganttData.duration * 60 * 60 * 1000);
2762
2763
  }
2763
- if (ganttData && ganttData.durationUnit == 'minute') {
2764
+ if (!isNullOrUndefined(ganttData) && (ganttData.durationUnit == 'minute') || !isNullOrUndefined(ganttData) && ganttData.durationUnit == "day" && ganttData.duration < 1) {
2764
2765
  modifiedsDate = new Date(modifiedsDate.getTime() + ganttData.duration * 60 * 1000);
2765
2766
  }
2766
2767
  for (var i = 0; i < this.parent.dayWorkingTime.length; i++) {
2767
2768
  hour = hour + this.parent.dayWorkingTime[i].to - this.parent.dayWorkingTime[i].from;
2768
2769
  }
2769
2770
  var dateDiff = modifiedsDate.getTime() - sDate.getTime();
2770
- if (ganttData && ganttData.durationUnit == 'minute' && ganttData.duration < (hour * 60)) {
2771
+ if (!isNullOrUndefined(ganttData) && (ganttData.durationUnit == 'minute' && ganttData.duration < (hour * 60)) || !isNullOrUndefined(ganttData) && ganttData.durationUnit == "day" && ganttData.duration < 1) {
2771
2772
  if (tierMode === 'Day') {
2772
2773
  if ((Math.floor((dateDiff / (1000 * 60 * 60)) % 24) >= hour || dateDiff === 0)) {
2773
2774
  isValid = true;
@@ -4080,6 +4081,7 @@ var chartRowCell = 'e-chart-row-cell';
4080
4081
  var chartRow = 'e-chart-row';
4081
4082
  var rowExpand = 'e-row-expand';
4082
4083
  var rowCollapse = 'e-row-collapse';
4084
+ var collapseParent = 'e-collapse-parent';
4083
4085
  var taskBarLeftResizer = 'e-taskbar-left-resizer';
4084
4086
  var taskBarRightResizer = 'e-taskbar-right-resizer';
4085
4087
  var childProgressResizer = 'e-child-progress-resizer';
@@ -6548,6 +6550,13 @@ var Timeline = /** @__PURE__ @class */ (function () {
6548
6550
  tier = 'bottomTier';
6549
6551
  tr = null;
6550
6552
  }
6553
+ if (this.parent.height === "Auto" || this.parent.timelineModule.isSingleTier) {
6554
+ var timelineContainer = this.parent.element.getElementsByClassName('e-timeline-header-container')[0]['offsetHeight'];
6555
+ this.parent.element.getElementsByClassName('e-chart-scroll-container e-content')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
6556
+ if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-gridcontent')[0])) {
6557
+ this.parent.treeGrid.element.getElementsByClassName('e-gridcontent')[0]['style'].height = 'calc(100% - ' + timelineContainer + 'px)';
6558
+ }
6559
+ }
6551
6560
  };
6552
6561
  /**
6553
6562
  * To validate timeline tier count.
@@ -7045,7 +7054,7 @@ var Timeline = /** @__PURE__ @class */ (function () {
7045
7054
  // PDf export collection
7046
7055
  timelineCell.value = value;
7047
7056
  timelineCell.isWeekend = isWeekendCell;
7048
- timelineCell.width = cellWidth;
7057
+ timelineCell.width = thWidth;
7049
7058
  return parentTr;
7050
7059
  };
7051
7060
  /**
@@ -10420,7 +10429,7 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
10420
10429
  width = endLeft - left;
10421
10430
  }
10422
10431
  else {
10423
- left = ganttProp.left < ganttProp.autoLeft ? ganttProp.left : ganttProp.autoLeft;
10432
+ left = ganttProp.left < ganttProp.autoLeft ? ganttProp.autoLeft : ganttProp.left;
10424
10433
  width = ganttProp.autoWidth;
10425
10434
  }
10426
10435
  return left + width;
@@ -10931,6 +10940,18 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
10931
10940
  }
10932
10941
  }
10933
10942
  else if (taskbarElement) {
10943
+ if (taskbarElement && this.parent.enableVirtualization && !args.data.expanded) {
10944
+ var childElement = trElement.querySelector('.' + collapseParent);
10945
+ if (childElement) {
10946
+ for (var i = 0; i < childElement.childNodes.length; i++) {
10947
+ var taskbar = childElement.childNodes[i];
10948
+ var mainTaskbar = taskbar.querySelector('.' + traceChildTaskBar);
10949
+ if (mainTaskbar) {
10950
+ mainTaskbar.style.backgroundColor = args.taskbarBgColor;
10951
+ }
10952
+ }
10953
+ }
10954
+ }
10934
10955
  if (taskbarElement.querySelector(classCollections[0]) &&
10935
10956
  getComputedStyle(taskbarElement.querySelector(classCollections[0])).backgroundColor !== args.taskbarBgColor) {
10936
10957
  taskbarElement.querySelector(classCollections[0]).style.backgroundColor = args.taskbarBgColor;
@@ -11202,10 +11223,10 @@ var ChartRows = /** @__PURE__ @class */ (function (_super) {
11202
11223
  this.templateData = record;
11203
11224
  var parentTrNode = this.getTableTrNode();
11204
11225
  var leftLabelNode = this.leftLabelContainer();
11205
- var collapseParent = createElement('div', {
11226
+ var collapseParent$$1 = createElement('div', {
11206
11227
  className: 'e-collapse-parent'
11207
11228
  });
11208
- parentTrNode[0].childNodes[0].childNodes[0].appendChild(collapseParent);
11229
+ parentTrNode[0].childNodes[0].childNodes[0].appendChild(collapseParent$$1);
11209
11230
  var tasks = this.parent.dataOperation.setSortedChildTasks(record);
11210
11231
  this.parent.dataOperation.updateOverlappingIndex(tasks);
11211
11232
  var tRow;
@@ -11672,7 +11693,7 @@ var Dependency = /** @__PURE__ @class */ (function () {
11672
11693
  ganttRecord = predecessorsCollection[count];
11673
11694
  if ((!ganttRecord.hasChildRecords && !this.parent.allowParentDependency) || this.parent.allowParentDependency) {
11674
11695
  this.updatePredecessorHelper(ganttRecord, predecessorsCollection);
11675
- if (!ganttRecord.ganttProperties.isAutoSchedule) {
11696
+ if (!ganttRecord.ganttProperties.isAutoSchedule && this.parent.editSettings.allowEditing) {
11676
11697
  this.parent.connectorLineEditModule['calculateOffset'](ganttRecord);
11677
11698
  }
11678
11699
  }
@@ -13459,35 +13480,34 @@ var Tooltip$1 = /** @__PURE__ @class */ (function () {
13459
13480
  */
13460
13481
  Tooltip$$1.prototype.updateTooltipPosition = function (args) {
13461
13482
  args.element.style.visibility = 'visible';
13462
- if (isNullOrUndefined(this.tooltipMouseEvent) || args.target.classList.contains('e-notes-info')) {
13463
- return;
13464
- }
13465
- var postion = this.getPointorPosition(this.tooltipMouseEvent);
13466
- var containerPosition = this.parent.getOffsetRect(this.parent.chartPane);
13467
- var topEnd = containerPosition.top + this.parent.chartPane.offsetHeight;
13468
- var leftEnd = containerPosition.left + this.parent.chartPane.offsetWidth;
13469
- var tooltipPositionX = postion.x;
13470
- var tooltipPositionY = postion.y;
13471
- if (leftEnd < (tooltipPositionX + args.element.offsetWidth + 10)) {
13472
- while (leftEnd < (tooltipPositionX + args.element.offsetWidth + 10)) {
13473
- tooltipPositionX = leftEnd - args.element.offsetWidth - 10;
13474
- args.element.style.left = tooltipPositionX + 'px';
13475
- }
13476
- }
13477
- else {
13478
- tooltipPositionX = tooltipPositionX + 10;
13479
- args.element.style.left = tooltipPositionX + 'px';
13480
- }
13481
- if (window.innerHeight < args.element.offsetHeight + tooltipPositionY) {
13482
- tooltipPositionY = tooltipPositionY - args.element.offsetHeight - 10;
13483
- }
13484
- if ((topEnd < (tooltipPositionY + args.element.offsetHeight + 20))) {
13485
- tooltipPositionY = tooltipPositionY - args.element.offsetHeight - 10;
13486
- }
13487
- else {
13488
- tooltipPositionY = tooltipPositionY + 10;
13489
- }
13490
- args.element.style.top = tooltipPositionY + 'px';
13483
+ // if (isNullOrUndefined(this.tooltipMouseEvent) || args.target.classList.contains('e-notes-info')) {
13484
+ // return;
13485
+ // }
13486
+ // const postion: { x: number, y: number } = this.getPointorPosition(this.tooltipMouseEvent);
13487
+ // const containerPosition: { top: number, left: number, width?: number, height?: number } =
13488
+ // this.parent.getOffsetRect(this.parent.chartPane);
13489
+ // const topEnd: number = containerPosition.top + this.parent.chartPane.offsetHeight;
13490
+ // const leftEnd: number = containerPosition.left + this.parent.chartPane.offsetWidth;
13491
+ // let tooltipPositionX: number = postion.x;
13492
+ // let tooltipPositionY: number = postion.y;
13493
+ // if (leftEnd < (tooltipPositionX + args.element.offsetWidth + 10)) {
13494
+ // while (leftEnd < (tooltipPositionX + args.element.offsetWidth + 10)) {
13495
+ // tooltipPositionX = leftEnd - args.element.offsetWidth - 10;
13496
+ // args.element.style.left = tooltipPositionX + 'px';
13497
+ // }
13498
+ // } else {
13499
+ // tooltipPositionX = tooltipPositionX + 10;
13500
+ // args.element.style.left = tooltipPositionX + 'px';
13501
+ // }
13502
+ // if (window.innerHeight < args.element.offsetHeight + tooltipPositionY) {
13503
+ // tooltipPositionY = tooltipPositionY - args.element.offsetHeight - 10;
13504
+ // }
13505
+ // if ((topEnd < (tooltipPositionY + args.element.offsetHeight + 20))) {
13506
+ // tooltipPositionY = tooltipPositionY - args.element.offsetHeight - 10;
13507
+ // } else {
13508
+ // tooltipPositionY = tooltipPositionY + 10;
13509
+ // }
13510
+ // args.element.style.top = tooltipPositionY + 'px';
13491
13511
  };
13492
13512
  /**
13493
13513
  * Method to get mouse pointor position
@@ -14314,14 +14334,14 @@ var Gantt = /** @__PURE__ @class */ (function (_super) {
14314
14334
  };
14315
14335
  this.focusModule = new FocusModule(this);
14316
14336
  if (this.zoomingLevels.length === 0) {
14317
- this.zoomingLevels = this.getZoomingLevels();
14337
+ this.setProperties({ zoomingLevels: this.getZoomingLevels() }, true);
14318
14338
  }
14319
14339
  this.resourceFieldsMapping();
14320
14340
  if (isNullOrUndefined(this.resourceFields.unit)) { //set resourceUnit as unit if not mapping
14321
- this.resourceFields.unit = 'unit';
14341
+ this.setProperties({ resourceFields: { unit: 'unit' } }, true);
14322
14342
  }
14323
14343
  if (!isNullOrUndefined(this.taskFields.work)) {
14324
- this.taskType = 'FixedWork';
14344
+ this.setProperties({ taskType: 'FixedWork' }, true);
14325
14345
  }
14326
14346
  this.taskIds = [];
14327
14347
  };
@@ -14924,6 +14944,13 @@ var Gantt = /** @__PURE__ @class */ (function (_super) {
14924
14944
  if (this.enableCriticalPath && criticalModule && criticalModule.criticalPathCollection) {
14925
14945
  this.criticalPathModule.criticalConnectorLine(criticalModule.criticalPathCollection, criticalModule.detailPredecessorCollection, true, criticalModule.predecessorCollectionTaskIds);
14926
14946
  }
14947
+ this.calculateDimensions();
14948
+ var pane1 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[0];
14949
+ var pane2 = this.splitterModule.splitterObject.element.querySelectorAll('.e-pane')[1];
14950
+ this.splitterModule.splitterPreviousPositionGrid = pane1.scrollWidth + 1 + 'px';
14951
+ this.splitterModule.splitterPreviousPositionChart = pane2.scrollWidth + 1 + 'px';
14952
+ this.splitterModule.splitterObject.paneSettings[0].size = this.splitterModule['getSpliterPositionInPercentage'](this.splitterModule.splitterPreviousPositionGrid);
14953
+ this.splitterModule.splitterObject.paneSettings[1].size = this.splitterModule.splitterPreviousPositionChart;
14927
14954
  }
14928
14955
  };
14929
14956
  Gantt.prototype.keyActionHandler = function (e) {
@@ -18518,13 +18545,13 @@ var EditTooltip = /** @__PURE__ @class */ (function () {
18518
18545
  * @returns {void} .
18519
18546
  */
18520
18547
  EditTooltip.prototype.updateTooltipPosition = function (args) {
18521
- var containerPosition = this.parent.getOffsetRect(this.parent.chartPane);
18522
- var leftEnd = containerPosition.left + this.parent.chartPane.offsetWidth;
18523
- var tooltipPositionX = args.element.offsetLeft;
18524
- if (leftEnd < (tooltipPositionX + args.element.offsetWidth)) {
18525
- tooltipPositionX += leftEnd - (tooltipPositionX + args.element.offsetWidth);
18526
- }
18527
- args.element.style.left = tooltipPositionX + 'px';
18548
+ // const containerPosition: { top: number, left: number } = this.parent.getOffsetRect(this.parent.chartPane);
18549
+ // const leftEnd: number = containerPosition.left + this.parent.chartPane.offsetWidth;
18550
+ // let tooltipPositionX: number = args.element.offsetLeft;
18551
+ // if (leftEnd < (tooltipPositionX + args.element.offsetWidth)) {
18552
+ // tooltipPositionX += leftEnd - (tooltipPositionX + args.element.offsetWidth);
18553
+ // }
18554
+ // args.element.style.left = tooltipPositionX + 'px';
18528
18555
  args.element.style.visibility = 'visible';
18529
18556
  };
18530
18557
  /**
@@ -19177,6 +19204,12 @@ var TaskbarEdit = /** @__PURE__ @class */ (function (_super) {
19177
19204
  */
19178
19205
  TaskbarEdit.prototype.updateMouseDownProperties = function (event) {
19179
19206
  var e = this.getCoordinate(event);
19207
+ var parentWithZoomStyle = this.parent.element.closest('[style*="zoom"]');
19208
+ if (parentWithZoomStyle) {
19209
+ var zoom1 = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);
19210
+ e.pageX = e.pageX / zoom1;
19211
+ e.pageY = e.pageY / zoom1;
19212
+ }
19180
19213
  if (e.pageX || e.pageY) {
19181
19214
  var containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
19182
19215
  if (this.parent.enableRtl) {
@@ -19388,6 +19421,12 @@ var TaskbarEdit = /** @__PURE__ @class */ (function (_super) {
19388
19421
  TaskbarEdit.prototype.updateMouseMoveProperties = function (event) {
19389
19422
  var containerPosition = this.parent.getOffsetRect(this.parent.ganttChartModule.chartBodyContainer);
19390
19423
  var e = this.getCoordinate(event);
19424
+ var parentWithZoomStyle = this.parent.element.closest('[style*="zoom"]');
19425
+ if (parentWithZoomStyle) {
19426
+ var zoom1 = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);
19427
+ e.pageX = e.pageX / zoom1;
19428
+ e.pageY = e.pageY / zoom1;
19429
+ }
19391
19430
  if (e.pageX || e.pageY) {
19392
19431
  if (this.parent.enableRtl) {
19393
19432
  this.mouseMoveX = Math.abs(e.pageX - (containerPosition.left +
@@ -20779,6 +20818,12 @@ var TaskbarEdit = /** @__PURE__ @class */ (function (_super) {
20779
20818
  };
20780
20819
  // eslint-disable-next-line
20781
20820
  TaskbarEdit.prototype.triggerDependencyEvent = function (e, mouseUp) {
20821
+ var parentWithZoomStyle = this.parent.element.closest('[style*="zoom"]');
20822
+ var zoomedPageY;
20823
+ if (parentWithZoomStyle) {
20824
+ var zoom1 = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);
20825
+ zoomedPageY = e.pageY / zoom1;
20826
+ }
20782
20827
  var fromItem = this.taskBarEditRecord.ganttProperties;
20783
20828
  var toItem = this.connectorSecondRecord ? this.connectorSecondRecord.ganttProperties : null;
20784
20829
  var predecessor;
@@ -20840,7 +20885,7 @@ var TaskbarEdit = /** @__PURE__ @class */ (function (_super) {
20840
20885
  table[1].innerText = toItem.taskName;
20841
20886
  table[2].innerText = this.parent.localeObj.getConstant(currentTarget);
20842
20887
  var tooltipElement = this.parent.connectorLineModule.tooltipTable.parentElement.parentElement;
20843
- if (tooltipElement.offsetTop + tooltipElement.offsetHeight > e.pageY) {
20888
+ if (tooltipElement.offsetTop + tooltipElement.offsetHeight > zoomedPageY) {
20844
20889
  tooltipElement.style.top = (e.pageY - tooltipElement.offsetHeight - 20) + 'px';
20845
20890
  }
20846
20891
  }
@@ -31070,7 +31115,13 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
31070
31115
  }
31071
31116
  break;
31072
31117
  case 'DeleteTask':
31073
- this.parent.editModule.deleteRecord(this.rowData);
31118
+ if ((this.parent.selectionSettings.mode !== 'Cell' && this.parent.selectionModule.selectedRowIndexes.length > 1)
31119
+ || (this.parent.selectionSettings.mode === 'Cell' && this.parent.selectionModule.getSelectedRowCellIndexes().length)) {
31120
+ this.parent.editModule.startDeleteAction();
31121
+ }
31122
+ else {
31123
+ this.parent.editModule.deleteRecord(this.rowData);
31124
+ }
31074
31125
  break;
31075
31126
  case 'ToTask':
31076
31127
  if (!isNullOrUndefined(this.rowData)) {
@@ -31224,7 +31275,7 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
31224
31275
  this.parent.ganttChartModule.targetElement;
31225
31276
  // Closed edited cell before opening context menu
31226
31277
  // eslint-disable-next-line
31227
- if (!isNullOrUndefined(this.parent.editModule) && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit && target.parentElement.classList.contains('e-row')) {
31278
+ if ((!isNullOrUndefined(this.parent.editModule) && this.parent.editModule.cellEditModule && this.parent.editModule.cellEditModule.isCellEdit && target.parentElement.classList.contains('e-row')) || target.parentElement.classList.contains('e-treecolumn-container')) {
31228
31279
  this.parent.treeGrid.closeEdit();
31229
31280
  }
31230
31281
  if (!isNullOrUndefined(args.element) && args.element.id === this.parent.element.id + '_contextmenu') {