gantt-renderer 0.8.0 → 0.9.0
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/CHANGELOG.md +8 -0
- package/dist/index.d.mts +103 -130
- package/dist/index.mjs +15 -145
- package/dist/index.mjs.map +1 -1
- package/dist/locale-BQKHOEOx.d.mts +66 -0
- package/dist/locales/all.d.mts +7 -0
- package/dist/locales/all.mjs +95 -0
- package/dist/locales/all.mjs.map +1 -0
- package/dist/locales/ar.d.mts +7 -0
- package/dist/locales/ar.mjs +21 -0
- package/dist/locales/ar.mjs.map +1 -0
- package/dist/locales/be.d.mts +7 -0
- package/dist/locales/be.mjs +21 -0
- package/dist/locales/be.mjs.map +1 -0
- package/dist/locales/bg.d.mts +7 -0
- package/dist/locales/bg.mjs +21 -0
- package/dist/locales/bg.mjs.map +1 -0
- package/dist/locales/ca.d.mts +7 -0
- package/dist/locales/ca.mjs +21 -0
- package/dist/locales/ca.mjs.map +1 -0
- package/dist/locales/cs.d.mts +7 -0
- package/dist/locales/cs.mjs +21 -0
- package/dist/locales/cs.mjs.map +1 -0
- package/dist/locales/cy.d.mts +7 -0
- package/dist/locales/cy.mjs +21 -0
- package/dist/locales/cy.mjs.map +1 -0
- package/dist/locales/da.d.mts +7 -0
- package/dist/locales/da.mjs +21 -0
- package/dist/locales/da.mjs.map +1 -0
- package/dist/locales/de.d.mts +7 -0
- package/dist/locales/de.mjs +21 -0
- package/dist/locales/de.mjs.map +1 -0
- package/dist/locales/el.d.mts +7 -0
- package/dist/locales/el.mjs +21 -0
- package/dist/locales/el.mjs.map +1 -0
- package/dist/locales/en.d.mts +7 -0
- package/dist/locales/en.mjs +21 -0
- package/dist/locales/en.mjs.map +1 -0
- package/dist/locales/es.d.mts +7 -0
- package/dist/locales/es.mjs +21 -0
- package/dist/locales/es.mjs.map +1 -0
- package/dist/locales/et.d.mts +7 -0
- package/dist/locales/et.mjs +21 -0
- package/dist/locales/et.mjs.map +1 -0
- package/dist/locales/eu.d.mts +7 -0
- package/dist/locales/eu.mjs +21 -0
- package/dist/locales/eu.mjs.map +1 -0
- package/dist/locales/fi.d.mts +7 -0
- package/dist/locales/fi.mjs +21 -0
- package/dist/locales/fi.mjs.map +1 -0
- package/dist/locales/fr.d.mts +7 -0
- package/dist/locales/fr.mjs +21 -0
- package/dist/locales/fr.mjs.map +1 -0
- package/dist/locales/ga.d.mts +7 -0
- package/dist/locales/ga.mjs +21 -0
- package/dist/locales/ga.mjs.map +1 -0
- package/dist/locales/hi.d.mts +7 -0
- package/dist/locales/hi.mjs +21 -0
- package/dist/locales/hi.mjs.map +1 -0
- package/dist/locales/hr.d.mts +7 -0
- package/dist/locales/hr.mjs +21 -0
- package/dist/locales/hr.mjs.map +1 -0
- package/dist/locales/hu.d.mts +7 -0
- package/dist/locales/hu.mjs +21 -0
- package/dist/locales/hu.mjs.map +1 -0
- package/dist/locales/id.d.mts +7 -0
- package/dist/locales/id.mjs +21 -0
- package/dist/locales/id.mjs.map +1 -0
- package/dist/locales/it.d.mts +7 -0
- package/dist/locales/it.mjs +21 -0
- package/dist/locales/it.mjs.map +1 -0
- package/dist/locales/ja.d.mts +7 -0
- package/dist/locales/ja.mjs +21 -0
- package/dist/locales/ja.mjs.map +1 -0
- package/dist/locales/ko.d.mts +7 -0
- package/dist/locales/ko.mjs +21 -0
- package/dist/locales/ko.mjs.map +1 -0
- package/dist/locales/load.d.mts +8 -0
- package/dist/locales/load.mjs +57 -0
- package/dist/locales/load.mjs.map +1 -0
- package/dist/locales/lt.d.mts +7 -0
- package/dist/locales/lt.mjs +21 -0
- package/dist/locales/lt.mjs.map +1 -0
- package/dist/locales/lv.d.mts +7 -0
- package/dist/locales/lv.mjs +21 -0
- package/dist/locales/lv.mjs.map +1 -0
- package/dist/locales/mk.d.mts +7 -0
- package/dist/locales/mk.mjs +21 -0
- package/dist/locales/mk.mjs.map +1 -0
- package/dist/locales/mt.d.mts +7 -0
- package/dist/locales/mt.mjs +21 -0
- package/dist/locales/mt.mjs.map +1 -0
- package/dist/locales/nb.d.mts +7 -0
- package/dist/locales/nb.mjs +21 -0
- package/dist/locales/nb.mjs.map +1 -0
- package/dist/locales/nl.d.mts +7 -0
- package/dist/locales/nl.mjs +21 -0
- package/dist/locales/nl.mjs.map +1 -0
- package/dist/locales/pl.d.mts +7 -0
- package/dist/locales/pl.mjs +21 -0
- package/dist/locales/pl.mjs.map +1 -0
- package/dist/locales/pt-BR.d.mts +7 -0
- package/dist/locales/pt-BR.mjs +21 -0
- package/dist/locales/pt-BR.mjs.map +1 -0
- package/dist/locales/pt-PT.d.mts +7 -0
- package/dist/locales/pt-PT.mjs +21 -0
- package/dist/locales/pt-PT.mjs.map +1 -0
- package/dist/locales/registry.d.mts +9 -0
- package/dist/locales/registry.mjs +15 -0
- package/dist/locales/registry.mjs.map +1 -0
- package/dist/locales/ro.d.mts +7 -0
- package/dist/locales/ro.mjs +21 -0
- package/dist/locales/ro.mjs.map +1 -0
- package/dist/locales/ru.d.mts +7 -0
- package/dist/locales/ru.mjs +21 -0
- package/dist/locales/ru.mjs.map +1 -0
- package/dist/locales/sk.d.mts +7 -0
- package/dist/locales/sk.mjs +21 -0
- package/dist/locales/sk.mjs.map +1 -0
- package/dist/locales/sl.d.mts +7 -0
- package/dist/locales/sl.mjs +21 -0
- package/dist/locales/sl.mjs.map +1 -0
- package/dist/locales/sq.d.mts +7 -0
- package/dist/locales/sq.mjs +21 -0
- package/dist/locales/sq.mjs.map +1 -0
- package/dist/locales/sr.d.mts +7 -0
- package/dist/locales/sr.mjs +21 -0
- package/dist/locales/sr.mjs.map +1 -0
- package/dist/locales/sv.d.mts +7 -0
- package/dist/locales/sv.mjs +21 -0
- package/dist/locales/sv.mjs.map +1 -0
- package/dist/locales/th.d.mts +7 -0
- package/dist/locales/th.mjs +21 -0
- package/dist/locales/th.mjs.map +1 -0
- package/dist/locales/tr.d.mts +7 -0
- package/dist/locales/tr.mjs +21 -0
- package/dist/locales/tr.mjs.map +1 -0
- package/dist/locales/uk.d.mts +7 -0
- package/dist/locales/uk.mjs +21 -0
- package/dist/locales/uk.mjs.map +1 -0
- package/dist/locales/zh-Hans.d.mts +7 -0
- package/dist/locales/zh-Hans.mjs +21 -0
- package/dist/locales/zh-Hans.mjs.map +1 -0
- package/dist/locales/zh-Hant.d.mts +7 -0
- package/dist/locales/zh-Hant.mjs +21 -0
- package/dist/locales/zh-Hant.mjs.map +1 -0
- package/package.json +201 -15
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
# [0.9.0](https://github.com/doberkofler/gantt-renderer/compare/v0.8.0...v0.9.0) (2026-05-13)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **locales:** modular locale system with 43 languages via subpath exports ([4866724](https://github.com/doberkofler/gantt-renderer/commit/48667247005c245fd55b9421012e03ec13d82ba1))
|
|
7
|
+
* **vanilla:** add showTodayMarker option to toggle current-date line ([49ddc0f](https://github.com/doberkofler/gantt-renderer/commit/49ddc0fa1e00356403df286e99df71242cca0b01))
|
|
8
|
+
|
|
1
9
|
# [0.8.0](https://github.com/doberkofler/gantt-renderer/compare/v0.7.0...v0.8.0) (2026-05-12)
|
|
2
10
|
|
|
3
11
|
|
package/dist/index.d.mts
CHANGED
|
@@ -1,31 +1,7 @@
|
|
|
1
|
+
import { a as deriveWeekStartsOn, c as formatWeekNumber, i as deriveWeekNumbering, l as resolveChartLocale, n as EN_US_LABELS, o as deriveWeekendDays, r as LocaleLabelKey, s as formatLabel, t as ChartLocale } from "./locale-BQKHOEOx.mjs";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
|
|
3
4
|
//#region src/lib/validation/schemas.d.ts
|
|
4
|
-
declare const LinkTypeSchema: z.ZodEnum<{
|
|
5
|
-
FS: "FS";
|
|
6
|
-
SS: "SS";
|
|
7
|
-
FF: "FF";
|
|
8
|
-
SF: "SF";
|
|
9
|
-
}>;
|
|
10
|
-
declare const TaskKindSchema: z.ZodEnum<{
|
|
11
|
-
task: "task";
|
|
12
|
-
project: "project";
|
|
13
|
-
milestone: "milestone";
|
|
14
|
-
}>;
|
|
15
|
-
declare const SpecialDayKindSchema: z.ZodEnum<{
|
|
16
|
-
holiday: "holiday";
|
|
17
|
-
custom: "custom";
|
|
18
|
-
}>;
|
|
19
|
-
/** @internal */
|
|
20
|
-
declare const SpecialDaySchema: z.ZodObject<{
|
|
21
|
-
date: z.ZodString;
|
|
22
|
-
kind: z.ZodEnum<{
|
|
23
|
-
holiday: "holiday";
|
|
24
|
-
custom: "custom";
|
|
25
|
-
}>;
|
|
26
|
-
label: z.ZodOptional<z.ZodString>;
|
|
27
|
-
className: z.ZodOptional<z.ZodString>;
|
|
28
|
-
}, z.core.$strip>;
|
|
29
5
|
declare const TaskSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
30
6
|
kind: z.ZodLiteral<"task">;
|
|
31
7
|
endDate: z.ZodString;
|
|
@@ -77,26 +53,6 @@ declare const LinkSchema: z.ZodObject<{
|
|
|
77
53
|
type ZodTaskInferred = z.infer<typeof TaskSchema>;
|
|
78
54
|
/** @internal */
|
|
79
55
|
type ZodLinkInferred = z.infer<typeof LinkSchema>;
|
|
80
|
-
/** @internal */
|
|
81
|
-
type ZodTaskInput = z.input<typeof TaskSchema>;
|
|
82
|
-
/** @internal */
|
|
83
|
-
type ZodLinkInput = z.input<typeof LinkSchema>;
|
|
84
|
-
/** Raw input version of a task — uses zod's input shape where fields with defaults are optional. */
|
|
85
|
-
type TaskRaw<TData = never> = WithoutData<ZodTaskInput> & WithData<TData>;
|
|
86
|
-
/** Raw input version of a link — uses zod's input shape where fields with defaults are optional. */
|
|
87
|
-
type LinkRaw<TData = never> = WithoutData<ZodLinkInput> & WithData<TData>;
|
|
88
|
-
/**
|
|
89
|
-
* Conditional data property helper.
|
|
90
|
-
* When `T` is `never`, adds nothing. Otherwise adds `{data?: T | undefined}`.
|
|
91
|
-
*/
|
|
92
|
-
type WithData<T> = [T] extends [never] ? Record<never, never> : {
|
|
93
|
-
data?: T | undefined;
|
|
94
|
-
};
|
|
95
|
-
/**
|
|
96
|
-
* Distributes `Omit` over union members so variant-specific properties
|
|
97
|
-
* (e.g. `endDate`, `percentComplete`, `open`) are preserved in discriminated unions.
|
|
98
|
-
*/
|
|
99
|
-
type WithoutData<T> = T extends unknown ? Omit<T, 'data'> : never;
|
|
100
56
|
/**
|
|
101
57
|
* A task in the Gantt chart — discriminated by `kind` into leaf tasks,
|
|
102
58
|
* summary projects, and milestones.
|
|
@@ -118,13 +74,55 @@ type WithoutData<T> = T extends unknown ? Omit<T, 'data'> : never;
|
|
|
118
74
|
* };
|
|
119
75
|
* ```
|
|
120
76
|
*/
|
|
121
|
-
type Task<TData = never> =
|
|
77
|
+
type Task<TData = never> = {
|
|
78
|
+
id: number;
|
|
79
|
+
text: string;
|
|
80
|
+
startDate: string;
|
|
81
|
+
parent?: number | undefined;
|
|
82
|
+
color?: string | undefined;
|
|
83
|
+
readonly?: boolean | undefined;
|
|
84
|
+
data?: unknown;
|
|
85
|
+
kind: 'task';
|
|
86
|
+
endDate: string;
|
|
87
|
+
percentComplete: number;
|
|
88
|
+
} | {
|
|
89
|
+
id: number;
|
|
90
|
+
text: string;
|
|
91
|
+
startDate: string;
|
|
92
|
+
parent?: number | undefined;
|
|
93
|
+
color?: string | undefined;
|
|
94
|
+
readonly?: boolean | undefined;
|
|
95
|
+
data?: unknown;
|
|
96
|
+
kind: 'project';
|
|
97
|
+
endDate: string;
|
|
98
|
+
percentComplete: number;
|
|
99
|
+
open: boolean;
|
|
100
|
+
} | {
|
|
101
|
+
id: number;
|
|
102
|
+
text: string;
|
|
103
|
+
startDate: string;
|
|
104
|
+
parent?: number | undefined;
|
|
105
|
+
color?: string | undefined;
|
|
106
|
+
readonly?: boolean | undefined;
|
|
107
|
+
data?: unknown;
|
|
108
|
+
kind: 'milestone';
|
|
109
|
+
} extends infer _U ? _U extends unknown ? Omit<_U, 'data'> & ([TData] extends [never] ? Record<never, never> : {
|
|
110
|
+
data?: TData | undefined;
|
|
111
|
+
}) : never : never;
|
|
122
112
|
/**
|
|
123
113
|
* A dependency link between two tasks.
|
|
124
114
|
*
|
|
125
115
|
* @param TData - The type of the optional `data` property. Defaults to `never`.
|
|
126
116
|
*/
|
|
127
|
-
type Link<TData = never> =
|
|
117
|
+
type Link<TData = never> = {
|
|
118
|
+
id: number;
|
|
119
|
+
source: number;
|
|
120
|
+
target: number;
|
|
121
|
+
type: LinkType;
|
|
122
|
+
readonly?: boolean | undefined;
|
|
123
|
+
} & ([TData] extends [never] ? Record<never, never> : {
|
|
124
|
+
data?: TData | undefined;
|
|
125
|
+
});
|
|
128
126
|
/**
|
|
129
127
|
* The complete input data for the chart.
|
|
130
128
|
*
|
|
@@ -144,15 +142,62 @@ type GanttInput<TTaskData = never, TLinkData = never> = {
|
|
|
144
142
|
* @param TLinkData - The type of the `data` property on links. Defaults to `never`.
|
|
145
143
|
*/
|
|
146
144
|
type GanttInputRaw<TTaskData = never, TLinkData = never> = {
|
|
147
|
-
tasks: readonly
|
|
148
|
-
|
|
145
|
+
tasks: readonly ({
|
|
146
|
+
id: number;
|
|
147
|
+
text: string;
|
|
148
|
+
startDate: string;
|
|
149
|
+
parent?: number | undefined;
|
|
150
|
+
color?: string | undefined;
|
|
151
|
+
readonly?: boolean | undefined;
|
|
152
|
+
data?: unknown;
|
|
153
|
+
kind: 'task';
|
|
154
|
+
endDate: string;
|
|
155
|
+
percentComplete?: number | undefined;
|
|
156
|
+
} | {
|
|
157
|
+
id: number;
|
|
158
|
+
text: string;
|
|
159
|
+
startDate: string;
|
|
160
|
+
parent?: number | undefined;
|
|
161
|
+
color?: string | undefined;
|
|
162
|
+
readonly?: boolean | undefined;
|
|
163
|
+
data?: unknown;
|
|
164
|
+
kind: 'project';
|
|
165
|
+
endDate: string;
|
|
166
|
+
percentComplete?: number | undefined;
|
|
167
|
+
open?: boolean | undefined;
|
|
168
|
+
} | {
|
|
169
|
+
id: number;
|
|
170
|
+
text: string;
|
|
171
|
+
startDate: string;
|
|
172
|
+
parent?: number | undefined;
|
|
173
|
+
color?: string | undefined;
|
|
174
|
+
readonly?: boolean | undefined;
|
|
175
|
+
data?: unknown;
|
|
176
|
+
kind: 'milestone';
|
|
177
|
+
} extends infer _RU ? _RU extends unknown ? Omit<_RU, 'data'> & ([TTaskData] extends [never] ? Record<never, never> : {
|
|
178
|
+
data?: TTaskData | undefined;
|
|
179
|
+
}) : never : never)[];
|
|
180
|
+
links?: readonly ({
|
|
181
|
+
id: number;
|
|
182
|
+
source: number;
|
|
183
|
+
target: number;
|
|
184
|
+
type?: LinkType | undefined;
|
|
185
|
+
readonly?: boolean | undefined;
|
|
186
|
+
} & ([TLinkData] extends [never] ? Record<never, never> : {
|
|
187
|
+
data?: TLinkData | undefined;
|
|
188
|
+
}))[];
|
|
149
189
|
};
|
|
150
190
|
/** Allowed dependency link type values: `'FS'`, `'SS'`, `'FF'`, or `'SF'`. */
|
|
151
|
-
type LinkType =
|
|
191
|
+
type LinkType = 'FS' | 'SS' | 'FF' | 'SF';
|
|
152
192
|
/** Allowed task kind values: `'task'`, `'project'`, or `'milestone'`. */
|
|
153
|
-
type TaskKind =
|
|
154
|
-
type SpecialDayKind =
|
|
155
|
-
type SpecialDay =
|
|
193
|
+
type TaskKind = 'task' | 'project' | 'milestone';
|
|
194
|
+
type SpecialDayKind = 'holiday' | 'custom';
|
|
195
|
+
type SpecialDay = {
|
|
196
|
+
/** ISO date: YYYY-MM-DD */date: string;
|
|
197
|
+
kind: SpecialDayKind;
|
|
198
|
+
label?: string | undefined;
|
|
199
|
+
className?: string | undefined;
|
|
200
|
+
};
|
|
156
201
|
//#endregion
|
|
157
202
|
//#region src/lib/timeline/scale.d.ts
|
|
158
203
|
type TimeScale = 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
@@ -171,7 +216,7 @@ declare const SCALE_CONFIGS: Record<TimeScale, ScaleConfig>;
|
|
|
171
216
|
* Produced by {@link buildTaskTree}; consumed by virtualized row rendering
|
|
172
217
|
* and the timeline layout engine.
|
|
173
218
|
*/
|
|
174
|
-
type TaskNode =
|
|
219
|
+
type TaskNode = Task<Record<string, unknown>> & {
|
|
175
220
|
/** Array of child task nodes in the tree hierarchy. */children: TaskNode[]; /** 0 = root */
|
|
176
221
|
depth: number;
|
|
177
222
|
};
|
|
@@ -264,79 +309,6 @@ declare function computeLayout(rows: TaskNode[], mapper: PixelMapper): Map<numbe
|
|
|
264
309
|
*/
|
|
265
310
|
declare function deriveViewport(tasks: TaskNode[], paddingHours?: number): [Date, Date];
|
|
266
311
|
//#endregion
|
|
267
|
-
//#region src/lib/locale.d.ts
|
|
268
|
-
type LocaleLabelKey = 'ariaTask' | 'ariaMilestone' | 'addSubtaskTitle' | 'columnTaskName' | 'columnStartDate' | 'columnEndDate' | 'columnDuration' | 'columnQuarter';
|
|
269
|
-
type ChartLocale = {
|
|
270
|
-
code: string;
|
|
271
|
-
labels?: Partial<Record<LocaleLabelKey, string>>;
|
|
272
|
-
weekStartsOn?: 0 | 1 | 6;
|
|
273
|
-
weekNumbering?: 'iso' | 'us' | 'simple';
|
|
274
|
-
weekendDays?: number[];
|
|
275
|
-
};
|
|
276
|
-
declare const EN_US_LABELS: Record<LocaleLabelKey, string>;
|
|
277
|
-
declare const CHART_LOCALE_EN_US: ChartLocale;
|
|
278
|
-
declare const CHART_LOCALE_EN_GB: ChartLocale;
|
|
279
|
-
declare const CHART_LOCALE_DE_DE: ChartLocale;
|
|
280
|
-
declare const CHART_LOCALE_FR_FR: ChartLocale;
|
|
281
|
-
declare const CHART_LOCALE_ES_ES: ChartLocale;
|
|
282
|
-
declare const CHART_LOCALE_IT_IT: ChartLocale;
|
|
283
|
-
declare const CHART_LOCALE_PT_PT: ChartLocale;
|
|
284
|
-
declare const CHART_LOCALE_ZH_CN: ChartLocale;
|
|
285
|
-
declare const CHART_LOCALE_JA_JP: ChartLocale;
|
|
286
|
-
/**
|
|
287
|
-
* Derives the first day of week (0=Sun, 1=Mon, 6=Sat) from a BCP 47 code.
|
|
288
|
-
* Uses `Intl.Locale.getWeekInfo()` where available (Chromium, Safari 15.4+),
|
|
289
|
-
* with a CLDR-based fallback table for Firefox and older runtimes.
|
|
290
|
-
*
|
|
291
|
-
* @param code - A BCP 47 language tag (e.g. `'en-US'`, `'de-DE'`).
|
|
292
|
-
* @returns The first day of the week: `0` (Sunday), `1` (Monday), or `6` (Saturday).
|
|
293
|
-
*/
|
|
294
|
-
declare function deriveWeekStartsOn(code: string): 0 | 1 | 6;
|
|
295
|
-
/**
|
|
296
|
-
* Derives the week numbering scheme from a BCP 47 code.
|
|
297
|
-
* Europe and ISO-aligned regions default to `'iso'`; Americas and others to `'us'`.
|
|
298
|
-
*
|
|
299
|
-
* @param code - A BCP 47 language tag (e.g. `'en-US'`, `'de-DE'`).
|
|
300
|
-
* @returns The week numbering scheme: `'iso'`, `'us'`, or `'simple'`.
|
|
301
|
-
*/
|
|
302
|
-
declare function deriveWeekNumbering(code: string): 'iso' | 'us' | 'simple';
|
|
303
|
-
/**
|
|
304
|
-
* Derives weekend days (0=Sun … 6=Sat) from a BCP 47 code.
|
|
305
|
-
* Uses `Intl.Locale.getWeekInfo()` where available, with a CLDR-based fallback table.
|
|
306
|
-
*
|
|
307
|
-
* @param code - A BCP 47 language tag (e.g. `'en-US'`, `'de-DE'`).
|
|
308
|
-
* @returns An array of weekend day indices (sorted ascending).
|
|
309
|
-
*/
|
|
310
|
-
declare function deriveWeekendDays(code: string): number[];
|
|
311
|
-
/**
|
|
312
|
-
* Resolves a {@link ChartLocale} from either a full `ChartLocale` object or a BCP 47 string.
|
|
313
|
-
* When given a string, derives `weekStartsOn`, `weekNumbering`, and `weekendDays` from CLDR conventions.
|
|
314
|
-
*
|
|
315
|
-
* @param raw - A {@link ChartLocale} object, a BCP 47 language tag string, or `undefined`.
|
|
316
|
-
* @returns A fully resolved {@link ChartLocale} with defaults applied.
|
|
317
|
-
*/
|
|
318
|
-
declare function resolveChartLocale(raw: ChartLocale | string | undefined): ChartLocale;
|
|
319
|
-
/**
|
|
320
|
-
* Formats a week number according to the specified scheme.
|
|
321
|
-
*
|
|
322
|
-
* - `'iso'`: ISO 8601 (week 1 contains the first Thursday; Monday start).
|
|
323
|
-
* - `'us'`: Week 1 contains January 1; Sunday start.
|
|
324
|
-
* - `'simple'`: `Math.ceil(dayOfYear / 7)`.
|
|
325
|
-
*
|
|
326
|
-
* @param date - The date to compute the week number for.
|
|
327
|
-
* @param scheme - The week numbering scheme: `'iso'`, `'us'`, or `'simple'`.
|
|
328
|
-
* @returns The week number as a positive integer.
|
|
329
|
-
*/
|
|
330
|
-
declare function formatWeekNumber(date: Date, scheme: 'iso' | 'us' | 'simple'): number;
|
|
331
|
-
/**
|
|
332
|
-
* Formats a label template by replacing `{0}` with the given argument.
|
|
333
|
-
*
|
|
334
|
-
* @param template - The template string containing `{0}` as placeholder.
|
|
335
|
-
* @param arg - The value to substitute for `{0}`.
|
|
336
|
-
* @returns The formatted string with the placeholder replaced.
|
|
337
|
-
*/
|
|
338
|
-
declare function formatLabel(template: string, arg: string): string;
|
|
339
|
-
//#endregion
|
|
340
312
|
//#region src/lib/domain/dependencies.d.ts
|
|
341
313
|
/**
|
|
342
314
|
* Detects circular dependencies in the link graph using DFS tri-colour marking.
|
|
@@ -429,7 +401,7 @@ declare function routeLinks(links: ZodLinkInferred[], layouts: Map<number, BarLa
|
|
|
429
401
|
* Use when referencing task fields in grid column schemas that apply
|
|
430
402
|
* across a heterogeneous set of task kinds.
|
|
431
403
|
*/
|
|
432
|
-
type TaskDataField = keyof
|
|
404
|
+
type TaskDataField = keyof Task | 'endDate' | 'percentComplete' | 'open';
|
|
433
405
|
type GridColumn = {
|
|
434
406
|
id: string;
|
|
435
407
|
header: string;
|
|
@@ -437,7 +409,7 @@ type GridColumn = {
|
|
|
437
409
|
align?: 'left' | 'center' | 'right';
|
|
438
410
|
visible?: boolean;
|
|
439
411
|
field?: TaskDataField;
|
|
440
|
-
format?: (value: unknown, task:
|
|
412
|
+
format?: (value: unknown, task: Task<Record<string, unknown>>, row: TaskNode, locale: ChartLocale) => string;
|
|
441
413
|
};
|
|
442
414
|
declare const DEFAULT_GRID_COLUMNS: GridColumn[];
|
|
443
415
|
/**
|
|
@@ -563,6 +535,7 @@ type GanttOptions = {
|
|
|
563
535
|
gridColumns?: GridColumn[];
|
|
564
536
|
theme?: ThemeMode;
|
|
565
537
|
showAddTaskButton?: boolean;
|
|
538
|
+
showTodayMarker?: boolean;
|
|
566
539
|
};
|
|
567
540
|
type GanttInstance<TTaskData = never, TLinkData = never> = {
|
|
568
541
|
update: (input: GanttInputRaw<TTaskData, TLinkData>) => void;
|
|
@@ -666,5 +639,5 @@ declare class GanttError extends Error {
|
|
|
666
639
|
constructor(code: GanttErrorCode, message: string);
|
|
667
640
|
}
|
|
668
641
|
//#endregion
|
|
669
|
-
export { BAR_HEIGHT, BAR_Y_OFFSET, type BarLayout,
|
|
642
|
+
export { BAR_HEIGHT, BAR_Y_OFFSET, type BarLayout, type ChartLocale, DEFAULT_GRID_COLUMNS, DENSITY, EN_US_LABELS, GRID_COLUMN_FR_MIN_WIDTH, type GanttCallbacks, GanttChart, GanttError, type GanttErrorCode, type GanttInput, type GanttInputRaw, type GanttInstance, type GanttOptions, type GridColumn, type Link, type LinkType, type LocaleLabelKey, MILESTONE_HALF, MILESTONE_SIZE, type OnLinkClick, type OnLinkCreate, type OnLinkDblClick, type OnProgressChange, type OnTaskAdd, type OnTaskClick, type OnTaskDoubleClick, type OnTaskMove, type OnTaskResize, type OnTooltipText, type PixelMapper, type Point, ROW_HEIGHT, type RoutedLink, SCALE_CONFIGS, type ScaleConfig, type SpecialDay, type SpecialDayKind, type Task, type TaskDataField, type TaskKind, type TaskNode, type ThemeMode, type TimeScale, addDays, addHours, buildTaskTree, computeLayout, createPixelMapper, deriveViewport, deriveWeekNumbering, deriveWeekStartsOn, deriveWeekendDays, detectCycles, diffDays, diffHours, flattenTree, formatLabel, formatWeekNumber, gridColumnDefaults, gridNaturalWidth, gridTemplateColumns, isParent, parseDate, resolveChartLocale, routeLinks, validateLinkRefs, visibleColumns };
|
|
670
643
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.mjs
CHANGED
|
@@ -19,12 +19,10 @@ var GanttError = class extends Error {
|
|
|
19
19
|
//#region src/lib/domain/tree.ts
|
|
20
20
|
function detectParentCycles(tasks) {
|
|
21
21
|
const adj = /* @__PURE__ */ new Map();
|
|
22
|
-
for (const task of tasks)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (parents !== void 0) parents.push(task.id);
|
|
27
|
-
}
|
|
22
|
+
for (const task of tasks) adj.set(task.id, []);
|
|
23
|
+
for (const task of tasks) if (task.parent !== void 0) {
|
|
24
|
+
const parents = adj.get(task.parent);
|
|
25
|
+
if (parents !== void 0) parents.push(task.id);
|
|
28
26
|
}
|
|
29
27
|
const WHITE = 0, GRAY = 1, BLACK = 2;
|
|
30
28
|
const color = /* @__PURE__ */ new Map();
|
|
@@ -311,141 +309,6 @@ const EN_US_LABELS = {
|
|
|
311
309
|
columnDuration: "Duration",
|
|
312
310
|
columnQuarter: "Q"
|
|
313
311
|
};
|
|
314
|
-
const CHART_LOCALE_EN_US = {
|
|
315
|
-
code: "en-US",
|
|
316
|
-
labels: EN_US_LABELS,
|
|
317
|
-
weekStartsOn: 0,
|
|
318
|
-
weekNumbering: "iso",
|
|
319
|
-
weekendDays: [0, 6]
|
|
320
|
-
};
|
|
321
|
-
const CHART_LOCALE_EN_GB = {
|
|
322
|
-
code: "en-GB",
|
|
323
|
-
labels: {
|
|
324
|
-
ariaTask: "Task {0}",
|
|
325
|
-
ariaMilestone: "Milestone {0}",
|
|
326
|
-
addSubtaskTitle: "Add subtask",
|
|
327
|
-
columnTaskName: "Task name",
|
|
328
|
-
columnStartDate: "Start",
|
|
329
|
-
columnEndDate: "End",
|
|
330
|
-
columnDuration: "Duration",
|
|
331
|
-
columnQuarter: "Q"
|
|
332
|
-
},
|
|
333
|
-
weekStartsOn: 1,
|
|
334
|
-
weekNumbering: "iso",
|
|
335
|
-
weekendDays: [0, 6]
|
|
336
|
-
};
|
|
337
|
-
const CHART_LOCALE_DE_DE = {
|
|
338
|
-
code: "de-DE",
|
|
339
|
-
labels: {
|
|
340
|
-
ariaTask: "Aufgabe {0}",
|
|
341
|
-
ariaMilestone: "Meilenstein {0}",
|
|
342
|
-
addSubtaskTitle: "Teilaufgabe hinzufügen",
|
|
343
|
-
columnTaskName: "Aufgabenname",
|
|
344
|
-
columnStartDate: "Start",
|
|
345
|
-
columnEndDate: "Ende",
|
|
346
|
-
columnDuration: "Dauer",
|
|
347
|
-
columnQuarter: "Q"
|
|
348
|
-
},
|
|
349
|
-
weekStartsOn: 1,
|
|
350
|
-
weekNumbering: "iso",
|
|
351
|
-
weekendDays: [0, 6]
|
|
352
|
-
};
|
|
353
|
-
const CHART_LOCALE_FR_FR = {
|
|
354
|
-
code: "fr-FR",
|
|
355
|
-
labels: {
|
|
356
|
-
ariaTask: "Tâche {0}",
|
|
357
|
-
ariaMilestone: "Jalon {0}",
|
|
358
|
-
addSubtaskTitle: "Ajouter une sous-tâche",
|
|
359
|
-
columnTaskName: "Nom de la tâche",
|
|
360
|
-
columnStartDate: "Début",
|
|
361
|
-
columnEndDate: "Fin",
|
|
362
|
-
columnDuration: "Durée",
|
|
363
|
-
columnQuarter: "T"
|
|
364
|
-
},
|
|
365
|
-
weekStartsOn: 1,
|
|
366
|
-
weekNumbering: "iso",
|
|
367
|
-
weekendDays: [0, 6]
|
|
368
|
-
};
|
|
369
|
-
const CHART_LOCALE_ES_ES = {
|
|
370
|
-
code: "es-ES",
|
|
371
|
-
labels: {
|
|
372
|
-
ariaTask: "Tarea {0}",
|
|
373
|
-
ariaMilestone: "Hito {0}",
|
|
374
|
-
addSubtaskTitle: "Añadir subtarea",
|
|
375
|
-
columnTaskName: "Nombre de tarea",
|
|
376
|
-
columnStartDate: "Inicio",
|
|
377
|
-
columnEndDate: "Fin",
|
|
378
|
-
columnDuration: "Duración",
|
|
379
|
-
columnQuarter: "T"
|
|
380
|
-
},
|
|
381
|
-
weekStartsOn: 1,
|
|
382
|
-
weekNumbering: "iso",
|
|
383
|
-
weekendDays: [0, 6]
|
|
384
|
-
};
|
|
385
|
-
const CHART_LOCALE_IT_IT = {
|
|
386
|
-
code: "it-IT",
|
|
387
|
-
labels: {
|
|
388
|
-
ariaTask: "Attività {0}",
|
|
389
|
-
ariaMilestone: "Pietra miliare {0}",
|
|
390
|
-
addSubtaskTitle: "Aggiungi sottoattività",
|
|
391
|
-
columnTaskName: "Nome attività",
|
|
392
|
-
columnStartDate: "Inizio",
|
|
393
|
-
columnEndDate: "Fine",
|
|
394
|
-
columnDuration: "Durata",
|
|
395
|
-
columnQuarter: "T"
|
|
396
|
-
},
|
|
397
|
-
weekStartsOn: 1,
|
|
398
|
-
weekNumbering: "iso",
|
|
399
|
-
weekendDays: [0, 6]
|
|
400
|
-
};
|
|
401
|
-
const CHART_LOCALE_PT_PT = {
|
|
402
|
-
code: "pt-PT",
|
|
403
|
-
labels: {
|
|
404
|
-
ariaTask: "Tarefa {0}",
|
|
405
|
-
ariaMilestone: "Marco {0}",
|
|
406
|
-
addSubtaskTitle: "Adicionar subtarefa",
|
|
407
|
-
columnTaskName: "Nome da tarefa",
|
|
408
|
-
columnStartDate: "Início",
|
|
409
|
-
columnEndDate: "Fim",
|
|
410
|
-
columnDuration: "Duração",
|
|
411
|
-
columnQuarter: "T"
|
|
412
|
-
},
|
|
413
|
-
weekStartsOn: 1,
|
|
414
|
-
weekNumbering: "iso",
|
|
415
|
-
weekendDays: [0, 6]
|
|
416
|
-
};
|
|
417
|
-
const CHART_LOCALE_ZH_CN = {
|
|
418
|
-
code: "zh-CN",
|
|
419
|
-
labels: {
|
|
420
|
-
ariaTask: "任务 {0}",
|
|
421
|
-
ariaMilestone: "里程碑 {0}",
|
|
422
|
-
addSubtaskTitle: "添加子任务",
|
|
423
|
-
columnTaskName: "任务名称",
|
|
424
|
-
columnStartDate: "开始",
|
|
425
|
-
columnEndDate: "结束",
|
|
426
|
-
columnDuration: "工期",
|
|
427
|
-
columnQuarter: "季"
|
|
428
|
-
},
|
|
429
|
-
weekStartsOn: 1,
|
|
430
|
-
weekNumbering: "us",
|
|
431
|
-
weekendDays: [0, 6]
|
|
432
|
-
};
|
|
433
|
-
const CHART_LOCALE_JA_JP = {
|
|
434
|
-
code: "ja-JP",
|
|
435
|
-
labels: {
|
|
436
|
-
ariaTask: "タスク {0}",
|
|
437
|
-
ariaMilestone: "マイルストーン {0}",
|
|
438
|
-
addSubtaskTitle: "サブタスクを追加",
|
|
439
|
-
columnTaskName: "タスク名",
|
|
440
|
-
columnStartDate: "開始",
|
|
441
|
-
columnEndDate: "終了",
|
|
442
|
-
columnDuration: "期間",
|
|
443
|
-
columnQuarter: "Q"
|
|
444
|
-
},
|
|
445
|
-
weekStartsOn: 0,
|
|
446
|
-
weekNumbering: "us",
|
|
447
|
-
weekendDays: [0, 6]
|
|
448
|
-
};
|
|
449
312
|
function tryGetWeekInfo(code) {
|
|
450
313
|
try {
|
|
451
314
|
if (typeof Intl !== "undefined" && typeof Intl.Locale === "function") {
|
|
@@ -533,7 +396,13 @@ function deriveWeekendDays(code) {
|
|
|
533
396
|
* @returns A fully resolved {@link ChartLocale} with defaults applied.
|
|
534
397
|
*/
|
|
535
398
|
function resolveChartLocale(raw) {
|
|
536
|
-
if (raw === void 0) return
|
|
399
|
+
if (raw === void 0) return {
|
|
400
|
+
code: "en",
|
|
401
|
+
labels: EN_US_LABELS,
|
|
402
|
+
weekStartsOn: 0,
|
|
403
|
+
weekNumbering: "iso",
|
|
404
|
+
weekendDays: [0, 6]
|
|
405
|
+
};
|
|
537
406
|
if (typeof raw !== "string") {
|
|
538
407
|
const locale = {
|
|
539
408
|
code: raw.code,
|
|
@@ -2904,7 +2773,7 @@ function renderRightPane(refs, state, cbs) {
|
|
|
2904
2773
|
}
|
|
2905
2774
|
const todayX = mapper.toX(/* @__PURE__ */ new Date());
|
|
2906
2775
|
const todayLineWidth = 2;
|
|
2907
|
-
if (todayX >= 0 && todayX <= totalWidth - todayLineWidth) {
|
|
2776
|
+
if (state.showTodayMarker && todayX >= 0 && todayX <= totalWidth - todayLineWidth) {
|
|
2908
2777
|
const todayLine = el("div");
|
|
2909
2778
|
todayLine.className = "gantt-today-marker";
|
|
2910
2779
|
css(todayLine, {
|
|
@@ -3375,7 +3244,7 @@ var GanttChart = class {
|
|
|
3375
3244
|
const hasLayoutChange = opts.leftPaneWidth !== void 0 || opts.responsiveSplitPane !== void 0 || opts.mobileBreakpoint !== void 0 || opts.mobileLeftPaneMinWidth !== void 0 || opts.mobileLeftPaneMaxRatio !== void 0 || opts.timelineMinWidth !== void 0;
|
|
3376
3245
|
if (hasLayoutChange) this.#applyResponsivePaneStyles();
|
|
3377
3246
|
const hasLeftPaneChange = columnsChanged || opts.locale !== void 0 || opts.showAddTaskButton !== void 0;
|
|
3378
|
-
const hasRightPaneChange = opts.scale !== void 0 || opts.showWeekends !== void 0 || opts.weekendDays !== void 0 || opts.specialDays !== void 0 || opts.highlightLinkedDependenciesOnSelect !== void 0 || opts.linkCreationEnabled !== void 0 || opts.progressDragEnabled !== void 0 || opts.viewportStart !== void 0 || opts.viewportEnd !== void 0 || opts.locale !== void 0 || opts.timelineMinWidth !== void 0;
|
|
3247
|
+
const hasRightPaneChange = opts.scale !== void 0 || opts.showTodayMarker !== void 0 || opts.showWeekends !== void 0 || opts.weekendDays !== void 0 || opts.specialDays !== void 0 || opts.highlightLinkedDependenciesOnSelect !== void 0 || opts.linkCreationEnabled !== void 0 || opts.progressDragEnabled !== void 0 || opts.viewportStart !== void 0 || opts.viewportEnd !== void 0 || opts.locale !== void 0 || opts.timelineMinWidth !== void 0;
|
|
3379
3248
|
if (!(hasLeftPaneChange || hasRightPaneChange || hasLayoutChange)) return;
|
|
3380
3249
|
if (this.#rafPending && this.#rafId !== null) {
|
|
3381
3250
|
cancelAnimationFrame(this.#rafId);
|
|
@@ -3553,6 +3422,7 @@ var GanttChart = class {
|
|
|
3553
3422
|
paddingTop,
|
|
3554
3423
|
paddingBottom,
|
|
3555
3424
|
showWeekends: this.#opts.showWeekends ?? true,
|
|
3425
|
+
showTodayMarker: this.#opts.showTodayMarker ?? true,
|
|
3556
3426
|
weekendDays: this.#weekendDays,
|
|
3557
3427
|
specialDaysByDate: this.#specialDaysByDate,
|
|
3558
3428
|
locale: this.#locale
|
|
@@ -3730,6 +3600,6 @@ var GanttChart = class {
|
|
|
3730
3600
|
}
|
|
3731
3601
|
};
|
|
3732
3602
|
//#endregion
|
|
3733
|
-
export { BAR_HEIGHT, BAR_Y_OFFSET,
|
|
3603
|
+
export { BAR_HEIGHT, BAR_Y_OFFSET, DEFAULT_GRID_COLUMNS, DENSITY, EN_US_LABELS, GRID_COLUMN_FR_MIN_WIDTH, GanttChart, GanttError, MILESTONE_HALF, MILESTONE_SIZE, ROW_HEIGHT, SCALE_CONFIGS, addDays, addHours, buildTaskTree, computeLayout, createPixelMapper, deriveViewport, deriveWeekNumbering, deriveWeekStartsOn, deriveWeekendDays, detectCycles, diffDays, diffHours, flattenTree, formatLabel, formatWeekNumber, gridColumnDefaults, gridNaturalWidth, gridTemplateColumns, isParent, parseDate, resolveChartLocale, routeLinks, validateLinkRefs, visibleColumns };
|
|
3734
3604
|
|
|
3735
3605
|
//# sourceMappingURL=index.mjs.map
|