@toolbox-web/grid 1.26.2 → 1.27.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.
Files changed (115) hide show
  1. package/all.js +2 -2
  2. package/all.js.map +1 -1
  3. package/custom-elements.json +1493 -0
  4. package/index.js +1 -1
  5. package/index.js.map +1 -1
  6. package/lib/core/grid.d.ts +64 -1
  7. package/lib/core/internal/diagnostics.d.ts +4 -3
  8. package/lib/core/internal/row-manager.d.ts +3 -1
  9. package/lib/core/plugin/base-plugin.d.ts +2 -2
  10. package/lib/core/types.d.ts +59 -3
  11. package/lib/features/registry.js.map +1 -1
  12. package/lib/plugins/clipboard/ClipboardPlugin.d.ts +1 -1
  13. package/lib/plugins/clipboard/index.js.map +1 -1
  14. package/lib/plugins/column-virtualization/index.js.map +1 -1
  15. package/lib/plugins/context-menu/ContextMenuPlugin.d.ts +24 -5
  16. package/lib/plugins/context-menu/index.js.map +1 -1
  17. package/lib/plugins/editing/EditingPlugin.d.ts +1 -1
  18. package/lib/plugins/editing/index.js.map +1 -1
  19. package/lib/plugins/export/ExportPlugin.d.ts +1 -1
  20. package/lib/plugins/export/index.js.map +1 -1
  21. package/lib/plugins/filtering/index.d.ts +2 -2
  22. package/lib/plugins/filtering/index.js +1 -1
  23. package/lib/plugins/filtering/index.js.map +1 -1
  24. package/lib/plugins/grouping-columns/GroupingColumnsPlugin.d.ts +2 -2
  25. package/lib/plugins/grouping-columns/grouping-columns.d.ts +18 -3
  26. package/lib/plugins/grouping-columns/index.d.ts +0 -1
  27. package/lib/plugins/grouping-columns/index.js +1 -1
  28. package/lib/plugins/grouping-columns/index.js.map +1 -1
  29. package/lib/plugins/grouping-columns/types.d.ts +1 -7
  30. package/lib/plugins/grouping-rows/index.d.ts +2 -1
  31. package/lib/plugins/grouping-rows/index.js +1 -1
  32. package/lib/plugins/grouping-rows/index.js.map +1 -1
  33. package/lib/plugins/master-detail/MasterDetailPlugin.d.ts +2 -0
  34. package/lib/plugins/master-detail/index.js +1 -1
  35. package/lib/plugins/master-detail/index.js.map +1 -1
  36. package/lib/plugins/master-detail/types.d.ts +20 -1
  37. package/lib/plugins/multi-sort/index.js.map +1 -1
  38. package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts +8 -1
  39. package/lib/plugins/pinned-columns/index.js +1 -1
  40. package/lib/plugins/pinned-columns/index.js.map +1 -1
  41. package/lib/plugins/pinned-columns/pinned-columns.d.ts +11 -1
  42. package/lib/plugins/pinned-rows/index.d.ts +1 -1
  43. package/lib/plugins/pinned-rows/index.js +1 -1
  44. package/lib/plugins/pinned-rows/index.js.map +1 -1
  45. package/lib/plugins/pinned-rows/types.d.ts +10 -3
  46. package/lib/plugins/pivot/PivotPlugin.d.ts +107 -1
  47. package/lib/plugins/pivot/index.d.ts +2 -1
  48. package/lib/plugins/pivot/index.js +1 -1
  49. package/lib/plugins/pivot/index.js.map +1 -1
  50. package/lib/plugins/print/index.js.map +1 -1
  51. package/lib/plugins/print/types.d.ts +0 -3
  52. package/lib/plugins/reorder-columns/ReorderPlugin.d.ts +19 -2
  53. package/lib/plugins/reorder-columns/index.js +1 -1
  54. package/lib/plugins/reorder-columns/index.js.map +1 -1
  55. package/lib/plugins/reorder-rows/index.d.ts +1 -1
  56. package/lib/plugins/reorder-rows/index.js.map +1 -1
  57. package/lib/plugins/responsive/ResponsivePlugin.d.ts +1 -1
  58. package/lib/plugins/responsive/index.js +1 -1
  59. package/lib/plugins/responsive/index.js.map +1 -1
  60. package/lib/plugins/selection/SelectionPlugin.d.ts +1 -1
  61. package/lib/plugins/selection/index.js +1 -1
  62. package/lib/plugins/selection/index.js.map +1 -1
  63. package/lib/plugins/selection/types.d.ts +3 -3
  64. package/lib/plugins/server-side/ServerSidePlugin.d.ts +6 -1
  65. package/lib/plugins/server-side/index.js +1 -1
  66. package/lib/plugins/server-side/index.js.map +1 -1
  67. package/lib/plugins/tree/TreePlugin.d.ts +116 -0
  68. package/lib/plugins/tree/index.d.ts +1 -1
  69. package/lib/plugins/tree/index.js +1 -1
  70. package/lib/plugins/tree/index.js.map +1 -1
  71. package/lib/plugins/tree/types.d.ts +16 -1
  72. package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts +1 -1
  73. package/lib/plugins/undo-redo/index.js.map +1 -1
  74. package/lib/plugins/undo-redo/types.d.ts +15 -3
  75. package/lib/plugins/visibility/VisibilityPlugin.d.ts +18 -5
  76. package/lib/plugins/visibility/index.js +1 -1
  77. package/lib/plugins/visibility/index.js.map +1 -1
  78. package/package.json +1 -1
  79. package/public.d.ts +2 -4
  80. package/themes/dg-theme-material.css +16 -4
  81. package/umd/grid.all.umd.js +1 -1
  82. package/umd/grid.all.umd.js.map +1 -1
  83. package/umd/grid.umd.js +1 -1
  84. package/umd/grid.umd.js.map +1 -1
  85. package/umd/plugins/clipboard.umd.js.map +1 -1
  86. package/umd/plugins/context-menu.umd.js.map +1 -1
  87. package/umd/plugins/editing.umd.js.map +1 -1
  88. package/umd/plugins/export.umd.js.map +1 -1
  89. package/umd/plugins/filtering.umd.js +1 -1
  90. package/umd/plugins/filtering.umd.js.map +1 -1
  91. package/umd/plugins/grouping-columns.umd.js +1 -1
  92. package/umd/plugins/grouping-columns.umd.js.map +1 -1
  93. package/umd/plugins/grouping-rows.umd.js +1 -1
  94. package/umd/plugins/grouping-rows.umd.js.map +1 -1
  95. package/umd/plugins/master-detail.umd.js +1 -1
  96. package/umd/plugins/master-detail.umd.js.map +1 -1
  97. package/umd/plugins/pinned-columns.umd.js +1 -1
  98. package/umd/plugins/pinned-columns.umd.js.map +1 -1
  99. package/umd/plugins/pinned-rows.umd.js +1 -1
  100. package/umd/plugins/pinned-rows.umd.js.map +1 -1
  101. package/umd/plugins/pivot.umd.js +1 -1
  102. package/umd/plugins/pivot.umd.js.map +1 -1
  103. package/umd/plugins/reorder-columns.umd.js +1 -1
  104. package/umd/plugins/reorder-columns.umd.js.map +1 -1
  105. package/umd/plugins/responsive.umd.js +1 -1
  106. package/umd/plugins/responsive.umd.js.map +1 -1
  107. package/umd/plugins/selection.umd.js +1 -1
  108. package/umd/plugins/selection.umd.js.map +1 -1
  109. package/umd/plugins/server-side.umd.js +1 -1
  110. package/umd/plugins/server-side.umd.js.map +1 -1
  111. package/umd/plugins/tree.umd.js +1 -1
  112. package/umd/plugins/tree.umd.js.map +1 -1
  113. package/umd/plugins/undo-redo.umd.js.map +1 -1
  114. package/umd/plugins/visibility.umd.js +1 -1
  115. package/umd/plugins/visibility.umd.js.map +1 -1
@@ -0,0 +1,1493 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "README.md",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "src/lib/core/grid.ts",
8
+ "declarations": [
9
+ {
10
+ "kind": "class",
11
+ "description": "",
12
+ "name": "DataGridElement",
13
+ "members": [
14
+ {
15
+ "kind": "field",
16
+ "name": "tagName",
17
+ "type": {
18
+ "text": "string"
19
+ },
20
+ "static": true,
21
+ "readonly": true,
22
+ "default": "'tbw-grid'"
23
+ },
24
+ {
25
+ "kind": "field",
26
+ "name": "version",
27
+ "static": true,
28
+ "readonly": true,
29
+ "description": "Version of the grid component, injected at build time from package.json"
30
+ },
31
+ {
32
+ "kind": "method",
33
+ "name": "registerAdapter",
34
+ "static": true,
35
+ "return": {
36
+ "type": {
37
+ "text": "void"
38
+ }
39
+ },
40
+ "parameters": [
41
+ {
42
+ "name": "adapter",
43
+ "type": {
44
+ "text": "FrameworkAdapter"
45
+ }
46
+ }
47
+ ],
48
+ "description": "Register a framework adapter for handling framework-specific components.\nAdapters are checked in registration order when processing light DOM templates."
49
+ },
50
+ {
51
+ "kind": "method",
52
+ "name": "getAdapters",
53
+ "static": true,
54
+ "return": {
55
+ "type": {
56
+ "text": "readonly FrameworkAdapter[]"
57
+ }
58
+ },
59
+ "description": "Get all registered framework adapters.\nUsed internally by light DOM parsing to find adapters that can handle templates."
60
+ },
61
+ {
62
+ "kind": "method",
63
+ "name": "clearAdapters",
64
+ "static": true,
65
+ "return": {
66
+ "type": {
67
+ "text": "void"
68
+ }
69
+ },
70
+ "description": "Clear all registered adapters (primarily for testing)."
71
+ },
72
+ {
73
+ "kind": "field",
74
+ "name": "rows",
75
+ "type": {
76
+ "text": "T[]"
77
+ },
78
+ "description": "Get or set the row data displayed in the grid.\n\nThe getter returns processed rows (after filtering, sorting, grouping by plugins).\nThe setter accepts new source data and triggers a re-render."
79
+ },
80
+ {
81
+ "kind": "field",
82
+ "name": "sourceRows",
83
+ "type": {
84
+ "text": "T[]"
85
+ },
86
+ "description": "Get the original unfiltered/unprocessed source rows.\n\nUse this when you need access to all source data regardless of active\nfilters, sorting, or grouping applied by plugins. The `rows` property\nreturns processed data, while `sourceRows` returns the original input."
87
+ },
88
+ {
89
+ "kind": "field",
90
+ "name": "columns",
91
+ "type": {
92
+ "text": "ColumnConfig<T>[]"
93
+ },
94
+ "description": "Get or set the column configurations.\n\nThe getter returns processed columns (after plugin transformations).\nThe setter accepts an array of column configs or a column config map."
95
+ },
96
+ {
97
+ "kind": "field",
98
+ "name": "gridConfig",
99
+ "type": {
100
+ "text": "GridConfig<T>"
101
+ },
102
+ "description": "Get or set the full grid configuration object.\n\nThe getter returns the effective (merged) configuration.\nThe setter accepts a new configuration and triggers a full re-render."
103
+ },
104
+ {
105
+ "kind": "field",
106
+ "name": "fitMode",
107
+ "type": {
108
+ "text": "FitMode"
109
+ },
110
+ "description": "Get or set the column sizing mode.\n\n- `'stretch'` (default): Columns stretch to fill available width\n- `'fixed'`: Columns use explicit widths; horizontal scroll if needed\n- `'auto'`: Columns auto-size to content on initial render"
111
+ },
112
+ {
113
+ "kind": "field",
114
+ "name": "loading",
115
+ "type": {
116
+ "text": "boolean"
117
+ },
118
+ "description": "Whether the grid is currently in a loading state.\nWhen true, displays a loading overlay with spinner (or custom loadingRenderer)."
119
+ },
120
+ {
121
+ "kind": "method",
122
+ "name": "setRowLoading",
123
+ "return": {
124
+ "type": {
125
+ "text": "void"
126
+ }
127
+ },
128
+ "parameters": [
129
+ {
130
+ "name": "rowId",
131
+ "type": {
132
+ "text": "string"
133
+ },
134
+ "description": "The row's unique identifier (from getRowId)"
135
+ },
136
+ {
137
+ "name": "loading",
138
+ "type": {
139
+ "text": "boolean"
140
+ },
141
+ "description": "Whether the row is loading"
142
+ }
143
+ ],
144
+ "description": "Set loading state for a specific row.\nShows a small spinner indicator on the row."
145
+ },
146
+ {
147
+ "kind": "method",
148
+ "name": "setCellLoading",
149
+ "return": {
150
+ "type": {
151
+ "text": "void"
152
+ }
153
+ },
154
+ "parameters": [
155
+ {
156
+ "name": "rowId",
157
+ "type": {
158
+ "text": "string"
159
+ },
160
+ "description": "The row's unique identifier"
161
+ },
162
+ {
163
+ "name": "field",
164
+ "type": {
165
+ "text": "string"
166
+ },
167
+ "description": "The column field"
168
+ },
169
+ {
170
+ "name": "loading",
171
+ "type": {
172
+ "text": "boolean"
173
+ },
174
+ "description": "Whether the cell is loading"
175
+ }
176
+ ],
177
+ "description": "Set loading state for a specific cell.\nShows a small spinner indicator on the cell."
178
+ },
179
+ {
180
+ "kind": "method",
181
+ "name": "isRowLoading",
182
+ "return": {
183
+ "type": {
184
+ "text": "boolean"
185
+ }
186
+ },
187
+ "parameters": [
188
+ {
189
+ "name": "rowId",
190
+ "type": {
191
+ "text": "string"
192
+ },
193
+ "description": "The row's unique identifier"
194
+ }
195
+ ],
196
+ "description": "Check if a row is currently in loading state."
197
+ },
198
+ {
199
+ "kind": "method",
200
+ "name": "isCellLoading",
201
+ "return": {
202
+ "type": {
203
+ "text": "boolean"
204
+ }
205
+ },
206
+ "parameters": [
207
+ {
208
+ "name": "rowId",
209
+ "type": {
210
+ "text": "string"
211
+ },
212
+ "description": "The row's unique identifier"
213
+ },
214
+ {
215
+ "name": "field",
216
+ "type": {
217
+ "text": "string"
218
+ },
219
+ "description": "The column field"
220
+ }
221
+ ],
222
+ "description": "Check if a cell is currently in loading state."
223
+ },
224
+ {
225
+ "kind": "method",
226
+ "name": "clearAllLoading",
227
+ "return": {
228
+ "type": {
229
+ "text": "void"
230
+ }
231
+ },
232
+ "description": "Clear all row and cell loading states."
233
+ },
234
+ {
235
+ "kind": "method",
236
+ "name": "getPlugin",
237
+ "return": {
238
+ "type": {
239
+ "text": ""
240
+ }
241
+ },
242
+ "parameters": [
243
+ {
244
+ "name": "PluginClass",
245
+ "type": {
246
+ "text": "new (...args: any[]) => P"
247
+ },
248
+ "description": "The plugin class (constructor) to look up."
249
+ }
250
+ ],
251
+ "description": "Get a plugin instance by its class constructor.\n\n**Prefer getPluginByName** for most use cases — it avoids importing the plugin class\nand returns the actual instance registered in the grid."
252
+ },
253
+ {
254
+ "kind": "method",
255
+ "name": "getPluginByName",
256
+ "return": {
257
+ "type": {
258
+ "text": ""
259
+ }
260
+ },
261
+ "parameters": [
262
+ {
263
+ "name": "name",
264
+ "type": {
265
+ "text": "K"
266
+ },
267
+ "description": "The plugin name (matches {@link BaseGridPlugin.name}).\n * "
268
+ }
269
+ ],
270
+ "description": "Get a plugin instance by its string name.\nUseful for loose coupling when you don't want to import the plugin class\n(e.g., in framework adapters or dynamic scenarios)."
271
+ },
272
+ {
273
+ "kind": "method",
274
+ "name": "addEventListener",
275
+ "return": {
276
+ "type": {
277
+ "text": "void"
278
+ }
279
+ },
280
+ "parameters": [
281
+ {
282
+ "name": "type",
283
+ "type": {
284
+ "text": "K"
285
+ }
286
+ },
287
+ {
288
+ "name": "listener",
289
+ "type": {
290
+ "text": "(this: DataGridElement<T>, ev: CustomEvent<DataGridEventMap<T>[K]>) => void"
291
+ }
292
+ },
293
+ {
294
+ "name": "options",
295
+ "optional": true,
296
+ "type": {
297
+ "text": "boolean | AddEventListenerOptions"
298
+ }
299
+ }
300
+ ],
301
+ "description": "Add a typed event listener for grid events.\n\nThis override provides type-safe event handling for DataGrid-specific events.\nThe event detail is automatically typed based on the event name.\n\n**Prefer on| grid.on()** for most use cases — it auto-unwraps the\ndetail payload and returns an unsubscribe function for easy cleanup.\n\nUse `addEventListener` when you need standard DOM options like `once`,\n`capture`, `passive`, or `signal` (AbortController)."
302
+ },
303
+ {
304
+ "kind": "method",
305
+ "name": "addEventListener",
306
+ "return": {
307
+ "type": {
308
+ "text": "void"
309
+ }
310
+ },
311
+ "parameters": [
312
+ {
313
+ "name": "type",
314
+ "type": {
315
+ "text": "string"
316
+ }
317
+ },
318
+ {
319
+ "name": "listener",
320
+ "type": {
321
+ "text": "EventListenerOrEventListenerObject"
322
+ }
323
+ },
324
+ {
325
+ "name": "options",
326
+ "optional": true,
327
+ "type": {
328
+ "text": "boolean | AddEventListenerOptions"
329
+ }
330
+ }
331
+ ]
332
+ },
333
+ {
334
+ "kind": "method",
335
+ "name": "addEventListener",
336
+ "return": {
337
+ "type": {
338
+ "text": "void"
339
+ }
340
+ },
341
+ "parameters": [
342
+ {
343
+ "name": "type",
344
+ "type": {
345
+ "text": "string"
346
+ }
347
+ },
348
+ {
349
+ "name": "listener",
350
+ "type": {
351
+ "text": "EventListenerOrEventListenerObject | ((ev: CustomEvent) => void)"
352
+ }
353
+ },
354
+ {
355
+ "name": "options",
356
+ "optional": true,
357
+ "type": {
358
+ "text": "boolean | AddEventListenerOptions"
359
+ }
360
+ }
361
+ ]
362
+ },
363
+ {
364
+ "kind": "method",
365
+ "name": "removeEventListener",
366
+ "return": {
367
+ "type": {
368
+ "text": "void"
369
+ }
370
+ },
371
+ "parameters": [
372
+ {
373
+ "name": "type",
374
+ "type": {
375
+ "text": "K"
376
+ }
377
+ },
378
+ {
379
+ "name": "listener",
380
+ "type": {
381
+ "text": "(this: DataGridElement<T>, ev: CustomEvent<DataGridEventMap<T>[K]>) => void"
382
+ }
383
+ },
384
+ {
385
+ "name": "options",
386
+ "optional": true,
387
+ "type": {
388
+ "text": "boolean | EventListenerOptions"
389
+ }
390
+ }
391
+ ],
392
+ "description": "Remove a typed event listener for grid events."
393
+ },
394
+ {
395
+ "kind": "method",
396
+ "name": "removeEventListener",
397
+ "return": {
398
+ "type": {
399
+ "text": "void"
400
+ }
401
+ },
402
+ "parameters": [
403
+ {
404
+ "name": "type",
405
+ "type": {
406
+ "text": "string"
407
+ }
408
+ },
409
+ {
410
+ "name": "listener",
411
+ "type": {
412
+ "text": "EventListenerOrEventListenerObject"
413
+ }
414
+ },
415
+ {
416
+ "name": "options",
417
+ "optional": true,
418
+ "type": {
419
+ "text": "boolean | EventListenerOptions"
420
+ }
421
+ }
422
+ ]
423
+ },
424
+ {
425
+ "kind": "method",
426
+ "name": "removeEventListener",
427
+ "return": {
428
+ "type": {
429
+ "text": "void"
430
+ }
431
+ },
432
+ "parameters": [
433
+ {
434
+ "name": "type",
435
+ "type": {
436
+ "text": "string"
437
+ }
438
+ },
439
+ {
440
+ "name": "listener",
441
+ "type": {
442
+ "text": "EventListenerOrEventListenerObject | ((ev: CustomEvent) => void)"
443
+ }
444
+ },
445
+ {
446
+ "name": "options",
447
+ "optional": true,
448
+ "type": {
449
+ "text": "boolean | EventListenerOptions"
450
+ }
451
+ }
452
+ ]
453
+ },
454
+ {
455
+ "kind": "method",
456
+ "name": "on",
457
+ "return": {
458
+ "type": {
459
+ "text": "() => void"
460
+ }
461
+ },
462
+ "parameters": [
463
+ {
464
+ "name": "type",
465
+ "type": {
466
+ "text": "K"
467
+ }
468
+ },
469
+ {
470
+ "name": "listener",
471
+ "type": {
472
+ "text": "(detail: DataGridEventMap<T>[K], event: CustomEvent<DataGridEventMap<T>[K]>) => void"
473
+ }
474
+ }
475
+ ],
476
+ "description": "Subscribe to a typed grid event. **Recommended** over `addEventListener`.\n\nReturns an unsubscribe function — call it to remove the listener.\nThe listener receives the event **detail** as its first argument\n(no need to dig into `e.detail`), and the raw `CustomEvent` as\nthe second argument when you need `preventDefault()` or `stopPropagation()`."
477
+ },
478
+ {
479
+ "kind": "method",
480
+ "name": "on",
481
+ "return": {
482
+ "type": {
483
+ "text": "() => void"
484
+ }
485
+ },
486
+ "parameters": [
487
+ {
488
+ "name": "type",
489
+ "type": {
490
+ "text": "string"
491
+ }
492
+ },
493
+ {
494
+ "name": "listener",
495
+ "type": {
496
+ "text": "(detail: unknown, event: CustomEvent) => void"
497
+ }
498
+ }
499
+ ]
500
+ },
501
+ {
502
+ "kind": "method",
503
+ "name": "on",
504
+ "return": {
505
+ "type": {
506
+ "text": "() => void"
507
+ }
508
+ },
509
+ "parameters": [
510
+ {
511
+ "name": "type",
512
+ "type": {
513
+ "text": "string"
514
+ }
515
+ },
516
+ {
517
+ "name": "listener",
518
+ "type": {
519
+ "text": "(detail: unknown, event: CustomEvent) => void"
520
+ }
521
+ }
522
+ ]
523
+ },
524
+ {
525
+ "kind": "method",
526
+ "name": "ready",
527
+ "return": {
528
+ "type": {
529
+ "text": ""
530
+ }
531
+ },
532
+ "description": "Wait for the grid to be ready.\nResolves once the component has finished initial setup, including\ncolumn inference, plugin initialization, and first render."
533
+ },
534
+ {
535
+ "kind": "method",
536
+ "name": "forceLayout",
537
+ "return": {
538
+ "type": {
539
+ "text": ""
540
+ }
541
+ },
542
+ "description": "Force a full layout/render cycle.\nUse this after programmatic changes that require re-measurement,\nsuch as container resize or dynamic style changes."
543
+ },
544
+ {
545
+ "kind": "method",
546
+ "name": "getConfig",
547
+ "return": {
548
+ "type": {
549
+ "text": ""
550
+ }
551
+ },
552
+ "description": "Get a frozen snapshot of the current effective configuration.\nThe returned object is read-only and reflects all merged config sources."
553
+ },
554
+ {
555
+ "kind": "method",
556
+ "name": "getRowId",
557
+ "return": {
558
+ "type": {
559
+ "text": ""
560
+ }
561
+ },
562
+ "parameters": [
563
+ {
564
+ "name": "row",
565
+ "type": {
566
+ "text": "T"
567
+ },
568
+ "description": "The row object"
569
+ }
570
+ ],
571
+ "description": "Get the unique ID for a row.\nUses the configured `getRowId` function or falls back to `row.id` / `row._id`."
572
+ },
573
+ {
574
+ "kind": "method",
575
+ "name": "getRow",
576
+ "return": {
577
+ "type": {
578
+ "text": ""
579
+ }
580
+ },
581
+ "parameters": [
582
+ {
583
+ "name": "id",
584
+ "type": {
585
+ "text": "string"
586
+ },
587
+ "description": "Row identifier (from getRowId)"
588
+ }
589
+ ],
590
+ "description": "Get a row by its ID.\nO(1) lookup via internal Map."
591
+ },
592
+ {
593
+ "kind": "method",
594
+ "name": "updateRow",
595
+ "return": {
596
+ "type": {
597
+ "text": "void"
598
+ }
599
+ },
600
+ "parameters": [
601
+ {
602
+ "name": "id",
603
+ "type": {
604
+ "text": "string"
605
+ },
606
+ "description": "Row identifier (from getRowId)"
607
+ },
608
+ {
609
+ "name": "changes",
610
+ "type": {
611
+ "text": "Partial<T>"
612
+ },
613
+ "description": "Partial row data to merge"
614
+ },
615
+ {
616
+ "name": "source",
617
+ "default": "'api'",
618
+ "type": {
619
+ "text": "UpdateSource"
620
+ },
621
+ "description": "Origin of update (default: 'api')"
622
+ }
623
+ ],
624
+ "description": "Update a row by ID.\nMutates the row in-place and emits `cell-change` for each changed field."
625
+ },
626
+ {
627
+ "kind": "method",
628
+ "name": "updateRows",
629
+ "return": {
630
+ "type": {
631
+ "text": "void"
632
+ }
633
+ },
634
+ "parameters": [
635
+ {
636
+ "name": "updates",
637
+ "type": {
638
+ "text": "Array<{ id: string; changes: Partial<T> }>"
639
+ },
640
+ "description": "Array of { id, changes } objects"
641
+ },
642
+ {
643
+ "name": "source",
644
+ "default": "'api'",
645
+ "type": {
646
+ "text": "UpdateSource"
647
+ },
648
+ "description": "Origin of updates (default: 'api')"
649
+ }
650
+ ],
651
+ "description": "Batch update multiple rows.\nMore efficient than multiple `updateRow()` calls - single render cycle."
652
+ },
653
+ {
654
+ "kind": "method",
655
+ "name": "animateRow",
656
+ "return": {
657
+ "type": {
658
+ "text": ""
659
+ }
660
+ },
661
+ "parameters": [
662
+ {
663
+ "name": "rowIndex",
664
+ "type": {
665
+ "text": "number"
666
+ },
667
+ "description": "Index of the row in the current row set"
668
+ },
669
+ {
670
+ "name": "type",
671
+ "type": {
672
+ "text": "RowAnimationType"
673
+ },
674
+ "description": "Type of animation to apply"
675
+ }
676
+ ],
677
+ "description": "Animate a row at the specified index.\nApplies a visual animation to highlight changes, insertions, or removals.\nReturns a `Promise` that resolves when the animation completes.\n\n**Animation types:**\n- `'change'`: Flash highlight (for data changes, e.g., after cell edit)\n- `'insert'`: Slide-in animation (for newly added rows)\n- `'remove'`: Fade-out animation (for rows being removed)\n\nThe animation is purely visual - it does not affect the data.\nFor remove animations, the row remains in the DOM until animation completes."
678
+ },
679
+ {
680
+ "kind": "method",
681
+ "name": "animateRows",
682
+ "return": {
683
+ "type": {
684
+ "text": ""
685
+ }
686
+ },
687
+ "parameters": [
688
+ {
689
+ "name": "rowIndices",
690
+ "type": {
691
+ "text": "number[]"
692
+ },
693
+ "description": "Indices of the rows to animate"
694
+ },
695
+ {
696
+ "name": "type",
697
+ "type": {
698
+ "text": "RowAnimationType"
699
+ },
700
+ "description": "Type of animation to apply to all rows"
701
+ }
702
+ ],
703
+ "description": "Animate multiple rows at once.\nMore efficient than calling `animateRow()` multiple times.\nReturns a `Promise` that resolves when all animations complete."
704
+ },
705
+ {
706
+ "kind": "method",
707
+ "name": "animateRowById",
708
+ "return": {
709
+ "type": {
710
+ "text": ""
711
+ }
712
+ },
713
+ "parameters": [
714
+ {
715
+ "name": "rowId",
716
+ "type": {
717
+ "text": "string"
718
+ },
719
+ "description": "The row's unique identifier (from getRowId)"
720
+ },
721
+ {
722
+ "name": "type",
723
+ "type": {
724
+ "text": "RowAnimationType"
725
+ },
726
+ "description": "Type of animation to apply"
727
+ }
728
+ ],
729
+ "description": "Animate a row by its ID.\nUses the configured `getRowId` function to find the row.\nReturns a `Promise` that resolves when the animation completes."
730
+ },
731
+ {
732
+ "kind": "method",
733
+ "name": "insertRow",
734
+ "return": {
735
+ "type": {
736
+ "text": "Promise<void>"
737
+ }
738
+ },
739
+ "parameters": [
740
+ {
741
+ "name": "index",
742
+ "type": {
743
+ "text": "number"
744
+ },
745
+ "description": "Visible row index at which to insert (0-based)"
746
+ },
747
+ {
748
+ "name": "row",
749
+ "type": {
750
+ "text": "T"
751
+ },
752
+ "description": "The row data object to insert"
753
+ },
754
+ {
755
+ "name": "animate",
756
+ "default": "true",
757
+ "description": "Whether to apply an 'insert' animation (default: `true`)"
758
+ }
759
+ ],
760
+ "description": "Insert a row at a specific position in the current view.\n\nThe row is spliced into the visible (processed) row array at `index` and\nappended to the source data so that future pipeline runs (sort, filter,\ngroup) include it. No plugin processing is triggered — the row stays\nexactly where you place it until the next full pipeline run.\n\nBy default, an `'insert'` animation is applied. Pass `animate: false` to\nskip the animation. The returned `Promise` resolves when the animation\ncompletes (or immediately when `animate` is `false`)."
761
+ },
762
+ {
763
+ "kind": "method",
764
+ "name": "removeRow",
765
+ "return": {
766
+ "type": {
767
+ "text": ""
768
+ }
769
+ },
770
+ "parameters": [
771
+ {
772
+ "name": "index",
773
+ "type": {
774
+ "text": "number"
775
+ },
776
+ "description": "Visible row index to remove (0-based)"
777
+ },
778
+ {
779
+ "name": "animate",
780
+ "default": "true",
781
+ "description": "Whether to apply a 'remove' animation first (default: `true`)"
782
+ }
783
+ ],
784
+ "description": "Remove a row at a specific position in the current view.\n\nThe row is removed from both the visible (processed) row array and the\nsource data. No plugin processing is triggered — remaining rows keep their\ncurrent positions until the next full pipeline run.\n\nBy default, a `'remove'` animation plays before the row is removed.\nPass `animate: false` to remove immediately. When animated, `await` the\nresult to ensure the row has been fully removed from data."
785
+ },
786
+ {
787
+ "kind": "method",
788
+ "name": "applyTransaction",
789
+ "return": {
790
+ "type": {
791
+ "text": ""
792
+ }
793
+ },
794
+ "parameters": [
795
+ {
796
+ "name": "transaction",
797
+ "type": {
798
+ "text": "RowTransaction<T>"
799
+ },
800
+ "description": "The mutations to apply"
801
+ },
802
+ {
803
+ "name": "animate",
804
+ "default": "true",
805
+ "description": "Whether to animate the changes (default: `true`)"
806
+ }
807
+ ],
808
+ "description": "Apply a batch of row mutations (add, update, remove) in a single render cycle.\n\nThis is the most efficient way to apply multiple row changes at once — ideal\nfor streaming data from WebSocket, SSE, or any real-time source.\n\nOperations are applied in order: removes → updates → adds. This ensures\nupdates don't target rows about to be removed, and adds don't collide\nwith existing rows."
809
+ },
810
+ {
811
+ "kind": "method",
812
+ "name": "applyTransactionAsync",
813
+ "return": {
814
+ "type": {
815
+ "text": ""
816
+ }
817
+ },
818
+ "parameters": [
819
+ {
820
+ "name": "transaction",
821
+ "type": {
822
+ "text": "RowTransaction<T>"
823
+ },
824
+ "description": "The mutations to apply"
825
+ }
826
+ ],
827
+ "description": "Apply a transaction asynchronously, batching rapid calls into a single render.\n\nIdeal for high-frequency streaming where many small updates arrive faster\nthan the browser can render. All transactions queued within the same\nanimation frame are merged and applied together.\n\nAnimations are disabled for batched transactions to avoid visual overload."
828
+ },
829
+ {
830
+ "kind": "method",
831
+ "name": "suspendProcessing",
832
+ "return": {
833
+ "type": {
834
+ "text": "void"
835
+ }
836
+ },
837
+ "description": "Suspend row processing for the next rows update.",
838
+ "deprecated": []
839
+ },
840
+ {
841
+ "kind": "method",
842
+ "name": "focusCell",
843
+ "return": {
844
+ "type": {
845
+ "text": "void"
846
+ }
847
+ },
848
+ "parameters": [
849
+ {
850
+ "name": "rowIndex",
851
+ "type": {
852
+ "text": "number"
853
+ },
854
+ "description": "The row index to focus (0-based, in the current processed row array)"
855
+ },
856
+ {
857
+ "name": "column",
858
+ "type": {
859
+ "text": "number | string"
860
+ },
861
+ "description": "Column index (0-based into visible columns) or field name string"
862
+ }
863
+ ],
864
+ "description": "Move focus to a specific cell.\n\nAccepts a column index (into the visible columns array) or a field name.\nThe grid scrolls the cell into view and applies focus styling."
865
+ },
866
+ {
867
+ "kind": "field",
868
+ "name": "focusedCell",
869
+ "type": {
870
+ "text": "{ rowIndex: number; colIndex: number; field: string } | null"
871
+ },
872
+ "description": "The currently focused cell position, or `null` if no rows are loaded.\n\nReturns a snapshot object with the row index, visible column index, and\nthe field name of the focused column.",
873
+ "readonly": true
874
+ },
875
+ {
876
+ "kind": "method",
877
+ "name": "scrollToRow",
878
+ "return": {
879
+ "type": {
880
+ "text": "void"
881
+ }
882
+ },
883
+ "parameters": [
884
+ {
885
+ "name": "rowIndex",
886
+ "type": {
887
+ "text": "number"
888
+ },
889
+ "description": "Row index (0-based, in the current processed row array)"
890
+ },
891
+ {
892
+ "name": "options",
893
+ "optional": true,
894
+ "type": {
895
+ "text": "ScrollToRowOptions"
896
+ },
897
+ "description": "Alignment and scroll behavior"
898
+ }
899
+ ],
900
+ "description": "Scroll the viewport so a row is visible.\n\nUses the grid's internal virtualization state (row height, position cache)\nto calculate the correct scroll offset, including support for variable\nrow heights and grouped rows."
901
+ },
902
+ {
903
+ "kind": "method",
904
+ "name": "scrollToRowById",
905
+ "return": {
906
+ "type": {
907
+ "text": "void"
908
+ }
909
+ },
910
+ "parameters": [
911
+ {
912
+ "name": "rowId",
913
+ "type": {
914
+ "text": "string"
915
+ },
916
+ "description": "The row's unique identifier"
917
+ },
918
+ {
919
+ "name": "options",
920
+ "optional": true,
921
+ "type": {
922
+ "text": "ScrollToRowOptions"
923
+ },
924
+ "description": "Alignment and scroll behavior"
925
+ }
926
+ ],
927
+ "description": "Scroll the viewport so a row is visible, identified by its unique ID.\n\nUses GridConfig.getRowId| getRowId (or the fallback `row.id` / `row._id`)\nto find the row in the current (possibly sorted/filtered) data, then delegates\nto scrollToRow."
928
+ },
929
+ {
930
+ "kind": "method",
931
+ "name": "setColumnVisible",
932
+ "return": {
933
+ "type": {
934
+ "text": ""
935
+ }
936
+ },
937
+ "parameters": [
938
+ {
939
+ "name": "field",
940
+ "type": {
941
+ "text": "string"
942
+ },
943
+ "description": "The field name of the column to modify"
944
+ },
945
+ {
946
+ "name": "visible",
947
+ "type": {
948
+ "text": "boolean"
949
+ },
950
+ "description": "Whether the column should be visible"
951
+ }
952
+ ],
953
+ "description": "Show or hide a column by field name."
954
+ },
955
+ {
956
+ "kind": "method",
957
+ "name": "toggleColumnVisibility",
958
+ "return": {
959
+ "type": {
960
+ "text": ""
961
+ }
962
+ },
963
+ "parameters": [
964
+ {
965
+ "name": "field",
966
+ "type": {
967
+ "text": "string"
968
+ },
969
+ "description": "The field name of the column to toggle"
970
+ }
971
+ ],
972
+ "description": "Toggle a column's visibility."
973
+ },
974
+ {
975
+ "kind": "method",
976
+ "name": "isColumnVisible",
977
+ "return": {
978
+ "type": {
979
+ "text": ""
980
+ }
981
+ },
982
+ "parameters": [
983
+ {
984
+ "name": "field",
985
+ "type": {
986
+ "text": "string"
987
+ },
988
+ "description": "The field name to check"
989
+ }
990
+ ],
991
+ "description": "Check if a column is currently visible."
992
+ },
993
+ {
994
+ "kind": "method",
995
+ "name": "showAllColumns",
996
+ "return": {
997
+ "type": {
998
+ "text": "void"
999
+ }
1000
+ },
1001
+ "description": "Show all columns, resetting any hidden columns to visible."
1002
+ },
1003
+ {
1004
+ "kind": "method",
1005
+ "name": "getAllColumns",
1006
+ "return": {
1007
+ "type": {
1008
+ "text": ""
1009
+ }
1010
+ },
1011
+ "description": "Get metadata for all columns including visibility state.\nUseful for building a column picker UI."
1012
+ },
1013
+ {
1014
+ "kind": "method",
1015
+ "name": "setColumnOrder",
1016
+ "return": {
1017
+ "type": {
1018
+ "text": "void"
1019
+ }
1020
+ },
1021
+ "parameters": [
1022
+ {
1023
+ "name": "order",
1024
+ "type": {
1025
+ "text": "string[]"
1026
+ },
1027
+ "description": "Array of field names in desired order"
1028
+ }
1029
+ ],
1030
+ "description": "Set the display order of columns."
1031
+ },
1032
+ {
1033
+ "kind": "method",
1034
+ "name": "getColumnOrder",
1035
+ "return": {
1036
+ "type": {
1037
+ "text": ""
1038
+ }
1039
+ },
1040
+ "description": "Get the current column display order."
1041
+ },
1042
+ {
1043
+ "kind": "method",
1044
+ "name": "getColumnState",
1045
+ "return": {
1046
+ "type": {
1047
+ "text": ""
1048
+ }
1049
+ },
1050
+ "description": "Get the current column state for persistence.\nReturns a serializable object including column order, widths, visibility,\nsort state, and any plugin-specific state.\n\nUse this to save user preferences to localStorage or a database."
1051
+ },
1052
+ {
1053
+ "kind": "field",
1054
+ "name": "columnState",
1055
+ "description": "Get the current column state.\nAlias for `getColumnState()` for property-style access.",
1056
+ "type": {
1057
+ "text": "GridColumnState | undefined"
1058
+ }
1059
+ },
1060
+ {
1061
+ "kind": "method",
1062
+ "name": "resetColumnState",
1063
+ "return": {
1064
+ "type": {
1065
+ "text": "void"
1066
+ }
1067
+ },
1068
+ "description": "Reset column state to initial configuration.\nClears all user modifications including order, widths, visibility, and sort."
1069
+ },
1070
+ {
1071
+ "kind": "field",
1072
+ "name": "isToolPanelOpen",
1073
+ "type": {
1074
+ "text": "boolean"
1075
+ },
1076
+ "description": "Check if the tool panel sidebar is currently open.\n\nThe tool panel is an accordion-based sidebar that contains sections\nregistered by plugins or via `registerToolPanel()`.",
1077
+ "readonly": true
1078
+ },
1079
+ {
1080
+ "kind": "field",
1081
+ "name": "defaultRowHeight",
1082
+ "type": {
1083
+ "text": "number"
1084
+ },
1085
+ "description": "The default row height in pixels.\n\nFor fixed heights, this is the configured or CSS-measured row height.\nFor variable heights, this is the average/estimated row height.\nPlugins should use this instead of hardcoding row heights.",
1086
+ "readonly": true
1087
+ },
1088
+ {
1089
+ "kind": "field",
1090
+ "name": "expandedToolPanelSections",
1091
+ "type": {
1092
+ "text": "string[]"
1093
+ },
1094
+ "description": "Get the IDs of currently expanded accordion sections in the tool panel.\n\nMultiple sections can be expanded simultaneously in the accordion view.",
1095
+ "readonly": true
1096
+ },
1097
+ {
1098
+ "kind": "method",
1099
+ "name": "openToolPanel",
1100
+ "return": {
1101
+ "type": {
1102
+ "text": "void"
1103
+ }
1104
+ },
1105
+ "description": "Open the tool panel sidebar.\n\nThe tool panel displays an accordion view with all registered panel sections.\nEach section can be expanded/collapsed independently."
1106
+ },
1107
+ {
1108
+ "kind": "method",
1109
+ "name": "closeToolPanel",
1110
+ "return": {
1111
+ "type": {
1112
+ "text": "void"
1113
+ }
1114
+ },
1115
+ "description": "Close the tool panel sidebar."
1116
+ },
1117
+ {
1118
+ "kind": "method",
1119
+ "name": "toggleToolPanel",
1120
+ "return": {
1121
+ "type": {
1122
+ "text": "void"
1123
+ }
1124
+ },
1125
+ "description": "Toggle the tool panel sidebar open or closed."
1126
+ },
1127
+ {
1128
+ "kind": "method",
1129
+ "name": "toggleToolPanelSection",
1130
+ "return": {
1131
+ "type": {
1132
+ "text": "void"
1133
+ }
1134
+ },
1135
+ "parameters": [
1136
+ {
1137
+ "name": "sectionId",
1138
+ "type": {
1139
+ "text": "string"
1140
+ },
1141
+ "description": "The ID of the section to toggle (matches `ToolPanelDefinition.id`)"
1142
+ }
1143
+ ],
1144
+ "description": "Toggle an accordion section expanded or collapsed within the tool panel."
1145
+ },
1146
+ {
1147
+ "kind": "method",
1148
+ "name": "getToolPanels",
1149
+ "return": {
1150
+ "type": {
1151
+ "text": ""
1152
+ }
1153
+ },
1154
+ "description": "Get all registered tool panel definitions.\n\nReturns both plugin-registered panels and panels registered via `registerToolPanel()`."
1155
+ },
1156
+ {
1157
+ "kind": "method",
1158
+ "name": "registerToolPanel",
1159
+ "return": {
1160
+ "type": {
1161
+ "text": "void"
1162
+ }
1163
+ },
1164
+ "parameters": [
1165
+ {
1166
+ "name": "panel",
1167
+ "type": {
1168
+ "text": "ToolPanelDefinition"
1169
+ },
1170
+ "description": "The tool panel definition"
1171
+ }
1172
+ ],
1173
+ "description": "Register a custom tool panel section.\n\nUse this API to add custom UI sections to the tool panel sidebar\nwithout creating a full plugin. The panel will appear as an accordion\nsection in the tool panel."
1174
+ },
1175
+ {
1176
+ "kind": "method",
1177
+ "name": "unregisterToolPanel",
1178
+ "return": {
1179
+ "type": {
1180
+ "text": "void"
1181
+ }
1182
+ },
1183
+ "parameters": [
1184
+ {
1185
+ "name": "panelId",
1186
+ "type": {
1187
+ "text": "string"
1188
+ },
1189
+ "description": "The ID of the panel to remove"
1190
+ }
1191
+ ],
1192
+ "description": "Unregister a custom tool panel section."
1193
+ },
1194
+ {
1195
+ "kind": "method",
1196
+ "name": "getHeaderContents",
1197
+ "return": {
1198
+ "type": {
1199
+ "text": ""
1200
+ }
1201
+ },
1202
+ "description": "Get all registered header content definitions."
1203
+ },
1204
+ {
1205
+ "kind": "method",
1206
+ "name": "registerHeaderContent",
1207
+ "return": {
1208
+ "type": {
1209
+ "text": "void"
1210
+ }
1211
+ },
1212
+ "parameters": [
1213
+ {
1214
+ "name": "content",
1215
+ "type": {
1216
+ "text": "HeaderContentDefinition"
1217
+ },
1218
+ "description": "The header content definition"
1219
+ }
1220
+ ],
1221
+ "description": "Register custom header content.\n\nHeader content appears in the grid's header bar area, which is displayed\nabove the column headers. Use this for search boxes, filters, or other\ncontrols that should be prominently visible."
1222
+ },
1223
+ {
1224
+ "kind": "method",
1225
+ "name": "unregisterHeaderContent",
1226
+ "return": {
1227
+ "type": {
1228
+ "text": "void"
1229
+ }
1230
+ },
1231
+ "parameters": [
1232
+ {
1233
+ "name": "contentId",
1234
+ "type": {
1235
+ "text": "string"
1236
+ },
1237
+ "description": "The ID of the content to remove"
1238
+ }
1239
+ ],
1240
+ "description": "Unregister custom header content."
1241
+ },
1242
+ {
1243
+ "kind": "method",
1244
+ "name": "getToolbarContents",
1245
+ "return": {
1246
+ "type": {
1247
+ "text": ""
1248
+ }
1249
+ },
1250
+ "description": "Get all registered toolbar content definitions."
1251
+ },
1252
+ {
1253
+ "kind": "method",
1254
+ "name": "registerToolbarContent",
1255
+ "return": {
1256
+ "type": {
1257
+ "text": "void"
1258
+ }
1259
+ },
1260
+ "parameters": [
1261
+ {
1262
+ "name": "content",
1263
+ "type": {
1264
+ "text": "ToolbarContentDefinition"
1265
+ },
1266
+ "description": "The toolbar content definition"
1267
+ }
1268
+ ],
1269
+ "description": "Register custom toolbar content.\n\nToolbar content appears in the grid's toolbar area. Use this for action\nbuttons, dropdowns, or other controls that should be easily accessible.\nContent is rendered in order of the `order` property (lower = first)."
1270
+ },
1271
+ {
1272
+ "kind": "method",
1273
+ "name": "unregisterToolbarContent",
1274
+ "return": {
1275
+ "type": {
1276
+ "text": "void"
1277
+ }
1278
+ },
1279
+ "parameters": [
1280
+ {
1281
+ "name": "contentId",
1282
+ "type": {
1283
+ "text": "string"
1284
+ },
1285
+ "description": "The ID of the content to remove"
1286
+ }
1287
+ ],
1288
+ "description": "Unregister custom toolbar content."
1289
+ },
1290
+ {
1291
+ "kind": "method",
1292
+ "name": "registerStyles",
1293
+ "return": {
1294
+ "type": {
1295
+ "text": "void"
1296
+ }
1297
+ },
1298
+ "parameters": [
1299
+ {
1300
+ "name": "id",
1301
+ "type": {
1302
+ "text": "string"
1303
+ },
1304
+ "description": "Unique identifier for the style block (for removal/updates)"
1305
+ },
1306
+ {
1307
+ "name": "css",
1308
+ "type": {
1309
+ "text": "string"
1310
+ },
1311
+ "description": "CSS string to inject"
1312
+ }
1313
+ ],
1314
+ "description": "Register custom CSS styles to be injected into the grid's shadow DOM.\nUse this to style custom cell renderers, editors, or detail panels.\n\nUses adoptedStyleSheets for efficiency - styles survive shadow DOM rebuilds."
1315
+ },
1316
+ {
1317
+ "kind": "method",
1318
+ "name": "unregisterStyles",
1319
+ "return": {
1320
+ "type": {
1321
+ "text": "void"
1322
+ }
1323
+ },
1324
+ "parameters": [
1325
+ {
1326
+ "name": "id",
1327
+ "type": {
1328
+ "text": "string"
1329
+ },
1330
+ "description": "The ID used when registering the styles"
1331
+ }
1332
+ ],
1333
+ "description": "Remove previously registered custom styles."
1334
+ },
1335
+ {
1336
+ "kind": "method",
1337
+ "name": "getRegisteredStyles",
1338
+ "return": {
1339
+ "type": {
1340
+ "text": "string[]"
1341
+ }
1342
+ },
1343
+ "description": "Get list of registered custom style IDs."
1344
+ },
1345
+ {
1346
+ "kind": "method",
1347
+ "name": "registerExternalFocusContainer",
1348
+ "return": {
1349
+ "type": {
1350
+ "text": "void"
1351
+ }
1352
+ },
1353
+ "parameters": [
1354
+ {
1355
+ "name": "el",
1356
+ "type": {
1357
+ "text": "Element"
1358
+ },
1359
+ "description": "The external element to register"
1360
+ }
1361
+ ],
1362
+ "description": "Register an external DOM element as a logical focus container of this grid.\n\nFocus moving into a registered container is treated as if it stayed inside\nthe grid: `data-has-focus` is preserved, click-outside commit is suppressed,\nand the editing focus trap (when enabled) won't reclaim focus.\n\nTypical use case: overlay panels (datepickers, dropdowns, autocompletes)\nthat render at `<body>` level to escape grid overflow clipping."
1363
+ },
1364
+ {
1365
+ "kind": "method",
1366
+ "name": "unregisterExternalFocusContainer",
1367
+ "return": {
1368
+ "type": {
1369
+ "text": "void"
1370
+ }
1371
+ },
1372
+ "parameters": [
1373
+ {
1374
+ "name": "el",
1375
+ "type": {
1376
+ "text": "Element"
1377
+ },
1378
+ "description": "The element to unregister"
1379
+ }
1380
+ ],
1381
+ "description": "Unregister a previously registered external focus container."
1382
+ },
1383
+ {
1384
+ "kind": "method",
1385
+ "name": "containsFocus",
1386
+ "return": {
1387
+ "type": {
1388
+ "text": "boolean"
1389
+ }
1390
+ },
1391
+ "parameters": [
1392
+ {
1393
+ "name": "node",
1394
+ "optional": true,
1395
+ "type": {
1396
+ "text": "Node | null"
1397
+ },
1398
+ "description": "Optional node to test. Defaults to `document.activeElement`."
1399
+ }
1400
+ ],
1401
+ "description": "Check whether focus is logically inside this grid.\n\nReturns `true` when `document.activeElement` (or the given node) is\ninside the grid's own DOM **or** inside any element registered via\nregisterExternalFocusContainer."
1402
+ },
1403
+ {
1404
+ "kind": "method",
1405
+ "name": "refreshColumns",
1406
+ "return": {
1407
+ "type": {
1408
+ "text": "void"
1409
+ }
1410
+ },
1411
+ "description": "Re-parse light DOM column elements and refresh the grid.\nCall this after framework adapters have registered their templates.\nUses the render scheduler to batch with other pending updates."
1412
+ },
1413
+ {
1414
+ "kind": "method",
1415
+ "name": "invalidateRowHeight",
1416
+ "return": {
1417
+ "type": {
1418
+ "text": "void"
1419
+ }
1420
+ },
1421
+ "parameters": [
1422
+ {
1423
+ "name": "rowIndex",
1424
+ "type": {
1425
+ "text": "number"
1426
+ },
1427
+ "description": "Index of the row whose height changed"
1428
+ },
1429
+ {
1430
+ "name": "newHeight",
1431
+ "optional": true,
1432
+ "type": {
1433
+ "text": "number"
1434
+ },
1435
+ "description": "Optional new height. If not provided, queries plugins for height."
1436
+ }
1437
+ ],
1438
+ "description": "Invalidate a row's height in the position cache.\nCall this when a plugin changes a row's height (e.g., expanding/collapsing a detail panel)."
1439
+ }
1440
+ ],
1441
+ "events": [
1442
+ {
1443
+ "name": "eventName",
1444
+ "type": {
1445
+ "text": "CustomEvent"
1446
+ }
1447
+ }
1448
+ ],
1449
+ "attributes": [
1450
+ {
1451
+ "name": "rows"
1452
+ },
1453
+ {
1454
+ "name": "columns"
1455
+ },
1456
+ {
1457
+ "name": "grid-config"
1458
+ },
1459
+ {
1460
+ "name": "fit-mode"
1461
+ },
1462
+ {
1463
+ "name": "loading"
1464
+ }
1465
+ ],
1466
+ "superclass": {
1467
+ "name": "HTMLElement"
1468
+ },
1469
+ "tagName": "tbw-grid",
1470
+ "customElement": true
1471
+ }
1472
+ ],
1473
+ "exports": [
1474
+ {
1475
+ "kind": "js",
1476
+ "name": "DataGridElement",
1477
+ "declaration": {
1478
+ "name": "DataGridElement",
1479
+ "module": "src/lib/core/grid.ts"
1480
+ }
1481
+ },
1482
+ {
1483
+ "kind": "custom-element-definition",
1484
+ "name": "tbw-grid",
1485
+ "declaration": {
1486
+ "name": "DataGridElement",
1487
+ "module": "src/lib/core/grid.ts"
1488
+ }
1489
+ }
1490
+ ]
1491
+ }
1492
+ ]
1493
+ }