@progress/kendo-angular-gantt 2.0.5 → 2.1.0-dev.202211250900

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 (75) hide show
  1. package/bundles/kendo-angular-gantt.umd.js +1 -1
  2. package/esm2015/binding-directives/flat-binding.directive.js +3 -3
  3. package/esm2015/binding-directives/hierarchy-binding.directive.js +3 -3
  4. package/esm2015/columns/cell-template.directive.js +3 -3
  5. package/esm2015/columns/column-base.component.js +3 -3
  6. package/esm2015/columns/column-group.component.js +3 -3
  7. package/esm2015/columns/column-menu-template.directive.js +3 -3
  8. package/esm2015/columns/column.component.js +3 -3
  9. package/esm2015/columns/edit-template.directive.js +3 -3
  10. package/esm2015/columns/filter-cell-template.directive.js +3 -3
  11. package/esm2015/columns/filter-menu-template.directive.js +3 -3
  12. package/esm2015/columns/footer-template.directive.js +3 -3
  13. package/esm2015/columns/header-template.directive.js +3 -3
  14. package/esm2015/columns/span-column.component.js +3 -3
  15. package/esm2015/common/mapping.service.js +3 -3
  16. package/esm2015/common/option-changes.service.js +3 -3
  17. package/esm2015/dependencies/dependency-dom.service.js +3 -3
  18. package/esm2015/dependencies/gantt-dependency.directive.js +3 -3
  19. package/esm2015/dragging/dependency-drag-create.directive.js +3 -3
  20. package/esm2015/dragging/drag-validation-tooltip.component.js +3 -3
  21. package/esm2015/editing/add-task.component.js +3 -3
  22. package/esm2015/editing/dependencies-table.component.js +3 -3
  23. package/esm2015/editing/edit-dialog.component.js +3 -3
  24. package/esm2015/editing/edit.service.js +3 -3
  25. package/esm2015/editing/task-fields.component.js +3 -3
  26. package/esm2015/expanded-state/expandable.directive.js +3 -3
  27. package/esm2015/gantt.component.js +6 -3
  28. package/esm2015/gantt.module.js +8 -4
  29. package/esm2015/localization/custom-messages.component.js +3 -3
  30. package/esm2015/localization/gantt-localization.service.js +3 -3
  31. package/esm2015/localization/localized-messages.directive.js +3 -3
  32. package/esm2015/localization/messages.js +3 -3
  33. package/esm2015/main.js +1 -0
  34. package/esm2015/navigation/navigation.service.js +3 -3
  35. package/esm2015/package-metadata.js +1 -1
  36. package/esm2015/rendering/gantt-header-table-body.component.js +5 -5
  37. package/esm2015/rendering/gantt-milestone-task.component.js +3 -3
  38. package/esm2015/rendering/gantt-summary-task.component.js +3 -3
  39. package/esm2015/rendering/gantt-task-base.js +31 -8
  40. package/esm2015/rendering/gantt-task.component.js +3 -3
  41. package/esm2015/rendering/gantt-tasks-table-body.component.js +3 -3
  42. package/esm2015/scrolling/scroll-sync.service.js +3 -3
  43. package/esm2015/scrolling/timeline-scroll.directive.js +3 -3
  44. package/esm2015/scrolling/timeline-scroll.service.js +3 -3
  45. package/esm2015/selection/selectable.directive.js +3 -3
  46. package/esm2015/template-directives/summary-task-template.directive.js +3 -3
  47. package/esm2015/template-directives/task-content-template.directive.js +3 -3
  48. package/esm2015/template-directives/task-template.directive.js +3 -3
  49. package/esm2015/timeline/gantt-timeline.component.js +3 -3
  50. package/esm2015/timeline/timeline-base-view.service.js +36 -9
  51. package/esm2015/timeline/timeline-day-view.component.js +3 -3
  52. package/esm2015/timeline/timeline-day-view.service.js +3 -3
  53. package/esm2015/timeline/timeline-month-view.component.js +3 -3
  54. package/esm2015/timeline/timeline-month-view.service.js +4 -4
  55. package/esm2015/timeline/timeline-view.service.js +6 -4
  56. package/esm2015/timeline/timeline-week-view.component.js +3 -3
  57. package/esm2015/timeline/timeline-week-view.service.js +3 -3
  58. package/esm2015/timeline/timeline-year-view.component.js +38 -0
  59. package/esm2015/timeline/timeline-year-view.service.js +55 -0
  60. package/esm2015/timeline/view-base.js +3 -3
  61. package/esm2015/toolbar/toolbar-template.directive.js +3 -3
  62. package/esm2015/toolbar/toolbar.component.js +3 -3
  63. package/esm2015/toolbar/view-selector.component.js +3 -3
  64. package/esm2015/utils.js +20 -2
  65. package/fesm2015/kendo-angular-gantt.js +341 -191
  66. package/gantt.module.d.ts +24 -23
  67. package/main.d.ts +1 -0
  68. package/models/slot.interface.d.ts +6 -0
  69. package/models/timeline-view.d.ts +1 -1
  70. package/package.json +1 -1
  71. package/timeline/timeline-base-view.service.d.ts +2 -1
  72. package/timeline/timeline-year-view.component.d.ts +18 -0
  73. package/timeline/timeline-year-view.service.d.ts +31 -0
  74. package/timeline/view-base.d.ts +1 -1
  75. package/utils.d.ts +13 -0
@@ -19,14 +19,14 @@ export class CustomMessagesComponent extends Messages {
19
19
  return true;
20
20
  }
21
21
  }
22
- CustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
23
- CustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomMessagesComponent, selector: "kendo-gantt-messages", providers: [
22
+ CustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
23
+ CustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomMessagesComponent, selector: "kendo-gantt-messages", providers: [
24
24
  {
25
25
  provide: Messages,
26
26
  useExisting: forwardRef(() => CustomMessagesComponent)
27
27
  }
28
28
  ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomMessagesComponent, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomMessagesComponent, decorators: [{
30
30
  type: Component,
31
31
  args: [{
32
32
  providers: [
@@ -18,8 +18,8 @@ export class GanttLocalizationService {
18
18
  return this.localizationService.get(token);
19
19
  }
20
20
  }
21
- GanttLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttLocalizationService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
22
- GanttLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttLocalizationService });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttLocalizationService, decorators: [{
21
+ GanttLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttLocalizationService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
22
+ GanttLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttLocalizationService });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttLocalizationService, decorators: [{
24
24
  type: Injectable
25
25
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
@@ -15,14 +15,14 @@ export class LocalizedMessagesDirective extends Messages {
15
15
  this.service = service;
16
16
  }
17
17
  }
18
- LocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
19
- LocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]", providers: [
18
+ LocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
19
+ LocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: LocalizedMessagesDirective, selector: "[kendoGanttLocalizedMessages]", providers: [
20
20
  {
21
21
  provide: Messages,
22
22
  useExisting: forwardRef(() => LocalizedMessagesDirective)
23
23
  }
24
24
  ], usesInheritance: true, ngImport: i0 });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{
26
26
  type: Directive,
27
27
  args: [{
28
28
  providers: [
@@ -10,9 +10,9 @@ import * as i0 from "@angular/core";
10
10
  */
11
11
  export class Messages extends ComponentMessages {
12
12
  }
13
- Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
14
- Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: Messages, selector: "kendo-gantt-messages-base", inputs: { taskEditingGeneralTabTitle: "taskEditingGeneralTabTitle", taskEditingPredecessorsTabTitle: "taskEditingPredecessorsTabTitle", taskEditingSuccessorsTabTitle: "taskEditingSuccessorsTabTitle", taskEditingDependenciesAddButtonText: "taskEditingDependenciesAddButtonText", taskEditingDependenciesRemoveButtonText: "taskEditingDependenciesRemoveButtonText", taskEditingDependenciesGridNameColumnTitle: "taskEditingDependenciesGridNameColumnTitle", taskEditingDependenciesGridTypeColumnTitle: "taskEditingDependenciesGridTypeColumnTitle", deleteButtonText: "deleteButtonText", taskDeleteLabel: "taskDeleteLabel", taskEditingDialogTitle: "taskEditingDialogTitle", taskEditingDialogCloseTitle: "taskEditingDialogCloseTitle", confirmationDialogCloseTitle: "confirmationDialogCloseTitle", confirmationDialogTitle: "confirmationDialogTitle", addTaskText: "addTaskText", addChildText: "addChildText", addAboveText: "addAboveText", addBelowText: "addBelowText", cancelButtonText: "cancelButtonText", saveButtonText: "saveButtonText", titleFieldInputLabel: "titleFieldInputLabel", startFieldInputLabel: "startFieldInputLabel", endFieldInputLabel: "endFieldInputLabel", completionRatioFieldInputLabel: "completionRatioFieldInputLabel", confirmationDialogContent: "confirmationDialogContent", dayViewText: "dayViewText", weekViewText: "weekViewText", monthViewText: "monthViewText", yearViewText: "yearViewText", noRecords: "noRecords", filter: "filter", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", columnMenu: "columnMenu", columns: "columns", lock: "lock", unlock: "unlock", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset" }, usesInheritance: true, ngImport: i0 });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Messages, decorators: [{
13
+ Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
14
+ Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: Messages, selector: "kendo-gantt-messages-base", inputs: { taskEditingGeneralTabTitle: "taskEditingGeneralTabTitle", taskEditingPredecessorsTabTitle: "taskEditingPredecessorsTabTitle", taskEditingSuccessorsTabTitle: "taskEditingSuccessorsTabTitle", taskEditingDependenciesAddButtonText: "taskEditingDependenciesAddButtonText", taskEditingDependenciesRemoveButtonText: "taskEditingDependenciesRemoveButtonText", taskEditingDependenciesGridNameColumnTitle: "taskEditingDependenciesGridNameColumnTitle", taskEditingDependenciesGridTypeColumnTitle: "taskEditingDependenciesGridTypeColumnTitle", deleteButtonText: "deleteButtonText", taskDeleteLabel: "taskDeleteLabel", taskEditingDialogTitle: "taskEditingDialogTitle", taskEditingDialogCloseTitle: "taskEditingDialogCloseTitle", confirmationDialogCloseTitle: "confirmationDialogCloseTitle", confirmationDialogTitle: "confirmationDialogTitle", addTaskText: "addTaskText", addChildText: "addChildText", addAboveText: "addAboveText", addBelowText: "addBelowText", cancelButtonText: "cancelButtonText", saveButtonText: "saveButtonText", titleFieldInputLabel: "titleFieldInputLabel", startFieldInputLabel: "startFieldInputLabel", endFieldInputLabel: "endFieldInputLabel", completionRatioFieldInputLabel: "completionRatioFieldInputLabel", confirmationDialogContent: "confirmationDialogContent", dayViewText: "dayViewText", weekViewText: "weekViewText", monthViewText: "monthViewText", yearViewText: "yearViewText", noRecords: "noRecords", filter: "filter", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterIsNullOperator: "filterIsNullOperator", filterIsNotNullOperator: "filterIsNotNullOperator", filterIsEmptyOperator: "filterIsEmptyOperator", filterIsNotEmptyOperator: "filterIsNotEmptyOperator", filterStartsWithOperator: "filterStartsWithOperator", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterEndsWithOperator: "filterEndsWithOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterIsTrue: "filterIsTrue", filterIsFalse: "filterIsFalse", filterBooleanAll: "filterBooleanAll", filterAfterOrEqualOperator: "filterAfterOrEqualOperator", filterAfterOperator: "filterAfterOperator", filterBeforeOperator: "filterBeforeOperator", filterBeforeOrEqualOperator: "filterBeforeOrEqualOperator", filterFilterButton: "filterFilterButton", filterClearButton: "filterClearButton", filterAndLogic: "filterAndLogic", filterOrLogic: "filterOrLogic", loading: "loading", columnMenu: "columnMenu", columns: "columns", lock: "lock", unlock: "unlock", sortable: "sortable", sortAscending: "sortAscending", sortDescending: "sortDescending", sortedAscending: "sortedAscending", sortedDescending: "sortedDescending", sortedDefault: "sortedDefault", columnsApply: "columnsApply", columnsReset: "columnsReset" }, usesInheritance: true, ngImport: i0 });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Messages, decorators: [{
16
16
  type: Directive,
17
17
  args: [{
18
18
  // eslint-disable-next-line @angular-eslint/directive-selector
package/esm2015/main.js CHANGED
@@ -8,6 +8,7 @@ export { GanttTimelineComponent } from './timeline/gantt-timeline.component';
8
8
  export { TimelineDayViewComponent } from './timeline/timeline-day-view.component';
9
9
  export { TimelineWeekViewComponent } from './timeline/timeline-week-view.component';
10
10
  export { TimelineMonthViewComponent } from './timeline/timeline-month-view.component';
11
+ export { TimelineYearViewComponent } from './timeline/timeline-year-view.component';
11
12
  export { TaskFieldsComponent } from './editing/task-fields.component';
12
13
  export { DependenciesTableComponent } from './editing/dependencies-table.component';
13
14
  export { GanttAddTaskComponent } from './editing/add-task.component';
@@ -258,8 +258,8 @@ export class NavigationService {
258
258
  this.metadata.treeList.focus();
259
259
  }
260
260
  }
261
- NavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.ScrollSyncService }], target: i0.ɵɵFactoryTarget.Injectable });
262
- NavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NavigationService });
263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NavigationService, decorators: [{
261
+ NavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.ScrollSyncService }], target: i0.ɵɵFactoryTarget.Injectable });
262
+ NavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NavigationService });
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NavigationService, decorators: [{
264
264
  type: Injectable
265
265
  }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.ScrollSyncService }]; } });
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-gantt',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1668698756,
12
+ publishDate: 1669366722,
13
13
  version: '',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
15
15
  };
@@ -10,17 +10,17 @@ import * as i1 from "@angular/common";
10
10
  */
11
11
  export class GanttHeaderTableBodyComponent {
12
12
  }
13
- GanttHeaderTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttHeaderTableBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- GanttHeaderTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: GanttHeaderTableBodyComponent, selector: "[kendoGanttHeaderTableBody]", inputs: { groupSlots: "groupSlots", slots: "slots" }, ngImport: i0, template: `
13
+ GanttHeaderTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttHeaderTableBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ GanttHeaderTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GanttHeaderTableBodyComponent, selector: "[kendoGanttHeaderTableBody]", inputs: { groupSlots: "groupSlots", slots: "slots" }, ngImport: i0, template: `
15
15
  <tr>
16
16
  <td *ngFor="let item of groupSlots" [attr.colspan]="item.span" class="k-header">{{ item.text }}</td>
17
17
  </tr>
18
18
 
19
19
  <tr>
20
- <td *ngFor="let item of slots" [attr.colspan]="item.span" class="k-header" [attr.title]="item.text">{{ item.text }}</td>
20
+ <td *ngFor="let item of slots" class="k-header" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
21
21
  </tr>
22
22
  `, isInline: true, directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttHeaderTableBodyComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttHeaderTableBodyComponent, decorators: [{
24
24
  type: Component,
25
25
  args: [{
26
26
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -31,7 +31,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
31
31
  </tr>
32
32
 
33
33
  <tr>
34
- <td *ngFor="let item of slots" [attr.colspan]="item.span" class="k-header" [attr.title]="item.text">{{ item.text }}</td>
34
+ <td *ngFor="let item of slots" class="k-header" [attr.colspan]="item.span === 7 ? item.span : 1" [attr.title]="item.text">{{ item.text }}</td>
35
35
  </tr>
36
36
  `
37
37
  }]
@@ -22,8 +22,8 @@ export class GanttMilestoneTaskComponent extends GanttTaskBase {
22
22
  this.milestoneWrapperClass = true;
23
23
  }
24
24
  }
25
- GanttMilestoneTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttMilestoneTaskComponent, deps: [{ token: TOUCH_ENABLED }, { token: i1.MappingService }, { token: i2.TimelineViewService }, { token: i3.DependencyDomService }, { token: i4.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i5.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
26
- GanttMilestoneTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: GanttMilestoneTaskComponent, selector: "kendo-gantt-milestone-task", host: { properties: { "class.k-milestone-wrap": "this.milestoneWrapperClass" } }, providers: [
25
+ GanttMilestoneTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttMilestoneTaskComponent, deps: [{ token: TOUCH_ENABLED }, { token: i1.MappingService }, { token: i2.TimelineViewService }, { token: i3.DependencyDomService }, { token: i4.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i5.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
26
+ GanttMilestoneTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GanttMilestoneTaskComponent, selector: "kendo-gantt-milestone-task", host: { properties: { "class.k-milestone-wrap": "this.milestoneWrapperClass" } }, providers: [
27
27
  {
28
28
  provide: GanttTaskBase,
29
29
  useExisting: forwardRef(() => GanttMilestoneTaskComponent)
@@ -53,7 +53,7 @@ GanttMilestoneTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
53
53
  </div>
54
54
  </ng-container>
55
55
  `, isInline: true, styles: ["\n .k-task.k-focus {\n box-shadow: 0 0 4px 3px grey;\n outline: none;\n }\n .k-task.k-focus.k-selected {\n box-shadow: 0 0 4px 3px #ffaea8;\n }\n "], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttMilestoneTaskComponent, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttMilestoneTaskComponent, decorators: [{
57
57
  type: Component,
58
58
  args: [{
59
59
  selector: 'kendo-gantt-milestone-task',
@@ -29,8 +29,8 @@ export class GanttSummaryTaskComponent extends GanttTaskBase {
29
29
  return String(isExpanded);
30
30
  }
31
31
  }
32
- GanttSummaryTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttSummaryTaskComponent, deps: [{ token: TOUCH_ENABLED }, { token: i1.MappingService }, { token: i2.TimelineViewService }, { token: i3.DependencyDomService }, { token: i4.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i5.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
33
- GanttSummaryTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: GanttSummaryTaskComponent, selector: "kendo-gantt-summary-task", inputs: { template: "template", isExpanded: "isExpanded" }, host: { properties: { "class.k-summary-wrap": "this.summaryWrapperClass" } }, providers: [
32
+ GanttSummaryTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttSummaryTaskComponent, deps: [{ token: TOUCH_ENABLED }, { token: i1.MappingService }, { token: i2.TimelineViewService }, { token: i3.DependencyDomService }, { token: i4.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i5.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
33
+ GanttSummaryTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GanttSummaryTaskComponent, selector: "kendo-gantt-summary-task", inputs: { template: "template", isExpanded: "isExpanded" }, host: { properties: { "class.k-summary-wrap": "this.summaryWrapperClass" } }, providers: [
34
34
  {
35
35
  provide: GanttTaskBase,
36
36
  useExisting: forwardRef(() => GanttSummaryTaskComponent)
@@ -80,7 +80,7 @@ GanttSummaryTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
80
80
  </div>
81
81
  </ng-container>
82
82
  `, isInline: true, styles: ["\n .k-task.k-focus {\n box-shadow: 0 0 4px 3px grey;\n outline: none;\n }\n .k-task.k-focus.k-selected {\n box-shadow: 0 0 4px 3px #ffaea8;\n }\n "], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttSummaryTaskComponent, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttSummaryTaskComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{
86
86
  selector: 'kendo-gantt-summary-task',
@@ -3,9 +3,9 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Directive, HostBinding, Input, ViewChild } from '@angular/core';
6
- import { MS_PER_HOUR, MS_PER_DAY } from '@progress/kendo-date-math';
6
+ import { MS_PER_HOUR, MS_PER_DAY, firstDayOfMonth } from '@progress/kendo-date-math';
7
7
  import { Subscription } from 'rxjs';
8
- import { isNumber, isPresent } from '../utils';
8
+ import { getTotalDaysInMonth, getTotalMonthsInBetween, isNumber, isPresent } from '../utils';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "../common/mapping.service";
11
11
  import * as i2 from "../timeline/timeline-view.service";
@@ -41,7 +41,7 @@ export class GanttTaskBase {
41
41
  return this.index;
42
42
  }
43
43
  get ariaSelected() {
44
- // assinging null will not render the attribute at all (desired in selectable="false" mode)
44
+ // assigning null will not render the attribute at all (desired in selectable="false" mode)
45
45
  return this.selectable ? String(this.isSelected(this.dataItem)) : null;
46
46
  }
47
47
  get slotUnitDuration() {
@@ -54,7 +54,22 @@ export class GanttTaskBase {
54
54
  return this.viewService.options.slotWidth;
55
55
  }
56
56
  get taskWidth() {
57
- const itemDuration = this.mapper.extractFromTask(this.dataItem, 'end') - this.mapper.extractFromTask(this.dataItem, 'start');
57
+ const taskStart = this.mapper.extractFromTask(this.dataItem, 'start');
58
+ const taskEnd = this.mapper.extractFromTask(this.dataItem, 'end');
59
+ if (this.activeView === 'year') {
60
+ const monthsDiff = Math.max(getTotalMonthsInBetween(taskStart, taskEnd), 0);
61
+ const totalDaysInStartMonth = getTotalDaysInMonth(taskStart);
62
+ if (monthsDiff > 0) {
63
+ const startFraction = (totalDaysInStartMonth - taskStart.getDate()) / totalDaysInStartMonth;
64
+ const endFraction = taskEnd.getDate() / getTotalDaysInMonth(taskEnd);
65
+ return (startFraction + monthsDiff + endFraction) * this.slotWidth;
66
+ }
67
+ else {
68
+ const fraction = (taskEnd.getDate() - taskStart.getDate()) / totalDaysInStartMonth;
69
+ return fraction * this.slotWidth;
70
+ }
71
+ }
72
+ const itemDuration = taskEnd - taskStart;
58
73
  const durationInSlotUnits = itemDuration / this.slotUnitDuration;
59
74
  const width = durationInSlotUnits * this.slotWidth;
60
75
  return width;
@@ -66,7 +81,15 @@ export class GanttTaskBase {
66
81
  * Additionally, positioning the entire container takes care of positioning the hints as well.
67
82
  */
68
83
  get taskOffset() {
69
- const timeAfterViewStart = this.mapper.extractFromTask(this.dataItem, 'start') - this.viewService.viewStart;
84
+ const taskStart = this.mapper.extractFromTask(this.dataItem, 'start');
85
+ const viewStart = this.viewService.viewStart;
86
+ if (this.activeView === 'year') {
87
+ const viewStartDate = new Date(viewStart);
88
+ const offsetSlots = getTotalMonthsInBetween(viewStartDate, new Date(firstDayOfMonth(taskStart))) + 1;
89
+ const currentMonthOffset = taskStart.getDate() / getTotalDaysInMonth(taskStart);
90
+ return (offsetSlots + currentMonthOffset) * this.slotWidth;
91
+ }
92
+ const timeAfterViewStart = taskStart - viewStart;
70
93
  const offsetInSlotUnits = timeAfterViewStart / this.slotUnitDuration;
71
94
  const offset = offsetInSlotUnits * this.slotWidth;
72
95
  return offset;
@@ -109,9 +132,9 @@ export class GanttTaskBase {
109
132
  }
110
133
  }
111
134
  }
112
- GanttTaskBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTaskBase, deps: [{ token: i1.MappingService }, { token: i2.TimelineViewService }, { token: i3.DependencyDomService }, { token: i4.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i5.NavigationService }], target: i0.ɵɵFactoryTarget.Directive });
113
- GanttTaskBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: GanttTaskBase, selector: "kendo-gantt-task-base", inputs: { dataItem: "dataItem", index: "index", level: "level", renderDependencyDragClues: "renderDependencyDragClues", selectable: "selectable", isSelected: "isSelected", activeView: "activeView", taskClass: "taskClass" }, host: { properties: { "class.k-task-wrap": "this.wrapperClass", "attr.data-task-index": "this.taskIndexAttribute", "style.left.px": "this.taskOffset" } }, viewQueries: [{ propertyName: "taskElement", first: true, predicate: ["task"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0 });
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTaskBase, decorators: [{
135
+ GanttTaskBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTaskBase, deps: [{ token: i1.MappingService }, { token: i2.TimelineViewService }, { token: i3.DependencyDomService }, { token: i4.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i5.NavigationService }], target: i0.ɵɵFactoryTarget.Directive });
136
+ GanttTaskBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: GanttTaskBase, selector: "kendo-gantt-task-base", inputs: { dataItem: "dataItem", index: "index", level: "level", renderDependencyDragClues: "renderDependencyDragClues", selectable: "selectable", isSelected: "isSelected", activeView: "activeView", taskClass: "taskClass" }, host: { properties: { "class.k-task-wrap": "this.wrapperClass", "attr.data-task-index": "this.taskIndexAttribute", "style.left.px": "this.taskOffset" } }, viewQueries: [{ propertyName: "taskElement", first: true, predicate: ["task"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0 });
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTaskBase, decorators: [{
115
138
  type: Directive,
116
139
  args: [{
117
140
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -28,8 +28,8 @@ export class GanttTaskComponent extends GanttTaskBase {
28
28
  this.editService.taskDelete.next(this.dataItem);
29
29
  }
30
30
  }
31
- GanttTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTaskComponent, deps: [{ token: i1.EditService }, { token: TOUCH_ENABLED }, { token: i2.MappingService }, { token: i3.TimelineViewService }, { token: i4.DependencyDomService }, { token: i5.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i6.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
32
- GanttTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: GanttTaskComponent, selector: "kendo-gantt-task", inputs: { taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate" }, providers: [
31
+ GanttTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTaskComponent, deps: [{ token: i1.EditService }, { token: TOUCH_ENABLED }, { token: i2.MappingService }, { token: i3.TimelineViewService }, { token: i4.DependencyDomService }, { token: i5.OptionChangesService }, { token: i0.ChangeDetectorRef }, { token: i6.NavigationService }], target: i0.ɵɵFactoryTarget.Component });
32
+ GanttTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GanttTaskComponent, selector: "kendo-gantt-task", inputs: { taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate" }, providers: [
33
33
  {
34
34
  provide: GanttTaskBase,
35
35
  useExisting: forwardRef(() => GanttTaskComponent)
@@ -104,7 +104,7 @@ GanttTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
104
104
  </div>
105
105
  </ng-container>
106
106
  `, isInline: true, styles: ["\n .k-task.k-focus {\n box-shadow: 0 0 4px 3px grey;\n outline: none;\n }\n .k-task.k-focus.k-selected {\n box-shadow: 0 0 4px 3px #ffaea8;\n }\n "], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTaskComponent, decorators: [{
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTaskComponent, decorators: [{
108
108
  type: Component,
109
109
  args: [{
110
110
  selector: 'kendo-gantt-task',
@@ -31,8 +31,8 @@ export class GanttTasksTableBodyComponent {
31
31
  return !item.hasChildren && isEqual(this.mapper.extractFromTask(item.data, 'start'), this.mapper.extractFromTask(item.data, 'end'));
32
32
  }
33
33
  }
34
- GanttTasksTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTasksTableBodyComponent, deps: [{ token: i1.DependencyDomService }, { token: i2.MappingService }], target: i0.ɵɵFactoryTarget.Component });
35
- GanttTasksTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: { selectable: "selectable", rows: "rows", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", isExpanded: "isExpanded", isTaskSelected: "isTaskSelected", renderDependencyDragClues: "renderDependencyDragClues" }, viewQueries: [{ propertyName: "timelineRow", first: true, predicate: ["timelineRow"], descendants: true }], ngImport: i0, template: `
34
+ GanttTasksTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTasksTableBodyComponent, deps: [{ token: i1.DependencyDomService }, { token: i2.MappingService }], target: i0.ɵɵFactoryTarget.Component });
35
+ GanttTasksTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: { selectable: "selectable", rows: "rows", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", isExpanded: "isExpanded", isTaskSelected: "isTaskSelected", renderDependencyDragClues: "renderDependencyDragClues" }, viewQueries: [{ propertyName: "timelineRow", first: true, predicate: ["timelineRow"], descendants: true }], ngImport: i0, template: `
36
36
  <tr #timelineRow *ngFor="let item of rows; let index = index">
37
37
  <td>
38
38
  <kendo-gantt-milestone-task
@@ -80,7 +80,7 @@ GanttTasksTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
80
80
  </td>
81
81
  </tr>
82
82
  `, isInline: true, components: [{ type: i3.GanttMilestoneTaskComponent, selector: "kendo-gantt-milestone-task" }, { type: i4.GanttSummaryTaskComponent, selector: "kendo-gantt-summary-task", inputs: ["template", "isExpanded"] }, { type: i5.GanttTaskComponent, selector: "kendo-gantt-task", inputs: ["taskContentTemplate", "taskTemplate"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTasksTableBodyComponent, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTasksTableBodyComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{
86
86
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -73,8 +73,8 @@ export class ScrollSyncService {
73
73
  });
74
74
  }
75
75
  }
76
- ScrollSyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ScrollSyncService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
77
- ScrollSyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ScrollSyncService });
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ScrollSyncService, decorators: [{
76
+ ScrollSyncService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ScrollSyncService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
77
+ ScrollSyncService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ScrollSyncService });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ScrollSyncService, decorators: [{
79
79
  type: Injectable
80
80
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
@@ -63,9 +63,9 @@ export class TimelineScrollableDirective {
63
63
  }
64
64
  }
65
65
  }
66
- TimelineScrollableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i1.TimelineScrollService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
67
- TimelineScrollableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: TimelineScrollableDirective, selector: "[kendoGanttTimelineScrollable]", inputs: { scrollSettings: "scrollSettings" }, ngImport: i0 });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineScrollableDirective, decorators: [{
66
+ TimelineScrollableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i1.TimelineScrollService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
67
+ TimelineScrollableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: TimelineScrollableDirective, selector: "[kendoGanttTimelineScrollable]", inputs: { scrollSettings: "scrollSettings" }, ngImport: i0 });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineScrollableDirective, decorators: [{
69
69
  type: Directive,
70
70
  args: [{
71
71
  selector: '[kendoGanttTimelineScrollable]'
@@ -32,8 +32,8 @@ export class TimelineScrollService {
32
32
  this.scrollCancel.next();
33
33
  }
34
34
  }
35
- TimelineScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
36
- TimelineScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineScrollService });
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineScrollService, decorators: [{
35
+ TimelineScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
36
+ TimelineScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineScrollService });
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineScrollService, decorators: [{
38
38
  type: Injectable
39
39
  }] });
@@ -93,9 +93,9 @@ export class SelectableDirective {
93
93
  }
94
94
  }
95
95
  }
96
- SelectableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SelectableDirective, deps: [{ token: i1.GanttComponent }], target: i0.ɵɵFactoryTarget.Directive });
97
- SelectableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: SelectableDirective, selector: "[kendoGanttSelectable]", inputs: { selectable: "selectable", selectedKeys: "selectedKeys", itemKey: "itemKey" }, outputs: { selectedKeysChange: "selectedKeysChange" }, exportAs: ["kendoGanttSelectable"], ngImport: i0 });
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SelectableDirective, decorators: [{
96
+ SelectableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectableDirective, deps: [{ token: i1.GanttComponent }], target: i0.ɵɵFactoryTarget.Directive });
97
+ SelectableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: SelectableDirective, selector: "[kendoGanttSelectable]", inputs: { selectable: "selectable", selectedKeys: "selectedKeys", itemKey: "itemKey" }, outputs: { selectedKeysChange: "selectedKeysChange" }, exportAs: ["kendoGanttSelectable"], ngImport: i0 });
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectableDirective, decorators: [{
99
99
  type: Directive,
100
100
  args: [{
101
101
  exportAs: 'kendoGanttSelectable',
@@ -38,9 +38,9 @@ export class GanttSummaryTaskTemplateDirective {
38
38
  this.templateRef = templateRef;
39
39
  }
40
40
  }
41
- GanttSummaryTaskTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttSummaryTaskTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
42
- GanttSummaryTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: GanttSummaryTaskTemplateDirective, selector: "[kendoGanttSummaryTaskTemplate]", ngImport: i0 });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttSummaryTaskTemplateDirective, decorators: [{
41
+ GanttSummaryTaskTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttSummaryTaskTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
42
+ GanttSummaryTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: GanttSummaryTaskTemplateDirective, selector: "[kendoGanttSummaryTaskTemplate]", ngImport: i0 });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttSummaryTaskTemplateDirective, decorators: [{
44
44
  type: Directive,
45
45
  args: [{
46
46
  selector: '[kendoGanttSummaryTaskTemplate]'
@@ -33,9 +33,9 @@ export class GanttTaskContentTemplateDirective {
33
33
  this.templateRef = templateRef;
34
34
  }
35
35
  }
36
- GanttTaskContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTaskContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
37
- GanttTaskContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: GanttTaskContentTemplateDirective, selector: "[kendoGanttTaskContentTemplate]", ngImport: i0 });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTaskContentTemplateDirective, decorators: [{
36
+ GanttTaskContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTaskContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
37
+ GanttTaskContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: GanttTaskContentTemplateDirective, selector: "[kendoGanttTaskContentTemplate]", ngImport: i0 });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTaskContentTemplateDirective, decorators: [{
39
39
  type: Directive,
40
40
  args: [{
41
41
  selector: '[kendoGanttTaskContentTemplate]'
@@ -36,9 +36,9 @@ export class GanttTaskTemplateDirective {
36
36
  this.templateRef = templateRef;
37
37
  }
38
38
  }
39
- GanttTaskTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTaskTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
40
- GanttTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: GanttTaskTemplateDirective, selector: "[kendoGanttTaskTemplate]", ngImport: i0 });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTaskTemplateDirective, decorators: [{
39
+ GanttTaskTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTaskTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
40
+ GanttTaskTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: GanttTaskTemplateDirective, selector: "[kendoGanttTaskTemplate]", ngImport: i0 });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTaskTemplateDirective, decorators: [{
42
42
  type: Directive,
43
43
  args: [{
44
44
  selector: '[kendoGanttTaskTemplate]'
@@ -62,8 +62,8 @@ export class GanttTimelineComponent {
62
62
  return item.hasOwnProperty('isWorking') && !item.isWorking;
63
63
  }
64
64
  }
65
- GanttTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTimelineComponent, deps: [{ token: i1.ScrollSyncService }, { token: i2.DependencyDomService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
66
- GanttTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: { rows: "rows", slots: "slots", groupSlots: "groupSlots", tableWidth: "tableWidth", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", renderDependencyDragClues: "renderDependencyDragClues", dragScrollSettings: "dragScrollSettings", selectable: "selectable", isTaskSelected: "isTaskSelected", isExpanded: "isExpanded", dependencies: "dependencies" }, outputs: { timelineContainerPress: "timelineContainerPress", timelineContainerDrag: "timelineContainerDrag", timelineContainerRelease: "timelineContainerRelease" }, host: { properties: { "class.k-gantt-timeline": "this.hostClass" } }, viewQueries: [{ propertyName: "timelineContent", first: true, predicate: ["timelineContent"], descendants: true, static: true }, { propertyName: "timelineColumns", first: true, predicate: ["timelineColumns"], descendants: true, static: true }, { propertyName: "timelineHeaderWrap", first: true, predicate: ["timelineHeaderWrap"], descendants: true, static: true }, { propertyName: "tasksContainer", first: true, predicate: ["tasksContainer"], descendants: true, static: true }, { propertyName: "dragPopupContainer", first: true, predicate: ["dragPopupContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dependencyDragCreatePolyline", first: true, predicate: ["dependencyDragCreatePolyline"], descendants: true }], ngImport: i0, template: `
65
+ GanttTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTimelineComponent, deps: [{ token: i1.ScrollSyncService }, { token: i2.DependencyDomService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
66
+ GanttTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GanttTimelineComponent, selector: "kendo-gantt-timeline", inputs: { rows: "rows", slots: "slots", groupSlots: "groupSlots", tableWidth: "tableWidth", activeView: "activeView", taskContentTemplate: "taskContentTemplate", taskTemplate: "taskTemplate", summaryTaskTemplate: "summaryTaskTemplate", taskClass: "taskClass", renderDependencyDragClues: "renderDependencyDragClues", dragScrollSettings: "dragScrollSettings", selectable: "selectable", isTaskSelected: "isTaskSelected", isExpanded: "isExpanded", dependencies: "dependencies" }, outputs: { timelineContainerPress: "timelineContainerPress", timelineContainerDrag: "timelineContainerDrag", timelineContainerRelease: "timelineContainerRelease" }, host: { properties: { "class.k-gantt-timeline": "this.hostClass" } }, viewQueries: [{ propertyName: "timelineContent", first: true, predicate: ["timelineContent"], descendants: true, static: true }, { propertyName: "timelineColumns", first: true, predicate: ["timelineColumns"], descendants: true, static: true }, { propertyName: "timelineHeaderWrap", first: true, predicate: ["timelineHeaderWrap"], descendants: true, static: true }, { propertyName: "tasksContainer", first: true, predicate: ["tasksContainer"], descendants: true, static: true }, { propertyName: "dragPopupContainer", first: true, predicate: ["dragPopupContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "dependencyDragCreatePolyline", first: true, predicate: ["dependencyDragCreatePolyline"], descendants: true }], ngImport: i0, template: `
67
67
  <div class="k-timeline k-grid k-widget">
68
68
  <div class="k-grid-header">
69
69
  <div #timelineHeaderWrap class="k-grid-header-wrap">
@@ -166,7 +166,7 @@ GanttTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
166
166
  </div>
167
167
  </div>
168
168
  `, isInline: true, components: [{ type: i3.GanttHeaderTableBodyComponent, selector: "[kendoGanttHeaderTableBody]", inputs: ["groupSlots", "slots"] }, { type: i4.GanttTasksTableBodyComponent, selector: "[kendoGanttTasksTableBody]", inputs: ["selectable", "rows", "activeView", "taskContentTemplate", "taskTemplate", "summaryTaskTemplate", "taskClass", "isExpanded", "isTaskSelected", "renderDependencyDragClues"] }], directives: [{ type: i5.TimelineScrollableDirective, selector: "[kendoGanttTimelineScrollable]", inputs: ["scrollSettings"] }, { type: i6.DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.GanttDependencyDirective, selector: "[kendoGanttDependency]", inputs: ["dependency"] }] });
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GanttTimelineComponent, decorators: [{
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GanttTimelineComponent, decorators: [{
170
170
  type: Component,
171
171
  args: [{
172
172
  selector: 'kendo-gantt-timeline',
@@ -4,7 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { orderBy } from '@progress/kendo-data-query';
6
6
  import { isWorkDay, isWorkHour, lastDayOfWeek } from '../utils';
7
- import { addDays, firstDayInWeek, getDate, firstDayOfMonth, lastDayOfMonth, addMonths, addWeeks } from '@progress/kendo-date-math';
7
+ import { addDays, firstDayInWeek, getDate, firstDayOfMonth, lastDayOfMonth, addMonths, addWeeks, lastMonthOfYear } from '@progress/kendo-date-math';
8
8
  /**
9
9
  * @hidden
10
10
  */
@@ -73,7 +73,8 @@ export class TimelineBaseViewService {
73
73
  end: slotEnd,
74
74
  isWorking: isWorkSlot,
75
75
  text: this.intlService.formatDate(startDate, HOUR_FORMAT),
76
- span: 1
76
+ span: 1,
77
+ slotWidth: this.options.slotWidth
77
78
  });
78
79
  startDate = slotEnd;
79
80
  }
@@ -100,7 +101,8 @@ export class TimelineBaseViewService {
100
101
  end: slotEnd,
101
102
  isWorking: isWorking,
102
103
  text: this.intlService.formatDate(startDay, DAY_FORMAT),
103
- span: 1
104
+ span: 1,
105
+ slotWidth: this.options.slotWidth
104
106
  });
105
107
  startDay = nextDay;
106
108
  }
@@ -123,14 +125,15 @@ export class TimelineBaseViewService {
123
125
  start: daySlots[0].start,
124
126
  end: daySlots[span - 1].end,
125
127
  text: `${firstDay} - ${lastDay}`,
126
- span: span
128
+ span: span,
129
+ slotWidth: this.options.slotWidth
127
130
  });
128
131
  }
129
132
  startDay = firstDayInWeek(addWeeks(slotEnd, 1));
130
133
  }
131
134
  return slots;
132
135
  }
133
- getMonths(start, end) {
136
+ getMonths(start, end, isMainViewType) {
134
137
  const slots = [];
135
138
  let startDay = new Date(start);
136
139
  let endDay = new Date(end);
@@ -138,19 +141,43 @@ export class TimelineBaseViewService {
138
141
  const endMonth = lastDayOfMonth(startDay);
139
142
  let slotEnd = endDay < endMonth ? endDay : endMonth;
140
143
  const daySlots = this.getDays(startDay, slotEnd);
141
- const span = daySlots.length;
144
+ const weekSlots = this.getWeeks(startDay, slotEnd);
145
+ const span = isMainViewType ? daySlots.length : weekSlots.length;
142
146
  const monthStart = firstDayOfMonth(getDate(startDay));
143
147
  const shortText = this.intlService.formatDate(monthStart, MONTH_FORMAT);
144
148
  if (span > 0) {
145
149
  slots.push({
146
- start: daySlots[0].start,
147
- end: daySlots[span - 1].end,
150
+ start: isMainViewType ? daySlots[0].start : weekSlots[0].start,
151
+ end: isMainViewType ? daySlots[span - 1] : weekSlots[span - 1].end,
148
152
  span: span,
149
- text: shortText
153
+ text: shortText,
154
+ slotWidth: this.options.slotWidth
150
155
  });
151
156
  }
152
157
  startDay = firstDayOfMonth(addMonths(slotEnd, 1));
153
158
  }
154
159
  return slots;
155
160
  }
161
+ getYears(start, end) {
162
+ const slots = [];
163
+ let startDay = new Date(start);
164
+ let endDay = new Date(end);
165
+ while (startDay < endDay) {
166
+ const yearEnd = lastDayOfMonth(lastMonthOfYear(startDay));
167
+ const slotEnd = endDay < yearEnd ? endDay : yearEnd;
168
+ const monthSlots = this.getMonths(startDay, slotEnd);
169
+ const span = monthSlots.length;
170
+ if (span > 0) {
171
+ slots.push({
172
+ start: monthSlots[0].start,
173
+ end: monthSlots[span - 1].end,
174
+ span: span,
175
+ text: slotEnd.getFullYear(),
176
+ slotWidth: this.options.slotWidth
177
+ });
178
+ }
179
+ startDay = addDays(slotEnd, 1);
180
+ }
181
+ return slots;
182
+ }
156
183
  }
@@ -16,14 +16,14 @@ export class TimelineDayViewComponent extends ViewBase {
16
16
  this.type = 'day';
17
17
  }
18
18
  }
19
- TimelineDayViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineDayViewComponent, deps: [{ token: i1.OptionChangesService }, { token: i2.DependencyDomService }], target: i0.ɵɵFactoryTarget.Component });
20
- TimelineDayViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TimelineDayViewComponent, selector: "kendo-gantt-timeline-day-view", providers: [
19
+ TimelineDayViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineDayViewComponent, deps: [{ token: i1.OptionChangesService }, { token: i2.DependencyDomService }], target: i0.ɵɵFactoryTarget.Component });
20
+ TimelineDayViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TimelineDayViewComponent, selector: "kendo-gantt-timeline-day-view", providers: [
21
21
  {
22
22
  provide: ViewBase,
23
23
  useExisting: forwardRef(() => TimelineDayViewComponent)
24
24
  }
25
25
  ], usesInheritance: true, ngImport: i0, template: '', isInline: true });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineDayViewComponent, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineDayViewComponent, decorators: [{
27
27
  type: Component,
28
28
  args: [{
29
29
  selector: 'kendo-gantt-timeline-day-view',
@@ -59,8 +59,8 @@ export class TimelineDayViewService extends TimelineBaseViewService {
59
59
  return slots;
60
60
  }
61
61
  }
62
- TimelineDayViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineDayViewService, deps: [{ token: i1.IntlService }, { token: i2.MappingService }], target: i0.ɵɵFactoryTarget.Injectable });
63
- TimelineDayViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineDayViewService });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TimelineDayViewService, decorators: [{
62
+ TimelineDayViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineDayViewService, deps: [{ token: i1.IntlService }, { token: i2.MappingService }], target: i0.ɵɵFactoryTarget.Injectable });
63
+ TimelineDayViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineDayViewService });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineDayViewService, decorators: [{
65
65
  type: Injectable
66
66
  }], ctorParameters: function () { return [{ type: i1.IntlService }, { type: i2.MappingService }]; } });