@fusion.dev/helix-headless 0.23.0 → 0.24.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 (124) hide show
  1. package/custom-elements.json +50579 -26954
  2. package/dist/announcement/root/announcement-root.d.ts +19 -5
  3. package/dist/area-chart/index.d.ts +1 -0
  4. package/dist/area-chart/index.js +1 -0
  5. package/dist/area-chart/root/area-chart-root.d.ts +182 -0
  6. package/dist/area-chart/root/area-chart-root.js +205 -0
  7. package/dist/avatar/group/avatar-group.d.ts +1 -0
  8. package/dist/avatar/group/avatar-group.js +5 -1
  9. package/dist/avatar/root/avatar-root.d.ts +1 -0
  10. package/dist/avatar/root/avatar-root.js +11 -0
  11. package/dist/carousel/root/carousel-root.d.ts +3 -0
  12. package/dist/carousel/root/carousel-root.js +23 -4
  13. package/dist/chat/index.d.ts +1 -1
  14. package/dist/chat/message/chat-message.d.ts +7 -0
  15. package/dist/chat/message/chat-message.js +2 -1
  16. package/dist/chat/root/chat-root.d.ts +195 -4
  17. package/dist/chat/root/chat-root.js +316 -23
  18. package/dist/checkbox-group/root/checkbox-group-root.d.ts +2 -0
  19. package/dist/checkbox-group/root/checkbox-group-root.js +12 -2
  20. package/dist/code-block/index.d.ts +1 -0
  21. package/dist/code-block/index.js +1 -0
  22. package/dist/code-block/patch.d.ts +62 -0
  23. package/dist/code-block/patch.js +93 -0
  24. package/dist/code-block/root/code-block-root.d.ts +82 -17
  25. package/dist/code-block/root/code-block-root.js +83 -6
  26. package/dist/color-picker/root/color-picker-root.d.ts +4 -3
  27. package/dist/color-picker/root/color-picker-root.js +4 -1
  28. package/dist/combobox/root/combobox-root.d.ts +1 -0
  29. package/dist/combobox/root/combobox-root.js +6 -1
  30. package/dist/command/root/command-root.d.ts +7 -0
  31. package/dist/command/root/command-root.js +10 -0
  32. package/dist/data-table/root/data-table-root.d.ts +195 -23
  33. package/dist/data-table/root/data-table-root.js +308 -27
  34. package/dist/description-list/index.d.ts +2 -0
  35. package/dist/description-list/index.js +2 -0
  36. package/dist/description-list/item/description-list-item.d.ts +39 -0
  37. package/dist/description-list/item/description-list-item.js +26 -0
  38. package/dist/description-list/root/description-list-root.d.ts +56 -0
  39. package/dist/description-list/root/description-list-root.js +21 -0
  40. package/dist/element-events.generated.js +27 -6
  41. package/dist/filter-input/chip/filter-chip.d.ts +114 -0
  42. package/dist/filter-input/chip/filter-chip.js +61 -0
  43. package/dist/filter-input/field/filter-field.d.ts +128 -0
  44. package/dist/filter-input/field/filter-field.js +70 -0
  45. package/dist/filter-input/grammar.d.ts +96 -0
  46. package/dist/filter-input/grammar.js +133 -0
  47. package/dist/filter-input/index.d.ts +5 -0
  48. package/dist/filter-input/index.js +5 -0
  49. package/dist/filter-input/menu/filter-menu.d.ts +153 -0
  50. package/dist/filter-input/menu/filter-menu.js +164 -0
  51. package/dist/filter-input/operator/filter-operator.d.ts +105 -0
  52. package/dist/filter-input/operator/filter-operator.js +39 -0
  53. package/dist/filter-input/root/filter-input-root.d.ts +118 -9
  54. package/dist/filter-input/root/filter-input-root.js +96 -2
  55. package/dist/format-date/root/format-date-root.js +5 -2
  56. package/dist/image/root/image-root.d.ts +9 -0
  57. package/dist/image/root/image-root.js +16 -3
  58. package/dist/index.d.ts +5 -0
  59. package/dist/index.js +5 -0
  60. package/dist/kbd/root/kbd-root.d.ts +9 -2
  61. package/dist/kbd/root/kbd-root.js +7 -2
  62. package/dist/line-chart/root/line-chart-root.d.ts +9 -2
  63. package/dist/listbox/root/listbox-root.d.ts +8 -7
  64. package/dist/listbox/root/listbox-root.js +7 -2
  65. package/dist/menu/item/menu-item.d.ts +31 -6
  66. package/dist/menu/item/menu-item.js +18 -5
  67. package/dist/menu/root/menu-root.js +7 -2
  68. package/dist/notifications/group/notification-group.d.ts +129 -0
  69. package/dist/notifications/group/notification-group.js +106 -0
  70. package/dist/notifications/index.d.ts +1 -0
  71. package/dist/notifications/index.js +1 -0
  72. package/dist/notifications/notification/notification.d.ts +39 -13
  73. package/dist/notifications/notification/notification.js +11 -8
  74. package/dist/notifications/root/notifications-root.d.ts +57 -1
  75. package/dist/notifications/root/notifications-root.js +35 -4
  76. package/dist/number-input/root/number-input-root.d.ts +21 -1
  77. package/dist/number-input/root/number-input-root.js +18 -5
  78. package/dist/object-inspector/index.d.ts +1 -0
  79. package/dist/object-inspector/index.js +1 -0
  80. package/dist/object-inspector/root/object-inspector-root.d.ts +183 -0
  81. package/dist/object-inspector/root/object-inspector-root.js +348 -0
  82. package/dist/option/root/option-root.d.ts +17 -0
  83. package/dist/option/root/option-root.js +4 -0
  84. package/dist/outline/root/outline-root.d.ts +16 -1
  85. package/dist/outline/root/outline-root.js +27 -9
  86. package/dist/qr-code/root/qr-code-root.d.ts +3 -1
  87. package/dist/qr-code/root/qr-code-root.js +11 -1
  88. package/dist/radio/group/radio-group.d.ts +1 -0
  89. package/dist/rating/root/rating-root.d.ts +3 -0
  90. package/dist/rating/root/rating-root.js +9 -0
  91. package/dist/scatter-chart/index.d.ts +1 -0
  92. package/dist/scatter-chart/index.js +1 -0
  93. package/dist/scatter-chart/root/scatter-chart-root.d.ts +144 -0
  94. package/dist/scatter-chart/root/scatter-chart-root.js +205 -0
  95. package/dist/select/root/select-root.d.ts +8 -0
  96. package/dist/select/root/select-root.js +8 -6
  97. package/dist/skip-link/index.d.ts +1 -0
  98. package/dist/skip-link/index.js +1 -0
  99. package/dist/skip-link/root/skip-link-root.d.ts +81 -0
  100. package/dist/skip-link/root/skip-link-root.js +58 -0
  101. package/dist/speed-dial/root/speed-dial-root.d.ts +1 -0
  102. package/dist/speed-dial/root/speed-dial-root.js +6 -2
  103. package/dist/steps/root/steps-root.d.ts +1 -0
  104. package/dist/steps/root/steps-root.js +5 -2
  105. package/dist/table/column/table-column.d.ts +79 -0
  106. package/dist/table/column/table-column.js +125 -5
  107. package/dist/table/root/table-root.d.ts +2 -0
  108. package/dist/table/root/table-root.js +12 -3
  109. package/dist/time-picker/root/time-picker-root.d.ts +9 -0
  110. package/dist/time-picker/root/time-picker-root.js +5 -0
  111. package/dist/toast/root/toast-root.d.ts +2 -0
  112. package/dist/tooltip/root/tooltip-root.js +1 -1
  113. package/dist/tour/root/tour-root.d.ts +14 -0
  114. package/dist/tour/root/tour-root.js +43 -18
  115. package/dist/tree/item/tree-item.d.ts +7 -4
  116. package/dist/tree/item/tree-item.js +4 -1
  117. package/dist/video/root/video-root.d.ts +23 -1
  118. package/dist/video/root/video-root.js +46 -23
  119. package/dist/virtual-list/root/virtual-list-root.d.ts +10 -6
  120. package/dist/virtual-list/root/virtual-list-root.js +10 -4
  121. package/package.json +5 -5
  122. package/types/jsx.d.ts +4536 -346
  123. package/types/svelte.d.ts +11 -0
  124. package/types/vue.d.ts +738 -39
@@ -1,6 +1,7 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
- import type { HelixHeadlessTableColumn } from '../../table/column/table-column.js';
3
+ import { type HelixHeadlessTableColumn } from '../../table/column/table-column.js';
4
+ import '../../checkbox/index.js';
4
5
  import '../../pagination/index.js';
5
6
  import { type DataRow } from './order.js';
6
7
  declare const HelixHeadlessDataTable_base: (new (...args: any[]) => import("@fusion.dev/helix-core").CollectionElement) & typeof HelixElement;
@@ -32,6 +33,25 @@ declare const HelixHeadlessDataTable_base: (new (...args: any[]) => import("@fus
32
33
  * right shape with nothing in it. That is the cost of the first paragraph: use
33
34
  * `helix-table` where the served HTML has to carry the values.
34
35
  *
36
+ * **`selectable` adds a column of checkboxes, keyed on `row-key`.** A row is
37
+ * selected by its identity rather than its position, so a selection survives a
38
+ * sort, a filter and a page. `selected` is the chosen keys, comma separated, the
39
+ * shape Listbox uses for a multiple choice, and like `sort` it is controlled
40
+ * when set and seeded by `default-selected`. The box in the heading selects every
41
+ * row in the result, across pages, and shows a dash while only some are chosen.
42
+ * Choosing one of many, rather than several, is opening a row, and that is a
43
+ * link or a button in a cell rather than a selection.
44
+ *
45
+ * **A reader can size and order the columns.** `resizable` on a column puts a
46
+ * separator on its edge; `reorderable` on the table puts a grip on each heading
47
+ * that has a `field`, moved by dragging or with the arrow keys. The order lands
48
+ * in `order` as fields, and the consumer's own markup is never rewritten: the
49
+ * table assigns the headings to its header in that order instead.
50
+ *
51
+ * **`csv()` hands back the result as text**: every row the filter lets through,
52
+ * in the order on screen, in the columns on screen. Saving it is the page's
53
+ * business, the same as any other file.
54
+ *
35
55
  * @since 0.1.0
36
56
  * @status experimental
37
57
  * @category data
@@ -44,17 +64,29 @@ declare const HelixHeadlessDataTable_base: (new (...args: any[]) => import("@fus
44
64
  *
45
65
  * @event {HelixFilterEvent} helix-filter - Fired when the query changes, and cancelable.
46
66
  * @event {HelixNavigateEvent} helix-navigate - Fired when a reader asks for another page, and cancelable.
67
+ * @event {HelixReorderEvent} helix-reorder - Fired when a reader asks for the columns in another order, with every field in the new one, and cancelable.
68
+ * @event {HelixSelectEvent} helix-select - Fired when a reader changes which rows are selected, with every selected key comma separated, and cancelable.
47
69
  * @event {HelixSortEvent} helix-sort - Fired when a reader asks for a different order, and cancelable.
48
70
  *
49
71
  * @csspart after - The room the rows below the window would have taken. Windowed only.
50
72
  * @csspart before - The room the rows above the window would have taken. Windowed only.
51
73
  * @csspart cell - One cell.
74
+ * @csspart checkbox - A row's checkbox, or the one in the heading that selects them all.
75
+ * @csspart checkbox-box - The frame the checkbox's input is painted as.
76
+ * @csspart checkbox-control - The checkbox's input.
77
+ * @csspart checkbox-feedback - Forwarded from the checkbox, and never drawn here.
78
+ * @csspart checkbox-field - The row the checkbox's box sits in.
79
+ * @csspart checkbox-hint - Forwarded from the checkbox, and never drawn here.
80
+ * @csspart checkbox-label - Forwarded from the checkbox; the label is spoken, not shown.
81
+ * @csspart checkbox-mark - The tick, or the dash while some rows are selected.
52
82
  * @csspart empty - Shown when no rows match.
53
83
  * @csspart footer - The region below the grid.
54
84
  * @csspart head - The row the column headings sit in. `display: contents`, so it takes no space.
55
85
  * @csspart loading - Shown while the rows are still on their way.
56
86
  * @csspart pagination - The pagination, where this draws one.
57
87
  * @csspart row - One row of data.
88
+ * @csspart select - The cell holding a row's checkbox.
89
+ * @csspart select-all - The heading holding the checkbox that selects every row.
58
90
  * @csspart table - The grid.
59
91
  * @csspart toolbar - The region above the grid.
60
92
  *
@@ -75,6 +107,10 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
75
107
  * Query to open with, where nothing declared one.
76
108
  */
77
109
  defaultFilter: string;
110
+ /**
111
+ * Column order to open with, where nothing declared one.
112
+ */
113
+ defaultOrder: string;
78
114
  /**
79
115
  * Page to open on, where nothing declared one.
80
116
  */
@@ -83,6 +119,10 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
83
119
  * Page size to open with, where nothing declared one.
84
120
  */
85
121
  defaultPageSize: number;
122
+ /**
123
+ * Keys to open with selected, comma separated, where nothing declared any.
124
+ */
125
+ defaultSelected: string;
86
126
  /**
87
127
  * Order to open on, where nothing declared one.
88
128
  */
@@ -107,16 +147,9 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
107
147
  get sort(): string;
108
148
  set sort(next: string);
109
149
  /**
110
- * The field naming a row's stable identity.
111
- *
112
- * **Needed before selection exists, not after.** Lit keys the rendered rows by
113
- * it, so a sort moves a row's element rather than rewriting every cell in
114
- * place, which is what keeps focus inside a cell and keeps a CSS transition
115
- * attached to the row it belongs to. Left unset the index is the key, which is
116
- * correct only while nothing reorders: it is why this defaults to something
117
- * that works and is worth setting anyway.
150
+ * Accessible name for the grid.
118
151
  */
119
- key: string;
152
+ label: string;
120
153
  /**
121
154
  * What the rows are narrowed to, as one query across every column.
122
155
  *
@@ -127,9 +160,16 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
127
160
  get filter(): string;
128
161
  set filter(next: string);
129
162
  /**
130
- * Accessible name for the grid.
163
+ * Whether this element does the work or asks the consumer to.
164
+ *
165
+ * `client` filters, sorts and pages `rows` itself. `server` applies none of
166
+ * them: `rows` is the page, `total` is the size of the whole result, and the
167
+ * three events are requests the consumer answers by fetching. Past some size
168
+ * the client cannot hold the data, so this is not an optimization, it is the
169
+ * only mode that works, and it is here from the start because adding it later
170
+ * inverts the data flow.
131
171
  */
132
- label: string;
172
+ mode: 'client' | 'server';
133
173
  /**
134
174
  * The page on show, from 1.
135
175
  *
@@ -140,16 +180,38 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
140
180
  get page(): number;
141
181
  set page(next: number);
142
182
  /**
143
- * Whether this element does the work or asks the consumer to.
183
+ * Whether a reader may move the columns.
144
184
  *
145
- * `client` filters, sorts and pages `rows` itself. `server` applies none of
146
- * them: `rows` is the page, `total` is the size of the whole result, and the
147
- * three events are requests the consumer answers by fetching. Past some size
148
- * the client cannot hold the data, so this is not an optimization, it is the
149
- * only mode that works, and it is here from the start because adding it later
150
- * inverts the data flow.
185
+ * Each heading with a `field` gets a grip, dragged along the header or moved a
186
+ * place at a time with the arrow keys once it has focus.
151
187
  */
152
- mode: 'client' | 'server';
188
+ reorderable: boolean;
189
+ /**
190
+ * The columns' order, as their fields separated by spaces.
191
+ *
192
+ * A reader's move fires `helix-reorder` first, and refusing it leaves the
193
+ * columns where they were, which is how a consumer who stores the order takes
194
+ * the decision. `default-order` seeds an order this element then owns. A field not named
195
+ * keeps its place after the named ones, and a column with no field never
196
+ * moves.
197
+ */
198
+ get order(): string;
199
+ set order(next: string);
200
+ /**
201
+ * The field naming a row's stable identity.
202
+ *
203
+ * **Needed before selection exists, not after.** Lit keys the rendered rows by
204
+ * it, so a sort moves a row's element rather than rewriting every cell in
205
+ * place, which is what keeps focus inside a cell and keeps a CSS transition
206
+ * attached to the row it belongs to. Left unset the index is the key, which is
207
+ * correct only while nothing reorders: it is why this defaults to something
208
+ * that works and is worth setting anyway.
209
+ *
210
+ * **`row-key` and not `key`**, which is what it was called until selection
211
+ * needed it from React: `key` is reserved there, and a JSX `key` never reaches
212
+ * the element, so a React page could not tell the table which field a row is.
213
+ */
214
+ rowKey: string;
153
215
  /**
154
216
  * The whole result, in the order it arrived.
155
217
  *
@@ -162,6 +224,24 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
162
224
  * holds and reordering it under them is a mutation they did not ask for.
163
225
  */
164
226
  rows: readonly DataRow[];
227
+ /**
228
+ * Whether a reader may select rows, with a column of checkboxes.
229
+ *
230
+ * Wants `row-key`: a selection is a set of identities, and without one the rows
231
+ * are known by their place in the result, which a sort changes.
232
+ */
233
+ selectable: boolean;
234
+ /**
235
+ * The keys of the selected rows, comma separated.
236
+ *
237
+ * A string rather than an array, so it is an attribute a server writes and a
238
+ * framework's hydration keeps, and the shape a multiple Listbox already uses.
239
+ * A key holding a comma cannot be told apart from two keys, which is the
240
+ * price of the shape. A reader's choice fires `helix-select` first, and
241
+ * refusing it leaves the selection as it was.
242
+ */
243
+ get selected(): string;
244
+ set selected(next: string);
165
245
  /**
166
246
  * How many rows a page holds. Zero is every row, which is what "no paging" means.
167
247
  *
@@ -217,6 +297,14 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
217
297
  private pageState;
218
298
  private pageSizeState;
219
299
  private paginatedState;
300
+ private orderState;
301
+ private selectedState;
302
+ /** The order while a grip is being dragged, before anybody has been asked. */
303
+ private dragOrder;
304
+ /** The column a grip is dragging, and the pointer doing it. */
305
+ private dragging;
306
+ /** Said once, so a table that re-renders does not repeat it. */
307
+ private warnedAboutKey;
220
308
  private readonly virtualize;
221
309
  /**
222
310
  * The rows in the shadow tree, each with the row of the page it drew.
@@ -259,6 +347,16 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
259
347
  private windowOf;
260
348
  /** The columns declared as children, in the order they are written. */
261
349
  get tableColumns(): HelixHeadlessTableColumn[];
350
+ /**
351
+ * The columns in the order a reader arranged them.
352
+ *
353
+ * The ones with a field are put in `order`'s order, those it does not name
354
+ * after them in the order they were written, and a column with no field stays
355
+ * where it was written: it has nothing to be named by.
356
+ */
357
+ get orderedColumns(): HelixHeadlessTableColumn[];
358
+ /** The fields in the order on screen. */
359
+ private get fields();
262
360
  /** The columns reduced to what the ordering needs. */
263
361
  private get axes();
264
362
  /** The track list, from the columns if there are any. */
@@ -337,6 +435,47 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
337
435
  * consumer refuses the local reorder, fetches, and hands back a new set.
338
436
  */
339
437
  private requestSort;
438
+ /** Asks for the columns in a different order, as every field in the new one. */
439
+ private requestOrder;
440
+ /** Asks for a different set of selected rows. */
441
+ private requestSelected;
442
+ /** The keys selected now. */
443
+ private get chosen();
444
+ /**
445
+ * A row's identity: its `row-key` field, or its place in the whole result.
446
+ *
447
+ * The place is a fallback that is right only while nothing reorders, and a
448
+ * selection outlives an order, so `selectable` without a `row-key` says so once.
449
+ */
450
+ private keyOf;
451
+ /**
452
+ * Every key the box in the heading answers for: the whole result in `client`
453
+ * mode, across every page, and the page it was handed in `server` mode, which
454
+ * is all it holds.
455
+ */
456
+ private get everyKey();
457
+ /** Ticks or clears one row, which the checkbox asked for and was refused. */
458
+ private readonly toggleRow;
459
+ /** Selects every row, or clears them all where every one already was. */
460
+ private readonly toggleAll;
461
+ /** Moves a column by some places among the ones that move. */
462
+ private moveColumn;
463
+ /**
464
+ * The result as CSV: every row the filter lets through, in the order on
465
+ * screen, in the columns on screen, headed by their headings.
466
+ *
467
+ * **Values, not cells.** A cell may be a template, a badge or a link, so each
468
+ * column gives its field's value, which is what a spreadsheet wants anyway.
469
+ * A column with no field has no value and is left out. In `server` mode this
470
+ * is the page it holds, which is all it can know.
471
+ *
472
+ * **A text value that a spreadsheet would run is quoted as text.** A cell
473
+ * opening with `=`, `+`, `-` or `@` is a formula to a spreadsheet, and a
474
+ * result is often something a reader did not write: those values gain a
475
+ * leading apostrophe, the mark spreadsheets read as "this is text". Numbers are
476
+ * left alone, so a negative one stays a number.
477
+ */
478
+ csv(): string;
340
479
  /** Asks for a different query. */
341
480
  private requestFilter;
342
481
  /** Asks for a different page. */
@@ -402,6 +541,13 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
402
541
  /** Columns arrive from the light DOM, which changes no property here. */
403
542
  private readonly handleSlotChange;
404
543
  private renderCell;
544
+ /**
545
+ * A checkbox, named for what it chooses, whose change the table takes.
546
+ *
547
+ * Refused and re-asked rather than left to tick itself: the selection is the
548
+ * table's, so the box only ever shows what `selected` says.
549
+ */
550
+ private renderCheckbox;
405
551
  private renderRows;
406
552
  /**
407
553
  * A row's place in the whole result, counting the header as row 1.
@@ -439,6 +585,8 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
439
585
  private renderSpacer;
440
586
  /** The controller owns the geometry; this is only what tells it to look again. */
441
587
  private readonly handleScroll;
588
+ /** The heading of the checkbox column, which selects the whole result. */
589
+ private renderSelectAll;
442
590
  protected render(): TemplateResult;
443
591
  /**
444
592
  * Listens on the host, not on the slot the columns are assigned to.
@@ -457,10 +605,34 @@ export declare class HelixHeadlessDataTable extends HelixHeadlessDataTable_base
457
605
  */
458
606
  connectedCallback(): void;
459
607
  disconnectedCallback(): void;
460
- /** A click on a sortable heading. */
608
+ /**
609
+ * A click on a sortable heading, anywhere but its grip or its edge.
610
+ *
611
+ * Enter and Space arrive here too, as the click the heading's sort button
612
+ * makes of them, so a keyboard needs nothing of its own.
613
+ */
461
614
  private readonly handleHeadClick;
462
- /** The same on Enter and Space, since a heading that sorts is a control. */
463
- private readonly handleHeadKey;
615
+ /** Whether the event passed through a part of that name on its way here. */
616
+ private partIn;
617
+ /** The arrow keys on a grip move its column a place, along the writing direction. */
618
+ private readonly handleGripKey;
619
+ /**
620
+ * A grip taken hold of: the headings follow the pointer and the order is asked
621
+ * for once it lets go.
622
+ *
623
+ * Previewed without an event, because a drag passes through a dozen orders on
624
+ * its way to the one the reader meant, and a consumer should hear the one.
625
+ */
626
+ private readonly handleGripDown;
627
+ private readonly handleGripMove;
628
+ private readonly handleGripUp;
629
+ private readonly handleGripCancel;
630
+ private stopDrag;
631
+ /**
632
+ * A column asked for a width. The column keeps its own, so all this does is
633
+ * draw the grid again once it has, a microtask on, when the width has landed.
634
+ */
635
+ private readonly handleResize;
464
636
  private columnFrom;
465
637
  /**
466
638
  * The composed pagination's request, relayed as this element's own.