@progress/kendo-angular-gantt 0.1.5 → 0.2.0-dev.202111231320

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 (116) hide show
  1. package/dist/cdn/js/kendo-angular-gantt.js +2 -76
  2. package/dist/cdn/main.js +23 -1
  3. package/dist/es/columns/column.component.js +5 -0
  4. package/dist/es/columns/columns.js +1 -0
  5. package/dist/es/columns/edit-template.directive.js +34 -0
  6. package/dist/es/columns/span-column.component.js +6 -0
  7. package/dist/es/editing/edit-dialog.component.js +44 -0
  8. package/dist/es/editing/edit.service.js +39 -0
  9. package/dist/es/editing/util.js +17 -0
  10. package/dist/es/gantt.component.js +309 -8
  11. package/dist/es/gantt.module.js +60 -5
  12. package/dist/es/index.js +6 -0
  13. package/dist/es/localization/custom-messages.component.js +44 -0
  14. package/dist/es/localization/localized-messages.directive.js +35 -0
  15. package/dist/es/localization/messages.js +246 -0
  16. package/dist/es/localization/treelist-messages.directive.js +31 -0
  17. package/dist/es/models/events/cell-click-event.interface.js +4 -0
  18. package/dist/es/models/events/cell-close-event.interface.js +19 -0
  19. package/dist/es/models/events/preventable-event.js +32 -0
  20. package/dist/es/models/events/task-click-event.interface.js +4 -0
  21. package/dist/es/models/events/task-edit-event.interface.js +4 -0
  22. package/dist/es/models/gantt-task-model-fields.interface.js +2 -1
  23. package/dist/es/package-metadata.js +1 -1
  24. package/dist/es/rendering/gantt-milestone-task.component.js +1 -1
  25. package/dist/es/rendering/gantt-summary-task.component.js +1 -1
  26. package/dist/es/rendering/gantt-task-base.js +4 -0
  27. package/dist/es/rendering/gantt-task.component.js +12 -4
  28. package/dist/es/rendering/gantt-tasks-table-body.component.js +5 -1
  29. package/dist/es/toolbar/view-selector.component.js +7 -4
  30. package/dist/es/utils.js +44 -1
  31. package/dist/es2015/columns/column.component.d.ts +2 -0
  32. package/dist/es2015/columns/column.component.js +5 -0
  33. package/dist/es2015/columns/columns.d.ts +1 -0
  34. package/dist/es2015/columns/columns.js +1 -0
  35. package/dist/es2015/columns/edit-template.directive.d.ts +23 -0
  36. package/dist/es2015/columns/edit-template.directive.js +33 -0
  37. package/dist/es2015/columns/span-column.component.d.ts +2 -0
  38. package/dist/es2015/columns/span-column.component.js +6 -0
  39. package/dist/es2015/editing/edit-dialog.component.d.ts +21 -0
  40. package/dist/es2015/editing/edit-dialog.component.js +86 -0
  41. package/dist/es2015/editing/edit.service.d.ts +20 -0
  42. package/dist/es2015/editing/edit.service.js +41 -0
  43. package/dist/es2015/editing/util.d.ts +10 -0
  44. package/dist/es2015/editing/util.js +17 -0
  45. package/dist/es2015/gantt.component.d.ts +180 -4
  46. package/dist/es2015/gantt.component.js +492 -8
  47. package/dist/es2015/gantt.module.d.ts +29 -1
  48. package/dist/es2015/gantt.module.js +60 -5
  49. package/dist/es2015/index.d.ts +6 -0
  50. package/dist/es2015/index.js +6 -0
  51. package/dist/es2015/index.metadata.json +1 -1
  52. package/dist/es2015/localization/custom-messages.component.d.ts +15 -0
  53. package/dist/es2015/localization/custom-messages.component.js +36 -0
  54. package/dist/es2015/localization/localized-messages.directive.d.ts +13 -0
  55. package/dist/es2015/localization/localized-messages.directive.js +31 -0
  56. package/dist/es2015/localization/messages.d.ts +246 -0
  57. package/dist/es2015/localization/messages.js +240 -0
  58. package/dist/es2015/localization/treelist-messages.directive.d.ts +14 -0
  59. package/dist/es2015/localization/treelist-messages.directive.js +29 -0
  60. package/dist/es2015/models/events/cell-click-event.interface.d.ts +20 -0
  61. package/dist/es2015/models/events/cell-click-event.interface.js +4 -0
  62. package/dist/es2015/models/events/cell-close-event.interface.d.ts +48 -0
  63. package/dist/es2015/models/events/cell-close-event.interface.js +14 -0
  64. package/dist/es2015/models/events/preventable-event.d.ts +24 -0
  65. package/dist/es2015/models/events/preventable-event.js +30 -0
  66. package/dist/es2015/models/events/task-click-event.interface.d.ts +22 -0
  67. package/dist/es2015/models/events/task-click-event.interface.js +4 -0
  68. package/dist/es2015/models/events/task-edit-event.interface.d.ts +46 -0
  69. package/dist/es2015/models/events/task-edit-event.interface.js +4 -0
  70. package/dist/es2015/models/gantt-task-model-fields.interface.d.ts +1 -0
  71. package/dist/es2015/models/gantt-task-model-fields.interface.js +2 -1
  72. package/dist/es2015/package-metadata.js +1 -1
  73. package/dist/es2015/rendering/gantt-milestone-task.component.js +1 -0
  74. package/dist/es2015/rendering/gantt-summary-task.component.js +1 -0
  75. package/dist/es2015/rendering/gantt-task-base.d.ts +1 -0
  76. package/dist/es2015/rendering/gantt-task-base.js +4 -0
  77. package/dist/es2015/rendering/gantt-task.component.d.ts +4 -1
  78. package/dist/es2015/rendering/gantt-task.component.js +17 -2
  79. package/dist/es2015/rendering/gantt-tasks-table-body.component.d.ts +1 -0
  80. package/dist/es2015/rendering/gantt-tasks-table-body.component.js +8 -1
  81. package/dist/es2015/toolbar/view-selector.component.d.ts +3 -0
  82. package/dist/es2015/toolbar/view-selector.component.js +7 -7
  83. package/dist/es2015/utils.d.ts +34 -0
  84. package/dist/es2015/utils.js +44 -1
  85. package/dist/fesm2015/index.js +1080 -23
  86. package/dist/fesm5/index.js +865 -24
  87. package/dist/npm/columns/column.component.js +5 -0
  88. package/dist/npm/columns/columns.js +2 -0
  89. package/dist/npm/columns/edit-template.directive.js +36 -0
  90. package/dist/npm/columns/span-column.component.js +6 -0
  91. package/dist/npm/editing/edit-dialog.component.js +46 -0
  92. package/dist/npm/editing/edit.service.js +41 -0
  93. package/dist/npm/editing/util.js +19 -0
  94. package/dist/npm/gantt.component.js +306 -5
  95. package/dist/npm/gantt.module.js +59 -4
  96. package/dist/npm/index.js +12 -0
  97. package/dist/npm/localization/custom-messages.component.js +46 -0
  98. package/dist/npm/localization/localized-messages.directive.js +37 -0
  99. package/dist/npm/localization/messages.js +248 -0
  100. package/dist/npm/localization/treelist-messages.directive.js +33 -0
  101. package/dist/npm/models/events/cell-click-event.interface.js +6 -0
  102. package/dist/npm/models/events/cell-close-event.interface.js +21 -0
  103. package/dist/npm/models/events/preventable-event.js +34 -0
  104. package/dist/npm/models/events/task-click-event.interface.js +6 -0
  105. package/dist/npm/models/events/task-edit-event.interface.js +6 -0
  106. package/dist/npm/models/gantt-task-model-fields.interface.js +2 -1
  107. package/dist/npm/package-metadata.js +1 -1
  108. package/dist/npm/rendering/gantt-milestone-task.component.js +1 -1
  109. package/dist/npm/rendering/gantt-summary-task.component.js +1 -1
  110. package/dist/npm/rendering/gantt-task-base.js +4 -0
  111. package/dist/npm/rendering/gantt-task.component.js +12 -4
  112. package/dist/npm/rendering/gantt-tasks-table-body.component.js +5 -1
  113. package/dist/npm/toolbar/view-selector.component.js +7 -4
  114. package/dist/npm/utils.js +43 -0
  115. package/dist/systemjs/kendo-angular-gantt.js +1 -1
  116. package/package.json +5 -2
@@ -7,15 +7,21 @@ import { Input, EventEmitter, Injectable, Directive, Optional, TemplateRef, Quer
7
7
  import { ColumnBase, ColumnComponent, ColumnGroupComponent, SpanColumnComponent, TreeListComponent, DataBoundTreeComponent, ExpandableTreeComponent, FlatBindingDirective, HierarchyBindingDirective, ExpandableDirective, TreeListModule } from '@progress/kendo-angular-treelist';
8
8
  import { of, Subject, Subscription, fromEvent } from 'rxjs';
9
9
  import { validatePackage } from '@progress/kendo-licensing';
10
- import { isDocumentAvailable, anyChanged } from '@progress/kendo-angular-common';
10
+ import { isDocumentAvailable, closestInScope, matchesClasses, anyChanged, hasObservers, EventsModule } from '@progress/kendo-angular-common';
11
11
  import { IntlService } from '@progress/kendo-angular-intl';
12
12
  import { orderBy } from '@progress/kendo-data-query';
13
13
  import { cloneDate, addWeeks, firstDayInWeek, addDays, getDate, lastDayOfMonth, firstDayOfMonth, addMonths, isEqualDate, MS_PER_HOUR, MS_PER_DAY } from '@progress/kendo-date-math';
14
14
  import { getter } from '@progress/kendo-common';
15
15
  import { map, distinctUntilChanged, take, filter, switchMap } from 'rxjs/operators';
16
+ import { LocalizationService, ComponentMessages, L10N_PREFIX } from '@progress/kendo-angular-l10n';
16
17
  import { CommonModule } from '@angular/common';
17
18
  import { SplitterModule } from '@progress/kendo-angular-layout';
18
19
  import { ButtonsModule } from '@progress/kendo-angular-buttons';
20
+ import { DialogModule } from '@progress/kendo-angular-dialog';
21
+ import { FormGroup, ReactiveFormsModule } from '@angular/forms';
22
+ import { LabelModule } from '@progress/kendo-angular-label';
23
+ import { InputsModule } from '@progress/kendo-angular-inputs';
24
+ import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
19
25
 
20
26
  /**
21
27
  * @hidden
@@ -24,7 +30,7 @@ const packageMetadata = {
24
30
  name: '@progress/kendo-angular-gantt',
25
31
  productName: 'Kendo UI for Angular',
26
32
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
27
- publishDate: 1635941338,
33
+ publishDate: 1637673280,
28
34
  version: '',
29
35
  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'
30
36
  };
@@ -250,6 +256,33 @@ HeaderTemplateDirective = __decorate([
250
256
  __metadata("design:paramtypes", [TemplateRef])
251
257
  ], HeaderTemplateDirective);
252
258
 
259
+ /**
260
+ * Represents the column edit-cell template of the Gantt.
261
+ * Helps to customize the content of the edited cells. To define the cell template, nest an `<ng-template>`
262
+ * tag with the `kendoGanttEditTemplate` directive inside a `<kendo-gantt-column>` tag.
263
+ *
264
+ * The template context contains the following fields:
265
+ * - `column`&mdash;The current column instance.
266
+ * - `dataItem`&mdash;The current data item.
267
+ * - `cellContext`&mdash;An object used to pass context information to built-in directives.
268
+ * - `formGroup`&mdash;The current [`FormGroup`]({{ site.data.urls.angular['formgroupapi'] }}).
269
+ * If you use the Gantt inside [Template-Driven Forms]({{ site.data.urls.angular['forms'] }}), it will be `undefined`.
270
+ * - `isNew`&mdash;The state of the current item.
271
+ * - `rowIndex`&mdash;The current row index. If inside a new item row, `rowIndex` is `-1`.
272
+ */
273
+ let EditTemplateDirective = class EditTemplateDirective {
274
+ constructor(templateRef) {
275
+ this.templateRef = templateRef;
276
+ }
277
+ };
278
+ EditTemplateDirective = __decorate([
279
+ Directive({
280
+ selector: '[kendoGanttEditTemplate]'
281
+ }),
282
+ __param(0, Optional()),
283
+ __metadata("design:paramtypes", [TemplateRef])
284
+ ], EditTemplateDirective);
285
+
253
286
  var GanttColumnComponent_1;
254
287
  let GanttColumnComponent = GanttColumnComponent_1 = class GanttColumnComponent extends ColumnComponent {
255
288
  constructor(options, parent) {
@@ -305,6 +338,10 @@ __decorate([
305
338
  ContentChild(CellTemplateDirective, { static: false }),
306
339
  __metadata("design:type", CellTemplateDirective)
307
340
  ], GanttColumnComponent.prototype, "template", void 0);
341
+ __decorate([
342
+ ContentChild(EditTemplateDirective, { static: false }),
343
+ __metadata("design:type", EditTemplateDirective)
344
+ ], GanttColumnComponent.prototype, "editTemplate", void 0);
308
345
  __decorate([
309
346
  ContentChild(FilterCellTemplateDirective, { static: false }),
310
347
  __metadata("design:type", FilterCellTemplateDirective)
@@ -496,6 +533,7 @@ let GanttSpanColumnComponent = GanttSpanColumnComponent_1 = class GanttSpanColum
496
533
  */
497
534
  this.childColumns = new QueryList();
498
535
  this.template = new QueryList();
536
+ this.editTemplate = new QueryList();
499
537
  }
500
538
  ngOnChanges() {
501
539
  this.options.notifyColumnChanges();
@@ -509,6 +547,10 @@ __decorate([
509
547
  ContentChildren(CellTemplateDirective, { descendants: false }),
510
548
  __metadata("design:type", QueryList)
511
549
  ], GanttSpanColumnComponent.prototype, "template", void 0);
550
+ __decorate([
551
+ ContentChildren(EditTemplateDirective, { descendants: false }),
552
+ __metadata("design:type", QueryList)
553
+ ], GanttSpanColumnComponent.prototype, "editTemplate", void 0);
512
554
  __decorate([
513
555
  Input(),
514
556
  __metadata("design:type", Boolean)
@@ -681,6 +723,40 @@ const isColumnGroup = (column) => column.isColumnGroup;
681
723
  * @hidden
682
724
  */
683
725
  const isNumber = (contender) => typeof contender === 'number' && !isNaN(contender);
726
+ /**
727
+ * @hidden
728
+ *
729
+ * Gets the closest timeline task element index from an event target.
730
+ * Uses the `data-task-index` attribute assigned to each task.
731
+ * Restricts the search up to the provided gantt element from the second param.
732
+ */
733
+ const getClosestTaskIndex = (element, gantt) => {
734
+ const task = closestInScope(element, matchesClasses('k-task'), gantt);
735
+ if (!isPresent(task)) {
736
+ return null;
737
+ }
738
+ return Number(task.getAttribute('data-task-index'));
739
+ };
740
+ /**
741
+ * @hidden
742
+ *
743
+ * Checks whether the queried item or its parent items has a `k-task` selector.
744
+ * Restricts the search up to the provided gantt element from the second param.
745
+ */
746
+ const isTask = (contender, gantt) => {
747
+ const task = closestInScope(contender, matchesClasses('k-task'), gantt);
748
+ return isPresent(task);
749
+ };
750
+ /**
751
+ * @hidden
752
+ *
753
+ * Checks whether the queried item or its parent items has a `k-task-actions` selector - used for the clear button.
754
+ * Restricts the search up to the provided gantt element from the second param.
755
+ */
756
+ const isClearButton = (contender, gantt) => {
757
+ const clearButtonContainer = closestInScope(contender, matchesClasses('k-task-actions'), gantt);
758
+ return isPresent(clearButtonContainer);
759
+ };
684
760
 
685
761
  const DAY_FORMAT = 'E d/MM';
686
762
  const HOUR_FORMAT = 'HH:mm aa';
@@ -845,7 +921,8 @@ const DEFAULT_TASK_MODEL_FIELDS = Object.freeze({
845
921
  start: 'start',
846
922
  end: 'end',
847
923
  title: 'title',
848
- completionRatio: 'completionRatio'
924
+ completionRatio: 'completionRatio',
925
+ children: 'children'
849
926
  });
850
927
 
851
928
  /**
@@ -1224,6 +1301,40 @@ DependencyDomService = __decorate([
1224
1301
  __metadata("design:paramtypes", [MappingService])
1225
1302
  ], DependencyDomService);
1226
1303
 
1304
+ /**
1305
+ * @hidden
1306
+ */
1307
+ let EditService = class EditService {
1308
+ /**
1309
+ * @hidden
1310
+ */
1311
+ constructor() {
1312
+ this.showEditingDialog = new Subject();
1313
+ this.showConfirmationDialog = new Subject();
1314
+ this.editEvent = new Subject();
1315
+ }
1316
+ createEditDialog(dataItem, formGroup) {
1317
+ this.dataItem = dataItem;
1318
+ this.formGroup = formGroup;
1319
+ this.showEditingDialog.next(true);
1320
+ }
1321
+ closeEditDialog() {
1322
+ this.showEditingDialog.next(false);
1323
+ this.dataItem = undefined;
1324
+ this.formGroup = undefined;
1325
+ }
1326
+ triggerEditEvent(editResultType) {
1327
+ this.editEvent.next({
1328
+ formGroup: this.formGroup,
1329
+ dataItem: this.dataItem,
1330
+ editResultType
1331
+ });
1332
+ }
1333
+ };
1334
+ EditService = __decorate([
1335
+ Injectable()
1336
+ ], EditService);
1337
+
1227
1338
  /**
1228
1339
  * @hidden
1229
1340
  */
@@ -1511,20 +1622,104 @@ __decorate([
1511
1622
  __metadata("design:type", Number)
1512
1623
  ], ViewBase.prototype, "slotWidth", void 0);
1513
1624
 
1625
+ /**
1626
+ * @hidden
1627
+ */
1628
+ const getEditItem = (dataItem, data, mapper) => {
1629
+ const treeListDataItem = data.find(item => mapper.extractFromTask(item.data, 'id') === mapper.extractFromTask(dataItem, 'id'));
1630
+ return mapPath(treeListDataItem);
1631
+ };
1632
+ const mapPath = (item) => ({
1633
+ dataItem: item.data,
1634
+ parent: item.parent.data ? mapPath(item.parent) : null
1635
+ });
1636
+
1514
1637
  var GanttComponent_1;
1515
1638
  const TREELIST_GROUP_COLUMNS_CLASS = 'k-gantt-treelist-nested-columns';
1516
1639
  const DEFAULT_VIEW = 'week';
1517
1640
  /**
1518
- * The GiGantt
1641
+ * Represents the Kendo UI Gantt component for Angular.
1642
+ *
1643
+ * @example
1644
+ * ```ts-preview
1645
+ * _@Component({
1646
+ * selector: 'my-app',
1647
+ * template: `
1648
+ * <kendo-gantt
1649
+ * [style.height.px]="500"
1650
+ * [kendoGanttHierarchyBinding]="data"
1651
+ * childrenField="subtasks"
1652
+ * [dependencies]="dependencies">
1653
+ * <kendo-gantt-column
1654
+ * field="title"
1655
+ * title="Task"
1656
+ * [width]="200"
1657
+ * [expandable]="true"></kendo-gantt-column>
1658
+ * <kendo-gantt-column
1659
+ * field="start"
1660
+ * title="Start"
1661
+ * format="dd-MMM-yyyy"
1662
+ * [width]="120"></kendo-gantt-column>
1663
+ * <kendo-gantt-column
1664
+ * field="end"
1665
+ * title="End"
1666
+ * format="dd-MMM-yyyy"
1667
+ * [width]="120"></kendo-gantt-column>
1668
+ * <kendo-gantt-timeline-day-view></kendo-gantt-timeline-day-view>
1669
+ * <kendo-gantt-timeline-week-view></kendo-gantt-timeline-week-view>
1670
+ * <kendo-gantt-timeline-month-view></kendo-gantt-timeline-month-view>
1671
+ * </kendo-gantt>
1672
+ * `
1673
+ * })
1674
+ * class AppComponent {
1675
+ * public data: Task[] = [{
1676
+ * id: 7, title: 'Validation and R&D', start: new Date('2014-06-02T00:00:00.000Z'),
1677
+ * end: new Date('2014-06-19T00:00:00.000Z'), completionRatio: 0.45708333333333334,
1678
+ * subtasks: [
1679
+ * { id: 18, title: 'Project Kickoff', start: new Date('2014-06-02T00:00:00.000Z'),
1680
+ * end: new Date('2014-06-02T00:00:00.000Z'), completionRatio: 0.23 },
1681
+ * { id: 11, title: 'Research', start: new Date('2014-06-02T00:00:00.000Z'),
1682
+ * end: new Date('2014-06-07T00:00:00.000Z'), completionRatio: 0.5766666666666667,
1683
+ * subtasks: [
1684
+ * { id: 19, title: 'Validation', start: new Date('2014-06-02T00:00:00.000Z'),
1685
+ * end: new Date('2014-06-04T00:00:00.000Z'), completionRatio: 0.25 },
1686
+ * { id: 39, title: 'Specification', start: new Date('2014-06-04T00:00:00.000Z'),
1687
+ * end: new Date('2014-06-07T00:00:00.000Z'), completionRatio: 0.66 }]
1688
+ * }, { id: 13, title: 'Implementation', start: new Date('2014-06-08T00:00:00.000Z'),
1689
+ * end: new Date('2014-06-19T00:00:00.000Z'), completionRatio: 0.77,
1690
+ * subtasks: [
1691
+ * { id: 24, title: 'Prototype', start: new Date('2014-06-08T00:00:00.000Z'),
1692
+ * end: new Date('2014-06-14T00:00:00.000Z'), completionRatio: 0.77 },
1693
+ * { id: 29, title: 'UI and Interaction', start: new Date('2014-06-14T00:00:00.000Z'),
1694
+ * end: new Date('2014-06-19T00:00:00.000Z'), completionRatio: 0.6 }]
1695
+ * }, { id: 17, title: 'Release', start: new Date('2014-06-19T00:00:00.000Z'),
1696
+ * end: new Date('2014-06-19T00:00:00.000Z'), completionRatio: 0 }]
1697
+ * }];
1698
+ *
1699
+ * public dependencies: GanttDependency[] = [
1700
+ * { id: 528, fromId: 18, toId: 19, type: DependencyType.FS },
1701
+ * { id: 529, fromId: 19, toId: 39, type: DependencyType.FS },
1702
+ * { id: 535, fromId: 24, toId: 29, type: DependencyType.FS },
1703
+ * { id: 551, fromId: 13, toId: 29, type: DependencyType.FF },
1704
+ * { id: 777, fromId: 7, toId: 11, type: DependencyType.SF },
1705
+ * { id: 556, fromId: 39, toId: 24, type: DependencyType.FS },
1706
+ * { id: 546, fromId: 29, toId: 17, type: DependencyType.FS },
1707
+ * ];
1708
+ * }
1709
+ * ```
1519
1710
  */
1520
1711
  let GanttComponent = GanttComponent_1 = class GanttComponent {
1521
- constructor(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService) {
1712
+ constructor(timelineViewService, scrollSyncService, renderer, mapper, optionChangesService, dependencyDomService, editService, localizationService, hostElement, zone) {
1522
1713
  this.timelineViewService = timelineViewService;
1523
1714
  this.scrollSyncService = scrollSyncService;
1524
1715
  this.renderer = renderer;
1525
1716
  this.mapper = mapper;
1526
1717
  this.optionChangesService = optionChangesService;
1527
1718
  this.dependencyDomService = dependencyDomService;
1719
+ this.editService = editService;
1720
+ this.localizationService = localizationService;
1721
+ this.hostElement = hostElement;
1722
+ this.zone = zone;
1528
1723
  this.hostClasses = true;
1529
1724
  /**
1530
1725
  * The position of the toolbar.
@@ -1612,10 +1807,40 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
1612
1807
  * Fires when an item is expanded.
1613
1808
  */
1614
1809
  this.rowExpand = new EventEmitter();
1810
+ /**
1811
+ * Fires when a Gantt task in the timeline pane is double-clicked. The data item, associated with the clicked task,
1812
+ * is available in the event data. Use the event handler to open a task editing dialog as necessary.
1813
+ */
1814
+ this.taskDblClick = new EventEmitter();
1815
+ /**
1816
+ * Fires when the user double clicks a cell.
1817
+ */
1818
+ this.cellDblClick = new EventEmitter();
1819
+ /**
1820
+ * Fires when the user leaves an edited cell.
1821
+ */
1822
+ this.cellClose = new EventEmitter();
1823
+ /**
1824
+ * Fires when the end user clicks the `Delete` button in the task editing dialog or the task delete icon.
1825
+ * Use the event handler to open a confirmation dialog when necessary.
1826
+ */
1827
+ this.taskDelete = new EventEmitter();
1615
1828
  /**
1616
1829
  * Fires when an item is collapsed.
1617
1830
  */
1618
1831
  this.rowCollapse = new EventEmitter();
1832
+ /**
1833
+ * Fires when the user confirms deleting a task.
1834
+ */
1835
+ this.remove = new EventEmitter();
1836
+ /**
1837
+ * Fires when the user cancels editing a task.
1838
+ */
1839
+ this.cancel = new EventEmitter();
1840
+ /**
1841
+ * Fires when the user saves an edited task.
1842
+ */
1843
+ this.save = new EventEmitter();
1619
1844
  /**
1620
1845
  * Fires when the sorting of the Gantt is changed.
1621
1846
  * You have to handle the event yourself and sort the data.
@@ -1670,6 +1895,14 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
1670
1895
  * Used by the GanttExpandableDirective.
1671
1896
  */
1672
1897
  this.expandStateChange = new EventEmitter();
1898
+ /**
1899
+ * @hidden
1900
+ */
1901
+ this.showEditingDialog = false;
1902
+ /**
1903
+ * @hidden
1904
+ */
1905
+ this.showConfirmationDialog = false;
1673
1906
  this._columns = new QueryList();
1674
1907
  this._data = [];
1675
1908
  this._timelinePaneOptions = Object.assign({}, DEFAULT_TIMELINE_PANE_SETTINGS);
@@ -1677,14 +1910,36 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
1677
1910
  this._rowClass = rowClassCallback;
1678
1911
  this._taskClass = taskClassCallback;
1679
1912
  this._activeView = DEFAULT_VIEW;
1913
+ this.rtl = false;
1680
1914
  this.optionChangesSubscriptions = new Subscription();
1915
+ this.editServiceSubscription = new Subscription();
1681
1916
  validatePackage(packageMetadata);
1917
+ this.handleTimelineDblClick = this.handleTimelineDblClick.bind(this);
1918
+ this.handleTimelineMouseDown = this.handleTimelineMouseDown.bind(this);
1919
+ this.handleDoubleClick = this.handleDoubleClick.bind(this);
1682
1920
  this.optionChangesSubscriptions.add(this.optionChangesService.viewChanges.subscribe(() => {
1683
1921
  this.loadTimelineData();
1684
1922
  }));
1685
1923
  this.optionChangesSubscriptions.add(this.optionChangesService.columnChanges.subscribe(() => {
1686
1924
  this.treeList.columns.notifyOnChanges();
1687
1925
  }));
1926
+ this.editServiceSubscription.add(this.editService.showEditingDialog.subscribe(show => this.showEditingDialog = show));
1927
+ this.editServiceSubscription.add(this.editService.showConfirmationDialog.subscribe(() => this.taskDelete.emit()));
1928
+ this.editServiceSubscription.add(this.editService.editEvent.subscribe(args => {
1929
+ this[args.editResultType].emit({
1930
+ formGroup: args.formGroup,
1931
+ item: getEditItem(args.dataItem, this.treeList.view.data, this.mapper),
1932
+ sender: this
1933
+ });
1934
+ this.showConfirmationDialog = this.showEditingDialog = false;
1935
+ this.editService.dataItem = this.editService.formGroup = null;
1936
+ this.updateView();
1937
+ this.dependencyDomService.notifyChanges();
1938
+ }));
1939
+ this.localizationSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
1940
+ this.rtl = rtl;
1941
+ this.direction = this.rtl ? 'rtl' : 'ltr';
1942
+ });
1688
1943
  }
1689
1944
  get toolbarTemplate() {
1690
1945
  if (this._customToolbarTemplate) {
@@ -1695,6 +1950,9 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
1695
1950
  set toolbarTemplate(customToolbarTemplate) {
1696
1951
  this._customToolbarTemplate = customToolbarTemplate;
1697
1952
  }
1953
+ get dir() {
1954
+ return this.direction;
1955
+ }
1698
1956
  /**
1699
1957
  * A query list of all declared columns.
1700
1958
  */
@@ -1849,6 +2107,12 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
1849
2107
  get viewTypes() {
1850
2108
  return this.views.map(view => view.type);
1851
2109
  }
2110
+ /**
2111
+ * @hidden
2112
+ */
2113
+ get editDialogFormGroup() {
2114
+ return this.editService.formGroup;
2115
+ }
1852
2116
  ngOnChanges(changes) {
1853
2117
  if (anyChanged(['data', 'activeView', 'workWeekStart', 'workWeekEnd', 'workDayStart', 'workDayEnd'], changes)) {
1854
2118
  this.loadTimelineData();
@@ -1868,6 +2132,10 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
1868
2132
  }
1869
2133
  ngOnDestroy() {
1870
2134
  this.optionChangesSubscriptions.unsubscribe();
2135
+ this.editServiceSubscription.unsubscribe();
2136
+ if (this.localizationSubscription) {
2137
+ this.localizationSubscription.unsubscribe();
2138
+ }
1871
2139
  }
1872
2140
  /**
1873
2141
  * Applies the minimum possible width for the specified column,
@@ -1915,6 +2183,47 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
1915
2183
  this.treeList.reorderColumn(source, destIndex, options);
1916
2184
  }
1917
2185
  }
2186
+ /**
2187
+ * Opens the task editing dialog.
2188
+ */
2189
+ editTask(dataItem, formGroup) {
2190
+ if (!this.showEditingDialog) {
2191
+ this.editService.createEditDialog(dataItem, formGroup);
2192
+ }
2193
+ }
2194
+ /**
2195
+ * Closes the task editing dialog.
2196
+ */
2197
+ closeTaskDialog() {
2198
+ if (this.showEditingDialog) {
2199
+ this.editService.closeEditDialog();
2200
+ }
2201
+ }
2202
+ /**
2203
+ * Opens the delete task confirmation dialog.
2204
+ */
2205
+ openConfirmationDialog() {
2206
+ this.showConfirmationDialog = true;
2207
+ }
2208
+ /**
2209
+ * Opens a cell for editing.
2210
+ */
2211
+ editCell(dataItem, column, formGroup) {
2212
+ this.treeList.editCell(dataItem, column, formGroup);
2213
+ }
2214
+ /**
2215
+ * Closes an edited cell.
2216
+ */
2217
+ closeCell() {
2218
+ this.treeList.closeCell();
2219
+ }
2220
+ /**
2221
+ * @hidden
2222
+ */
2223
+ handleCellClose(e) {
2224
+ this.cellClose.emit(Object.assign(e, { item: this.editItem, sender: this }));
2225
+ this.dependencyDomService.notifyChanges();
2226
+ }
1918
2227
  /**
1919
2228
  * @hidden
1920
2229
  */
@@ -1978,6 +2287,67 @@ let GanttComponent = GanttComponent_1 = class GanttComponent {
1978
2287
  this._timelinePaneOptions.size = e;
1979
2288
  this.timelinePaneSizeChange.emit(e);
1980
2289
  }
2290
+ /**
2291
+ * @hidden
2292
+ */
2293
+ handleCellClick(event) {
2294
+ this._cellClickEvent = event;
2295
+ }
2296
+ /**
2297
+ * @hidden
2298
+ */
2299
+ handleDoubleClick(event) {
2300
+ const cell = this._cellClickEvent.originalEvent.target;
2301
+ if (event.target !== cell) {
2302
+ return;
2303
+ }
2304
+ this.editItem = getEditItem(this._cellClickEvent.dataItem, this.treeList.view.data, this.mapper);
2305
+ if (hasObservers(this.cellDblClick)) {
2306
+ this.zone.run(() => {
2307
+ this.cellDblClick.emit(Object.assign({}, this._cellClickEvent, { sender: this }));
2308
+ });
2309
+ }
2310
+ }
2311
+ /**
2312
+ * @hidden
2313
+ */
2314
+ handleDeleteConfirmation() {
2315
+ this.editService.triggerEditEvent('remove');
2316
+ }
2317
+ /**
2318
+ * @hidden
2319
+ */
2320
+ handleTimelineMouseDown(event) {
2321
+ const target = event.target;
2322
+ const gantt = this.hostElement.nativeElement;
2323
+ if (!isTask(target, gantt) || isClearButton(target, gantt)) {
2324
+ return;
2325
+ }
2326
+ event.preventDefault();
2327
+ }
2328
+ /**
2329
+ * @hidden
2330
+ */
2331
+ handleTimelineDblClick(event) {
2332
+ const target = event.target;
2333
+ const gantt = this.hostElement.nativeElement;
2334
+ if (!isTask(target, gantt) || isClearButton(target, gantt)) {
2335
+ return;
2336
+ }
2337
+ const taskIndex = getClosestTaskIndex(target, gantt);
2338
+ const task = this.renderedTreeListItems[taskIndex];
2339
+ this.zone.run(() => this.taskDblClick.emit({
2340
+ dataItem: task,
2341
+ originalEvent: event,
2342
+ sender: this
2343
+ }));
2344
+ }
2345
+ /**
2346
+ * @hidden
2347
+ */
2348
+ getText(token) {
2349
+ return this.localizationService.get(token);
2350
+ }
1981
2351
  updateTreeListGroupClass(columns = this.columns) {
1982
2352
  if (!isPresent(this.treeList)) {
1983
2353
  return;
@@ -2029,6 +2399,11 @@ __decorate([
2029
2399
  HostBinding('class.k-gantt'),
2030
2400
  __metadata("design:type", Boolean)
2031
2401
  ], GanttComponent.prototype, "hostClasses", void 0);
2402
+ __decorate([
2403
+ HostBinding('attr.dir'),
2404
+ __metadata("design:type", String),
2405
+ __metadata("design:paramtypes", [])
2406
+ ], GanttComponent.prototype, "dir", null);
2032
2407
  __decorate([
2033
2408
  ContentChildren(GanttColumnBase),
2034
2409
  __metadata("design:type", QueryList),
@@ -2150,10 +2525,38 @@ __decorate([
2150
2525
  Output(),
2151
2526
  __metadata("design:type", EventEmitter)
2152
2527
  ], GanttComponent.prototype, "rowExpand", void 0);
2528
+ __decorate([
2529
+ Output(),
2530
+ __metadata("design:type", EventEmitter)
2531
+ ], GanttComponent.prototype, "taskDblClick", void 0);
2532
+ __decorate([
2533
+ Output(),
2534
+ __metadata("design:type", EventEmitter)
2535
+ ], GanttComponent.prototype, "cellDblClick", void 0);
2536
+ __decorate([
2537
+ Output(),
2538
+ __metadata("design:type", EventEmitter)
2539
+ ], GanttComponent.prototype, "cellClose", void 0);
2540
+ __decorate([
2541
+ Output(),
2542
+ __metadata("design:type", EventEmitter)
2543
+ ], GanttComponent.prototype, "taskDelete", void 0);
2153
2544
  __decorate([
2154
2545
  Output(),
2155
2546
  __metadata("design:type", EventEmitter)
2156
2547
  ], GanttComponent.prototype, "rowCollapse", void 0);
2548
+ __decorate([
2549
+ Output(),
2550
+ __metadata("design:type", EventEmitter)
2551
+ ], GanttComponent.prototype, "remove", void 0);
2552
+ __decorate([
2553
+ Output(),
2554
+ __metadata("design:type", EventEmitter)
2555
+ ], GanttComponent.prototype, "cancel", void 0);
2556
+ __decorate([
2557
+ Output(),
2558
+ __metadata("design:type", EventEmitter)
2559
+ ], GanttComponent.prototype, "save", void 0);
2157
2560
  __decorate([
2158
2561
  Output(),
2159
2562
  __metadata("design:type", EventEmitter)
@@ -2201,7 +2604,9 @@ __decorate([
2201
2604
  GanttComponent = GanttComponent_1 = __decorate([
2202
2605
  Component({
2203
2606
  selector: 'kendo-gantt',
2607
+ exportAs: 'kendoGantt',
2204
2608
  providers: [
2609
+ LocalizationService,
2205
2610
  {
2206
2611
  provide: DataBoundTreeComponent,
2207
2612
  useExisting: forwardRef(() => GanttComponent_1)
@@ -2217,9 +2622,181 @@ GanttComponent = GanttComponent_1 = __decorate([
2217
2622
  ScrollSyncService,
2218
2623
  DependencyDomService,
2219
2624
  MappingService,
2220
- OptionChangesService
2625
+ OptionChangesService,
2626
+ EditService
2221
2627
  ],
2222
2628
  template: `
2629
+ <ng-container kendoGanttLocalizedMessages
2630
+ i18n-taskDeleteLabel="kendo.gantt.taskDeleteLabel|The label of the task delete icon"
2631
+ taskDeleteLabel="Delete"
2632
+
2633
+ i18n-taskEditingDialogTitle="kendo.gantt.taskEditingDialogTitle|The title of the task editing dialog"
2634
+ taskEditingDialogTitle="Editing Task"
2635
+
2636
+ i18n-taskEditingDialogCloseTitle="kendo.gantt.taskEditingDialogCloseTitle|The title of the task editing dialog close button"
2637
+ taskEditingDialogCloseTitle="Close"
2638
+
2639
+ i18n-confirmationDialogCloseTitle="kendo.gantt.confirmationDialogCloseTitle|The title of the confirmation dialog close button"
2640
+ confirmationDialogCloseTitle="Close"
2641
+
2642
+ i18n-confirmationDialogTitle="kendo.gantt.confirmationDialogTitle|The title of the delete task confirmation dialog"
2643
+ confirmationDialogTitle="Delete Task"
2644
+
2645
+ i18n-confirmationDialogContent="kendo.gantt.confirmationDialogContent|The content of the delete task confirmation dialog"
2646
+ confirmationDialogContent="Are you sure you want to delete this task?"
2647
+
2648
+ i18n-deleteButtonText="kendo.gantt.deleteButtonText|The text of the task editing dialog 'Delete' button"
2649
+ deleteButtonText="Delete"
2650
+
2651
+ i18n-cancelButtonText="kendo.gantt.cancelButtonText|The text of the task editing dialog 'Cancel' button"
2652
+ cancelButtonText="Cancel"
2653
+
2654
+ i18n-saveButtonText="kendo.gantt.saveButtonText|The text of the task editing dialog 'Save' button"
2655
+ saveButtonText="Save"
2656
+
2657
+ i18n-titleFieldInputLabel="kendo.gantt.titleFieldInputLabel|The label of the 'title' field input in editing mode"
2658
+ titleFieldInputLabel="Title"
2659
+
2660
+ i18n-startFieldInputLabel="kendo.gantt.startFieldInputLabel|The label of the 'start' field input in editing mode"
2661
+ startFieldInputLabel="Start"
2662
+
2663
+ i18n-endFieldInputLabel="kendo.gantt.endFieldInputLabel|The label of the 'end' field input in editing mode"
2664
+ endFieldInputLabel="End"
2665
+
2666
+ i18n-completionRatioFieldInputLabel="kendo.gantt.completionRatioFieldInputLabel|The label of the 'completionRatio' field input in editing mode"
2667
+ completionRatioFieldInputLabel="Progress"
2668
+
2669
+ i18n-dayViewText="kendo.gantt.dayViewText|The text of the day view in the ViewSelector component"
2670
+ dayViewText="Day"
2671
+
2672
+ i18n-weekViewText="kendo.gantt.weekViewText|The text of the week view in the ViewSelector component"
2673
+ weekViewText="Week"
2674
+
2675
+ i18n-monthViewText="kendo.gantt.monthViewText|The text of the month view in the ViewSelector component"
2676
+ monthViewText="Month"
2677
+
2678
+ i18n-yearViewText-disabled="kendo.gantt.yearViewText|The text of the year view in the ViewSelector component"
2679
+ yearViewText="Year"
2680
+
2681
+ i18n-noRecords="kendo.gantt.noRecords|The label visible in the TreeList when there are no records"
2682
+ noRecords="No records available."
2683
+
2684
+ i18n-filter="kendo.gantt.filter|The label of the filter cell or icon"
2685
+ filter="Filter"
2686
+
2687
+ i18n-filterEqOperator="kendo.gantt.filterEqOperator|The text of the equal filter operator"
2688
+ filterEqOperator="Is equal to"
2689
+
2690
+ i18n-filterNotEqOperator="kendo.gantt.filterNotEqOperator|The text of the not equal filter operator"
2691
+ filterNotEqOperator="Is not equal to"
2692
+
2693
+ i18n-filterIsNullOperator="kendo.gantt.filterIsNullOperator|The text of the is null filter operator"
2694
+ filterIsNullOperator="Is null"
2695
+
2696
+ i18n-filterIsNotNullOperator="kendo.gantt.filterIsNotNullOperator|The text of the is not null filter operator"
2697
+ filterIsNotNullOperator="Is not null"
2698
+
2699
+ i18n-filterIsEmptyOperator="kendo.gantt.filterIsEmptyOperator|The text of the is empty filter operator"
2700
+ filterIsEmptyOperator="Is empty"
2701
+
2702
+ i18n-filterIsNotEmptyOperator="kendo.gantt.filterIsNotEmptyOperator|The text of the is not empty filter operator"
2703
+ filterIsNotEmptyOperator="Is not empty"
2704
+
2705
+ i18n-filterStartsWithOperator="kendo.gantt.filterStartsWithOperator|The text of the starts with filter operator"
2706
+ filterStartsWithOperator="Starts with"
2707
+
2708
+ i18n-filterContainsOperator="kendo.gantt.filterContainsOperator|The text of the contains filter operator"
2709
+ filterContainsOperator="Contains"
2710
+
2711
+ i18n-filterNotContainsOperator="kendo.gantt.filterNotContainsOperator|The text of the does not contain filter operator"
2712
+ filterNotContainsOperator="Does not contain"
2713
+
2714
+ i18n-filterEndsWithOperator="kendo.gantt.filterEndsWithOperator|The text of the ends with filter operator"
2715
+ filterEndsWithOperator="Ends with"
2716
+
2717
+ i18n-filterGteOperator="kendo.gantt.filterGteOperator|The text of the greater than or equal filter operator"
2718
+ filterGteOperator="Is greater than or equal to"
2719
+
2720
+ i18n-filterGtOperator="kendo.gantt.filterGtOperator|The text of the greater than filter operator"
2721
+ filterGtOperator="Is greater than"
2722
+
2723
+ i18n-filterLteOperator="kendo.gantt.filterLteOperator|The text of the less than or equal filter operator"
2724
+ filterLteOperator="Is less than or equal to"
2725
+
2726
+ i18n-filterLtOperator="kendo.gantt.filterLtOperator|The text of the less than filter operator"
2727
+ filterLtOperator="Is less than"
2728
+
2729
+ i18n-filterIsTrue="kendo.gantt.filterIsTrue|The text of the IsTrue boolean filter option"
2730
+ filterIsTrue="Is True"
2731
+
2732
+ i18n-filterIsFalse="kendo.gantt.filterIsFalse|The text of the IsFalse boolean filter option"
2733
+ filterIsFalse="Is False"
2734
+
2735
+ i18n-filterBooleanAll="kendo.gantt.filterBooleanAll|The text of the (All) boolean filter option"
2736
+ filterBooleanAll="(All)"
2737
+
2738
+ i18n-filterAfterOrEqualOperator="kendo.gantt.filterAfterOrEqualOperator|The text of the after or equal date filter operator"
2739
+ filterAfterOrEqualOperator="Is after or equal to"
2740
+
2741
+ i18n-filterAfterOperator="kendo.gantt.filterAfterOperator|The text of the after date filter operator"
2742
+ filterAfterOperator="Is after"
2743
+
2744
+ i18n-filterBeforeOperator="kendo.gantt.filterBeforeOperator|The text of the before date filter operator"
2745
+ filterBeforeOperator="Is before"
2746
+
2747
+ i18n-filterBeforeOrEqualOperator="kendo.gantt.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"
2748
+ filterBeforeOrEqualOperator="Is before or equal to"
2749
+
2750
+ i18n-filterFilterButton="kendo.gantt.filterFilterButton|The text of the filter button"
2751
+ filterFilterButton="Filter"
2752
+
2753
+ i18n-filterClearButton="kendo.gantt.filterClearButton|The text of the clear filter button"
2754
+ filterClearButton="Clear"
2755
+
2756
+ i18n-filterAndLogic="kendo.gantt.filterAndLogic|The text of the And filter logic"
2757
+ filterAndLogic="And"
2758
+
2759
+ i18n-filterOrLogic="kendo.gantt.filterOrLogic|The text of the Or filter logic"
2760
+ filterOrLogic="Or"
2761
+
2762
+ i18n-loading="kendo.gantt.loading|The loading text"
2763
+ loading="Loading"
2764
+
2765
+ i18n-columnMenu="kendo.gantt.columnMenu|The title of the column menu icon"
2766
+ columnMenu="Column Menu"
2767
+
2768
+ i18n-columns="kendo.gantt.columns|The text shown in the column menu for the columns item"
2769
+ columns="Columns"
2770
+
2771
+ i18n-lock-disabled="kendo.gantt.lock|The text shown in the column menu for the lock item"
2772
+ lock-disabled="Lock"
2773
+
2774
+ i18n-unlock-disabled="kendo.gantt.unlock|The text shown in the column menu for the unlock item"
2775
+ unlock-disabled="Unlock"
2776
+
2777
+ i18n-sortable="kendo.gantt.sortable|The label of the sort icon"
2778
+ sortable="Sortable"
2779
+
2780
+ i18n-sortAscending="kendo.gantt.sortAscending|The text shown in the column menu for the sort ascending item"
2781
+ sortAscending="Sort Ascending"
2782
+
2783
+ i18n-sortDescending="kendo.gantt.sortDescending|The text shown in the column menu for the sort descending item"
2784
+ sortDescending="Sort Descending"
2785
+
2786
+ i18n-sortedAscending="kendo.gantt.sortedAscending|The status announcement when a column is sorted ascending"
2787
+ sortedAscending="Sorted Ascending"
2788
+
2789
+ i18n-sortedDescending="kendo.gantt.sortedDescending|The status announcement when a column is sorted descending"
2790
+ sortedDescending="Sorted Descending"
2791
+
2792
+ i18n-sortedDefault="kendo.gantt.sortedDefault|The status announcement when a column is no longer sorted"
2793
+ sortedDefault="Not Sorted"
2794
+
2795
+ i18n-columnsApply="kendo.gantt.columnsApply|The text shown in the column menu or column chooser for the columns apply button"
2796
+ columnsApply="Apply"
2797
+
2798
+ i18n-columnsReset="kendo.gantt.columnsReset|The text shown in the column menu or column chooser for the columns reset button"
2799
+ columnsReset="Reset"></ng-container>
2223
2800
  <kendo-gantt-toolbar
2224
2801
  *ngIf="showToolbar('top')"
2225
2802
  class="k-gantt-header k-toolbar k-gantt-toolbar"
@@ -2261,7 +2838,12 @@ GanttComponent = GanttComponent_1 = __decorate([
2261
2838
  (columnResize)="columnResize.emit($event)"
2262
2839
  (columnVisibilityChange)="handleColumnVisibilityChange($event)"
2263
2840
  (columnLockedChange)="columnLockedChange.emit($event)"
2264
- >
2841
+ (cellClick)="handleCellClick($event)"
2842
+ (cellClose)="handleCellClose($event)"
2843
+ [kendoEventsOutsideAngular]="{
2844
+ dblclick: handleDoubleClick
2845
+ }">
2846
+ <kendo-treelist-messages [kendoGanttTreeListMessages]="localizationService"></kendo-treelist-messages>
2265
2847
  </kendo-treelist>
2266
2848
  </kendo-splitter-pane>
2267
2849
  <kendo-splitter-pane
@@ -2287,6 +2869,10 @@ GanttComponent = GanttComponent_1 = __decorate([
2287
2869
  [taskClass]="taskClass"
2288
2870
  [dependencies]="dependencies"
2289
2871
  [hasChildren]="hasChildren"
2872
+ [kendoEventsOutsideAngular]="{
2873
+ dblclick: handleTimelineDblClick,
2874
+ mousedown: handleTimelineMouseDown
2875
+ }"
2290
2876
  ></kendo-gantt-timeline>
2291
2877
  </kendo-splitter-pane>
2292
2878
  </kendo-splitter>
@@ -2295,6 +2881,20 @@ GanttComponent = GanttComponent_1 = __decorate([
2295
2881
  *ngIf="showToolbar('bottom')"
2296
2882
  class="k-gantt-footer k-toolbar k-gantt-toolbar"
2297
2883
  position="bottom"></kendo-gantt-toolbar>
2884
+ <kendo-gantt-edit-dialog *ngIf="showEditingDialog" [formGroup]="editDialogFormGroup"></kendo-gantt-edit-dialog>
2885
+ <kendo-dialog
2886
+ *ngIf="showConfirmationDialog"
2887
+ [width]="575"
2888
+ [height]="170"
2889
+ [title]="getText('confirmationDialogTitle')"
2890
+ (close)="showConfirmationDialog = false;">
2891
+ <span>{{getText('confirmationDialogContent')}}</span>
2892
+ <kendo-dialog-actions layout="normal">
2893
+ <kendo-treelist-spacer></kendo-treelist-spacer>
2894
+ <button kendoButton [primary]="true" (click)="handleDeleteConfirmation()">{{ getText('deleteButtonText') }}</button>
2895
+ <button kendoButton (click)="showConfirmationDialog = false;">{{ getText('cancelButtonText') }}</button>
2896
+ </kendo-dialog-actions>
2897
+ </kendo-dialog>
2298
2898
  `
2299
2899
  }),
2300
2900
  __metadata("design:paramtypes", [TimelineViewService,
@@ -2302,7 +2902,11 @@ GanttComponent = GanttComponent_1 = __decorate([
2302
2902
  Renderer2,
2303
2903
  MappingService,
2304
2904
  OptionChangesService,
2305
- DependencyDomService])
2905
+ DependencyDomService,
2906
+ EditService,
2907
+ LocalizationService,
2908
+ ElementRef,
2909
+ NgZone])
2306
2910
  ], GanttComponent);
2307
2911
 
2308
2912
  /**
@@ -2549,17 +3153,22 @@ __decorate([
2549
3153
  Input(),
2550
3154
  __metadata("design:type", Function)
2551
3155
  ], GanttTasksTableBodyComponent.prototype, "hasChildren", void 0);
3156
+ __decorate([
3157
+ Input(),
3158
+ __metadata("design:type", Number)
3159
+ ], GanttTasksTableBodyComponent.prototype, "index", void 0);
2552
3160
  GanttTasksTableBodyComponent = __decorate([
2553
3161
  Component({
2554
3162
  selector: '[kendoGanttTasksTableBody]',
2555
3163
  template: `
2556
- <tr #timelineRow *ngFor="let item of rows">
3164
+ <tr #timelineRow *ngFor="let item of rows; let index = index">
2557
3165
  <td>
2558
3166
  <kendo-gantt-milestone-task
2559
3167
  *ngIf="isMileStone(item); else task"
2560
3168
  [dataItem]="item"
2561
3169
  [activeView]="activeView"
2562
3170
  [taskClass]="taskClass"
3171
+ [index]="index"
2563
3172
  >
2564
3173
  </kendo-gantt-milestone-task>
2565
3174
  <ng-template #task>
@@ -2569,6 +3178,7 @@ GanttTasksTableBodyComponent = __decorate([
2569
3178
  [template]="summaryTaskTemplate"
2570
3179
  [activeView]="activeView"
2571
3180
  [taskClass]="taskClass"
3181
+ [index]="index"
2572
3182
  >
2573
3183
  </kendo-gantt-summary-task>
2574
3184
  <kendo-gantt-task
@@ -2578,6 +3188,7 @@ GanttTasksTableBodyComponent = __decorate([
2578
3188
  [taskTemplate]="taskTemplate"
2579
3189
  [activeView]="activeView"
2580
3190
  [taskClass]="taskClass"
3191
+ [index]="index"
2581
3192
  >
2582
3193
  </kendo-gantt-task>
2583
3194
  </ng-template>
@@ -2703,14 +3314,23 @@ __decorate([
2703
3314
  Input(),
2704
3315
  __metadata("design:type", Function)
2705
3316
  ], GanttTaskBase.prototype, "taskClass", void 0);
3317
+ __decorate([
3318
+ Input(),
3319
+ __metadata("design:type", Number)
3320
+ ], GanttTaskBase.prototype, "index", void 0);
2706
3321
 
2707
3322
  var GanttTaskComponent_1;
2708
3323
  /**
2709
3324
  * @hidden
2710
3325
  */
2711
3326
  let GanttTaskComponent = GanttTaskComponent_1 = class GanttTaskComponent extends GanttTaskBase {
2712
- constructor(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr) {
3327
+ constructor(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr, editService) {
2713
3328
  super(mapper, timelineViewService, dependencyDomService, optionChangesService, cdr);
3329
+ this.editService = editService;
3330
+ }
3331
+ onTaskDelete() {
3332
+ this.editService.dataItem = this.dataItem;
3333
+ this.editService.showConfirmationDialog.next();
2714
3334
  }
2715
3335
  };
2716
3336
  __decorate([
@@ -2738,6 +3358,7 @@ GanttTaskComponent = GanttTaskComponent_1 = __decorate([
2738
3358
  [style.width.px]="taskWidth"
2739
3359
  [style.left.px]="taskOffset"
2740
3360
  [attr.title]="mapper.extractFromTask(dataItem, 'title')"
3361
+ [attr.data-task-index]="index"
2741
3362
  >
2742
3363
  <ng-container *ngIf="!taskTemplate">
2743
3364
  <div
@@ -2757,6 +3378,13 @@ GanttTaskComponent = GanttTaskComponent_1 = __decorate([
2757
3378
  >
2758
3379
  </ng-template>
2759
3380
  </div>
3381
+ <span class="k-task-actions">
3382
+ <span
3383
+ (click)="onTaskDelete()"
3384
+ class="k-link k-task-delete">
3385
+ <span class="k-icon k-i-close"></span>
3386
+ </span>
3387
+ </span>
2760
3388
  </div>
2761
3389
  </ng-container>
2762
3390
  <ng-template
@@ -2775,7 +3403,8 @@ GanttTaskComponent = GanttTaskComponent_1 = __decorate([
2775
3403
  TimelineViewService,
2776
3404
  DependencyDomService,
2777
3405
  OptionChangesService,
2778
- ChangeDetectorRef])
3406
+ ChangeDetectorRef,
3407
+ EditService])
2779
3408
  ], GanttTaskComponent);
2780
3409
 
2781
3410
  var GanttSummaryTaskComponent_1;
@@ -2813,6 +3442,7 @@ GanttSummaryTaskComponent = GanttSummaryTaskComponent_1 = __decorate([
2813
3442
  [style.width.px]="taskWidth"
2814
3443
  [style.left.px]="taskOffset"
2815
3444
  [attr.title]="mapper.extractFromTask(dataItem, 'title')"
3445
+ [attr.data-task-index]="index"
2816
3446
  >
2817
3447
  <div *ngIf="!template; else summaryTemplate"
2818
3448
  class="k-task-summary-progress"
@@ -2872,6 +3502,7 @@ GanttMilestoneTaskComponent = GanttMilestoneTaskComponent_1 = __decorate([
2872
3502
  [ngClass]="taskClass(dataItem)"
2873
3503
  [style.left.px]="taskOffset"
2874
3504
  [attr.title]="mapper.extractFromTask(dataItem, 'title')"
3505
+ [attr.data-task-index]="index"
2875
3506
  >
2876
3507
  </div>
2877
3508
  `
@@ -3021,10 +3652,8 @@ ToolbarComponent = __decorate([
3021
3652
  * The Gantt ViewSelector component. Shows the currently active view type, and allows switching to another view type.
3022
3653
  */
3023
3654
  let ViewSelectorComponent = class ViewSelectorComponent {
3024
- /**
3025
- * The Gantt ViewSelector component. Shows the currently active view type, and allows switching to another view type.
3026
- */
3027
- constructor() {
3655
+ constructor(localizationService) {
3656
+ this.localizationService = localizationService;
3028
3657
  this.hostClass = true;
3029
3658
  /**
3030
3659
  * The currently active view type.
@@ -3048,7 +3677,7 @@ let ViewSelectorComponent = class ViewSelectorComponent {
3048
3677
  * @hidden
3049
3678
  */
3050
3679
  getViewTypeText(viewType) {
3051
- return `${viewType[0].toLocaleUpperCase()}${viewType.slice(1)}`;
3680
+ return this.localizationService.get(`${viewType}ViewText`);
3052
3681
  }
3053
3682
  };
3054
3683
  __decorate([
@@ -3071,7 +3700,7 @@ ViewSelectorComponent = __decorate([
3071
3700
  Component({
3072
3701
  selector: 'kendo-gantt-view-selector',
3073
3702
  template: `
3074
- <select class="k-dropdown k-views-dropdown" style="text-transform: capitalize;"
3703
+ <select class="k-dropdown k-views-dropdown"
3075
3704
  [value]="activeView"
3076
3705
  (change)="activeViewChange.emit($event.target.value)">
3077
3706
  <option *ngFor="let view of views" [value]="view">{{getViewTypeText(view)}}</option>
@@ -3083,7 +3712,8 @@ ViewSelectorComponent = __decorate([
3083
3712
  (click)="onClick(view)">{{getViewTypeText(view)}}</button>
3084
3713
  </kendo-buttongroup>
3085
3714
  `
3086
- })
3715
+ }),
3716
+ __metadata("design:paramtypes", [LocalizationService])
3087
3717
  ], ViewSelectorComponent);
3088
3718
 
3089
3719
  /**
@@ -3389,11 +4019,401 @@ TimelineMonthViewComponent = TimelineMonthViewComponent_1 = __decorate([
3389
4019
  __metadata("design:paramtypes", [OptionChangesService, DependencyDomService])
3390
4020
  ], TimelineMonthViewComponent);
3391
4021
 
4022
+ /**
4023
+ * @hidden
4024
+ */
4025
+ let EditDialogComponent = class EditDialogComponent {
4026
+ constructor(mapper, editService, localizationService) {
4027
+ this.mapper = mapper;
4028
+ this.editService = editService;
4029
+ this.localizationService = localizationService;
4030
+ }
4031
+ getText(token) {
4032
+ return this.localizationService.get(token);
4033
+ }
4034
+ handleEditingResult(editResultType) {
4035
+ this.editService.triggerEditEvent(editResultType);
4036
+ }
4037
+ onTaskDelete() {
4038
+ this.editService.showConfirmationDialog.next();
4039
+ }
4040
+ };
4041
+ __decorate([
4042
+ Input(),
4043
+ __metadata("design:type", FormGroup)
4044
+ ], EditDialogComponent.prototype, "formGroup", void 0);
4045
+ EditDialogComponent = __decorate([
4046
+ Component({
4047
+ selector: 'kendo-gantt-edit-dialog',
4048
+ template: `
4049
+ <kendo-dialog
4050
+ [title]="getText('taskEditingDialogTitle')"
4051
+ [width]="575"
4052
+ [height]="470"
4053
+ (close)="handleEditingResult('cancel')">
4054
+ <kendo-dialog-messages
4055
+ [closeTitle]="getText('taskEditingDialogCloseTitle')"></kendo-dialog-messages>
4056
+ <form class="k-form" [formGroup]="formGroup">
4057
+ <kendo-formfield *ngIf="formGroup.contains(mapper.taskFields.title)">
4058
+ <kendo-label [for]="mapper.taskFields.title" [text]="getText('titleFieldInputLabel')"></kendo-label>
4059
+ <input class="k-textbox" [formControlName]="mapper.taskFields.title" />
4060
+ </kendo-formfield>
4061
+ <div class="k-hstack">
4062
+ <kendo-formfield [style.width.%]="49" *ngIf="formGroup.contains(mapper.taskFields.start)">
4063
+ <kendo-label [for]="mapper.taskFields.start" [text]="getText('startFieldInputLabel')"></kendo-label>
4064
+ <kendo-datetimepicker [formControlName]="mapper.taskFields.start"></kendo-datetimepicker>
4065
+ </kendo-formfield>
4066
+ <kendo-treelist-spacer></kendo-treelist-spacer>
4067
+ <kendo-formfield [style.width.%]="49" *ngIf="formGroup.contains(mapper.taskFields.end)">
4068
+ <kendo-label [for]="mapper.taskFields.end" [text]="getText('endFieldInputLabel')"></kendo-label>
4069
+ <kendo-datetimepicker [formControlName]="mapper.taskFields.end"></kendo-datetimepicker>
4070
+ </kendo-formfield>
4071
+ </div>
4072
+ <kendo-formfield [style.width.%]="49" *ngIf="formGroup.contains(mapper.taskFields.completionRatio)">
4073
+ <kendo-label [for]="mapper.taskFields.completionRatio" [text]="getText('completionRatioFieldInputLabel')"></kendo-label>
4074
+ <kendo-numerictextbox
4075
+ [formControlName]="mapper.taskFields.completionRatio"
4076
+ [min]="0"
4077
+ [max]="1"
4078
+ [decimals]="2"
4079
+ format="p2"
4080
+ [step]="0.01"
4081
+ ></kendo-numerictextbox>
4082
+ </kendo-formfield>
4083
+ </form>
4084
+ <kendo-dialog-actions layout="normal">
4085
+ <button kendoButton (click)="onTaskDelete()">{{ getText('deleteButtonText') }}</button>
4086
+ <kendo-treelist-spacer></kendo-treelist-spacer>
4087
+ <button kendoButton [primary]="true" (click)="handleEditingResult('save')">{{ getText('saveButtonText') }}</button>
4088
+ <button kendoButton (click)="handleEditingResult('cancel')">{{ getText('cancelButtonText') }}</button>
4089
+ </kendo-dialog-actions>
4090
+ </kendo-dialog>
4091
+ `
4092
+ }),
4093
+ __metadata("design:paramtypes", [MappingService,
4094
+ EditService,
4095
+ LocalizationService])
4096
+ ], EditDialogComponent);
4097
+
4098
+ /**
4099
+ * @hidden
4100
+ */
4101
+ class Messages extends ComponentMessages {
4102
+ }
4103
+ __decorate([
4104
+ Input(),
4105
+ __metadata("design:type", String)
4106
+ ], Messages.prototype, "taskDeleteLabel", void 0);
4107
+ __decorate([
4108
+ Input(),
4109
+ __metadata("design:type", String)
4110
+ ], Messages.prototype, "taskEditingDialogTitle", void 0);
4111
+ __decorate([
4112
+ Input(),
4113
+ __metadata("design:type", String)
4114
+ ], Messages.prototype, "taskEditingDialogCloseTitle", void 0);
4115
+ __decorate([
4116
+ Input(),
4117
+ __metadata("design:type", String)
4118
+ ], Messages.prototype, "confirmationDialogCloseTitle", void 0);
4119
+ __decorate([
4120
+ Input(),
4121
+ __metadata("design:type", String)
4122
+ ], Messages.prototype, "confirmationDialogTitle", void 0);
4123
+ __decorate([
4124
+ Input(),
4125
+ __metadata("design:type", String)
4126
+ ], Messages.prototype, "deleteButtonText", void 0);
4127
+ __decorate([
4128
+ Input(),
4129
+ __metadata("design:type", String)
4130
+ ], Messages.prototype, "cancelButtonText", void 0);
4131
+ __decorate([
4132
+ Input(),
4133
+ __metadata("design:type", String)
4134
+ ], Messages.prototype, "saveButtonText", void 0);
4135
+ __decorate([
4136
+ Input(),
4137
+ __metadata("design:type", String)
4138
+ ], Messages.prototype, "titleFieldInputLabel", void 0);
4139
+ __decorate([
4140
+ Input(),
4141
+ __metadata("design:type", String)
4142
+ ], Messages.prototype, "startFieldInputLabel", void 0);
4143
+ __decorate([
4144
+ Input(),
4145
+ __metadata("design:type", String)
4146
+ ], Messages.prototype, "endFieldInputLabel", void 0);
4147
+ __decorate([
4148
+ Input(),
4149
+ __metadata("design:type", String)
4150
+ ], Messages.prototype, "completionRatioFieldInputLabel", void 0);
4151
+ __decorate([
4152
+ Input(),
4153
+ __metadata("design:type", String)
4154
+ ], Messages.prototype, "confirmationDialogContent", void 0);
4155
+ __decorate([
4156
+ Input(),
4157
+ __metadata("design:type", String)
4158
+ ], Messages.prototype, "dayViewText", void 0);
4159
+ __decorate([
4160
+ Input(),
4161
+ __metadata("design:type", String)
4162
+ ], Messages.prototype, "weekViewText", void 0);
4163
+ __decorate([
4164
+ Input(),
4165
+ __metadata("design:type", String)
4166
+ ], Messages.prototype, "monthViewText", void 0);
4167
+ __decorate([
4168
+ Input(),
4169
+ __metadata("design:type", String)
4170
+ ], Messages.prototype, "yearViewText", void 0);
4171
+ __decorate([
4172
+ Input(),
4173
+ __metadata("design:type", String)
4174
+ ], Messages.prototype, "noRecords", void 0);
4175
+ __decorate([
4176
+ Input(),
4177
+ __metadata("design:type", String)
4178
+ ], Messages.prototype, "filter", void 0);
4179
+ __decorate([
4180
+ Input(),
4181
+ __metadata("design:type", String)
4182
+ ], Messages.prototype, "filterEqOperator", void 0);
4183
+ __decorate([
4184
+ Input(),
4185
+ __metadata("design:type", String)
4186
+ ], Messages.prototype, "filterNotEqOperator", void 0);
4187
+ __decorate([
4188
+ Input(),
4189
+ __metadata("design:type", String)
4190
+ ], Messages.prototype, "filterIsNullOperator", void 0);
4191
+ __decorate([
4192
+ Input(),
4193
+ __metadata("design:type", String)
4194
+ ], Messages.prototype, "filterIsNotNullOperator", void 0);
4195
+ __decorate([
4196
+ Input(),
4197
+ __metadata("design:type", String)
4198
+ ], Messages.prototype, "filterIsEmptyOperator", void 0);
4199
+ __decorate([
4200
+ Input(),
4201
+ __metadata("design:type", String)
4202
+ ], Messages.prototype, "filterIsNotEmptyOperator", void 0);
4203
+ __decorate([
4204
+ Input(),
4205
+ __metadata("design:type", String)
4206
+ ], Messages.prototype, "filterStartsWithOperator", void 0);
4207
+ __decorate([
4208
+ Input(),
4209
+ __metadata("design:type", String)
4210
+ ], Messages.prototype, "filterContainsOperator", void 0);
4211
+ __decorate([
4212
+ Input(),
4213
+ __metadata("design:type", String)
4214
+ ], Messages.prototype, "filterNotContainsOperator", void 0);
4215
+ __decorate([
4216
+ Input(),
4217
+ __metadata("design:type", String)
4218
+ ], Messages.prototype, "filterEndsWithOperator", void 0);
4219
+ __decorate([
4220
+ Input(),
4221
+ __metadata("design:type", String)
4222
+ ], Messages.prototype, "filterGteOperator", void 0);
4223
+ __decorate([
4224
+ Input(),
4225
+ __metadata("design:type", String)
4226
+ ], Messages.prototype, "filterGtOperator", void 0);
4227
+ __decorate([
4228
+ Input(),
4229
+ __metadata("design:type", String)
4230
+ ], Messages.prototype, "filterLteOperator", void 0);
4231
+ __decorate([
4232
+ Input(),
4233
+ __metadata("design:type", String)
4234
+ ], Messages.prototype, "filterLtOperator", void 0);
4235
+ __decorate([
4236
+ Input(),
4237
+ __metadata("design:type", String)
4238
+ ], Messages.prototype, "filterIsTrue", void 0);
4239
+ __decorate([
4240
+ Input(),
4241
+ __metadata("design:type", String)
4242
+ ], Messages.prototype, "filterIsFalse", void 0);
4243
+ __decorate([
4244
+ Input(),
4245
+ __metadata("design:type", String)
4246
+ ], Messages.prototype, "filterBooleanAll", void 0);
4247
+ __decorate([
4248
+ Input(),
4249
+ __metadata("design:type", String)
4250
+ ], Messages.prototype, "filterAfterOrEqualOperator", void 0);
4251
+ __decorate([
4252
+ Input(),
4253
+ __metadata("design:type", String)
4254
+ ], Messages.prototype, "filterAfterOperator", void 0);
4255
+ __decorate([
4256
+ Input(),
4257
+ __metadata("design:type", String)
4258
+ ], Messages.prototype, "filterBeforeOperator", void 0);
4259
+ __decorate([
4260
+ Input(),
4261
+ __metadata("design:type", String)
4262
+ ], Messages.prototype, "filterBeforeOrEqualOperator", void 0);
4263
+ __decorate([
4264
+ Input(),
4265
+ __metadata("design:type", String)
4266
+ ], Messages.prototype, "filterFilterButton", void 0);
4267
+ __decorate([
4268
+ Input(),
4269
+ __metadata("design:type", String)
4270
+ ], Messages.prototype, "filterClearButton", void 0);
4271
+ __decorate([
4272
+ Input(),
4273
+ __metadata("design:type", String)
4274
+ ], Messages.prototype, "filterAndLogic", void 0);
4275
+ __decorate([
4276
+ Input(),
4277
+ __metadata("design:type", String)
4278
+ ], Messages.prototype, "filterOrLogic", void 0);
4279
+ __decorate([
4280
+ Input(),
4281
+ __metadata("design:type", String)
4282
+ ], Messages.prototype, "loading", void 0);
4283
+ __decorate([
4284
+ Input(),
4285
+ __metadata("design:type", String)
4286
+ ], Messages.prototype, "columnMenu", void 0);
4287
+ __decorate([
4288
+ Input(),
4289
+ __metadata("design:type", String)
4290
+ ], Messages.prototype, "columns", void 0);
4291
+ __decorate([
4292
+ Input(),
4293
+ __metadata("design:type", String)
4294
+ ], Messages.prototype, "lock", void 0);
4295
+ __decorate([
4296
+ Input(),
4297
+ __metadata("design:type", String)
4298
+ ], Messages.prototype, "unlock", void 0);
4299
+ __decorate([
4300
+ Input(),
4301
+ __metadata("design:type", String)
4302
+ ], Messages.prototype, "sortable", void 0);
4303
+ __decorate([
4304
+ Input(),
4305
+ __metadata("design:type", String)
4306
+ ], Messages.prototype, "sortAscending", void 0);
4307
+ __decorate([
4308
+ Input(),
4309
+ __metadata("design:type", String)
4310
+ ], Messages.prototype, "sortDescending", void 0);
4311
+ __decorate([
4312
+ Input(),
4313
+ __metadata("design:type", String)
4314
+ ], Messages.prototype, "sortedAscending", void 0);
4315
+ __decorate([
4316
+ Input(),
4317
+ __metadata("design:type", String)
4318
+ ], Messages.prototype, "sortedDescending", void 0);
4319
+ __decorate([
4320
+ Input(),
4321
+ __metadata("design:type", String)
4322
+ ], Messages.prototype, "sortedDefault", void 0);
4323
+ __decorate([
4324
+ Input(),
4325
+ __metadata("design:type", String)
4326
+ ], Messages.prototype, "columnsApply", void 0);
4327
+ __decorate([
4328
+ Input(),
4329
+ __metadata("design:type", String)
4330
+ ], Messages.prototype, "columnsReset", void 0);
4331
+
4332
+ var CustomMessagesComponent_1;
4333
+ /**
4334
+ * Custom component messages override default component messages
4335
+ * ([see example]({% slug globalization_treelist %}#toc-localization)).
4336
+ */
4337
+ let CustomMessagesComponent = CustomMessagesComponent_1 = class CustomMessagesComponent extends Messages {
4338
+ constructor(service) {
4339
+ super();
4340
+ this.service = service;
4341
+ }
4342
+ get override() {
4343
+ return true;
4344
+ }
4345
+ };
4346
+ CustomMessagesComponent = CustomMessagesComponent_1 = __decorate([
4347
+ Component({
4348
+ providers: [
4349
+ {
4350
+ provide: Messages,
4351
+ useExisting: forwardRef(() => CustomMessagesComponent_1)
4352
+ }
4353
+ ],
4354
+ selector: 'kendo-gantt-messages',
4355
+ template: ``
4356
+ }),
4357
+ __metadata("design:paramtypes", [LocalizationService])
4358
+ ], CustomMessagesComponent);
4359
+
4360
+ var LocalizedMessagesDirective_1;
4361
+ /**
4362
+ * @hidden
4363
+ */
4364
+ let LocalizedMessagesDirective = LocalizedMessagesDirective_1 = class LocalizedMessagesDirective extends Messages {
4365
+ constructor(service) {
4366
+ super();
4367
+ this.service = service;
4368
+ }
4369
+ };
4370
+ LocalizedMessagesDirective = LocalizedMessagesDirective_1 = __decorate([
4371
+ Directive({
4372
+ providers: [
4373
+ {
4374
+ provide: Messages,
4375
+ useExisting: forwardRef(() => LocalizedMessagesDirective_1)
4376
+ }
4377
+ ],
4378
+ selector: '[kendoGanttLocalizedMessages]'
4379
+ }),
4380
+ __metadata("design:paramtypes", [LocalizationService])
4381
+ ], LocalizedMessagesDirective);
4382
+
4383
+ /**
4384
+ * @hidden
4385
+ */
4386
+ let GanttTreeListMessagesDirective = class GanttTreeListMessagesDirective {
4387
+ constructor(localizationService) {
4388
+ this.localizationService = localizationService;
4389
+ }
4390
+ ngAfterViewInit() {
4391
+ const treeListServiceDictionary = this.localizationService.dictionary;
4392
+ Object.keys(treeListServiceDictionary)
4393
+ .forEach(token => treeListServiceDictionary[token] = this.kendoGanttTreeListMessages.get(token.replace('kendo.treelist.', '')));
4394
+ }
4395
+ };
4396
+ __decorate([
4397
+ Input(),
4398
+ __metadata("design:type", LocalizationService)
4399
+ ], GanttTreeListMessagesDirective.prototype, "kendoGanttTreeListMessages", void 0);
4400
+ GanttTreeListMessagesDirective = __decorate([
4401
+ Directive({ selector: '[kendoGanttTreeListMessages]' }),
4402
+ __metadata("design:paramtypes", [LocalizationService])
4403
+ ], GanttTreeListMessagesDirective);
4404
+
3392
4405
  const IMPORTED_MODULES = [
3393
4406
  CommonModule,
4407
+ ReactiveFormsModule,
4408
+ LabelModule,
4409
+ InputsModule,
4410
+ DateInputsModule,
4411
+ ButtonsModule,
3394
4412
  SplitterModule,
3395
4413
  TreeListModule,
3396
- ButtonsModule
4414
+ ButtonsModule,
4415
+ DialogModule,
4416
+ EventsModule
3397
4417
  ];
3398
4418
  const DECLARATIONS = [
3399
4419
  GanttComponent,
@@ -3417,6 +4437,7 @@ const DECLARATIONS = [
3417
4437
  FilterMenuTemplateDirective,
3418
4438
  FilterCellTemplateDirective,
3419
4439
  CellTemplateDirective,
4440
+ EditTemplateDirective,
3420
4441
  ColumnMenuTemplateDirective,
3421
4442
  HeaderTemplateDirective,
3422
4443
  FooterTemplateDirective,
@@ -3424,10 +4445,42 @@ const DECLARATIONS = [
3424
4445
  GanttDependencyDirective,
3425
4446
  TimelineDayViewComponent,
3426
4447
  TimelineWeekViewComponent,
3427
- TimelineMonthViewComponent
4448
+ TimelineMonthViewComponent,
4449
+ EditDialogComponent,
4450
+ CustomMessagesComponent,
4451
+ LocalizedMessagesDirective,
4452
+ GanttTreeListMessagesDirective
3428
4453
  ];
3429
4454
  /**
3430
- * Sample module
4455
+ * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
4456
+ * definition for the Gantt component.
4457
+ *
4458
+ * @example
4459
+ *
4460
+ * ```ts-no-run
4461
+ * // Import the Gantt module
4462
+ * import { GanttModule } from '@progress/kendo-angular-gantt';
4463
+ *
4464
+ * // The browser platform with a compiler
4465
+ * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4466
+ *
4467
+ * import { NgModule } from '@angular/core';
4468
+ *
4469
+ * // Import the app component
4470
+ * import { AppComponent } from './app.component';
4471
+ *
4472
+ * // Define the app module
4473
+ * _@NgModule({
4474
+ * declarations: [AppComponent], // declare app component
4475
+ * imports: [BrowserModule, GanttModule], // import Gantt module
4476
+ * bootstrap: [AppComponent]
4477
+ * })
4478
+ * export class AppModule {}
4479
+ *
4480
+ * // Compile and launch the module
4481
+ * platformBrowserDynamic().bootstrapModule(AppModule);
4482
+ *
4483
+ * ```
3431
4484
  */
3432
4485
  let GanttModule = class GanttModule {
3433
4486
  };
@@ -3435,7 +4488,11 @@ GanttModule = __decorate([
3435
4488
  NgModule({
3436
4489
  imports: [...IMPORTED_MODULES],
3437
4490
  declarations: [...DECLARATIONS],
3438
- exports: [...DECLARATIONS]
4491
+ exports: [...DECLARATIONS],
4492
+ providers: [{
4493
+ provide: L10N_PREFIX,
4494
+ useValue: 'kendo.gantt'
4495
+ }]
3439
4496
  })
3440
4497
  ], GanttModule);
3441
4498
 
@@ -3443,4 +4500,4 @@ GanttModule = __decorate([
3443
4500
  * Generated bundle index. Do not edit.
3444
4501
  */
3445
4502
 
3446
- export { MappingService, OptionChangesService, DependencyDomService, GanttDependencyDirective, GanttHeaderTableBodyComponent, GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskBase, GanttTaskComponent, GanttTasksTableBodyComponent, ScrollSyncService, GanttTimelineComponent, TimelineBaseViewService, TimelineDayViewComponent, TimelineDayViewService, TimelineMonthViewComponent, TimelineMonthViewService, TimelineViewService, TimelineWeekViewComponent, TimelineWeekViewService, ViewBase, ToolbarComponent, ViewSelectorComponent, GanttComponent, GanttModule, GanttHierarchyBindingDirective, GanttFlatBindingDirective, GanttExpandableDirective, GanttTaskTemplateDirective, GanttTaskContentTemplateDirective, GanttSummaryTaskTemplateDirective, ToolbarTemplateDirective, GanttColumnBase, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, CellTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ColumnMenuTemplateDirective, FilterCellTemplateDirective, FilterMenuTemplateDirective };
4503
+ export { MappingService, OptionChangesService, DependencyDomService, GanttDependencyDirective, EditDialogComponent, EditService, CustomMessagesComponent, LocalizedMessagesDirective, Messages, GanttTreeListMessagesDirective, GanttHeaderTableBodyComponent, GanttMilestoneTaskComponent, GanttSummaryTaskComponent, GanttTaskBase, GanttTaskComponent, GanttTasksTableBodyComponent, ScrollSyncService, GanttTimelineComponent, TimelineBaseViewService, TimelineDayViewComponent, TimelineDayViewService, TimelineMonthViewComponent, TimelineMonthViewService, TimelineViewService, TimelineWeekViewComponent, TimelineWeekViewService, ViewBase, ToolbarComponent, ViewSelectorComponent, GanttComponent, GanttModule, GanttHierarchyBindingDirective, GanttFlatBindingDirective, GanttExpandableDirective, GanttTaskTemplateDirective, GanttTaskContentTemplateDirective, GanttSummaryTaskTemplateDirective, ToolbarTemplateDirective, GanttColumnBase, GanttColumnComponent, GanttColumnGroupComponent, GanttSpanColumnComponent, CellTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ColumnMenuTemplateDirective, FilterCellTemplateDirective, FilterMenuTemplateDirective, EditTemplateDirective };