@dhtmlx/trial-vue-gantt 1.1.1 → 9.1.2-beta1

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 (47) hide show
  1. package/README.md +126 -262
  2. package/dist/dhtmlxgantt.vue.es.d.ts +289 -0
  3. package/dist/dhtmlxgantt.vue.es.js +17911 -0
  4. package/dist/dhtmlxgantt.vue.es.js.map +1 -0
  5. package/dist/vue-gantt.css +1 -0
  6. package/license.txt +43 -0
  7. package/package.json +56 -62
  8. package/whatsnew.md +1125 -0
  9. package/public/dist/gantt.js +0 -1
  10. package/src/components/Gantt.vue +0 -238
  11. package/src/components/TimeScale.vue +0 -57
  12. package/src/components/chart/Bars.vue +0 -470
  13. package/src/components/chart/CellGrid.vue +0 -22
  14. package/src/components/chart/Chart.vue +0 -236
  15. package/src/components/chart/Links.vue +0 -35
  16. package/src/components/chart/NewLink.vue +0 -39
  17. package/src/components/grid/Body.vue +0 -256
  18. package/src/components/grid/Grid.vue +0 -98
  19. package/src/components/grid/Header.vue +0 -104
  20. package/src/components/grid/actions/reorder.js +0 -193
  21. package/src/components/sidebar/Links.vue +0 -147
  22. package/src/components/sidebar/Sidebar.vue +0 -219
  23. package/src/locales/cn.js +0 -21
  24. package/src/locales/en.js +0 -21
  25. package/src/locales/ru.js +0 -21
  26. package/src/main.js +0 -46
  27. package/src/state/local.js +0 -48
  28. package/src/wx/Button.vue +0 -54
  29. package/src/wx/CNLocale.js +0 -15
  30. package/src/wx/Calendar.vue +0 -194
  31. package/src/wx/Counter.vue +0 -154
  32. package/src/wx/Datepicker.vue +0 -153
  33. package/src/wx/DefaultTheme.vue +0 -104
  34. package/src/wx/ENLocale.js +0 -15
  35. package/src/wx/IconButton.vue +0 -39
  36. package/src/wx/MaterialTheme.vue +0 -107
  37. package/src/wx/RULocale.js +0 -15
  38. package/src/wx/Select.vue +0 -75
  39. package/src/wx/Slider.vue +0 -150
  40. package/src/wx/Text.vue +0 -73
  41. package/src/wx/Textarea.vue +0 -63
  42. package/src/wx/Tooltip.vue +0 -110
  43. package/src/wx/index.js +0 -35
  44. package/src/wx/locale.js +0 -1
  45. package/src/wx/locales/cn.js +0 -39
  46. package/src/wx/locales/en.js +0 -39
  47. package/src/wx/locales/ru.js +0 -39
package/README.md CHANGED
@@ -1,281 +1,145 @@
1
- # Vue Gantt Demos
1
+ # DHTMLX Vue Gantt
2
2
 
3
- - Online demo: https://dhtmlx.com/vue/demos/gantt/#/base/default
4
- - Code of demos: https://github.com/web-widgets/vue-gantt-demos
5
- - Minimal project: https://stackblitz.com/edit/vue-gantt-basic
3
+ [![dhtmlx.com](https://img.shields.io/badge/made%20by-DHTMLX-blue)](https://dhtmlx.com/)
4
+ [![npm: v.9.1.2-beta1](https://img.shields.io/badge/npm-v.9.1.2-beta1-blue.svg)](https://www.npmjs.com/package/@dhtmlx/trial-vue-gantt)
5
+ [![License: Evaluation](https://img.shields.io/badge/license-Evaluation-important.svg)](https://dhtmlx.com/docs/products/license.shtml?eval)
6
6
 
7
- ## Supported functionality
8
7
 
9
- #### Common with DHTMLX Gantt
8
+ [DHTMLX Vue Gantt](https://dhtmlx.com/docs/products/dhtmlxGantt-for-Vue/) is a Vue wrapper for the [DHTMLX Gantt](https://dhtmlx.com/docs/products/dhtmlxGantt/) library.
10
9
 
11
- - adding/editing/deleting tasks and links
12
- - tasks, projects and milestones
13
- - configurable scales and grids
14
- - configurable tooltips
15
- - time markers
10
+ It provides a declarative way to integrate DHTMLX Gantt scheduling features into Vue apps. Use Vue components in templates, pass reactive props, and handle chart edits through wrapper callbacks.
16
11
 
17
- #### Unique features
12
+ > **Important:** this npm package is a *trial* build intended for evaluation only.
13
+ > For access to commercial licenses and technical support, please request an evaluation on our website:
14
+ > https://dhtmlx.com/docs/products/dhtmlxGantt-for-Vue/download.shtml
18
15
 
19
- - vue widgets can be used for tasks rendering, tooltips and form controls
20
- - all configuration properties are reactive
21
- - full vue sources are provided
16
+ <a name="getting-started"></a>
17
+ ## Getting started
22
18
 
23
- ## Usage
19
+ **Install package**
24
20
 
25
- ### Installation
21
+ Professional Evaluation version:
26
22
 
27
- - add library to your vue project
28
-
29
- ```js
23
+ ~~~bash
30
24
  npm install @dhtmlx/trial-vue-gantt
31
- ```
32
-
33
- This will install trial version, for commercial one, use "@dhx/vue-gantt"
34
-
35
- - place Gantt tag into the desired page
36
-
37
- ```jsx
38
- import { Gantt, DefaultTheme } from "@dhtmlx/trial-vue-gantt";
39
-
40
- export default function GanttBasic() {
41
- return (
42
- <DefaultTheme>
43
- <Gantt />
44
- </DefaultTheme>
45
- );
46
- }
47
- ```
25
+ ~~~
26
+
27
+
28
+ And initialize:
29
+
30
+ ~~~vue
31
+ <!-- src/components/GanttChart.vue -->
32
+ <script setup lang="ts">
33
+ import { ref } from "vue";
34
+ import VueGantt, {
35
+ type Link,
36
+ type Task,
37
+ type VueGanttDataConfig
38
+ } from "@dhtmlx/trial-vue-gantt";
39
+ import "@dhtmlx/trial-vue-gantt/dist/vue-gantt.css";
40
+
41
+ import { links as initialLinks, tasks as initialTasks } from "../demoData";
42
+
43
+ const tasks = ref<Task[]>(initialTasks);
44
+ const links = ref<Link[]>(initialLinks);
45
+
46
+ const data: VueGanttDataConfig = {
47
+ save: (entity, action, item, id) => {
48
+ console.log("save", { entity, action, item, id });
49
+ }
50
+ };
51
+ </script>
52
+
53
+ <template>
54
+ <div style="height: 100%; width: 100%;">
55
+ <VueGantt :tasks="tasks" :links="links" :data="data" />
56
+ </div>
57
+ </template>
58
+ ~~~
59
+
60
+ ~~~vue
61
+ <!-- src/App.vue -->
62
+ <script setup lang="ts">
63
+ import GanttChart from "./components/GanttChart.vue";
64
+ </script>
65
+
66
+ <template>
67
+ <div style="height: 100vh; width: 100vw;">
68
+ <GanttChart />
69
+ </div>
70
+ </template>
71
+ ~~~
72
+
73
+ `demoData.ts` is an example tasks/links dataset. Replace it with your own project data.
74
+
75
+ ### Requirements
76
+
77
+ - Vue `3.x` or newer
78
+
79
+ ### Complete guides
80
+
81
+
82
+ - https://docs.dhtmlx.com/gantt/integrations/vue/
83
+
84
+
85
+
86
+ <a name="features"></a>
87
+ ## Features
88
+
89
+ - Vue components in templates of grid cells, headers, timelines
90
+ - easy customization with Vue components
91
+ - compatibility with Pinia-based state management
92
+ - TypeScript support
93
+ - 4 types of tasks linking: finish-to-start, start-to-start, finish-to-finish, start-to-finish
94
+ - dragging and dropping multiple tasks horizontally
95
+ - multi-task selection
96
+ - backward planning
97
+ - tasks filtering
98
+ - resources filtering
99
+ - inline editing
100
+ - managing editability/readonly modes of individual tasks
101
+ - undo/redo functionality
102
+ - configurable columns in the grid
103
+ - customizable time scale and task edit form
104
+ - progress percent coloring for tasks
105
+ - 7 different skins
106
+ - online export to PDF, PNG, Excel, iCal, and MS Project
107
+ - 32 locales
108
+ - keyboard navigation
109
+ - resource management
110
+ - critical path calculation
111
+ - auto scheduling
112
+
113
+
114
+ <a name="license"></a>
115
+ ## License
116
+
117
+ DHTMLX Gantt for Vue v.9.1.2-beta1 Professional Evaluation
118
+
119
+ This software is covered by DHTMLX Evaluation License. Contact sales@dhtmlx.com to get a proprietary license. Usage without proper license is prohibited.
48
120
 
49
- You can check the demo of mininal project here - https://stackblitz.com/edit/vue-gantt-basic
121
+ (c) XB Software
50
122
 
51
- Source code of the gantt can be checked in node_modules/@dhtmlx/trial-vue-gantt/src
52
123
 
53
- ### Themes
124
+ <a name="links"></a>
125
+ ## Useful links
54
126
 
55
- Package contains two predefined themes - Default and Material.
127
+ - [DHTMLX Vue Gantt product page](https://dhtmlx.com/docs/products/dhtmlxGantt-for-Vue/)
128
+ - [DHTMLX JS Gantt product page](https://dhtmlx.com/docs/products/dhtmlxGantt/)
129
+ - [Official documentation](https://docs.dhtmlx.com/gantt/)
130
+ - [Online samples](https://docs.dhtmlx.com/gantt/samples/)
131
+ - [Video tutorials](https://www.youtube.com/watch?v=cCvULTQxPfg&list=PLKS_XdyIGP4MEW6yvvQUZT8vJKHVOq2S0)
132
+ - [Export services](https://dhtmlx.com/docs/products/dhtmlxGantt/export.shtml)
133
+ - [List of available integrations](https://dhtmlx.com/docs/products/integrations/)
134
+ - [Support forum](https://forum.dhtmlx.com/c/gantt)
56
135
 
57
- You can apply theme by wrapping Gantt into DefaultTheme or MaterialTheme tags
136
+ <a name="followus"></a>
137
+ ## Follow us
58
138
 
59
- ```jsx
60
- <div>
61
- <DefaultTheme>
62
- <Gantt />
63
- </DefaultTheme>
64
- <MaterialTheme>
65
- <Gantt />
66
- </MaterialTheme>
67
- </div>
68
- ```
139
+ - Read us on [Medium](https://medium.com/@dhtmlx)
69
140
 
70
- or you can just add theme tag on the page and add skin class to one of Gantt's parent tags
141
+ - Follow us on [LinkedIn](https://www.linkedin.com/company/dhtmlx-ltd-/)
71
142
 
72
- ```jsx
73
- <div>
74
- <DefaultTheme />
75
- <MaterialTheme />
143
+ - Follow us on [X](https://x.com/dhtmlx)
76
144
 
77
- <div class="wx-default">
78
- <Gantt />
79
- </div>
80
- <div class="wx-material">
81
- <Gantt />
82
- </div>
83
- </div>
84
- ```
85
-
86
- ### Initialization
87
-
88
- You can define scales/columns/tasks/links during Gantt initialization
89
-
90
- ```vue
91
- <Gantt :scales="scales" :columns="columns" :tasks="tasks" :links="links" />
92
- ```
93
-
94
- where data may look like next
95
-
96
- ```js
97
- const scales = [
98
- { unit: "month", step: 1, format: "MMMM yyy" },
99
- { unit: "day", step: 1, format: "d" },
100
- ];
101
-
102
- const columns = [
103
- { name: "text", label: "Task name", width: "100%" },
104
- { name: "start", label: "Start time", align: "center" },
105
- { name: "duration", label: "Duration", width: "70px", align: "center" },
106
- { name: "add-task", label: "", width: "50px", align: "center" },
107
- ];
108
-
109
- const tasks = [
110
- {
111
- id: 1,
112
- open: true,
113
- start_date: "2020-11-06",
114
- duration: 8,
115
- text: "vue Gantt Widget",
116
- progress: 60,
117
- type: "project",
118
- },
119
- {
120
- id: 2,
121
- parent: 1,
122
- start_date: "2020-11-06",
123
- duration: 4,
124
- text: "Lib-Gantt",
125
- progress: 80,
126
- },
127
- ];
128
-
129
- const links = [{ source: 2, target: 1, type: 0 }];
130
- ```
131
-
132
- ### Integration with backend
133
-
134
- Check
135
- https://github.com/web-widgets/vue-gantt-demos/blob/master/src/components/GanttBackend.vue
136
-
137
- Code defines the action handler through **save** event. This event will be triggered on any update and may be used to save changes to the persistent storage.
138
-
139
- In the above example, the RestDataProvider is used
140
- https://github.com/web-widgets/gantt-data-provider/blob/master/src/providers/rest.ts You are not limited to this solution, though, and can extend the provided class or define a custom handler.
141
-
142
- We provide 2 demo backends, with nodejs and go
143
-
144
- - https://github.com/web-widgets/gantt-go
145
- - https://github.com/web-widgets/gantt-node
146
-
147
- again, you are not limited to this solution. The above RestDataProvider can work with any REST like service and you can implement a fully custom solution ( sockets, graphql, etc. ) through custom save event.
148
-
149
- ### Templates
150
-
151
- The next elements can be customized through templates
152
-
153
- - task text
154
- - sidebar form
155
-
156
- check https://github.com/web-widgets/vue-gantt-demos/blob/master/src/components/GanttText.vue
157
-
158
- - tooltip content
159
-
160
- check https://github.com/web-widgets/vue-gantt-demos/blob/master/src/components/GanttTooltips.vue
161
-
162
- ## API
163
-
164
- ### Properties
165
-
166
- ```js
167
- // templates for different elements of gantt
168
- let templates = {};
169
- // array of markers
170
- let markers = [];
171
- // supported task types
172
- let taskTypes = ["task", "project", "milestone"];
173
- // tasks data
174
- let tasks = [];
175
- // links data
176
- let links = [];
177
- // time scales configuration
178
- let scales = [
179
- { unit: "month", step: 1, format: "MMMM yyy" },
180
- { unit: "day", step: 1, format: "d" },
181
- ];
182
- // grid configuration
183
- let columns = [
184
- { name: "text", label: "Task name", width: "100%" },
185
- { name: "add-task", label: "", width: "50px", align: "center" },
186
- ];
187
- // time scale start
188
- let start = null;
189
- // time scale end
190
- let end = null;
191
- // width of scale cell
192
- let cellWidth = 100;
193
- // height of chart bar
194
- let cellHeight = 38;
195
- // height of scale cell
196
- let scaleHeight = 30;
197
- // readonly mode flag
198
- let readonly = false;
199
- // show or hide grid
200
- let grid = true;
201
- // show or hide tooltips
202
- let tooltip = null;
203
- // show or hide borders in the chart area
204
- let borders = "full";
205
- ```
206
-
207
- ### Events
208
-
209
- ```js
210
- // will be called with DataStore value on Gantt initalization
211
- let store = null;
212
- // will be called on any action in the Gantt
213
- let actions = null;
214
- // will be called on any data modification in the Gantt
215
- let save = null;
216
- ```
217
-
218
- ### Actions
219
-
220
- **Data modifications** ( both _action_ and _save_ events )
221
-
222
- - add-link
223
- - update-link
224
- - delete-link
225
- - add-task
226
- - update-task
227
- - delete-task
228
-
229
- **UI State** ( _action_ event )
230
-
231
- - data-request
232
- - hide-details
233
- - move-task
234
- - scroll-chart
235
- - select-task
236
- - show-details
237
- - task-toggle
238
- - update-task-time
239
-
240
- #### Example of event usage
241
-
242
- ```jsx
243
- function handler({ action, obj, id }){
244
- if (action === "select-task")
245
- console.log(`Task ${id} was selected`);
246
- }
247
-
248
- <Gantt @action="handler"/>
249
- ```
250
-
251
- ### Methods
252
-
253
- ```jsx
254
- let store;
255
-
256
- <Gantt @store="v => store = v" />
257
- ```
258
-
259
- and now you can use store's API to get or modify data.
260
-
261
- ```ts
262
- interface IStore {
263
- getTask(id: number): GanttItemData;
264
- updateTask(id: number, obj: any, noSave: boolean): void;
265
- updateLink(id: number, obj: any, noSave: boolean): void;
266
- action(
267
- id: number,
268
- action: string,
269
- obj: StringHash<any>,
270
- noSave?: boolean
271
- ): number;
272
- }
273
- ```
274
-
275
- action method can be used to trigger any of above actions
276
-
277
- ```js
278
- store.action(taskId, "tasks-toggle");
279
- store.action(linkId, "delete-link");
280
- store.action(null, "add-link", { source: 1, target 2, type: 0 });
281
- ```
145
+ - Like our page on [Facebook](https://www.facebook.com/dhtmlx/)
@@ -0,0 +1,289 @@
1
+ import * as vue from 'vue';
2
+ import { VNode, Component, Ref, MaybeRef } from 'vue';
3
+ import { Task, Link, GanttStatic, RouterFunction, CalendarConfig, GanttConfigOptions, GanttPlugins, GanttTemplates } from '@dhx/gantt';
4
+ export * from '@dhx/gantt';
5
+
6
+ interface VueKnownGanttEvents {
7
+ onBeforeLightbox?: (taskId: string | number) => boolean | void;
8
+ onTaskCreated?: (task: Task) => boolean | void;
9
+ onAfterTaskAdd?: (id: string | number, task: Task) => void;
10
+ onAfterTaskUpdate?: (id: string | number, task: Task) => void;
11
+ onAfterTaskDelete?: (id: string | number, task: Task) => void;
12
+ onAfterLinkAdd?: (id: string | number, link: Link) => void;
13
+ onAfterLinkUpdate?: (id: string | number, link: Link) => void;
14
+ onAfterLinkDelete?: (id: string | number, link: Link) => void;
15
+ }
16
+ type VueGanttEvents = VueKnownGanttEvents & Record<string, (...args: any[]) => any>;
17
+ interface VueGanttExpose {
18
+ instance: GanttStatic | null;
19
+ }
20
+ interface VueGanttRef {
21
+ instance: GanttStatic | null;
22
+ }
23
+ interface VueGanttEmits {
24
+ ready: (instance: GanttStatic) => void;
25
+ }
26
+ interface DataCallbackChange {
27
+ entity: string;
28
+ action: string;
29
+ data: any;
30
+ id: number | string;
31
+ }
32
+ interface BatchChanges {
33
+ tasks?: DataCallbackChange[];
34
+ links?: DataCallbackChange[];
35
+ resources?: DataCallbackChange[];
36
+ resourceAssignments?: DataCallbackChange[];
37
+ }
38
+ interface DataSet {
39
+ tasks?: Task[];
40
+ links?: Link[];
41
+ resources?: any[];
42
+ resourceAssignments?: any[];
43
+ baselines?: any[];
44
+ }
45
+ interface VueGanttDataConfig {
46
+ load?: string | ((gantt: GanttStatic) => DataSet | Promise<DataSet>);
47
+ save?: string | RouterFunction;
48
+ batchSave?: (changes: BatchChanges) => void;
49
+ }
50
+ interface OnBeforeTaskDeleteConfirmArgs {
51
+ task: Task;
52
+ callback: () => void;
53
+ message: string;
54
+ title: string;
55
+ ganttInstance: GanttStatic;
56
+ }
57
+ interface OnBeforeLinkDeleteConfirmArgs {
58
+ link: Link;
59
+ callback: () => void;
60
+ message: string;
61
+ title: string;
62
+ ganttInstance: GanttStatic;
63
+ }
64
+ interface GanttModals {
65
+ onBeforeTaskDelete?: (args: OnBeforeTaskDeleteConfirmArgs) => void;
66
+ onBeforeLinkDelete?: (args: OnBeforeLinkDeleteConfirmArgs) => void;
67
+ }
68
+ interface Marker {
69
+ id?: string | number;
70
+ start_date: Date;
71
+ end_date?: Date;
72
+ css?: string;
73
+ text?: string | number | VNode | (() => VNode);
74
+ title?: string | number;
75
+ }
76
+ interface WrapperCalendar {
77
+ id: string;
78
+ hours?: string[];
79
+ days?: {
80
+ weekdays?: Partial<Record<0 | 1 | 2 | 3 | 4 | 5 | 6, string[] | boolean>>;
81
+ dates?: Record<string, string[] | boolean>;
82
+ };
83
+ customWeeks?: Record<string, {
84
+ from: Date;
85
+ to: Date;
86
+ hours?: string[];
87
+ days?: {
88
+ weekdays?: Partial<Record<0 | 1 | 2 | 3 | 4 | 5 | 6, string[] | boolean>>;
89
+ dates?: Record<string, string[] | boolean>;
90
+ };
91
+ }>;
92
+ }
93
+ type TaskFilter = ((task: Task) => boolean) | null;
94
+ type ResourceFilter = ((resource: any) => boolean) | null;
95
+ interface WrapperInlineEditorMethods {
96
+ focus?: () => void;
97
+ save?: () => void;
98
+ setValue?: (value: any) => void;
99
+ getValue?: () => any;
100
+ isChanged?: (value: any) => boolean;
101
+ isValid?: () => boolean;
102
+ }
103
+ interface InlineEditorComponentProps {
104
+ initialValue: any;
105
+ task: Task;
106
+ save: () => void;
107
+ cancel: () => void;
108
+ ganttInstance: GanttStatic;
109
+ }
110
+ interface ActiveInlineEditor {
111
+ id: string;
112
+ placeholder: HTMLElement;
113
+ editorType: string;
114
+ initialValue: any;
115
+ task: Task;
116
+ onMount?: () => void;
117
+ }
118
+ interface CustomLightboxProps {
119
+ data: any;
120
+ onSave: (updatedTask: any) => void;
121
+ onCancel: () => void;
122
+ onDelete: () => void;
123
+ ganttInstance: GanttStatic;
124
+ }
125
+ type TemplateWrapper = (node: VNode) => VNode;
126
+ type GroupTasks = any;
127
+ interface VueGanttProps {
128
+ tasks?: Task[];
129
+ links?: Link[];
130
+ resources?: any[] | null;
131
+ resourceAssignments?: any[] | null;
132
+ baselines?: any[] | null;
133
+ markers?: Marker[] | null;
134
+ calendars?: (WrapperCalendar | CalendarConfig)[] | null;
135
+ data?: VueGanttDataConfig | null;
136
+ config?: Partial<GanttConfigOptions>;
137
+ plugins?: GanttPlugins;
138
+ templates?: Partial<GanttTemplates>;
139
+ locale?: string | Record<string, any>;
140
+ theme?: string;
141
+ filter?: TaskFilter;
142
+ resourceFilter?: ResourceFilter;
143
+ modals?: GanttModals | null;
144
+ groupTasks?: GroupTasks;
145
+ inlineEditors?: Record<string, Component>;
146
+ customLightbox?: Component | null;
147
+ templateWrapper?: TemplateWrapper | null;
148
+ events?: VueGanttEvents;
149
+ [key: string]: any;
150
+ }
151
+
152
+ declare const VueGantt: vue.DefineComponent<{
153
+ [x: string]: /*elided*/ any;
154
+ tasks?: Task[];
155
+ links?: Link[];
156
+ resources?: any[] | null;
157
+ resourceAssignments?: any[] | null;
158
+ baselines?: any[] | null;
159
+ markers?: Marker[] | null;
160
+ calendars?: (WrapperCalendar | CalendarConfig)[] | null;
161
+ data?: VueGanttDataConfig | null;
162
+ config?: Partial<GanttConfigOptions>;
163
+ plugins?: GanttPlugins;
164
+ templates?: Partial<GanttTemplates>;
165
+ locale?: string | Record<string, any>;
166
+ theme?: string;
167
+ filter?: TaskFilter;
168
+ resourceFilter?: ResourceFilter;
169
+ modals?: GanttModals | null;
170
+ groupTasks?: GroupTasks;
171
+ inlineEditors?: Record<string, Component>;
172
+ customLightbox?: Component | null;
173
+ templateWrapper?: TemplateWrapper | null;
174
+ events?: VueKnownGanttEvents & Record<string, (...args: any[]) => any>;
175
+ }, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
176
+ [key: string]: any;
177
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
178
+ ready: (instance: GanttStatic) => boolean;
179
+ }, string, vue.PublicProps, Readonly<{
180
+ [x: string]: /*elided*/ any;
181
+ tasks?: Task[];
182
+ links?: Link[];
183
+ resources?: any[] | null;
184
+ resourceAssignments?: any[] | null;
185
+ baselines?: any[] | null;
186
+ markers?: Marker[] | null;
187
+ calendars?: (WrapperCalendar | CalendarConfig)[] | null;
188
+ data?: VueGanttDataConfig | null;
189
+ config?: Partial<GanttConfigOptions>;
190
+ plugins?: GanttPlugins;
191
+ templates?: Partial<GanttTemplates>;
192
+ locale?: string | Record<string, any>;
193
+ theme?: string;
194
+ filter?: TaskFilter;
195
+ resourceFilter?: ResourceFilter;
196
+ modals?: GanttModals | null;
197
+ groupTasks?: GroupTasks;
198
+ inlineEditors?: Record<string, Component>;
199
+ customLightbox?: Component | null;
200
+ templateWrapper?: TemplateWrapper | null;
201
+ events?: VueKnownGanttEvents & Record<string, (...args: any[]) => any>;
202
+ }> & Readonly<{
203
+ onReady?: (instance: GanttStatic) => any;
204
+ }>, {
205
+ tasks: Task[];
206
+ links: Link[];
207
+ resources: any[];
208
+ resourceAssignments: any[];
209
+ baselines: any[];
210
+ markers: Marker[];
211
+ calendars: any[];
212
+ data: VueGanttDataConfig;
213
+ config: Partial<GanttConfigOptions>;
214
+ plugins: GanttPlugins;
215
+ templates: Partial<GanttTemplates>;
216
+ locale: string | Record<string, any>;
217
+ theme: string;
218
+ filter: (task: Task) => boolean;
219
+ resourceFilter: (resource: any) => boolean;
220
+ modals: GanttModals;
221
+ groupTasks: any;
222
+ inlineEditors: Record<string, Component>;
223
+ customLightbox: any;
224
+ templateWrapper: TemplateWrapper;
225
+ events: VueGanttEvents;
226
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
227
+
228
+ declare function useWorkTime(ganttRef: Ref<VueGanttRef | null>): vue.ComputedRef<{
229
+ isWorkTime: ({ date, task, unit }: {
230
+ date: Date;
231
+ task?: Task | null;
232
+ unit?: string;
233
+ }) => boolean;
234
+ calculateEndDate: ({ start, duration, unit, task }: {
235
+ start: Date;
236
+ duration: number;
237
+ unit?: string;
238
+ task?: Task;
239
+ }) => Date;
240
+ calculateDuration: ({ start, end, task }: {
241
+ start: Date;
242
+ end: Date;
243
+ task?: Task;
244
+ }) => number;
245
+ getClosestWorkTime: ({ date, task, unit, dir }: {
246
+ date: Date;
247
+ task?: Task | null;
248
+ unit: string;
249
+ dir?: string;
250
+ }) => Date;
251
+ }>;
252
+
253
+ declare function useResourceAssignments(ganttRef: Ref<VueGanttRef | null>): vue.ComputedRef<{
254
+ getResourceAssignments(resourceId: string | number, taskId?: string | number): any;
255
+ getTaskResources(taskId: string | number): any;
256
+ }>;
257
+
258
+ declare function useGanttDatastore<T>(ganttRef: Ref<VueGanttRef | null>, storeName: string): vue.ComputedRef<{
259
+ getItem(id: string | number): T | null;
260
+ getItems(): T[];
261
+ hasChild(id: string | number): boolean;
262
+ getChildren(id: string | number): (string | number)[];
263
+ }>;
264
+
265
+ interface ExportToExcelConfig {
266
+ [key: string]: any;
267
+ }
268
+ declare function useGanttActions(ganttRef: Ref<VueGanttRef | null | undefined>): {
269
+ undo(): void;
270
+ redo(): void;
271
+ render(): void;
272
+ exportToPDF(): void;
273
+ exportToPNG(): void;
274
+ exportToExcel(config?: ExportToExcelConfig): void;
275
+ exportToMSProject(): void;
276
+ };
277
+
278
+ type EventHandler = (...args: any[]) => any;
279
+ declare function useGanttEvent(ganttRef: Ref<VueGanttRef | null | undefined>, eventName: MaybeRef<string>, handler: MaybeRef<EventHandler | null | undefined>): {
280
+ detach: () => void;
281
+ };
282
+
283
+ declare function defineGanttConfig<T extends Partial<GanttConfigOptions>>(config: T): T;
284
+ declare function defineGanttTemplates<T extends Partial<GanttTemplates>>(templates: T): T;
285
+ declare function defineGanttEvents<T extends VueGanttEvents>(events: T): T;
286
+ declare function defineInlineEditors<T extends Record<string, Component>>(inlineEditors: T): T;
287
+
288
+ export { VueGantt, VueGantt as default, defineGanttConfig, defineGanttEvents, defineGanttTemplates, defineInlineEditors, useGanttActions, useGanttDatastore, useGanttEvent, useResourceAssignments, useWorkTime };
289
+ export type { ActiveInlineEditor, BatchChanges, CustomLightboxProps, DataCallbackChange, DataSet, GanttModals, GroupTasks, InlineEditorComponentProps, Marker, OnBeforeLinkDeleteConfirmArgs, OnBeforeTaskDeleteConfirmArgs, ResourceFilter, TaskFilter, TemplateWrapper, VueGanttDataConfig, VueGanttEmits, VueGanttEvents, VueGanttExpose, VueGanttProps, VueGanttRef, VueKnownGanttEvents, WrapperCalendar, WrapperInlineEditorMethods };