@timelinekit/angular 1.0.1 → 1.0.5

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.
package/LICENSE ADDED
@@ -0,0 +1,46 @@
1
+ TimelineKit Commercial License
2
+
3
+ Copyright (c) 2025-present TimelineKit. All rights reserved.
4
+
5
+ This software is licensed under the TimelineKit Commercial License.
6
+
7
+ 1. FREE TIER
8
+
9
+ You may use the Free tier of TimelineKit in any project (including commercial
10
+ projects) without purchasing a license. The Free tier includes core Gantt
11
+ chart functionality with a watermark overlay.
12
+
13
+ 2. PRO TIER
14
+
15
+ A paid license key is required to unlock Pro features and remove the
16
+ watermark. Pro features include: Critical Path, Baseline, Resource
17
+ Management, Working Calendar, Markers, Filtering, Undo/Redo, Clipboard,
18
+ Constraints, Custom Properties, Resource Scheduler, Export, Additional
19
+ Themes, and Additional Locales.
20
+
21
+ 3. PERPETUAL LICENSE
22
+
23
+ A purchased license is perpetual for the major version it was purchased for.
24
+ It never expires and does not require renewal to continue using the same
25
+ major version.
26
+
27
+ If a new major version is released during the active subscription period,
28
+ the license also covers that new version — perpetually.
29
+
30
+ If a new major version is released after the subscription period has ended,
31
+ a subscription renewal is required to use that new version.
32
+
33
+ 4. RESTRICTIONS
34
+
35
+ You may not:
36
+ - Redistribute, sublicense, or resell the Pro software or license keys
37
+ - Remove or circumvent the licensing mechanism or watermark
38
+ - Use a single license key across multiple organizations
39
+
40
+ 5. NO WARRANTY
41
+
42
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43
+ IMPLIED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES, OR
44
+ OTHER LIABILITY ARISING FROM THE USE OF THE SOFTWARE.
45
+
46
+ For questions, contact support@timelinekit.com.
package/README.md ADDED
@@ -0,0 +1,174 @@
1
+ # @timelinekit/angular
2
+
3
+ Angular components for [TimelineKit](https://timelinekit.com) — high-performance, canvas-rendered scheduling components.
4
+
5
+ For a full feature overview, themes, localization, and export options, see the [`@timelinekit/core` README](https://www.npmjs.com/package/@timelinekit/core).
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @timelinekit/angular @timelinekit/core
11
+ ```
12
+
13
+ Requires Angular 19 or later.
14
+
15
+ ## Components
16
+
17
+ | Component | Import | Selector | Styles |
18
+ |-----------|--------|----------|--------|
19
+ | Gantt Chart | `GanttChart` | `<gk-gantt-chart>` | `@timelinekit/core/dist/styles/index.css` |
20
+ | Resource Scheduler | `ResourceScheduler` | `<gk-resource-scheduler>` | `@timelinekit/core/dist/styles/index.css` |
21
+ | Event Calendar | `EventCalendar` | `<gk-event-calendar>` | `@timelinekit/core/dist/styles/index.css` |
22
+
23
+ All components are standalone. All types from `@timelinekit/core` are re-exported from this package for convenience.
24
+
25
+ ## Quick Start
26
+
27
+ ### Gantt Chart
28
+
29
+ ```typescript
30
+ import { Component, ViewChild, AfterViewInit } from '@angular/core';
31
+ import { GanttChart, Task, TaskLink } from '@timelinekit/angular';
32
+
33
+ @Component({
34
+ selector: 'app-root',
35
+ imports: [GanttChart],
36
+ template: `
37
+ <div style="height: 600px">
38
+ <gk-gantt-chart #gantt />
39
+ </div>
40
+ `,
41
+ })
42
+ export class AppComponent implements AfterViewInit {
43
+ @ViewChild('gantt') gantt!: GanttChart;
44
+
45
+ ngAfterViewInit() {
46
+ const taskA = this.gantt.list.addTask(new Task({ id: '1', name: 'Design', startTime: '2027-01-05', endTime: '2027-01-09' }));
47
+ const taskB = this.gantt.list.addTask(new Task({ id: '2', name: 'Development', startTime: '2027-01-12', endTime: '2027-01-23' }));
48
+ this.gantt.list.addLink(new TaskLink({ id: 'l1', from: taskA, to: taskB, type: 'finishToStart' }));
49
+ this.gantt.zoomToFit();
50
+ }
51
+ }
52
+ ```
53
+
54
+ Add styles to your `angular.json`:
55
+
56
+ ```json
57
+ "styles": [
58
+ "node_modules/@timelinekit/core/dist/styles/index.css",
59
+ "src/styles.css"
60
+ ]
61
+ ```
62
+
63
+ ### Resource Scheduler
64
+
65
+ ```typescript
66
+ import { Component, ViewChild, AfterViewInit } from '@angular/core';
67
+ import { ResourceScheduler, SchedulerResource, SchedulerEvent } from '@timelinekit/angular';
68
+
69
+ @Component({
70
+ selector: 'app-root',
71
+ imports: [ResourceScheduler],
72
+ template: `
73
+ <div style="height: 600px">
74
+ <gk-resource-scheduler #scheduler />
75
+ </div>
76
+ `,
77
+ })
78
+ export class AppComponent implements AfterViewInit {
79
+ @ViewChild('scheduler') scheduler!: ResourceScheduler;
80
+
81
+ ngAfterViewInit() {
82
+ const resource = this.scheduler.data.addResource(new SchedulerResource({ id: '1', name: 'Room A' }));
83
+ this.scheduler.data.addEvent(new SchedulerEvent({
84
+ id: 'e1',
85
+ resourceId: resource.id,
86
+ name: 'Meeting',
87
+ startTime: '2027-01-05T09:00',
88
+ endTime: '2027-01-05T10:30',
89
+ }));
90
+ }
91
+ }
92
+ ```
93
+
94
+ ```json
95
+ "styles": [
96
+ "node_modules/@timelinekit/core/dist/styles/index.css",
97
+ "src/styles.css"
98
+ ]
99
+ ```
100
+
101
+ ### Event Calendar
102
+
103
+ ```typescript
104
+ import { Component, ViewChild, AfterViewInit } from '@angular/core';
105
+ import { EventCalendar, CalendarItem } from '@timelinekit/angular';
106
+
107
+ @Component({
108
+ selector: 'app-root',
109
+ imports: [EventCalendar],
110
+ template: `
111
+ <div style="height: 600px">
112
+ <gk-event-calendar #calendar />
113
+ </div>
114
+ `,
115
+ })
116
+ export class AppComponent implements AfterViewInit {
117
+ @ViewChild('calendar') calendar!: EventCalendar;
118
+
119
+ ngAfterViewInit() {
120
+ this.calendar.data.addItem(new CalendarItem({
121
+ id: '1',
122
+ name: 'Team Standup',
123
+ startTime: '2027-01-05T09:00',
124
+ endTime: '2027-01-05T09:30',
125
+ type: 'Meeting',
126
+ }));
127
+ }
128
+ }
129
+ ```
130
+
131
+ ```json
132
+ "styles": [
133
+ "node_modules/@timelinekit/core/dist/styles/index.css",
134
+ "src/styles.css"
135
+ ]
136
+ ```
137
+
138
+ ## API Access
139
+
140
+ Access the component API via `@ViewChild`:
141
+
142
+ ```typescript
143
+ @ViewChild('gantt') gantt!: GanttChart;
144
+
145
+ ngAfterViewInit() {
146
+ this.gantt.list.addTask(...);
147
+ this.gantt.zoomIn();
148
+ this.gantt.undo();
149
+ this.gantt.exportToImage();
150
+ }
151
+ ```
152
+
153
+ ## Licensing
154
+
155
+ TimelineKit is free to use with a watermark. Purchase a license to remove it:
156
+
157
+ ```typescript
158
+ import { setLicense } from '@timelinekit/angular';
159
+
160
+ setLicense('your-license-key');
161
+ ```
162
+
163
+ See [pricing](https://timelinekit.com/pricing) for details.
164
+
165
+ ## Resources
166
+
167
+ - [Documentation](https://timelinekit.com/docs)
168
+ - [Live Demos](https://timelinekit.com/gantt-chart/demo)
169
+ - [Examples](https://github.com/timelinekit/examples)
170
+ - [Support](mailto:support@timelinekit.com)
171
+
172
+ ## License
173
+
174
+ See [LICENSE](./LICENSE) for details.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,48 @@
1
+ import { ElementRef, OnDestroy } from '@angular/core';
2
+ import { CalendarData, CalendarEntry, EventCalendarEvents, EventCalendarSettings } from '@timelinekit/core';
3
+ import type { ViewMode, EntryRenderFn, EntryTooltipFn, CalendarImageExportOptions, CalendarPdfExportOptions, CalendarIcsExportOptions, CalendarIcsImportOptions, CalendarIcsImportResult, CalendarCsvExportOptions, CalendarExcelExportOptions } from '@timelinekit/core';
4
+ export declare class EventCalendar implements OnDestroy {
5
+ #private;
6
+ private el;
7
+ get data(): CalendarData;
8
+ get events(): EventCalendarEvents;
9
+ get settings(): EventCalendarSettings;
10
+ get viewMode(): ViewMode;
11
+ set viewMode(value: ViewMode);
12
+ get currentDate(): Date;
13
+ set currentDate(value: Date);
14
+ get selectedEntries(): CalendarEntry[];
15
+ set selectedEntries(value: CalendarEntry[]);
16
+ get selectedEntry(): CalendarEntry | null;
17
+ set selectedEntry(value: CalendarEntry | null);
18
+ get canEdit(): boolean;
19
+ set canEdit(value: boolean);
20
+ get sidebarVisible(): boolean;
21
+ set sidebarVisible(value: boolean);
22
+ get canUndo$(): import("rxjs").BehaviorSubject<boolean>;
23
+ get canRedo$(): import("rxjs").BehaviorSubject<boolean>;
24
+ undo(): void;
25
+ redo(): void;
26
+ today(): void;
27
+ next(): void;
28
+ previous(): void;
29
+ goToDate(date: Date): void;
30
+ get entryRendering(): EntryRenderFn | null;
31
+ set entryRendering(value: EntryRenderFn | null);
32
+ get entryTooltip(): EntryTooltipFn | null;
33
+ set entryTooltip(value: EntryTooltipFn | null);
34
+ copyEntries(entries?: CalendarEntry[]): Promise<void>;
35
+ cutEntries(entries?: CalendarEntry[]): Promise<void>;
36
+ pasteEntries(): Promise<void>;
37
+ exportToImage(options?: CalendarImageExportOptions): Promise<Blob>;
38
+ exportToPdf(options?: CalendarPdfExportOptions): Promise<Blob>;
39
+ exportToIcs(options?: CalendarIcsExportOptions): Blob;
40
+ exportToIcsText(options?: CalendarIcsExportOptions): string;
41
+ importFromIcs(text: string, options?: CalendarIcsImportOptions): CalendarIcsImportResult;
42
+ exportToCsv(options?: CalendarCsvExportOptions): string;
43
+ exportToExcel(options?: CalendarExcelExportOptions): Promise<Blob>;
44
+ save(): string;
45
+ load(text: string): void;
46
+ constructor(el: ElementRef);
47
+ ngOnDestroy(): void;
48
+ }
@@ -1,7 +1,7 @@
1
- import { ElementRef, OnInit } from '@angular/core';
2
- import { TaskList, ResourceList, WorkingCalendar, Sheet, DateRange, GanttChartEvents, GanttChartSettings, Task } from '@ganttkit/core';
3
- import type { Marker, CsvExportOptions, PdfExportOptions, ExcelExportOptions, TaskFilterFn, TasksPastedEventArgs, ColumnState } from '@ganttkit/core';
4
- export declare class GanttChart implements OnInit {
1
+ import { ElementRef, OnInit, OnDestroy } from '@angular/core';
2
+ import { TaskList, ResourceList, WorkingCalendar, GanttSheet, DateRange, GanttChartEvents, GanttChartSettings, Task } from '@timelinekit/core';
3
+ import type { Marker, GanttCsvExportOptions, GanttPdfExportOptions, GanttExcelExportOptions, TaskFilterFn, TasksPastedEventArgs, ColumnState, TimelineKitLocale } from '@timelinekit/core';
4
+ export declare class GanttChart implements OnInit, OnDestroy {
5
5
  #private;
6
6
  private el;
7
7
  get list(): TaskList;
@@ -10,6 +10,8 @@ export declare class GanttChart implements OnInit {
10
10
  set workingCalendar(value: WorkingCalendar);
11
11
  get canEdit(): boolean;
12
12
  set canEdit(value: boolean);
13
+ get autoZoomToFit(): boolean;
14
+ set autoZoomToFit(value: boolean);
13
15
  get showGridLines(): boolean;
14
16
  set showGridLines(value: boolean);
15
17
  get showCriticalPath(): boolean;
@@ -31,6 +33,7 @@ export declare class GanttChart implements OnInit {
31
33
  clearBaseline(): void;
32
34
  constructor(el: ElementRef);
33
35
  ngOnInit(): void;
36
+ ngOnDestroy(): void;
34
37
  zoomIn(): boolean;
35
38
  zoomOut(): boolean;
36
39
  indent(): void;
@@ -47,8 +50,10 @@ export declare class GanttChart implements OnInit {
47
50
  get events(): GanttChartEvents;
48
51
  get projectTimeline(): DateRange;
49
52
  set projectTimeline(value: DateRange);
53
+ get locale(): TimelineKitLocale;
54
+ set locale(value: TimelineKitLocale);
50
55
  get settings(): GanttChartSettings;
51
- get sheet(): Sheet;
56
+ get sheet(): GanttSheet;
52
57
  get canUndo$(): import("rxjs").BehaviorSubject<boolean>;
53
58
  get canRedo$(): import("rxjs").BehaviorSubject<boolean>;
54
59
  undo(): void;
@@ -56,9 +61,9 @@ export declare class GanttChart implements OnInit {
56
61
  save(): string;
57
62
  load(text: string): void;
58
63
  exportToImage(): Promise<Blob>;
59
- exportToCsv(options?: CsvExportOptions): string;
60
- exportToPdf(options?: PdfExportOptions): Promise<Blob>;
61
- exportToExcel(options?: ExcelExportOptions): Promise<Blob>;
64
+ exportToCsv(options?: GanttCsvExportOptions): string;
65
+ exportToPdf(options?: GanttPdfExportOptions): Promise<Blob>;
66
+ exportToExcel(options?: GanttExcelExportOptions): Promise<Blob>;
62
67
  copy(): Promise<void>;
63
68
  cut(): Promise<void>;
64
69
  paste(): Promise<TasksPastedEventArgs | null>;
package/dist/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  export { GanttChart } from './ganttchart.component';
2
2
  export { ResourceScheduler } from './resourcescheduler.component';
3
+ export { EventCalendar } from './eventcalendar.component';
4
+ export * from '@timelinekit/core';
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{__decorate as e}from"tslib";import{Component as n}from"@angular/core";import{GanttChartEngine as t,ResourceSchedulerEngine as i}from"@ganttkit/core";let s=class{el;get list(){return this.#e.list}get resources(){return this.#e.resources}get workingCalendar(){return this.#e.calendar$.getValue()}set workingCalendar(e){this.#e.calendar$.next(e)}get canEdit(){return this.#e.canEdit}set canEdit(e){this.#e.canEdit=e}get showGridLines(){return this.#e.showGridLines}set showGridLines(e){this.#e.showGridLines=e}get showCriticalPath(){return this.#e.showCriticalPath}set showCriticalPath(e){this.#e.showCriticalPath=e}get showBaseline(){return this.#e.showBaseline}set showBaseline(e){this.#e.showBaseline=e}get showTodayLine(){return this.#e.showTodayLine}set showTodayLine(e){this.#e.showTodayLine=e}get markers(){return this.#e.markers}set markers(e){this.#e.markers=e}addMarker(e){this.#e.addMarker(e)}removeMarker(e){this.#e.removeMarker(e)}clearMarkers(){this.#e.clearMarkers()}get filter(){return this.#e.filter}set filter(e){this.#e.filter=e}clearFilter(){this.#e.clearFilter()}get hasBaseline(){return this.#e.hasBaseline}saveBaseline(){this.#e.saveBaseline()}clearBaseline(){this.#e.clearBaseline()}#e;constructor(e){this.el=e,this.#e=new t(this.el.nativeElement)}ngOnInit(){}zoomIn(){return this.#e.zoomIn()}zoomOut(){return this.#e.zoomOut()}indent(){this.#e.indent()}outdent(){this.#e.outdent()}moveUp(){this.#e.moveUp()}moveDown(){this.#e.moveDown()}get selectedTasks(){return this.#e.selectedTasks}goToProjectStart(){this.#e.goToProjectStart()}scrollToDate(e){this.#e.scrollToDate(e)}scrollToTask(e){this.#e.scrollToTask(e)}zoomToFit(e){this.#e.zoomToFit(e)}saveColumns(){return this.#e.saveColumns()}loadColumns(e){this.#e.loadColumns(e)}get events(){return this.#e.events}get projectTimeline(){return this.#e.projectTimeline}set projectTimeline(e){this.#e.projectTimeline=e}get settings(){return this.#e.settings}get sheet(){return this.#e.sheet}get canUndo$(){return this.#e.canUndo$}get canRedo$(){return this.#e.canRedo$}undo(){this.#e.undo()}redo(){this.#e.redo()}save(){return this.#e.save()}load(e){return this.#e.load(e)}async exportToImage(){return this.#e.exportToImage()}exportToCsv(e){return this.#e.exportToCsv(e)}async exportToPdf(e){return this.#e.exportToPdf(e)}async exportToExcel(e){return this.#e.exportToExcel(e)}async copy(){return this.#e.copy()}async cut(){return this.#e.cut()}async paste(){return this.#e.paste()}};s=e([n({selector:"gk-gantt-chart",templateUrl:"./ganttchart.component.html",styleUrls:["./ganttchart.component.scss"],standalone:!0})],s);let r=class{el;get data(){return this.#e.data}get workingCalendar(){return this.#e.calendar$.getValue()}set workingCalendar(e){this.#e.calendar$.next(e)}get canEdit(){return this.#e.canEdit}set canEdit(e){this.#e.canEdit=e}get showGridLines(){return this.#e.showGridLines}set showGridLines(e){this.#e.showGridLines=e}get showTodayLine(){return this.#e.showTodayLine}set showTodayLine(e){this.#e.showTodayLine=e}get projectTimeline(){return this.#e.projectTimeline}set projectTimeline(e){this.#e.projectTimeline=e}get selectedResources(){return this.#e.selectedResources}get settings(){return this.#e.settings}get sheet(){return this.#e.sheet}get events(){return this.#e.events}#e;constructor(e){this.el=e,this.#e=new i(this.el.nativeElement)}ngOnInit(){}zoomIn(){return this.#e.zoomIn()}zoomOut(){return this.#e.zoomOut()}goToProjectStart(){this.#e.goToProjectStart()}scrollToDate(e){this.#e.scrollToDate(e)}scrollToResource(e){this.#e.scrollToResource(e)}zoomToFit(){this.#e.zoomToFit()}freezeResource(e){this.#e.freezeResource(e)}unfreezeResource(e){this.#e.unfreezeResource(e)}isResourceFrozen(e){return this.#e.isResourceFrozen(e)}saveColumns(){return this.#e.saveColumns()}loadColumns(e){this.#e.loadColumns(e)}save(){return this.#e.save()}load(e){this.#e.load(e)}};r=e([n({selector:"gk-resource-scheduler",templateUrl:"./resourcescheduler.component.html",styleUrls:["./resourcescheduler.component.scss"],standalone:!0})],r);export{s as GanttChart,r as ResourceScheduler};
1
+ import{__decorate as e}from"tslib";import{Component as n}from"@angular/core";import{GanttChartEngine as t,ResourceSchedulerEngine as i,EventCalendarEngine as s}from"@timelinekit/core";export*from"@timelinekit/core";let r=class{el;get list(){return this.#e.list}get resources(){return this.#e.resources}get workingCalendar(){return this.#e.calendar$.getValue()}set workingCalendar(e){this.#e.calendar$.next(e)}get canEdit(){return this.#e.canEdit}set canEdit(e){this.#e.canEdit=e}get autoZoomToFit(){return this.#e.autoZoomToFit}set autoZoomToFit(e){this.#e.autoZoomToFit=e}get showGridLines(){return this.#e.showGridLines}set showGridLines(e){this.#e.showGridLines=e}get showCriticalPath(){return this.#e.showCriticalPath}set showCriticalPath(e){this.#e.showCriticalPath=e}get showBaseline(){return this.#e.showBaseline}set showBaseline(e){this.#e.showBaseline=e}get showTodayLine(){return this.#e.showTodayLine}set showTodayLine(e){this.#e.showTodayLine=e}get markers(){return this.#e.markers}set markers(e){this.#e.markers=e}addMarker(e){this.#e.addMarker(e)}removeMarker(e){this.#e.removeMarker(e)}clearMarkers(){this.#e.clearMarkers()}get filter(){return this.#e.filter}set filter(e){this.#e.filter=e}clearFilter(){this.#e.clearFilter()}get hasBaseline(){return this.#e.hasBaseline}saveBaseline(){this.#e.saveBaseline()}clearBaseline(){this.#e.clearBaseline()}#e;constructor(e){this.el=e,this.#e=new t(this.el.nativeElement)}ngOnInit(){}ngOnDestroy(){this.#e.destroy()}zoomIn(){return this.#e.zoomIn()}zoomOut(){return this.#e.zoomOut()}indent(){this.#e.indent()}outdent(){this.#e.outdent()}moveUp(){this.#e.moveUp()}moveDown(){this.#e.moveDown()}get selectedTasks(){return this.#e.selectedTasks}goToProjectStart(){this.#e.goToProjectStart()}scrollToDate(e){this.#e.scrollToDate(e)}scrollToTask(e){this.#e.scrollToTask(e)}zoomToFit(e){this.#e.zoomToFit(e)}saveColumns(){return this.#e.saveColumns()}loadColumns(e){this.#e.loadColumns(e)}get events(){return this.#e.events}get projectTimeline(){return this.#e.projectTimeline}set projectTimeline(e){this.#e.projectTimeline=e}get locale(){return this.#e.settings.locale}set locale(e){this.#e.settings.locale=e}get settings(){return this.#e.settings}get sheet(){return this.#e.sheet}get canUndo$(){return this.#e.canUndo$}get canRedo$(){return this.#e.canRedo$}undo(){this.#e.undo()}redo(){this.#e.redo()}save(){return this.#e.save()}load(e){return this.#e.load(e)}async exportToImage(){return this.#e.exportToImage()}exportToCsv(e){return this.#e.exportToCsv(e)}async exportToPdf(e){return this.#e.exportToPdf(e)}async exportToExcel(e){return this.#e.exportToExcel(e)}async copy(){return this.#e.copy()}async cut(){return this.#e.cut()}async paste(){return this.#e.paste()}};r=e([n({selector:"gk-gantt-chart",templateUrl:"./ganttchart.component.html",styleUrls:["./ganttchart.component.scss"],standalone:!0})],r);let o=class{el;get data(){return this.#e.data}get workingCalendar(){return this.#e.calendar$.getValue()}set workingCalendar(e){this.#e.calendar$.next(e)}get canEdit(){return this.#e.canEdit}set canEdit(e){this.#e.canEdit=e}get autoZoomToFit(){return this.#e.autoZoomToFit}set autoZoomToFit(e){this.#e.autoZoomToFit=e}get showGridLines(){return this.#e.showGridLines}set showGridLines(e){this.#e.showGridLines=e}get showTodayLine(){return this.#e.showTodayLine}set showTodayLine(e){this.#e.showTodayLine=e}get markers(){return this.#e.markers}set markers(e){this.#e.markers=e}addMarker(e){this.#e.addMarker(e)}removeMarker(e){this.#e.removeMarker(e)}clearMarkers(){this.#e.clearMarkers()}get filter(){return this.#e.filter}set filter(e){this.#e.filter=e}clearFilter(){this.#e.clearFilter()}get eventRendering(){return this.#e.eventRendering}set eventRendering(e){this.#e.eventRendering=e}get eventTooltip(){return this.#e.eventTooltip}set eventTooltip(e){this.#e.eventTooltip=e}get projectTimeline(){return this.#e.projectTimeline}set projectTimeline(e){this.#e.projectTimeline=e}get selectedResources(){return this.#e.selectedResources}get selectedEvents(){return this.#e.selectedEvents}set selectedEvents(e){this.#e.selectedEvents=e}get selectedEvent(){return this.#e.selectedEvent}set selectedEvent(e){this.#e.selectedEvent=e}get settings(){return this.#e.settings}get sheet(){return this.#e.sheet}get events(){return this.#e.events}get canUndo$(){return this.#e.canUndo$}get canRedo$(){return this.#e.canRedo$}#e;constructor(e){this.el=e,this.#e=new i(this.el.nativeElement)}ngOnInit(){}ngOnDestroy(){this.#e.destroy()}undo(){this.#e.undo()}redo(){this.#e.redo()}async copy(){await this.#e.copy()}async cut(){await this.#e.cut()}async paste(){return this.#e.paste()}zoomIn(){return this.#e.zoomIn()}zoomOut(){return this.#e.zoomOut()}goToProjectStart(){this.#e.goToProjectStart()}scrollToDate(e){this.#e.scrollToDate(e)}scrollToResource(e){this.#e.scrollToResource(e)}scrollToEvent(e){this.#e.scrollToEvent(e)}zoomToFit(e){this.#e.zoomToFit(e)}saveColumns(){return this.#e.saveColumns()}loadColumns(e){this.#e.loadColumns(e)}sortResources(e){this.#e.sortResources(e)}freezeResource(e){this.#e.freezeResource(e)}unfreezeResource(e){this.#e.unfreezeResource(e)}isResourceFrozen(e){return this.#e.isResourceFrozen(e)}async exportToImage(){return this.#e.exportToImage()}exportToCsv(e){return this.#e.exportToCsv(e)}async exportToExcel(e){return this.#e.exportToExcel(e)}async exportToPdf(e){return this.#e.exportToPdf(e)}save(){return this.#e.save()}load(e){this.#e.load(e)}};o=e([n({selector:"gk-resource-scheduler",templateUrl:"./resourcescheduler.component.html",styleUrls:["./resourcescheduler.component.scss"],standalone:!0})],o);let g=class{el;get data(){return this.#e.data}get events(){return this.#e.events}get settings(){return this.#e.settings}get viewMode(){return this.#e.viewMode}set viewMode(e){this.#e.viewMode=e}get currentDate(){return this.#e.currentDate}set currentDate(e){this.#e.currentDate=e}get selectedEntries(){return this.#e.selectedEntries}set selectedEntries(e){this.#e.selectedEntries=e}get selectedEntry(){return this.#e.selectedEntry}set selectedEntry(e){this.#e.selectedEntry=e}get canEdit(){return this.#e.canEdit}set canEdit(e){this.#e.canEdit=e}get sidebarVisible(){return this.#e.sidebarVisible}set sidebarVisible(e){this.#e.sidebarVisible=e}get canUndo$(){return this.#e.canUndo$}get canRedo$(){return this.#e.canRedo$}undo(){this.#e.undo()}redo(){this.#e.redo()}today(){this.#e.today()}next(){this.#e.next()}previous(){this.#e.previous()}goToDate(e){this.#e.goToDate(e)}get entryRendering(){return this.#e.entryRendering}set entryRendering(e){this.#e.entryRendering=e}get entryTooltip(){return this.#e.entryTooltip}set entryTooltip(e){this.#e.entryTooltip=e}async copyEntries(e){return this.#e.copyEntries(e)}async cutEntries(e){return this.#e.cutEntries(e)}async pasteEntries(){return this.#e.pasteEntries()}async exportToImage(e){return this.#e.exportToImage(e)}async exportToPdf(e){return this.#e.exportToPdf(e)}exportToIcs(e){return this.#e.exportToIcs(e)}exportToIcsText(e){return this.#e.exportToIcsText(e)}importFromIcs(e,n){return this.#e.importFromIcs(e,n)}exportToCsv(e){return this.#e.exportToCsv(e)}async exportToExcel(e){return this.#e.exportToExcel(e)}save(){return this.#e.save()}load(e){this.#e.load(e)}#e;constructor(e){this.el=e,this.#e=new s(this.el.nativeElement)}ngOnDestroy(){this.#e.destroy()}};g=e([n({selector:"gk-event-calendar",templateUrl:"./eventcalendar.component.html",styleUrls:["./eventcalendar.component.scss"],standalone:!0})],g);export{g as EventCalendar,r as GanttChart,o as ResourceScheduler};
@@ -1,7 +1,7 @@
1
- import { ElementRef, OnInit } from '@angular/core';
2
- import { SchedulerData, SchedulerResource, WorkingCalendar, SchedulerSheet, DateRange, ResourceSchedulerEvents, ResourceSchedulerSettings } from '@ganttkit/core';
3
- import type { ColumnState } from '@ganttkit/core';
4
- export declare class ResourceScheduler implements OnInit {
1
+ import { ElementRef, OnInit, OnDestroy } from '@angular/core';
2
+ import { SchedulerData, SchedulerResource, SchedulerEvent, WorkingCalendar, SchedulerSheet, DateRange, ResourceSchedulerEvents, ResourceSchedulerSettings } from '@timelinekit/core';
3
+ import type { Marker, ColumnState, SchedulerResourceFilterFn, SchedulerEventRenderFn, SchedulerEventTooltipFn, SchedulerCsvExportOptions, SchedulerExcelExportOptions, SchedulerPdfExportOptions, SchedulerEventsPastedEventArgs } from '@timelinekit/core';
4
+ export declare class ResourceScheduler implements OnInit, OnDestroy {
5
5
  #private;
6
6
  private el;
7
7
  get data(): SchedulerData;
@@ -9,29 +9,61 @@ export declare class ResourceScheduler implements OnInit {
9
9
  set workingCalendar(value: WorkingCalendar);
10
10
  get canEdit(): boolean;
11
11
  set canEdit(value: boolean);
12
+ get autoZoomToFit(): boolean;
13
+ set autoZoomToFit(value: boolean);
12
14
  get showGridLines(): boolean;
13
15
  set showGridLines(value: boolean);
14
16
  get showTodayLine(): boolean;
15
17
  set showTodayLine(value: boolean);
18
+ get markers(): Marker[];
19
+ set markers(value: Marker[]);
20
+ addMarker(marker: Marker): void;
21
+ removeMarker(marker: Marker): void;
22
+ clearMarkers(): void;
23
+ get filter(): SchedulerResourceFilterFn | null;
24
+ set filter(value: SchedulerResourceFilterFn | null);
25
+ clearFilter(): void;
26
+ get eventRendering(): SchedulerEventRenderFn | null;
27
+ set eventRendering(value: SchedulerEventRenderFn | null);
28
+ get eventTooltip(): SchedulerEventTooltipFn | null;
29
+ set eventTooltip(value: SchedulerEventTooltipFn | null);
16
30
  get projectTimeline(): DateRange;
17
31
  set projectTimeline(value: DateRange);
18
32
  get selectedResources(): SchedulerResource[];
33
+ get selectedEvents(): SchedulerEvent[];
34
+ set selectedEvents(value: SchedulerEvent[]);
35
+ get selectedEvent(): SchedulerEvent | null;
36
+ set selectedEvent(value: SchedulerEvent | null);
19
37
  get settings(): ResourceSchedulerSettings;
20
38
  get sheet(): SchedulerSheet;
21
39
  get events(): ResourceSchedulerEvents;
40
+ get canUndo$(): import("rxjs").BehaviorSubject<boolean>;
41
+ get canRedo$(): import("rxjs").BehaviorSubject<boolean>;
22
42
  constructor(el: ElementRef);
23
43
  ngOnInit(): void;
44
+ ngOnDestroy(): void;
45
+ undo(): void;
46
+ redo(): void;
47
+ copy(): Promise<void>;
48
+ cut(): Promise<void>;
49
+ paste(): Promise<SchedulerEventsPastedEventArgs | null>;
24
50
  zoomIn(): boolean;
25
51
  zoomOut(): boolean;
26
52
  goToProjectStart(): void;
27
53
  scrollToDate(date: Date): void;
28
54
  scrollToResource(resource: SchedulerResource): void;
29
- zoomToFit(): void;
55
+ scrollToEvent(event: SchedulerEvent): void;
56
+ zoomToFit(events?: SchedulerEvent[]): void;
57
+ saveColumns(): ColumnState[];
58
+ loadColumns(states: ColumnState[]): void;
59
+ sortResources(compareFn: (a: SchedulerResource, b: SchedulerResource) => number): void;
30
60
  freezeResource(resource: SchedulerResource): void;
31
61
  unfreezeResource(resource: SchedulerResource): void;
32
62
  isResourceFrozen(resource: SchedulerResource): boolean;
33
- saveColumns(): ColumnState[];
34
- loadColumns(states: ColumnState[]): void;
63
+ exportToImage(): Promise<Blob>;
64
+ exportToCsv(options?: SchedulerCsvExportOptions): string;
65
+ exportToExcel(options?: SchedulerExcelExportOptions): Promise<Blob>;
66
+ exportToPdf(options?: SchedulerPdfExportOptions): Promise<Blob>;
35
67
  save(): string;
36
68
  load(text: string): void;
37
69
  }
package/package.json CHANGED
@@ -1,33 +1,36 @@
1
- {
2
- "name": "@timelinekit/angular",
3
- "version": "1.0.1",
4
- "type": "module",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "import": "./dist/index.js"
11
- }
12
- },
13
- "scripts": {
14
- "build": "rollup -c"
15
- },
16
- "peerDependencies": {
17
- "@angular/core": ">=19.0.0",
18
- "@timelinekit/core": "workspace:*"
19
- },
20
- "dependencies": {
21
- "@timelinekit/core": "workspace:*"
22
- },
23
- "devDependencies": {
24
- "@angular/core": "^21.2.0",
25
- "rxjs": "~7.8.0",
26
- "tslib": "^2.3.0"
27
- },
28
- "files": [
29
- "dist",
30
- "README.md",
31
- "LICENSE"
32
- ]
33
- }
1
+ {
2
+ "name": "@timelinekit/angular",
3
+ "version": "1.0.5",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "peerDependencies": {
14
+ "@angular/core": ">=19.0.0",
15
+ "@timelinekit/core": "1.0.5"
16
+ },
17
+ "dependencies": {
18
+ "@timelinekit/core": "1.0.5"
19
+ },
20
+ "devDependencies": {
21
+ "@angular/core": "^21.2.0",
22
+ "rxjs": "~7.8.0",
23
+ "tslib": "^2.3.0",
24
+ "vitest": "^4.0.8"
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "README.md",
29
+ "LICENSE"
30
+ ],
31
+ "scripts": {
32
+ "build": "rollup -c",
33
+ "test": "vitest run",
34
+ "test:watch": "vitest"
35
+ }
36
+ }