@toclocoinc/lattice-grid 1.67.0 → 1.68.1
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/README.md +1 -1
- package/angular/package.json +1 -1
- package/docs/API.html +5334 -3788
- package/docs/api-detail.html +40 -5
- package/lattice-grid.d.ts +3368 -2
- package/lattice-grid.esm.min.js +32 -10
- package/lattice-grid.min.cjs +32 -10
- package/lattice-grid.min.js +32 -10
- package/modules/ai.d.ts +64 -1
- package/modules/ai.esm.min.js +3 -3
- package/modules/ai.min.cjs +3 -3
- package/modules/ai.min.js +3 -3
- package/modules/angular.d.ts +1 -1
- package/modules/angular.esm.min.js +3 -3
- package/modules/angular.min.cjs +3 -3
- package/modules/angular.min.js +3 -3
- package/modules/chart-alluvial.d.ts +1 -1
- package/modules/chart-alluvial.esm.min.js +1 -1
- package/modules/chart-alluvial.min.cjs +1 -1
- package/modules/chart-alluvial.min.js +1 -1
- package/modules/chart-arc.d.ts +1 -1
- package/modules/chart-arc.esm.min.js +1 -1
- package/modules/chart-arc.min.cjs +1 -1
- package/modules/chart-arc.min.js +1 -1
- package/modules/chart-bubblemap.d.ts +1 -1
- package/modules/chart-bubblemap.esm.min.js +1 -1
- package/modules/chart-bubblemap.min.cjs +1 -1
- package/modules/chart-bubblemap.min.js +1 -1
- package/modules/chart-bump.d.ts +1 -1
- package/modules/chart-bump.esm.min.js +1 -1
- package/modules/chart-bump.min.cjs +1 -1
- package/modules/chart-bump.min.js +1 -1
- package/modules/chart-calendar.d.ts +1 -1
- package/modules/chart-calendar.esm.min.js +1 -1
- package/modules/chart-calendar.min.cjs +1 -1
- package/modules/chart-calendar.min.js +1 -1
- package/modules/chart-decomposition.d.ts +1 -1
- package/modules/chart-decomposition.esm.min.js +1 -1
- package/modules/chart-decomposition.min.cjs +1 -1
- package/modules/chart-decomposition.min.js +1 -1
- package/modules/chart-diverging.d.ts +1 -1
- package/modules/chart-diverging.esm.min.js +1 -1
- package/modules/chart-diverging.min.cjs +1 -1
- package/modules/chart-diverging.min.js +1 -1
- package/modules/chart-dumbbell.d.ts +1 -1
- package/modules/chart-dumbbell.esm.min.js +1 -1
- package/modules/chart-dumbbell.min.cjs +1 -1
- package/modules/chart-dumbbell.min.js +1 -1
- package/modules/chart-fan.d.ts +1 -1
- package/modules/chart-fan.esm.min.js +1 -1
- package/modules/chart-fan.min.cjs +1 -1
- package/modules/chart-fan.min.js +1 -1
- package/modules/chart-hexbin.d.ts +1 -1
- package/modules/chart-hexbin.esm.min.js +1 -1
- package/modules/chart-hexbin.min.cjs +1 -1
- package/modules/chart-hexbin.min.js +1 -1
- package/modules/chart-hexmap.d.ts +1 -1
- package/modules/chart-hexmap.esm.min.js +1 -1
- package/modules/chart-hexmap.min.cjs +1 -1
- package/modules/chart-hexmap.min.js +1 -1
- package/modules/chart-icicle.d.ts +1 -1
- package/modules/chart-icicle.esm.min.js +1 -1
- package/modules/chart-icicle.min.cjs +1 -1
- package/modules/chart-icicle.min.js +1 -1
- package/modules/chart-markermap.d.ts +1 -1
- package/modules/chart-markermap.esm.min.js +1 -1
- package/modules/chart-markermap.min.cjs +1 -1
- package/modules/chart-markermap.min.js +1 -1
- package/modules/chart-parallel.d.ts +1 -1
- package/modules/chart-parallel.esm.min.js +1 -1
- package/modules/chart-parallel.min.cjs +1 -1
- package/modules/chart-parallel.min.js +1 -1
- package/modules/chart-ridgeline.d.ts +1 -1
- package/modules/chart-ridgeline.esm.min.js +1 -1
- package/modules/chart-ridgeline.min.cjs +1 -1
- package/modules/chart-ridgeline.min.js +1 -1
- package/modules/chart-roc.d.ts +1 -1
- package/modules/chart-roc.esm.min.js +1 -1
- package/modules/chart-roc.min.cjs +1 -1
- package/modules/chart-roc.min.js +1 -1
- package/modules/chart-slope.d.ts +1 -1
- package/modules/chart-slope.esm.min.js +1 -1
- package/modules/chart-slope.min.cjs +1 -1
- package/modules/chart-slope.min.js +1 -1
- package/modules/chart-splom.d.ts +1 -1
- package/modules/chart-splom.esm.min.js +1 -1
- package/modules/chart-splom.min.cjs +1 -1
- package/modules/chart-splom.min.js +1 -1
- package/modules/chart-waffle.d.ts +1 -1
- package/modules/chart-waffle.esm.min.js +1 -1
- package/modules/chart-waffle.min.cjs +1 -1
- package/modules/chart-waffle.min.js +1 -1
- package/modules/charts.d.ts +16 -1
- package/modules/charts.esm.min.js +1391 -1257
- package/modules/charts.min.cjs +1391 -1257
- package/modules/charts.min.js +1391 -1257
- package/modules/data-router.d.ts +227 -1
- package/modules/data-router.esm.min.js +204 -8
- package/modules/data-router.min.cjs +204 -8
- package/modules/data-router.min.js +204 -8
- package/modules/devtools.d.ts +1 -1
- package/modules/devtools.esm.min.js +1 -1
- package/modules/devtools.min.cjs +1 -1
- package/modules/devtools.min.js +1 -1
- package/modules/dhtmlx-compat.d.ts +1 -1
- package/modules/dhtmlx-compat.esm.min.js +3 -3
- package/modules/dhtmlx-compat.min.cjs +3 -3
- package/modules/dhtmlx-compat.min.js +3 -3
- package/modules/gantt.d.ts +302 -1
- package/modules/gantt.esm.min.js +32 -7
- package/modules/gantt.min.cjs +32 -7
- package/modules/gantt.min.js +32 -7
- package/modules/geo-europe-nuts.d.ts +1 -1
- package/modules/geo-europe-nuts.esm.min.js +1 -1
- package/modules/geo-uk.d.ts +1 -1
- package/modules/geo-uk.esm.min.js +1 -1
- package/modules/geo-us-states.d.ts +1 -1
- package/modules/geo-us-states.esm.min.js +1 -1
- package/modules/geo-world-110m.d.ts +1 -1
- package/modules/geo-world-110m.esm.min.js +1 -1
- package/modules/geo-world-50m.d.ts +1 -1
- package/modules/geo-world-50m.esm.min.js +1 -1
- package/modules/htmx.d.ts +1 -1
- package/modules/htmx.esm.min.js +32 -10
- package/modules/htmx.min.cjs +32 -10
- package/modules/htmx.min.js +32 -10
- package/modules/kanban.d.ts +233 -1
- package/modules/kanban.esm.min.js +3 -3
- package/modules/kanban.min.cjs +3 -3
- package/modules/kanban.min.js +3 -3
- package/modules/kpi.d.ts +196 -8
- package/modules/kpi.esm.min.js +32 -7
- package/modules/kpi.min.cjs +32 -7
- package/modules/kpi.min.js +32 -7
- package/modules/layout.d.ts +117 -1
- package/modules/layout.esm.min.js +3 -3
- package/modules/layout.min.cjs +3 -3
- package/modules/layout.min.js +3 -3
- package/modules/mock-socket.d.ts +6 -1
- package/modules/mock-socket.esm.min.js +1 -1
- package/modules/mock-socket.min.cjs +1 -1
- package/modules/mock-socket.min.js +1 -1
- package/modules/react.d.ts +14 -1
- package/modules/react.esm.min.js +3 -3
- package/modules/react.min.cjs +3 -3
- package/modules/react.min.js +3 -3
- package/modules/svelte.d.ts +1 -1
- package/modules/svelte.esm.min.js +3 -3
- package/modules/svelte.min.cjs +3 -3
- package/modules/svelte.min.js +3 -3
- package/modules/tabs.d.ts +30 -1
- package/modules/tabs.esm.min.js +13 -14
- package/modules/tabs.min.cjs +13 -14
- package/modules/tabs.min.js +13 -14
- package/modules/vue.d.ts +8 -1
- package/modules/vue.esm.min.js +3 -3
- package/modules/vue.min.cjs +3 -3
- package/modules/vue.min.js +3 -3
- package/modules/webcomponent.d.ts +113 -1
- package/modules/webcomponent.esm.min.js +32 -10
- package/modules/webcomponent.min.cjs +32 -10
- package/modules/webcomponent.min.js +32 -10
- package/package.json +1 -1
package/modules/kanban.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.
|
|
2
|
+
* Lattice Grid 1.68.1, kanban module type declarations
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -14,28 +14,93 @@ type KanbanRow = Record<string, unknown>;
|
|
|
14
14
|
* and carried for the later cycles that render them.
|
|
15
15
|
*/
|
|
16
16
|
interface KanbanCard {
|
|
17
|
+
/** The card's identity, from the board's `rowKey`. */
|
|
17
18
|
key: unknown;
|
|
19
|
+
/**
|
|
20
|
+
* The row behind the card. On a grid-bound board this is the materialised object the
|
|
21
|
+
* board read off the grid, not the grid's own row.
|
|
22
|
+
*/
|
|
18
23
|
row: KanbanRow;
|
|
24
|
+
/**
|
|
25
|
+
* Which column the card sits in — the stringified group value — or null when the row's
|
|
26
|
+
* group value is null or undefined, which leaves the card unplaced.
|
|
27
|
+
*/
|
|
19
28
|
columnId: string | null;
|
|
29
|
+
/**
|
|
30
|
+
* The card's estimate, from `pointsProperty`. Zero when there is no points property or
|
|
31
|
+
* the value is not a finite number.
|
|
32
|
+
*/
|
|
20
33
|
points: number;
|
|
34
|
+
/**
|
|
35
|
+
* Whether the points value was a finite number. A card without points contributes
|
|
36
|
+
* nothing to a column's sum.
|
|
37
|
+
*/
|
|
21
38
|
hasPoints: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* The raw value of `orderProperty`, which ranks the card inside its column. Undefined
|
|
41
|
+
* when no order property is configured.
|
|
42
|
+
*/
|
|
22
43
|
order?: unknown;
|
|
44
|
+
/**
|
|
45
|
+
* The raw value of `swimlaneProperty`, the lane the card belongs to. Undefined when no
|
|
46
|
+
* swimlane property is configured.
|
|
47
|
+
*/
|
|
23
48
|
swimlane?: unknown;
|
|
49
|
+
/**
|
|
50
|
+
* The raw value of `sprintProperty`, used by the sprint selection. Undefined when no
|
|
51
|
+
* sprint property is configured.
|
|
52
|
+
*/
|
|
24
53
|
sprint?: unknown;
|
|
54
|
+
/**
|
|
55
|
+
* The raw value of `epicProperty`, used by the epic selection. Undefined when no epic
|
|
56
|
+
* property is configured.
|
|
57
|
+
*/
|
|
25
58
|
epic?: unknown;
|
|
59
|
+
/**
|
|
60
|
+
* The card template's text, one entry per `card` mapping. A mapping that names a grid
|
|
61
|
+
* column is read through that column's own formatter, so it reads exactly as the cell
|
|
62
|
+
* does; anything missing is ''.
|
|
63
|
+
*/
|
|
26
64
|
fields: Record<string, string>;
|
|
27
65
|
}
|
|
28
66
|
|
|
29
67
|
/** A column with its cards and aggregates. `over` is true when `count` exceeds `wipLimit`. */
|
|
30
68
|
interface KanbanColumn {
|
|
69
|
+
/**
|
|
70
|
+
* The column's identity — a configured column's `id`, or the stringified group value a
|
|
71
|
+
* data-driven column came from.
|
|
72
|
+
*/
|
|
31
73
|
id: string;
|
|
74
|
+
/** The heading shown above the column. Defaults to the id, humanised. */
|
|
32
75
|
title: string;
|
|
76
|
+
/**
|
|
77
|
+
* The accent colour drawn as a dot in the header, as configured. Null when the column
|
|
78
|
+
* def set none.
|
|
79
|
+
*/
|
|
33
80
|
color: string | null;
|
|
81
|
+
/**
|
|
82
|
+
* The work-in-progress limit for this column, or null when it has none. Advisory unless
|
|
83
|
+
* `enforceWip` is on.
|
|
84
|
+
*/
|
|
34
85
|
wipLimit: number | null;
|
|
86
|
+
/**
|
|
87
|
+
* Whether the column is currently collapsed to a strip — either configured so, or
|
|
88
|
+
* collapsed by the user.
|
|
89
|
+
*/
|
|
35
90
|
collapsed: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* The column's cards that survive the board's filters, in arrival order, re-sorted by
|
|
93
|
+
* `orderProperty` when one is configured.
|
|
94
|
+
*/
|
|
36
95
|
cards: KanbanCard[];
|
|
96
|
+
/** How many cards the column holds — the length of `cards`, after filtering. */
|
|
37
97
|
count: number;
|
|
98
|
+
/** The sum of the column's card points; cards without a finite points value add nothing. */
|
|
38
99
|
points: number;
|
|
100
|
+
/**
|
|
101
|
+
* True when the column has a WIP limit and its count exceeds it. The header shows this
|
|
102
|
+
* whether or not `enforceWip` refuses the move.
|
|
103
|
+
*/
|
|
39
104
|
over: boolean;
|
|
40
105
|
}
|
|
41
106
|
|
|
@@ -60,8 +125,17 @@ type KanbanColumnDef = string | {
|
|
|
60
125
|
|
|
61
126
|
/** A card field editor handle returned by a host editor factory. */
|
|
62
127
|
interface KanbanEditor {
|
|
128
|
+
/** The editor's element. The board appends it to the card being edited. */
|
|
63
129
|
el: HTMLElement;
|
|
130
|
+
/**
|
|
131
|
+
* Called straight after the editor is appended, to put the caret where it belongs.
|
|
132
|
+
* Without it the board focuses `el` itself.
|
|
133
|
+
*/
|
|
64
134
|
focus?: () => void;
|
|
135
|
+
/**
|
|
136
|
+
* Called when the edit commits or is cancelled, so the editor can release what it
|
|
137
|
+
* holds. Optional.
|
|
138
|
+
*/
|
|
65
139
|
destroy?: () => void;
|
|
66
140
|
}
|
|
67
141
|
|
|
@@ -74,14 +148,29 @@ type KanbanFieldMap = string | ((row: KanbanRow) => unknown) | {
|
|
|
74
148
|
|
|
75
149
|
/** The field-to-property mapping that drives the card template. */
|
|
76
150
|
interface KanbanCardMap {
|
|
151
|
+
/** The card's headline text. */
|
|
77
152
|
title?: KanbanFieldMap;
|
|
153
|
+
/** A second line under the title. */
|
|
78
154
|
subtitle?: KanbanFieldMap;
|
|
155
|
+
/** A comma-separated string rendered as one chip per label; blanks are skipped. */
|
|
79
156
|
labels?: KanbanFieldMap;
|
|
157
|
+
/** The person shown first in the card's meta row. */
|
|
80
158
|
assignee?: KanbanFieldMap;
|
|
159
|
+
/** The due date, shown in the meta row as whatever text the mapping produces. */
|
|
81
160
|
due?: KanbanFieldMap;
|
|
161
|
+
/** An image URL drawn as a cover band across the top of the card. */
|
|
82
162
|
cover?: KanbanFieldMap;
|
|
163
|
+
/**
|
|
164
|
+
* A progress bar over the card. The value is read as a percentage (0-100); a value that
|
|
165
|
+
* is not a number draws no bar.
|
|
166
|
+
*/
|
|
83
167
|
progress?: KanbanFieldMap;
|
|
168
|
+
/** A single badge chip at the end of the meta row. */
|
|
84
169
|
badges?: KanbanFieldMap;
|
|
170
|
+
/**
|
|
171
|
+
* A colour for the card's left border. Any CSS colour; an empty value leaves the border
|
|
172
|
+
* plain.
|
|
173
|
+
*/
|
|
85
174
|
accent?: KanbanFieldMap;
|
|
86
175
|
[field: string]: KanbanFieldMap | undefined;
|
|
87
176
|
}
|
|
@@ -95,9 +184,19 @@ type KanbanReadonly = boolean | {
|
|
|
95
184
|
|
|
96
185
|
/** The payload every board event carries. */
|
|
97
186
|
interface KanbanEvent {
|
|
187
|
+
/** The card the event is about. */
|
|
98
188
|
card: KanbanCard;
|
|
189
|
+
/** The id of the column the card is in, or null when it is unplaced. */
|
|
99
190
|
column: string | null;
|
|
191
|
+
/**
|
|
192
|
+
* The card's element, for a host that wants to anchor a popover to it. Absent on a
|
|
193
|
+
* headless board.
|
|
194
|
+
*/
|
|
100
195
|
el?: unknown;
|
|
196
|
+
/**
|
|
197
|
+
* The DOM event that caused this one, so a host can read modifier keys or call
|
|
198
|
+
* `preventDefault`.
|
|
199
|
+
*/
|
|
101
200
|
originalEvent?: unknown;
|
|
102
201
|
}
|
|
103
202
|
|
|
@@ -161,8 +260,17 @@ interface KanbanSlaConfig {
|
|
|
161
260
|
|
|
162
261
|
/** The computed SLA state of one card. */
|
|
163
262
|
interface KanbanSlaState {
|
|
263
|
+
/** The card this ageing state belongs to. */
|
|
164
264
|
key: unknown;
|
|
265
|
+
/**
|
|
266
|
+
* The column the card was in when it was aged — the thresholds are looked up per
|
|
267
|
+
* column.
|
|
268
|
+
*/
|
|
165
269
|
columnId: string | null;
|
|
270
|
+
/**
|
|
271
|
+
* The card's swimlane value, for a per-lane threshold. Undefined on a board without
|
|
272
|
+
* swimlanes.
|
|
273
|
+
*/
|
|
166
274
|
lane?: unknown;
|
|
167
275
|
/** The ageing-clock start epoch (ms), or null when no time source could be resolved. */
|
|
168
276
|
start: number | null;
|
|
@@ -213,7 +321,13 @@ interface KanbanSla {
|
|
|
213
321
|
* swimlane property) and any customer schema without code change.
|
|
214
322
|
*/
|
|
215
323
|
interface KanbanConfig {
|
|
324
|
+
/** The source rows, one per card. Use this or `grid`, not both — `rows` wins. */
|
|
216
325
|
rows?: KanbanRow[];
|
|
326
|
+
/**
|
|
327
|
+
* A Lattice grid to bind to instead of `rows`: the board reads the grid's displayed
|
|
328
|
+
* rows through its own value pipeline and writes moves back through it. On a bound
|
|
329
|
+
* board `rows.apply` and `setRows` are ignored with a warning.
|
|
330
|
+
*/
|
|
217
331
|
grid?: unknown;
|
|
218
332
|
/**
|
|
219
333
|
* Card identity (a field or fn, returning a string or number); default
|
|
@@ -222,12 +336,40 @@ interface KanbanConfig {
|
|
|
222
336
|
* join into here.
|
|
223
337
|
*/
|
|
224
338
|
rowKey?: string | ((row: KanbanRow) => string | number);
|
|
339
|
+
/**
|
|
340
|
+
* The row property whose value puts a card in a column. Without it (and without `grid`
|
|
341
|
+
* or `columns`) the board warns and shows nothing.
|
|
342
|
+
*/
|
|
225
343
|
columnProperty?: string;
|
|
344
|
+
/**
|
|
345
|
+
* The columns to show, as ids or `{ id, title, color, wipLimit, collapsed, done }`.
|
|
346
|
+
* Configured columns appear even when empty; a group value outside them still gets a
|
|
347
|
+
* column of its own, appended, so no card is dropped.
|
|
348
|
+
*/
|
|
226
349
|
columns?: KanbanColumnDef[];
|
|
350
|
+
/**
|
|
351
|
+
* Pins the leading column order by id; anything not named keeps its natural position
|
|
352
|
+
* after the pinned ones. A user reorder replaces this.
|
|
353
|
+
*/
|
|
227
354
|
columnOrder?: string[];
|
|
355
|
+
/** The row property summed into each column header's points figure. */
|
|
228
356
|
pointsProperty?: string;
|
|
357
|
+
/**
|
|
358
|
+
* Show the points sum in each column and lane header (default false). It needs
|
|
359
|
+
* `pointsProperty` too.
|
|
360
|
+
*/
|
|
229
361
|
showPoints?: boolean;
|
|
362
|
+
/**
|
|
363
|
+
* The row property that ranks cards within a column. Set it to make dropping a card at
|
|
364
|
+
* a position meaningful: a move then writes a new order value. Without it cards stay in
|
|
365
|
+
* arrival order.
|
|
366
|
+
*/
|
|
230
367
|
orderProperty?: string;
|
|
368
|
+
/**
|
|
369
|
+
* The row property that puts a card in a swimlane. Naming it does not switch on the
|
|
370
|
+
* lane layout — set `swimlanes` for that — but it does let a cross-lane drop write the
|
|
371
|
+
* lane back.
|
|
372
|
+
*/
|
|
231
373
|
swimlaneProperty?: string;
|
|
232
374
|
/** Render the 2D swimlane layout using `swimlaneProperty` (default false). */
|
|
233
375
|
swimlanes?: boolean;
|
|
@@ -239,7 +381,15 @@ interface KanbanConfig {
|
|
|
239
381
|
enforceWip?: boolean;
|
|
240
382
|
/** A custom card template: return an HTML string or a DOM node to own the whole card body. */
|
|
241
383
|
cardRenderer?: (card: KanbanCard, ctx: { column: KanbanColumn; readonly: boolean; el: HTMLElement; doc: Document }) => string | Node | void;
|
|
384
|
+
/**
|
|
385
|
+
* The row property holding a card's sprint, which `setSprint` and the sprint selection
|
|
386
|
+
* filter on.
|
|
387
|
+
*/
|
|
242
388
|
sprintProperty?: string;
|
|
389
|
+
/**
|
|
390
|
+
* The row property holding a card's epic, which `setEpic` and the epic selection filter
|
|
391
|
+
* on.
|
|
392
|
+
*/
|
|
243
393
|
epicProperty?: string;
|
|
244
394
|
/** A configurable sprint dataset: the canonical sprint list (order + titles), shown even when empty. */
|
|
245
395
|
sprints?: (string | { id: unknown; title?: string })[];
|
|
@@ -276,9 +426,23 @@ interface KanbanConfig {
|
|
|
276
426
|
filter?: (row: KanbanRow, card: KanbanCard) => boolean;
|
|
277
427
|
/** Quick-filter text matched case-insensitively across card fields. */
|
|
278
428
|
quickFilter?: string;
|
|
429
|
+
/**
|
|
430
|
+
* Maps the card template's slots — title, subtitle, labels, assignee, due, cover,
|
|
431
|
+
* progress, badges, accent — to row properties, and opts a slot into inline edit. Any
|
|
432
|
+
* other name is carried as an extra field on `KanbanCard.fields`.
|
|
433
|
+
*/
|
|
279
434
|
card?: KanbanCardMap;
|
|
435
|
+
/**
|
|
436
|
+
* Blocks edits and moves: `true` for the whole board, or a map singling out columns and
|
|
437
|
+
* cards by id and key. Default false.
|
|
438
|
+
*/
|
|
280
439
|
readonly?: KanbanReadonly;
|
|
440
|
+
/** The board's accessible name. Defaults to `Board`. */
|
|
281
441
|
ariaLabel?: string;
|
|
442
|
+
/**
|
|
443
|
+
* The placeholder shown in a column with no cards. Empty by default, so the module
|
|
444
|
+
* ships no English of its own.
|
|
445
|
+
*/
|
|
282
446
|
emptyText?: string;
|
|
283
447
|
/** Whether card selection is enabled (default true). */
|
|
284
448
|
selectable?: boolean;
|
|
@@ -297,8 +461,17 @@ interface KanbanConfig {
|
|
|
297
461
|
onCardMove?: (event: KanbanMoveEvent) => boolean | void | Promise<boolean | void>;
|
|
298
462
|
/** A per-card context menu: items, or `fn(card, selectedCards)` returning items. Suppresses `card:contextmenu`. */
|
|
299
463
|
contextMenu?: KanbanMenuItem[] | ((card: KanbanCard, selected: KanbanCard[]) => KanbanMenuItem[]);
|
|
464
|
+
/**
|
|
465
|
+
* Called when a card is clicked, with the same payload as the `card:click` event. Both
|
|
466
|
+
* fire: this does not replace a registered handler.
|
|
467
|
+
*/
|
|
300
468
|
onCardClick?: (event: KanbanEvent) => void;
|
|
469
|
+
/** Called when a card is double-clicked, alongside the `card:dblclick` event. */
|
|
301
470
|
onCardDblClick?: (event: KanbanEvent) => void;
|
|
471
|
+
/**
|
|
472
|
+
* Called on a card's context-menu gesture, alongside the `card:contextmenu` event. A
|
|
473
|
+
* configured `contextMenu` suppresses both.
|
|
474
|
+
*/
|
|
302
475
|
onCardContextMenu?: (event: KanbanEvent) => void;
|
|
303
476
|
}
|
|
304
477
|
|
|
@@ -332,25 +505,48 @@ interface KanbanChildren {
|
|
|
332
505
|
|
|
333
506
|
/** One context-menu item. `action` receives the card, the selected cards, and the board. */
|
|
334
507
|
interface KanbanMenuItem {
|
|
508
|
+
/** The item's text in the menu. */
|
|
335
509
|
label: string;
|
|
510
|
+
/**
|
|
511
|
+
* Runs when the item is chosen, with the clicked card, the selected cards (the clicked
|
|
512
|
+
* one when nothing is selected) and the board. Not called on a disabled item.
|
|
513
|
+
*/
|
|
336
514
|
action?: (ctx: { card: KanbanCard; cards: KanbanCard[]; board: Kanban }) => void;
|
|
515
|
+
/** Greys the item out and ignores clicks on it. */
|
|
337
516
|
disabled?: boolean;
|
|
338
517
|
}
|
|
339
518
|
|
|
340
519
|
/** The payload of a `card:move` (and `card:reverted`) event. */
|
|
341
520
|
interface KanbanMoveEvent {
|
|
521
|
+
/** The keys of the cards that actually moved — the ones no `beforeMove` veto refused. */
|
|
342
522
|
keys: unknown[];
|
|
523
|
+
/** The moved cards, in the same order as `keys`. */
|
|
343
524
|
cards: KanbanCard[];
|
|
525
|
+
/** Where each card came from, one column id (or null for unplaced) per moved card. */
|
|
344
526
|
from: (string | null)[];
|
|
527
|
+
/** The column the cards landed in. */
|
|
345
528
|
to: string;
|
|
529
|
+
/** The position asked for within the target column, or null for the end. */
|
|
346
530
|
index: number | null;
|
|
531
|
+
/**
|
|
532
|
+
* The new order values written to `orderProperty`, one per moved card — computed to sit
|
|
533
|
+
* between the neighbours at the drop point. Null when no order property is configured.
|
|
534
|
+
*/
|
|
347
535
|
orders: number[] | null;
|
|
348
536
|
}
|
|
349
537
|
|
|
350
538
|
/** The keyed-diff consumer surface a board shares with a grid, so a Data Router routes to it directly. */
|
|
351
539
|
interface KanbanRows {
|
|
540
|
+
/**
|
|
541
|
+
* Apply a keyed diff: `add` replaces whatever row each key names, `update` merges its
|
|
542
|
+
* fields into the stored row (so a patch need only carry what changed), `remove` drops
|
|
543
|
+
* the keys. The board regroups and repaints, keeping scroll, focus, selection, collapse
|
|
544
|
+
* and any open pop-out. Ignored with a warning on a grid-bound board.
|
|
545
|
+
*/
|
|
352
546
|
apply(change: { add?: KanbanRow[]; update?: KanbanRow[]; remove?: unknown[] }): void;
|
|
547
|
+
/** Visit every row the board holds, with its key. */
|
|
353
548
|
forEach(fn: (row: KanbanRow, key: unknown) => void): void;
|
|
549
|
+
/** How many rows the board holds, before filtering. */
|
|
354
550
|
readonly count: number;
|
|
355
551
|
}
|
|
356
552
|
|
|
@@ -381,20 +577,43 @@ interface KanbanFilters {
|
|
|
381
577
|
* viewer.
|
|
382
578
|
*/
|
|
383
579
|
interface Kanban {
|
|
580
|
+
/** The element the board renders into, or null for a headless board. */
|
|
384
581
|
readonly el: unknown | null;
|
|
385
582
|
/** The resolved card identity; see `KanbanConfig.rowKey`. */
|
|
386
583
|
readonly rowKey: string | ((row: KanbanRow) => string | number);
|
|
584
|
+
/**
|
|
585
|
+
* The keyed-diff consumer surface, the same shape a grid exposes — this is what makes a
|
|
586
|
+
* board a Data Router target.
|
|
587
|
+
*/
|
|
387
588
|
rows: KanbanRows;
|
|
388
589
|
/** The card-aging / SLA monitor, present only when a `sla` config was supplied. */
|
|
389
590
|
sla?: KanbanSla;
|
|
591
|
+
/** The current columns in display order, each with its cards and aggregates. */
|
|
390
592
|
columns(): KanbanColumn[];
|
|
593
|
+
/** One column by id, or undefined when the board has no such column. */
|
|
391
594
|
column(id: string): KanbanColumn | undefined;
|
|
595
|
+
/** How many cards a column holds after filtering; 0 for an unknown column. */
|
|
392
596
|
count(id: string): number;
|
|
597
|
+
/** A column's points sum; 0 for an unknown column. */
|
|
393
598
|
points(id: string): number;
|
|
599
|
+
/** Every card on the board, unplaced ones included, in no particular column order. */
|
|
394
600
|
cards(): KanbanCard[];
|
|
601
|
+
/**
|
|
602
|
+
* One card by key, or undefined when no card has that key (it may have been filtered
|
|
603
|
+
* out).
|
|
604
|
+
*/
|
|
395
605
|
card(key: unknown): KanbanCard | undefined;
|
|
606
|
+
/**
|
|
607
|
+
* Register an event handler; returns a function that removes it. An unrecognised event
|
|
608
|
+
* name is warned about once, because it names a binding that could never fire.
|
|
609
|
+
*/
|
|
396
610
|
on(name: string, fn: (event: KanbanEvent) => void): () => void;
|
|
611
|
+
/** Remove a handler registered with `on`. */
|
|
397
612
|
off(name: string, fn: (event: KanbanEvent) => void): void;
|
|
613
|
+
/**
|
|
614
|
+
* Whether editing is blocked — for the whole board, or for the column or card named in
|
|
615
|
+
* the scope.
|
|
616
|
+
*/
|
|
398
617
|
readonly(scope?: { column?: string; card?: unknown }): boolean;
|
|
399
618
|
/**
|
|
400
619
|
* Move one or more cards to a column (and, with an order property, to a
|
|
@@ -476,6 +695,10 @@ interface Kanban {
|
|
|
476
695
|
setLoading(loading: boolean): Kanban;
|
|
477
696
|
/** Set (or clear with null) an error state, rendered as a host-supplied message. */
|
|
478
697
|
setError(message: string | null): Kanban;
|
|
698
|
+
/**
|
|
699
|
+
* Replace the source rows and re-render, and make that array the board's source again
|
|
700
|
+
* so a later `refresh()` re-reads it. Ignored with a warning on a grid-bound board.
|
|
701
|
+
*/
|
|
479
702
|
setRows(rows: KanbanRow[]): Kanban;
|
|
480
703
|
/**
|
|
481
704
|
* Replace the board's configured column set. Keeps card
|
|
@@ -486,7 +709,16 @@ interface Kanban {
|
|
|
486
709
|
* "never silently drop a card" rule an unconfigured value already gets).
|
|
487
710
|
*/
|
|
488
711
|
setColumns(defs: KanbanColumnDef[]): Kanban;
|
|
712
|
+
/**
|
|
713
|
+
* Re-read the source and re-render: a bound grid's rows, or the configured array. Once
|
|
714
|
+
* rows have arrived through `rows.apply` nothing is re-read — the board regroups what
|
|
715
|
+
* it holds, so a routed feed is never thrown away.
|
|
716
|
+
*/
|
|
489
717
|
refresh(): Kanban;
|
|
718
|
+
/**
|
|
719
|
+
* Empty the element, remove only the class the board added, and stop the flow and SLA
|
|
720
|
+
* monitors. A bound grid is left alone — the host owns it.
|
|
721
|
+
*/
|
|
490
722
|
destroy(): void;
|
|
491
723
|
}
|
|
492
724
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.
|
|
2
|
+
* Lattice Grid 1.68.1, kanban module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -52,12 +52,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
|
|
|
52
52
|
Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
|
|
53
53
|
Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
|
|
54
54
|
Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
|
|
55
|
-
const STAMPED_VERSION="1.
|
|
55
|
+
const STAMPED_VERSION="1.68.1";
|
|
56
56
|
async function resolveVersion(){
|
|
57
57
|
if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
|
|
58
58
|
return STAMPED_VERSION;
|
|
59
59
|
}
|
|
60
|
-
const VERSION="1.
|
|
60
|
+
const VERSION="1.68.1";
|
|
61
61
|
const warned=new Set();
|
|
62
62
|
const WARNED_LIMIT=2000;
|
|
63
63
|
function rememberWarned(key){
|
package/modules/kanban.min.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.
|
|
2
|
+
* Lattice Grid 1.68.1, kanban module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
|
|
|
54
54
|
Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
|
|
55
55
|
Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
|
|
56
56
|
Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
|
|
57
|
-
const STAMPED_VERSION="1.
|
|
57
|
+
const STAMPED_VERSION="1.68.1";
|
|
58
58
|
async function resolveVersion(){
|
|
59
59
|
if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
|
|
60
60
|
return STAMPED_VERSION;
|
|
61
61
|
}
|
|
62
|
-
const VERSION="1.
|
|
62
|
+
const VERSION="1.68.1";
|
|
63
63
|
const warned=new Set();
|
|
64
64
|
const WARNED_LIMIT=2000;
|
|
65
65
|
function rememberWarned(key){
|
package/modules/kanban.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.
|
|
2
|
+
* Lattice Grid 1.68.1, kanban module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
|
|
|
54
54
|
Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
|
|
55
55
|
Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
|
|
56
56
|
Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
|
|
57
|
-
const STAMPED_VERSION="1.
|
|
57
|
+
const STAMPED_VERSION="1.68.1";
|
|
58
58
|
async function resolveVersion(){
|
|
59
59
|
if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
|
|
60
60
|
return STAMPED_VERSION;
|
|
61
61
|
}
|
|
62
|
-
const VERSION="1.
|
|
62
|
+
const VERSION="1.68.1";
|
|
63
63
|
const warned=new Set();
|
|
64
64
|
const WARNED_LIMIT=2000;
|
|
65
65
|
function rememberWarned(key){
|