@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.
- package/custom-elements.json +7324 -3890
- package/dist/accordion/item/accordion-item.d.ts +17 -16
- package/dist/accordion/root/accordion-root.d.ts +13 -17
- package/dist/announcement/root/announcement-root.d.ts +24 -31
- package/dist/app-header/root/app-header-root.d.ts +14 -14
- package/dist/area-chart/root/area-chart-root.d.ts +29 -48
- package/dist/avatar/group/avatar-group.d.ts +6 -8
- package/dist/avatar/root/avatar-root.d.ts +11 -11
- package/dist/badge/root/badge-root.d.ts +14 -15
- package/dist/bar-chart/root/bar-chart-root.d.ts +40 -44
- package/dist/blockquote/root/blockquote-root.d.ts +5 -7
- package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +25 -33
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +12 -11
- package/dist/button/root/button-root.d.ts +16 -17
- package/dist/button-group/root/button-group-root.d.ts +9 -10
- package/dist/callout/root/callout-root.d.ts +10 -15
- package/dist/canvas/edge/canvas-edge.d.ts +21 -21
- package/dist/canvas/node/canvas-node.d.ts +43 -45
- package/dist/canvas/root/canvas-root.d.ts +100 -99
- package/dist/card/root/card-root.d.ts +10 -12
- package/dist/carousel/root/carousel-root.d.ts +32 -33
- package/dist/chat/composer/chat-composer.d.ts +24 -26
- package/dist/chat/message/chat-message.d.ts +30 -33
- package/dist/chat/root/chat-root.d.ts +63 -80
- package/dist/checkbox/root/checkbox-root.d.ts +30 -32
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +25 -25
- package/dist/code/root/code-root.d.ts +6 -10
- package/dist/code-block/root/code-block-root.d.ts +35 -48
- package/dist/color-input/root/color-input-root.d.ts +52 -56
- package/dist/color-picker/root/color-picker-root.d.ts +49 -49
- package/dist/combobox/root/combobox-root.d.ts +52 -53
- package/dist/command/root/command-root.d.ts +35 -40
- package/dist/copy-button/root/copy-button-root.d.ts +24 -26
- package/dist/data-table/root/data-table-root.d.ts +106 -107
- package/dist/date-input/root/date-input-root.d.ts +54 -53
- package/dist/date-picker/root/date-picker-root.d.ts +25 -21
- package/dist/description-list/item/description-list-item.d.ts +7 -7
- package/dist/description-list/root/description-list-root.d.ts +10 -15
- package/dist/dialog/root/dialog-root.d.ts +22 -19
- package/dist/divider/root/divider-root.d.ts +12 -13
- package/dist/donut-chart/root/donut-chart-root.d.ts +19 -20
- package/dist/drawer/root/drawer-root.d.ts +19 -18
- package/dist/drilldown/item/drilldown-item.d.ts +28 -28
- package/dist/drilldown/root/drilldown-root.d.ts +22 -28
- package/dist/element-events.generated.js +7 -0
- package/dist/empty/root/empty-root.d.ts +16 -19
- package/dist/file-input/root/file-input-root.d.ts +32 -32
- package/dist/filter-input/chip/filter-chip.d.ts +36 -39
- package/dist/filter-input/field/filter-field.d.ts +25 -31
- package/dist/filter-input/menu/filter-menu.d.ts +50 -47
- package/dist/filter-input/operator/filter-operator.d.ts +15 -20
- package/dist/filter-input/root/filter-input-root.d.ts +80 -98
- package/dist/format-date/root/format-date-root.d.ts +19 -27
- package/dist/heatmap/root/heatmap-root.d.ts +40 -41
- package/dist/icon/root/icon-root.d.ts +21 -23
- package/dist/icon-button/root/icon-button-root.d.ts +12 -14
- package/dist/image/root/image-root.d.ts +30 -30
- package/dist/input/root/input-root.d.ts +36 -35
- package/dist/kbd/root/kbd-root.d.ts +13 -15
- package/dist/legend/root/legend-root.d.ts +18 -16
- package/dist/lightbox/item/lightbox-item.d.ts +13 -15
- package/dist/lightbox/root/lightbox-root.d.ts +40 -41
- package/dist/line-chart/root/line-chart-root.d.ts +20 -29
- package/dist/list/item/list-item.d.ts +17 -22
- package/dist/list/root/list-root.d.ts +6 -7
- package/dist/listbox/root/listbox-root.d.ts +42 -41
- package/dist/loader/root/loader-root.d.ts +16 -20
- package/dist/map/area/map-area.d.ts +6 -0
- package/dist/map/area/map-area.js +3 -0
- package/dist/map/buildings/map-buildings.d.ts +45 -0
- package/dist/map/buildings/map-buildings.js +37 -0
- package/dist/map/contours/map-contours.d.ts +61 -0
- package/dist/map/contours/map-contours.js +54 -0
- package/dist/map/index.d.ts +7 -0
- package/dist/map/index.js +5 -0
- package/dist/map/landcover/map-landcover.d.ts +47 -0
- package/dist/map/landcover/map-landcover.js +37 -0
- package/dist/map/marker/map-marker.d.ts +11 -4
- package/dist/map/marker/map-marker.js +13 -1
- package/dist/map/points/map-points.d.ts +7 -1
- package/dist/map/points/map-points.js +3 -0
- package/dist/map/raster/map-raster.d.ts +84 -0
- package/dist/map/raster/map-raster.js +96 -0
- package/dist/map/root/map-root.d.ts +169 -7
- package/dist/map/root/map-root.js +352 -4
- package/dist/map/route/map-route.d.ts +6 -0
- package/dist/map/route/map-route.js +3 -0
- package/dist/map/terrain/map-terrain.d.ts +68 -0
- package/dist/map/terrain/map-terrain.js +58 -0
- package/dist/megamenu/root/megamenu-root.d.ts +27 -25
- package/dist/menu/item/menu-item.d.ts +30 -31
- package/dist/menu/root/menu-root.d.ts +25 -29
- package/dist/meter/root/meter-root.d.ts +22 -21
- package/dist/navigation/root/navigation-root.d.ts +13 -16
- package/dist/notifications/group/notification-group.d.ts +27 -28
- package/dist/notifications/notification/notification.d.ts +35 -42
- package/dist/notifications/root/notifications-root.d.ts +22 -24
- package/dist/number-input/root/number-input-root.d.ts +46 -50
- package/dist/object-inspector/root/object-inspector-root.d.ts +46 -58
- package/dist/option/group/option-group.d.ts +11 -11
- package/dist/option/root/option-root.d.ts +28 -33
- package/dist/outline/root/outline-root.d.ts +18 -17
- package/dist/pagination/root/pagination-root.d.ts +37 -39
- package/dist/pagination/size/pagination-size.d.ts +37 -43
- package/dist/pagination/summary/pagination-summary.d.ts +12 -14
- package/dist/pin-input/root/pin-input-root.d.ts +32 -38
- package/dist/popover/root/popover-root.d.ts +16 -21
- package/dist/progress/root/progress-root.d.ts +16 -14
- package/dist/qr-code/root/qr-code-root.d.ts +22 -25
- package/dist/quote/root/quote-root.d.ts +5 -6
- package/dist/radio/group/radio-group.d.ts +26 -28
- package/dist/radio/root/radio-root.d.ts +24 -28
- package/dist/rating/root/rating-root.d.ts +27 -30
- package/dist/scatter-chart/root/scatter-chart-root.d.ts +43 -55
- package/dist/scroll-area/root/scroll-area-root.d.ts +15 -21
- package/dist/select/root/select-root.d.ts +41 -44
- package/dist/skeleton/root/skeleton-root.d.ts +7 -8
- package/dist/skip-link/root/skip-link-root.d.ts +21 -28
- package/dist/slider/root/slider-root.d.ts +36 -39
- package/dist/sparkline/root/sparkline-root.d.ts +22 -28
- package/dist/speed-dial/item/speed-dial-item.d.ts +21 -21
- package/dist/speed-dial/root/speed-dial-root.d.ts +25 -27
- package/dist/splitter/root/splitter-root.d.ts +37 -41
- package/dist/stat/group/stat-group.d.ts +4 -4
- package/dist/stat/root/stat-root.d.ts +8 -9
- package/dist/steps/root/steps-root.d.ts +11 -14
- package/dist/steps/step/step.d.ts +22 -29
- package/dist/switch/root/switch-root.d.ts +20 -24
- package/dist/table/cell/table-cell.d.ts +18 -8
- package/dist/table/cell/table-cell.js +5 -1
- package/dist/table/column/table-column.d.ts +62 -55
- package/dist/table/root/table-root.d.ts +16 -17
- package/dist/table/row/table-row.d.ts +3 -3
- package/dist/tabs/panel/tab-panel.d.ts +3 -3
- package/dist/tabs/root/tabs-root.d.ts +19 -17
- package/dist/tabs/tab/tab.d.ts +6 -6
- package/dist/tag/root/tag-root.d.ts +11 -12
- package/dist/textarea/root/textarea-root.d.ts +29 -32
- package/dist/time-input/root/time-input-root.d.ts +70 -69
- package/dist/time-picker/root/time-picker-root.d.ts +58 -66
- package/dist/timeline/item/timeline-item.d.ts +18 -24
- package/dist/timeline/root/timeline-root.d.ts +13 -21
- package/dist/toast/item/toast-item.d.ts +21 -22
- package/dist/toast/root/toast-root.d.ts +18 -23
- package/dist/toggle/group/toggle-group.d.ts +23 -25
- package/dist/toggle/root/toggle-root.d.ts +8 -8
- package/dist/toolbar/root/toolbar-root.d.ts +7 -10
- package/dist/tooltip/root/tooltip-root.d.ts +41 -47
- package/dist/tour/root/tour-root.d.ts +24 -26
- package/dist/tour/stop/tour-stop.d.ts +39 -48
- package/dist/tree/item/tree-item.d.ts +23 -25
- package/dist/tree/root/tree-root.d.ts +13 -12
- package/dist/trend/root/trend-root.d.ts +18 -19
- package/dist/video/root/video-root.d.ts +108 -101
- package/dist/video-playlist/item/video-playlist-item.d.ts +23 -28
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +17 -21
- package/dist/video-playlist/root/video-playlist-root.d.ts +21 -25
- package/dist/virtual-list/root/virtual-list-root.d.ts +27 -26
- package/package.json +5 -5
- package/types/jsx.d.ts +10363 -9520
- package/types/svelte.d.ts +5 -0
- 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
|
-
* **
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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
|
-
* **
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
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
|
|
22
|
-
* have a selection.
|
|
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.
|
|
32
|
-
* @slot meta -
|
|
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 -
|
|
29
|
+
* @event {HelixSelectEvent} helix-select - The entry was chosen. Cancelable: cancel it to keep the current entry.
|
|
35
30
|
*
|
|
36
|
-
* @csspart container - The
|
|
31
|
+
* @csspart container - The list item that holds the button.
|
|
37
32
|
* @csspart item - The row, which is a button.
|
|
38
|
-
* @csspart item-current -
|
|
39
|
-
* @csspart label - The name and
|
|
40
|
-
* @csspart media - The
|
|
41
|
-
* @csspart thumbnail - The image `poster`
|
|
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
|
|
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
|
-
*
|
|
48
|
+
* Prevents the entry from being chosen.
|
|
54
49
|
*/
|
|
55
50
|
disabled: boolean;
|
|
56
51
|
/**
|
|
57
|
-
*
|
|
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
|
-
*
|
|
66
|
+
* The entry's identifier, compared against the playlist's `active`.
|
|
72
67
|
*/
|
|
73
68
|
value: string;
|
|
74
69
|
/**
|
|
75
|
-
* The entry's name,
|
|
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
|
-
*
|
|
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
|
-
* **
|
|
13
|
-
*
|
|
14
|
-
*
|
|
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 -
|
|
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
|
|
30
|
-
* @csspart entry-mark - The
|
|
31
|
-
* @csspart entry-start - The
|
|
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
|
|
34
|
-
* @csspart menu-back-mark - The
|
|
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
|
|
37
|
-
* @csspart menu-live - The inner menu's `live
|
|
38
|
-
* @csspart menu-loading - Shown while the items are
|
|
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
|
|
41
|
-
* @csspart poster - An entry's
|
|
42
|
-
* @csspart trigger - The button that opens
|
|
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
|
|
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
|
|
5
|
+
* @summary A list of video clips that play one after another in a single player.
|
|
6
6
|
*
|
|
7
7
|
* @description
|
|
8
|
-
* **
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
|
-
* **
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
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
|
-
* **
|
|
22
|
-
*
|
|
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
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* the
|
|
29
|
-
*
|
|
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
|
|
34
|
+
* @slot player - The player that plays the entries.
|
|
39
35
|
*
|
|
40
|
-
* @event {HelixActivateEvent} helix-activate -
|
|
41
|
-
* @event {HelixBeforeActivateEvent} helix-before-activate -
|
|
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
|
|
40
|
+
* @csspart player - The region that holds the player.
|
|
45
41
|
*/
|
|
46
42
|
export declare class HelixHeadlessVideoPlaylist extends HelixHeadlessVideoPlaylist_base {
|
|
47
43
|
/**
|
|
48
|
-
*
|
|
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
|
|
4
|
+
* @summary A list that renders only the rows of a long set that are on screen.
|
|
5
5
|
*
|
|
6
6
|
* @description
|
|
7
|
-
*
|
|
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
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
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
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
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
|
-
*
|
|
24
|
-
* `
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
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
|
|
35
|
-
* @csspart before - The space
|
|
36
|
-
* @csspart viewport - The scrolling box.
|
|
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
|
-
*
|
|
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
|
-
*
|
|
46
|
+
* The id of the script element that holds the rows as JSON.
|
|
48
47
|
*/
|
|
49
48
|
for: string;
|
|
50
49
|
/**
|
|
51
|
-
*
|
|
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
|
|
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.
|
|
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.
|
|
50
|
-
"@fusion.dev/helix-icons": "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.
|
|
55
|
-
"@fusion.dev/helix-testing": "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",
|