@fusion.dev/helix-headless 0.105.0 → 0.107.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/custom-elements.json +7324 -3890
  2. package/dist/accordion/item/accordion-item.d.ts +17 -16
  3. package/dist/accordion/root/accordion-root.d.ts +13 -17
  4. package/dist/announcement/root/announcement-root.d.ts +24 -31
  5. package/dist/app-header/root/app-header-root.d.ts +14 -14
  6. package/dist/area-chart/root/area-chart-root.d.ts +29 -48
  7. package/dist/avatar/group/avatar-group.d.ts +6 -8
  8. package/dist/avatar/root/avatar-root.d.ts +11 -11
  9. package/dist/badge/root/badge-root.d.ts +14 -15
  10. package/dist/bar-chart/root/bar-chart-root.d.ts +40 -44
  11. package/dist/blockquote/root/blockquote-root.d.ts +5 -7
  12. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +25 -33
  13. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +12 -11
  14. package/dist/button/root/button-root.d.ts +16 -17
  15. package/dist/button-group/root/button-group-root.d.ts +9 -10
  16. package/dist/callout/root/callout-root.d.ts +10 -15
  17. package/dist/canvas/edge/canvas-edge.d.ts +21 -21
  18. package/dist/canvas/node/canvas-node.d.ts +43 -45
  19. package/dist/canvas/root/canvas-root.d.ts +100 -99
  20. package/dist/card/root/card-root.d.ts +10 -12
  21. package/dist/carousel/root/carousel-root.d.ts +32 -33
  22. package/dist/chat/composer/chat-composer.d.ts +24 -26
  23. package/dist/chat/message/chat-message.d.ts +30 -33
  24. package/dist/chat/root/chat-root.d.ts +63 -80
  25. package/dist/checkbox/root/checkbox-root.d.ts +30 -32
  26. package/dist/checkbox-group/root/checkbox-group-root.d.ts +25 -25
  27. package/dist/code/root/code-root.d.ts +6 -10
  28. package/dist/code-block/root/code-block-root.d.ts +35 -48
  29. package/dist/color-input/root/color-input-root.d.ts +52 -56
  30. package/dist/color-picker/root/color-picker-root.d.ts +49 -49
  31. package/dist/combobox/root/combobox-root.d.ts +52 -53
  32. package/dist/command/root/command-root.d.ts +35 -40
  33. package/dist/copy-button/root/copy-button-root.d.ts +24 -26
  34. package/dist/data-table/root/data-table-root.d.ts +106 -107
  35. package/dist/date-input/root/date-input-root.d.ts +54 -53
  36. package/dist/date-picker/root/date-picker-root.d.ts +25 -21
  37. package/dist/description-list/item/description-list-item.d.ts +7 -7
  38. package/dist/description-list/root/description-list-root.d.ts +10 -15
  39. package/dist/dialog/root/dialog-root.d.ts +22 -19
  40. package/dist/divider/root/divider-root.d.ts +12 -13
  41. package/dist/donut-chart/root/donut-chart-root.d.ts +19 -20
  42. package/dist/drawer/root/drawer-root.d.ts +19 -18
  43. package/dist/drilldown/item/drilldown-item.d.ts +28 -28
  44. package/dist/drilldown/root/drilldown-root.d.ts +22 -28
  45. package/dist/element-events.generated.js +7 -0
  46. package/dist/empty/root/empty-root.d.ts +16 -19
  47. package/dist/file-input/root/file-input-root.d.ts +32 -32
  48. package/dist/filter-input/chip/filter-chip.d.ts +36 -39
  49. package/dist/filter-input/field/filter-field.d.ts +25 -31
  50. package/dist/filter-input/menu/filter-menu.d.ts +50 -47
  51. package/dist/filter-input/operator/filter-operator.d.ts +15 -20
  52. package/dist/filter-input/root/filter-input-root.d.ts +80 -98
  53. package/dist/format-date/root/format-date-root.d.ts +19 -27
  54. package/dist/heatmap/root/heatmap-root.d.ts +40 -41
  55. package/dist/icon/root/icon-root.d.ts +21 -23
  56. package/dist/icon-button/root/icon-button-root.d.ts +12 -14
  57. package/dist/image/root/image-root.d.ts +30 -30
  58. package/dist/input/root/input-root.d.ts +36 -35
  59. package/dist/kbd/root/kbd-root.d.ts +13 -15
  60. package/dist/legend/root/legend-root.d.ts +18 -16
  61. package/dist/lightbox/item/lightbox-item.d.ts +13 -15
  62. package/dist/lightbox/root/lightbox-root.d.ts +40 -41
  63. package/dist/line-chart/root/line-chart-root.d.ts +20 -29
  64. package/dist/list/item/list-item.d.ts +17 -22
  65. package/dist/list/root/list-root.d.ts +6 -7
  66. package/dist/listbox/root/listbox-root.d.ts +42 -41
  67. package/dist/loader/root/loader-root.d.ts +16 -20
  68. package/dist/map/area/map-area.d.ts +6 -0
  69. package/dist/map/area/map-area.js +3 -0
  70. package/dist/map/buildings/map-buildings.d.ts +45 -0
  71. package/dist/map/buildings/map-buildings.js +37 -0
  72. package/dist/map/contours/map-contours.d.ts +61 -0
  73. package/dist/map/contours/map-contours.js +54 -0
  74. package/dist/map/index.d.ts +7 -0
  75. package/dist/map/index.js +5 -0
  76. package/dist/map/landcover/map-landcover.d.ts +47 -0
  77. package/dist/map/landcover/map-landcover.js +37 -0
  78. package/dist/map/marker/map-marker.d.ts +11 -4
  79. package/dist/map/marker/map-marker.js +13 -1
  80. package/dist/map/points/map-points.d.ts +7 -1
  81. package/dist/map/points/map-points.js +3 -0
  82. package/dist/map/raster/map-raster.d.ts +84 -0
  83. package/dist/map/raster/map-raster.js +96 -0
  84. package/dist/map/root/map-root.d.ts +169 -7
  85. package/dist/map/root/map-root.js +352 -4
  86. package/dist/map/route/map-route.d.ts +6 -0
  87. package/dist/map/route/map-route.js +3 -0
  88. package/dist/map/terrain/map-terrain.d.ts +68 -0
  89. package/dist/map/terrain/map-terrain.js +58 -0
  90. package/dist/megamenu/root/megamenu-root.d.ts +27 -25
  91. package/dist/menu/item/menu-item.d.ts +30 -31
  92. package/dist/menu/root/menu-root.d.ts +25 -29
  93. package/dist/meter/root/meter-root.d.ts +22 -21
  94. package/dist/navigation/root/navigation-root.d.ts +13 -16
  95. package/dist/notifications/group/notification-group.d.ts +27 -28
  96. package/dist/notifications/notification/notification.d.ts +35 -42
  97. package/dist/notifications/root/notifications-root.d.ts +22 -24
  98. package/dist/number-input/root/number-input-root.d.ts +46 -50
  99. package/dist/object-inspector/root/object-inspector-root.d.ts +46 -58
  100. package/dist/option/group/option-group.d.ts +11 -11
  101. package/dist/option/root/option-root.d.ts +28 -33
  102. package/dist/outline/root/outline-root.d.ts +18 -17
  103. package/dist/pagination/root/pagination-root.d.ts +37 -39
  104. package/dist/pagination/size/pagination-size.d.ts +37 -43
  105. package/dist/pagination/summary/pagination-summary.d.ts +12 -14
  106. package/dist/pin-input/root/pin-input-root.d.ts +32 -38
  107. package/dist/popover/root/popover-root.d.ts +16 -21
  108. package/dist/progress/root/progress-root.d.ts +16 -14
  109. package/dist/qr-code/root/qr-code-root.d.ts +22 -25
  110. package/dist/quote/root/quote-root.d.ts +5 -6
  111. package/dist/radio/group/radio-group.d.ts +26 -28
  112. package/dist/radio/root/radio-root.d.ts +24 -28
  113. package/dist/rating/root/rating-root.d.ts +27 -30
  114. package/dist/scatter-chart/root/scatter-chart-root.d.ts +43 -55
  115. package/dist/scroll-area/root/scroll-area-root.d.ts +15 -21
  116. package/dist/select/root/select-root.d.ts +41 -44
  117. package/dist/skeleton/root/skeleton-root.d.ts +7 -8
  118. package/dist/skip-link/root/skip-link-root.d.ts +21 -28
  119. package/dist/slider/root/slider-root.d.ts +36 -39
  120. package/dist/sparkline/root/sparkline-root.d.ts +22 -28
  121. package/dist/speed-dial/item/speed-dial-item.d.ts +21 -21
  122. package/dist/speed-dial/root/speed-dial-root.d.ts +25 -27
  123. package/dist/splitter/root/splitter-root.d.ts +37 -41
  124. package/dist/stat/group/stat-group.d.ts +4 -4
  125. package/dist/stat/root/stat-root.d.ts +8 -9
  126. package/dist/steps/root/steps-root.d.ts +11 -14
  127. package/dist/steps/step/step.d.ts +22 -29
  128. package/dist/switch/root/switch-root.d.ts +20 -24
  129. package/dist/table/cell/table-cell.d.ts +18 -8
  130. package/dist/table/cell/table-cell.js +5 -1
  131. package/dist/table/column/table-column.d.ts +62 -55
  132. package/dist/table/root/table-root.d.ts +16 -17
  133. package/dist/table/row/table-row.d.ts +3 -3
  134. package/dist/tabs/panel/tab-panel.d.ts +3 -3
  135. package/dist/tabs/root/tabs-root.d.ts +19 -17
  136. package/dist/tabs/tab/tab.d.ts +6 -6
  137. package/dist/tag/root/tag-root.d.ts +11 -12
  138. package/dist/textarea/root/textarea-root.d.ts +29 -32
  139. package/dist/time-input/root/time-input-root.d.ts +70 -69
  140. package/dist/time-picker/root/time-picker-root.d.ts +58 -66
  141. package/dist/timeline/item/timeline-item.d.ts +18 -24
  142. package/dist/timeline/root/timeline-root.d.ts +13 -21
  143. package/dist/toast/item/toast-item.d.ts +21 -22
  144. package/dist/toast/root/toast-root.d.ts +18 -23
  145. package/dist/toggle/group/toggle-group.d.ts +23 -25
  146. package/dist/toggle/root/toggle-root.d.ts +8 -8
  147. package/dist/toolbar/root/toolbar-root.d.ts +7 -10
  148. package/dist/tooltip/root/tooltip-root.d.ts +41 -47
  149. package/dist/tour/root/tour-root.d.ts +24 -26
  150. package/dist/tour/stop/tour-stop.d.ts +39 -48
  151. package/dist/tree/item/tree-item.d.ts +23 -25
  152. package/dist/tree/root/tree-root.d.ts +13 -12
  153. package/dist/trend/root/trend-root.d.ts +18 -19
  154. package/dist/video/root/video-root.d.ts +108 -101
  155. package/dist/video-playlist/item/video-playlist-item.d.ts +23 -28
  156. package/dist/video-playlist/menu/video-playlist-menu.d.ts +17 -21
  157. package/dist/video-playlist/root/video-playlist-root.d.ts +21 -25
  158. package/dist/virtual-list/root/virtual-list-root.d.ts +27 -26
  159. package/package.json +5 -5
  160. package/types/jsx.d.ts +10363 -9520
  161. package/types/svelte.d.ts +5 -0
  162. package/types/vue.d.ts +1440 -1032
@@ -4,23 +4,18 @@ import { type TemplateResult } from 'lit';
4
4
  * @summary One entry in a video playlist.
5
5
  *
6
6
  * @description
7
- * **It holds what the player needs and nothing about playing.** A source, a
8
- * poster and a name: the entry knows which file it stands for, and the playlist
9
- * is what hands that to a player. Nothing here touches a `<video>`, which is
10
- * what keeps a playlist usable with a player the consumer configured
11
- * themselves.
7
+ * **An entry holds a source, a poster, and a name**, and the playlist passes
8
+ * them to the player. The entry does not touch a `<video>`, so the playlist
9
+ * works with a player you configured yourself.
12
10
  *
13
- * **A real `<button>`, in a `listitem`.** A playlist is a list of things to
14
- * choose, and the list roles are the honest ones: `list` and `listitem` say how
15
- * many there are and where you are in them, which `listbox` would too, at the
16
- * cost of the pattern a listbox obliges. `Option` records that trap in full,
17
- * that a listbox has to keep focus elsewhere and say which item is current with
18
- * `aria-activedescendant`. Nothing here needs that, because focus really moves
19
- * to the button.
11
+ * **Each entry is a `<button>` inside a `listitem`.** The `list` and `listitem`
12
+ * roles tell a screen reader how many entries there are and the position of the
13
+ * focused one. Focus moves to the button, so the entry does not need the
14
+ * `listbox` pattern, which keeps focus elsewhere and marks the current item
15
+ * with `aria-activedescendant`. `Option` documents that pattern.
20
16
  *
21
- * `aria-current` rather than `aria-selected`, which belongs to the roles that
22
- * have a selection. What is true of the entry playing now is that it is the one
23
- * the player is on.
17
+ * The entry playing now carries `aria-current`. `aria-selected` belongs to
18
+ * roles that have a selection.
24
19
  *
25
20
  * @since 0.1.0
26
21
  * @status stable
@@ -28,21 +23,21 @@ import { type TemplateResult } from 'lit';
28
23
  * @documentation https://fusion.dev/helix/components/video-playlist
29
24
  *
30
25
  * @slot - The entry's name.
31
- * @slot media - A thumbnail. Falls back to an image of `poster`.
32
- * @slot meta - After the name. A duration, or a date.
26
+ * @slot media - A thumbnail. Defaults to an image of `poster`.
27
+ * @slot meta - Content after the name, such as a duration or a date.
33
28
  *
34
- * @event {HelixSelectEvent} helix-select - Fired when the entry is chosen. Cancelable: refusing it takes the decision and nothing moves.
29
+ * @event {HelixSelectEvent} helix-select - The entry was chosen. Cancelable: cancel it to keep the current entry.
35
30
  *
36
- * @csspart container - The `listitem`, which the button sits in.
31
+ * @csspart container - The list item that holds the button.
37
32
  * @csspart item - The row, which is a button.
38
- * @csspart item-current - The row of the entry the player is on, beside `item`.
39
- * @csspart label - The name and whatever follows it.
40
- * @csspart media - The leading column.
41
- * @csspart thumbnail - The image `poster` falls back to.
33
+ * @csspart item-current - Added to `item` for the entry that is playing.
34
+ * @csspart label - The name and the content after it.
35
+ * @csspart media - The column at the start of the row.
36
+ * @csspart thumbnail - The image of `poster`, shown when the `media` slot is empty.
42
37
  */
43
38
  export declare class HelixHeadlessVideoPlaylistItem extends HelixElement {
44
39
  /**
45
- * Whether the player is on this entry.
40
+ * Whether this entry is the one playing.
46
41
  *
47
42
  * Written by the playlist rather than by the entry, the way an option's
48
43
  * selection is: an entry that made itself current would be a second answer to
@@ -50,11 +45,11 @@ export declare class HelixHeadlessVideoPlaylistItem extends HelixElement {
50
45
  */
51
46
  current: boolean;
52
47
  /**
53
- * Whether the entry can be chosen.
48
+ * Prevents the entry from being chosen.
54
49
  */
55
50
  disabled: boolean;
56
51
  /**
57
- * What covers the picture before this entry plays, and the row's thumbnail.
52
+ * The image shown before this entry plays, also used as the row's thumbnail.
58
53
  *
59
54
  * One property doing both, because they are the same picture: the frame that
60
55
  * stands for the clip stands for it in the list too. It is the `media` slot's
@@ -68,11 +63,11 @@ export declare class HelixHeadlessVideoPlaylistItem extends HelixElement {
68
63
  */
69
64
  src: string;
70
65
  /**
71
- * What identifies the entry, and what `active` is compared against.
66
+ * The entry's identifier, compared against the playlist's `active`.
72
67
  */
73
68
  value: string;
74
69
  /**
75
- * The entry's name, which is the words and not everything in it.
70
+ * The entry's name: its own text, without the content in its named slots.
76
71
  *
77
72
  * `textContent` takes the whole subtree: a row with a duration in `meta`
78
73
  * reads as "His Girl Friday0:06", and that string reaches the player and the
@@ -5,15 +5,11 @@ import '../../menu/index.js';
5
5
  * @summary The playlist's entries, as a menu inside the player's control bar.
6
6
  *
7
7
  * @description
8
- * The entries again, reachable without leaving the picture. A playlist beside
9
- * the player is a list a reader scrolls to; the same list in the control bar is
10
- * one they open over the video.
8
+ * Opens the playlist entries from the player's control bar, over the video.
11
9
  *
12
- * **It is placed by the consumer, not rendered by the playlist**, and that is
13
- * forced rather than chosen: a shadow root cannot project into a sibling's
14
- * light DOM, so nothing the playlist renders can land inside the player's
15
- * control bar. What can is an element the consumer writes there, which is what
16
- * `Video`'s `controls` slot is for.
10
+ * **You place the menu yourself**, in `Video`'s `controls` slot. A shadow root
11
+ * cannot project into a sibling's light DOM, so the playlist cannot render into
12
+ * the player's control bar.
17
13
  *
18
14
  * @since 0.1.0
19
15
  * @status stable
@@ -23,27 +19,27 @@ import '../../menu/index.js';
23
19
  *
24
20
  * @slot trigger - Replaces the button that opens the menu.
25
21
  *
26
- * @event {HelixSelectEvent} helix-select - Fired with the chosen entry's value. The playlist listens for it. Cancelable: refusing it takes the decision and nothing moves.
22
+ * @event {HelixSelectEvent} helix-select - An entry was chosen. The event carries its value, and the playlist listens for it. Cancelable: cancel it to keep the current entry.
27
23
  *
28
24
  * @csspart entry - One entry in the menu.
29
- * @csspart entry-item - The row, which is an `<a>` where `href` is set.
30
- * @csspart entry-mark - The trailing mark: a tick when checked, a caret when it opens
31
- * @csspart entry-start - The leading column, which is a slot and is always there.
25
+ * @csspart entry-item - The entry's row. It is an `<a>` when `href` is set.
26
+ * @csspart entry-mark - The mark at the end of an entry: a check mark when it is checked, or a caret when it opens a submenu.
27
+ * @csspart entry-start - The column at the start of an entry. It is a slot and is always present.
32
28
  * @csspart menu - The menu that holds the entries.
33
- * @csspart menu-back - The control that returns from a submenu.
34
- * @csspart menu-back-mark - The glyph on the back control of a submenu.
29
+ * @csspart menu-back - The button that goes back from a submenu.
30
+ * @csspart menu-back-mark - The icon on a submenu's back button.
35
31
  * @csspart menu-empty - Shown when there are no items to show.
36
- * @csspart menu-header - The bar above a submenu, holding the way back and its name.
37
- * @csspart menu-live - The inner menu's `live`, the region a screen reader hears its empty and loading lines from.
38
- * @csspart menu-loading - Shown while the items are still on their way.
32
+ * @csspart menu-header - The bar above a submenu, holding the back button and the submenu's name.
33
+ * @csspart menu-live - The inner menu's `live` part, the region screen readers announce its empty and loading messages from.
34
+ * @csspart menu-loading - Shown while the items are loading.
39
35
  * @csspart menu-surface - The floating panel the menu is drawn on.
40
- * @csspart menu-title - The name of the submenu that is showing.
41
- * @csspart poster - An entry's still, where it has one.
42
- * @csspart trigger - The button that opens it.
36
+ * @csspart menu-title - The name of the submenu that is shown.
37
+ * @csspart poster - An entry's poster image, if it has one.
38
+ * @csspart trigger - The button that opens the menu.
43
39
  */
44
40
  export declare class HelixHeadlessVideoPlaylistMenu extends HelixElement {
45
41
  /**
46
- * The menu's accessible name, and its trigger's.
42
+ * The name of the menu and its trigger, read by screen readers.
47
43
  *
48
44
  * "Episodes" suits a series and is wrong for a set of camera angles, and the
49
45
  * component cannot know which one it is in.
@@ -2,31 +2,27 @@ import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  declare const HelixHeadlessVideoPlaylist_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerActiveInterface) & typeof HelixElement;
4
4
  /**
5
- * @summary A set of clips and the one player they take turns in.
5
+ * @summary A list of video clips that play one after another in a single player.
6
6
  *
7
7
  * @description
8
- * **The player is slotted, never rendered here.** A consumer's player carries
9
- * their appearance, their extra controls, their captions and their poster
10
- * treatment, and a playlist that rendered its own would either lose all of that
11
- * or grow a property for each of them. `Sandbox` takes its preview and `Menu`
12
- * its trigger the same way.
8
+ * **You slot the player**, so it keeps your appearance, extra controls,
9
+ * captions, and poster treatment. `Sandbox` takes its preview and `Menu` its
10
+ * trigger the same way.
13
11
  *
14
- * **The entries are markup rather than an array property.** A list of objects
15
- * would be the shorter API and it does not survive the trip: React skips every
16
- * property it would have to apply imperatively while hydrating, so an array
17
- * handed to a custom element is missing on the first paint of every
18
- * server-rendered page. `using-the-elements.mdx` carries the measurement. Markup
19
- * is also what makes each entry a real button with a real name in it.
12
+ * **Entries are markup.** React skips properties it would set imperatively
13
+ * during hydration, so an array property on a custom element is missing on the
14
+ * first paint of a server-rendered page. `using-the-elements.mdx` has the
15
+ * measurement. Markup also makes each entry a real button with its name inside.
20
16
  *
21
- * **Nothing here plays anything.** It sets `src` on the player and lets the
22
- * player be a player. What the playlist owns is which entry is current, and it
23
- * moves that on three signals: an entry pressed, `helix-next` or
24
- * `helix-previous` from the player, and the player reaching the end.
17
+ * **The playlist does not play media.** It sets `src` on the player and tracks
18
+ * which entry is current. The current entry moves when:
25
19
  *
26
- * `ended` advances without asking, because a set of clips that stopped between
27
- * each one is a set the reader has to nurse. The clip that follows starts where
28
- * the last one left off, which is `autoplay` in the only sense that matters
29
- * here: the reader already pressed play once.
20
+ * - an entry is pressed,
21
+ * - the player dispatches `helix-next` or `helix-previous`, or
22
+ * - the player reaches the end.
23
+ *
24
+ * On `ended` the playlist advances and the next clip starts playing, because
25
+ * the user already pressed play once.
30
26
  *
31
27
  * @since 0.1.0
32
28
  * @status stable
@@ -35,17 +31,17 @@ declare const HelixHeadlessVideoPlaylist_base: (new (...args: any[]) => import("
35
31
  * @documentation https://fusion.dev/helix/components/video-playlist
36
32
  *
37
33
  * @slot - The entries.
38
- * @slot player - The player the entries take turns in.
34
+ * @slot player - The player that plays the entries.
39
35
  *
40
- * @event {HelixActivateEvent} helix-activate - Fired once the current one has moved, so the element already holds it.
41
- * @event {HelixBeforeActivateEvent} helix-before-activate - Fired before the current entry changes, and cancelable.
36
+ * @event {HelixActivateEvent} helix-activate - The current entry changed. The playlist already holds the new entry when this is sent.
37
+ * @event {HelixBeforeActivateEvent} helix-before-activate - The current entry is about to change. Cancelable: cancel it to keep the current entry.
42
38
  *
43
39
  * @csspart items - The list of entries.
44
- * @csspart player - The region holding the player.
40
+ * @csspart player - The region that holds the player.
45
41
  */
46
42
  export declare class HelixHeadlessVideoPlaylist extends HelixHeadlessVideoPlaylist_base {
47
43
  /**
48
- * Accessible name for the list, which usually has no visible heading.
44
+ * The list's name, read by screen readers.
49
45
  */
50
46
  label: string;
51
47
  /**
@@ -1,58 +1,59 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  /**
4
- * @summary Renders the rows of a long set that are on screen, and no others.
4
+ * @summary A list that renders only the rows of a long set that are on screen.
5
5
  *
6
6
  * @description
7
- * **The set arrives as data, which is what makes this a virtual list rather
8
- * than a box that hides children.** `for` names a
9
- * `<script type="application/json">` holding an array of objects, and a
10
- * `<template>` child says what one row looks like: elements carrying
11
- * `data-field="name"` are filled with that field of the item.
7
+ * The items arrive as data:
12
8
  *
13
- * Both halves are markup, and that is the reason for the shape. An `items`
14
- * property cannot survive React hydration, which skips every property it would
15
- * have to apply imperatively, and light-DOM children exist by the time anything
16
- * could decide not to create them. Text in the document is neither, and it is
17
- * one node whatever the row count.
9
+ * - `for` names a `<script type="application/json">` that holds an array of
10
+ * objects.
11
+ * - A `<template>` child defines one row. Elements with `data-field="name"` are
12
+ * filled with that field of the item.
18
13
  *
19
- * **The accessible version is not a `<table>`**, the way it is for the charts
20
- * that share this `for="<id>"` shape: ten thousand rows in one is the cost this
21
- * exists to avoid. It is the rendered window plus `aria-setsize`.
14
+ * Both are markup. React hydration skips every property it would have to set
15
+ * imperatively, so an `items` property would be lost, and light-DOM children
16
+ * would all exist before anything could window them. The JSON text is one node
17
+ * whatever the row count.
22
18
  *
23
- * **The box scrolls on this tier.** The viewport carries `data-scroller` and
24
- * `core` ships `[data-scroller] { overflow: auto }` into every shadow root, so
25
- * `scrollTop` exists with no stylesheet at all. What a headless consumer still
26
- * has to supply is a block size, which is a design decision; the `overflow`
27
- * they used to supply was a mechanism they had no way of knowing was missing.
19
+ * For assistive technology the list exposes the rendered window with
20
+ * `aria-setsize`. Charts that use the same `for="<id>"` shape render an
21
+ * accessible `<table>`, and ten thousand rows in one is the cost this component
22
+ * avoids.
23
+ *
24
+ * The viewport scrolls on this tier. It carries `data-scroller`, and `core`
25
+ * ships `[data-scroller] { overflow: auto }` into every shadow root, so
26
+ * `scrollTop` works with no stylesheet. You still need to set a block size.
28
27
  *
29
28
  * @since 0.1.0
30
29
  * @status stable
31
30
  * @category layout
32
31
  * @documentation https://fusion.dev/helix/components/virtual-list
33
32
  *
34
- * @csspart after - The space standing in for rows below the window.
35
- * @csspart before - The space standing in for rows above the window.
36
- * @csspart viewport - The scrolling box. Needs a block size on this tier, and nothing else.
33
+ * @csspart after - The space that stands in for the rows below the rendered ones.
34
+ * @csspart before - The space that stands in for the rows above the rendered ones.
35
+ * @csspart viewport - The scrolling box. On this tier, it needs only a block size.
37
36
  */
38
37
  export declare class HelixHeadlessVirtualList extends HelixElement {
39
38
  /**
40
- * How tall one row is, in pixels, used to map scroll offset to an index.
39
+ * The height of one row, in pixels, used to find the row at a scroll offset.
41
40
  *
42
41
  * An estimate rather than a measurement while `measured` is off, which is
43
42
  * right whenever the rows really are one height and is the cheaper of the two.
44
43
  */
45
44
  estimate: number;
46
45
  /**
47
- * Id of the element holding the rows, as JSON in a script.
46
+ * The id of the script element that holds the rows as JSON.
48
47
  */
49
48
  for: string;
50
49
  /**
51
- * What the list is called, since the rendered rows are only a window on it.
50
+ * The list's name, read by screen readers, because only some of its rows
51
+ * are rendered at a time.
52
52
  */
53
53
  label: string;
54
54
  /**
55
- * Places rows by what they came to rather than by `estimate`.
55
+ * Places rows by their measured height. Without it, every row is placed by
56
+ * `estimate`.
56
57
  *
57
58
  * **Off by default, because the straight line is better when it holds.** One
58
59
  * estimate makes offset and index convert by division, which can never
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix-headless",
3
3
  "description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
4
- "version": "0.105.0",
4
+ "version": "0.107.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -46,13 +46,13 @@
46
46
  },
47
47
  "bugs": "https://github.com/project-fusion/fusion/issues",
48
48
  "dependencies": {
49
- "@fusion.dev/helix-core": "0.105.0",
50
- "@fusion.dev/helix-icons": "0.105.0",
49
+ "@fusion.dev/helix-core": "0.107.0",
50
+ "@fusion.dev/helix-icons": "0.107.0",
51
51
  "uqr": "^0.1.3"
52
52
  },
53
53
  "devDependencies": {
54
- "@fusion.dev/helix-cem": "0.105.0",
55
- "@fusion.dev/helix-testing": "0.105.0",
54
+ "@fusion.dev/helix-cem": "0.107.0",
55
+ "@fusion.dev/helix-testing": "0.107.0",
56
56
  "@fusion.dev/scripts": "0.0.0-dev",
57
57
  "@happy-dom/global-registrator": "^20.0.0",
58
58
  "@lit-labs/ssr": "^4.1.0",