@progress/kendo-angular-gantt 2.0.0-next.202204010911 → 2.0.0-next.202204121022

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 (229) hide show
  1. package/binding-directives/flat-binding.directive.d.ts +24 -0
  2. package/binding-directives/hierarchy-binding.directive.d.ts +22 -0
  3. package/bundles/kendo-angular-gantt.umd.js +1 -1
  4. package/columns/cell-template.directive.d.ts +28 -0
  5. package/columns/column-base.d.ts +85 -0
  6. package/columns/column-group.component.d.ts +103 -0
  7. package/columns/column-menu-template.directive.d.ts +22 -0
  8. package/columns/column.component.d.ts +130 -0
  9. package/columns/columns.d.ts +15 -0
  10. package/columns/edit-template.directive.d.ts +26 -0
  11. package/columns/filter-cell-template.directive.d.ts +21 -0
  12. package/columns/filter-menu-template.directive.d.ts +20 -0
  13. package/columns/footer-template.directive.d.ts +24 -0
  14. package/columns/header-template.directive.d.ts +22 -0
  15. package/columns/span-column.component.d.ts +112 -0
  16. package/common/default-callbacks.d.ts +25 -0
  17. package/common/mapping.service.d.ts +38 -0
  18. package/common/option-changes.service.d.ts +17 -0
  19. package/common/touch-enabled.d.ts +9 -0
  20. package/dependencies/dependency-dom.service.d.ts +46 -0
  21. package/dependencies/dom-dependency-args.d.ts +24 -0
  22. package/dependencies/gantt-dependency.directive.d.ts +29 -0
  23. package/dependencies/utils.d.ts +53 -0
  24. package/dragging/dependency-drag-create.directive.d.ts +75 -0
  25. package/dragging/drag-validation-tooltip.component.d.ts +32 -0
  26. package/editing/add-task.component.d.ts +48 -0
  27. package/editing/dependencies-table.component.d.ts +42 -0
  28. package/editing/edit-dialog.component.d.ts +33 -0
  29. package/editing/edit.service.d.ts +44 -0
  30. package/editing/task-fields.component.d.ts +25 -0
  31. package/editing/utils.d.ts +10 -0
  32. package/esm2015/binding-directives/flat-binding.directive.js +34 -0
  33. package/esm2015/binding-directives/hierarchy-binding.directive.js +32 -0
  34. package/esm2015/columns/cell-template.directive.js +37 -0
  35. package/esm2015/columns/column-base.js +52 -0
  36. package/esm2015/columns/column-group.component.js +94 -0
  37. package/esm2015/columns/column-menu-template.directive.js +31 -0
  38. package/esm2015/columns/column.component.js +133 -0
  39. package/esm2015/columns/columns.js +15 -0
  40. package/esm2015/columns/edit-template.directive.js +35 -0
  41. package/esm2015/columns/filter-cell-template.directive.js +30 -0
  42. package/esm2015/columns/filter-menu-template.directive.js +29 -0
  43. package/esm2015/columns/footer-template.directive.js +33 -0
  44. package/esm2015/columns/header-template.directive.js +31 -0
  45. package/esm2015/columns/span-column.component.js +86 -0
  46. package/esm2015/common/default-callbacks.js +25 -0
  47. package/esm2015/common/mapping.service.js +64 -0
  48. package/esm2015/common/option-changes.service.js +26 -0
  49. package/esm2015/common/touch-enabled.js +9 -0
  50. package/esm2015/dependencies/dependency-dom.service.js +70 -0
  51. package/esm2015/dependencies/dom-dependency-args.js +5 -0
  52. package/esm2015/dependencies/gantt-dependency.directive.js +82 -0
  53. package/esm2015/dependencies/utils.js +195 -0
  54. package/esm2015/dragging/dependency-drag-create.directive.js +318 -0
  55. package/esm2015/dragging/drag-validation-tooltip.component.js +90 -0
  56. package/esm2015/editing/add-task.component.js +109 -0
  57. package/esm2015/editing/dependencies-table.component.js +196 -0
  58. package/esm2015/editing/edit-dialog.component.js +170 -0
  59. package/esm2015/editing/edit.service.js +111 -0
  60. package/esm2015/editing/task-fields.component.js +101 -0
  61. package/esm2015/editing/utils.js +15 -0
  62. package/esm2015/expanded-state/expand-event.js +9 -0
  63. package/esm2015/expanded-state/expandable.directive.js +23 -0
  64. package/esm2015/gantt.component.js +2226 -0
  65. package/esm2015/gantt.module.js +264 -0
  66. package/esm2015/kendo-angular-gantt.js +8 -0
  67. package/esm2015/localization/custom-messages.component.js +41 -0
  68. package/esm2015/localization/gantt-localization.service.js +25 -0
  69. package/esm2015/localization/localized-messages.directive.js +36 -0
  70. package/esm2015/localization/messages.js +157 -0
  71. package/esm2015/main.js +37 -0
  72. package/esm2015/models/cell-content-type.interface.js +5 -0
  73. package/esm2015/models/class-callbacks.js +5 -0
  74. package/esm2015/models/column-menu-settings.interface.js +5 -0
  75. package/esm2015/models/column-reorder-config.js +5 -0
  76. package/esm2015/models/date-range.interface.js +5 -0
  77. package/esm2015/models/dependency-type.enum.js +20 -0
  78. package/esm2015/models/events/cell-click-event.interface.js +5 -0
  79. package/esm2015/models/events/cell-close-event.interface.js +14 -0
  80. package/esm2015/models/events/click-event.interface.js +5 -0
  81. package/esm2015/models/events/column-locked-change-event.interface.js +5 -0
  82. package/esm2015/models/events/column-reorder-event.interface.js +5 -0
  83. package/esm2015/models/events/column-resize-event.interface.js +5 -0
  84. package/esm2015/models/events/column-visibility-change-event.interface.js +5 -0
  85. package/esm2015/models/events/data-state-change-event.interface.js +5 -0
  86. package/esm2015/models/events/dependency-add-event.interface.js +5 -0
  87. package/esm2015/models/events/selected-view-change-event.interface.js +5 -0
  88. package/esm2015/models/events/task-add-event.interface.js +5 -0
  89. package/esm2015/models/events/task-click-event.interface.js +5 -0
  90. package/esm2015/models/events/task-delete-event.interface.js +5 -0
  91. package/esm2015/models/events/task-edit-event.interface.js +5 -0
  92. package/esm2015/models/events/task-move-end-event.interface.js +5 -0
  93. package/esm2015/models/events/task-move-event.interface.js +5 -0
  94. package/esm2015/models/events/task-move-start-event.interface.js +5 -0
  95. package/esm2015/models/events/task-resize-end-event.interface.js +5 -0
  96. package/esm2015/models/events/task-resize-event.interface.js +5 -0
  97. package/esm2015/models/events/task-resize-start-event.interface.js +5 -0
  98. package/esm2015/models/filterable-settings.js +5 -0
  99. package/esm2015/models/gantt-dependency-model-fields.interface.js +13 -0
  100. package/esm2015/models/gantt-dependency.interface.js +5 -0
  101. package/esm2015/models/gantt-task-model-fields.interface.js +15 -0
  102. package/esm2015/models/gantt-task.interface.js +5 -0
  103. package/esm2015/models/models.js +7 -0
  104. package/esm2015/models/slot.interface.js +5 -0
  105. package/esm2015/models/sort-settings.js +17 -0
  106. package/esm2015/models/splitter-pane-options.interface.js +20 -0
  107. package/esm2015/models/timeline-options.interface.js +5 -0
  108. package/esm2015/models/timeline-view.js +5 -0
  109. package/esm2015/models/toolbar-settings.js +5 -0
  110. package/esm2015/models/view-item.interface.js +5 -0
  111. package/esm2015/navigation/navigation-models.js +5 -0
  112. package/esm2015/navigation/navigation.service.js +265 -0
  113. package/esm2015/navigation/utils.js +69 -0
  114. package/esm2015/package-metadata.js +15 -0
  115. package/esm2015/rendering/gantt-header-table-body.component.js +42 -0
  116. package/esm2015/rendering/gantt-milestone-task.component.js +107 -0
  117. package/esm2015/rendering/gantt-summary-task.component.js +158 -0
  118. package/esm2015/rendering/gantt-task-base.js +148 -0
  119. package/esm2015/rendering/gantt-task.component.js +204 -0
  120. package/esm2015/rendering/gantt-tasks-table-body.component.js +160 -0
  121. package/esm2015/scrolling/drag-scroll-settings.js +20 -0
  122. package/esm2015/scrolling/scroll-sync.service.js +80 -0
  123. package/esm2015/scrolling/timeline-scroll.directive.js +75 -0
  124. package/esm2015/scrolling/timeline-scroll.service.js +39 -0
  125. package/esm2015/scrolling/utils.js +77 -0
  126. package/esm2015/selection/selectable.directive.js +112 -0
  127. package/esm2015/selection/selection-change-event.js +5 -0
  128. package/esm2015/template-directives/summary-task-template.directive.js +50 -0
  129. package/esm2015/template-directives/task-content-template.directive.js +45 -0
  130. package/esm2015/template-directives/task-template.directive.js +48 -0
  131. package/esm2015/timeline/gantt-timeline.component.js +334 -0
  132. package/esm2015/timeline/timeline-base-view.service.js +160 -0
  133. package/esm2015/timeline/timeline-day-view.component.js +38 -0
  134. package/esm2015/timeline/timeline-day-view.service.js +66 -0
  135. package/esm2015/timeline/timeline-month-view.component.js +38 -0
  136. package/esm2015/timeline/timeline-month-view.service.js +64 -0
  137. package/esm2015/timeline/timeline-view.service.js +35 -0
  138. package/esm2015/timeline/timeline-week-view.component.js +38 -0
  139. package/esm2015/timeline/timeline-week-view.service.js +60 -0
  140. package/esm2015/timeline/view-base.js +45 -0
  141. package/esm2015/toolbar/toolbar-template.directive.js +127 -0
  142. package/esm2015/toolbar/toolbar.component.js +94 -0
  143. package/esm2015/toolbar/view-selector.component.js +96 -0
  144. package/esm2015/utils.js +293 -0
  145. package/expanded-state/expand-event.d.ts +13 -0
  146. package/expanded-state/expandable.directive.d.ts +20 -0
  147. package/fesm2015/kendo-angular-gantt.js +7706 -0
  148. package/gantt.component.d.ts +750 -0
  149. package/gantt.module.d.ts +94 -0
  150. package/kendo-angular-gantt.d.ts +9 -0
  151. package/localization/custom-messages.component.d.ts +18 -0
  152. package/localization/gantt-localization.service.d.ts +18 -0
  153. package/localization/localized-messages.directive.d.ts +16 -0
  154. package/localization/messages.d.ts +293 -0
  155. package/main.d.ts +39 -0
  156. package/models/cell-content-type.interface.d.ts +10 -0
  157. package/models/class-callbacks.d.ts +43 -0
  158. package/models/column-menu-settings.interface.d.ts +26 -0
  159. package/models/column-reorder-config.d.ts +10 -0
  160. package/models/date-range.interface.d.ts +19 -0
  161. package/models/dependency-type.enum.d.ts +19 -0
  162. package/models/events/cell-click-event.interface.d.ts +43 -0
  163. package/models/events/cell-close-event.interface.d.ts +48 -0
  164. package/models/events/click-event.interface.d.ts +23 -0
  165. package/models/events/column-locked-change-event.interface.d.ts +16 -0
  166. package/models/events/column-reorder-event.interface.d.ts +10 -0
  167. package/models/events/column-resize-event.interface.d.ts +10 -0
  168. package/models/events/column-visibility-change-event.interface.d.ts +14 -0
  169. package/models/events/data-state-change-event.interface.d.ts +10 -0
  170. package/models/events/dependency-add-event.interface.d.ts +26 -0
  171. package/models/events/selected-view-change-event.interface.d.ts +19 -0
  172. package/models/events/task-add-event.interface.d.ts +31 -0
  173. package/models/events/task-click-event.interface.d.ts +30 -0
  174. package/models/events/task-delete-event.interface.d.ts +21 -0
  175. package/models/events/task-edit-event.interface.d.ts +76 -0
  176. package/models/events/task-move-end-event.interface.d.ts +12 -0
  177. package/models/events/task-move-event.interface.d.ts +23 -0
  178. package/models/events/task-move-start-event.interface.d.ts +15 -0
  179. package/models/events/task-resize-end-event.interface.d.ts +12 -0
  180. package/models/events/task-resize-event.interface.d.ts +23 -0
  181. package/models/events/task-resize-start-event.interface.d.ts +15 -0
  182. package/models/filterable-settings.d.ts +10 -0
  183. package/models/gantt-dependency-model-fields.interface.d.ts +35 -0
  184. package/models/gantt-dependency.interface.d.ts +26 -0
  185. package/models/gantt-task-model-fields.interface.d.ts +42 -0
  186. package/models/gantt-task.interface.d.ts +31 -0
  187. package/models/models.d.ts +42 -0
  188. package/models/slot.interface.d.ts +31 -0
  189. package/models/sort-settings.d.ts +42 -0
  190. package/models/splitter-pane-options.interface.d.ts +54 -0
  191. package/models/timeline-options.interface.d.ts +41 -0
  192. package/models/timeline-view.d.ts +8 -0
  193. package/models/toolbar-settings.d.ts +29 -0
  194. package/models/view-item.interface.d.ts +35 -0
  195. package/navigation/navigation-models.d.ts +38 -0
  196. package/navigation/navigation.service.d.ts +130 -0
  197. package/navigation/utils.d.ts +26 -0
  198. package/package-metadata.d.ts +9 -0
  199. package/package.json +10 -14
  200. package/rendering/gantt-header-table-body.component.d.ts +14 -0
  201. package/rendering/gantt-milestone-task.component.d.ts +22 -0
  202. package/rendering/gantt-summary-task.component.d.ts +25 -0
  203. package/rendering/gantt-task-base.d.ts +59 -0
  204. package/rendering/gantt-task.component.d.ts +26 -0
  205. package/rendering/gantt-tasks-table-body.component.d.ts +33 -0
  206. package/scrolling/drag-scroll-settings.d.ts +47 -0
  207. package/scrolling/scroll-sync.service.d.ts +33 -0
  208. package/scrolling/timeline-scroll.directive.d.ts +27 -0
  209. package/scrolling/timeline-scroll.service.d.ts +23 -0
  210. package/scrolling/utils.d.ts +29 -0
  211. package/selection/selectable.directive.d.ts +45 -0
  212. package/selection/selection-change-event.d.ts +25 -0
  213. package/template-directives/summary-task-template.directive.d.ts +41 -0
  214. package/template-directives/task-content-template.directive.d.ts +36 -0
  215. package/template-directives/task-template.directive.d.ts +39 -0
  216. package/timeline/gantt-timeline.component.d.ts +67 -0
  217. package/timeline/timeline-base-view.service.d.ts +77 -0
  218. package/timeline/timeline-day-view.component.d.ts +18 -0
  219. package/timeline/timeline-day-view.service.d.ts +38 -0
  220. package/timeline/timeline-month-view.component.d.ts +18 -0
  221. package/timeline/timeline-month-view.service.d.ts +38 -0
  222. package/timeline/timeline-view.service.d.ts +19 -0
  223. package/timeline/timeline-week-view.component.d.ts +18 -0
  224. package/timeline/timeline-week-view.service.d.ts +38 -0
  225. package/timeline/view-base.d.ts +34 -0
  226. package/toolbar/toolbar-template.directive.d.ts +112 -0
  227. package/toolbar/toolbar.component.d.ts +29 -0
  228. package/toolbar/view-selector.component.d.ts +43 -0
  229. package/utils.d.ts +166 -0
@@ -0,0 +1,96 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { Component, EventEmitter, Input, Output, HostBinding } from '@angular/core';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@progress/kendo-angular-l10n";
8
+ import * as i2 from "@progress/kendo-angular-buttons";
9
+ import * as i3 from "@angular/common";
10
+ import * as i4 from "@angular/forms";
11
+ /**
12
+ * The Gantt ViewSelector component. Shows the currently active view type, and allows switching to another view type.
13
+ */
14
+ export class ViewSelectorComponent {
15
+ constructor(localizationService) {
16
+ this.localizationService = localizationService;
17
+ this.hostClass = true;
18
+ /**
19
+ * The currently active view type.
20
+ * @default 'week'
21
+ */
22
+ this.activeView = 'week';
23
+ /**
24
+ * Fires each time the user selects a different view type. The event data contains the type of the newly selected view.
25
+ */
26
+ this.activeViewChange = new EventEmitter();
27
+ }
28
+ /**
29
+ * @hidden
30
+ */
31
+ onClick(viewType) {
32
+ if (viewType !== this.activeView) {
33
+ this.activeViewChange.emit(viewType);
34
+ }
35
+ }
36
+ /**
37
+ * @hidden
38
+ */
39
+ getViewTypeText(viewType) {
40
+ return this.localizationService.get(`${viewType}ViewText`);
41
+ }
42
+ /**
43
+ * @hidden
44
+ */
45
+ onActiveViewChange(event) {
46
+ this.activeViewChange.emit(event.target.value);
47
+ }
48
+ }
49
+ ViewSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ViewSelectorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
50
+ ViewSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ViewSelectorComponent, selector: "kendo-gantt-view-selector", inputs: { views: "views", activeView: "activeView" }, outputs: { activeViewChange: "activeViewChange" }, host: { properties: { "class.k-gantt-views-wrapper": "this.hostClass" } }, ngImport: i0, template: `
51
+ <select
52
+ class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
53
+ aria-label="View Selector"
54
+ [value]="activeView"
55
+ (change)="onActiveViewChange($event)">
56
+ <option *ngFor="let view of views" [value]="view">{{getViewTypeText(view)}}</option>
57
+ </select>
58
+ <kendo-buttongroup class="k-gantt-views" selection="single">
59
+ <button *ngFor="let view of views"
60
+ kendoButton
61
+ type="button"
62
+ [selected]="view === activeView"
63
+ (click)="onClick(view)">{{getViewTypeText(view)}}</button>
64
+ </kendo-buttongroup>
65
+ `, isInline: true, components: [{ type: i2.ButtonGroupComponent, selector: "kendo-buttongroup", inputs: ["disabled", "selection", "width", "tabIndex"], outputs: ["navigate"], exportAs: ["kendoButtonGroup"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ViewSelectorComponent, decorators: [{
67
+ type: Component,
68
+ args: [{
69
+ selector: 'kendo-gantt-view-selector',
70
+ template: `
71
+ <select
72
+ class="k-dropdownlist k-picker k-rounded-md k-views-dropdown"
73
+ aria-label="View Selector"
74
+ [value]="activeView"
75
+ (change)="onActiveViewChange($event)">
76
+ <option *ngFor="let view of views" [value]="view">{{getViewTypeText(view)}}</option>
77
+ </select>
78
+ <kendo-buttongroup class="k-gantt-views" selection="single">
79
+ <button *ngFor="let view of views"
80
+ kendoButton
81
+ type="button"
82
+ [selected]="view === activeView"
83
+ (click)="onClick(view)">{{getViewTypeText(view)}}</button>
84
+ </kendo-buttongroup>
85
+ `
86
+ }]
87
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{
88
+ type: HostBinding,
89
+ args: ['class.k-gantt-views-wrapper']
90
+ }], views: [{
91
+ type: Input
92
+ }], activeView: [{
93
+ type: Input
94
+ }], activeViewChange: [{
95
+ type: Output
96
+ }] } });
@@ -0,0 +1,293 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { isDocumentAvailable, closestInScope, matchesClasses } from '@progress/kendo-angular-common';
6
+ import { addDays, addWeeks, cloneDate, firstDayInWeek } from '@progress/kendo-date-math';
7
+ import { DependencyType } from './models/dependency-type.enum';
8
+ /**
9
+ * @hidden
10
+ */
11
+ export const isWorkDay = (date, start, end) => {
12
+ return date.getDay() >= start && date.getDay() <= end;
13
+ };
14
+ /**
15
+ * @hidden
16
+ */
17
+ export const isWorkHour = (date, start, end) => {
18
+ return date.getHours() >= start && date.getHours() <= end;
19
+ };
20
+ /**
21
+ * @hidden
22
+ */
23
+ export const isPresent = (item) => item !== null && item !== undefined;
24
+ /**
25
+ * @hidden
26
+ *
27
+ * Normalized the data to an array in case a falsy value is passed
28
+ * or a TreeListDataResult object (applicable for the data-binding directives).
29
+ */
30
+ export const normalizeGanttData = (data) => {
31
+ if (!isPresent(data)) {
32
+ return [];
33
+ }
34
+ else if (Array.isArray(data.data)) {
35
+ return data.data;
36
+ }
37
+ else {
38
+ return data;
39
+ }
40
+ };
41
+ /**
42
+ * @hidden
43
+ */
44
+ export const isArray = (value) => Array.isArray(value);
45
+ /**
46
+ * @hidden
47
+ *
48
+ * Returns a new date with the specified hours, minutes, seconds and millliseconds set.
49
+ * Only the hours are required, the rest of the params are set to `0` by default.
50
+ */
51
+ export const setTime = (date, hours, minutes = 0, seconds = 0, milliseconds = 0) => {
52
+ if (!isPresent(date)) {
53
+ return null;
54
+ }
55
+ const result = cloneDate(date);
56
+ result.setHours(hours);
57
+ result.setMinutes(minutes);
58
+ result.setSeconds(seconds);
59
+ result.setMilliseconds(milliseconds);
60
+ return result;
61
+ };
62
+ /**
63
+ * @hidden
64
+ *
65
+ * Returns the last day of a week.
66
+ * @param standingPoint - Any day of the target week.
67
+ * @param firstWeekDay - The week's starting day (e.g. Monday, Tuesday, etc.)
68
+ */
69
+ export const lastDayOfWeek = (standingPoint, firstWeekDay) => {
70
+ const followingWeek = addWeeks(standingPoint, 1);
71
+ const firstDayOfFollowingWeek = firstDayInWeek(followingWeek, firstWeekDay);
72
+ const lastDayOfTargetWeek = addDays(firstDayOfFollowingWeek, -1);
73
+ return lastDayOfTargetWeek;
74
+ };
75
+ /**
76
+ * Persists the intially resolved scrollbar width value.
77
+ */
78
+ let SCROLLBAR_WIDTH;
79
+ /**
80
+ * @hidden
81
+ *
82
+ * Gets the default scrollbar width accoring to the current environment.
83
+ */
84
+ export const scrollbarWidth = () => {
85
+ if (!isDocumentAvailable()) {
86
+ return;
87
+ }
88
+ // calculate scrollbar width only once, then return the cached value
89
+ if (isNaN(SCROLLBAR_WIDTH)) {
90
+ const div = document.createElement('div');
91
+ div.style.cssText = 'overflow: scroll; overflow-x: hidden; zoom: 1; clear: both; display: block;';
92
+ div.innerHTML = '&nbsp;';
93
+ document.body.appendChild(div);
94
+ SCROLLBAR_WIDTH = div.offsetWidth - div.scrollWidth;
95
+ document.body.removeChild(div);
96
+ }
97
+ return SCROLLBAR_WIDTH;
98
+ };
99
+ /**
100
+ * @hidden
101
+ */
102
+ export const isColumnGroup = (column) => column.isColumnGroup;
103
+ /**
104
+ * @hidden
105
+ */
106
+ export const isNumber = (contender) => typeof contender === 'number' && !isNaN(contender);
107
+ /**
108
+ * @hidden
109
+ */
110
+ export const isString = (contender) => typeof contender === 'string';
111
+ /**
112
+ * @hidden
113
+ *
114
+ * Gets the closest timeline task wrapper element from an event target.
115
+ * Restricts the search up to the provided parent element from the second param.
116
+ */
117
+ export const getClosestTaskWrapper = (element, parentScope) => {
118
+ return closestInScope(element, matchesClasses('k-task-wrap'), parentScope);
119
+ };
120
+ /**
121
+ * @hidden
122
+ *
123
+ * Checks whether the queried item or its parent items has a `k-task-wrap` selector.
124
+ * Restricts the search up to the provided parent element from the second param.
125
+ */
126
+ export const isTaskWrapper = (contender, parentScope) => {
127
+ const taskWrapper = closestInScope(contender, matchesClasses('k-task-wrap'), parentScope);
128
+ return isPresent(taskWrapper);
129
+ };
130
+ /**
131
+ * @hidden
132
+ *
133
+ * Gets the closest timeline task element from an event target.
134
+ * Restricts the search up to the provided parent element from the second param.
135
+ */
136
+ export const getClosestTask = (element, parentScope) => {
137
+ return closestInScope(element, matchesClasses('k-task'), parentScope);
138
+ };
139
+ /**
140
+ * @hidden
141
+ *
142
+ * Gets the closest timeline task element index from an event target.
143
+ * Uses the `data-task-index` attribute assigned to each task.
144
+ * Restricts the search up to the provided parent element from the second param.
145
+ */
146
+ export const getClosestTaskIndex = (element, parentScope) => {
147
+ const task = closestInScope(element, matchesClasses('k-task-wrap'), parentScope);
148
+ if (!isPresent(task)) {
149
+ return null;
150
+ }
151
+ return Number(task.getAttribute('data-task-index'));
152
+ };
153
+ /**
154
+ * @hidden
155
+ *
156
+ * Checks whether the queried item or its parent items has a `k-task` selector.
157
+ * Restricts the search up to the provided parent element from the second param.
158
+ */
159
+ export const isTask = (contender, parentScope) => {
160
+ const task = closestInScope(contender, matchesClasses('k-task'), parentScope);
161
+ return isPresent(task);
162
+ };
163
+ /**
164
+ * @hidden
165
+ *
166
+ * Checks whether the queried item or its parent items has a `k-toolbar` selector.
167
+ * Restricts the search up to the provided parent element from the second param.
168
+ */
169
+ export const isToolbar = (contender, parentScope) => {
170
+ const toolbar = closestInScope(contender, matchesClasses('k-gantt-toolbar'), parentScope);
171
+ return isPresent(toolbar);
172
+ };
173
+ /**
174
+ * @hidden
175
+ *
176
+ * Checks whether the queried item or its parent items has a `k-task-actions` selector - used for the clear button.
177
+ * Restricts the search up to the provided parent element from the second param.
178
+ */
179
+ export const isClearButton = (contender, parentScope) => {
180
+ const clearButtonContainer = closestInScope(contender, matchesClasses('k-task-actions'), parentScope);
181
+ return isPresent(clearButtonContainer);
182
+ };
183
+ /**
184
+ * @hidden
185
+ *
186
+ * Checks whether the queried item has a `k-task-dot` selector - used for the dependency drag clues.
187
+ */
188
+ export const isDependencyDragClue = (element) => {
189
+ if (!isPresent(element)) {
190
+ return false;
191
+ }
192
+ return element.classList.contains('k-task-dot');
193
+ };
194
+ /**
195
+ * @hidden
196
+ *
197
+ * Checks whether the queried item has a `k-task-dot` & `k-task-start` selector - used for the dependency drag start clues.
198
+ */
199
+ export const isDependencyDragStartClue = (element) => {
200
+ if (!isPresent(element)) {
201
+ return false;
202
+ }
203
+ return element.classList.contains('k-task-dot') && element.classList.contains('k-task-start');
204
+ };
205
+ /**
206
+ * @hidden
207
+ *
208
+ * Gets the `DependencyType` for an attempted dependency create from the provided two elements.
209
+ * The two linked drag clue HTML elements are used to extract this data (via their CSS classes).
210
+ */
211
+ export const getDependencyTypeFromTargetTasks = (fromTaskClue, toTaskClue) => {
212
+ if (!isDependencyDragClue(fromTaskClue) || !isDependencyDragClue(toTaskClue)) {
213
+ return null;
214
+ }
215
+ const fromTaskType = isDependencyDragStartClue(fromTaskClue) ? 'S' : 'F';
216
+ const toTaskType = isDependencyDragStartClue(toTaskClue) ? 'S' : 'F';
217
+ const dependencyTypeName = `${fromTaskType}${toTaskType}`;
218
+ switch (dependencyTypeName) {
219
+ case 'FF': return DependencyType.FF;
220
+ case 'FS': return DependencyType.FS;
221
+ case 'SF': return DependencyType.SF;
222
+ case 'SS': return DependencyType.SS;
223
+ default: return null;
224
+ }
225
+ };
226
+ /**
227
+ * @hidden
228
+ *
229
+ * Checks whether the two provided drag clues belong to the same task element.
230
+ */
231
+ export const sameTaskClues = (fromTaskClue, toTaskClue, parentScope) => {
232
+ if (!isPresent(fromTaskClue) || !isPresent(toTaskClue)) {
233
+ return false;
234
+ }
235
+ const fromTaskWrapper = getClosestTaskWrapper(fromTaskClue, parentScope);
236
+ const toTaskWrapper = getClosestTaskWrapper(toTaskClue, parentScope);
237
+ return fromTaskWrapper === toTaskWrapper;
238
+ };
239
+ /**
240
+ * @hidden
241
+ *
242
+ * Fits a contender number between a min and max range.
243
+ * If the contender is below the min value, the min value is returned.
244
+ * If the contender is above the max value, the max value is returned.
245
+ */
246
+ export const fitToRange = (contender, min, max) => {
247
+ if (!isPresent(contender) || contender < min) {
248
+ return min;
249
+ }
250
+ else if (contender > max) {
251
+ return max;
252
+ }
253
+ else {
254
+ return contender;
255
+ }
256
+ };
257
+ /**
258
+ * @hidden
259
+ *
260
+ * Checks whether either of the two provided tasks is a parent of the other.
261
+ */
262
+ export const areParentChild = (taskA, taskB) => {
263
+ let parentChildRelationship = false;
264
+ let taskAParent = taskA;
265
+ while (isPresent(taskAParent) && isPresent(taskAParent.data)) {
266
+ if (taskAParent.data === taskB.data) {
267
+ parentChildRelationship = true;
268
+ break;
269
+ }
270
+ taskAParent = taskAParent.parent;
271
+ }
272
+ let taskBParent = taskB;
273
+ while (!parentChildRelationship && isPresent(taskBParent) && isPresent(taskBParent.data)) {
274
+ if (taskBParent.data === taskA.data) {
275
+ parentChildRelationship = true;
276
+ break;
277
+ }
278
+ taskBParent = taskBParent.parent;
279
+ }
280
+ return parentChildRelationship;
281
+ };
282
+ /**
283
+ * @hidden
284
+ *
285
+ * Extracts an element from the provided client coords.
286
+ * Using the `event.target` is not reliable under mobile devices with the current implementation of the draggable, so use this instead.
287
+ */
288
+ export const elementFromPoint = (clientX, clientY) => {
289
+ if (!isDocumentAvailable()) {
290
+ return null;
291
+ }
292
+ return document.elementFromPoint(clientX, clientY);
293
+ };
@@ -0,0 +1,13 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /**
6
+ * Arguments for the Gantt `expand` and `collapse` events.
7
+ */
8
+ export declare class ExpandEvent {
9
+ /**
10
+ * The expanded/collapsed data item.
11
+ */
12
+ dataItem: any;
13
+ }
@@ -0,0 +1,20 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { ExpandableDirective } from '@progress/kendo-angular-treelist';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * A directive which controls the expanded state of the items.
9
+ */
10
+ export declare class GanttExpandableDirective extends ExpandableDirective {
11
+ /**
12
+ * Defines the item key that will be stored in the expandedKeys collection.
13
+ * Defaults to the task data item ID field,
14
+ * which is specified in the [`taskModelFields`]({% slug api_gantt_ganttcomponent %}#toc-taskmodelfields) object.
15
+ *
16
+ */
17
+ expandBy: string | ((dataItem: any) => any);
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<GanttExpandableDirective, never>;
19
+ static ɵdir: i0.ɵɵDirectiveDeclaration<GanttExpandableDirective, "[kendoGanttExpandable]", ["kendoGanttExpandable"], { "expandBy": "expandBy"; }, {}, never>;
20
+ }