@object-ui/plugin-gantt 17.5.0 → 17.7.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.
@@ -1,5 +1,6 @@
1
- import { WorkingCalendar } from './scheduling';
2
- import { NormShiftSegments } from './shifts';
1
+ import { WorkingCalendar } from './scheduling.js';
2
+ import { NormShiftSegments } from './shifts.js';
3
+ import { makeTzShift } from './tzShift.js';
3
4
  /**
4
5
  * ObjectUI
5
6
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -52,13 +53,21 @@ export interface GanttTask {
52
53
  id: string | number;
53
54
  title: string;
54
55
  start: Date;
56
+ /**
57
+ * The EXCLUSIVE end of the bar's half-open span `[start, end)`: the bar is
58
+ * drawn and scheduled up to this instant, and the task list, the tooltip, a
59
+ * drag's preview and the inline editor name the last day it runs through
60
+ * (objectui#11141). `ObjectGantt` hands a stored date-only end over as the
61
+ * next day's local midnight (`toDisplayEndDate`, `@object-ui/core`), so a
62
+ * task ending `2024-01-15` is drawn, and named, through the 15th.
63
+ */
55
64
  end: Date;
56
65
  progress: number;
57
66
  color?: string;
58
67
  /**
59
- * Per-task alert stroke (逐任务预警描边). When set, the bar/milestone/summary
68
+ * Per-task alert stroke. When set, the bar/milestone/summary
60
69
  * is outlined in this color (border + 2px halo) without touching its fill —
61
- * e.g. red for 超期, amber for 临期, unset for normal. Maps from the view's
70
+ * e.g. red for overdue, amber for due-soon, unset for normal. Maps from the view's
62
71
  * `borderColorField` in ObjectGantt. The critical-path overlay, when active,
63
72
  * takes precedence on the rows it marks.
64
73
  */
@@ -70,16 +79,17 @@ export interface GanttTask {
70
79
  /**
71
80
  * Node kind. Defaults to a leaf `task` (or `summary` automatically when it has
72
81
  * children). Set `'group'` to render a pure tree header — expandable/collapsible
73
- * like a summary but with NO timeline bar (用于 项目/产品 这类纯分组层级,左侧成树、右侧无条).
82
+ * like a summary but with NO timeline bar (for project / product style pure
83
+ * grouping levels: a tree on the left, no bar on the right).
74
84
  * Its children still render their own bars normally.
75
85
  */
76
86
  type?: GanttTaskType;
77
87
  /**
78
- * Per-node lock (仅查看/跳转). When true this row is view-only: its bar can't be
88
+ * Per-node lock (view-only / click-through). When true this row is view-only: its bar can't be
79
89
  * dragged/resized, progress can't be dragged, no dependency can be drawn from
80
90
  * it, and inline-edit / context-menu edit+delete are hidden. Clicking the bar
81
91
  * (onTaskClick — open drawer / jump) still works. Independent of the global
82
- * `readOnly`; use to lock individual levels (e.g. 派工单) while others stay
92
+ * `readOnly`; use to lock individual levels (e.g. work orders) while others stay
83
93
  * editable. Maps from the view's `lockField` in ObjectGantt.
84
94
  */
85
95
  locked?: boolean;
@@ -90,7 +100,7 @@ export interface GanttTask {
90
100
  baselineStart?: Date;
91
101
  baselineEnd?: Date;
92
102
  /**
93
- * Extra label/value rows for the hover tooltip (悬浮详情), in display order.
103
+ * Extra label/value rows for the hover tooltip, in display order.
94
104
  * Populated from the view's `tooltipFields` config (resolved + formatted by
95
105
  * ObjectGantt). When present they replace the default date·duration·progress
96
106
  * line in the tooltip.
@@ -106,7 +116,7 @@ export interface GanttTask {
106
116
  */
107
117
  hasOwnDates?: boolean;
108
118
  }
109
- /** Timeline granularity — one column per day, week, month, or quarter. */
119
+ /** Timeline granularity — one column per day, week, month, quarter, or year. */
110
120
  export type GanttViewMode = 'day' | 'week' | 'month' | 'quarter' | 'year';
111
121
  /**
112
122
  * Nominal days represented by one column at each granularity. Sets the zoom
@@ -116,21 +126,7 @@ export type GanttViewMode = 'day' | 'week' | 'month' | 'quarter' | 'year';
116
126
  */
117
127
  export declare const NOMINAL_DAYS: Record<GanttViewMode, number>;
118
128
  export declare const MS_PER_DAY: number;
119
- /**
120
- * "Shifted clock" for business-time-zone rendering (业务时区渲染): translate
121
- * real instants into a display space where the browser's local clock reads
122
- * the CONFIGURED zone's wall time. All existing local-clock logic — shift
123
- * bands, day columns, snapping, the today line, date labels — then renders
124
- * that zone correctly for every viewer; writes translate back so persisted
125
- * data stays real instants. Per-instant offsets keep DST zones close;
126
- * fixed-offset zones (Asia/Shanghai) are exact.
127
- */
128
- export declare function makeTzShift(timeZone?: string): {
129
- delta: number;
130
- to: (d: Date) => Date;
131
- from: (d: Date) => Date;
132
- now: () => Date;
133
- };
129
+ export { makeTzShift };
134
130
  /** Floor a date to the start of its column unit (Monday for weeks). */
135
131
  export declare function startOfUnit(date: Date, mode: GanttViewMode): Date;
136
132
  /** Add whole column units; month/quarter clamp the day (Jan 31 + 1mo = Feb 28). */
@@ -142,7 +138,7 @@ export interface GanttMarker {
142
138
  color?: string;
143
139
  }
144
140
  /**
145
- * Per-interaction switches (交互开关) — the DHTMLX `drag_move` / `drag_resize` /
141
+ * Per-interaction switches — the DHTMLX `drag_move` / `drag_resize` /
146
142
  * `drag_progress` / `drag_links` model. Each defaults to true; flipping one off
147
143
  * hides that affordance everywhere while the others keep working. They only
148
144
  * NARROW what the write callbacks / `readOnly` / row locks already allow —
@@ -185,7 +181,8 @@ export interface GanttViewProps {
185
181
  onBeforeDependencyCreate?: (source: GanttTask, target: GanttTask, type: GanttLinkType) => boolean;
186
182
  /**
187
183
  * Enables dependency removal: right-clicking a dependency link opens a menu
188
- * with "移除依赖" and a type switch. Called with the source/target tasks of the
184
+ * with a "Remove dependency" entry (`gantt.menu.removeDependency`) and a type
185
+ * switch. Called with the source/target tasks of the
189
186
  * removed link (target no longer depends on source).
190
187
  */
191
188
  onDependencyDelete?: (source: GanttTask, target: GanttTask) => void;
@@ -200,17 +197,18 @@ export interface GanttViewProps {
200
197
  inlineEdit?: boolean;
201
198
  /**
202
199
  * Show the "auto-schedule" toolbar button. Clicking it runs a one-shot
203
- * dependency-driven reschedule of the whole project (顺延): every successor is
200
+ * dependency-driven reschedule of the whole project (forward-only): every successor is
204
201
  * pushed later until its link constraints hold, preserving durations, and the
205
202
  * resulting date changes are emitted via `onTaskUpdate`. Requires onTaskUpdate.
206
203
  */
207
204
  autoSchedule?: boolean;
208
205
  /**
209
- * After a bar drag/resize, validate the move against dependency constraints
210
- * (拖拽冲突校验). If the new position would violate a link — the task moved
206
+ * After a bar drag/resize, validate the move against dependency constraints.
207
+ * If the new position would violate a link — the task moved
211
208
  * earlier than a predecessor allows, or its move pushes successors past their
212
- * constraints — a confirmation prompts to 自动顺延 (cascade-reschedule the
213
- * affected tasks, preserving durations) or keep the overlap. Requires
209
+ * constraints — a confirmation prompts to "Auto-reschedule"
210
+ * (`gantt.conflict.confirm` — cascade-reschedule the affected tasks,
211
+ * preserving durations) or keep the overlap. Requires
214
212
  * onTaskUpdate and only fires when links exist. Ignored in readOnly.
215
213
  */
216
214
  rescheduleOnConflict?: boolean;
@@ -219,13 +217,15 @@ export interface GanttViewProps {
219
217
  /**
220
218
  * Working calendar for duration math. When set, auto-schedule and critical
221
219
  * path count working days only — weekends (`skipWeekends`) and any `holidays`
222
- * (ISO `yyyy-mm-dd` UTC keys) are skipped rather than consumed.
220
+ * (ISO `yyyy-mm-dd` calendar-day keys, read on the chart's own calendar: the
221
+ * viewer's, or the business `timeZone`'s when one is set) are skipped rather
222
+ * than consumed.
223
223
  */
224
224
  workingCalendar?: WorkingCalendar;
225
225
  /**
226
- * Shift segmentation (班次/排班分段). When set AND the active granularity is
227
- * `day`, each day column is replaced by one column per band (白班 | 夜班…), and
228
- * the upper header tier shows the 排班日 (shift-day starting at `dayStart`, e.g.
226
+ * Shift segmentation. When set AND the active granularity is
227
+ * `day`, each day column is replaced by one column per band (day | night | …),
228
+ * and the upper header tier shows the shift-day (starting at `dayStart`, e.g.
229
229
  * 08:00). Drag/resize then snaps to band boundaries instead of whole days.
230
230
  * Off by default → existing gantts are unaffected (parity with `folding`).
231
231
  * Mutually exclusive with weekend/holiday folding (segmenting wins).
@@ -244,7 +244,7 @@ export interface GanttViewProps {
244
244
  */
245
245
  readOnly?: boolean;
246
246
  /**
247
- * Mobile read-only (移动端只读缩略). When true, the chart auto-enters read-only
247
+ * Mobile read-only. When true, the chart auto-enters read-only
248
248
  * mode on narrow viewports (< 640px) so touch users get a clean, scrollable
249
249
  * thumbnail of the schedule instead of error-prone drag editing — equivalent
250
250
  * to `readOnly` but scoped to small screens. Wider viewports are unaffected.
@@ -252,7 +252,7 @@ export interface GanttViewProps {
252
252
  */
253
253
  mobileReadOnly?: boolean;
254
254
  /**
255
- * Dynamic grouping accessor (动态 Group by). When provided, leaf tasks are
255
+ * Dynamic grouping accessor. When provided, leaf tasks are
256
256
  * bucketed by the returned `key` and rendered beneath one synthesized summary
257
257
  * row per group — the original `parent` hierarchy is replaced by the grouping.
258
258
  * Return `null` to drop a task into the "ungrouped" bucket. Grouping is purely
@@ -266,18 +266,19 @@ export interface GanttViewProps {
266
266
  /** Label for the bucket collecting tasks whose `groupBy` returns null. */
267
267
  ungroupedLabel?: string;
268
268
  /**
269
- * Auto-collapse tree nodes at or below this depth on first render (默认折叠).
269
+ * Auto-collapse tree nodes at or below this depth on first render.
270
270
  * Depth is 0-indexed: roots are 0, their children 1, etc. Every node whose
271
271
  * depth is `>= defaultCollapsedDepth` AND which has children is seeded into the
272
272
  * collapsed set once, so its subtree starts hidden. The user can still expand
273
- * any of them — this only sets the initial state. Example: a 项目→产品→排产计划→派工单
274
- * tree where 排产计划 sits at depth 2 uses `defaultCollapsedDepth={2}` to start
275
- * with every 排产计划 (and its 派工单 children) folded. Omit (or pass a depth past
273
+ * any of them — this only sets the initial state. Example: a
274
+ * project→product→production-plan→work-order tree where the production plan
275
+ * sits at depth 2 uses `defaultCollapsedDepth={2}` to start
276
+ * with every production plan (and its work-order children) folded. Omit (or pass a depth past
276
277
  * the deepest node) to start fully expanded.
277
278
  */
278
279
  defaultCollapsedDepth?: number;
279
280
  /**
280
- * How a summary bar's span is computed (汇总条区间). `'children'` (default)
281
+ * How a summary bar's span is computed. `'children'` (default)
281
282
  * rolls up from the children — min start / max end / duration-weighted
282
283
  * progress — ignoring the summary task's own dates. `'self'` draws the bar
283
284
  * from the task's OWN start/end/progress; tasks flagged `hasOwnDates: false`
@@ -289,18 +290,19 @@ export interface GanttViewProps {
289
290
  /**
290
291
  * Persist the user's layout tweaks (granularity + column/task-list widths)
291
292
  * to `localStorage` under this key. On mount the saved layout is restored;
292
- * the "保存布局" toolbar button writes the current layout. Omit to disable
293
+ * the "Save layout" toolbar button (`gantt.toolbar.saveLayout`) writes the
294
+ * current layout. Omit to disable
293
295
  * persistence. The button still appears when `onLayoutChange` is set.
294
296
  */
295
297
  persistLayoutKey?: string;
296
298
  /**
297
- * Notified when the user saves the current layout (保存布局). Receives the
299
+ * Notified when the user saves the current layout. Receives the
298
300
  * snapshot `{ viewMode, columnWidth, taskListCollapsed }`. Use this to persist
299
301
  * layout in your own store instead of (or alongside) `persistLayoutKey`.
300
302
  */
301
303
  onLayoutChange?: (layout: GanttLayout) => void;
302
304
  /**
303
- * Show a manual refresh button in the toolbar (手动刷新). The host re-reads
305
+ * Show a manual refresh button in the toolbar (`gantt.toolbar.refresh`). The host re-reads
304
306
  * its data source so server-computed fields (rollups, alert colors) and
305
307
  * other users' edits reach the chart without a full page reload. Omit to
306
308
  * hide the button (e.g. inline `value` data has nothing to re-read).
@@ -311,30 +313,38 @@ export interface GanttViewProps {
311
313
  /**
312
314
  * Whether the data source can persist dependency LINK TYPES (fs/ss/ff/sf).
313
315
  * Default true. Set false when dependencies are stored as bare predecessor
314
- * ids (仅存紧前 id,无类型位) — the link context menu then hides the type
316
+ * ids (predecessor ids only, no type slot) — the link context menu then hides the type
315
317
  * switcher (a switch would be silently reverted on refetch) and drag-created
316
318
  * links are always FS regardless of which endpoints were connected.
317
319
  */
318
320
  dependencyTypes?: boolean;
319
321
  /**
320
- * Business time zone for rendering (业务时区), an IANA name like
322
+ * Business time zone for rendering, an IANA name like
321
323
  * 'Asia/Shanghai'. The chart's calendar math — shift bands, day columns,
322
324
  * drag snapping, the today line, start/end labels — renders this zone's
323
325
  * wall time for EVERY viewer instead of the browser's; without it, a
324
- * viewer in another zone sees bands and dates shifted (班次错位). Writes
325
- * still persist real instants. Note: dates handed to `onBeforeTaskUpdate`
326
- * are in this display space (durations/deltas are unaffected).
326
+ * viewer in another zone sees bands and dates misaligned. Dates handed to
327
+ * `onTaskUpdate` are translated back out of this display space into real
328
+ * instants. A date-only value is a day rather than an instant, so the host
329
+ * translates both ways itself (objectui#10866): `ObjectGantt` hands a day in
330
+ * as the instant the shim maps exactly onto its local midnight, so it is
331
+ * drawn from that midnight here, and writes a `date` field back as the day
332
+ * of the display date the emitted instant was translated from, recovered
333
+ * exactly (`invertTo` / `invertFrom` in `./tzShift`, which say why the shim's
334
+ * own round trip is not exact around a DST change). Note: dates handed to
335
+ * `onBeforeTaskUpdate` are in this display space (durations/deltas are
336
+ * unaffected).
327
337
  */
328
338
  timeZone?: string;
329
339
  /**
330
- * Base name for exported files (导出文件名), e.g. the view or object label —
331
- * "排班计划甘特图" exports as `排班计划甘特图-20260719-1530.png`. Falls back
340
+ * Base name for exported files, e.g. the view or object label —
341
+ * "Shift Plan Gantt" exports as `Shift Plan Gantt-20260719-1530.png`. Falls back
332
342
  * to "gantt". The timestamp suffix keeps repeated exports from silently
333
343
  * overwriting each other in the Downloads folder.
334
344
  */
335
345
  exportFileName?: string;
336
346
  /**
337
- * Per-interaction switches (交互开关). Omit for all-on. See
347
+ * Per-interaction switches. Omit for all-on. See
338
348
  * {@link GanttInteractions}: e.g. `{ resize: false }` keeps bars movable and
339
349
  * links drawable but pins every duration; `{ link: false }` removes the
340
350
  * dependency drag-dots and the create/delete menu entries. Subject to
@@ -352,7 +362,7 @@ export interface GanttViewProps {
352
362
  */
353
363
  onBeforeTaskUpdate?: (task: GanttTask, changes: Partial<Pick<GanttTask, 'title' | 'start' | 'end' | 'progress'>>) => boolean | Promise<boolean>;
354
364
  }
355
- /** Persisted layout snapshot written by the "保存布局" toolbar button. */
365
+ /** Persisted layout snapshot written by the "Save layout" toolbar button. */
356
366
  export interface GanttLayout {
357
367
  viewMode: GanttViewMode;
358
368
  /** Effective day-column width in px, or null when auto-fit. */
@@ -361,7 +371,7 @@ export interface GanttLayout {
361
371
  /** User-dragged task-list (name column) width in px, or null when auto-sized. */
362
372
  taskListWidth?: number | null;
363
373
  /**
364
- * Ids of rows the user had collapsed when saving (展开状态). Present (even
374
+ * Ids of rows the user had collapsed when saving. Present (even
365
375
  * empty) means the saved expand/collapse state wins over
366
376
  * `defaultCollapsedDepth`; absent (older snapshots) leaves the default.
367
377
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GanttView.d.ts","sourceRoot":"","sources":["../src/GanttView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GanttView.d.ts","sourceRoot":"","sources":["../src/GanttView.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { default as React } from 'react';
2
- import { ObjectGridSchema, DataSource } from '@object-ui/types';
3
- import { GanttTask, GanttDependency, GanttTaskType } from './GanttView';
2
+ import { ObjectGanttSchema, DataSource, GanttConfig } from '@object-ui/types';
3
+ import { GanttTask, GanttDependency, GanttTaskType } from './GanttView.js';
4
+ import { ShiftSegmentsConfig } from './shifts.js';
4
5
  /**
5
- * One quick-filter dimension (快速筛选维度). Generic by design: the page configures
6
+ * One quick-filter dimension. Generic by design: the page configures
6
7
  * which record fields become filter dropdowns; the plugin resolves each one's
7
8
  * options from the object schema (select options / lookup reference records) so
8
9
  * no business field names are baked into the (MIT) plugin.
@@ -14,7 +15,7 @@ export interface QuickFilterDef {
14
15
  label?: string;
15
16
  /**
16
17
  * Explicit option override. Highest priority — use for fixed enums that are
17
- * not modeled as select options (e.g. 派工类别). Plain strings become
18
+ * not modeled as select options (e.g. a work-order category). Plain strings become
18
19
  * value === label; objects allow a distinct display label.
19
20
  */
20
21
  options?: Array<string | {
@@ -22,15 +23,157 @@ export interface QuickFilterDef {
22
23
  label?: string;
23
24
  }>;
24
25
  }
26
+ /**
27
+ * The members this renderer states ON TOP of {@link GanttConfig} — twelve, as
28
+ * measured against the shipped `GanttConfig` on `main` (objectui#6471; the card
29
+ * counted eleven before objectui#6051/#6472 landed part of the lift).
30
+ *
31
+ * All twelve RESTATE a key `GanttConfig` already declares, and since
32
+ * objectstack#15469 closed the schema all twelve — `timeSegments` included —
33
+ * arrive from the spec's `GanttConfigSchema` (29 keys); every one is mutually
34
+ * assignable with its twin. That includes
35
+ * `quickFilters` and `timeSegments`, which objectui#6471 called load-bearing
36
+ * NARROWINGS: measured on `main` they narrow nothing. What those two still do is
37
+ * NAME this plugin's runtime types (`QuickFilterDef[]` /
38
+ * {@link ShiftSegmentsConfig}), so a spec bump that moves either side surfaces as
39
+ * a decision. `ObjectGantt.configPin.test.ts` holds that measurement — read it
40
+ * there rather than re-deriving it here.
41
+ *
42
+ * ## Why a member is kept rather than deleted — TWO reasons, either sufficient
43
+ *
44
+ * 1. PROSE, where there is any. The spec emits no per-member docs
45
+ * (`z.input<typeof GanttConfigSchema>` carries none) and JSDoc cannot be
46
+ * attached to a member a type merely inherits, so for most members the
47
+ * docblock below is the fullest description of what this renderer DOES with
48
+ * the key. It does NOT reach every member: four are bare here —
49
+ * `parentField`, `baselineEndField`, `assigneeField`, `effortField` — the last
50
+ * three covered by a neighbour's docblock, `parentField` by nothing. Nor is
51
+ * this prose unique any more: since objectui#6472 the flattened face
52
+ * (`ObjectGanttSchema` in `@object-ui/types`) documents all twelve, and
53
+ * objectui#6561 expanded `parentField`'s entry there.
54
+ *
55
+ * 2. PIN OPERAND — this reason reaches EVERY member, and for `parentField` it is
56
+ * the only one. The pin below is derived over `keyof GanttConfigRestated`: a
57
+ * member that exists is compared against its twin, and a member that is
58
+ * deleted simply stops being compared.
59
+ *
60
+ * ⛔ So the test for whether a member may be deleted is NOT "does it carry its
61
+ * own JSDoc". Applied to `parentField` that test answers "deletable", and it is
62
+ * wrong. Deleting `parentField` is not silent — it fails three assertions in
63
+ * `ObjectGantt.configPin.test.ts`: the `RESTATED` census, the non-vacuity control
64
+ * that names it, and the fixture. But all three fail INSIDE the pin, which is the
65
+ * file a reader edits to turn a red build green; follow those errors and the tree
66
+ * goes green with one member fewer under the pin. Delete a member here only when
67
+ * its twin on `GanttConfig` goes with it.
68
+ *
69
+ * ⚠️ NAMED rather than inlined into the intersection above, and that is the
70
+ * whole mechanism: inside `GanttConfigEx` there is nothing left to compare,
71
+ * because `GanttConfigEx[K]` is ALREADY `GanttConfig[K] & <local>[K]` and is
72
+ * therefore assignable to `GanttConfig[K]` by construction — an assertion written
73
+ * against `GanttConfigEx` passes no matter how far the two declarations drift.
74
+ * Naming the local half is what gives `ObjectGantt.configPin.test.ts` two
75
+ * independent operands, so a spec bump that re-types one of the twelve breaks the
76
+ * build at the pin instead of silently intersecting the old type back in.
77
+ */
78
+ export type GanttConfigRestated = {
79
+ parentField?: string;
80
+ /**
81
+ * Record field whose value maps onto a node kind (see {@link normalizeTaskType}):
82
+ * `task` / `summary` (project/phase) / `milestone` / `group`. `group` (or
83
+ * `folder`) renders a pure tree header with NO bar — for project / product
84
+ * style levels that only group, never schedule.
85
+ */
86
+ typeField?: string;
87
+ /** Baseline (planned) start/end fields → planned-vs-actual reference bars. */
88
+ baselineStartField?: string;
89
+ baselineEndField?: string;
90
+ /**
91
+ * Dynamic Group by. When set, leaf tasks are bucketed by this
92
+ * field and rendered under one synthesized summary row per distinct value
93
+ * (replacing the parent hierarchy). Select options / lookups resolve to their
94
+ * display label, matching list/kanban grouping.
95
+ */
96
+ groupByField?: string;
97
+ /**
98
+ * Resource / Workload view. When true, the chart renders a
99
+ * per-resource load histogram instead of the timeline grid: each task loads
100
+ * its `assigneeField` resource by `effortField` units (default 1) over its
101
+ * span, and any column whose summed load exceeds `capacity` is flagged as
102
+ * over-allocated. `assigneeField` is required for this view to bucket by.
103
+ */
104
+ resourceView?: boolean;
105
+ assigneeField?: string;
106
+ effortField?: string;
107
+ /** Per-resource capacity ceiling (default 1). Loads above this flag overload. */
108
+ capacity?: number;
109
+ /**
110
+ * Quick filters. A row of multi-select dropdowns rendered above the
111
+ * chart; each narrows the visible task bars by one dimension. Options resolve
112
+ * from the object schema (select options or lookup reference records) so the
113
+ * lists are the full domain, not just values present in the current data.
114
+ */
115
+ quickFilters?: QuickFilterDef[];
116
+ /**
117
+ * When true (default), filtering recomputes the timeline range so it zooms to
118
+ * the filtered tasks' interval. Set false to keep the range pinned to the full
119
+ * (unfiltered) task set while filtering only hides bars.
120
+ */
121
+ autoZoomToFilter?: boolean;
122
+ /**
123
+ * Shift segmentation. When set, the day-mode timeline splits each shift-day
124
+ * (starting at `dayStart`) into the configured bands (day | night | …):
125
+ * a two-tier header (date over band), per-band column tints, and
126
+ * drag/resize snapping to band boundaries. Pure config data — no shift concept
127
+ * is hardcoded. `label` is display text the caller has already localized.
128
+ * Off by default → existing gantts are unchanged. Example:
129
+ * `{ dayStart: '08:00', bands: [
130
+ * { key: 'day', label: 'Day shift', start: '08:00', end: '20:00' },
131
+ * { key: 'night', label: 'Night shift', start: '20:00', end: '08:00' } ] }`.
132
+ */
133
+ timeSegments?: ShiftSegmentsConfig;
134
+ };
25
135
  /** Map a record's type value onto a GanttTaskType (undefined = infer). */
26
136
  export declare function normalizeTaskType(raw: unknown): GanttTaskType | undefined;
27
137
  export declare function normalizeDependencies(raw: unknown): GanttDependency[];
28
138
  export interface ObjectGanttProps {
29
- schema: ObjectGridSchema;
139
+ /**
140
+ * The gantt node. Typed as {@link ObjectGanttSchema} (objectui#5903) — the
141
+ * declaration this component's schema reads actually resolve against.
142
+ *
143
+ * It used to be `ObjectGridSchema`, and that is why ten genuine reads had to
144
+ * be spelled `(schema as any).K`: the keys are not grid keys, so the only
145
+ * thing that admitted them was `BaseSchema`'s index signature, under a cast
146
+ * that hid even that. Removing the casts without moving the type would have
147
+ * changed nothing — the reads would still land on the index signature.
148
+ *
149
+ * objectui#6051 declared what the FLAT branch reads: the 24 flattened
150
+ * `GanttConfig` keys `getGanttConfig`'s first branch consumes, plus the
151
+ * `staticData` / `filter` / `sort` the fetch path reads. The grid-style
152
+ * `{ gantt: { … } }` block keeps working exactly as before and is still read
153
+ * through the index signature — declaring it is the one change that would not
154
+ * have been additive, and it is severed to objectui#6475. The registered
155
+ * renderer (`index.tsx`) still passes `schema: any`, so no runtime shape is
156
+ * turned away either way.
157
+ */
158
+ schema: ObjectGanttSchema;
30
159
  dataSource?: DataSource;
31
160
  className?: string;
32
161
  onTaskClick?: (record: any) => void;
33
- onRowClick?: (record: any) => void;
162
+ /**
163
+ * TWO parameters since objectui#9357, and the second is not decoration: this
164
+ * prop reaches `useNavigationOverlay` as its `onRowClick`, and `handleClick`
165
+ * invokes it as `onRowClick(record, event)` — the modifier payload a host
166
+ * needs to implement Cmd/Ctrl/middle-click for itself. Declaring one
167
+ * parameter hid the second on the ONE line a host reads. Spelled `any` and
168
+ * not `HandleClickModifiers` for the reason objectui#9341 measured on
169
+ * `ObjectKanbanSchema.onCardClick`: that interface lives in
170
+ * `@object-ui/react`, the published twins in `@object-ui/types` may not name
171
+ * it, and a host that discovered the payload from the implementation
172
+ * annotated it `React.MouseEvent` — which a narrower declaration refuses
173
+ * contravariantly. `BaseSchema`'s own `onClick` / `onChange` / `onSubmit`
174
+ * already use this spelling for exactly this situation.
175
+ */
176
+ onRowClick?: (record: any, event?: any) => void;
34
177
  onEdit?: (record: any) => void;
35
178
  onDelete?: (record: any) => void;
36
179
  /**
@@ -41,5 +184,49 @@ export interface ObjectGanttProps {
41
184
  */
42
185
  onBeforeTaskUpdate?: (task: GanttTask, changes: Partial<Pick<GanttTask, 'title' | 'start' | 'end' | 'progress'>>) => boolean | Promise<boolean>;
43
186
  }
187
+ /**
188
+ * `keyof T` with the string / number INDEX SIGNATURE stripped out.
189
+ *
190
+ * Load-bearing, not tidiness. `GanttConfig` derives from the spec's
191
+ * `GanttConfigSchema`, which carries an index signature, so a bare
192
+ * `keyof GanttConfig` widens to `string` — and every guard written against it
193
+ * (the `satisfies` below, the coverage pin in
194
+ * `ObjectGantt.blockPrecedence.test.tsx`) then constrains NOTHING while looking
195
+ * exactly like a guard that does. That is the same blind instrument
196
+ * objectui#6051's declaration pin records: an index signature absorbs precisely
197
+ * the evidence a type annotation would have produced. Measured here — the pin
198
+ * came back `string` before this alias existed.
199
+ */
200
+ type KnownKeys<T> = keyof {
201
+ [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
202
+ };
203
+ /** The DECLARED members of `GanttConfig` — its index signature removed. */
204
+ export type KnownGanttConfigKey = KnownKeys<GanttConfig>;
205
+ /**
206
+ * The FLAT spelling of `GanttConfig`'s keys — what `getGanttConfig`'s flat
207
+ * branch reads, and what `ObjectView` / `ListView` EMIT.
208
+ *
209
+ * Both flatteners build an `object-gantt` schema by spreading `options.gantt`'s
210
+ * CONTENTS at the top level (`plugin-view/src/ObjectView.tsx` `case 'gantt'`,
211
+ * `plugin-list/src/ListView.tsx` `case 'gantt'`); the product carries these keys
212
+ * and NO `gantt` key at all. That is an internal transport form, not a second
213
+ * authoring surface — and it is why the precedence flip below strands neither
214
+ * producer.
215
+ *
216
+ * DERIVED from `GanttConfigSchema` in full — the same zod object the block
217
+ * branch validates against — so a key added to the spec reaches the shadow
218
+ * diagnostic without a second edit (the discipline `FLAT_MAP_CONFIG_KEYS` set in
219
+ * objectui#5177). Until objectstack#15469 that derivation covered only part of
220
+ * the vocabulary and a second literal, `GANTT_CONFIG_EXTENSION_KEYS`, named the
221
+ * ten keys the renderer read through the schema's then-open `.passthrough()`
222
+ * window. The spec now declares all ten, so the list is one source again and the
223
+ * literal is retired (objectui#7845) — keeping it would have made every one of
224
+ * the ten a DUPLICATE entry here, which is what the no-duplicates pin in
225
+ * `ObjectGantt.blockPrecedence.test.tsx` measured. `dependencyField` is the
226
+ * legacy singular alias the flat branch still reads beside `dependenciesField`;
227
+ * it is not a `GanttConfig` key, so it is named on its own.
228
+ */
229
+ export declare const FLAT_GANTT_CONFIG_KEYS: ("summaryExtent" | "timeZone" | "viewMode" | "defaultCollapsedDepth" | "dependencyTypes" | "exportFileName" | "interactions" | "capacity" | "startDateField" | "endDateField" | "titleField" | "progressField" | "dependenciesField" | "colorField" | "parentField" | "typeField" | "baselineStartField" | "baselineEndField" | "groupByField" | "resourceView" | "assigneeField" | "effortField" | "tooltipFields" | "quickFilters" | "autoZoomToFilter" | "borderColorField" | "lockField" | "objectField" | "timeSegments" | "dependencyField")[];
44
230
  export declare const ObjectGantt: React.FC<ObjectGanttProps>;
231
+ export {};
45
232
  //# sourceMappingURL=ObjectGantt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectGantt.d.ts","sourceRoot":"","sources":["../src/ObjectGantt.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAwE,MAAM,OAAO,CAAC;AAE7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AA2B5F,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,eAAe,EAA8C,KAAK,aAAa,EAAsB,MAAM,aAAa,CAAC;AAOlK;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE;AA0ID,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAUzE;AAiBD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,EAAE,CAqBrE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CACnB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,KACtE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAqID,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyrClD,CAAC"}
1
+ {"version":3,"file":"ObjectGantt.d.ts","sourceRoot":"","sources":["../src/ObjectGantt.tsx"],"names":[],"mappings":"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"}
@@ -13,14 +13,26 @@ export interface QuickFilterField {
13
13
  /** Full option list (already resolved by the owner). */
14
14
  options: QuickFilterOption[];
15
15
  }
16
+ /**
17
+ * Display strings for the bar. Every member is optional: `all`, `clear` and
18
+ * `empty` fall back to English defaults and an omitted `resultSummary` simply
19
+ * hides the summary, so a label is only ever *supplied* by the owner.
20
+ * The owning `ObjectGantt` passes translated values resolved from the
21
+ * `gantt.quickFilter.*` bundle namespace (objectstack#5427); the `Host:` key
22
+ * noted on each member is where that value comes from.
23
+ */
16
24
  export interface QuickFilterLabels {
17
- /** "全部" / "All" — the select-all toggle and empty-selection trigger text. */
25
+ /** Select-all toggle and empty-selection trigger text. Host: `gantt.quickFilter.all`. */
18
26
  all?: string;
19
- /** "清除筛选" / "Clear" — clears every dimension. */
27
+ /** Clears every dimension. Host: `gantt.quickFilter.clear`. */
20
28
  clear?: string;
21
- /** Builds the "showing N / M" summary; omit to hide the summary. */
29
+ /**
30
+ * Builds the "showing N / M" summary; omit to hide the summary.
31
+ * Host: `gantt.quickFilter.resultSummary` (single-brace `{shown}` / `{total}`
32
+ * placeholders, resolved at the call site by a literal `.replace`).
33
+ */
22
34
  resultSummary?: (shown: number, total: number) => string;
23
- /** Placeholder shown when a dimension resolved zero options. */
35
+ /** Placeholder shown when a dimension resolved zero options. Host: `gantt.quickFilter.empty`. */
24
36
  empty?: string;
25
37
  }
26
38
  export interface QuickFilterBarProps {
@@ -1 +1 @@
1
- {"version":3,"file":"QuickFilterBar.d.ts","sourceRoot":"","sources":["../src/QuickFilterBar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4MD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+CxD,CAAC"}
1
+ {"version":3,"file":"QuickFilterBar.d.ts","sourceRoot":"","sources":["../src/QuickFilterBar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,yFAAyF;IACzF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,iGAAiG;IACjG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4MD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+CxD,CAAC"}
@@ -1,4 +1,4 @@
1
- import { GanttTask, GanttViewMode } from './GanttView';
1
+ import { GanttTask, GanttViewMode } from './GanttView.js';
2
2
  /**
3
3
  * ObjectUI
4
4
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -7,7 +7,7 @@ import { GanttTask, GanttViewMode } from './GanttView';
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
9
  /**
10
- * Resource / Workload view (资源/工作负载视图).
10
+ * Resource / Workload view.
11
11
  *
12
12
  * A per-resource load histogram aligned to the same time columns the Gantt grid
13
13
  * uses. Each resource gets a row; each column draws a bar whose height ∝ the
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceWorkload.d.ts","sourceRoot":"","sources":["../src/ResourceWorkload.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAmD,MAAM,aAAa,CAAC;AAIlH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,wEAAwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK;QAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9E,+DAA+D;IAC/D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,MAAM,CAAC;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC9C,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAY,EACZ,QAAgB,EAChB,eAA8B,EAC9B,SAAS,GACV,EAAE,qBAAqB,qBAuIvB"}
1
+ {"version":3,"file":"ResourceWorkload.d.ts","sourceRoot":"","sources":["../src/ResourceWorkload.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAyB,MAAM,aAAa,CAAC;AAKxF,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,wEAAwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK;QAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9E,+DAA+D;IAC/D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,MAAM,CAAC;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC9C,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAY,EACZ,QAAgB,EAChB,eAA8B,EAC9B,SAAS,GACV,EAAE,qBAAqB,qBA0IvB"}