@fusion.dev/helix-headless 0.142.1 → 0.143.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 +16710 -707
- package/dist/accordion/item/accordion-item.d.ts +38 -2
- package/dist/accordion/item/accordion-item.js +38 -6
- package/dist/accordion/root/accordion-root.d.ts +23 -1
- package/dist/accordion/root/accordion-root.js +39 -3
- package/dist/announcement/root/announcement-root.d.ts +11 -7
- package/dist/announcement/root/announcement-root.js +1 -1
- package/dist/app-header/root/app-header-root.d.ts +21 -0
- package/dist/app-header/root/app-header-root.js +31 -5
- package/dist/area-chart/root/area-chart-root.js +16 -5
- package/dist/avatar/group/avatar-group.d.ts +24 -3
- package/dist/avatar/group/avatar-group.js +34 -2
- package/dist/avatar/root/avatar-root.d.ts +3 -1
- package/dist/avatar/root/avatar-root.js +8 -1
- package/dist/badge/root/badge-root.d.ts +8 -0
- package/dist/bar-chart/root/bar-chart-root.d.ts +19 -3
- package/dist/bar-chart/root/bar-chart-root.js +43 -13
- package/dist/blockquote/root/blockquote-root.d.ts +12 -7
- package/dist/blockquote/root/blockquote-root.js +6 -4
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +9 -3
- package/dist/breadcrumbs/root/breadcrumbs-root.js +9 -1
- package/dist/button/root/button-root.d.ts +37 -0
- package/dist/button/root/button-root.js +44 -0
- package/dist/callout/root/callout-root.d.ts +14 -5
- package/dist/callout/root/callout-root.js +11 -3
- package/dist/canvas/root/canvas-root.d.ts +1 -0
- package/dist/canvas/root/canvas-root.js +10 -1
- package/dist/carousel/root/carousel-root.d.ts +47 -5
- package/dist/carousel/root/carousel-root.js +53 -21
- package/dist/chat/composer/chat-composer.d.ts +13 -11
- package/dist/chat/composer/chat-composer.js +6 -12
- package/dist/chat/message/chat-message.js +8 -1
- package/dist/chat/root/chat-root.d.ts +1 -0
- package/dist/chat/root/chat-root.js +2 -1
- package/dist/checkbox/root/checkbox-root.d.ts +7 -0
- package/dist/checkbox/root/checkbox-root.js +7 -3
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +65 -32
- package/dist/checkbox-group/root/checkbox-group-root.js +85 -37
- package/dist/code/root/code-root.d.ts +1 -1
- package/dist/code-block/root/code-block-root.d.ts +19 -0
- package/dist/code-block/root/code-block-root.js +21 -1
- package/dist/color-input/root/color-input-root.d.ts +26 -1
- package/dist/color-input/root/color-input-root.js +32 -3
- package/dist/color-picker/root/color-picker-root.d.ts +37 -7
- package/dist/color-picker/root/color-picker-root.js +83 -6
- package/dist/combobox/root/combobox-root.d.ts +90 -2
- package/dist/combobox/root/combobox-root.js +160 -19
- package/dist/command/root/command-root.d.ts +17 -6
- package/dist/command/root/command-root.js +12 -1
- package/dist/copy-button/root/copy-button-root.d.ts +21 -6
- package/dist/copy-button/root/copy-button-root.js +11 -1
- package/dist/data-table/root/data-table-root.d.ts +164 -10
- package/dist/data-table/root/data-table-root.js +488 -57
- package/dist/date-input/root/date-input-root.d.ts +53 -8
- package/dist/date-input/root/date-input-root.js +70 -18
- package/dist/date-picker/root/date-picker-root.d.ts +84 -17
- package/dist/date-picker/root/date-picker-root.js +125 -20
- package/dist/dialog/root/dialog-root.d.ts +38 -10
- package/dist/dialog/root/dialog-root.js +55 -2
- package/dist/donut-chart/root/donut-chart-root.d.ts +39 -15
- package/dist/donut-chart/root/donut-chart-root.js +30 -10
- package/dist/drawer/root/drawer-root.d.ts +32 -7
- package/dist/drawer/root/drawer-root.js +50 -5
- package/dist/drilldown/item/drilldown-item.d.ts +16 -13
- package/dist/drilldown/item/drilldown-item.js +6 -2
- package/dist/drilldown/root/drilldown-root.d.ts +21 -5
- package/dist/drilldown/root/drilldown-root.js +26 -10
- package/dist/element-events.generated.js +35 -9
- package/dist/file-input/root/file-input-root.d.ts +18 -1
- package/dist/file-input/root/file-input-root.js +34 -8
- package/dist/filter-input/menu/filter-menu.d.ts +9 -0
- package/dist/filter-input/menu/filter-menu.js +8 -0
- package/dist/filter-input/root/filter-input-root.d.ts +5 -2
- package/dist/filter-input/root/filter-input-root.js +22 -7
- package/dist/format-date/root/format-date-root.d.ts +11 -3
- package/dist/format-date/root/format-date-root.js +26 -5
- package/dist/graph/root/graph-root.d.ts +24 -3
- package/dist/graph/root/graph-root.js +66 -12
- package/dist/heatmap/root/buckets.d.ts +2 -1
- package/dist/heatmap/root/buckets.js +5 -1
- package/dist/heatmap/root/heatmap-root.d.ts +27 -6
- package/dist/heatmap/root/heatmap-root.js +23 -6
- package/dist/icon/root/icon-root.d.ts +24 -3
- package/dist/icon/root/icon-root.js +34 -1
- package/dist/icon-button/root/icon-button-root.d.ts +1 -1
- package/dist/image/root/image-root.d.ts +9 -2
- package/dist/image/root/image-root.js +8 -2
- package/dist/input/root/input-root.d.ts +51 -9
- package/dist/input/root/input-root.js +46 -5
- package/dist/kbd/root/kbd-root.d.ts +12 -4
- package/dist/kbd/root/kbd-root.js +10 -11
- package/dist/legend/root/legend-root.d.ts +7 -0
- package/dist/legend/root/legend-root.js +7 -2
- package/dist/lightbox/item/lightbox-item.d.ts +2 -1
- package/dist/lightbox/root/lightbox-root.d.ts +16 -5
- package/dist/lightbox/root/lightbox-root.js +24 -3
- package/dist/line-chart/root/line-chart-root.d.ts +19 -2
- package/dist/line-chart/root/line-chart-root.js +40 -13
- package/dist/list/item/list-item.d.ts +11 -5
- package/dist/list/item/list-item.js +5 -6
- package/dist/listbox/root/listbox-root.d.ts +111 -2
- package/dist/listbox/root/listbox-root.js +144 -16
- package/dist/map/root/map-root.d.ts +19 -4
- package/dist/map/root/map-root.js +36 -7
- package/dist/megamenu/root/megamenu-root.d.ts +10 -1
- package/dist/megamenu/root/megamenu-root.js +10 -1
- package/dist/menu/item/menu-item.d.ts +41 -12
- package/dist/menu/item/menu-item.js +46 -3
- package/dist/menu/root/menu-root.d.ts +32 -2
- package/dist/menu/root/menu-root.js +48 -8
- package/dist/meter/root/meter-root.d.ts +6 -0
- package/dist/meter/root/meter-root.js +18 -2
- package/dist/navigation/root/navigation-root.d.ts +10 -2
- package/dist/navigation/root/navigation-root.js +13 -2
- package/dist/notifications/group/notification-group.d.ts +1 -0
- package/dist/notifications/notification/notification.d.ts +12 -0
- package/dist/notifications/notification/notification.js +31 -2
- package/dist/notifications/root/notifications-root.d.ts +7 -0
- package/dist/notifications/root/notifications-root.js +17 -2
- package/dist/number-input/root/number-input-root.d.ts +62 -7
- package/dist/number-input/root/number-input-root.js +68 -16
- package/dist/object-inspector/root/object-inspector-root.d.ts +48 -5
- package/dist/object-inspector/root/object-inspector-root.js +91 -11
- package/dist/option/root/option-root.d.ts +4 -1
- package/dist/option/root/option-root.js +1 -0
- package/dist/outline/root/outline-root.d.ts +13 -2
- package/dist/outline/root/outline-root.js +4 -2
- package/dist/pagination/root/pagination-root.d.ts +19 -1
- package/dist/pagination/root/pagination-root.js +49 -9
- package/dist/pagination/size/pagination-size.d.ts +13 -3
- package/dist/pagination/size/pagination-size.js +7 -0
- package/dist/pin-input/root/pin-input-root.d.ts +16 -0
- package/dist/pin-input/root/pin-input-root.js +19 -5
- package/dist/popover/root/popover-root.d.ts +19 -2
- package/dist/popover/root/popover-root.js +22 -1
- package/dist/progress/root/progress-root.d.ts +16 -1
- package/dist/progress/root/progress-root.js +31 -7
- package/dist/qr-code/root/qr-code-root.d.ts +19 -0
- package/dist/qr-code/root/qr-code-root.js +29 -1
- package/dist/radio/group/radio-group.d.ts +41 -0
- package/dist/radio/group/radio-group.js +50 -14
- package/dist/radio/root/radio-root.d.ts +8 -5
- package/dist/radio/root/radio-root.js +1 -2
- package/dist/rating/root/rating-root.d.ts +24 -1
- package/dist/rating/root/rating-root.js +24 -7
- package/dist/scatter-chart/root/scatter-chart-root.js +15 -7
- package/dist/select/root/select-root.d.ts +69 -3
- package/dist/select/root/select-root.js +92 -8
- package/dist/skeleton/root/skeleton-root.d.ts +14 -3
- package/dist/skeleton/root/skeleton-root.js +17 -3
- package/dist/skip-link/root/skip-link-root.d.ts +10 -0
- package/dist/skip-link/root/skip-link-root.js +15 -1
- package/dist/slider/root/slider-root.d.ts +20 -2
- package/dist/slider/root/slider-root.js +41 -3
- package/dist/sparkline/root/sparkline-root.d.ts +9 -10
- package/dist/speed-dial/item/speed-dial-item.d.ts +11 -5
- package/dist/speed-dial/item/speed-dial-item.js +7 -2
- package/dist/speed-dial/root/speed-dial-root.d.ts +15 -4
- package/dist/speed-dial/root/speed-dial-root.js +19 -5
- package/dist/splitter/root/splitter-root.d.ts +28 -6
- package/dist/splitter/root/splitter-root.js +35 -1
- package/dist/stat/root/stat-root.d.ts +7 -1
- package/dist/stat/root/stat-root.js +14 -1
- package/dist/steps/root/steps-root.js +1 -1
- package/dist/switch/root/switch-root.d.ts +2 -0
- package/dist/switch/root/switch-root.js +1 -0
- package/dist/table/cell/table-cell.d.ts +24 -4
- package/dist/table/cell/table-cell.js +21 -1
- package/dist/table/column/table-column.d.ts +32 -6
- package/dist/table/column/table-column.js +36 -6
- package/dist/table/root/table-root.d.ts +94 -3
- package/dist/table/root/table-root.js +128 -5
- package/dist/table/row/table-row.d.ts +7 -0
- package/dist/table/row/table-row.js +9 -1
- package/dist/tabs/root/tabs-root.d.ts +6 -1
- package/dist/tabs/root/tabs-root.js +6 -2
- package/dist/tag/root/tag-root.d.ts +23 -1
- package/dist/tag/root/tag-root.js +16 -2
- package/dist/textarea/root/textarea-root.d.ts +4 -0
- package/dist/textarea/root/textarea-root.js +1 -1
- package/dist/time-input/root/time-input-root.d.ts +28 -2
- package/dist/time-input/root/time-input-root.js +46 -10
- package/dist/time-picker/root/time-picker-root.d.ts +101 -18
- package/dist/time-picker/root/time-picker-root.js +115 -16
- package/dist/toast/root/toast-root.d.ts +64 -1
- package/dist/toast/root/toast-root.js +147 -2
- package/dist/toggle/group/toggle-group.d.ts +38 -1
- package/dist/toggle/group/toggle-group.js +34 -8
- package/dist/toggle/root/toggle-root.d.ts +14 -10
- package/dist/toggle/root/toggle-root.js +3 -3
- package/dist/toolbar/root/toolbar-root.d.ts +55 -15
- package/dist/toolbar/root/toolbar-root.js +99 -16
- package/dist/tooltip/root/tooltip-root.d.ts +37 -4
- package/dist/tooltip/root/tooltip-root.js +48 -0
- package/dist/tour/root/tour-root.d.ts +34 -5
- package/dist/tour/root/tour-root.js +51 -14
- package/dist/tour/stop/tour-stop.d.ts +18 -1
- package/dist/tour/stop/tour-stop.js +25 -5
- package/dist/tree/item/tree-item.d.ts +21 -5
- package/dist/tree/item/tree-item.js +14 -4
- package/dist/tree/root/tree-root.d.ts +29 -5
- package/dist/tree/root/tree-root.js +64 -8
- package/dist/trend/root/trend-root.d.ts +23 -1
- package/dist/trend/root/trend-root.js +28 -7
- package/dist/video/root/keys.d.ts +5 -0
- package/dist/video/root/keys.js +13 -1
- package/dist/video/root/video-root.d.ts +19 -0
- package/dist/video/root/video-root.js +48 -4
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +20 -2
- package/dist/video-playlist/menu/video-playlist-menu.js +27 -5
- package/dist/video-playlist/root/video-playlist-root.js +6 -3
- package/dist/virtual-list/root/virtual-list-root.d.ts +52 -4
- package/dist/virtual-list/root/virtual-list-root.js +103 -21
- package/lint.json +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +4348 -965
- package/types/vue.d.ts +972 -232
package/types/vue.d.ts
CHANGED
|
@@ -165,6 +165,7 @@ import type {
|
|
|
165
165
|
HelixHeadlessVirtualList,
|
|
166
166
|
HelixBeforeCloseEvent,
|
|
167
167
|
HelixBeforeOpenEvent,
|
|
168
|
+
ToggleEvent,
|
|
168
169
|
HelixDismissEvent,
|
|
169
170
|
HelixScrolledEvent,
|
|
170
171
|
HelixBeforeMoveEvent,
|
|
@@ -180,9 +181,11 @@ import type {
|
|
|
180
181
|
HelixRelabelEvent,
|
|
181
182
|
HelixRemoveEvent,
|
|
182
183
|
HelixSelectEvent,
|
|
184
|
+
HelixActivateEvent,
|
|
183
185
|
HelixSendEvent,
|
|
184
186
|
HelixBeforePinEvent,
|
|
185
187
|
HelixHistoryEvent,
|
|
188
|
+
HelixPinEvent,
|
|
186
189
|
HelixBeforeChangeEvent,
|
|
187
190
|
HelixBeforeToggleEvent,
|
|
188
191
|
HelixCopyEvent,
|
|
@@ -190,11 +193,14 @@ import type {
|
|
|
190
193
|
HelixSampleStartEvent,
|
|
191
194
|
HelixCreateEvent,
|
|
192
195
|
HelixFilterEvent,
|
|
196
|
+
HelixFilteredEvent,
|
|
193
197
|
HelixNavigateEvent,
|
|
194
198
|
HelixReorderEvent,
|
|
199
|
+
HelixReorderedEvent,
|
|
200
|
+
HelixSelectedEvent,
|
|
195
201
|
HelixSortEvent,
|
|
202
|
+
HelixSortedEvent,
|
|
196
203
|
HelixFacetEvent,
|
|
197
|
-
HelixActivateEvent,
|
|
198
204
|
HelixBeforeActivateEvent,
|
|
199
205
|
HelixGraphFilterEvent,
|
|
200
206
|
HelixGraphLayoutEvent,
|
|
@@ -216,6 +222,8 @@ import type {
|
|
|
216
222
|
HelixCompleteEvent,
|
|
217
223
|
HelixBeforeCollapseEvent,
|
|
218
224
|
HelixBeforeResizeEvent,
|
|
225
|
+
HelixCollapseEvent,
|
|
226
|
+
HelixResizedEvent,
|
|
219
227
|
HelixTourAskEvent,
|
|
220
228
|
HelixNextEvent,
|
|
221
229
|
HelixPreviousEvent,
|
|
@@ -270,6 +278,9 @@ export type HelixHeadlessAccordionItemHelixBeforeCloseElementEvent =
|
|
|
270
278
|
/** `helix-before-open` event type */
|
|
271
279
|
export type HelixHeadlessAccordionItemHelixBeforeOpenElementEvent =
|
|
272
280
|
HelixHeadlessAccordionItemElementEvent<HelixBeforeOpenEvent>;
|
|
281
|
+
/** `toggle` event type */
|
|
282
|
+
export type HelixHeadlessAccordionItemToggleElementEvent =
|
|
283
|
+
HelixHeadlessAccordionItemElementEvent<ToggleEvent>;
|
|
273
284
|
|
|
274
285
|
export type HelixHeadlessAccordionItemVueProps = {
|
|
275
286
|
/** Where the chevron sits, or `none` for no chevron.
|
|
@@ -290,6 +301,19 @@ indicator is found once at the edge rather than shifting with the text.
|
|
|
290
301
|
`none` is for a row that carries its own affordance and would otherwise
|
|
291
302
|
have two. */
|
|
292
303
|
chevronPlacement?: (HelixHeadlessAccordionItem["chevronPlacement"]) | undefined;
|
|
304
|
+
/** Whether the section is disabled, so its trigger cannot be pressed or
|
|
305
|
+
reached with the arrow keys. A script can still open and close it. */
|
|
306
|
+
disabled?: (HelixHeadlessAccordionItem["disabled"]) | undefined;
|
|
307
|
+
/** The level of the heading around the trigger, from 1 to 6.
|
|
308
|
+
|
|
309
|
+
Unset takes the accordion's `heading-level`, and 3 where that is unset
|
|
310
|
+
too. */
|
|
311
|
+
"heading-level"?: (HelixHeadlessAccordionItem["headingLevel"] | `${number}`) | undefined;
|
|
312
|
+
/** The level of the heading around the trigger, from 1 to 6.
|
|
313
|
+
|
|
314
|
+
Unset takes the accordion's `heading-level`, and 3 where that is unset
|
|
315
|
+
too. */
|
|
316
|
+
headingLevel?: (HelixHeadlessAccordionItem["headingLevel"]) | undefined;
|
|
293
317
|
/** A group name. Opening an item closes the other items with the same name,
|
|
294
318
|
as `<details name>` does.
|
|
295
319
|
|
|
@@ -334,16 +358,29 @@ export type HelixHeadlessAccordionItemVueEvents = {
|
|
|
334
358
|
/** The section is about to open. Cancelable: cancel it to keep it closed. */
|
|
335
359
|
"helix-before-open": HelixHeadlessAccordionItemHelixBeforeOpenElementEvent;
|
|
336
360
|
/** The section opened or closed. The event carries `newState` and `oldState`. */
|
|
337
|
-
toggle:
|
|
361
|
+
toggle: HelixHeadlessAccordionItemToggleElementEvent;
|
|
338
362
|
};
|
|
339
363
|
|
|
340
364
|
export type HelixHeadlessAccordionVueProps = {
|
|
365
|
+
/** The level of the heading around each trigger, from 1 to 6.
|
|
366
|
+
|
|
367
|
+
Unset is 3. An item's own `heading-level` wins over this. */
|
|
368
|
+
"heading-level"?: (HelixHeadlessAccordion["headingLevel"] | `${number}`) | undefined;
|
|
369
|
+
/** The level of the heading around each trigger, from 1 to 6.
|
|
370
|
+
|
|
371
|
+
Unset is 3. An item's own `heading-level` wins over this. */
|
|
372
|
+
headingLevel?: (HelixHeadlessAccordion["headingLevel"]) | undefined;
|
|
341
373
|
/** How many sections may be open at once.
|
|
342
374
|
|
|
343
375
|
Absent is `multiple`, so nothing closes unexpectedly and the default costs
|
|
344
376
|
no attribute on the host. `single` keeps exactly one open and refuses to
|
|
345
377
|
close the last; `single-collapsible` keeps at most one and lets it close.
|
|
346
378
|
|
|
379
|
+
Held however a section opens: a press, `open` set from a script,
|
|
380
|
+
`toggleOpen()`, or `default-open` in the markup. Opening one closes the
|
|
381
|
+
others, and on first render only the first section written open stays
|
|
382
|
+
open. Under `single` the first section opens when none is written open.
|
|
383
|
+
|
|
347
384
|
A union rather than a mode plus a `collapsible` boolean, which would make
|
|
348
385
|
`collapsible` alongside `multiple` expressible and meaningless. */
|
|
349
386
|
mode?: (HelixHeadlessAccordion["mode"]) | undefined;
|
|
@@ -373,9 +410,8 @@ to match `Tag` while differing from it in both directions: it carried
|
|
|
373
410
|
components saying what a thing means, in three vocabularies, one of which
|
|
374
411
|
described itself as a fourth.
|
|
375
412
|
|
|
376
|
-
`accent` is the second emphasis,
|
|
377
|
-
|
|
378
|
-
is the seed itself.
|
|
413
|
+
`accent` is the second emphasis, the second color a theme names, and the
|
|
414
|
+
brand itself until one is named. `primary` is the brand.
|
|
379
415
|
|
|
380
416
|
**`surface` was never a color and has moved to `separation`**, which is the
|
|
381
417
|
axis that owns where a box sits relative to the page. It said the band rode
|
|
@@ -444,6 +480,9 @@ the wordmark and the actions happen to measure.
|
|
|
444
480
|
takes a search field or a breadcrumb trail as readily as a `Navigation`, so
|
|
445
481
|
the property carries the part's name, `content`. */
|
|
446
482
|
contentAlign?: (HelixHeadlessAppHeader["contentAlign"]) | undefined;
|
|
483
|
+
/** The id of the element whose scrolling lifts the bar, for an app shell that
|
|
484
|
+
scrolls a container instead of the window. Unset is the window. */
|
|
485
|
+
scroller?: (HelixHeadlessAppHeader["scroller"]) | undefined;
|
|
447
486
|
};
|
|
448
487
|
|
|
449
488
|
export type HelixHeadlessAppHeaderVueEvents = {
|
|
@@ -500,6 +539,12 @@ shadow root reads a table in that root rather than one in the document. A
|
|
|
500
539
|
Absent falls back to the table's own caption, which is usually the right
|
|
501
540
|
words and is already written. */
|
|
502
541
|
label?: (HelixHeadlessAreaChart["label"]) | undefined;
|
|
542
|
+
/** The locale the chart's own numbers are written in: its axis, its
|
|
543
|
+
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
544
|
+
|
|
545
|
+
Absent uses the runtime's own. The table's cells are shown as the table
|
|
546
|
+
writes them, whatever this says. */
|
|
547
|
+
locale?: (HelixHeadlessAreaChart["locale"]) | undefined;
|
|
503
548
|
};
|
|
504
549
|
|
|
505
550
|
export type HelixHeadlessAreaChartVueEvents = {};
|
|
@@ -524,6 +569,16 @@ everyone, assigning a matching property rather than an attribute.
|
|
|
524
569
|
takes no default**: `max = 0` would stamp `max="0"` onto every host that
|
|
525
570
|
never asked for a limit, including on the server. */
|
|
526
571
|
max?: (HelixHeadlessAvatarGroup["max"]) | undefined;
|
|
572
|
+
/** What a screen reader is told the count is, with `{count}` for the number.
|
|
573
|
+
|
|
574
|
+
The count shows "+3", which reads as "plus three" and says nothing about
|
|
575
|
+
what was counted. */
|
|
576
|
+
"overflow-label"?: (HelixHeadlessAvatarGroup["overflowLabel"]) | undefined;
|
|
577
|
+
/** What a screen reader is told the count is, with `{count}` for the number.
|
|
578
|
+
|
|
579
|
+
The count shows "+3", which reads as "plus three" and says nothing about
|
|
580
|
+
what was counted. */
|
|
581
|
+
overflowLabel?: (HelixHeadlessAvatarGroup["overflowLabel"]) | undefined;
|
|
527
582
|
};
|
|
528
583
|
|
|
529
584
|
export type HelixHeadlessAvatarGroupVueEvents = {};
|
|
@@ -544,7 +599,9 @@ Used for the label and the initials. */
|
|
|
544
599
|
Falls back to the slot, or to initials, if it fails. */
|
|
545
600
|
src?: (HelixHeadlessAvatar["src"]) | undefined;
|
|
546
601
|
/** The image's state: `loading` while it is on its way, `loaded` once it
|
|
547
|
-
arrives, or `error` when it fails and the initials replace it.
|
|
602
|
+
arrives, or `error` when it fails and the initials replace it. An avatar
|
|
603
|
+
with no `src` has no image to wait for, and reports `error` as well, since
|
|
604
|
+
the initials are what it shows.
|
|
548
605
|
|
|
549
606
|
Read-only to a consumer: it is a report rather than a setting, and the same
|
|
550
607
|
report `Image` gives, for the same reason. `load` and `error` fire once, so
|
|
@@ -608,6 +665,10 @@ of many thin bars, where the eye has stopped counting.
|
|
|
608
665
|
Furniture rather than data, so the rules are inside the `aria-hidden` plot
|
|
609
666
|
and reach no reader through the table. */
|
|
610
667
|
gridlines?: (HelixHeadlessBarChart["gridlines"]) | undefined;
|
|
668
|
+
/** The word the summary puts before each series' highest reading. */
|
|
669
|
+
"highest-label"?: (HelixHeadlessBarChart["highestLabel"]) | undefined;
|
|
670
|
+
/** The word the summary puts before each series' highest reading. */
|
|
671
|
+
highestLabel?: (HelixHeadlessBarChart["highestLabel"]) | undefined;
|
|
611
672
|
/** The names of the series to draw as lines. The other series are drawn as
|
|
612
673
|
columns.
|
|
613
674
|
|
|
@@ -639,8 +700,8 @@ names are words rather than dates: a row of long names either overlaps or
|
|
|
639
700
|
turns on its side, and neither is as readable as putting them down the left
|
|
640
701
|
where they read normally.
|
|
641
702
|
|
|
642
|
-
`orientation`
|
|
643
|
-
which way a number moved. */
|
|
703
|
+
Named `orientation` because `direction` is taken: `Trend` uses it in the
|
|
704
|
+
same group for which way a number moved. */
|
|
644
705
|
orientation?: (HelixHeadlessBarChart["orientation"]) | undefined;
|
|
645
706
|
/** The names of the series measured against a second scale of their own.
|
|
646
707
|
|
|
@@ -689,6 +750,12 @@ shadow root reads a table in that root rather than one in the document. A
|
|
|
689
750
|
Absent falls back to the table's own caption, which is usually the right
|
|
690
751
|
words and is already written. */
|
|
691
752
|
label?: (HelixHeadlessBarChart["label"]) | undefined;
|
|
753
|
+
/** The locale the chart's own numbers are written in: its axis, its
|
|
754
|
+
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
755
|
+
|
|
756
|
+
Absent uses the runtime's own. The table's cells are shown as the table
|
|
757
|
+
writes them, whatever this says. */
|
|
758
|
+
locale?: (HelixHeadlessBarChart["locale"]) | undefined;
|
|
692
759
|
};
|
|
693
760
|
|
|
694
761
|
export type HelixHeadlessBarChartVueEvents = {};
|
|
@@ -731,7 +798,11 @@ The consumer's decision. */
|
|
|
731
798
|
|
|
732
799
|
export type HelixHeadlessBreadcrumbVueEvents = {};
|
|
733
800
|
|
|
734
|
-
export type HelixHeadlessBreadcrumbsVueProps = {
|
|
801
|
+
export type HelixHeadlessBreadcrumbsVueProps = {
|
|
802
|
+
/** The landmark's name, read by screen readers. An `aria-label` on the host
|
|
803
|
+
wins over it. */
|
|
804
|
+
label?: (HelixHeadlessBreadcrumbs["label"]) | undefined;
|
|
805
|
+
};
|
|
735
806
|
|
|
736
807
|
export type HelixHeadlessBreadcrumbsVueEvents = {};
|
|
737
808
|
|
|
@@ -944,6 +1015,16 @@ callout reports a status, or `neutral` for an aside that reports none, and
|
|
|
944
1015
|
never a brand role, so it takes five of the seven values. One word per axis
|
|
945
1016
|
is the whole of the registry, which is why there is no `severity` beside it. */
|
|
946
1017
|
tone?: (HelixHeadlessCallout["tone"]) | undefined;
|
|
1018
|
+
/** What a screen reader is told the tone is, such as "Fehler".
|
|
1019
|
+
|
|
1020
|
+
Absent is the English for the tone: "Error", "Information", "Note",
|
|
1021
|
+
"Success" or "Warning". */
|
|
1022
|
+
"tone-label"?: (HelixHeadlessCallout["toneLabel"]) | undefined;
|
|
1023
|
+
/** What a screen reader is told the tone is, such as "Fehler".
|
|
1024
|
+
|
|
1025
|
+
Absent is the English for the tone: "Error", "Information", "Note",
|
|
1026
|
+
"Success" or "Warning". */
|
|
1027
|
+
toneLabel?: (HelixHeadlessCallout["toneLabel"]) | undefined;
|
|
947
1028
|
};
|
|
948
1029
|
|
|
949
1030
|
export type HelixHeadlessCalloutVueEvents = {};
|
|
@@ -1521,6 +1602,9 @@ export type HelixHeadlessCarouselElementEvent<E = Event> = TypedEvent<
|
|
|
1521
1602
|
HelixHeadlessCarousel,
|
|
1522
1603
|
E
|
|
1523
1604
|
>;
|
|
1605
|
+
/** `helix-activate` event type */
|
|
1606
|
+
export type HelixHeadlessCarouselHelixActivateElementEvent =
|
|
1607
|
+
HelixHeadlessCarouselElementEvent<HelixActivateEvent>;
|
|
1524
1608
|
/** `helix-select` event type */
|
|
1525
1609
|
export type HelixHeadlessCarouselHelixSelectElementEvent =
|
|
1526
1610
|
HelixHeadlessCarouselElementEvent<HelixSelectEvent>;
|
|
@@ -1753,6 +1837,8 @@ case is the absent attribute, and the styles read it that way. */
|
|
|
1753
1837
|
};
|
|
1754
1838
|
|
|
1755
1839
|
export type HelixHeadlessCarouselVueEvents = {
|
|
1840
|
+
/** Fired after the slide in view changes, with the new index as a string in `detail.value`. */
|
|
1841
|
+
"helix-activate": HelixHeadlessCarouselHelixActivateElementEvent;
|
|
1756
1842
|
/** Fired before the slide in view changes, with the requested index. Cancelable: cancel it to keep the current slide. Nothing moves, and a drag returns to the slide the index still holds. See `handleScroll`. */
|
|
1757
1843
|
"helix-select": HelixHeadlessCarouselHelixSelectElementEvent;
|
|
1758
1844
|
};
|
|
@@ -1797,13 +1883,16 @@ has to mean a new line and nothing else. */
|
|
|
1797
1883
|
submitOn?: (HelixHeadlessChatComposer["submitOn"]) | undefined;
|
|
1798
1884
|
/** The text the user has written.
|
|
1799
1885
|
|
|
1800
|
-
|
|
1886
|
+
It follows typing, so reading it gives the draft. Set it to seed a draft or
|
|
1887
|
+
to replace the one in the field, and set it to `''` to clear it. */
|
|
1801
1888
|
value?: (HelixHeadlessChatComposer["value"]) | undefined;
|
|
1802
1889
|
};
|
|
1803
1890
|
|
|
1804
1891
|
export type HelixHeadlessChatComposerVueEvents = {
|
|
1805
1892
|
/** Fired when the user sends their turn, and cancelable. */
|
|
1806
1893
|
"helix-send": HelixHeadlessChatComposerHelixSendElementEvent;
|
|
1894
|
+
/** The user changed the text. Read it from `value`, for a typing indicator or a saved draft. Sent on the composer and does not bubble. */
|
|
1895
|
+
input: HelixHeadlessChatComposerElementEvent;
|
|
1807
1896
|
};
|
|
1808
1897
|
|
|
1809
1898
|
/** `HelixHeadlessChatMessage` component event */
|
|
@@ -1871,6 +1960,9 @@ export type HelixHeadlessChatHelixBeforePinElementEvent =
|
|
|
1871
1960
|
/** `helix-history` event type */
|
|
1872
1961
|
export type HelixHeadlessChatHelixHistoryElementEvent =
|
|
1873
1962
|
HelixHeadlessChatElementEvent<HelixHistoryEvent>;
|
|
1963
|
+
/** `helix-pin` event type */
|
|
1964
|
+
export type HelixHeadlessChatHelixPinElementEvent =
|
|
1965
|
+
HelixHeadlessChatElementEvent<HelixPinEvent>;
|
|
1874
1966
|
/** `helix-send` event type */
|
|
1875
1967
|
export type HelixHeadlessChatHelixSendElementEvent =
|
|
1876
1968
|
HelixHeadlessChatElementEvent<HelixSendEvent>;
|
|
@@ -1958,6 +2050,8 @@ export type HelixHeadlessChatVueEvents = {
|
|
|
1958
2050
|
"helix-before-pin": HelixHeadlessChatHelixBeforePinElementEvent;
|
|
1959
2051
|
/** Fired when the user reaches the oldest turn while `history` is `more`. It reports the position and cannot be canceled. */
|
|
1960
2052
|
"helix-history": HelixHeadlessChatHelixHistoryElementEvent;
|
|
2053
|
+
/** Fired after the transcript is pinned or unpinned, with `true` or `false` in `detail.value`. */
|
|
2054
|
+
"helix-pin": HelixHeadlessChatHelixPinElementEvent;
|
|
1961
2055
|
/** Fired when the user sends a turn from the composer or retries a failed one. It is fired inside and handled here, so you can listen for it on the conversation. Cancelable: canceling it sends nothing and leaves the decision to you. */
|
|
1962
2056
|
"helix-send": HelixHeadlessChatHelixSendElementEvent;
|
|
1963
2057
|
};
|
|
@@ -1972,12 +2066,13 @@ export type HelixHeadlessCheckboxGroupHelixBeforeChangeElementEvent =
|
|
|
1972
2066
|
HelixHeadlessCheckboxGroupElementEvent<HelixBeforeChangeEvent>;
|
|
1973
2067
|
|
|
1974
2068
|
export type HelixHeadlessCheckboxGroupVueProps = {
|
|
1975
|
-
/** The checked values, comma separated.
|
|
2069
|
+
/** The checked values, comma separated.
|
|
2070
|
+
|
|
2071
|
+
Read from the boxes once they are known, so a box a script ticks directly
|
|
2072
|
+
is in it at once. Written, it is pushed onto the boxes. */
|
|
1976
2073
|
value?: (HelixHeadlessCheckboxGroup["value"]) | undefined;
|
|
1977
2074
|
/** */
|
|
1978
|
-
"aria-label"?:
|
|
1979
|
-
/** */
|
|
1980
|
-
namedBy?: (HelixHeadlessCheckboxGroup["namedBy"]) | undefined;
|
|
2075
|
+
"aria-label"?: unknown;
|
|
1981
2076
|
/** The validation message shown under the control. It replaces the
|
|
1982
2077
|
browser's message. */
|
|
1983
2078
|
feedback?: (HelixHeadlessCheckboxGroup["feedback"]) | undefined;
|
|
@@ -2055,7 +2150,11 @@ export type HelixHeadlessCheckboxHelixBeforeToggleElementEvent =
|
|
|
2055
2150
|
export type HelixHeadlessCheckboxVueProps = {
|
|
2056
2151
|
/** Shows the box as neither checked nor unchecked.
|
|
2057
2152
|
|
|
2058
|
-
Presentation only. It never submits, and the first change resolves it.
|
|
2153
|
+
Presentation only. It never submits, and the first change resolves it.
|
|
2154
|
+
|
|
2155
|
+
Not reflected, as no state is: the element resolves it itself, and a
|
|
2156
|
+
reflected one removed the attribute the consumer wrote. A stylesheet
|
|
2157
|
+
reads it as `:state(indeterminate)`. */
|
|
2059
2158
|
indeterminate?: (HelixHeadlessCheckbox["indeterminate"]) | undefined;
|
|
2060
2159
|
/** The value submitted when the box is checked. */
|
|
2061
2160
|
value?: (HelixHeadlessCheckbox["value"]) | undefined;
|
|
@@ -2073,9 +2172,7 @@ stylesheets. */
|
|
|
2073
2172
|
/** Whether the control starts checked. A form reset returns it to this state. */
|
|
2074
2173
|
defaultChecked?: (HelixHeadlessCheckbox["defaultChecked"]) | undefined;
|
|
2075
2174
|
/** */
|
|
2076
|
-
"aria-label"?:
|
|
2077
|
-
/** */
|
|
2078
|
-
namedBy?: (HelixHeadlessCheckbox["namedBy"]) | undefined;
|
|
2175
|
+
"aria-label"?: unknown;
|
|
2079
2176
|
/** The validation message shown under the control. It replaces the
|
|
2080
2177
|
browser's message. */
|
|
2081
2178
|
feedback?: (HelixHeadlessCheckbox["feedback"]) | undefined;
|
|
@@ -2142,6 +2239,14 @@ export type HelixHeadlessCheckboxVueEvents = {
|
|
|
2142
2239
|
};
|
|
2143
2240
|
|
|
2144
2241
|
export type HelixHeadlessCodeBlockVueProps = {
|
|
2242
|
+
/** The copy button's name and tooltip text after a copy. */
|
|
2243
|
+
"copied-label"?: (HelixHeadlessCodeBlock["copiedLabel"]) | undefined;
|
|
2244
|
+
/** The copy button's name and tooltip text after a copy. */
|
|
2245
|
+
copiedLabel?: (HelixHeadlessCodeBlock["copiedLabel"]) | undefined;
|
|
2246
|
+
/** The copy button's name and tooltip text before a copy. */
|
|
2247
|
+
"copy-label"?: (HelixHeadlessCodeBlock["copyLabel"]) | undefined;
|
|
2248
|
+
/** The copy button's name and tooltip text before a copy. */
|
|
2249
|
+
copyLabel?: (HelixHeadlessCodeBlock["copyLabel"]) | undefined;
|
|
2145
2250
|
/** Whether the content is a unified diff, drawn as the lines it changed.
|
|
2146
2251
|
|
|
2147
2252
|
Reflected, because the stylesheet paints a diff differently from code, and
|
|
@@ -2220,6 +2325,9 @@ export type HelixHeadlessColorInputHelixBeforeCloseElementEvent =
|
|
|
2220
2325
|
/** `helix-before-open` event type */
|
|
2221
2326
|
export type HelixHeadlessColorInputHelixBeforeOpenElementEvent =
|
|
2222
2327
|
HelixHeadlessColorInputElementEvent<HelixBeforeOpenEvent>;
|
|
2328
|
+
/** `toggle` event type */
|
|
2329
|
+
export type HelixHeadlessColorInputToggleElementEvent =
|
|
2330
|
+
HelixHeadlessColorInputElementEvent<ToggleEvent>;
|
|
2223
2331
|
|
|
2224
2332
|
export type HelixHeadlessColorInputVueProps = {
|
|
2225
2333
|
/** Whether the color carries an alpha channel. */
|
|
@@ -2247,6 +2355,16 @@ value spelled out. */
|
|
|
2247
2355
|
noFormat?: (HelixHeadlessColorInput["noFormat"]) | undefined;
|
|
2248
2356
|
/** The text the field shows before a color is entered. */
|
|
2249
2357
|
placeholder?: (HelixHeadlessColorInput["placeholder"]) | undefined;
|
|
2358
|
+
/** Whether the color is locked. A read-only field still submits its value.
|
|
2359
|
+
|
|
2360
|
+
The field can be read and copied from, and the panel does not open, as on
|
|
2361
|
+
Date Input and Time Input. */
|
|
2362
|
+
readonly?: (HelixHeadlessColorInput["readOnly"]) | undefined;
|
|
2363
|
+
/** Whether the color is locked. A read-only field still submits its value.
|
|
2364
|
+
|
|
2365
|
+
The field can be read and copied from, and the panel does not open, as on
|
|
2366
|
+
Date Input and Time Input. */
|
|
2367
|
+
readOnly?: (HelixHeadlessColorInput["readOnly"]) | undefined;
|
|
2250
2368
|
/** Colors offered under the picker, as a comma-separated list. */
|
|
2251
2369
|
swatches?: (HelixHeadlessColorInput["swatches"]) | undefined;
|
|
2252
2370
|
/** Accessible name for the control that opens the panel. */
|
|
@@ -2314,9 +2432,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
2314
2432
|
a reset should return to. */
|
|
2315
2433
|
value?: (HelixHeadlessColorInput["value"]) | undefined;
|
|
2316
2434
|
/** */
|
|
2317
|
-
"aria-label"?:
|
|
2318
|
-
/** */
|
|
2319
|
-
namedBy?: (HelixHeadlessColorInput["namedBy"]) | undefined;
|
|
2435
|
+
"aria-label"?: unknown;
|
|
2320
2436
|
/** The validation message shown under the control. It replaces the
|
|
2321
2437
|
browser's message. */
|
|
2322
2438
|
feedback?: (HelixHeadlessColorInput["feedback"]) | undefined;
|
|
@@ -2385,7 +2501,7 @@ export type HelixHeadlessColorInputVueEvents = {
|
|
|
2385
2501
|
/** Fired as the value changes. */
|
|
2386
2502
|
input: HelixHeadlessColorInputElementEvent;
|
|
2387
2503
|
/** The panel opened or closed. The event carries `newState` and `oldState`. */
|
|
2388
|
-
toggle:
|
|
2504
|
+
toggle: HelixHeadlessColorInputToggleElementEvent;
|
|
2389
2505
|
};
|
|
2390
2506
|
|
|
2391
2507
|
/** `HelixHeadlessColorPicker` component event */
|
|
@@ -2419,6 +2535,10 @@ point.** The field holds a color, so a browser offering to fill it with a
|
|
|
2419
2535
|
saved address is competing for the same keystrokes as the square and the
|
|
2420
2536
|
ramps. A consumer who wants autofill can still ask. */
|
|
2421
2537
|
autocomplete?: (HelixHeadlessColorPicker["autocomplete"]) | undefined;
|
|
2538
|
+
/** The message shown when the value is text that is not a color. */
|
|
2539
|
+
"bad-input-message"?: (HelixHeadlessColorPicker["badInputMessage"]) | undefined;
|
|
2540
|
+
/** The message shown when the value is text that is not a color. */
|
|
2541
|
+
badInputMessage?: (HelixHeadlessColorPicker["badInputMessage"]) | undefined;
|
|
2422
2542
|
/** What the square's vertical ramp is called.
|
|
2423
2543
|
|
|
2424
2544
|
**Every word the picker speaks is a property**, so a page in another
|
|
@@ -2575,13 +2695,11 @@ a panel composed *into* a field that already has all three, so taking it
|
|
|
2575
2695
|
would give one control two of each. What is left is the validity call and
|
|
2576
2696
|
the anchor the browser points its bubble at.
|
|
2577
2697
|
|
|
2578
|
-
**
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
reports it for this family instead, once, against the field the reader
|
|
2584
|
-
typed into. */
|
|
2698
|
+
**Text that is not a color is bad input**, so a form does not submit
|
|
2699
|
+
`#00` from a half-typed value. The picker draws no message of its own, so
|
|
2700
|
+
reporting it as each keystroke arrives shows nothing until the form asks;
|
|
2701
|
+
Color Input shows its own message against the field the reader typed
|
|
2702
|
+
into. */
|
|
2585
2703
|
required?: (HelixHeadlessColorPicker["required"]) | undefined;
|
|
2586
2704
|
/** What the square's horizontal ramp is called. */
|
|
2587
2705
|
"saturation-label"?: (HelixHeadlessColorPicker["saturationLabel"]) | undefined;
|
|
@@ -2683,6 +2801,9 @@ export type HelixHeadlessComboboxHelixCreateElementEvent =
|
|
|
2683
2801
|
/** `helix-filter` event type */
|
|
2684
2802
|
export type HelixHeadlessComboboxHelixFilterElementEvent =
|
|
2685
2803
|
HelixHeadlessComboboxElementEvent<HelixFilterEvent>;
|
|
2804
|
+
/** `toggle` event type */
|
|
2805
|
+
export type HelixHeadlessComboboxToggleElementEvent =
|
|
2806
|
+
HelixHeadlessComboboxElementEvent<ToggleEvent>;
|
|
2686
2807
|
|
|
2687
2808
|
export type HelixHeadlessComboboxVueProps = {
|
|
2688
2809
|
/** What the browser may autofill in the text field, as a platform token.
|
|
@@ -2697,7 +2818,8 @@ keystrokes as the listbox. A consumer who wants autofill can still ask. */
|
|
|
2697
2818
|
The row appears while what is typed matches no option's words exactly, so
|
|
2698
2819
|
it is offered next to near misses too: a reader typing "Ruby on Rails" with
|
|
2699
2820
|
"Ruby" in the list wants the one they are typing, not the one they are
|
|
2700
|
-
halfway through.
|
|
2821
|
+
halfway through. The arrow keys reach it after the last option, and Enter
|
|
2822
|
+
on it adds what was typed. */
|
|
2701
2823
|
creatable?: (HelixHeadlessCombobox["creatable"]) | undefined;
|
|
2702
2824
|
/** The text of the create row, shown before the typed words it adds. */
|
|
2703
2825
|
"create-label"?: (HelixHeadlessCombobox["createLabel"]) | undefined;
|
|
@@ -2740,6 +2862,16 @@ element is responsible for. */
|
|
|
2740
2862
|
multiple?: (HelixHeadlessCombobox["multiple"]) | undefined;
|
|
2741
2863
|
/** Text shown while nothing has been chosen. */
|
|
2742
2864
|
placeholder?: (HelixHeadlessCombobox["placeholder"]) | undefined;
|
|
2865
|
+
/** Whether the choice is locked. A read-only combobox still submits its value.
|
|
2866
|
+
|
|
2867
|
+
The field can be read and focused, the list does not open, and the tags of
|
|
2868
|
+
a `multiple` combobox cannot be dismissed. */
|
|
2869
|
+
readonly?: (HelixHeadlessCombobox["readOnly"]) | undefined;
|
|
2870
|
+
/** Whether the choice is locked. A read-only combobox still submits its value.
|
|
2871
|
+
|
|
2872
|
+
The field can be read and focused, the list does not open, and the tags of
|
|
2873
|
+
a `multiple` combobox cannot be dismissed. */
|
|
2874
|
+
readOnly?: (HelixHeadlessCombobox["readOnly"]) | undefined;
|
|
2743
2875
|
/** The name of the control that removes one chosen option, with `{name}`
|
|
2744
2876
|
filled in.
|
|
2745
2877
|
|
|
@@ -2804,9 +2936,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
2804
2936
|
a reset should return to. */
|
|
2805
2937
|
value?: (HelixHeadlessCombobox["value"]) | undefined;
|
|
2806
2938
|
/** */
|
|
2807
|
-
"aria-label"?:
|
|
2808
|
-
/** */
|
|
2809
|
-
namedBy?: (HelixHeadlessCombobox["namedBy"]) | undefined;
|
|
2939
|
+
"aria-label"?: unknown;
|
|
2810
2940
|
/** The validation message shown under the control. It replaces the
|
|
2811
2941
|
browser's message. */
|
|
2812
2942
|
feedback?: (HelixHeadlessCombobox["feedback"]) | undefined;
|
|
@@ -2886,7 +3016,7 @@ export type HelixHeadlessComboboxVueEvents = {
|
|
|
2886
3016
|
/** Fired after the value changes. */
|
|
2887
3017
|
input: HelixHeadlessComboboxElementEvent;
|
|
2888
3018
|
/** Fired when the panel opens or closes, with `newState` and `oldState`. */
|
|
2889
|
-
toggle:
|
|
3019
|
+
toggle: HelixHeadlessComboboxToggleElementEvent;
|
|
2890
3020
|
};
|
|
2891
3021
|
|
|
2892
3022
|
/** `HelixHeadlessCommand` component event */
|
|
@@ -2900,9 +3030,15 @@ export type HelixHeadlessCommandHelixBeforeCloseElementEvent =
|
|
|
2900
3030
|
/** `helix-before-open` event type */
|
|
2901
3031
|
export type HelixHeadlessCommandHelixBeforeOpenElementEvent =
|
|
2902
3032
|
HelixHeadlessCommandElementEvent<HelixBeforeOpenEvent>;
|
|
3033
|
+
/** `helix-filter` event type */
|
|
3034
|
+
export type HelixHeadlessCommandHelixFilterElementEvent =
|
|
3035
|
+
HelixHeadlessCommandElementEvent<HelixFilterEvent>;
|
|
2903
3036
|
/** `helix-select` event type */
|
|
2904
3037
|
export type HelixHeadlessCommandHelixSelectElementEvent =
|
|
2905
3038
|
HelixHeadlessCommandElementEvent<HelixSelectEvent>;
|
|
3039
|
+
/** `toggle` event type */
|
|
3040
|
+
export type HelixHeadlessCommandToggleElementEvent =
|
|
3041
|
+
HelixHeadlessCommandElementEvent<ToggleEvent>;
|
|
2906
3042
|
|
|
2907
3043
|
export type HelixHeadlessCommandVueProps = {
|
|
2908
3044
|
/** The text shown when the filter matches no commands. */
|
|
@@ -2917,6 +3053,15 @@ with: one key, said once. */
|
|
|
2917
3053
|
hotkey?: (HelixHeadlessCommand["hotkey"]) | undefined;
|
|
2918
3054
|
/** Accessible name for the overlay, which has no visible heading. */
|
|
2919
3055
|
label?: (HelixHeadlessCommand["label"]) | undefined;
|
|
3056
|
+
/** Whether the commands are still loading, for a palette that asks a server
|
|
3057
|
+
for them as the user types.
|
|
3058
|
+
|
|
3059
|
+
Passed to the list, which shows `loading-text` and tells screen readers. */
|
|
3060
|
+
loading?: (HelixHeadlessCommand["loading"]) | undefined;
|
|
3061
|
+
/** The text shown while the commands load. */
|
|
3062
|
+
"loading-text"?: (HelixHeadlessCommand["loadingText"]) | undefined;
|
|
3063
|
+
/** The text shown while the commands load. */
|
|
3064
|
+
loadingText?: (HelixHeadlessCommand["loadingText"]) | undefined;
|
|
2920
3065
|
/** The text shown in the filter field before anything is typed. */
|
|
2921
3066
|
placeholder?: (HelixHeadlessCommand["placeholder"]) | undefined;
|
|
2922
3067
|
/** Whether the element starts open. Ignored once `open` is written. */
|
|
@@ -2943,10 +3088,12 @@ export type HelixHeadlessCommandVueEvents = {
|
|
|
2943
3088
|
"helix-before-close": HelixHeadlessCommandHelixBeforeCloseElementEvent;
|
|
2944
3089
|
/** The palette is about to open. Cancelable: cancel it to keep it closed. */
|
|
2945
3090
|
"helix-before-open": HelixHeadlessCommandHelixBeforeOpenElementEvent;
|
|
3091
|
+
/** Fired as the user types, with the text the list is filtered by. Cancelable: cancel it to leave the list unfiltered and filter the commands yourself, for example on a server while `loading` is set. */
|
|
3092
|
+
"helix-filter": HelixHeadlessCommandHelixFilterElementEvent;
|
|
2946
3093
|
/** A command was chosen. Cancelable: cancel it to keep the palette open. */
|
|
2947
3094
|
"helix-select": HelixHeadlessCommandHelixSelectElementEvent;
|
|
2948
3095
|
/** The palette opened or closed. The event carries `newState` and `oldState`. */
|
|
2949
|
-
toggle:
|
|
3096
|
+
toggle: HelixHeadlessCommandToggleElementEvent;
|
|
2950
3097
|
};
|
|
2951
3098
|
|
|
2952
3099
|
/** `HelixHeadlessCopyButton` component event */
|
|
@@ -2977,13 +3124,11 @@ world is called Copy. A consumer with a better word still sets it. */
|
|
|
2977
3124
|
label?: (HelixHeadlessCopyButton["label"]) | undefined;
|
|
2978
3125
|
/** The text copied to the clipboard.
|
|
2979
3126
|
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
meaning has nothing to act on; where a consumer changes the type, what it
|
|
2983
|
-
submits is what it copies, which is the reading anybody would expect of one
|
|
2984
|
-
property called `value`. Declared here rather than inherited because the
|
|
2985
|
-
clipboard is what this component is about and its own page should say so. */
|
|
3127
|
+
It replaces `Button.value`, the submit value: a copy button never submits,
|
|
3128
|
+
whatever its `type`. Declared here so its own page says what it holds. */
|
|
2986
3129
|
value?: (HelixHeadlessCopyButton["value"]) | undefined;
|
|
3130
|
+
/** */
|
|
3131
|
+
"aria-label"?: unknown;
|
|
2987
3132
|
/** What to send when the button is activated, and what to send it to.
|
|
2988
3133
|
|
|
2989
3134
|
The platform's invoker attributes, forwarded onto the inner `<button>`
|
|
@@ -3142,21 +3287,36 @@ export type HelixHeadlessDataTableElementEvent<E = Event> = TypedEvent<
|
|
|
3142
3287
|
HelixHeadlessDataTable,
|
|
3143
3288
|
E
|
|
3144
3289
|
>;
|
|
3290
|
+
/** `helix-activate` event type */
|
|
3291
|
+
export type HelixHeadlessDataTableHelixActivateElementEvent =
|
|
3292
|
+
HelixHeadlessDataTableElementEvent<HelixActivateEvent>;
|
|
3145
3293
|
/** `helix-filter` event type */
|
|
3146
3294
|
export type HelixHeadlessDataTableHelixFilterElementEvent =
|
|
3147
3295
|
HelixHeadlessDataTableElementEvent<HelixFilterEvent>;
|
|
3296
|
+
/** `helix-filtered` event type */
|
|
3297
|
+
export type HelixHeadlessDataTableHelixFilteredElementEvent =
|
|
3298
|
+
HelixHeadlessDataTableElementEvent<HelixFilteredEvent>;
|
|
3148
3299
|
/** `helix-navigate` event type */
|
|
3149
3300
|
export type HelixHeadlessDataTableHelixNavigateElementEvent =
|
|
3150
3301
|
HelixHeadlessDataTableElementEvent<HelixNavigateEvent>;
|
|
3151
3302
|
/** `helix-reorder` event type */
|
|
3152
3303
|
export type HelixHeadlessDataTableHelixReorderElementEvent =
|
|
3153
3304
|
HelixHeadlessDataTableElementEvent<HelixReorderEvent>;
|
|
3305
|
+
/** `helix-reordered` event type */
|
|
3306
|
+
export type HelixHeadlessDataTableHelixReorderedElementEvent =
|
|
3307
|
+
HelixHeadlessDataTableElementEvent<HelixReorderedEvent>;
|
|
3154
3308
|
/** `helix-select` event type */
|
|
3155
3309
|
export type HelixHeadlessDataTableHelixSelectElementEvent =
|
|
3156
3310
|
HelixHeadlessDataTableElementEvent<HelixSelectEvent>;
|
|
3311
|
+
/** `helix-selected` event type */
|
|
3312
|
+
export type HelixHeadlessDataTableHelixSelectedElementEvent =
|
|
3313
|
+
HelixHeadlessDataTableElementEvent<HelixSelectedEvent>;
|
|
3157
3314
|
/** `helix-sort` event type */
|
|
3158
3315
|
export type HelixHeadlessDataTableHelixSortElementEvent =
|
|
3159
3316
|
HelixHeadlessDataTableElementEvent<HelixSortEvent>;
|
|
3317
|
+
/** `helix-sorted` event type */
|
|
3318
|
+
export type HelixHeadlessDataTableHelixSortedElementEvent =
|
|
3319
|
+
HelixHeadlessDataTableElementEvent<HelixSortedEvent>;
|
|
3160
3320
|
|
|
3161
3321
|
export type HelixHeadlessDataTableVueProps = {
|
|
3162
3322
|
/** The word for an ascending sort, in `sorted-label`. */
|
|
@@ -3207,6 +3367,12 @@ One query rather than a predicate per column, which is what a reader means
|
|
|
3207
3367
|
by a search box above a table. It matches on each column's ordering value,
|
|
3208
3368
|
so search and sort cannot disagree about what a column holds. */
|
|
3209
3369
|
filter?: (HelixHeadlessDataTable["filter"]) | undefined;
|
|
3370
|
+
/** The built-in pagination's name for a gap in its run of pages. `{page}` is
|
|
3371
|
+
replaced with the page it jumps to. */
|
|
3372
|
+
"gap-label"?: (HelixHeadlessDataTable["gapLabel"]) | undefined;
|
|
3373
|
+
/** The built-in pagination's name for a gap in its run of pages. `{page}` is
|
|
3374
|
+
replaced with the page it jumps to. */
|
|
3375
|
+
gapLabel?: (HelixHeadlessDataTable["gapLabel"]) | undefined;
|
|
3210
3376
|
/** The grid's name, read by screen readers. */
|
|
3211
3377
|
label?: (HelixHeadlessDataTable["label"]) | undefined;
|
|
3212
3378
|
/** Where filtering, sorting, and paging happen. `client` does them in the
|
|
@@ -3219,6 +3385,10 @@ the client cannot hold the data, so this is not an optimization, it is the
|
|
|
3219
3385
|
only mode that works, and it is here from the start because adding it later
|
|
3220
3386
|
inverts the data flow. */
|
|
3221
3387
|
mode?: (HelixHeadlessDataTable["mode"]) | undefined;
|
|
3388
|
+
/** The built-in pagination's name for the button that moves forward a page. */
|
|
3389
|
+
"next-label"?: (HelixHeadlessDataTable["nextLabel"]) | undefined;
|
|
3390
|
+
/** The built-in pagination's name for the button that moves forward a page. */
|
|
3391
|
+
nextLabel?: (HelixHeadlessDataTable["nextLabel"]) | undefined;
|
|
3222
3392
|
/** The column order, as field names separated by spaces.
|
|
3223
3393
|
|
|
3224
3394
|
A reader's move fires `helix-reorder` first, and refusing it leaves the
|
|
@@ -3233,6 +3403,12 @@ Clamped on the way out, so what this reports is the page it drew: a
|
|
|
3233
3403
|
bookmarked link to page 99 of a result that has since shrunk reads back as
|
|
3234
3404
|
the last page rather than as 99. */
|
|
3235
3405
|
page?: (HelixHeadlessDataTable["page"]) | undefined;
|
|
3406
|
+
/** The built-in pagination's name for one page. `{page}` and `{pages}` are
|
|
3407
|
+
replaced with the page number and the page count. */
|
|
3408
|
+
"page-label"?: (HelixHeadlessDataTable["pageLabel"]) | undefined;
|
|
3409
|
+
/** The built-in pagination's name for one page. `{page}` and `{pages}` are
|
|
3410
|
+
replaced with the page number and the page count. */
|
|
3411
|
+
pageLabel?: (HelixHeadlessDataTable["pageLabel"]) | undefined;
|
|
3236
3412
|
/** The number of rows on a page. `0` shows every row, with no paging.
|
|
3237
3413
|
|
|
3238
3414
|
**It announces nothing, and that is not an omission.** Nothing in this
|
|
@@ -3256,11 +3432,29 @@ change pages shows a reader the first twenty rows and no way to know there
|
|
|
3256
3432
|
are more. Off for a consumer supplying their own through the `footer` slot,
|
|
3257
3433
|
which is why the slot replaces this rather than sitting beside it. */
|
|
3258
3434
|
paginated?: (HelixHeadlessDataTable["paginated"]) | undefined;
|
|
3435
|
+
/** The name of the built-in pagination's navigation landmark. */
|
|
3436
|
+
"pagination-label"?: (HelixHeadlessDataTable["paginationLabel"]) | undefined;
|
|
3437
|
+
/** The name of the built-in pagination's navigation landmark. */
|
|
3438
|
+
paginationLabel?: (HelixHeadlessDataTable["paginationLabel"]) | undefined;
|
|
3439
|
+
/** The built-in pagination's name for the button that moves back a page. */
|
|
3440
|
+
"previous-label"?: (HelixHeadlessDataTable["previousLabel"]) | undefined;
|
|
3441
|
+
/** The built-in pagination's name for the button that moves back a page. */
|
|
3442
|
+
previousLabel?: (HelixHeadlessDataTable["previousLabel"]) | undefined;
|
|
3259
3443
|
/** Lets users reorder the columns.
|
|
3260
3444
|
|
|
3261
3445
|
Each heading with a `field` gets a grip, dragged along the header or moved a
|
|
3262
3446
|
place at a time with the arrow keys once it has focus. */
|
|
3263
3447
|
reorderable?: (HelixHeadlessDataTable["reorderable"]) | undefined;
|
|
3448
|
+
/** What screen readers hear when a search leaves one row. `{count}` is the count. */
|
|
3449
|
+
"result-label"?: (HelixHeadlessDataTable["resultLabel"]) | undefined;
|
|
3450
|
+
/** What screen readers hear when a search leaves one row. `{count}` is the count. */
|
|
3451
|
+
resultLabel?: (HelixHeadlessDataTable["resultLabel"]) | undefined;
|
|
3452
|
+
/** What screen readers hear when a search leaves any other number of rows.
|
|
3453
|
+
`{count}` is the count. */
|
|
3454
|
+
"results-label"?: (HelixHeadlessDataTable["resultsLabel"]) | undefined;
|
|
3455
|
+
/** What screen readers hear when a search leaves any other number of rows.
|
|
3456
|
+
`{count}` is the count. */
|
|
3457
|
+
resultsLabel?: (HelixHeadlessDataTable["resultsLabel"]) | undefined;
|
|
3264
3458
|
/** The field that identifies each row.
|
|
3265
3459
|
|
|
3266
3460
|
**Needed before selection exists, not after.** Lit keys the rendered rows by
|
|
@@ -3292,6 +3486,10 @@ the element, so a React page could not tell the table which field a row is. */
|
|
|
3292
3486
|
Wants `row-key`: a selection is a set of identities, and without one the rows
|
|
3293
3487
|
are known by their place in the result, which a sort changes. */
|
|
3294
3488
|
selectable?: (HelixHeadlessDataTable["selectable"]) | undefined;
|
|
3489
|
+
/** The name of the checkbox in the heading that selects every row. */
|
|
3490
|
+
"select-all-label"?: (HelixHeadlessDataTable["selectAllLabel"]) | undefined;
|
|
3491
|
+
/** The name of the checkbox in the heading that selects every row. */
|
|
3492
|
+
selectAllLabel?: (HelixHeadlessDataTable["selectAllLabel"]) | undefined;
|
|
3295
3493
|
/** The keys of the selected rows, separated by commas.
|
|
3296
3494
|
|
|
3297
3495
|
A string rather than an array, so it is an attribute a server writes and a
|
|
@@ -3306,11 +3504,18 @@ rows are chosen. */
|
|
|
3306
3504
|
/** What screen readers hear when the chosen rows change. `{count}` is how many
|
|
3307
3505
|
rows are chosen. */
|
|
3308
3506
|
selectedLabel?: (HelixHeadlessDataTable["selectedLabel"]) | undefined;
|
|
3507
|
+
/** The name of a row's checkbox. `{row}` is replaced with the row's value in
|
|
3508
|
+
the first column that has a field, or with its key. */
|
|
3509
|
+
"select-row-label"?: (HelixHeadlessDataTable["selectRowLabel"]) | undefined;
|
|
3510
|
+
/** The name of a row's checkbox. `{row}` is replaced with the row's value in
|
|
3511
|
+
the first column that has a field, or with its key. */
|
|
3512
|
+
selectRowLabel?: (HelixHeadlessDataTable["selectRowLabel"]) | undefined;
|
|
3309
3513
|
/** The sort order, as `field:direction`.
|
|
3310
3514
|
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3515
|
+
A reader's click on a sortable heading fires `helix-sort` first, and
|
|
3516
|
+
refusing it leaves the order as it was. To own the order yourself, refuse
|
|
3517
|
+
the event and set this to the order you chose. `default-sort` seeds an
|
|
3518
|
+
order this element then owns. */
|
|
3314
3519
|
sort?: (HelixHeadlessDataTable["sort"]) | undefined;
|
|
3315
3520
|
/** What screen readers hear when the table is sorted. `{column}` is the
|
|
3316
3521
|
column's heading and `{order}` is `ascending-label` or `descending-label`. */
|
|
@@ -3375,16 +3580,26 @@ holds and reordering it under them is a mutation they did not ask for. */
|
|
|
3375
3580
|
};
|
|
3376
3581
|
|
|
3377
3582
|
export type HelixHeadlessDataTableVueEvents = {
|
|
3583
|
+
/** Fired after the page changes, with the new page as a string in `detail.value`. */
|
|
3584
|
+
"helix-activate": HelixHeadlessDataTableHelixActivateElementEvent;
|
|
3378
3585
|
/** The search query is about to change. Cancelable: cancel it to keep the current query. */
|
|
3379
3586
|
"helix-filter": HelixHeadlessDataTableHelixFilterElementEvent;
|
|
3587
|
+
/** Fired after the search query changes, with the new query. */
|
|
3588
|
+
"helix-filtered": HelixHeadlessDataTableHelixFilteredElementEvent;
|
|
3380
3589
|
/** Another page was requested. Cancelable: cancel it to stay on the current page. */
|
|
3381
3590
|
"helix-navigate": HelixHeadlessDataTableHelixNavigateElementEvent;
|
|
3382
|
-
/** The columns
|
|
3591
|
+
/** The columns are about to move. The event carries every field in the new order. Cancelable: cancel it to keep the current order. */
|
|
3383
3592
|
"helix-reorder": HelixHeadlessDataTableHelixReorderElementEvent;
|
|
3384
|
-
/**
|
|
3593
|
+
/** Fired after the columns move, with every field in the new order. */
|
|
3594
|
+
"helix-reordered": HelixHeadlessDataTableHelixReorderedElementEvent;
|
|
3595
|
+
/** The selection is about to change. The event carries every selected key, separated by commas. Cancelable: cancel it to keep the current selection. */
|
|
3385
3596
|
"helix-select": HelixHeadlessDataTableHelixSelectElementEvent;
|
|
3597
|
+
/** Fired after the selection changes, with every selected key, separated by commas. */
|
|
3598
|
+
"helix-selected": HelixHeadlessDataTableHelixSelectedElementEvent;
|
|
3386
3599
|
/** A different sort order was requested. Cancelable: cancel it to keep the current order. */
|
|
3387
3600
|
"helix-sort": HelixHeadlessDataTableHelixSortElementEvent;
|
|
3601
|
+
/** Fired after the sort order changes, with the new order. */
|
|
3602
|
+
"helix-sorted": HelixHeadlessDataTableHelixSortedElementEvent;
|
|
3388
3603
|
};
|
|
3389
3604
|
|
|
3390
3605
|
/** `HelixHeadlessDateInput` component event */
|
|
@@ -3401,6 +3616,9 @@ export type HelixHeadlessDateInputHelixBeforeCloseElementEvent =
|
|
|
3401
3616
|
/** `helix-before-open` event type */
|
|
3402
3617
|
export type HelixHeadlessDateInputHelixBeforeOpenElementEvent =
|
|
3403
3618
|
HelixHeadlessDateInputElementEvent<HelixBeforeOpenEvent>;
|
|
3619
|
+
/** `toggle` event type */
|
|
3620
|
+
export type HelixHeadlessDateInputToggleElementEvent =
|
|
3621
|
+
HelixHeadlessDateInputElementEvent<ToggleEvent>;
|
|
3404
3622
|
|
|
3405
3623
|
export type HelixHeadlessDateInputVueProps = {
|
|
3406
3624
|
/** What the browser may autofill here, as one of the platform's own tokens.
|
|
@@ -3409,6 +3627,10 @@ Empty leaves the attribute off, which is the browser's default and is what
|
|
|
3409
3627
|
lets autofill work at all: hardcoding `off` here means a birthday or a
|
|
3410
3628
|
postal code can never be filled in for a reader. */
|
|
3411
3629
|
autocomplete?: (HelixHeadlessDateInput["autocomplete"]) | undefined;
|
|
3630
|
+
/** The name of the calendar's grid of days, read by screen readers. */
|
|
3631
|
+
"calendar-label"?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
|
|
3632
|
+
/** The name of the calendar's grid of days, read by screen readers. */
|
|
3633
|
+
calendarLabel?: (HelixHeadlessDateInput["calendarLabel"]) | undefined;
|
|
3412
3634
|
/** How a date is written in the field: `short` through `full`, or ISO.
|
|
3413
3635
|
|
|
3414
3636
|
**The field renders when it is idle and holds the value when it is being
|
|
@@ -3455,21 +3677,29 @@ rather than reading it, or where the ISO form is itself the point.
|
|
|
3455
3677
|
The value is always `YYYY-MM-DD` regardless, because that is what a form
|
|
3456
3678
|
submits and what `min` and `max` compare against. */
|
|
3457
3679
|
dateStyle?: (HelixHeadlessDateInput["dateStyle"]) | undefined;
|
|
3458
|
-
/** Dates that cannot be chosen, as
|
|
3680
|
+
/** Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
|
|
3681
|
+
spaces. */
|
|
3459
3682
|
"disable-dates"?: (HelixHeadlessDateInput["disableDates"]) | undefined;
|
|
3460
|
-
/** Dates that cannot be chosen, as
|
|
3683
|
+
/** Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
|
|
3684
|
+
spaces. */
|
|
3461
3685
|
disableDates?: (HelixHeadlessDateInput["disableDates"]) | undefined;
|
|
3462
3686
|
/** Days of the week that cannot be chosen, from `0` for Sunday to `6` for
|
|
3463
|
-
Saturday. */
|
|
3687
|
+
Saturday, separated by commas or spaces. */
|
|
3464
3688
|
"disable-days"?: (HelixHeadlessDateInput["disableDays"]) | undefined;
|
|
3465
3689
|
/** Days of the week that cannot be chosen, from `0` for Sunday to `6` for
|
|
3466
|
-
Saturday. */
|
|
3690
|
+
Saturday, separated by commas or spaces. */
|
|
3467
3691
|
disableDays?: (HelixHeadlessDateInput["disableDays"]) | undefined;
|
|
3468
3692
|
/** The day in the calendar's first column, from `0` for Sunday to `6` for
|
|
3469
|
-
Saturday.
|
|
3693
|
+
Saturday.
|
|
3694
|
+
|
|
3695
|
+
Absent follows `locale`, where the engine knows the week of that language,
|
|
3696
|
+
and is Sunday otherwise. */
|
|
3470
3697
|
"first-day-of-week"?: (HelixHeadlessDateInput["firstDayOfWeek"] | `${number}`) | undefined;
|
|
3471
3698
|
/** The day in the calendar's first column, from `0` for Sunday to `6` for
|
|
3472
|
-
Saturday.
|
|
3699
|
+
Saturday.
|
|
3700
|
+
|
|
3701
|
+
Absent follows `locale`, where the engine knows the week of that language,
|
|
3702
|
+
and is Sunday otherwise. */
|
|
3473
3703
|
firstDayOfWeek?: (HelixHeadlessDateInput["firstDayOfWeek"]) | undefined;
|
|
3474
3704
|
/** The language tag for the names of months and days in the calendar. */
|
|
3475
3705
|
locale?: (HelixHeadlessDateInput["locale"]) | undefined;
|
|
@@ -3490,8 +3720,16 @@ an end in April otherwise means paging between them and losing sight of the
|
|
|
3490
3720
|
first. The panel is sized by its content, so this widens it, and where the
|
|
3491
3721
|
window has no room for that width it shows one month until there is. */
|
|
3492
3722
|
months?: (HelixHeadlessDateInput["months"]) | undefined;
|
|
3723
|
+
/** The name of the calendar's control that moves to the next month. */
|
|
3724
|
+
"next-label"?: (HelixHeadlessDateInput["nextLabel"]) | undefined;
|
|
3725
|
+
/** The name of the calendar's control that moves to the next month. */
|
|
3726
|
+
nextLabel?: (HelixHeadlessDateInput["nextLabel"]) | undefined;
|
|
3493
3727
|
/** The text the field shows before a date is entered. */
|
|
3494
3728
|
placeholder?: (HelixHeadlessDateInput["placeholder"]) | undefined;
|
|
3729
|
+
/** The name of the calendar's control that moves to the previous month. */
|
|
3730
|
+
"previous-label"?: (HelixHeadlessDateInput["previousLabel"]) | undefined;
|
|
3731
|
+
/** The name of the calendar's control that moves to the previous month. */
|
|
3732
|
+
previousLabel?: (HelixHeadlessDateInput["previousLabel"]) | undefined;
|
|
3495
3733
|
/** The message shown when a range holds more than two dates.
|
|
3496
3734
|
|
|
3497
3735
|
**Every sentence a control raises in the browser's bubble is a property**,
|
|
@@ -3535,10 +3773,18 @@ so the field and the grid agree about which dates exist. Counted from `min`
|
|
|
3535
3773
|
where there is one and from 1 January 1970 where there is not, which is the
|
|
3536
3774
|
platform's base. */
|
|
3537
3775
|
step?: (HelixHeadlessDateInput["step"]) | undefined;
|
|
3776
|
+
/** The message shown when a date is not on `step`. */
|
|
3777
|
+
"step-mismatch-message"?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
|
|
3778
|
+
/** The message shown when a date is not on `step`. */
|
|
3779
|
+
stepMismatchMessage?: (HelixHeadlessDateInput["stepMismatchMessage"]) | undefined;
|
|
3538
3780
|
/** The name of the button that opens the calendar, read by screen readers. */
|
|
3539
3781
|
"trigger-label"?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
|
|
3540
3782
|
/** The name of the button that opens the calendar, read by screen readers. */
|
|
3541
3783
|
triggerLabel?: (HelixHeadlessDateInput["triggerLabel"]) | undefined;
|
|
3784
|
+
/** The message shown when `disable-dates` or `disable-days` bars a date. */
|
|
3785
|
+
"unavailable-message"?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
|
|
3786
|
+
/** The message shown when `disable-dates` or `disable-days` bars a date. */
|
|
3787
|
+
unavailableMessage?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
|
|
3542
3788
|
/** Whether the value is locked. A read-only control still submits its value.
|
|
3543
3789
|
|
|
3544
3790
|
**Enforced by refusing every request in one place**, which is the seam this
|
|
@@ -3624,9 +3870,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
3624
3870
|
a reset should return to. */
|
|
3625
3871
|
value?: (HelixHeadlessDateInput["value"]) | undefined;
|
|
3626
3872
|
/** */
|
|
3627
|
-
"aria-label"?:
|
|
3628
|
-
/** */
|
|
3629
|
-
namedBy?: (HelixHeadlessDateInput["namedBy"]) | undefined;
|
|
3873
|
+
"aria-label"?: unknown;
|
|
3630
3874
|
/** The validation message shown under the control. It replaces the
|
|
3631
3875
|
browser's message. */
|
|
3632
3876
|
feedback?: (HelixHeadlessDateInput["feedback"]) | undefined;
|
|
@@ -3709,7 +3953,7 @@ export type HelixHeadlessDateInputVueEvents = {
|
|
|
3709
3953
|
/** Fired after the value changes. */
|
|
3710
3954
|
input: HelixHeadlessDateInputElementEvent;
|
|
3711
3955
|
/** Fired when the calendar opens or closes, with `newState` and `oldState`. */
|
|
3712
|
-
toggle:
|
|
3956
|
+
toggle: HelixHeadlessDateInputToggleElementEvent;
|
|
3713
3957
|
};
|
|
3714
3958
|
|
|
3715
3959
|
/** `HelixHeadlessDatePicker` component event */
|
|
@@ -3741,17 +3985,27 @@ speaks it. Absent is the control's own sentence, in English. */
|
|
|
3741
3985
|
"default-month"?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
|
|
3742
3986
|
/** The month to open on when `month` is not set. */
|
|
3743
3987
|
defaultMonth?: (HelixHeadlessDatePicker["defaultMonth"]) | undefined;
|
|
3744
|
-
/** Dates that cannot be chosen,
|
|
3988
|
+
/** Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
|
|
3989
|
+
spaces. */
|
|
3745
3990
|
"disable-dates"?: (HelixHeadlessDatePicker["disableDates"]) | undefined;
|
|
3746
|
-
/** Dates that cannot be chosen,
|
|
3991
|
+
/** Dates that cannot be chosen, as `YYYY-MM-DD`, separated by commas or
|
|
3992
|
+
spaces. */
|
|
3747
3993
|
disableDates?: (HelixHeadlessDatePicker["disableDates"]) | undefined;
|
|
3748
|
-
/** Days of the week that cannot be chosen,
|
|
3994
|
+
/** Days of the week that cannot be chosen, `0` for Sunday to `6` for
|
|
3995
|
+
Saturday, separated by commas or spaces. */
|
|
3749
3996
|
"disable-days"?: (HelixHeadlessDatePicker["disableDays"]) | undefined;
|
|
3750
|
-
/** Days of the week that cannot be chosen,
|
|
3997
|
+
/** Days of the week that cannot be chosen, `0` for Sunday to `6` for
|
|
3998
|
+
Saturday, separated by commas or spaces. */
|
|
3751
3999
|
disableDays?: (HelixHeadlessDatePicker["disableDays"]) | undefined;
|
|
3752
|
-
/** First column of the week, `0` for Sunday through `6` for Saturday.
|
|
4000
|
+
/** First column of the week, `0` for Sunday through `6` for Saturday.
|
|
4001
|
+
|
|
4002
|
+
Absent follows `locale`, where the engine knows the week of that language
|
|
4003
|
+
(Firefox does not), and is Sunday otherwise. */
|
|
3753
4004
|
"first-day-of-week"?: (HelixHeadlessDatePicker["firstDayOfWeek"] | `${number}`) | undefined;
|
|
3754
|
-
/** First column of the week, `0` for Sunday through `6` for Saturday.
|
|
4005
|
+
/** First column of the week, `0` for Sunday through `6` for Saturday.
|
|
4006
|
+
|
|
4007
|
+
Absent follows `locale`, where the engine knows the week of that language
|
|
4008
|
+
(Firefox does not), and is Sunday otherwise. */
|
|
3755
4009
|
firstDayOfWeek?: (HelixHeadlessDatePicker["firstDayOfWeek"]) | undefined;
|
|
3756
4010
|
/** Whether the current selection fails validation. */
|
|
3757
4011
|
invalid?: (HelixHeadlessDatePicker["invalid"]) | undefined;
|
|
@@ -3794,6 +4048,18 @@ would otherwise still announce its controls in English. `attribute:`
|
|
|
3794
4048
|
spelled out, since Lit lowercases a camelCase name rather than dash-casing
|
|
3795
4049
|
it. */
|
|
3796
4050
|
previousLabel?: (HelixHeadlessDatePicker["previousLabel"]) | undefined;
|
|
4051
|
+
/** The validation message for a date after `max`. `{max}` is replaced with
|
|
4052
|
+
`max`, written as a date in `locale`. */
|
|
4053
|
+
"range-overflow-message"?: (HelixHeadlessDatePicker["rangeOverflowMessage"]) | undefined;
|
|
4054
|
+
/** The validation message for a date after `max`. `{max}` is replaced with
|
|
4055
|
+
`max`, written as a date in `locale`. */
|
|
4056
|
+
rangeOverflowMessage?: (HelixHeadlessDatePicker["rangeOverflowMessage"]) | undefined;
|
|
4057
|
+
/** The validation message for a date before `min`. `{min}` is replaced with
|
|
4058
|
+
`min`, written as a date in `locale`. */
|
|
4059
|
+
"range-underflow-message"?: (HelixHeadlessDatePicker["rangeUnderflowMessage"]) | undefined;
|
|
4060
|
+
/** The validation message for a date before `min`. `{min}` is replaced with
|
|
4061
|
+
`min`, written as a date in `locale`. */
|
|
4062
|
+
rangeUnderflowMessage?: (HelixHeadlessDatePicker["rangeUnderflowMessage"]) | undefined;
|
|
3797
4063
|
/** Blocks changes to the dates. The value is still submitted with the form.
|
|
3798
4064
|
|
|
3799
4065
|
**Enforced by refusing every request in one place**, which is the seam this
|
|
@@ -3832,6 +4098,16 @@ One is every date and needs no rule, which is why anything below one is
|
|
|
3832
4098
|
treated as one rather than as an error: a step of zero would block every
|
|
3833
4099
|
date including the one already chosen. */
|
|
3834
4100
|
step?: (HelixHeadlessDatePicker["step"]) | undefined;
|
|
4101
|
+
/** The validation message for a date that `step` skips. */
|
|
4102
|
+
"step-mismatch-message"?: (HelixHeadlessDatePicker["stepMismatchMessage"]) | undefined;
|
|
4103
|
+
/** The validation message for a date that `step` skips. */
|
|
4104
|
+
stepMismatchMessage?: (HelixHeadlessDatePicker["stepMismatchMessage"]) | undefined;
|
|
4105
|
+
/** The validation message for a date that `disable-dates` or `disable-days`
|
|
4106
|
+
bars. */
|
|
4107
|
+
"unavailable-message"?: (HelixHeadlessDatePicker["unavailableMessage"]) | undefined;
|
|
4108
|
+
/** The validation message for a date that `disable-dates` or `disable-days`
|
|
4109
|
+
bars. */
|
|
4110
|
+
unavailableMessage?: (HelixHeadlessDatePicker["unavailableMessage"]) | undefined;
|
|
3835
4111
|
/** The validation message for a required date picker with no date chosen. */
|
|
3836
4112
|
"value-missing-message"?: (HelixHeadlessDatePicker["valueMissingMessage"]) | undefined;
|
|
3837
4113
|
/** The validation message for a required date picker with no date chosen. */
|
|
@@ -3941,6 +4217,9 @@ export type HelixHeadlessDialogHelixBeforeCloseElementEvent =
|
|
|
3941
4217
|
/** `helix-before-open` event type */
|
|
3942
4218
|
export type HelixHeadlessDialogHelixBeforeOpenElementEvent =
|
|
3943
4219
|
HelixHeadlessDialogElementEvent<HelixBeforeOpenEvent>;
|
|
4220
|
+
/** `toggle` event type */
|
|
4221
|
+
export type HelixHeadlessDialogToggleElementEvent =
|
|
4222
|
+
HelixHeadlessDialogElementEvent<ToggleEvent>;
|
|
3944
4223
|
|
|
3945
4224
|
export type HelixHeadlessDialogVueProps = {
|
|
3946
4225
|
/** Which close requests the browser handles on its own.
|
|
@@ -3965,7 +4244,8 @@ the property this component exists to keep.
|
|
|
3965
4244
|
Absent by default, which is the platform's `auto` and this library's rule
|
|
3966
4245
|
that a resting value is an attribute's absence. */
|
|
3967
4246
|
closedBy?: (HelixHeadlessDialog["closedBy"]) | undefined;
|
|
3968
|
-
/** Accessible name for the dialog.
|
|
4247
|
+
/** Accessible name for the dialog. When it is empty, the heading in the
|
|
4248
|
+
`header` slot names the dialog. */
|
|
3969
4249
|
label?: (HelixHeadlessDialog["label"]) | undefined;
|
|
3970
4250
|
/** Stops Escape and a press on the backdrop from closing the dialog.
|
|
3971
4251
|
|
|
@@ -4015,7 +4295,7 @@ export type HelixHeadlessDialogVueEvents = {
|
|
|
4015
4295
|
/** Fired before it opens, and cancelable. */
|
|
4016
4296
|
"helix-before-open": HelixHeadlessDialogHelixBeforeOpenElementEvent;
|
|
4017
4297
|
/** Sent when the dialog opens or closes, with `newState` and `oldState`. */
|
|
4018
|
-
toggle:
|
|
4298
|
+
toggle: HelixHeadlessDialogToggleElementEvent;
|
|
4019
4299
|
};
|
|
4020
4300
|
|
|
4021
4301
|
export type HelixHeadlessDividerVueProps = {
|
|
@@ -4101,6 +4381,12 @@ shadow root reads a table in that root rather than one in the document. A
|
|
|
4101
4381
|
Absent falls back to the table's own caption, which is usually the right
|
|
4102
4382
|
words and is already written. */
|
|
4103
4383
|
label?: (HelixHeadlessDonutChart["label"]) | undefined;
|
|
4384
|
+
/** The locale the chart's own numbers are written in: its axis, its
|
|
4385
|
+
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
4386
|
+
|
|
4387
|
+
Absent uses the runtime's own. The table's cells are shown as the table
|
|
4388
|
+
writes them, whatever this says. */
|
|
4389
|
+
locale?: (HelixHeadlessDonutChart["locale"]) | undefined;
|
|
4104
4390
|
};
|
|
4105
4391
|
|
|
4106
4392
|
export type HelixHeadlessDonutChartVueEvents = {};
|
|
@@ -4116,6 +4402,9 @@ export type HelixHeadlessDrawerHelixBeforeCloseElementEvent =
|
|
|
4116
4402
|
/** `helix-before-open` event type */
|
|
4117
4403
|
export type HelixHeadlessDrawerHelixBeforeOpenElementEvent =
|
|
4118
4404
|
HelixHeadlessDrawerElementEvent<HelixBeforeOpenEvent>;
|
|
4405
|
+
/** `toggle` event type */
|
|
4406
|
+
export type HelixHeadlessDrawerToggleElementEvent =
|
|
4407
|
+
HelixHeadlessDrawerElementEvent<ToggleEvent>;
|
|
4119
4408
|
|
|
4120
4409
|
export type HelixHeadlessDrawerVueProps = {
|
|
4121
4410
|
/** Which close requests the browser handles on its own.
|
|
@@ -4140,7 +4429,8 @@ the property this component exists to keep.
|
|
|
4140
4429
|
Absent by default, which is the platform's `auto` and this library's rule
|
|
4141
4430
|
that a resting value is an attribute's absence. */
|
|
4142
4431
|
closedBy?: (HelixHeadlessDrawer["closedBy"]) | undefined;
|
|
4143
|
-
/** Accessible name for the panel.
|
|
4432
|
+
/** Accessible name for the panel. When it is empty, the heading in the
|
|
4433
|
+
`header` slot names the panel. */
|
|
4144
4434
|
label?: (HelixHeadlessDrawer["label"]) | undefined;
|
|
4145
4435
|
/** Whether the drawer blocks the page behind it.
|
|
4146
4436
|
|
|
@@ -4203,7 +4493,7 @@ export type HelixHeadlessDrawerVueEvents = {
|
|
|
4203
4493
|
/** Fired before the panel opens, and cancelable. Canceling it keeps the panel closed. */
|
|
4204
4494
|
"helix-before-open": HelixHeadlessDrawerHelixBeforeOpenElementEvent;
|
|
4205
4495
|
/** Sent when the drawer opens or closes, with `newState` and `oldState`. */
|
|
4206
|
-
toggle:
|
|
4496
|
+
toggle: HelixHeadlessDrawerToggleElementEvent;
|
|
4207
4497
|
};
|
|
4208
4498
|
|
|
4209
4499
|
/** `HelixHeadlessDrilldownItem` component event */
|
|
@@ -4257,7 +4547,11 @@ export type HelixHeadlessDrilldownHelixSelectElementEvent =
|
|
|
4257
4547
|
HelixHeadlessDrilldownElementEvent<HelixSelectEvent>;
|
|
4258
4548
|
|
|
4259
4549
|
export type HelixHeadlessDrilldownVueProps = {
|
|
4260
|
-
/** The
|
|
4550
|
+
/** The name of the top page's menu, read by screen readers. A page below it is
|
|
4551
|
+
named by its title.
|
|
4552
|
+
|
|
4553
|
+
An `aria-label` or `aria-labelledby` on the host names the top page too,
|
|
4554
|
+
and wins over this. */
|
|
4261
4555
|
label?: (HelixHeadlessDrilldown["label"]) | undefined;
|
|
4262
4556
|
/** The text of the back button. */
|
|
4263
4557
|
"back-label"?: (HelixHeadlessDrilldown["backLabel"]) | undefined;
|
|
@@ -4311,7 +4605,10 @@ export type HelixHeadlessFileInputHelixBeforeChangeElementEvent =
|
|
|
4311
4605
|
HelixHeadlessFileInputElementEvent<HelixBeforeChangeEvent>;
|
|
4312
4606
|
|
|
4313
4607
|
export type HelixHeadlessFileInputVueProps = {
|
|
4314
|
-
/** Which files the picker offers, as a native `accept` list.
|
|
4608
|
+
/** Which files the picker offers and a drop takes, as a native `accept` list.
|
|
4609
|
+
|
|
4610
|
+
A dropped file the list does not name is left out, because the picker's
|
|
4611
|
+
filter is the only check the platform makes and a drop never meets it. */
|
|
4315
4612
|
accept?: (HelixHeadlessFileInput["accept"]) | undefined;
|
|
4316
4613
|
/** Which camera or microphone a mobile picker should offer, if any. */
|
|
4317
4614
|
capture?: (HelixHeadlessFileInput["capture"]) | undefined;
|
|
@@ -4340,9 +4637,7 @@ removes rather than as "Remove" said once per file. A label with no
|
|
|
4340
4637
|
/** The trigger's text when nothing is slotted into it. */
|
|
4341
4638
|
triggerLabel?: (HelixHeadlessFileInput["triggerLabel"]) | undefined;
|
|
4342
4639
|
/** */
|
|
4343
|
-
"aria-label"?:
|
|
4344
|
-
/** */
|
|
4345
|
-
namedBy?: (HelixHeadlessFileInput["namedBy"]) | undefined;
|
|
4640
|
+
"aria-label"?: unknown;
|
|
4346
4641
|
/** The validation message shown under the control. It replaces the
|
|
4347
4642
|
browser's message. */
|
|
4348
4643
|
feedback?: (HelixHeadlessFileInput["feedback"]) | undefined;
|
|
@@ -4599,6 +4894,9 @@ export type HelixHeadlessFilterInputHelixFacetElementEvent =
|
|
|
4599
4894
|
/** `helix-select` event type */
|
|
4600
4895
|
export type HelixHeadlessFilterInputHelixSelectElementEvent =
|
|
4601
4896
|
HelixHeadlessFilterInputElementEvent<HelixSelectEvent>;
|
|
4897
|
+
/** `toggle` event type */
|
|
4898
|
+
export type HelixHeadlessFilterInputToggleElementEvent =
|
|
4899
|
+
HelixHeadlessFilterInputElementEvent<ToggleEvent>;
|
|
4602
4900
|
|
|
4603
4901
|
export type HelixHeadlessFilterInputVueProps = {
|
|
4604
4902
|
/** Shows a button that empties the field.
|
|
@@ -4663,9 +4961,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
4663
4961
|
a reset should return to. */
|
|
4664
4962
|
value?: (HelixHeadlessFilterInput["value"]) | undefined;
|
|
4665
4963
|
/** */
|
|
4666
|
-
"aria-label"?:
|
|
4667
|
-
/** */
|
|
4668
|
-
namedBy?: (HelixHeadlessFilterInput["namedBy"]) | undefined;
|
|
4964
|
+
"aria-label"?: unknown;
|
|
4669
4965
|
/** The validation message shown under the control. It replaces the
|
|
4670
4966
|
browser's message. */
|
|
4671
4967
|
feedback?: (HelixHeadlessFilterInput["feedback"]) | undefined;
|
|
@@ -4740,7 +5036,7 @@ export type HelixHeadlessFilterInputVueEvents = {
|
|
|
4740
5036
|
/** Fired when the text changes. */
|
|
4741
5037
|
input: HelixHeadlessFilterInputElementEvent;
|
|
4742
5038
|
/** Fired when the suggestions panel opens or closes, with `newState` and `oldState`. */
|
|
4743
|
-
toggle:
|
|
5039
|
+
toggle: HelixHeadlessFilterInputToggleElementEvent;
|
|
4744
5040
|
};
|
|
4745
5041
|
|
|
4746
5042
|
export type HelixHeadlessFormatDateVueProps = {
|
|
@@ -5201,6 +5497,12 @@ shadow root reads a table in that root rather than one in the document. A
|
|
|
5201
5497
|
Absent falls back to the table's own caption, which is usually the right
|
|
5202
5498
|
words and is already written. */
|
|
5203
5499
|
label?: (HelixHeadlessHeatmap["label"]) | undefined;
|
|
5500
|
+
/** The locale the chart's own numbers are written in: its axis, its
|
|
5501
|
+
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
5502
|
+
|
|
5503
|
+
Absent uses the runtime's own. The table's cells are shown as the table
|
|
5504
|
+
writes them, whatever this says. */
|
|
5505
|
+
locale?: (HelixHeadlessHeatmap["locale"]) | undefined;
|
|
5204
5506
|
};
|
|
5205
5507
|
|
|
5206
5508
|
export type HelixHeadlessHeatmapVueEvents = {
|
|
@@ -5381,6 +5683,12 @@ invoker without an id in the same tree needs. */
|
|
|
5381
5683
|
|
|
5382
5684
|
export type HelixHeadlessIconButtonVueEvents = {};
|
|
5383
5685
|
|
|
5686
|
+
/** `HelixHeadlessIcon` component event */
|
|
5687
|
+
export type HelixHeadlessIconElementEvent<E = Event> = TypedEvent<
|
|
5688
|
+
HelixHeadlessIcon,
|
|
5689
|
+
E
|
|
5690
|
+
>;
|
|
5691
|
+
|
|
5384
5692
|
export type HelixHeadlessIconVueProps = {
|
|
5385
5693
|
/** The icon's name, read by screen readers. Set it for an icon that is not
|
|
5386
5694
|
decorative. */
|
|
@@ -5416,7 +5724,10 @@ for. Set both and this wins, the value being the more specific statement. */
|
|
|
5416
5724
|
icon?: (HelixHeadlessIcon["icon"]) | undefined;
|
|
5417
5725
|
};
|
|
5418
5726
|
|
|
5419
|
-
export type HelixHeadlessIconVueEvents = {
|
|
5727
|
+
export type HelixHeadlessIconVueEvents = {
|
|
5728
|
+
/** `name` matches no icon in the set, so nothing is drawn. */
|
|
5729
|
+
error: HelixHeadlessIconElementEvent;
|
|
5730
|
+
};
|
|
5420
5731
|
|
|
5421
5732
|
/** `HelixHeadlessImage` component event */
|
|
5422
5733
|
export type HelixHeadlessImageElementEvent<E = Event> = TypedEvent<
|
|
@@ -5428,7 +5739,9 @@ export type HelixHeadlessImageVueProps = {
|
|
|
5428
5739
|
/** A text description of the image, read by screen readers.
|
|
5429
5740
|
|
|
5430
5741
|
Empty is a real answer and means decoration. Omitting the attribute is not
|
|
5431
|
-
the same thing:
|
|
5742
|
+
the same thing: the inner image is then written with no `alt` either, as a
|
|
5743
|
+
native one would be, so a screen reader announces the file name and an
|
|
5744
|
+
accessibility checker reports the missing description. */
|
|
5432
5745
|
alt?: (HelixHeadlessImage["alt"]) | undefined;
|
|
5433
5746
|
/** How the image is fetched across origins. It decides whether a canvas can
|
|
5434
5747
|
read the image. */
|
|
@@ -5515,6 +5828,9 @@ export type HelixHeadlessInputHelixBeforeChangeElementEvent =
|
|
|
5515
5828
|
HelixHeadlessInputElementEvent<HelixBeforeChangeEvent>;
|
|
5516
5829
|
|
|
5517
5830
|
export type HelixHeadlessInputVueProps = {
|
|
5831
|
+
/** Whether a phone capitalizes as the reader types: `off`, `sentences`,
|
|
5832
|
+
`words` or `characters`, as the platform's `autocapitalize`. */
|
|
5833
|
+
autocapitalize?: (HelixHeadlessInput["autocapitalize"]) | undefined;
|
|
5518
5834
|
/** What the browser may autofill in the field, as an HTML `autocomplete`
|
|
5519
5835
|
token.
|
|
5520
5836
|
|
|
@@ -5532,10 +5848,29 @@ is broken. */
|
|
|
5532
5848
|
"clear-label"?: (HelixHeadlessInput["clearLabel"]) | undefined;
|
|
5533
5849
|
/** The accessible name of the clear button, which shows only an icon. */
|
|
5534
5850
|
clearLabel?: (HelixHeadlessInput["clearLabel"]) | undefined;
|
|
5851
|
+
/** The key the on-screen keyboard shows for Enter, as the platform's
|
|
5852
|
+
`enterkeyhint`: `search`, `send`, `go`, `next`, `previous`, `done` or
|
|
5853
|
+
`enter`. */
|
|
5854
|
+
enterkeyhint?: (HelixHeadlessInput["enterKeyHint"]) | undefined;
|
|
5855
|
+
/** The key the on-screen keyboard shows for Enter, as the platform's
|
|
5856
|
+
`enterkeyhint`: `search`, `send`, `go`, `next`, `previous`, `done` or
|
|
5857
|
+
`enter`. */
|
|
5858
|
+
enterKeyHint?: (HelixHeadlessInput["enterKeyHint"]) | undefined;
|
|
5859
|
+
/** The keyboard a phone offers, as the platform's `inputmode`, such as
|
|
5860
|
+
`numeric` for a code typed as text. */
|
|
5861
|
+
inputmode?: (HelixHeadlessInput["inputMode"]) | undefined;
|
|
5862
|
+
/** The keyboard a phone offers, as the platform's `inputmode`, such as
|
|
5863
|
+
`numeric` for a code typed as text. */
|
|
5864
|
+
inputMode?: (HelixHeadlessInput["inputMode"]) | undefined;
|
|
5865
|
+
/** The greatest value, for `type="number"`. Number Input adds steppers and
|
|
5866
|
+
keys to the same bounds. */
|
|
5867
|
+
max?: (HelixHeadlessInput["max"]) | undefined;
|
|
5535
5868
|
/** Most characters the value may have. */
|
|
5536
5869
|
maxlength?: (HelixHeadlessInput["maxLength"] | `${number}`) | undefined;
|
|
5537
5870
|
/** Most characters the value may have. */
|
|
5538
5871
|
maxLength?: (HelixHeadlessInput["maxLength"]) | undefined;
|
|
5872
|
+
/** The least value, for `type="number"`. */
|
|
5873
|
+
min?: (HelixHeadlessInput["min"]) | undefined;
|
|
5539
5874
|
/** Fewest characters the value may have. */
|
|
5540
5875
|
minlength?: (HelixHeadlessInput["minLength"] | `${number}`) | undefined;
|
|
5541
5876
|
/** Fewest characters the value may have. */
|
|
@@ -5587,6 +5922,9 @@ The state is `aria-pressed`, not this. */
|
|
|
5587
5922
|
|
|
5588
5923
|
The state is `aria-pressed`, not this. */
|
|
5589
5924
|
revealLabel?: (HelixHeadlessInput["revealLabel"]) | undefined;
|
|
5925
|
+
/** The step a valid value is a multiple of, counted from `min`, for
|
|
5926
|
+
`type="number"`. */
|
|
5927
|
+
step?: (HelixHeadlessInput["step"]) | undefined;
|
|
5590
5928
|
/** The kind of text the field accepts. It sets the on-screen keyboard and the
|
|
5591
5929
|
validation.
|
|
5592
5930
|
|
|
@@ -5612,9 +5950,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
5612
5950
|
a reset should return to. */
|
|
5613
5951
|
value?: (HelixHeadlessInput["value"]) | undefined;
|
|
5614
5952
|
/** */
|
|
5615
|
-
"aria-label"?:
|
|
5616
|
-
/** */
|
|
5617
|
-
namedBy?: (HelixHeadlessInput["namedBy"]) | undefined;
|
|
5953
|
+
"aria-label"?: unknown;
|
|
5618
5954
|
/** The validation message shown under the control. It replaces the
|
|
5619
5955
|
browser's message. */
|
|
5620
5956
|
feedback?: (HelixHeadlessInput["feedback"]) | undefined;
|
|
@@ -5706,11 +6042,16 @@ export type HelixHeadlessKbdHelixShortcutElementEvent =
|
|
|
5706
6042
|
HelixHeadlessKbdElementEvent<HelixShortcutEvent>;
|
|
5707
6043
|
|
|
5708
6044
|
export type HelixHeadlessKbdVueProps = {
|
|
5709
|
-
/** The key or chord to show, such as `mod+k`,
|
|
6045
|
+
/** The key or chord to show, such as `mod+k`, `?`, or `/`.
|
|
5710
6046
|
|
|
5711
6047
|
`mod` is the platform's own command modifier, which is the reason to write
|
|
5712
6048
|
a chord here rather than a glyph: it is the one token whose right answer
|
|
5713
|
-
differs per reader.
|
|
6049
|
+
differs per reader.
|
|
6050
|
+
|
|
6051
|
+
A symbol such as `?` or `!` is written as itself, without `shift`. It is
|
|
6052
|
+
matched whether or not Shift was held to type it, since that depends on
|
|
6053
|
+
the keyboard layout. Bound to the document, a chord that types a character
|
|
6054
|
+
is not taken from a field a reader is typing in. */
|
|
5714
6055
|
keys?: (HelixHeadlessKbd["keys"]) | undefined;
|
|
5715
6056
|
/** Where the chord is listened for. `control` listens inside the control the
|
|
5716
6057
|
key sits in, and `document` listens on the whole page.
|
|
@@ -5757,6 +6098,11 @@ shadow root reads a table in that root rather than one in the document.
|
|
|
5757
6098
|
**In React this arrives as a property and not as an attribute**, the way
|
|
5758
6099
|
`Tooltip.for` does, so it does not reflect and nothing styles on it. */
|
|
5759
6100
|
for?: (HelixHeadlessLegend["for"]) | undefined;
|
|
6101
|
+
/** The name of the list, which a screen reader announces before its entries.
|
|
6102
|
+
|
|
6103
|
+
Absent names the list after the table's caption, so a page with several
|
|
6104
|
+
charts has a legend list for each that says which chart it keys. */
|
|
6105
|
+
label?: (HelixHeadlessLegend["label"]) | undefined;
|
|
5760
6106
|
};
|
|
5761
6107
|
|
|
5762
6108
|
export type HelixHeadlessLegendVueEvents = {};
|
|
@@ -5766,7 +6112,8 @@ export type HelixHeadlessLightboxItemVueProps = {
|
|
|
5766
6112
|
|
|
5767
6113
|
Written by the root, which is the only thing that sees the set. */
|
|
5768
6114
|
current?: (HelixHeadlessLightboxItem["current"]) | undefined;
|
|
5769
|
-
/** The item's name
|
|
6115
|
+
/** The item's name. It names the item's group, and fills `{label}` in the
|
|
6116
|
+
lightbox's `status-label`. */
|
|
5770
6117
|
label?: (HelixHeadlessLightboxItem["label"]) | undefined;
|
|
5771
6118
|
/** The item's identifier. The root compares its `active` value against it. */
|
|
5772
6119
|
value?: (HelixHeadlessLightboxItem["value"]) | undefined;
|
|
@@ -5791,6 +6138,9 @@ export type HelixHeadlessLightboxHelixBeforeCloseElementEvent =
|
|
|
5791
6138
|
/** `helix-before-open` event type */
|
|
5792
6139
|
export type HelixHeadlessLightboxHelixBeforeOpenElementEvent =
|
|
5793
6140
|
HelixHeadlessLightboxElementEvent<HelixBeforeOpenEvent>;
|
|
6141
|
+
/** `toggle` event type */
|
|
6142
|
+
export type HelixHeadlessLightboxToggleElementEvent =
|
|
6143
|
+
HelixHeadlessLightboxElementEvent<ToggleEvent>;
|
|
5794
6144
|
|
|
5795
6145
|
export type HelixHeadlessLightboxVueProps = {
|
|
5796
6146
|
/** How long the user can be idle before the header and footer hide, in
|
|
@@ -5811,15 +6161,15 @@ keep the chrome up is the consumer's to decide with this. */
|
|
|
5811
6161
|
label?: (HelixHeadlessLightbox["label"]) | undefined;
|
|
5812
6162
|
/** Whether moving past the last item returns to the first. */
|
|
5813
6163
|
loop?: (HelixHeadlessLightbox["loop"]) | undefined;
|
|
5814
|
-
/** The status text that says which item is shown, with `{index}
|
|
5815
|
-
filled in.
|
|
6164
|
+
/** The status text that says which item is shown, with `{index}`, `{count}`
|
|
6165
|
+
and the item's `{label}` filled in.
|
|
5816
6166
|
|
|
5817
6167
|
Announced rather than only drawn, because the picture changing under a
|
|
5818
6168
|
reader who cannot see it is otherwise silent. A consumer who has their own
|
|
5819
6169
|
counter in the chrome can empty this and say it themselves. */
|
|
5820
6170
|
"status-label"?: (HelixHeadlessLightbox["statusLabel"]) | undefined;
|
|
5821
|
-
/** The status text that says which item is shown, with `{index}
|
|
5822
|
-
filled in.
|
|
6171
|
+
/** The status text that says which item is shown, with `{index}`, `{count}`
|
|
6172
|
+
and the item's `{label}` filled in.
|
|
5823
6173
|
|
|
5824
6174
|
Announced rather than only drawn, because the picture changing under a
|
|
5825
6175
|
reader who cannot see it is otherwise silent. A consumer who has their own
|
|
@@ -5873,7 +6223,7 @@ export type HelixHeadlessLightboxVueEvents = {
|
|
|
5873
6223
|
/** Fired before the viewer opens. Cancelable. */
|
|
5874
6224
|
"helix-before-open": HelixHeadlessLightboxHelixBeforeOpenElementEvent;
|
|
5875
6225
|
/** Fired when the viewer opens or closes, with `newState` and `oldState`. */
|
|
5876
|
-
toggle:
|
|
6226
|
+
toggle: HelixHeadlessLightboxToggleElementEvent;
|
|
5877
6227
|
};
|
|
5878
6228
|
|
|
5879
6229
|
export type HelixHeadlessLineChartVueProps = {
|
|
@@ -5984,6 +6334,12 @@ shadow root reads a table in that root rather than one in the document. A
|
|
|
5984
6334
|
Absent falls back to the table's own caption, which is usually the right
|
|
5985
6335
|
words and is already written. */
|
|
5986
6336
|
label?: (HelixHeadlessLineChart["label"]) | undefined;
|
|
6337
|
+
/** The locale the chart's own numbers are written in: its axis, its
|
|
6338
|
+
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
6339
|
+
|
|
6340
|
+
Absent uses the runtime's own. The table's cells are shown as the table
|
|
6341
|
+
writes them, whatever this says. */
|
|
6342
|
+
locale?: (HelixHeadlessLineChart["locale"]) | undefined;
|
|
5987
6343
|
};
|
|
5988
6344
|
|
|
5989
6345
|
export type HelixHeadlessLineChartVueEvents = {};
|
|
@@ -6104,6 +6460,13 @@ own search boxes would be three copies of one field. */
|
|
|
6104
6460
|
"filter-label"?: (HelixHeadlessListbox["filterLabel"]) | undefined;
|
|
6105
6461
|
/** Placeholder text for the filter field. */
|
|
6106
6462
|
filterLabel?: (HelixHeadlessListbox["filterLabel"]) | undefined;
|
|
6463
|
+
/** Stops the arrow keys from choosing each option they move to. Enter, Space
|
|
6464
|
+
or a click chooses the highlighted option.
|
|
6465
|
+
|
|
6466
|
+
By default a single-choice list chooses as the arrows move, as a radio
|
|
6467
|
+
group does. Select and Time Input set this on the list in their panel, so
|
|
6468
|
+
a reader can move through the options before closing the panel on one. */
|
|
6469
|
+
manual?: (HelixHeadlessListbox["manual"]) | undefined;
|
|
6107
6470
|
/** Whether more than one option can be chosen. */
|
|
6108
6471
|
multiple?: (HelixHeadlessListbox["multiple"]) | undefined;
|
|
6109
6472
|
/** Whether the rows are still loading.
|
|
@@ -6128,9 +6491,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
6128
6491
|
a reset should return to. */
|
|
6129
6492
|
value?: (HelixHeadlessListbox["value"]) | undefined;
|
|
6130
6493
|
/** */
|
|
6131
|
-
"aria-label"?:
|
|
6132
|
-
/** */
|
|
6133
|
-
namedBy?: (HelixHeadlessListbox["namedBy"]) | undefined;
|
|
6494
|
+
"aria-label"?: unknown;
|
|
6134
6495
|
/** The validation message shown under the control. It replaces the
|
|
6135
6496
|
browser's message. */
|
|
6136
6497
|
feedback?: (HelixHeadlessListbox["feedback"]) | undefined;
|
|
@@ -6530,6 +6891,12 @@ export type HelixHeadlessMapElementEvent<E = Event> = TypedEvent<
|
|
|
6530
6891
|
/** `helix-activate` event type */
|
|
6531
6892
|
export type HelixHeadlessMapHelixActivateElementEvent =
|
|
6532
6893
|
HelixHeadlessMapElementEvent<HelixActivateEvent>;
|
|
6894
|
+
/** `helix-before-change` event type */
|
|
6895
|
+
export type HelixHeadlessMapHelixBeforeChangeElementEvent =
|
|
6896
|
+
HelixHeadlessMapElementEvent<HelixBeforeChangeEvent>;
|
|
6897
|
+
/** `helix-before-toggle` event type */
|
|
6898
|
+
export type HelixHeadlessMapHelixBeforeToggleElementEvent =
|
|
6899
|
+
HelixHeadlessMapElementEvent<HelixBeforeToggleEvent>;
|
|
6533
6900
|
/** `helix-map-cluster` event type */
|
|
6534
6901
|
export type HelixHeadlessMapHelixMapClusterElementEvent =
|
|
6535
6902
|
HelixHeadlessMapElementEvent<HelixMapClusterEvent>;
|
|
@@ -6833,8 +7200,14 @@ elsewhere. Absent is the family's own. */
|
|
|
6833
7200
|
};
|
|
6834
7201
|
|
|
6835
7202
|
export type HelixHeadlessMapVueEvents = {
|
|
7203
|
+
/** The layers menu changed the map type, which `map-type` now holds. */
|
|
7204
|
+
change: HelixHeadlessMapElementEvent;
|
|
6836
7205
|
/** A marker was pressed. The value is the marker's `name`, or its `label` if it has no name. A cluster sends `helix-map-cluster` instead. */
|
|
6837
7206
|
"helix-activate": HelixHeadlessMapHelixActivateElementEvent;
|
|
7207
|
+
/** A map type was chosen in the layers menu, with its name: `standard`, `hybrid`, or `satellite`. Cancelable: cancel it to keep the current type. */
|
|
7208
|
+
"helix-before-change": HelixHeadlessMapHelixBeforeChangeElementEvent;
|
|
7209
|
+
/** A layer's tile in the layers menu was pressed. Sent from the layer, with `checked` true when it is to be shown. Cancelable: cancel it to keep the layer as it is. */
|
|
7210
|
+
"helix-before-toggle": HelixHeadlessMapHelixBeforeToggleElementEvent;
|
|
6838
7211
|
/** A cluster was pressed. Sent from the marker that shows the cluster, with the names of its places. */
|
|
6839
7212
|
"helix-map-cluster": HelixHeadlessMapHelixMapClusterElementEvent;
|
|
6840
7213
|
/** A pan button or arrow key was pressed. Move your map in response. */
|
|
@@ -6937,6 +7310,9 @@ export type HelixHeadlessMegamenuHelixBeforeCloseElementEvent =
|
|
|
6937
7310
|
/** `helix-before-open` event type */
|
|
6938
7311
|
export type HelixHeadlessMegamenuHelixBeforeOpenElementEvent =
|
|
6939
7312
|
HelixHeadlessMegamenuElementEvent<HelixBeforeOpenEvent>;
|
|
7313
|
+
/** `toggle` event type */
|
|
7314
|
+
export type HelixHeadlessMegamenuToggleElementEvent =
|
|
7315
|
+
HelixHeadlessMegamenuElementEvent<ToggleEvent>;
|
|
6940
7316
|
|
|
6941
7317
|
export type HelixHeadlessMegamenuVueProps = {
|
|
6942
7318
|
/** The page width, in pixels, below which a card panel is shown as a band. At
|
|
@@ -7053,7 +7429,7 @@ export type HelixHeadlessMegamenuVueEvents = {
|
|
|
7053
7429
|
/** The panel is about to open. Cancelable. */
|
|
7054
7430
|
"helix-before-open": HelixHeadlessMegamenuHelixBeforeOpenElementEvent;
|
|
7055
7431
|
/** The panel opened or closed. Carries `newState` and `oldState`. */
|
|
7056
|
-
toggle:
|
|
7432
|
+
toggle: HelixHeadlessMegamenuToggleElementEvent;
|
|
7057
7433
|
};
|
|
7058
7434
|
|
|
7059
7435
|
/** `HelixHeadlessMenuItem` component event */
|
|
@@ -7061,6 +7437,9 @@ export type HelixHeadlessMenuItemElementEvent<E = Event> = TypedEvent<
|
|
|
7061
7437
|
HelixHeadlessMenuItem,
|
|
7062
7438
|
E
|
|
7063
7439
|
>;
|
|
7440
|
+
/** `helix-before-toggle` event type */
|
|
7441
|
+
export type HelixHeadlessMenuItemHelixBeforeToggleElementEvent =
|
|
7442
|
+
HelixHeadlessMenuItemElementEvent<HelixBeforeToggleEvent>;
|
|
7064
7443
|
/** `helix-select` event type */
|
|
7065
7444
|
export type HelixHeadlessMenuItemHelixSelectElementEvent =
|
|
7066
7445
|
HelixHeadlessMenuItemElementEvent<HelixSelectEvent>;
|
|
@@ -7074,9 +7453,15 @@ was never tickable look identical from here. Announcing only the ticked one
|
|
|
7074
7453
|
as a checkbox tells a reader its siblings are commands, which is the one
|
|
7075
7454
|
thing they are not.
|
|
7076
7455
|
|
|
7077
|
-
`checked` implies it, so a row that is on never has to say both.
|
|
7456
|
+
`checked` implies it, so a row that is on never has to say both.
|
|
7457
|
+
|
|
7458
|
+
Choosing the row checks or unchecks it, after a `helix-before-toggle` that
|
|
7459
|
+
you can cancel. */
|
|
7078
7460
|
checkable?: (HelixHeadlessMenuItem["checkable"]) | undefined;
|
|
7079
|
-
/** Whether the row is checked.
|
|
7461
|
+
/** Whether the row is checked.
|
|
7462
|
+
|
|
7463
|
+
The row changes it when it is chosen. Not reflected: the attribute is the
|
|
7464
|
+
state you start the row in, and `:state(checked)` carries the current one. */
|
|
7080
7465
|
checked?: (HelixHeadlessMenuItem["checked"]) | undefined;
|
|
7081
7466
|
/** Whether the row is disabled, so it cannot be chosen. */
|
|
7082
7467
|
disabled?: (HelixHeadlessMenuItem["disabled"]) | undefined;
|
|
@@ -7088,11 +7473,11 @@ about who may name a file on somebody's disk rather than a gap here. */
|
|
|
7088
7473
|
download?: (HelixHeadlessMenuItem["download"]) | undefined;
|
|
7089
7474
|
/** Whether only one row in its set can be checked at a time.
|
|
7090
7475
|
|
|
7091
|
-
|
|
7092
|
-
|
|
7093
|
-
|
|
7094
|
-
|
|
7095
|
-
|
|
7476
|
+
The set is the run of `exclusive` rows next to this one, up to the first
|
|
7477
|
+
element that is not one, such as a divider. Choosing a row in it checks
|
|
7478
|
+
that row and unchecks the others. Choosing the row that is checked leaves
|
|
7479
|
+
it checked. `menuitemradio` tells a reader which kind of set they are in,
|
|
7480
|
+
where `menuitemcheckbox` says every row is independent.
|
|
7096
7481
|
|
|
7097
7482
|
Meaningless without `checkable`, since a row that cannot be ticked is not
|
|
7098
7483
|
one of a set of anything. */
|
|
@@ -7140,6 +7525,8 @@ Three levels deep, the topmost row holds the slot the middle one lives in. */
|
|
|
7140
7525
|
};
|
|
7141
7526
|
|
|
7142
7527
|
export type HelixHeadlessMenuItemVueEvents = {
|
|
7528
|
+
/** A choice row is about to be checked or unchecked, carrying the state asked for. Cancelable: cancel it to keep the row as it is. */
|
|
7529
|
+
"helix-before-toggle": HelixHeadlessMenuItemHelixBeforeToggleElementEvent;
|
|
7143
7530
|
/** The row was chosen. Cancelable: cancel it to keep the menu open. */
|
|
7144
7531
|
"helix-select": HelixHeadlessMenuItemHelixSelectElementEvent;
|
|
7145
7532
|
};
|
|
@@ -7158,13 +7545,20 @@ export type HelixHeadlessMenuHelixBeforeOpenElementEvent =
|
|
|
7158
7545
|
/** `helix-select` event type */
|
|
7159
7546
|
export type HelixHeadlessMenuHelixSelectElementEvent =
|
|
7160
7547
|
HelixHeadlessMenuElementEvent<HelixSelectEvent>;
|
|
7548
|
+
/** `toggle` event type */
|
|
7549
|
+
export type HelixHeadlessMenuToggleElementEvent =
|
|
7550
|
+
HelixHeadlessMenuElementEvent<ToggleEvent>;
|
|
7161
7551
|
|
|
7162
7552
|
export type HelixHeadlessMenuVueProps = {
|
|
7163
7553
|
/** The text of the row that returns from a submenu. */
|
|
7164
7554
|
"back-label"?: (HelixHeadlessMenu["backLabel"]) | undefined;
|
|
7165
7555
|
/** The text of the row that returns from a submenu. */
|
|
7166
7556
|
backLabel?: (HelixHeadlessMenu["backLabel"]) | undefined;
|
|
7167
|
-
/** Accessible name for the surface.
|
|
7557
|
+
/** Accessible name for the surface.
|
|
7558
|
+
|
|
7559
|
+
Empty by default, which names the surface by its trigger, so a menu opened
|
|
7560
|
+
from "Actions" is announced as "Actions". An `aria-label` or
|
|
7561
|
+
`aria-labelledby` on the host names it too, and wins over both. */
|
|
7168
7562
|
label?: (HelixHeadlessMenu["label"]) | undefined;
|
|
7169
7563
|
/** Space between the trigger and the surface, in pixels. */
|
|
7170
7564
|
offset?: (HelixHeadlessMenu["offset"]) | undefined;
|
|
@@ -7213,7 +7607,7 @@ export type HelixHeadlessMenuVueEvents = {
|
|
|
7213
7607
|
/** An item was chosen. Cancelable: cancel it to keep the menu open. */
|
|
7214
7608
|
"helix-select": HelixHeadlessMenuHelixSelectElementEvent;
|
|
7215
7609
|
/** The menu opened or closed. The event carries `newState` and `oldState`. */
|
|
7216
|
-
toggle:
|
|
7610
|
+
toggle: HelixHeadlessMenuToggleElementEvent;
|
|
7217
7611
|
};
|
|
7218
7612
|
|
|
7219
7613
|
export type HelixHeadlessMeterVueProps = {
|
|
@@ -7251,6 +7645,10 @@ Absent leaves the range unbanded. */
|
|
|
7251
7645
|
high?: (HelixHeadlessMeter["high"]) | undefined;
|
|
7252
7646
|
/** Accessible name for the reading. */
|
|
7253
7647
|
label?: (HelixHeadlessMeter["label"]) | undefined;
|
|
7648
|
+
/** The locale the percentage is written in, such as `fr` for `72 %`.
|
|
7649
|
+
|
|
7650
|
+
Absent uses the runtime's own. */
|
|
7651
|
+
locale?: (HelixHeadlessMeter["locale"]) | undefined;
|
|
7254
7652
|
/** Top of the low band.
|
|
7255
7653
|
|
|
7256
7654
|
Absent leaves the range unbanded. */
|
|
@@ -7315,7 +7713,11 @@ fair summary of a task and a poor one of a quantity. */
|
|
|
7315
7713
|
export type HelixHeadlessMeterVueEvents = {};
|
|
7316
7714
|
|
|
7317
7715
|
export type HelixHeadlessNavigationVueProps = {
|
|
7318
|
-
/** The landmark's name, read by screen readers.
|
|
7716
|
+
/** The landmark's name, read by screen readers.
|
|
7717
|
+
|
|
7718
|
+
An `aria-label` or `aria-labelledby` on the host names the landmark too,
|
|
7719
|
+
and wins over this, so a footer navigation written the usual way is not a
|
|
7720
|
+
second "Main". */
|
|
7319
7721
|
label?: (HelixHeadlessNavigation["label"]) | undefined;
|
|
7320
7722
|
/** Stacks the destinations in a column, for a sidebar, where unset is a row
|
|
7321
7723
|
for a header or a footer. The marker follows the current destination down
|
|
@@ -7336,6 +7738,9 @@ export type HelixHeadlessNotificationGroupHelixBeforeCloseElementEvent =
|
|
|
7336
7738
|
/** `helix-before-open` event type */
|
|
7337
7739
|
export type HelixHeadlessNotificationGroupHelixBeforeOpenElementEvent =
|
|
7338
7740
|
HelixHeadlessNotificationGroupElementEvent<HelixBeforeOpenEvent>;
|
|
7741
|
+
/** `toggle` event type */
|
|
7742
|
+
export type HelixHeadlessNotificationGroupToggleElementEvent =
|
|
7743
|
+
HelixHeadlessNotificationGroupElementEvent<ToggleEvent>;
|
|
7339
7744
|
|
|
7340
7745
|
export type HelixHeadlessNotificationGroupVueProps = {
|
|
7341
7746
|
/** Whether the group can be collapsed to its first row.
|
|
@@ -7380,6 +7785,8 @@ export type HelixHeadlessNotificationGroupVueEvents = {
|
|
|
7380
7785
|
"helix-before-close": HelixHeadlessNotificationGroupHelixBeforeCloseElementEvent;
|
|
7381
7786
|
/** Fired before the group expands. Cancelable: cancel it to keep the group collapsed. */
|
|
7382
7787
|
"helix-before-open": HelixHeadlessNotificationGroupHelixBeforeOpenElementEvent;
|
|
7788
|
+
/** The group expanded or collapsed. The event carries `newState` and `oldState`. */
|
|
7789
|
+
toggle: HelixHeadlessNotificationGroupToggleElementEvent;
|
|
7383
7790
|
};
|
|
7384
7791
|
|
|
7385
7792
|
/** `HelixHeadlessNotification` component event */
|
|
@@ -7424,6 +7831,16 @@ as a hydration mismatch, and which a copy of the serialized element
|
|
|
7424
7831
|
re-parses as a declaration. `:state(read)` is what the stylesheet reads.
|
|
7425
7832
|
`hydration.dom.spec.ts` holds it. */
|
|
7426
7833
|
read?: (HelixHeadlessNotification["read"]) | undefined;
|
|
7834
|
+
/** What a screen reader hears before an unread notification's text.
|
|
7835
|
+
|
|
7836
|
+
The unread mark is drawn, so a reader who cannot see it hears this word in
|
|
7837
|
+
its place. Translate it with the rest of your interface. */
|
|
7838
|
+
"unread-label"?: (HelixHeadlessNotification["unreadLabel"]) | undefined;
|
|
7839
|
+
/** What a screen reader hears before an unread notification's text.
|
|
7840
|
+
|
|
7841
|
+
The unread mark is drawn, so a reader who cannot see it hears this word in
|
|
7842
|
+
its place. Translate it with the rest of your interface. */
|
|
7843
|
+
unreadLabel?: (HelixHeadlessNotification["unreadLabel"]) | undefined;
|
|
7427
7844
|
/** Whether the element shows a control that dismisses it. */
|
|
7428
7845
|
dismissible?: (HelixHeadlessNotification["dismissible"]) | undefined;
|
|
7429
7846
|
/** The dismiss control's label, read by screen readers.
|
|
@@ -7548,6 +7965,13 @@ Ten steps, which is the convention every spinner on the platform follows,
|
|
|
7548
7965
|
and a property because ten of a step of `0.01` is a hundredth and rarely
|
|
7549
7966
|
what a reader wants from a whole key. */
|
|
7550
7967
|
largeStep?: (HelixHeadlessNumberInput["largeStep"]) | undefined;
|
|
7968
|
+
/** The locale a typed number is read in, such as `de-DE`. Empty reads it in
|
|
7969
|
+
the browser's language.
|
|
7970
|
+
|
|
7971
|
+
Where the locale writes a decimal comma, `1,5` is read as one and a half,
|
|
7972
|
+
which is what the decimal keypad on a phone in that locale types. A dot is
|
|
7973
|
+
read as a decimal point in every locale. */
|
|
7974
|
+
locale?: (HelixHeadlessNumberInput["locale"]) | undefined;
|
|
7551
7975
|
/** The largest value allowed.
|
|
7552
7976
|
|
|
7553
7977
|
Absent has no ceiling. */
|
|
@@ -7585,8 +8009,29 @@ been asked for. Where it earns its place is a value a reader tunes rather
|
|
|
7585
8009
|
than states: a duration, a weight, a count they are looking for rather than
|
|
7586
8010
|
one they already know. */
|
|
7587
8011
|
scrub?: (HelixHeadlessNumberInput["scrub"]) | undefined;
|
|
7588
|
-
/** How far one step moves.
|
|
8012
|
+
/** How far one step moves. A value off the step grid, counted from `min`, is
|
|
8013
|
+
invalid, as it is in a native number field. */
|
|
7589
8014
|
step?: (HelixHeadlessNumberInput["step"]) | undefined;
|
|
8015
|
+
/** The message the browser shows when the number is off the step grid, with
|
|
8016
|
+
`{below}` and `{above}` filled in with the nearest valid values. */
|
|
8017
|
+
"step-mismatch-message"?: (HelixHeadlessNumberInput["stepMismatchMessage"]) | undefined;
|
|
8018
|
+
/** The message the browser shows when the number is off the step grid, with
|
|
8019
|
+
`{below}` and `{above}` filled in with the nearest valid values. */
|
|
8020
|
+
stepMismatchMessage?: (HelixHeadlessNumberInput["stepMismatchMessage"]) | undefined;
|
|
8021
|
+
/** What a screen reader says for the value, with `{value}` filled in, such as
|
|
8022
|
+
`{value} kilograms`.
|
|
8023
|
+
|
|
8024
|
+
A unit slotted into `end` is drawn beside the number and is not part of
|
|
8025
|
+
what the spinbutton announces, so it goes here too. Empty announces the
|
|
8026
|
+
number alone. */
|
|
8027
|
+
"value-text"?: (HelixHeadlessNumberInput["valueText"]) | undefined;
|
|
8028
|
+
/** What a screen reader says for the value, with `{value}` filled in, such as
|
|
8029
|
+
`{value} kilograms`.
|
|
8030
|
+
|
|
8031
|
+
A unit slotted into `end` is drawn beside the number and is not part of
|
|
8032
|
+
what the spinbutton announces, so it goes here too. Empty announces the
|
|
8033
|
+
number alone. */
|
|
8034
|
+
valueText?: (HelixHeadlessNumberInput["valueText"]) | undefined;
|
|
7590
8035
|
/** The value the control starts with. A form reset returns it to this value. */
|
|
7591
8036
|
"default-value"?: (HelixHeadlessNumberInput["defaultValue"]) | undefined;
|
|
7592
8037
|
/** The value the control starts with. A form reset returns it to this value. */
|
|
@@ -7599,9 +8044,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
7599
8044
|
a reset should return to. */
|
|
7600
8045
|
value?: (HelixHeadlessNumberInput["value"]) | undefined;
|
|
7601
8046
|
/** */
|
|
7602
|
-
"aria-label"?:
|
|
7603
|
-
/** */
|
|
7604
|
-
namedBy?: (HelixHeadlessNumberInput["namedBy"]) | undefined;
|
|
8047
|
+
"aria-label"?: unknown;
|
|
7605
8048
|
/** The validation message shown under the control. It replaces the
|
|
7606
8049
|
browser's message. */
|
|
7607
8050
|
feedback?: (HelixHeadlessNumberInput["feedback"]) | undefined;
|
|
@@ -7719,6 +8162,22 @@ Read once the document exists, and again whenever this changes. Text that
|
|
|
7719
8162
|
does not parse leaves the inspector empty rather than throwing, since a
|
|
7720
8163
|
page's markup should not take the page down over a comma. */
|
|
7721
8164
|
for?: (HelixHeadlessObjectInspector["for"]) | undefined;
|
|
8165
|
+
/** How an array of one entry counts it. `{count}` is replaced with the count. */
|
|
8166
|
+
"item-label"?: (HelixHeadlessObjectInspector["itemLabel"]) | undefined;
|
|
8167
|
+
/** How an array of one entry counts it. `{count}` is replaced with the count. */
|
|
8168
|
+
itemLabel?: (HelixHeadlessObjectInspector["itemLabel"]) | undefined;
|
|
8169
|
+
/** How an array of any other number of entries counts them. `{count}` is replaced with the count. */
|
|
8170
|
+
"items-label"?: (HelixHeadlessObjectInspector["itemsLabel"]) | undefined;
|
|
8171
|
+
/** How an array of any other number of entries counts them. `{count}` is replaced with the count. */
|
|
8172
|
+
itemsLabel?: (HelixHeadlessObjectInspector["itemsLabel"]) | undefined;
|
|
8173
|
+
/** How an object of one key counts it. `{count}` is replaced with the count. */
|
|
8174
|
+
"key-label"?: (HelixHeadlessObjectInspector["keyLabel"]) | undefined;
|
|
8175
|
+
/** How an object of one key counts it. `{count}` is replaced with the count. */
|
|
8176
|
+
keyLabel?: (HelixHeadlessObjectInspector["keyLabel"]) | undefined;
|
|
8177
|
+
/** How an object of any other number of keys counts them. `{count}` is replaced with the count. */
|
|
8178
|
+
"keys-label"?: (HelixHeadlessObjectInspector["keysLabel"]) | undefined;
|
|
8179
|
+
/** How an object of any other number of keys counts them. `{count}` is replaced with the count. */
|
|
8180
|
+
keysLabel?: (HelixHeadlessObjectInspector["keysLabel"]) | undefined;
|
|
7722
8181
|
/** Accessible name for the tree, and the text of the header where there is one. */
|
|
7723
8182
|
label?: (HelixHeadlessObjectInspector["label"]) | undefined;
|
|
7724
8183
|
/** Hides the copy button.
|
|
@@ -7745,6 +8204,12 @@ who set the property. This button is positioned out of the flow and takes no
|
|
|
7745
8204
|
room, so nothing selects on it, and reflection exists so that a selector can
|
|
7746
8205
|
reach a value. */
|
|
7747
8206
|
noCopy?: (HelixHeadlessObjectInspector["noCopy"]) | undefined;
|
|
8207
|
+
/** The tree's accessible name when `label` is empty and the host names it
|
|
8208
|
+
with neither `aria-label` nor `aria-labelledby`. */
|
|
8209
|
+
"tree-label"?: (HelixHeadlessObjectInspector["treeLabel"]) | undefined;
|
|
8210
|
+
/** The tree's accessible name when `label` is empty and the host names it
|
|
8211
|
+
with neither `aria-label` nor `aria-labelledby`. */
|
|
8212
|
+
treeLabel?: (HelixHeadlessObjectInspector["treeLabel"]) | undefined;
|
|
7748
8213
|
/** Whether to draw only the rows in view.
|
|
7749
8214
|
|
|
7750
8215
|
For a value of thousands of entries. Reflected, because the box it scrolls
|
|
@@ -7781,11 +8246,15 @@ export type HelixHeadlessOptionHelixSelectElementEvent =
|
|
|
7781
8246
|
export type HelixHeadlessOptionVueProps = {
|
|
7782
8247
|
/** Whether this is the option the keyboard is on.
|
|
7783
8248
|
|
|
7784
|
-
Written by the listbox.
|
|
8249
|
+
Written by the listbox, which writes it once a reader moves the highlight.
|
|
8250
|
+
It shows as `:state(active)`, and as a `data-active` attribute for the
|
|
8251
|
+
stylesheets written before the state existed. */
|
|
7785
8252
|
"data-active"?: (HelixHeadlessOption["active"]) | undefined;
|
|
7786
8253
|
/** Whether this is the option the keyboard is on.
|
|
7787
8254
|
|
|
7788
|
-
Written by the listbox.
|
|
8255
|
+
Written by the listbox, which writes it once a reader moves the highlight.
|
|
8256
|
+
It shows as `:state(active)`, and as a `data-active` attribute for the
|
|
8257
|
+
stylesheets written before the state existed. */
|
|
7789
8258
|
active?: (HelixHeadlessOption["active"]) | undefined;
|
|
7790
8259
|
/** A second destination for the row, opened when you choose it with the
|
|
7791
8260
|
modifier key held.
|
|
@@ -7943,6 +8412,9 @@ export type HelixHeadlessPaginationElementEvent<E = Event> = TypedEvent<
|
|
|
7943
8412
|
HelixHeadlessPagination,
|
|
7944
8413
|
E
|
|
7945
8414
|
>;
|
|
8415
|
+
/** `helix-activate` event type */
|
|
8416
|
+
export type HelixHeadlessPaginationHelixActivateElementEvent =
|
|
8417
|
+
HelixHeadlessPaginationElementEvent<HelixActivateEvent>;
|
|
7946
8418
|
/** `helix-navigate` event type */
|
|
7947
8419
|
export type HelixHeadlessPaginationHelixNavigateElementEvent =
|
|
7948
8420
|
HelixHeadlessPaginationElementEvent<HelixNavigateEvent>;
|
|
@@ -8090,7 +8562,9 @@ to a reader, and takes its own. */
|
|
|
8090
8562
|
};
|
|
8091
8563
|
|
|
8092
8564
|
export type HelixHeadlessPaginationVueEvents = {
|
|
8093
|
-
/** Fired
|
|
8565
|
+
/** Fired after the page changes, with the new page as a string in `detail.value`. In `href` mode it comes a task after the click, once the page has moved. */
|
|
8566
|
+
"helix-activate": HelixHeadlessPaginationHelixActivateElementEvent;
|
|
8567
|
+
/** Fired before the page changes, and cancelable. Canceling it is the only way to stop a page change. `detail.page` is the page asked for, as a number, and `detail.value` is the same page as a string. */
|
|
8094
8568
|
"helix-navigate": HelixHeadlessPaginationHelixNavigateElementEvent;
|
|
8095
8569
|
};
|
|
8096
8570
|
|
|
@@ -8129,8 +8603,12 @@ Reading gives the real one; writing declares it the consumer's, and
|
|
|
8129
8603
|
};
|
|
8130
8604
|
|
|
8131
8605
|
export type HelixHeadlessPaginationSizeVueEvents = {
|
|
8606
|
+
/** Fired after the size changes. */
|
|
8607
|
+
change: HelixHeadlessPaginationSizeElementEvent;
|
|
8132
8608
|
/** Fired before the size changes, and cancelable. Canceling it is the only way to stop a size change. */
|
|
8133
8609
|
"helix-before-change": HelixHeadlessPaginationSizeHelixBeforeChangeElementEvent;
|
|
8610
|
+
/** Fired after the size changes, with `change`. */
|
|
8611
|
+
input: HelixHeadlessPaginationSizeElementEvent;
|
|
8134
8612
|
};
|
|
8135
8613
|
|
|
8136
8614
|
export type HelixHeadlessPaginationSummaryVueProps = {
|
|
@@ -8246,9 +8724,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
8246
8724
|
a reset should return to. */
|
|
8247
8725
|
value?: (HelixHeadlessPinInput["value"]) | undefined;
|
|
8248
8726
|
/** */
|
|
8249
|
-
"aria-label"?:
|
|
8250
|
-
/** */
|
|
8251
|
-
namedBy?: (HelixHeadlessPinInput["namedBy"]) | undefined;
|
|
8727
|
+
"aria-label"?: unknown;
|
|
8252
8728
|
/** The validation message shown under the control. It replaces the
|
|
8253
8729
|
browser's message. */
|
|
8254
8730
|
feedback?: (HelixHeadlessPinInput["feedback"]) | undefined;
|
|
@@ -8327,6 +8803,9 @@ export type HelixHeadlessPopoverHelixBeforeCloseElementEvent =
|
|
|
8327
8803
|
/** `helix-before-open` event type */
|
|
8328
8804
|
export type HelixHeadlessPopoverHelixBeforeOpenElementEvent =
|
|
8329
8805
|
HelixHeadlessPopoverElementEvent<HelixBeforeOpenEvent>;
|
|
8806
|
+
/** `toggle` event type */
|
|
8807
|
+
export type HelixHeadlessPopoverToggleElementEvent =
|
|
8808
|
+
HelixHeadlessPopoverElementEvent<ToggleEvent>;
|
|
8330
8809
|
|
|
8331
8810
|
export type HelixHeadlessPopoverVueProps = {
|
|
8332
8811
|
/** The panel's name, read by screen readers. */
|
|
@@ -8362,7 +8841,7 @@ export type HelixHeadlessPopoverVueEvents = {
|
|
|
8362
8841
|
/** Fired before it opens, and cancelable. */
|
|
8363
8842
|
"helix-before-open": HelixHeadlessPopoverHelixBeforeOpenElementEvent;
|
|
8364
8843
|
/** Fired after the panel opens or closes, with `newState` and `oldState`. */
|
|
8365
|
-
toggle:
|
|
8844
|
+
toggle: HelixHeadlessPopoverToggleElementEvent;
|
|
8366
8845
|
};
|
|
8367
8846
|
|
|
8368
8847
|
export type HelixHeadlessProgressVueProps = {
|
|
@@ -8381,8 +8860,17 @@ place in the layout when the answer arrives and it becomes determinate. */
|
|
|
8381
8860
|
indeterminate?: (HelixHeadlessProgress["indeterminate"]) | undefined;
|
|
8382
8861
|
/** Accessible name for what is in progress. */
|
|
8383
8862
|
label?: (HelixHeadlessProgress["label"]) | undefined;
|
|
8863
|
+
/** The locale the percentage is written in, such as `fr` for `72 %`.
|
|
8864
|
+
|
|
8865
|
+
Absent uses the runtime's own. */
|
|
8866
|
+
locale?: (HelixHeadlessProgress["locale"]) | undefined;
|
|
8384
8867
|
/** The total the work is measured against. */
|
|
8385
8868
|
max?: (HelixHeadlessProgress["max"]) | undefined;
|
|
8869
|
+
/** Where the work starts, in the same units as `max`. Defaults to zero.
|
|
8870
|
+
|
|
8871
|
+
For a measure that does not start at nothing, such as a migration from
|
|
8872
|
+
version 12 to version 20, where 12 is the empty bar. */
|
|
8873
|
+
min?: (HelixHeadlessProgress["min"]) | undefined;
|
|
8386
8874
|
/** Whether the value is drawn as a bar or as a ring.
|
|
8387
8875
|
|
|
8388
8876
|
**On this tier because it changes the markup**, which is the headless tier's to
|
|
@@ -8419,7 +8907,7 @@ saying "uploading" while the bar runs. */
|
|
|
8419
8907
|
showValue?: (HelixHeadlessProgress["showValue"]) | undefined;
|
|
8420
8908
|
/** What has been done so far, in the same units as `max`.
|
|
8421
8909
|
|
|
8422
|
-
Clamped between
|
|
8910
|
+
Clamped between `min` and `max` for both the fill and the announcement, so
|
|
8423
8911
|
the two can never disagree about what is on screen. */
|
|
8424
8912
|
value?: (HelixHeadlessProgress["value"]) | undefined;
|
|
8425
8913
|
/** Text that describes the value when the number alone is not enough, such as
|
|
@@ -8442,6 +8930,12 @@ report progress. */
|
|
|
8442
8930
|
|
|
8443
8931
|
export type HelixHeadlessProgressVueEvents = {};
|
|
8444
8932
|
|
|
8933
|
+
/** `HelixHeadlessQrCode` component event */
|
|
8934
|
+
export type HelixHeadlessQrCodeElementEvent<E = Event> = TypedEvent<
|
|
8935
|
+
HelixHeadlessQrCode,
|
|
8936
|
+
E
|
|
8937
|
+
>;
|
|
8938
|
+
|
|
8445
8939
|
export type HelixHeadlessQrCodeVueProps = {
|
|
8446
8940
|
/** The error correction level, which sets how much of the code can be lost
|
|
8447
8941
|
and still scan.
|
|
@@ -8475,7 +8969,10 @@ which is what makes it read as dots rather than as a softened square code. */
|
|
|
8475
8969
|
value?: (HelixHeadlessQrCode["value"]) | undefined;
|
|
8476
8970
|
};
|
|
8477
8971
|
|
|
8478
|
-
export type HelixHeadlessQrCodeVueEvents = {
|
|
8972
|
+
export type HelixHeadlessQrCodeVueEvents = {
|
|
8973
|
+
/** The value is too long for a code at the correction level, so no code is drawn. */
|
|
8974
|
+
error: HelixHeadlessQrCodeElementEvent;
|
|
8975
|
+
};
|
|
8479
8976
|
|
|
8480
8977
|
export type HelixHeadlessQuoteVueProps = {
|
|
8481
8978
|
/** URL identifying where the quotation came from. */
|
|
@@ -8518,9 +9015,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
8518
9015
|
a reset should return to. */
|
|
8519
9016
|
value?: (HelixHeadlessRadioGroup["value"]) | undefined;
|
|
8520
9017
|
/** */
|
|
8521
|
-
"aria-label"?:
|
|
8522
|
-
/** */
|
|
8523
|
-
namedBy?: (HelixHeadlessRadioGroup["namedBy"]) | undefined;
|
|
9018
|
+
"aria-label"?: unknown;
|
|
8524
9019
|
/** The validation message shown under the control. It replaces the
|
|
8525
9020
|
browser's message. */
|
|
8526
9021
|
feedback?: (HelixHeadlessRadioGroup["feedback"]) | undefined;
|
|
@@ -8575,6 +9070,16 @@ imperatively later, and nothing is hydrating by then.
|
|
|
8575
9070
|
|
|
8576
9071
|
Here rather than on each control. */
|
|
8577
9072
|
name?: (HelixHeadlessRadioGroup["name"]) | undefined;
|
|
9073
|
+
/** Whether the group holds a tab stop of its own.
|
|
9074
|
+
|
|
9075
|
+
A toolbar is one tab stop, so a toolbar the group sits in sets this to
|
|
9076
|
+
`false` while its stop is on another control, and every radio, the chosen
|
|
9077
|
+
one too, is then out of the tab order. The arrow keys inside the group
|
|
9078
|
+
work as before once focus is in it.
|
|
9079
|
+
|
|
9080
|
+
No attribute: it is coordination between elements, and a consumer has no
|
|
9081
|
+
reason to set it. */
|
|
9082
|
+
focusable?: (HelixHeadlessRadioGroup["focusable"]) | undefined;
|
|
8578
9083
|
};
|
|
8579
9084
|
|
|
8580
9085
|
export type HelixHeadlessRadioGroupVueEvents = {
|
|
@@ -8635,11 +9140,14 @@ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
|
|
|
8635
9140
|
Splitting them means moving what every stylesheet selects on, which is a
|
|
8636
9141
|
change of its own rather than a property being added. */
|
|
8637
9142
|
defaultSelected?: (HelixHeadlessRadio["defaultSelected"]) | undefined;
|
|
8638
|
-
/** Whether the radio holds the group's tab stop
|
|
9143
|
+
/** Whether the radio holds the group's tab stop. Unset, the chosen radio
|
|
9144
|
+
holds it.
|
|
8639
9145
|
|
|
8640
9146
|
The stop rides on the selection, and an unanswered group has no selection,
|
|
8641
9147
|
so without this every choice is `tabindex="-1"` and the keyboard cannot
|
|
8642
|
-
enter the set at all.
|
|
9148
|
+
enter the set at all. The group writes `true` for the chosen radio, or for
|
|
9149
|
+
the first that can be chosen while nothing is, and `false` for every radio,
|
|
9150
|
+
the chosen one too, while a toolbar the group sits in holds the stop.
|
|
8643
9151
|
|
|
8644
9152
|
**Written by the group, with no attribute, and it reaches the control
|
|
8645
9153
|
rather than the host.** A `tabindex` on the host is two faults at once: it
|
|
@@ -8710,6 +9218,18 @@ read as `max`, which collapses the scale to its top score rather than
|
|
|
8710
9218
|
leaving a rating with nothing to press. A property that silently accepts
|
|
8711
9219
|
nonsense is the fault this pays off, so neither case is quietly ignored. */
|
|
8712
9220
|
min?: (HelixHeadlessRating["min"]) | undefined;
|
|
9221
|
+
/** The name of each mark a reader can choose, with `{score}` and `{max}`
|
|
9222
|
+
filled in. Set it to translate "3 out of 5".
|
|
9223
|
+
|
|
9224
|
+
Also what a read-only rating says for its score where `value-text` is
|
|
9225
|
+
empty. */
|
|
9226
|
+
"option-label"?: (HelixHeadlessRating["optionLabel"]) | undefined;
|
|
9227
|
+
/** The name of each mark a reader can choose, with `{score}` and `{max}`
|
|
9228
|
+
filled in. Set it to translate "3 out of 5".
|
|
9229
|
+
|
|
9230
|
+
Also what a read-only rating says for its score where `value-text` is
|
|
9231
|
+
empty. */
|
|
9232
|
+
optionLabel?: (HelixHeadlessRating["optionLabel"]) | undefined;
|
|
8713
9233
|
/** Shows the score without letting users change it.
|
|
8714
9234
|
|
|
8715
9235
|
A readout is not a control that has been switched off. It takes no focus,
|
|
@@ -8773,9 +9293,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
8773
9293
|
a reset should return to. */
|
|
8774
9294
|
value?: (HelixHeadlessRating["value"]) | undefined;
|
|
8775
9295
|
/** */
|
|
8776
|
-
"aria-label"?:
|
|
8777
|
-
/** */
|
|
8778
|
-
namedBy?: (HelixHeadlessRating["namedBy"]) | undefined;
|
|
9296
|
+
"aria-label"?: unknown;
|
|
8779
9297
|
/** The validation message shown under the control. It replaces the
|
|
8780
9298
|
browser's message. */
|
|
8781
9299
|
feedback?: (HelixHeadlessRating["feedback"]) | undefined;
|
|
@@ -8877,6 +9395,12 @@ shadow root reads a table in that root rather than one in the document. A
|
|
|
8877
9395
|
Absent falls back to the table's own caption, which is usually the right
|
|
8878
9396
|
words and is already written. */
|
|
8879
9397
|
label?: (HelixHeadlessScatterChart["label"]) | undefined;
|
|
9398
|
+
/** The locale the chart's own numbers are written in: its axis, its
|
|
9399
|
+
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
9400
|
+
|
|
9401
|
+
Absent uses the runtime's own. The table's cells are shown as the table
|
|
9402
|
+
writes them, whatever this says. */
|
|
9403
|
+
locale?: (HelixHeadlessScatterChart["locale"]) | undefined;
|
|
8880
9404
|
};
|
|
8881
9405
|
|
|
8882
9406
|
export type HelixHeadlessScatterChartVueEvents = {};
|
|
@@ -8904,6 +9428,12 @@ export type HelixHeadlessSelectHelixBeforeCloseElementEvent =
|
|
|
8904
9428
|
/** `helix-before-open` event type */
|
|
8905
9429
|
export type HelixHeadlessSelectHelixBeforeOpenElementEvent =
|
|
8906
9430
|
HelixHeadlessSelectElementEvent<HelixBeforeOpenEvent>;
|
|
9431
|
+
/** `helix-filter` event type */
|
|
9432
|
+
export type HelixHeadlessSelectHelixFilterElementEvent =
|
|
9433
|
+
HelixHeadlessSelectElementEvent<HelixFilterEvent>;
|
|
9434
|
+
/** `toggle` event type */
|
|
9435
|
+
export type HelixHeadlessSelectToggleElementEvent =
|
|
9436
|
+
HelixHeadlessSelectElementEvent<ToggleEvent>;
|
|
8907
9437
|
|
|
8908
9438
|
export type HelixHeadlessSelectVueProps = {
|
|
8909
9439
|
/** The text shown when no options match the filter. */
|
|
@@ -8958,9 +9488,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
8958
9488
|
a reset should return to. */
|
|
8959
9489
|
value?: (HelixHeadlessSelect["value"]) | undefined;
|
|
8960
9490
|
/** */
|
|
8961
|
-
"aria-label"?:
|
|
8962
|
-
/** */
|
|
8963
|
-
namedBy?: (HelixHeadlessSelect["namedBy"]) | undefined;
|
|
9491
|
+
"aria-label"?: unknown;
|
|
8964
9492
|
/** The validation message shown under the control. It replaces the
|
|
8965
9493
|
browser's message. */
|
|
8966
9494
|
feedback?: (HelixHeadlessSelect["feedback"]) | undefined;
|
|
@@ -9033,13 +9561,21 @@ export type HelixHeadlessSelectVueEvents = {
|
|
|
9033
9561
|
"helix-before-close": HelixHeadlessSelectHelixBeforeCloseElementEvent;
|
|
9034
9562
|
/** Fired before the list opens. Cancelable: canceling it keeps the list closed and leaves the decision to you. */
|
|
9035
9563
|
"helix-before-open": HelixHeadlessSelectHelixBeforeOpenElementEvent;
|
|
9564
|
+
/** Fired as the user types in the filter field of a `filterable` select, with the text the list is filtered by. Cancelable: cancel it to leave the list unfiltered and filter the options yourself. */
|
|
9565
|
+
"helix-filter": HelixHeadlessSelectHelixFilterElementEvent;
|
|
9036
9566
|
/** Fired after the value changes. */
|
|
9037
9567
|
input: HelixHeadlessSelectElementEvent;
|
|
9038
9568
|
/** Fired after the list opens or closes, with `newState` and `oldState`. */
|
|
9039
|
-
toggle:
|
|
9569
|
+
toggle: HelixHeadlessSelectToggleElementEvent;
|
|
9040
9570
|
};
|
|
9041
9571
|
|
|
9042
|
-
export type HelixHeadlessSkeletonVueProps = {
|
|
9572
|
+
export type HelixHeadlessSkeletonVueProps = {
|
|
9573
|
+
/** What is loading, read out as the placeholder's name, such as "Loading
|
|
9574
|
+
profile".
|
|
9575
|
+
|
|
9576
|
+
Absent hides the placeholder from screen readers. */
|
|
9577
|
+
label?: (HelixHeadlessSkeleton["label"]) | undefined;
|
|
9578
|
+
};
|
|
9043
9579
|
|
|
9044
9580
|
export type HelixHeadlessSkeletonVueEvents = {};
|
|
9045
9581
|
|
|
@@ -9135,6 +9671,12 @@ the two, since a range has no single number. */
|
|
|
9135
9671
|
showValue?: (HelixHeadlessSlider["showValue"]) | undefined;
|
|
9136
9672
|
/** How far one press of an arrow key moves the thumb. */
|
|
9137
9673
|
step?: (HelixHeadlessSlider["step"]) | undefined;
|
|
9674
|
+
/** What a screen reader says for a thumb's value, with `{value}` filled in,
|
|
9675
|
+
such as `{value} degrees`. Empty announces the number alone. */
|
|
9676
|
+
"value-text"?: (HelixHeadlessSlider["valueText"]) | undefined;
|
|
9677
|
+
/** What a screen reader says for a thumb's value, with `{value}` filled in,
|
|
9678
|
+
such as `{value} degrees`. Empty announces the number alone. */
|
|
9679
|
+
valueText?: (HelixHeadlessSlider["valueText"]) | undefined;
|
|
9138
9680
|
/** The value the control starts with. A form reset returns it to this value. */
|
|
9139
9681
|
"default-value"?: (HelixHeadlessSlider["defaultValue"]) | undefined;
|
|
9140
9682
|
/** The value the control starts with. A form reset returns it to this value. */
|
|
@@ -9147,9 +9689,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
9147
9689
|
a reset should return to. */
|
|
9148
9690
|
value?: (HelixHeadlessSlider["value"]) | undefined;
|
|
9149
9691
|
/** */
|
|
9150
|
-
"aria-label"?:
|
|
9151
|
-
/** */
|
|
9152
|
-
namedBy?: (HelixHeadlessSlider["namedBy"]) | undefined;
|
|
9692
|
+
"aria-label"?: unknown;
|
|
9153
9693
|
/** The validation message shown under the control. It replaces the
|
|
9154
9694
|
browser's message. */
|
|
9155
9695
|
feedback?: (HelixHeadlessSlider["feedback"]) | undefined;
|
|
@@ -9261,8 +9801,8 @@ than announced without a name. */
|
|
|
9261
9801
|
label?: (HelixHeadlessSparkline["label"]) | undefined;
|
|
9262
9802
|
/** What the readings are drawn as.
|
|
9263
9803
|
|
|
9264
|
-
Absent is
|
|
9265
|
-
`bar` is a column per reading.
|
|
9804
|
+
Absent is `area`, a line with the region beneath it washed. `line` is the
|
|
9805
|
+
bare stroke, and `bar` is a column per reading.
|
|
9266
9806
|
|
|
9267
9807
|
**A bar plot measures from zero and the other two measure from the data's
|
|
9268
9808
|
own range**, which is the one way the plots are not interchangeable. A line
|
|
@@ -9289,10 +9829,10 @@ is markup, the same reason `curve` lives here. */
|
|
|
9289
9829
|
plot?: (HelixHeadlessSparkline["plot"]) | undefined;
|
|
9290
9830
|
/** The numbers, separated by whitespace or by commas.
|
|
9291
9831
|
|
|
9292
|
-
|
|
9293
|
-
|
|
9294
|
-
|
|
9295
|
-
|
|
9832
|
+
An array assigned to the property works too, which is what React 19 does
|
|
9833
|
+
with `values={[1240, 1318]}`. The attribute is the form to prefer, because
|
|
9834
|
+
a string is what survives React's hydration where an array property does
|
|
9835
|
+
not. */
|
|
9296
9836
|
values?: (HelixHeadlessSparkline["values"]) | undefined;
|
|
9297
9837
|
};
|
|
9298
9838
|
|
|
@@ -9333,6 +9873,9 @@ export type HelixHeadlessSpeedDialHelixBeforeOpenElementEvent =
|
|
|
9333
9873
|
/** `helix-select` event type */
|
|
9334
9874
|
export type HelixHeadlessSpeedDialHelixSelectElementEvent =
|
|
9335
9875
|
HelixHeadlessSpeedDialElementEvent<HelixSelectEvent>;
|
|
9876
|
+
/** `toggle` event type */
|
|
9877
|
+
export type HelixHeadlessSpeedDialToggleElementEvent =
|
|
9878
|
+
HelixHeadlessSpeedDialElementEvent<ToggleEvent>;
|
|
9336
9879
|
|
|
9337
9880
|
export type HelixHeadlessSpeedDialVueProps = {
|
|
9338
9881
|
/** Accessible name for the trigger and the set of actions it opens. */
|
|
@@ -9372,7 +9915,7 @@ export type HelixHeadlessSpeedDialVueEvents = {
|
|
|
9372
9915
|
/** An action was chosen. The action sends the event, and the dial closes after it. Cancelable: cancel it to keep the dial open. */
|
|
9373
9916
|
"helix-select": HelixHeadlessSpeedDialHelixSelectElementEvent;
|
|
9374
9917
|
/** The dial opened or closed. The event carries `newState` and `oldState`. */
|
|
9375
|
-
toggle:
|
|
9918
|
+
toggle: HelixHeadlessSpeedDialToggleElementEvent;
|
|
9376
9919
|
};
|
|
9377
9920
|
|
|
9378
9921
|
/** `HelixHeadlessSplitter` component event */
|
|
@@ -9386,6 +9929,12 @@ export type HelixHeadlessSplitterHelixBeforeCollapseElementEvent =
|
|
|
9386
9929
|
/** `helix-before-resize` event type */
|
|
9387
9930
|
export type HelixHeadlessSplitterHelixBeforeResizeElementEvent =
|
|
9388
9931
|
HelixHeadlessSplitterElementEvent<HelixBeforeResizeEvent>;
|
|
9932
|
+
/** `helix-collapse` event type */
|
|
9933
|
+
export type HelixHeadlessSplitterHelixCollapseElementEvent =
|
|
9934
|
+
HelixHeadlessSplitterElementEvent<HelixCollapseEvent>;
|
|
9935
|
+
/** `helix-resized` event type */
|
|
9936
|
+
export type HelixHeadlessSplitterHelixResizedElementEvent =
|
|
9937
|
+
HelixHeadlessSplitterElementEvent<HelixResizedEvent>;
|
|
9389
9938
|
|
|
9390
9939
|
export type HelixHeadlessSplitterVueProps = {
|
|
9391
9940
|
/** Which pane is shut, if either.
|
|
@@ -9440,7 +9989,10 @@ consumer's to set. */
|
|
|
9440
9989
|
"default-position"?: (HelixHeadlessSplitter["defaultPosition"] | `${number}`) | undefined;
|
|
9441
9990
|
/** Where the divider starts, when `position` is not set. */
|
|
9442
9991
|
defaultPosition?: (HelixHeadlessSplitter["defaultPosition"]) | undefined;
|
|
9443
|
-
/** The divider's name, read by screen readers.
|
|
9992
|
+
/** The divider's name, read by screen readers.
|
|
9993
|
+
|
|
9994
|
+
An `aria-label` or `aria-labelledby` on the host names the divider too,
|
|
9995
|
+
and wins over this. */
|
|
9444
9996
|
label?: (HelixHeadlessSplitter["label"]) | undefined;
|
|
9445
9997
|
/** How close the divider can come to the end, in the same units as `min`. */
|
|
9446
9998
|
max?: (HelixHeadlessSplitter["max"]) | undefined;
|
|
@@ -9502,6 +10054,10 @@ export type HelixHeadlessSplitterVueEvents = {
|
|
|
9502
10054
|
"helix-before-collapse": HelixHeadlessSplitterHelixBeforeCollapseElementEvent;
|
|
9503
10055
|
/** Fired before the divider settles, and only when the gesture moved it. A press that moved nothing, a drag that came back, an arrow key with no room left, and a corner that moved only the other divider do not fire it. Cancelable: canceling it leaves the position to you and keeps the rest of the gesture, so a collapse the gesture reached still fires `helix-before-collapse`, which you can also cancel. A dragged divider stays where it was dropped until you set your own `position`. */
|
|
9504
10056
|
"helix-before-resize": HelixHeadlessSplitterHelixBeforeResizeElementEvent;
|
|
10057
|
+
/** Fired after a pane shuts or reopens, with the side that is shut, or empty where both are open. */
|
|
10058
|
+
"helix-collapse": HelixHeadlessSplitterHelixCollapseElementEvent;
|
|
10059
|
+
/** Fired after the divider settles somewhere new, with the new position. */
|
|
10060
|
+
"helix-resized": HelixHeadlessSplitterHelixResizedElementEvent;
|
|
9505
10061
|
};
|
|
9506
10062
|
|
|
9507
10063
|
export type HelixHeadlessStatGroupVueProps = {
|
|
@@ -9526,6 +10082,11 @@ A property rather than a `Flex` around it, because the unit has to stay on
|
|
|
9526
10082
|
the value's baseline whichever way the pair goes, and only this element
|
|
9527
10083
|
knows which of its children the unit belongs to.
|
|
9528
10084
|
|
|
10085
|
+
**`Trend` has a `direction` too, and there it means which way a number
|
|
10086
|
+
moved:** `up`, `down` or `neutral`. A Stat and a Trend are often written
|
|
10087
|
+
side by side, so watch for the mix-up. On a Stat those three words are not
|
|
10088
|
+
layouts, and the pair stays the column.
|
|
10089
|
+
|
|
9529
10090
|
**Optional rather than defaulted to `column`, which is not a style
|
|
9530
10091
|
preference.** A reflecting property with a default writes its attribute onto
|
|
9531
10092
|
the host the moment the element upgrades, and the host is markup the
|
|
@@ -9661,9 +10222,7 @@ stylesheets. */
|
|
|
9661
10222
|
/** Whether the control starts checked. A form reset returns it to this state. */
|
|
9662
10223
|
defaultChecked?: (HelixHeadlessSwitch["defaultChecked"]) | undefined;
|
|
9663
10224
|
/** */
|
|
9664
|
-
"aria-label"?:
|
|
9665
|
-
/** */
|
|
9666
|
-
namedBy?: (HelixHeadlessSwitch["namedBy"]) | undefined;
|
|
10225
|
+
"aria-label"?: unknown;
|
|
9667
10226
|
/** The validation message shown under the control. It replaces the
|
|
9668
10227
|
browser's message. */
|
|
9669
10228
|
feedback?: (HelixHeadlessSwitch["feedback"]) | undefined;
|
|
@@ -9730,7 +10289,8 @@ export type HelixHeadlessSwitchVueEvents = {
|
|
|
9730
10289
|
};
|
|
9731
10290
|
|
|
9732
10291
|
export type HelixHeadlessTableCellVueProps = {
|
|
9733
|
-
/** Whether the cell is
|
|
10292
|
+
/** Whether the cell is a header: of its row in a row of values, and of its
|
|
10293
|
+
column in a row of headers alone. */
|
|
9734
10294
|
header?: (HelixHeadlessTableCell["header"]) | undefined;
|
|
9735
10295
|
};
|
|
9736
10296
|
|
|
@@ -9914,7 +10474,20 @@ export type HelixHeadlessTableColumnVueEvents = {
|
|
|
9914
10474
|
"helix-before-resize": HelixHeadlessTableColumnHelixBeforeResizeElementEvent;
|
|
9915
10475
|
};
|
|
9916
10476
|
|
|
10477
|
+
/** `HelixHeadlessTable` component event */
|
|
10478
|
+
export type HelixHeadlessTableElementEvent<E = Event> = TypedEvent<
|
|
10479
|
+
HelixHeadlessTable,
|
|
10480
|
+
E
|
|
10481
|
+
>;
|
|
10482
|
+
/** `helix-sort` event type */
|
|
10483
|
+
export type HelixHeadlessTableHelixSortElementEvent =
|
|
10484
|
+
HelixHeadlessTableElementEvent<HelixSortEvent>;
|
|
10485
|
+
|
|
9917
10486
|
export type HelixHeadlessTableVueProps = {
|
|
10487
|
+
/** The word for an ascending sort, in `sorted-label`. */
|
|
10488
|
+
"ascending-label"?: (HelixHeadlessTable["ascendingLabel"]) | undefined;
|
|
10489
|
+
/** The word for an ascending sort, in `sorted-label`. */
|
|
10490
|
+
ascendingLabel?: (HelixHeadlessTable["ascendingLabel"]) | undefined;
|
|
9918
10491
|
/** The column widths as one track list, written once on the table.
|
|
9919
10492
|
|
|
9920
10493
|
With `TableColumn` children, each track sizes the column in its place, a
|
|
@@ -9944,8 +10517,37 @@ and a list here would be a second way to say what that says. This table's
|
|
|
9944
10517
|
cells are markup, and a table written as rows of cells with no column
|
|
9945
10518
|
declared in it has nowhere else to be sized from. */
|
|
9946
10519
|
columns?: (HelixHeadlessTable["columns"]) | undefined;
|
|
9947
|
-
/**
|
|
10520
|
+
/** The starting sort order, used until `sort` is set. */
|
|
10521
|
+
"default-sort"?: (HelixHeadlessTable["defaultSort"]) | undefined;
|
|
10522
|
+
/** The starting sort order, used until `sort` is set. */
|
|
10523
|
+
defaultSort?: (HelixHeadlessTable["defaultSort"]) | undefined;
|
|
10524
|
+
/** The word for a descending sort, in `sorted-label`. */
|
|
10525
|
+
"descending-label"?: (HelixHeadlessTable["descendingLabel"]) | undefined;
|
|
10526
|
+
/** The word for a descending sort, in `sorted-label`. */
|
|
10527
|
+
descendingLabel?: (HelixHeadlessTable["descendingLabel"]) | undefined;
|
|
10528
|
+
/** Accessible name for the table.
|
|
10529
|
+
|
|
10530
|
+
An `aria-label` or `aria-labelledby` on the host names the table too, and
|
|
10531
|
+
wins over this. */
|
|
9948
10532
|
label?: (HelixHeadlessTable["label"]) | undefined;
|
|
10533
|
+
/** The sort order, as `field:direction`, where `field` is a sortable column's
|
|
10534
|
+
`field`.
|
|
10535
|
+
|
|
10536
|
+
The rows are compared by the text of their cells in that column, numbers by
|
|
10537
|
+
their value. A reader's click on a sortable heading fires `helix-sort`
|
|
10538
|
+
first, and refusing it leaves the order as it was. `default-sort` seeds an
|
|
10539
|
+
order this element then owns. */
|
|
10540
|
+
sort?: (HelixHeadlessTable["sort"]) | undefined;
|
|
10541
|
+
/** What screen readers hear when the table is sorted. `{column}` is the
|
|
10542
|
+
column's heading and `{order}` is `ascending-label` or `descending-label`. */
|
|
10543
|
+
"sorted-label"?: (HelixHeadlessTable["sortedLabel"]) | undefined;
|
|
10544
|
+
/** What screen readers hear when the table is sorted. `{column}` is the
|
|
10545
|
+
column's heading and `{order}` is `ascending-label` or `descending-label`. */
|
|
10546
|
+
sortedLabel?: (HelixHeadlessTable["sortedLabel"]) | undefined;
|
|
10547
|
+
/** What screen readers hear when the table stops being sorted. */
|
|
10548
|
+
"unsorted-label"?: (HelixHeadlessTable["unsortedLabel"]) | undefined;
|
|
10549
|
+
/** What screen readers hear when the table stops being sorted. */
|
|
10550
|
+
unsortedLabel?: (HelixHeadlessTable["unsortedLabel"]) | undefined;
|
|
9949
10551
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
9950
10552
|
"empty-text"?: (HelixHeadlessTable["emptyText"]) | undefined;
|
|
9951
10553
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
@@ -9962,7 +10564,10 @@ say that without the component knowing what a row looks like. */
|
|
|
9962
10564
|
loadingText?: (HelixHeadlessTable["loadingText"]) | undefined;
|
|
9963
10565
|
};
|
|
9964
10566
|
|
|
9965
|
-
export type HelixHeadlessTableVueEvents = {
|
|
10567
|
+
export type HelixHeadlessTableVueEvents = {
|
|
10568
|
+
/** A different sort order was requested, as `field:direction`, or empty for the order the rows were written in. Cancelable: cancel it to keep the current order. */
|
|
10569
|
+
"helix-sort": HelixHeadlessTableHelixSortElementEvent;
|
|
10570
|
+
};
|
|
9966
10571
|
|
|
9967
10572
|
export type HelixHeadlessTableRowVueProps = {};
|
|
9968
10573
|
|
|
@@ -10005,7 +10610,10 @@ export type HelixHeadlessTabsHelixSelectElementEvent =
|
|
|
10005
10610
|
HelixHeadlessTabsElementEvent<HelixSelectEvent>;
|
|
10006
10611
|
|
|
10007
10612
|
export type HelixHeadlessTabsVueProps = {
|
|
10008
|
-
/** The tab list's name, read by screen readers.
|
|
10613
|
+
/** The tab list's name, read by screen readers.
|
|
10614
|
+
|
|
10615
|
+
An `aria-label` or `aria-labelledby` on the host names the tab list too,
|
|
10616
|
+
and wins over this. */
|
|
10009
10617
|
label?: (HelixHeadlessTabs["label"]) | undefined;
|
|
10010
10618
|
/** Stops the arrow keys from selecting each tab they move to. By default,
|
|
10011
10619
|
arrowing to a tab also selects it.
|
|
@@ -10216,9 +10824,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
10216
10824
|
a reset should return to. */
|
|
10217
10825
|
value?: (HelixHeadlessTextarea["value"]) | undefined;
|
|
10218
10826
|
/** */
|
|
10219
|
-
"aria-label"?:
|
|
10220
|
-
/** */
|
|
10221
|
-
namedBy?: (HelixHeadlessTextarea["namedBy"]) | undefined;
|
|
10827
|
+
"aria-label"?: unknown;
|
|
10222
10828
|
/** The validation message shown under the control. It replaces the
|
|
10223
10829
|
browser's message. */
|
|
10224
10830
|
feedback?: (HelixHeadlessTextarea["feedback"]) | undefined;
|
|
@@ -10314,6 +10920,9 @@ export type HelixHeadlessTimeInputHelixBeforeCloseElementEvent =
|
|
|
10314
10920
|
/** `helix-before-open` event type */
|
|
10315
10921
|
export type HelixHeadlessTimeInputHelixBeforeOpenElementEvent =
|
|
10316
10922
|
HelixHeadlessTimeInputElementEvent<HelixBeforeOpenEvent>;
|
|
10923
|
+
/** `toggle` event type */
|
|
10924
|
+
export type HelixHeadlessTimeInputToggleElementEvent =
|
|
10925
|
+
HelixHeadlessTimeInputElementEvent<ToggleEvent>;
|
|
10317
10926
|
|
|
10318
10927
|
export type HelixHeadlessTimeInputVueProps = {
|
|
10319
10928
|
/** What the browser may autofill here, as one of the platform's own tokens.
|
|
@@ -10321,6 +10930,16 @@ export type HelixHeadlessTimeInputVueProps = {
|
|
|
10321
10930
|
Empty leaves the attribute off, which is the browser's default and is what
|
|
10322
10931
|
lets autofill work at all. */
|
|
10323
10932
|
autocomplete?: (HelixHeadlessTimeInput["autocomplete"]) | undefined;
|
|
10933
|
+
/** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
|
|
10934
|
+
|
|
10935
|
+
Handed to the list, which offers them as unavailable, and checked against
|
|
10936
|
+
a typed time, which is then invalid. */
|
|
10937
|
+
"disable-times"?: (HelixHeadlessTimeInput["disableTimes"]) | undefined;
|
|
10938
|
+
/** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
|
|
10939
|
+
|
|
10940
|
+
Handed to the list, which offers them as unavailable, and checked against
|
|
10941
|
+
a typed time, which is then invalid. */
|
|
10942
|
+
disableTimes?: (HelixHeadlessTimeInput["disableTimes"]) | undefined;
|
|
10324
10943
|
/** Language tag the times are written in.
|
|
10325
10944
|
|
|
10326
10945
|
Absent uses the runtime's own. */
|
|
@@ -10394,6 +11013,10 @@ never something this element would refuse to read back. */
|
|
|
10394
11013
|
"trigger-label"?: (HelixHeadlessTimeInput["triggerLabel"]) | undefined;
|
|
10395
11014
|
/** The name of the button that opens the list, read by screen readers. */
|
|
10396
11015
|
triggerLabel?: (HelixHeadlessTimeInput["triggerLabel"]) | undefined;
|
|
11016
|
+
/** The message shown when `disable-times` bars a time. */
|
|
11017
|
+
"unavailable-message"?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
|
|
11018
|
+
/** The message shown when `disable-times` bars a time. */
|
|
11019
|
+
unavailableMessage?: (HelixHeadlessTimeInput["unavailableMessage"]) | undefined;
|
|
10397
11020
|
/** Whether the panel shows one list of times or a column for each part of the
|
|
10398
11021
|
time.
|
|
10399
11022
|
|
|
@@ -10494,9 +11117,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
10494
11117
|
a reset should return to. */
|
|
10495
11118
|
value?: (HelixHeadlessTimeInput["value"]) | undefined;
|
|
10496
11119
|
/** */
|
|
10497
|
-
"aria-label"?:
|
|
10498
|
-
/** */
|
|
10499
|
-
namedBy?: (HelixHeadlessTimeInput["namedBy"]) | undefined;
|
|
11120
|
+
"aria-label"?: unknown;
|
|
10500
11121
|
/** The validation message shown under the control. It replaces the
|
|
10501
11122
|
browser's message. */
|
|
10502
11123
|
feedback?: (HelixHeadlessTimeInput["feedback"]) | undefined;
|
|
@@ -10576,7 +11197,7 @@ export type HelixHeadlessTimeInputVueEvents = {
|
|
|
10576
11197
|
/** Fired after the value changes. */
|
|
10577
11198
|
input: HelixHeadlessTimeInputElementEvent;
|
|
10578
11199
|
/** Fired after the list opens or closes, with `newState` and `oldState`. */
|
|
10579
|
-
toggle:
|
|
11200
|
+
toggle: HelixHeadlessTimeInputToggleElementEvent;
|
|
10580
11201
|
};
|
|
10581
11202
|
|
|
10582
11203
|
/** `HelixHeadlessTimePicker` component event */
|
|
@@ -10601,7 +11222,7 @@ speaks it. Absent is the control's own sentence, in English. */
|
|
|
10601
11222
|
named for the validity flag it reports, so a form in another language
|
|
10602
11223
|
speaks it. Absent is the control's own sentence, in English. */
|
|
10603
11224
|
badInputMessage?: (HelixHeadlessTimePicker["badInputMessage"]) | undefined;
|
|
10604
|
-
/** Times that cannot be chosen,
|
|
11225
|
+
/** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
|
|
10605
11226
|
|
|
10606
11227
|
The counterpart to Date Picker's `disable-dates`, and it exists for the same
|
|
10607
11228
|
shape of problem: `min` and `max` take away a span, and what a booking
|
|
@@ -10612,7 +11233,7 @@ A time not on the step is simply never offered, so it is not an error to
|
|
|
10612
11233
|
name one, and naming every time in the list is how the empty state is
|
|
10613
11234
|
reached honestly rather than by handing over an empty range. */
|
|
10614
11235
|
"disable-times"?: (HelixHeadlessTimePicker["disableTimes"]) | undefined;
|
|
10615
|
-
/** Times that cannot be chosen,
|
|
11236
|
+
/** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
|
|
10616
11237
|
|
|
10617
11238
|
The counterpart to Date Picker's `disable-dates`, and it exists for the same
|
|
10618
11239
|
shape of problem: `min` and `max` take away a span, and what a booking
|
|
@@ -10623,6 +11244,10 @@ A time not on the step is simply never offered, so it is not an error to
|
|
|
10623
11244
|
name one, and naming every time in the list is how the empty state is
|
|
10624
11245
|
reached honestly rather than by handing over an empty range. */
|
|
10625
11246
|
disableTimes?: (HelixHeadlessTimePicker["disableTimes"]) | undefined;
|
|
11247
|
+
/** What the wheel of hours is called, read by screen readers. */
|
|
11248
|
+
"hour-label"?: (HelixHeadlessTimePicker["hourLabel"]) | undefined;
|
|
11249
|
+
/** What the wheel of hours is called, read by screen readers. */
|
|
11250
|
+
hourLabel?: (HelixHeadlessTimePicker["hourLabel"]) | undefined;
|
|
10626
11251
|
/** Whether the current selection fails validation.
|
|
10627
11252
|
|
|
10628
11253
|
A flag rather than a message, the same split Date Picker draws. A flat
|
|
@@ -10631,16 +11256,34 @@ the label, the hint and the feedback, and a second message inside the panel
|
|
|
10631
11256
|
would be the same error said twice. What is left for the picker is the one
|
|
10632
11257
|
thing the field cannot draw from outside, the mark on the answer itself. */
|
|
10633
11258
|
invalid?: (HelixHeadlessTimePicker["invalid"]) | undefined;
|
|
10634
|
-
/** Accessible name for the list, which has no visible one of its own.
|
|
11259
|
+
/** Accessible name for the list, which has no visible one of its own.
|
|
11260
|
+
|
|
11261
|
+
An `aria-label` or `aria-labelledby` on the host names the list instead. */
|
|
10635
11262
|
label?: (HelixHeadlessTimePicker["label"]) | undefined;
|
|
10636
11263
|
/** Language tag the times are written in.
|
|
10637
11264
|
|
|
10638
11265
|
Absent uses the runtime's own. */
|
|
10639
11266
|
locale?: (HelixHeadlessTimePicker["locale"]) | undefined;
|
|
11267
|
+
/** Stops the arrow keys in the list from choosing each time they move to.
|
|
11268
|
+
Enter, Space or a click chooses.
|
|
11269
|
+
|
|
11270
|
+
Time Input sets it, so a reader moves through the list before the panel
|
|
11271
|
+
closes on a time. */
|
|
11272
|
+
manual?: (HelixHeadlessTimePicker["manual"]) | undefined;
|
|
10640
11273
|
/** Latest time offered, as `HH:mm`. */
|
|
10641
11274
|
max?: (HelixHeadlessTimePicker["max"]) | undefined;
|
|
11275
|
+
/** What the wheel of the half of the day is called, read by screen readers.
|
|
11276
|
+
Its two options are written as the locale writes them, such as AM and PM. */
|
|
11277
|
+
"meridiem-label"?: (HelixHeadlessTimePicker["meridiemLabel"]) | undefined;
|
|
11278
|
+
/** What the wheel of the half of the day is called, read by screen readers.
|
|
11279
|
+
Its two options are written as the locale writes them, such as AM and PM. */
|
|
11280
|
+
meridiemLabel?: (HelixHeadlessTimePicker["meridiemLabel"]) | undefined;
|
|
10642
11281
|
/** Earliest time offered, as `HH:mm`. */
|
|
10643
11282
|
min?: (HelixHeadlessTimePicker["min"]) | undefined;
|
|
11283
|
+
/** What the wheel of minutes is called, read by screen readers. */
|
|
11284
|
+
"minute-label"?: (HelixHeadlessTimePicker["minuteLabel"]) | undefined;
|
|
11285
|
+
/** What the wheel of minutes is called, read by screen readers. */
|
|
11286
|
+
minuteLabel?: (HelixHeadlessTimePicker["minuteLabel"]) | undefined;
|
|
10644
11287
|
/** How many times can be held at once.
|
|
10645
11288
|
|
|
10646
11289
|
Absent is one. `range` holds a start and an end with everything between
|
|
@@ -10659,6 +11302,18 @@ and a wheel has exactly one value by construction. Rather than draw
|
|
|
10659
11302
|
something that cannot say what it holds, `wheels` renders as a list
|
|
10660
11303
|
whenever a mode is set. */
|
|
10661
11304
|
mode?: (HelixHeadlessTimePicker["mode"]) | undefined;
|
|
11305
|
+
/** The validation message for a time after `max`. `{max}` is replaced with
|
|
11306
|
+
`max`, written in `locale`. */
|
|
11307
|
+
"range-overflow-message"?: (HelixHeadlessTimePicker["rangeOverflowMessage"]) | undefined;
|
|
11308
|
+
/** The validation message for a time after `max`. `{max}` is replaced with
|
|
11309
|
+
`max`, written in `locale`. */
|
|
11310
|
+
rangeOverflowMessage?: (HelixHeadlessTimePicker["rangeOverflowMessage"]) | undefined;
|
|
11311
|
+
/** The validation message for a time before `min`. `{min}` is replaced with
|
|
11312
|
+
`min`, written in `locale`. */
|
|
11313
|
+
"range-underflow-message"?: (HelixHeadlessTimePicker["rangeUnderflowMessage"]) | undefined;
|
|
11314
|
+
/** The validation message for a time before `min`. `{min}` is replaced with
|
|
11315
|
+
`min`, written in `locale`. */
|
|
11316
|
+
rangeUnderflowMessage?: (HelixHeadlessTimePicker["rangeUnderflowMessage"]) | undefined;
|
|
10662
11317
|
/** Blocks changes to the time. The value is still submitted with the form.
|
|
10663
11318
|
|
|
10664
11319
|
**Enforced by refusing every request in one place**, which is the seam this
|
|
@@ -10691,6 +11346,14 @@ Fifteen, which is four rows an hour and ninety-six in a day: enough that a
|
|
|
10691
11346
|
reader scrolls rather than hunts, and few enough that the list is a list.
|
|
10692
11347
|
Anything under five is a thousand rows and wants a field instead. */
|
|
10693
11348
|
step?: (HelixHeadlessTimePicker["step"]) | undefined;
|
|
11349
|
+
/** The validation message for a time that `step` skips. */
|
|
11350
|
+
"step-mismatch-message"?: (HelixHeadlessTimePicker["stepMismatchMessage"]) | undefined;
|
|
11351
|
+
/** The validation message for a time that `step` skips. */
|
|
11352
|
+
stepMismatchMessage?: (HelixHeadlessTimePicker["stepMismatchMessage"]) | undefined;
|
|
11353
|
+
/** The validation message for a time that `disable-times` bars. */
|
|
11354
|
+
"unavailable-message"?: (HelixHeadlessTimePicker["unavailableMessage"]) | undefined;
|
|
11355
|
+
/** The validation message for a time that `disable-times` bars. */
|
|
11356
|
+
unavailableMessage?: (HelixHeadlessTimePicker["unavailableMessage"]) | undefined;
|
|
10694
11357
|
/** The validation message for a required time picker with no time chosen. */
|
|
10695
11358
|
"value-missing-message"?: (HelixHeadlessTimePicker["valueMissingMessage"]) | undefined;
|
|
10696
11359
|
/** The validation message for a required time picker with no time chosen. */
|
|
@@ -10954,9 +11617,7 @@ same statement in markup, and `default-value` is how markup seeds a value
|
|
|
10954
11617
|
a reset should return to. */
|
|
10955
11618
|
value?: (HelixHeadlessToggleGroup["value"]) | undefined;
|
|
10956
11619
|
/** */
|
|
10957
|
-
"aria-label"?:
|
|
10958
|
-
/** */
|
|
10959
|
-
namedBy?: (HelixHeadlessToggleGroup["namedBy"]) | undefined;
|
|
11620
|
+
"aria-label"?: unknown;
|
|
10960
11621
|
/** The validation message shown under the control. It replaces the
|
|
10961
11622
|
browser's message. */
|
|
10962
11623
|
feedback?: (HelixHeadlessToggleGroup["feedback"]) | undefined;
|
|
@@ -11011,12 +11672,22 @@ imperatively later, and nothing is hydrating by then.
|
|
|
11011
11672
|
|
|
11012
11673
|
Here rather than on each control. */
|
|
11013
11674
|
name?: (HelixHeadlessToggleGroup["name"]) | undefined;
|
|
11675
|
+
/** Whether the group holds a tab stop of its own.
|
|
11676
|
+
|
|
11677
|
+
A toolbar is one tab stop, so a toolbar the group sits in sets this to
|
|
11678
|
+
`false` while its stop is on another control, and every item, the chosen
|
|
11679
|
+
one too, is then out of the tab order. The arrow keys inside the group
|
|
11680
|
+
work as before once focus is in it.
|
|
11681
|
+
|
|
11682
|
+
No attribute: it is coordination between elements, and a consumer has no
|
|
11683
|
+
reason to set it. */
|
|
11684
|
+
focusable?: (HelixHeadlessToggleGroup["focusable"]) | undefined;
|
|
11014
11685
|
};
|
|
11015
11686
|
|
|
11016
11687
|
export type HelixHeadlessToggleGroupVueEvents = {
|
|
11017
11688
|
/** Fired after the value changes. */
|
|
11018
11689
|
change: HelixHeadlessToggleGroupElementEvent;
|
|
11019
|
-
/** Fired before the choice changes. Cancelable: call `preventDefault()` to keep the current choice.
|
|
11690
|
+
/** Fired before the choice changes. Cancelable: call `preventDefault()` to keep the current choice. */
|
|
11020
11691
|
"helix-before-change": HelixHeadlessToggleGroupHelixBeforeChangeElementEvent;
|
|
11021
11692
|
/** Fired when an item is chosen. The item sends it, and you listen for it on the group. Cancelable: call `preventDefault()` to keep the current choice. */
|
|
11022
11693
|
"helix-select": HelixHeadlessToggleGroupHelixSelectElementEvent;
|
|
@@ -11071,13 +11742,15 @@ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
|
|
|
11071
11742
|
Splitting them means moving what every stylesheet selects on, which is a
|
|
11072
11743
|
change of its own rather than a property being added. */
|
|
11073
11744
|
defaultSelected?: (HelixHeadlessToggle["defaultSelected"]) | undefined;
|
|
11074
|
-
/** Whether the item holds the group's tab stop
|
|
11745
|
+
/** Whether the item holds the group's tab stop. Unset, the chosen item holds
|
|
11746
|
+
it.
|
|
11075
11747
|
|
|
11076
|
-
|
|
11077
|
-
|
|
11078
|
-
|
|
11079
|
-
|
|
11080
|
-
|
|
11748
|
+
Written by the group on every item: `true` for the chosen item, or for the
|
|
11749
|
+
first item that can be chosen while there is no selection to carry the
|
|
11750
|
+
stop, and `false` for every item, the chosen one too, while a toolbar the
|
|
11751
|
+
group sits in holds the stop. No attribute: it is coordination between
|
|
11752
|
+
elements, and `tabindex` on a host the consumer rendered is the change a
|
|
11753
|
+
React consumer's hydration reports and does not patch up. */
|
|
11081
11754
|
focusable?: (HelixHeadlessToggle["focusable"]) | undefined;
|
|
11082
11755
|
};
|
|
11083
11756
|
|
|
@@ -11087,7 +11760,10 @@ export type HelixHeadlessToggleVueEvents = {
|
|
|
11087
11760
|
};
|
|
11088
11761
|
|
|
11089
11762
|
export type HelixHeadlessToolbarVueProps = {
|
|
11090
|
-
/** The toolbar's name, read by screen readers.
|
|
11763
|
+
/** The toolbar's name, read by screen readers.
|
|
11764
|
+
|
|
11765
|
+
An `aria-label` or `aria-labelledby` on the host names the toolbar too,
|
|
11766
|
+
and wins over this. */
|
|
11091
11767
|
label?: (HelixHeadlessToolbar["label"]) | undefined;
|
|
11092
11768
|
/** The direction the arrow keys move focus in. */
|
|
11093
11769
|
orientation?: (HelixHeadlessToolbar["orientation"]) | undefined;
|
|
@@ -11106,6 +11782,9 @@ export type HelixHeadlessTooltipHelixBeforeCloseElementEvent =
|
|
|
11106
11782
|
/** `helix-before-open` event type */
|
|
11107
11783
|
export type HelixHeadlessTooltipHelixBeforeOpenElementEvent =
|
|
11108
11784
|
HelixHeadlessTooltipElementEvent<HelixBeforeOpenEvent>;
|
|
11785
|
+
/** `toggle` event type */
|
|
11786
|
+
export type HelixHeadlessTooltipToggleElementEvent =
|
|
11787
|
+
HelixHeadlessTooltipElementEvent<ToggleEvent>;
|
|
11109
11788
|
|
|
11110
11789
|
export type HelixHeadlessTooltipVueProps = {
|
|
11111
11790
|
/** The text shown in the bubble.
|
|
@@ -11212,7 +11891,7 @@ export type HelixHeadlessTooltipVueEvents = {
|
|
|
11212
11891
|
/** The bubble is about to show. Cancelable: cancel it to keep it hidden. */
|
|
11213
11892
|
"helix-before-open": HelixHeadlessTooltipHelixBeforeOpenElementEvent;
|
|
11214
11893
|
/** The bubble opened or closed. The event carries `newState` and `oldState`. */
|
|
11215
|
-
toggle:
|
|
11894
|
+
toggle: HelixHeadlessTooltipToggleElementEvent;
|
|
11216
11895
|
};
|
|
11217
11896
|
|
|
11218
11897
|
/** `HelixHeadlessTour` component event */
|
|
@@ -11220,18 +11899,27 @@ export type HelixHeadlessTourElementEvent<E = Event> = TypedEvent<
|
|
|
11220
11899
|
HelixHeadlessTour,
|
|
11221
11900
|
E
|
|
11222
11901
|
>;
|
|
11902
|
+
/** `helix-activate` event type */
|
|
11903
|
+
export type HelixHeadlessTourHelixActivateElementEvent =
|
|
11904
|
+
HelixHeadlessTourElementEvent<HelixActivateEvent>;
|
|
11223
11905
|
/** `helix-before-activate` event type */
|
|
11224
11906
|
export type HelixHeadlessTourHelixBeforeActivateElementEvent =
|
|
11225
11907
|
HelixHeadlessTourElementEvent<HelixBeforeActivateEvent>;
|
|
11226
11908
|
/** `helix-before-close` event type */
|
|
11227
11909
|
export type HelixHeadlessTourHelixBeforeCloseElementEvent =
|
|
11228
11910
|
HelixHeadlessTourElementEvent<HelixBeforeCloseEvent>;
|
|
11911
|
+
/** `helix-before-open` event type */
|
|
11912
|
+
export type HelixHeadlessTourHelixBeforeOpenElementEvent =
|
|
11913
|
+
HelixHeadlessTourElementEvent<HelixBeforeOpenEvent>;
|
|
11229
11914
|
/** `helix-complete` event type */
|
|
11230
11915
|
export type HelixHeadlessTourHelixCompleteElementEvent =
|
|
11231
11916
|
HelixHeadlessTourElementEvent<HelixCompleteEvent>;
|
|
11232
11917
|
/** `helix-tour-ask` event type */
|
|
11233
11918
|
export type HelixHeadlessTourHelixTourAskElementEvent =
|
|
11234
11919
|
HelixHeadlessTourElementEvent<HelixTourAskEvent>;
|
|
11920
|
+
/** `toggle` event type */
|
|
11921
|
+
export type HelixHeadlessTourToggleElementEvent =
|
|
11922
|
+
HelixHeadlessTourElementEvent<ToggleEvent>;
|
|
11235
11923
|
|
|
11236
11924
|
export type HelixHeadlessTourVueProps = {
|
|
11237
11925
|
/** Label for the control that goes back, passed to every stop. */
|
|
@@ -11263,8 +11951,6 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
|
|
|
11263
11951
|
"next-label"?: (HelixHeadlessTour["nextLabel"]) | undefined;
|
|
11264
11952
|
/** Label for the control that goes on. */
|
|
11265
11953
|
nextLabel?: (HelixHeadlessTour["nextLabel"]) | undefined;
|
|
11266
|
-
/** Whether the tour is running. */
|
|
11267
|
-
open?: (HelixHeadlessTour["open"]) | undefined;
|
|
11268
11954
|
/** Label for the control that leaves the tour. */
|
|
11269
11955
|
"skip-label"?: (HelixHeadlessTour["skipLabel"]) | undefined;
|
|
11270
11956
|
/** Label for the control that leaves the tour. */
|
|
@@ -11273,17 +11959,40 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
|
|
|
11273
11959
|
"spotlight-padding"?: (HelixHeadlessTour["spotlightPadding"] | `${number}`) | undefined;
|
|
11274
11960
|
/** The space around the target inside the spotlight, in pixels. */
|
|
11275
11961
|
spotlightPadding?: (HelixHeadlessTour["spotlightPadding"]) | undefined;
|
|
11962
|
+
/** Whether the element starts open. Ignored once `open` is written. */
|
|
11963
|
+
"default-open"?: (HelixHeadlessTour["defaultOpen"]) | undefined;
|
|
11964
|
+
/** Whether the element starts open. Ignored once `open` is written. */
|
|
11965
|
+
defaultOpen?: (HelixHeadlessTour["defaultOpen"]) | undefined;
|
|
11966
|
+
/** Whether the element is open.
|
|
11967
|
+
|
|
11968
|
+
One property, not two, so `dialog.open` answers the question anyone
|
|
11969
|
+
asking it meant. Writing always applies; `<helix-dialog open>` is the
|
|
11970
|
+
same statement in markup.
|
|
11971
|
+
|
|
11972
|
+
**Not reflected, and that is required rather than tidy.** Reflection
|
|
11973
|
+
writes the resolved state back as an attribute, so an element that opened
|
|
11974
|
+
itself would put `open` on its own host: cloned, serialized for
|
|
11975
|
+
hydration, or diffed by a framework, it comes back holding whatever the
|
|
11976
|
+
last reader did rather than what the author wrote. `:state(open)` carries
|
|
11977
|
+
the resolved state for stylesheets, which is what the mirror is for. */
|
|
11978
|
+
open?: (HelixHeadlessTour["open"]) | undefined;
|
|
11276
11979
|
};
|
|
11277
11980
|
|
|
11278
11981
|
export type HelixHeadlessTourVueEvents = {
|
|
11982
|
+
/** Fired after the current stop changes, with the new index. */
|
|
11983
|
+
"helix-activate": HelixHeadlessTourHelixActivateElementEvent;
|
|
11279
11984
|
/** Fired before the current stop changes, with the new index. Cancelable: call `preventDefault()` to stay on the current stop. */
|
|
11280
11985
|
"helix-before-activate": HelixHeadlessTourHelixBeforeActivateElementEvent;
|
|
11281
11986
|
/** Fired before the user ends the tour early. Cancelable: call `preventDefault()` to keep the tour open. */
|
|
11282
11987
|
"helix-before-close": HelixHeadlessTourHelixBeforeCloseElementEvent;
|
|
11988
|
+
/** Fired before `requestOpen(true)` starts the tour. Cancelable: call `preventDefault()` to keep it closed. */
|
|
11989
|
+
"helix-before-open": HelixHeadlessTourHelixBeforeOpenElementEvent;
|
|
11283
11990
|
/** Fired when the last stop is finished. */
|
|
11284
11991
|
"helix-complete": HelixHeadlessTourHelixCompleteElementEvent;
|
|
11285
11992
|
/** Fired when a stop's control is pressed to move the tour. The stop sends it, and the tour handles it. */
|
|
11286
11993
|
"helix-tour-ask": HelixHeadlessTourHelixTourAskElementEvent;
|
|
11994
|
+
/** Sent when the tour starts or ends, with `newState` and `oldState`. */
|
|
11995
|
+
toggle: HelixHeadlessTourToggleElementEvent;
|
|
11287
11996
|
};
|
|
11288
11997
|
|
|
11289
11998
|
/** `HelixHeadlessTourStop` component event */
|
|
@@ -11349,6 +12058,9 @@ export type HelixHeadlessTreeItemHelixBeforeOpenElementEvent =
|
|
|
11349
12058
|
/** `helix-select` event type */
|
|
11350
12059
|
export type HelixHeadlessTreeItemHelixSelectElementEvent =
|
|
11351
12060
|
HelixHeadlessTreeItemElementEvent<HelixSelectEvent>;
|
|
12061
|
+
/** `toggle` event type */
|
|
12062
|
+
export type HelixHeadlessTreeItemToggleElementEvent =
|
|
12063
|
+
HelixHeadlessTreeItemElementEvent<ToggleEvent>;
|
|
11352
12064
|
|
|
11353
12065
|
export type HelixHeadlessTreeItemVueProps = {
|
|
11354
12066
|
/** The URL this node links to. Setting it makes the row a link.
|
|
@@ -11427,7 +12139,7 @@ export type HelixHeadlessTreeItemVueEvents = {
|
|
|
11427
12139
|
/** Fired when the item is chosen, and cancelable. Canceling it changes nothing. */
|
|
11428
12140
|
"helix-select": HelixHeadlessTreeItemHelixSelectElementEvent;
|
|
11429
12141
|
/** Sent when the branch opens or closes, with `newState` and `oldState`. */
|
|
11430
|
-
toggle:
|
|
12142
|
+
toggle: HelixHeadlessTreeItemToggleElementEvent;
|
|
11431
12143
|
};
|
|
11432
12144
|
|
|
11433
12145
|
/** `HelixHeadlessTree` component event */
|
|
@@ -11446,7 +12158,10 @@ export type HelixHeadlessTreeHelixSelectElementEvent =
|
|
|
11446
12158
|
HelixHeadlessTreeElementEvent<HelixSelectEvent>;
|
|
11447
12159
|
|
|
11448
12160
|
export type HelixHeadlessTreeVueProps = {
|
|
11449
|
-
/** Accessible name for the tree.
|
|
12161
|
+
/** Accessible name for the tree.
|
|
12162
|
+
|
|
12163
|
+
An `aria-label` or `aria-labelledby` on the host names the tree too, and
|
|
12164
|
+
wins over this. */
|
|
11450
12165
|
label?: (HelixHeadlessTree["label"]) | undefined;
|
|
11451
12166
|
/** What a deeper level means: `peer` for no change, `subordinate` for a lower
|
|
11452
12167
|
rank, or `heading` for a parent that heads the items under it.
|
|
@@ -11526,6 +12241,10 @@ export type HelixHeadlessTreeVueEvents = {
|
|
|
11526
12241
|
};
|
|
11527
12242
|
|
|
11528
12243
|
export type HelixHeadlessTrendVueProps = {
|
|
12244
|
+
/** The word read out after the direction when the move is an improvement. */
|
|
12245
|
+
"better-label"?: (HelixHeadlessTrend["betterLabel"]) | undefined;
|
|
12246
|
+
/** The word read out after the direction when the move is an improvement. */
|
|
12247
|
+
betterLabel?: (HelixHeadlessTrend["betterLabel"]) | undefined;
|
|
11529
12248
|
/** Which way the measurement moved.
|
|
11530
12249
|
|
|
11531
12250
|
Absent is neutral, so a trend with nothing to report draws a bar rather
|
|
@@ -11535,6 +12254,10 @@ attribute onto the host the moment the element upgrades, and the host is
|
|
|
11535
12254
|
markup the consumer rendered, which React compares against what it rendered
|
|
11536
12255
|
and reports as a hydration mismatch. */
|
|
11537
12256
|
direction?: (HelixHeadlessTrend["direction"]) | undefined;
|
|
12257
|
+
/** The word read out for a move down. */
|
|
12258
|
+
"down-label"?: (HelixHeadlessTrend["downLabel"]) | undefined;
|
|
12259
|
+
/** The word read out for a move down. */
|
|
12260
|
+
downLabel?: (HelixHeadlessTrend["downLabel"]) | undefined;
|
|
11538
12261
|
/** Which direction counts as an improvement for this metric.
|
|
11539
12262
|
|
|
11540
12263
|
Absent states the movement without judging it, which is the honest default:
|
|
@@ -11542,6 +12265,20 @@ revenue up is good news and latency up is bad news, and only the consumer
|
|
|
11542
12265
|
knows which one this is. Set it once per metric and it holds while the
|
|
11543
12266
|
direction changes underneath. */
|
|
11544
12267
|
good?: (HelixHeadlessTrend["good"]) | undefined;
|
|
12268
|
+
/** The word read out for no move, or for a direction that is not one of the
|
|
12269
|
+
three. */
|
|
12270
|
+
"unchanged-label"?: (HelixHeadlessTrend["unchangedLabel"]) | undefined;
|
|
12271
|
+
/** The word read out for no move, or for a direction that is not one of the
|
|
12272
|
+
three. */
|
|
12273
|
+
unchangedLabel?: (HelixHeadlessTrend["unchangedLabel"]) | undefined;
|
|
12274
|
+
/** The word read out for a move up. */
|
|
12275
|
+
"up-label"?: (HelixHeadlessTrend["upLabel"]) | undefined;
|
|
12276
|
+
/** The word read out for a move up. */
|
|
12277
|
+
upLabel?: (HelixHeadlessTrend["upLabel"]) | undefined;
|
|
12278
|
+
/** The word read out after the direction when the move is a setback. */
|
|
12279
|
+
"worse-label"?: (HelixHeadlessTrend["worseLabel"]) | undefined;
|
|
12280
|
+
/** The word read out after the direction when the move is a setback. */
|
|
12281
|
+
worseLabel?: (HelixHeadlessTrend["worseLabel"]) | undefined;
|
|
11545
12282
|
};
|
|
11546
12283
|
|
|
11547
12284
|
export type HelixHeadlessTrendVueEvents = {};
|
|
@@ -12025,7 +12762,10 @@ right whenever the rows really are one height and is the cheaper of the two. */
|
|
|
12025
12762
|
/** The id of the script element that holds the rows as JSON. */
|
|
12026
12763
|
for?: (HelixHeadlessVirtualList["for"]) | undefined;
|
|
12027
12764
|
/** The list's name, read by screen readers, because only some of its rows
|
|
12028
|
-
are rendered at a time.
|
|
12765
|
+
are rendered at a time.
|
|
12766
|
+
|
|
12767
|
+
An `aria-label` or `aria-labelledby` on the host names the list too, and
|
|
12768
|
+
wins over this. */
|
|
12029
12769
|
label?: (HelixHeadlessVirtualList["label"]) | undefined;
|
|
12030
12770
|
/** Places rows by their measured height. Without it, every row is placed by
|
|
12031
12771
|
`estimate`.
|
|
@@ -12169,25 +12909,25 @@ export type CustomCssProperties = {
|
|
|
12169
12909
|
// Note: Some tooling expects this augmentation under "@vue/runtime-core", while
|
|
12170
12910
|
// other docs/examples use "vue". We emit both for compatibility.
|
|
12171
12911
|
export interface WcToolkitVueGlobalComponents {
|
|
12172
|
-
/** Holds its own open state. Used alone, outside an accordion, it works as a disclosure. Content stays mounted when the item is closed, so it can animate and its text is present in server-rendered HTML. Closed content has both 'hidden' and 'inert'. 'hidden' collapses it when no stylesheet is loaded. 'inert' keeps it out of the tab order and the accessibility tree after the styled tier's 'display' overrides 'hidden'. */
|
|
12912
|
+
/** Holds its own open state. Used alone, outside an accordion, it works as a disclosure. The trigger sits inside a heading, so a screen reader lists the section with the page's headings. The level is the item's 'heading-level', then the accordion's, then 3. Content stays mounted when the item is closed, so it can animate and its text is present in server-rendered HTML. Closed content has both 'hidden' and 'inert'. 'hidden' collapses it when no stylesheet is loaded. 'inert' keeps it out of the tab order and the accessibility tree after the styled tier's 'display' overrides 'hidden'. */
|
|
12173
12913
|
"helix-headless-accordion-item": DefineCustomElement<
|
|
12174
12914
|
HelixHeadlessAccordionItem,
|
|
12175
12915
|
HelixHeadlessAccordionItemVueProps,
|
|
12176
12916
|
HelixHeadlessAccordionItemVueEvents
|
|
12177
12917
|
>;
|
|
12178
|
-
/** Holds the mode. Each item coordinates itself: when you click an item, it finds the nearest accordion, reads the mode, and closes the other items. The accordion does not listen for items opening. 'helix-before-open' does not bubble and is not composed, because overlays nest and an inner overlay's events must stay separate from the outer one's. Items are found when they are clicked, so there is no registry to keep up to date. An item added after render coordinates on its first click. Items are matched with 'instanceof HelixHeadlessAccordionItem', so the headless tier does not depend on the styled tier's tag names. The keyboard listener belongs to the controller and is attached on connect, so it does not run on the server. */
|
|
12918
|
+
/** Holds the mode. Each item coordinates itself: when you click an item, it finds the nearest accordion, reads the mode, and closes the other items. The accordion does not listen for items opening. 'helix-before-open' does not bubble and is not composed, because overlays nest and an inner overlay's events must stay separate from the outer one's. Items are found when they are clicked, so there is no registry to keep up to date. An item added after render coordinates on its first click. Items are matched with 'instanceof HelixHeadlessAccordionItem', so the headless tier does not depend on the styled tier's tag names. The keyboard listener belongs to the controller and is attached on connect, so it does not run on the server. Each trigger sits inside a heading, level 3 unless 'heading-level' says otherwise, so the sections are in a screen reader's list of headings. Set the level that fits the page's outline. */
|
|
12179
12919
|
"helix-headless-accordion": DefineCustomElement<
|
|
12180
12920
|
HelixHeadlessAccordion,
|
|
12181
12921
|
HelixHeadlessAccordionVueProps,
|
|
12182
12922
|
HelixHeadlessAccordionVueEvents
|
|
12183
12923
|
>;
|
|
12184
|
-
/** 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. When the announcement is in the served HTML, the region
|
|
12924
|
+
/** 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, so the message is not in the page twice. 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. */
|
|
12185
12925
|
"helix-headless-announcement": DefineCustomElement<
|
|
12186
12926
|
HelixHeadlessAnnouncement,
|
|
12187
12927
|
HelixHeadlessAnnouncementVueProps,
|
|
12188
12928
|
HelixHeadlessAnnouncementVueEvents
|
|
12189
12929
|
>;
|
|
12190
|
-
/** Tracks whether the page has scrolled and sets the custom state 'scrolled', so the styled tier can lift the bar without a scroll handler of its own. The state is read when the element connects. A fresh load starts at the top, which matches the server markup, and a reload partway down the page is corrected on hydration. The element uses a custom state because an attribute such as 'data-scrolled', written onto its own host, is one the server did not send. A hydrating framework would report a mismatch whenever the page reloads far enough down. 'ElementInternals.states' is not in the DOM, so hydration has nothing to compare. Select the state with ':state(scrolled)'. */
|
|
12930
|
+
/** Tracks whether the page has scrolled and sets the custom state 'scrolled', so the styled tier can lift the bar without a scroll handler of its own. The state is read when the element connects. A fresh load starts at the top, which matches the server markup, and a reload partway down the page is corrected on hydration. The element uses a custom state because an attribute such as 'data-scrolled', written onto its own host, is one the server did not send. A hydrating framework would report a mismatch whenever the page reloads far enough down. 'ElementInternals.states' is not in the DOM, so hydration has nothing to compare. Select the state with ':state(scrolled)'. The page is the window unless 'scroller' names the element that scrolls, for an app shell whose content scrolls inside a container. */
|
|
12191
12931
|
"helix-headless-app-header": DefineCustomElement<
|
|
12192
12932
|
HelixHeadlessAppHeader,
|
|
12193
12933
|
HelixHeadlessAppHeaderVueProps,
|
|
@@ -12199,7 +12939,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12199
12939
|
HelixHeadlessAreaChartVueProps,
|
|
12200
12940
|
HelixHeadlessAreaChartVueEvents
|
|
12201
12941
|
>;
|
|
12202
|
-
/** A part of 'Avatar' that arranges avatars. The group computes the overflow count from 'max' and renders the "+3" itself. There is no slot for it, because the number has to match which avatars are hidden. Avatars past 'max' stay in the DOM and are hidden.
|
|
12942
|
+
/** A part of 'Avatar' that arranges avatars. The group computes the overflow count from 'max' and renders the "+3" itself. There is no slot for it, because the number has to match which avatars are hidden. Avatars past 'max' stay in the DOM and are hidden. The group writes 'hidden' on each of them, so they are hidden on the headless tier as well, and the count is read out as 'overflow-label', such as "3 more", so a screen reader hears that there are more people than the ones it can reach. */
|
|
12203
12943
|
"helix-headless-avatar-group": DefineCustomElement<
|
|
12204
12944
|
HelixHeadlessAvatarGroup,
|
|
12205
12945
|
HelixHeadlessAvatarGroupVueProps,
|
|
@@ -12211,19 +12951,19 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12211
12951
|
HelixHeadlessAvatarVueProps,
|
|
12212
12952
|
HelixHeadlessAvatarVueEvents
|
|
12213
12953
|
>;
|
|
12214
|
-
/** Badge wraps the element it decorates and pins an indicator to its corner, so the wrapped element keeps its place in the layout. What the indicator shows depends on 'value': - A 'value' of zero shows no indicator. - No 'value' shows a dot. - Any other value shows the value. Above 'max', the indicator shows '{max}+', so its width stays the same as the count grows. A count is announced from its own text, and 'label' replaces that with a fuller name, such as '4 unread'. A dot needs a 'label'. Without one, the dot is a colored circle that screen readers do not announce. */
|
|
12954
|
+
/** Badge wraps the element it decorates and pins an indicator to its corner, so the wrapped element keeps its place in the layout. What the indicator shows depends on 'value': - A 'value' of zero shows no indicator. - No 'value' shows a dot. - Any other value shows the value. Above 'max', the indicator shows '{max}+', so its width stays the same as the count grows. A count is announced from its own text, and 'label' replaces that with a fuller name, such as '4 unread'. A dot needs a 'label'. Without one, the dot is a colored circle that screen readers do not announce. **The count is not part of the wrapped control's name.** It is a status of its own, read when it changes and when a reader moves to it, so focusing a button inside a badge announces the button's name alone. Where the count belongs in that name, write it into the control's own label, such as 'aria-label="Inbox, 8 unread"' on a button that reads "Inbox". The badge cannot add it: a reference from the control to the count would point into the badge's shadow root, which the platform does not allow. */
|
|
12215
12955
|
"helix-headless-badge": DefineCustomElement<
|
|
12216
12956
|
HelixHeadlessBadge,
|
|
12217
12957
|
HelixHeadlessBadgeVueProps,
|
|
12218
12958
|
HelixHeadlessBadgeVueEvents
|
|
12219
12959
|
>;
|
|
12220
|
-
/** Every bar is measured from zero, and no property changes the baseline, because a bar's length is its value. To show the differences between values, use a line chart. The labels are HTML beside the drawing. An '<svg>' that fills its box scales the text inside it: the same 'font-size' renders at 10px in a narrow chart and 43px in a wide one, and SVG has no setting that keeps text at one size the way 'vector-effect' does for strokes. The table is the accessible representation, and the drawing is 'aria-hidden', so screen reader users get the numbers themselves. The component writes the custom properties below with numbers it computes, and the stylesheet that draws the chart reads them. Do not set them yourself. */
|
|
12960
|
+
/** Every bar is measured from zero, and no property changes the baseline, because a bar's length is its value. To show the differences between values, use a line chart. The labels are HTML beside the drawing. An '<svg>' that fills its box scales the text inside it: the same 'font-size' renders at 10px in a narrow chart and 43px in a wide one, and SVG has no setting that keeps text at one size the way 'vector-effect' does for strokes. The table is the accessible representation, and the drawing is 'aria-hidden', so screen reader users get the numbers themselves. The 'summary' part names the chart, from 'label' or the table's caption, and gives each series' highest reading. The component writes the custom properties below with numbers it computes, and the stylesheet that draws the chart reads them. Do not set them yourself. */
|
|
12221
12961
|
"helix-headless-bar-chart": DefineCustomElement<
|
|
12222
12962
|
HelixHeadlessBarChart,
|
|
12223
12963
|
HelixHeadlessBarChartVueProps,
|
|
12224
12964
|
HelixHeadlessBarChartVueEvents
|
|
12225
12965
|
>;
|
|
12226
|
-
/** Renders a '<blockquote>'
|
|
12966
|
+
/** Renders a '<figure>' holding the '<blockquote>' and a '<figcaption>' 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 keeps the browser's default margins on this tier. Set '::part(figure) { margin: 0 }' where they are unwanted. For a quotation inside a sentence, use 'Quote'. */
|
|
12227
12967
|
"helix-headless-blockquote": DefineCustomElement<
|
|
12228
12968
|
HelixHeadlessBlockquote,
|
|
12229
12969
|
HelixHeadlessBlockquoteVueProps,
|
|
@@ -12235,7 +12975,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12235
12975
|
HelixHeadlessBreadcrumbVueProps,
|
|
12236
12976
|
HelixHeadlessBreadcrumbVueEvents
|
|
12237
12977
|
>;
|
|
12238
|
-
/** The host is the navigation landmark,
|
|
12978
|
+
/** The host is the navigation landmark, named "Breadcrumb" by default. An 'aria-label' on the host names the trail instead, and so does 'label'. When a page has more than one navigation landmark, screen reader users choose between them by name. The '<ol>' has an explicit 'role="list"', because Safari removes list semantics from a list with 'list-style: none', and the trail always hides its markers. The items are slotted directly, so they are '<ol>' children in the flat tree, and each item sets 'role="listitem"' on itself. The trail does not measure itself, and you write its overflow in markup: put the crumb that holds the folded items where the gap should appear. */
|
|
12239
12979
|
"helix-headless-breadcrumbs": DefineCustomElement<
|
|
12240
12980
|
HelixHeadlessBreadcrumbs,
|
|
12241
12981
|
HelixHeadlessBreadcrumbsVueProps,
|
|
@@ -12247,13 +12987,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12247
12987
|
HelixHeadlessButtonGroupVueProps,
|
|
12248
12988
|
HelixHeadlessButtonGroupVueEvents
|
|
12249
12989
|
>;
|
|
12250
|
-
/** Renders a real '<button>', so activation, focus, and other browser behavior come from the platform. **It never renders an anchor.** A router renders its own '<a>' to intercept a click, and it cannot render one inside the button's shadow root. For a link that looks like a button, use the base layer recipe on your own anchor: '<Link data-button="solid">' draws the same control. 'delegatesFocus' moves focus to the inner control. It is serialized into the server markup, so the button is reachable by keyboard before any JavaScript loads. The inner control is always 'type="button"', because a '<button type="submit">' inside a shadow root cannot submit a form outside it. To submit, the button calls 'requestSubmit()' on its form, which runs validation, unlike 'submit()'. */
|
|
12990
|
+
/** Renders a real '<button>', so activation, focus, and other browser behavior come from the platform. **It never renders an anchor.** A router renders its own '<a>' to intercept a click, and it cannot render one inside the button's shadow root. For a link that looks like a button, use the base layer recipe on your own anchor: '<Link data-button="solid">' draws the same control. 'delegatesFocus' moves focus to the inner control. It is serialized into the server markup, so the button is reachable by keyboard before any JavaScript loads. The inner control is always 'type="button"', because a '<button type="submit">' inside a shadow root cannot submit a form outside it. To submit, the button calls 'requestSubmit()' on its form, which runs validation, unlike 'submit()'. A 'submit' listener reads 'event.submitter' as 'null', because the platform accepts only a native submit button there. The button's 'name' and 'value' are in the form data, so read them from 'new FormData(form)' to tell two submit buttons apart. As the first submit button in its form, it is the form's default button: Enter in a text field of the form presses it, as it presses a native one. */
|
|
12251
12991
|
"helix-headless-button": DefineCustomElement<
|
|
12252
12992
|
HelixHeadlessButton,
|
|
12253
12993
|
HelixHeadlessButtonVueProps,
|
|
12254
12994
|
HelixHeadlessButtonVueEvents
|
|
12255
12995
|
>;
|
|
12256
|
-
/** 'tone' is on the headless tier because it carries meaning. It picks the icon and the icon's accessible name, so a screen reader announces "Error" for an error callout whether or not the color is seen. The icon is the fallback content of a slot. Slot your own icon to replace it, and the default disappears with no extra check. A callout sets a passage apart inside a document and is read where it sits. For page-level chrome above the masthead that is a live region and can be dismissed, use 'Announcement'. */
|
|
12996
|
+
/** 'tone' is on the headless tier because it carries meaning. It picks the icon and the icon region's accessible name, so a screen reader announces "Error" for an error callout whether or not the color is seen. Set 'tone-label' to say the name in another language. The icon is the fallback content of a slot. Slot your own icon to replace it, and the default disappears with no extra check. The tone's name stays on the region around it. A callout sets a passage apart inside a document and is read where it sits. For page-level chrome above the masthead that is a live region and can be dismissed, use 'Announcement'. */
|
|
12257
12997
|
"helix-headless-callout": DefineCustomElement<
|
|
12258
12998
|
HelixHeadlessCallout,
|
|
12259
12999
|
HelixHeadlessCalloutVueProps,
|
|
@@ -12283,7 +13023,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12283
13023
|
HelixHeadlessCardVueProps,
|
|
12284
13024
|
HelixHeadlessCardVueEvents
|
|
12285
13025
|
>;
|
|
12286
|
-
/** The track is a scroll container with scroll snapping, so dragging, trackpad swipes, and the browser's momentum scrolling all work. The controls scroll the track. Slides are your own elements, and the carousel writes nothing onto them. It renders a pane for each slide with 'role="group"', 'aria-roledescription="slide"', and a name that gives the slide's position in the set, and assigns the slide into it. A screen reader announces the position, and a slide that is a link stays a link. See 'assign'. **Rotation stops on focus and on hover, and stays stopped** until the user starts it again, as the APG requires. The rotation control is labeled with the action it performs and is first in the tab order. */
|
|
13026
|
+
/** The track is a scroll container with scroll snapping, so dragging, trackpad swipes, and the browser's momentum scrolling all work. The controls scroll the track. Slides are your own elements, and the carousel writes nothing onto them. It renders a pane for each slide with 'role="group"', 'aria-roledescription="slide"', and a name that gives the slide's position in the set, and assigns the slide into it. A screen reader announces the position, and a slide that is a link stays a link. See 'assign'. **Rotation stops on focus and on hover, and stays stopped** until the user starts it again, as the APG requires. The rotation control is labeled with the action it performs and is first in the tab order. Rotation goes on from the last slide to the first, with or without 'loop', which is about the reader's own moves. A move the reader makes is announced, the slide's position read from a polite live region. While the carousel rotates the region is off, so a screen reader is not interrupted every few seconds. The indicators are one tab stop. The arrow keys along the track move between them, Up and Down on a vertical carousel, and Home and End go to the first and the last. Without 'loop', Previous on the first slide and Next on the last are marked 'aria-disabled'. */
|
|
12287
13027
|
"helix-headless-carousel": DefineCustomElement<
|
|
12288
13028
|
HelixHeadlessCarousel,
|
|
12289
13029
|
HelixHeadlessCarouselVueProps,
|
|
@@ -12307,7 +13047,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12307
13047
|
HelixHeadlessChatVueProps,
|
|
12308
13048
|
HelixHeadlessChatVueEvents
|
|
12309
13049
|
>;
|
|
12310
|
-
/** The host is the group. It has 'role="group"' through internals, and 'label' names it. Without a name, screen readers announce the checkboxes as separate controls. **Each checkbox submits its own value.** Checkboxes are already form-associated, and a native group is several inputs that share a name, so the group adds no form value of its own. It adds the grouping, a shared 'name' that you write once, and one place to read and write the whole set. 'value' is the checked values, separated by commas, in the order the checkboxes are written. Setting it checks exactly those values and unchecks the rest. **The group shows the message you set in 'feedback'.** It is form-associated only for validity and never calls 'setFormValue', so the browser does not generate a message for it. */
|
|
13050
|
+
/** The host is the group. It has 'role="group"' through internals, and 'label' names it. Without a name, screen readers announce the checkboxes as separate controls. **Each checkbox submits its own value.** Checkboxes are already form-associated, and a native group is several inputs that share a name, so the group adds no form value of its own. It adds the grouping, a shared 'name' that you write once, and one place to read and write the whole set. 'value' is the checked values, separated by commas, in the order the checkboxes are written, read from the boxes themselves. Setting it checks exactly those values and unchecks the rest. A checkbox is a member wherever it sits inside the group, in a row or a grid cell of your own, unless another group inside this one holds it. A field of another kind inside the group, such as an "Other" text field, sends its own 'input' and 'change' past the group. **The group shows the message you set in 'feedback'.** It is form-associated only for validity and never calls 'setFormValue', so the browser does not generate a message for it. */
|
|
12311
13051
|
"helix-headless-checkbox-group": DefineCustomElement<
|
|
12312
13052
|
HelixHeadlessCheckboxGroup,
|
|
12313
13053
|
HelixHeadlessCheckboxGroupVueProps,
|
|
@@ -12331,19 +13071,19 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12331
13071
|
HelixHeadlessCodeVueProps,
|
|
12332
13072
|
HelixHeadlessCodeVueEvents
|
|
12333
13073
|
>;
|
|
12334
|
-
/** A text field with a button that opens 'ColorPicker' in an overlay. 'ColorPicker' provides the square, the ramps, the eyedropper, and the syntax toggle, and you can also use it on its own, flat on the page. Color Input adds the field, the overlay, and the form value, the same arrangement Date Input has with 'DatePicker'. You can type or paste a color into the field without opening the picker. Color Input is a custom control, unlike '<input type="color">', so you can style the panel to match your interface. The field reads every color syntax, including '#f00', '#ff0000', 'rgb(255 0 0)', 'rgba(255,0,0,.5)', 'rgb(255 0 0 / 50%)', and 'hsl(0 100% 50%)'. It writes colors in the syntax that 'format' names. The field shows the value without reformatting it, because half-typed input does not survive a round trip through a formatter. Date Input does the same with dates. The component sets '--color-input-swatch', so do not set it yourself. It holds the resolved color, so the styled tier can paint the swatch without parsing the value. */
|
|
13074
|
+
/** A text field with a button that opens 'ColorPicker' in an overlay. 'ColorPicker' provides the square, the ramps, the eyedropper, and the syntax toggle, and you can also use it on its own, flat on the page. Color Input adds the field, the overlay, and the form value, the same arrangement Date Input has with 'DatePicker'. You can type or paste a color into the field without opening the picker. Color Input is a custom control, unlike '<input type="color">', so you can style the panel to match your interface. The field reads every color syntax, including '#f00', '#ff0000', 'rgb(255 0 0)', 'rgba(255,0,0,.5)', 'rgb(255 0 0 / 50%)', and 'hsl(0 100% 50%)'. It writes colors in the syntax that 'format' names. The field shows the value without reformatting it, because half-typed input does not survive a round trip through a formatter. Date Input does the same with dates. Typing sends 'input' on each keystroke and 'change' when you leave the field, as a text field does, so the message about a color it cannot read waits until you are done. Dragging in the panel sends 'input' as the color moves and 'change' when it settles. The component sets '--color-input-swatch', so do not set it yourself. It holds the resolved color, so the styled tier can paint the swatch without parsing the value. */
|
|
12335
13075
|
"helix-headless-color-input": DefineCustomElement<
|
|
12336
13076
|
HelixHeadlessColorInput,
|
|
12337
13077
|
HelixHeadlessColorInputVueProps,
|
|
12338
13078
|
HelixHeadlessColorInputVueEvents
|
|
12339
13079
|
>;
|
|
12340
|
-
/** The picker on its own, with no field around it, for a settings pane or a toolbar. Color Input shows this element in a panel behind a text field. The saturation and brightness square is two '<input type="range">' elements, laid over the square and made invisible, and the handle is drawn from their values. The keyboard behavior, the announcements, and the touch targets come from the platform, and there is no 'role="application"'. The picker works in HSB and derives the value from it. A value set from outside is read into the model once. Black is 'brightness: 0', which has no hue or saturation, so a model read back from the value would turn red into gray after you drag to the bottom of the square and back. */
|
|
13080
|
+
/** The picker on its own, with no field around it, for a settings pane or a toolbar. Color Input shows this element in a panel behind a text field. The saturation and brightness square is two '<input type="range">' elements, laid over the square and made invisible, and the handle is drawn from their values. The keyboard behavior, the announcements, and the touch targets come from the platform, and there is no 'role="application"'. The picker works in HSB and derives the value from it. A value set from outside is read into the model once. Black is 'brightness: 0', which has no hue or saturation, so a model read back from the value would turn red into gray after you drag to the bottom of the square and back. The square is one tab stop. In it, the up and down arrows move brightness and the left and right arrows move saturation, and PageUp and PageDown move brightness by ten. The picker sends 'input' as the color moves and 'change' when a drag, a key, a typed value or a preset settles it, as '<input type="color">' does. */
|
|
12341
13081
|
"helix-headless-color-picker": DefineCustomElement<
|
|
12342
13082
|
HelixHeadlessColorPicker,
|
|
12343
13083
|
HelixHeadlessColorPickerVueProps,
|
|
12344
13084
|
HelixHeadlessColorPickerVueEvents
|
|
12345
13085
|
>;
|
|
12346
|
-
/** 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. 'role="combobox"' is on the input itself. 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. */
|
|
13086
|
+
/** 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. 'role="combobox"' is on the input itself. ArrowDown and ArrowUp open the list on the chosen option, and Enter chooses the highlighted one. Space, Home, End and letters edit the text, and Enter in a closed field is left to the form. Emptying the field and leaving it clears a single choice; Escape puts the chosen words back. 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. */
|
|
12347
13087
|
"helix-headless-combobox": DefineCustomElement<
|
|
12348
13088
|
HelixHeadlessCombobox,
|
|
12349
13089
|
HelixHeadlessComboboxVueProps,
|
|
@@ -12355,25 +13095,25 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12355
13095
|
HelixHeadlessCommandVueProps,
|
|
12356
13096
|
HelixHeadlessCommandVueEvents
|
|
12357
13097
|
>;
|
|
12358
|
-
/** Copies text to the clipboard and confirms the copy. The platform gives no feedback for a clipboard write, so without a confirmation a press that copies looks the same as one that fails. The confirmation and the event wait for the write to finish. The browser can refuse a clipboard write, for example on an insecure origin, in a document that is not focused, or after a gesture that does not qualify. A refused write leaves the button unchanged. */
|
|
13098
|
+
/** Copies text to the clipboard and confirms the copy. The platform gives no feedback for a clipboard write, so without a confirmation a press that copies looks the same as one that fails. The confirmation and the event wait for the write to finish. The browser can refuse a clipboard write, for example on an insecure origin, in a document that is not focused, or after a gesture that does not qualify. A refused write leaves the button unchanged. It replaces Button's render and its press, so it never submits a form or sends a command: 'type', 'command', 'commandfor' and the 'form*' overrides have no effect, and the 'start' and 'end' slots and the 'text' part are not rendered. An 'aria-label' on the element names it before a copy, in place of 'label'. */
|
|
12359
13099
|
"helix-headless-copy-button": DefineCustomElement<
|
|
12360
13100
|
HelixHeadlessCopyButton,
|
|
12361
13101
|
HelixHeadlessCopyButtonVueProps,
|
|
12362
13102
|
HelixHeadlessCopyButtonVueEvents
|
|
12363
13103
|
>;
|
|
12364
|
-
/** 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. To act on a single row, such as opening it, put a link or a button in a cell. 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'. */
|
|
13104
|
+
/** 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. To act on a single row, such as opening it, put a link or a button in a cell. The grid is one tab stop, and the arrow keys move between its cells, the headings included: - The arrow keys move one cell, and Home and End to the ends of the row. - Control with Home or End moves to the first or the last cell of the grid. - Page Up and Page Down move by the rows that fit in view. - Enter or F2 moves into the cell's controls, and Escape moves back to the cell. Tab moves between the controls of one cell. - Enter or Space on a sortable heading sorts by it, and Space on a row of a 'selectable' table selects it. 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'. */
|
|
12365
13105
|
"helix-headless-data-table": DefineCustomElement<
|
|
12366
13106
|
HelixHeadlessDataTable,
|
|
12367
13107
|
HelixHeadlessDataTableVueProps,
|
|
12368
13108
|
HelixHeadlessDataTableVueEvents
|
|
12369
13109
|
>;
|
|
12370
|
-
/** The calendar is 'DatePicker', which handles months, ranges, disabled days, the first day of the week, and the grid's keyboard behavior. The date input adds the field, the overlay, and the connection between them. You can type a date as well as pick one. The native '<input type="date">' gives a picker and locale formatting but allows almost no styling, so the field is a text field. */
|
|
13110
|
+
/** The calendar is 'DatePicker', which handles months, ranges, disabled days, the first day of the week, and the grid's keyboard behavior. The date input adds the field, the overlay, and the connection between them. You can type a date as well as pick one. The native '<input type="date">' gives a picker and locale formatting but allows almost no styling, so the field is a text field. Typing sends 'input' on each keystroke and 'change' when you leave the field, as a text field does. A date picked from the calendar sends both. The trigger opens the calendar with focus on the selected day, and Escape closes it and returns focus to the field. Focusing the field opens the calendar too, and Tab out of the field closes it again. */
|
|
12371
13111
|
"helix-headless-date-input": DefineCustomElement<
|
|
12372
13112
|
HelixHeadlessDateInput,
|
|
12373
13113
|
HelixHeadlessDateInputVueProps,
|
|
12374
13114
|
HelixHeadlessDateInputVueEvents
|
|
12375
13115
|
>;
|
|
12376
|
-
/** 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'. */
|
|
13116
|
+
/** 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'. 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. */
|
|
12377
13117
|
"helix-headless-date-picker": DefineCustomElement<
|
|
12378
13118
|
HelixHeadlessDatePicker,
|
|
12379
13119
|
HelixHeadlessDatePickerVueProps,
|
|
@@ -12391,7 +13131,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12391
13131
|
HelixHeadlessDescriptionListVueProps,
|
|
12392
13132
|
HelixHeadlessDescriptionListVueEvents
|
|
12393
13133
|
>;
|
|
12394
|
-
/** 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 '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. */
|
|
13134
|
+
/** 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 '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. */
|
|
12395
13135
|
"helix-headless-dialog": DefineCustomElement<
|
|
12396
13136
|
HelixHeadlessDialog,
|
|
12397
13137
|
HelixHeadlessDialogVueProps,
|
|
@@ -12403,13 +13143,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12403
13143
|
HelixHeadlessDividerVueProps,
|
|
12404
13144
|
HelixHeadlessDividerVueEvents
|
|
12405
13145
|
>;
|
|
12406
|
-
/** A donut chart divides one whole into parts, so the component reads one column. **The first column of numbers is the series, and each row is a slice.** Other Helix charts take one column per series. **Negative values are skipped.** An arc cannot show a negative number, so those rows are left out and the total is the sum of the remaining rows. */
|
|
13146
|
+
/** A donut chart divides one whole into parts, so the component reads one column. **The first column of numbers is the series, and each row is a slice.** Other Helix charts take one column per series. **Negative values are skipped.** An arc cannot show a negative number, so those rows are left out and the total is the sum of the remaining rows. The ring is 'aria-hidden'. The 'summary' part names the chart, from 'label' or the table's caption, and gives each slice's share, and the table beside the chart has every amount. */
|
|
12407
13147
|
"helix-headless-donut-chart": DefineCustomElement<
|
|
12408
13148
|
HelixHeadlessDonutChart,
|
|
12409
13149
|
HelixHeadlessDonutChartVueProps,
|
|
12410
13150
|
HelixHeadlessDonutChartVueEvents
|
|
12411
13151
|
>;
|
|
12412
|
-
/** 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
|
|
13152
|
+
/** 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 - 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. 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> ''' */
|
|
12413
13153
|
"helix-headless-drawer": DefineCustomElement<
|
|
12414
13154
|
HelixHeadlessDrawer,
|
|
12415
13155
|
HelixHeadlessDrawerVueProps,
|
|
@@ -12421,7 +13161,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12421
13161
|
HelixHeadlessDrilldownItemVueProps,
|
|
12422
13162
|
HelixHeadlessDrilldownItemVueEvents
|
|
12423
13163
|
>;
|
|
12424
|
-
/** One panel whose content changes as you move between pages. Use it where there is no room for a second column, such as on a phone, or on a touch screen with no hover to open one. It is a region that stays where you put it, such as inside a drawer, a sidebar, or a settings panel. A 'Menu' opens from a trigger and closes when you are done. 'Menu' can drill into pages too, through the same controller. Rows are places to go and commands to run. Nothing here is form-associated and nothing is submitted. To choose a value, use a 'Listbox'. A row that opens a page contains that page, so the stack holds one reference and reads the rest from the DOM. The behavior lives in 'DrilldownController', which 'Menu' shares. */
|
|
13164
|
+
/** One panel whose content changes as you move between pages. Use it where there is no room for a second column, such as on a phone, or on a touch screen with no hover to open one. It is a region that stays where you put it, such as inside a drawer, a sidebar, or a settings panel. A 'Menu' opens from a trigger and closes when you are done. 'Menu' can drill into pages too, through the same controller. Rows are places to go and commands to run. Nothing here is form-associated and nothing is submitted. To choose a value, use a 'Listbox'. A row that opens a page contains that page, so the stack holds one reference and reads the rest from the DOM. The behavior lives in 'DrilldownController', which 'Menu' shares. The rows of the page showing are a 'menu', named by 'label' on the top page and by the page's title below it. The back button and the title sit above the menu. Disabled rows stay reachable with the arrow keys, and typing a letter moves to the next row whose name starts with it. */
|
|
12425
13165
|
"helix-headless-drilldown": DefineCustomElement<
|
|
12426
13166
|
HelixHeadlessDrilldown,
|
|
12427
13167
|
HelixHeadlessDrilldownVueProps,
|
|
@@ -12469,7 +13209,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12469
13209
|
HelixHeadlessFilterInputVueProps,
|
|
12470
13210
|
HelixHeadlessFilterInputVueEvents
|
|
12471
13211
|
>;
|
|
12472
|
-
/** 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. **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. **The output is always '<time datetime>'**, so
|
|
13212
|
+
/** 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. **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. **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. */
|
|
12473
13213
|
"helix-headless-format-date": DefineCustomElement<
|
|
12474
13214
|
HelixHeadlessFormatDate,
|
|
12475
13215
|
HelixHeadlessFormatDateVueProps,
|
|
@@ -12493,7 +13233,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12493
13233
|
HelixHeadlessIconButtonVueProps,
|
|
12494
13234
|
HelixHeadlessIconButtonVueEvents
|
|
12495
13235
|
>;
|
|
12496
|
-
/** The icons are Phosphor, drawn on a 256 box at stroke-width 16. Each glyph renders its full inner markup, because most icons are several elements, each with its own stroke and fill. The markup is generated at build time from SVG files in this repository and never comes from user input, so rendering it with 'unsafeSVG' is safe. The '<svg>' carries 'fill="currentColor"'. The generator keeps only the inner markup, and Phosphor sets its fill on the root tag that the generator discards. Without it, the 65 solid glyphs fall back to black and disappear on a dark background. Shapes that set their own 'fill' or 'stroke' are unaffected. A name with no match renders nothing. An icon is decorative by default and hidden from assistive technology. Set 'label' only when the icon is the only carrier of meaning, such as in a button with no text. */
|
|
13236
|
+
/** The icons are Phosphor, drawn on a 256 box at stroke-width 16. Each glyph renders its full inner markup, because most icons are several elements, each with its own stroke and fill. The markup is generated at build time from SVG files in this repository and never comes from user input, so rendering it with 'unsafeSVG' is safe. The '<svg>' carries 'fill="currentColor"'. The generator keeps only the inner markup, and Phosphor sets its fill on the root tag that the generator discards. Without it, the 65 solid glyphs fall back to black and disappear on a dark background. Shapes that set their own 'fill' or 'stroke' are unaffected. A name with no match renders nothing, and the element fires 'error', so a typo in a name can be heard. An icon is decorative by default and hidden from assistive technology. Set 'label' only when the icon is the only carrier of meaning, such as in a button with no text. An 'aria-label' on the element works too: the element is then an image with that name. */
|
|
12497
13237
|
"helix-headless-icon": DefineCustomElement<
|
|
12498
13238
|
HelixHeadlessIcon,
|
|
12499
13239
|
HelixHeadlessIconVueProps,
|
|
@@ -12529,19 +13269,19 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12529
13269
|
HelixHeadlessLightboxItemVueProps,
|
|
12530
13270
|
HelixHeadlessLightboxItemVueEvents
|
|
12531
13271
|
>;
|
|
12532
|
-
/** The frame around content you open, such as a picture, a video frame, or a chart. The lightbox draws no content of its own. It provides the frame, the keyboard behavior, and text that states the current position in the set. The modal behavior comes from a native '<dialog>' opened with 'showModal()', which provides the top layer, a backdrop, Escape to close, and 'inert' on the rest of the document. Every way of closing goes through 'requestOpen', as in 'Dialog' and 'Drawer'. A lightbox shows one item at a time and has no scrolling track, so 'active' holds the current item, as in 'Tabs'. The arrow keys change the item while focus stays in the dialog. The chrome hides when there is no input, through 'IdleController', and comes back on a pointer move or a focus. 'fullscreen' uses 'FullscreenController', as 'Video' does. */
|
|
13272
|
+
/** The frame around content you open, such as a picture, a video frame, or a chart. The lightbox draws no content of its own. It provides the frame, the keyboard behavior, and text that states the current position in the set. The modal behavior comes from a native '<dialog>' opened with 'showModal()', which provides the top layer, a backdrop, Escape to close, and 'inert' on the rest of the document. Every way of closing goes through 'requestOpen', as in 'Dialog' and 'Drawer'. A lightbox shows one item at a time and has no scrolling track, so 'active' holds the current item, as in 'Tabs'. The arrow keys change the item while focus stays in the dialog. The chrome hides when there is no input, through 'IdleController', and comes back on a pointer move, a key press, or a focus. It stays while focus is on a control in the header or the footer, so a keyboard reader is never left on a control that has gone. 'fullscreen' uses 'FullscreenController', as 'Video' does. While the viewer is open, the page behind it does not scroll. */
|
|
12533
13273
|
"helix-headless-lightbox": DefineCustomElement<
|
|
12534
13274
|
HelixHeadlessLightbox,
|
|
12535
13275
|
HelixHeadlessLightboxVueProps,
|
|
12536
13276
|
HelixHeadlessLightboxVueEvents
|
|
12537
13277
|
>;
|
|
12538
|
-
/** A line chart shows the shape of each series: where the readings went. The scale covers the range of the data. Including zero in the range of a series that moves between 980 and 1020 would flatten the line into a rule across the top of the box. 'BarChart' always starts at zero, because a bar's length is its value. Set 'zero' when the distance from zero is the point. Every series shares one scale, as in the bar chart. 'area' fills each series down to the floor on its own, so the fills overlap. For a total made of parts, use 'Area Chart', which stacks the series so the top edge is the total and each band is a share. The labels are HTML beside the drawing, as in 'BarChart'. Text inside an '<svg>' that fills its box scales with the box, so the same 'font-size' can render at 10px in a narrow chart and 43px in a wide one. The table is the accessible representation, and the drawing is 'aria-hidden'. Screen reader users get the numbers. */
|
|
13278
|
+
/** A line chart shows the shape of each series: where the readings went. The scale covers the range of the data. Including zero in the range of a series that moves between 980 and 1020 would flatten the line into a rule across the top of the box. 'BarChart' always starts at zero, because a bar's length is its value. Set 'zero' when the distance from zero is the point. Every series shares one scale, as in the bar chart. 'area' fills each series down to the floor on its own, so the fills overlap. For a total made of parts, use 'Area Chart', which stacks the series so the top edge is the total and each band is a share. The labels are HTML beside the drawing, as in 'BarChart'. Text inside an '<svg>' that fills its box scales with the box, so the same 'font-size' can render at 10px in a narrow chart and 43px in a wide one. The table is the accessible representation, and the drawing is 'aria-hidden'. Screen reader users get the numbers. The 'summary' part names the chart, from 'label' or the table's caption, and gives each series' latest reading. */
|
|
12539
13279
|
"helix-headless-line-chart": DefineCustomElement<
|
|
12540
13280
|
HelixHeadlessLineChart,
|
|
12541
13281
|
HelixHeadlessLineChartVueProps,
|
|
12542
13282
|
HelixHeadlessLineChartVueEvents
|
|
12543
13283
|
>;
|
|
12544
|
-
/** Provides layout and semantics. The row is a target only when you set 'href'. **'href' makes the
|
|
13284
|
+
/** 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. */
|
|
12545
13285
|
"helix-headless-list-item": DefineCustomElement<
|
|
12546
13286
|
HelixHeadlessListItem,
|
|
12547
13287
|
HelixHeadlessListItemVueProps,
|
|
@@ -12553,7 +13293,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12553
13293
|
HelixHeadlessListVueProps,
|
|
12554
13294
|
HelixHeadlessListVueEvents
|
|
12555
13295
|
>;
|
|
12556
|
-
/** 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. */
|
|
13296
|
+
/** 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 arrow keys, Home, End, PageUp and PageDown move the highlight, and typed letters move it to the next option whose words start with them. In a single-choice list the highlight is the choice unless 'manual' is set; then Enter, Space or a click chooses. With 'multiple', Space toggles the highlighted option, Shift with an arrow adds the option it moves to, and Control+A or Command+A chooses every option, or none where all are chosen. In a filter field, Space, Home, End and letters edit the text. */
|
|
12557
13297
|
"helix-headless-listbox": DefineCustomElement<
|
|
12558
13298
|
HelixHeadlessListbox,
|
|
12559
13299
|
HelixHeadlessListboxVueProps,
|
|
@@ -12613,7 +13353,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12613
13353
|
HelixHeadlessMapRasterVueProps,
|
|
12614
13354
|
HelixHeadlessMapRasterVueEvents
|
|
12615
13355
|
>;
|
|
12616
|
-
/** Wraps a map drawn by MapLibre, Leaflet, or another renderer. The frame adds a name for the map, a column of controls, and a strip for the map credit. Helix does not draw the map itself. The controls are one column, and 'controls' names which ones: 'fullscreen', 'layers', 'tilt', 'zoom', and 'compass', top to bottom. 'zoom compass fullscreen' by default. The compass's needle points north as the map turns, and pressing it turns the map to face north. Add 'pan' and 'rotate' for buttons around the compass that move and turn the map. Dragging is otherwise the only way a pointer moves the map, so add them where the map has to be usable without dragging, as WCAG 2.2 asks at level AA. The arrow keys pan the map and Shift with Left or Right turns it either way. The pan and zoom buttons and the arrow keys send 'helix-map-pan' and 'helix-map-zoom'. Move your map in response, or connect it with 'connectMap' from '@fusion.dev/helix-map', which does this for you. Add 'tilt' to 'controls' for the 3D button, which a map with 3D buildings or terrain needs. It is a toggle. Pressed, it tilts the map 50 degrees, and 'connectMap' raises the buildings and the ground. Pressed again, it makes the map flat, and lays them flat too. Shift with Up or Down tilts the map in steps. Turning and tilting send 'helix-map-rotate' and 'helix-map-tilt', which 'connectMap' answers on MapLibre. Leaflet draws maps flat and does not rotate. Add 'layers' to 'controls' for a layers button. It opens a menu with a tile for each layer, which sets the layer's 'hidden' attribute. Layers with the same 'group', such as a route and its dotted legs, share one tile. Imagery, a 'helix-map-raster' with 'ground', is a map type and not a tile. The menu opens with a card for each type, Standard, Hybrid, and Satellite, with a picture of the map in it, and 'map-type' says which is chosen. Standard hides the imagery, Hybrid draws it under the roads and names, and Satellite draws it alone. 'connectMap' does not draw a hidden layer, so a layer you write with 'hidden' starts turned off. Markers, routes, areas, live positions, and points layers go inside the frame as child elements. */
|
|
13356
|
+
/** Wraps a map drawn by MapLibre, Leaflet, or another renderer. The frame adds a name for the map, a column of controls, and a strip for the map credit. Helix does not draw the map itself. The controls are one column, and 'controls' names which ones: 'fullscreen', 'layers', 'tilt', 'zoom', and 'compass', top to bottom. 'zoom compass fullscreen' by default. The compass's needle points north as the map turns, and pressing it turns the map to face north. Add 'pan' and 'rotate' for buttons around the compass that move and turn the map. Dragging is otherwise the only way a pointer moves the map, so add them where the map has to be usable without dragging, as WCAG 2.2 asks at level AA. The arrow keys pan the map and Shift with Left or Right turns it either way. The pan and zoom buttons and the arrow keys send 'helix-map-pan' and 'helix-map-zoom'. Move your map in response, or connect it with 'connectMap' from '@fusion.dev/helix-map', which does this for you. Add 'tilt' to 'controls' for the 3D button, which a map with 3D buildings or terrain needs. It is a toggle. Pressed, it tilts the map 50 degrees, and 'connectMap' raises the buildings and the ground. Pressed again, it makes the map flat, and lays them flat too. Shift with Up or Down tilts the map in steps. Turning and tilting send 'helix-map-rotate' and 'helix-map-tilt', which 'connectMap' answers on MapLibre. Leaflet draws maps flat and does not rotate. Add 'layers' to 'controls' for a layers button. It opens a menu with a tile for each layer, which sets the layer's 'hidden' attribute. Layers with the same 'group', such as a route and its dotted legs, share one tile. A tile sends 'helix-before-toggle' from the layer first, so you can store the choice or refuse it. Imagery, a 'helix-map-raster' with 'ground', is a map type and not a tile. The menu opens with a card for each type, Standard, Hybrid, and Satellite, with a picture of the map in it, and 'map-type' says which is chosen. Standard hides the imagery, Hybrid draws it under the roads and names, and Satellite draws it alone. Choosing one sends 'helix-before-change' with its name, and 'change' once 'map-type' holds it. 'connectMap' does not draw a hidden layer, so a layer you write with 'hidden' starts turned off. Markers, routes, areas, live positions, and points layers go inside the frame as child elements. */
|
|
12617
13357
|
"helix-headless-map": DefineCustomElement<
|
|
12618
13358
|
HelixHeadlessMap,
|
|
12619
13359
|
HelixHeadlessMapVueProps,
|
|
@@ -12637,13 +13377,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12637
13377
|
HelixHeadlessMegamenuVueProps,
|
|
12638
13378
|
HelixHeadlessMegamenuVueEvents
|
|
12639
13379
|
>;
|
|
12640
|
-
/** One element covers three kinds of row, and what you give it decides which: - Content in the 'submenu' slot makes the row open a submenu page. - 'checked' makes the row a choice. - With neither, the row is a command. The role follows the kind. A row with 'checked' is 'menuitemcheckbox' with 'aria-checked', and 'exclusive' makes it 'menuitemradio', for a set where only one can be on. A row that opens a page keeps 'menuitem' and sets 'aria-haspopup'. The menu sets whether the row's page is showing as a property, never as an attribute. An attribute written onto your element after it upgrades causes a hydration mismatch. */
|
|
13380
|
+
/** One element covers three kinds of row, and what you give it decides which: - Content in the 'submenu' slot makes the row open a submenu page. - 'checked' makes the row a choice. - With neither, the row is a command. The role follows the kind. A row with 'checked' is 'menuitemcheckbox' with 'aria-checked', and 'exclusive' makes it 'menuitemradio', for a set where only one can be on. A row that opens a page keeps 'menuitem' and sets 'aria-haspopup'. Choosing a choice row checks or unchecks it before 'helix-select' is sent, so a listener reads the new 'checked'. An 'exclusive' row turns on and turns off the 'exclusive' rows next to it. Cancel 'helix-before-toggle' to keep a row as it is and set 'checked' yourself. The menu sets whether the row's page is showing as a property, never as an attribute. An attribute written onto your element after it upgrades causes a hydration mismatch. */
|
|
12641
13381
|
"helix-headless-menu-item": DefineCustomElement<
|
|
12642
13382
|
HelixHeadlessMenuItem,
|
|
12643
13383
|
HelixHeadlessMenuItemVueProps,
|
|
12644
13384
|
HelixHeadlessMenuItemVueEvents
|
|
12645
13385
|
>;
|
|
12646
|
-
/** 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'. 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. */
|
|
13386
|
+
/** 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. */
|
|
12647
13387
|
"helix-headless-menu": DefineCustomElement<
|
|
12648
13388
|
HelixHeadlessMenu,
|
|
12649
13389
|
HelixHeadlessMenuVueProps,
|
|
@@ -12655,7 +13395,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12655
13395
|
HelixHeadlessMeterVueProps,
|
|
12656
13396
|
HelixHeadlessMeterVueEvents
|
|
12657
13397
|
>;
|
|
12658
|
-
/** Renders a real '<nav>', the landmark that screen reader users jump to. Navigation is its own component, separate from 'AppHeader', so you can use it in a header, a footer, or a sidebar. **It renders no links.** Bring your own, mark the current one with 'aria-current="page"', and style them with the 'data-navigation-item' recipe. A router renders its own anchors and cannot render them inside the component's shadow root. The component moves a marker to the current item. It finds the current item by reading 'aria-current', so the attribute that screen readers announce also places the marker. Set 'orientation="vertical"' to stack the destinations in a column, for a sidebar. */
|
|
13398
|
+
/** Renders a real '<nav>', the landmark that screen reader users jump to. Navigation is its own component, separate from 'AppHeader', so you can use it in a header, a footer, or a sidebar. **It renders no links.** Bring your own, mark the current one with 'aria-current="page"', and style them with the 'data-navigation-item' recipe. A router renders its own anchors and cannot render them inside the component's shadow root. The component moves a marker to the current item. It finds the current item by reading 'aria-current', so the attribute that screen readers announce also places the marker. Any value but 'false' counts, so a sidebar of sections on one page can mark the section in view with 'aria-current="location"'. Where several are marked, 'page' wins. Set 'orientation="vertical"' to stack the destinations in a column, for a sidebar. */
|
|
12659
13399
|
"helix-headless-navigation": DefineCustomElement<
|
|
12660
13400
|
HelixHeadlessNavigation,
|
|
12661
13401
|
HelixHeadlessNavigationVueProps,
|
|
@@ -12679,13 +13419,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12679
13419
|
HelixHeadlessNotificationsVueProps,
|
|
12680
13420
|
HelixHeadlessNotificationsVueEvents
|
|
12681
13421
|
>;
|
|
12682
|
-
/** A separate family from 'Input''s 'type="number"'. It renders two buttons, binds four keys 'Input' does not, and handles clamping and stepping. The field is 'type="text"' with 'inputmode="decimal"'. Tested in a real browser, 'type="number"' fails in three ways: - Typing '12e' gives a '.value' of '""', so the element cannot see what you typed. A 'type="text"' field keeps '"12e"'. - The mouse wheel over a focused field changes the value, for example from 5 to 4, when you only meant to scroll the page. - 'selectionStart' is 'null', so the caret cannot be managed. 'inputmode="decimal"' keeps the numeric keypad on phones. Validity
|
|
13422
|
+
/** A separate family from 'Input''s 'type="number"'. It renders two buttons, binds four keys 'Input' does not, and handles clamping and stepping. The field is 'type="text"' with 'inputmode="decimal"'. Tested in a real browser, 'type="number"' fails in three ways: - Typing '12e' gives a '.value' of '""', so the element cannot see what you typed. A 'type="text"' field keeps '"12e"'. - The mouse wheel over a focused field changes the value, for example from 5 to 4, when you only meant to scroll the page. - 'selectionStart' is 'null', so the caret cannot be managed. 'inputmode="decimal"' keeps the numeric keypad on phones. Validity follows the platform's rules: 'min', 'max', and 'step' are checked and reported through the host's own 'setValidity', under the platform's flag names. Stepping is separate from typing, so a number is not corrected while you type it. */
|
|
12683
13423
|
"helix-headless-number-input": DefineCustomElement<
|
|
12684
13424
|
HelixHeadlessNumberInput,
|
|
12685
13425
|
HelixHeadlessNumberInputVueProps,
|
|
12686
13426
|
HelixHeadlessNumberInputVueEvents
|
|
12687
13427
|
>;
|
|
12688
|
-
/** 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. The tree is one tab stop. Up and Down move between rows, Right opens a branch or moves into it, Left closes it or moves to its parent, and Home and End move to the first and last rows. Focus stays on the tree, and 'aria-activedescendant' marks the active row. Each row carries its real level, position, and set size, including in a windowed tree. 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. */
|
|
13428
|
+
/** 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. The tree is one tab stop. Up and Down move between rows, Right opens a branch or moves into it, Left closes it or moves to its parent, and Home and End move to the first and last rows. Typing moves to the next row whose key starts with what was typed, and '*' opens every branch beside the active row. Focus stays on the tree, and 'aria-activedescendant' marks the active row. Each row carries its real level, position, and set size, including in a windowed 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. */
|
|
12689
13429
|
"helix-headless-object-inspector": DefineCustomElement<
|
|
12690
13430
|
HelixHeadlessObjectInspector,
|
|
12691
13431
|
HelixHeadlessObjectInspectorVueProps,
|
|
@@ -12703,7 +13443,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12703
13443
|
HelixHeadlessOptionVueProps,
|
|
12704
13444
|
HelixHeadlessOptionVueEvents
|
|
12705
13445
|
>;
|
|
12706
|
-
/** Outline is a table of contents for a document. 'Navigation' does the same job for a site. The links are your own anchors. A router renders its own '<a>' and cannot render one inside the outline's shadow root, and the hrefs are fragments on the same page. The current section is decided by the headings' positions. An 'IntersectionObserver' with a band near the top fails both ways: when headings are far apart, none is in the band and no section is marked, and when they are close together, several are in the band at once. */
|
|
13446
|
+
/** Outline is a table of contents for a document. 'Navigation' does the same job for a site. The links are your own anchors. A router renders its own '<a>' and cannot render one inside the outline's shadow root, and the hrefs are fragments on the same page. Write the anchors flat, with 'data-level' for their depth, or nested in lists, '<ul><li><a>'. A screen reader hears a nested list's levels; it hears 'data-level' as a flat run of links. The current section is decided by the headings' positions. An 'IntersectionObserver' with a band near the top fails both ways: when headings are far apart, none is in the band and no section is marked, and when they are close together, several are in the band at once. */
|
|
12707
13447
|
"helix-headless-outline": DefineCustomElement<
|
|
12708
13448
|
HelixHeadlessOutline,
|
|
12709
13449
|
HelixHeadlessOutlineVueProps,
|
|
@@ -12715,7 +13455,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12715
13455
|
HelixHeadlessPaginationVueProps,
|
|
12716
13456
|
HelixHeadlessPaginationVueEvents
|
|
12717
13457
|
>;
|
|
12718
|
-
/** A separate element that you place beside 'Pagination', like 'Pagination.Summary', so you choose the direction and order of your footer. It uses 'Select', so it matches a table's filter dropdowns in the same footer, both open and closed. The caret is 'Select''s, so it follows 'currentColor', and the label is a real '<label for>' pointing at the trigger's id. The label sits on the same row as the select. 'Select''s host is a column, and an outer-tree rule overrides a ':host' rule, so the row layout needs no property on 'Select' and nothing added to your markup. An empty 'sizes' renders nothing and does not fall back to the built-in list. 'Pagination' does the same with a single page, and both report it through 'ElementInternals.states'. 'value' is the current size, and 'default-value' is the size from the markup. Changing it dispatches 'helix-before-change'. Re-querying and returning to page one is up to you, because only you know whether the current position should be kept. */
|
|
13458
|
+
/** A separate element that you place beside 'Pagination', like 'Pagination.Summary', so you choose the direction and order of your footer. It uses 'Select', so it matches a table's filter dropdowns in the same footer, both open and closed. The caret is 'Select''s, so it follows 'currentColor', and the label is a real '<label for>' pointing at the trigger's id. The label sits on the same row as the select. 'Select''s host is a column, and an outer-tree rule overrides a ':host' rule, so the row layout needs no property on 'Select' and nothing added to your markup. An empty 'sizes' renders nothing and does not fall back to the built-in list. 'Pagination' does the same with a single page, and both report it through 'ElementInternals.states'. 'value' is the current size, and 'default-value' is the size from the markup. Changing it dispatches 'helix-before-change', and then 'input' and 'change' once the size has moved, as a native '<select>' sends them together. Re-querying and returning to page one is up to you, because only you know whether the current position should be kept. */
|
|
12719
13459
|
"helix-headless-pagination-size": DefineCustomElement<
|
|
12720
13460
|
HelixHeadlessPaginationSize,
|
|
12721
13461
|
HelixHeadlessPaginationSizeVueProps,
|
|
@@ -12733,7 +13473,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12733
13473
|
HelixHeadlessPinInputVueProps,
|
|
12734
13474
|
HelixHeadlessPinInputVueEvents
|
|
12735
13475
|
>;
|
|
12736
|
-
/** Popover is the general overlay that the specific ones build on. 'Menu' holds commands, 'Select' holds options, and 'Tooltip' holds a description. Popover holds any content you put in it, so it has no keyboard handling of its own. The trigger is slotted and stays your own element. The popover writes nothing onto it, including 'aria-expanded', 'id', and 'tabindex', because changing your markup after upgrade causes a React hydration mismatch. The panel is in the top layer through the popover API, so it needs no 'z-index', and an ancestor with 'overflow: hidden', 'transform', 'filter', or 'contain' does not clip or move it. It opens on click and from a command. 'command="--show"' and the related commands work as they do on 'Dialog' and 'Drawer', so a button anywhere on the page can open the popover with no script. */
|
|
13476
|
+
/** Popover is the general overlay that the specific ones build on. 'Menu' holds commands, 'Select' holds options, and 'Tooltip' holds a description. Popover holds any content you put in it, so it has no keyboard handling of its own. The trigger is slotted and stays your own element. The popover writes nothing onto it, including 'aria-expanded', 'id', and 'tabindex', because changing your markup after upgrade causes a React hydration mismatch. The panel is in the top layer through the popover API, so it needs no 'z-index', and an ancestor with 'overflow: hidden', 'transform', 'filter', or 'contain' does not clip or move it. It opens on click and from a command. 'command="--show"' and the related commands work as they do on 'Dialog' and 'Drawer', so a button anywhere on the page can open the popover with no script. It closes on Escape, on a press outside it, and when focus moves out of the trigger and the panel to somewhere else on the page. It does not trap focus. An 'aria-labelledby' on the host names the panel in place of 'label'. */
|
|
12737
13477
|
"helix-headless-popover": DefineCustomElement<
|
|
12738
13478
|
HelixHeadlessPopover,
|
|
12739
13479
|
HelixHeadlessPopoverVueProps,
|
|
@@ -12745,7 +13485,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12745
13485
|
HelixHeadlessProgressVueProps,
|
|
12746
13486
|
HelixHeadlessProgressVueEvents
|
|
12747
13487
|
>;
|
|
12748
|
-
/** 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 the name to what the code is for. When you pass no name, the value is the name. Most codes hold a URL, and a URL read aloud gives the destination. 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. */
|
|
13488
|
+
/** 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 the name to what the code is for. When you pass no name, the value is the name. Most codes hold a URL, and a URL read aloud gives the destination. 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, and the element fires 'error'. */
|
|
12749
13489
|
"helix-headless-qr-code": DefineCustomElement<
|
|
12750
13490
|
HelixHeadlessQrCode,
|
|
12751
13491
|
HelixHeadlessQrCodeVueProps,
|
|
@@ -12787,13 +13527,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12787
13527
|
HelixHeadlessScrollAreaVueProps,
|
|
12788
13528
|
HelixHeadlessScrollAreaVueEvents
|
|
12789
13529
|
>;
|
|
12790
|
-
/** 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. */
|
|
13530
|
+
/** 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. In the open list the arrow keys, Home, End, PageUp, PageDown and typed letters move the highlight, and Enter, Space or a click chooses it and closes the list. Tab closes the list and moves on. On the closed trigger, ArrowDown, Enter and Space open the list on the chosen option, ArrowUp opens it on the chosen or last option, Home and End open it on the first or last, and typed letters choose the option whose words start with them, as a native '<select>' does. */
|
|
12791
13531
|
"helix-headless-select": DefineCustomElement<
|
|
12792
13532
|
HelixHeadlessSelect,
|
|
12793
13533
|
HelixHeadlessSelectVueProps,
|
|
12794
13534
|
HelixHeadlessSelectVueEvents
|
|
12795
13535
|
>;
|
|
12796
|
-
/**
|
|
13536
|
+
/** A skeleton is hidden from screen readers unless it has a 'label'. An empty placeholder has nothing to say, and a page of them would be a page of unnamed shapes. Tell a screen reader that a region is loading on the region itself: set 'aria-busy="true"' on it while it loads, and put a 'Loader' or a status message in it. Set 'label' on one skeleton to have it read out by name, such as "Loading profile", when a reader reaches it. The role and the name are set through 'ElementInternals', which writes no attributes. There is no 'shape' property. Whether a placeholder is a line, a block, or a circle is presentation, which belongs to the styled tier. */
|
|
12797
13537
|
"helix-headless-skeleton": DefineCustomElement<
|
|
12798
13538
|
HelixHeadlessSkeleton,
|
|
12799
13539
|
HelixHeadlessSkeletonVueProps,
|
|
@@ -12811,7 +13551,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12811
13551
|
HelixHeadlessSliderVueProps,
|
|
12812
13552
|
HelixHeadlessSliderVueEvents
|
|
12813
13553
|
>;
|
|
12814
|
-
/** Takes its numbers from the 'values' attribute. The other charts read a table, but a table behind a small trend line would be read aloud row by row. Set 'values' to the data and 'label' to the one sentence a screen reader announces.
|
|
13554
|
+
/** Takes its numbers from the 'values' attribute. The other charts read a table, but a table behind a small trend line would be read aloud row by row. Set 'values' to the data and 'label' to the one sentence a screen reader announces. Use 'for' when a sparkline has a real table behind it. 'for' wins when both are set. Without a 'label' the sparkline is decorative and 'aria-hidden', for example beside a stat that already says "Sessions, 1,102". With a 'label' it is an image named by that sentence. Place it beside a 'Stat', because a change beside a figure is a second fact, as 'Stat''s own spec says. 'Trend' is composed the same way. The component writes the properties listed below, and the stylesheet that draws the sparkline reads them. Do not set them yourself. They carry numbers the component computes and CSS cannot, so a stylesheet can draw the sparkline without measuring anything. */
|
|
12815
13555
|
"helix-headless-sparkline": DefineCustomElement<
|
|
12816
13556
|
HelixHeadlessSparkline,
|
|
12817
13557
|
HelixHeadlessSparklineVueProps,
|
|
@@ -12823,13 +13563,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12823
13563
|
HelixHeadlessSpeedDialItemVueProps,
|
|
12824
13564
|
HelixHeadlessSpeedDialItemVueEvents
|
|
12825
13565
|
>;
|
|
12826
|
-
/** 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, checkable items
|
|
13566
|
+
/** 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. */
|
|
12827
13567
|
"helix-headless-speed-dial": DefineCustomElement<
|
|
12828
13568
|
HelixHeadlessSpeedDial,
|
|
12829
13569
|
HelixHeadlessSpeedDialVueProps,
|
|
12830
13570
|
HelixHeadlessSpeedDialVueEvents
|
|
12831
13571
|
>;
|
|
12832
|
-
/** 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'. Drag it with a pointer or move it with the arrow keys,
|
|
13572
|
+
/** 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'. */
|
|
12833
13573
|
"helix-headless-splitter": DefineCustomElement<
|
|
12834
13574
|
HelixHeadlessSplitter,
|
|
12835
13575
|
HelixHeadlessSplitterVueProps,
|
|
@@ -12865,19 +13605,19 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12865
13605
|
HelixHeadlessSwitchVueProps,
|
|
12866
13606
|
HelixHeadlessSwitchVueEvents
|
|
12867
13607
|
>;
|
|
12868
|
-
/** Sets its own role, because a grid of elements has no table structure for assistive technology otherwise. 'header' makes the cell a
|
|
13608
|
+
/** 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. */
|
|
12869
13609
|
"helix-headless-table-cell": DefineCustomElement<
|
|
12870
13610
|
HelixHeadlessTableCell,
|
|
12871
13611
|
HelixHeadlessTableCellVueProps,
|
|
12872
13612
|
HelixHeadlessTableCellVueEvents
|
|
12873
13613
|
>;
|
|
12874
|
-
/** Each column provides both its heading and its grid track. Adding a column adds a track, and removing one removes it. 'Table''s 'columns' is applied one track at a time to the columns declared under it: - A heading name in the list affects only its own column's width. - A list longer or shorter than the columns is trimmed or shared. - A column's own 'width' overrides the track in its place. This protects the table from a track list that contains the headings by mistake, which is invalid CSS that the grid ignores silently, drawing the whole table as one column. Every per-column setting goes on the column, so 'DataTable' needs no column configuration object: - 'field' names the key the cell reads. - 'sortable' lets people sort by the column. - 'text-align' sets which edge the values line up against. - 'cell' takes a function for anything 'field' alone cannot express. The same element works in both 'Table' and 'DataTable'. It is identified by a flag, so the two roots share nothing else. The column generates no box of its own, the same as a row. The heading is a grid item of the table, so it lines up with the cells below it. 'hidden' takes the column out of the grid, both its heading and its track, so the other columns keep their widths and every row keeps its cells under their headings. 'hidden="until-found"' keeps the track and leaves the heading drawn, as it does on every Helix element. 'DataTable' leaves out the cells under a hidden column. In a 'Table' the cells are markup you wrote, so hide them with the column: a row with more cells than the table has tracks wraps onto the next line. A heading that does something holds a control.
|
|
13614
|
+
/** Each column provides both its heading and its grid track. Adding a column adds a track, and removing one removes it. 'Table''s 'columns' is applied one track at a time to the columns declared under it: - A heading name in the list affects only its own column's width. - A list longer or shorter than the columns is trimmed or shared. - A column's own 'width' overrides the track in its place. This protects the table from a track list that contains the headings by mistake, which is invalid CSS that the grid ignores silently, drawing the whole table as one column. Every per-column setting goes on the column, so 'DataTable' needs no column configuration object: - 'field' names the key the cell reads. - 'sortable' lets people sort by the column. - 'text-align' sets which edge the values line up against. - 'cell' takes a function for anything 'field' alone cannot express. The same element works in both 'Table' and 'DataTable'. It is identified by a flag, so the two roots share nothing else. The column generates no box of its own, the same as a row. The heading is a grid item of the table, so it lines up with the cells below it. 'hidden' takes the column out of the grid, both its heading and its track, so the other columns keep their widths and every row keeps its cells under their headings. 'hidden="until-found"' keeps the track and leaves the heading drawn, as it does on every Helix element. 'DataTable' leaves out the cells under a hidden column. In a 'Table' the cells are markup you wrote, so hide them with the column: a row with more cells than the table has tracks wraps onto the next line. A heading that does something holds a control. In a 'Table' a column header is not focusable, so a sortable heading contains a '<button>', which is the pattern for a sortable table and the only way to reach the sort by keyboard. In a 'DataTable' the heading is a cell of the grid, reached with the arrow keys, and its controls with Enter or F2. A resizable column has a 'separator' on its end edge, moved by dragging or with the arrow keys. In a table with reorderable columns, each column has a grip that the table moves. */
|
|
12875
13615
|
"helix-headless-table-column": DefineCustomElement<
|
|
12876
13616
|
HelixHeadlessTableColumn,
|
|
12877
13617
|
HelixHeadlessTableColumnVueProps,
|
|
12878
13618
|
HelixHeadlessTableColumnVueEvents
|
|
12879
13619
|
>;
|
|
12880
|
-
/** 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', and '
|
|
13620
|
+
/** 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. A column with 'sortable' and a 'field' 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. 'helix-sort' asks first, so you can refuse it and reorder the rows yourself. 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. */
|
|
12881
13621
|
"helix-headless-table": DefineCustomElement<
|
|
12882
13622
|
HelixHeadlessTable,
|
|
12883
13623
|
HelixHeadlessTableVueProps,
|
|
@@ -12907,7 +13647,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12907
13647
|
HelixHeadlessTabVueProps,
|
|
12908
13648
|
HelixHeadlessTabVueEvents
|
|
12909
13649
|
>;
|
|
12910
|
-
/** A label that people can optionally remove. 'dismissible' is the difference from a badge: a badge shows a state that people cannot change, and a tag names something they can remove. The remove button sends 'helix-dismiss'. The tag does not remove itself, because your code owns the list it is in, so remove it in your handler. A listener can cancel 'helix-dismiss', and 'dismiss()' then returns 'false'. */
|
|
13650
|
+
/** A label that people can optionally remove. 'dismissible' is the difference from a badge: a badge shows a state that people cannot change, and a tag names something they can remove. The remove button sends 'helix-dismiss'. The tag does not remove itself, because your code owns the list it is in, so remove it in your handler. A listener can cancel 'helix-dismiss', and 'dismiss()' then returns 'false'. When the handler removes a tag whose remove button has focus, focus moves to the next tag's remove button, or to the previous one's after the last tag. The remove button is named for its tag, such as "Remove Apple", so a list of buttons says which tag each one removes. Write '{label}' in 'dismiss-label' to put the tag's words somewhere else, such as 'dismiss-label="{label} entfernen"'. */
|
|
12911
13651
|
"helix-headless-tag": DefineCustomElement<
|
|
12912
13652
|
HelixHeadlessTag,
|
|
12913
13653
|
HelixHeadlessTagVueProps,
|
|
@@ -12919,7 +13659,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12919
13659
|
HelixHeadlessTextareaVueProps,
|
|
12920
13660
|
HelixHeadlessTextareaVueEvents
|
|
12921
13661
|
>;
|
|
12922
|
-
/** The list is a 'TimePicker', which you can also use on its own, for example in a settings pane. This element adds the field, the overlay, and the form association, the same arrangement Date Input has with 'DatePicker' and Color Input has with 'ColorPicker'. You can type a time or pick one. The list offers times at a step, and the field lets you enter any time, such as '09:07'. The value is always 'HH:mm' on a 24-hour clock, because that is what the form submits, what 'min' and 'max' compare against, and what sorts correctly as a string. While idle, the field shows the time in the user's locale format. Once the caret is in the field, it shows the value itself, because a formatted time such as '2:30 PM' cannot be typed back and 'Intl' has no parser for it. */
|
|
13662
|
+
/** The list is a 'TimePicker', which you can also use on its own, for example in a settings pane. This element adds the field, the overlay, and the form association, the same arrangement Date Input has with 'DatePicker' and Color Input has with 'ColorPicker'. You can type a time or pick one. The list offers times at a step, and the field lets you enter any time, such as '09:07'. The value is always 'HH:mm' on a 24-hour clock, because that is what the form submits, what 'min' and 'max' compare against, and what sorts correctly as a string. While idle, the field shows the time in the user's locale format. Once the caret is in the field, it shows the value itself, because a formatted time such as '2:30 PM' cannot be typed back and 'Intl' has no parser for it. Typing sends 'input' on each keystroke and 'change' when you leave the field. In the list, the arrow keys, typed digits and PageUp and PageDown move through the times, and Enter, Space or a click chooses one and closes the panel. With 'variant="wheels"' each wheel moves the time as you turn it, the panel stays open, and Enter or Escape closes it. */
|
|
12923
13663
|
"helix-headless-time-input": DefineCustomElement<
|
|
12924
13664
|
HelixHeadlessTimeInput,
|
|
12925
13665
|
HelixHeadlessTimeInputVueProps,
|
|
@@ -12949,7 +13689,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12949
13689
|
HelixHeadlessToastItemVueProps,
|
|
12950
13690
|
HelixHeadlessToastItemVueEvents
|
|
12951
13691
|
>;
|
|
12952
|
-
/** The region and its items are one family because a live region must be in the document before a message is added to it. Assistive technology often does not announce a region that arrives already holding its message. 'Radio.Group' is part of its family for the same reason. **The region is polite, never assertive.** 'role="alert"' interrupts whatever a screen reader is reading. For something that cannot wait, use a 'Dialog', which stops the page for every user. **The region never creates or removes items.** You render items and remove them. An item requests closing with a cancelable 'helix-dismiss' event. A dismissed item hides itself and stays in the DOM, so your framework's state and the DOM stay in sync. It hides on its own unless you set 'open', which makes the state yours. There is no 'toast.show()'. For a 'toast()' function, write a small one over your app's state, which also lets you render the same messages on the server, in a test, or more than once. */
|
|
13692
|
+
/** The region and its items are one family because a live region must be in the document before a message is added to it. Assistive technology often does not announce a region that arrives already holding its message. 'Radio.Group' is part of its family for the same reason. **The region is polite, never assertive.** 'role="alert"' interrupts whatever a screen reader is reading. For something that cannot wait, use a 'Dialog', which stops the page for every user. **The region never creates or removes items.** You render items and remove them. An item requests closing with a cancelable 'helix-dismiss' event. A dismissed item hides itself and stays in the DOM, so your framework's state and the DOM stay in sync. It hides on its own unless you set 'open', which makes the state yours. There is no 'toast.show()'. For a 'toast()' function, write a small one over your app's state, which also lets you render the same messages on the server, in a test, or more than once. **The stack is in the top layer.** The 'region' part is a 'popover="manual"' shown while a message is showing, and shown again above a modal dialog that opened after it. Position the 'region' part, which is the box in the top layer. While a modal 'Dialog', 'Drawer' or 'Lightbox' is open, the browser makes everything outside it inert, the stack included, so a message stays visible and its actions cannot be pressed. Where the browser has 'ariaNotify', a message that arrives then is announced through it. For a message with an action, render a second region inside the dialog. When a message with focus inside it is dismissed, focus moves to the next message, then the one before it, then back to where it was before it entered the stack. */
|
|
12953
13693
|
"helix-headless-toast": DefineCustomElement<
|
|
12954
13694
|
HelixHeadlessToast,
|
|
12955
13695
|
HelixHeadlessToastVueProps,
|
|
@@ -12967,43 +13707,43 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
12967
13707
|
HelixHeadlessToggleVueProps,
|
|
12968
13708
|
HelixHeadlessToggleVueEvents
|
|
12969
13709
|
>;
|
|
12970
|
-
/** 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. */
|
|
13710
|
+
/** 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 nested composite, such as a 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. */
|
|
12971
13711
|
"helix-headless-toolbar": DefineCustomElement<
|
|
12972
13712
|
HelixHeadlessToolbar,
|
|
12973
13713
|
HelixHeadlessToolbarVueProps,
|
|
12974
13714
|
HelixHeadlessToolbarVueEvents
|
|
12975
13715
|
>;
|
|
12976
|
-
/** The trigger is slotted and 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. Wrapping the trigger is the convenient form. Use it where the trigger already has an accessible name, because the tooltip cannot describe a slotted trigger: an IDREF cannot cross a shadow boundary. To add a description, place the tooltip beside the trigger and name the trigger with 'for': '''html <helix-headless-button id="save" aria-describedby="save-tip">Save</helix-headless-button> <helix-headless-tooltip id="save-tip" for="save" content="Save your work"></helix-headless-tooltip> ''' Write the 'aria-describedby' yourself, pointing at the tooltip host. Setting it at runtime causes a hydration mismatch that React does not fix. With 'for', the tooltip warns once on first open if the attribute is missing. The tooltip shows on hover and on focus. It hides on pointer leave, on blur, on Escape, and when the trigger is activated. */
|
|
13716
|
+
/** The trigger is slotted and 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. Wrapping the trigger is the convenient form. Use it where the trigger already has an accessible name, because the tooltip cannot describe a slotted trigger: an IDREF cannot cross a shadow boundary. To add a description, place the tooltip beside the trigger and name the trigger with 'for': '''html <helix-headless-button id="save" aria-describedby="save-tip">Save</helix-headless-button> <helix-headless-tooltip id="save-tip" for="save" content="Save your work"></helix-headless-tooltip> ''' Write the 'aria-describedby' yourself, pointing at the tooltip host. Setting it at runtime causes a hydration mismatch that React does not fix. With 'for', the tooltip warns once on first open if the attribute is missing. 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. Once one tooltip is showing, moving to another trigger shows its tooltip with no 'delay', and the first one hides. The same holds for 300 milliseconds after a tooltip hides. */
|
|
12977
13717
|
"helix-headless-tooltip": DefineCustomElement<
|
|
12978
13718
|
HelixHeadlessTooltip,
|
|
12979
13719
|
HelixHeadlessTooltipVueProps,
|
|
12980
13720
|
HelixHeadlessTooltipVueEvents
|
|
12981
13721
|
>;
|
|
12982
|
-
/** The root holds the order of the stops: which stop is current, what Next and Back do, and when the tour is finished. Each stop holds its target, and you write all the text. **The spotlight is a shadow.** The scrim is a box the size of the current target with a very large 'box-shadow' spread, and the shadow paints the darkness. A 'clip-path' on a full-screen scrim breaks as soon as an element between the scrim and the viewport is transformed. The root measures the target's position in the browser. Nothing is measured on the server, because a tour starts only on request. */
|
|
13722
|
+
/** The root holds the order of the stops: which stop is current, what Next and Back do, and when the tour is finished. Each stop holds its target, and you write all the text. **The spotlight is a shadow.** The scrim is a box the size of the current target with a very large 'box-shadow' spread, and the shadow paints the darkness. A 'clip-path' on a full-screen scrim breaks as soon as an element between the scrim and the viewport is transformed. The root measures the target's position in the browser. Nothing is measured on the server, because a tour starts only on request. 'open', 'default-open', 'helix-before-open', 'helix-before-close' and 'toggle' work as they do on 'Dialog'. Setting 'open' starts the run, and 'skip()' and 'requestOpen(false)' end it early. **Focus follows the run.** Opening moves focus to the first stop's panel, and moving on from a control in a stop moves it to the next one. Ending the tour puts focus back on the element that had it when the tour opened, unless you have moved it somewhere else on the page. A stop does not trap focus, so you can still 'Tab' out to the element it describes. */
|
|
12983
13723
|
"helix-headless-tour": DefineCustomElement<
|
|
12984
13724
|
HelixHeadlessTour,
|
|
12985
13725
|
HelixHeadlessTourVueProps,
|
|
12986
13726
|
HelixHeadlessTourVueEvents
|
|
12987
13727
|
>;
|
|
12988
|
-
/** A stop names its target with 'for' and holds the content you put in it. The stop handles three things: - **Placement.** The panel is anchored to the target by the same floating positioning as the other Helix overlays. - **Stacking.** The panel is a popover, so it is in the top layer and shows above dialogs, scrolling regions, and other stacking contexts. - **Visibility.** The stop shows when it is 'current', which the root sets. Put any content in the stop, such as a 'Card', or a heading and a line of text. There are no fixed title or body parts. **The buttons are slot fallback.** With nothing in the 'actions' slot, you get Back, Next, and Skip, already wired. Slot your own 'actions' and drive them with 'next()', 'back()', and 'skip()' on the root. **'for' is an id, as with 'Tooltip'**, so you can point at a target elsewhere on the page from markup. It resolves against the stop's root node, so a stop inside a shadow tree points at a target in that tree. */
|
|
13728
|
+
/** A stop names its target with 'for' and holds the content you put in it. The stop handles three things: - **Placement.** The panel is anchored to the target by the same floating positioning as the other Helix overlays. - **Stacking.** The panel is a popover, so it is in the top layer and shows above dialogs, scrolling regions, and other stacking contexts. - **Visibility.** The stop shows when it is 'current', which the root sets. Put any content in the stop, such as a 'Card', or a heading and a line of text. There are no fixed title or body parts. **The buttons are slot fallback.** With nothing in the 'actions' slot, you get Back, Next, and Skip, already wired. Slot your own 'actions' and drive them with 'next()', 'back()', and 'skip()' on the root. **'for' is an id, as with 'Tooltip'**, so you can point at a target elsewhere on the page from markup. It resolves against the stop's root node, so a stop inside a shadow tree points at a target in that tree. The panel is a 'group', named by the first heading in the stop's content, and only while the stop is shown. 'focus()' moves focus to the panel, which is what the tour does when it opens or moves on. */
|
|
12989
13729
|
"helix-headless-tour-stop": DefineCustomElement<
|
|
12990
13730
|
HelixHeadlessTourStop,
|
|
12991
13731
|
HelixHeadlessTourStopVueProps,
|
|
12992
13732
|
HelixHeadlessTourStopVueEvents
|
|
12993
13733
|
>;
|
|
12994
|
-
/** '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. */
|
|
13734
|
+
/** '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. */
|
|
12995
13735
|
"helix-headless-tree-item": DefineCustomElement<
|
|
12996
13736
|
HelixHeadlessTreeItem,
|
|
12997
13737
|
HelixHeadlessTreeItemVueProps,
|
|
12998
13738
|
HelixHeadlessTreeItemVueEvents
|
|
12999
13739
|
>;
|
|
13000
|
-
/** 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. */
|
|
13740
|
+
/** 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. */
|
|
13001
13741
|
"helix-headless-tree": DefineCustomElement<
|
|
13002
13742
|
HelixHeadlessTree,
|
|
13003
13743
|
HelixHeadlessTreeVueProps,
|
|
13004
13744
|
HelixHeadlessTreeVueEvents
|
|
13005
13745
|
>;
|
|
13006
|
-
/** A trend has three parts: a direction of up, down, or neutral, the metric that moved, and a label for the period it moved over. The arrow shows the direction and its color shows whether the change is good. Direction and judgment are separate properties because they are separate facts. 'good' is unset by default, so a trend with no judgment is gray. For churn, latency, error rate, cost, and bounce rate, up is bad. Set the metric's polarity once with 'good', and the component picks the color from the direction. The direction is also written as a word, so a screen reader reads it. The styled tier hides 'part="direction"' visually and keeps it in the accessibility tree. The metric and the label are bare slots. An element that assigned its own slot on connect would add an attribute to its host after upgrade, which the React server markup did not have. */
|
|
13746
|
+
/** A trend has three parts: a direction of up, down, or neutral, the metric that moved, and a label for the period it moved over. The arrow shows the direction and its color shows whether the change is good. Direction and judgment are separate properties because they are separate facts. 'good' is unset by default, so a trend with no judgment is gray. For churn, latency, error rate, cost, and bounce rate, up is bad. Set the metric's polarity once with 'good', and the component picks the color from the direction. The direction is also written as a word, so a screen reader reads it. The styled tier hides 'part="direction"' visually and keeps it in the accessibility tree. The words are properties, 'up-label' through 'worse-label', so a page in another language can set its own. The metric and the label are bare slots. An element that assigned its own slot on connect would add an attribute to its host after upgrade, which the React server markup did not have. */
|
|
13007
13747
|
"helix-headless-trend": DefineCustomElement<
|
|
13008
13748
|
HelixHeadlessTrend,
|
|
13009
13749
|
HelixHeadlessTrendVueProps,
|
|
@@ -13033,7 +13773,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
13033
13773
|
HelixHeadlessVideoVueProps,
|
|
13034
13774
|
HelixHeadlessVideoVueEvents
|
|
13035
13775
|
>;
|
|
13036
|
-
/** The items arrive as data: - 'for' names a '<script type="application/json">' that holds an array of objects. - A '<template>' child defines one row. Elements with 'data-field="name"' are filled with that field of the item. Both are markup. React hydration skips every property it would have to set imperatively, so an 'items' property would be lost, and light-DOM children would all exist before anything could window them. The JSON text is one node whatever the row count. For assistive technology the list exposes the rendered window with 'aria-setsize'. Charts that use the same 'for="<id>"' shape render an accessible '<table>', and ten thousand rows in one is the cost this component avoids. 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. */
|
|
13776
|
+
/** The items arrive as data: - 'for' names a '<script type="application/json">' that holds an array of objects. - A '<template>' child defines one row. Elements with 'data-field="name"' are filled with that field of the item. Both are markup. React hydration skips every property it would have to set imperatively, so an 'items' property would be lost, and light-DOM children would all exist before anything could window them. The JSON text is one node whatever the row count. For assistive technology the list exposes the rendered window with 'aria-setsize'. Charts that use the same 'for="<id>"' shape render an accessible '<table>', and ten thousand rows in one is the cost this component avoids. The list follows the source: editing the script's text, or replacing the script under the same id, draws the new rows. A row that stays in view keeps its element as the list scrolls, and the row holding focus stays drawn when it scrolls out, so a link or a button in a row keeps focus. 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. */
|
|
13037
13777
|
"helix-headless-virtual-list": DefineCustomElement<
|
|
13038
13778
|
HelixHeadlessVirtualList,
|
|
13039
13779
|
HelixHeadlessVirtualListVueProps,
|