@progress/kendo-angular-gantt 23.2.0-develop.4 → 23.2.0-develop.6

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.
@@ -7,4 +7,4 @@ import { TaskEditItem } from '../models/events/task-edit-event.interface';
7
7
  /**
8
8
  * @hidden
9
9
  */
10
- export declare const getEditItem: (dataItem: any, data: any[], mapper: MappingService) => TaskEditItem;
10
+ export declare const getEditItem: (dataItem: any, data: any[], mapper: MappingService) => TaskEditItem | undefined;
@@ -45,7 +45,7 @@ const packageMetadata = {
45
45
  productCode: 'KENDOUIANGULAR',
46
46
  productCodes: ['KENDOUIANGULAR'],
47
47
  publishDate: 1648205948,
48
- version: '23.2.0-develop.4',
48
+ version: '23.2.0-develop.6',
49
49
  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'
50
50
  };
51
51
 
@@ -1452,7 +1452,11 @@ class TimelineBaseViewService {
1452
1452
  */
1453
1453
  getRange(tasks) {
1454
1454
  if (!tasks || !tasks.length) {
1455
- return { start: new Date(), end: new Date() };
1455
+ const now = new Date();
1456
+ const start = this.getStartOffset(now);
1457
+ const end = this.getEndOffset(now);
1458
+ this._viewStart = Number(start);
1459
+ return { start, end };
1456
1460
  }
1457
1461
  const startResult = orderBy(tasks, [{ field: this.mapper.taskFields.start, dir: 'asc' }]);
1458
1462
  const endResult = orderBy(tasks, [{ field: this.mapper.taskFields.end, dir: 'desc' }]);
@@ -1610,6 +1614,19 @@ class TimelineDayViewService extends TimelineBaseViewService {
1610
1614
  constructor(intlService, mapper) {
1611
1615
  super(intlService, mapper);
1612
1616
  }
1617
+ /**
1618
+ * Ensures a full day is visible when data is empty.
1619
+ */
1620
+ getRange(tasks) {
1621
+ if (!tasks?.length) {
1622
+ const now = new Date();
1623
+ const start = setTime$1(getDate(now), 0);
1624
+ const end = setTime$1(getDate(now), 23, 59, 59, 999);
1625
+ this._viewStart = Number(start);
1626
+ return { start, end };
1627
+ }
1628
+ return super.getRange(tasks);
1629
+ }
1613
1630
  /**
1614
1631
  * Gets a date an hour before the first task start with minutes, seconds, milliseconds cleared.
1615
1632
  */
@@ -1618,9 +1635,15 @@ class TimelineDayViewService extends TimelineBaseViewService {
1618
1635
  }
1619
1636
  /**
1620
1637
  * Gets a date an hour after the last task end with minutes, seconds, milliseconds cleared.
1638
+ * When the end falls in the last hour of the day (23:xx), caps at end of day
1639
+ * to prevent adding an empty next-day slot that causes header misalignment.
1621
1640
  */
1622
1641
  getEndOffset(rangeEnd) {
1623
- return setTime$1(rangeEnd, rangeEnd.getHours() + 1);
1642
+ const nextHour = rangeEnd.getHours() + 1;
1643
+ if (nextHour > 23) {
1644
+ return setTime$1(rangeEnd, 23, 59, 59, 999);
1645
+ }
1646
+ return setTime$1(rangeEnd, nextHour);
1624
1647
  }
1625
1648
  /**
1626
1649
  *
@@ -1667,6 +1690,19 @@ class TimelineMonthViewService extends TimelineBaseViewService {
1667
1690
  constructor(intlService, mapper) {
1668
1691
  super(intlService, mapper);
1669
1692
  }
1693
+ /**
1694
+ * Ensures a full month is visible when data is empty.
1695
+ */
1696
+ getRange(tasks) {
1697
+ if (!tasks?.length) {
1698
+ const now = new Date();
1699
+ const start = firstDayOfMonth(getDate(now));
1700
+ const end = lastDayOfMonth(now);
1701
+ this._viewStart = Number(start);
1702
+ return { start, end };
1703
+ }
1704
+ return super.getRange(tasks);
1705
+ }
1670
1706
  /**
1671
1707
  * Gets a week before the first week in which a task starts.
1672
1708
  */
@@ -1722,6 +1758,19 @@ class TimelineWeekViewService extends TimelineBaseViewService {
1722
1758
  constructor(intlService, mapper) {
1723
1759
  super(intlService, mapper);
1724
1760
  }
1761
+ /**
1762
+ * Ensures at least a full week is visible when data is empty.
1763
+ */
1764
+ getRange(tasks) {
1765
+ if (!tasks?.length) {
1766
+ const now = new Date();
1767
+ const start = firstDayInWeek(getDate(now), this.intlService.firstDay());
1768
+ const end = addDays(start, 6);
1769
+ this._viewStart = Number(start);
1770
+ return { start, end };
1771
+ }
1772
+ return super.getRange(tasks);
1773
+ }
1725
1774
  /**
1726
1775
  * Gets a date a day before the first task start with hours, minutes, seconds, milliseconds cleared.
1727
1776
  */
@@ -1778,6 +1827,19 @@ class TimeLineYearViewService extends TimelineBaseViewService {
1778
1827
  const slotWidth = this.options.slotWidth;
1779
1828
  return Math.round(timeSlots.length * slotWidth);
1780
1829
  }
1830
+ /**
1831
+ * Ensures a full year is visible when data is empty.
1832
+ */
1833
+ getRange(tasks) {
1834
+ if (!tasks?.length) {
1835
+ const now = new Date();
1836
+ const start = firstDayOfMonth(new Date(now.getFullYear(), 0, 1));
1837
+ const end = lastDayOfMonth(new Date(now.getFullYear(), 11, 31));
1838
+ this._viewStart = Number(start);
1839
+ return { start, end };
1840
+ }
1841
+ return super.getRange(tasks);
1842
+ }
1781
1843
  getStartOffset(rangeStart) {
1782
1844
  const monthStart = firstDayOfMonth(rangeStart);
1783
1845
  return addMonths(getDate(monthStart), -1);
@@ -4671,8 +4733,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
4671
4733
  * @hidden
4672
4734
  */
4673
4735
  const getEditItem = (dataItem, data, mapper) => {
4736
+ if (!dataItem) {
4737
+ return undefined;
4738
+ }
4674
4739
  const treeListDataItem = data.find(item => mapper.extractFromTask(item.data, 'id') === mapper.extractFromTask(dataItem, 'id'));
4675
- return mapPath(treeListDataItem);
4740
+ return treeListDataItem ? mapPath(treeListDataItem) : undefined;
4676
4741
  };
4677
4742
  const mapPath = (item) => ({
4678
4743
  dataItem: item.data,
@@ -7018,7 +7083,8 @@ class GanttComponent {
7018
7083
  * @hidden
7019
7084
  */
7020
7085
  handleCellClose(e) {
7021
- this.cellClose.emit(new CellCloseEvent({ ...e, item: this.editItem, sender: this }));
7086
+ const item = getEditItem(e.dataItem, this.treeList.view.data, this.mapper);
7087
+ this.cellClose.emit(new CellCloseEvent({ ...e, item, sender: this }));
7022
7088
  this.dependencyDomService.notifyChanges();
7023
7089
  }
7024
7090
  /**
@@ -7,7 +7,7 @@ export const packageMetadata = {
7
7
  "productCodes": [
8
8
  "KENDOUIANGULAR"
9
9
  ],
10
- "publishDate": 1771835678,
11
- "version": "23.2.0-develop.4",
10
+ "publishDate": 1772026163,
11
+ "version": "23.2.0-develop.6",
12
12
  "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"
13
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-gantt",
3
- "version": "23.2.0-develop.4",
3
+ "version": "23.2.0-develop.6",
4
4
  "description": "Kendo UI Angular Gantt",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -19,7 +19,7 @@
19
19
  "package": {
20
20
  "productName": "Kendo UI for Angular",
21
21
  "productCode": "KENDOUIANGULAR",
22
- "publishDate": 1771835678,
22
+ "publishDate": 1772026163,
23
23
  "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"
24
24
  }
25
25
  },
@@ -31,25 +31,25 @@
31
31
  "@angular/platform-browser": "19 - 21",
32
32
  "@progress/kendo-data-query": "^1.7.3",
33
33
  "@progress/kendo-licensing": "^1.10.0",
34
- "@progress/kendo-angular-buttons": "23.2.0-develop.4",
35
- "@progress/kendo-angular-common": "23.2.0-develop.4",
36
- "@progress/kendo-angular-dialog": "23.2.0-develop.4",
37
- "@progress/kendo-angular-dropdowns": "23.2.0-develop.4",
38
- "@progress/kendo-angular-grid": "23.2.0-develop.4",
39
- "@progress/kendo-angular-icons": "23.2.0-develop.4",
40
- "@progress/kendo-angular-inputs": "23.2.0-develop.4",
41
- "@progress/kendo-angular-intl": "23.2.0-develop.4",
42
- "@progress/kendo-angular-l10n": "23.2.0-develop.4",
43
- "@progress/kendo-angular-label": "23.2.0-develop.4",
44
- "@progress/kendo-angular-layout": "23.2.0-develop.4",
45
- "@progress/kendo-angular-popup": "23.2.0-develop.4",
46
- "@progress/kendo-angular-tooltip": "23.2.0-develop.4",
47
- "@progress/kendo-angular-treelist": "23.2.0-develop.4",
34
+ "@progress/kendo-angular-buttons": "23.2.0-develop.6",
35
+ "@progress/kendo-angular-common": "23.2.0-develop.6",
36
+ "@progress/kendo-angular-dialog": "23.2.0-develop.6",
37
+ "@progress/kendo-angular-dropdowns": "23.2.0-develop.6",
38
+ "@progress/kendo-angular-grid": "23.2.0-develop.6",
39
+ "@progress/kendo-angular-icons": "23.2.0-develop.6",
40
+ "@progress/kendo-angular-inputs": "23.2.0-develop.6",
41
+ "@progress/kendo-angular-intl": "23.2.0-develop.6",
42
+ "@progress/kendo-angular-l10n": "23.2.0-develop.6",
43
+ "@progress/kendo-angular-label": "23.2.0-develop.6",
44
+ "@progress/kendo-angular-layout": "23.2.0-develop.6",
45
+ "@progress/kendo-angular-popup": "23.2.0-develop.6",
46
+ "@progress/kendo-angular-tooltip": "23.2.0-develop.6",
47
+ "@progress/kendo-angular-treelist": "23.2.0-develop.6",
48
48
  "rxjs": "^6.5.3 || ^7.0.0"
49
49
  },
50
50
  "dependencies": {
51
51
  "tslib": "^2.3.1",
52
- "@progress/kendo-angular-schematics": "23.2.0-develop.4",
52
+ "@progress/kendo-angular-schematics": "23.2.0-develop.6",
53
53
  "@progress/kendo-common": "^1.0.1",
54
54
  "@progress/kendo-date-math": "^1.5.2",
55
55
  "@progress/kendo-draggable": "^3.0.0"
@@ -12,16 +12,16 @@ function default_1(options) {
12
12
  // See https://github.com/telerik/kendo-schematics/issues/28
13
13
  peerDependencies: {
14
14
  // peer deps of the treelist
15
- '@progress/kendo-angular-dateinputs': '23.2.0-develop.4',
16
- '@progress/kendo-angular-excel-export': '23.2.0-develop.4',
17
- '@progress/kendo-angular-pdf-export': '23.2.0-develop.4',
18
- '@progress/kendo-angular-utils': '23.2.0-develop.4',
15
+ '@progress/kendo-angular-dateinputs': '23.2.0-develop.6',
16
+ '@progress/kendo-angular-excel-export': '23.2.0-develop.6',
17
+ '@progress/kendo-angular-pdf-export': '23.2.0-develop.6',
18
+ '@progress/kendo-angular-utils': '23.2.0-develop.6',
19
19
  '@progress/kendo-drawing': '^1.0.0',
20
20
  // peer deps of the dropdowns
21
- '@progress/kendo-angular-treeview': '23.2.0-develop.4',
22
- '@progress/kendo-angular-navigation': '23.2.0-develop.4',
21
+ '@progress/kendo-angular-treeview': '23.2.0-develop.6',
22
+ '@progress/kendo-angular-navigation': '23.2.0-develop.6',
23
23
  // peer dep of the layout
24
- '@progress/kendo-angular-progressbar': '23.2.0-develop.4',
24
+ '@progress/kendo-angular-progressbar': '23.2.0-develop.6',
25
25
  // peer dep of the icons
26
26
  '@progress/kendo-svg-icons': '^4.0.0'
27
27
  } });
@@ -30,7 +30,7 @@ export declare abstract class TimelineBaseViewService {
30
30
  protected intlService: IntlService;
31
31
  protected mapper: MappingService;
32
32
  options: TimelineOptions;
33
- private _viewStart;
33
+ protected _viewStart: number;
34
34
  constructor(intlService: IntlService, mapper: MappingService);
35
35
  get viewStart(): number;
36
36
  /**
@@ -5,6 +5,7 @@
5
5
  import { IntlService } from '@progress/kendo-angular-intl';
6
6
  import { TimelineBaseViewService } from './timeline-base-view.service';
7
7
  import { MappingService } from '../common/mapping.service';
8
+ import { DateRange } from '../models/date-range.interface';
8
9
  import { Slot } from '../models/slot.interface';
9
10
  import * as i0 from "@angular/core";
10
11
  /**
@@ -12,12 +13,18 @@ import * as i0 from "@angular/core";
12
13
  */
13
14
  export declare class TimelineDayViewService extends TimelineBaseViewService {
14
15
  constructor(intlService: IntlService, mapper: MappingService);
16
+ /**
17
+ * Ensures a full day is visible when data is empty.
18
+ */
19
+ protected getRange(tasks: any): DateRange;
15
20
  /**
16
21
  * Gets a date an hour before the first task start with minutes, seconds, milliseconds cleared.
17
22
  */
18
23
  getStartOffset(rangeStart: Date): Date;
19
24
  /**
20
25
  * Gets a date an hour after the last task end with minutes, seconds, milliseconds cleared.
26
+ * When the end falls in the last hour of the day (23:xx), caps at end of day
27
+ * to prevent adding an empty next-day slot that causes header misalignment.
21
28
  */
22
29
  getEndOffset(rangeEnd: Date): Date;
23
30
  /**
@@ -5,6 +5,7 @@
5
5
  import { IntlService } from '@progress/kendo-angular-intl';
6
6
  import { MappingService } from '../common/mapping.service';
7
7
  import { TimelineBaseViewService } from './timeline-base-view.service';
8
+ import { DateRange } from '../models/date-range.interface';
8
9
  import { Slot } from '../models/slot.interface';
9
10
  import * as i0 from "@angular/core";
10
11
  /**
@@ -12,6 +13,10 @@ import * as i0 from "@angular/core";
12
13
  */
13
14
  export declare class TimelineMonthViewService extends TimelineBaseViewService {
14
15
  constructor(intlService: IntlService, mapper: MappingService);
16
+ /**
17
+ * Ensures a full month is visible when data is empty.
18
+ */
19
+ protected getRange(tasks: any): DateRange;
15
20
  /**
16
21
  * Gets a week before the first week in which a task starts.
17
22
  */
@@ -5,6 +5,7 @@
5
5
  import { IntlService } from '@progress/kendo-angular-intl';
6
6
  import { MappingService } from '../common/mapping.service';
7
7
  import { TimelineBaseViewService } from './timeline-base-view.service';
8
+ import { DateRange } from '../models/date-range.interface';
8
9
  import { Slot } from '../models/slot.interface';
9
10
  import * as i0 from "@angular/core";
10
11
  /**
@@ -12,6 +13,10 @@ import * as i0 from "@angular/core";
12
13
  */
13
14
  export declare class TimelineWeekViewService extends TimelineBaseViewService {
14
15
  constructor(intlService: IntlService, mapper: MappingService);
16
+ /**
17
+ * Ensures at least a full week is visible when data is empty.
18
+ */
19
+ protected getRange(tasks: any): DateRange;
15
20
  /**
16
21
  * Gets a date a day before the first task start with hours, minutes, seconds, milliseconds cleared.
17
22
  */
@@ -4,6 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { IntlService } from "@progress/kendo-angular-intl";
6
6
  import { MappingService } from "../common/mapping.service";
7
+ import { DateRange } from "../models/date-range.interface";
7
8
  import { Slot } from "../models/slot.interface";
8
9
  import { TimelineBaseViewService } from "./timeline-base-view.service";
9
10
  import * as i0 from "@angular/core";
@@ -13,6 +14,10 @@ import * as i0 from "@angular/core";
13
14
  export declare class TimeLineYearViewService extends TimelineBaseViewService {
14
15
  constructor(intlService: IntlService, mapper: MappingService);
15
16
  getTableWidth(tasks: any[]): number;
17
+ /**
18
+ * Ensures a full year is visible when data is empty.
19
+ */
20
+ protected getRange(tasks: any): DateRange;
16
21
  getStartOffset(rangeStart: Date): Date;
17
22
  /**
18
23
  *