@fusion.dev/helix-headless 0.147.0 → 0.149.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 +11222 -2332
- package/dist/accordion/item/accordion-item.d.ts +5 -2
- package/dist/accordion/item/accordion-item.js +11 -7
- package/dist/accordion/root/accordion-root.js +4 -6
- package/dist/announcement/root/announcement-root.d.ts +61 -5
- package/dist/announcement/root/announcement-root.js +126 -20
- package/dist/area-chart/root/area-chart-root.d.ts +11 -0
- package/dist/area-chart/root/area-chart-root.js +21 -9
- package/dist/avatar/group/avatar-group.d.ts +10 -2
- package/dist/avatar/group/avatar-group.js +10 -5
- package/dist/badge/count.d.ts +19 -0
- package/dist/badge/count.js +20 -0
- package/dist/badge/root/badge-root.d.ts +6 -2
- package/dist/badge/root/badge-root.js +8 -22
- package/dist/bar-chart/root/bar-chart-root.d.ts +13 -1
- package/dist/bar-chart/root/bar-chart-root.js +17 -4
- package/dist/blockquote/root/blockquote-root.d.ts +66 -8
- package/dist/blockquote/root/blockquote-root.js +85 -8
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +2 -2
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +8 -1
- package/dist/breadcrumbs/root/breadcrumbs-root.js +5 -2
- package/dist/button/root/button-root.d.ts +10 -1
- package/dist/button/root/button-root.js +3 -2
- package/dist/button-group/arrows.d.ts +14 -0
- package/dist/button-group/arrows.js +10 -0
- package/dist/button-group/root/button-group-root.d.ts +144 -3
- package/dist/button-group/root/button-group-root.js +142 -2
- package/dist/callout/root/callout-root.d.ts +16 -2
- package/dist/callout/root/callout-root.js +16 -4
- package/dist/canvas/describe.d.ts +10 -0
- package/dist/canvas/describe.js +9 -0
- package/dist/canvas/edge-pan.d.ts +61 -0
- package/dist/canvas/edge-pan.js +63 -0
- package/dist/canvas/neighbor.d.ts +17 -0
- package/dist/canvas/neighbor.js +1 -0
- package/dist/canvas/node/canvas-node.d.ts +12 -2
- package/dist/canvas/node/canvas-node.js +8 -3
- package/dist/canvas/root/canvas-document.d.ts +10 -0
- package/dist/canvas/root/canvas-document.js +1 -0
- package/dist/canvas/root/canvas-root.d.ts +168 -9
- package/dist/canvas/root/canvas-root.js +239 -69
- package/dist/canvas/snap.d.ts +42 -0
- package/dist/canvas/snap.js +32 -0
- package/dist/carousel/root/carousel-root.d.ts +9 -3
- package/dist/carousel/root/carousel-root.js +17 -10
- package/dist/chat/composer/chat-composer.d.ts +5 -0
- package/dist/chat/composer/chat-composer.js +4 -1
- package/dist/chat/message/chat-message.d.ts +9 -5
- package/dist/chat/message/chat-message.js +8 -4
- package/dist/chat/naming.js +2 -2
- package/dist/chat/root/chat-root.d.ts +40 -4
- package/dist/chat/root/chat-root.js +38 -14
- package/dist/checkbox/root/checkbox-root.d.ts +11 -0
- package/dist/checkbox/root/checkbox-root.js +8 -2
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +24 -0
- package/dist/checkbox-group/root/checkbox-group-root.js +28 -12
- package/dist/checkbox-group/select-all.d.ts +11 -0
- package/dist/checkbox-group/select-all.js +5 -0
- package/dist/code-block/root/code-block-root.d.ts +20 -8
- package/dist/code-block/root/code-block-root.js +16 -5
- package/dist/color-input/root/color-input-root.d.ts +13 -0
- package/dist/color-input/root/color-input-root.js +18 -5
- package/dist/color-picker/root/color-picker-root.d.ts +19 -3
- package/dist/color-picker/root/color-picker-root.js +52 -24
- package/dist/color-picker/wheel.d.ts +11 -0
- package/dist/color-picker/wheel.js +9 -0
- package/dist/combobox/root/combobox-root.d.ts +106 -18
- package/dist/combobox/root/combobox-root.js +101 -26
- package/dist/command/root/command-root.d.ts +19 -9
- package/dist/command/root/command-root.js +9 -4
- package/dist/copy-button/root/copy-button-root.d.ts +5 -0
- package/dist/copy-button/root/copy-button-root.js +7 -2
- package/dist/data-table/root/data-table-root.d.ts +171 -29
- package/dist/data-table/root/data-table-root.js +284 -161
- package/dist/date-input/root/date-input-root.d.ts +32 -9
- package/dist/date-input/root/date-input-root.js +66 -44
- package/dist/date-picker/root/date-picker-root.d.ts +38 -15
- package/dist/date-picker/root/date-picker-root.js +52 -33
- package/dist/description-list/item/description-list-item.d.ts +4 -0
- package/dist/description-list/item/description-list-item.js +7 -1
- package/dist/dialog/root/dialog-root.d.ts +12 -1
- package/dist/dialog/root/dialog-root.js +11 -4
- package/dist/divider/root/divider-root.d.ts +45 -16
- package/dist/divider/root/divider-root.js +28 -4
- package/dist/donut-chart/root/donut-chart-root.d.ts +5 -0
- package/dist/donut-chart/root/donut-chart-root.js +8 -5
- package/dist/drawer/root/drawer-root.d.ts +12 -1
- package/dist/drawer/root/drawer-root.js +9 -2
- package/dist/drilldown/item/drilldown-item.js +3 -4
- package/dist/drilldown/root/drilldown-root.d.ts +5 -0
- package/dist/drilldown/root/drilldown-root.js +4 -1
- package/dist/element-events.generated.js +26 -3
- package/dist/empty/root/empty-root.d.ts +17 -3
- package/dist/empty/root/empty-root.js +29 -5
- package/dist/file-input/root/file-input-root.d.ts +18 -3
- package/dist/file-input/root/file-input-root.js +34 -18
- package/dist/file-input/status.js +2 -1
- package/dist/filter-input/chip/filter-chip.d.ts +13 -0
- package/dist/filter-input/chip/filter-chip.js +7 -3
- package/dist/filter-input/menu/filter-menu.d.ts +5 -0
- package/dist/filter-input/menu/filter-menu.js +3 -1
- package/dist/filter-input/root/filter-input-root.d.ts +20 -3
- package/dist/filter-input/root/filter-input-root.js +8 -4
- package/dist/format-date/fields.d.ts +20 -0
- package/dist/format-date/fields.js +14 -0
- package/dist/format-date/options.d.ts +2 -1
- package/dist/format-date/options.js +9 -38
- package/dist/format-date/root/format-date-root.d.ts +55 -5
- package/dist/format-date/root/format-date-root.js +29 -34
- package/dist/graph/root/graph-model.d.ts +11 -0
- package/dist/graph/root/graph-model.js +4 -0
- package/dist/graph/root/graph-root.d.ts +101 -14
- package/dist/graph/root/graph-root.js +140 -46
- package/dist/heatmap/root/heatmap-root.d.ts +37 -4
- package/dist/heatmap/root/heatmap-root.js +51 -16
- package/dist/icon-button/root/icon-button-root.d.ts +5 -0
- package/dist/icon-button/root/icon-button-root.js +1 -0
- package/dist/image/root/image-root.d.ts +11 -0
- package/dist/input/root/input-root.d.ts +5 -0
- package/dist/input/root/input-root.js +4 -1
- package/dist/kbd/root/kbd-root.js +1 -2
- package/dist/legend/root/legend-root.js +4 -17
- package/dist/lightbox/root/lightbox-root.d.ts +14 -4
- package/dist/lightbox/root/lightbox-root.js +25 -7
- package/dist/line-chart/root/line-chart-root.d.ts +5 -0
- package/dist/line-chart/root/line-chart-root.js +4 -2
- package/dist/list/item/list-item.d.ts +32 -0
- package/dist/list/item/list-item.js +34 -7
- package/dist/list/root/list-root.d.ts +87 -0
- package/dist/list/root/list-root.js +119 -23
- package/dist/listbox/reorder/index.d.ts +1 -0
- package/dist/listbox/reorder/index.js +4 -0
- package/dist/listbox/reorder/listbox-reorder.d.ts +83 -0
- package/dist/listbox/reorder/listbox-reorder.js +151 -0
- package/dist/listbox/root/listbox-root.d.ts +185 -33
- package/dist/listbox/root/listbox-root.js +166 -136
- package/dist/loader/root/loader-root.d.ts +5 -0
- package/dist/loader/root/loader-root.js +3 -1
- package/dist/map/area/map-area.d.ts +5 -0
- package/dist/map/area/map-area.js +3 -1
- package/dist/map/buildings/map-buildings.d.ts +5 -0
- package/dist/map/buildings/map-buildings.js +3 -1
- package/dist/map/contours/map-contours.d.ts +5 -0
- package/dist/map/contours/map-contours.js +3 -1
- package/dist/map/landcover/map-landcover.d.ts +5 -0
- package/dist/map/landcover/map-landcover.js +3 -1
- package/dist/map/marker/map-marker.d.ts +18 -2
- package/dist/map/marker/map-marker.js +13 -5
- package/dist/map/points/map-points.d.ts +5 -0
- package/dist/map/points/map-points.js +6 -4
- package/dist/map/position/map-position.d.ts +5 -0
- package/dist/map/position/map-position.js +3 -1
- package/dist/map/raster/map-raster.d.ts +5 -0
- package/dist/map/raster/map-raster.js +3 -1
- package/dist/map/root/map-root.d.ts +73 -16
- package/dist/map/root/map-root.js +122 -44
- package/dist/map/route/map-route.d.ts +5 -0
- package/dist/map/route/map-route.js +3 -1
- package/dist/map/terrain/map-terrain.d.ts +5 -0
- package/dist/map/terrain/map-terrain.js +3 -1
- package/dist/megamenu/root/megamenu-root.js +4 -11
- package/dist/menu/root/menu-root.d.ts +7 -2
- package/dist/menu/root/menu-root.js +3 -1
- package/dist/meter/root/meter-root.d.ts +16 -3
- package/dist/meter/root/meter-root.js +12 -5
- package/dist/navigation/root/navigation-root.d.ts +5 -0
- package/dist/navigation/root/navigation-root.js +7 -8
- package/dist/notifications/group/notification-group.d.ts +8 -1
- package/dist/notifications/group/notification-group.js +12 -6
- package/dist/notifications/notification/notification.d.ts +17 -1
- package/dist/notifications/notification/notification.js +6 -2
- package/dist/notifications/root/notifications-root.d.ts +49 -5
- package/dist/notifications/root/notifications-root.js +36 -8
- package/dist/number-input/root/number-input-root.d.ts +21 -8
- package/dist/number-input/root/number-input-root.js +26 -11
- package/dist/object-inspector/root/object-inspector-root.d.ts +56 -13
- package/dist/object-inspector/root/object-inspector-root.js +41 -30
- package/dist/outline/root/outline-root.d.ts +5 -0
- package/dist/outline/root/outline-root.js +3 -1
- package/dist/pagination/root/pagination-root.d.ts +7 -1
- package/dist/pagination/root/pagination-root.js +16 -7
- package/dist/pagination/size/pagination-size.d.ts +8 -3
- package/dist/pagination/size/pagination-size.js +5 -3
- package/dist/pagination/summary/pagination-summary.d.ts +8 -6
- package/dist/pagination/summary/pagination-summary.js +4 -9
- package/dist/pin-input/code.d.ts +23 -0
- package/dist/pin-input/code.js +21 -0
- package/dist/pin-input/root/pin-input-root.d.ts +9 -3
- package/dist/pin-input/root/pin-input-root.js +13 -23
- package/dist/popover/root/popover-root.d.ts +12 -2
- package/dist/popover/root/popover-root.js +10 -4
- package/dist/progress/root/progress-root.d.ts +7 -2
- package/dist/progress/root/progress-root.js +5 -2
- package/dist/qr-code/name.d.ts +3 -2
- package/dist/qr-code/name.js +2 -2
- package/dist/qr-code/root/qr-code-root.d.ts +26 -5
- package/dist/qr-code/root/qr-code-root.js +27 -6
- package/dist/radio/group/radio-group.d.ts +11 -0
- package/dist/radio/group/radio-group.js +8 -2
- package/dist/rating/root/rating-root.d.ts +12 -1
- package/dist/rating/root/rating-root.js +10 -3
- package/dist/scatter-chart/measures.d.ts +22 -0
- package/dist/scatter-chart/measures.js +11 -0
- package/dist/scatter-chart/root/scatter-chart-root.d.ts +22 -8
- package/dist/scatter-chart/root/scatter-chart-root.js +25 -23
- package/dist/select/root/select-root.d.ts +67 -8
- package/dist/select/root/select-root.js +45 -11
- package/dist/skip-link/root/skip-link-root.d.ts +5 -0
- package/dist/skip-link/root/skip-link-root.js +3 -1
- package/dist/slider/root/slider-root.d.ts +7 -2
- package/dist/slider/root/slider-root.js +11 -5
- package/dist/sparkline/readings.d.ts +15 -5
- package/dist/sparkline/readings.js +3 -3
- package/dist/sparkline/root/sparkline-root.d.ts +9 -4
- package/dist/sparkline/root/sparkline-root.js +9 -3
- package/dist/speed-dial/group/speed-dial-group.d.ts +48 -0
- package/dist/speed-dial/group/speed-dial-group.js +43 -0
- package/dist/speed-dial/index.d.ts +1 -0
- package/dist/speed-dial/index.js +1 -0
- package/dist/speed-dial/item/speed-dial-item.d.ts +26 -1
- package/dist/speed-dial/item/speed-dial-item.js +41 -3
- package/dist/speed-dial/long-press.d.ts +50 -0
- package/dist/speed-dial/long-press.js +48 -0
- package/dist/speed-dial/root/speed-dial-root.d.ts +85 -1
- package/dist/speed-dial/root/speed-dial-root.js +117 -5
- package/dist/splitter/root/splitter-root.d.ts +12 -3
- package/dist/splitter/root/splitter-root.js +22 -4
- package/dist/steps/root/steps-root.d.ts +9 -2
- package/dist/steps/root/steps-root.js +6 -3
- package/dist/steps/step/step.d.ts +12 -0
- package/dist/steps/step/step.js +11 -2
- package/dist/switch/root/switch-root.d.ts +11 -0
- package/dist/switch/root/switch-root.js +8 -2
- package/dist/table/cell/table-cell.d.ts +8 -1
- package/dist/table/cell/table-cell.js +6 -2
- package/dist/table/column/table-column.d.ts +11 -4
- package/dist/table/column/table-column.js +15 -10
- package/dist/table/grid-controller.d.ts +122 -0
- package/dist/table/grid-controller.js +299 -0
- package/dist/table/root/table-root.d.ts +154 -8
- package/dist/table/root/table-root.js +197 -38
- package/dist/table/row/table-row.d.ts +55 -1
- package/dist/table/row/table-row.js +60 -7
- package/dist/tabs/root/tabs-root.d.ts +5 -0
- package/dist/tabs/root/tabs-root.js +3 -1
- package/dist/tag/group/tag-group.d.ts +5 -0
- package/dist/tag/group/tag-group.js +8 -15
- package/dist/tag/root/tag-root.d.ts +14 -1
- package/dist/tag/root/tag-root.js +11 -8
- package/dist/textarea/root/textarea-root.d.ts +5 -0
- package/dist/textarea/root/textarea-root.js +3 -1
- package/dist/time-input/root/time-input-root.d.ts +14 -7
- package/dist/time-input/root/time-input-root.js +43 -32
- package/dist/time-picker/root/time-picker-root.d.ts +16 -7
- package/dist/time-picker/root/time-picker-root.js +28 -12
- package/dist/toast/item/toast-item.d.ts +13 -3
- package/dist/toast/item/toast-item.js +2 -0
- package/dist/toast/root/toast-root.d.ts +22 -2
- package/dist/toast/root/toast-root.js +24 -17
- package/dist/toggle/group/toggle-group.js +3 -5
- package/dist/toolbar/root/toolbar-root.d.ts +36 -0
- package/dist/toolbar/root/toolbar-root.js +43 -9
- package/dist/tooltip/root/tooltip-root.d.ts +27 -17
- package/dist/tooltip/root/tooltip-root.js +1 -2
- package/dist/tour/root/tour-root.d.ts +8 -2
- package/dist/tour/root/tour-root.js +4 -2
- package/dist/tour/stop/tour-stop.d.ts +5 -0
- package/dist/tour/stop/tour-stop.js +6 -1
- package/dist/tree/grip.d.ts +5 -0
- package/dist/tree/grip.js +1 -0
- package/dist/tree/item/tree-item.d.ts +24 -0
- package/dist/tree/item/tree-item.js +27 -5
- package/dist/tree/root/tree-root.d.ts +66 -1
- package/dist/tree/root/tree-root.js +77 -5
- package/dist/trend/root/trend-root.d.ts +20 -4
- package/dist/trend/root/trend-root.js +20 -5
- package/dist/video/root/video-root.d.ts +23 -3
- package/dist/video/root/video-root.js +56 -15
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +5 -0
- package/dist/video-playlist/menu/video-playlist-menu.js +3 -1
- package/dist/video-playlist/root/video-playlist-root.d.ts +5 -0
- package/dist/video-playlist/root/video-playlist-root.js +3 -1
- package/dist/virtual-list/root/virtual-list-root.d.ts +19 -3
- package/dist/virtual-list/root/virtual-list-root.js +10 -19
- package/lint.json +1 -1
- package/package.json +7 -6
- package/types/jsx.d.ts +6005 -2114
- package/types/svelte.d.ts +1 -0
- package/types/vue.d.ts +1594 -676
- package/types/words.d.ts +3280 -0
- package/dist/kbd/keys.d.ts +0 -29
- package/dist/kbd/keys.js +0 -52
- package/dist/toast/hotkey.d.ts +0 -22
- package/dist/toast/hotkey.js +0 -23
- package/dist/tooltip/focus-target.d.ts +0 -6
- package/dist/tooltip/focus-target.js +0 -9
package/types/vue.d.ts
CHANGED
|
@@ -129,6 +129,7 @@ import type {
|
|
|
129
129
|
HelixHeadlessSkipLink,
|
|
130
130
|
HelixHeadlessSlider,
|
|
131
131
|
HelixHeadlessSparkline,
|
|
132
|
+
HelixHeadlessSpeedDialGroup,
|
|
132
133
|
HelixHeadlessSpeedDialItem,
|
|
133
134
|
HelixHeadlessSpeedDial,
|
|
134
135
|
HelixHeadlessSplitter,
|
|
@@ -174,6 +175,7 @@ import type {
|
|
|
174
175
|
ToggleEvent,
|
|
175
176
|
HelixDismissEvent,
|
|
176
177
|
HelixScrolledEvent,
|
|
178
|
+
HelixBeforeChangeEvent,
|
|
177
179
|
HelixPressEvent,
|
|
178
180
|
HelixBeforeMoveEvent,
|
|
179
181
|
HelixBeforeReconnectEvent,
|
|
@@ -194,7 +196,6 @@ import type {
|
|
|
194
196
|
HelixBeforePinEvent,
|
|
195
197
|
HelixHistoryEvent,
|
|
196
198
|
HelixPinEvent,
|
|
197
|
-
HelixBeforeChangeEvent,
|
|
198
199
|
HelixBeforeToggleEvent,
|
|
199
200
|
HelixCopyEvent,
|
|
200
201
|
HelixSampleEndEvent,
|
|
@@ -203,6 +204,7 @@ import type {
|
|
|
203
204
|
HelixFilterEvent,
|
|
204
205
|
HelixLoadMoreEvent,
|
|
205
206
|
HelixCopyErrorEvent,
|
|
207
|
+
HelixBeforeReorderEvent,
|
|
206
208
|
HelixExpandEvent,
|
|
207
209
|
HelixFilteredEvent,
|
|
208
210
|
HelixNavigateEvent,
|
|
@@ -453,6 +455,22 @@ export type HelixHeadlessAnnouncementVueProps = {
|
|
|
453
455
|
Read once when the announcement is first rendered, as `Toast` reads its
|
|
454
456
|
own. The clock stops while the pointer or focus is on the announcement. */
|
|
455
457
|
duration?: (HelixHeadlessAnnouncement["duration"]) | undefined;
|
|
458
|
+
/** The key that moves focus to the announcement's first control, and back
|
|
459
|
+
to where it was, written as keys joined by `+`, such as `F6` or `Alt+A`.
|
|
460
|
+
|
|
461
|
+
F6 by default, the key React Aria's regions answer to. Empty turns it
|
|
462
|
+
off. With several announcements, the first one in the page takes focus. */
|
|
463
|
+
hotkey?: (HelixHeadlessAnnouncement["hotkey"]) | undefined;
|
|
464
|
+
/** The name of the announcement's region, which screen readers list among
|
|
465
|
+
the page's landmarks. Translate it with the rest of your interface.
|
|
466
|
+
|
|
467
|
+
Empty leaves the announcement no region. */
|
|
468
|
+
label?: (HelixHeadlessAnnouncement["label"]) | undefined;
|
|
469
|
+
/** Whether the announcement waits its turn behind the queued announcements
|
|
470
|
+
before it in the same parent, showing when the last of them is removed.
|
|
471
|
+
|
|
472
|
+
Off by default, so every announcement on a page shows at once. */
|
|
473
|
+
queued?: (HelixHeadlessAnnouncement["queued"]) | undefined;
|
|
456
474
|
/** The band's color.
|
|
457
475
|
|
|
458
476
|
Paint only: unlike `Callout`, no value here draws a mark, changes the label,
|
|
@@ -481,14 +499,22 @@ axes, which is the test the registry answers to. */
|
|
|
481
499
|
`attribute` is spelled out because Lit lowercases a property name to
|
|
482
500
|
derive one rather than dash-casing it, so this would otherwise be
|
|
483
501
|
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
484
|
-
would catch.
|
|
502
|
+
would catch.
|
|
503
|
+
|
|
504
|
+
A word property: register it for a locale under the host's key. A family
|
|
505
|
+
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
506
|
+
declares its own English with `@words` above the override. */
|
|
485
507
|
"dismiss-label"?: (HelixHeadlessAnnouncement["dismissLabel"]) | undefined;
|
|
486
508
|
/** The dismiss control's label, read by screen readers.
|
|
487
509
|
|
|
488
510
|
`attribute` is spelled out because Lit lowercases a property name to
|
|
489
511
|
derive one rather than dash-casing it, so this would otherwise be
|
|
490
512
|
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
491
|
-
would catch.
|
|
513
|
+
would catch.
|
|
514
|
+
|
|
515
|
+
A word property: register it for a locale under the host's key. A family
|
|
516
|
+
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
517
|
+
declares its own English with `@words` above the override. */
|
|
492
518
|
dismissLabel?: (HelixHeadlessAnnouncement["dismissLabel"]) | undefined;
|
|
493
519
|
};
|
|
494
520
|
|
|
@@ -583,6 +609,14 @@ the total.
|
|
|
583
609
|
Absent stacks the amounts, so the top edge is the total. Set, every reading
|
|
584
610
|
fills the height and the bands are shares of it. */
|
|
585
611
|
share?: (HelixHeadlessAreaChart["share"]) | undefined;
|
|
612
|
+
/** The summary's sentence. `{reading}` is the latest reading's name,
|
|
613
|
+
`{totalLabel}` the name for the sum, `{total}` the sum, written in the
|
|
614
|
+
locale, and `{shares}` each part's share, listed as the locale lists. */
|
|
615
|
+
"summary-label"?: (HelixHeadlessAreaChart["summaryLabel"]) | undefined;
|
|
616
|
+
/** The summary's sentence. `{reading}` is the latest reading's name,
|
|
617
|
+
`{totalLabel}` the name for the sum, `{total}` the sum, written in the
|
|
618
|
+
locale, and `{shares}` each part's share, listed as the locale lists. */
|
|
619
|
+
summaryLabel?: (HelixHeadlessAreaChart["summaryLabel"]) | undefined;
|
|
586
620
|
/** The name for the sum of the parts, shown in the tooltip and the summary. */
|
|
587
621
|
"total-label"?: (HelixHeadlessAreaChart["totalLabel"]) | undefined;
|
|
588
622
|
/** The name for the sum of the parts, shown in the tooltip and the summary. */
|
|
@@ -604,8 +638,8 @@ words and is already written. */
|
|
|
604
638
|
/** The locale the chart's own numbers are written in: its axis, its
|
|
605
639
|
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
606
640
|
|
|
607
|
-
Absent
|
|
608
|
-
writes them, whatever this says. */
|
|
641
|
+
Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
642
|
+
cells are shown as the table writes them, whatever this says. */
|
|
609
643
|
locale?: (HelixHeadlessAreaChart["locale"]) | undefined;
|
|
610
644
|
/** Where a reading the keys moved to stands among the readings, said after
|
|
611
645
|
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
@@ -647,14 +681,20 @@ everyone, assigning a matching property rather than an attribute.
|
|
|
647
681
|
takes no default**: `max = 0` would stamp `max="0"` onto every host that
|
|
648
682
|
never asked for a limit, including on the server. */
|
|
649
683
|
max?: (HelixHeadlessAvatarGroup["max"]) | undefined;
|
|
650
|
-
/** What a screen reader is told the count is, with `{count}` for the number
|
|
651
|
-
and `{names}` for the people it stands for, by each
|
|
684
|
+
/** What a screen reader is told the count is, with `{count}` for the number,
|
|
685
|
+
written in the locale, and `{names}` for the people it stands for, by each
|
|
686
|
+
avatar's `name`, listed as the locale lists. A language that needs plural
|
|
687
|
+
forms writes them: `{count, plural, one {# osoba więcej: {names}} few
|
|
688
|
+
{# osoby więcej: {names}} other {# osób więcej: {names}}}`.
|
|
652
689
|
|
|
653
690
|
The count shows "+3", which reads as "plus three" and says nothing about
|
|
654
691
|
what was counted, nor who. */
|
|
655
692
|
"overflow-label"?: (HelixHeadlessAvatarGroup["overflowLabel"]) | undefined;
|
|
656
|
-
/** What a screen reader is told the count is, with `{count}` for the number
|
|
657
|
-
and `{names}` for the people it stands for, by each
|
|
693
|
+
/** What a screen reader is told the count is, with `{count}` for the number,
|
|
694
|
+
written in the locale, and `{names}` for the people it stands for, by each
|
|
695
|
+
avatar's `name`, listed as the locale lists. A language that needs plural
|
|
696
|
+
forms writes them: `{count, plural, one {# osoba więcej: {names}} few
|
|
697
|
+
{# osoby więcej: {names}} other {# osób więcej: {names}}}`.
|
|
658
698
|
|
|
659
699
|
The count shows "+3", which reads as "plus three" and says nothing about
|
|
660
700
|
what was counted, nor who. */
|
|
@@ -746,11 +786,15 @@ shown as it is either way. */
|
|
|
746
786
|
|
|
747
787
|
Required for a dot, which has no text to read. `{count}` is replaced with
|
|
748
788
|
what the badge shows, so `label="{count} unread"` reads "8 unread" and
|
|
749
|
-
stays current as `value` changes, with no label of yours to keep in step.
|
|
789
|
+
stays current as `value` changes, with no label of yours to keep in step.
|
|
790
|
+
A language with plural forms writes them, `{count, plural, one {{count}
|
|
791
|
+
nieprzeczytana} few {{count} nieprzeczytane} other {{count}
|
|
792
|
+
nieprzeczytanych}}`, picked by the count in `locale`. */
|
|
750
793
|
label?: (HelixHeadlessBadge["label"]) | undefined;
|
|
751
|
-
/** The locale a count is written in under `format-options`,
|
|
794
|
+
/** The locale a count is written in under `format-options`, and whose plural
|
|
795
|
+
rules `label` picks a form by, such as `de`.
|
|
752
796
|
|
|
753
|
-
Absent
|
|
797
|
+
Absent reads the nearest `lang`, then the runtime's own. */
|
|
754
798
|
locale?: (HelixHeadlessBadge["locale"]) | undefined;
|
|
755
799
|
/** The largest number the badge shows.
|
|
756
800
|
|
|
@@ -794,9 +838,11 @@ of many thin bars, where the eye has stopped counting.
|
|
|
794
838
|
Furniture rather than data, so the rules are inside the `aria-hidden` plot
|
|
795
839
|
and reach no reader through the table. */
|
|
796
840
|
gridlines?: (HelixHeadlessBarChart["gridlines"]) | undefined;
|
|
797
|
-
/** The
|
|
841
|
+
/** The name the summary gives each series' highest reading, `{highestLabel}`
|
|
842
|
+
in `summary-label`. */
|
|
798
843
|
"highest-label"?: (HelixHeadlessBarChart["highestLabel"]) | undefined;
|
|
799
|
-
/** The
|
|
844
|
+
/** The name the summary gives each series' highest reading, `{highestLabel}`
|
|
845
|
+
in `summary-label`. */
|
|
800
846
|
highestLabel?: (HelixHeadlessBarChart["highestLabel"]) | undefined;
|
|
801
847
|
/** The names of the series to draw as lines. The other series are drawn as
|
|
802
848
|
columns.
|
|
@@ -874,6 +920,14 @@ the other. The scale fits the stacks. A series
|
|
|
874
920
|
in `lines` is still a line, measured on its own reading; columns on the
|
|
875
921
|
second scale stack among themselves. */
|
|
876
922
|
stacked?: (HelixHeadlessBarChart["stacked"]) | undefined;
|
|
923
|
+
/** The summary's sentence. `{highestLabel}` is `highest-label`, and
|
|
924
|
+
`{readings}` each series' highest reading: the series, the category and
|
|
925
|
+
the reading as the table writes it. */
|
|
926
|
+
"summary-label"?: (HelixHeadlessBarChart["summaryLabel"]) | undefined;
|
|
927
|
+
/** The summary's sentence. `{highestLabel}` is `highest-label`, and
|
|
928
|
+
`{readings}` each series' highest reading: the series, the category and
|
|
929
|
+
the reading as the table writes it. */
|
|
930
|
+
summaryLabel?: (HelixHeadlessBarChart["summaryLabel"]) | undefined;
|
|
877
931
|
/** The id of the table to read.
|
|
878
932
|
|
|
879
933
|
Names a table in the same tree, so a chart inside another component's
|
|
@@ -891,8 +945,8 @@ words and is already written. */
|
|
|
891
945
|
/** The locale the chart's own numbers are written in: its axis, its
|
|
892
946
|
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
893
947
|
|
|
894
|
-
Absent
|
|
895
|
-
writes them, whatever this says. */
|
|
948
|
+
Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
949
|
+
cells are shown as the table writes them, whatever this says. */
|
|
896
950
|
locale?: (HelixHeadlessBarChart["locale"]) | undefined;
|
|
897
951
|
/** Where a reading the keys moved to stands among the readings, said after
|
|
898
952
|
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
@@ -915,8 +969,19 @@ legend hid is not counted. */
|
|
|
915
969
|
export type HelixHeadlessBarChartVueEvents = {};
|
|
916
970
|
|
|
917
971
|
export type HelixHeadlessBlockquoteVueProps = {
|
|
918
|
-
/**
|
|
972
|
+
/** Who said it, and where, as words, such as "Maria Lopez, operations
|
|
973
|
+
manager". The `attribution` slot replaces them, for markup such as a link.
|
|
974
|
+
|
|
975
|
+
Words are served with the figure they name, where a server cannot see a
|
|
976
|
+
slotted attribution. */
|
|
977
|
+
attribution?: (HelixHeadlessBlockquote["attribution"]) | undefined;
|
|
978
|
+
/** The URL of the source the passage came from. Who said it goes in
|
|
979
|
+
`attribution`: a `cite` with words in it warns once, with the runtime kind
|
|
980
|
+
`cite-not-url`. */
|
|
919
981
|
cite?: (HelixHeadlessBlockquote["cite"]) | undefined;
|
|
982
|
+
/** Whether to draw an opening quotation mark before the passage, in the
|
|
983
|
+
element's language. Leave the marks out of the text. */
|
|
984
|
+
marks?: (HelixHeadlessBlockquote["marks"]) | undefined;
|
|
920
985
|
};
|
|
921
986
|
|
|
922
987
|
export type HelixHeadlessBlockquoteVueEvents = {};
|
|
@@ -954,10 +1019,14 @@ export type HelixHeadlessBreadcrumbVueEvents = {};
|
|
|
954
1019
|
|
|
955
1020
|
export type HelixHeadlessBreadcrumbsVueProps = {
|
|
956
1021
|
/** The name of the button that shows a folded trail's hidden crumbs. `{count}`
|
|
957
|
-
is
|
|
1022
|
+
is how many it shows, written in the locale, and a language with plural
|
|
1023
|
+
forms writes them: `{count, plural, one {# weiteren zeigen} other {#
|
|
1024
|
+
weitere zeigen}}`. */
|
|
958
1025
|
"expand-label"?: (HelixHeadlessBreadcrumbs["expandLabel"]) | undefined;
|
|
959
1026
|
/** The name of the button that shows a folded trail's hidden crumbs. `{count}`
|
|
960
|
-
is
|
|
1027
|
+
is how many it shows, written in the locale, and a language with plural
|
|
1028
|
+
forms writes them: `{count, plural, one {# weiteren zeigen} other {#
|
|
1029
|
+
weitere zeigen}}`. */
|
|
961
1030
|
expandLabel?: (HelixHeadlessBreadcrumbs["expandLabel"]) | undefined;
|
|
962
1031
|
/** The landmark's name, read by screen readers. An `aria-label` on the host
|
|
963
1032
|
wins over it. */
|
|
@@ -980,6 +1049,15 @@ attribute would put the whole path into the markup twice. */
|
|
|
980
1049
|
|
|
981
1050
|
export type HelixHeadlessBreadcrumbsVueEvents = {};
|
|
982
1051
|
|
|
1052
|
+
/** `HelixHeadlessButtonGroup` component event */
|
|
1053
|
+
export type HelixHeadlessButtonGroupElementEvent<E = Event> = TypedEvent<
|
|
1054
|
+
HelixHeadlessButtonGroup,
|
|
1055
|
+
E
|
|
1056
|
+
>;
|
|
1057
|
+
/** `helix-before-change` event type */
|
|
1058
|
+
export type HelixHeadlessButtonGroupHelixBeforeChangeElementEvent =
|
|
1059
|
+
HelixHeadlessButtonGroupElementEvent<HelixBeforeChangeEvent>;
|
|
1060
|
+
|
|
983
1061
|
export type HelixHeadlessButtonGroupVueProps = {
|
|
984
1062
|
/** The group's name, read by screen readers.
|
|
985
1063
|
|
|
@@ -1004,9 +1082,32 @@ buttons sharing edges as one shape, and a wrapped row carries the corners of
|
|
|
1004
1082
|
a first row into a second. Stacked, the same three keep one shape and one
|
|
1005
1083
|
column. */
|
|
1006
1084
|
orientation?: (HelixHeadlessButtonGroup["orientation"]) | undefined;
|
|
1085
|
+
/** Whether the buttons stay pressed: `single` keeps one pressed at a time and
|
|
1086
|
+
`multiple` any number. Unset, they are action buttons, each its own tab
|
|
1087
|
+
stop, as before.
|
|
1088
|
+
|
|
1089
|
+
Optional, so the attribute is absent until a consumer writes it. */
|
|
1090
|
+
"selection-mode"?: (HelixHeadlessButtonGroup["selectionMode"]) | undefined;
|
|
1091
|
+
/** Whether the buttons stay pressed: `single` keeps one pressed at a time and
|
|
1092
|
+
`multiple` any number. Unset, they are action buttons, each its own tab
|
|
1093
|
+
stop, as before.
|
|
1094
|
+
|
|
1095
|
+
Optional, so the attribute is absent until a consumer writes it. */
|
|
1096
|
+
selectionMode?: (HelixHeadlessButtonGroup["selectionMode"]) | undefined;
|
|
1097
|
+
/** The values of the pressed buttons, comma separated, in a selection mode.
|
|
1098
|
+
A button's own `value` names it, so a value holds no comma.
|
|
1099
|
+
|
|
1100
|
+
The attribute is the seed, and a press changes the property, which does
|
|
1101
|
+
not reflect, as a native control's `value` does not. */
|
|
1102
|
+
value?: (HelixHeadlessButtonGroup["value"]) | undefined;
|
|
1007
1103
|
};
|
|
1008
1104
|
|
|
1009
|
-
export type HelixHeadlessButtonGroupVueEvents = {
|
|
1105
|
+
export type HelixHeadlessButtonGroupVueEvents = {
|
|
1106
|
+
/** Fired after a press changes `value`, in a selection mode. */
|
|
1107
|
+
change: HelixHeadlessButtonGroupElementEvent;
|
|
1108
|
+
/** Fired before a press changes `value`, with the value it would leave in `detail.value`. Cancelable: call `preventDefault()` to keep the buttons as they are. */
|
|
1109
|
+
"helix-before-change": HelixHeadlessButtonGroupHelixBeforeChangeElementEvent;
|
|
1110
|
+
};
|
|
1010
1111
|
|
|
1011
1112
|
/** `HelixHeadlessButton` component event */
|
|
1012
1113
|
export type HelixHeadlessButtonElementEvent<E = Event> = TypedEvent<
|
|
@@ -1079,7 +1180,11 @@ not text.
|
|
|
1079
1180
|
|
|
1080
1181
|
Lives here rather than only on `IconButton` so the two share one render.
|
|
1081
1182
|
An icon-only button without it is a control a screen reader announces as
|
|
1082
|
-
"button" and nothing else.
|
|
1183
|
+
"button" and nothing else.
|
|
1184
|
+
|
|
1185
|
+
Undefaulted, so a subclass's own default, such as Copy Button's `Copy`, is
|
|
1186
|
+
the first value its element receives and so the English its words fall
|
|
1187
|
+
back to. */
|
|
1083
1188
|
label?: (HelixHeadlessButton["label"]) | undefined;
|
|
1084
1189
|
/** Whether the action the button started is still running.
|
|
1085
1190
|
|
|
@@ -1215,14 +1320,28 @@ is the whole of the registry, which is why there is no `severity` beside it. */
|
|
|
1215
1320
|
tone?: (HelixHeadlessCallout["tone"]) | undefined;
|
|
1216
1321
|
/** What a screen reader is told the tone is, such as "Fehler".
|
|
1217
1322
|
|
|
1218
|
-
Absent is the
|
|
1219
|
-
"Success" or "Warning". */
|
|
1323
|
+
Absent is the tone's words in `tone-labels`, "Error", "Information",
|
|
1324
|
+
"Note", "Success" or "Warning" in English. */
|
|
1220
1325
|
"tone-label"?: (HelixHeadlessCallout["toneLabel"]) | undefined;
|
|
1221
1326
|
/** What a screen reader is told the tone is, such as "Fehler".
|
|
1222
1327
|
|
|
1223
|
-
Absent is the
|
|
1224
|
-
"Success" or "Warning". */
|
|
1328
|
+
Absent is the tone's words in `tone-labels`, "Error", "Information",
|
|
1329
|
+
"Note", "Success" or "Warning" in English. */
|
|
1225
1330
|
toneLabel?: (HelixHeadlessCallout["toneLabel"]) | undefined;
|
|
1331
|
+
/** What a screen reader is told each tone is, by the tone's name, written as
|
|
1332
|
+
JSON in the attribute: `tone-labels='{"danger":"Fehler"}'`. A tone left
|
|
1333
|
+
out keeps its English, and `tone-label` wins over both.
|
|
1334
|
+
|
|
1335
|
+
`danger` is said as "Error", the word a reader understands, and
|
|
1336
|
+
`neutral` as "Note", for what the passage is. */
|
|
1337
|
+
"tone-labels"?: (HelixHeadlessCallout["toneLabels"]) | undefined;
|
|
1338
|
+
/** What a screen reader is told each tone is, by the tone's name, written as
|
|
1339
|
+
JSON in the attribute: `tone-labels='{"danger":"Fehler"}'`. A tone left
|
|
1340
|
+
out keeps its English, and `tone-label` wins over both.
|
|
1341
|
+
|
|
1342
|
+
`danger` is said as "Error", the word a reader understands, and
|
|
1343
|
+
`neutral` as "Note", for what the passage is. */
|
|
1344
|
+
toneLabels?: (HelixHeadlessCallout["toneLabels"]) | undefined;
|
|
1226
1345
|
/** Whether the element shows a control that dismisses it. */
|
|
1227
1346
|
dismissible?: (HelixHeadlessCallout["dismissible"]) | undefined;
|
|
1228
1347
|
/** The dismiss control's label, read by screen readers.
|
|
@@ -1230,14 +1349,22 @@ Absent is the English for the tone: "Error", "Information", "Note",
|
|
|
1230
1349
|
`attribute` is spelled out because Lit lowercases a property name to
|
|
1231
1350
|
derive one rather than dash-casing it, so this would otherwise be
|
|
1232
1351
|
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
1233
|
-
would catch.
|
|
1352
|
+
would catch.
|
|
1353
|
+
|
|
1354
|
+
A word property: register it for a locale under the host's key. A family
|
|
1355
|
+
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
1356
|
+
declares its own English with `@words` above the override. */
|
|
1234
1357
|
"dismiss-label"?: (HelixHeadlessCallout["dismissLabel"]) | undefined;
|
|
1235
1358
|
/** The dismiss control's label, read by screen readers.
|
|
1236
1359
|
|
|
1237
1360
|
`attribute` is spelled out because Lit lowercases a property name to
|
|
1238
1361
|
derive one rather than dash-casing it, so this would otherwise be
|
|
1239
1362
|
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
1240
|
-
would catch.
|
|
1363
|
+
would catch.
|
|
1364
|
+
|
|
1365
|
+
A word property: register it for a locale under the host's key. A family
|
|
1366
|
+
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
1367
|
+
declares its own English with `@words` above the override. */
|
|
1241
1368
|
dismissLabel?: (HelixHeadlessCallout["dismissLabel"]) | undefined;
|
|
1242
1369
|
};
|
|
1243
1370
|
|
|
@@ -1437,6 +1564,12 @@ export type HelixHeadlessCanvasHelixSelectElementEvent =
|
|
|
1437
1564
|
HelixHeadlessCanvasElementEvent<HelixSelectEvent>;
|
|
1438
1565
|
|
|
1439
1566
|
export type HelixHeadlessCanvasVueProps = {
|
|
1567
|
+
/** The hint shown when the board, waiting to be pressed with
|
|
1568
|
+
`gestures="activate"`, is scrolled or swiped over. */
|
|
1569
|
+
"activate-hint-label"?: (HelixHeadlessCanvas["activateHintLabel"]) | undefined;
|
|
1570
|
+
/** The hint shown when the board, waiting to be pressed with
|
|
1571
|
+
`gestures="activate"`, is scrolled or swiped over. */
|
|
1572
|
+
activateHintLabel?: (HelixHeadlessCanvas["activateHintLabel"]) | undefined;
|
|
1440
1573
|
/** The text read with a card to say where its connections come from, with `{cards}`. */
|
|
1441
1574
|
"comes-from-label"?: (HelixHeadlessCanvas["comesFromLabel"]) | undefined;
|
|
1442
1575
|
/** The text read with a card to say where its connections come from, with `{cards}`. */
|
|
@@ -1467,6 +1600,16 @@ this, so a reader hears the ends first and what the line says after. */
|
|
|
1467
1600
|
Its own label, where it has one, is its description rather than part of
|
|
1468
1601
|
this, so a reader hears the ends first and what the line says after. */
|
|
1469
1602
|
connectionLabel?: (HelixHeadlessCanvas["connectionLabel"]) | undefined;
|
|
1603
|
+
/** The name of the group of controls, read by screen readers, which names
|
|
1604
|
+
what the controls drive rather than the mechanism. */
|
|
1605
|
+
"controls-label"?: (HelixHeadlessCanvas["controlsLabel"]) | undefined;
|
|
1606
|
+
/** The name of the group of controls, read by screen readers, which names
|
|
1607
|
+
what the controls drive rather than the mechanism. */
|
|
1608
|
+
controlsLabel?: (HelixHeadlessCanvas["controlsLabel"]) | undefined;
|
|
1609
|
+
/** The board's name where `label` is empty. */
|
|
1610
|
+
"fallback-label"?: (HelixHeadlessCanvas["fallbackLabel"]) | undefined;
|
|
1611
|
+
/** The board's name where `label` is empty. */
|
|
1612
|
+
fallbackLabel?: (HelixHeadlessCanvas["fallbackLabel"]) | undefined;
|
|
1470
1613
|
/** The accessible name for the board. Required.
|
|
1471
1614
|
|
|
1472
1615
|
A document has no name of its own in the format, and "Canvas" names the
|
|
@@ -1490,6 +1633,26 @@ as the list.
|
|
|
1490
1633
|
The list is joined the way the page's language joins one, "Second and
|
|
1491
1634
|
Third", rather than with a comma this component chose. */
|
|
1492
1635
|
leadsToLabel?: (HelixHeadlessCanvas["leadsToLabel"]) | undefined;
|
|
1636
|
+
/** The text read with a card that has connections both ways. `{leadsTo}` is
|
|
1637
|
+
`leads-to-label` and `{comesFrom}` is `comes-from-label`, each filled in. */
|
|
1638
|
+
"linked-label"?: (HelixHeadlessCanvas["linkedLabel"]) | undefined;
|
|
1639
|
+
/** The text read with a card that has connections both ways. `{leadsTo}` is
|
|
1640
|
+
`leads-to-label` and `{comesFrom}` is `comes-from-label`, each filled in. */
|
|
1641
|
+
linkedLabel?: (HelixHeadlessCanvas["linkedLabel"]) | undefined;
|
|
1642
|
+
/** What screen readers hear after a key moves a card, with `{name}` for the
|
|
1643
|
+
card and `{x}` and `{y}` for where it now is, in the document's units.
|
|
1644
|
+
|
|
1645
|
+
**A move a reader cannot see has to be said.** Shift with an arrow moved
|
|
1646
|
+
the card and said nothing, so a reader moving one by keys could not tell
|
|
1647
|
+
whether it had moved, or how far. */
|
|
1648
|
+
"moved-label"?: (HelixHeadlessCanvas["movedLabel"]) | undefined;
|
|
1649
|
+
/** What screen readers hear after a key moves a card, with `{name}` for the
|
|
1650
|
+
card and `{x}` and `{y}` for where it now is, in the document's units.
|
|
1651
|
+
|
|
1652
|
+
**A move a reader cannot see has to be said.** Shift with an arrow moved
|
|
1653
|
+
the card and said nothing, so a reader moving one by keys could not tell
|
|
1654
|
+
whether it had moved, or how far. */
|
|
1655
|
+
movedLabel?: (HelixHeadlessCanvas["movedLabel"]) | undefined;
|
|
1493
1656
|
/** The order the arrow keys and screen readers move through the cards:
|
|
1494
1657
|
`spatial` or `edges`.
|
|
1495
1658
|
|
|
@@ -1530,6 +1693,14 @@ walk the cards. */
|
|
|
1530
1693
|
/** The text announced when a connection's end is picked up, with `{from}` and
|
|
1531
1694
|
`{to}`. */
|
|
1532
1695
|
reconnectingLabel?: (HelixHeadlessCanvas["reconnectingLabel"]) | undefined;
|
|
1696
|
+
/** What screen readers hear after a key resizes a card, with `{name}` for the
|
|
1697
|
+
card and `{width}` and `{height}` for its new size, in the document's
|
|
1698
|
+
units. */
|
|
1699
|
+
"resized-label"?: (HelixHeadlessCanvas["resizedLabel"]) | undefined;
|
|
1700
|
+
/** What screen readers hear after a key resizes a card, with `{name}` for the
|
|
1701
|
+
card and `{width}` and `{height}` for its new size, in the document's
|
|
1702
|
+
units. */
|
|
1703
|
+
resizedLabel?: (HelixHeadlessCanvas["resizedLabel"]) | undefined;
|
|
1533
1704
|
/** The names of the selected cards and connections, comma separated. Empty
|
|
1534
1705
|
when nothing is selected.
|
|
1535
1706
|
|
|
@@ -1550,6 +1721,45 @@ on its board across cards and connections both, and may not hold a comma.
|
|
|
1550
1721
|
|
|
1551
1722
|
Written to select from outside, and read to act on the selection. */
|
|
1552
1723
|
selected?: (HelixHeadlessCanvas["selected"]) | undefined;
|
|
1724
|
+
/** What a selected card or connection adds to what screen readers hear on
|
|
1725
|
+
it, before its tone and its connections. Empty adds nothing.
|
|
1726
|
+
|
|
1727
|
+
A card is an article and a connection a button, and neither has a selected
|
|
1728
|
+
state for `aria-selected` to carry, so the state is said in words. */
|
|
1729
|
+
"selected-label"?: (HelixHeadlessCanvas["selectedLabel"]) | undefined;
|
|
1730
|
+
/** What a selected card or connection adds to what screen readers hear on
|
|
1731
|
+
it, before its tone and its connections. Empty adds nothing.
|
|
1732
|
+
|
|
1733
|
+
A card is an article and a connection a button, and neither has a selected
|
|
1734
|
+
state for `aria-selected` to carry, so the state is said in words. */
|
|
1735
|
+
selectedLabel?: (HelixHeadlessCanvas["selectedLabel"]) | undefined;
|
|
1736
|
+
/** What screen readers hear after the selection grows or shrinks, with
|
|
1737
|
+
`{count}` for how many cards and connections are selected, written in the
|
|
1738
|
+
locale, where a language that needs plural forms writes them: by Space, a
|
|
1739
|
+
click with Shift, Command or Control, Command or Control with A, a box
|
|
1740
|
+
drawn across the board, or Escape.
|
|
1741
|
+
|
|
1742
|
+
A selection of one made by arriving on a card or clicking it is not said,
|
|
1743
|
+
since the card is. */
|
|
1744
|
+
"selection-label"?: (HelixHeadlessCanvas["selectionLabel"]) | undefined;
|
|
1745
|
+
/** What screen readers hear after the selection grows or shrinks, with
|
|
1746
|
+
`{count}` for how many cards and connections are selected, written in the
|
|
1747
|
+
locale, where a language that needs plural forms writes them: by Space, a
|
|
1748
|
+
click with Shift, Command or Control, Command or Control with A, a box
|
|
1749
|
+
drawn across the board, or Escape.
|
|
1750
|
+
|
|
1751
|
+
A selection of one made by arriving on a card or clicking it is not said,
|
|
1752
|
+
since the card is. */
|
|
1753
|
+
selectionLabel?: (HelixHeadlessCanvas["selectionLabel"]) | undefined;
|
|
1754
|
+
/** Snaps the cards a reader moves or resizes to a multiple of this many of the
|
|
1755
|
+
document's units, such as `32` to land on the lines `grid` draws.
|
|
1756
|
+
|
|
1757
|
+
**A drag lets go on the nearest line and a key goes to the next one.**
|
|
1758
|
+
Shift with an arrow moves a card to the next line that way, rather than
|
|
1759
|
+
by its step of 16, and Alt with an arrow moves its bottom right corner
|
|
1760
|
+
the same way. A group moves with what it carries, so a card inside one
|
|
1761
|
+
keeps its place in it. Absent, cards land where they are let go. */
|
|
1762
|
+
snap?: (HelixHeadlessCanvas["snap"]) | undefined;
|
|
1553
1763
|
/** The text announced when a connection is stopped before it is requested. */
|
|
1554
1764
|
"stopped-label"?: (HelixHeadlessCanvas["stoppedLabel"]) | undefined;
|
|
1555
1765
|
/** The text announced when a connection is stopped before it is requested. */
|
|
@@ -1572,12 +1782,26 @@ red is "blocked" on one board and "urgent" on the next. A reader who can
|
|
|
1572
1782
|
see the board is told by the color; this is how a reader who cannot is
|
|
1573
1783
|
told the same. A tone left out is not read. */
|
|
1574
1784
|
toneLabels?: (HelixHeadlessCanvas["toneLabels"]) | undefined;
|
|
1575
|
-
/** The hint shown when
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1785
|
+
/** The hint shown when one finger swipes over the board with `gestures="cooperative"`. */
|
|
1786
|
+
"two-finger-hint-label"?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
|
|
1787
|
+
/** The hint shown when one finger swipes over the board with `gestures="cooperative"`. */
|
|
1788
|
+
twoFingerHintLabel?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
|
|
1789
|
+
/** The line shown while the board, with `gestures="activate"`, has the gestures. */
|
|
1790
|
+
"using-label"?: (HelixHeadlessCanvas["usingLabel"]) | undefined;
|
|
1791
|
+
/** The line shown while the board, with `gestures="activate"`, has the gestures. */
|
|
1792
|
+
usingLabel?: (HelixHeadlessCanvas["usingLabel"]) | undefined;
|
|
1793
|
+
/** The hint shown when the wheel scrolls past the board with
|
|
1794
|
+
`gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
|
|
1795
|
+
"wheel-hint-label"?: (HelixHeadlessCanvas["wheelHintLabel"]) | undefined;
|
|
1796
|
+
/** The hint shown when the wheel scrolls past the board with
|
|
1797
|
+
`gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
|
|
1798
|
+
wheelHintLabel?: (HelixHeadlessCanvas["wheelHintLabel"]) | undefined;
|
|
1799
|
+
/** What screen readers hear after a zoom button or key, with `{zoom}` for the
|
|
1800
|
+
zoom as a percentage, written the way the element's locale writes one. */
|
|
1801
|
+
"zoomed-label"?: (HelixHeadlessCanvas["zoomedLabel"]) | undefined;
|
|
1802
|
+
/** What screen readers hear after a zoom button or key, with `{zoom}` for the
|
|
1803
|
+
zoom as a percentage, written the way the element's locale writes one. */
|
|
1804
|
+
zoomedLabel?: (HelixHeadlessCanvas["zoomedLabel"]) | undefined;
|
|
1581
1805
|
/** Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
1582
1806
|
`none`. A family can add words of its own.
|
|
1583
1807
|
|
|
@@ -1600,20 +1824,6 @@ of the frame. The
|
|
|
1600
1824
|
stylesheet lays the cluster out by which buttons are in it rather than by
|
|
1601
1825
|
this attribute, so the two defaults need no rule each. */
|
|
1602
1826
|
controls?: (HelixHeadlessCanvas["controls"]) | undefined;
|
|
1603
|
-
/** The name of the group of controls, read by screen readers.
|
|
1604
|
-
|
|
1605
|
-
Absent is the family's own name for it, "Map controls" or "Board
|
|
1606
|
-
controls", which names what the controls drive rather than the
|
|
1607
|
-
mechanism. Written here to say it in another language, which every other
|
|
1608
|
-
string this surface speaks already allowed and this one did not. */
|
|
1609
|
-
"controls-label"?: (HelixHeadlessCanvas["controlsLabel"]) | undefined;
|
|
1610
|
-
/** The name of the group of controls, read by screen readers.
|
|
1611
|
-
|
|
1612
|
-
Absent is the family's own name for it, "Map controls" or "Board
|
|
1613
|
-
controls", which names what the controls drive rather than the
|
|
1614
|
-
mechanism. Written here to say it in another language, which every other
|
|
1615
|
-
string this surface speaks already allowed and this one did not. */
|
|
1616
|
-
controlsLabel?: (HelixHeadlessCanvas["controlsLabel"]) | undefined;
|
|
1617
1827
|
/** Which corner the controls sit in.
|
|
1618
1828
|
|
|
1619
1829
|
**Configurable because there is no safe default**, which is a collision
|
|
@@ -1716,26 +1926,6 @@ at any zoom, and a consumer who wants their own units multiplies by them. */
|
|
|
1716
1926
|
"pan-up-label"?: (HelixHeadlessCanvas["panUpLabel"]) | undefined;
|
|
1717
1927
|
/** The pan up button's label. */
|
|
1718
1928
|
panUpLabel?: (HelixHeadlessCanvas["panUpLabel"]) | undefined;
|
|
1719
|
-
/** The hint shown when one finger swipes over a surface with
|
|
1720
|
-
`gestures="cooperative"`. Absent is the family's own. */
|
|
1721
|
-
"two-finger-hint-label"?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
|
|
1722
|
-
/** The hint shown when one finger swipes over a surface with
|
|
1723
|
-
`gestures="cooperative"`. Absent is the family's own. */
|
|
1724
|
-
twoFingerHintLabel?: (HelixHeadlessCanvas["twoFingerHintLabel"]) | undefined;
|
|
1725
|
-
/** The line shown while a surface with `gestures="activate"` has the
|
|
1726
|
-
gestures. Absent is the family's own. */
|
|
1727
|
-
"using-label"?: (HelixHeadlessCanvas["usingLabel"]) | undefined;
|
|
1728
|
-
/** The line shown while a surface with `gestures="activate"` has the
|
|
1729
|
-
gestures. Absent is the family's own. */
|
|
1730
|
-
usingLabel?: (HelixHeadlessCanvas["usingLabel"]) | undefined;
|
|
1731
|
-
/** The hint shown when the wheel scrolls past a surface with
|
|
1732
|
-
`gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
|
|
1733
|
-
elsewhere. Absent is the family's own. */
|
|
1734
|
-
"wheel-hint-label"?: (HelixHeadlessCanvas["wheelHintLabel"]) | undefined;
|
|
1735
|
-
/** The hint shown when the wheel scrolls past a surface with
|
|
1736
|
-
`gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
|
|
1737
|
-
elsewhere. Absent is the family's own. */
|
|
1738
|
-
wheelHintLabel?: (HelixHeadlessCanvas["wheelHintLabel"]) | undefined;
|
|
1739
1929
|
/** The zoom in button's label. */
|
|
1740
1930
|
"zoom-in-label"?: (HelixHeadlessCanvas["zoomInLabel"]) | undefined;
|
|
1741
1931
|
/** The zoom in button's label. */
|
|
@@ -2222,9 +2412,8 @@ nothing for `them`. */
|
|
|
2222
2412
|
"failed-label"?: (HelixHeadlessChatMessage["failedLabel"]) | undefined;
|
|
2223
2413
|
/** Label for a message that did not send. */
|
|
2224
2414
|
failedLabel?: (HelixHeadlessChatMessage["failedLabel"]) | undefined;
|
|
2225
|
-
/**
|
|
2226
|
-
|
|
2227
|
-
Empty is the runtime's own. */
|
|
2415
|
+
/** The locale the timestamp and the words are in, as a BCP 47 tag such as
|
|
2416
|
+
`de`. Empty reads the nearest `lang`, then the browser's language. */
|
|
2228
2417
|
locale?: (HelixHeadlessChatMessage["locale"]) | undefined;
|
|
2229
2418
|
/** Label for the retry button on a failed message. */
|
|
2230
2419
|
"retry-label"?: (HelixHeadlessChatMessage["retryLabel"]) | undefined;
|
|
@@ -2301,6 +2490,24 @@ set.
|
|
|
2301
2490
|
attribute could not say that: it is true by being there, whatever it holds,
|
|
2302
2491
|
so a default of true had no attribute that turned it off. */
|
|
2303
2492
|
defaultPinned?: (HelixHeadlessChat["defaultPinned"]) | undefined;
|
|
2493
|
+
/** What a turn from `turns` that did not send says, and what a screen reader
|
|
2494
|
+
hears before its words. A turn you write as a child says its own
|
|
2495
|
+
`failed-label`. */
|
|
2496
|
+
"failed-label"?: (HelixHeadlessChat["failedLabel"]) | undefined;
|
|
2497
|
+
/** What a turn from `turns` that did not send says, and what a screen reader
|
|
2498
|
+
hears before its words. A turn you write as a child says its own
|
|
2499
|
+
`failed-label`. */
|
|
2500
|
+
failedLabel?: (HelixHeadlessChat["failedLabel"]) | undefined;
|
|
2501
|
+
/** What a screen reader hears for a turn that did not send. `{failed}` is the
|
|
2502
|
+
turn's `failed-label` and `{text}` is its words. */
|
|
2503
|
+
"failed-turn-label"?: (HelixHeadlessChat["failedTurnLabel"]) | undefined;
|
|
2504
|
+
/** What a screen reader hears for a turn that did not send. `{failed}` is the
|
|
2505
|
+
turn's `failed-label` and `{text}` is its words. */
|
|
2506
|
+
failedTurnLabel?: (HelixHeadlessChat["failedTurnLabel"]) | undefined;
|
|
2507
|
+
/** The conversation's name, read by screen readers, where `label` is empty. */
|
|
2508
|
+
"fallback-label"?: (HelixHeadlessChat["fallbackLabel"]) | undefined;
|
|
2509
|
+
/** The conversation's name, read by screen readers, where `label` is empty. */
|
|
2510
|
+
fallbackLabel?: (HelixHeadlessChat["fallbackLabel"]) | undefined;
|
|
2304
2511
|
/** Whether there are older turns to load, and whether they are loading.
|
|
2305
2512
|
|
|
2306
2513
|
`more` makes reaching the top fire `helix-history`, once per arrival;
|
|
@@ -2428,6 +2635,14 @@ Read from the boxes once they are known, so a box a script ticks directly
|
|
|
2428
2635
|
is in it at once. Written, it is pushed onto the boxes. A box whose value
|
|
2429
2636
|
holds a comma cannot be named here: use `values`. */
|
|
2430
2637
|
value?: (HelixHeadlessCheckboxGroup["value"]) | undefined;
|
|
2638
|
+
/** The message reported when the field is required and no box is ticked.
|
|
2639
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
2640
|
+
locale. */
|
|
2641
|
+
"value-missing-message"?: (HelixHeadlessCheckboxGroup["valueMissingMessage"]) | undefined;
|
|
2642
|
+
/** The message reported when the field is required and no box is ticked.
|
|
2643
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
2644
|
+
locale. */
|
|
2645
|
+
valueMissingMessage?: (HelixHeadlessCheckboxGroup["valueMissingMessage"]) | undefined;
|
|
2431
2646
|
/** */
|
|
2432
2647
|
"aria-label"?: unknown;
|
|
2433
2648
|
/** The validation message shown under the control. It replaces the
|
|
@@ -2440,24 +2655,6 @@ browser's message. */
|
|
|
2440
2655
|
label?: (HelixHeadlessCheckboxGroup["label"]) | undefined;
|
|
2441
2656
|
/** Whether the field needs a value before the form can submit. */
|
|
2442
2657
|
required?: (HelixHeadlessCheckboxGroup["required"]) | undefined;
|
|
2443
|
-
/** The message shown when the field is required and empty.
|
|
2444
|
-
|
|
2445
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
2446
|
-
set and the browser's own on a text field, which the browser writes in
|
|
2447
|
-
the reader's language. Every other word a control speaks is a property,
|
|
2448
|
-
and this one was the English a form in another language still spoke in
|
|
2449
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
2450
|
-
the field and does not reach that one. */
|
|
2451
|
-
"value-missing-message"?: (HelixHeadlessCheckboxGroup["valueMissingMessage"]) | undefined;
|
|
2452
|
-
/** The message shown when the field is required and empty.
|
|
2453
|
-
|
|
2454
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
2455
|
-
set and the browser's own on a text field, which the browser writes in
|
|
2456
|
-
the reader's language. Every other word a control speaks is a property,
|
|
2457
|
-
and this one was the English a form in another language still spoke in
|
|
2458
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
2459
|
-
the field and does not reach that one. */
|
|
2460
|
-
valueMissingMessage?: (HelixHeadlessCheckboxGroup["valueMissingMessage"]) | undefined;
|
|
2461
2658
|
/** Whether the control is disabled and cannot be used.
|
|
2462
2659
|
|
|
2463
2660
|
Reflected, because the styled tier selects on it, and mirrored to
|
|
@@ -2520,6 +2717,14 @@ reads it as `:state(indeterminate)`. */
|
|
|
2520
2717
|
indeterminate?: (HelixHeadlessCheckbox["indeterminate"]) | undefined;
|
|
2521
2718
|
/** The value submitted when the box is checked. */
|
|
2522
2719
|
value?: (HelixHeadlessCheckbox["value"]) | undefined;
|
|
2720
|
+
/** The message reported when the field is required and the box is not ticked.
|
|
2721
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
2722
|
+
locale. */
|
|
2723
|
+
"value-missing-message"?: (HelixHeadlessCheckbox["valueMissingMessage"]) | undefined;
|
|
2724
|
+
/** The message reported when the field is required and the box is not ticked.
|
|
2725
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
2726
|
+
locale. */
|
|
2727
|
+
valueMissingMessage?: (HelixHeadlessCheckbox["valueMissingMessage"]) | undefined;
|
|
2523
2728
|
/** Whether the control is checked.
|
|
2524
2729
|
|
|
2525
2730
|
One property rather than two. Writing always applies;
|
|
@@ -2571,24 +2776,6 @@ browser's message. */
|
|
|
2571
2776
|
label?: (HelixHeadlessCheckbox["label"]) | undefined;
|
|
2572
2777
|
/** Whether the field needs a value before the form can submit. */
|
|
2573
2778
|
required?: (HelixHeadlessCheckbox["required"]) | undefined;
|
|
2574
|
-
/** The message shown when the field is required and empty.
|
|
2575
|
-
|
|
2576
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
2577
|
-
set and the browser's own on a text field, which the browser writes in
|
|
2578
|
-
the reader's language. Every other word a control speaks is a property,
|
|
2579
|
-
and this one was the English a form in another language still spoke in
|
|
2580
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
2581
|
-
the field and does not reach that one. */
|
|
2582
|
-
"value-missing-message"?: (HelixHeadlessCheckbox["valueMissingMessage"]) | undefined;
|
|
2583
|
-
/** The message shown when the field is required and empty.
|
|
2584
|
-
|
|
2585
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
2586
|
-
set and the browser's own on a text field, which the browser writes in
|
|
2587
|
-
the reader's language. Every other word a control speaks is a property,
|
|
2588
|
-
and this one was the English a form in another language still spoke in
|
|
2589
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
2590
|
-
the field and does not reach that one. */
|
|
2591
|
-
valueMissingMessage?: (HelixHeadlessCheckbox["valueMissingMessage"]) | undefined;
|
|
2592
2779
|
/** Whether the control is disabled and cannot be used.
|
|
2593
2780
|
|
|
2594
2781
|
Reflected, because the styled tier selects on it, and mirrored to
|
|
@@ -2638,15 +2825,21 @@ export type HelixHeadlessCodeBlockVueProps = {
|
|
|
2638
2825
|
/** The copy button's name and tooltip text before a copy.
|
|
2639
2826
|
|
|
2640
2827
|
Where the block has a name, the button says it too, such as "Copy code,
|
|
2641
|
-
app.ts", so each copy button on a page with
|
|
2642
|
-
In a diff, that is each file's own name. */
|
|
2828
|
+
app.ts", as `copy-name-label` puts it, so each copy button on a page with
|
|
2829
|
+
several blocks is told apart. In a diff, that is each file's own name. */
|
|
2643
2830
|
"copy-label"?: (HelixHeadlessCodeBlock["copyLabel"]) | undefined;
|
|
2644
2831
|
/** The copy button's name and tooltip text before a copy.
|
|
2645
2832
|
|
|
2646
2833
|
Where the block has a name, the button says it too, such as "Copy code,
|
|
2647
|
-
app.ts", so each copy button on a page with
|
|
2648
|
-
In a diff, that is each file's own name. */
|
|
2834
|
+
app.ts", as `copy-name-label` puts it, so each copy button on a page with
|
|
2835
|
+
several blocks is told apart. In a diff, that is each file's own name. */
|
|
2649
2836
|
copyLabel?: (HelixHeadlessCodeBlock["copyLabel"]) | undefined;
|
|
2837
|
+
/** The copy button's name and tooltip text before a copy, where the block
|
|
2838
|
+
has a name. `{copy}` is `copy-label` and `{name}` the block's name. */
|
|
2839
|
+
"copy-name-label"?: (HelixHeadlessCodeBlock["copyNameLabel"]) | undefined;
|
|
2840
|
+
/** The copy button's name and tooltip text before a copy, where the block
|
|
2841
|
+
has a name. `{copy}` is `copy-label` and `{name}` the block's name. */
|
|
2842
|
+
copyNameLabel?: (HelixHeadlessCodeBlock["copyNameLabel"]) | undefined;
|
|
2650
2843
|
/** Whether the content is a unified diff, drawn as the lines it changed.
|
|
2651
2844
|
|
|
2652
2845
|
Reflected, because the stylesheet paints a diff differently from code, and
|
|
@@ -2663,16 +2856,18 @@ block lays out. Not for a diff, whose files each scroll on their own. */
|
|
|
2663
2856
|
"expand-label"?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
|
|
2664
2857
|
/** The expand button's words while the cap hides lines. */
|
|
2665
2858
|
expandLabel?: (HelixHeadlessCodeBlock["expandLabel"]) | undefined;
|
|
2666
|
-
/** The block's name, usually a file name
|
|
2859
|
+
/** The block's name, usually a file name, drawn in the header.
|
|
2667
2860
|
|
|
2668
|
-
|
|
2669
|
-
|
|
2861
|
+
Absent, the block is named by `language` where there is one. In a diff,
|
|
2862
|
+
each file is named from the patch, and this names a patch that carries no
|
|
2863
|
+
name of its own. */
|
|
2670
2864
|
label?: (HelixHeadlessCodeBlock["label"]) | undefined;
|
|
2671
2865
|
/** The language the code is written in, such as `ts` or `css`, handed to
|
|
2672
2866
|
`highlight` as its second argument.
|
|
2673
2867
|
|
|
2674
|
-
|
|
2675
|
-
|
|
2868
|
+
A block with no `label` is named by it, in the header and on the copy
|
|
2869
|
+
button, as a docs site names a snippet by its language. Absent hands
|
|
2870
|
+
`highlight` an empty string and names nothing. */
|
|
2676
2871
|
language?: (HelixHeadlessCodeBlock["language"]) | undefined;
|
|
2677
2872
|
/** Whether the lines are numbered in a gutter beside the code.
|
|
2678
2873
|
|
|
@@ -2840,6 +3035,14 @@ Date Input and Time Input. */
|
|
|
2840
3035
|
readOnly?: (HelixHeadlessColorInput["readOnly"]) | undefined;
|
|
2841
3036
|
/** Colors offered under the picker, as a comma-separated list. */
|
|
2842
3037
|
swatches?: (HelixHeadlessColorInput["swatches"]) | undefined;
|
|
3038
|
+
/** What the swatch says in `variant="swatch"`, after the field's label, once
|
|
3039
|
+
there is a color. `{name}` is the color's name, such as "vibrant red", and
|
|
3040
|
+
`{value}` the value as written. */
|
|
3041
|
+
"swatch-label"?: (HelixHeadlessColorInput["swatchLabel"]) | undefined;
|
|
3042
|
+
/** What the swatch says in `variant="swatch"`, after the field's label, once
|
|
3043
|
+
there is a color. `{name}` is the color's name, such as "vibrant red", and
|
|
3044
|
+
`{value}` the value as written. */
|
|
3045
|
+
swatchLabel?: (HelixHeadlessColorInput["swatchLabel"]) | undefined;
|
|
2843
3046
|
/** Accessible name for the control that opens the panel. */
|
|
2844
3047
|
"trigger-label"?: (HelixHeadlessColorInput["triggerLabel"]) | undefined;
|
|
2845
3048
|
/** Accessible name for the control that opens the panel. */
|
|
@@ -2925,18 +3128,22 @@ browser's message. */
|
|
|
2925
3128
|
required?: (HelixHeadlessColorInput["required"]) | undefined;
|
|
2926
3129
|
/** The message shown when the field is required and empty.
|
|
2927
3130
|
|
|
2928
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
2929
|
-
set and the browser's own on a text field, which the
|
|
2930
|
-
the reader's language.
|
|
3131
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
3132
|
+
continue." on a set and the browser's own on a text field, which the
|
|
3133
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
3134
|
+
own declares it as this property's English, a word property a page
|
|
3135
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
2931
3136
|
and this one was the English a form in another language still spoke in
|
|
2932
3137
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
2933
3138
|
the field and does not reach that one. */
|
|
2934
3139
|
"value-missing-message"?: (HelixHeadlessColorInput["valueMissingMessage"]) | undefined;
|
|
2935
3140
|
/** The message shown when the field is required and empty.
|
|
2936
3141
|
|
|
2937
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
2938
|
-
set and the browser's own on a text field, which the
|
|
2939
|
-
the reader's language.
|
|
3142
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
3143
|
+
continue." on a set and the browser's own on a text field, which the
|
|
3144
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
3145
|
+
own declares it as this property's English, a word property a page
|
|
3146
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
2940
3147
|
and this one was the English a form in another language still spoke in
|
|
2941
3148
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
2942
3149
|
the field and does not reach that one. */
|
|
@@ -3239,6 +3446,22 @@ into. */
|
|
|
3239
3446
|
"saturation-label"?: (HelixHeadlessColorPicker["saturationLabel"]) | undefined;
|
|
3240
3447
|
/** What the square's horizontal ramp is called. */
|
|
3241
3448
|
saturationLabel?: (HelixHeadlessColorPicker["saturationLabel"]) | undefined;
|
|
3449
|
+
/** What a screen reader hears for the square's place, the color's two
|
|
3450
|
+
numbers and its name, on whichever of its two inputs it is on.
|
|
3451
|
+
`{first}` is `saturation` or `brightness`, the input's own channel, which
|
|
3452
|
+
is said first, so each order is its whole sentence. `{saturation}` and
|
|
3453
|
+
`{brightness}` are shares from 0 to 1, written as percentages with
|
|
3454
|
+
`number, percent`, `{saturationLabel}` and `{brightnessLabel}` the
|
|
3455
|
+
channels' names, and `{name}` the color's, such as "vibrant red". */
|
|
3456
|
+
"square-text"?: (HelixHeadlessColorPicker["squareText"]) | undefined;
|
|
3457
|
+
/** What a screen reader hears for the square's place, the color's two
|
|
3458
|
+
numbers and its name, on whichever of its two inputs it is on.
|
|
3459
|
+
`{first}` is `saturation` or `brightness`, the input's own channel, which
|
|
3460
|
+
is said first, so each order is its whole sentence. `{saturation}` and
|
|
3461
|
+
`{brightness}` are shares from 0 to 1, written as percentages with
|
|
3462
|
+
`number, percent`, `{saturationLabel}` and `{brightnessLabel}` the
|
|
3463
|
+
channels' names, and `{name}` the color's, such as "vibrant red". */
|
|
3464
|
+
squareText?: (HelixHeadlessColorPicker["squareText"]) | undefined;
|
|
3242
3465
|
/** Colors offered under the picker, as a comma-separated list. */
|
|
3243
3466
|
swatches?: (HelixHeadlessColorPicker["swatches"]) | undefined;
|
|
3244
3467
|
/** What the group holding the eyedropper and the syntax toggle is called. */
|
|
@@ -3253,13 +3476,15 @@ into. */
|
|
|
3253
3476
|
|
|
3254
3477
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
3255
3478
|
named for the validity flag it reports, so a form in another language
|
|
3256
|
-
speaks it.
|
|
3479
|
+
speaks it. Unset is the sentence registered for the page's language, then
|
|
3480
|
+
the English. */
|
|
3257
3481
|
"value-missing-message"?: (HelixHeadlessColorPicker["valueMissingMessage"]) | undefined;
|
|
3258
3482
|
/** The message shown when a color is required and none is chosen.
|
|
3259
3483
|
|
|
3260
3484
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
3261
3485
|
named for the validity flag it reports, so a form in another language
|
|
3262
|
-
speaks it.
|
|
3486
|
+
speaks it. Unset is the sentence registered for the page's language, then
|
|
3487
|
+
the English. */
|
|
3263
3488
|
valueMissingMessage?: (HelixHeadlessColorPicker["valueMissingMessage"]) | undefined;
|
|
3264
3489
|
/** Draws the hue as a wheel around the square, in place of the hue ramp, as
|
|
3265
3490
|
React Aria's ColorWheel sits round its ColorArea.
|
|
@@ -3386,12 +3611,19 @@ leaves the field or presses Enter with nothing highlighted, and text that
|
|
|
3386
3611
|
names an option takes that option. Unlike `creatable`, no event asks
|
|
3387
3612
|
first and no option is expected to be added: the value is the text. */
|
|
3388
3613
|
allowsCustomValue?: (HelixHeadlessCombobox["allowsCustomValue"]) | undefined;
|
|
3389
|
-
/** What the browser may autofill
|
|
3614
|
+
/** What the browser may autofill, as a platform token such as `country`.
|
|
3390
3615
|
|
|
3391
3616
|
**Defaults to `off`, which is not the platform's default and is the
|
|
3392
3617
|
point.** The field filters a list rather than collecting a value, so a
|
|
3393
3618
|
browser offering to fill it with a saved address is competing for the same
|
|
3394
|
-
keystrokes as the listbox. A consumer who wants autofill can still ask.
|
|
3619
|
+
keystrokes as the listbox. A consumer who wants autofill can still ask.
|
|
3620
|
+
|
|
3621
|
+
Set, a combobox whose answer is one of its options keeps a hidden native
|
|
3622
|
+
`<select>` with the same options for the browser to fill, as React Aria's
|
|
3623
|
+
combobox and Select do, and the option the browser picks, by its value or
|
|
3624
|
+
its words, becomes the value. The text field itself stays `off`, so the
|
|
3625
|
+
browser fills the answer and not the filter. With `allows-custom-value`
|
|
3626
|
+
the token goes on the text field, whose words are the answer. */
|
|
3395
3627
|
autocomplete?: (HelixHeadlessCombobox["autocomplete"]) | undefined;
|
|
3396
3628
|
/** Whether the user can add a value that is not in the list.
|
|
3397
3629
|
|
|
@@ -3401,9 +3633,15 @@ it is offered next to near misses too: a reader typing "Ruby on Rails" with
|
|
|
3401
3633
|
halfway through. The arrow keys reach it after the last option, and Enter
|
|
3402
3634
|
on it adds what was typed. */
|
|
3403
3635
|
creatable?: (HelixHeadlessCombobox["creatable"]) | undefined;
|
|
3404
|
-
/** The text of the create row
|
|
3636
|
+
/** The text of the create row. `{value}` is what was typed.
|
|
3637
|
+
|
|
3638
|
+
A sentence without `{value}`, such as `Create`, is followed by what was
|
|
3639
|
+
typed in quotes, as before `{value}` existed. */
|
|
3405
3640
|
"create-label"?: (HelixHeadlessCombobox["createLabel"]) | undefined;
|
|
3406
|
-
/** The text of the create row
|
|
3641
|
+
/** The text of the create row. `{value}` is what was typed.
|
|
3642
|
+
|
|
3643
|
+
A sentence without `{value}`, such as `Create`, is followed by what was
|
|
3644
|
+
typed in quotes, as before `{value}` existed. */
|
|
3407
3645
|
createLabel?: (HelixHeadlessCombobox["createLabel"]) | undefined;
|
|
3408
3646
|
/** Text shown when the filter hides every option. */
|
|
3409
3647
|
"empty-text"?: (HelixHeadlessCombobox["emptyText"]) | undefined;
|
|
@@ -3430,12 +3668,14 @@ every keystroke. See Listbox's `filter-delay`. */
|
|
|
3430
3668
|
/** The list's name, read by screen readers. The list has no visible name. */
|
|
3431
3669
|
listLabel?: (HelixHeadlessCombobox["listLabel"]) | undefined;
|
|
3432
3670
|
/** What the list says when its options could not be loaded, such as after a
|
|
3433
|
-
request to a server fails. Empty
|
|
3434
|
-
|
|
3671
|
+
request to a server fails. Empty, null or no attribute is no error, so
|
|
3672
|
+
removing the attribute clears it. Passed to the list, which shows it
|
|
3673
|
+
under any options there are and tells screen readers. */
|
|
3435
3674
|
"load-error"?: (HelixHeadlessCombobox["loadError"]) | undefined;
|
|
3436
3675
|
/** What the list says when its options could not be loaded, such as after a
|
|
3437
|
-
request to a server fails. Empty
|
|
3438
|
-
|
|
3676
|
+
request to a server fails. Empty, null or no attribute is no error, so
|
|
3677
|
+
removing the attribute clears it. Passed to the list, which shows it
|
|
3678
|
+
under any options there are and tells screen readers. */
|
|
3439
3679
|
loadError?: (HelixHeadlessCombobox["loadError"]) | undefined;
|
|
3440
3680
|
/** Whether the options are still loading.
|
|
3441
3681
|
|
|
@@ -3446,6 +3686,10 @@ message belongs. */
|
|
|
3446
3686
|
"loading-text"?: (HelixHeadlessCombobox["loadingText"]) | undefined;
|
|
3447
3687
|
/** Text the list shows while the options load. */
|
|
3448
3688
|
loadingText?: (HelixHeadlessCombobox["loadingText"]) | undefined;
|
|
3689
|
+
/** The locale the words, plural forms, and numbers are in, as a BCP 47 tag
|
|
3690
|
+
such as `pl`. Empty reads the nearest `lang`, then the browser's
|
|
3691
|
+
language. */
|
|
3692
|
+
locale?: (HelixHeadlessCombobox["locale"]) | undefined;
|
|
3449
3693
|
/** Whether more than one option can be chosen.
|
|
3450
3694
|
|
|
3451
3695
|
The list already does the work: `value` comes apart on commas, a press
|
|
@@ -3504,20 +3748,28 @@ filled in.
|
|
|
3504
3748
|
**The name goes in**, so a row of them is heard as which one each
|
|
3505
3749
|
removes rather than as "Remove" said once per chosen option. */
|
|
3506
3750
|
removeLabel?: (HelixHeadlessCombobox["removeLabel"]) | undefined;
|
|
3507
|
-
/** What a screen reader hears when typing leaves one option
|
|
3508
|
-
the count. */
|
|
3751
|
+
/** What a screen reader hears when typing leaves one option, where
|
|
3752
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
3509
3753
|
"result-label"?: (HelixHeadlessCombobox["resultLabel"]) | undefined;
|
|
3510
|
-
/** What a screen reader hears when typing leaves one option
|
|
3511
|
-
the count. */
|
|
3754
|
+
/** What a screen reader hears when typing leaves one option, where
|
|
3755
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
3512
3756
|
resultLabel?: (HelixHeadlessCombobox["resultLabel"]) | undefined;
|
|
3513
|
-
/** What a screen reader hears when typing
|
|
3514
|
-
options
|
|
3515
|
-
|
|
3757
|
+
/** What a screen reader hears when typing narrows the list. `{count}` is how
|
|
3758
|
+
many options are left, written in the locale, and each language writes
|
|
3759
|
+
the forms it has: `{count, plural, one {# wynik} few {# wyniki} many
|
|
3760
|
+
{# wyników} other {# wyniku}}`. */
|
|
3516
3761
|
"results-label"?: (HelixHeadlessCombobox["resultsLabel"]) | undefined;
|
|
3517
|
-
/** What a screen reader hears when typing
|
|
3518
|
-
options
|
|
3519
|
-
|
|
3762
|
+
/** What a screen reader hears when typing narrows the list. `{count}` is how
|
|
3763
|
+
many options are left, written in the locale, and each language writes
|
|
3764
|
+
the forms it has: `{count, plural, one {# wynik} few {# wyniki} many
|
|
3765
|
+
{# wyników} other {# wyniku}}`. */
|
|
3520
3766
|
resultsLabel?: (HelixHeadlessCombobox["resultsLabel"]) | undefined;
|
|
3767
|
+
/** What VoiceOver hears for a chosen option, as the highlight reaches it and
|
|
3768
|
+
once it is chosen, on Apple devices. `{name}` is the option's words. */
|
|
3769
|
+
"selected-label"?: (HelixHeadlessCombobox["selectedLabel"]) | undefined;
|
|
3770
|
+
/** What VoiceOver hears for a chosen option, as the highlight reaches it and
|
|
3771
|
+
once it is chosen, on Apple devices. `{name}` is the option's words. */
|
|
3772
|
+
selectedLabel?: (HelixHeadlessCombobox["selectedLabel"]) | undefined;
|
|
3521
3773
|
/** Whether the field completes the word as the user types.
|
|
3522
3774
|
|
|
3523
3775
|
`suggest` rather than `autocomplete`, which is a real HTML attribute this
|
|
@@ -3525,6 +3777,14 @@ element already sets on the input it renders, and two things of one name
|
|
|
3525
3777
|
meaning different things on the same control is a question a consumer
|
|
3526
3778
|
should not have to ask. */
|
|
3527
3779
|
suggest?: (HelixHeadlessCombobox["suggest"]) | undefined;
|
|
3780
|
+
/** The message reported when the field is required and nothing is chosen.
|
|
3781
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
3782
|
+
locale. */
|
|
3783
|
+
"value-missing-message"?: (HelixHeadlessCombobox["valueMissingMessage"]) | undefined;
|
|
3784
|
+
/** The message reported when the field is required and nothing is chosen.
|
|
3785
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
3786
|
+
locale. */
|
|
3787
|
+
valueMissingMessage?: (HelixHeadlessCombobox["valueMissingMessage"]) | undefined;
|
|
3528
3788
|
/** Whether the element starts open. Ignored once `open` is written. */
|
|
3529
3789
|
"default-open"?: (HelixHeadlessCombobox["defaultOpen"]) | undefined;
|
|
3530
3790
|
/** Whether the element starts open. Ignored once `open` is written. */
|
|
@@ -3558,6 +3818,12 @@ as `+3`, does not say what it does. */
|
|
|
3558
3818
|
"max-tags"?: (HelixHeadlessCombobox["maxTags"] | `${number}`) | undefined;
|
|
3559
3819
|
/** How many tokens to show before the rest become a count. */
|
|
3560
3820
|
maxTags?: (HelixHeadlessCombobox["maxTags"]) | undefined;
|
|
3821
|
+
/** The count of the tokens past `max-tags`, as it is shown, with `{count}`
|
|
3822
|
+
for the number, written in the element's locale. */
|
|
3823
|
+
"rest-text"?: (HelixHeadlessCombobox["restText"]) | undefined;
|
|
3824
|
+
/** The count of the tokens past `max-tags`, as it is shown, with `{count}`
|
|
3825
|
+
for the number, written in the element's locale. */
|
|
3826
|
+
restText?: (HelixHeadlessCombobox["restText"]) | undefined;
|
|
3561
3827
|
/** The value the control starts with. A form reset returns it to this value,
|
|
3562
3828
|
and to the `value` attribute where this one is not written, as a native
|
|
3563
3829
|
control resets to the `value` it declares. */
|
|
@@ -3585,24 +3851,6 @@ browser's message. */
|
|
|
3585
3851
|
label?: (HelixHeadlessCombobox["label"]) | undefined;
|
|
3586
3852
|
/** Whether the field needs a value before the form can submit. */
|
|
3587
3853
|
required?: (HelixHeadlessCombobox["required"]) | undefined;
|
|
3588
|
-
/** The message shown when the field is required and empty.
|
|
3589
|
-
|
|
3590
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
3591
|
-
set and the browser's own on a text field, which the browser writes in
|
|
3592
|
-
the reader's language. Every other word a control speaks is a property,
|
|
3593
|
-
and this one was the English a form in another language still spoke in
|
|
3594
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
3595
|
-
the field and does not reach that one. */
|
|
3596
|
-
"value-missing-message"?: (HelixHeadlessCombobox["valueMissingMessage"]) | undefined;
|
|
3597
|
-
/** The message shown when the field is required and empty.
|
|
3598
|
-
|
|
3599
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
3600
|
-
set and the browser's own on a text field, which the browser writes in
|
|
3601
|
-
the reader's language. Every other word a control speaks is a property,
|
|
3602
|
-
and this one was the English a form in another language still spoke in
|
|
3603
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
3604
|
-
the field and does not reach that one. */
|
|
3605
|
-
valueMissingMessage?: (HelixHeadlessCombobox["valueMissingMessage"]) | undefined;
|
|
3606
3854
|
/** Whether the control is disabled and cannot be used.
|
|
3607
3855
|
|
|
3608
3856
|
Reflected, because the styled tier selects on it, and mirrored to
|
|
@@ -3707,12 +3955,14 @@ with: one key, said once. */
|
|
|
3707
3955
|
/** Accessible name for the overlay, which has no visible heading. */
|
|
3708
3956
|
label?: (HelixHeadlessCommand["label"]) | undefined;
|
|
3709
3957
|
/** What the list says when its commands could not be loaded, such as after a
|
|
3710
|
-
request to a server fails. Empty
|
|
3711
|
-
|
|
3958
|
+
request to a server fails. Empty, null or no attribute is no error, so
|
|
3959
|
+
removing the attribute clears it. Passed to the list, which shows it
|
|
3960
|
+
under any commands there are and tells screen readers. */
|
|
3712
3961
|
"load-error"?: (HelixHeadlessCommand["loadError"]) | undefined;
|
|
3713
3962
|
/** What the list says when its commands could not be loaded, such as after a
|
|
3714
|
-
request to a server fails. Empty
|
|
3715
|
-
|
|
3963
|
+
request to a server fails. Empty, null or no attribute is no error, so
|
|
3964
|
+
removing the attribute clears it. Passed to the list, which shows it
|
|
3965
|
+
under any commands there are and tells screen readers. */
|
|
3716
3966
|
loadError?: (HelixHeadlessCommand["loadError"]) | undefined;
|
|
3717
3967
|
/** Whether the commands are still loading, for a palette that asks a server
|
|
3718
3968
|
for them as the user types.
|
|
@@ -3731,19 +3981,21 @@ some. Absent, `empty-text` shows. See Listbox's `no-results-text`. */
|
|
|
3731
3981
|
noResultsText?: (HelixHeadlessCommand["noResultsText"]) | undefined;
|
|
3732
3982
|
/** The text shown in the filter field before anything is typed. */
|
|
3733
3983
|
placeholder?: (HelixHeadlessCommand["placeholder"]) | undefined;
|
|
3734
|
-
/** What a screen reader hears when typing leaves one command
|
|
3735
|
-
the count. */
|
|
3984
|
+
/** What a screen reader hears when typing leaves one command, where
|
|
3985
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
3736
3986
|
"result-label"?: (HelixHeadlessCommand["resultLabel"]) | undefined;
|
|
3737
|
-
/** What a screen reader hears when typing leaves one command
|
|
3738
|
-
the count. */
|
|
3987
|
+
/** What a screen reader hears when typing leaves one command, where
|
|
3988
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
3739
3989
|
resultLabel?: (HelixHeadlessCommand["resultLabel"]) | undefined;
|
|
3740
|
-
/** What a screen reader hears when typing
|
|
3741
|
-
|
|
3742
|
-
|
|
3990
|
+
/** What a screen reader hears when typing narrows the commands. `{count}` is
|
|
3991
|
+
how many are left, written in the locale, and each language writes the
|
|
3992
|
+
forms it has: `{count, plural, one {# polecenie} few {# polecenia} many
|
|
3993
|
+
{# poleceń} other {# polecenia}}`. */
|
|
3743
3994
|
"results-label"?: (HelixHeadlessCommand["resultsLabel"]) | undefined;
|
|
3744
|
-
/** What a screen reader hears when typing
|
|
3745
|
-
|
|
3746
|
-
|
|
3995
|
+
/** What a screen reader hears when typing narrows the commands. `{count}` is
|
|
3996
|
+
how many are left, written in the locale, and each language writes the
|
|
3997
|
+
forms it has: `{count, plural, one {# polecenie} few {# polecenia} many
|
|
3998
|
+
{# poleceń} other {# polecenia}}`. */
|
|
3747
3999
|
resultsLabel?: (HelixHeadlessCommand["resultsLabel"]) | undefined;
|
|
3748
4000
|
/** Whether the element starts open. Ignored once `open` is written. */
|
|
3749
4001
|
"default-open"?: (HelixHeadlessCommand["defaultOpen"]) | undefined;
|
|
@@ -3915,6 +4167,9 @@ export type HelixHeadlessDataTableElementEvent<E = Event> = TypedEvent<
|
|
|
3915
4167
|
/** `helix-activate` event type */
|
|
3916
4168
|
export type HelixHeadlessDataTableHelixActivateElementEvent =
|
|
3917
4169
|
HelixHeadlessDataTableElementEvent<HelixActivateEvent>;
|
|
4170
|
+
/** `helix-before-reorder` event type */
|
|
4171
|
+
export type HelixHeadlessDataTableHelixBeforeReorderElementEvent =
|
|
4172
|
+
HelixHeadlessDataTableElementEvent<HelixBeforeReorderEvent>;
|
|
3918
4173
|
/** `helix-expand` event type */
|
|
3919
4174
|
export type HelixHeadlessDataTableHelixExpandElementEvent =
|
|
3920
4175
|
HelixHeadlessDataTableElementEvent<HelixExpandEvent>;
|
|
@@ -3950,10 +4205,16 @@ export type HelixHeadlessDataTableHelixSortedElementEvent =
|
|
|
3950
4205
|
HelixHeadlessDataTableElementEvent<HelixSortedEvent>;
|
|
3951
4206
|
|
|
3952
4207
|
export type HelixHeadlessDataTableVueProps = {
|
|
3953
|
-
/** The word for an ascending sort, in `sorted-label`. */
|
|
4208
|
+
/** The word for an ascending sort, in a `sorted-label` that writes `{order}`. */
|
|
3954
4209
|
"ascending-label"?: (HelixHeadlessDataTable["ascendingLabel"]) | undefined;
|
|
3955
|
-
/** The word for an ascending sort, in `sorted-label`. */
|
|
4210
|
+
/** The word for an ascending sort, in a `sorted-label` that writes `{order}`. */
|
|
3956
4211
|
ascendingLabel?: (HelixHeadlessDataTable["ascendingLabel"]) | undefined;
|
|
4212
|
+
/** What screen readers hear when a held row is put back, or a move is
|
|
4213
|
+
refused, with `reorderable-rows`. */
|
|
4214
|
+
"canceled-label"?: (HelixHeadlessDataTable["canceledLabel"]) | undefined;
|
|
4215
|
+
/** What screen readers hear when a held row is put back, or a move is
|
|
4216
|
+
refused, with `reorderable-rows`. */
|
|
4217
|
+
canceledLabel?: (HelixHeadlessDataTable["canceledLabel"]) | undefined;
|
|
3957
4218
|
/** The field that holds a row's child rows, as an array. Set it, and `row-key`,
|
|
3958
4219
|
and the grid becomes a tree grid.
|
|
3959
4220
|
|
|
@@ -3998,10 +4259,14 @@ is set. */
|
|
|
3998
4259
|
"default-sort"?: (HelixHeadlessDataTable["defaultSort"]) | undefined;
|
|
3999
4260
|
/** The starting sort order, used until `sort` is set. */
|
|
4000
4261
|
defaultSort?: (HelixHeadlessDataTable["defaultSort"]) | undefined;
|
|
4001
|
-
/** The word for a descending sort, in `sorted-label`. */
|
|
4262
|
+
/** The word for a descending sort, in a `sorted-label` that writes `{order}`. */
|
|
4002
4263
|
"descending-label"?: (HelixHeadlessDataTable["descendingLabel"]) | undefined;
|
|
4003
|
-
/** The word for a descending sort, in `sorted-label`. */
|
|
4264
|
+
/** The word for a descending sort, in a `sorted-label` that writes `{order}`. */
|
|
4004
4265
|
descendingLabel?: (HelixHeadlessDataTable["descendingLabel"]) | undefined;
|
|
4266
|
+
/** What screen readers hear when a row is dropped, with `reorderable-rows`. */
|
|
4267
|
+
"dropped-label"?: (HelixHeadlessDataTable["droppedLabel"]) | undefined;
|
|
4268
|
+
/** What screen readers hear when a row is dropped, with `reorderable-rows`. */
|
|
4269
|
+
droppedLabel?: (HelixHeadlessDataTable["droppedLabel"]) | undefined;
|
|
4005
4270
|
/** The estimated height of a row before it is drawn, in pixels.
|
|
4006
4271
|
|
|
4007
4272
|
Only read while `windowed`, and a starting guess rather than a claim: a
|
|
@@ -4043,6 +4308,10 @@ when there are no more rows to load. */
|
|
|
4043
4308
|
"load-more-label"?: (HelixHeadlessDataTable["loadMoreLabel"]) | undefined;
|
|
4044
4309
|
/** The words on the button in the `more` row. */
|
|
4045
4310
|
loadMoreLabel?: (HelixHeadlessDataTable["loadMoreLabel"]) | undefined;
|
|
4311
|
+
/** The locale the words, plural forms, and numbers are in, as a BCP 47 tag
|
|
4312
|
+
such as `pl`. Empty reads the nearest `lang`, then the browser's
|
|
4313
|
+
language. The built-in pagination speaks it too. */
|
|
4314
|
+
locale?: (HelixHeadlessDataTable["locale"]) | undefined;
|
|
4046
4315
|
/** Where filtering, sorting, and paging happen. `client` does them in the
|
|
4047
4316
|
table, and `server` leaves them to your code.
|
|
4048
4317
|
|
|
@@ -4053,6 +4322,20 @@ the client cannot hold the data, so this is not an optimization, it is the
|
|
|
4053
4322
|
only mode that works, and it is here from the start because adding it later
|
|
4054
4323
|
inverts the data flow. */
|
|
4055
4324
|
mode?: (HelixHeadlessDataTable["mode"]) | undefined;
|
|
4325
|
+
/** What screen readers hear each time a key moves a held row, with
|
|
4326
|
+
`reorderable-rows`. `{name}` is the row's name, `{position}` the place it
|
|
4327
|
+
would go, counting from 1, and `{count}` the number of rows on the page. */
|
|
4328
|
+
"moved-label"?: (HelixHeadlessDataTable["movedLabel"]) | undefined;
|
|
4329
|
+
/** What screen readers hear each time a key moves a held row, with
|
|
4330
|
+
`reorderable-rows`. `{name}` is the row's name, `{position}` the place it
|
|
4331
|
+
would go, counting from 1, and `{count}` the number of rows on the page. */
|
|
4332
|
+
movedLabel?: (HelixHeadlessDataTable["movedLabel"]) | undefined;
|
|
4333
|
+
/** The name of a row's grip, with `reorderable-rows`. `{row}` is replaced with
|
|
4334
|
+
the row's name. */
|
|
4335
|
+
"move-row-label"?: (HelixHeadlessDataTable["moveRowLabel"]) | undefined;
|
|
4336
|
+
/** The name of a row's grip, with `reorderable-rows`. `{row}` is replaced with
|
|
4337
|
+
the row's name. */
|
|
4338
|
+
moveRowLabel?: (HelixHeadlessDataTable["moveRowLabel"]) | undefined;
|
|
4056
4339
|
/** The built-in pagination's name for the button that moves forward a page. */
|
|
4057
4340
|
"next-label"?: (HelixHeadlessDataTable["nextLabel"]) | undefined;
|
|
4058
4341
|
/** The built-in pagination's name for the button that moves forward a page. */
|
|
@@ -4104,6 +4387,12 @@ which is why the slot replaces this rather than sitting beside it. */
|
|
|
4104
4387
|
"pagination-label"?: (HelixHeadlessDataTable["paginationLabel"]) | undefined;
|
|
4105
4388
|
/** The name of the built-in pagination's navigation landmark. */
|
|
4106
4389
|
paginationLabel?: (HelixHeadlessDataTable["paginationLabel"]) | undefined;
|
|
4390
|
+
/** What screen readers hear when a key or a click picks up a row, with
|
|
4391
|
+
`reorderable-rows`. `{name}` is the row's name. */
|
|
4392
|
+
"picked-up-label"?: (HelixHeadlessDataTable["pickedUpLabel"]) | undefined;
|
|
4393
|
+
/** What screen readers hear when a key or a click picks up a row, with
|
|
4394
|
+
`reorderable-rows`. `{name}` is the row's name. */
|
|
4395
|
+
pickedUpLabel?: (HelixHeadlessDataTable["pickedUpLabel"]) | undefined;
|
|
4107
4396
|
/** The built-in pagination's name for the button that moves back a page. */
|
|
4108
4397
|
"previous-label"?: (HelixHeadlessDataTable["previousLabel"]) | undefined;
|
|
4109
4398
|
/** The built-in pagination's name for the button that moves back a page. */
|
|
@@ -4113,16 +4402,32 @@ which is why the slot replaces this rather than sitting beside it. */
|
|
|
4113
4402
|
Each heading with a `field` gets a grip, dragged along the header or moved a
|
|
4114
4403
|
place at a time with the arrow keys once it has focus. */
|
|
4115
4404
|
reorderable?: (HelixHeadlessDataTable["reorderable"]) | undefined;
|
|
4116
|
-
/**
|
|
4405
|
+
/** Lets people move rows, by a grip that leads each row. The table moves no
|
|
4406
|
+
row itself: set `rows` to the order `helix-reorder` carries. */
|
|
4407
|
+
"reorderable-rows"?: (HelixHeadlessDataTable["reorderableRows"]) | undefined;
|
|
4408
|
+
/** Lets people move rows, by a grip that leads each row. The table moves no
|
|
4409
|
+
row itself: set `rows` to the order `helix-reorder` carries. */
|
|
4410
|
+
reorderableRows?: (HelixHeadlessDataTable["reorderableRows"]) | undefined;
|
|
4411
|
+
/** What screen readers hear when a search leaves one row, where
|
|
4412
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
4117
4413
|
"result-label"?: (HelixHeadlessDataTable["resultLabel"]) | undefined;
|
|
4118
|
-
/** What screen readers hear when a search leaves one row
|
|
4414
|
+
/** What screen readers hear when a search leaves one row, where
|
|
4415
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
4119
4416
|
resultLabel?: (HelixHeadlessDataTable["resultLabel"]) | undefined;
|
|
4120
|
-
/** What screen readers hear when a search
|
|
4121
|
-
|
|
4417
|
+
/** What screen readers hear when a search narrows the rows. `{count}` is how
|
|
4418
|
+
many rows are left, written in the locale, and each language writes the
|
|
4419
|
+
forms it has: `{count, plural, one {# wiersz} few {# wiersze} many
|
|
4420
|
+
{# wierszy} other {# wiersza}}`. */
|
|
4122
4421
|
"results-label"?: (HelixHeadlessDataTable["resultsLabel"]) | undefined;
|
|
4123
|
-
/** What screen readers hear when a search
|
|
4124
|
-
|
|
4422
|
+
/** What screen readers hear when a search narrows the rows. `{count}` is how
|
|
4423
|
+
many rows are left, written in the locale, and each language writes the
|
|
4424
|
+
forms it has: `{count, plural, one {# wiersz} few {# wiersze} many
|
|
4425
|
+
{# wierszy} other {# wiersza}}`. */
|
|
4125
4426
|
resultsLabel?: (HelixHeadlessDataTable["resultsLabel"]) | undefined;
|
|
4427
|
+
/** The name of the heading over the row grips, with `reorderable-rows`. */
|
|
4428
|
+
"row-grips-label"?: (HelixHeadlessDataTable["rowGripsLabel"]) | undefined;
|
|
4429
|
+
/** The name of the heading over the row grips, with `reorderable-rows`. */
|
|
4430
|
+
rowGripsLabel?: (HelixHeadlessDataTable["rowGripsLabel"]) | undefined;
|
|
4126
4431
|
/** The field that identifies each row.
|
|
4127
4432
|
|
|
4128
4433
|
**Needed before selection exists, not after.** Lit keys the rendered rows by
|
|
@@ -4167,10 +4472,14 @@ price of the shape. A reader's choice fires `helix-select` first, and
|
|
|
4167
4472
|
refusing it leaves the selection as it was. */
|
|
4168
4473
|
selected?: (HelixHeadlessDataTable["selected"]) | undefined;
|
|
4169
4474
|
/** What screen readers hear when the chosen rows change. `{count}` is how many
|
|
4170
|
-
rows are chosen
|
|
4475
|
+
rows are chosen, written in the locale, and a language that needs plural
|
|
4476
|
+
forms writes them: `{count, plural, one {# wybrany} few {# wybrane} many
|
|
4477
|
+
{# wybranych} other {# wybranego}}`. */
|
|
4171
4478
|
"selected-label"?: (HelixHeadlessDataTable["selectedLabel"]) | undefined;
|
|
4172
4479
|
/** What screen readers hear when the chosen rows change. `{count}` is how many
|
|
4173
|
-
rows are chosen
|
|
4480
|
+
rows are chosen, written in the locale, and a language that needs plural
|
|
4481
|
+
forms writes them: `{count, plural, one {# wybrany} few {# wybrane} many
|
|
4482
|
+
{# wybranych} other {# wybranego}}`. */
|
|
4174
4483
|
selectedLabel?: (HelixHeadlessDataTable["selectedLabel"]) | undefined;
|
|
4175
4484
|
/** The name of a row's checkbox. `{row}` is replaced with the row's value in
|
|
4176
4485
|
the first column that has a field, or with its key. */
|
|
@@ -4186,10 +4495,14 @@ the event and set this to the order you chose. `default-sort` seeds an
|
|
|
4186
4495
|
order this element then owns. */
|
|
4187
4496
|
sort?: (HelixHeadlessDataTable["sort"]) | undefined;
|
|
4188
4497
|
/** What screen readers hear when the table is sorted. `{column}` is the
|
|
4189
|
-
column's heading and `{
|
|
4498
|
+
column's heading and `{direction}` is `ascending` or `descending`, so each
|
|
4499
|
+
order has its whole sentence. `{order}` is the deprecated
|
|
4500
|
+
`ascending-label` or `descending-label`. */
|
|
4190
4501
|
"sorted-label"?: (HelixHeadlessDataTable["sortedLabel"]) | undefined;
|
|
4191
4502
|
/** What screen readers hear when the table is sorted. `{column}` is the
|
|
4192
|
-
column's heading and `{
|
|
4503
|
+
column's heading and `{direction}` is `ascending` or `descending`, so each
|
|
4504
|
+
order has its whole sentence. `{order}` is the deprecated
|
|
4505
|
+
`ascending-label` or `descending-label`. */
|
|
4193
4506
|
sortedLabel?: (HelixHeadlessDataTable["sortedLabel"]) | undefined;
|
|
4194
4507
|
/** The number of rows in the whole result, for when the table cannot count
|
|
4195
4508
|
them.
|
|
@@ -4250,6 +4563,8 @@ holds and reordering it under them is a mutation they did not ask for. */
|
|
|
4250
4563
|
export type HelixHeadlessDataTableVueEvents = {
|
|
4251
4564
|
/** Fired after the page changes, with the new page as a string in `detail.value`. */
|
|
4252
4565
|
"helix-activate": HelixHeadlessDataTableHelixActivateElementEvent;
|
|
4566
|
+
/** A row is about to move, with `reorderable-rows`. The event carries every row's key in the new order. Cancelable: cancel it to keep the row where it is. */
|
|
4567
|
+
"helix-before-reorder": HelixHeadlessDataTableHelixBeforeReorderElementEvent;
|
|
4253
4568
|
/** Fired after a row opens or closes, with every open row's key, separated by commas, which `expanded` also holds. */
|
|
4254
4569
|
"helix-expand": HelixHeadlessDataTableHelixExpandElementEvent;
|
|
4255
4570
|
/** The search query is about to change. Cancelable: cancel it to keep the current query. */
|
|
@@ -4260,7 +4575,7 @@ export type HelixHeadlessDataTableVueEvents = {
|
|
|
4260
4575
|
"helix-load-more": HelixHeadlessDataTableHelixLoadMoreElementEvent;
|
|
4261
4576
|
/** Another page was requested. Cancelable: cancel it to stay on the current page. */
|
|
4262
4577
|
"helix-navigate": HelixHeadlessDataTableHelixNavigateElementEvent;
|
|
4263
|
-
/** The columns are about to move
|
|
4578
|
+
/** The columns are about to move, with `kind` set to `column` and every field in the new order. Cancelable: cancel it to keep the current order. For a row, with `kind` set to `row`, it follows `helix-before-reorder`, and you set `rows` to the order in `keys`. */
|
|
4264
4579
|
"helix-reorder": HelixHeadlessDataTableHelixReorderElementEvent;
|
|
4265
4580
|
/** Fired after the columns move, with every field in the new order. */
|
|
4266
4581
|
"helix-reordered": HelixHeadlessDataTableHelixReorderedElementEvent;
|
|
@@ -4299,6 +4614,15 @@ Empty leaves the attribute off, which is the browser's default and is what
|
|
|
4299
4614
|
lets autofill work at all: hardcoding `off` here means a birthday or a
|
|
4300
4615
|
postal code can never be filled in for a reader. */
|
|
4301
4616
|
autocomplete?: (HelixHeadlessDateInput["autocomplete"]) | undefined;
|
|
4617
|
+
/** The calendar the written date and the calendar's days are in: `gregory`,
|
|
4618
|
+
`buddhist`, `japanese`, `roc`, or `iso8601`.
|
|
4619
|
+
|
|
4620
|
+
Absent is the locale's own where it is one of the five, and `gregory` for
|
|
4621
|
+
every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
|
|
4622
|
+
every calendar, and a focused field is ISO in every calendar. In
|
|
4623
|
+
`segmented`, the segments are the Gregorian day, month, and year, in the
|
|
4624
|
+
order the locale writes them, or ISO order for `iso8601`. */
|
|
4625
|
+
calendar?: (HelixHeadlessDateInput["calendar"]) | undefined;
|
|
4302
4626
|
/** The name of the calendar's grid of days, read by screen readers. */
|
|
4303
4627
|
"calendar-label"?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
|
|
4304
4628
|
/** The name of the calendar's grid of days, read by screen readers. */
|
|
@@ -4437,14 +4761,14 @@ window has no room for that width it shows one month until there is. */
|
|
|
4437
4761
|
/** The message shown when a range holds more than two dates.
|
|
4438
4762
|
|
|
4439
4763
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
4440
|
-
so a form in another language speaks it.
|
|
4441
|
-
|
|
4764
|
+
so a form in another language speaks it. Unset is the sentence registered
|
|
4765
|
+
for the page's language, then the English. */
|
|
4442
4766
|
"range-length-message"?: (HelixHeadlessDateInput["rangeLengthMessage"]) | undefined;
|
|
4443
4767
|
/** The message shown when a range holds more than two dates.
|
|
4444
4768
|
|
|
4445
4769
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
4446
|
-
so a form in another language speaks it.
|
|
4447
|
-
|
|
4770
|
+
so a form in another language speaks it. Unset is the sentence registered
|
|
4771
|
+
for the page's language, then the English. */
|
|
4448
4772
|
rangeLengthMessage?: (HelixHeadlessDateInput["rangeLengthMessage"]) | undefined;
|
|
4449
4773
|
/** The message shown when a date is after `max`. `{max}` is replaced with
|
|
4450
4774
|
`max`, written the way the field writes dates. */
|
|
@@ -4495,12 +4819,28 @@ platform's base. */
|
|
|
4495
4819
|
/** The name of the calendar's heading where it shows a page of years, with
|
|
4496
4820
|
`{heading}` filled in. */
|
|
4497
4821
|
yearViewLabel?: (HelixHeadlessDateInput["yearViewLabel"]) | undefined;
|
|
4822
|
+
/** What a row of segments reports when the field is required and every
|
|
4823
|
+
segment is empty, where `value-missing-message` is not set. `{kind}` is
|
|
4824
|
+
`date` or `time`. */
|
|
4825
|
+
"empty-message"?: (HelixHeadlessDateInput["emptyMessage"]) | undefined;
|
|
4826
|
+
/** What a row of segments reports when the field is required and every
|
|
4827
|
+
segment is empty, where `value-missing-message` is not set. `{kind}` is
|
|
4828
|
+
`date` or `time`. */
|
|
4829
|
+
emptyMessage?: (HelixHeadlessDateInput["emptyMessage"]) | undefined;
|
|
4498
4830
|
/** What a screen reader hears for a segment with nothing in it, which a
|
|
4499
4831
|
sighted reader sees as dashes. */
|
|
4500
4832
|
"empty-segment-label"?: (HelixHeadlessDateInput["emptySegmentLabel"]) | undefined;
|
|
4501
4833
|
/** What a screen reader hears for a segment with nothing in it, which a
|
|
4502
4834
|
sighted reader sees as dashes. */
|
|
4503
4835
|
emptySegmentLabel?: (HelixHeadlessDateInput["emptySegmentLabel"]) | undefined;
|
|
4836
|
+
/** What a row of segments reports while some segments are set and others
|
|
4837
|
+
are not, where `bad-input-message` is not set. `{kind}` is `date` or
|
|
4838
|
+
`time`. */
|
|
4839
|
+
"incomplete-message"?: (HelixHeadlessDateInput["incompleteMessage"]) | undefined;
|
|
4840
|
+
/** What a row of segments reports while some segments are set and others
|
|
4841
|
+
are not, where `bad-input-message` is not set. `{kind}` is `date` or
|
|
4842
|
+
`time`. */
|
|
4843
|
+
incompleteMessage?: (HelixHeadlessDateInput["incompleteMessage"]) | undefined;
|
|
4504
4844
|
/** Whether the field is a row of segments, one for each part of the date or
|
|
4505
4845
|
time, in place of a line of text.
|
|
4506
4846
|
|
|
@@ -4582,6 +4922,12 @@ as `+3`, does not say what it does. */
|
|
|
4582
4922
|
"max-tags"?: (HelixHeadlessDateInput["maxTags"] | `${number}`) | undefined;
|
|
4583
4923
|
/** How many tokens to show before the rest become a count. */
|
|
4584
4924
|
maxTags?: (HelixHeadlessDateInput["maxTags"]) | undefined;
|
|
4925
|
+
/** The count of the tokens past `max-tags`, as it is shown, with `{count}`
|
|
4926
|
+
for the number, written in the element's locale. */
|
|
4927
|
+
"rest-text"?: (HelixHeadlessDateInput["restText"]) | undefined;
|
|
4928
|
+
/** The count of the tokens past `max-tags`, as it is shown, with `{count}`
|
|
4929
|
+
for the number, written in the element's locale. */
|
|
4930
|
+
restText?: (HelixHeadlessDateInput["restText"]) | undefined;
|
|
4585
4931
|
/** The value the control starts with. A form reset returns it to this value,
|
|
4586
4932
|
and to the `value` attribute where this one is not written, as a native
|
|
4587
4933
|
control resets to the `value` it declares. */
|
|
@@ -4611,18 +4957,22 @@ browser's message. */
|
|
|
4611
4957
|
required?: (HelixHeadlessDateInput["required"]) | undefined;
|
|
4612
4958
|
/** The message shown when the field is required and empty.
|
|
4613
4959
|
|
|
4614
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
4615
|
-
set and the browser's own on a text field, which the
|
|
4616
|
-
the reader's language.
|
|
4960
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
4961
|
+
continue." on a set and the browser's own on a text field, which the
|
|
4962
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
4963
|
+
own declares it as this property's English, a word property a page
|
|
4964
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
4617
4965
|
and this one was the English a form in another language still spoke in
|
|
4618
4966
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
4619
4967
|
the field and does not reach that one. */
|
|
4620
4968
|
"value-missing-message"?: (HelixHeadlessDateInput["valueMissingMessage"]) | undefined;
|
|
4621
4969
|
/** The message shown when the field is required and empty.
|
|
4622
4970
|
|
|
4623
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
4624
|
-
set and the browser's own on a text field, which the
|
|
4625
|
-
the reader's language.
|
|
4971
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
4972
|
+
continue." on a set and the browser's own on a text field, which the
|
|
4973
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
4974
|
+
own declares it as this property's English, a word property a page
|
|
4975
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
4626
4976
|
and this one was the English a form in another language still spoke in
|
|
4627
4977
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
4628
4978
|
the field and does not reach that one. */
|
|
@@ -4709,14 +5059,28 @@ export type HelixHeadlessDatePickerVueProps = {
|
|
|
4709
5059
|
|
|
4710
5060
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
4711
5061
|
named for the validity flag it reports, so a form in another language
|
|
4712
|
-
speaks it.
|
|
5062
|
+
speaks it. Unset is the sentence registered for the page's language, then
|
|
5063
|
+
the English. `{mode}` is `single`, `range` or `multiple`, so each can have
|
|
5064
|
+
its own sentence. */
|
|
4713
5065
|
"bad-input-message"?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
|
|
4714
5066
|
/** The validation message for a value that is not a date.
|
|
4715
5067
|
|
|
4716
5068
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
4717
5069
|
named for the validity flag it reports, so a form in another language
|
|
4718
|
-
speaks it.
|
|
5070
|
+
speaks it. Unset is the sentence registered for the page's language, then
|
|
5071
|
+
the English. `{mode}` is `single`, `range` or `multiple`, so each can have
|
|
5072
|
+
its own sentence. */
|
|
4719
5073
|
badInputMessage?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
|
|
5074
|
+
/** The calendar the heading, the days, and the months are written in:
|
|
5075
|
+
`gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, the five whose
|
|
5076
|
+
months are the Gregorian months.
|
|
5077
|
+
|
|
5078
|
+
Absent is the locale's own where it is one of the five, such as
|
|
5079
|
+
`buddhist` for `th-TH` or `japanese` for `ja-JP-u-ca-japanese`, and
|
|
5080
|
+
`gregory` for every other, such as `persian` for `fa-IR`, so the heading
|
|
5081
|
+
names the Gregorian month the grid shows. The value is `YYYY-MM-DD` in
|
|
5082
|
+
every calendar. */
|
|
5083
|
+
calendar?: (HelixHeadlessDatePicker["calendar"]) | undefined;
|
|
4720
5084
|
/** The month to open on when `month` is not set. */
|
|
4721
5085
|
"default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
|
|
4722
5086
|
/** The month to open on when `month` is not set. */
|
|
@@ -5093,6 +5457,12 @@ interface. */
|
|
|
5093
5457
|
/** The close control's accessible name. Translate it with the rest of your
|
|
5094
5458
|
interface. */
|
|
5095
5459
|
dismissLabel?: (HelixHeadlessDialog["dismissLabel"]) | undefined;
|
|
5460
|
+
/** The dialog's name where nothing names it: no `label`, no heading in the
|
|
5461
|
+
`header` slot, and no `aria-labelledby` on the host. */
|
|
5462
|
+
"fallback-label"?: (HelixHeadlessDialog["fallbackLabel"]) | undefined;
|
|
5463
|
+
/** The dialog's name where nothing names it: no `label`, no heading in the
|
|
5464
|
+
`header` slot, and no `aria-labelledby` on the host. */
|
|
5465
|
+
fallbackLabel?: (HelixHeadlessDialog["fallbackLabel"]) | undefined;
|
|
5096
5466
|
/** Accessible name for the dialog. When it is empty, the heading in the
|
|
5097
5467
|
`header` slot names the dialog. */
|
|
5098
5468
|
label?: (HelixHeadlessDialog["label"]) | undefined;
|
|
@@ -5148,20 +5518,23 @@ export type HelixHeadlessDialogVueEvents = {
|
|
|
5148
5518
|
};
|
|
5149
5519
|
|
|
5150
5520
|
export type HelixHeadlessDividerVueProps = {
|
|
5151
|
-
/** Whether screen readers announce the line as a separator
|
|
5152
|
-
|
|
5153
|
-
|
|
5154
|
-
|
|
5155
|
-
|
|
5156
|
-
|
|
5157
|
-
|
|
5158
|
-
An opt-in, not a `decorative` opt-out, because a boolean attribute cannot
|
|
5159
|
-
be turned off: `decorative="false"` parses as `true`, which would put the
|
|
5160
|
-
quiet default out of reach from HTML and leave it settable only as a
|
|
5161
|
-
property. An opt-in is absent by default, which every reflected property
|
|
5162
|
-
here has to be. */
|
|
5521
|
+
/** Whether screen readers announce the line as a separator, which they now do
|
|
5522
|
+
by default.
|
|
5523
|
+
|
|
5524
|
+
It dates from when the line was decorative by default. It is still read,
|
|
5525
|
+
and it wins over `decorative`, so a divider written with it stays a
|
|
5526
|
+
separator. */
|
|
5163
5527
|
announced?: (HelixHeadlessDivider["announced"]) | undefined;
|
|
5164
|
-
/**
|
|
5528
|
+
/** Takes the line out of the accessibility tree, for a rule that separates
|
|
5529
|
+
nothing: one under a heading, or between the facts of a byline.
|
|
5530
|
+
|
|
5531
|
+
Absent, the line is a separator, as `<hr>` is. Radix Separator's opt-out
|
|
5532
|
+
has the same name. It turns the role off because a boolean attribute that
|
|
5533
|
+
is on by default cannot be turned off from HTML. */
|
|
5534
|
+
decorative?: (HelixHeadlessDivider["decorative"]) | undefined;
|
|
5535
|
+
/** The direction the line runs: `horizontal` or `vertical`.
|
|
5536
|
+
|
|
5537
|
+
Unset is horizontal, or across the toolbar the divider sits in. */
|
|
5165
5538
|
orientation?: (HelixHeadlessDivider["orientation"]) | undefined;
|
|
5166
5539
|
};
|
|
5167
5540
|
|
|
@@ -5249,8 +5622,8 @@ words and is already written. */
|
|
|
5249
5622
|
/** The locale the chart's own numbers are written in: its axis, its
|
|
5250
5623
|
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
5251
5624
|
|
|
5252
|
-
Absent
|
|
5253
|
-
writes them, whatever this says. */
|
|
5625
|
+
Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
5626
|
+
cells are shown as the table writes them, whatever this says. */
|
|
5254
5627
|
locale?: (HelixHeadlessDonutChart["locale"]) | undefined;
|
|
5255
5628
|
/** Where a reading the keys moved to stands among the readings, said after
|
|
5256
5629
|
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
@@ -5321,6 +5694,12 @@ interface. */
|
|
|
5321
5694
|
/** The close control's accessible name. Translate it with the rest of your
|
|
5322
5695
|
interface. */
|
|
5323
5696
|
dismissLabel?: (HelixHeadlessDrawer["dismissLabel"]) | undefined;
|
|
5697
|
+
/** The panel's name where nothing names it: no `label`, no heading in the
|
|
5698
|
+
`header` slot, and no `aria-labelledby` on the host. */
|
|
5699
|
+
"fallback-label"?: (HelixHeadlessDrawer["fallbackLabel"]) | undefined;
|
|
5700
|
+
/** The panel's name where nothing names it: no `label`, no heading in the
|
|
5701
|
+
`header` slot, and no `aria-labelledby` on the host. */
|
|
5702
|
+
fallbackLabel?: (HelixHeadlessDrawer["fallbackLabel"]) | undefined;
|
|
5324
5703
|
/** Accessible name for the panel. When it is empty, the heading in the
|
|
5325
5704
|
`header` slot names the panel. */
|
|
5326
5705
|
label?: (HelixHeadlessDrawer["label"]) | undefined;
|
|
@@ -5536,14 +5915,20 @@ filter is the only check the platform makes and a drop never meets it. */
|
|
|
5536
5915
|
/** What a reader hears when a drop or a paste adds files, with `{names}` and
|
|
5537
5916
|
`{count}` filled in. */
|
|
5538
5917
|
addedText?: (HelixHeadlessFileInput["addedText"]) | undefined;
|
|
5918
|
+
/** A file's size under a kilobyte. `{count}` is how many bytes, written in
|
|
5919
|
+
the locale, and each language writes the forms it has. */
|
|
5920
|
+
"bytes-label"?: (HelixHeadlessFileInput["bytesLabel"]) | undefined;
|
|
5921
|
+
/** A file's size under a kilobyte. `{count}` is how many bytes, written in
|
|
5922
|
+
the locale, and each language writes the forms it has. */
|
|
5923
|
+
bytesLabel?: (HelixHeadlessFileInput["bytesLabel"]) | undefined;
|
|
5539
5924
|
/** Which camera or microphone a mobile picker should offer, if any. */
|
|
5540
5925
|
capture?: (HelixHeadlessFileInput["capture"]) | undefined;
|
|
5541
5926
|
/** Whether the picker chooses a folder, and the field takes every file in
|
|
5542
5927
|
it. The platform's `webkitdirectory`. */
|
|
5543
5928
|
directory?: (HelixHeadlessFileInput["directory"]) | undefined;
|
|
5544
|
-
/**
|
|
5545
|
-
|
|
5546
|
-
|
|
5929
|
+
/** The locale the words, the sizes, and the numbers and lists in sentences
|
|
5930
|
+
are in, as a BCP 47 tag such as `pl`. Empty reads the nearest `lang`, then
|
|
5931
|
+
the browser's language. */
|
|
5547
5932
|
locale?: (HelixHeadlessFileInput["locale"]) | undefined;
|
|
5548
5933
|
/** The most files the field holds, under `multiple`. Files past it are
|
|
5549
5934
|
refused. */
|
|
@@ -5605,18 +5990,22 @@ browser's message. */
|
|
|
5605
5990
|
required?: (HelixHeadlessFileInput["required"]) | undefined;
|
|
5606
5991
|
/** The message shown when the field is required and empty.
|
|
5607
5992
|
|
|
5608
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
5609
|
-
set and the browser's own on a text field, which the
|
|
5610
|
-
the reader's language.
|
|
5993
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
5994
|
+
continue." on a set and the browser's own on a text field, which the
|
|
5995
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
5996
|
+
own declares it as this property's English, a word property a page
|
|
5997
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
5611
5998
|
and this one was the English a form in another language still spoke in
|
|
5612
5999
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
5613
6000
|
the field and does not reach that one. */
|
|
5614
6001
|
"value-missing-message"?: (HelixHeadlessFileInput["valueMissingMessage"]) | undefined;
|
|
5615
6002
|
/** The message shown when the field is required and empty.
|
|
5616
6003
|
|
|
5617
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
5618
|
-
set and the browser's own on a text field, which the
|
|
5619
|
-
the reader's language.
|
|
6004
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
6005
|
+
continue." on a set and the browser's own on a text field, which the
|
|
6006
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
6007
|
+
own declares it as this property's English, a word property a page
|
|
6008
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
5620
6009
|
and this one was the English a form in another language still spoke in
|
|
5621
6010
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
5622
6011
|
the field and does not reach that one. */
|
|
@@ -5682,6 +6071,20 @@ export type HelixHeadlessFilterChipHelixDismissElementEvent =
|
|
|
5682
6071
|
HelixHeadlessFilterChipElementEvent<HelixDismissEvent>;
|
|
5683
6072
|
|
|
5684
6073
|
export type HelixHeadlessFilterChipVueProps = {
|
|
6074
|
+
/** The remove button's name, read by screen readers. The chip's own words
|
|
6075
|
+
follow it, so several chips are told apart.
|
|
6076
|
+
|
|
6077
|
+
"Remove filter" rather than the mixin's "Dismiss", for the reason `Tag`
|
|
6078
|
+
gives its own: taking a filter out of a set is a different act from
|
|
6079
|
+
closing a message. */
|
|
6080
|
+
"dismiss-label"?: (HelixHeadlessFilterChip["dismissLabel"]) | undefined;
|
|
6081
|
+
/** The remove button's name, read by screen readers. The chip's own words
|
|
6082
|
+
follow it, so several chips are told apart.
|
|
6083
|
+
|
|
6084
|
+
"Remove filter" rather than the mixin's "Dismiss", for the reason `Tag`
|
|
6085
|
+
gives its own: taking a filter out of a set is a different act from
|
|
6086
|
+
closing a message. */
|
|
6087
|
+
dismissLabel?: (HelixHeadlessFilterChip["dismissLabel"]) | undefined;
|
|
5685
6088
|
/** The name of the field the filter is on, as shown on the chip.
|
|
5686
6089
|
|
|
5687
6090
|
The slot's fallback rather than the slot's replacement: a consumer who wants
|
|
@@ -5730,20 +6133,6 @@ makes an unusual filter look unusual. */
|
|
|
5730
6133
|
operatorLabel?: (HelixHeadlessFilterChip["operatorLabel"]) | undefined;
|
|
5731
6134
|
/** Whether the element shows a control that dismisses it. */
|
|
5732
6135
|
dismissible?: (HelixHeadlessFilterChip["dismissible"]) | undefined;
|
|
5733
|
-
/** The dismiss control's label, read by screen readers.
|
|
5734
|
-
|
|
5735
|
-
`attribute` is spelled out because Lit lowercases a property name to
|
|
5736
|
-
derive one rather than dash-casing it, so this would otherwise be
|
|
5737
|
-
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
5738
|
-
would catch. */
|
|
5739
|
-
"dismiss-label"?: (HelixHeadlessFilterChip["dismissLabel"]) | undefined;
|
|
5740
|
-
/** The dismiss control's label, read by screen readers.
|
|
5741
|
-
|
|
5742
|
-
`attribute` is spelled out because Lit lowercases a property name to
|
|
5743
|
-
derive one rather than dash-casing it, so this would otherwise be
|
|
5744
|
-
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
5745
|
-
would catch. */
|
|
5746
|
-
dismissLabel?: (HelixHeadlessFilterChip["dismissLabel"]) | undefined;
|
|
5747
6136
|
};
|
|
5748
6137
|
|
|
5749
6138
|
export type HelixHeadlessFilterChipVueEvents = {
|
|
@@ -5893,13 +6282,21 @@ what you slot and you narrow it. */
|
|
|
5893
6282
|
|
|
5894
6283
|
Not a label: it goes when typing starts. */
|
|
5895
6284
|
placeholder?: (HelixHeadlessFilterInput["placeholder"]) | undefined;
|
|
5896
|
-
/** What a reader hears for one suggestion,
|
|
6285
|
+
/** What a reader hears for one suggestion, where `suggestions-label` should
|
|
6286
|
+
not say it. `{count}` is the count. */
|
|
5897
6287
|
"suggestion-label"?: (HelixHeadlessFilterInput["suggestionLabel"]) | undefined;
|
|
5898
|
-
/** What a reader hears for one suggestion,
|
|
6288
|
+
/** What a reader hears for one suggestion, where `suggestions-label` should
|
|
6289
|
+
not say it. `{count}` is the count. */
|
|
5899
6290
|
suggestionLabel?: (HelixHeadlessFilterInput["suggestionLabel"]) | undefined;
|
|
5900
|
-
/** What a reader hears
|
|
6291
|
+
/** What a reader hears as the panel opens on its suggestions. `{count}` is
|
|
6292
|
+
how many, written in the locale, and each language writes the forms it
|
|
6293
|
+
has: `{count, plural, one {# sugestia} few {# sugestie} many {# sugestii}
|
|
6294
|
+
other {# sugestii}}`. */
|
|
5901
6295
|
"suggestions-label"?: (HelixHeadlessFilterInput["suggestionsLabel"]) | undefined;
|
|
5902
|
-
/** What a reader hears
|
|
6296
|
+
/** What a reader hears as the panel opens on its suggestions. `{count}` is
|
|
6297
|
+
how many, written in the locale, and each language writes the forms it
|
|
6298
|
+
has: `{count, plural, one {# sugestia} few {# sugestie} many {# sugestii}
|
|
6299
|
+
other {# sugestii}}`. */
|
|
5903
6300
|
suggestionsLabel?: (HelixHeadlessFilterInput["suggestionsLabel"]) | undefined;
|
|
5904
6301
|
/** Whether the element starts open. Ignored once `open` is written. */
|
|
5905
6302
|
"default-open"?: (HelixHeadlessFilterInput["defaultOpen"]) | undefined;
|
|
@@ -5934,6 +6331,12 @@ as `+3`, does not say what it does. */
|
|
|
5934
6331
|
"max-tags"?: (HelixHeadlessFilterInput["maxTags"] | `${number}`) | undefined;
|
|
5935
6332
|
/** How many tokens to show before the rest become a count. */
|
|
5936
6333
|
maxTags?: (HelixHeadlessFilterInput["maxTags"]) | undefined;
|
|
6334
|
+
/** The count of the tokens past `max-tags`, as it is shown, with `{count}`
|
|
6335
|
+
for the number, written in the element's locale. */
|
|
6336
|
+
"rest-text"?: (HelixHeadlessFilterInput["restText"]) | undefined;
|
|
6337
|
+
/** The count of the tokens past `max-tags`, as it is shown, with `{count}`
|
|
6338
|
+
for the number, written in the element's locale. */
|
|
6339
|
+
restText?: (HelixHeadlessFilterInput["restText"]) | undefined;
|
|
5937
6340
|
/** The value the control starts with. A form reset returns it to this value,
|
|
5938
6341
|
and to the `value` attribute where this one is not written, as a native
|
|
5939
6342
|
control resets to the `value` it declares. */
|
|
@@ -5963,18 +6366,22 @@ browser's message. */
|
|
|
5963
6366
|
required?: (HelixHeadlessFilterInput["required"]) | undefined;
|
|
5964
6367
|
/** The message shown when the field is required and empty.
|
|
5965
6368
|
|
|
5966
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
5967
|
-
set and the browser's own on a text field, which the
|
|
5968
|
-
the reader's language.
|
|
6369
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
6370
|
+
continue." on a set and the browser's own on a text field, which the
|
|
6371
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
6372
|
+
own declares it as this property's English, a word property a page
|
|
6373
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
5969
6374
|
and this one was the English a form in another language still spoke in
|
|
5970
6375
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
5971
6376
|
the field and does not reach that one. */
|
|
5972
6377
|
"value-missing-message"?: (HelixHeadlessFilterInput["valueMissingMessage"]) | undefined;
|
|
5973
6378
|
/** The message shown when the field is required and empty.
|
|
5974
6379
|
|
|
5975
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
5976
|
-
set and the browser's own on a text field, which the
|
|
5977
|
-
the reader's language.
|
|
6380
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
6381
|
+
continue." on a set and the browser's own on a text field, which the
|
|
6382
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
6383
|
+
own declares it as this property's English, a word property a page
|
|
6384
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
5978
6385
|
and this one was the English a form in another language still spoke in
|
|
5979
6386
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
5980
6387
|
the field and does not reach that one. */
|
|
@@ -6029,6 +6436,14 @@ export type HelixHeadlessFilterInputVueEvents = {
|
|
|
6029
6436
|
};
|
|
6030
6437
|
|
|
6031
6438
|
export type HelixHeadlessFormatDateVueProps = {
|
|
6439
|
+
/** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
|
|
6440
|
+
`roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
|
|
6441
|
+
|
|
6442
|
+
Absent is the locale's own where it is one of the five, such as
|
|
6443
|
+
`buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
|
|
6444
|
+
for `fa-IR`, so a date written here reads as the same date a Date Picker
|
|
6445
|
+
beside it shows. */
|
|
6446
|
+
calendar?: (HelixHeadlessFormatDate["calendar"]) | undefined;
|
|
6032
6447
|
/** The timestamp, in any format `Date` can parse.
|
|
6033
6448
|
|
|
6034
6449
|
An ISO string is what an API sends and what `<time datetime>` takes, so it
|
|
@@ -6062,6 +6477,14 @@ few characters and a date is not. */
|
|
|
6062
6477
|
elapsed?: (HelixHeadlessFormatDate["elapsed"]) | undefined;
|
|
6063
6478
|
/** How the era is written, such as AD, where a date is shown. */
|
|
6064
6479
|
era?: (HelixHeadlessFormatDate["era"]) | undefined;
|
|
6480
|
+
/** Draws each field of a date in a part of its own: `weekday`, `day`,
|
|
6481
|
+
`month`, `year`, `era`, `hour`, `minute`, `second`, `day-period` and
|
|
6482
|
+
`time-zone-name`, so `::part(year)` can set the year apart.
|
|
6483
|
+
|
|
6484
|
+
Off by default, which draws the date as one run of text, as Shoelace and
|
|
6485
|
+
Web Awesome do. An `elapsed` or `relative` reading is one phrase either
|
|
6486
|
+
way. */
|
|
6487
|
+
fields?: (HelixHeadlessFormatDate["fields"]) | undefined;
|
|
6065
6488
|
/** Draws an `elapsed` or `relative` reading once and leaves it, where it
|
|
6066
6489
|
would otherwise move on as it goes stale.
|
|
6067
6490
|
|
|
@@ -6170,13 +6593,33 @@ export type HelixHeadlessGraphHelixGraphZoomElementEvent =
|
|
|
6170
6593
|
HelixHeadlessGraphElementEvent<HelixGraphZoomEvent>;
|
|
6171
6594
|
|
|
6172
6595
|
export type HelixHeadlessGraphVueProps = {
|
|
6173
|
-
/**
|
|
6596
|
+
/** The hint shown when the graph, waiting to be pressed with
|
|
6597
|
+
`gestures="activate"`, is scrolled or swiped over. */
|
|
6598
|
+
"activate-hint-label"?: (HelixHeadlessGraph["activateHintLabel"]) | undefined;
|
|
6599
|
+
/** The hint shown when the graph, waiting to be pressed with
|
|
6600
|
+
`gestures="activate"`, is scrolled or swiped over. */
|
|
6601
|
+
activateHintLabel?: (HelixHeadlessGraph["activateHintLabel"]) | undefined;
|
|
6602
|
+
/** The name of the group of controls, read by screen readers, which names
|
|
6603
|
+
what the controls drive rather than the mechanism. */
|
|
6604
|
+
"controls-label"?: (HelixHeadlessGraph["controlsLabel"]) | undefined;
|
|
6605
|
+
/** The name of the group of controls, read by screen readers, which names
|
|
6606
|
+
what the controls drive rather than the mechanism. */
|
|
6607
|
+
controlsLabel?: (HelixHeadlessGraph["controlsLabel"]) | undefined;
|
|
6608
|
+
/** What the list says of how many notes it holds. `{count}` is the count,
|
|
6609
|
+
written in the locale, and each language writes the forms it has. */
|
|
6174
6610
|
"count-label"?: (HelixHeadlessGraph["countLabel"]) | undefined;
|
|
6175
|
-
/** What the list says of
|
|
6611
|
+
/** What the list says of how many notes it holds. `{count}` is the count,
|
|
6612
|
+
written in the locale, and each language writes the forms it has. */
|
|
6176
6613
|
countLabel?: (HelixHeadlessGraph["countLabel"]) | undefined;
|
|
6177
6614
|
/** How many links from the selected note to show, for its local graph. Unset
|
|
6178
6615
|
shows every note. The list holds what the drawing shows. */
|
|
6179
6616
|
depth?: (HelixHeadlessGraph["depth"]) | undefined;
|
|
6617
|
+
/** The graph's name where `label` is empty and the host has no
|
|
6618
|
+
`aria-label`. */
|
|
6619
|
+
"fallback-label"?: (HelixHeadlessGraph["fallbackLabel"]) | undefined;
|
|
6620
|
+
/** The graph's name where `label` is empty and the host has no
|
|
6621
|
+
`aria-label`. */
|
|
6622
|
+
fallbackLabel?: (HelixHeadlessGraph["fallbackLabel"]) | undefined;
|
|
6180
6623
|
/** The graph's name, read by screen readers, such as "Research notes".
|
|
6181
6624
|
Required. */
|
|
6182
6625
|
label?: (HelixHeadlessGraph["label"]) | undefined;
|
|
@@ -6199,6 +6642,22 @@ or hides its notes. Drawn where the notes have two groups or more. */
|
|
|
6199
6642
|
"links-to-label"?: (HelixHeadlessGraph["linksToLabel"]) | undefined;
|
|
6200
6643
|
/** How a note that links to the selected one is described, with `{note}`. */
|
|
6201
6644
|
linksToLabel?: (HelixHeadlessGraph["linksToLabel"]) | undefined;
|
|
6645
|
+
/** What screen readers hear once the drawing has moved down, after `moved()`. */
|
|
6646
|
+
"moved-down-label"?: (HelixHeadlessGraph["movedDownLabel"]) | undefined;
|
|
6647
|
+
/** What screen readers hear once the drawing has moved down, after `moved()`. */
|
|
6648
|
+
movedDownLabel?: (HelixHeadlessGraph["movedDownLabel"]) | undefined;
|
|
6649
|
+
/** What screen readers hear once the drawing has moved left, after `moved()`. */
|
|
6650
|
+
"moved-left-label"?: (HelixHeadlessGraph["movedLeftLabel"]) | undefined;
|
|
6651
|
+
/** What screen readers hear once the drawing has moved left, after `moved()`. */
|
|
6652
|
+
movedLeftLabel?: (HelixHeadlessGraph["movedLeftLabel"]) | undefined;
|
|
6653
|
+
/** What screen readers hear once the drawing has moved right, after `moved()`. */
|
|
6654
|
+
"moved-right-label"?: (HelixHeadlessGraph["movedRightLabel"]) | undefined;
|
|
6655
|
+
/** What screen readers hear once the drawing has moved right, after `moved()`. */
|
|
6656
|
+
movedRightLabel?: (HelixHeadlessGraph["movedRightLabel"]) | undefined;
|
|
6657
|
+
/** What screen readers hear once the drawing has moved up, after `moved()`. */
|
|
6658
|
+
"moved-up-label"?: (HelixHeadlessGraph["movedUpLabel"]) | undefined;
|
|
6659
|
+
/** What screen readers hear once the drawing has moved up, after `moved()`. */
|
|
6660
|
+
movedUpLabel?: (HelixHeadlessGraph["movedUpLabel"]) | undefined;
|
|
6202
6661
|
/** Leaves the search and the list out of the frame, behind a button among
|
|
6203
6662
|
its controls that opens them over the drawing. For a graph shown large,
|
|
6204
6663
|
such as at the top of a page, where the drawing takes the whole frame. */
|
|
@@ -6219,12 +6678,28 @@ such as at the top of a page, where the drawing takes the whole frame. */
|
|
|
6219
6678
|
"selected-label"?: (HelixHeadlessGraph["selectedLabel"]) | undefined;
|
|
6220
6679
|
/** How the selected note is described in the list. */
|
|
6221
6680
|
selectedLabel?: (HelixHeadlessGraph["selectedLabel"]) | undefined;
|
|
6222
|
-
/** The hint shown when
|
|
6223
|
-
|
|
6224
|
-
|
|
6225
|
-
|
|
6226
|
-
|
|
6227
|
-
|
|
6681
|
+
/** The hint shown when one finger swipes over the graph with `gestures="cooperative"`. */
|
|
6682
|
+
"two-finger-hint-label"?: (HelixHeadlessGraph["twoFingerHintLabel"]) | undefined;
|
|
6683
|
+
/** The hint shown when one finger swipes over the graph with `gestures="cooperative"`. */
|
|
6684
|
+
twoFingerHintLabel?: (HelixHeadlessGraph["twoFingerHintLabel"]) | undefined;
|
|
6685
|
+
/** The line shown while the graph, with `gestures="activate"`, has the gestures. */
|
|
6686
|
+
"using-label"?: (HelixHeadlessGraph["usingLabel"]) | undefined;
|
|
6687
|
+
/** The line shown while the graph, with `gestures="activate"`, has the gestures. */
|
|
6688
|
+
usingLabel?: (HelixHeadlessGraph["usingLabel"]) | undefined;
|
|
6689
|
+
/** The hint shown when the wheel scrolls past the graph with
|
|
6690
|
+
`gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
|
|
6691
|
+
"wheel-hint-label"?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
|
|
6692
|
+
/** The hint shown when the wheel scrolls past the graph with
|
|
6693
|
+
`gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
|
|
6694
|
+
wheelHintLabel?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
|
|
6695
|
+
/** What screen readers hear once the drawing has zoomed in, after `moved()`. */
|
|
6696
|
+
"zoomed-in-label"?: (HelixHeadlessGraph["zoomedInLabel"]) | undefined;
|
|
6697
|
+
/** What screen readers hear once the drawing has zoomed in, after `moved()`. */
|
|
6698
|
+
zoomedInLabel?: (HelixHeadlessGraph["zoomedInLabel"]) | undefined;
|
|
6699
|
+
/** What screen readers hear once the drawing has zoomed out, after `moved()`. */
|
|
6700
|
+
"zoomed-out-label"?: (HelixHeadlessGraph["zoomedOutLabel"]) | undefined;
|
|
6701
|
+
/** What screen readers hear once the drawing has zoomed out, after `moved()`. */
|
|
6702
|
+
zoomedOutLabel?: (HelixHeadlessGraph["zoomedOutLabel"]) | undefined;
|
|
6228
6703
|
/** Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
6229
6704
|
`none`. A family can add words of its own.
|
|
6230
6705
|
|
|
@@ -6247,20 +6722,6 @@ of the frame. The
|
|
|
6247
6722
|
stylesheet lays the cluster out by which buttons are in it rather than by
|
|
6248
6723
|
this attribute, so the two defaults need no rule each. */
|
|
6249
6724
|
controls?: (HelixHeadlessGraph["controls"]) | undefined;
|
|
6250
|
-
/** The name of the group of controls, read by screen readers.
|
|
6251
|
-
|
|
6252
|
-
Absent is the family's own name for it, "Map controls" or "Board
|
|
6253
|
-
controls", which names what the controls drive rather than the
|
|
6254
|
-
mechanism. Written here to say it in another language, which every other
|
|
6255
|
-
string this surface speaks already allowed and this one did not. */
|
|
6256
|
-
"controls-label"?: (HelixHeadlessGraph["controlsLabel"]) | undefined;
|
|
6257
|
-
/** The name of the group of controls, read by screen readers.
|
|
6258
|
-
|
|
6259
|
-
Absent is the family's own name for it, "Map controls" or "Board
|
|
6260
|
-
controls", which names what the controls drive rather than the
|
|
6261
|
-
mechanism. Written here to say it in another language, which every other
|
|
6262
|
-
string this surface speaks already allowed and this one did not. */
|
|
6263
|
-
controlsLabel?: (HelixHeadlessGraph["controlsLabel"]) | undefined;
|
|
6264
6725
|
/** Which corner the controls sit in.
|
|
6265
6726
|
|
|
6266
6727
|
**Configurable because there is no safe default**, which is a collision
|
|
@@ -6363,26 +6824,6 @@ at any zoom, and a consumer who wants their own units multiplies by them. */
|
|
|
6363
6824
|
"pan-up-label"?: (HelixHeadlessGraph["panUpLabel"]) | undefined;
|
|
6364
6825
|
/** The pan up button's label. */
|
|
6365
6826
|
panUpLabel?: (HelixHeadlessGraph["panUpLabel"]) | undefined;
|
|
6366
|
-
/** The hint shown when one finger swipes over a surface with
|
|
6367
|
-
`gestures="cooperative"`. Absent is the family's own. */
|
|
6368
|
-
"two-finger-hint-label"?: (HelixHeadlessGraph["twoFingerHintLabel"]) | undefined;
|
|
6369
|
-
/** The hint shown when one finger swipes over a surface with
|
|
6370
|
-
`gestures="cooperative"`. Absent is the family's own. */
|
|
6371
|
-
twoFingerHintLabel?: (HelixHeadlessGraph["twoFingerHintLabel"]) | undefined;
|
|
6372
|
-
/** The line shown while a surface with `gestures="activate"` has the
|
|
6373
|
-
gestures. Absent is the family's own. */
|
|
6374
|
-
"using-label"?: (HelixHeadlessGraph["usingLabel"]) | undefined;
|
|
6375
|
-
/** The line shown while a surface with `gestures="activate"` has the
|
|
6376
|
-
gestures. Absent is the family's own. */
|
|
6377
|
-
usingLabel?: (HelixHeadlessGraph["usingLabel"]) | undefined;
|
|
6378
|
-
/** The hint shown when the wheel scrolls past a surface with
|
|
6379
|
-
`gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
|
|
6380
|
-
elsewhere. Absent is the family's own. */
|
|
6381
|
-
"wheel-hint-label"?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
|
|
6382
|
-
/** The hint shown when the wheel scrolls past a surface with
|
|
6383
|
-
`gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
|
|
6384
|
-
elsewhere. Absent is the family's own. */
|
|
6385
|
-
wheelHintLabel?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
|
|
6386
6827
|
/** The zoom in button's label. */
|
|
6387
6828
|
"zoom-in-label"?: (HelixHeadlessGraph["zoomInLabel"]) | undefined;
|
|
6388
6829
|
/** The zoom in button's label. */
|
|
@@ -6425,7 +6866,7 @@ export type HelixHeadlessGraphVueEvents = {
|
|
|
6425
6866
|
"helix-graph-filter": HelixHeadlessGraphHelixGraphFilterElementEvent;
|
|
6426
6867
|
/** A layout settled, with where it put each note, sent by `laidOut()`. Keep the positions and pass them back as each note's `x` and `y`, and `z` where a renderer draws in three dimensions. */
|
|
6427
6868
|
"helix-graph-layout": HelixHeadlessGraphHelixGraphLayoutElementEvent;
|
|
6428
|
-
/** A pan button or arrow key was pressed. `connectGraph` moves the drawing
|
|
6869
|
+
/** A pan button or arrow key was pressed. `connectGraph` moves the drawing, then calls `moved()`. */
|
|
6429
6870
|
"helix-graph-pan": HelixHeadlessGraphHelixGraphPanElementEvent;
|
|
6430
6871
|
/** The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
|
|
6431
6872
|
"helix-graph-part-change": HelixHeadlessGraphHelixGraphPartChangeElementEvent;
|
|
@@ -6433,7 +6874,7 @@ export type HelixHeadlessGraphVueEvents = {
|
|
|
6433
6874
|
"helix-graph-ready": HelixHeadlessGraphHelixGraphReadyElementEvent;
|
|
6434
6875
|
/** Something passed between two notes, sent by `signal()`. Used by `connectGraph`; pages do not need to listen for it. */
|
|
6435
6876
|
"helix-graph-signal": HelixHeadlessGraphHelixGraphSignalElementEvent;
|
|
6436
|
-
/** A zoom button or key was pressed. `connectGraph` zooms the drawing
|
|
6877
|
+
/** A zoom button or key was pressed. `connectGraph` zooms the drawing, then calls `moved()`. */
|
|
6437
6878
|
"helix-graph-zoom": HelixHeadlessGraphHelixGraphZoomElementEvent;
|
|
6438
6879
|
};
|
|
6439
6880
|
|
|
@@ -6450,9 +6891,11 @@ export type HelixHeadlessHeatmapHelixResizeElementEvent =
|
|
|
6450
6891
|
HelixHeadlessHeatmapElementEvent<HelixResizeEvent>;
|
|
6451
6892
|
|
|
6452
6893
|
export type HelixHeadlessHeatmapVueProps = {
|
|
6453
|
-
/** The
|
|
6894
|
+
/** The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
6895
|
+
`overview-label`. */
|
|
6454
6896
|
"busiest-label"?: (HelixHeadlessHeatmap["busiestLabel"]) | undefined;
|
|
6455
|
-
/** The
|
|
6897
|
+
/** The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
6898
|
+
`overview-label`. */
|
|
6456
6899
|
busiestLabel?: (HelixHeadlessHeatmap["busiestLabel"]) | undefined;
|
|
6457
6900
|
/** Shown when the table has no readings in it.
|
|
6458
6901
|
|
|
@@ -6503,6 +6946,16 @@ plan around.
|
|
|
6503
6946
|
Zero turns the dropping off altogether, which is right for a strip in a
|
|
6504
6947
|
container that cannot get narrow. */
|
|
6505
6948
|
minCell?: (HelixHeadlessHeatmap["minCell"]) | undefined;
|
|
6949
|
+
/** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
6950
|
+
`busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
6951
|
+
and its reading as the table writes it, and `{total}` the total of the
|
|
6952
|
+
readings drawn, written in the locale. */
|
|
6953
|
+
"overview-label"?: (HelixHeadlessHeatmap["overviewLabel"]) | undefined;
|
|
6954
|
+
/** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
6955
|
+
`busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
6956
|
+
and its reading as the table writes it, and `{total}` the total of the
|
|
6957
|
+
readings drawn, written in the locale. */
|
|
6958
|
+
overviewLabel?: (HelixHeadlessHeatmap["overviewLabel"]) | undefined;
|
|
6506
6959
|
/** How many rows the strip has.
|
|
6507
6960
|
|
|
6508
6961
|
`1` is a status strip and `7` is a calendar week, which are the two readings
|
|
@@ -6511,11 +6964,23 @@ calendar heatmap does: a week is a column, so the strip reads along the
|
|
|
6511
6964
|
line in weeks, from the right on a right-to-left page, and top to bottom in
|
|
6512
6965
|
days. */
|
|
6513
6966
|
rows?: (HelixHeadlessHeatmap["rows"]) | undefined;
|
|
6514
|
-
/** What the
|
|
6515
|
-
|
|
6967
|
+
/** What the readout adds for a selected cell, under `selection-mode`, after
|
|
6968
|
+
where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
|
|
6969
|
+
nothing. */
|
|
6970
|
+
"selected-label"?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
|
|
6971
|
+
/** What the readout adds for a selected cell, under `selection-mode`, after
|
|
6972
|
+
where the cell stands: "Day 1: 0 (1 of 14, selected)". Empty adds
|
|
6973
|
+
nothing. */
|
|
6974
|
+
selectedLabel?: (HelixHeadlessHeatmap["selectedLabel"]) | undefined;
|
|
6975
|
+
/** What the `selection` part says after the selection changes. `{count}` is
|
|
6976
|
+
how many cells are selected, written in the locale, and a language that
|
|
6977
|
+
needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
6978
|
+
{# wybrane} many {# wybranych} other {# wybranego}}`. */
|
|
6516
6979
|
"selection-label"?: (HelixHeadlessHeatmap["selectionLabel"]) | undefined;
|
|
6517
|
-
/** What the `selection` part says after the selection changes
|
|
6518
|
-
how many cells are selected
|
|
6980
|
+
/** What the `selection` part says after the selection changes. `{count}` is
|
|
6981
|
+
how many cells are selected, written in the locale, and a language that
|
|
6982
|
+
needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
6983
|
+
{# wybrane} many {# wybranych} other {# wybranego}}`. */
|
|
6519
6984
|
selectionLabel?: (HelixHeadlessHeatmap["selectionLabel"]) | undefined;
|
|
6520
6985
|
/** How many cells a reader can select: `single` or `multiple`.
|
|
6521
6986
|
|
|
@@ -6525,6 +6990,12 @@ Absent selects nothing, and a press or Space does what it did. */
|
|
|
6525
6990
|
|
|
6526
6991
|
Absent selects nothing, and a press or Space does what it did. */
|
|
6527
6992
|
selectionMode?: (HelixHeadlessHeatmap["selectionMode"]) | undefined;
|
|
6993
|
+
/** The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
6994
|
+
table caption. */
|
|
6995
|
+
"strip-label"?: (HelixHeadlessHeatmap["stripLabel"]) | undefined;
|
|
6996
|
+
/** The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
6997
|
+
table caption. */
|
|
6998
|
+
stripLabel?: (HelixHeadlessHeatmap["stripLabel"]) | undefined;
|
|
6528
6999
|
/** Lower bounds for the tone buckets, in the order the tones are given.
|
|
6529
7000
|
|
|
6530
7001
|
`thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
|
|
@@ -6543,9 +7014,11 @@ compare two hues at all. `tones="surface info accent success primary"` for a
|
|
|
6543
7014
|
commit count is five unrelated hues for five amounts, which is confetti with
|
|
6544
7015
|
no order in it. */
|
|
6545
7016
|
tones?: (HelixHeadlessHeatmap["tones"]) | undefined;
|
|
6546
|
-
/** The
|
|
7017
|
+
/** The name the `overview` gives the total of the readings drawn,
|
|
7018
|
+
`{totalLabel}` in `overview-label`. */
|
|
6547
7019
|
"total-label"?: (HelixHeadlessHeatmap["totalLabel"]) | undefined;
|
|
6548
|
-
/** The
|
|
7020
|
+
/** The name the `overview` gives the total of the readings drawn,
|
|
7021
|
+
`{totalLabel}` in `overview-label`. */
|
|
6549
7022
|
totalLabel?: (HelixHeadlessHeatmap["totalLabel"]) | undefined;
|
|
6550
7023
|
/** The selected cells, by the names their rows have in the table, such as
|
|
6551
7024
|
`2026-06-11`, separated by commas.
|
|
@@ -6570,8 +7043,8 @@ words and is already written. */
|
|
|
6570
7043
|
/** The locale the chart's own numbers are written in: its axis, its
|
|
6571
7044
|
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
6572
7045
|
|
|
6573
|
-
Absent
|
|
6574
|
-
writes them, whatever this says. */
|
|
7046
|
+
Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
7047
|
+
cells are shown as the table writes them, whatever this says. */
|
|
6575
7048
|
locale?: (HelixHeadlessHeatmap["locale"]) | undefined;
|
|
6576
7049
|
/** Where a reading the keys moved to stands among the readings, said after
|
|
6577
7050
|
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
@@ -6671,7 +7144,11 @@ not text.
|
|
|
6671
7144
|
|
|
6672
7145
|
Lives here rather than only on `IconButton` so the two share one render.
|
|
6673
7146
|
An icon-only button without it is a control a screen reader announces as
|
|
6674
|
-
"button" and nothing else.
|
|
7147
|
+
"button" and nothing else.
|
|
7148
|
+
|
|
7149
|
+
Undefaulted, so a subclass's own default, such as Copy Button's `Copy`, is
|
|
7150
|
+
the first value its element receives and so the English its words fall
|
|
7151
|
+
back to. */
|
|
6675
7152
|
label?: (HelixHeadlessIconButton["label"]) | undefined;
|
|
6676
7153
|
/** Whether the action the button started is still running.
|
|
6677
7154
|
|
|
@@ -7098,18 +7575,22 @@ browser's message. */
|
|
|
7098
7575
|
required?: (HelixHeadlessInput["required"]) | undefined;
|
|
7099
7576
|
/** The message shown when the field is required and empty.
|
|
7100
7577
|
|
|
7101
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
7102
|
-
set and the browser's own on a text field, which the
|
|
7103
|
-
the reader's language.
|
|
7578
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
7579
|
+
continue." on a set and the browser's own on a text field, which the
|
|
7580
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
7581
|
+
own declares it as this property's English, a word property a page
|
|
7582
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
7104
7583
|
and this one was the English a form in another language still spoke in
|
|
7105
7584
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
7106
7585
|
the field and does not reach that one. */
|
|
7107
7586
|
"value-missing-message"?: (HelixHeadlessInput["valueMissingMessage"]) | undefined;
|
|
7108
7587
|
/** The message shown when the field is required and empty.
|
|
7109
7588
|
|
|
7110
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
7111
|
-
set and the browser's own on a text field, which the
|
|
7112
|
-
the reader's language.
|
|
7589
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
7590
|
+
continue." on a set and the browser's own on a text field, which the
|
|
7591
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
7592
|
+
own declares it as this property's English, a word property a page
|
|
7593
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
7113
7594
|
and this one was the English a form in another language still spoke in
|
|
7114
7595
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
7115
7596
|
the field and does not reach that one. */
|
|
@@ -7384,6 +7865,10 @@ interface. */
|
|
|
7384
7865
|
/** The close control's accessible name. Translate it with the rest of your
|
|
7385
7866
|
interface. */
|
|
7386
7867
|
dismissLabel?: (HelixHeadlessLightbox["dismissLabel"]) | undefined;
|
|
7868
|
+
/** The viewer's name where `label` is empty. */
|
|
7869
|
+
"fallback-label"?: (HelixHeadlessLightbox["fallbackLabel"]) | undefined;
|
|
7870
|
+
/** The viewer's name where `label` is empty. */
|
|
7871
|
+
fallbackLabel?: (HelixHeadlessLightbox["fallbackLabel"]) | undefined;
|
|
7387
7872
|
/** How long the user can be idle before the header and footer hide, in
|
|
7388
7873
|
milliseconds.
|
|
7389
7874
|
|
|
@@ -7417,10 +7902,10 @@ keep the chrome up is the consumer's to decide with this. */
|
|
|
7417
7902
|
/** The previous control's accessible name. */
|
|
7418
7903
|
previousLabel?: (HelixHeadlessLightbox["previousLabel"]) | undefined;
|
|
7419
7904
|
/** The name of an item with no `label` of its own, with `{index}` and
|
|
7420
|
-
`{count}` filled in. */
|
|
7905
|
+
`{count}` filled in, written in the locale. */
|
|
7421
7906
|
"slide-label"?: (HelixHeadlessLightbox["slideLabel"]) | undefined;
|
|
7422
7907
|
/** The name of an item with no `label` of its own, with `{index}` and
|
|
7423
|
-
`{count}` filled in. */
|
|
7908
|
+
`{count}` filled in, written in the locale. */
|
|
7424
7909
|
slideLabel?: (HelixHeadlessLightbox["slideLabel"]) | undefined;
|
|
7425
7910
|
/** The word screen readers announce in place of an item's role, set as
|
|
7426
7911
|
`aria-roledescription`. Translate it with the rest of your text, or empty
|
|
@@ -7431,14 +7916,14 @@ it to leave the role as `group`. */
|
|
|
7431
7916
|
it to leave the role as `group`. */
|
|
7432
7917
|
slideRoleLabel?: (HelixHeadlessLightbox["slideRoleLabel"]) | undefined;
|
|
7433
7918
|
/** The status text that says which item is shown, with `{index}`, `{count}`
|
|
7434
|
-
and the item's `{label}` filled in.
|
|
7919
|
+
and the item's `{label}` filled in, the numbers written in the locale.
|
|
7435
7920
|
|
|
7436
7921
|
Announced rather than only drawn, because the picture changing under a
|
|
7437
7922
|
reader who cannot see it is otherwise silent. A consumer who has their own
|
|
7438
7923
|
counter in the chrome can empty this and say it themselves. */
|
|
7439
7924
|
"status-label"?: (HelixHeadlessLightbox["statusLabel"]) | undefined;
|
|
7440
7925
|
/** The status text that says which item is shown, with `{index}`, `{count}`
|
|
7441
|
-
and the item's `{label}` filled in.
|
|
7926
|
+
and the item's `{label}` filled in, the numbers written in the locale.
|
|
7442
7927
|
|
|
7443
7928
|
Announced rather than only drawn, because the picture changing under a
|
|
7444
7929
|
reader who cannot see it is otherwise silent. A consumer who has their own
|
|
@@ -7452,11 +7937,17 @@ counter in the chrome can empty this and say it themselves. */
|
|
|
7452
7937
|
"zoom-out-label"?: (HelixHeadlessLightbox["zoomOutLabel"]) | undefined;
|
|
7453
7938
|
/** The zoom-out control's accessible name. */
|
|
7454
7939
|
zoomOutLabel?: (HelixHeadlessLightbox["zoomOutLabel"]) | undefined;
|
|
7455
|
-
/** What the live region says once a reader has stopped zooming,
|
|
7456
|
-
|
|
7940
|
+
/** What the live region says once a reader has stopped zooming. `{scale,
|
|
7941
|
+
number, percent}` writes the scale as a percentage the way the locale
|
|
7942
|
+
writes one, such as `150%`, or `150 %` in French. `{percent}` is the same
|
|
7943
|
+
scale as a whole number, for a sentence that places the sign itself. Empty
|
|
7944
|
+
it to say nothing. */
|
|
7457
7945
|
"zoom-status-label"?: (HelixHeadlessLightbox["zoomStatusLabel"]) | undefined;
|
|
7458
|
-
/** What the live region says once a reader has stopped zooming,
|
|
7459
|
-
|
|
7946
|
+
/** What the live region says once a reader has stopped zooming. `{scale,
|
|
7947
|
+
number, percent}` writes the scale as a percentage the way the locale
|
|
7948
|
+
writes one, such as `150%`, or `150 %` in French. `{percent}` is the same
|
|
7949
|
+
scale as a whole number, for a sentence that places the sign itself. Empty
|
|
7950
|
+
it to say nothing. */
|
|
7460
7951
|
zoomStatusLabel?: (HelixHeadlessLightbox["zoomStatusLabel"]) | undefined;
|
|
7461
7952
|
/** The `value` of the current item.
|
|
7462
7953
|
|
|
@@ -7634,8 +8125,8 @@ words and is already written. */
|
|
|
7634
8125
|
/** The locale the chart's own numbers are written in: its axis, its
|
|
7635
8126
|
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
7636
8127
|
|
|
7637
|
-
Absent
|
|
7638
|
-
writes them, whatever this says. */
|
|
8128
|
+
Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
8129
|
+
cells are shown as the table writes them, whatever this says. */
|
|
7639
8130
|
locale?: (HelixHeadlessLineChart["locale"]) | undefined;
|
|
7640
8131
|
/** Where a reading the keys moved to stands among the readings, said after
|
|
7641
8132
|
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
@@ -7699,6 +8190,14 @@ Written by a list with `selection-mode` on every row it holds, and unset
|
|
|
7699
8190
|
otherwise, which is how a row knows it is a row of a grid. No attribute:
|
|
7700
8191
|
it is coordination between elements, as `Tag.focusable` is. */
|
|
7701
8192
|
focusable?: (HelixHeadlessListItem["focusable"]) | undefined;
|
|
8193
|
+
/** The name of the row's grip, written by a `reorderable` list from its
|
|
8194
|
+
`move-label`, and unset in a list that does not reorder, which draws no
|
|
8195
|
+
grip. No attribute: it is coordination between elements, as `focusable`
|
|
8196
|
+
is. */
|
|
8197
|
+
grip?: (HelixHeadlessListItem["grip"]) | undefined;
|
|
8198
|
+
/** Where the row stands in a move, written by a `reorderable` list: the row
|
|
8199
|
+
being moved, or the one the drop indicator is beside. Unset otherwise. */
|
|
8200
|
+
move?: (HelixHeadlessListItem["move"]) | undefined;
|
|
7702
8201
|
/** Whether the row is selected, in a list that selects.
|
|
7703
8202
|
|
|
7704
8203
|
Written by the list from its own `value`, and unset where nothing can be
|
|
@@ -7722,8 +8221,24 @@ export type HelixHeadlessListHelixActionElementEvent =
|
|
|
7722
8221
|
/** `helix-before-change` event type */
|
|
7723
8222
|
export type HelixHeadlessListHelixBeforeChangeElementEvent =
|
|
7724
8223
|
HelixHeadlessListElementEvent<HelixBeforeChangeEvent>;
|
|
8224
|
+
/** `helix-before-reorder` event type */
|
|
8225
|
+
export type HelixHeadlessListHelixBeforeReorderElementEvent =
|
|
8226
|
+
HelixHeadlessListElementEvent<HelixBeforeReorderEvent>;
|
|
8227
|
+
/** `helix-reorder` event type */
|
|
8228
|
+
export type HelixHeadlessListHelixReorderElementEvent =
|
|
8229
|
+
HelixHeadlessListElementEvent<HelixReorderEvent>;
|
|
7725
8230
|
|
|
7726
8231
|
export type HelixHeadlessListVueProps = {
|
|
8232
|
+
/** What screen readers hear when a held row is put back, or a move is
|
|
8233
|
+
refused, in a `reorderable` list. */
|
|
8234
|
+
"canceled-label"?: (HelixHeadlessList["canceledLabel"]) | undefined;
|
|
8235
|
+
/** What screen readers hear when a held row is put back, or a move is
|
|
8236
|
+
refused, in a `reorderable` list. */
|
|
8237
|
+
canceledLabel?: (HelixHeadlessList["canceledLabel"]) | undefined;
|
|
8238
|
+
/** What screen readers hear when a row is dropped, in a `reorderable` list. */
|
|
8239
|
+
"dropped-label"?: (HelixHeadlessList["droppedLabel"]) | undefined;
|
|
8240
|
+
/** What screen readers hear when a row is dropped, in a `reorderable` list. */
|
|
8241
|
+
droppedLabel?: (HelixHeadlessList["droppedLabel"]) | undefined;
|
|
7727
8242
|
/** The kind of list, which follows from the content.
|
|
7728
8243
|
|
|
7729
8244
|
On the headless tier because it is meaning rather than decoration, the same
|
|
@@ -7747,6 +8262,29 @@ has to survive with the stylesheet turned off.
|
|
|
7747
8262
|
kind?: (HelixHeadlessList["kind"]) | undefined;
|
|
7748
8263
|
/** The list's name, read by screen readers. */
|
|
7749
8264
|
label?: (HelixHeadlessList["label"]) | undefined;
|
|
8265
|
+
/** What screen readers hear each time an arrow key moves a held row, in a
|
|
8266
|
+
`reorderable` list. `{name}` is the row's words, `{position}` the place it
|
|
8267
|
+
would go, counting from 1, and `{count}` the number of rows. */
|
|
8268
|
+
"moved-label"?: (HelixHeadlessList["movedLabel"]) | undefined;
|
|
8269
|
+
/** What screen readers hear each time an arrow key moves a held row, in a
|
|
8270
|
+
`reorderable` list. `{name}` is the row's words, `{position}` the place it
|
|
8271
|
+
would go, counting from 1, and `{count}` the number of rows. */
|
|
8272
|
+
movedLabel?: (HelixHeadlessList["movedLabel"]) | undefined;
|
|
8273
|
+
/** The name of each row's grip, in a `reorderable` list. `{name}` is
|
|
8274
|
+
replaced with the row's words. */
|
|
8275
|
+
"move-label"?: (HelixHeadlessList["moveLabel"]) | undefined;
|
|
8276
|
+
/** The name of each row's grip, in a `reorderable` list. `{name}` is
|
|
8277
|
+
replaced with the row's words. */
|
|
8278
|
+
moveLabel?: (HelixHeadlessList["moveLabel"]) | undefined;
|
|
8279
|
+
/** What screen readers hear when a key or a click picks up a row, in a
|
|
8280
|
+
`reorderable` list. `{name}` is the row's words. */
|
|
8281
|
+
"picked-up-label"?: (HelixHeadlessList["pickedUpLabel"]) | undefined;
|
|
8282
|
+
/** What screen readers hear when a key or a click picks up a row, in a
|
|
8283
|
+
`reorderable` list. `{name}` is the row's words. */
|
|
8284
|
+
pickedUpLabel?: (HelixHeadlessList["pickedUpLabel"]) | undefined;
|
|
8285
|
+
/** Lets you move rows by dragging a grip, or with the keys. The list moves no
|
|
8286
|
+
row itself: you move your data on `helix-reorder`. */
|
|
8287
|
+
reorderable?: (HelixHeadlessList["reorderable"]) | undefined;
|
|
7750
8288
|
/** Numbers an ordered list downward, so the count falls row by row and ends at
|
|
7751
8289
|
its last row, as `<ol reversed>` does. */
|
|
7752
8290
|
reversed?: (HelixHeadlessList["reversed"]) | undefined;
|
|
@@ -7793,6 +8331,10 @@ export type HelixHeadlessListVueEvents = {
|
|
|
7793
8331
|
"helix-action": HelixHeadlessListHelixActionElementEvent;
|
|
7794
8332
|
/** Fired before a press changes which rows are selected, with the `value` it would leave. Cancelable. */
|
|
7795
8333
|
"helix-before-change": HelixHeadlessListHelixBeforeChangeElementEvent;
|
|
8334
|
+
/** Fired when a row is dropped at a new place, in a `reorderable` list, with every row's value in the new order. Cancelable: cancel it to keep the row where it is. */
|
|
8335
|
+
"helix-before-reorder": HelixHeadlessListHelixBeforeReorderElementEvent;
|
|
8336
|
+
/** Fired after `helix-before-reorder` when nobody canceled it. Move your rows to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
|
|
8337
|
+
"helix-reorder": HelixHeadlessListHelixReorderElementEvent;
|
|
7796
8338
|
};
|
|
7797
8339
|
|
|
7798
8340
|
/** `HelixHeadlessListbox` component event */
|
|
@@ -7803,20 +8345,30 @@ export type HelixHeadlessListboxElementEvent<E = Event> = TypedEvent<
|
|
|
7803
8345
|
/** `helix-before-change` event type */
|
|
7804
8346
|
export type HelixHeadlessListboxHelixBeforeChangeElementEvent =
|
|
7805
8347
|
HelixHeadlessListboxElementEvent<HelixBeforeChangeEvent>;
|
|
8348
|
+
/** `helix-before-reorder` event type */
|
|
8349
|
+
export type HelixHeadlessListboxHelixBeforeReorderElementEvent =
|
|
8350
|
+
HelixHeadlessListboxElementEvent<HelixBeforeReorderEvent>;
|
|
7806
8351
|
/** `helix-filter` event type */
|
|
7807
8352
|
export type HelixHeadlessListboxHelixFilterElementEvent =
|
|
7808
8353
|
HelixHeadlessListboxElementEvent<HelixFilterEvent>;
|
|
7809
8354
|
/** `helix-load-more` event type */
|
|
7810
8355
|
export type HelixHeadlessListboxHelixLoadMoreElementEvent =
|
|
7811
8356
|
HelixHeadlessListboxElementEvent<HelixLoadMoreEvent>;
|
|
8357
|
+
/** `helix-reorder` event type */
|
|
8358
|
+
export type HelixHeadlessListboxHelixReorderElementEvent =
|
|
8359
|
+
HelixHeadlessListboxElementEvent<HelixReorderEvent>;
|
|
7812
8360
|
|
|
7813
8361
|
export type HelixHeadlessListboxVueProps = {
|
|
7814
|
-
/** What
|
|
8362
|
+
/** What a browser's autofill may choose, as a platform token such as
|
|
8363
|
+
`country` or `cc-exp-month`, as a native `<select>` takes it.
|
|
7815
8364
|
|
|
7816
|
-
|
|
7817
|
-
|
|
7818
|
-
|
|
7819
|
-
|
|
8365
|
+
Set, the list draws a hidden native `<select>` with the same options for
|
|
8366
|
+
the browser to fill, as React Aria's `HiddenSelect` does, and a fill
|
|
8367
|
+
chooses the option. `off`, the default, draws none.
|
|
8368
|
+
|
|
8369
|
+
**The filter field is never filled.** It narrows the list rather than
|
|
8370
|
+
collecting a value, so a browser offering it a saved address competes
|
|
8371
|
+
with the reader for the same keystrokes: it is always `off`. */
|
|
7820
8372
|
autocomplete?: (HelixHeadlessListbox["autocomplete"]) | undefined;
|
|
7821
8373
|
/** The filter text the list starts with, when `filter` is not set. */
|
|
7822
8374
|
"default-filter"?: (HelixHeadlessListbox["defaultFilter"]) | undefined;
|
|
@@ -7870,14 +8422,27 @@ act on the list the reader expects. */
|
|
|
7870
8422
|
"filter-label"?: (HelixHeadlessListbox["filterLabel"]) | undefined;
|
|
7871
8423
|
/** Placeholder text for the filter field. */
|
|
7872
8424
|
filterLabel?: (HelixHeadlessListbox["filterLabel"]) | undefined;
|
|
8425
|
+
/** How the options are laid out, which the arrow keys follow: `stack`, one
|
|
8426
|
+
under another, or `grid`, in rows and columns, as React Aria's `ListBox`
|
|
8427
|
+
lays out cards or photos. With `grid`, Up and Down move within a column,
|
|
8428
|
+
and Left and Right along the list, mirrored right to left.
|
|
8429
|
+
|
|
8430
|
+
The columns are the stylesheet's: the styled tier draws them at
|
|
8431
|
+
`--listbox-column-min-inline-size` or wider, and a headless list lays out
|
|
8432
|
+
`::part(items)` as it likes, since the keys read where each option is
|
|
8433
|
+
drawn. A list of `items` stays a stack. Left out, the list is a stack,
|
|
8434
|
+
and the host carries no attribute for it. */
|
|
8435
|
+
layout?: (HelixHeadlessListbox["layout"]) | undefined;
|
|
7873
8436
|
/** What the list says when its options could not be loaded, such as after a
|
|
7874
|
-
request to a server fails. Empty is no error
|
|
8437
|
+
request to a server fails. Empty, null or no attribute is no error, so
|
|
8438
|
+
removing the attribute clears it.
|
|
7875
8439
|
|
|
7876
8440
|
Set, it shows under any options there are, in place of `empty-text` and
|
|
7877
8441
|
`loading-text`, and a screen reader hears it. Clear it when you ask again. */
|
|
7878
8442
|
"load-error"?: (HelixHeadlessListbox["loadError"]) | undefined;
|
|
7879
8443
|
/** What the list says when its options could not be loaded, such as after a
|
|
7880
|
-
request to a server fails. Empty is no error
|
|
8444
|
+
request to a server fails. Empty, null or no attribute is no error, so
|
|
8445
|
+
removing the attribute clears it.
|
|
7881
8446
|
|
|
7882
8447
|
Set, it shows under any options there are, in place of `empty-text` and
|
|
7883
8448
|
`loading-text`, and a screen reader hears it. Clear it when you ask again. */
|
|
@@ -7889,7 +8454,10 @@ By default a single-choice list chooses as the arrows move, as a radio
|
|
|
7889
8454
|
group does. Select and Time Input set this on the list in their panel, so
|
|
7890
8455
|
a reader can move through the options before closing the panel on one. */
|
|
7891
8456
|
manual?: (HelixHeadlessListbox["manual"]) | undefined;
|
|
7892
|
-
/** Whether more than one option can be chosen.
|
|
8457
|
+
/** Whether more than one option can be chosen.
|
|
8458
|
+
|
|
8459
|
+
A press then toggles the option pressed, and Shift with a press adds every
|
|
8460
|
+
option from the one last chosen to it, as React Aria's list does. */
|
|
7893
8461
|
multiple?: (HelixHeadlessListbox["multiple"]) | undefined;
|
|
7894
8462
|
/** The text shown when a filter hides every option of a list that has some.
|
|
7895
8463
|
|
|
@@ -7901,26 +8469,43 @@ matches what you typed" from "there is nothing here". */
|
|
|
7901
8469
|
Absent, the list says `empty-text` in both cases. Set it to tell "nothing
|
|
7902
8470
|
matches what you typed" from "there is nothing here". */
|
|
7903
8471
|
noResultsText?: (HelixHeadlessListbox["noResultsText"]) | undefined;
|
|
7904
|
-
/**
|
|
7905
|
-
|
|
8472
|
+
/** Lets a reader move options, once `@fusion.dev/helix/listbox/reorder` (or
|
|
8473
|
+
`@fusion.dev/helix-headless/listbox/reorder`) is imported: Alt with an
|
|
8474
|
+
arrow moves the highlighted option, and a pointer drags one. The list
|
|
8475
|
+
moves no option itself: you move your options, or your `items`, on
|
|
8476
|
+
`helix-reorder`. Without that import it does nothing, so a list that never
|
|
8477
|
+
moves options carries none of the code. */
|
|
8478
|
+
reorderable?: (HelixHeadlessListbox["reorderable"]) | undefined;
|
|
8479
|
+
/** What a screen reader hears when a filter leaves one option, where
|
|
8480
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
7906
8481
|
"result-label"?: (HelixHeadlessListbox["resultLabel"]) | undefined;
|
|
7907
|
-
/** What a screen reader hears when a filter leaves one option
|
|
7908
|
-
the count. */
|
|
8482
|
+
/** What a screen reader hears when a filter leaves one option, where
|
|
8483
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
7909
8484
|
resultLabel?: (HelixHeadlessListbox["resultLabel"]) | undefined;
|
|
7910
|
-
/** What a screen reader hears when a filter
|
|
7911
|
-
options
|
|
7912
|
-
|
|
7913
|
-
|
|
7914
|
-
pair: a language with more forms than two picks the one for its `one` and
|
|
7915
|
-
writes the rest here. */
|
|
8485
|
+
/** What a screen reader hears when a filter narrows the list. `{count}` is
|
|
8486
|
+
how many options are left, written in the locale, and each language
|
|
8487
|
+
writes the forms it has: `{count, plural, one {# wynik} few {# wyniki}
|
|
8488
|
+
many {# wyników} other {# wyniku}}`. */
|
|
7916
8489
|
"results-label"?: (HelixHeadlessListbox["resultsLabel"]) | undefined;
|
|
7917
|
-
/** What a screen reader hears when a filter
|
|
7918
|
-
options
|
|
7919
|
-
|
|
7920
|
-
|
|
7921
|
-
pair: a language with more forms than two picks the one for its `one` and
|
|
7922
|
-
writes the rest here. */
|
|
8490
|
+
/** What a screen reader hears when a filter narrows the list. `{count}` is
|
|
8491
|
+
how many options are left, written in the locale, and each language
|
|
8492
|
+
writes the forms it has: `{count, plural, one {# wynik} few {# wyniki}
|
|
8493
|
+
many {# wyników} other {# wyniku}}`. */
|
|
7923
8494
|
resultsLabel?: (HelixHeadlessListbox["resultsLabel"]) | undefined;
|
|
8495
|
+
/** What VoiceOver hears as the highlight reaches a chosen option from the
|
|
8496
|
+
filter field, on Apple devices. `{name}` is the option's words. */
|
|
8497
|
+
"selected-label"?: (HelixHeadlessListbox["selectedLabel"]) | undefined;
|
|
8498
|
+
/** What VoiceOver hears as the highlight reaches a chosen option from the
|
|
8499
|
+
filter field, on Apple devices. `{name}` is the option's words. */
|
|
8500
|
+
selectedLabel?: (HelixHeadlessListbox["selectedLabel"]) | undefined;
|
|
8501
|
+
/** The message reported when the field is required and no option is chosen.
|
|
8502
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
8503
|
+
locale. */
|
|
8504
|
+
"value-missing-message"?: (HelixHeadlessListbox["valueMissingMessage"]) | undefined;
|
|
8505
|
+
/** The message reported when the field is required and no option is chosen.
|
|
8506
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
8507
|
+
locale. */
|
|
8508
|
+
valueMissingMessage?: (HelixHeadlessListbox["valueMissingMessage"]) | undefined;
|
|
7924
8509
|
/** Whether the rows are still loading.
|
|
7925
8510
|
|
|
7926
8511
|
Reflected, because a stylesheet needs it: the rows that are already there
|
|
@@ -7958,24 +8543,6 @@ browser's message. */
|
|
|
7958
8543
|
label?: (HelixHeadlessListbox["label"]) | undefined;
|
|
7959
8544
|
/** Whether the field needs a value before the form can submit. */
|
|
7960
8545
|
required?: (HelixHeadlessListbox["required"]) | undefined;
|
|
7961
|
-
/** The message shown when the field is required and empty.
|
|
7962
|
-
|
|
7963
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
7964
|
-
set and the browser's own on a text field, which the browser writes in
|
|
7965
|
-
the reader's language. Every other word a control speaks is a property,
|
|
7966
|
-
and this one was the English a form in another language still spoke in
|
|
7967
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
7968
|
-
the field and does not reach that one. */
|
|
7969
|
-
"value-missing-message"?: (HelixHeadlessListbox["valueMissingMessage"]) | undefined;
|
|
7970
|
-
/** The message shown when the field is required and empty.
|
|
7971
|
-
|
|
7972
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
7973
|
-
set and the browser's own on a text field, which the browser writes in
|
|
7974
|
-
the reader's language. Every other word a control speaks is a property,
|
|
7975
|
-
and this one was the English a form in another language still spoke in
|
|
7976
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
7977
|
-
the field and does not reach that one. */
|
|
7978
|
-
valueMissingMessage?: (HelixHeadlessListbox["valueMissingMessage"]) | undefined;
|
|
7979
8546
|
/** Whether the control is disabled and cannot be used.
|
|
7980
8547
|
|
|
7981
8548
|
Reflected, because the styled tier selects on it, and mirrored to
|
|
@@ -8002,6 +8569,23 @@ imperatively later, and nothing is hydrating by then.
|
|
|
8002
8569
|
|
|
8003
8570
|
Here rather than on each control. */
|
|
8004
8571
|
name?: (HelixHeadlessListbox["name"]) | undefined;
|
|
8572
|
+
/** The options as data, for a list too long to draw whole: each a value,
|
|
8573
|
+
which is also its words, or a record with a `value`, a `label` and
|
|
8574
|
+
`disabled`. Set, the list draws only the options in sight, and the ones
|
|
8575
|
+
you write as children are not read.
|
|
8576
|
+
|
|
8577
|
+
**Every option is still reachable.** The keyboard, the typeahead, the
|
|
8578
|
+
filter and the value work over the whole set, and the option the keyboard
|
|
8579
|
+
is on is drawn wherever it is, so a screen reader is told about it. Each
|
|
8580
|
+
drawn option says its place in the set (`aria-posinset`, `aria-setsize`).
|
|
8581
|
+
React Aria virtualizes a `ListBox` with its `Virtualizer`; this is core's
|
|
8582
|
+
`VirtualizeController`.
|
|
8583
|
+
|
|
8584
|
+
**The list needs a height to scroll in**: the styled tier's
|
|
8585
|
+
`--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
|
|
8586
|
+
headless tier. Import the Option family as well, whose elements are drawn.
|
|
8587
|
+
A server sends the list empty, and the options are drawn once it hydrates. */
|
|
8588
|
+
items?: (HelixHeadlessListbox["items"]) | undefined;
|
|
8005
8589
|
/** Which option is chosen, as an index, or `-1` where none is.
|
|
8006
8590
|
|
|
8007
8591
|
`<select>`'s own pair, and this control is what stands in for one. The
|
|
@@ -8020,10 +8604,14 @@ export type HelixHeadlessListboxVueEvents = {
|
|
|
8020
8604
|
change: HelixHeadlessListboxElementEvent;
|
|
8021
8605
|
/** Fired when the value is about to change, and cancelable. */
|
|
8022
8606
|
"helix-before-change": HelixHeadlessListboxHelixBeforeChangeElementEvent;
|
|
8607
|
+
/** Fired when an option is dropped at a new place, in a `reorderable` list with `@fusion.dev/helix/listbox/reorder` imported, with every value in the new order. Cancelable: cancel it to keep the option where it is. */
|
|
8608
|
+
"helix-before-reorder": HelixHeadlessListboxHelixBeforeReorderElementEvent;
|
|
8023
8609
|
/** Fired before the list is filtered, and cancelable. */
|
|
8024
8610
|
"helix-filter": HelixHeadlessListboxHelixFilterElementEvent;
|
|
8025
8611
|
/** Fired once the list is scrolled within a screen of its end, once for each number of options, and not while `loading` is set. Add the next page of options and set `loading` while you fetch it. */
|
|
8026
8612
|
"helix-load-more": HelixHeadlessListboxHelixLoadMoreElementEvent;
|
|
8613
|
+
/** Fired after `helix-before-reorder` when nobody canceled it. Move your options, or your `items`, to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
|
|
8614
|
+
"helix-reorder": HelixHeadlessListboxHelixReorderElementEvent;
|
|
8027
8615
|
/** Fired after the value changes. */
|
|
8028
8616
|
input: HelixHeadlessListboxElementEvent;
|
|
8029
8617
|
};
|
|
@@ -8202,9 +8790,15 @@ export type HelixHeadlessMapMarkerVueProps = {
|
|
|
8202
8790
|
/** Marks the place as passed, such as a stop already visited. The marker is
|
|
8203
8791
|
drawn muted, and its name is followed by `passed-label`. */
|
|
8204
8792
|
passed?: (HelixHeadlessMapMarker["passed"]) | undefined;
|
|
8205
|
-
/**
|
|
8793
|
+
/** What a passed place is called. `{label}` is its name.
|
|
8794
|
+
|
|
8795
|
+
A word without `{label}`, such as `visited`, is written after the name
|
|
8796
|
+
with a comma, as before the sentence held the name. */
|
|
8206
8797
|
"passed-label"?: (HelixHeadlessMapMarker["passedLabel"]) | undefined;
|
|
8207
|
-
/**
|
|
8798
|
+
/** What a passed place is called. `{label}` is its name.
|
|
8799
|
+
|
|
8800
|
+
A word without `{label}`, such as `visited`, is written after the name
|
|
8801
|
+
with a comma, as before the sentence held the name. */
|
|
8208
8802
|
passedLabel?: (HelixHeadlessMapMarker["passedLabel"]) | undefined;
|
|
8209
8803
|
};
|
|
8210
8804
|
|
|
@@ -8393,16 +8987,32 @@ export type HelixHeadlessMapHelixToggleElementEvent =
|
|
|
8393
8987
|
HelixHeadlessMapElementEvent<HelixToggleEvent>;
|
|
8394
8988
|
|
|
8395
8989
|
export type HelixHeadlessMapVueProps = {
|
|
8990
|
+
/** The hint shown when the map, waiting to be pressed with
|
|
8991
|
+
`gestures="activate"`, is scrolled or swiped over. */
|
|
8992
|
+
"activate-hint-label"?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
|
|
8993
|
+
/** The hint shown when the map, waiting to be pressed with
|
|
8994
|
+
`gestures="activate"`, is scrolled or swiped over. */
|
|
8995
|
+
activateHintLabel?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
|
|
8396
8996
|
/** The map's rotation, in degrees clockwise from north. `connectMap` keeps it
|
|
8397
8997
|
current, and the Face north button's needle turns with it. */
|
|
8398
8998
|
bearing?: (HelixHeadlessMap["bearing"]) | undefined;
|
|
8399
8999
|
/** Combines markers that would overlap into one count. Counts split apart as
|
|
8400
9000
|
the map zooms in, and pressing one zooms in to its places. */
|
|
8401
9001
|
cluster?: (HelixHeadlessMap["cluster"]) | undefined;
|
|
9002
|
+
/** The name of the group of controls, read by screen readers, which names
|
|
9003
|
+
what the controls drive rather than the mechanism. */
|
|
9004
|
+
"controls-label"?: (HelixHeadlessMap["controlsLabel"]) | undefined;
|
|
9005
|
+
/** The name of the group of controls, read by screen readers, which names
|
|
9006
|
+
what the controls drive rather than the mechanism. */
|
|
9007
|
+
controlsLabel?: (HelixHeadlessMap["controlsLabel"]) | undefined;
|
|
8402
9008
|
/** The Face north button's label. */
|
|
8403
9009
|
"face-north-label"?: (HelixHeadlessMap["faceNorthLabel"]) | undefined;
|
|
8404
9010
|
/** The Face north button's label. */
|
|
8405
9011
|
faceNorthLabel?: (HelixHeadlessMap["faceNorthLabel"]) | undefined;
|
|
9012
|
+
/** The map's name where `label` is empty and the host has no `aria-label`. */
|
|
9013
|
+
"fallback-label"?: (HelixHeadlessMap["fallbackLabel"]) | undefined;
|
|
9014
|
+
/** The map's name where `label` is empty and the host has no `aria-label`. */
|
|
9015
|
+
fallbackLabel?: (HelixHeadlessMap["fallbackLabel"]) | undefined;
|
|
8406
9016
|
/** What screen readers hear when the map is tilted back to looking straight down. */
|
|
8407
9017
|
"flat-label"?: (HelixHeadlessMap["flatLabel"]) | undefined;
|
|
8408
9018
|
/** What screen readers hear when the map is tilted back to looking straight down. */
|
|
@@ -8473,24 +9083,44 @@ above `0`. */
|
|
|
8473
9083
|
/** The Standard map type's name. */
|
|
8474
9084
|
standardLabel?: (HelixHeadlessMap["standardLabel"]) | undefined;
|
|
8475
9085
|
/** What screen readers hear when the map is tilted. `{degrees}` is the tilt
|
|
8476
|
-
from looking straight down
|
|
9086
|
+
from looking straight down, written in the locale, and each language
|
|
9087
|
+
writes the forms it has. */
|
|
8477
9088
|
"tilted-label"?: (HelixHeadlessMap["tiltedLabel"]) | undefined;
|
|
8478
9089
|
/** What screen readers hear when the map is tilted. `{degrees}` is the tilt
|
|
8479
|
-
from looking straight down
|
|
9090
|
+
from looking straight down, written in the locale, and each language
|
|
9091
|
+
writes the forms it has. */
|
|
8480
9092
|
tiltedLabel?: (HelixHeadlessMap["tiltedLabel"]) | undefined;
|
|
8481
9093
|
/** The 3D button's label. */
|
|
8482
9094
|
"tilt-label"?: (HelixHeadlessMap["tiltLabel"]) | undefined;
|
|
8483
9095
|
/** The 3D button's label. */
|
|
8484
9096
|
tiltLabel?: (HelixHeadlessMap["tiltLabel"]) | undefined;
|
|
8485
9097
|
/** What screen readers hear when the map is turned. `{degrees}` is the way the
|
|
8486
|
-
top of the map faces, clockwise from north
|
|
9098
|
+
top of the map faces, clockwise from north, written in the locale, and
|
|
9099
|
+
each language writes the forms it has. */
|
|
8487
9100
|
"turned-label"?: (HelixHeadlessMap["turnedLabel"]) | undefined;
|
|
8488
9101
|
/** What screen readers hear when the map is turned. `{degrees}` is the way the
|
|
8489
|
-
top of the map faces, clockwise from north
|
|
9102
|
+
top of the map faces, clockwise from north, written in the locale, and
|
|
9103
|
+
each language writes the forms it has. */
|
|
8490
9104
|
turnedLabel?: (HelixHeadlessMap["turnedLabel"]) | undefined;
|
|
8491
|
-
/**
|
|
9105
|
+
/** The hint shown when one finger swipes over the map with `gestures="cooperative"`. */
|
|
9106
|
+
"two-finger-hint-label"?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
|
|
9107
|
+
/** The hint shown when one finger swipes over the map with `gestures="cooperative"`. */
|
|
9108
|
+
twoFingerHintLabel?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
|
|
9109
|
+
/** The line shown while the map, with `gestures="activate"`, has the gestures. */
|
|
9110
|
+
"using-label"?: (HelixHeadlessMap["usingLabel"]) | undefined;
|
|
9111
|
+
/** The line shown while the map, with `gestures="activate"`, has the gestures. */
|
|
9112
|
+
usingLabel?: (HelixHeadlessMap["usingLabel"]) | undefined;
|
|
9113
|
+
/** The hint shown when the wheel scrolls past the map with
|
|
9114
|
+
`gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
|
|
9115
|
+
"wheel-hint-label"?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
|
|
9116
|
+
/** The hint shown when the wheel scrolls past the map with
|
|
9117
|
+
`gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
|
|
9118
|
+
wheelHintLabel?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
|
|
9119
|
+
/** What screen readers hear after a zoom. `{level}` is the zoom level,
|
|
9120
|
+
written in the locale. */
|
|
8492
9121
|
"zoomed-label"?: (HelixHeadlessMap["zoomedLabel"]) | undefined;
|
|
8493
|
-
/** What screen readers hear after a zoom. `{level}` is the zoom level
|
|
9122
|
+
/** What screen readers hear after a zoom. `{level}` is the zoom level,
|
|
9123
|
+
written in the locale. */
|
|
8494
9124
|
zoomedLabel?: (HelixHeadlessMap["zoomedLabel"]) | undefined;
|
|
8495
9125
|
/** How far the map is zoomed, in its renderer's levels. `connectMap` keeps it
|
|
8496
9126
|
current, and the map says it after a zoom. */
|
|
@@ -8498,12 +9128,6 @@ current, and the map says it after a zoom. */
|
|
|
8498
9128
|
/** How far the map is zoomed, in its renderer's levels. `connectMap` keeps it
|
|
8499
9129
|
current, and the map says it after a zoom. */
|
|
8500
9130
|
zoomLevel?: (HelixHeadlessMap["zoomLevel"]) | undefined;
|
|
8501
|
-
/** The hint shown when a surface waiting to be pressed is scrolled or
|
|
8502
|
-
swiped over, with `gestures="activate"`. Absent is the family's own. */
|
|
8503
|
-
"activate-hint-label"?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
|
|
8504
|
-
/** The hint shown when a surface waiting to be pressed is scrolled or
|
|
8505
|
-
swiped over, with `gestures="activate"`. Absent is the family's own. */
|
|
8506
|
-
activateHintLabel?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
|
|
8507
9131
|
/** Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
8508
9132
|
`none`. A family can add words of its own.
|
|
8509
9133
|
|
|
@@ -8526,20 +9150,6 @@ of the frame. The
|
|
|
8526
9150
|
stylesheet lays the cluster out by which buttons are in it rather than by
|
|
8527
9151
|
this attribute, so the two defaults need no rule each. */
|
|
8528
9152
|
controls?: (HelixHeadlessMap["controls"]) | undefined;
|
|
8529
|
-
/** The name of the group of controls, read by screen readers.
|
|
8530
|
-
|
|
8531
|
-
Absent is the family's own name for it, "Map controls" or "Board
|
|
8532
|
-
controls", which names what the controls drive rather than the
|
|
8533
|
-
mechanism. Written here to say it in another language, which every other
|
|
8534
|
-
string this surface speaks already allowed and this one did not. */
|
|
8535
|
-
"controls-label"?: (HelixHeadlessMap["controlsLabel"]) | undefined;
|
|
8536
|
-
/** The name of the group of controls, read by screen readers.
|
|
8537
|
-
|
|
8538
|
-
Absent is the family's own name for it, "Map controls" or "Board
|
|
8539
|
-
controls", which names what the controls drive rather than the
|
|
8540
|
-
mechanism. Written here to say it in another language, which every other
|
|
8541
|
-
string this surface speaks already allowed and this one did not. */
|
|
8542
|
-
controlsLabel?: (HelixHeadlessMap["controlsLabel"]) | undefined;
|
|
8543
9153
|
/** Which corner the controls sit in.
|
|
8544
9154
|
|
|
8545
9155
|
**Configurable because there is no safe default**, which is a collision
|
|
@@ -8642,26 +9252,6 @@ at any zoom, and a consumer who wants their own units multiplies by them. */
|
|
|
8642
9252
|
"pan-up-label"?: (HelixHeadlessMap["panUpLabel"]) | undefined;
|
|
8643
9253
|
/** The pan up button's label. */
|
|
8644
9254
|
panUpLabel?: (HelixHeadlessMap["panUpLabel"]) | undefined;
|
|
8645
|
-
/** The hint shown when one finger swipes over a surface with
|
|
8646
|
-
`gestures="cooperative"`. Absent is the family's own. */
|
|
8647
|
-
"two-finger-hint-label"?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
|
|
8648
|
-
/** The hint shown when one finger swipes over a surface with
|
|
8649
|
-
`gestures="cooperative"`. Absent is the family's own. */
|
|
8650
|
-
twoFingerHintLabel?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
|
|
8651
|
-
/** The line shown while a surface with `gestures="activate"` has the
|
|
8652
|
-
gestures. Absent is the family's own. */
|
|
8653
|
-
"using-label"?: (HelixHeadlessMap["usingLabel"]) | undefined;
|
|
8654
|
-
/** The line shown while a surface with `gestures="activate"` has the
|
|
8655
|
-
gestures. Absent is the family's own. */
|
|
8656
|
-
usingLabel?: (HelixHeadlessMap["usingLabel"]) | undefined;
|
|
8657
|
-
/** The hint shown when the wheel scrolls past a surface with
|
|
8658
|
-
`gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
|
|
8659
|
-
elsewhere. Absent is the family's own. */
|
|
8660
|
-
"wheel-hint-label"?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
|
|
8661
|
-
/** The hint shown when the wheel scrolls past a surface with
|
|
8662
|
-
`gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
|
|
8663
|
-
elsewhere. Absent is the family's own. */
|
|
8664
|
-
wheelHintLabel?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
|
|
8665
9255
|
/** The zoom in button's label. */
|
|
8666
9256
|
"zoom-in-label"?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
|
|
8667
9257
|
/** The zoom in button's label. */
|
|
@@ -9124,12 +9714,16 @@ no reader. */
|
|
|
9124
9714
|
/** The words each band is said with under `live`, by its name, written as
|
|
9125
9715
|
JSON in the attribute: `band-labels='{"poor":"Almost full"}'`.
|
|
9126
9716
|
|
|
9127
|
-
A band left out keeps its default: "Good", "Fair" or "Poor".
|
|
9717
|
+
A band left out keeps its default: "Good", "Fair" or "Poor". Reading the
|
|
9718
|
+
property gives every band's words, yours over the registry's over the
|
|
9719
|
+
English. */
|
|
9128
9720
|
"band-labels"?: (HelixHeadlessMeter["bandLabels"]) | undefined;
|
|
9129
9721
|
/** The words each band is said with under `live`, by its name, written as
|
|
9130
9722
|
JSON in the attribute: `band-labels='{"poor":"Almost full"}'`.
|
|
9131
9723
|
|
|
9132
|
-
A band left out keeps its default: "Good", "Fair" or "Poor".
|
|
9724
|
+
A band left out keeps its default: "Good", "Fair" or "Poor". Reading the
|
|
9725
|
+
property gives every band's words, yours over the registry's over the
|
|
9726
|
+
English. */
|
|
9133
9727
|
bandLabels?: (HelixHeadlessMeter["bandLabels"]) | undefined;
|
|
9134
9728
|
/** `Intl.NumberFormat` options the reading is written with, as React Aria's
|
|
9135
9729
|
Meter and ProgressBar take them: a unit, a currency, or a number of
|
|
@@ -9173,9 +9767,17 @@ For a meter whose value changes while it is on screen. Off by default,
|
|
|
9173
9767
|
because a meter that reads a fixed level has nothing new to say. A meter
|
|
9174
9768
|
with no bands says nothing. */
|
|
9175
9769
|
live?: (HelixHeadlessMeter["live"]) | undefined;
|
|
9176
|
-
/**
|
|
9177
|
-
|
|
9178
|
-
|
|
9770
|
+
/** What `live` says as the reading moves into another band. `{reading}` is
|
|
9771
|
+
the reading as it is shown, and `{band}` the band's words from
|
|
9772
|
+
`band-labels`. */
|
|
9773
|
+
"live-label"?: (HelixHeadlessMeter["liveLabel"]) | undefined;
|
|
9774
|
+
/** What `live` says as the reading moves into another band. `{reading}` is
|
|
9775
|
+
the reading as it is shown, and `{band}` the band's words from
|
|
9776
|
+
`band-labels`. */
|
|
9777
|
+
liveLabel?: (HelixHeadlessMeter["liveLabel"]) | undefined;
|
|
9778
|
+
/** The locale the words and the percentage are in, such as `fr` for `72 %`.
|
|
9779
|
+
|
|
9780
|
+
Absent reads the nearest `lang`, then the runtime's own. */
|
|
9179
9781
|
locale?: (HelixHeadlessMeter["locale"]) | undefined;
|
|
9180
9782
|
/** Top of the low band.
|
|
9181
9783
|
|
|
@@ -9384,14 +9986,22 @@ its place. Translate it with the rest of your interface. */
|
|
|
9384
9986
|
`attribute` is spelled out because Lit lowercases a property name to
|
|
9385
9987
|
derive one rather than dash-casing it, so this would otherwise be
|
|
9386
9988
|
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
9387
|
-
would catch.
|
|
9989
|
+
would catch.
|
|
9990
|
+
|
|
9991
|
+
A word property: register it for a locale under the host's key. A family
|
|
9992
|
+
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
9993
|
+
declares its own English with `@words` above the override. */
|
|
9388
9994
|
"dismiss-label"?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
|
|
9389
9995
|
/** The dismiss control's label, read by screen readers.
|
|
9390
9996
|
|
|
9391
9997
|
`attribute` is spelled out because Lit lowercases a property name to
|
|
9392
9998
|
derive one rather than dash-casing it, so this would otherwise be
|
|
9393
9999
|
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
9394
|
-
would catch.
|
|
10000
|
+
would catch.
|
|
10001
|
+
|
|
10002
|
+
A word property: register it for a locale under the host's key. A family
|
|
10003
|
+
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
10004
|
+
declares its own English with `@words` above the override. */
|
|
9395
10005
|
dismissLabel?: (HelixHeadlessNotification["dismissLabel"]) | undefined;
|
|
9396
10006
|
};
|
|
9397
10007
|
|
|
@@ -9418,8 +10028,26 @@ export type HelixHeadlessNotificationsHelixReadElementEvent =
|
|
|
9418
10028
|
HelixHeadlessNotificationsElementEvent<HelixReadEvent>;
|
|
9419
10029
|
|
|
9420
10030
|
export type HelixHeadlessNotificationsVueProps = {
|
|
10031
|
+
/** The region's name where `label` is empty. */
|
|
10032
|
+
"fallback-label"?: (HelixHeadlessNotifications["fallbackLabel"]) | undefined;
|
|
10033
|
+
/** The region's name where `label` is empty. */
|
|
10034
|
+
fallbackLabel?: (HelixHeadlessNotifications["fallbackLabel"]) | undefined;
|
|
9421
10035
|
/** The feed's name, read by screen readers. */
|
|
9422
10036
|
label?: (HelixHeadlessNotifications["label"]) | undefined;
|
|
10037
|
+
/** What the feed says when a page of it could not be loaded, such as after a
|
|
10038
|
+
request to a server fails. Empty, null or no attribute is no error, so
|
|
10039
|
+
removing the attribute clears it.
|
|
10040
|
+
|
|
10041
|
+
Set, it shows under the rows there are, in place of `empty-text` and
|
|
10042
|
+
`loading-text`, and a screen reader hears it. Clear it when you ask again. */
|
|
10043
|
+
"load-error"?: (HelixHeadlessNotifications["loadError"]) | undefined;
|
|
10044
|
+
/** What the feed says when a page of it could not be loaded, such as after a
|
|
10045
|
+
request to a server fails. Empty, null or no attribute is no error, so
|
|
10046
|
+
removing the attribute clears it.
|
|
10047
|
+
|
|
10048
|
+
Set, it shows under the rows there are, in place of `empty-text` and
|
|
10049
|
+
`loading-text`, and a screen reader hears it. Clear it when you ask again. */
|
|
10050
|
+
loadError?: (HelixHeadlessNotifications["loadError"]) | undefined;
|
|
9423
10051
|
/** Whether to draw a button after the list that asks for the next page, by
|
|
9424
10052
|
sending `helix-load-more`. Take it off once there is nothing more. */
|
|
9425
10053
|
"load-more"?: (HelixHeadlessNotifications["loadMore"]) | undefined;
|
|
@@ -9492,7 +10120,8 @@ number.
|
|
|
9492
10120
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
9493
10121
|
named for the validity flag it reports, so a form in another language
|
|
9494
10122
|
speaks it: `feedback` replaces the message under the field and does not
|
|
9495
|
-
reach the bubble.
|
|
10123
|
+
reach the bubble. Unset is the sentence registered for the page's
|
|
10124
|
+
language, then the English. */
|
|
9496
10125
|
"bad-input-message"?: (HelixHeadlessNumberInput["badInputMessage"]) | undefined;
|
|
9497
10126
|
/** The message the browser shows when the field holds something that is not a
|
|
9498
10127
|
number.
|
|
@@ -9500,7 +10129,8 @@ number.
|
|
|
9500
10129
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
9501
10130
|
named for the validity flag it reports, so a form in another language
|
|
9502
10131
|
speaks it: `feedback` replaces the message under the field and does not
|
|
9503
|
-
reach the bubble.
|
|
10132
|
+
reach the bubble. Unset is the sentence registered for the page's
|
|
10133
|
+
language, then the English. */
|
|
9504
10134
|
badInputMessage?: (HelixHeadlessNumberInput["badInputMessage"]) | undefined;
|
|
9505
10135
|
/** The name of the step down button, read by screen readers. */
|
|
9506
10136
|
"decrement-label"?: (HelixHeadlessNumberInput["decrementLabel"]) | undefined;
|
|
@@ -9558,16 +10188,16 @@ Absent has no floor. */
|
|
|
9558
10188
|
Not a label: it goes when typing starts. */
|
|
9559
10189
|
placeholder?: (HelixHeadlessNumberInput["placeholder"]) | undefined;
|
|
9560
10190
|
/** The message the browser shows when the number is above `max`, with `{max}`
|
|
9561
|
-
filled in. */
|
|
10191
|
+
filled in, written in the locale. */
|
|
9562
10192
|
"range-overflow-message"?: (HelixHeadlessNumberInput["rangeOverflowMessage"]) | undefined;
|
|
9563
10193
|
/** The message the browser shows when the number is above `max`, with `{max}`
|
|
9564
|
-
filled in. */
|
|
10194
|
+
filled in, written in the locale. */
|
|
9565
10195
|
rangeOverflowMessage?: (HelixHeadlessNumberInput["rangeOverflowMessage"]) | undefined;
|
|
9566
10196
|
/** The message the browser shows when the number is below `min`, with `{min}`
|
|
9567
|
-
filled in. */
|
|
10197
|
+
filled in, written in the locale. */
|
|
9568
10198
|
"range-underflow-message"?: (HelixHeadlessNumberInput["rangeUnderflowMessage"]) | undefined;
|
|
9569
10199
|
/** The message the browser shows when the number is below `min`, with `{min}`
|
|
9570
|
-
filled in. */
|
|
10200
|
+
filled in, written in the locale. */
|
|
9571
10201
|
rangeUnderflowMessage?: (HelixHeadlessNumberInput["rangeUnderflowMessage"]) | undefined;
|
|
9572
10202
|
/** Prevents editing. The value is still submitted with the form. */
|
|
9573
10203
|
readonly?: (HelixHeadlessNumberInput["readOnly"]) | undefined;
|
|
@@ -9592,10 +10222,12 @@ showing dollars keeps the cents typed into it. Without `format-options`
|
|
|
9592
10222
|
the grid is whole numbers, as in a native number field. */
|
|
9593
10223
|
step?: (HelixHeadlessNumberInput["step"]) | undefined;
|
|
9594
10224
|
/** The message the browser shows when the number is off the step grid, with
|
|
9595
|
-
`{below}` and `{above}` filled in with the nearest valid values
|
|
10225
|
+
`{below}` and `{above}` filled in with the nearest valid values, written in
|
|
10226
|
+
the locale. */
|
|
9596
10227
|
"step-mismatch-message"?: (HelixHeadlessNumberInput["stepMismatchMessage"]) | undefined;
|
|
9597
10228
|
/** The message the browser shows when the number is off the step grid, with
|
|
9598
|
-
`{below}` and `{above}` filled in with the nearest valid values
|
|
10229
|
+
`{below}` and `{above}` filled in with the nearest valid values, written in
|
|
10230
|
+
the locale. */
|
|
9599
10231
|
stepMismatchMessage?: (HelixHeadlessNumberInput["stepMismatchMessage"]) | undefined;
|
|
9600
10232
|
/** What a screen reader says for the value, with `{value}` filled in, such as
|
|
9601
10233
|
`{value} kilograms`.
|
|
@@ -9644,18 +10276,22 @@ browser's message. */
|
|
|
9644
10276
|
required?: (HelixHeadlessNumberInput["required"]) | undefined;
|
|
9645
10277
|
/** The message shown when the field is required and empty.
|
|
9646
10278
|
|
|
9647
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
9648
|
-
set and the browser's own on a text field, which the
|
|
9649
|
-
the reader's language.
|
|
10279
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
10280
|
+
continue." on a set and the browser's own on a text field, which the
|
|
10281
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
10282
|
+
own declares it as this property's English, a word property a page
|
|
10283
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
9650
10284
|
and this one was the English a form in another language still spoke in
|
|
9651
10285
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
9652
10286
|
the field and does not reach that one. */
|
|
9653
10287
|
"value-missing-message"?: (HelixHeadlessNumberInput["valueMissingMessage"]) | undefined;
|
|
9654
10288
|
/** The message shown when the field is required and empty.
|
|
9655
10289
|
|
|
9656
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
9657
|
-
set and the browser's own on a text field, which the
|
|
9658
|
-
the reader's language.
|
|
10290
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
10291
|
+
continue." on a set and the browser's own on a text field, which the
|
|
10292
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
10293
|
+
own declares it as this property's English, a word property a page
|
|
10294
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
9659
10295
|
and this one was the English a form in another language still spoke in
|
|
9660
10296
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
9661
10297
|
the field and does not reach that one. */
|
|
@@ -9787,21 +10423,33 @@ Read once the document exists, and again whenever this changes. Text that
|
|
|
9787
10423
|
does not parse leaves the inspector empty rather than throwing, since a
|
|
9788
10424
|
page's markup should not take the page down over a comma. */
|
|
9789
10425
|
for?: (HelixHeadlessObjectInspector["for"]) | undefined;
|
|
9790
|
-
/** How an array of one entry counts it
|
|
10426
|
+
/** How an array of one entry counts it, where `items-label` should not say
|
|
10427
|
+
it. `{count}` is the count. */
|
|
9791
10428
|
"item-label"?: (HelixHeadlessObjectInspector["itemLabel"]) | undefined;
|
|
9792
|
-
/** How an array of one entry counts it
|
|
10429
|
+
/** How an array of one entry counts it, where `items-label` should not say
|
|
10430
|
+
it. `{count}` is the count. */
|
|
9793
10431
|
itemLabel?: (HelixHeadlessObjectInspector["itemLabel"]) | undefined;
|
|
9794
|
-
/** How an array
|
|
10432
|
+
/** How an array counts its entries. `{count}` is the count, written in the
|
|
10433
|
+
locale, and each language writes the forms it has: `{count, plural, one
|
|
10434
|
+
{# element} few {# elementy} many {# elementów} other {# elementu}}`. */
|
|
9795
10435
|
"items-label"?: (HelixHeadlessObjectInspector["itemsLabel"]) | undefined;
|
|
9796
|
-
/** How an array
|
|
10436
|
+
/** How an array counts its entries. `{count}` is the count, written in the
|
|
10437
|
+
locale, and each language writes the forms it has: `{count, plural, one
|
|
10438
|
+
{# element} few {# elementy} many {# elementów} other {# elementu}}`. */
|
|
9797
10439
|
itemsLabel?: (HelixHeadlessObjectInspector["itemsLabel"]) | undefined;
|
|
9798
|
-
/** How an object of one key counts it
|
|
10440
|
+
/** How an object of one key counts it, where `keys-label` should not say it.
|
|
10441
|
+
`{count}` is the count. */
|
|
9799
10442
|
"key-label"?: (HelixHeadlessObjectInspector["keyLabel"]) | undefined;
|
|
9800
|
-
/** How an object of one key counts it
|
|
10443
|
+
/** How an object of one key counts it, where `keys-label` should not say it.
|
|
10444
|
+
`{count}` is the count. */
|
|
9801
10445
|
keyLabel?: (HelixHeadlessObjectInspector["keyLabel"]) | undefined;
|
|
9802
|
-
/** How an object
|
|
10446
|
+
/** How an object counts its keys. `{count}` is the count, written in the
|
|
10447
|
+
locale, and each language writes the forms it has: `{count, plural, one
|
|
10448
|
+
{# klucz} few {# klucze} many {# kluczy} other {# klucza}}`. */
|
|
9803
10449
|
"keys-label"?: (HelixHeadlessObjectInspector["keysLabel"]) | undefined;
|
|
9804
|
-
/** How an object
|
|
10450
|
+
/** How an object counts its keys. `{count}` is the count, written in the
|
|
10451
|
+
locale, and each language writes the forms it has: `{count, plural, one
|
|
10452
|
+
{# klucz} few {# klucze} many {# kluczy} other {# klucza}}`. */
|
|
9805
10453
|
keysLabel?: (HelixHeadlessObjectInspector["keysLabel"]) | undefined;
|
|
9806
10454
|
/** Accessible name for the tree, and the text of the header where there is one. */
|
|
9807
10455
|
label?: (HelixHeadlessObjectInspector["label"]) | undefined;
|
|
@@ -9829,15 +10477,21 @@ who set the property. This button is positioned out of the flow and takes no
|
|
|
9829
10477
|
room, so nothing selects on it, and reflection exists so that a selector can
|
|
9830
10478
|
reach a value. */
|
|
9831
10479
|
noCopy?: (HelixHeadlessObjectInspector["noCopy"]) | undefined;
|
|
9832
|
-
/** What a screen reader hears when a filter matches one entry
|
|
10480
|
+
/** What a screen reader hears when a filter matches one entry, where
|
|
10481
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
9833
10482
|
"result-label"?: (HelixHeadlessObjectInspector["resultLabel"]) | undefined;
|
|
9834
|
-
/** What a screen reader hears when a filter matches one entry
|
|
10483
|
+
/** What a screen reader hears when a filter matches one entry, where
|
|
10484
|
+
`results-label` should not say it. `{count}` is the count. */
|
|
9835
10485
|
resultLabel?: (HelixHeadlessObjectInspector["resultLabel"]) | undefined;
|
|
9836
|
-
/** What a screen reader hears when a filter matches
|
|
9837
|
-
|
|
10486
|
+
/** What a screen reader hears when a filter matches entries. `{count}` is
|
|
10487
|
+
how many, written in the locale, and each language writes the forms it
|
|
10488
|
+
has: `{count, plural, one {# wynik} few {# wyniki} many {# wyników}
|
|
10489
|
+
other {# wyniku}}`. */
|
|
9838
10490
|
"results-label"?: (HelixHeadlessObjectInspector["resultsLabel"]) | undefined;
|
|
9839
|
-
/** What a screen reader hears when a filter matches
|
|
9840
|
-
|
|
10491
|
+
/** What a screen reader hears when a filter matches entries. `{count}` is
|
|
10492
|
+
how many, written in the locale, and each language writes the forms it
|
|
10493
|
+
has: `{count, plural, one {# wynik} few {# wyniki} many {# wyników}
|
|
10494
|
+
other {# wyniku}}`. */
|
|
9841
10495
|
resultsLabel?: (HelixHeadlessObjectInspector["resultsLabel"]) | undefined;
|
|
9842
10496
|
/** The tree's accessible name when `label` is empty and the host names it
|
|
9843
10497
|
with neither `aria-label` nor `aria-labelledby`. */
|
|
@@ -10176,7 +10830,8 @@ one, and the back button works without the consumer wiring anything. */
|
|
|
10176
10830
|
"last-label"?: (HelixHeadlessPagination["lastLabel"]) | undefined;
|
|
10177
10831
|
/** Accessible name for the control that jumps to the last page. */
|
|
10178
10832
|
lastLabel?: (HelixHeadlessPagination["lastLabel"]) | undefined;
|
|
10179
|
-
/**
|
|
10833
|
+
/** The locale the words and the page numbers are in, as a BCP 47 tag such as
|
|
10834
|
+
`de`. Empty reads the nearest `lang`, then the browser's language.
|
|
10180
10835
|
|
|
10181
10836
|
The same property the calendar takes, doing the same job one layer down:
|
|
10182
10837
|
the templates make the *words* the consumer's, and this makes the *numbers*
|
|
@@ -10290,9 +10945,8 @@ export type HelixHeadlessPaginationSizeVueProps = {
|
|
|
10290
10945
|
defaultValue?: (HelixHeadlessPaginationSize["defaultValue"]) | undefined;
|
|
10291
10946
|
/** The label beside the control. */
|
|
10292
10947
|
label?: (HelixHeadlessPaginationSize["label"]) | undefined;
|
|
10293
|
-
/**
|
|
10294
|
-
|
|
10295
|
-
Absent uses the runtime's own. */
|
|
10948
|
+
/** The locale the words and the numbers are in, as a BCP 47 tag such as
|
|
10949
|
+
`de`. Empty reads the nearest `lang`, then the browser's language. */
|
|
10296
10950
|
locale?: (HelixHeadlessPaginationSize["locale"]) | undefined;
|
|
10297
10951
|
/** The sizes offered, comma separated.
|
|
10298
10952
|
|
|
@@ -10345,7 +10999,7 @@ export type HelixHeadlessPaginationSizeVueEvents = {
|
|
|
10345
10999
|
|
|
10346
11000
|
export type HelixHeadlessPaginationSummaryVueProps = {
|
|
10347
11001
|
/** The text shown. `{from}`, `{to}`, and `{total}` are replaced with the first
|
|
10348
|
-
item, the last item, and the item count.
|
|
11002
|
+
item, the last item, and the item count, written in the locale.
|
|
10349
11003
|
|
|
10350
11004
|
A template rather than a prefix and a suffix, because word order is not
|
|
10351
11005
|
universal: `format="{total} 件中 {from}-{to} 件"` is one attribute here and
|
|
@@ -10359,9 +11013,8 @@ of the element, so calling it `label` put one word on three jobs inside one
|
|
|
10359
11013
|
family. The root's templates are `pageLabel`, `statusLabel` and `gapLabel`,
|
|
10360
11014
|
which each label something; this labels nothing, it *is* the thing. */
|
|
10361
11015
|
format?: (HelixHeadlessPaginationSummary["format"]) | undefined;
|
|
10362
|
-
/**
|
|
10363
|
-
|
|
10364
|
-
Absent uses the runtime's own. */
|
|
11016
|
+
/** The locale the words and the numbers are in, as a BCP 47 tag such as
|
|
11017
|
+
`de`. Empty reads the nearest `lang`, then the browser's language. */
|
|
10365
11018
|
locale?: (HelixHeadlessPaginationSummary["locale"]) | undefined;
|
|
10366
11019
|
/** The current page, counting from one. */
|
|
10367
11020
|
page?: (HelixHeadlessPaginationSummary["page"]) | undefined;
|
|
@@ -10427,11 +11080,13 @@ a row of boxes. */
|
|
|
10427
11080
|
readonly?: (HelixHeadlessPinInput["readOnly"]) | undefined;
|
|
10428
11081
|
/** Whether the field blocks input. A read-only code still submits its value. */
|
|
10429
11082
|
readOnly?: (HelixHeadlessPinInput["readOnly"]) | undefined;
|
|
10430
|
-
/** The message shown when the code is started and not finished
|
|
10431
|
-
|
|
11083
|
+
/** The message shown when the code is started and not finished. `{length}`
|
|
11084
|
+
is how many characters the code has, written in the locale, and each
|
|
11085
|
+
language writes the forms it has. */
|
|
10432
11086
|
"too-short-message"?: (HelixHeadlessPinInput["tooShortMessage"]) | undefined;
|
|
10433
|
-
/** The message shown when the code is started and not finished
|
|
10434
|
-
|
|
11087
|
+
/** The message shown when the code is started and not finished. `{length}`
|
|
11088
|
+
is how many characters the code has, written in the locale, and each
|
|
11089
|
+
language writes the forms it has. */
|
|
10435
11090
|
tooShortMessage?: (HelixHeadlessPinInput["tooShortMessage"]) | undefined;
|
|
10436
11091
|
/** The characters a box accepts, which also sets the keyboard a phone shows.
|
|
10437
11092
|
|
|
@@ -10482,18 +11137,22 @@ browser's message. */
|
|
|
10482
11137
|
required?: (HelixHeadlessPinInput["required"]) | undefined;
|
|
10483
11138
|
/** The message shown when the field is required and empty.
|
|
10484
11139
|
|
|
10485
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
10486
|
-
set and the browser's own on a text field, which the
|
|
10487
|
-
the reader's language.
|
|
11140
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
11141
|
+
continue." on a set and the browser's own on a text field, which the
|
|
11142
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
11143
|
+
own declares it as this property's English, a word property a page
|
|
11144
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
10488
11145
|
and this one was the English a form in another language still spoke in
|
|
10489
11146
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
10490
11147
|
the field and does not reach that one. */
|
|
10491
11148
|
"value-missing-message"?: (HelixHeadlessPinInput["valueMissingMessage"]) | undefined;
|
|
10492
11149
|
/** The message shown when the field is required and empty.
|
|
10493
11150
|
|
|
10494
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
10495
|
-
set and the browser's own on a text field, which the
|
|
10496
|
-
the reader's language.
|
|
11151
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
11152
|
+
continue." on a set and the browser's own on a text field, which the
|
|
11153
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
11154
|
+
own declares it as this property's English, a word property a page
|
|
11155
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
10497
11156
|
and this one was the English a form in another language still spoke in
|
|
10498
11157
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
10499
11158
|
the field and does not reach that one. */
|
|
@@ -10558,8 +11217,14 @@ export type HelixHeadlessPopoverVueProps = {
|
|
|
10558
11217
|
Off by default, which is the house style: a panel that opens from its
|
|
10559
11218
|
trigger already reads as belonging to it. */
|
|
10560
11219
|
arrow?: (HelixHeadlessPopover["arrow"]) | undefined;
|
|
10561
|
-
/** The panel's name
|
|
10562
|
-
|
|
11220
|
+
/** The panel's name where nothing else names it: no `label`, no heading in
|
|
11221
|
+
the panel, and no `aria-labelledby` on the host. */
|
|
11222
|
+
"fallback-label"?: (HelixHeadlessPopover["fallbackLabel"]) | undefined;
|
|
11223
|
+
/** The panel's name where nothing else names it: no `label`, no heading in
|
|
11224
|
+
the panel, and no `aria-labelledby` on the host. */
|
|
11225
|
+
fallbackLabel?: (HelixHeadlessPopover["fallbackLabel"]) | undefined;
|
|
11226
|
+
/** The panel's name, read by screen readers. Left empty, the first heading in
|
|
11227
|
+
the panel names it, and then `fallback-label`. */
|
|
10563
11228
|
label?: (HelixHeadlessPopover["label"]) | undefined;
|
|
10564
11229
|
/** Keeps `Tab` inside the panel while it is open, marks the panel
|
|
10565
11230
|
`aria-modal`, and hides the rest of the page from screen readers. A press
|
|
@@ -10663,9 +11328,9 @@ place in the layout when the answer arrives and it becomes determinate. */
|
|
|
10663
11328
|
A visible label in the `label` slot names it instead, with the words it
|
|
10664
11329
|
shows, so the name and the label cannot disagree. */
|
|
10665
11330
|
label?: (HelixHeadlessProgress["label"]) | undefined;
|
|
10666
|
-
/** The locale the percentage
|
|
11331
|
+
/** The locale the words and the percentage are in, such as `fr` for `72 %`.
|
|
10667
11332
|
|
|
10668
|
-
Absent
|
|
11333
|
+
Absent reads the nearest `lang`, then the runtime's own. */
|
|
10669
11334
|
locale?: (HelixHeadlessProgress["locale"]) | undefined;
|
|
10670
11335
|
/** The total the work is measured against. */
|
|
10671
11336
|
max?: (HelixHeadlessProgress["max"]) | undefined;
|
|
@@ -10743,11 +11408,17 @@ export type HelixHeadlessQrCodeElementEvent<E = Event> = TypedEvent<
|
|
|
10743
11408
|
>;
|
|
10744
11409
|
|
|
10745
11410
|
export type HelixHeadlessQrCodeVueProps = {
|
|
10746
|
-
/** The
|
|
10747
|
-
|
|
11411
|
+
/** The name of a code with no `label` whose value is a web address.
|
|
11412
|
+
`{code}` is `code-label` and `{address}` the address. */
|
|
11413
|
+
"address-label"?: (HelixHeadlessQrCode["addressLabel"]) | undefined;
|
|
11414
|
+
/** The name of a code with no `label` whose value is a web address.
|
|
11415
|
+
`{code}` is `code-label` and `{address}` the address. */
|
|
11416
|
+
addressLabel?: (HelixHeadlessQrCode["addressLabel"]) | undefined;
|
|
11417
|
+
/** The words a code with no `label` is named by, with its value where the
|
|
11418
|
+
value is a web address, as `address-label` says. */
|
|
10748
11419
|
"code-label"?: (HelixHeadlessQrCode["codeLabel"]) | undefined;
|
|
10749
|
-
/** The words a code with no `label` is named by,
|
|
10750
|
-
|
|
11420
|
+
/** The words a code with no `label` is named by, with its value where the
|
|
11421
|
+
value is a web address, as `address-label` says. */
|
|
10751
11422
|
codeLabel?: (HelixHeadlessQrCode["codeLabel"]) | undefined;
|
|
10752
11423
|
/** The error correction level, which sets how much of the code can be lost
|
|
10753
11424
|
and still scan.
|
|
@@ -10834,6 +11505,14 @@ Home and End move focus between the radios and choose nothing, so a reader
|
|
|
10834
11505
|
can hear every choice, and Tab still reaches the answer. The group says
|
|
10835
11506
|
`aria-readonly`. A script can still set `value`. */
|
|
10836
11507
|
readOnly?: (HelixHeadlessRadioGroup["readOnly"]) | undefined;
|
|
11508
|
+
/** The message reported when the field is required and no option is chosen.
|
|
11509
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
11510
|
+
locale. */
|
|
11511
|
+
"value-missing-message"?: (HelixHeadlessRadioGroup["valueMissingMessage"]) | undefined;
|
|
11512
|
+
/** The message reported when the field is required and no option is chosen.
|
|
11513
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
11514
|
+
locale. */
|
|
11515
|
+
valueMissingMessage?: (HelixHeadlessRadioGroup["valueMissingMessage"]) | undefined;
|
|
10837
11516
|
/** The value the control starts with. A form reset returns it to this value,
|
|
10838
11517
|
and to the `value` attribute where this one is not written, as a native
|
|
10839
11518
|
control resets to the `value` it declares. */
|
|
@@ -10861,24 +11540,6 @@ browser's message. */
|
|
|
10861
11540
|
label?: (HelixHeadlessRadioGroup["label"]) | undefined;
|
|
10862
11541
|
/** Whether the field needs a value before the form can submit. */
|
|
10863
11542
|
required?: (HelixHeadlessRadioGroup["required"]) | undefined;
|
|
10864
|
-
/** The message shown when the field is required and empty.
|
|
10865
|
-
|
|
10866
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
10867
|
-
set and the browser's own on a text field, which the browser writes in
|
|
10868
|
-
the reader's language. Every other word a control speaks is a property,
|
|
10869
|
-
and this one was the English a form in another language still spoke in
|
|
10870
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
10871
|
-
the field and does not reach that one. */
|
|
10872
|
-
"value-missing-message"?: (HelixHeadlessRadioGroup["valueMissingMessage"]) | undefined;
|
|
10873
|
-
/** The message shown when the field is required and empty.
|
|
10874
|
-
|
|
10875
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
10876
|
-
set and the browser's own on a text field, which the browser writes in
|
|
10877
|
-
the reader's language. Every other word a control speaks is a property,
|
|
10878
|
-
and this one was the English a form in another language still spoke in
|
|
10879
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
10880
|
-
the field and does not reach that one. */
|
|
10881
|
-
valueMissingMessage?: (HelixHeadlessRadioGroup["valueMissingMessage"]) | undefined;
|
|
10882
11543
|
/** Whether the control is disabled and cannot be used.
|
|
10883
11544
|
|
|
10884
11545
|
Reflected, because the styled tier selects on it, and mirrored to
|
|
@@ -11064,13 +11725,13 @@ leaving a rating with nothing to press. A property that silently accepts
|
|
|
11064
11725
|
nonsense is the fault this pays off, so neither case is quietly ignored. */
|
|
11065
11726
|
min?: (HelixHeadlessRating["min"]) | undefined;
|
|
11066
11727
|
/** The name of each mark a reader can choose, with `{score}` and `{max}`
|
|
11067
|
-
filled in. Set it to translate "3 out of 5".
|
|
11728
|
+
filled in, written in the locale. Set it to translate "3 out of 5".
|
|
11068
11729
|
|
|
11069
11730
|
Also what a read-only rating says for its score where `value-text` is
|
|
11070
11731
|
empty. */
|
|
11071
11732
|
"option-label"?: (HelixHeadlessRating["optionLabel"]) | undefined;
|
|
11072
11733
|
/** The name of each mark a reader can choose, with `{score}` and `{max}`
|
|
11073
|
-
filled in. Set it to translate "3 out of 5".
|
|
11734
|
+
filled in, written in the locale. Set it to translate "3 out of 5".
|
|
11074
11735
|
|
|
11075
11736
|
Also what a read-only rating says for its score where `value-text` is
|
|
11076
11737
|
empty. */
|
|
@@ -11112,6 +11773,14 @@ reader's own cursor would be worse than no label. */
|
|
|
11112
11773
|
`0.5` is the half star, and it is the reason the value is a number rather
|
|
11113
11774
|
than an index: with halves, five marks are ten answers. */
|
|
11114
11775
|
step?: (HelixHeadlessRating["step"]) | undefined;
|
|
11776
|
+
/** The message reported when the field is required and no rating is chosen.
|
|
11777
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
11778
|
+
locale. */
|
|
11779
|
+
"value-missing-message"?: (HelixHeadlessRating["valueMissingMessage"]) | undefined;
|
|
11780
|
+
/** The message reported when the field is required and no rating is chosen.
|
|
11781
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
11782
|
+
locale. */
|
|
11783
|
+
valueMissingMessage?: (HelixHeadlessRating["valueMissingMessage"]) | undefined;
|
|
11115
11784
|
/** The text screen readers read for the score, in place of "3.5 out of 5".
|
|
11116
11785
|
|
|
11117
11786
|
A rating out of five is one of the few places a screen reader gets a worse
|
|
@@ -11153,24 +11822,6 @@ browser's message. */
|
|
|
11153
11822
|
label?: (HelixHeadlessRating["label"]) | undefined;
|
|
11154
11823
|
/** Whether the field needs a value before the form can submit. */
|
|
11155
11824
|
required?: (HelixHeadlessRating["required"]) | undefined;
|
|
11156
|
-
/** The message shown when the field is required and empty.
|
|
11157
|
-
|
|
11158
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
11159
|
-
set and the browser's own on a text field, which the browser writes in
|
|
11160
|
-
the reader's language. Every other word a control speaks is a property,
|
|
11161
|
-
and this one was the English a form in another language still spoke in
|
|
11162
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
11163
|
-
the field and does not reach that one. */
|
|
11164
|
-
"value-missing-message"?: (HelixHeadlessRating["valueMissingMessage"]) | undefined;
|
|
11165
|
-
/** The message shown when the field is required and empty.
|
|
11166
|
-
|
|
11167
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
11168
|
-
set and the browser's own on a text field, which the browser writes in
|
|
11169
|
-
the reader's language. Every other word a control speaks is a property,
|
|
11170
|
-
and this one was the English a form in another language still spoke in
|
|
11171
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
11172
|
-
the field and does not reach that one. */
|
|
11173
|
-
valueMissingMessage?: (HelixHeadlessRating["valueMissingMessage"]) | undefined;
|
|
11174
11825
|
/** Whether the control is disabled and cannot be used.
|
|
11175
11826
|
|
|
11176
11827
|
Reflected, because the styled tier selects on it, and mirrored to
|
|
@@ -11219,9 +11870,11 @@ export type HelixHeadlessRatingVueEvents = {
|
|
|
11219
11870
|
};
|
|
11220
11871
|
|
|
11221
11872
|
export type HelixHeadlessScatterChartVueProps = {
|
|
11222
|
-
/** The word
|
|
11873
|
+
/** The word for the strength of the relation, `{correlationLabel}` in
|
|
11874
|
+
`series-label`. */
|
|
11223
11875
|
"correlation-label"?: (HelixHeadlessScatterChart["correlationLabel"]) | undefined;
|
|
11224
|
-
/** The word
|
|
11876
|
+
/** The word for the strength of the relation, `{correlationLabel}` in
|
|
11877
|
+
`series-label`. */
|
|
11225
11878
|
correlationLabel?: (HelixHeadlessScatterChart["correlationLabel"]) | undefined;
|
|
11226
11879
|
/** Which gridlines are drawn across the plot, if any.
|
|
11227
11880
|
|
|
@@ -11230,10 +11883,30 @@ Both axes are measured, so the values name an axis rather than a role:
|
|
|
11230
11883
|
anything unrecognized, means `both`, since neither axis is the one a scatter
|
|
11231
11884
|
is read along. */
|
|
11232
11885
|
gridlines?: (HelixHeadlessScatterChart["gridlines"]) | undefined;
|
|
11233
|
-
/** The word the
|
|
11886
|
+
/** The word for the rows a series rests on, `{pointsLabel}` in
|
|
11887
|
+
`series-label`. `{count}` is how many, so the word takes its plural
|
|
11888
|
+
forms: `{count, plural, one {punkt} few {punkty} other {punktów}}`. */
|
|
11234
11889
|
"points-label"?: (HelixHeadlessScatterChart["pointsLabel"]) | undefined;
|
|
11235
|
-
/** The word the
|
|
11890
|
+
/** The word for the rows a series rests on, `{pointsLabel}` in
|
|
11891
|
+
`series-label`. `{count}` is how many, so the word takes its plural
|
|
11892
|
+
forms: `{count, plural, one {punkt} few {punkty} other {punktów}}`. */
|
|
11236
11893
|
pointsLabel?: (HelixHeadlessScatterChart["pointsLabel"]) | undefined;
|
|
11894
|
+
/** What the summary says of each series. `{y}` is what the series measures up,
|
|
11895
|
+
`{x}` what the chart measures across, `{count}` how many rows it rests on,
|
|
11896
|
+
written in the locale, `{pointsLabel}` the word for them, and
|
|
11897
|
+
`{correlation}` its correlation, or `none` where there are fewer than
|
|
11898
|
+
three points or no spread to measure, so each case is a whole sentence:
|
|
11899
|
+
`{correlation, select, none {...} other {...}}`. `{correlationLabel}` is
|
|
11900
|
+
`correlation-label`. */
|
|
11901
|
+
"series-label"?: (HelixHeadlessScatterChart["seriesLabel"]) | undefined;
|
|
11902
|
+
/** What the summary says of each series. `{y}` is what the series measures up,
|
|
11903
|
+
`{x}` what the chart measures across, `{count}` how many rows it rests on,
|
|
11904
|
+
written in the locale, `{pointsLabel}` the word for them, and
|
|
11905
|
+
`{correlation}` its correlation, or `none` where there are fewer than
|
|
11906
|
+
three points or no spread to measure, so each case is a whole sentence:
|
|
11907
|
+
`{correlation, select, none {...} other {...}}`. `{correlationLabel}` is
|
|
11908
|
+
`correlation-label`. */
|
|
11909
|
+
seriesLabel?: (HelixHeadlessScatterChart["seriesLabel"]) | undefined;
|
|
11237
11910
|
/** The heading of a column whose numbers size the points, such as
|
|
11238
11911
|
`Population`, which makes the chart a bubble chart.
|
|
11239
11912
|
|
|
@@ -11273,8 +11946,8 @@ words and is already written. */
|
|
|
11273
11946
|
/** The locale the chart's own numbers are written in: its axis, its
|
|
11274
11947
|
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
11275
11948
|
|
|
11276
|
-
Absent
|
|
11277
|
-
writes them, whatever this says. */
|
|
11949
|
+
Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
11950
|
+
cells are shown as the table writes them, whatever this says. */
|
|
11278
11951
|
locale?: (HelixHeadlessScatterChart["locale"]) | undefined;
|
|
11279
11952
|
/** Where a reading the keys moved to stands among the readings, said after
|
|
11280
11953
|
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
@@ -11363,6 +12036,14 @@ export type HelixHeadlessSelectToggleElementEvent =
|
|
|
11363
12036
|
HelixHeadlessSelectElementEvent<ToggleEvent>;
|
|
11364
12037
|
|
|
11365
12038
|
export type HelixHeadlessSelectVueProps = {
|
|
12039
|
+
/** What a browser's autofill may fill in, as a platform token such as
|
|
12040
|
+
`country` or `cc-exp-month`, as on a native `<select>`.
|
|
12041
|
+
|
|
12042
|
+
Set, the select keeps a hidden native `<select>` with the same options for
|
|
12043
|
+
the browser to fill, as React Aria's `HiddenSelect` does, and takes the
|
|
12044
|
+
option the browser picks, by its value or its words, as the value. Empty
|
|
12045
|
+
draws no hidden select, and a browser fills nothing. */
|
|
12046
|
+
autocomplete?: (HelixHeadlessSelect["autocomplete"]) | undefined;
|
|
11366
12047
|
/** The text shown when no options match the filter. */
|
|
11367
12048
|
"empty-text"?: (HelixHeadlessSelect["emptyText"]) | undefined;
|
|
11368
12049
|
/** The text shown when no options match the filter. */
|
|
@@ -11414,6 +12095,14 @@ round it, and a short move reaches the options either side. Near an edge
|
|
|
11414
12095
|
of the screen the list moves to stay on it, so the option may sit beside
|
|
11415
12096
|
the trigger rather than on it. It follows the page as it scrolls. */
|
|
11416
12097
|
position?: (HelixHeadlessSelect["position"]) | undefined;
|
|
12098
|
+
/** The message reported when the field is required and nothing is chosen.
|
|
12099
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
12100
|
+
locale. */
|
|
12101
|
+
"value-missing-message"?: (HelixHeadlessSelect["valueMissingMessage"]) | undefined;
|
|
12102
|
+
/** The message reported when the field is required and nothing is chosen.
|
|
12103
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
12104
|
+
locale. */
|
|
12105
|
+
valueMissingMessage?: (HelixHeadlessSelect["valueMissingMessage"]) | undefined;
|
|
11417
12106
|
/** Whether the element starts open. Ignored once `open` is written. */
|
|
11418
12107
|
"default-open"?: (HelixHeadlessSelect["defaultOpen"]) | undefined;
|
|
11419
12108
|
/** Whether the element starts open. Ignored once `open` is written. */
|
|
@@ -11458,24 +12147,6 @@ browser's message. */
|
|
|
11458
12147
|
label?: (HelixHeadlessSelect["label"]) | undefined;
|
|
11459
12148
|
/** Whether the field needs a value before the form can submit. */
|
|
11460
12149
|
required?: (HelixHeadlessSelect["required"]) | undefined;
|
|
11461
|
-
/** The message shown when the field is required and empty.
|
|
11462
|
-
|
|
11463
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
11464
|
-
set and the browser's own on a text field, which the browser writes in
|
|
11465
|
-
the reader's language. Every other word a control speaks is a property,
|
|
11466
|
-
and this one was the English a form in another language still spoke in
|
|
11467
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
11468
|
-
the field and does not reach that one. */
|
|
11469
|
-
"value-missing-message"?: (HelixHeadlessSelect["valueMissingMessage"]) | undefined;
|
|
11470
|
-
/** The message shown when the field is required and empty.
|
|
11471
|
-
|
|
11472
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
11473
|
-
set and the browser's own on a text field, which the browser writes in
|
|
11474
|
-
the reader's language. Every other word a control speaks is a property,
|
|
11475
|
-
and this one was the English a form in another language still spoke in
|
|
11476
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
11477
|
-
the field and does not reach that one. */
|
|
11478
|
-
valueMissingMessage?: (HelixHeadlessSelect["valueMissingMessage"]) | undefined;
|
|
11479
12150
|
/** Whether the control is disabled and cannot be used.
|
|
11480
12151
|
|
|
11481
12152
|
Reflected, because the styled tier selects on it, and mirrored to
|
|
@@ -11608,8 +12279,8 @@ attribute.
|
|
|
11608
12279
|
<helix-slider format-options='{"style":"currency","currency":"USD"}'></helix-slider>
|
|
11609
12280
|
``` */
|
|
11610
12281
|
formatOptions?: (HelixHeadlessSlider["formatOptions"]) | undefined;
|
|
11611
|
-
/** The locale
|
|
11612
|
-
the
|
|
12282
|
+
/** The locale the value and the words are written in, such as `de-DE`. Empty
|
|
12283
|
+
reads the nearest `lang`, then the browser's language. */
|
|
11613
12284
|
locale?: (HelixHeadlessSlider["locale"]) | undefined;
|
|
11614
12285
|
/** Shows the value at each mark. */
|
|
11615
12286
|
"marker-labels"?: (HelixHeadlessSlider["markerLabels"]) | undefined;
|
|
@@ -11732,18 +12403,22 @@ browser's message. */
|
|
|
11732
12403
|
required?: (HelixHeadlessSlider["required"]) | undefined;
|
|
11733
12404
|
/** The message shown when the field is required and empty.
|
|
11734
12405
|
|
|
11735
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
11736
|
-
set and the browser's own on a text field, which the
|
|
11737
|
-
the reader's language.
|
|
12406
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
12407
|
+
continue." on a set and the browser's own on a text field, which the
|
|
12408
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
12409
|
+
own declares it as this property's English, a word property a page
|
|
12410
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
11738
12411
|
and this one was the English a form in another language still spoke in
|
|
11739
12412
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
11740
12413
|
the field and does not reach that one. */
|
|
11741
12414
|
"value-missing-message"?: (HelixHeadlessSlider["valueMissingMessage"]) | undefined;
|
|
11742
12415
|
/** The message shown when the field is required and empty.
|
|
11743
12416
|
|
|
11744
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
11745
|
-
set and the browser's own on a text field, which the
|
|
11746
|
-
the reader's language.
|
|
12417
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
12418
|
+
continue." on a set and the browser's own on a text field, which the
|
|
12419
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
12420
|
+
own declares it as this property's English, a word property a page
|
|
12421
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
11747
12422
|
and this one was the English a form in another language still spoke in
|
|
11748
12423
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
11749
12424
|
the field and does not reach that one. */
|
|
@@ -11833,11 +12508,11 @@ the accessible representation of a sparkline, and a list of the fourteen
|
|
|
11833
12508
|
numbers is not. Absent, the drawing is hidden from a screen reader rather
|
|
11834
12509
|
than announced without a name. */
|
|
11835
12510
|
label?: (HelixHeadlessSparkline["label"]) | undefined;
|
|
11836
|
-
/** The locale the readout's numbers and positions are
|
|
11837
|
-
`de` for `1.240`.
|
|
12511
|
+
/** The locale the words, the readout's numbers and positions are in, such
|
|
12512
|
+
as `de` for `1.240`.
|
|
11838
12513
|
|
|
11839
|
-
Absent
|
|
11840
|
-
writes them, whatever this says. */
|
|
12514
|
+
Absent reads the nearest `lang`, then the runtime's own. A table's cells
|
|
12515
|
+
are shown as the table writes them, whatever this says. */
|
|
11841
12516
|
locale?: (HelixHeadlessSparkline["locale"]) | undefined;
|
|
11842
12517
|
/** Which readings take a mark of their own: `high`, `low`, or both,
|
|
11843
12518
|
separated by spaces.
|
|
@@ -11918,6 +12593,13 @@ not. */
|
|
|
11918
12593
|
|
|
11919
12594
|
export type HelixHeadlessSparklineVueEvents = {};
|
|
11920
12595
|
|
|
12596
|
+
export type HelixHeadlessSpeedDialGroupVueProps = {
|
|
12597
|
+
/** The group's name, drawn above its actions and read by screen readers. */
|
|
12598
|
+
label?: (HelixHeadlessSpeedDialGroup["label"]) | undefined;
|
|
12599
|
+
};
|
|
12600
|
+
|
|
12601
|
+
export type HelixHeadlessSpeedDialGroupVueEvents = {};
|
|
12602
|
+
|
|
11921
12603
|
/** `HelixHeadlessSpeedDialItem` component event */
|
|
11922
12604
|
export type HelixHeadlessSpeedDialItemElementEvent<E = Event> = TypedEvent<
|
|
11923
12605
|
HelixHeadlessSpeedDialItem,
|
|
@@ -11930,6 +12612,10 @@ export type HelixHeadlessSpeedDialItemHelixSelectElementEvent =
|
|
|
11930
12612
|
export type HelixHeadlessSpeedDialItemVueProps = {
|
|
11931
12613
|
/** Whether the action is disabled, so it cannot be chosen. */
|
|
11932
12614
|
disabled?: (HelixHeadlessSpeedDialItem["disabled"]) | undefined;
|
|
12615
|
+
/** The action's keyboard shortcut as a chord, such as `mod+s`, carried as
|
|
12616
|
+
`aria-keyshortcuts` and drawn after the name. `mod` is Command on an Apple
|
|
12617
|
+
keyboard and Control elsewhere. Showing a shortcut does not bind it. */
|
|
12618
|
+
shortcut?: (HelixHeadlessSpeedDialItem["shortcut"]) | undefined;
|
|
11933
12619
|
/** The action's value, sent in `helix-select` when the action is chosen. */
|
|
11934
12620
|
value?: (HelixHeadlessSpeedDialItem["value"]) | undefined;
|
|
11935
12621
|
};
|
|
@@ -11960,8 +12646,32 @@ export type HelixHeadlessSpeedDialToggleElementEvent =
|
|
|
11960
12646
|
export type HelixHeadlessSpeedDialVueProps = {
|
|
11961
12647
|
/** Accessible name for the trigger and the set of actions it opens. */
|
|
11962
12648
|
label?: (HelixHeadlessSpeedDial["label"]) | undefined;
|
|
12649
|
+
/** The description the trigger gives under `open-on="long-press"`, saying how
|
|
12650
|
+
its actions are reached.
|
|
12651
|
+
|
|
12652
|
+
A slotted trigger is described by the dial, which carries the words as
|
|
12653
|
+
its own label for that: a Helix button's inner control at once, and a
|
|
12654
|
+
plain element of yours once a reader reaches it, after hydration, unless
|
|
12655
|
+
you described or labeled it yourself. */
|
|
12656
|
+
"long-press-label"?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
|
|
12657
|
+
/** The description the trigger gives under `open-on="long-press"`, saying how
|
|
12658
|
+
its actions are reached.
|
|
12659
|
+
|
|
12660
|
+
A slotted trigger is described by the dial, which carries the words as
|
|
12661
|
+
its own label for that: a Helix button's inner control at once, and a
|
|
12662
|
+
plain element of yours once a reader reaches it, after hydration, unless
|
|
12663
|
+
you described or labeled it yourself. */
|
|
12664
|
+
longPressLabel?: (HelixHeadlessSpeedDial["longPressLabel"]) | undefined;
|
|
11963
12665
|
/** Space between the trigger and the actions, in pixels. */
|
|
11964
12666
|
offset?: (HelixHeadlessSpeedDial["offset"]) | undefined;
|
|
12667
|
+
/** What opens the dial. `click` opens it on a press of the trigger. Under
|
|
12668
|
+
`long-press`, a press is the trigger's own action, and the dial opens on a
|
|
12669
|
+
press held for half a second, or on Alt+Down or Alt+Up. */
|
|
12670
|
+
"open-on"?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
|
|
12671
|
+
/** What opens the dial. `click` opens it on a press of the trigger. Under
|
|
12672
|
+
`long-press`, a press is the trigger's own action, and the dial opens on a
|
|
12673
|
+
press held for half a second, or on Alt+Down or Alt+Up. */
|
|
12674
|
+
openOn?: (HelixHeadlessSpeedDial["openOn"]) | undefined;
|
|
11965
12675
|
/** The direction the actions open in. They move to another side if that side
|
|
11966
12676
|
does not fit.
|
|
11967
12677
|
|
|
@@ -12147,7 +12857,7 @@ export type HelixHeadlessSplitterVueEvents = {
|
|
|
12147
12857
|
"helix-collapse": HelixHeadlessSplitterHelixCollapseElementEvent;
|
|
12148
12858
|
/** Fired after the divider settles somewhere new, with the new position. */
|
|
12149
12859
|
"helix-resized": HelixHeadlessSplitterHelixResizedElementEvent;
|
|
12150
|
-
/** Fired each time
|
|
12860
|
+
/** Fired each time the divider moves, as a range input does: on each step of a drag, and before `helix-resized` for a key, a double click or a corner. Read `position` for where it is now. */
|
|
12151
12861
|
input: HelixHeadlessSplitterElementEvent;
|
|
12152
12862
|
};
|
|
12153
12863
|
|
|
@@ -12225,11 +12935,15 @@ in both. Of those four combinations three are ones nobody should pick, and
|
|
|
12225
12935
|
a property whose job is mostly to be left alone is a property that mostly
|
|
12226
12936
|
catches people out. */
|
|
12227
12937
|
orientation?: (HelixHeadlessSteps["orientation"]) | undefined;
|
|
12228
|
-
/** What the `progress` part says to a screen reader
|
|
12229
|
-
|
|
12938
|
+
/** What the `progress` part says to a screen reader. `{share, number,
|
|
12939
|
+
percent}` writes `progress` as a percentage the way the locale writes one,
|
|
12940
|
+
such as `40%`, or `40 %` in French. `{percent}` is `progress` as a whole
|
|
12941
|
+
number, for a sentence that places the sign itself. */
|
|
12230
12942
|
"progress-label"?: (HelixHeadlessSteps["progressLabel"]) | undefined;
|
|
12231
|
-
/** What the `progress` part says to a screen reader
|
|
12232
|
-
|
|
12943
|
+
/** What the `progress` part says to a screen reader. `{share, number,
|
|
12944
|
+
percent}` writes `progress` as a percentage the way the locale writes one,
|
|
12945
|
+
such as `40%`, or `40 %` in French. `{percent}` is `progress` as a whole
|
|
12946
|
+
number, for a sentence that places the sign itself. */
|
|
12233
12947
|
progressLabel?: (HelixHeadlessSteps["progressLabel"]) | undefined;
|
|
12234
12948
|
/** What each step is marked with.
|
|
12235
12949
|
|
|
@@ -12286,6 +13000,16 @@ export type HelixHeadlessStepHelixSelectElementEvent =
|
|
|
12286
13000
|
export type HelixHeadlessStepVueProps = {
|
|
12287
13001
|
/** Whether this stage is finished. */
|
|
12288
13002
|
complete?: (HelixHeadlessStep["complete"]) | undefined;
|
|
13003
|
+
/** What a screen reader hears when the stage is finished while the page is
|
|
13004
|
+
open. `{name}` is the stage's name and `{complete}` is `complete-label`, so
|
|
13005
|
+
a language can write the whole sentence in its own order. A stage with no
|
|
13006
|
+
name says `complete-label` alone. */
|
|
13007
|
+
"completed-label"?: (HelixHeadlessStep["completedLabel"]) | undefined;
|
|
13008
|
+
/** What a screen reader hears when the stage is finished while the page is
|
|
13009
|
+
open. `{name}` is the stage's name and `{complete}` is `complete-label`, so
|
|
13010
|
+
a language can write the whole sentence in its own order. A stage with no
|
|
13011
|
+
name says `complete-label` alone. */
|
|
13012
|
+
completedLabel?: (HelixHeadlessStep["completedLabel"]) | undefined;
|
|
12289
13013
|
/** The words that tell a screen reader the stage is finished. Translate it
|
|
12290
13014
|
with the page. */
|
|
12291
13015
|
"complete-label"?: (HelixHeadlessStep["completeLabel"]) | undefined;
|
|
@@ -12320,6 +13044,14 @@ export type HelixHeadlessSwitchHelixBeforeToggleElementEvent =
|
|
|
12320
13044
|
export type HelixHeadlessSwitchVueProps = {
|
|
12321
13045
|
/** Value submitted when the switch is on. */
|
|
12322
13046
|
value?: (HelixHeadlessSwitch["value"]) | undefined;
|
|
13047
|
+
/** The message reported when the field is required and the switch is off.
|
|
13048
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
13049
|
+
locale. */
|
|
13050
|
+
"value-missing-message"?: (HelixHeadlessSwitch["valueMissingMessage"]) | undefined;
|
|
13051
|
+
/** The message reported when the field is required and the switch is off.
|
|
13052
|
+
Absent, or empty, is this sentence, or the words registered for the page's
|
|
13053
|
+
locale. */
|
|
13054
|
+
valueMissingMessage?: (HelixHeadlessSwitch["valueMissingMessage"]) | undefined;
|
|
12323
13055
|
/** Whether the control is checked.
|
|
12324
13056
|
|
|
12325
13057
|
One property rather than two. Writing always applies;
|
|
@@ -12371,24 +13103,6 @@ browser's message. */
|
|
|
12371
13103
|
label?: (HelixHeadlessSwitch["label"]) | undefined;
|
|
12372
13104
|
/** Whether the field needs a value before the form can submit. */
|
|
12373
13105
|
required?: (HelixHeadlessSwitch["required"]) | undefined;
|
|
12374
|
-
/** The message shown when the field is required and empty.
|
|
12375
|
-
|
|
12376
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
12377
|
-
set and the browser's own on a text field, which the browser writes in
|
|
12378
|
-
the reader's language. Every other word a control speaks is a property,
|
|
12379
|
-
and this one was the English a form in another language still spoke in
|
|
12380
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
12381
|
-
the field and does not reach that one. */
|
|
12382
|
-
"value-missing-message"?: (HelixHeadlessSwitch["valueMissingMessage"]) | undefined;
|
|
12383
|
-
/** The message shown when the field is required and empty.
|
|
12384
|
-
|
|
12385
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to continue." on a
|
|
12386
|
-
set and the browser's own on a text field, which the browser writes in
|
|
12387
|
-
the reader's language. Every other word a control speaks is a property,
|
|
12388
|
-
and this one was the English a form in another language still spoke in
|
|
12389
|
-
the bubble it raises on submit: `feedback` replaces the message under
|
|
12390
|
-
the field and does not reach that one. */
|
|
12391
|
-
valueMissingMessage?: (HelixHeadlessSwitch["valueMissingMessage"]) | undefined;
|
|
12392
13106
|
/** Whether the control is disabled and cannot be used.
|
|
12393
13107
|
|
|
12394
13108
|
Reflected, because the styled tier selects on it, and mirrored to
|
|
@@ -12461,14 +13175,16 @@ after a column moves is a sort a consumer cannot store in a URL.
|
|
|
12461
13175
|
Empty on a column that is purely presentational, an actions column say, and
|
|
12462
13176
|
such a column is never sortable however it is marked. */
|
|
12463
13177
|
field?: (HelixHeadlessTableColumn["field"]) | undefined;
|
|
12464
|
-
/** The accessible name of the grip that moves the column. `{name}` is
|
|
12465
|
-
|
|
13178
|
+
/** The accessible name of the grip that moves the column. `{name}` is the
|
|
13179
|
+
heading text, and `{named}` is `no` for a column without one, so the
|
|
13180
|
+
sentence for it can name the column another way.
|
|
12466
13181
|
|
|
12467
13182
|
**Every word a column speaks is a property**, so a table in another
|
|
12468
13183
|
language hears its own rather than English around its own headings. */
|
|
12469
13184
|
"move-label"?: (HelixHeadlessTableColumn["moveLabel"]) | undefined;
|
|
12470
|
-
/** The accessible name of the grip that moves the column. `{name}` is
|
|
12471
|
-
|
|
13185
|
+
/** The accessible name of the grip that moves the column. `{name}` is the
|
|
13186
|
+
heading text, and `{named}` is `no` for a column without one, so the
|
|
13187
|
+
sentence for it can name the column another way.
|
|
12472
13188
|
|
|
12473
13189
|
**Every word a column speaks is a property**, so a table in another
|
|
12474
13190
|
language hears its own rather than English around its own headings. */
|
|
@@ -12481,10 +13197,10 @@ it has focus, a step at a time and four with Shift. The width lands in
|
|
|
12481
13197
|
stores the widths can take the decision. */
|
|
12482
13198
|
resizable?: (HelixHeadlessTableColumn["resizable"]) | undefined;
|
|
12483
13199
|
/** The accessible name of the separator that resizes the column. `{name}` is
|
|
12484
|
-
|
|
13200
|
+
the heading text, and `{named}` is `no` for a column without one. */
|
|
12485
13201
|
"resize-label"?: (HelixHeadlessTableColumn["resizeLabel"]) | undefined;
|
|
12486
13202
|
/** The accessible name of the separator that resizes the column. `{name}` is
|
|
12487
|
-
|
|
13203
|
+
the heading text, and `{named}` is `no` for a column without one. */
|
|
12488
13204
|
resizeLabel?: (HelixHeadlessTableColumn["resizeLabel"]) | undefined;
|
|
12489
13205
|
/** Makes this column's cells the headers of their rows, in `DataTable`.
|
|
12490
13206
|
|
|
@@ -12602,10 +13318,12 @@ and lets that column wrap. A headless consumer owns the overflow either
|
|
|
12602
13318
|
way, that being paint, and gets the honest track list. */
|
|
12603
13319
|
width?: (HelixHeadlessTableColumn["width"]) | undefined;
|
|
12604
13320
|
/** The text screen readers announce for the column's width. `{width}` is
|
|
12605
|
-
|
|
13321
|
+
the width in pixels, written in the locale, and each language writes the
|
|
13322
|
+
forms it has. */
|
|
12606
13323
|
"width-label"?: (HelixHeadlessTableColumn["widthLabel"]) | undefined;
|
|
12607
13324
|
/** The text screen readers announce for the column's width. `{width}` is
|
|
12608
|
-
|
|
13325
|
+
the width in pixels, written in the locale, and each language writes the
|
|
13326
|
+
forms it has. */
|
|
12609
13327
|
widthLabel?: (HelixHeadlessTableColumn["widthLabel"]) | undefined;
|
|
12610
13328
|
/** A function that reads the cell's content from a row, for cells that `field`
|
|
12611
13329
|
alone cannot read.
|
|
@@ -12638,6 +13356,12 @@ export type HelixHeadlessTableElementEvent<E = Event> = TypedEvent<
|
|
|
12638
13356
|
HelixHeadlessTable,
|
|
12639
13357
|
E
|
|
12640
13358
|
>;
|
|
13359
|
+
/** `helix-before-reorder` event type */
|
|
13360
|
+
export type HelixHeadlessTableHelixBeforeReorderElementEvent =
|
|
13361
|
+
HelixHeadlessTableElementEvent<HelixBeforeReorderEvent>;
|
|
13362
|
+
/** `helix-reorder` event type */
|
|
13363
|
+
export type HelixHeadlessTableHelixReorderElementEvent =
|
|
13364
|
+
HelixHeadlessTableElementEvent<HelixReorderEvent>;
|
|
12641
13365
|
/** `helix-select` event type */
|
|
12642
13366
|
export type HelixHeadlessTableHelixSelectElementEvent =
|
|
12643
13367
|
HelixHeadlessTableElementEvent<HelixSelectEvent>;
|
|
@@ -12652,10 +13376,16 @@ export type HelixHeadlessTableHelixSortedElementEvent =
|
|
|
12652
13376
|
HelixHeadlessTableElementEvent<HelixSortedEvent>;
|
|
12653
13377
|
|
|
12654
13378
|
export type HelixHeadlessTableVueProps = {
|
|
12655
|
-
/** The word for an ascending sort, in `sorted-label`. */
|
|
13379
|
+
/** The word for an ascending sort, in a `sorted-label` that writes `{order}`. */
|
|
12656
13380
|
"ascending-label"?: (HelixHeadlessTable["ascendingLabel"]) | undefined;
|
|
12657
|
-
/** The word for an ascending sort, in `sorted-label`. */
|
|
13381
|
+
/** The word for an ascending sort, in a `sorted-label` that writes `{order}`. */
|
|
12658
13382
|
ascendingLabel?: (HelixHeadlessTable["ascendingLabel"]) | undefined;
|
|
13383
|
+
/** What screen readers hear when a held row is put back, or a move is
|
|
13384
|
+
refused, in a `reorderable` table. */
|
|
13385
|
+
"canceled-label"?: (HelixHeadlessTable["canceledLabel"]) | undefined;
|
|
13386
|
+
/** What screen readers hear when a held row is put back, or a move is
|
|
13387
|
+
refused, in a `reorderable` table. */
|
|
13388
|
+
canceledLabel?: (HelixHeadlessTable["canceledLabel"]) | undefined;
|
|
12659
13389
|
/** The column widths as one track list, written once on the table.
|
|
12660
13390
|
|
|
12661
13391
|
With `TableColumn` children, each track sizes the column in its place, a
|
|
@@ -12695,15 +13425,60 @@ is set. */
|
|
|
12695
13425
|
"default-sort"?: (HelixHeadlessTable["defaultSort"]) | undefined;
|
|
12696
13426
|
/** The starting sort order, used until `sort` is set. */
|
|
12697
13427
|
defaultSort?: (HelixHeadlessTable["defaultSort"]) | undefined;
|
|
12698
|
-
/** The word for a descending sort, in `sorted-label`. */
|
|
13428
|
+
/** The word for a descending sort, in a `sorted-label` that writes `{order}`. */
|
|
12699
13429
|
"descending-label"?: (HelixHeadlessTable["descendingLabel"]) | undefined;
|
|
12700
|
-
/** The word for a descending sort, in `sorted-label`. */
|
|
13430
|
+
/** The word for a descending sort, in a `sorted-label` that writes `{order}`. */
|
|
12701
13431
|
descendingLabel?: (HelixHeadlessTable["descendingLabel"]) | undefined;
|
|
13432
|
+
/** What screen readers hear when a held row is dropped, in a `reorderable` table. */
|
|
13433
|
+
"dropped-label"?: (HelixHeadlessTable["droppedLabel"]) | undefined;
|
|
13434
|
+
/** What screen readers hear when a held row is dropped, in a `reorderable` table. */
|
|
13435
|
+
droppedLabel?: (HelixHeadlessTable["droppedLabel"]) | undefined;
|
|
13436
|
+
/** The table's name where neither `label` nor an `aria-label` or
|
|
13437
|
+
`aria-labelledby` on the host gives it one. */
|
|
13438
|
+
"fallback-label"?: (HelixHeadlessTable["fallbackLabel"]) | undefined;
|
|
13439
|
+
/** The table's name where neither `label` nor an `aria-label` or
|
|
13440
|
+
`aria-labelledby` on the host gives it one. */
|
|
13441
|
+
fallbackLabel?: (HelixHeadlessTable["fallbackLabel"]) | undefined;
|
|
13442
|
+
/** Makes the table a grid: one tab stop, and the arrow keys, Home, End and the
|
|
13443
|
+
Page keys move focus between its cells, the headings included. Enter moves
|
|
13444
|
+
into a cell's controls, and Tab leaves the table.
|
|
13445
|
+
|
|
13446
|
+
Off by default, where the table is a static `table` and Tab reaches each
|
|
13447
|
+
link and control in it. On, the table writes a `tabindex` onto each of its
|
|
13448
|
+
cells, which is the one way a cell of your markup can take focus. */
|
|
13449
|
+
grid?: (HelixHeadlessTable["grid"]) | undefined;
|
|
12702
13450
|
/** Accessible name for the table.
|
|
12703
13451
|
|
|
12704
13452
|
An `aria-label` or `aria-labelledby` on the host names the table too, and
|
|
12705
13453
|
wins over this. */
|
|
12706
13454
|
label?: (HelixHeadlessTable["label"]) | undefined;
|
|
13455
|
+
/** What screen readers hear each time a key moves a held row, in a
|
|
13456
|
+
`reorderable` table. `{name}` is the row's words, `{position}` the place it
|
|
13457
|
+
would go, counting from 1, and `{count}` the number of rows. */
|
|
13458
|
+
"moved-label"?: (HelixHeadlessTable["movedLabel"]) | undefined;
|
|
13459
|
+
/** What screen readers hear each time a key moves a held row, in a
|
|
13460
|
+
`reorderable` table. `{name}` is the row's words, `{position}` the place it
|
|
13461
|
+
would go, counting from 1, and `{count}` the number of rows. */
|
|
13462
|
+
movedLabel?: (HelixHeadlessTable["movedLabel"]) | undefined;
|
|
13463
|
+
/** The name of a row's grip, in a `reorderable` table. `{row}` is replaced
|
|
13464
|
+
with the words of the row's first cell. */
|
|
13465
|
+
"move-row-label"?: (HelixHeadlessTable["moveRowLabel"]) | undefined;
|
|
13466
|
+
/** The name of a row's grip, in a `reorderable` table. `{row}` is replaced
|
|
13467
|
+
with the words of the row's first cell. */
|
|
13468
|
+
moveRowLabel?: (HelixHeadlessTable["moveRowLabel"]) | undefined;
|
|
13469
|
+
/** What screen readers hear when a key or a click picks up a row, in a
|
|
13470
|
+
`reorderable` table. `{name}` is the row's words. */
|
|
13471
|
+
"picked-up-label"?: (HelixHeadlessTable["pickedUpLabel"]) | undefined;
|
|
13472
|
+
/** What screen readers hear when a key or a click picks up a row, in a
|
|
13473
|
+
`reorderable` table. `{name}` is the row's words. */
|
|
13474
|
+
pickedUpLabel?: (HelixHeadlessTable["pickedUpLabel"]) | undefined;
|
|
13475
|
+
/** Adds a column of grips that move rows, by dragging or with the keys. The
|
|
13476
|
+
table moves no row itself: you move your rows on `helix-reorder`. */
|
|
13477
|
+
reorderable?: (HelixHeadlessTable["reorderable"]) | undefined;
|
|
13478
|
+
/** The name of the heading over the row grips, in a `reorderable` table. */
|
|
13479
|
+
"row-grips-label"?: (HelixHeadlessTable["rowGripsLabel"]) | undefined;
|
|
13480
|
+
/** The name of the heading over the row grips, in a `reorderable` table. */
|
|
13481
|
+
rowGripsLabel?: (HelixHeadlessTable["rowGripsLabel"]) | undefined;
|
|
12707
13482
|
/** Adds a column of checkboxes for selecting rows. Each row is known by its
|
|
12708
13483
|
`value`, and by its place among the rows as written where it has none. */
|
|
12709
13484
|
selectable?: (HelixHeadlessTable["selectable"]) | undefined;
|
|
@@ -12718,10 +13493,14 @@ selection as it was. `default-selected` seeds a selection this element
|
|
|
12718
13493
|
then owns. */
|
|
12719
13494
|
selected?: (HelixHeadlessTable["selected"]) | undefined;
|
|
12720
13495
|
/** What screen readers hear when the chosen rows change. `{count}` is how many
|
|
12721
|
-
rows are chosen
|
|
13496
|
+
rows are chosen, written in the locale, and a language that needs plural
|
|
13497
|
+
forms writes them: `{count, plural, one {# wybrany} few {# wybrane} many
|
|
13498
|
+
{# wybranych} other {# wybranego}}`. */
|
|
12722
13499
|
"selected-label"?: (HelixHeadlessTable["selectedLabel"]) | undefined;
|
|
12723
13500
|
/** What screen readers hear when the chosen rows change. `{count}` is how many
|
|
12724
|
-
rows are chosen
|
|
13501
|
+
rows are chosen, written in the locale, and a language that needs plural
|
|
13502
|
+
forms writes them: `{count, plural, one {# wybrany} few {# wybrane} many
|
|
13503
|
+
{# wybranych} other {# wybranego}}`. */
|
|
12725
13504
|
selectedLabel?: (HelixHeadlessTable["selectedLabel"]) | undefined;
|
|
12726
13505
|
/** The name of a row's checkbox. `{row}` is replaced with the words of the
|
|
12727
13506
|
row's first cell. */
|
|
@@ -12738,10 +13517,14 @@ first, and refusing it leaves the order as it was. `default-sort` seeds an
|
|
|
12738
13517
|
order this element then owns. */
|
|
12739
13518
|
sort?: (HelixHeadlessTable["sort"]) | undefined;
|
|
12740
13519
|
/** What screen readers hear when the table is sorted. `{column}` is the
|
|
12741
|
-
column's heading and `{
|
|
13520
|
+
column's heading and `{direction}` is `ascending` or `descending`, so each
|
|
13521
|
+
order has its whole sentence. `{order}` is the deprecated
|
|
13522
|
+
`ascending-label` or `descending-label`. */
|
|
12742
13523
|
"sorted-label"?: (HelixHeadlessTable["sortedLabel"]) | undefined;
|
|
12743
13524
|
/** What screen readers hear when the table is sorted. `{column}` is the
|
|
12744
|
-
column's heading and `{
|
|
13525
|
+
column's heading and `{direction}` is `ascending` or `descending`, so each
|
|
13526
|
+
order has its whole sentence. `{order}` is the deprecated
|
|
13527
|
+
`ascending-label` or `descending-label`. */
|
|
12745
13528
|
sortedLabel?: (HelixHeadlessTable["sortedLabel"]) | undefined;
|
|
12746
13529
|
/** What screen readers hear when the table stops being sorted. */
|
|
12747
13530
|
"unsorted-label"?: (HelixHeadlessTable["unsortedLabel"]) | undefined;
|
|
@@ -12764,6 +13547,10 @@ say that without the component knowing what a row looks like. */
|
|
|
12764
13547
|
};
|
|
12765
13548
|
|
|
12766
13549
|
export type HelixHeadlessTableVueEvents = {
|
|
13550
|
+
/** Fired when a row is dropped at a new place, in a `reorderable` table, with every row's key in the new order. Cancelable: cancel it to keep the row where it is. */
|
|
13551
|
+
"helix-before-reorder": HelixHeadlessTableHelixBeforeReorderElementEvent;
|
|
13552
|
+
/** Fired after `helix-before-reorder` when nobody canceled it. Move your rows to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
|
|
13553
|
+
"helix-reorder": HelixHeadlessTableHelixReorderElementEvent;
|
|
12767
13554
|
/** The selection is about to change. The event carries every selected key, separated by commas. Cancelable: cancel it to keep the current selection. */
|
|
12768
13555
|
"helix-select": HelixHeadlessTableHelixSelectElementEvent;
|
|
12769
13556
|
/** Fired after the selection changes, with every selected key, separated by commas. */
|
|
@@ -12989,6 +13776,20 @@ export type HelixHeadlessTagVueProps = {
|
|
|
12989
13776
|
answering, and in a `Tag.Group` the arrow keys pass over it and it cannot
|
|
12990
13777
|
be selected or removed. */
|
|
12991
13778
|
disabled?: (HelixHeadlessTag["disabled"]) | undefined;
|
|
13779
|
+
/** The remove button's name, read by screen readers, with `{label}` for the
|
|
13780
|
+
tag's own words.
|
|
13781
|
+
|
|
13782
|
+
"Remove" rather than the mixin's "Dismiss": a tag is taken out of a set,
|
|
13783
|
+
which is a different act from closing a message. One sentence with the
|
|
13784
|
+
tag's words in it, so a translation puts them where its language does. */
|
|
13785
|
+
"dismiss-label"?: (HelixHeadlessTag["dismissLabel"]) | undefined;
|
|
13786
|
+
/** The remove button's name, read by screen readers, with `{label}` for the
|
|
13787
|
+
tag's own words.
|
|
13788
|
+
|
|
13789
|
+
"Remove" rather than the mixin's "Dismiss": a tag is taken out of a set,
|
|
13790
|
+
which is a different act from closing a message. One sentence with the
|
|
13791
|
+
tag's words in it, so a translation puts them where its language does. */
|
|
13792
|
+
dismissLabel?: (HelixHeadlessTag["dismissLabel"]) | undefined;
|
|
12992
13793
|
/** Makes the label a link to this address. */
|
|
12993
13794
|
href?: (HelixHeadlessTag["href"]) | undefined;
|
|
12994
13795
|
/** What the tag stands for in its group's `value`.
|
|
@@ -12997,20 +13798,6 @@ Absent is the tag's own words, its category first. */
|
|
|
12997
13798
|
value?: (HelixHeadlessTag["value"]) | undefined;
|
|
12998
13799
|
/** Whether the element shows a control that dismisses it. */
|
|
12999
13800
|
dismissible?: (HelixHeadlessTag["dismissible"]) | undefined;
|
|
13000
|
-
/** The dismiss control's label, read by screen readers.
|
|
13001
|
-
|
|
13002
|
-
`attribute` is spelled out because Lit lowercases a property name to
|
|
13003
|
-
derive one rather than dash-casing it, so this would otherwise be
|
|
13004
|
-
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
13005
|
-
would catch. */
|
|
13006
|
-
"dismiss-label"?: (HelixHeadlessTag["dismissLabel"]) | undefined;
|
|
13007
|
-
/** The dismiss control's label, read by screen readers.
|
|
13008
|
-
|
|
13009
|
-
`attribute` is spelled out because Lit lowercases a property name to
|
|
13010
|
-
derive one rather than dash-casing it, so this would otherwise be
|
|
13011
|
-
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
13012
|
-
would catch. */
|
|
13013
|
-
dismissLabel?: (HelixHeadlessTag["dismissLabel"]) | undefined;
|
|
13014
13801
|
/** Whether the tag holds its group's tab stop.
|
|
13015
13802
|
|
|
13016
13803
|
Written by `Tag.Group` on every tag it holds, and unset outside one, which
|
|
@@ -13152,18 +13939,22 @@ browser's message. */
|
|
|
13152
13939
|
required?: (HelixHeadlessTextarea["required"]) | undefined;
|
|
13153
13940
|
/** The message shown when the field is required and empty.
|
|
13154
13941
|
|
|
13155
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
13156
|
-
set and the browser's own on a text field, which the
|
|
13157
|
-
the reader's language.
|
|
13942
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
13943
|
+
continue." on a set and the browser's own on a text field, which the
|
|
13944
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
13945
|
+
own declares it as this property's English, a word property a page
|
|
13946
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
13158
13947
|
and this one was the English a form in another language still spoke in
|
|
13159
13948
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
13160
13949
|
the field and does not reach that one. */
|
|
13161
13950
|
"value-missing-message"?: (HelixHeadlessTextarea["valueMissingMessage"]) | undefined;
|
|
13162
13951
|
/** The message shown when the field is required and empty.
|
|
13163
13952
|
|
|
13164
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
13165
|
-
set and the browser's own on a text field, which the
|
|
13166
|
-
the reader's language.
|
|
13953
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
13954
|
+
continue." on a set and the browser's own on a text field, which the
|
|
13955
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
13956
|
+
own declares it as this property's English, a word property a page
|
|
13957
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
13167
13958
|
and this one was the English a form in another language still spoke in
|
|
13168
13959
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
13169
13960
|
the field and does not reach that one. */
|
|
@@ -13292,14 +14083,14 @@ on why a wheel cannot do either. */
|
|
|
13292
14083
|
/** The message shown when a range holds more than two times.
|
|
13293
14084
|
|
|
13294
14085
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
13295
|
-
so a form in another language speaks it.
|
|
13296
|
-
|
|
14086
|
+
so a form in another language speaks it. Unset is the sentence registered
|
|
14087
|
+
for the page's language, then the English. */
|
|
13297
14088
|
"range-length-message"?: (HelixHeadlessTimeInput["rangeLengthMessage"]) | undefined;
|
|
13298
14089
|
/** The message shown when a range holds more than two times.
|
|
13299
14090
|
|
|
13300
14091
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
13301
|
-
so a form in another language speaks it.
|
|
13302
|
-
|
|
14092
|
+
so a form in another language speaks it. Unset is the sentence registered
|
|
14093
|
+
for the page's language, then the English. */
|
|
13303
14094
|
rangeLengthMessage?: (HelixHeadlessTimeInput["rangeLengthMessage"]) | undefined;
|
|
13304
14095
|
/** The message shown when a time is after `max`, with `{max}` filled in as
|
|
13305
14096
|
the field displays it. */
|
|
@@ -13369,12 +14160,28 @@ not touch, and React reads that as a hydration mismatch. The absent
|
|
|
13369
14160
|
attribute *is* the list, which the stylesheet reads as the base rule, so
|
|
13370
14161
|
only the departure has to be named. */
|
|
13371
14162
|
variant?: (HelixHeadlessTimeInput["variant"]) | undefined;
|
|
14163
|
+
/** What a row of segments reports when the field is required and every
|
|
14164
|
+
segment is empty, where `value-missing-message` is not set. `{kind}` is
|
|
14165
|
+
`date` or `time`. */
|
|
14166
|
+
"empty-message"?: (HelixHeadlessTimeInput["emptyMessage"]) | undefined;
|
|
14167
|
+
/** What a row of segments reports when the field is required and every
|
|
14168
|
+
segment is empty, where `value-missing-message` is not set. `{kind}` is
|
|
14169
|
+
`date` or `time`. */
|
|
14170
|
+
emptyMessage?: (HelixHeadlessTimeInput["emptyMessage"]) | undefined;
|
|
13372
14171
|
/** What a screen reader hears for a segment with nothing in it, which a
|
|
13373
14172
|
sighted reader sees as dashes. */
|
|
13374
14173
|
"empty-segment-label"?: (HelixHeadlessTimeInput["emptySegmentLabel"]) | undefined;
|
|
13375
14174
|
/** What a screen reader hears for a segment with nothing in it, which a
|
|
13376
14175
|
sighted reader sees as dashes. */
|
|
13377
14176
|
emptySegmentLabel?: (HelixHeadlessTimeInput["emptySegmentLabel"]) | undefined;
|
|
14177
|
+
/** What a row of segments reports while some segments are set and others
|
|
14178
|
+
are not, where `bad-input-message` is not set. `{kind}` is `date` or
|
|
14179
|
+
`time`. */
|
|
14180
|
+
"incomplete-message"?: (HelixHeadlessTimeInput["incompleteMessage"]) | undefined;
|
|
14181
|
+
/** What a row of segments reports while some segments are set and others
|
|
14182
|
+
are not, where `bad-input-message` is not set. `{kind}` is `date` or
|
|
14183
|
+
`time`. */
|
|
14184
|
+
incompleteMessage?: (HelixHeadlessTimeInput["incompleteMessage"]) | undefined;
|
|
13378
14185
|
/** Whether the field is a row of segments, one for each part of the date or
|
|
13379
14186
|
time, in place of a line of text.
|
|
13380
14187
|
|
|
@@ -13456,6 +14263,12 @@ as `+3`, does not say what it does. */
|
|
|
13456
14263
|
"max-tags"?: (HelixHeadlessTimeInput["maxTags"] | `${number}`) | undefined;
|
|
13457
14264
|
/** How many tokens to show before the rest become a count. */
|
|
13458
14265
|
maxTags?: (HelixHeadlessTimeInput["maxTags"]) | undefined;
|
|
14266
|
+
/** The count of the tokens past `max-tags`, as it is shown, with `{count}`
|
|
14267
|
+
for the number, written in the element's locale. */
|
|
14268
|
+
"rest-text"?: (HelixHeadlessTimeInput["restText"]) | undefined;
|
|
14269
|
+
/** The count of the tokens past `max-tags`, as it is shown, with `{count}`
|
|
14270
|
+
for the number, written in the element's locale. */
|
|
14271
|
+
restText?: (HelixHeadlessTimeInput["restText"]) | undefined;
|
|
13459
14272
|
/** The value the control starts with. A form reset returns it to this value,
|
|
13460
14273
|
and to the `value` attribute where this one is not written, as a native
|
|
13461
14274
|
control resets to the `value` it declares. */
|
|
@@ -13485,18 +14298,22 @@ browser's message. */
|
|
|
13485
14298
|
required?: (HelixHeadlessTimeInput["required"]) | undefined;
|
|
13486
14299
|
/** The message shown when the field is required and empty.
|
|
13487
14300
|
|
|
13488
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
13489
|
-
set and the browser's own on a text field, which the
|
|
13490
|
-
the reader's language.
|
|
14301
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
14302
|
+
continue." on a set and the browser's own on a text field, which the
|
|
14303
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
14304
|
+
own declares it as this property's English, a word property a page
|
|
14305
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
13491
14306
|
and this one was the English a form in another language still spoke in
|
|
13492
14307
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
13493
14308
|
the field and does not reach that one. */
|
|
13494
14309
|
"value-missing-message"?: (HelixHeadlessTimeInput["valueMissingMessage"]) | undefined;
|
|
13495
14310
|
/** The message shown when the field is required and empty.
|
|
13496
14311
|
|
|
13497
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
13498
|
-
set and the browser's own on a text field, which the
|
|
13499
|
-
the reader's language.
|
|
14312
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
14313
|
+
continue." on a set and the browser's own on a text field, which the
|
|
14314
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
14315
|
+
own declares it as this property's English, a word property a page
|
|
14316
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
13500
14317
|
and this one was the English a form in another language still spoke in
|
|
13501
14318
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
13502
14319
|
the field and does not reach that one. */
|
|
@@ -13569,13 +14386,19 @@ export type HelixHeadlessTimePickerVueProps = {
|
|
|
13569
14386
|
|
|
13570
14387
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
13571
14388
|
named for the validity flag it reports, so a form in another language
|
|
13572
|
-
speaks it.
|
|
14389
|
+
speaks it. Unset is the sentence registered for the page's language, then
|
|
14390
|
+
the English. `{shape}` is how a time is written, `HH:mm` or `HH:mm:ss`, and
|
|
14391
|
+
`{mode}` is `single`, `range` or `multiple`, so each can have its own
|
|
14392
|
+
sentence. */
|
|
13573
14393
|
"bad-input-message"?: (HelixHeadlessTimePicker["badInputMessage"]) | undefined;
|
|
13574
14394
|
/** The validation message for a value that is not a time.
|
|
13575
14395
|
|
|
13576
14396
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
13577
14397
|
named for the validity flag it reports, so a form in another language
|
|
13578
|
-
speaks it.
|
|
14398
|
+
speaks it. Unset is the sentence registered for the page's language, then
|
|
14399
|
+
the English. `{shape}` is how a time is written, `HH:mm` or `HH:mm:ss`, and
|
|
14400
|
+
`{mode}` is `single`, `range` or `multiple`, so each can have its own
|
|
14401
|
+
sentence. */
|
|
13579
14402
|
badInputMessage?: (HelixHeadlessTimePicker["badInputMessage"]) | undefined;
|
|
13580
14403
|
/** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
|
|
13581
14404
|
|
|
@@ -13931,14 +14754,22 @@ A subset of the tone axis: a toast reports a status and never a brand role. */
|
|
|
13931
14754
|
`attribute` is spelled out because Lit lowercases a property name to
|
|
13932
14755
|
derive one rather than dash-casing it, so this would otherwise be
|
|
13933
14756
|
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
13934
|
-
would catch.
|
|
14757
|
+
would catch.
|
|
14758
|
+
|
|
14759
|
+
A word property: register it for a locale under the host's key. A family
|
|
14760
|
+
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
14761
|
+
declares its own English with `@words` above the override. */
|
|
13935
14762
|
"dismiss-label"?: (HelixHeadlessToastItem["dismissLabel"]) | undefined;
|
|
13936
14763
|
/** The dismiss control's label, read by screen readers.
|
|
13937
14764
|
|
|
13938
14765
|
`attribute` is spelled out because Lit lowercases a property name to
|
|
13939
14766
|
derive one rather than dash-casing it, so this would otherwise be
|
|
13940
14767
|
reachable only as `dismisslabel`, which nobody would guess and no linter
|
|
13941
|
-
would catch.
|
|
14768
|
+
would catch.
|
|
14769
|
+
|
|
14770
|
+
A word property: register it for a locale under the host's key. A family
|
|
14771
|
+
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
14772
|
+
declares its own English with `@words` above the override. */
|
|
13942
14773
|
dismissLabel?: (HelixHeadlessToastItem["dismissLabel"]) | undefined;
|
|
13943
14774
|
};
|
|
13944
14775
|
|
|
@@ -13958,7 +14789,9 @@ export type HelixHeadlessToastHelixDismissElementEvent =
|
|
|
13958
14789
|
|
|
13959
14790
|
export type HelixHeadlessToastVueProps = {
|
|
13960
14791
|
/** The key that takes focus to the stack and back, such as `F8` or `Alt+T`:
|
|
13961
|
-
keys joined by `+`, the last one the key
|
|
14792
|
+
keys joined by `+`, the last one the key, as `Announcement`'s `hotkey`
|
|
14793
|
+
reads them: `mod` is Command on Apple devices and Control elsewhere.
|
|
14794
|
+
Empty turns it off. */
|
|
13962
14795
|
hotkey?: (HelixHeadlessToast["hotkey"]) | undefined;
|
|
13963
14796
|
/** Accessible name for the region, with `{hotkey}` filled in. Translate it with
|
|
13964
14797
|
the rest of your interface. */
|
|
@@ -14082,18 +14915,22 @@ browser's message. */
|
|
|
14082
14915
|
required?: (HelixHeadlessToggleGroup["required"]) | undefined;
|
|
14083
14916
|
/** The message shown when the field is required and empty.
|
|
14084
14917
|
|
|
14085
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
14086
|
-
set and the browser's own on a text field, which the
|
|
14087
|
-
the reader's language.
|
|
14918
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
14919
|
+
continue." on a set and the browser's own on a text field, which the
|
|
14920
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
14921
|
+
own declares it as this property's English, a word property a page
|
|
14922
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
14088
14923
|
and this one was the English a form in another language still spoke in
|
|
14089
14924
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
14090
14925
|
the field and does not reach that one. */
|
|
14091
14926
|
"value-missing-message"?: (HelixHeadlessToggleGroup["valueMissingMessage"]) | undefined;
|
|
14092
14927
|
/** The message shown when the field is required and empty.
|
|
14093
14928
|
|
|
14094
|
-
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
14095
|
-
set and the browser's own on a text field, which the
|
|
14096
|
-
the reader's language.
|
|
14929
|
+
**Absent, or empty, is the control's own sentence**, "Choose one to
|
|
14930
|
+
continue." on a set and the browser's own on a text field, which the
|
|
14931
|
+
browser writes in the reader's language. A family with a sentence of its
|
|
14932
|
+
own declares it as this property's English, a word property a page
|
|
14933
|
+
registers for its locale under the family's key. Every other word a control speaks is a property,
|
|
14097
14934
|
and this one was the English a form in another language still spoke in
|
|
14098
14935
|
the bubble it raises on submit: `feedback` replaces the message under
|
|
14099
14936
|
the field and does not reach that one. */
|
|
@@ -14286,6 +15123,14 @@ default slot is the trigger, which is the older form.
|
|
|
14286
15123
|
Names an element in the same tree, so a tooltip inside another component's
|
|
14287
15124
|
shadow root points at one in that root rather than one in the document.
|
|
14288
15125
|
|
|
15126
|
+
Give the tooltip an `id` and name it in the trigger's `aria-describedby`,
|
|
15127
|
+
so the trigger is described in the server's markup and at rest:
|
|
15128
|
+
|
|
15129
|
+
```html
|
|
15130
|
+
<button aria-describedby="save-tip" id="save">Save</button>
|
|
15131
|
+
<helix-headless-tooltip content="Save your work" for="save" id="save-tip"></helix-headless-tooltip>
|
|
15132
|
+
```
|
|
15133
|
+
|
|
14289
15134
|
**In React this arrives as a property and not as an attribute**, which is
|
|
14290
15135
|
worth knowing before someone reads the DOM and thinks it did not take.
|
|
14291
15136
|
Measured against React 19.2.8: `for` exists on the prototype, so React sets
|
|
@@ -14448,11 +15293,11 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
|
|
|
14448
15293
|
nextLabel?: (HelixHeadlessTour["nextLabel"]) | undefined;
|
|
14449
15294
|
/** Draws each stop's place in the run in its panel, as well as saying it. */
|
|
14450
15295
|
progress?: (HelixHeadlessTour["progress"]) | undefined;
|
|
14451
|
-
/** Each stop's place in the run, with `{index}` and `{count}` filled in
|
|
14452
|
-
Translate it with the rest of your text. */
|
|
15296
|
+
/** Each stop's place in the run, with `{index}` and `{count}` filled in and
|
|
15297
|
+
written in the locale. Translate it with the rest of your text. */
|
|
14453
15298
|
"progress-label"?: (HelixHeadlessTour["progressLabel"]) | undefined;
|
|
14454
|
-
/** Each stop's place in the run, with `{index}` and `{count}` filled in
|
|
14455
|
-
Translate it with the rest of your text. */
|
|
15299
|
+
/** Each stop's place in the run, with `{index}` and `{count}` filled in and
|
|
15300
|
+
written in the locale. Translate it with the rest of your text. */
|
|
14456
15301
|
progressLabel?: (HelixHeadlessTour["progressLabel"]) | undefined;
|
|
14457
15302
|
/** Label for the control that leaves the tour. */
|
|
14458
15303
|
"skip-label"?: (HelixHeadlessTour["skipLabel"]) | undefined;
|
|
@@ -14683,16 +15528,40 @@ export type HelixHeadlessTreeHelixActivateElementEvent =
|
|
|
14683
15528
|
/** `helix-before-activate` event type */
|
|
14684
15529
|
export type HelixHeadlessTreeHelixBeforeActivateElementEvent =
|
|
14685
15530
|
HelixHeadlessTreeElementEvent<HelixBeforeActivateEvent>;
|
|
15531
|
+
/** `helix-before-reorder` event type */
|
|
15532
|
+
export type HelixHeadlessTreeHelixBeforeReorderElementEvent =
|
|
15533
|
+
HelixHeadlessTreeElementEvent<HelixBeforeReorderEvent>;
|
|
15534
|
+
/** `helix-reorder` event type */
|
|
15535
|
+
export type HelixHeadlessTreeHelixReorderElementEvent =
|
|
15536
|
+
HelixHeadlessTreeElementEvent<HelixReorderEvent>;
|
|
14686
15537
|
/** `helix-select` event type */
|
|
14687
15538
|
export type HelixHeadlessTreeHelixSelectElementEvent =
|
|
14688
15539
|
HelixHeadlessTreeElementEvent<HelixSelectEvent>;
|
|
14689
15540
|
|
|
14690
15541
|
export type HelixHeadlessTreeVueProps = {
|
|
15542
|
+
/** What screen readers hear when a held item is put back, or a move is
|
|
15543
|
+
refused, in a `reorderable` tree. */
|
|
15544
|
+
"canceled-label"?: (HelixHeadlessTree["canceledLabel"]) | undefined;
|
|
15545
|
+
/** What screen readers hear when a held item is put back, or a move is
|
|
15546
|
+
refused, in a `reorderable` tree. */
|
|
15547
|
+
canceledLabel?: (HelixHeadlessTree["canceledLabel"]) | undefined;
|
|
15548
|
+
/** What screen readers hear when a held item is dropped, in a `reorderable` tree. */
|
|
15549
|
+
"dropped-label"?: (HelixHeadlessTree["droppedLabel"]) | undefined;
|
|
15550
|
+
/** What screen readers hear when a held item is dropped, in a `reorderable` tree. */
|
|
15551
|
+
droppedLabel?: (HelixHeadlessTree["droppedLabel"]) | undefined;
|
|
14691
15552
|
/** Accessible name for the tree.
|
|
14692
15553
|
|
|
14693
15554
|
An `aria-label` or `aria-labelledby` on the host names the tree too, and
|
|
14694
15555
|
wins over this. */
|
|
14695
15556
|
label?: (HelixHeadlessTree["label"]) | undefined;
|
|
15557
|
+
/** What screen readers hear each time an item moves, in a `reorderable`
|
|
15558
|
+
tree. `{name}` is the item's words, `{position}` its place among its
|
|
15559
|
+
siblings, counting from 1, and `{count}` the number of siblings. */
|
|
15560
|
+
"moved-label"?: (HelixHeadlessTree["movedLabel"]) | undefined;
|
|
15561
|
+
/** What screen readers hear each time an item moves, in a `reorderable`
|
|
15562
|
+
tree. `{name}` is the item's words, `{position}` its place among its
|
|
15563
|
+
siblings, counting from 1, and `{count}` the number of siblings. */
|
|
15564
|
+
movedLabel?: (HelixHeadlessTree["movedLabel"]) | undefined;
|
|
14696
15565
|
/** What a deeper level means: `peer` for no change, `subordinate` for a lower
|
|
14697
15566
|
rank, or `heading` for a parent that heads the items under it.
|
|
14698
15567
|
|
|
@@ -14728,6 +15597,16 @@ branch as a label; a headless consumer reads the attribute and the
|
|
|
14728
15597
|
written here appears in the served markup of every tree anybody renders.
|
|
14729
15598
|
The resting state is the absence of the attribute, which is `peer`. */
|
|
14730
15599
|
nesting?: (HelixHeadlessTree["nesting"]) | undefined;
|
|
15600
|
+
/** What screen readers hear when a click on a grip picks up an item, in a
|
|
15601
|
+
`reorderable` tree. `{name}` is the item's words. */
|
|
15602
|
+
"picked-up-label"?: (HelixHeadlessTree["pickedUpLabel"]) | undefined;
|
|
15603
|
+
/** What screen readers hear when a click on a grip picks up an item, in a
|
|
15604
|
+
`reorderable` tree. `{name}` is the item's words. */
|
|
15605
|
+
pickedUpLabel?: (HelixHeadlessTree["pickedUpLabel"]) | undefined;
|
|
15606
|
+
/** Lets you move items among their siblings, by dragging a grip or with Alt
|
|
15607
|
+
and an arrow. The tree moves no item itself: you move your data on
|
|
15608
|
+
`helix-reorder`. */
|
|
15609
|
+
reorderable?: (HelixHeadlessTree["reorderable"]) | undefined;
|
|
14731
15610
|
/** Whether a reader can check many items, or choose only the items at the
|
|
14732
15611
|
ends. Unset, one item is chosen at a time, branches included.
|
|
14733
15612
|
|
|
@@ -14779,14 +15658,20 @@ export type HelixHeadlessTreeVueEvents = {
|
|
|
14779
15658
|
"helix-activate": HelixHeadlessTreeHelixActivateElementEvent;
|
|
14780
15659
|
/** Fired before the current node changes, and cancelable. Canceling it is the only way to stop the change. */
|
|
14781
15660
|
"helix-before-activate": HelixHeadlessTreeHelixBeforeActivateElementEvent;
|
|
15661
|
+
/** Fired when an item is dropped at a new place among its siblings, in a `reorderable` tree, with the siblings' keys in the new order. Cancelable: cancel it to keep the item where it is. */
|
|
15662
|
+
"helix-before-reorder": HelixHeadlessTreeHelixBeforeReorderElementEvent;
|
|
15663
|
+
/** Fired after `helix-before-reorder` when nobody canceled it. Move your items to the order in `keys`, each an item's `value`, or its words where it has none. Cancelable: cancel it to say the move did not happen. */
|
|
15664
|
+
"helix-reorder": HelixHeadlessTreeHelixReorderElementEvent;
|
|
14782
15665
|
/** Fired when an item is chosen. The item sends it, and you can listen for it on the tree. Cancelable: canceling it changes nothing. */
|
|
14783
15666
|
"helix-select": HelixHeadlessTreeHelixSelectElementEvent;
|
|
14784
15667
|
};
|
|
14785
15668
|
|
|
14786
15669
|
export type HelixHeadlessTrendVueProps = {
|
|
14787
|
-
/** The word read out after the direction when the move is an improvement
|
|
15670
|
+
/** The word read out after the direction when the move is an improvement,
|
|
15671
|
+
`{betterLabel}` in `judgment-label`. */
|
|
14788
15672
|
"better-label"?: (HelixHeadlessTrend["betterLabel"]) | undefined;
|
|
14789
|
-
/** The word read out after the direction when the move is an improvement
|
|
15673
|
+
/** The word read out after the direction when the move is an improvement,
|
|
15674
|
+
`{betterLabel}` in `judgment-label`. */
|
|
14790
15675
|
betterLabel?: (HelixHeadlessTrend["betterLabel"]) | undefined;
|
|
14791
15676
|
/** Which way the measurement moved, as `movement` says it. */
|
|
14792
15677
|
direction?: (HelixHeadlessTrend["direction"]) | undefined;
|
|
@@ -14825,9 +15710,23 @@ revenue up is good news and latency up is bad news, and only the consumer
|
|
|
14825
15710
|
knows which one this is. Set it once per metric and it holds while the
|
|
14826
15711
|
movement changes underneath. */
|
|
14827
15712
|
good?: (HelixHeadlessTrend["good"]) | undefined;
|
|
14828
|
-
/**
|
|
14829
|
-
|
|
14830
|
-
|
|
15713
|
+
/** What the `direction` part says. `{direction}` is the word for the
|
|
15714
|
+
movement, `up-label`, `down-label` or `unchanged-label`, and
|
|
15715
|
+
`{judgment}` is `better` or `worse` where `good` judges the move, so a
|
|
15716
|
+
language whose words agree with the movement writes each phrase whole:
|
|
15717
|
+
`{judgment, select, better {...} worse {...} other {...}}`.
|
|
15718
|
+
`{betterLabel}` and `{worseLabel}` are `better-label` and `worse-label`. */
|
|
15719
|
+
"judgment-label"?: (HelixHeadlessTrend["judgmentLabel"]) | undefined;
|
|
15720
|
+
/** What the `direction` part says. `{direction}` is the word for the
|
|
15721
|
+
movement, `up-label`, `down-label` or `unchanged-label`, and
|
|
15722
|
+
`{judgment}` is `better` or `worse` where `good` judges the move, so a
|
|
15723
|
+
language whose words agree with the movement writes each phrase whole:
|
|
15724
|
+
`{judgment, select, better {...} worse {...} other {...}}`.
|
|
15725
|
+
`{betterLabel}` and `{worseLabel}` are `better-label` and `worse-label`. */
|
|
15726
|
+
judgmentLabel?: (HelixHeadlessTrend["judgmentLabel"]) | undefined;
|
|
15727
|
+
/** The locale the words and `value` are in, such as `de` for `1.234,5`.
|
|
15728
|
+
|
|
15729
|
+
Absent reads the nearest `lang`, then the runtime's own. Set it on a page rendered on a server, so
|
|
14831
15730
|
the server and the browser write the figure alike. */
|
|
14832
15731
|
locale?: (HelixHeadlessTrend["locale"]) | undefined;
|
|
14833
15732
|
/** Which way the measurement moved.
|
|
@@ -14856,9 +15755,11 @@ both are written. The size is written in the `value` part with
|
|
|
14856
15755
|
`format-options` and `locale`, in place of a slotted metric. Absent leaves
|
|
14857
15756
|
the movement to `movement` and the metric to the slot. */
|
|
14858
15757
|
value?: (HelixHeadlessTrend["value"]) | undefined;
|
|
14859
|
-
/** The word read out after the direction when the move is a setback
|
|
15758
|
+
/** The word read out after the direction when the move is a setback,
|
|
15759
|
+
`{worseLabel}` in `judgment-label`. */
|
|
14860
15760
|
"worse-label"?: (HelixHeadlessTrend["worseLabel"]) | undefined;
|
|
14861
|
-
/** The word read out after the direction when the move is a setback
|
|
15761
|
+
/** The word read out after the direction when the move is a setback,
|
|
15762
|
+
`{worseLabel}` in `judgment-label`. */
|
|
14862
15763
|
worseLabel?: (HelixHeadlessTrend["worseLabel"]) | undefined;
|
|
14863
15764
|
};
|
|
14864
15765
|
|
|
@@ -15143,9 +16044,11 @@ ours to promise: the attribute is ignored cross-origin, so a file served
|
|
|
15143
16044
|
from somewhere else opens rather than saves, which is the browser's rule
|
|
15144
16045
|
and not something a player can work around. */
|
|
15145
16046
|
extraControls?: (HelixHeadlessVideo["extraControls"]) | undefined;
|
|
15146
|
-
/** What the control that skips ahead is called
|
|
16047
|
+
/** What the control that skips ahead is called. `{seconds}` is how far, written
|
|
16048
|
+
in the locale, and each language writes the forms it has. */
|
|
15147
16049
|
"forward-label"?: (HelixHeadlessVideo["forwardLabel"]) | undefined;
|
|
15148
|
-
/** What the control that skips ahead is called
|
|
16050
|
+
/** What the control that skips ahead is called. `{seconds}` is how far, written
|
|
16051
|
+
in the locale, and each language writes the forms it has. */
|
|
15149
16052
|
forwardLabel?: (HelixHeadlessVideo["forwardLabel"]) | undefined;
|
|
15150
16053
|
/** What the control that fills the screen is called.
|
|
15151
16054
|
|
|
@@ -15239,9 +16142,13 @@ bar: two of the same control is worse than either placement. */
|
|
|
15239
16142
|
"pause-label"?: (HelixHeadlessVideo["pauseLabel"]) | undefined;
|
|
15240
16143
|
/** The name of the play control while pressing it would pause the video. */
|
|
15241
16144
|
pauseLabel?: (HelixHeadlessVideo["pauseLabel"]) | undefined;
|
|
15242
|
-
/** How the volume is read out
|
|
16145
|
+
/** How the volume is read out. `{percent}` is the volume from 0 to 100,
|
|
16146
|
+
written in the locale, and a language that needs plural forms writes them
|
|
16147
|
+
with `{percent, plural, ...}`. */
|
|
15243
16148
|
"percent-label"?: (HelixHeadlessVideo["percentLabel"]) | undefined;
|
|
15244
|
-
/** How the volume is read out
|
|
16149
|
+
/** How the volume is read out. `{percent}` is the volume from 0 to 100,
|
|
16150
|
+
written in the locale, and a language that needs plural forms writes them
|
|
16151
|
+
with `{percent, plural, ...}`. */
|
|
15245
16152
|
percentLabel?: (HelixHeadlessVideo["percentLabel"]) | undefined;
|
|
15246
16153
|
/** What the control that floats the video over other windows is called. */
|
|
15247
16154
|
"pip-label"?: (HelixHeadlessVideo["pipLabel"]) | undefined;
|
|
@@ -15273,9 +16180,11 @@ this is what a screen reader calls it on arriving. */
|
|
|
15273
16180
|
"remote-label"?: (HelixHeadlessVideo["remoteLabel"]) | undefined;
|
|
15274
16181
|
/** What the control that casts the video to another device is called. */
|
|
15275
16182
|
remoteLabel?: (HelixHeadlessVideo["remoteLabel"]) | undefined;
|
|
15276
|
-
/** What the control that skips back is called
|
|
16183
|
+
/** What the control that skips back is called. `{seconds}` is how far, written
|
|
16184
|
+
in the locale, and each language writes the forms it has. */
|
|
15277
16185
|
"rewind-label"?: (HelixHeadlessVideo["rewindLabel"]) | undefined;
|
|
15278
|
-
/** What the control that skips back is called
|
|
16186
|
+
/** What the control that skips back is called. `{seconds}` is how far, written
|
|
16187
|
+
in the locale, and each language writes the forms it has. */
|
|
15279
16188
|
rewindLabel?: (HelixHeadlessVideo["rewindLabel"]) | undefined;
|
|
15280
16189
|
/** What the scrubber is called. */
|
|
15281
16190
|
"seek-label"?: (HelixHeadlessVideo["seekLabel"]) | undefined;
|
|
@@ -15475,7 +16384,8 @@ arrive. The list does not ask for more while it is set. */
|
|
|
15475
16384
|
loadingLabel?: (HelixHeadlessVirtualList["loadingLabel"]) | undefined;
|
|
15476
16385
|
/** Places each row by its own measured height. Without it, rows are placed
|
|
15477
16386
|
by one height: `estimate` until rows are drawn, then the drawn rows' height,
|
|
15478
|
-
read once.
|
|
16387
|
+
read once. Rows that come out different heights are placed by their own
|
|
16388
|
+
heights either way.
|
|
15479
16389
|
|
|
15480
16390
|
**Off by default, because the straight line is better when it holds.** One
|
|
15481
16391
|
height makes offset and index convert by division, which can never
|
|
@@ -15539,6 +16449,8 @@ export type CustomCssProperties = {
|
|
|
15539
16449
|
"--bar-chart-secondary"?: (string) | undefined;
|
|
15540
16450
|
/** The gradient for a bar, named per bar so the styled tier can use it as the `fill`. It is always drawn, and used only when `wash="gradient"` is set. */
|
|
15541
16451
|
"--chart-bar-wash"?: (string) | undefined;
|
|
16452
|
+
/** Written on the control inside each toggle button of a group with `selection-mode`: `1` while it is pressed and `0` while it is not. Read it in a `::part(button)` rule to draw the pressed look. */
|
|
16453
|
+
"--button-group-pressed"?: (string) | undefined;
|
|
15542
16454
|
/** Space between slides. Your stylesheet sets it, and the component uses it to measure the run. */
|
|
15543
16455
|
"--carousel-gap"?: (string) | undefined;
|
|
15544
16456
|
/** The size of one pane. Your stylesheet sets it, and the component uses it to measure the run. */
|
|
@@ -15721,7 +16633,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15721
16633
|
HelixHeadlessAccordionVueProps,
|
|
15722
16634
|
HelixHeadlessAccordionVueEvents
|
|
15723
16635
|
>;
|
|
15724
|
-
/** An announcement is a banner above the page header with news about the whole site or session, such as a trial ending, a degraded service, or a change of terms. For a passage inside a document, use 'Callout', which stays where it is placed and cannot be dismissed. The announcement is always a polite live region, whatever its 'tone'. 'role="alert"' is assertive and interrupts a screen reader, so an announcement served with the page would interrupt on every page load. The live region is its own part. When the announcement appears after the page has loaded, the message is written into the region one frame later, so screen readers read it reliably, and the region is emptied seven seconds later. While the region holds the copy, the message itself is hidden from screen readers, so it is in the page once. When the announcement is in the served HTML, the region stays empty and nothing is read out. The dismiss button fires 'helix-dismiss', and the announcement stays in the document, so remove it in your listener. The event is cancelable, and 'dismiss()' returns 'false' when a listener calls 'preventDefault()'. When your listener removes an announcement whose dismiss button has focus, focus moves to the dismiss button of the announcement beside it. With no other announcement beside it, move focus yourself, for example to the page's main heading. Set 'duration' to dismiss it after a time. The clock stops while the pointer or focus is on the announcement, and continues from what was left, so a reader partway through is not cut off. It stops while the page is hidden too, in another tab or a minimized window, so the message is not spent where nobody can see it. While the clock is stopped the announcement carries ':state(paused)'. When the time runs out it sends 'helix-dismiss', as the button does. */
|
|
16636
|
+
/** An announcement is a banner above the page header with news about the whole site or session, such as a trial ending, a degraded service, or a change of terms. For a passage inside a document, use 'Callout', which stays where it is placed and cannot be dismissed. The announcement is always a polite live region, whatever its 'tone'. 'role="alert"' is assertive and interrupts a screen reader, so an announcement served with the page would interrupt on every page load. The live region is its own part. When the announcement appears after the page has loaded, the message is written into the region one frame later, so screen readers read it reliably, and the region is emptied seven seconds later. While the region holds the copy, the message itself is hidden from screen readers, so it is in the page once. When the announcement is in the served HTML, the region stays empty and nothing is read out. The dismiss button fires 'helix-dismiss', and the announcement stays in the document, so remove it in your listener. The event is cancelable, and 'dismiss()' returns 'false' when a listener calls 'preventDefault()'. When your listener removes an announcement whose dismiss button has focus, focus moves to the dismiss button of the announcement beside it. With no other announcement beside it, move focus yourself, for example to the page's main heading. **The announcement is a landmark region**, named by 'label', "Announcement" unless you set it, so a screen reader lists it among the page's regions. 'hotkey', F6 unless you set it, moves focus to the announcement's first control, an action or the dismiss button, and pressed there moves focus back to where it was, as React Aria's toast region does. An announcement with no control leaves the key to the browser. When an announcement that the key moved focus into is removed with focus still inside, focus goes back to where it was before the key. **Set 'queued' to show several announcements one at a time.** A queued announcement waits while a queued announcement before it in the same parent is still there, and shows when that one is removed: its message is then read out, and its 'duration' starts. While it waits it renders nothing, is no region, and carries ':state(waiting)'. A server cannot see the announcements beside it, so a served page shows every one until the script runs. Set 'duration' to dismiss it after a time. The clock stops while the pointer or focus is on the announcement, and continues from what was left, so a reader partway through is not cut off. It stops while the page is hidden too, in another tab or a minimized window, so the message is not spent where nobody can see it. While the clock is stopped the announcement carries ':state(paused)'. When the time runs out it sends 'helix-dismiss', as the button does. */
|
|
15725
16637
|
"helix-headless-announcement": DefineCustomElement<
|
|
15726
16638
|
HelixHeadlessAnnouncement,
|
|
15727
16639
|
HelixHeadlessAnnouncementVueProps,
|
|
@@ -15763,7 +16675,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15763
16675
|
HelixHeadlessBarChartVueProps,
|
|
15764
16676
|
HelixHeadlessBarChartVueEvents
|
|
15765
16677
|
>;
|
|
15766
|
-
/** Renders a
|
|
16678
|
+
/** Renders a figure holding the '<blockquote>' and a caption for the attribution, the structure the HTML spec describes. The attribution sits outside the quotation because it is about the quotation, and it names the figure, so a screen reader reads the source as the figure's caption. **The figure is a '<div role="figure">'**, so the headless tier draws no space around the quotation. A '<figure>' takes a 40px indent and a line of space above and below from the browser's own sheet, which every page had to reset. The '<blockquote>' keeps its own margins, as a bare one does. A screen reader meets the same figure, named by its caption. **A figure only while there is an attribution.** With nothing in the caption the figure has no name and nothing to say, so the role and its name are dropped and a reader meets the quotation alone. A server cannot see what is slotted, so it serves the figure, and the client drops it after hydration; an 'attribution' written as words is served exactly. **Quotation marks follow the language**, under 'marks'. The opening mark is the one the browser sets for a '<q>' in the element's language, „ under 'lang="de"' and « under 'lang="fr"', and a 'Quote' inside the passage takes the inner marks. The mark is drawn, not read: a screen reader hears the passage. A passage under 'marks' that starts with a mark typed into the text would show two, and warns once, with the runtime kind 'typed-marks'. **'cite' is the source's URL**, which the browser keeps and does not show. Words in it, such as the author's name, warn once, with the runtime kind 'cite-not-url'. For a quotation inside a sentence, use 'Quote'. */
|
|
15767
16679
|
"helix-headless-blockquote": DefineCustomElement<
|
|
15768
16680
|
HelixHeadlessBlockquote,
|
|
15769
16681
|
HelixHeadlessBlockquoteVueProps,
|
|
@@ -15781,7 +16693,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15781
16693
|
HelixHeadlessBreadcrumbsVueProps,
|
|
15782
16694
|
HelixHeadlessBreadcrumbsVueEvents
|
|
15783
16695
|
>;
|
|
15784
|
-
/** Sets 'role="group"' on the host through internals, and 'label' names the group. Without a name, a screen reader announces the buttons as separate controls, and a development build warns once with the kind 'missing-name'. The group does not manage focus, so each button keeps its own tab stop. For one tab stop with arrow keys between
|
|
16696
|
+
/** Sets 'role="group"' on the host through internals, and 'label' names the group. Without a name, a screen reader announces the buttons as separate controls, and a development build warns once with the kind 'missing-name'. The group does not manage focus, so each button keeps its own tab stop. For one tab stop with arrow keys between a mix of controls, the APG toolbar pattern, use Toolbar. Buttons are slotted, so they stay your own elements and keep their own appearance and size. **Buttons that stay pressed.** With 'selection-mode', each button with a 'value' is a toggle button: a press presses or releases it, and it says so with 'aria-pressed'. 'single' keeps one pressed at a time, and a press on the pressed one releases it. 'multiple' lets any number be pressed. 'value' is the pressed values, comma separated. A press sends a cancelable 'helix-before-change' with the value it would leave, then 'change'. The pressed state is written on the control inside each button's shadow root, so the markup you rendered is never changed and a framework hydrating it sees what its server sent. That is also why only Helix buttons are toggles: a native '<button>' or a button without a 'value' stays a plain action button in the group, and a native one without its own 'aria-pressed' warns once, with the runtime kind 'untold-toggle'. The inner control also carries '--button-group-pressed', '1' or '0', for a '::part(button)' rule of yours. Use Toggle Group instead for a choice that belongs in a form, or one where the arrow keys choose as they move: it is a 'radiogroup' of options with a form value, 'required' and validation. A Button Group in a selection mode is a set of actions that stay on, such as bold and italic, or a view that a press switches, and it submits nothing. **Keyboard.** In a selection mode the group is one tab stop: the button focus was last on, then the first pressed one, then the first one. | Key | What it does | |---|---| | Right, Down | Moves to the next button, from the last back to the first. | | Left, Up | Moves to the button before, from the first round to the last. | | Home, End | Moves to the first or the last button. | | Space, Enter | Presses or releases the focused button. | Left and Right swap on a right-to-left page, and a disabled button is passed over. In a selection mode the group is a 'toolbar', with 'aria-orientation' under 'orientation="vertical"'. Inside a toolbar it stays a named 'group', and the toolbar's own arrow keys walk its buttons, so a reader meets one toolbar. */
|
|
15785
16697
|
"helix-headless-button-group": DefineCustomElement<
|
|
15786
16698
|
HelixHeadlessButtonGroup,
|
|
15787
16699
|
HelixHeadlessButtonGroupVueProps,
|
|
@@ -15811,7 +16723,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15811
16723
|
HelixHeadlessCanvasNodeVueProps,
|
|
15812
16724
|
HelixHeadlessCanvasNodeVueEvents
|
|
15813
16725
|
>;
|
|
15814
|
-
/** A board of cards and connectors, drawn by Helix. On a canvas every position is data that someone placed, so drawing is arithmetic over rectangles with no layout to compute. 'Map' takes a slotted map, because another renderer draws its tiles. The format is [JSON Canvas](https://jsoncanvas.org), an open format. Each node has an 'x', 'y', 'width', 'height', and a type. Each edge names the two nodes it joins and the sides it leaves and arrives on. A card belongs to a group when it sits inside the group's bounds. The cards are text in the DOM, so a screen reader can read them. The family adds a reading order and states each card's connections as text. 'order' sets the reading order: - 'spatial' bands the cards into rows. - 'edges' follows the arrows, starting from the cards that nothing points to. **Cards move by default.** The board writes the new 'x' and 'y' onto the card, the way an input writes its own value, and dispatches two events: - 'helix-before-move' for every step. Cancel it to hold the positions in your own state and apply them yourself. - 'helix-move' once the move is finished. A resize dispatches the same pair with a size. Set 'readonly' on the board to keep every card in place, such as on a published board. Set 'readonly' on one card or connection to keep only that one in place. Keyboard behavior: - One card holds the board's tab stop. - The arrow keys move through the cards in reading order. The card you land on scrolls into view, and its connections are announced with it. - Shift with an arrow key moves the card. - The connections leaving a card are stops of their own, straight after it. Enter on one moves to the card it arrives at. Every drag also works with clicks, as WCAG 2.5.7 requires for a pointer that cannot hold a button down. Click a selected card's move handle, a corner, a card's connection point, or the end of a selected connection to pick it up. It follows the pointer with no button held, and the next click puts it down where a drag would have. On touch, the next tap sets where it lands. Escape, or a press outside the board, puts it back. Connecting and removing dispatch requests, and your code applies them: - Drawing from a card's handle to another card, or pressing C on one card and Enter on another, dispatches 'helix-connect'. - Delete on a card or a connection dispatches 'helix-remove'. The event names every connection that removing the card would leave without an end. The board applies a move itself, because the card already exists. A connection is a new element, and React discards an element the board adds to its markup on the next render, so you write the connection. Cards and connections are 'helix-canvas-node' and 'helix-canvas-edge' elements, so they are in the served markup whichever renderer wrote them. The library fetches nothing, and an array passed to an element is missing from the first paint of a server-rendered React page. 'fromJsonCanvas' turns a JSON Canvas document into their props, and 'toJsonCanvas()' writes a board back out. */
|
|
16726
|
+
/** A board of cards and connectors, drawn by Helix. On a canvas every position is data that someone placed, so drawing is arithmetic over rectangles with no layout to compute. 'Map' takes a slotted map, because another renderer draws its tiles. The format is [JSON Canvas](https://jsoncanvas.org), an open format. Each node has an 'x', 'y', 'width', 'height', and a type. Each edge names the two nodes it joins and the sides it leaves and arrives on. A card belongs to a group when it sits inside the group's bounds. The cards are text in the DOM, so a screen reader can read them. The family adds a reading order and states each card's connections as text. 'order' sets the reading order: - 'spatial' bands the cards into rows. - 'edges' follows the arrows, starting from the cards that nothing points to. **Cards move by default.** The board writes the new 'x' and 'y' onto the card, the way an input writes its own value, and dispatches two events: - 'helix-before-move' for every step. Cancel it to hold the positions in your own state and apply them yourself. - 'helix-move' once the move is finished. A resize dispatches the same pair with a size. Set 'readonly' on the board to keep every card in place, such as on a published board. Set 'readonly' on one card or connection to keep only that one in place. Set 'snap' to a length in the document's units, such as '32', and a card that is moved or resized lands on a multiple of it. Carrying a card, a corner, a connection, or the selection box near the edge of the board moves the board under it, so a card can be taken to a place off screen in one drag. A connection let go within 20 pixels of a card arrives at it. A double click on the empty board zooms in about that point, and Shift with a double click zooms out. Keyboard behavior: - One card holds the board's tab stop. - The arrow keys move through the cards in reading order. The card you land on scrolls into view, and its connections are announced with it. - Shift with an arrow key moves the card: by 16 units, or to the next multiple of 'snap' where it is set. Alt with an arrow key resizes it from its bottom right corner the same way. - The connections leaving a card are stops of their own, straight after it. Enter on one moves to the card it arrives at. - What a key changes that a reader cannot see is said: where a card moved to, its new size, how many cards are selected, and the zoom. A selected card or connection says so when a reader arrives on it. Every drag also works with clicks, as WCAG 2.5.7 requires for a pointer that cannot hold a button down. Click a selected card's move handle, a corner, a card's connection point, or the end of a selected connection to pick it up. It follows the pointer with no button held, and the next click puts it down where a drag would have. On touch, the next tap sets where it lands. Escape, or a press outside the board, puts it back. So a finger connects two cards with three taps: the card, one of its points, and the card to connect to. Connecting and removing dispatch requests, and your code applies them: - Drawing from a card's handle to another card, or pressing C on one card and Enter on another, dispatches 'helix-connect'. - Delete on a card or a connection dispatches 'helix-remove'. The event names every connection that removing the card would leave without an end. Once your page removes what Delete asked for, focus moves to the next stop, to the one before where it was the last, and to the board where none is left. A focused card your page removes for its own reasons hands focus on the same way, unless the reader has already moved focus somewhere else. The board applies a move itself, because the card already exists. A connection is a new element, and React discards an element the board adds to its markup on the next render, so you write the connection. Cards and connections are 'helix-canvas-node' and 'helix-canvas-edge' elements, so they are in the served markup whichever renderer wrote them. The library fetches nothing, and an array passed to an element is missing from the first paint of a server-rendered React page. 'fromJsonCanvas' turns a JSON Canvas document into their props, and 'toJsonCanvas()' writes a board back out. */
|
|
15815
16727
|
"helix-headless-canvas": DefineCustomElement<
|
|
15816
16728
|
HelixHeadlessCanvas,
|
|
15817
16729
|
HelixHeadlessCanvasVueProps,
|
|
@@ -15883,7 +16795,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15883
16795
|
HelixHeadlessColorPickerVueProps,
|
|
15884
16796
|
HelixHeadlessColorPickerVueEvents
|
|
15885
16797
|
>;
|
|
15886
|
-
/** The list is a 'Listbox', which handles filtering, the empty state, the highlight, 'aria-activedescendant', and scrolling an option into view. This element handles the field, the panel, and the communication between them. The typed text and the value are separate. The text is a filter: it narrows the list and is then discarded. The value is the option you choose, and the field then shows that option's text. The filter clears on close, so a reopened combobox starts from the whole list. Focus stays in the text field. The arrow keys move through the list with the listbox's public 'navigate' method.
|
|
16798
|
+
/** The list is a 'Listbox', which handles filtering, the empty state, the highlight, 'aria-activedescendant', and scrolling an option into view. This element handles the field, the panel, and the communication between them. The typed text and the value are separate. The text is a filter: it narrows the list and is then discarded. The value is the option you choose, and the field then shows that option's text. The filter clears on close, so a reopened combobox starts from the whole list. Focus stays in the text field. The arrow keys move through the list with the listbox's public 'navigate' method. As typing narrows the list, a screen reader hears how many options are left, such as "3 results". Emptying the field and leaving it clears a single choice. **Keyboard.** | Key | What it does | |---|---| | Down, Up | On a closed field, opens the list on the chosen option, or the first or the last. In the open list, moves the highlight, round from the last option to the first. | | Page Down, Page Up | In the open list, moves the highlight by as many options as the list shows at once. | | Enter | Chooses the highlighted option. With nothing left in the list, creates what was typed with 'creatable', or takes it with 'allows-custom-value'. On a closed field, submits the form. | | Escape | Closes the list and puts the chosen words back. On a closed field, a second Escape clears a single choice. | | Tab | Closes the list and moves on. | | Backspace | With 'multiple', on an empty field, removes the last tag. | | Space, Home, End, letters | Edit the text. | **ARIA.** The input is the 'combobox', named by the label, with 'aria-expanded', 'aria-controls' naming the list, 'aria-autocomplete' ('both' with 'suggest', 'list' otherwise) and 'aria-activedescendant' on the highlighted option. The list is the listbox 'Listbox' describes. On Apple devices, where VoiceOver does not read the option the field points to, the field says it in a live region as the highlight moves, says how many options there are as the list opens, and says a choice once it is made, as React Aria's combobox does there. Set 'autocomplete' to let a browser's autofill choose an option. With 'multiple', each chosen option is a tag in the field with its own remove control. The panel stays open and the filter clears after each choice, so the next choice starts from the whole list. With 'creatable', the combobox offers a create row and fires 'helix-create'. It does not add the option. The options are your light DOM, and your framework would re-render over an element the combobox inserted, so add the option in your event handler. */
|
|
15887
16799
|
"helix-headless-combobox": DefineCustomElement<
|
|
15888
16800
|
HelixHeadlessCombobox,
|
|
15889
16801
|
HelixHeadlessComboboxVueProps,
|
|
@@ -15901,7 +16813,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15901
16813
|
HelixHeadlessCopyButtonVueProps,
|
|
15902
16814
|
HelixHeadlessCopyButtonVueEvents
|
|
15903
16815
|
>;
|
|
15904
|
-
/** Declare the columns as 'TableColumn' children and pass the rows as an array. The schema stays readable in the HTML, and the rows can be windowed, which ten thousand row elements cannot be. '''html <helix-headless-data-table .rows=${rows} sort="name:asc" page-size="20"> <helix-headless-table-column field="name" sortable>Name</helix-headless-table-column> <helix-headless-table-column field="size" text-align="end" sortable .cell=${bytes}>Size</helix-headless-table-column> </helix-headless-data-table> ''' For a short table written out by hand, use 'Table', which takes rows as markup. Sort and filter apply to the whole set, including the rows on other pages. **The cell values do not server-render.** The headings and the row elements do. Reading a cell needs the columns, and Lit SSR does not pass the column children to this element, so a crawler sees an empty table of the right shape. Use 'Table' when the served HTML has to carry the values. 'selectable' adds a column of checkboxes, keyed on 'row-key': - A row is selected by its key, so the selection survives a sort, a filter, and a page change. - 'selected' holds the chosen keys, comma separated, the same shape 'Listbox' uses for a multiple choice. As with 'sort', writing it applies the selection, and 'default-selected' holds what the markup declared. - The checkbox in the heading selects every row in the result, across pages, and shows a dash while only some are chosen. - Shift with a press on a checkbox selects every row between it and the row last chosen. To act on a single row, such as opening it, put a link or a button in a cell. **Keyboard.** The grid is one tab stop, and the arrow keys move between its cells, the headings included. | Key | What it does | |---|---| | Right, Left | Moves one cell along the row. Left moves on, on a right-to-left page. | | Down, Up | Moves one row, the heading row and the 'load-more' row included. | | Home, End | Moves to the first or the last cell of the row. | | Control with Home or End | Moves to the first or the last cell of the grid. | | Page Down, Page Up | Moves by the rows that fit in view. | | Enter, F2 | Moves into the cell's controls. Escape moves back to the cell, and Tab moves between the controls of one cell. | | Enter, Space on a sortable heading | Sorts by the column. | | Enter, Space on the 'load-more' row | Sends 'helix-load-more'. | | Space on a row | Selects the row, in a 'selectable' table. | | Shift with Down or Up | Selects the rows it moves across, in a 'selectable' table. | | Shift with Space | Selects every row from the one last chosen, in a 'selectable' table. | | Control or Command with A | Selects every row, in a 'selectable' table. | | Right on a row header in a tree grid | Opens a closed row, and moves one cell along an open one. | | Left on a row header in a tree grid | Closes an open row, and moves to the parent of a closed one. | | A letter or a word | Moves to the next row whose row header starts with what you typed. | 'selected' and 'expanded' hold their keys in the order of the rows, as do 'helix-select', 'helix-selected' and 'helix-expand'. Each row is named by its row header, the column marked 'row-header', or the first column with a 'field' where none is. A screen reader says it as a reader moves between rows. **Rows that hold rows.** 'child-field' names the field that holds a row's child rows, and the grid becomes a tree grid. The row header column draws a mark that a press opens and closes a row by, and 'expanded' holds the keys of the open rows, which 'row-key' names. Right on a closed row's header opens it, Left on an open one closes it, and Left on a child moves to its parent. A sort orders the rows under each parent, and a search shows the rows that lead to each match, open. 'load-more' adds a row after the last one with a button that sends 'helix-load-more'. A 'windowed' table also sends it by itself once a reader scrolls within one screen of the end, once for each number of rows. Add the next rows to 'rows', and set 'loading' while they are on their way. The controls inside the cells leave the tab order, so Tab moves past the whole grid. A windowed table keeps the row holding focus drawn while the rest scroll away. People can resize and reorder the columns. 'resizable' on a column puts a separator on its edge. 'reorderable' on the table puts a grip on each heading that has a 'field', moved by dragging or with the arrow keys. The new order is written to 'order' as a list of fields. Your markup is not rewritten: the table assigns the headings to its header in that order. 'csv()' returns the result as text: every row that passes the filter, in the order and the columns on screen. Saving the file is up to you. 'DataTable' has no 'columns' attribute. Each 'TableColumn' is part of the schema, so you size a column with its own 'width'. 'Table' has 'columns' because its cells are markup you write and it can have no columns at all. Written on 'DataTable', 'columns' has no effect, so watch for it when you move a table from 'Table' to 'DataTable'. */
|
|
16816
|
+
/** Declare the columns as 'TableColumn' children and pass the rows as an array. The schema stays readable in the HTML, and the rows can be windowed, which ten thousand row elements cannot be. '''html <helix-headless-data-table .rows=${rows} sort="name:asc" page-size="20"> <helix-headless-table-column field="name" sortable>Name</helix-headless-table-column> <helix-headless-table-column field="size" text-align="end" sortable .cell=${bytes}>Size</helix-headless-table-column> </helix-headless-data-table> ''' For a short table written out by hand, use 'Table', which takes rows as markup. Sort and filter apply to the whole set, including the rows on other pages. **The cell values do not server-render.** The headings and the row elements do. Reading a cell needs the columns, and Lit SSR does not pass the column children to this element, so a crawler sees an empty table of the right shape. Use 'Table' when the served HTML has to carry the values. 'selectable' adds a column of checkboxes, keyed on 'row-key': - A row is selected by its key, so the selection survives a sort, a filter, and a page change. - 'selected' holds the chosen keys, comma separated, the same shape 'Listbox' uses for a multiple choice. As with 'sort', writing it applies the selection, and 'default-selected' holds what the markup declared. - The checkbox in the heading selects every row in the result, across pages, and shows a dash while only some are chosen. - Shift with a press on a checkbox selects every row between it and the row last chosen. To act on a single row, such as opening it, put a link or a button in a cell. **Keyboard.** The grid is one tab stop, and the arrow keys move between its cells, the headings included. | Key | What it does | |---|---| | Right, Left | Moves one cell along the row. Left moves on, on a right-to-left page. | | Down, Up | Moves one row, the heading row and the 'load-more' row included. | | Home, End | Moves to the first or the last cell of the row. | | Control with Home or End | Moves to the first or the last cell of the grid. | | Page Down, Page Up | Moves by the rows that fit in view. | | Enter, F2 | Moves into the cell's controls. Escape moves back to the cell, and Tab moves between the controls of one cell. | | Enter, Space on a sortable heading | Sorts by the column. | | Enter, Space on the 'load-more' row | Sends 'helix-load-more'. | | Space on a row | Selects the row, in a 'selectable' table. | | Shift with Down or Up | Selects the rows it moves across, in a 'selectable' table. | | Shift with Space | Selects every row from the one last chosen, in a 'selectable' table. | | Control or Command with A | Selects every row, in a 'selectable' table. | | Right on a row header in a tree grid | Opens a closed row, and moves one cell along an open one. | | Left on a row header in a tree grid | Closes an open row, and moves to the parent of a closed one. | | A letter or a word | Moves to the next row whose row header starts with what you typed. | 'selected' and 'expanded' hold their keys in the order of the rows, as do 'helix-select', 'helix-selected' and 'helix-expand'. Each row is named by its row header, the column marked 'row-header', or the first column with a 'field' where none is. A screen reader says it as a reader moves between rows. **Rows that hold rows.** 'child-field' names the field that holds a row's child rows, and the grid becomes a tree grid. The row header column draws a mark that a press opens and closes a row by, and 'expanded' holds the keys of the open rows, which 'row-key' names. Right on a closed row's header opens it, Left on an open one closes it, and Left on a child moves to its parent. A sort orders the rows under each parent, and a search shows the rows that lead to each match, open. 'load-more' adds a row after the last one with a button that sends 'helix-load-more'. A 'windowed' table also sends it by itself once a reader scrolls within one screen of the end, once for each number of rows. Add the next rows to 'rows', and set 'loading' while they are on their way. The controls inside the cells leave the tab order, so Tab moves past the whole grid. A windowed table keeps the row holding focus drawn while the rest scroll away. People can resize and reorder the columns. 'resizable' on a column puts a separator on its edge. 'reorderable' on the table puts a grip on each heading that has a 'field', moved by dragging or with the arrow keys. The new order is written to 'order' as a list of fields. Your markup is not rewritten: the table assigns the headings to its header in that order. **'reorderable-rows' lets people move rows.** A column of grips leads each row, named by 'move-row-label'. Drag a grip to move its row, and the table scrolls near an edge. Or press Space or Enter on a grip, or click it, to pick up its row, move it with Down and Up, Home and End, and press Space or Enter again to drop it. A click on another row drops it there, and Escape puts it back. The table says each step in its 'live' region. A drop sends 'helix-before-reorder', which you can refuse, and then 'helix-reorder' with 'kind' set to 'row', whose 'keys' hold every key of 'rows' in the new order. **You move the rows**: set 'rows' to the new order, and the table draws it. Set 'row-key', so a row is known by its key once it has moved. The grips do nothing while a 'sort' is set, since the sort decides the order, and a tree grid draws none. 'csv()' returns the result as text: every row that passes the filter, in the order and the columns on screen. Saving the file is up to you. 'DataTable' has no 'columns' attribute. Each 'TableColumn' is part of the schema, so you size a column with its own 'width'. 'Table' has 'columns' because its cells are markup you write and it can have no columns at all. Written on 'DataTable', 'columns' has no effect, so watch for it when you move a table from 'Table' to 'DataTable'. */
|
|
15905
16817
|
"helix-headless-data-table": DefineCustomElement<
|
|
15906
16818
|
HelixHeadlessDataTable,
|
|
15907
16819
|
HelixHeadlessDataTableVueProps,
|
|
@@ -15913,7 +16825,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15913
16825
|
HelixHeadlessDateInputVueProps,
|
|
15914
16826
|
HelixHeadlessDateInputVueEvents
|
|
15915
16827
|
>;
|
|
15916
|
-
/** A grid of days that follows the APG date grid pattern: - The grid is one tab stop. Only the focused cell is in the tab sequence. - Arrow keys move by day and by week. - 'PageUp' and 'PageDown' move by month. - 'Home' and 'End' move to the start and end of the week. **Dates are 'YYYY-MM-DD' strings, and every calculation is in UTC**, because a local-time 'Date' shifts across a time zone or daylight-saving boundary. 'month' sets which month the grid shows, separately from 'value', so paging selects nothing and you can control the view. When unset, it follows the first selected date, then the current month. 'mode' sets how many dates are held. Unset holds one, 'range' holds two and marks the dates between them, and 'multiple' toggles each date. All three read and write the same comma-separated 'value'. 'max-view' makes the heading a button that steps back to the months of the year, and with 'year' to a page of years, as Zag's date picker does. The arrows, Home, End and the page keys move there, Enter or a press chooses, and Escape goes back to the days. 'isDateUnavailable' and 'dayContent' are properties for a script: a rule that bars dates, and what each day shows in place of its number. The month heading is a live region, so a screen reader hears the new month when Previous or Next is pressed. Neither moves past 'min' or 'max', and the keys stop at them too. A value outside the bounds, on a barred day, or off 'step' reports 'rangeUnderflow', 'rangeOverflow', 'badInput' or 'stepMismatch', so a form does not submit it. */
|
|
16828
|
+
/** A grid of days that follows the APG date grid pattern: - The grid is one tab stop. Only the focused cell is in the tab sequence. - Arrow keys move by day and by week. - 'PageUp' and 'PageDown' move by month. - 'Home' and 'End' move to the start and end of the week. **Dates are 'YYYY-MM-DD' strings, and every calculation is in UTC**, because a local-time 'Date' shifts across a time zone or daylight-saving boundary. **The days are the Gregorian calendar's**, written in 'calendar': the locale's own where its months are the Gregorian months, as 'th-TH' writes 2569 for 2026, and 'gregory' where they are not, as for 'fa-IR'. 'month' sets which month the grid shows, separately from 'value', so paging selects nothing and you can control the view. When unset, it follows the first selected date, then the current month. 'mode' sets how many dates are held. Unset holds one, 'range' holds two and marks the dates between them, and 'multiple' toggles each date. All three read and write the same comma-separated 'value'. 'max-view' makes the heading a button that steps back to the months of the year, and with 'year' to a page of years, as Zag's date picker does. The arrows, Home, End and the page keys move there, Enter or a press chooses, and Escape goes back to the days. 'isDateUnavailable' and 'dayContent' are properties for a script: a rule that bars dates, and what each day shows in place of its number. The month heading is a live region, so a screen reader hears the new month when Previous or Next is pressed. Neither moves past 'min' or 'max', and the keys stop at them too. A value outside the bounds, on a barred day, or off 'step' reports 'rangeUnderflow', 'rangeOverflow', 'badInput' or 'stepMismatch', so a form does not submit it. */
|
|
15917
16829
|
"helix-headless-date-picker": DefineCustomElement<
|
|
15918
16830
|
HelixHeadlessDatePicker,
|
|
15919
16831
|
HelixHeadlessDatePickerVueProps,
|
|
@@ -15931,13 +16843,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15931
16843
|
HelixHeadlessDescriptionListVueProps,
|
|
15932
16844
|
HelixHeadlessDescriptionListVueEvents
|
|
15933
16845
|
>;
|
|
15934
|
-
/** Renders a native '<dialog>' opened with 'showModal()'. The platform provides: - the top layer, so the dialog is above everything whatever the 'z-index' - a backdrop - closing with Escape - an inert page behind the dialog, unreachable by pointer, keyboard, or virtual cursor The dialog adds one thing to those: 'Tab' from its last control goes to its first, and 'Shift+Tab' from its first to its last. A native modal lets 'Tab' past its last control out to the browser's own controls. 'open' calls 'showModal()', and every way the dialog closes goes through 'requestOpen'. A native dialog closes three ways: the property, Escape, and a '<form method="dialog">' submit. Routing all three through 'requestOpen' keeps your state in step, so the dialog never closes while your state still says it is open, which would leave it impossible to reopen. The dialog's name is 'label' when you set it. Otherwise it is the heading in the 'header' slot, or the elements an 'aria-labelledby' on the host names. While it is open, the page behind it does not scroll. The dialog is described by the words at the start of its body: the elements in the default slot before the first one that is or holds a control. A question above a form describes the dialog, and the form does not. A Helix component that draws words and no control, such as 'Text', counts as words. An 'aria-describedby' on the host replaces it. Set 'alert' for a dialog that interrupts to ask for an answer, such as a confirmation before a deletion. It is an 'alertdialog', which a screen reader announces with its description as it opens. Set 'dismissible' to draw a close control, labeled by 'dismiss-label'. */
|
|
16846
|
+
/** Renders a native '<dialog>' opened with 'showModal()'. The platform provides: - the top layer, so the dialog is above everything whatever the 'z-index' - a backdrop - closing with Escape - an inert page behind the dialog, unreachable by pointer, keyboard, or virtual cursor The dialog adds one thing to those: 'Tab' from its last control goes to its first, and 'Shift+Tab' from its first to its last. A native modal lets 'Tab' past its last control out to the browser's own controls. 'open' calls 'showModal()', and every way the dialog closes goes through 'requestOpen'. A native dialog closes three ways: the property, Escape, and a '<form method="dialog">' submit. Routing all three through 'requestOpen' keeps your state in step, so the dialog never closes while your state still says it is open, which would leave it impossible to reopen. The dialog's name is 'label' when you set it. Otherwise it is the heading in the 'header' slot, or the elements an 'aria-labelledby' on the host names, and 'fallback-label' where nothing names it. While it is open, the page behind it does not scroll. The dialog is described by the words at the start of its body: the elements in the default slot before the first one that is or holds a control. A question above a form describes the dialog, and the form does not. A Helix component that draws words and no control, such as 'Text', counts as words. An 'aria-describedby' on the host replaces it. Set 'alert' for a dialog that interrupts to ask for an answer, such as a confirmation before a deletion. It is an 'alertdialog', which a screen reader announces with its description as it opens. Set 'dismissible' to draw a close control, labeled by 'dismiss-label'. */
|
|
15935
16847
|
"helix-headless-dialog": DefineCustomElement<
|
|
15936
16848
|
HelixHeadlessDialog,
|
|
15937
16849
|
HelixHeadlessDialogVueProps,
|
|
15938
16850
|
HelixHeadlessDialogVueEvents
|
|
15939
16851
|
>;
|
|
15940
|
-
/** The separator role is on the rule inside the shadow root. A role does not need to cross the shadow boundary the way an IDREF does, so it can sit on the rendered element. The semantics are then in the server-rendered markup, with no attribute written by script after the element connects.
|
|
16852
|
+
/** The separator role is on the rule inside the shadow root. A role does not need to cross the shadow boundary the way an IDREF does, so it can sit on the rendered element. The semantics are then in the server-rendered markup, with no attribute written by script after the element connects. **The line is a separator**, as '<hr>' is, and as Radix Separator, React Aria Separator, and Web Awesome's divider are. It is named by any content set into it, so a screen reader says "Or, separator" where you wrote "Or" on the line. Set 'decorative' on a rule that separates nothing, such as one under a heading or between the facts of a byline, and it leaves the accessibility tree. Use 'orientation="vertical"' between items on one line. A vertical divider stretches to fit its flex parent and sets no height of its own. **Inside a toolbar it runs across the toolbar** without being told: vertical in a horizontal toolbar and horizontal in a vertical one, with 'aria-orientation' to match, as React Aria's separator does inside a toolbar. Inside means a child of Toolbar or of the page's own 'role="toolbar"'. An 'orientation' you write still wins. A server cannot see the toolbar, so the turn arrives with hydration, inside the shadow root. */
|
|
15941
16853
|
"helix-headless-divider": DefineCustomElement<
|
|
15942
16854
|
HelixHeadlessDivider,
|
|
15943
16855
|
HelixHeadlessDividerVueProps,
|
|
@@ -15949,7 +16861,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15949
16861
|
HelixHeadlessDonutChartVueProps,
|
|
15950
16862
|
HelixHeadlessDonutChartVueEvents
|
|
15951
16863
|
>;
|
|
15952
|
-
/** Uses 'MixinControllerOpen', so 'open', 'defaultOpen', and the 'helix-before-open' and 'helix-before-close' events work the same way as on an accordion item. The drawer is modal by default, which means four things: - focus is trapped inside: 'Tab' from the last control goes to the first, and 'Shift+Tab' from the first to the last, as in 'Dialog' - Escape and a press outside close it - the page behind is covered - the page behind does not scroll A drawer with 'modal="false"' leaves the page usable and still closes on Escape, in a browser without 'closedby' as well. **A touch or a pen swipes it away**, toward the edge it came from, resolved against the writing direction. A swipe past halfway, or a quick one, closes it through the same request as every other way out. 'snap-points' lists the fractions of the panel a reader can leave on screen, such as '0.5 1' for a sheet that rests half open: it opens at the smallest, and a swipe settles at the nearest. While a swipe moves the panel, the distance is written on it as '--drawer-swipe-x' and '--drawer-swipe-y'. 'swipe="false"' turns swiping off. 'snap' is the snap point the panel rests at, and ':state(snapped)' is on the host while that is less than the whole panel. 'snapTo()' moves it to another. **Focus moving to a control past the window's edge opens the panel to its largest snap point**, so a reader moving through a half open sheet with 'Tab' never lands on a control they cannot see. Set 'dismissible' to draw a close control in the corner, labeled by 'dismiss-label', as 'Dialog' draws one. The panel's name is 'label' when you set it. Otherwise it is the heading in the 'header' slot, or the elements an 'aria-labelledby' on the host names. Content stays mounted when the drawer is closed, so it is in the server markup and can animate. A closed '<dialog>' is already out of the tab order and the accessibility tree, so the drawer does not write 'inert'. The 'role', 'aria-modal', and the scrim also come from the '<dialog>' element. 'drawer-root.ssr.spec.ts' checks that the panel has no hand-written 'inert' or 'role'. Open the drawer declaratively with the platform's invoker attributes: '''html <helix-headless-button commandfor="nav" command="--toggle">Menu</helix-headless-button> <helix-headless-drawer id="nav">…</helix-headless-drawer> ''' */
|
|
16864
|
+
/** Uses 'MixinControllerOpen', so 'open', 'defaultOpen', and the 'helix-before-open' and 'helix-before-close' events work the same way as on an accordion item. The drawer is modal by default, which means four things: - focus is trapped inside: 'Tab' from the last control goes to the first, and 'Shift+Tab' from the first to the last, as in 'Dialog' - Escape and a press outside close it - the page behind is covered - the page behind does not scroll A drawer with 'modal="false"' leaves the page usable and still closes on Escape, in a browser without 'closedby' as well. **A touch or a pen swipes it away**, toward the edge it came from, resolved against the writing direction. A swipe past halfway, or a quick one, closes it through the same request as every other way out. 'snap-points' lists the fractions of the panel a reader can leave on screen, such as '0.5 1' for a sheet that rests half open: it opens at the smallest, and a swipe settles at the nearest. While a swipe moves the panel, the distance is written on it as '--drawer-swipe-x' and '--drawer-swipe-y'. 'swipe="false"' turns swiping off. 'snap' is the snap point the panel rests at, and ':state(snapped)' is on the host while that is less than the whole panel. 'snapTo()' moves it to another. **Focus moving to a control past the window's edge opens the panel to its largest snap point**, so a reader moving through a half open sheet with 'Tab' never lands on a control they cannot see. Set 'dismissible' to draw a close control in the corner, labeled by 'dismiss-label', as 'Dialog' draws one. The panel's name is 'label' when you set it. Otherwise it is the heading in the 'header' slot, or the elements an 'aria-labelledby' on the host names, and 'fallback-label' where nothing names it. Content stays mounted when the drawer is closed, so it is in the server markup and can animate. A closed '<dialog>' is already out of the tab order and the accessibility tree, so the drawer does not write 'inert'. The 'role', 'aria-modal', and the scrim also come from the '<dialog>' element. 'drawer-root.ssr.spec.ts' checks that the panel has no hand-written 'inert' or 'role'. Open the drawer declaratively with the platform's invoker attributes: '''html <helix-headless-button commandfor="nav" command="--toggle">Menu</helix-headless-button> <helix-headless-drawer id="nav">…</helix-headless-drawer> ''' */
|
|
15953
16865
|
"helix-headless-drawer": DefineCustomElement<
|
|
15954
16866
|
HelixHeadlessDrawer,
|
|
15955
16867
|
HelixHeadlessDrawerVueProps,
|
|
@@ -15967,7 +16879,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
15967
16879
|
HelixHeadlessDrilldownVueProps,
|
|
15968
16880
|
HelixHeadlessDrilldownVueEvents
|
|
15969
16881
|
>;
|
|
15970
|
-
/** Shows what would be in a region and the one action that would fill it, so an empty region does not look like one that failed to load. The message is announced, because an empty view often replaces content that was loading, and the announcement tells a screen reader user that the search returned nothing. It is announced from a status region of its own, which is rendered empty and filled a frame after the view appears. Screen readers read a region that arrives with its text already in it inconsistently. For the seven seconds the region holds its copy, the heading and the message are hidden from screen readers, so the words are in the page once. Every region is a bare slot. There is no 'empty-state-heading' or 'empty-state-actions' element: assign your own heading and actions to the slots. **Or give the heading as words.** 'heading' draws them in a 'heading' part that is a heading at 'heading-level', 3 where it is not set, so a page rendering from data or on a server gets a heading a reader finds in the outline without writing the element. A heading slotted in replaces it. */
|
|
16882
|
+
/** Shows what would be in a region and the one action that would fill it, so an empty region does not look like one that failed to load. The message is announced, because an empty view often replaces content that was loading, and the announcement tells a screen reader user that the search returned nothing. It is announced from a status region of its own, which is rendered empty and filled a frame after the view appears. Screen readers read a region that arrives with its text already in it inconsistently. For the seven seconds the region holds its copy, the heading and the message are hidden from screen readers, so the words are in the page once. Every region is a bare slot. There is no 'empty-state-heading' or 'empty-state-actions' element: assign your own heading and actions to the slots. **Or give the heading as words.** 'heading' draws them in a 'heading' part that is a heading at 'heading-level', 3 where it is not set, so a page rendering from data or on a server gets a heading a reader finds in the outline without writing the element. A heading slotted in replaces it. **Whatever is slotted into 'heading' is read as a heading.** An element that is no heading, such as a '<span>' or a '<p>', is set inside the 'heading' part at 'heading-level', so a screen reader still finds it in the outline. A heading element, or an element holding one, keeps its own level. A server cannot see the slotted element, so a served '<span>' becomes a heading once the script runs. */
|
|
15971
16883
|
"helix-headless-empty": DefineCustomElement<
|
|
15972
16884
|
HelixHeadlessEmpty,
|
|
15973
16885
|
HelixHeadlessEmptyVueProps,
|
|
@@ -16009,7 +16921,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16009
16921
|
HelixHeadlessFilterInputVueProps,
|
|
16010
16922
|
HelixHeadlessFilterInputVueEvents
|
|
16011
16923
|
>;
|
|
16012
|
-
/** Formats a date with 'Intl' where it is shown, so you do not write the same 'Intl' call and options in your own code. **'elapsed' shows compact relative time for a feed**, such as "42m", "3h", or "1d". After six days it shows a date. In en-US, 'Intl.NumberFormat' narrow renders both 'minute' and 'month' as 'm', so a compact "3m" could mean three minutes or three months. 'elapsedTime' in 'helix/core' does the measurement. **'relative' shows the same reading in words**, such as "3 hours ago" at 'long', "3 hr. ago" at 'short' and "3h ago" at 'narrow', the styles 'sl-relative-time' offers. 'numeric="always"' says "1 day ago" where the default says "yesterday". **'date-style' and 'time-style' take each locale's own pattern**, such as "Tuesday, August 4, 2026" at 'full', and stand in for the separate fields, which 'Intl' refuses beside them. 'hour-cycle' sets a twelve or twenty-four hour clock either way. **The text refreshes on one timer shared by the page.** Each element schedules an update for when its current reading expires, and an element showing a date schedules none, so a long feed left open costs almost nothing. 'frozen' draws the reading once and leaves it. **The output is always '<time datetime>'**, so copy and paste and scripts parsing the page get the exact instant, whatever the visible text says. A screen reader reads the text, so an 'elapsed' reading is named in full, such as "3 hours ago", and carries the whole date as its title. **A date with no time, such as '2026-08-04', is that day everywhere.** It is formatted in UTC unless 'time-zone' says otherwise, as Date Input and Date Picker format their dates, so a reader west of UTC sees August 4 and not August 3. */
|
|
16924
|
+
/** Formats a date with 'Intl' where it is shown, so you do not write the same 'Intl' call and options in your own code. **'elapsed' shows compact relative time for a feed**, such as "42m", "3h", or "1d". After six days it shows a date. In en-US, 'Intl.NumberFormat' narrow renders both 'minute' and 'month' as 'm', so a compact "3m" could mean three minutes or three months. 'elapsedTime' in 'helix/core' does the measurement. **'relative' shows the same reading in words**, such as "3 hours ago" at 'long', "3 hr. ago" at 'short' and "3h ago" at 'narrow', the styles 'sl-relative-time' offers. 'numeric="always"' says "1 day ago" where the default says "yesterday". **'date-style' and 'time-style' take each locale's own pattern**, such as "Tuesday, August 4, 2026" at 'full', and stand in for the separate fields, which 'Intl' refuses beside them. 'hour-cycle' sets a twelve or twenty-four hour clock either way. **The text refreshes on one timer shared by the page.** Each element schedules an update for when its current reading expires, and an element showing a date schedules none, so a long feed left open costs almost nothing. 'frozen' draws the reading once and leaves it. **'fields' draws each field of a date as a part of its own**, such as 'day', 'month' and 'year', so a stylesheet can set the year in a lighter ink or the weekday in capitals with '::part()'. The text between the fields is the locale's own and has no part. An 'elapsed' or 'relative' reading is one phrase, with no parts inside it. **The output is always '<time datetime>'**, so copy and paste and scripts parsing the page get the exact instant, whatever the visible text says. A screen reader reads the text, so an 'elapsed' reading is named in full, such as "3 hours ago", and carries the whole date as its title. **A date with no time, such as '2026-08-04', is that day everywhere.** It is formatted in UTC unless 'time-zone' says otherwise, as Date Input and Date Picker format their dates, so a reader west of UTC sees August 4 and not August 3. **A date is written in a calendar Date Picker draws**: the locale's own where its months are the Gregorian months, as 'th-TH' writes 2569 for 2026, and 'gregory' where they are not, as for 'fa-IR'. 'calendar' picks one of the five. */
|
|
16013
16925
|
"helix-headless-format-date": DefineCustomElement<
|
|
16014
16926
|
HelixHeadlessFormatDate,
|
|
16015
16927
|
HelixHeadlessFormatDateVueProps,
|
|
@@ -16039,7 +16951,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16039
16951
|
HelixHeadlessIconVueProps,
|
|
16040
16952
|
HelixHeadlessIconVueEvents
|
|
16041
16953
|
>;
|
|
16042
|
-
/** Image handles the part CSS cannot: when the picture has loaded, or that it failed. 'aspect-ratio' in your stylesheet reserves the box. The element tracks three states and relays the two events that move between them, and leaves the box to the stylesheet. The 'placeholder' slot is empty by default, so the headless tier does not depend on 'Skeleton', which it does not ship. The placeholder is hidden from screen readers, the picture having a name of its own. The fallback is read once the picture fails, after the picture's 'alt', so a reader hears that it did not load, as a sighted reader sees. */
|
|
16954
|
+
/** Image handles the part CSS cannot: when the picture has loaded, or that it failed. 'aspect-ratio' in your stylesheet reserves the box. The element tracks three states and relays the two events that move between them, and leaves the box to the stylesheet. The 'placeholder' slot is empty by default, so the headless tier does not depend on 'Skeleton', which it does not ship. The placeholder is hidden from screen readers, the picture having a name of its own. The fallback is read once the picture fails, after the picture's 'alt', so a reader hears that it did not load, as a sighted reader sees. **An image with no 'alt' says so.** At its first render it reports a 'missing-alt' warning, printed in the console and counted by '@fusion.dev/helix-diagnostics', which names the fix: describe the picture in 'alt', or write 'alt=""' for one that is decoration. An image hidden with 'aria-hidden="true"' needs neither and is not reported. A sheet of yours reads the state as ':state(loading)', ':state(loaded)', ':state(error)', and ':state(waiting)', the last while 'placeholder-delay' holds the placeholder back. It can also read 'data-status' on the host once the picture has loaded or failed. */
|
|
16043
16955
|
"helix-headless-image": DefineCustomElement<
|
|
16044
16956
|
HelixHeadlessImage,
|
|
16045
16957
|
HelixHeadlessImageVueProps,
|
|
@@ -16081,19 +16993,19 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16081
16993
|
HelixHeadlessLineChartVueProps,
|
|
16082
16994
|
HelixHeadlessLineChartVueEvents
|
|
16083
16995
|
>;
|
|
16084
|
-
/** Provides layout and semantics. The row is a target only when you set 'href'. **'href' makes the row a link.** The component wraps the leading content, the label, and the description in an '<a part="link">' inside the row, as 'Tree.Item' does. An anchor of your own cannot wrap slots it does not own. With the anchor, the row is a target, Enter follows it, middle click opens a new tab, the status bar shows the destination, and all of it works before JavaScript runs. **The 'end' slot sits beside the link, outside it**, so a button or a menu there is a control of its own: a click on it does not follow the link, and its name is not part of the link's. Client-side routing needs your own handling. A router cannot render its anchor inside the shadow root, so to navigate without a page load, intercept the click: the anchor is in 'composedPath()'. Handle only a plain primary click, so native gestures keep working. **For a row that holds controls and is not a destination, use 'data-list-item'.** With 'href' unset, the row is not a link. 'current' marks the row a reader is on, such as the page in a list of pages, with 'aria-current' on its link, or on the row where it has none. **In a list with 'selection-mode', the row is a row of a grid.** The list gives it its role, its place in the one tab stop and, where the list selects, whether it is selected. Its link leaves the tab order there, and Enter follows it from the row. */
|
|
16996
|
+
/** Provides layout and semantics. The row is a target only when you set 'href'. **'href' makes the row a link.** The component wraps the leading content, the label, and the description in an '<a part="link">' inside the row, as 'Tree.Item' does. An anchor of your own cannot wrap slots it does not own. With the anchor, the row is a target, Enter follows it, middle click opens a new tab, the status bar shows the destination, and all of it works before JavaScript runs. **The 'end' slot sits beside the link, outside it**, so a button or a menu there is a control of its own: a click on it does not follow the link, and its name is not part of the link's. Client-side routing needs your own handling. A router cannot render its anchor inside the shadow root, so to navigate without a page load, intercept the click: the anchor is in 'composedPath()'. Handle only a plain primary click, so native gestures keep working. **For a row that holds controls and is not a destination, use 'data-list-item'.** With 'href' unset, the row is not a link. 'current' marks the row a reader is on, such as the page in a list of pages, with 'aria-current' on its link, or on the row where it has none. **In a list with 'selection-mode', the row is a row of a grid.** The list gives it its role, its place in the one tab stop and, where the list selects, whether it is selected. Its link leaves the tab order there, and Enter follows it from the row. **In a 'reorderable' list, the row has a grip** after its 'end' slot, named by the list's 'move-label'. The list says which row is moving and where the drop indicator is, with the 'dragging', 'drop-before', and 'drop-after' states. */
|
|
16085
16997
|
"helix-headless-list-item": DefineCustomElement<
|
|
16086
16998
|
HelixHeadlessListItem,
|
|
16087
16999
|
HelixHeadlessListItemVueProps,
|
|
16088
17000
|
HelixHeadlessListItemVueEvents
|
|
16089
17001
|
>;
|
|
16090
|
-
/** Sets 'role="list"' on the host, so a screen reader counts the rows and announces each one's position, such as "1 of 7". **'selection-mode' makes the list interactive**, in the way of a grid list: a grid of rows that is one tab stop. 'single' selects one row at a time and 'multiple' any number, and 'value' holds the selected rows' values, separated by commas. A change asks with 'helix-before-change' and tells with 'change'. 'none' selects nothing, so a press acts on the row. A 'disabled' row is passed over. Each row is named by its label and described by its description, so the words of the controls in 'end' are not read as part of its name. 'selection-behavior' says what a press does to the rows already selected. 'toggle', the default, adds or takes out the row. 'replace' selects the row alone, as a file list does, and the arrow keys carry the selection with them. Control or Command with a press then adds or takes out one row. | Key | What it does | |---|---| | Down, Up | Moves to the next or the previous row. Under 'replace', selects it. | | Home, End | Moves to the first or the last row. Under 'replace', selects it. | | Page Down, Page Up | Moves a box's height of rows, so the row at one edge lands at the other. Under 'replace', selects the row it lands on. | | A letter or a word | Moves to the next row whose words start with what you typed. | | Left, Right | Moves between the row and the controls in its 'end' slot. | | Space | Selects the row, or lets it go. | | Shift with Down, Up, Home, End, Page Down, Page Up or Space | Selects every row from the last one pressed, in 'multiple'. | | Control or Command with Down, Up, Home, End, Page Down or Page Up | Moves without selecting, under 'replace'. | | Control or Command with A | Selects every row, in 'multiple'. | | Escape | Lets go of every selected row, asking first, and keeps the key from the dialog or menu around the list. With nothing selected, the key goes on to them. | | Enter | Acts on the row: follows its link, or sends 'helix-action' from it. | A press with Shift selects every row from the last one pressed, and a press with Control or Command adds or takes out one row under 'replace'. **Leave 'selection-mode' unset for a list a reader reads**, and set it for one a reader chooses from or acts on. The rows of an interactive list are grid rows, which hold controls as a list box option cannot. Give a control in 'end' 'tabindex="-1"' to leave it to the arrow keys and out of the tab order. 'start' and 'reversed' number an ordered list as '<ol>' does. The list writes where the numbers start and which way they run as '--list-first' and '--list-step' on its slot, which the styled tier counts from. Reversed with no 'start' counts down from the number of rows, which a server cannot know, so served markup counts from one until the list runs. */
|
|
17002
|
+
/** Sets 'role="list"' on the host, so a screen reader counts the rows and announces each one's position, such as "1 of 7". **'selection-mode' makes the list interactive**, in the way of a grid list: a grid of rows that is one tab stop. 'single' selects one row at a time and 'multiple' any number, and 'value' holds the selected rows' values, separated by commas. A change asks with 'helix-before-change' and tells with 'change'. 'none' selects nothing, so a press acts on the row. A 'disabled' row is passed over. Each row is named by its label and described by its description, so the words of the controls in 'end' are not read as part of its name. 'selection-behavior' says what a press does to the rows already selected. 'toggle', the default, adds or takes out the row. 'replace' selects the row alone, as a file list does, and the arrow keys carry the selection with them. Control or Command with a press then adds or takes out one row. | Key | What it does | |---|---| | Down, Up | Moves to the next or the previous row. Under 'replace', selects it. | | Home, End | Moves to the first or the last row. Under 'replace', selects it. | | Page Down, Page Up | Moves a box's height of rows, so the row at one edge lands at the other. Under 'replace', selects the row it lands on. | | A letter or a word | Moves to the next row whose words start with what you typed. | | Left, Right | Moves between the row and the controls in its 'end' slot. | | Space | Selects the row, or lets it go. | | Shift with Down, Up, Home, End, Page Down, Page Up or Space | Selects every row from the last one pressed, in 'multiple'. | | Control or Command with Down, Up, Home, End, Page Down or Page Up | Moves without selecting, under 'replace'. | | Control or Command with A | Selects every row, in 'multiple'. | | Escape | Lets go of every selected row, asking first, and keeps the key from the dialog or menu around the list. With nothing selected, the key goes on to them. | | Enter | Acts on the row: follows its link, or sends 'helix-action' from it. | A press with Shift selects every row from the last one pressed, and a press with Control or Command adds or takes out one row under 'replace'. **Leave 'selection-mode' unset for a list a reader reads**, and set it for one a reader chooses from or acts on. The rows of an interactive list are grid rows, which hold controls as a list box option cannot. Give a control in 'end' 'tabindex="-1"' to leave it to the arrow keys and out of the tab order. **'reorderable' lets you move rows.** Each row gets a grip after its 'end' slot, named by 'move-label'. Drag a grip to move its row, and the list scrolls near an edge. Or press a grip with Space, Enter, or a click to pick up its row, move it with the arrow keys, and press the grip again to drop it. A click on another row drops it there, and Escape puts it back. The list says each step in its 'live' region. A drop sends 'helix-before-reorder', which you can refuse, and then 'helix-reorder', whose 'keys' hold every row's value in the new order. **You move the rows**: the list moves no element of yours, so your framework keeps the order it rendered. | Key, on a held row's grip | What it does | |---|---| | Down, Up | Moves the row one place. | | Home, End | Moves the row to the top or the bottom. | | Space, Enter | Drops the row. | | Escape | Puts the row back where it was. | 'start' and 'reversed' number an ordered list as '<ol>' does. The list writes where the numbers start and which way they run as '--list-first' and '--list-step' on its slot, which the styled tier counts from. Reversed with no 'start' counts down from the number of rows, which a server cannot know, so served markup counts from one until the list runs. */
|
|
16091
17003
|
"helix-headless-list": DefineCustomElement<
|
|
16092
17004
|
HelixHeadlessList,
|
|
16093
17005
|
HelixHeadlessListVueProps,
|
|
16094
17006
|
HelixHeadlessListVueEvents
|
|
16095
17007
|
>;
|
|
16096
|
-
/** The listbox is the control, and options are its items. A Select is a listbox with a trigger in front of it, a Combobox is a listbox with a text input, and a command palette is a listbox in a dialog. They differ only in what opens the list and what filters it. With 'multiple' set, 'value' is a comma-separated string, like 'Checkbox.Group''s, because 'MixinControllerValue' holds a string. The form receives one entry per selected option, as a native '<select multiple>' sends it, so your server does not split on commas. Selected and active are separate. The selected option is the value. The active option is where the keyboard is: the arrow keys move it, and 'aria-activedescendant' points to it while focus stays on the list. The
|
|
17008
|
+
/** The listbox is the control, and options are its items. A Select is a listbox with a trigger in front of it, a Combobox is a listbox with a text input, and a command palette is a listbox in a dialog. They differ only in what opens the list and what filters it. With 'multiple' set, 'value' is a comma-separated string, like 'Checkbox.Group''s, because 'MixinControllerValue' holds a string. The form receives one entry per selected option, as a native '<select multiple>' sends it, so your server does not split on commas. Selected and active are separate. The selected option is the value. The active option is where the keyboard is: the arrow keys move it, and 'aria-activedescendant' points to it while focus stays on the list. **Keyboard.** The list is one tab stop, or its filter field is where there is one. In a single-choice list the highlight is the choice unless 'manual' is set; then Enter, Space or a click chooses. | Key | What it does | |---|---| | Down, Up | Moves the highlight to the next or the previous option, round from the last to the first. With 'layout="grid"', to the option below or above, stopping at the edge. | | Right, Left | With 'layout="grid"', moves to the next or the previous option, mirrored right to left. In a filter field, moves the caret. | | Home, End | Moves to the first or the last option. In a filter field, moves the caret. | | Page Down, Page Up | Moves by as many options as the list shows at once. | | A letter or a word | Moves to the next option whose words start with what you typed. In a filter field, types it. | | Enter | Chooses the highlighted option, or follows it where it is a link. | | Space | Chooses the highlighted option, or with 'multiple' toggles it. In a filter field, types a space. | | Shift with Down or Up | With 'multiple', adds the option the highlight moves to. In a filter field, moves the highlight and leaves the value. | | Shift with Space | With 'multiple', adds every option from the one last chosen to the highlighted one. In a filter field, types a space. | | Shift with Home or End | With 'multiple', adds every option from the highlight to that end. In a filter field, hold Control as well. | | Control or Command with A | With 'multiple', chooses every option, or none where all are chosen. In a filter field, selects the text. | | Escape | In a filter field, clears the filter. | | Alt with Up or Down | In a 'reorderable' list, moves the highlighted option a place. Alt with Home or End moves it to either end. | **ARIA.** The 'items' part is the 'listbox', named by the label and described by the hint and the message, with 'aria-multiselectable' under 'multiple', 'aria-required', 'aria-invalid', and 'aria-busy' while loading. Each option is an 'option' with 'aria-selected'. The list, or its filter field, points 'aria-activedescendant' at the highlighted option; the field is 'aria-autocomplete="list"' and controls the list. An option with 'href' is a link: Enter or a press follows it and selects nothing, and moving onto it with the arrows does not follow it. As a filter narrows the list, a screen reader hears how many options are left, such as "3 results", from 'result-label' and 'results-label'. A filter that leaves none says 'empty-text'. **Moving options** is a separate import, '@fusion.dev/helix/listbox/reorder', so a list that never moves options carries none of its code. With it imported, 'reorderable' lets a reader move options: - Alt with Up or Down moves the highlighted option a place, and Alt with Home or End moves it to either end, as the APG's rearrangeable listbox does. The highlight stays on it. - A pointer drags an option, with a drop indicator, and the list scrolls near an edge. A press that does not travel still chooses the option. - A drop sends 'helix-before-reorder', which you can refuse, and then 'helix-reorder', whose 'keys' hold every value in the new order. **You move the options**, or set 'items' in the new order: the list moves no element of yours. - The list says each move in its 'live' region. The words are the 'moved-label', 'canceled-label', 'dropped-label', and 'picked-up-label' attributes, which the import reads. - An option in a group moves within its group. Options do not move while a filter narrows the list, under 'layout="grid"', or while the list is disabled. */
|
|
16097
17009
|
"helix-headless-listbox": DefineCustomElement<
|
|
16098
17010
|
HelixHeadlessListbox,
|
|
16099
17011
|
HelixHeadlessListboxVueProps,
|
|
@@ -16129,7 +17041,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16129
17041
|
HelixHeadlessMapLandcoverVueProps,
|
|
16130
17042
|
HelixHeadlessMapLandcoverVueEvents
|
|
16131
17043
|
>;
|
|
16132
|
-
/** A button placed at a latitude and longitude. 'connectMap' positions it on the map and moves it as the map moves. Its name shows beside it on hover and focus. Pressing a marker sends 'helix-activate' from the frame with the marker's 'name', or its 'label' if it has no name. All the markers in a map share one tab stop. The arrow keys move between them in the order they are written. */
|
|
17044
|
+
/** A button placed at a latitude and longitude. 'connectMap' positions it on the map and moves it as the map moves. Its name shows beside it on hover and focus. Pressing a marker sends 'helix-activate' from the frame with the marker's 'name', or its 'label' if it has no name. All the markers in a map share one tab stop. The arrow keys move between them in the order they are written. Taking away the marker that has focus moves focus to the next one, or to the one before where it was the last. */
|
|
16133
17045
|
"helix-headless-map-marker": DefineCustomElement<
|
|
16134
17046
|
HelixHeadlessMapMarker,
|
|
16135
17047
|
HelixHeadlessMapMarkerVueProps,
|
|
@@ -16183,7 +17095,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16183
17095
|
HelixHeadlessMenuItemVueProps,
|
|
16184
17096
|
HelixHeadlessMenuItemVueEvents
|
|
16185
17097
|
>;
|
|
16186
|
-
/** The trigger is slotted and stays your own element, as with the tooltip. The menu renders its surface in the top layer with the popover API, so an ancestor with 'overflow: hidden' does not clip it and it needs no 'z-index'. Slot a 'helix-button' or 'helix-icon-button' as the trigger, and the menu tells it that it opens a menu and whether the menu is open. A plain '<button>' can only be told by writing attributes onto your markup, which the menu does not do, so give it 'aria-haspopup="menu"' and set its 'aria-expanded' from the 'toggle' event. Submenus drill down. A submenu replaces the panel's content, and a back row returns to the previous page. One panel avoids the diagonal pointer path that side-by-side panels need, stays inside a narrow window, and works on touch screens, which have no hover. The root holds which page is open, because only one page shows at a time. It sets this on items as a property, never as an attribute. An attribute written onto your element after it upgrades causes a hydration mismatch. Group rows under a heading with 'Menu.Section', which is a 'group' named by its heading. Between runs of rows, a '<helix-divider
|
|
17098
|
+
/** The trigger is slotted and stays your own element, as with the tooltip. The menu renders its surface in the top layer with the popover API, so an ancestor with 'overflow: hidden' does not clip it and it needs no 'z-index'. Slot a 'helix-button' or 'helix-icon-button' as the trigger, and the menu tells it that it opens a menu and whether the menu is open. A plain '<button>' can only be told by writing attributes onto your markup, which the menu does not do, so give it 'aria-haspopup="menu"' and set its 'aria-expanded' from the 'toggle' event. Submenus drill down. A submenu replaces the panel's content, and a back row returns to the previous page. One panel avoids the diagonal pointer path that side-by-side panels need, stays inside a narrow window, and works on touch screens, which have no hover. The root holds which page is open, because only one page shows at a time. It sets this on items as a property, never as an attribute. An attribute written onto your element after it upgrades causes a hydration mismatch. Group rows under a heading with 'Menu.Section', which is a 'group' named by its heading. Between runs of rows, a '<helix-divider>' is a separator a screen reader announces. Keys: Enter, Space or Down Arrow on the trigger opens the menu on its first row, and Up Arrow on its last. In the menu, Up and Down Arrow move between rows, Home and End go to the first and the last, a typed letter moves to the next row whose name starts with it, Enter and Space choose, Right Arrow opens a row's submenu and Left Arrow goes back, the two swapping on a right-to-left page, and Escape closes the menu and returns focus to the trigger. Tab closes it and moves on. While it is open, the surface carries the trigger's width as '--floating-anchor-inline-size' and the room left below it as '--floating-available-block-size', as Radix's dropdown menu publishes its trigger's width, for a menu as wide as its trigger: 'helix-menu::part(surface) { min-inline-size: var(--floating-anchor-inline-size) }'. With 'context', the trigger is an area and the menu is its context menu: a right-click, a long press, Shift+F10 or the menu key over the area opens it at the pointer, or at the area's corner from the keyboard, as Radix's context menu does. A press on the area does not open it, and closing it returns focus to where it was. */
|
|
16187
17099
|
"helix-headless-menu": DefineCustomElement<
|
|
16188
17100
|
HelixHeadlessMenu,
|
|
16189
17101
|
HelixHeadlessMenuVueProps,
|
|
@@ -16219,7 +17131,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16219
17131
|
HelixHeadlessNotificationVueProps,
|
|
16220
17132
|
HelixHeadlessNotificationVueEvents
|
|
16221
17133
|
>;
|
|
16222
|
-
/** Notifications are slotted children. Each one is your own markup, with an avatar, a link, or a button in it. Feeds usually hold tens of items, so writing them out lets an item hold anything. The list does not virtualize. Windowing needs the list to own the data, and here you own it, so N notifications are N elements. For a feed of thousands, use a data table with a custom cell. Read state is reported to you. Marking read goes from the root to the item and from the item to you, so a canceled 'helix-read' changes nothing, and if you own 'read', nothing changes until you set it. 'unread' is derived from the items and written to an attribute, so a stylesheet and a badge can both use it without counting. **The feed is one 'Tab' stop for its rows.** Each row takes focus itself and is read by its label. 'ArrowDown' and 'ArrowUp' move to the next and the previous row, 'Home' and 'End' to the first and the last, and 'PageDown' and 'PageUp' move a row on or back from anywhere inside one, as in the APG feed pattern. The controls inside a row stay in the 'Tab' order. Set 'total' when the feed holds one page of a longer list, and each row says its place in the whole of it. **'load-more' adds a button after the list** that sends 'helix-load-more', for a feed that holds one page of a longer list. Append the next page, set 'loading' while it is on its way, and take 'load-more' off once there is nothing more. While the feed is loading the button stays, so focus stays on it, and it is 'aria-disabled' and sends nothing. */
|
|
17134
|
+
/** Notifications are slotted children. Each one is your own markup, with an avatar, a link, or a button in it. Feeds usually hold tens of items, so writing them out lets an item hold anything. The list does not virtualize. Windowing needs the list to own the data, and here you own it, so N notifications are N elements. For a feed of thousands, use a data table with a custom cell. Read state is reported to you. Marking read goes from the root to the item and from the item to you, so a canceled 'helix-read' changes nothing, and if you own 'read', nothing changes until you set it. 'unread' is derived from the items and written to an attribute, so a stylesheet and a badge can both use it without counting. **The feed is one 'Tab' stop for its rows.** Each row takes focus itself and is read by its label. 'ArrowDown' and 'ArrowUp' move to the next and the previous row, 'Home' and 'End' to the first and the last, and 'PageDown' and 'PageUp' move a row on or back from anywhere inside one, as in the APG feed pattern. The controls inside a row stay in the 'Tab' order. Set 'total' when the feed holds one page of a longer list, and each row says its place in the whole of it. **'load-more' adds a button after the list** that sends 'helix-load-more', for a feed that holds one page of a longer list. Append the next page, set 'loading' while it is on its way, and take 'load-more' off once there is nothing more. While the feed is loading the button stays, so focus stays on it, and it is 'aria-disabled' and sends nothing. **'load-error' says a page could not be fetched**, such as "Could not load notifications": it shows under the rows there are, in the 'error' part, in place of the empty and loading lines, and a screen reader hears it. Clear it when you ask again. */
|
|
16223
17135
|
"helix-headless-notifications": DefineCustomElement<
|
|
16224
17136
|
HelixHeadlessNotifications,
|
|
16225
17137
|
HelixHeadlessNotificationsVueProps,
|
|
@@ -16231,7 +17143,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16231
17143
|
HelixHeadlessNumberInputVueProps,
|
|
16232
17144
|
HelixHeadlessNumberInputVueEvents
|
|
16233
17145
|
>;
|
|
16234
|
-
/** Object Inspector shows a structured value, such as an API response, a config, or a raw record, as a read-only tree with each entry's type visible. Pass the object to 'value', or name a '<script type="application/json">' by id with 'for', the same source 'VirtualList' and the charts read. JSON text works with server rendering and with React hydration, which skips object properties. 'value' wins when both are set. **Keyboard.** The tree is one tab stop, and focus moves from row to row. | Key | What it does | |---|---| | Down, Up | Moves to the next or the previous row. | | Right | Opens a closed branch, or moves into an open one. Left on a right-to-left page. | | Left | Closes an open branch, or moves to the parent. Right on a right-to-left page. | | Home, End | Moves to the first or the last row. | | Page Down, Page Up | Moves a box's height of rows, so the row at one edge lands at the other. | | Enter, Space | Opens or closes a branch. | | '*' | Opens every branch beside the active row. | | A letter or a word | Moves to the next row whose key starts with what you typed. | | Command+C, Control+C | Copies the active row, where no text is selected. | The tree is a 'treegrid', as React Aria's Tree is: each entry is a 'row' with one cell, and carries its real level, position, and set size, including in a windowed tree. Nothing in it is chosen, so no row carries 'aria-selected', and a focused row is not announced as selected. A reader opening or closing a branch sends 'helix-before-open' or 'helix-before-close', which you can cancel, and then 'toggle' with 'newState' and 'oldState', as '<details>' does. The branch is the active row, and 'expanded' holds every open branch. '*' asks once for all the branches it opens. A script writing 'expanded' or 'active' sends nothing. 'active' is the active row's path, written the way a JSON Pointer writes it: the empty string for the root and '/meta/tags/0' for an entry under it. Moving to another row sends 'helix-before-activate', which you can cancel, and then 'helix-activate', both with the path. Writing 'active' moves there and opens the branches around it, and sends nothing. 'expanded' holds the open branches by path, and writing it opens those and closes the rest. A row that closes around the active one hands it to the nearest open branch. 'filter' narrows the tree to the entries whose key or value holds the text, ignoring case, and the branches that lead to them, which it opens. A matched branch keeps everything under it. Each matched row carries 'row-match', and a screen reader hears how many entries matched from '
|
|
17146
|
+
/** Object Inspector shows a structured value, such as an API response, a config, or a raw record, as a read-only tree with each entry's type visible. Pass the object to 'value', or name a '<script type="application/json">' by id with 'for', the same source 'VirtualList' and the charts read. JSON text works with server rendering and with React hydration, which skips object properties. 'value' wins when both are set. **Keyboard.** The tree is one tab stop, and focus moves from row to row. | Key | What it does | |---|---| | Down, Up | Moves to the next or the previous row. | | Right | Opens a closed branch, or moves into an open one. Left on a right-to-left page. | | Left | Closes an open branch, or moves to the parent. Right on a right-to-left page. | | Home, End | Moves to the first or the last row. | | Page Down, Page Up | Moves a box's height of rows, so the row at one edge lands at the other. | | Enter, Space | Opens or closes a branch. | | '*' | Opens every branch beside the active row. | | A letter or a word | Moves to the next row whose key starts with what you typed. | | Command+C, Control+C | Copies the active row, where no text is selected. | The tree is a 'treegrid', as React Aria's Tree is: each entry is a 'row' with one cell, and carries its real level, position, and set size, including in a windowed tree. Nothing in it is chosen, so no row carries 'aria-selected', and a focused row is not announced as selected. A reader opening or closing a branch sends 'helix-before-open' or 'helix-before-close', which you can cancel, and then 'toggle' with 'newState' and 'oldState', as '<details>' does. The branch is the active row, and 'expanded' holds every open branch. '*' asks once for all the branches it opens. A script writing 'expanded' or 'active' sends nothing. 'active' is the active row's path, written the way a JSON Pointer writes it: the empty string for the root and '/meta/tags/0' for an entry under it. Moving to another row sends 'helix-before-activate', which you can cancel, and then 'helix-activate', both with the path. Writing 'active' moves there and opens the branches around it, and sends nothing. 'expanded' holds the open branches by path, and writing it opens those and closes the rest. A row that closes around the active one hands it to the nearest open branch. 'filter' narrows the tree to the entries whose key or value holds the text, ignoring case, and the branches that lead to them, which it opens. A matched branch keeps everything under it. Each matched row carries 'row-match', and a screen reader hears how many entries matched from 'results-label'. 'filterable' adds a field that sets it: typing sends 'helix-filter', which you can cancel, and then 'helix-filtered', and Down moves from the field to the tree. A new 'value' keeps the branches a reader opened or closed, and the active row, where the new value still has them. A branch the old value did not have opens to 'default-depth'. The copy button copies the active row, a branch as JSON and a string as its text. So do Command+C and Control+C while the tree has focus and no text is selected. The button sits beside the tree, because assistive technology cannot reliably reach a button inside a tree item. 'windowed' draws only the rows in view, for values with thousands of entries. The box needs a height for windowing to work. The styled tier sets one, and in the headless tier you set it yourself. */
|
|
16235
17147
|
"helix-headless-object-inspector": DefineCustomElement<
|
|
16236
17148
|
HelixHeadlessObjectInspector,
|
|
16237
17149
|
HelixHeadlessObjectInspectorVueProps,
|
|
@@ -16297,7 +17209,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16297
17209
|
HelixHeadlessProgressVueProps,
|
|
16298
17210
|
HelixHeadlessProgressVueEvents
|
|
16299
17211
|
>;
|
|
16300
|
-
/** The code is drawn as one '<path>'. Runs of adjacent dark modules are joined, so a row of eight is one horizontal move. A code of useful length has about a thousand modules, and an element for each would be a thousand nodes for one image. The element has 'role="img"' and an accessible name. Set 'label' to what the code is for, such as "Open the menu". With no 'label', a code is named by 'code-label', "QR code", followed by its value where the value is a web address, which a URL read aloud makes a destination. Any other value is never read out: a code that sets up an authenticator or joins a network carries a secret in it. The quiet zone of four modules is required by the specification, and a scanner rejects a code cropped to its edge. It is drawn inside the 'viewBox', so it stays at any size, including a size set in CSS. 'correction' sets how much of the code can be lost. At 'H' a code can lose thirty percent and still scan, so a mark in the center slot is safe. At 'L' the same mark makes the code unscannable. The default is 'M', and 'H' when the 'logo' slot is filled. A higher level holds fewer characters, so a value that fits at 'M' can be too long once a logo raises the level to 'H'. A value too long for the level draws no code: the element fires 'error', carries ':state(overflow)', and shows what is in the 'fallback' slot, such as the link written out. 'toSvg()', 'toPng()' and 'download()' give the drawn code as a file of its own, in the colors it is drawn in, with a slotted image or SVG logo where it sits, for a page that offers it to save or print, as Zag's download trigger does. */
|
|
17212
|
+
/** The code is drawn as one '<path>'. Runs of adjacent dark modules are joined, so a row of eight is one horizontal move. A code of useful length has about a thousand modules, and an element for each would be a thousand nodes for one image. The element has 'role="img"' and an accessible name. Set 'label' to what the code is for, such as "Open the menu". With no 'label', a code is named by 'code-label', "QR code", followed by its value where the value is a web address, which a URL read aloud makes a destination. Any other value is never read out: a code that sets up an authenticator or joins a network carries a secret in it. The quiet zone of four modules is required by the specification, and a scanner rejects a code cropped to its edge. It is drawn inside the 'viewBox', so it stays at any size, including a size set in CSS. 'correction' sets how much of the code can be lost. At 'H' a code can lose thirty percent and still scan, so a mark in the center slot is safe. At 'L' the same mark makes the code unscannable. The default is 'M', and 'H' when the 'logo' slot is filled. A code that holds a logo at a 'correction' below 'H' warns once with the kind 'unscannable-logo'. A higher level holds fewer characters, so a value that fits at 'M' can be too long once a logo raises the level to 'H'. A value too long for the level draws no code: the element fires 'error', carries ':state(overflow)', and shows what is in the 'fallback' slot, such as the link written out. 'toSvg()', 'toPng()' and 'download()' give the drawn code as a file of its own, in the colors it is drawn in, with a slotted image or SVG logo where it sits, for a page that offers it to save or print, as Zag's download trigger does. 'download()' saves an SVG for a name ending in '.svg', and a PNG for any other. */
|
|
16301
17213
|
"helix-headless-qr-code": DefineCustomElement<
|
|
16302
17214
|
HelixHeadlessQrCode,
|
|
16303
17215
|
HelixHeadlessQrCodeVueProps,
|
|
@@ -16339,7 +17251,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16339
17251
|
HelixHeadlessScrollAreaVueProps,
|
|
16340
17252
|
HelixHeadlessScrollAreaVueEvents
|
|
16341
17253
|
>;
|
|
16342
|
-
/** A trigger that opens a 'Listbox'. The list is the same element you can use on its own, with the same keyboard behavior, filtering, and multi-select rules. Select adds a trigger that shows what is chosen, a floating surface, and a place for focus to return to when the list closes. Your options stay in your light DOM and are slotted through into the listbox, so the listbox looks through slots to find them. 'Select' owns the value, passes it down to the listbox, and takes changes back, so the value lives in one place. Set 'valueContent' to draw the trigger's content from the chosen options, and several chosen options are written as a list in the reader's language.
|
|
17254
|
+
/** A trigger that opens a 'Listbox'. The list is the same element you can use on its own, with the same keyboard behavior, filtering, and multi-select rules. Select adds a trigger that shows what is chosen, a floating surface, and a place for focus to return to when the list closes. Your options stay in your light DOM and are slotted through into the listbox, so the listbox looks through slots to find them. 'Select' owns the value, passes it down to the listbox, and takes changes back, so the value lives in one place. Set 'valueContent' to draw the trigger's content from the chosen options, and several chosen options are written as a list in the reader's language. **Keyboard.** On the closed trigger: | Key | What it does | |---|---| | Down, Enter, Space | Opens the list on the chosen option, or the first. | | Up | Opens the list on the chosen option, or the last. | | Home, End | Opens the list on the first or the last option. | | Left, Right | Chooses the option before or after the chosen one without opening, as React Aria's Select does, in either direction of text. | | A letter or a word | Chooses the option whose words start with what you typed, as a native '<select>' does. With 'multiple', opens the list on it. | In the open list, which is a 'Listbox': | Key | What it does | |---|---| | Down, Up, Home, End, Page Down, Page Up | Moves the highlight. | | A letter or a word | Moves the highlight to the next option whose words start with what you typed. | | Enter, Space | Chooses the highlighted option and closes the list. With 'multiple', toggles it and leaves the list open. | | Escape | Closes the list and puts focus back on the trigger. | | Tab | Closes the list and moves on. | A choice made on the closed trigger is said aloud on Apple devices, where VoiceOver does not read the trigger's new name. **ARIA.** The trigger is a 'button' with 'aria-haspopup="listbox"' and 'aria-expanded', named by the label and then the chosen words, as a native '<select>' is. The list is the listbox 'Listbox' describes, named by the label, or by 'list-label' where there is none. Set 'autocomplete' to let a browser's autofill choose, as a native '<select>' with the same attribute would. */
|
|
16343
17255
|
"helix-headless-select": DefineCustomElement<
|
|
16344
17256
|
HelixHeadlessSelect,
|
|
16345
17257
|
HelixHeadlessSelectVueProps,
|
|
@@ -16369,19 +17281,25 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16369
17281
|
HelixHeadlessSparklineVueProps,
|
|
16370
17282
|
HelixHeadlessSparklineVueEvents
|
|
16371
17283
|
>;
|
|
16372
|
-
/**
|
|
17284
|
+
/** A 'group' of the dial's menu, named by its label, as React Aria's menu sections and Menu's groups are: a reader hears the name on entering the set, and the arrow keys walk through every group's actions in order, from the last action of one group to the first of the next. Put actions straight into the group, and the group straight into the dial. Anything else slotted here is drawn and is not an action. */
|
|
17285
|
+
"helix-headless-speed-dial-group": DefineCustomElement<
|
|
17286
|
+
HelixHeadlessSpeedDialGroup,
|
|
17287
|
+
HelixHeadlessSpeedDialGroupVueProps,
|
|
17288
|
+
HelixHeadlessSpeedDialGroupVueEvents
|
|
17289
|
+
>;
|
|
17290
|
+
/** Each item is a command, so it has the 'menuitem' role. A megamenu holds destinations, so it is a disclosure of links. A speed dial holds actions, which is what 'role="menu"' is for. The name is text rendered beside the icon, and it is the accessible name. A 'title' on an icon shows only on hover. Visible text is read, searched, and translated like other text. 'shortcut' gives the action's keyboard shortcut as a chord, such as 'mod+s', the grammar Menu's rows use. The action carries it as 'aria-keyshortcuts' and draws it after the name in the platform's glyphs or words, '⌘S' on an Apple keyboard and 'Ctrl+S' elsewhere, as Menu draws its rows' shortcuts. Put a 'Kbd' in the 'shortcut' slot to draw it as keys instead; the dial imports no 'Kbd' of its own. Showing a shortcut does not bind it. */
|
|
16373
17291
|
"helix-headless-speed-dial-item": DefineCustomElement<
|
|
16374
17292
|
HelixHeadlessSpeedDialItem,
|
|
16375
17293
|
HelixHeadlessSpeedDialItemVueProps,
|
|
16376
17294
|
HelixHeadlessSpeedDialItemVueEvents
|
|
16377
17295
|
>;
|
|
16378
|
-
/** A speed dial is a menu. Its items are commands, so it uses 'role="menu"' and 'menuitem', and it is built from the same pieces as 'Menu': - 'KeyboardNavigationController' for the arrow keys - 'PopoverController' for the panel - 'MixinControllerOpen' for open and closed It is a separate component because a speed dial has no submenus, headers, or checkable items. You slot the trigger. The usual floating action button is 'IconButton' with 'shape="circle"' and 'raised'. There is no 'helix-fab', because 'IconButton' already has 'emphasis', 'tone', 'label', and a size. Position the button with 'data-dock' in the base layer. All four arrow keys move through the actions, because a speed dial has no nested levels to reserve the horizontal pair for. This is the default behavior of the keyboard controller. Typing a letter moves to the next action whose name starts with it. The actions are one tab stop, and Tab closes the dial and moves on. */
|
|
17296
|
+
/** A speed dial is a menu. Its items are commands, so it uses 'role="menu"' and 'menuitem', and it is built from the same pieces as 'Menu': - 'KeyboardNavigationController' for the arrow keys - 'PopoverController' for the panel - 'MixinControllerOpen' for open and closed It is a separate component because a speed dial has no submenus, headers, or checkable items. You slot the trigger. The usual floating action button is 'IconButton' with 'shape="circle"' and 'raised'. There is no 'helix-fab', because 'IconButton' already has 'emphasis', 'tone', 'label', and a size. Position the button with 'data-dock' in the base layer. All four arrow keys move through the actions, because a speed dial has no nested levels to reserve the horizontal pair for. This is the default behavior of the keyboard controller. Typing a letter moves to the next action whose name starts with it. The actions are one tab stop, and Tab closes the dial and moves on. **Keyboard.** On the trigger, Enter, Space or a press opens the dial on its first action. With the dial open: | Key | What it does | |---|---| | Down, Right | Moves to the next action, from the last back to the first. | | Up, Left | Moves to the action before, from the first round to the last. | | Home, End | Moves to the first or the last action. | | A letter | Moves to the next action whose name starts with it. | | Enter, Space | Chooses the action, and the dial closes. | | Escape | Closes the dial and puts focus back on the trigger. | | Tab | Closes the dial and moves on. | **Groups.** Put actions in 'Speed Dial.Group', named by its 'label', to set them apart as Menu's sections do: each is a 'group' of the menu, and the arrow keys walk through every group's actions in order. **A trigger with its own action.** With 'open-on="long-press"', a press on the trigger is the trigger's own, such as composing a message, and holding it for half a second opens the dial, as React Aria's menu trigger does with 'trigger="longPress"'. Alt+Down or Alt+Up opens it from the keyboard, and the trigger says so in its description, 'long-press-label', the drawn one and a slotted one alike. A press that has opened the dial does not also do the trigger's action. */
|
|
16379
17297
|
"helix-headless-speed-dial": DefineCustomElement<
|
|
16380
17298
|
HelixHeadlessSpeedDial,
|
|
16381
17299
|
HelixHeadlessSpeedDialVueProps,
|
|
16382
17300
|
HelixHeadlessSpeedDialVueEvents
|
|
16383
17301
|
>;
|
|
16384
|
-
/** A splitter has one axis. Nest splitters to get two axes and three-pane or four-pane layouts. When a splitter is slotted into a pane of another at a right angle, a corner handle appears where the dividers cross. It shows the 'move' cursor, responds to both arrow axes, and a drag moves both dividers at once. The corner is added at 'firstUpdated' and is not in the server markup. Before it appears, both dividers work on their own. The divider has 'role="separator"' and 'aria-valuenow', and 'aria-controls' names the start pane. Drag it with a pointer or move it with the arrow keys, press 'Home' or 'End' to move it to its bounds, and press 'Enter' to collapse the start pane and open it again. A drag in progress is tracked as a state, so both dividers a corner moves stay lit for as long as they move. By default, 'min' and 'max' let the divider reach either edge, so you can drag a pane fully closed. Set them to limit the range. A pane can be collapsed, which is a separate state from a divider at the edge. 'collapsed' names the shut pane, 'start' or 'end', and the pane opens back to the position where the collapsing gesture began. A drag records that position on press, and every other way of collapsing records it in 'settle'. 'collapsed-size' keeps a sliver of the pane visible, such as a tab strip. Collapsing overrides 'min' and 'max'. */
|
|
17302
|
+
/** A splitter has one axis. Nest splitters to get two axes and three-pane or four-pane layouts. When a splitter is slotted into a pane of another at a right angle, a corner handle appears where the dividers cross. It shows the 'move' cursor, responds to both arrow axes, and a drag moves both dividers at once. The corner is added at 'firstUpdated' and is not in the server markup. Before it appears, both dividers work on their own. The divider has 'role="separator"' and 'aria-valuenow', with 'aria-valuetext' saying the start pane's share as a percentage in the nearest 'lang', or in the reader's locale where no 'lang' is set, and 'aria-controls' names the start pane. Drag it with a pointer or move it with the arrow keys, press 'Home' or 'End' to move it to its bounds, and press 'Enter' to collapse the start pane and open it again. A drag in progress is tracked as a state, so both dividers a corner moves stay lit for as long as they move. By default, 'min' and 'max' let the divider reach either edge, so you can drag a pane fully closed. Set them to limit the range. A pane can be collapsed, which is a separate state from a divider at the edge. 'collapsed' names the shut pane, 'start' or 'end', and the pane opens back to the position where the collapsing gesture began. A drag records that position on press, and every other way of collapsing records it in 'settle'. 'collapsed-size' keeps a sliver of the pane visible, such as a tab strip. Collapsing overrides 'min' and 'max'. */
|
|
16385
17303
|
"helix-headless-splitter": DefineCustomElement<
|
|
16386
17304
|
HelixHeadlessSplitter,
|
|
16387
17305
|
HelixHeadlessSplitterVueProps,
|
|
@@ -16417,7 +17335,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16417
17335
|
HelixHeadlessSwitchVueProps,
|
|
16418
17336
|
HelixHeadlessSwitchVueEvents
|
|
16419
17337
|
>;
|
|
16420
|
-
/** Sets its own role, because a grid of elements has no table structure for assistive technology otherwise. 'header' makes the cell a header, so a screen reader announces it with the values it heads: - In a row that holds a cell without 'header', it is a 'rowheader' and names its row, for example "web-app" in a row of a service's values. - In a row of 'header' cells alone, it is a 'columnheader', which is what a table with no 'TableColumn' heads its columns with. The role is on the host so the cell stays a child of its row in the flat tree, which keeps the table structure intact. */
|
|
17338
|
+
/** Sets its own role, because a grid of elements has no table structure for assistive technology otherwise. 'header' makes the cell a header, so a screen reader announces it with the values it heads: - In a row that holds a cell without 'header', it is a 'rowheader' and names its row, for example "web-app" in a row of a service's values. - In a row of 'header' cells alone, it is a 'columnheader', which is what a table with no 'TableColumn' heads its columns with. The role is on the host so the cell stays a child of its row in the flat tree, which keeps the table structure intact. In a 'grid' table a value is a 'gridcell', and the table gives the cell a 'tabindex' so focus can rest on it. */
|
|
16421
17339
|
"helix-headless-table-cell": DefineCustomElement<
|
|
16422
17340
|
HelixHeadlessTableCell,
|
|
16423
17341
|
HelixHeadlessTableCellVueProps,
|
|
@@ -16429,13 +17347,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16429
17347
|
HelixHeadlessTableColumnVueProps,
|
|
16430
17348
|
HelixHeadlessTableColumnVueEvents
|
|
16431
17349
|
>;
|
|
16432
|
-
/** Lays out the rows on a CSS grid, so every column lines up across rows and each row stays a real element that can be styled, hidden, or made interactive. A '<table>' layout aligns columns but limits almost everything else. A grid of elements has no table structure for assistive technology, so the roles are set explicitly: 'table', 'row', 'cell', 'columnheader', and 'rowheader' for a 'header' cell in a row of values. Rows are 'display: contents', so their cells become items of the one grid. **Sorting.** A column with 'sortable' and a 'field' draws its heading as a button that sorts the rows by the text of its cells, numbers by their value. Your markup is not reordered: the table draws the rows in the sorted order. 1. Each press cycles the column through ascending, descending, and the order the rows were written in, which keeps a server's own ranking reachable. 2. 'helix-sort' asks first, with 'field:direction', or empty for the written order. Refuse it to keep the order, or to sort the rows yourself and set 'sort'. 3. 'helix-sorted' follows once the order stands, and 'sort' holds it. 4. The heading carries 'aria-sort', and a screen reader hears 'sorted-label' ("Sorted by Name, ascending") or 'unsorted-label' from a polite region. Tab reaches each sort button, and Enter or Space presses it. The 'heading' slot names the table: slot a heading or a line of text into it, and the table is named by its words. An 'aria-label' or 'aria-labelledby' on the host wins over it. **Selecting.** 'selectable' adds a column of checkboxes. 1. Each row is known by its 'value', or by its place among the rows where it has none, and 'selected' holds the chosen keys, comma separated, the same shape 'DataTable' uses. 'default-selected' is where it starts. 2. A row's checkbox is named by 'select-row-label' ("Select {row}") with the words of the row's first cell. The checkbox in the heading selects every row, and shows a dash while only some are chosen. 3. 'helix-select' asks first, with every key the change would leave. Refuse it to keep the selection. 'helix-selected' follows once it stands. 4. A chosen row takes ':state(selected)', and a screen reader hears 'selected-label' ("2 selected") from a polite region. Tab reaches each checkbox, and Space ticks it.
|
|
17350
|
+
/** Lays out the rows on a CSS grid, so every column lines up across rows and each row stays a real element that can be styled, hidden, or made interactive. A '<table>' layout aligns columns but limits almost everything else. A grid of elements has no table structure for assistive technology, so the roles are set explicitly: 'table', 'row', 'cell', 'columnheader', and 'rowheader' for a 'header' cell in a row of values. Rows are 'display: contents', so their cells become items of the one grid. **Sorting.** A column with 'sortable' and a 'field' draws its heading as a button that sorts the rows by the text of its cells, numbers by their value. Your markup is not reordered: the table draws the rows in the sorted order. 1. Each press cycles the column through ascending, descending, and the order the rows were written in, which keeps a server's own ranking reachable. 2. 'helix-sort' asks first, with 'field:direction', or empty for the written order. Refuse it to keep the order, or to sort the rows yourself and set 'sort'. 3. 'helix-sorted' follows once the order stands, and 'sort' holds it. 4. The heading carries 'aria-sort', and a screen reader hears 'sorted-label' ("Sorted by Name, ascending") or 'unsorted-label' from a polite region. Tab reaches each sort button, and Enter or Space presses it. The 'heading' slot names the table: slot a heading or a line of text into it, and the table is named by its words. An 'aria-label' or 'aria-labelledby' on the host wins over it. **Selecting.** 'selectable' adds a column of checkboxes. 1. Each row is known by its 'value', or by its place among the rows where it has none, and 'selected' holds the chosen keys, comma separated, the same shape 'DataTable' uses. 'default-selected' is where it starts. 2. A row's checkbox is named by 'select-row-label' ("Select {row}") with the words of the row's first cell. The checkbox in the heading selects every row, and shows a dash while only some are chosen. 3. 'helix-select' asks first, with every key the change would leave. Refuse it to keep the selection. 'helix-selected' follows once it stands. 4. A chosen row takes ':state(selected)', and a screen reader hears 'selected-label' ("2 selected") from a polite region. Tab reaches each checkbox, and Space ticks it. To act on one row, put a link or a button in a cell, or give the row an 'href'. **Moving rows.** 'reorderable' adds a column of grips before the checkboxes, under a heading named by 'row-grips-label'. 1. Each row is known by its 'value', or by its place among the rows where it has none, as for selecting. Give rows a 'value' when they move, so a key stays with its row. 2. A grip is a button named by 'move-row-label' ("Move {row}") with the words of the row's first cell. Drag it to move its row, and the page scrolls near an edge. Or press it with Space, Enter, or a click to pick the row up, move it with Up, Down, Home, and End, and press it again to drop it. A click on another row drops it there, and Escape puts it back. 3. 'helix-before-reorder' asks first, and 'helix-reorder' follows with 'keys', every row's key in the new order. **You move the rows**: the table moves no element of yours, and focus goes back to the moved row's grip once you have. 4. Each step is said in the table's live region, in words you can change: 'picked-up-label', 'moved-label', 'dropped-label', and 'canceled-label'. The grips do nothing while a sort is set. **A grid.** 'grid' makes the table one tab stop that the arrow keys move through cell by cell, the headings included, as React Aria's table is. The table is then a 'grid' and each value a 'gridcell', and the table gives every cell a 'tabindex' so focus can rest on it: set 'grid' only where the cells may carry one. For typeahead and range selection, use 'DataTable'. | Key | What it does | |---|---| | Right, Left | Moves one cell along the row. Left moves on, on a right-to-left page. | | Down, Up | Moves one row, the headings included. | | Home, End | Moves to the first or the last cell of the row. | | Control with Home or End | Moves to the first or the last cell of the table. | | Page Down, Page Up | Moves by the rows that fit in view. | | Enter, F2 | Moves into the cell's links and controls. Escape or F2 moves back to the cell, and Tab moves between the controls of one cell. | | Enter on a cell of a row with 'href' | Follows the row's link. | | Enter, Space on a sortable heading | Sorts by the column. | | Space on a row, Enter or Space on its checkbox cell | Selects the row, in a 'selectable' table. | | Enter or Space on a grip cell | Picks the row up, or drops it, in a 'reorderable' table. Up, Down, Home, and End move a row picked up, and Escape puts it back. | | Control or Command with A | Selects every row, in a 'selectable' table. | | Tab | Leaves the table. | The CSS custom properties listed for this component are written by it and read by the stylesheet that draws it. Do not set them. Each holds a number the component computes and CSS cannot, so the stylesheet can draw the table without measuring anything. */
|
|
16433
17351
|
"helix-headless-table": DefineCustomElement<
|
|
16434
17352
|
HelixHeadlessTable,
|
|
16435
17353
|
HelixHeadlessTableVueProps,
|
|
16436
17354
|
HelixHeadlessTableVueEvents
|
|
16437
17355
|
>;
|
|
16438
|
-
/** The row renders its cells straight through and lays out none of them, so a stylesheet can place them in the table's grid and every column lines up across rows. The row still exists as an element, so you can style it, hide it, or make it interactive. In a 'selectable' table the row draws a checkbox cell before its own cells, and 'value' is the key the table's 'selected' lists it by. **'href' makes the whole row a link**, as a row action does in React Aria's table: a press anywhere on the row follows it, except on a link or a control of the row's own, and Control, Command or Shift open it the way they open a link. A drag that selects text follows nothing. A row in a table is not a stop of its own, so put the same link in a cell, usually the row header, which is what the keyboard and a screen reader reach. */
|
|
17356
|
+
/** The row renders its cells straight through and lays out none of them, so a stylesheet can place them in the table's grid and every column lines up across rows. The row still exists as an element, so you can style it, hide it, or make it interactive. In a 'selectable' table the row draws a checkbox cell before its own cells, and 'value' is the key the table's 'selected' lists it by. In a 'reorderable' table the row draws a grip cell before those, holding a button named by the table's 'move-row-label', and 'value' is the key 'helix-reorder' lists it by. The table says which row is moving and where the drop indicator is, with the 'dragging', 'drop-before', and 'drop-after' states. **'href' makes the whole row a link**, as a row action does in React Aria's table: a press anywhere on the row follows it, except on a link or a control of the row's own, and Control, Command or Shift open it the way they open a link. A drag that selects text follows nothing. A row in a table is not a stop of its own, so put the same link in a cell, usually the row header, which is what the keyboard and a screen reader reach. In a 'grid' table, Enter on any cell of the row follows it as well. */
|
|
16439
17357
|
"helix-headless-table-row": DefineCustomElement<
|
|
16440
17358
|
HelixHeadlessTableRow,
|
|
16441
17359
|
HelixHeadlessTableRowVueProps,
|
|
@@ -16507,7 +17425,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16507
17425
|
HelixHeadlessTimelineVueProps,
|
|
16508
17426
|
HelixHeadlessTimelineVueEvents
|
|
16509
17427
|
>;
|
|
16510
|
-
/** Each message is an element because it has a timeout, a tone, a dismiss control, and a lifetime that pauses. **Each item runs its own timer.** A timer held by the region would restart with each new message, and the last of three messages would stay for nine seconds. **Each message is an 'alertdialog' named by its words**, which is how a reader who moves into the stack hears which message they are on. Give it a 'heading' and a 'description', and the heading names it and the description describes it, for a message with a title and a line of detail. The region says each message once as it arrives, a 'danger' one assertively, so a message is never a live region of its own. A touch or a pen swipes a message toward the end of the line, and past halfway, or quickly, dismisses it through the same 'helix-dismiss' as its control. While it moves, the distance is on the 'item' part as '--toast-swipe-x'. **Messages are inverted by default.** The item flips 'color-scheme', so a new message stands out from the page without using a color that carries meaning. */
|
|
17428
|
+
/** Each message is an element because it has a timeout, a tone, a dismiss control, and a lifetime that pauses. **Each item runs its own timer.** A timer held by the region would restart with each new message, and the last of three messages would stay for nine seconds. It pauses while the pointer or focus is on the message, and while the page is hidden, so a message is not spent in a background tab. **Each message is an 'alertdialog' named by its words**, which is how a reader who moves into the stack hears which message they are on. Give it a 'heading' and a 'description', and the heading names it and the description describes it, for a message with a title and a line of detail. The region says each message once as it arrives, a 'danger' one assertively, so a message is never a live region of its own. A touch or a pen swipes a message toward the end of the line, and past halfway, or quickly, dismisses it through the same 'helix-dismiss' as its control. While it moves, the distance is on the 'item' part as '--toast-swipe-x'. **Messages are inverted by default.** The item flips 'color-scheme', so a new message stands out from the page without using a color that carries meaning. */
|
|
16511
17429
|
"helix-headless-toast-item": DefineCustomElement<
|
|
16512
17430
|
HelixHeadlessToastItem,
|
|
16513
17431
|
HelixHeadlessToastItemVueProps,
|
|
@@ -16531,13 +17449,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16531
17449
|
HelixHeadlessToggleVueProps,
|
|
16532
17450
|
HelixHeadlessToggleVueEvents
|
|
16533
17451
|
>;
|
|
16534
|
-
/** A toolbar holds a mix of controls, such as buttons, toggles, and menus. A button group holds one kind, so the two are separate components. The toolbar is one tab stop, and the arrow keys move between its controls, so three toolbars take three presses of Tab to pass. Any element the browser can focus counts as a control, including your own elements. A child that takes no focus, such as a divider, is skipped. A menu is reached at its trigger. Controls inside a plain wrapper, such as a 'Button Group', are each a stop of the toolbar's own, as React Aria's toolbar flattens a group: the arrows walk through the group's buttons and on past it, and the group takes no tab stop of its own. The arrows wrap from the last control to the first. Set 'stop-at-ends' to keep them at the ends, as Radix's 'loop' set to false does. A toggle group of pressed buttons, 'selection-mode="multiple"', is walked through the same way, each toggle a stop on the toolbar's axis, as React Aria's toolbar walks its toggle buttons. Another nested composite, such as a radio-style toggle group, is one stop on the toolbar's axis: the toolbar's arrows move past it, and the arrows across the toolbar move inside it. A composite with a 'focusable' property, as Toggle Group has, gives up its own tab stop while the toolbar's is elsewhere, so Tab stops once in the toolbar. A composite without one keeps its own tab stop. A toolbar inside another toolbar, a Helix one or the page's own 'role="toolbar"', is a 'group' of the outer one, as React Aria's is: the outer toolbar's arrows walk through its controls and on past them, and it takes no keys and no tab stop of its own. A server renders it as a toolbar, having no parent to read, until it upgrades. */
|
|
17452
|
+
/** A toolbar holds a mix of controls, such as buttons, toggles, and menus. A button group holds one kind, so the two are separate components. The toolbar is one tab stop, and the arrow keys move between its controls, so three toolbars take three presses of Tab to pass. Any element the browser can focus counts as a control, including your own elements. A child that takes no focus, such as a divider, is skipped. A menu is reached at its trigger. A Divider in the toolbar is a separator across the toolbar's axis, as React Aria's is: vertical in a horizontal toolbar and horizontal in a vertical one, without an 'orientation' of its own. Controls inside a plain wrapper, such as a 'Button Group', are each a stop of the toolbar's own, as React Aria's toolbar flattens a group: the arrows walk through the group's buttons and on past it, and the group takes no tab stop of its own. The arrows wrap from the last control to the first. Set 'stop-at-ends' to keep them at the ends, as Radix's 'loop' set to false does. **Keyboard.** Tab enters the toolbar on the control that last had focus, the first control at the start, and the next Tab leaves it. | Key | What it does | |---|---| | Right | Moves to the next control in a horizontal toolbar, from the last back to the first. | | Left | Moves to the control before in a horizontal toolbar, from the first round to the last. | | Down, Up | The same in a vertical toolbar. | | Home, End | Moves to the first or the last control. | Left and Right swap on a right-to-left page, where the first control is on the right. The arrows across the toolbar's axis are left to the control that has focus, so a radio-style toggle group or a select answers them itself. The toolbar is 'role="toolbar"' with 'aria-orientation', named by 'label'. The stop moves through a control's own 'focusable' property where it has one, as Button, Select and Toggle Group do. A control without one has 'tabindex' written on the element that takes focus: a native element itself, or the control inside a custom element's open shadow root, so the host keeps the markup you rendered. Only a custom element whose shadow root is closed takes it on the host. A toggle group of pressed buttons, 'selection-mode="multiple"', is walked through the same way, each toggle a stop on the toolbar's axis, as React Aria's toolbar walks its toggle buttons. Another nested composite, such as a radio-style toggle group, is one stop on the toolbar's axis: the toolbar's arrows move past it, and the arrows across the toolbar move inside it. A composite with a 'focusable' property, as Toggle Group has, gives up its own tab stop while the toolbar's is elsewhere, so Tab stops once in the toolbar. A composite without one keeps its own tab stop. A toolbar inside another toolbar, a Helix one or the page's own 'role="toolbar"', is a 'group' of the outer one, as React Aria's is: the outer toolbar's arrows walk through its controls and on past them, and it takes no keys and no tab stop of its own. A server renders it as a toolbar, having no parent to read, until it upgrades. */
|
|
16535
17453
|
"helix-headless-toolbar": DefineCustomElement<
|
|
16536
17454
|
HelixHeadlessToolbar,
|
|
16537
17455
|
HelixHeadlessToolbarVueProps,
|
|
16538
17456
|
HelixHeadlessToolbarVueEvents
|
|
16539
17457
|
>;
|
|
16540
|
-
/** The trigger
|
|
17458
|
+
/** The trigger stays your own element. The bubble renders in the top layer through the popover API, so an ancestor with 'overflow: hidden' does not clip it and no 'z-index' is needed. 'FloatingController' positions it and flips it to another side when the preferred side does not fit. **Place the tooltip beside its trigger, name the trigger with 'for', and name the tooltip in the trigger's 'aria-describedby'.** The description is then in your own markup, so it is in the server's HTML and in the accessibility tree at rest, in every browser, before anyone points at the trigger or focuses it: '''html <helix-headless-button aria-describedby="save-tip" id="save">Save</helix-headless-button> <helix-headless-tooltip content="Save your work" for="save" id="save-tip"></helix-headless-tooltip> ''' Without the attribute, the tooltip links itself through an element reference on the control that takes focus, and it never writes into your markup before you act, so hydration stays intact. A trigger that is a Helix component is described at once, inside its own shadow root. A plain element in your markup is described when you first point at it or focus it, so a screen reader in reading mode meets it with no description until then. Where the browser has no element references, nothing links the two, and the tooltip warns once on first open. The tooltip can also wrap its trigger, which describes a Helix component and leaves a plain element undescribed. In the 'for' form the tooltip itself is out of the accessibility tree while its bubble is down, so you meet its words once, as the trigger's description. The tooltip shows on hover and on focus. It hides on pointer leave, on blur, on Escape, and when the trigger is activated. The pointer can move from the trigger onto the bubble and the bubble stays, unless you set 'hoverable="false"'. 'delay' is how long the pointer rests before it shows, and 'delay-out' how long it stays once the pointer leaves. Once one tooltip is showing, moving to another trigger shows its tooltip with no 'delay', and the first one hides. The same holds for 'skip-delay' milliseconds after a tooltip hides, 300 unless you set it. 'show-on="focus"' shows the tooltip on keyboard focus only, for a hint a pointer does not need. */
|
|
16541
17459
|
"helix-headless-tooltip": DefineCustomElement<
|
|
16542
17460
|
HelixHeadlessTooltip,
|
|
16543
17461
|
HelixHeadlessTooltipVueProps,
|
|
@@ -16555,13 +17473,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16555
17473
|
HelixHeadlessTourStopVueProps,
|
|
16556
17474
|
HelixHeadlessTourStopVueEvents
|
|
16557
17475
|
>;
|
|
16558
|
-
/** 'open' comes from 'MixinControllerOpen', the same state a disclosure holds, so you can respond to a branch opening and control the state yourself. The row renders 'aria-expanded'. Each item is an element because it holds state: whether it is open, selected, and focused. An item is a branch when something is slotted into 'children'. This is detected on the client, so server-rendered markup shows a leaf and the twisty appears on hydration. **'href' makes the whole row a link**, rendered as an '<a>'. Enter, middle click, and the status bar then work anywhere on the row. Pressing a branch, or Enter or Space on it, opens or closes it. A branch with a 'value' is chosen as well and sends 'helix-select', unless the tree has 'nesting="heading"', where a branch names the list under it, or 'selection-mode="leaf"', where only the items at the ends are chosen. A 'disabled' item is reached by the arrow keys and announced as unavailable, and a press, Enter or Space on it does nothing. A 'lazy' item is a branch whose children you load when it opens: opening it sends 'helix-load', the row says it is busy, and the children you add appear in it. Remove 'lazy' once they are in. */
|
|
17476
|
+
/** 'open' comes from 'MixinControllerOpen', the same state a disclosure holds, so you can respond to a branch opening and control the state yourself. The row renders 'aria-expanded'. Each item is an element because it holds state: whether it is open, selected, and focused. An item is a branch when something is slotted into 'children'. This is detected on the client, so server-rendered markup shows a leaf and the twisty appears on hydration. **'href' makes the whole row a link**, rendered as an '<a>'. Enter, middle click, and the status bar then work anywhere on the row. Pressing a branch, or Enter or Space on it, opens or closes it. A branch with a 'value' is chosen as well and sends 'helix-select', unless the tree has 'nesting="heading"', where a branch names the list under it, or 'selection-mode="leaf"', where only the items at the ends are chosen. A 'disabled' item is reached by the arrow keys and announced as unavailable, and a press, Enter or Space on it does nothing. A 'lazy' item is a branch whose children you load when it opens: opening it sends 'helix-load', the row says it is busy, and the children you add appear in it. Remove 'lazy' once they are in. **In a 'reorderable' tree, the row has a grip** at its far end, which a pointer drags to move the item among its siblings. The tree says which item is moving and where the drop indicator is, with the 'dragging', 'drop-before', and 'drop-after' states. */
|
|
16559
17477
|
"helix-headless-tree-item": DefineCustomElement<
|
|
16560
17478
|
HelixHeadlessTreeItem,
|
|
16561
17479
|
HelixHeadlessTreeItemVueProps,
|
|
16562
17480
|
HelixHeadlessTreeItemVueEvents
|
|
16563
17481
|
>;
|
|
16564
|
-
/** The tree is a single tab stop, and arrow keys move focus between items, as the tree pattern requires, so Tab moves past a long sidebar in one press. The tree moves the tab stop to the focused item, so the browser's focus order stays intact. Items are found with 'instanceof', never by tag name, so the headless tier does not depend on the styled one. Typing a letter moves to the next visible item whose name starts with it, and '*' opens every branch beside the focused item. 'selection-mode="multiple"' draws a check mark on every row and lets a reader check many, as Web Awesome's and Ark UI's checkbox trees do. Checking a branch checks every item under it, and a branch some of whose items are checked is partly checked. Space or a press on the mark checks the focused row, and Enter or a press on a branch's row opens it. 'active' then holds the checked values, comma separated, which 'values' also gives as a list, and the tree says 'aria-multiselectable'. 'selection-mode="leaf"' chooses one item at a time and only the items at the ends: a press, Enter or Space on a branch opens or closes it and chooses nothing, as Web Awesome's 'leaf' mode does. Keys: Up and Down Arrow move between the items a reader can see; Right Arrow opens a shut branch and then moves into it, and Left Arrow shuts an open one and then moves to its parent, the two swapping on a right-to-left page. Home and End go to the first and the last item, Enter and Space choose or open, and the tree's one tab stop stays on the item last reached. In a tree of check marks, Control+A (Command+A on an Apple keyboard) checks every item or clears them all, and Shift with Up or Down Arrow moves and checks. */
|
|
17482
|
+
/** The tree is a single tab stop, and arrow keys move focus between items, as the tree pattern requires, so Tab moves past a long sidebar in one press. The tree moves the tab stop to the focused item, so the browser's focus order stays intact. Items are found with 'instanceof', never by tag name, so the headless tier does not depend on the styled one. Typing a letter moves to the next visible item whose name starts with it, and '*' opens every branch beside the focused item. 'selection-mode="multiple"' draws a check mark on every row and lets a reader check many, as Web Awesome's and Ark UI's checkbox trees do. Checking a branch checks every item under it, and a branch some of whose items are checked is partly checked. Space or a press on the mark checks the focused row, and Enter or a press on a branch's row opens it. 'active' then holds the checked values, comma separated, which 'values' also gives as a list, and the tree says 'aria-multiselectable'. 'selection-mode="leaf"' chooses one item at a time and only the items at the ends: a press, Enter or Space on a branch opens or closes it and chooses nothing, as Web Awesome's 'leaf' mode does. Keys: Up and Down Arrow move between the items a reader can see; Right Arrow opens a shut branch and then moves into it, and Left Arrow shuts an open one and then moves to its parent, the two swapping on a right-to-left page. Home and End go to the first and the last item, Enter and Space choose or open, and the tree's one tab stop stays on the item last reached. In a tree of check marks, Control+A (Command+A on an Apple keyboard) checks every item or clears them all, and Shift with Up or Down Arrow moves and checks. **'reorderable' lets you move items among their siblings.** Alt with Up or Down moves the focused item a place, and Alt with Home or End to the first or the last place among its siblings, as the APG's rearrangeable listbox does. Each row gets a grip at its far end: drag it to move the item, and the tree scrolls near an edge. A click on a grip picks the item up and a click on one of its siblings drops it there, which needs no drag. The arrows move an item picked up that way, Enter or Space drops it, and Escape puts it back. The tree says each step in its 'live' region. A drop sends 'helix-before-reorder', which you can refuse, and then 'helix-reorder', whose 'keys' hold the siblings in the new order. **You move the items**: the tree moves no element of yours, and focus follows the moved item once you have. Moving an item into another branch is not part of this. */
|
|
16565
17483
|
"helix-headless-tree": DefineCustomElement<
|
|
16566
17484
|
HelixHeadlessTree,
|
|
16567
17485
|
HelixHeadlessTreeVueProps,
|
|
@@ -16597,7 +17515,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16597
17515
|
HelixHeadlessVideoVueProps,
|
|
16598
17516
|
HelixHeadlessVideoVueEvents
|
|
16599
17517
|
>;
|
|
16600
|
-
/** The items arrive as data, in one of two ways: - 'items' takes an array. A framework sets it as a property, and React hydration keeps it. - 'for' names a '<script type="application/json">' that holds an array, which a server sends as markup. Each item is drawn into a row in one of two ways: - 'renderItem' is a function from an item and its index to the row's content: a Lit template, a string, or a DOM node. - A '<template>' child defines one row. 'data-field="name"' fills an element with the item's 'name' as text, and 'data-field-href="url"' writes the item's 'url' into 'href', the same for any attribute. A field may be a path of keys, such as 'author.name'. Rows are your markup in the light DOM, so your stylesheet styles them. **A grid.** 'columns' lays the items out that many to a line, as a grid of equal columns, and windows the set a line at a time, as React Aria's grid layout does. Each item draws one element, a cell of the grid, and 'estimate' is the height of a line. Space the items with padding inside each one, which the list measures with the line. **Keyboard.** The list is one tab stop. | Key | What it does | |---|---| | Down, Up | Moves to the next or the previous item, or in a grid to the item in the same column on the next or the previous line. | | Right, Left | In a grid, moves to the next or the previous item along the line, the other way round on a right-to-left page. | | Home, End | Moves to the first or the last item. | | Page Down, Page Up | Moves by the number of items, or of lines in a grid, on screen. | | A letter or a word | Moves to the next item whose text starts with what you typed. | | Tab | Moves into the focused row's own links and buttons, then out of the list. | An item that is not drawn is scrolled into view and focused, so a keyboard reaches the whole set. When the row holding the tab stop scrolls away, the stop moves to the first row on screen. Typing matches each item's 'text-field', which is the first 'data-field' of the row template by default, or the item itself when it is a string or a number. Each row says its place in the whole set with 'aria-posinset' and 'aria-setsize', so a screen reader says "4,000 of 10,000". The row holding focus stays drawn when it scrolls out. **Selecting.** 'selection-mode' makes the list a list box a reader chooses from: 'single' selects one item and 'multiple' any number. Space or a press selects an item, Shift with Space, an arrow, Home, End or a press takes in the items from the last one chosen, and Control or Command with A selects them all, in 'multiple'. 'value' holds the chosen items' keys, separated by commas, in the order of the set: 'key-field' names each item's key, and a string or a number item is its own key. A change asks with 'helix-before-change' and tells with 'change'. Each row is an 'option' marked 'aria-selected', so a row's own links and buttons are not reached there: keep those to a list without 'selection-mode'. **Loading more.** 'helix-range-change' fires as the items on screen change, and 'range' holds them. 'helix-load-more' fires once a reader is within one screen of the end, once for each length of the set: add to 'items' and it can fire again. While you fetch, set 'loading': the list is busy, and a row after the last item says "Loading more" ('loading-label', or your own content in the 'loading' slot). 'scrollToIndex' takes a reader to an item. **Row height.** Rows are placed by 'estimate' until they are drawn. Then the list reads the drawn rows' height once and places every row by it, so a wrong estimate still reaches the last item. Set 'measured' for rows of different heights. The list follows its source. A new 'items' array, an edit to the script's text, or a script replaced under the same id draws the new rows. A row that stays in view keeps its element as the list scrolls. The viewport scrolls on this tier. It carries 'data-scroller', and 'core' ships '[data-scroller] { overflow: auto }' into every shadow root, so 'scrollTop' works with no stylesheet. You still need to set a block size. */
|
|
17518
|
+
/** The items arrive as data, in one of two ways: - 'items' takes an array. A framework sets it as a property, and React hydration keeps it. - 'for' names a '<script type="application/json">' that holds an array, which a server sends as markup. Each item is drawn into a row in one of two ways: - 'renderItem' is a function from an item and its index to the row's content: a Lit template, a string, or a DOM node. - A '<template>' child defines one row. 'data-field="name"' fills an element with the item's 'name' as text, and 'data-field-href="url"' writes the item's 'url' into 'href', the same for any attribute. A field may be a path of keys, such as 'author.name'. Rows are your markup in the light DOM, so your stylesheet styles them. **A grid.** 'columns' lays the items out that many to a line, as a grid of equal columns, and windows the set a line at a time, as React Aria's grid layout does. Each item draws one element, a cell of the grid, and 'estimate' is the height of a line. Space the items with padding inside each one, which the list measures with the line. **Keyboard.** The list is one tab stop. | Key | What it does | |---|---| | Down, Up | Moves to the next or the previous item, or in a grid to the item in the same column on the next or the previous line. | | Right, Left | In a grid, moves to the next or the previous item along the line, the other way round on a right-to-left page. | | Home, End | Moves to the first or the last item. | | Page Down, Page Up | Moves by the number of items, or of lines in a grid, on screen. | | A letter or a word | Moves to the next item whose text starts with what you typed. | | Tab | Moves into the focused row's own links and buttons, then out of the list. | An item that is not drawn is scrolled into view and focused, so a keyboard reaches the whole set. When the row holding the tab stop scrolls away, the stop moves to the first row on screen. Typing matches each item's 'text-field', which is the first 'data-field' of the row template by default, or the item itself when it is a string or a number. Each row says its place in the whole set with 'aria-posinset' and 'aria-setsize', so a screen reader says "4,000 of 10,000". The row holding focus stays drawn when it scrolls out. **Selecting.** 'selection-mode' makes the list a list box a reader chooses from: 'single' selects one item and 'multiple' any number. Space or a press selects an item, Shift with Space, an arrow, Home, End or a press takes in the items from the last one chosen, and Control or Command with A selects them all, in 'multiple'. 'value' holds the chosen items' keys, separated by commas, in the order of the set: 'key-field' names each item's key, and a string or a number item is its own key. A change asks with 'helix-before-change' and tells with 'change'. Each row is an 'option' marked 'aria-selected', so a row's own links and buttons are not reached there: keep those to a list without 'selection-mode'. **Loading more.** 'helix-range-change' fires as the items on screen change, and 'range' holds them. 'helix-load-more' fires once a reader is within one screen of the end, once for each length of the set: add to 'items' and it can fire again. While you fetch, set 'loading': the list is busy, and a row after the last item says "Loading more" ('loading-label', or your own content in the 'loading' slot). 'scrollToIndex' takes a reader to an item. **Row height.** Rows are placed by 'estimate' until they are drawn. Then the list reads the drawn rows' height once and places every row by it, so a wrong estimate still reaches the last item. Set 'measured' for rows of different heights. Once the list draws rows of different heights, such as rows that wrap on a narrow screen, it places each row by its own height whether 'measured' is set or not. The list follows its source. A new 'items' array, an edit to the script's text, or a script replaced under the same id draws the new rows. A row that stays in view keeps its element as the list scrolls. The viewport scrolls on this tier. It carries 'data-scroller', and 'core' ships '[data-scroller] { overflow: auto }' into every shadow root, so 'scrollTop' works with no stylesheet. You still need to set a block size. */
|
|
16601
17519
|
"helix-headless-virtual-list": DefineCustomElement<
|
|
16602
17520
|
HelixHeadlessVirtualList,
|
|
16603
17521
|
HelixHeadlessVirtualListVueProps,
|