@fusion.dev/helix-headless 0.156.0 → 0.158.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 +1085 -66
- package/dist/command/root/command-root.d.ts +19 -5
- package/dist/command/root/command-root.js +14 -4
- package/dist/data-table/root/data-table-root.js +5 -2
- package/dist/drilldown/item/drilldown-item.d.ts +49 -1
- package/dist/drilldown/item/drilldown-item.js +77 -17
- package/dist/drilldown/root/drilldown-root.d.ts +45 -5
- package/dist/drilldown/root/drilldown-root.js +51 -5
- package/dist/element-events.generated.js +1 -1
- package/dist/filter-input/menu/filter-menu.d.ts +1 -0
- package/dist/filter-input/menu/filter-menu.js +4 -4
- package/dist/list/item/list-item.d.ts +15 -1
- package/dist/list/item/list-item.js +20 -1
- package/dist/list/root/list-root.d.ts +29 -1
- package/dist/list/root/list-root.js +44 -10
- package/dist/listbox/root/listbox-root.d.ts +19 -2
- package/dist/listbox/root/listbox-root.js +16 -8
- package/dist/map/root/map-root.d.ts +4 -0
- package/dist/map/root/map-root.js +1 -1
- package/dist/megamenu/root/megamenu-root.d.ts +50 -13
- package/dist/megamenu/root/megamenu-root.js +44 -6
- package/dist/menu/item/menu-item.d.ts +24 -1
- package/dist/menu/item/menu-item.js +42 -2
- package/dist/menu/root/menu-root.d.ts +126 -11
- package/dist/menu/root/menu-root.js +336 -26
- package/dist/notifications/root/notifications-root.d.ts +20 -0
- package/dist/notifications/root/notifications-root.js +32 -1
- package/dist/number-input/root/number-input-root.d.ts +7 -4
- package/dist/number-input/root/number-input-root.js +3 -3
- package/dist/progress/root/progress-root.js +1 -1
- package/dist/select/root/select-root.d.ts +8 -1
- package/dist/select/root/select-root.js +8 -5
- package/dist/skeleton/root/skeleton-root.d.ts +2 -1
- package/dist/skeleton/root/skeleton-root.js +1 -1
- package/dist/toast/item/toast-item.d.ts +26 -0
- package/dist/toast/item/toast-item.js +55 -3
- package/dist/toast/root/toast-root.d.ts +32 -0
- package/dist/toast/root/toast-root.js +47 -2
- package/dist/video/root/video-root.d.ts +1 -0
- package/dist/video/root/video-root.js +9 -9
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +1 -0
- package/dist/video-playlist/menu/video-playlist-menu.js +1 -1
- package/lint.json +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +653 -74
- package/types/vue.d.ts +133 -16
- package/types/words.d.ts +14 -0
package/types/jsx.d.ts
CHANGED
|
@@ -8419,6 +8419,13 @@ hydration, or diffed by a framework, it comes back holding whatever the
|
|
|
8419
8419
|
last reader did rather than what the author wrote. `:state(open)` carries
|
|
8420
8420
|
the resolved state for stylesheets, which is what the mirror is for. */
|
|
8421
8421
|
open?: (HelixHeadlessCommand["open"]) | undefined;
|
|
8422
|
+
/** Whether a command is kept by the filter: a function given the command's
|
|
8423
|
+
words and the filter, trimmed, that returns `true` to keep it showing, as
|
|
8424
|
+
React Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
|
|
8425
|
+
|
|
8426
|
+
Absent, a command is kept where its words hold the filter, in any case. A
|
|
8427
|
+
property only, there being no way to write a function in markup. */
|
|
8428
|
+
filterMatch?: (HelixHeadlessCommand["filterMatch"]) | undefined;
|
|
8422
8429
|
/** The commands as data, for a palette too long to draw whole: each a value,
|
|
8423
8430
|
which is also its words, or a record with a `value`, a `label` and
|
|
8424
8431
|
`disabled`. Handed to the list, which draws only the commands in sight and
|
|
@@ -8548,6 +8555,13 @@ hydration, or diffed by a framework, it comes back holding whatever the
|
|
|
8548
8555
|
last reader did rather than what the author wrote. `:state(open)` carries
|
|
8549
8556
|
the resolved state for stylesheets, which is what the mirror is for. */
|
|
8550
8557
|
"prop:open"?: (HelixHeadlessCommand["open"]) | undefined;
|
|
8558
|
+
/** Whether a command is kept by the filter: a function given the command's
|
|
8559
|
+
words and the filter, trimmed, that returns `true` to keep it showing, as
|
|
8560
|
+
React Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
|
|
8561
|
+
|
|
8562
|
+
Absent, a command is kept where its words hold the filter, in any case. A
|
|
8563
|
+
property only, there being no way to write a function in markup. */
|
|
8564
|
+
"prop:filterMatch"?: (HelixHeadlessCommand["filterMatch"]) | undefined;
|
|
8551
8565
|
/** The commands as data, for a palette too long to draw whole: each a value,
|
|
8552
8566
|
which is also its words, or a record with a `value`, a `label` and
|
|
8553
8567
|
`disabled`. Handed to the list, which draws only the commands in sight and
|
|
@@ -12308,6 +12322,16 @@ export type HelixHeadlessDrilldownItemHelixSelectElementEvent =
|
|
|
12308
12322
|
export type HelixHeadlessDrilldownItemProps = {
|
|
12309
12323
|
/** Whether the row can be reached at all. */
|
|
12310
12324
|
disabled?: (HelixHeadlessDrilldownItem["disabled"]) | undefined;
|
|
12325
|
+
/** Whether the link downloads the file when the row is chosen. Only
|
|
12326
|
+
meaningful beside an `href`, and only for a file served from this origin. */
|
|
12327
|
+
download?: (HelixHeadlessDrilldownItem["download"]) | undefined;
|
|
12328
|
+
/** The URL the row links to. Setting it renders the row as a link, unless the
|
|
12329
|
+
row opens a page or is disabled. */
|
|
12330
|
+
href?: (HelixHeadlessDrilldownItem["href"]) | undefined;
|
|
12331
|
+
/** The link's `rel`. Set it whenever you set `target="_blank"`. */
|
|
12332
|
+
rel?: (HelixHeadlessDrilldownItem["rel"]) | undefined;
|
|
12333
|
+
/** Where the link opens, for rows that should open outside the current page. */
|
|
12334
|
+
target?: (HelixHeadlessDrilldownItem["target"]) | undefined;
|
|
12311
12335
|
/** Identifies the row to your event listeners. */
|
|
12312
12336
|
value?: (HelixHeadlessDrilldownItem["value"]) | undefined;
|
|
12313
12337
|
/** Whether this row holds the region's tab stop. Set by the drill-down.
|
|
@@ -12332,6 +12356,16 @@ lands inside this shadow root instead. */
|
|
|
12332
12356
|
export type HelixHeadlessDrilldownItemSolidJsProps = {
|
|
12333
12357
|
/** Whether the row can be reached at all. */
|
|
12334
12358
|
"prop:disabled"?: (HelixHeadlessDrilldownItem["disabled"]) | undefined;
|
|
12359
|
+
/** Whether the link downloads the file when the row is chosen. Only
|
|
12360
|
+
meaningful beside an `href`, and only for a file served from this origin. */
|
|
12361
|
+
"prop:download"?: (HelixHeadlessDrilldownItem["download"]) | undefined;
|
|
12362
|
+
/** The URL the row links to. Setting it renders the row as a link, unless the
|
|
12363
|
+
row opens a page or is disabled. */
|
|
12364
|
+
"prop:href"?: (HelixHeadlessDrilldownItem["href"]) | undefined;
|
|
12365
|
+
/** The link's `rel`. Set it whenever you set `target="_blank"`. */
|
|
12366
|
+
"prop:rel"?: (HelixHeadlessDrilldownItem["rel"]) | undefined;
|
|
12367
|
+
/** Where the link opens, for rows that should open outside the current page. */
|
|
12368
|
+
"prop:target"?: (HelixHeadlessDrilldownItem["target"]) | undefined;
|
|
12335
12369
|
/** Identifies the row to your event listeners. */
|
|
12336
12370
|
"prop:value"?: (HelixHeadlessDrilldownItem["value"]) | undefined;
|
|
12337
12371
|
/** Whether this row holds the region's tab stop. Set by the drill-down.
|
|
@@ -12362,6 +12396,9 @@ export type HelixHeadlessDrilldownElementEvent<E = Event> = TypedEvent<
|
|
|
12362
12396
|
HelixHeadlessDrilldown,
|
|
12363
12397
|
E
|
|
12364
12398
|
>;
|
|
12399
|
+
/** `helix-navigate` event type */
|
|
12400
|
+
export type HelixHeadlessDrilldownHelixNavigateElementEvent =
|
|
12401
|
+
HelixHeadlessDrilldownElementEvent<HelixNavigateEvent>;
|
|
12365
12402
|
/** `helix-select` event type */
|
|
12366
12403
|
export type HelixHeadlessDrilldownHelixSelectElementEvent =
|
|
12367
12404
|
HelixHeadlessDrilldownElementEvent<HelixSelectEvent>;
|
|
@@ -12377,6 +12414,14 @@ and wins over this. */
|
|
|
12377
12414
|
"back-label"?: (HelixHeadlessDrilldown["backLabel"]) | undefined;
|
|
12378
12415
|
/** The text of the back button. */
|
|
12379
12416
|
backLabel?: (HelixHeadlessDrilldown["backLabel"]) | undefined;
|
|
12417
|
+
/** Whether the drilldown is a site's navigation: a `navigation` landmark
|
|
12418
|
+
named by `label`, whose pages are lists of links. Without it, each page is
|
|
12419
|
+
a `menu`. */
|
|
12420
|
+
navigation?: (HelixHeadlessDrilldown["navigation"]) | undefined;
|
|
12421
|
+
/** The page showing, as the `value` of the row that opens it. Empty is the
|
|
12422
|
+
top page. Setting it shows that page, and a value no row with a page has
|
|
12423
|
+
shows the top page. */
|
|
12424
|
+
page?: (HelixHeadlessDrilldown["page"]) | undefined;
|
|
12380
12425
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
12381
12426
|
"empty-text"?: (HelixHeadlessDrilldown["emptyText"]) | undefined;
|
|
12382
12427
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
@@ -12392,6 +12437,10 @@ say that without the component knowing what a row looks like. */
|
|
|
12392
12437
|
/** The text shown and announced while the rows load. */
|
|
12393
12438
|
loadingText?: (HelixHeadlessDrilldown["loadingText"]) | undefined;
|
|
12394
12439
|
|
|
12440
|
+
/** Fired before a reader moves into a page or back out of one. `detail.value` is the `value` of the row whose page is about to show, empty for the top page. Cancelable: cancel it to stay on the page showing. */
|
|
12441
|
+
"onhelix-navigate"?: ((
|
|
12442
|
+
e: HelixHeadlessDrilldownHelixNavigateElementEvent,
|
|
12443
|
+
) => void) | undefined;
|
|
12395
12444
|
/** Fired when a row with no page is chosen. Cancelable: canceling it stops the change and leaves the decision to you. */
|
|
12396
12445
|
"onhelix-select"?: ((e: HelixHeadlessDrilldownHelixSelectElementEvent) => void) | undefined;
|
|
12397
12446
|
};
|
|
@@ -12407,6 +12456,14 @@ and wins over this. */
|
|
|
12407
12456
|
"attr:back-label"?: (HelixHeadlessDrilldown["backLabel"]) | undefined;
|
|
12408
12457
|
/** The text of the back button. */
|
|
12409
12458
|
"prop:backLabel"?: (HelixHeadlessDrilldown["backLabel"]) | undefined;
|
|
12459
|
+
/** Whether the drilldown is a site's navigation: a `navigation` landmark
|
|
12460
|
+
named by `label`, whose pages are lists of links. Without it, each page is
|
|
12461
|
+
a `menu`. */
|
|
12462
|
+
"prop:navigation"?: (HelixHeadlessDrilldown["navigation"]) | undefined;
|
|
12463
|
+
/** The page showing, as the `value` of the row that opens it. Empty is the
|
|
12464
|
+
top page. Setting it shows that page, and a value no row with a page has
|
|
12465
|
+
shows the top page. */
|
|
12466
|
+
"prop:page"?: (HelixHeadlessDrilldown["page"]) | undefined;
|
|
12410
12467
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
12411
12468
|
"attr:empty-text"?: (HelixHeadlessDrilldown["emptyText"]) | undefined;
|
|
12412
12469
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
@@ -12421,6 +12478,10 @@ say that without the component knowing what a row looks like. */
|
|
|
12421
12478
|
"attr:loading-text"?: (HelixHeadlessDrilldown["loadingText"]) | undefined;
|
|
12422
12479
|
/** The text shown and announced while the rows load. */
|
|
12423
12480
|
"prop:loadingText"?: (HelixHeadlessDrilldown["loadingText"]) | undefined;
|
|
12481
|
+
/** Fired before a reader moves into a page or back out of one. `detail.value` is the `value` of the row whose page is about to show, empty for the top page. Cancelable: cancel it to stay on the page showing. */
|
|
12482
|
+
"on:helix-navigate"?: ((
|
|
12483
|
+
e: HelixHeadlessDrilldownHelixNavigateElementEvent,
|
|
12484
|
+
) => void) | undefined;
|
|
12424
12485
|
/** Fired when a row with no page is chosen. Cancelable: canceling it stops the change and leaves the decision to you. */
|
|
12425
12486
|
"on:helix-select"?: ((
|
|
12426
12487
|
e: HelixHeadlessDrilldownHelixSelectElementEvent,
|
|
@@ -17348,7 +17409,9 @@ Not reflected, as a state never is. `row-current` is the part a
|
|
|
17348
17409
|
stylesheet draws it from. */
|
|
17349
17410
|
current?: (HelixHeadlessListItem["current"]) | undefined;
|
|
17350
17411
|
/** Takes the row out of reach in a list with `selection-mode`: the arrow keys
|
|
17351
|
-
pass over it and it cannot be selected or acted on.
|
|
17412
|
+
pass over it and it cannot be selected or acted on. In a list with
|
|
17413
|
+
`disabled-behavior="selection"`, it cannot be selected and is reached and
|
|
17414
|
+
acted on as any row is. */
|
|
17352
17415
|
disabled?: (HelixHeadlessListItem["disabled"]) | undefined;
|
|
17353
17416
|
/** The URL the row links to. Leave it empty for a row that is not a link.
|
|
17354
17417
|
|
|
@@ -17384,6 +17447,10 @@ being moved, or the one the drop indicator is beside. Unset otherwise. */
|
|
|
17384
17447
|
Written by the list from its own `value`, and unset where nothing can be
|
|
17385
17448
|
selected, which keeps `aria-selected` off a list that does not select. */
|
|
17386
17449
|
selected?: (HelixHeadlessListItem["selected"]) | undefined;
|
|
17450
|
+
/** Whether `disabled` takes the row out of selection alone, written by a list
|
|
17451
|
+
with `disabled-behavior="selection"`. No attribute: it is coordination
|
|
17452
|
+
between elements, as `focusable` is. */
|
|
17453
|
+
selectionOnly?: (HelixHeadlessListItem["selectionOnly"]) | undefined;
|
|
17387
17454
|
|
|
17388
17455
|
/** The reader pressed Enter on the row, or pressed the row in a list that selects nothing, in a list with `selection-mode`. Read the row from `target`. A row with `href` follows its link instead. */
|
|
17389
17456
|
"onhelix-action"?: ((e: HelixHeadlessListItemHelixActionElementEvent) => void) | undefined;
|
|
@@ -17399,7 +17466,9 @@ Not reflected, as a state never is. `row-current` is the part a
|
|
|
17399
17466
|
stylesheet draws it from. */
|
|
17400
17467
|
"prop:current"?: (HelixHeadlessListItem["current"]) | undefined;
|
|
17401
17468
|
/** Takes the row out of reach in a list with `selection-mode`: the arrow keys
|
|
17402
|
-
pass over it and it cannot be selected or acted on.
|
|
17469
|
+
pass over it and it cannot be selected or acted on. In a list with
|
|
17470
|
+
`disabled-behavior="selection"`, it cannot be selected and is reached and
|
|
17471
|
+
acted on as any row is. */
|
|
17403
17472
|
"prop:disabled"?: (HelixHeadlessListItem["disabled"]) | undefined;
|
|
17404
17473
|
/** The URL the row links to. Leave it empty for a row that is not a link.
|
|
17405
17474
|
|
|
@@ -17435,6 +17504,10 @@ being moved, or the one the drop indicator is beside. Unset otherwise. */
|
|
|
17435
17504
|
Written by the list from its own `value`, and unset where nothing can be
|
|
17436
17505
|
selected, which keeps `aria-selected` off a list that does not select. */
|
|
17437
17506
|
"prop:selected"?: (HelixHeadlessListItem["selected"]) | undefined;
|
|
17507
|
+
/** Whether `disabled` takes the row out of selection alone, written by a list
|
|
17508
|
+
with `disabled-behavior="selection"`. No attribute: it is coordination
|
|
17509
|
+
between elements, as `focusable` is. */
|
|
17510
|
+
"prop:selectionOnly"?: (HelixHeadlessListItem["selectionOnly"]) | undefined;
|
|
17438
17511
|
/** The reader pressed Enter on the row, or pressed the row in a list that selects nothing, in a list with `selection-mode`. Read the row from `target`. A row with `href` follows its link instead. */
|
|
17439
17512
|
"on:helix-action"?: ((e: HelixHeadlessListItemHelixActionElementEvent) => void) | undefined;
|
|
17440
17513
|
|
|
@@ -17472,6 +17545,20 @@ refused, in a `reorderable` list. */
|
|
|
17472
17545
|
/** What screen readers hear when a held row is put back, or a move is
|
|
17473
17546
|
refused, in a `reorderable` list. */
|
|
17474
17547
|
canceledLabel?: (HelixHeadlessList["canceledLabel"]) | undefined;
|
|
17548
|
+
/** What `disabled` takes from a row, in a list that selects: `all`, which
|
|
17549
|
+
passes over the row, or `selection`, which keeps the row out of the
|
|
17550
|
+
selection and lets the keys reach it and Enter or a press act on it, as
|
|
17551
|
+
React Aria's GridList takes `disabledBehavior`.
|
|
17552
|
+
|
|
17553
|
+
Absent is `all`. */
|
|
17554
|
+
"disabled-behavior"?: (HelixHeadlessList["disabledBehavior"]) | undefined;
|
|
17555
|
+
/** What `disabled` takes from a row, in a list that selects: `all`, which
|
|
17556
|
+
passes over the row, or `selection`, which keeps the row out of the
|
|
17557
|
+
selection and lets the keys reach it and Enter or a press act on it, as
|
|
17558
|
+
React Aria's GridList takes `disabledBehavior`.
|
|
17559
|
+
|
|
17560
|
+
Absent is `all`. */
|
|
17561
|
+
disabledBehavior?: (HelixHeadlessList["disabledBehavior"]) | undefined;
|
|
17475
17562
|
/** What screen readers hear when a row is dropped, in a `reorderable` list. */
|
|
17476
17563
|
"dropped-label"?: (HelixHeadlessList["droppedLabel"]) | undefined;
|
|
17477
17564
|
/** What screen readers hear when a row is dropped, in a `reorderable` list. */
|
|
@@ -17604,6 +17691,20 @@ refused, in a `reorderable` list. */
|
|
|
17604
17691
|
/** What screen readers hear when a held row is put back, or a move is
|
|
17605
17692
|
refused, in a `reorderable` list. */
|
|
17606
17693
|
"prop:canceledLabel"?: (HelixHeadlessList["canceledLabel"]) | undefined;
|
|
17694
|
+
/** What `disabled` takes from a row, in a list that selects: `all`, which
|
|
17695
|
+
passes over the row, or `selection`, which keeps the row out of the
|
|
17696
|
+
selection and lets the keys reach it and Enter or a press act on it, as
|
|
17697
|
+
React Aria's GridList takes `disabledBehavior`.
|
|
17698
|
+
|
|
17699
|
+
Absent is `all`. */
|
|
17700
|
+
"attr:disabled-behavior"?: (HelixHeadlessList["disabledBehavior"]) | undefined;
|
|
17701
|
+
/** What `disabled` takes from a row, in a list that selects: `all`, which
|
|
17702
|
+
passes over the row, or `selection`, which keeps the row out of the
|
|
17703
|
+
selection and lets the keys reach it and Enter or a press act on it, as
|
|
17704
|
+
React Aria's GridList takes `disabledBehavior`.
|
|
17705
|
+
|
|
17706
|
+
Absent is `all`. */
|
|
17707
|
+
"prop:disabledBehavior"?: (HelixHeadlessList["disabledBehavior"]) | undefined;
|
|
17607
17708
|
/** What screen readers hear when a row is dropped, in a `reorderable` list. */
|
|
17608
17709
|
"attr:dropped-label"?: (HelixHeadlessList["droppedLabel"]) | undefined;
|
|
17609
17710
|
/** What screen readers hear when a row is dropped, in a `reorderable` list. */
|
|
@@ -17995,6 +18096,14 @@ imperatively later, and nothing is hydrating by then.
|
|
|
17995
18096
|
|
|
17996
18097
|
Here rather than on each control. */
|
|
17997
18098
|
name?: (HelixHeadlessListbox["name"]) | undefined;
|
|
18099
|
+
/** Whether an option is kept by the filter: a function given the option's
|
|
18100
|
+
words and the filter, trimmed, that returns `true` to keep it showing, as
|
|
18101
|
+
React Aria's `Autocomplete` takes `filter`. For matching that ignores
|
|
18102
|
+
accents, matches the start of each word, or matches out of order.
|
|
18103
|
+
|
|
18104
|
+
Absent, an option is kept where its words hold the filter, in any case. A
|
|
18105
|
+
property only, there being no way to write a function in markup. */
|
|
18106
|
+
filterMatch?: (HelixHeadlessListbox["filterMatch"]) | undefined;
|
|
17998
18107
|
/** The options as data, for a list too long to draw whole: each a value,
|
|
17999
18108
|
which is also its words, or a record with a `value`, a `label` and
|
|
18000
18109
|
`disabled`. Set, the list draws only the options in sight, and the ones
|
|
@@ -18285,6 +18394,14 @@ imperatively later, and nothing is hydrating by then.
|
|
|
18285
18394
|
|
|
18286
18395
|
Here rather than on each control. */
|
|
18287
18396
|
"prop:name"?: (HelixHeadlessListbox["name"]) | undefined;
|
|
18397
|
+
/** Whether an option is kept by the filter: a function given the option's
|
|
18398
|
+
words and the filter, trimmed, that returns `true` to keep it showing, as
|
|
18399
|
+
React Aria's `Autocomplete` takes `filter`. For matching that ignores
|
|
18400
|
+
accents, matches the start of each word, or matches out of order.
|
|
18401
|
+
|
|
18402
|
+
Absent, an option is kept where its words hold the filter, in any case. A
|
|
18403
|
+
property only, there being no way to write a function in markup. */
|
|
18404
|
+
"prop:filterMatch"?: (HelixHeadlessListbox["filterMatch"]) | undefined;
|
|
18288
18405
|
/** The options as data, for a list too long to draw whole: each a value,
|
|
18289
18406
|
which is also its words, or a record with a `value`, a `label` and
|
|
18290
18407
|
`disabled`. Set, the list draws only the options in sight, and the ones
|
|
@@ -19855,8 +19972,24 @@ narrow exception the server specs describe covers a mirror that can only
|
|
|
19855
19972
|
become true long after hydration, and a viewport measured before the first
|
|
19856
19973
|
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
19857
19974
|
bandBelow?: (HelixHeadlessMegamenu["bandBelow"]) | undefined;
|
|
19975
|
+
/** How long a pointer leaving the trigger and the panel waits before the panel
|
|
19976
|
+
closes, in milliseconds. The pointer needs the time to cross from the
|
|
19977
|
+
trigger to the panel. */
|
|
19978
|
+
"close-delay"?: (HelixHeadlessMegamenu["closeDelay"] | `${number}`) | undefined;
|
|
19979
|
+
/** How long a pointer leaving the trigger and the panel waits before the panel
|
|
19980
|
+
closes, in milliseconds. The pointer needs the time to cross from the
|
|
19981
|
+
trigger to the panel. */
|
|
19982
|
+
closeDelay?: (HelixHeadlessMegamenu["closeDelay"]) | undefined;
|
|
19858
19983
|
/** The section's name, used for the default trigger and the panel. */
|
|
19859
19984
|
label?: (HelixHeadlessMegamenu["label"]) | undefined;
|
|
19985
|
+
/** How long a pointer rests on the trigger before the panel opens, in
|
|
19986
|
+
milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
|
|
19987
|
+
way somewhere else opens nothing. */
|
|
19988
|
+
"open-delay"?: (HelixHeadlessMegamenu["openDelay"] | `${number}`) | undefined;
|
|
19989
|
+
/** How long a pointer rests on the trigger before the panel opens, in
|
|
19990
|
+
milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
|
|
19991
|
+
way somewhere else opens nothing. */
|
|
19992
|
+
openDelay?: (HelixHeadlessMegamenu["openDelay"]) | undefined;
|
|
19860
19993
|
/** Whether hovering over the trigger opens the panel (`hover`), or only a press
|
|
19861
19994
|
does (`click`).
|
|
19862
19995
|
|
|
@@ -19873,6 +20006,10 @@ the trigger, and it is the default because that is what a navigation bar
|
|
|
19873
20006
|
does. `click` is for a trigger that does something else as well, or a panel
|
|
19874
20007
|
heavy enough that opening it on the way past is rude. */
|
|
19875
20008
|
openOn?: (HelixHeadlessMegamenu["openOn"]) | undefined;
|
|
20009
|
+
/** The side of the trigger a card panel opens on, when there is room. It
|
|
20010
|
+
moves if that side does not fit. A band ignores it, since a band spans the
|
|
20011
|
+
page under its bar. */
|
|
20012
|
+
placement?: (HelixHeadlessMegamenu["placement"]) | undefined;
|
|
19876
20013
|
/** Whether the panel is a card under the trigger or a band across the page.
|
|
19877
20014
|
|
|
19878
20015
|
The resting one is the card, hanging off the trigger and as wide as it
|
|
@@ -19975,8 +20112,24 @@ narrow exception the server specs describe covers a mirror that can only
|
|
|
19975
20112
|
become true long after hydration, and a viewport measured before the first
|
|
19976
20113
|
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
19977
20114
|
"prop:bandBelow"?: (HelixHeadlessMegamenu["bandBelow"]) | undefined;
|
|
20115
|
+
/** How long a pointer leaving the trigger and the panel waits before the panel
|
|
20116
|
+
closes, in milliseconds. The pointer needs the time to cross from the
|
|
20117
|
+
trigger to the panel. */
|
|
20118
|
+
"attr:close-delay"?: (HelixHeadlessMegamenu["closeDelay"] | `${number}`) | undefined;
|
|
20119
|
+
/** How long a pointer leaving the trigger and the panel waits before the panel
|
|
20120
|
+
closes, in milliseconds. The pointer needs the time to cross from the
|
|
20121
|
+
trigger to the panel. */
|
|
20122
|
+
"prop:closeDelay"?: (HelixHeadlessMegamenu["closeDelay"]) | undefined;
|
|
19978
20123
|
/** The section's name, used for the default trigger and the panel. */
|
|
19979
20124
|
"prop:label"?: (HelixHeadlessMegamenu["label"]) | undefined;
|
|
20125
|
+
/** How long a pointer rests on the trigger before the panel opens, in
|
|
20126
|
+
milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
|
|
20127
|
+
way somewhere else opens nothing. */
|
|
20128
|
+
"attr:open-delay"?: (HelixHeadlessMegamenu["openDelay"] | `${number}`) | undefined;
|
|
20129
|
+
/** How long a pointer rests on the trigger before the panel opens, in
|
|
20130
|
+
milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
|
|
20131
|
+
way somewhere else opens nothing. */
|
|
20132
|
+
"prop:openDelay"?: (HelixHeadlessMegamenu["openDelay"]) | undefined;
|
|
19980
20133
|
/** Whether hovering over the trigger opens the panel (`hover`), or only a press
|
|
19981
20134
|
does (`click`).
|
|
19982
20135
|
|
|
@@ -19993,6 +20146,10 @@ the trigger, and it is the default because that is what a navigation bar
|
|
|
19993
20146
|
does. `click` is for a trigger that does something else as well, or a panel
|
|
19994
20147
|
heavy enough that opening it on the way past is rude. */
|
|
19995
20148
|
"prop:openOn"?: (HelixHeadlessMegamenu["openOn"]) | undefined;
|
|
20149
|
+
/** The side of the trigger a card panel opens on, when there is room. It
|
|
20150
|
+
moves if that side does not fit. A band ignores it, since a band spans the
|
|
20151
|
+
page under its bar. */
|
|
20152
|
+
"prop:placement"?: (HelixHeadlessMegamenu["placement"]) | undefined;
|
|
19996
20153
|
/** Whether the panel is a card under the trigger or a band across the page.
|
|
19997
20154
|
|
|
19998
20155
|
The resting one is the card, hanging off the trigger and as wide as it
|
|
@@ -20244,12 +20401,29 @@ Empty by default, which names the surface by its trigger, so a menu opened
|
|
|
20244
20401
|
from "Actions" is announced as "Actions". An `aria-label` or
|
|
20245
20402
|
`aria-labelledby` on the host names it too, and wins over both. */
|
|
20246
20403
|
label?: (HelixHeadlessMenu["label"]) | undefined;
|
|
20404
|
+
/** The description a trigger gives under `open-on="long-press"`, saying how
|
|
20405
|
+
to open the menu. Translate it with the rest of your interface. */
|
|
20406
|
+
"long-press-label"?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
|
|
20407
|
+
/** The description a trigger gives under `open-on="long-press"`, saying how
|
|
20408
|
+
to open the menu. Translate it with the rest of your interface. */
|
|
20409
|
+
longPressLabel?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
|
|
20247
20410
|
/** Space between the trigger and the surface, in pixels. */
|
|
20248
20411
|
offset?: (HelixHeadlessMenu["offset"]) | undefined;
|
|
20412
|
+
/** What opens the menu from its trigger. `long-press` leaves a press to the
|
|
20413
|
+
trigger's own action and opens the menu on a press held for half a second,
|
|
20414
|
+
or on Alt+Down or Alt+Up. */
|
|
20415
|
+
"open-on"?: (HelixHeadlessMenu["openOn"]) | undefined;
|
|
20416
|
+
/** What opens the menu from its trigger. `long-press` leaves a press to the
|
|
20417
|
+
trigger's own action and opens the menu on a press held for half a second,
|
|
20418
|
+
or on Alt+Down or Alt+Up. */
|
|
20419
|
+
openOn?: (HelixHeadlessMenu["openOn"]) | undefined;
|
|
20249
20420
|
/** The side the menu opens on, when there is room.
|
|
20250
20421
|
|
|
20251
20422
|
It moves if that side does not fit. */
|
|
20252
20423
|
placement?: (HelixHeadlessMenu["placement"]) | undefined;
|
|
20424
|
+
/** How a submenu opens. `drill` shows it in place of the page showing, with
|
|
20425
|
+
a way back. `flyout` opens it in a panel of its own beside its row. */
|
|
20426
|
+
submenus?: (HelixHeadlessMenu["submenus"]) | undefined;
|
|
20253
20427
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
20254
20428
|
"empty-text"?: (HelixHeadlessMenu["emptyText"]) | undefined;
|
|
20255
20429
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
@@ -20310,12 +20484,29 @@ Empty by default, which names the surface by its trigger, so a menu opened
|
|
|
20310
20484
|
from "Actions" is announced as "Actions". An `aria-label` or
|
|
20311
20485
|
`aria-labelledby` on the host names it too, and wins over both. */
|
|
20312
20486
|
"prop:label"?: (HelixHeadlessMenu["label"]) | undefined;
|
|
20487
|
+
/** The description a trigger gives under `open-on="long-press"`, saying how
|
|
20488
|
+
to open the menu. Translate it with the rest of your interface. */
|
|
20489
|
+
"attr:long-press-label"?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
|
|
20490
|
+
/** The description a trigger gives under `open-on="long-press"`, saying how
|
|
20491
|
+
to open the menu. Translate it with the rest of your interface. */
|
|
20492
|
+
"prop:longPressLabel"?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
|
|
20313
20493
|
/** Space between the trigger and the surface, in pixels. */
|
|
20314
20494
|
"prop:offset"?: (HelixHeadlessMenu["offset"]) | undefined;
|
|
20495
|
+
/** What opens the menu from its trigger. `long-press` leaves a press to the
|
|
20496
|
+
trigger's own action and opens the menu on a press held for half a second,
|
|
20497
|
+
or on Alt+Down or Alt+Up. */
|
|
20498
|
+
"attr:open-on"?: (HelixHeadlessMenu["openOn"]) | undefined;
|
|
20499
|
+
/** What opens the menu from its trigger. `long-press` leaves a press to the
|
|
20500
|
+
trigger's own action and opens the menu on a press held for half a second,
|
|
20501
|
+
or on Alt+Down or Alt+Up. */
|
|
20502
|
+
"prop:openOn"?: (HelixHeadlessMenu["openOn"]) | undefined;
|
|
20315
20503
|
/** The side the menu opens on, when there is room.
|
|
20316
20504
|
|
|
20317
20505
|
It moves if that side does not fit. */
|
|
20318
20506
|
"prop:placement"?: (HelixHeadlessMenu["placement"]) | undefined;
|
|
20507
|
+
/** How a submenu opens. `drill` shows it in place of the page showing, with
|
|
20508
|
+
a way back. `flyout` opens it in a panel of its own beside its row. */
|
|
20509
|
+
"prop:submenus"?: (HelixHeadlessMenu["submenus"]) | undefined;
|
|
20319
20510
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
20320
20511
|
"attr:empty-text"?: (HelixHeadlessMenu["emptyText"]) | undefined;
|
|
20321
20512
|
/** The text shown and announced when there are no rows and none are loading. */
|
|
@@ -21054,6 +21245,12 @@ export type HelixHeadlessNotificationsHelixReadElementEvent =
|
|
|
21054
21245
|
HelixHeadlessNotificationsElementEvent<HelixReadEvent>;
|
|
21055
21246
|
|
|
21056
21247
|
export type HelixHeadlessNotificationsProps = {
|
|
21248
|
+
/** What the feed says when unread notifications arrive, with `{count}` the
|
|
21249
|
+
number of them. Empty it to say nothing. */
|
|
21250
|
+
"arrived-label"?: (HelixHeadlessNotifications["arrivedLabel"]) | undefined;
|
|
21251
|
+
/** What the feed says when unread notifications arrive, with `{count}` the
|
|
21252
|
+
number of them. Empty it to say nothing. */
|
|
21253
|
+
arrivedLabel?: (HelixHeadlessNotifications["arrivedLabel"]) | undefined;
|
|
21057
21254
|
/** The region's name where `label` is empty. */
|
|
21058
21255
|
"fallback-label"?: (HelixHeadlessNotifications["fallbackLabel"]) | undefined;
|
|
21059
21256
|
/** The region's name where `label` is empty. */
|
|
@@ -21126,6 +21323,12 @@ say that without the component knowing what a row looks like. */
|
|
|
21126
21323
|
};
|
|
21127
21324
|
|
|
21128
21325
|
export type HelixHeadlessNotificationsSolidJsProps = {
|
|
21326
|
+
/** What the feed says when unread notifications arrive, with `{count}` the
|
|
21327
|
+
number of them. Empty it to say nothing. */
|
|
21328
|
+
"attr:arrived-label"?: (HelixHeadlessNotifications["arrivedLabel"]) | undefined;
|
|
21329
|
+
/** What the feed says when unread notifications arrive, with `{count}` the
|
|
21330
|
+
number of them. Empty it to say nothing. */
|
|
21331
|
+
"prop:arrivedLabel"?: (HelixHeadlessNotifications["arrivedLabel"]) | undefined;
|
|
21129
21332
|
/** The region's name where `label` is empty. */
|
|
21130
21333
|
"attr:fallback-label"?: (HelixHeadlessNotifications["fallbackLabel"]) | undefined;
|
|
21131
21334
|
/** The region's name where `label` is empty. */
|
|
@@ -21470,8 +21673,11 @@ imperatively later, and nothing is hydrating by then.
|
|
|
21470
21673
|
|
|
21471
21674
|
Here rather than on each control. */
|
|
21472
21675
|
name?: (HelixHeadlessNumberInput["name"]) | undefined;
|
|
21473
|
-
/** The value as a number, or `NaN` while the control is empty
|
|
21676
|
+
/** The value as a number, or `NaN` while the control is empty or does not
|
|
21677
|
+
hold a number.
|
|
21474
21678
|
|
|
21679
|
+
Read in the locale and the format, as the form reads it, so `1,5` typed
|
|
21680
|
+
in a locale with a decimal comma is 1.5 here while the form holds 1.5.
|
|
21475
21681
|
`NaN` and not zero, which is the trap the platform already avoids: `Number('')`
|
|
21476
21682
|
is zero, so an empty control would report a number it does not hold and a
|
|
21477
21683
|
form would submit it. */
|
|
@@ -21745,8 +21951,11 @@ imperatively later, and nothing is hydrating by then.
|
|
|
21745
21951
|
|
|
21746
21952
|
Here rather than on each control. */
|
|
21747
21953
|
"prop:name"?: (HelixHeadlessNumberInput["name"]) | undefined;
|
|
21748
|
-
/** The value as a number, or `NaN` while the control is empty
|
|
21954
|
+
/** The value as a number, or `NaN` while the control is empty or does not
|
|
21955
|
+
hold a number.
|
|
21749
21956
|
|
|
21957
|
+
Read in the locale and the format, as the form reads it, so `1,5` typed
|
|
21958
|
+
in a locale with a decimal comma is 1.5 here while the form holds 1.5.
|
|
21750
21959
|
`NaN` and not zero, which is the trap the platform already avoids: `Number('')`
|
|
21751
21960
|
is zero, so an empty control would report a number it does not hold and a
|
|
21752
21961
|
form would submit it. */
|
|
@@ -25885,7 +26094,8 @@ export type HelixHeadlessSkeletonProps = {
|
|
|
25885
26094
|
/** What is loading, read out as the placeholder's name, such as "Loading
|
|
25886
26095
|
profile".
|
|
25887
26096
|
|
|
25888
|
-
Absent hides the placeholder from screen readers.
|
|
26097
|
+
Absent hides the placeholder from screen readers. Around content, the name
|
|
26098
|
+
is read while `loading` is set, and the loaded content is read as it is. */
|
|
25889
26099
|
label?: (HelixHeadlessSkeleton["label"]) | undefined;
|
|
25890
26100
|
/** Whether the content inside is still loading, which keeps it inert and
|
|
25891
26101
|
draws the placeholder over it.
|
|
@@ -25899,7 +26109,8 @@ export type HelixHeadlessSkeletonSolidJsProps = {
|
|
|
25899
26109
|
/** What is loading, read out as the placeholder's name, such as "Loading
|
|
25900
26110
|
profile".
|
|
25901
26111
|
|
|
25902
|
-
Absent hides the placeholder from screen readers.
|
|
26112
|
+
Absent hides the placeholder from screen readers. Around content, the name
|
|
26113
|
+
is read while `loading` is set, and the loaded content is read as it is. */
|
|
25903
26114
|
"prop:label"?: (HelixHeadlessSkeleton["label"]) | undefined;
|
|
25904
26115
|
/** Whether the content inside is still loading, which keeps it inert and
|
|
25905
26116
|
draws the placeholder over it.
|
|
@@ -31381,6 +31592,10 @@ A word property: register it for a locale under the host's key. A family
|
|
|
31381
31592
|
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
31382
31593
|
declares its own English with `@words` above the override. */
|
|
31383
31594
|
dismissLabel?: (HelixHeadlessToastItem["dismissLabel"]) | undefined;
|
|
31595
|
+
/** Whether the region holds the message back, because more messages are
|
|
31596
|
+
showing than its `max-visible`. The region sets it. A waiting message is
|
|
31597
|
+
hidden, its timer has not started, and it is said once it shows. */
|
|
31598
|
+
waiting?: (HelixHeadlessToastItem["waiting"]) | undefined;
|
|
31384
31599
|
|
|
31385
31600
|
/** Fired when the message is dismissed, by the control or by its timer, and cancelable. Canceling it keeps the message. */
|
|
31386
31601
|
"onhelix-dismiss"?: ((
|
|
@@ -31435,6 +31650,10 @@ A word property: register it for a locale under the host's key. A family
|
|
|
31435
31650
|
that names the control otherwise, such as Tag's `Remove {label}`,
|
|
31436
31651
|
declares its own English with `@words` above the override. */
|
|
31437
31652
|
"prop:dismissLabel"?: (HelixHeadlessToastItem["dismissLabel"]) | undefined;
|
|
31653
|
+
/** Whether the region holds the message back, because more messages are
|
|
31654
|
+
showing than its `max-visible`. The region sets it. A waiting message is
|
|
31655
|
+
hidden, its timer has not started, and it is said once it shows. */
|
|
31656
|
+
"prop:waiting"?: (HelixHeadlessToastItem["waiting"]) | undefined;
|
|
31438
31657
|
/** Fired when the message is dismissed, by the control or by its timer, and cancelable. Canceling it keeps the message. */
|
|
31439
31658
|
"on:helix-dismiss"?: ((
|
|
31440
31659
|
e: HelixHeadlessToastItemHelixDismissElementEvent,
|
|
@@ -31464,6 +31683,14 @@ Empty turns it off. */
|
|
|
31464
31683
|
/** Accessible name for the region, with `{hotkey}` filled in. Translate it with
|
|
31465
31684
|
the rest of your interface. */
|
|
31466
31685
|
label?: (HelixHeadlessToast["label"]) | undefined;
|
|
31686
|
+
/** How many messages show at once. The messages after that many wait, hidden
|
|
31687
|
+
and with their timers stopped, until a message before them goes. Unset,
|
|
31688
|
+
every message shows. */
|
|
31689
|
+
"max-visible"?: (HelixHeadlessToast["maxVisible"] | `${number}`) | undefined;
|
|
31690
|
+
/** How many messages show at once. The messages after that many wait, hidden
|
|
31691
|
+
and with their timers stopped, until a message before them goes. Unset,
|
|
31692
|
+
every message shows. */
|
|
31693
|
+
maxVisible?: (HelixHeadlessToast["maxVisible"]) | undefined;
|
|
31467
31694
|
/** Which corner or edge the stack sits at.
|
|
31468
31695
|
|
|
31469
31696
|
Named here rather than on each message, because where a page puts its
|
|
@@ -31503,6 +31730,14 @@ Empty turns it off. */
|
|
|
31503
31730
|
/** Accessible name for the region, with `{hotkey}` filled in. Translate it with
|
|
31504
31731
|
the rest of your interface. */
|
|
31505
31732
|
"prop:label"?: (HelixHeadlessToast["label"]) | undefined;
|
|
31733
|
+
/** How many messages show at once. The messages after that many wait, hidden
|
|
31734
|
+
and with their timers stopped, until a message before them goes. Unset,
|
|
31735
|
+
every message shows. */
|
|
31736
|
+
"attr:max-visible"?: (HelixHeadlessToast["maxVisible"] | `${number}`) | undefined;
|
|
31737
|
+
/** How many messages show at once. The messages after that many wait, hidden
|
|
31738
|
+
and with their timers stopped, until a message before them goes. Unset,
|
|
31739
|
+
every message shows. */
|
|
31740
|
+
"prop:maxVisible"?: (HelixHeadlessToast["maxVisible"]) | undefined;
|
|
31506
31741
|
/** Which corner or edge the stack sits at.
|
|
31507
31742
|
|
|
31508
31743
|
Named here rather than on each message, because where a page puts its
|
|
@@ -40938,8 +41173,9 @@ export type CustomElements = {
|
|
|
40938
41173
|
*
|
|
40939
41174
|
* Choosing the opener says `helix-select` with its value, and canceling it
|
|
40940
41175
|
* keeps the page that is shown. The list then shows the page, named by the
|
|
40941
|
-
* opener's words, and
|
|
40942
|
-
*
|
|
41176
|
+
* opener's words, and a screen reader hears those words. Backspace in an empty
|
|
41177
|
+
* filter goes back, and a screen reader hears the name of the page it goes
|
|
41178
|
+
* back to. `page` says which page is shown.
|
|
40943
41179
|
*
|
|
40944
41180
|
* The filter is cleared when the palette closes, so each opening starts from
|
|
40945
41181
|
* the full list. Combobox and Select do the same. As typing narrows the list, a
|
|
@@ -40961,9 +41197,10 @@ export type CustomElements = {
|
|
|
40961
41197
|
* | Tab | Stays in the palette, which is modal. With `inline`, moves on through the page. |
|
|
40962
41198
|
*
|
|
40963
41199
|
* **ARIA.** The palette is a modal `dialog` named by `label`, or with
|
|
40964
|
-
* `inline` no dialog at all. Inside it the filter field is a
|
|
40965
|
-
* `aria-
|
|
40966
|
-
* `
|
|
41200
|
+
* `inline` no dialog at all. Inside it the filter field is a text field with
|
|
41201
|
+
* `aria-autocomplete="list"`, `aria-controls` on the list, and
|
|
41202
|
+
* `aria-activedescendant` on the highlighted command, as the field of React
|
|
41203
|
+
* Aria's `Autocomplete` is. The commands are a `listbox` of `option`s. How many commands typing left, the empty text and
|
|
40967
41204
|
* the loading text are said in a polite live region.
|
|
40968
41205
|
*
|
|
40969
41206
|
* ## Attributes & Properties
|
|
@@ -41027,6 +41264,12 @@ export type CustomElements = {
|
|
|
41027
41264
|
* hydration, or diffed by a framework, it comes back holding whatever the
|
|
41028
41265
|
* last reader did rather than what the author wrote. `:state(open)` carries
|
|
41029
41266
|
* the resolved state for stylesheets, which is what the mirror is for.
|
|
41267
|
+
* - `filterMatch`: Whether a command is kept by the filter: a function given the command's
|
|
41268
|
+
* words and the filter, trimmed, that returns `true` to keep it showing, as
|
|
41269
|
+
* React Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
|
|
41270
|
+
*
|
|
41271
|
+
* Absent, a command is kept where its words hold the filter, in any case. A
|
|
41272
|
+
* property only, there being no way to write a function in markup. (property only)
|
|
41030
41273
|
* - `items`: The commands as data, for a palette too long to draw whole: each a value,
|
|
41031
41274
|
* which is also its words, or a record with a `value`, a `label` and
|
|
41032
41275
|
* `disabled`. Handed to the list, which draws only the commands in sight and
|
|
@@ -41118,6 +41361,7 @@ export type CustomElements = {
|
|
|
41118
41361
|
* - `listbox-loading`: The text shown while the commands are loading.
|
|
41119
41362
|
* - `listbox-search`: The region that holds the filter field.
|
|
41120
41363
|
* - `listbox-search-field`: The filter field.
|
|
41364
|
+
* - `live`: The region a screen reader announces the page shown from, by the words of the command that opens it, drawn once there is one to say. Visually hidden in the styled tier.
|
|
41121
41365
|
*
|
|
41122
41366
|
* ## CSS States
|
|
41123
41367
|
*
|
|
@@ -43706,6 +43950,16 @@ export type CustomElements = {
|
|
|
43706
43950
|
* `aria-haspopup`, the same way `Menu` marks a row with a submenu. The server
|
|
43707
43951
|
* render leaves both out, because the server cannot see the children.
|
|
43708
43952
|
*
|
|
43953
|
+
* **A row with an `href` is a link.** The row itself renders as an `<a>`
|
|
43954
|
+
* carrying `menuitem`, as `Menu.Item` does, so a middle click, a modified
|
|
43955
|
+
* click and the status bar keep working. Enter follows it, and Space does too.
|
|
43956
|
+
* Choosing it fires `helix-select` first: cancel the event and the link is not
|
|
43957
|
+
* followed, so a router can take the navigation. A row that opens a page, or a
|
|
43958
|
+
* disabled row, renders no link.
|
|
43959
|
+
*
|
|
43960
|
+
* A development build warns when a row has no words to be named by, such as a
|
|
43961
|
+
* row holding only an icon with no label.
|
|
43962
|
+
*
|
|
43709
43963
|
* The row is named by its label alone. Words in `description`, a line under
|
|
43710
43964
|
* the label, and in `end` describe it instead, through `aria-describedby`, as
|
|
43711
43965
|
* `Menu.Item` does: a reader hears "Theme", then "Dark".
|
|
@@ -43715,6 +43969,12 @@ export type CustomElements = {
|
|
|
43715
43969
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
43716
43970
|
*
|
|
43717
43971
|
* - `disabled`: Whether the row can be reached at all.
|
|
43972
|
+
* - `download`: Whether the link downloads the file when the row is chosen. Only
|
|
43973
|
+
* meaningful beside an `href`, and only for a file served from this origin.
|
|
43974
|
+
* - `href`: The URL the row links to. Setting it renders the row as a link, unless the
|
|
43975
|
+
* row opens a page or is disabled.
|
|
43976
|
+
* - `rel`: The link's `rel`. Set it whenever you set `target="_blank"`.
|
|
43977
|
+
* - `target`: Where the link opens, for rows that should open outside the current page.
|
|
43718
43978
|
* - `value`: Identifies the row to your event listeners.
|
|
43719
43979
|
* - `focusable`: Whether this row holds the region's tab stop. Set by the drill-down.
|
|
43720
43980
|
*
|
|
@@ -43788,7 +44048,7 @@ export type CustomElements = {
|
|
|
43788
44048
|
*
|
|
43789
44049
|
* Custom selectors for styling elements within the component.
|
|
43790
44050
|
*
|
|
43791
|
-
* - `item`: The row itself.
|
|
44051
|
+
* - `item`: The row itself, which is an `<a>` where `href` is set.
|
|
43792
44052
|
* - `label`: The row's label.
|
|
43793
44053
|
* - `mark`: The caret at the end of a row that opens a page, after the `end` slot. The caret points, so a stylesheet mirrors it in a right-to-left document.
|
|
43794
44054
|
*
|
|
@@ -43820,6 +44080,11 @@ export type CustomElements = {
|
|
|
43820
44080
|
* and reads the rest from the DOM. The behavior lives in `DrilldownController`,
|
|
43821
44081
|
* which `Menu` shares.
|
|
43822
44082
|
*
|
|
44083
|
+
* **`page` is the page showing**, as the `value` of the row that opens it,
|
|
44084
|
+
* and empty on the top page. Set it to show a page, such as one a link to a
|
|
44085
|
+
* settings screen names. A reader's move updates it, and `helix-navigate`
|
|
44086
|
+
* comes first, so you can refuse the move or take it yourself.
|
|
44087
|
+
*
|
|
43823
44088
|
* After each move the host carries `data-direction`, `forward` into a page or
|
|
43824
44089
|
* `back` out of one, and records `:state(forward)` or `:state(back)`, so a
|
|
43825
44090
|
* stylesheet can slide the new page in from the side the reader is going. Both
|
|
@@ -43827,13 +44092,25 @@ export type CustomElements = {
|
|
|
43827
44092
|
* page, two moves the same way included. The styled tier slides the page and
|
|
43828
44093
|
* swaps it at once under `prefers-reduced-motion`.
|
|
43829
44094
|
*
|
|
43830
|
-
*
|
|
43831
|
-
*
|
|
43832
|
-
*
|
|
43833
|
-
*
|
|
44095
|
+
* **Keyboard.** The drilldown is one tab stop, on the row last focused.
|
|
44096
|
+
*
|
|
44097
|
+
* | Key | What it does |
|
|
44098
|
+
* |---|---|
|
|
44099
|
+
* | Down Arrow, Up Arrow | Moves to the next or the previous row. |
|
|
44100
|
+
* | Home, End | Moves to the first or the last row. |
|
|
44101
|
+
* | A letter | Moves to the next row whose name starts with it. |
|
|
44102
|
+
* | Enter, Space | Chooses the row: opens its page, follows its link, or sends `helix-select`. |
|
|
44103
|
+
* | Right Arrow | Opens the row's page. Left Arrow on a right-to-left page. |
|
|
44104
|
+
* | Left Arrow, Escape | Goes back one page, with focus on the row that opened it. Right Arrow on a right-to-left page. |
|
|
43834
44105
|
*
|
|
43835
44106
|
* The rows of the page showing are a `menu`, named by `label` on the top page
|
|
43836
|
-
* and by the page's title below it.
|
|
44107
|
+
* and by the page's title below it.
|
|
44108
|
+
*
|
|
44109
|
+
* **`navigation` makes it a site's navigation.** The host is a `navigation`
|
|
44110
|
+
* landmark named by `label`, each page is a list, and each row is a list item
|
|
44111
|
+
* holding a link or a button, as the APG's disclosure navigation is built,
|
|
44112
|
+
* so a reader meets places to go in place of a menu of commands. The keys stay
|
|
44113
|
+
* the same. The back button and the title sit above
|
|
43837
44114
|
* the menu. Disabled rows stay reachable with the arrow keys, and typing a
|
|
43838
44115
|
* letter moves to the next row whose name starts with it.
|
|
43839
44116
|
*
|
|
@@ -43847,6 +44124,12 @@ export type CustomElements = {
|
|
|
43847
44124
|
* An `aria-label` or `aria-labelledby` on the host names the top page too,
|
|
43848
44125
|
* and wins over this.
|
|
43849
44126
|
* - `back-label`/`backLabel`: The text of the back button.
|
|
44127
|
+
* - `navigation`: Whether the drilldown is a site's navigation: a `navigation` landmark
|
|
44128
|
+
* named by `label`, whose pages are lists of links. Without it, each page is
|
|
44129
|
+
* a `menu`.
|
|
44130
|
+
* - `page`: The page showing, as the `value` of the row that opens it. Empty is the
|
|
44131
|
+
* top page. Setting it shows that page, and a value no row with a page has
|
|
44132
|
+
* shows the top page.
|
|
43850
44133
|
* - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
|
|
43851
44134
|
* - `loading`: Whether the rows are still loading.
|
|
43852
44135
|
*
|
|
@@ -43879,6 +44162,7 @@ export type CustomElements = {
|
|
|
43879
44162
|
*
|
|
43880
44163
|
* Events that will be emitted by the component.
|
|
43881
44164
|
*
|
|
44165
|
+
* - `helix-navigate`: Fired before a reader moves into a page or back out of one. `detail.value` is the `value` of the row whose page is about to show, empty for the top page. Cancelable: cancel it to stay on the page showing.
|
|
43882
44166
|
* - `helix-select`: Fired when a row with no page is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
|
|
43883
44167
|
*
|
|
43884
44168
|
* ## Slots
|
|
@@ -44734,6 +45018,7 @@ export type CustomElements = {
|
|
|
44734
45018
|
* - `entry-shortcut-key`: One key of the shortcut's chord.
|
|
44735
45019
|
* - `entry-shortcut-separator`: The `+` between two keys of the shortcut, where the platform writes one.
|
|
44736
45020
|
* - `entry-start`: The leading column.
|
|
45021
|
+
* - `entry-surface`: The panel a row's submenu opens in beside it. The filter menu's rows have none.
|
|
44737
45022
|
* - `menu`: The menu the fields are offered in.
|
|
44738
45023
|
* - `menu-back`: The button that goes back from a field's page.
|
|
44739
45024
|
* - `menu-back-mark`: The icon on the back button.
|
|
@@ -47988,7 +48273,9 @@ export type CustomElements = {
|
|
|
47988
48273
|
* Not reflected, as a state never is. `row-current` is the part a
|
|
47989
48274
|
* stylesheet draws it from.
|
|
47990
48275
|
* - `disabled`: Takes the row out of reach in a list with `selection-mode`: the arrow keys
|
|
47991
|
-
* pass over it and it cannot be selected or acted on.
|
|
48276
|
+
* pass over it and it cannot be selected or acted on. In a list with
|
|
48277
|
+
* `disabled-behavior="selection"`, it cannot be selected and is reached and
|
|
48278
|
+
* acted on as any row is.
|
|
47992
48279
|
* - `href`: The URL the row links to. Leave it empty for a row that is not a link.
|
|
47993
48280
|
*
|
|
47994
48281
|
* Empty rather than optional, and unset by default: a list is not always a
|
|
@@ -48015,6 +48302,9 @@ export type CustomElements = {
|
|
|
48015
48302
|
*
|
|
48016
48303
|
* Written by the list from its own `value`, and unset where nothing can be
|
|
48017
48304
|
* selected, which keeps `aria-selected` off a list that does not select. (property only)
|
|
48305
|
+
* - `selectionOnly`: Whether `disabled` takes the row out of selection alone, written by a list
|
|
48306
|
+
* with `disabled-behavior="selection"`. No attribute: it is coordination
|
|
48307
|
+
* between elements, as `focusable` is. (property only)
|
|
48018
48308
|
* - `words`: The row's words, or none where the children are not known yet. (property only) (readonly)
|
|
48019
48309
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
48020
48310
|
*
|
|
@@ -48075,6 +48365,7 @@ export type CustomElements = {
|
|
|
48075
48365
|
* - `dragging`: The row is being moved, in a `reorderable` list.
|
|
48076
48366
|
* - `drop-after`: The row being moved goes after this one when it is dropped.
|
|
48077
48367
|
* - `drop-before`: The row being moved goes before this one when it is dropped.
|
|
48368
|
+
* - `focus-visible`: The row's cell has keyboard focus that the browser shows, in a list with `selection-mode`.
|
|
48078
48369
|
* - `selected`: The row is selected, in a list that selects.
|
|
48079
48370
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
48080
48371
|
*/
|
|
@@ -48091,7 +48382,9 @@ export type CustomElements = {
|
|
|
48091
48382
|
* `multiple` any number, and `value` holds the selected rows' values,
|
|
48092
48383
|
* separated by commas. A change asks with `helix-before-change` and tells
|
|
48093
48384
|
* with `change`. `none` selects nothing, so a press acts on the row. A
|
|
48094
|
-
* `disabled` row is passed over.
|
|
48385
|
+
* `disabled` row is passed over. With `disabled-behavior="selection"`, a
|
|
48386
|
+
* `disabled` row cannot be selected, and is reached and acted on as any row
|
|
48387
|
+
* is, as React Aria's GridList has it. Each row is named by its label and described
|
|
48095
48388
|
* by its description, so the words of the controls in `end` are not read as
|
|
48096
48389
|
* part of its name.
|
|
48097
48390
|
*
|
|
@@ -48169,6 +48462,12 @@ export type CustomElements = {
|
|
|
48169
48462
|
*
|
|
48170
48463
|
* - `canceled-label`/`canceledLabel`: What screen readers hear when a held row is put back, or a move is
|
|
48171
48464
|
* refused, in a `reorderable` list.
|
|
48465
|
+
* - `disabled-behavior`/`disabledBehavior`: What `disabled` takes from a row, in a list that selects: `all`, which
|
|
48466
|
+
* passes over the row, or `selection`, which keeps the row out of the
|
|
48467
|
+
* selection and lets the keys reach it and Enter or a press act on it, as
|
|
48468
|
+
* React Aria's GridList takes `disabledBehavior`.
|
|
48469
|
+
*
|
|
48470
|
+
* Absent is `all`.
|
|
48172
48471
|
* - `dropped-label`/`droppedLabel`: What screen readers hear when a row is dropped, in a `reorderable` list.
|
|
48173
48472
|
* - `empty-label`/`emptyLabel`: The text of the row shown while the list has no rows, where the `empty`
|
|
48174
48473
|
* slot is empty. Empty, the default, shows no row.
|
|
@@ -48308,7 +48607,9 @@ export type CustomElements = {
|
|
|
48308
48607
|
* With `multiple` set, `value` is a comma-separated string, like
|
|
48309
48608
|
* `Checkbox.Group`'s, because `MixinControllerValue` holds a string. The form
|
|
48310
48609
|
* receives one entry per selected option, as a native `<select multiple>` sends
|
|
48311
|
-
* it, so your server does not split on commas.
|
|
48610
|
+
* it, so your server does not split on commas. An option's value may hold a
|
|
48611
|
+
* comma: a run of the string that is an option's value is read as that one
|
|
48612
|
+
* value, and the form sends it as one entry.
|
|
48312
48613
|
*
|
|
48313
48614
|
* Selected and active are separate. The selected option is the value. The
|
|
48314
48615
|
* active option is where the keyboard is: the arrow keys move it, and
|
|
@@ -48515,6 +48816,13 @@ export type CustomElements = {
|
|
|
48515
48816
|
* imperatively later, and nothing is hydrating by then.
|
|
48516
48817
|
*
|
|
48517
48818
|
* Here rather than on each control.
|
|
48819
|
+
* - `filterMatch`: Whether an option is kept by the filter: a function given the option's
|
|
48820
|
+
* words and the filter, trimmed, that returns `true` to keep it showing, as
|
|
48821
|
+
* React Aria's `Autocomplete` takes `filter`. For matching that ignores
|
|
48822
|
+
* accents, matches the start of each word, or matches out of order.
|
|
48823
|
+
*
|
|
48824
|
+
* Absent, an option is kept where its words hold the filter, in any case. A
|
|
48825
|
+
* property only, there being no way to write a function in markup. (property only)
|
|
48518
48826
|
* - `items`: The options as data, for a list too long to draw whole: each a value,
|
|
48519
48827
|
* which is also its words, or a record with a `value`, a `label` and
|
|
48520
48828
|
* `disabled`. Set, the list draws only the options in sight, and the ones
|
|
@@ -48551,7 +48859,10 @@ export type CustomElements = {
|
|
|
48551
48859
|
* Descendants rather than children, because a group puts a level between the
|
|
48552
48860
|
* list and its options and the keyboard has to move through a grouped list
|
|
48553
48861
|
* exactly as it moves through a flat one. (property only) (readonly)
|
|
48554
|
-
* - `values`: The chosen values, as an array whether or not `multiple` is set.
|
|
48862
|
+
* - `values`: The chosen values, as an array whether or not `multiple` is set.
|
|
48863
|
+
*
|
|
48864
|
+
* Read against the options' values, so an option whose value holds a comma
|
|
48865
|
+
* is one value. See `chosenValues`. (property only) (readonly)
|
|
48555
48866
|
* - `validity`: Whether the control meets its constraints, and why not. (property only) (readonly)
|
|
48556
48867
|
* - `validationMessage`: The message the browser would show for the control, or an empty string. (property only) (readonly)
|
|
48557
48868
|
* - `willValidate`: Whether the control is checked when its form is submitted. (property only) (readonly)
|
|
@@ -49880,7 +50191,10 @@ export type CustomElements = {
|
|
|
49880
50191
|
*
|
|
49881
50192
|
* It opens on hover by default, and a press always opens it too. `open-on` sets
|
|
49882
50193
|
* which. Hover is the default because in a navigation bar people expect to move
|
|
49883
|
-
* along the row and see each section.
|
|
50194
|
+
* along the row and see each section. A pointer resting on the trigger opens
|
|
50195
|
+
* the panel after `open-delay`, and leaving closes it after `close-delay`. Moving
|
|
50196
|
+
* from one open panel's trigger to another's opens the next at once, as Radix's
|
|
50197
|
+
* `skipDelayDuration` does.
|
|
49884
50198
|
*
|
|
49885
50199
|
* When one panel opens in place of another, each says which way the reader
|
|
49886
50200
|
* moved, as Radix's `data-motion` does. Moving toward the end of the bar, the
|
|
@@ -49898,6 +50212,10 @@ export type CustomElements = {
|
|
|
49898
50212
|
* navigation menu publishes the same pair from its shared viewport, so a
|
|
49899
50213
|
* stylesheet can grow or shrink one panel into the next.
|
|
49900
50214
|
*
|
|
50215
|
+
* While a link in the panel carries `aria-current="page"`, the host has
|
|
50216
|
+
* `:state(current)`, so the trigger of the section holding the page you are
|
|
50217
|
+
* on can say so, as Radix's navigation menu marks its active link.
|
|
50218
|
+
*
|
|
49901
50219
|
* The panel's default slot is the `columns` part and draws no box, so a sheet
|
|
49902
50220
|
* can give the columns one of their own. While a panel is open, an
|
|
49903
50221
|
* `indicator` slot is rendered beside its trigger, as Radix's indicator
|
|
@@ -49914,6 +50232,12 @@ export type CustomElements = {
|
|
|
49914
50232
|
* way out. The trigger says `aria-expanded`, and the panel is a group named by
|
|
49915
50233
|
* `label`.
|
|
49916
50234
|
*
|
|
50235
|
+
* A Helix trigger, such as `helix-button`, is told whether the panel is open
|
|
50236
|
+
* inside its own shadow root. On a plain element, such as a `<button>`, the
|
|
50237
|
+
* megamenu writes `aria-expanded`, from a frame after its own first render, so
|
|
50238
|
+
* a server's markup is never changed while a framework hydrates it. It never
|
|
50239
|
+
* writes it where you wrote `aria-expanded` yourself.
|
|
50240
|
+
*
|
|
49917
50241
|
* ## Attributes & Properties
|
|
49918
50242
|
*
|
|
49919
50243
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
@@ -49942,7 +50266,13 @@ export type CustomElements = {
|
|
|
49942
50266
|
* narrow exception the server specs describe covers a mirror that can only
|
|
49943
50267
|
* become true long after hydration, and a viewport measured before the first
|
|
49944
50268
|
* paint is the opposite case. See `MixinControllerOpen` on `open`.
|
|
50269
|
+
* - `close-delay`/`closeDelay`: How long a pointer leaving the trigger and the panel waits before the panel
|
|
50270
|
+
* closes, in milliseconds. The pointer needs the time to cross from the
|
|
50271
|
+
* trigger to the panel.
|
|
49945
50272
|
* - `label`: The section's name, used for the default trigger and the panel.
|
|
50273
|
+
* - `open-delay`/`openDelay`: How long a pointer rests on the trigger before the panel opens, in
|
|
50274
|
+
* milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
|
|
50275
|
+
* way somewhere else opens nothing.
|
|
49946
50276
|
* - `open-on`/`openOn`: Whether hovering over the trigger opens the panel (`hover`), or only a press
|
|
49947
50277
|
* does (`click`).
|
|
49948
50278
|
*
|
|
@@ -49950,6 +50280,9 @@ export type CustomElements = {
|
|
|
49950
50280
|
* the trigger, and it is the default because that is what a navigation bar
|
|
49951
50281
|
* does. `click` is for a trigger that does something else as well, or a panel
|
|
49952
50282
|
* heavy enough that opening it on the way past is rude.
|
|
50283
|
+
* - `placement`: The side of the trigger a card panel opens on, when there is room. It
|
|
50284
|
+
* moves if that side does not fit. A band ignores it, since a band spans the
|
|
50285
|
+
* page under its bar.
|
|
49953
50286
|
* - `variant`: Whether the panel is a card under the trigger or a band across the page.
|
|
49954
50287
|
*
|
|
49955
50288
|
* The resting one is the card, hanging off the trigger and as wide as it
|
|
@@ -50057,6 +50390,7 @@ export type CustomElements = {
|
|
|
50057
50390
|
*
|
|
50058
50391
|
* These can be used to apply styling when a component is in a given state.
|
|
50059
50392
|
*
|
|
50393
|
+
* - `current`: A link in the panel carries `aria-current="page"`, so the trigger can show the section you are in.
|
|
50060
50394
|
* - `from-end`: The panel opened in place of one earlier in the bar, so it can enter from the end side.
|
|
50061
50395
|
* - `from-start`: The panel opened in place of one later in the bar, so it can enter from the start side.
|
|
50062
50396
|
* - `narrow`: The page is narrower than `band-below`, so the panel is shown as a band whatever its variant.
|
|
@@ -50099,6 +50433,9 @@ export type CustomElements = {
|
|
|
50099
50433
|
* React Aria's menu item does with its description: a reader hears "Copy",
|
|
50100
50434
|
* then "Copies the selection".
|
|
50101
50435
|
*
|
|
50436
|
+
* A development build warns when a row has no words to be named by, such as a
|
|
50437
|
+
* row holding only an icon with no label.
|
|
50438
|
+
*
|
|
50102
50439
|
* The check mark and the caret are the fallbacks of the `check` and `chevron`
|
|
50103
50440
|
* slots, so a mark of your own replaces either by being slotted. Neither is
|
|
50104
50441
|
* read as part of the row's name.
|
|
@@ -50243,12 +50580,15 @@ export type CustomElements = {
|
|
|
50243
50580
|
* - `shortcut-key`: One key of the shortcut's chord, such as `Ctrl`.
|
|
50244
50581
|
* - `shortcut-separator`: The `+` between two keys of the shortcut, where the platform writes one.
|
|
50245
50582
|
* - `start`: The leading column that holds the `start` slot. It is always rendered.
|
|
50583
|
+
* - `surface`: The panel a submenu opens in beside the row, under the menu's `submenus="flyout"`.
|
|
50246
50584
|
*
|
|
50247
50585
|
* ## CSS States
|
|
50248
50586
|
*
|
|
50249
50587
|
* These can be used to apply styling when a component is in a given state.
|
|
50250
50588
|
*
|
|
50251
50589
|
* - `checked`: The row is checked.
|
|
50590
|
+
* - `submenu-mark`: Under `submenus="flyout"`, a row in this row's submenu can be ticked or opens a submenu, so the submenu keeps its trailing column.
|
|
50591
|
+
* - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
|
|
50252
50592
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
50253
50593
|
*/
|
|
50254
50594
|
"helix-headless-menu-item": Partial<
|
|
@@ -50261,15 +50601,24 @@ export type CustomElements = {
|
|
|
50261
50601
|
* ancestor with `overflow: hidden` does not clip it and it needs no `z-index`.
|
|
50262
50602
|
*
|
|
50263
50603
|
* Slot a `helix-button` or `helix-icon-button` as the trigger, and the menu
|
|
50264
|
-
* tells it that it opens a menu and whether the menu is open
|
|
50265
|
-
*
|
|
50266
|
-
*
|
|
50267
|
-
*
|
|
50268
|
-
*
|
|
50269
|
-
*
|
|
50270
|
-
*
|
|
50271
|
-
*
|
|
50272
|
-
* screens, which have no hover.
|
|
50604
|
+
* tells it that it opens a menu and whether the menu is open, inside its own
|
|
50605
|
+
* shadow root. On a plain element, such as a `<button>`, the menu writes
|
|
50606
|
+
* `aria-haspopup="menu"` and `aria-expanded`, from a frame after its own first
|
|
50607
|
+
* render, so a server's markup is never changed while a framework hydrates it.
|
|
50608
|
+
* It never writes `aria-expanded` where you wrote it yourself.
|
|
50609
|
+
*
|
|
50610
|
+
* Submenus drill down by default. A submenu replaces the panel's content, and a
|
|
50611
|
+
* back row returns to the previous page. One panel stays inside a narrow
|
|
50612
|
+
* window, and works on touch screens, which have no hover.
|
|
50613
|
+
*
|
|
50614
|
+
* **`submenus="flyout"` opens each submenu in a panel of its own beside its
|
|
50615
|
+
* row**, as React Aria's `SubmenuTrigger` and Radix's `Sub` do. Resting the
|
|
50616
|
+
* pointer on the row opens it, and a pointer crossing toward the open panel
|
|
50617
|
+
* over the rows between keeps it open, as Radix's grace area does. Right Arrow
|
|
50618
|
+
* opens a row's submenu on its first row, and Left Arrow or Escape closes it
|
|
50619
|
+
* and returns focus to the row, the two arrows swapping on a right-to-left
|
|
50620
|
+
* page. The row says `aria-expanded`, and the panel is a `menu` named by the
|
|
50621
|
+
* row.
|
|
50273
50622
|
*
|
|
50274
50623
|
* The root holds which page is open, because only one page shows at a time. It
|
|
50275
50624
|
* sets this on items as a property, never as an attribute. An attribute written
|
|
@@ -50284,8 +50633,8 @@ export type CustomElements = {
|
|
|
50284
50633
|
* rows, Home and End go to the first and the last, a typed letter moves to
|
|
50285
50634
|
* the next row whose name starts with it, Enter and Space choose, Right Arrow
|
|
50286
50635
|
* opens a row's submenu and Left Arrow goes back, the two swapping on a
|
|
50287
|
-
* right-to-left page
|
|
50288
|
-
* trigger. Tab closes it and moves on.
|
|
50636
|
+
* right-to-left page. Left Arrow on the top page does nothing. Escape closes
|
|
50637
|
+
* the menu and returns focus to the trigger. Tab closes it and moves on.
|
|
50289
50638
|
*
|
|
50290
50639
|
* While it is open, the surface carries the trigger's width as
|
|
50291
50640
|
* `--floating-anchor-inline-size` and the room left below it as
|
|
@@ -50297,7 +50646,14 @@ export type CustomElements = {
|
|
|
50297
50646
|
* right-click, a long press, Shift+F10 or the menu key over the area opens it
|
|
50298
50647
|
* at the pointer, or at the area's corner from the keyboard, as Radix's context
|
|
50299
50648
|
* menu does. A press on the area does not open it, and closing it returns focus
|
|
50300
|
-
* to where it was.
|
|
50649
|
+
* to where it was. A touch or a pen held still on the area opens it too, on
|
|
50650
|
+
* every browser, since iOS sends no `contextmenu` for one.
|
|
50651
|
+
*
|
|
50652
|
+
* **A trigger with its own action.** With `open-on="long-press"`, a press on
|
|
50653
|
+
* the trigger is the trigger's own, and a press held for half a second opens
|
|
50654
|
+
* the menu, as React Aria's `trigger="longPress"` does. Alt+Down or Alt+Up
|
|
50655
|
+
* opens it from the keyboard, and the trigger is described by
|
|
50656
|
+
* `long-press-label`, which says so.
|
|
50301
50657
|
*
|
|
50302
50658
|
* ## Attributes & Properties
|
|
50303
50659
|
*
|
|
@@ -50311,10 +50667,17 @@ export type CustomElements = {
|
|
|
50311
50667
|
* Empty by default, which names the surface by its trigger, so a menu opened
|
|
50312
50668
|
* from "Actions" is announced as "Actions". An `aria-label` or
|
|
50313
50669
|
* `aria-labelledby` on the host names it too, and wins over both.
|
|
50670
|
+
* - `long-press-label`/`longPressLabel`: The description a trigger gives under `open-on="long-press"`, saying how
|
|
50671
|
+
* to open the menu. Translate it with the rest of your interface.
|
|
50314
50672
|
* - `offset`: Space between the trigger and the surface, in pixels.
|
|
50673
|
+
* - `open-on`/`openOn`: What opens the menu from its trigger. `long-press` leaves a press to the
|
|
50674
|
+
* trigger's own action and opens the menu on a press held for half a second,
|
|
50675
|
+
* or on Alt+Down or Alt+Up.
|
|
50315
50676
|
* - `placement`: The side the menu opens on, when there is room.
|
|
50316
50677
|
*
|
|
50317
50678
|
* It moves if that side does not fit.
|
|
50679
|
+
* - `submenus`: How a submenu opens. `drill` shows it in place of the page showing, with
|
|
50680
|
+
* a way back. `flyout` opens it in a panel of its own beside its row.
|
|
50318
50681
|
* - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
|
|
50319
50682
|
* - `loading`: Whether the rows are still loading.
|
|
50320
50683
|
*
|
|
@@ -50415,6 +50778,10 @@ export type CustomElements = {
|
|
|
50415
50778
|
* - `drilled`: A submenu's page is showing, so content that is not a row can hide with the top page.
|
|
50416
50779
|
* - `mark`: A row on the current page has a checkbox or a link, so every row keeps the trailing column.
|
|
50417
50780
|
* - `open`: While the menu is open.
|
|
50781
|
+
* - `placed-bottom`: While the open panel sits below its trigger.
|
|
50782
|
+
* - `placed-left`: While the open panel sits to the left of its trigger.
|
|
50783
|
+
* - `placed-right`: While the open panel sits to the right of its trigger.
|
|
50784
|
+
* - `placed-top`: While the open panel sits above its trigger.
|
|
50418
50785
|
* - `start`: A row on the current page has content in its leading column, so every row keeps that column.
|
|
50419
50786
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
50420
50787
|
*/
|
|
@@ -51109,6 +51476,11 @@ export type CustomElements = {
|
|
|
51109
51476
|
* | Control+Home | From anywhere in the feed, moves to the nearest control before it on the page. |
|
|
51110
51477
|
* | Tab | Moves through the controls in a row, and on out of the feed. |
|
|
51111
51478
|
*
|
|
51479
|
+
* **A notification that arrives says so.** Unread rows added above the rows
|
|
51480
|
+
* there were are counted in the live region,
|
|
51481
|
+
* "1 new notification", in `arrived-label`. Rows that arrive while `loading`
|
|
51482
|
+
* is set say nothing, so set it while a page is on its way.
|
|
51483
|
+
*
|
|
51112
51484
|
* **`load-more` adds a button after the list** that sends `helix-load-more`,
|
|
51113
51485
|
* for a feed that holds one page of a longer list. Append the next page, set
|
|
51114
51486
|
* `loading` while it is on its way, and take `load-more` off once there is
|
|
@@ -51124,6 +51496,8 @@ export type CustomElements = {
|
|
|
51124
51496
|
*
|
|
51125
51497
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
51126
51498
|
*
|
|
51499
|
+
* - `arrived-label`/`arrivedLabel`: What the feed says when unread notifications arrive, with `{count}` the
|
|
51500
|
+
* number of them. Empty it to say nothing.
|
|
51127
51501
|
* - `fallback-label`/`fallbackLabel`: The region's name where `label` is empty.
|
|
51128
51502
|
* - `label`: The feed's name, read by screen readers.
|
|
51129
51503
|
* - `load-error`/`loadError`: What the feed says when a page of it could not be loaded, such as after a
|
|
@@ -51307,9 +51681,9 @@ export type CustomElements = {
|
|
|
51307
51681
|
* The locale's group separators are read in every field, so `1,234` is a
|
|
51308
51682
|
* number in `en-US`.
|
|
51309
51683
|
*
|
|
51310
|
-
* The field and its two buttons sit in a `role="group"
|
|
51311
|
-
* `role-label`, "number field" in English, as its
|
|
51312
|
-
* React Aria's NumberField does. On iOS and iPadOS the field is a plain text
|
|
51684
|
+
* The field and its two buttons sit in a `role="group"` named by the label,
|
|
51685
|
+
* and the field carries `role-label`, "number field" in English, as its
|
|
51686
|
+
* `aria-roledescription`, as React Aria's NumberField does. On iOS and iPadOS the field is a plain text
|
|
51313
51687
|
* field, with no `role="spinbutton"`, which VoiceOver reads as a slider you
|
|
51314
51688
|
* cannot type in, and no role description, so VoiceOver says the field is
|
|
51315
51689
|
* required. React Aria's NumberField does the same.
|
|
@@ -51488,8 +51862,11 @@ export type CustomElements = {
|
|
|
51488
51862
|
* imperatively later, and nothing is hydrating by then.
|
|
51489
51863
|
*
|
|
51490
51864
|
* Here rather than on each control.
|
|
51491
|
-
* - `valueAsNumber`: The value as a number, or `NaN` while the control is empty
|
|
51865
|
+
* - `valueAsNumber`: The value as a number, or `NaN` while the control is empty or does not
|
|
51866
|
+
* hold a number.
|
|
51492
51867
|
*
|
|
51868
|
+
* Read in the locale and the format, as the form reads it, so `1,5` typed
|
|
51869
|
+
* in a locale with a decimal comma is 1.5 here while the form holds 1.5.
|
|
51493
51870
|
* `NaN` and not zero, which is the trap the platform already avoids: `Number('')`
|
|
51494
51871
|
* is zero, so an empty control would report a number it does not hold and a
|
|
51495
51872
|
* form would submit it. (property only)
|
|
@@ -54885,7 +55262,9 @@ export type CustomElements = {
|
|
|
54885
55262
|
* whole set.
|
|
54886
55263
|
*
|
|
54887
55264
|
* `Select` owns the value, passes it down to the listbox, and takes changes
|
|
54888
|
-
* back, so the value lives in one place.
|
|
55265
|
+
* back, so the value lives in one place. With `multiple`, the value is the
|
|
55266
|
+
* chosen values joined with commas, and the form receives one entry for each.
|
|
55267
|
+
* An option's value may hold a comma, and it is read as one value.
|
|
54889
55268
|
*
|
|
54890
55269
|
* Set `valueContent` to draw the trigger's content from the chosen options,
|
|
54891
55270
|
* and several chosen options are written as a list in the reader's language.
|
|
@@ -55262,7 +55641,8 @@ export type CustomElements = {
|
|
|
55262
55641
|
* - `label`: What is loading, read out as the placeholder's name, such as "Loading
|
|
55263
55642
|
* profile".
|
|
55264
55643
|
*
|
|
55265
|
-
* Absent hides the placeholder from screen readers.
|
|
55644
|
+
* Absent hides the placeholder from screen readers. Around content, the name
|
|
55645
|
+
* is read while `loading` is set, and the loaded content is read as it is.
|
|
55266
55646
|
* - `loading`: Whether the content inside is still loading, which keeps it inert and
|
|
55267
55647
|
* draws the placeholder over it.
|
|
55268
55648
|
*
|
|
@@ -59912,6 +60292,9 @@ export type CustomElements = {
|
|
|
59912
60292
|
* control. While it moves, the distance is on the `item` part as
|
|
59913
60293
|
* `--toast-swipe-x`.
|
|
59914
60294
|
*
|
|
60295
|
+
* **Escape dismisses the message holding focus**, through the same
|
|
60296
|
+
* `helix-dismiss`, and focus moves to the next message.
|
|
60297
|
+
*
|
|
59915
60298
|
* **Messages are inverted by default.** The item flips `color-scheme`, so a new
|
|
59916
60299
|
* message stands out from the page without using a color that carries meaning.
|
|
59917
60300
|
*
|
|
@@ -59949,6 +60332,9 @@ export type CustomElements = {
|
|
|
59949
60332
|
* A word property: register it for a locale under the host's key. A family
|
|
59950
60333
|
* that names the control otherwise, such as Tag's `Remove {label}`,
|
|
59951
60334
|
* declares its own English with `@words` above the override.
|
|
60335
|
+
* - `waiting`: Whether the region holds the message back, because more messages are
|
|
60336
|
+
* showing than its `max-visible`. The region sets it. A waiting message is
|
|
60337
|
+
* hidden, its timer has not started, and it is said once it shows. (property only)
|
|
59952
60338
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
59953
60339
|
*
|
|
59954
60340
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -60026,6 +60412,9 @@ export type CustomElements = {
|
|
|
60026
60412
|
*
|
|
60027
60413
|
* These can be used to apply styling when a component is in a given state.
|
|
60028
60414
|
*
|
|
60415
|
+
* - `closed`: The message has been dismissed and is hidden, or leaving.
|
|
60416
|
+
* - `paused`: The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.
|
|
60417
|
+
* - `waiting`: The region holds the message back, past its `max-visible`, until a message before it goes.
|
|
60029
60418
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
60030
60419
|
*/
|
|
60031
60420
|
"helix-headless-toast-item": Partial<
|
|
@@ -60078,6 +60467,19 @@ export type CustomElements = {
|
|
|
60078
60467
|
* message, then the one before it, then back to where it was before it entered
|
|
60079
60468
|
* the stack.
|
|
60080
60469
|
*
|
|
60470
|
+
* **`max-visible` limits how many messages show at once**, as Zag's `max`
|
|
60471
|
+
* does. The messages after that many, in document order, wait: each is hidden,
|
|
60472
|
+
* its timer has not started, and the region says it once it shows, when a
|
|
60473
|
+
* message before it goes. A waiting message has `:state(waiting)`.
|
|
60474
|
+
*
|
|
60475
|
+
* **Keyboard.**
|
|
60476
|
+
*
|
|
60477
|
+
* | Key | What it does |
|
|
60478
|
+
* |---|---|
|
|
60479
|
+
* | F8, or your `hotkey` | Moves focus to the first control in the stack, and back to where it was when pressed in the stack. |
|
|
60480
|
+
* | Tab, Shift+Tab | Moves between the controls of the messages. |
|
|
60481
|
+
* | Escape | Dismisses the message holding focus. Focus moves to the next message, then the one before it, then back to where it was. |
|
|
60482
|
+
*
|
|
60081
60483
|
* ## Attributes & Properties
|
|
60082
60484
|
*
|
|
60083
60485
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
@@ -60088,6 +60490,9 @@ export type CustomElements = {
|
|
|
60088
60490
|
* Empty turns it off.
|
|
60089
60491
|
* - `label`: Accessible name for the region, with `{hotkey}` filled in. Translate it with
|
|
60090
60492
|
* the rest of your interface.
|
|
60493
|
+
* - `max-visible`/`maxVisible`: How many messages show at once. The messages after that many wait, hidden
|
|
60494
|
+
* and with their timers stopped, until a message before them goes. Unset,
|
|
60495
|
+
* every message shows.
|
|
60091
60496
|
* - `placement`: Which corner or edge the stack sits at.
|
|
60092
60497
|
*
|
|
60093
60498
|
* Named here rather than on each message, because where a page puts its
|
|
@@ -62020,6 +62425,7 @@ export type CustomElements = {
|
|
|
62020
62425
|
* - `entry-shortcut-key`: One key of an entry's shortcut chord, inside `entry-shortcut`. The playlist's entries set none.
|
|
62021
62426
|
* - `entry-shortcut-separator`: The `+` between two keys of an entry's shortcut, where the platform writes one.
|
|
62022
62427
|
* - `entry-start`: The column at the start of an entry. It is a slot and is always present.
|
|
62428
|
+
* - `entry-surface`: The panel an entry's submenu opens in beside it. The playlist's entries have none.
|
|
62023
62429
|
* - `menu`: The menu that holds the entries.
|
|
62024
62430
|
* - `menu-back`: The button that goes back from a submenu.
|
|
62025
62431
|
* - `menu-back-mark`: The icon on a submenu's back button.
|
|
@@ -62584,6 +62990,7 @@ export type CustomElements = {
|
|
|
62584
62990
|
* - `entry-shortcut-key`: One key of a row's shortcut chord, inside `entry-shortcut`. The player's rows set none.
|
|
62585
62991
|
* - `entry-shortcut-separator`: The `+` between two keys of a row's shortcut, where the platform writes one.
|
|
62586
62992
|
* - `entry-start`: The leading column that holds the `start` slot. It is always rendered.
|
|
62993
|
+
* - `entry-surface`: The panel a row's submenu opens in beside it. The player's rows have none.
|
|
62587
62994
|
* - `failure`: The message shown when the source cannot be played.
|
|
62588
62995
|
* - `forward`: The button that skips forward ten seconds.
|
|
62589
62996
|
* - `fullscreen`: The button that enters and leaves fullscreen.
|
|
@@ -68994,8 +69401,9 @@ export type CustomElementsSolidJs = {
|
|
|
68994
69401
|
*
|
|
68995
69402
|
* Choosing the opener says `helix-select` with its value, and canceling it
|
|
68996
69403
|
* keeps the page that is shown. The list then shows the page, named by the
|
|
68997
|
-
* opener's words, and
|
|
68998
|
-
*
|
|
69404
|
+
* opener's words, and a screen reader hears those words. Backspace in an empty
|
|
69405
|
+
* filter goes back, and a screen reader hears the name of the page it goes
|
|
69406
|
+
* back to. `page` says which page is shown.
|
|
68999
69407
|
*
|
|
69000
69408
|
* The filter is cleared when the palette closes, so each opening starts from
|
|
69001
69409
|
* the full list. Combobox and Select do the same. As typing narrows the list, a
|
|
@@ -69017,9 +69425,10 @@ export type CustomElementsSolidJs = {
|
|
|
69017
69425
|
* | Tab | Stays in the palette, which is modal. With `inline`, moves on through the page. |
|
|
69018
69426
|
*
|
|
69019
69427
|
* **ARIA.** The palette is a modal `dialog` named by `label`, or with
|
|
69020
|
-
* `inline` no dialog at all. Inside it the filter field is a
|
|
69021
|
-
* `aria-
|
|
69022
|
-
* `
|
|
69428
|
+
* `inline` no dialog at all. Inside it the filter field is a text field with
|
|
69429
|
+
* `aria-autocomplete="list"`, `aria-controls` on the list, and
|
|
69430
|
+
* `aria-activedescendant` on the highlighted command, as the field of React
|
|
69431
|
+
* Aria's `Autocomplete` is. The commands are a `listbox` of `option`s. How many commands typing left, the empty text and
|
|
69023
69432
|
* the loading text are said in a polite live region.
|
|
69024
69433
|
*
|
|
69025
69434
|
* ## Attributes & Properties
|
|
@@ -69083,6 +69492,12 @@ export type CustomElementsSolidJs = {
|
|
|
69083
69492
|
* hydration, or diffed by a framework, it comes back holding whatever the
|
|
69084
69493
|
* last reader did rather than what the author wrote. `:state(open)` carries
|
|
69085
69494
|
* the resolved state for stylesheets, which is what the mirror is for.
|
|
69495
|
+
* - `filterMatch`: Whether a command is kept by the filter: a function given the command's
|
|
69496
|
+
* words and the filter, trimmed, that returns `true` to keep it showing, as
|
|
69497
|
+
* React Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
|
|
69498
|
+
*
|
|
69499
|
+
* Absent, a command is kept where its words hold the filter, in any case. A
|
|
69500
|
+
* property only, there being no way to write a function in markup. (property only)
|
|
69086
69501
|
* - `items`: The commands as data, for a palette too long to draw whole: each a value,
|
|
69087
69502
|
* which is also its words, or a record with a `value`, a `label` and
|
|
69088
69503
|
* `disabled`. Handed to the list, which draws only the commands in sight and
|
|
@@ -69174,6 +69589,7 @@ export type CustomElementsSolidJs = {
|
|
|
69174
69589
|
* - `listbox-loading`: The text shown while the commands are loading.
|
|
69175
69590
|
* - `listbox-search`: The region that holds the filter field.
|
|
69176
69591
|
* - `listbox-search-field`: The filter field.
|
|
69592
|
+
* - `live`: The region a screen reader announces the page shown from, by the words of the command that opens it, drawn once there is one to say. Visually hidden in the styled tier.
|
|
69177
69593
|
*
|
|
69178
69594
|
* ## CSS States
|
|
69179
69595
|
*
|
|
@@ -71785,6 +72201,16 @@ export type CustomElementsSolidJs = {
|
|
|
71785
72201
|
* `aria-haspopup`, the same way `Menu` marks a row with a submenu. The server
|
|
71786
72202
|
* render leaves both out, because the server cannot see the children.
|
|
71787
72203
|
*
|
|
72204
|
+
* **A row with an `href` is a link.** The row itself renders as an `<a>`
|
|
72205
|
+
* carrying `menuitem`, as `Menu.Item` does, so a middle click, a modified
|
|
72206
|
+
* click and the status bar keep working. Enter follows it, and Space does too.
|
|
72207
|
+
* Choosing it fires `helix-select` first: cancel the event and the link is not
|
|
72208
|
+
* followed, so a router can take the navigation. A row that opens a page, or a
|
|
72209
|
+
* disabled row, renders no link.
|
|
72210
|
+
*
|
|
72211
|
+
* A development build warns when a row has no words to be named by, such as a
|
|
72212
|
+
* row holding only an icon with no label.
|
|
72213
|
+
*
|
|
71788
72214
|
* The row is named by its label alone. Words in `description`, a line under
|
|
71789
72215
|
* the label, and in `end` describe it instead, through `aria-describedby`, as
|
|
71790
72216
|
* `Menu.Item` does: a reader hears "Theme", then "Dark".
|
|
@@ -71794,6 +72220,12 @@ export type CustomElementsSolidJs = {
|
|
|
71794
72220
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
71795
72221
|
*
|
|
71796
72222
|
* - `disabled`: Whether the row can be reached at all.
|
|
72223
|
+
* - `download`: Whether the link downloads the file when the row is chosen. Only
|
|
72224
|
+
* meaningful beside an `href`, and only for a file served from this origin.
|
|
72225
|
+
* - `href`: The URL the row links to. Setting it renders the row as a link, unless the
|
|
72226
|
+
* row opens a page or is disabled.
|
|
72227
|
+
* - `rel`: The link's `rel`. Set it whenever you set `target="_blank"`.
|
|
72228
|
+
* - `target`: Where the link opens, for rows that should open outside the current page.
|
|
71797
72229
|
* - `value`: Identifies the row to your event listeners.
|
|
71798
72230
|
* - `focusable`: Whether this row holds the region's tab stop. Set by the drill-down.
|
|
71799
72231
|
*
|
|
@@ -71867,7 +72299,7 @@ export type CustomElementsSolidJs = {
|
|
|
71867
72299
|
*
|
|
71868
72300
|
* Custom selectors for styling elements within the component.
|
|
71869
72301
|
*
|
|
71870
|
-
* - `item`: The row itself.
|
|
72302
|
+
* - `item`: The row itself, which is an `<a>` where `href` is set.
|
|
71871
72303
|
* - `label`: The row's label.
|
|
71872
72304
|
* - `mark`: The caret at the end of a row that opens a page, after the `end` slot. The caret points, so a stylesheet mirrors it in a right-to-left document.
|
|
71873
72305
|
*
|
|
@@ -71900,6 +72332,11 @@ export type CustomElementsSolidJs = {
|
|
|
71900
72332
|
* and reads the rest from the DOM. The behavior lives in `DrilldownController`,
|
|
71901
72333
|
* which `Menu` shares.
|
|
71902
72334
|
*
|
|
72335
|
+
* **`page` is the page showing**, as the `value` of the row that opens it,
|
|
72336
|
+
* and empty on the top page. Set it to show a page, such as one a link to a
|
|
72337
|
+
* settings screen names. A reader's move updates it, and `helix-navigate`
|
|
72338
|
+
* comes first, so you can refuse the move or take it yourself.
|
|
72339
|
+
*
|
|
71903
72340
|
* After each move the host carries `data-direction`, `forward` into a page or
|
|
71904
72341
|
* `back` out of one, and records `:state(forward)` or `:state(back)`, so a
|
|
71905
72342
|
* stylesheet can slide the new page in from the side the reader is going. Both
|
|
@@ -71907,13 +72344,25 @@ export type CustomElementsSolidJs = {
|
|
|
71907
72344
|
* page, two moves the same way included. The styled tier slides the page and
|
|
71908
72345
|
* swaps it at once under `prefers-reduced-motion`.
|
|
71909
72346
|
*
|
|
71910
|
-
*
|
|
71911
|
-
*
|
|
71912
|
-
*
|
|
71913
|
-
*
|
|
72347
|
+
* **Keyboard.** The drilldown is one tab stop, on the row last focused.
|
|
72348
|
+
*
|
|
72349
|
+
* | Key | What it does |
|
|
72350
|
+
* |---|---|
|
|
72351
|
+
* | Down Arrow, Up Arrow | Moves to the next or the previous row. |
|
|
72352
|
+
* | Home, End | Moves to the first or the last row. |
|
|
72353
|
+
* | A letter | Moves to the next row whose name starts with it. |
|
|
72354
|
+
* | Enter, Space | Chooses the row: opens its page, follows its link, or sends `helix-select`. |
|
|
72355
|
+
* | Right Arrow | Opens the row's page. Left Arrow on a right-to-left page. |
|
|
72356
|
+
* | Left Arrow, Escape | Goes back one page, with focus on the row that opened it. Right Arrow on a right-to-left page. |
|
|
71914
72357
|
*
|
|
71915
72358
|
* The rows of the page showing are a `menu`, named by `label` on the top page
|
|
71916
|
-
* and by the page's title below it.
|
|
72359
|
+
* and by the page's title below it.
|
|
72360
|
+
*
|
|
72361
|
+
* **`navigation` makes it a site's navigation.** The host is a `navigation`
|
|
72362
|
+
* landmark named by `label`, each page is a list, and each row is a list item
|
|
72363
|
+
* holding a link or a button, as the APG's disclosure navigation is built,
|
|
72364
|
+
* so a reader meets places to go in place of a menu of commands. The keys stay
|
|
72365
|
+
* the same. The back button and the title sit above
|
|
71917
72366
|
* the menu. Disabled rows stay reachable with the arrow keys, and typing a
|
|
71918
72367
|
* letter moves to the next row whose name starts with it.
|
|
71919
72368
|
*
|
|
@@ -71927,6 +72376,12 @@ export type CustomElementsSolidJs = {
|
|
|
71927
72376
|
* An `aria-label` or `aria-labelledby` on the host names the top page too,
|
|
71928
72377
|
* and wins over this.
|
|
71929
72378
|
* - `back-label`/`backLabel`: The text of the back button.
|
|
72379
|
+
* - `navigation`: Whether the drilldown is a site's navigation: a `navigation` landmark
|
|
72380
|
+
* named by `label`, whose pages are lists of links. Without it, each page is
|
|
72381
|
+
* a `menu`.
|
|
72382
|
+
* - `page`: The page showing, as the `value` of the row that opens it. Empty is the
|
|
72383
|
+
* top page. Setting it shows that page, and a value no row with a page has
|
|
72384
|
+
* shows the top page.
|
|
71930
72385
|
* - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
|
|
71931
72386
|
* - `loading`: Whether the rows are still loading.
|
|
71932
72387
|
*
|
|
@@ -71959,6 +72414,7 @@ export type CustomElementsSolidJs = {
|
|
|
71959
72414
|
*
|
|
71960
72415
|
* Events that will be emitted by the component.
|
|
71961
72416
|
*
|
|
72417
|
+
* - `helix-navigate`: Fired before a reader moves into a page or back out of one. `detail.value` is the `value` of the row whose page is about to show, empty for the top page. Cancelable: cancel it to stay on the page showing.
|
|
71962
72418
|
* - `helix-select`: Fired when a row with no page is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
|
|
71963
72419
|
*
|
|
71964
72420
|
* ## Slots
|
|
@@ -72825,6 +73281,7 @@ export type CustomElementsSolidJs = {
|
|
|
72825
73281
|
* - `entry-shortcut-key`: One key of the shortcut's chord.
|
|
72826
73282
|
* - `entry-shortcut-separator`: The `+` between two keys of the shortcut, where the platform writes one.
|
|
72827
73283
|
* - `entry-start`: The leading column.
|
|
73284
|
+
* - `entry-surface`: The panel a row's submenu opens in beside it. The filter menu's rows have none.
|
|
72828
73285
|
* - `menu`: The menu the fields are offered in.
|
|
72829
73286
|
* - `menu-back`: The button that goes back from a field's page.
|
|
72830
73287
|
* - `menu-back-mark`: The icon on the back button.
|
|
@@ -76112,7 +76569,9 @@ export type CustomElementsSolidJs = {
|
|
|
76112
76569
|
* Not reflected, as a state never is. `row-current` is the part a
|
|
76113
76570
|
* stylesheet draws it from.
|
|
76114
76571
|
* - `disabled`: Takes the row out of reach in a list with `selection-mode`: the arrow keys
|
|
76115
|
-
* pass over it and it cannot be selected or acted on.
|
|
76572
|
+
* pass over it and it cannot be selected or acted on. In a list with
|
|
76573
|
+
* `disabled-behavior="selection"`, it cannot be selected and is reached and
|
|
76574
|
+
* acted on as any row is.
|
|
76116
76575
|
* - `href`: The URL the row links to. Leave it empty for a row that is not a link.
|
|
76117
76576
|
*
|
|
76118
76577
|
* Empty rather than optional, and unset by default: a list is not always a
|
|
@@ -76139,6 +76598,9 @@ export type CustomElementsSolidJs = {
|
|
|
76139
76598
|
*
|
|
76140
76599
|
* Written by the list from its own `value`, and unset where nothing can be
|
|
76141
76600
|
* selected, which keeps `aria-selected` off a list that does not select. (property only)
|
|
76601
|
+
* - `selectionOnly`: Whether `disabled` takes the row out of selection alone, written by a list
|
|
76602
|
+
* with `disabled-behavior="selection"`. No attribute: it is coordination
|
|
76603
|
+
* between elements, as `focusable` is. (property only)
|
|
76142
76604
|
* - `words`: The row's words, or none where the children are not known yet. (property only) (readonly)
|
|
76143
76605
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
76144
76606
|
*
|
|
@@ -76199,6 +76661,7 @@ export type CustomElementsSolidJs = {
|
|
|
76199
76661
|
* - `dragging`: The row is being moved, in a `reorderable` list.
|
|
76200
76662
|
* - `drop-after`: The row being moved goes after this one when it is dropped.
|
|
76201
76663
|
* - `drop-before`: The row being moved goes before this one when it is dropped.
|
|
76664
|
+
* - `focus-visible`: The row's cell has keyboard focus that the browser shows, in a list with `selection-mode`.
|
|
76202
76665
|
* - `selected`: The row is selected, in a list that selects.
|
|
76203
76666
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
76204
76667
|
*/
|
|
@@ -76218,7 +76681,9 @@ export type CustomElementsSolidJs = {
|
|
|
76218
76681
|
* `multiple` any number, and `value` holds the selected rows' values,
|
|
76219
76682
|
* separated by commas. A change asks with `helix-before-change` and tells
|
|
76220
76683
|
* with `change`. `none` selects nothing, so a press acts on the row. A
|
|
76221
|
-
* `disabled` row is passed over.
|
|
76684
|
+
* `disabled` row is passed over. With `disabled-behavior="selection"`, a
|
|
76685
|
+
* `disabled` row cannot be selected, and is reached and acted on as any row
|
|
76686
|
+
* is, as React Aria's GridList has it. Each row is named by its label and described
|
|
76222
76687
|
* by its description, so the words of the controls in `end` are not read as
|
|
76223
76688
|
* part of its name.
|
|
76224
76689
|
*
|
|
@@ -76296,6 +76761,12 @@ export type CustomElementsSolidJs = {
|
|
|
76296
76761
|
*
|
|
76297
76762
|
* - `canceled-label`/`canceledLabel`: What screen readers hear when a held row is put back, or a move is
|
|
76298
76763
|
* refused, in a `reorderable` list.
|
|
76764
|
+
* - `disabled-behavior`/`disabledBehavior`: What `disabled` takes from a row, in a list that selects: `all`, which
|
|
76765
|
+
* passes over the row, or `selection`, which keeps the row out of the
|
|
76766
|
+
* selection and lets the keys reach it and Enter or a press act on it, as
|
|
76767
|
+
* React Aria's GridList takes `disabledBehavior`.
|
|
76768
|
+
*
|
|
76769
|
+
* Absent is `all`.
|
|
76299
76770
|
* - `dropped-label`/`droppedLabel`: What screen readers hear when a row is dropped, in a `reorderable` list.
|
|
76300
76771
|
* - `empty-label`/`emptyLabel`: The text of the row shown while the list has no rows, where the `empty`
|
|
76301
76772
|
* slot is empty. Empty, the default, shows no row.
|
|
@@ -76438,7 +76909,9 @@ export type CustomElementsSolidJs = {
|
|
|
76438
76909
|
* With `multiple` set, `value` is a comma-separated string, like
|
|
76439
76910
|
* `Checkbox.Group`'s, because `MixinControllerValue` holds a string. The form
|
|
76440
76911
|
* receives one entry per selected option, as a native `<select multiple>` sends
|
|
76441
|
-
* it, so your server does not split on commas.
|
|
76912
|
+
* it, so your server does not split on commas. An option's value may hold a
|
|
76913
|
+
* comma: a run of the string that is an option's value is read as that one
|
|
76914
|
+
* value, and the form sends it as one entry.
|
|
76442
76915
|
*
|
|
76443
76916
|
* Selected and active are separate. The selected option is the value. The
|
|
76444
76917
|
* active option is where the keyboard is: the arrow keys move it, and
|
|
@@ -76645,6 +77118,13 @@ export type CustomElementsSolidJs = {
|
|
|
76645
77118
|
* imperatively later, and nothing is hydrating by then.
|
|
76646
77119
|
*
|
|
76647
77120
|
* Here rather than on each control.
|
|
77121
|
+
* - `filterMatch`: Whether an option is kept by the filter: a function given the option's
|
|
77122
|
+
* words and the filter, trimmed, that returns `true` to keep it showing, as
|
|
77123
|
+
* React Aria's `Autocomplete` takes `filter`. For matching that ignores
|
|
77124
|
+
* accents, matches the start of each word, or matches out of order.
|
|
77125
|
+
*
|
|
77126
|
+
* Absent, an option is kept where its words hold the filter, in any case. A
|
|
77127
|
+
* property only, there being no way to write a function in markup. (property only)
|
|
76648
77128
|
* - `items`: The options as data, for a list too long to draw whole: each a value,
|
|
76649
77129
|
* which is also its words, or a record with a `value`, a `label` and
|
|
76650
77130
|
* `disabled`. Set, the list draws only the options in sight, and the ones
|
|
@@ -76681,7 +77161,10 @@ export type CustomElementsSolidJs = {
|
|
|
76681
77161
|
* Descendants rather than children, because a group puts a level between the
|
|
76682
77162
|
* list and its options and the keyboard has to move through a grouped list
|
|
76683
77163
|
* exactly as it moves through a flat one. (property only) (readonly)
|
|
76684
|
-
* - `values`: The chosen values, as an array whether or not `multiple` is set.
|
|
77164
|
+
* - `values`: The chosen values, as an array whether or not `multiple` is set.
|
|
77165
|
+
*
|
|
77166
|
+
* Read against the options' values, so an option whose value holds a comma
|
|
77167
|
+
* is one value. See `chosenValues`. (property only) (readonly)
|
|
76685
77168
|
* - `validity`: Whether the control meets its constraints, and why not. (property only) (readonly)
|
|
76686
77169
|
* - `validationMessage`: The message the browser would show for the control, or an empty string. (property only) (readonly)
|
|
76687
77170
|
* - `willValidate`: Whether the control is checked when its form is submitted. (property only) (readonly)
|
|
@@ -78039,7 +78522,10 @@ export type CustomElementsSolidJs = {
|
|
|
78039
78522
|
*
|
|
78040
78523
|
* It opens on hover by default, and a press always opens it too. `open-on` sets
|
|
78041
78524
|
* which. Hover is the default because in a navigation bar people expect to move
|
|
78042
|
-
* along the row and see each section.
|
|
78525
|
+
* along the row and see each section. A pointer resting on the trigger opens
|
|
78526
|
+
* the panel after `open-delay`, and leaving closes it after `close-delay`. Moving
|
|
78527
|
+
* from one open panel's trigger to another's opens the next at once, as Radix's
|
|
78528
|
+
* `skipDelayDuration` does.
|
|
78043
78529
|
*
|
|
78044
78530
|
* When one panel opens in place of another, each says which way the reader
|
|
78045
78531
|
* moved, as Radix's `data-motion` does. Moving toward the end of the bar, the
|
|
@@ -78057,6 +78543,10 @@ export type CustomElementsSolidJs = {
|
|
|
78057
78543
|
* navigation menu publishes the same pair from its shared viewport, so a
|
|
78058
78544
|
* stylesheet can grow or shrink one panel into the next.
|
|
78059
78545
|
*
|
|
78546
|
+
* While a link in the panel carries `aria-current="page"`, the host has
|
|
78547
|
+
* `:state(current)`, so the trigger of the section holding the page you are
|
|
78548
|
+
* on can say so, as Radix's navigation menu marks its active link.
|
|
78549
|
+
*
|
|
78060
78550
|
* The panel's default slot is the `columns` part and draws no box, so a sheet
|
|
78061
78551
|
* can give the columns one of their own. While a panel is open, an
|
|
78062
78552
|
* `indicator` slot is rendered beside its trigger, as Radix's indicator
|
|
@@ -78073,6 +78563,12 @@ export type CustomElementsSolidJs = {
|
|
|
78073
78563
|
* way out. The trigger says `aria-expanded`, and the panel is a group named by
|
|
78074
78564
|
* `label`.
|
|
78075
78565
|
*
|
|
78566
|
+
* A Helix trigger, such as `helix-button`, is told whether the panel is open
|
|
78567
|
+
* inside its own shadow root. On a plain element, such as a `<button>`, the
|
|
78568
|
+
* megamenu writes `aria-expanded`, from a frame after its own first render, so
|
|
78569
|
+
* a server's markup is never changed while a framework hydrates it. It never
|
|
78570
|
+
* writes it where you wrote `aria-expanded` yourself.
|
|
78571
|
+
*
|
|
78076
78572
|
* ## Attributes & Properties
|
|
78077
78573
|
*
|
|
78078
78574
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
@@ -78101,7 +78597,13 @@ export type CustomElementsSolidJs = {
|
|
|
78101
78597
|
* narrow exception the server specs describe covers a mirror that can only
|
|
78102
78598
|
* become true long after hydration, and a viewport measured before the first
|
|
78103
78599
|
* paint is the opposite case. See `MixinControllerOpen` on `open`.
|
|
78600
|
+
* - `close-delay`/`closeDelay`: How long a pointer leaving the trigger and the panel waits before the panel
|
|
78601
|
+
* closes, in milliseconds. The pointer needs the time to cross from the
|
|
78602
|
+
* trigger to the panel.
|
|
78104
78603
|
* - `label`: The section's name, used for the default trigger and the panel.
|
|
78604
|
+
* - `open-delay`/`openDelay`: How long a pointer rests on the trigger before the panel opens, in
|
|
78605
|
+
* milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
|
|
78606
|
+
* way somewhere else opens nothing.
|
|
78105
78607
|
* - `open-on`/`openOn`: Whether hovering over the trigger opens the panel (`hover`), or only a press
|
|
78106
78608
|
* does (`click`).
|
|
78107
78609
|
*
|
|
@@ -78109,6 +78611,9 @@ export type CustomElementsSolidJs = {
|
|
|
78109
78611
|
* the trigger, and it is the default because that is what a navigation bar
|
|
78110
78612
|
* does. `click` is for a trigger that does something else as well, or a panel
|
|
78111
78613
|
* heavy enough that opening it on the way past is rude.
|
|
78614
|
+
* - `placement`: The side of the trigger a card panel opens on, when there is room. It
|
|
78615
|
+
* moves if that side does not fit. A band ignores it, since a band spans the
|
|
78616
|
+
* page under its bar.
|
|
78112
78617
|
* - `variant`: Whether the panel is a card under the trigger or a band across the page.
|
|
78113
78618
|
*
|
|
78114
78619
|
* The resting one is the card, hanging off the trigger and as wide as it
|
|
@@ -78216,6 +78721,7 @@ export type CustomElementsSolidJs = {
|
|
|
78216
78721
|
*
|
|
78217
78722
|
* These can be used to apply styling when a component is in a given state.
|
|
78218
78723
|
*
|
|
78724
|
+
* - `current`: A link in the panel carries `aria-current="page"`, so the trigger can show the section you are in.
|
|
78219
78725
|
* - `from-end`: The panel opened in place of one earlier in the bar, so it can enter from the end side.
|
|
78220
78726
|
* - `from-start`: The panel opened in place of one later in the bar, so it can enter from the start side.
|
|
78221
78727
|
* - `narrow`: The page is narrower than `band-below`, so the panel is shown as a band whatever its variant.
|
|
@@ -78261,6 +78767,9 @@ export type CustomElementsSolidJs = {
|
|
|
78261
78767
|
* React Aria's menu item does with its description: a reader hears "Copy",
|
|
78262
78768
|
* then "Copies the selection".
|
|
78263
78769
|
*
|
|
78770
|
+
* A development build warns when a row has no words to be named by, such as a
|
|
78771
|
+
* row holding only an icon with no label.
|
|
78772
|
+
*
|
|
78264
78773
|
* The check mark and the caret are the fallbacks of the `check` and `chevron`
|
|
78265
78774
|
* slots, so a mark of your own replaces either by being slotted. Neither is
|
|
78266
78775
|
* read as part of the row's name.
|
|
@@ -78405,12 +78914,15 @@ export type CustomElementsSolidJs = {
|
|
|
78405
78914
|
* - `shortcut-key`: One key of the shortcut's chord, such as `Ctrl`.
|
|
78406
78915
|
* - `shortcut-separator`: The `+` between two keys of the shortcut, where the platform writes one.
|
|
78407
78916
|
* - `start`: The leading column that holds the `start` slot. It is always rendered.
|
|
78917
|
+
* - `surface`: The panel a submenu opens in beside the row, under the menu's `submenus="flyout"`.
|
|
78408
78918
|
*
|
|
78409
78919
|
* ## CSS States
|
|
78410
78920
|
*
|
|
78411
78921
|
* These can be used to apply styling when a component is in a given state.
|
|
78412
78922
|
*
|
|
78413
78923
|
* - `checked`: The row is checked.
|
|
78924
|
+
* - `submenu-mark`: Under `submenus="flyout"`, a row in this row's submenu can be ticked or opens a submenu, so the submenu keeps its trailing column.
|
|
78925
|
+
* - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
|
|
78414
78926
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
78415
78927
|
*/
|
|
78416
78928
|
"helix-headless-menu-item": Partial<
|
|
@@ -78426,15 +78938,24 @@ export type CustomElementsSolidJs = {
|
|
|
78426
78938
|
* ancestor with `overflow: hidden` does not clip it and it needs no `z-index`.
|
|
78427
78939
|
*
|
|
78428
78940
|
* Slot a `helix-button` or `helix-icon-button` as the trigger, and the menu
|
|
78429
|
-
* tells it that it opens a menu and whether the menu is open
|
|
78430
|
-
*
|
|
78431
|
-
*
|
|
78432
|
-
*
|
|
78433
|
-
*
|
|
78434
|
-
*
|
|
78435
|
-
*
|
|
78436
|
-
*
|
|
78437
|
-
* screens, which have no hover.
|
|
78941
|
+
* tells it that it opens a menu and whether the menu is open, inside its own
|
|
78942
|
+
* shadow root. On a plain element, such as a `<button>`, the menu writes
|
|
78943
|
+
* `aria-haspopup="menu"` and `aria-expanded`, from a frame after its own first
|
|
78944
|
+
* render, so a server's markup is never changed while a framework hydrates it.
|
|
78945
|
+
* It never writes `aria-expanded` where you wrote it yourself.
|
|
78946
|
+
*
|
|
78947
|
+
* Submenus drill down by default. A submenu replaces the panel's content, and a
|
|
78948
|
+
* back row returns to the previous page. One panel stays inside a narrow
|
|
78949
|
+
* window, and works on touch screens, which have no hover.
|
|
78950
|
+
*
|
|
78951
|
+
* **`submenus="flyout"` opens each submenu in a panel of its own beside its
|
|
78952
|
+
* row**, as React Aria's `SubmenuTrigger` and Radix's `Sub` do. Resting the
|
|
78953
|
+
* pointer on the row opens it, and a pointer crossing toward the open panel
|
|
78954
|
+
* over the rows between keeps it open, as Radix's grace area does. Right Arrow
|
|
78955
|
+
* opens a row's submenu on its first row, and Left Arrow or Escape closes it
|
|
78956
|
+
* and returns focus to the row, the two arrows swapping on a right-to-left
|
|
78957
|
+
* page. The row says `aria-expanded`, and the panel is a `menu` named by the
|
|
78958
|
+
* row.
|
|
78438
78959
|
*
|
|
78439
78960
|
* The root holds which page is open, because only one page shows at a time. It
|
|
78440
78961
|
* sets this on items as a property, never as an attribute. An attribute written
|
|
@@ -78449,8 +78970,8 @@ export type CustomElementsSolidJs = {
|
|
|
78449
78970
|
* rows, Home and End go to the first and the last, a typed letter moves to
|
|
78450
78971
|
* the next row whose name starts with it, Enter and Space choose, Right Arrow
|
|
78451
78972
|
* opens a row's submenu and Left Arrow goes back, the two swapping on a
|
|
78452
|
-
* right-to-left page
|
|
78453
|
-
* trigger. Tab closes it and moves on.
|
|
78973
|
+
* right-to-left page. Left Arrow on the top page does nothing. Escape closes
|
|
78974
|
+
* the menu and returns focus to the trigger. Tab closes it and moves on.
|
|
78454
78975
|
*
|
|
78455
78976
|
* While it is open, the surface carries the trigger's width as
|
|
78456
78977
|
* `--floating-anchor-inline-size` and the room left below it as
|
|
@@ -78462,7 +78983,14 @@ export type CustomElementsSolidJs = {
|
|
|
78462
78983
|
* right-click, a long press, Shift+F10 or the menu key over the area opens it
|
|
78463
78984
|
* at the pointer, or at the area's corner from the keyboard, as Radix's context
|
|
78464
78985
|
* menu does. A press on the area does not open it, and closing it returns focus
|
|
78465
|
-
* to where it was.
|
|
78986
|
+
* to where it was. A touch or a pen held still on the area opens it too, on
|
|
78987
|
+
* every browser, since iOS sends no `contextmenu` for one.
|
|
78988
|
+
*
|
|
78989
|
+
* **A trigger with its own action.** With `open-on="long-press"`, a press on
|
|
78990
|
+
* the trigger is the trigger's own, and a press held for half a second opens
|
|
78991
|
+
* the menu, as React Aria's `trigger="longPress"` does. Alt+Down or Alt+Up
|
|
78992
|
+
* opens it from the keyboard, and the trigger is described by
|
|
78993
|
+
* `long-press-label`, which says so.
|
|
78466
78994
|
*
|
|
78467
78995
|
* ## Attributes & Properties
|
|
78468
78996
|
*
|
|
@@ -78476,10 +79004,17 @@ export type CustomElementsSolidJs = {
|
|
|
78476
79004
|
* Empty by default, which names the surface by its trigger, so a menu opened
|
|
78477
79005
|
* from "Actions" is announced as "Actions". An `aria-label` or
|
|
78478
79006
|
* `aria-labelledby` on the host names it too, and wins over both.
|
|
79007
|
+
* - `long-press-label`/`longPressLabel`: The description a trigger gives under `open-on="long-press"`, saying how
|
|
79008
|
+
* to open the menu. Translate it with the rest of your interface.
|
|
78479
79009
|
* - `offset`: Space between the trigger and the surface, in pixels.
|
|
79010
|
+
* - `open-on`/`openOn`: What opens the menu from its trigger. `long-press` leaves a press to the
|
|
79011
|
+
* trigger's own action and opens the menu on a press held for half a second,
|
|
79012
|
+
* or on Alt+Down or Alt+Up.
|
|
78480
79013
|
* - `placement`: The side the menu opens on, when there is room.
|
|
78481
79014
|
*
|
|
78482
79015
|
* It moves if that side does not fit.
|
|
79016
|
+
* - `submenus`: How a submenu opens. `drill` shows it in place of the page showing, with
|
|
79017
|
+
* a way back. `flyout` opens it in a panel of its own beside its row.
|
|
78483
79018
|
* - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
|
|
78484
79019
|
* - `loading`: Whether the rows are still loading.
|
|
78485
79020
|
*
|
|
@@ -78580,6 +79115,10 @@ export type CustomElementsSolidJs = {
|
|
|
78580
79115
|
* - `drilled`: A submenu's page is showing, so content that is not a row can hide with the top page.
|
|
78581
79116
|
* - `mark`: A row on the current page has a checkbox or a link, so every row keeps the trailing column.
|
|
78582
79117
|
* - `open`: While the menu is open.
|
|
79118
|
+
* - `placed-bottom`: While the open panel sits below its trigger.
|
|
79119
|
+
* - `placed-left`: While the open panel sits to the left of its trigger.
|
|
79120
|
+
* - `placed-right`: While the open panel sits to the right of its trigger.
|
|
79121
|
+
* - `placed-top`: While the open panel sits above its trigger.
|
|
78583
79122
|
* - `start`: A row on the current page has content in its leading column, so every row keeps that column.
|
|
78584
79123
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
78585
79124
|
*/
|
|
@@ -79284,6 +79823,11 @@ export type CustomElementsSolidJs = {
|
|
|
79284
79823
|
* | Control+Home | From anywhere in the feed, moves to the nearest control before it on the page. |
|
|
79285
79824
|
* | Tab | Moves through the controls in a row, and on out of the feed. |
|
|
79286
79825
|
*
|
|
79826
|
+
* **A notification that arrives says so.** Unread rows added above the rows
|
|
79827
|
+
* there were are counted in the live region,
|
|
79828
|
+
* "1 new notification", in `arrived-label`. Rows that arrive while `loading`
|
|
79829
|
+
* is set say nothing, so set it while a page is on its way.
|
|
79830
|
+
*
|
|
79287
79831
|
* **`load-more` adds a button after the list** that sends `helix-load-more`,
|
|
79288
79832
|
* for a feed that holds one page of a longer list. Append the next page, set
|
|
79289
79833
|
* `loading` while it is on its way, and take `load-more` off once there is
|
|
@@ -79299,6 +79843,8 @@ export type CustomElementsSolidJs = {
|
|
|
79299
79843
|
*
|
|
79300
79844
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
79301
79845
|
*
|
|
79846
|
+
* - `arrived-label`/`arrivedLabel`: What the feed says when unread notifications arrive, with `{count}` the
|
|
79847
|
+
* number of them. Empty it to say nothing.
|
|
79302
79848
|
* - `fallback-label`/`fallbackLabel`: The region's name where `label` is empty.
|
|
79303
79849
|
* - `label`: The feed's name, read by screen readers.
|
|
79304
79850
|
* - `load-error`/`loadError`: What the feed says when a page of it could not be loaded, such as after a
|
|
@@ -79483,9 +80029,9 @@ export type CustomElementsSolidJs = {
|
|
|
79483
80029
|
* The locale's group separators are read in every field, so `1,234` is a
|
|
79484
80030
|
* number in `en-US`.
|
|
79485
80031
|
*
|
|
79486
|
-
* The field and its two buttons sit in a `role="group"
|
|
79487
|
-
* `role-label`, "number field" in English, as its
|
|
79488
|
-
* React Aria's NumberField does. On iOS and iPadOS the field is a plain text
|
|
80032
|
+
* The field and its two buttons sit in a `role="group"` named by the label,
|
|
80033
|
+
* and the field carries `role-label`, "number field" in English, as its
|
|
80034
|
+
* `aria-roledescription`, as React Aria's NumberField does. On iOS and iPadOS the field is a plain text
|
|
79489
80035
|
* field, with no `role="spinbutton"`, which VoiceOver reads as a slider you
|
|
79490
80036
|
* cannot type in, and no role description, so VoiceOver says the field is
|
|
79491
80037
|
* required. React Aria's NumberField does the same.
|
|
@@ -79664,8 +80210,11 @@ export type CustomElementsSolidJs = {
|
|
|
79664
80210
|
* imperatively later, and nothing is hydrating by then.
|
|
79665
80211
|
*
|
|
79666
80212
|
* Here rather than on each control.
|
|
79667
|
-
* - `valueAsNumber`: The value as a number, or `NaN` while the control is empty
|
|
80213
|
+
* - `valueAsNumber`: The value as a number, or `NaN` while the control is empty or does not
|
|
80214
|
+
* hold a number.
|
|
79668
80215
|
*
|
|
80216
|
+
* Read in the locale and the format, as the form reads it, so `1,5` typed
|
|
80217
|
+
* in a locale with a decimal comma is 1.5 here while the form holds 1.5.
|
|
79669
80218
|
* `NaN` and not zero, which is the trap the platform already avoids: `Number('')`
|
|
79670
80219
|
* is zero, so an empty control would report a number it does not hold and a
|
|
79671
80220
|
* form would submit it. (property only)
|
|
@@ -83098,7 +83647,9 @@ export type CustomElementsSolidJs = {
|
|
|
83098
83647
|
* whole set.
|
|
83099
83648
|
*
|
|
83100
83649
|
* `Select` owns the value, passes it down to the listbox, and takes changes
|
|
83101
|
-
* back, so the value lives in one place.
|
|
83650
|
+
* back, so the value lives in one place. With `multiple`, the value is the
|
|
83651
|
+
* chosen values joined with commas, and the form receives one entry for each.
|
|
83652
|
+
* An option's value may hold a comma, and it is read as one value.
|
|
83102
83653
|
*
|
|
83103
83654
|
* Set `valueContent` to draw the trigger's content from the chosen options,
|
|
83104
83655
|
* and several chosen options are written as a list in the reader's language.
|
|
@@ -83478,7 +84029,8 @@ export type CustomElementsSolidJs = {
|
|
|
83478
84029
|
* - `label`: What is loading, read out as the placeholder's name, such as "Loading
|
|
83479
84030
|
* profile".
|
|
83480
84031
|
*
|
|
83481
|
-
* Absent hides the placeholder from screen readers.
|
|
84032
|
+
* Absent hides the placeholder from screen readers. Around content, the name
|
|
84033
|
+
* is read while `loading` is set, and the loaded content is read as it is.
|
|
83482
84034
|
* - `loading`: Whether the content inside is still loading, which keeps it inert and
|
|
83483
84035
|
* draws the placeholder over it.
|
|
83484
84036
|
*
|
|
@@ -88200,6 +88752,9 @@ export type CustomElementsSolidJs = {
|
|
|
88200
88752
|
* control. While it moves, the distance is on the `item` part as
|
|
88201
88753
|
* `--toast-swipe-x`.
|
|
88202
88754
|
*
|
|
88755
|
+
* **Escape dismisses the message holding focus**, through the same
|
|
88756
|
+
* `helix-dismiss`, and focus moves to the next message.
|
|
88757
|
+
*
|
|
88203
88758
|
* **Messages are inverted by default.** The item flips `color-scheme`, so a new
|
|
88204
88759
|
* message stands out from the page without using a color that carries meaning.
|
|
88205
88760
|
*
|
|
@@ -88237,6 +88792,9 @@ export type CustomElementsSolidJs = {
|
|
|
88237
88792
|
* A word property: register it for a locale under the host's key. A family
|
|
88238
88793
|
* that names the control otherwise, such as Tag's `Remove {label}`,
|
|
88239
88794
|
* declares its own English with `@words` above the override.
|
|
88795
|
+
* - `waiting`: Whether the region holds the message back, because more messages are
|
|
88796
|
+
* showing than its `max-visible`. The region sets it. A waiting message is
|
|
88797
|
+
* hidden, its timer has not started, and it is said once it shows. (property only)
|
|
88240
88798
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
88241
88799
|
*
|
|
88242
88800
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -88314,6 +88872,9 @@ export type CustomElementsSolidJs = {
|
|
|
88314
88872
|
*
|
|
88315
88873
|
* These can be used to apply styling when a component is in a given state.
|
|
88316
88874
|
*
|
|
88875
|
+
* - `closed`: The message has been dismissed and is hidden, or leaving.
|
|
88876
|
+
* - `paused`: The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.
|
|
88877
|
+
* - `waiting`: The region holds the message back, past its `max-visible`, until a message before it goes.
|
|
88317
88878
|
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
88318
88879
|
*/
|
|
88319
88880
|
"helix-headless-toast-item": Partial<
|
|
@@ -88369,6 +88930,19 @@ export type CustomElementsSolidJs = {
|
|
|
88369
88930
|
* message, then the one before it, then back to where it was before it entered
|
|
88370
88931
|
* the stack.
|
|
88371
88932
|
*
|
|
88933
|
+
* **`max-visible` limits how many messages show at once**, as Zag's `max`
|
|
88934
|
+
* does. The messages after that many, in document order, wait: each is hidden,
|
|
88935
|
+
* its timer has not started, and the region says it once it shows, when a
|
|
88936
|
+
* message before it goes. A waiting message has `:state(waiting)`.
|
|
88937
|
+
*
|
|
88938
|
+
* **Keyboard.**
|
|
88939
|
+
*
|
|
88940
|
+
* | Key | What it does |
|
|
88941
|
+
* |---|---|
|
|
88942
|
+
* | F8, or your `hotkey` | Moves focus to the first control in the stack, and back to where it was when pressed in the stack. |
|
|
88943
|
+
* | Tab, Shift+Tab | Moves between the controls of the messages. |
|
|
88944
|
+
* | Escape | Dismisses the message holding focus. Focus moves to the next message, then the one before it, then back to where it was. |
|
|
88945
|
+
*
|
|
88372
88946
|
* ## Attributes & Properties
|
|
88373
88947
|
*
|
|
88374
88948
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
@@ -88379,6 +88953,9 @@ export type CustomElementsSolidJs = {
|
|
|
88379
88953
|
* Empty turns it off.
|
|
88380
88954
|
* - `label`: Accessible name for the region, with `{hotkey}` filled in. Translate it with
|
|
88381
88955
|
* the rest of your interface.
|
|
88956
|
+
* - `max-visible`/`maxVisible`: How many messages show at once. The messages after that many wait, hidden
|
|
88957
|
+
* and with their timers stopped, until a message before them goes. Unset,
|
|
88958
|
+
* every message shows.
|
|
88382
88959
|
* - `placement`: Which corner or edge the stack sits at.
|
|
88383
88960
|
*
|
|
88384
88961
|
* Named here rather than on each message, because where a page puts its
|
|
@@ -90340,6 +90917,7 @@ export type CustomElementsSolidJs = {
|
|
|
90340
90917
|
* - `entry-shortcut-key`: One key of an entry's shortcut chord, inside `entry-shortcut`. The playlist's entries set none.
|
|
90341
90918
|
* - `entry-shortcut-separator`: The `+` between two keys of an entry's shortcut, where the platform writes one.
|
|
90342
90919
|
* - `entry-start`: The column at the start of an entry. It is a slot and is always present.
|
|
90920
|
+
* - `entry-surface`: The panel an entry's submenu opens in beside it. The playlist's entries have none.
|
|
90343
90921
|
* - `menu`: The menu that holds the entries.
|
|
90344
90922
|
* - `menu-back`: The button that goes back from a submenu.
|
|
90345
90923
|
* - `menu-back-mark`: The icon on a submenu's back button.
|
|
@@ -90906,6 +91484,7 @@ export type CustomElementsSolidJs = {
|
|
|
90906
91484
|
* - `entry-shortcut-key`: One key of a row's shortcut chord, inside `entry-shortcut`. The player's rows set none.
|
|
90907
91485
|
* - `entry-shortcut-separator`: The `+` between two keys of a row's shortcut, where the platform writes one.
|
|
90908
91486
|
* - `entry-start`: The leading column that holds the `start` slot. It is always rendered.
|
|
91487
|
+
* - `entry-surface`: The panel a row's submenu opens in beside it. The player's rows have none.
|
|
90909
91488
|
* - `failure`: The message shown when the source cannot be played.
|
|
90910
91489
|
* - `forward`: The button that skips forward ten seconds.
|
|
90911
91490
|
* - `fullscreen`: The button that enters and leaves fullscreen.
|