@fusion.dev/helix-headless 0.156.0 → 0.157.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 +909 -46
- 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/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 +120 -9
- package/dist/menu/root/menu-root.js +329 -26
- package/dist/notifications/root/notifications-root.d.ts +20 -0
- package/dist/notifications/root/notifications-root.js +32 -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 +445 -34
- package/types/vue.d.ts +86 -8
- package/types/words.d.ts +14 -0
package/custom-elements.json
CHANGED
|
@@ -59512,11 +59512,11 @@
|
|
|
59512
59512
|
"declarations": [
|
|
59513
59513
|
{
|
|
59514
59514
|
"kind": "class",
|
|
59515
|
-
"description": "A row that opens a page contains that page: the page's rows are this row's\nown children, assigned to the `page` slot. There are no ids to wire, and\nmoving a row moves its page with it.\n\nWhat the item renders depends on the stack:\n\n- On the page that is showing, it renders its row.\n- When its own page is showing, it renders only that page's rows. Its row\n belongs to the page above.\n- When a page further down its own is showing, it renders its page's slot\n alone, so the rows below reach the page.\n- Otherwise it renders nothing. The rows stay in the light DOM untouched, so\n there is no state to keep.\n\nChoosing a row dispatches an event, and the stack decides whether that drills\nin or runs a command.\n\nA row that opens a page shows a caret after its text and sets\n`aria-haspopup`, the same way `Menu` marks a row with a submenu. The server\nrender leaves both out, because the server cannot see the children.\n\nThe row is named by its label alone. Words in `description`, a line under\nthe label, and in `end` describe it instead, through `aria-describedby`, as\n`Menu.Item` does: a reader hears \"Theme\", then \"Dark\".",
|
|
59515
|
+
"description": "A row that opens a page contains that page: the page's rows are this row's\nown children, assigned to the `page` slot. There are no ids to wire, and\nmoving a row moves its page with it.\n\nWhat the item renders depends on the stack:\n\n- On the page that is showing, it renders its row.\n- When its own page is showing, it renders only that page's rows. Its row\n belongs to the page above.\n- When a page further down its own is showing, it renders its page's slot\n alone, so the rows below reach the page.\n- Otherwise it renders nothing. The rows stay in the light DOM untouched, so\n there is no state to keep.\n\nChoosing a row dispatches an event, and the stack decides whether that drills\nin or runs a command.\n\nA row that opens a page shows a caret after its text and sets\n`aria-haspopup`, the same way `Menu` marks a row with a submenu. The server\nrender leaves both out, because the server cannot see the children.\n\n**A row with an `href` is a link.** The row itself renders as an `<a>`\ncarrying `menuitem`, as `Menu.Item` does, so a middle click, a modified\nclick and the status bar keep working. Enter follows it, and Space does too.\nChoosing it fires `helix-select` first: cancel the event and the link is not\nfollowed, so a router can take the navigation. A row that opens a page, or a\ndisabled row, renders no link.\n\nA development build warns when a row has no words to be named by, such as a\nrow holding only an icon with no label.\n\nThe row is named by its label alone. Words in `description`, a line under\nthe label, and in `end` describe it instead, through `aria-describedby`, as\n`Menu.Item` does: a reader hears \"Theme\", then \"Dark\".",
|
|
59516
59516
|
"name": "HelixHeadlessDrilldownItem",
|
|
59517
59517
|
"cssParts": [
|
|
59518
59518
|
{
|
|
59519
|
-
"description": "The row itself.",
|
|
59519
|
+
"description": "The row itself, which is an `<a>` where `href` is set.",
|
|
59520
59520
|
"name": "item"
|
|
59521
59521
|
},
|
|
59522
59522
|
{
|
|
@@ -59566,6 +59566,16 @@
|
|
|
59566
59566
|
"attribute": "disabled",
|
|
59567
59567
|
"reflects": true
|
|
59568
59568
|
},
|
|
59569
|
+
{
|
|
59570
|
+
"kind": "field",
|
|
59571
|
+
"name": "download",
|
|
59572
|
+
"type": {
|
|
59573
|
+
"text": "boolean"
|
|
59574
|
+
},
|
|
59575
|
+
"default": "false",
|
|
59576
|
+
"description": "Whether the link downloads the file when the row is chosen. Only\nmeaningful beside an `href`, and only for a file served from this origin.",
|
|
59577
|
+
"attribute": "download"
|
|
59578
|
+
},
|
|
59569
59579
|
{
|
|
59570
59580
|
"kind": "field",
|
|
59571
59581
|
"name": "focusable",
|
|
@@ -59575,6 +59585,36 @@
|
|
|
59575
59585
|
"default": "false",
|
|
59576
59586
|
"description": "Whether this row holds the region's tab stop. Set by the drill-down.\n\nA drill-down keeps one stop and moves within it on the arrows, so every\nother row is at `-1`. Leave it off every row, including the first, and\nnothing in the region is tab-reachable: the keyboard cannot get in without\nfirst clicking something with a pointer.\n\nNo attribute, the same as `Button`'s: this is coordination between\nelements, and writing `tabindex` onto a host the consumer rendered is a\nchange a React consumer's hydration reports and does not patch up. The stop\nlands inside this shadow root instead."
|
|
59577
59587
|
},
|
|
59588
|
+
{
|
|
59589
|
+
"kind": "field",
|
|
59590
|
+
"name": "href",
|
|
59591
|
+
"type": {
|
|
59592
|
+
"text": "string"
|
|
59593
|
+
},
|
|
59594
|
+
"default": "''",
|
|
59595
|
+
"description": "The URL the row links to. Setting it renders the row as a link, unless the\nrow opens a page or is disabled.",
|
|
59596
|
+
"attribute": "href"
|
|
59597
|
+
},
|
|
59598
|
+
{
|
|
59599
|
+
"kind": "field",
|
|
59600
|
+
"name": "rel",
|
|
59601
|
+
"type": {
|
|
59602
|
+
"text": "string"
|
|
59603
|
+
},
|
|
59604
|
+
"default": "''",
|
|
59605
|
+
"description": "The link's `rel`. Set it whenever you set `target=\"_blank\"`.",
|
|
59606
|
+
"attribute": "rel"
|
|
59607
|
+
},
|
|
59608
|
+
{
|
|
59609
|
+
"kind": "field",
|
|
59610
|
+
"name": "target",
|
|
59611
|
+
"type": {
|
|
59612
|
+
"text": "string"
|
|
59613
|
+
},
|
|
59614
|
+
"default": "''",
|
|
59615
|
+
"description": "Where the link opens, for rows that should open outside the current page.",
|
|
59616
|
+
"attribute": "target"
|
|
59617
|
+
},
|
|
59578
59618
|
{
|
|
59579
59619
|
"kind": "field",
|
|
59580
59620
|
"name": "value",
|
|
@@ -59683,6 +59723,41 @@
|
|
|
59683
59723
|
"text": "select() => void"
|
|
59684
59724
|
}
|
|
59685
59725
|
},
|
|
59726
|
+
{
|
|
59727
|
+
"kind": "method",
|
|
59728
|
+
"name": "choose",
|
|
59729
|
+
"privacy": "private",
|
|
59730
|
+
"return": {
|
|
59731
|
+
"type": {
|
|
59732
|
+
"text": "boolean"
|
|
59733
|
+
}
|
|
59734
|
+
},
|
|
59735
|
+
"description": "Fires `helix-select`, and returns whether the choice stood."
|
|
59736
|
+
},
|
|
59737
|
+
{
|
|
59738
|
+
"kind": "field",
|
|
59739
|
+
"name": "handleClick",
|
|
59740
|
+
"privacy": "private",
|
|
59741
|
+
"readonly": true,
|
|
59742
|
+
"description": "A press on the row. On a link, a refused `helix-select` stops the link\nfrom being followed, so a router can take the navigation."
|
|
59743
|
+
},
|
|
59744
|
+
{
|
|
59745
|
+
"kind": "field",
|
|
59746
|
+
"name": "handleLinkKeydown",
|
|
59747
|
+
"privacy": "private",
|
|
59748
|
+
"readonly": true,
|
|
59749
|
+
"description": "Space on a link presses it, which an anchor does not do on its own. Enter\nis the anchor's, which fires a click and follows the link."
|
|
59750
|
+
},
|
|
59751
|
+
{
|
|
59752
|
+
"kind": "field",
|
|
59753
|
+
"name": "linked",
|
|
59754
|
+
"type": {
|
|
59755
|
+
"text": "boolean"
|
|
59756
|
+
},
|
|
59757
|
+
"privacy": "private",
|
|
59758
|
+
"description": "Whether the row renders as a link.",
|
|
59759
|
+
"readonly": true
|
|
59760
|
+
},
|
|
59686
59761
|
{
|
|
59687
59762
|
"kind": "method",
|
|
59688
59763
|
"name": "renderMark",
|
|
@@ -60054,6 +60129,42 @@
|
|
|
60054
60129
|
"description": "Whether the row can be reached at all.",
|
|
60055
60130
|
"fieldName": "disabled"
|
|
60056
60131
|
},
|
|
60132
|
+
{
|
|
60133
|
+
"name": "download",
|
|
60134
|
+
"type": {
|
|
60135
|
+
"text": "boolean"
|
|
60136
|
+
},
|
|
60137
|
+
"default": "false",
|
|
60138
|
+
"description": "Whether the link downloads the file when the row is chosen. Only\nmeaningful beside an `href`, and only for a file served from this origin.",
|
|
60139
|
+
"fieldName": "download"
|
|
60140
|
+
},
|
|
60141
|
+
{
|
|
60142
|
+
"name": "href",
|
|
60143
|
+
"type": {
|
|
60144
|
+
"text": "string"
|
|
60145
|
+
},
|
|
60146
|
+
"default": "''",
|
|
60147
|
+
"description": "The URL the row links to. Setting it renders the row as a link, unless the\nrow opens a page or is disabled.",
|
|
60148
|
+
"fieldName": "href"
|
|
60149
|
+
},
|
|
60150
|
+
{
|
|
60151
|
+
"name": "rel",
|
|
60152
|
+
"type": {
|
|
60153
|
+
"text": "string"
|
|
60154
|
+
},
|
|
60155
|
+
"default": "''",
|
|
60156
|
+
"description": "The link's `rel`. Set it whenever you set `target=\"_blank\"`.",
|
|
60157
|
+
"fieldName": "rel"
|
|
60158
|
+
},
|
|
60159
|
+
{
|
|
60160
|
+
"name": "target",
|
|
60161
|
+
"type": {
|
|
60162
|
+
"text": "string"
|
|
60163
|
+
},
|
|
60164
|
+
"default": "''",
|
|
60165
|
+
"description": "Where the link opens, for rows that should open outside the current page.",
|
|
60166
|
+
"fieldName": "target"
|
|
60167
|
+
},
|
|
60057
60168
|
{
|
|
60058
60169
|
"name": "value",
|
|
60059
60170
|
"type": {
|
|
@@ -60122,7 +60233,7 @@
|
|
|
60122
60233
|
"declarations": [
|
|
60123
60234
|
{
|
|
60124
60235
|
"kind": "class",
|
|
60125
|
-
"description": "One panel whose content changes as you move between pages. Use it where there\nis no room for a second column, such as on a phone, or on a touch screen with\nno hover to open one.\n\nIt is a region that stays where you put it, such as inside a drawer, a\nsidebar, or a settings panel. A `Menu` opens from a trigger and closes when\nyou are done. `Menu` can drill into pages too, through the same controller.\n\nRows are places to go and commands to run. Nothing here is form-associated\nand nothing is submitted. To choose a value, use a `Listbox`.\n\nA row that opens a page contains that page, so the stack holds one reference\nand reads the rest from the DOM. The behavior lives in `DrilldownController`,\nwhich `Menu` shares.\n\nAfter each move the host carries `data-direction`, `forward` into a page or\n`back` out of one, and records `:state(forward)` or `:state(back)`, so a\nstylesheet can slide the new page in from the side the reader is going. Both\nare written again on every move, so an animation keyed on them runs for each\npage, two moves the same way included. The styled tier slides the page and\nswaps it at once under `prefers-reduced-motion`.\n\
|
|
60236
|
+
"description": "One panel whose content changes as you move between pages. Use it where there\nis no room for a second column, such as on a phone, or on a touch screen with\nno hover to open one.\n\nIt is a region that stays where you put it, such as inside a drawer, a\nsidebar, or a settings panel. A `Menu` opens from a trigger and closes when\nyou are done. `Menu` can drill into pages too, through the same controller.\n\nRows are places to go and commands to run. Nothing here is form-associated\nand nothing is submitted. To choose a value, use a `Listbox`.\n\nA row that opens a page contains that page, so the stack holds one reference\nand reads the rest from the DOM. The behavior lives in `DrilldownController`,\nwhich `Menu` shares.\n\n**`page` is the page showing**, as the `value` of the row that opens it,\nand empty on the top page. Set it to show a page, such as one a link to a\nsettings screen names. A reader's move updates it, and `helix-navigate`\ncomes first, so you can refuse the move or take it yourself.\n\nAfter each move the host carries `data-direction`, `forward` into a page or\n`back` out of one, and records `:state(forward)` or `:state(back)`, so a\nstylesheet can slide the new page in from the side the reader is going. Both\nare written again on every move, so an animation keyed on them runs for each\npage, two moves the same way included. The styled tier slides the page and\nswaps it at once under `prefers-reduced-motion`.\n\n**Keyboard.** The drilldown is one tab stop, on the row last focused.\n\n| Key | What it does |\n|---|---|\n| Down Arrow, Up Arrow | Moves to the next or the previous row. |\n| Home, End | Moves to the first or the last row. |\n| A letter | Moves to the next row whose name starts with it. |\n| Enter, Space | Chooses the row: opens its page, follows its link, or sends `helix-select`. |\n| Right Arrow | Opens the row's page. Left Arrow on a right-to-left page. |\n| Left Arrow, Escape | Goes back one page, with focus on the row that opened it. Right Arrow on a right-to-left page. |\n\nThe rows of the page showing are a `menu`, named by `label` on the top page\nand by the page's title below it.\n\n**`navigation` makes it a site's navigation.** The host is a `navigation`\nlandmark named by `label`, each page is a list, and each row is a list item\nholding a link or a button, as the APG's disclosure navigation is built,\nso a reader meets places to go in place of a menu of commands. The keys stay\nthe same. The back button and the title sit above\nthe menu. Disabled rows stay reachable with the arrow keys, and typing a\nletter moves to the next row whose name starts with it.",
|
|
60126
60237
|
"name": "HelixHeadlessDrilldown",
|
|
60127
60238
|
"cssParts": [
|
|
60128
60239
|
{
|
|
@@ -60209,6 +60320,26 @@
|
|
|
60209
60320
|
"words": true
|
|
60210
60321
|
}
|
|
60211
60322
|
},
|
|
60323
|
+
{
|
|
60324
|
+
"kind": "field",
|
|
60325
|
+
"name": "navigation",
|
|
60326
|
+
"type": {
|
|
60327
|
+
"text": "boolean"
|
|
60328
|
+
},
|
|
60329
|
+
"default": "false",
|
|
60330
|
+
"description": "Whether the drilldown is a site's navigation: a `navigation` landmark\nnamed by `label`, whose pages are lists of links. Without it, each page is\na `menu`.",
|
|
60331
|
+
"attribute": "navigation"
|
|
60332
|
+
},
|
|
60333
|
+
{
|
|
60334
|
+
"kind": "field",
|
|
60335
|
+
"name": "page",
|
|
60336
|
+
"type": {
|
|
60337
|
+
"text": "string"
|
|
60338
|
+
},
|
|
60339
|
+
"default": "''",
|
|
60340
|
+
"description": "The page showing, as the `value` of the row that opens it. Empty is the\ntop page. Setting it shows that page, and a value no row with a page has\nshows the top page.",
|
|
60341
|
+
"attribute": "page"
|
|
60342
|
+
},
|
|
60212
60343
|
{
|
|
60213
60344
|
"kind": "field",
|
|
60214
60345
|
"name": "direction",
|
|
@@ -60272,6 +60403,44 @@
|
|
|
60272
60403
|
},
|
|
60273
60404
|
"description": "Puts the region's one tab stop on the first row of the page showing.\n\nOne row holds the stop and the arrows move within, which is the roving\npattern the toolbar uses and the one a `menu` wants. Every row at `-1` is\na region the keyboard cannot get into at all without a pointer first.\n\nCalled after every update, because the set changes with the page: drilling\nin replaces the rows outright, and the stop has to land on rows that are\nactually showing."
|
|
60274
60405
|
},
|
|
60406
|
+
{
|
|
60407
|
+
"kind": "method",
|
|
60408
|
+
"name": "navigate",
|
|
60409
|
+
"privacy": "private",
|
|
60410
|
+
"return": {
|
|
60411
|
+
"type": {
|
|
60412
|
+
"text": "boolean"
|
|
60413
|
+
}
|
|
60414
|
+
},
|
|
60415
|
+
"parameters": [
|
|
60416
|
+
{
|
|
60417
|
+
"name": "to",
|
|
60418
|
+
"type": {
|
|
60419
|
+
"text": "HelixHeadlessDrilldownItem | null"
|
|
60420
|
+
}
|
|
60421
|
+
}
|
|
60422
|
+
],
|
|
60423
|
+
"description": "Asks before a reader's move to a page, the row's or the top one, and\nreturns whether the move may go ahead."
|
|
60424
|
+
},
|
|
60425
|
+
{
|
|
60426
|
+
"kind": "method",
|
|
60427
|
+
"name": "holderOf",
|
|
60428
|
+
"privacy": "private",
|
|
60429
|
+
"return": {
|
|
60430
|
+
"type": {
|
|
60431
|
+
"text": "HelixHeadlessDrilldownItem | null"
|
|
60432
|
+
}
|
|
60433
|
+
},
|
|
60434
|
+
"parameters": [
|
|
60435
|
+
{
|
|
60436
|
+
"name": "row",
|
|
60437
|
+
"type": {
|
|
60438
|
+
"text": "HelixHeadlessDrilldownItem"
|
|
60439
|
+
}
|
|
60440
|
+
}
|
|
60441
|
+
],
|
|
60442
|
+
"description": "The row whose page holds a row, or null for the top page."
|
|
60443
|
+
},
|
|
60275
60444
|
{
|
|
60276
60445
|
"kind": "method",
|
|
60277
60446
|
"name": "enter",
|
|
@@ -60304,6 +60473,25 @@
|
|
|
60304
60473
|
"text": "back() => boolean"
|
|
60305
60474
|
}
|
|
60306
60475
|
},
|
|
60476
|
+
{
|
|
60477
|
+
"kind": "method",
|
|
60478
|
+
"name": "showPage",
|
|
60479
|
+
"privacy": "private",
|
|
60480
|
+
"return": {
|
|
60481
|
+
"type": {
|
|
60482
|
+
"text": "void"
|
|
60483
|
+
}
|
|
60484
|
+
},
|
|
60485
|
+
"parameters": [
|
|
60486
|
+
{
|
|
60487
|
+
"name": "value",
|
|
60488
|
+
"type": {
|
|
60489
|
+
"text": "string"
|
|
60490
|
+
}
|
|
60491
|
+
}
|
|
60492
|
+
],
|
|
60493
|
+
"description": "Shows the page of the row with a value, or the top page where no row with a page has it."
|
|
60494
|
+
},
|
|
60307
60495
|
{
|
|
60308
60496
|
"kind": "field",
|
|
60309
60497
|
"name": "handleFocusIn",
|
|
@@ -60924,6 +61112,14 @@
|
|
|
60924
61112
|
}
|
|
60925
61113
|
],
|
|
60926
61114
|
"events": [
|
|
61115
|
+
{
|
|
61116
|
+
"type": {
|
|
61117
|
+
"text": "HelixNavigateEvent"
|
|
61118
|
+
},
|
|
61119
|
+
"description": "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.",
|
|
61120
|
+
"name": "helix-navigate",
|
|
61121
|
+
"reactProp": "onhelix-navigate"
|
|
61122
|
+
},
|
|
60927
61123
|
{
|
|
60928
61124
|
"type": {
|
|
60929
61125
|
"text": "HelixSelectEvent"
|
|
@@ -60952,6 +61148,24 @@
|
|
|
60952
61148
|
"description": "The text of the back button.",
|
|
60953
61149
|
"fieldName": "backLabel"
|
|
60954
61150
|
},
|
|
61151
|
+
{
|
|
61152
|
+
"name": "navigation",
|
|
61153
|
+
"type": {
|
|
61154
|
+
"text": "boolean"
|
|
61155
|
+
},
|
|
61156
|
+
"default": "false",
|
|
61157
|
+
"description": "Whether the drilldown is a site's navigation: a `navigation` landmark\nnamed by `label`, whose pages are lists of links. Without it, each page is\na `menu`.",
|
|
61158
|
+
"fieldName": "navigation"
|
|
61159
|
+
},
|
|
61160
|
+
{
|
|
61161
|
+
"name": "page",
|
|
61162
|
+
"type": {
|
|
61163
|
+
"text": "string"
|
|
61164
|
+
},
|
|
61165
|
+
"default": "''",
|
|
61166
|
+
"description": "The page showing, as the `value` of the row that opens it. Empty is the\ntop page. Setting it shows that page, and a value no row with a page has\nshows the top page.",
|
|
61167
|
+
"fieldName": "page"
|
|
61168
|
+
},
|
|
60955
61169
|
{
|
|
60956
61170
|
"name": "empty-text",
|
|
60957
61171
|
"type": {
|
|
@@ -65511,6 +65725,10 @@
|
|
|
65511
65725
|
"description": "The leading column.",
|
|
65512
65726
|
"name": "entry-start"
|
|
65513
65727
|
},
|
|
65728
|
+
{
|
|
65729
|
+
"description": "The panel a row's submenu opens in beside it. The filter menu's rows have none.",
|
|
65730
|
+
"name": "entry-surface"
|
|
65731
|
+
},
|
|
65514
65732
|
{
|
|
65515
65733
|
"description": "The menu the fields are offered in.",
|
|
65516
65734
|
"name": "menu"
|
|
@@ -103676,7 +103894,7 @@
|
|
|
103676
103894
|
"declarations": [
|
|
103677
103895
|
{
|
|
103678
103896
|
"kind": "class",
|
|
103679
|
-
"description": "A disclosure: a button that shows and hides a region of your own links. It\ndoes not use `role=\"menu\"` or `menuitem`, which are for application commands.\nThose roles take over the arrow keys, announce \"menu\" to someone looking for\nnavigation, and put every link inside a role that is not a link. As a\ndisclosure, middle clicks, modified clicks, and the status bar keep working.\nUse `Menu` for a row of commands.\n\nIt renders no links. A router renders its own anchors and cannot render them\ninside this shadow root, so the panel is a slot for the lists and headings\nyou write.\n\nIt opens on hover by default, and a press always opens it too. `open-on` sets\nwhich. Hover is the default because in a navigation bar people expect to move\nalong the row and see each section.\n\nWhen one panel opens in place of another, each says which way the reader\nmoved, as Radix's `data-motion` does. Moving toward the end of the bar, the\none opening is `:state(from-end)` and the one closing is `:state(to-start)`;\nmoving back, they are `:state(from-start)` and `:state(to-end)`. A\nstylesheet slides them on that. Start and end follow the reading direction,\nso on a right-to-left page the end is on the left. A panel that opens or\ncloses on its own carries none of the four. A press on another megamenu's\ntrigger hands over the same way as hovering it.\n\nWhile a panel is open its surface carries its own size, as\n`--megamenu-surface-inline-size` and `--megamenu-surface-block-size`, and a\npanel that took over from another also carries that one's size, as\n`--megamenu-from-inline-size` and `--megamenu-from-block-size`. Radix's\nnavigation menu publishes the same pair from its shared viewport, so a\nstylesheet can grow or shrink one panel into the next.\n\nThe panel's default slot is the `columns` part and draws no box, so a sheet\ncan give the columns one of their own. While a panel is open, an\n`indicator` slot is rendered beside its trigger, as Radix's indicator\nmarks the open one: slot a mark of your own, such as a bar or an arrow\npointing at the panel, and it shows only while the panel is open. The styled\ntier rests it on the trigger's bottom edge.\n\nLeft and Right Arrow move between the triggers of the megamenus beside this\none, and Home and End go to the first and the last, as Radix's navigation\nmenu does. In a `Navigation`, which holds them in a slot, the arrows are the\nnavigation's, and move between its destinations under its `arrows`. Down Arrow on the trigger of an open panel moves\nfocus to the panel's first link, Escape closes the panel and returns focus\nto its trigger, and Tab moves through the panel's links and closes it on the\nway out. The trigger says `aria-expanded`, and the panel is a group named by\n`label
|
|
103897
|
+
"description": "A disclosure: a button that shows and hides a region of your own links. It\ndoes not use `role=\"menu\"` or `menuitem`, which are for application commands.\nThose roles take over the arrow keys, announce \"menu\" to someone looking for\nnavigation, and put every link inside a role that is not a link. As a\ndisclosure, middle clicks, modified clicks, and the status bar keep working.\nUse `Menu` for a row of commands.\n\nIt renders no links. A router renders its own anchors and cannot render them\ninside this shadow root, so the panel is a slot for the lists and headings\nyou write.\n\nIt opens on hover by default, and a press always opens it too. `open-on` sets\nwhich. Hover is the default because in a navigation bar people expect to move\nalong the row and see each section. A pointer resting on the trigger opens\nthe panel after `open-delay`, and leaving closes it after `close-delay`. Moving\nfrom one open panel's trigger to another's opens the next at once, as Radix's\n`skipDelayDuration` does.\n\nWhen one panel opens in place of another, each says which way the reader\nmoved, as Radix's `data-motion` does. Moving toward the end of the bar, the\none opening is `:state(from-end)` and the one closing is `:state(to-start)`;\nmoving back, they are `:state(from-start)` and `:state(to-end)`. A\nstylesheet slides them on that. Start and end follow the reading direction,\nso on a right-to-left page the end is on the left. A panel that opens or\ncloses on its own carries none of the four. A press on another megamenu's\ntrigger hands over the same way as hovering it.\n\nWhile a panel is open its surface carries its own size, as\n`--megamenu-surface-inline-size` and `--megamenu-surface-block-size`, and a\npanel that took over from another also carries that one's size, as\n`--megamenu-from-inline-size` and `--megamenu-from-block-size`. Radix's\nnavigation menu publishes the same pair from its shared viewport, so a\nstylesheet can grow or shrink one panel into the next.\n\nWhile a link in the panel carries `aria-current=\"page\"`, the host has\n`:state(current)`, so the trigger of the section holding the page you are\non can say so, as Radix's navigation menu marks its active link.\n\nThe panel's default slot is the `columns` part and draws no box, so a sheet\ncan give the columns one of their own. While a panel is open, an\n`indicator` slot is rendered beside its trigger, as Radix's indicator\nmarks the open one: slot a mark of your own, such as a bar or an arrow\npointing at the panel, and it shows only while the panel is open. The styled\ntier rests it on the trigger's bottom edge.\n\nLeft and Right Arrow move between the triggers of the megamenus beside this\none, and Home and End go to the first and the last, as Radix's navigation\nmenu does. In a `Navigation`, which holds them in a slot, the arrows are the\nnavigation's, and move between its destinations under its `arrows`. Down Arrow on the trigger of an open panel moves\nfocus to the panel's first link, Escape closes the panel and returns focus\nto its trigger, and Tab moves through the panel's links and closes it on the\nway out. The trigger says `aria-expanded`, and the panel is a group named by\n`label`.\n\nA Helix trigger, such as `helix-button`, is told whether the panel is open\ninside its own shadow root. On a plain element, such as a `<button>`, the\nmegamenu writes `aria-expanded`, from a frame after its own first render, so\na server's markup is never changed while a framework hydrates it. It never\nwrites it where you wrote `aria-expanded` yourself.",
|
|
103680
103898
|
"name": "HelixHeadlessMegamenu",
|
|
103681
103899
|
"cssProperties": [
|
|
103682
103900
|
{
|
|
@@ -103752,6 +103970,16 @@
|
|
|
103752
103970
|
"description": "The page width, in pixels, below which a card panel is shown as a band. At\nzero, it never is.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This records\n`:state(narrow)` on the host and the stylesheet arranges itself off that.\n\n**A custom state and never `data-narrow`, which is what it was.** The width\nis read in `connectedCallback`, so on a phone this is true on the very first\nupdate: an attribute written there is markup a consumer's server never sent,\nwhich React reports as a mismatch and answers by rebuilding the subtree. The\nnarrow exception the server specs describe covers a mirror that can only\nbecome true long after hydration, and a viewport measured before the first\npaint is the opposite case. See `MixinControllerOpen` on `open`.",
|
|
103753
103971
|
"attribute": "band-below"
|
|
103754
103972
|
},
|
|
103973
|
+
{
|
|
103974
|
+
"kind": "field",
|
|
103975
|
+
"name": "closeDelay",
|
|
103976
|
+
"type": {
|
|
103977
|
+
"text": "number"
|
|
103978
|
+
},
|
|
103979
|
+
"default": "220",
|
|
103980
|
+
"description": "How long a pointer leaving the trigger and the panel waits before the panel\ncloses, in milliseconds. The pointer needs the time to cross from the\ntrigger to the panel.",
|
|
103981
|
+
"attribute": "close-delay"
|
|
103982
|
+
},
|
|
103755
103983
|
{
|
|
103756
103984
|
"kind": "field",
|
|
103757
103985
|
"name": "label",
|
|
@@ -103762,6 +103990,16 @@
|
|
|
103762
103990
|
"description": "The section's name, used for the default trigger and the panel.",
|
|
103763
103991
|
"attribute": "label"
|
|
103764
103992
|
},
|
|
103993
|
+
{
|
|
103994
|
+
"kind": "field",
|
|
103995
|
+
"name": "openDelay",
|
|
103996
|
+
"type": {
|
|
103997
|
+
"text": "number"
|
|
103998
|
+
},
|
|
103999
|
+
"default": "120",
|
|
104000
|
+
"description": "How long a pointer rests on the trigger before the panel opens, in\nmilliseconds, under `open-on=\"hover\"`. A pointer crossing the bar on its\nway somewhere else opens nothing.",
|
|
104001
|
+
"attribute": "open-delay"
|
|
104002
|
+
},
|
|
103765
104003
|
{
|
|
103766
104004
|
"kind": "field",
|
|
103767
104005
|
"name": "openOn",
|
|
@@ -103772,6 +104010,16 @@
|
|
|
103772
104010
|
"description": "Whether hovering over the trigger opens the panel (`hover`), or only a press\ndoes (`click`).\n\nA press always works. This says whether a mouse also opens it by resting on\nthe trigger, and it is the default because that is what a navigation bar\ndoes. `click` is for a trigger that does something else as well, or a panel\nheavy enough that opening it on the way past is rude.",
|
|
103773
104011
|
"attribute": "open-on"
|
|
103774
104012
|
},
|
|
104013
|
+
{
|
|
104014
|
+
"kind": "field",
|
|
104015
|
+
"name": "placement",
|
|
104016
|
+
"type": {
|
|
104017
|
+
"text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
|
|
104018
|
+
},
|
|
104019
|
+
"default": "'bottom-start'",
|
|
104020
|
+
"description": "The side of the trigger a card panel opens on, when there is room. It\nmoves if that side does not fit. A band ignores it, since a band spans the\npage under its bar.",
|
|
104021
|
+
"attribute": "placement"
|
|
104022
|
+
},
|
|
103775
104023
|
{
|
|
103776
104024
|
"kind": "field",
|
|
103777
104025
|
"name": "variant",
|
|
@@ -103830,7 +104078,7 @@
|
|
|
103830
104078
|
"name": "panel",
|
|
103831
104079
|
"privacy": "protected",
|
|
103832
104080
|
"readonly": true,
|
|
103833
|
-
"default": "new PopoverController(this, { anchor: () => this.trigger, /* The host, not the panel. A press on the trigger is a press on this element, and counting it as outside would close the panel on the way to the click that toggles it. `Menu` says the same about its own. Every other megamenu too: a press on one of them opens it, and opening it closes this one with a direction. */ boundary: () => [...HelixHeadlessMegamenu.bar.connected], onDismiss: () => this.close(), open: () => this.open, place: () => !this.banded, placement: () =>
|
|
104081
|
+
"default": "new PopoverController(this, { anchor: () => this.trigger, /* The host, not the panel. A press on the trigger is a press on this element, and counting it as outside would close the panel on the way to the click that toggles it. `Menu` says the same about its own. Every other megamenu too: a press on one of them opens it, and opening it closes this one with a direction. */ boundary: () => [...HelixHeadlessMegamenu.bar.connected], onDismiss: () => this.close(), open: () => this.open, place: () => !this.banded, placement: () => this.placement, surface: () => this.partNamed('surface'), })"
|
|
103834
104082
|
},
|
|
103835
104083
|
{
|
|
103836
104084
|
"kind": "method",
|
|
@@ -103841,7 +104089,26 @@
|
|
|
103841
104089
|
"text": "void"
|
|
103842
104090
|
}
|
|
103843
104091
|
},
|
|
103844
|
-
"description": "Tells a slotted trigger the disclosure state
|
|
104092
|
+
"description": "Tells a slotted trigger the disclosure state.\n\nA Helix trigger by property, through `tellDisclosure`. A plain element,\nwhich has no shadow root to keep the state out of the markup, by\n`aria-expanded`, from a frame after the first render, as `Popover` writes\nit. One that already carries `aria-expanded` is the consumer's to keep."
|
|
104093
|
+
},
|
|
104094
|
+
{
|
|
104095
|
+
"kind": "field",
|
|
104096
|
+
"name": "settledOnce",
|
|
104097
|
+
"type": {
|
|
104098
|
+
"text": "boolean"
|
|
104099
|
+
},
|
|
104100
|
+
"privacy": "private",
|
|
104101
|
+
"default": "false",
|
|
104102
|
+
"description": "Whether a frame has passed since the first render, after which a plain trigger may be told."
|
|
104103
|
+
},
|
|
104104
|
+
{
|
|
104105
|
+
"kind": "field",
|
|
104106
|
+
"name": "told",
|
|
104107
|
+
"type": {
|
|
104108
|
+
"text": "Element | undefined"
|
|
104109
|
+
},
|
|
104110
|
+
"privacy": "private",
|
|
104111
|
+
"description": "The plain trigger this megamenu writes `aria-expanded` on."
|
|
103845
104112
|
},
|
|
103846
104113
|
{
|
|
103847
104114
|
"kind": "field",
|
|
@@ -103878,6 +104145,26 @@
|
|
|
103878
104145
|
"readonly": true,
|
|
103879
104146
|
"description": "Down Arrow on the trigger of an open panel moves focus to the panel's first\nlink or control, as Radix's navigation menu does."
|
|
103880
104147
|
},
|
|
104148
|
+
{
|
|
104149
|
+
"kind": "field",
|
|
104150
|
+
"name": "currentWatch",
|
|
104151
|
+
"type": {
|
|
104152
|
+
"text": "MutationObserver | undefined"
|
|
104153
|
+
},
|
|
104154
|
+
"privacy": "private",
|
|
104155
|
+
"description": "Watches the panel's links for the one that is the page you are on."
|
|
104156
|
+
},
|
|
104157
|
+
{
|
|
104158
|
+
"kind": "method",
|
|
104159
|
+
"name": "markCurrent",
|
|
104160
|
+
"privacy": "private",
|
|
104161
|
+
"return": {
|
|
104162
|
+
"type": {
|
|
104163
|
+
"text": "void"
|
|
104164
|
+
}
|
|
104165
|
+
},
|
|
104166
|
+
"description": "Records whether a link in the panel is the page you are on."
|
|
104167
|
+
},
|
|
103881
104168
|
{
|
|
103882
104169
|
"kind": "method",
|
|
103883
104170
|
"name": "close",
|
|
@@ -103911,29 +104198,6 @@
|
|
|
103911
104198
|
},
|
|
103912
104199
|
"description": "The bottom edge of the bar this hangs from.\n\nThe trigger's own bottom is the obvious answer and is the wrong one: a\nheader is taller than the word inside it, so a band starting at the word\nstarts partway up the header, over its lower padding and its border.\nMeasured: trigger bottom 44, header bottom 57, thirteen pixels of header\nwith a band drawn across it.\n\n**The first ancestor as wide as the window, which is a fact and not a tag\nname.** A band spans the viewport, so what it should hang from is whatever\nelse does: that is what makes something a bar. Asking for `AppHeader` by\nname would make this element know about that one, which is the coupling\n`Menu` is careful not to have with `Drilldown`, and would leave a consumer\nwho wrote their own header with a band across it.\n\n`body` ends the walk. It is as wide as the window and is not a bar, and its\nbottom is the foot of the page: without the guard a megamenu on a plain page\nwould put its band down there. Nothing found means nothing to hang from, and\nthe trigger is the honest answer again."
|
|
103913
104200
|
},
|
|
103914
|
-
{
|
|
103915
|
-
"kind": "field",
|
|
103916
|
-
"name": "OPEN_DELAY",
|
|
103917
|
-
"type": {
|
|
103918
|
-
"text": "number"
|
|
103919
|
-
},
|
|
103920
|
-
"privacy": "private",
|
|
103921
|
-
"static": true,
|
|
103922
|
-
"readonly": true,
|
|
103923
|
-
"default": "120",
|
|
103924
|
-
"description": "How long a pointer has to mean it, in milliseconds.\n\nOpening is the shorter wait: too long and the panel feels stuck, too short\nand crossing the bar opens things. Closing is longer because the pointer\nhas to get from the trigger to the panel, and the straight line between\nthem is not the line anybody moves along."
|
|
103925
|
-
},
|
|
103926
|
-
{
|
|
103927
|
-
"kind": "field",
|
|
103928
|
-
"name": "CLOSE_DELAY",
|
|
103929
|
-
"type": {
|
|
103930
|
-
"text": "number"
|
|
103931
|
-
},
|
|
103932
|
-
"privacy": "private",
|
|
103933
|
-
"static": true,
|
|
103934
|
-
"readonly": true,
|
|
103935
|
-
"default": "220"
|
|
103936
|
-
},
|
|
103937
104201
|
{
|
|
103938
104202
|
"kind": "field",
|
|
103939
104203
|
"name": "timer",
|
|
@@ -104599,6 +104863,15 @@
|
|
|
104599
104863
|
"description": "The page width, in pixels, below which a card panel is shown as a band. At\nzero, it never is.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This records\n`:state(narrow)` on the host and the stylesheet arranges itself off that.\n\n**A custom state and never `data-narrow`, which is what it was.** The width\nis read in `connectedCallback`, so on a phone this is true on the very first\nupdate: an attribute written there is markup a consumer's server never sent,\nwhich React reports as a mismatch and answers by rebuilding the subtree. The\nnarrow exception the server specs describe covers a mirror that can only\nbecome true long after hydration, and a viewport measured before the first\npaint is the opposite case. See `MixinControllerOpen` on `open`.",
|
|
104600
104864
|
"fieldName": "bandBelow"
|
|
104601
104865
|
},
|
|
104866
|
+
{
|
|
104867
|
+
"name": "close-delay",
|
|
104868
|
+
"type": {
|
|
104869
|
+
"text": "number"
|
|
104870
|
+
},
|
|
104871
|
+
"default": "220",
|
|
104872
|
+
"description": "How long a pointer leaving the trigger and the panel waits before the panel\ncloses, in milliseconds. The pointer needs the time to cross from the\ntrigger to the panel.",
|
|
104873
|
+
"fieldName": "closeDelay"
|
|
104874
|
+
},
|
|
104602
104875
|
{
|
|
104603
104876
|
"name": "label",
|
|
104604
104877
|
"type": {
|
|
@@ -104608,6 +104881,15 @@
|
|
|
104608
104881
|
"description": "The section's name, used for the default trigger and the panel.",
|
|
104609
104882
|
"fieldName": "label"
|
|
104610
104883
|
},
|
|
104884
|
+
{
|
|
104885
|
+
"name": "open-delay",
|
|
104886
|
+
"type": {
|
|
104887
|
+
"text": "number"
|
|
104888
|
+
},
|
|
104889
|
+
"default": "120",
|
|
104890
|
+
"description": "How long a pointer rests on the trigger before the panel opens, in\nmilliseconds, under `open-on=\"hover\"`. A pointer crossing the bar on its\nway somewhere else opens nothing.",
|
|
104891
|
+
"fieldName": "openDelay"
|
|
104892
|
+
},
|
|
104611
104893
|
{
|
|
104612
104894
|
"name": "open-on",
|
|
104613
104895
|
"type": {
|
|
@@ -104617,6 +104899,15 @@
|
|
|
104617
104899
|
"description": "Whether hovering over the trigger opens the panel (`hover`), or only a press\ndoes (`click`).\n\nA press always works. This says whether a mouse also opens it by resting on\nthe trigger, and it is the default because that is what a navigation bar\ndoes. `click` is for a trigger that does something else as well, or a panel\nheavy enough that opening it on the way past is rude.",
|
|
104618
104900
|
"fieldName": "openOn"
|
|
104619
104901
|
},
|
|
104902
|
+
{
|
|
104903
|
+
"name": "placement",
|
|
104904
|
+
"type": {
|
|
104905
|
+
"text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
|
|
104906
|
+
},
|
|
104907
|
+
"default": "'bottom-start'",
|
|
104908
|
+
"description": "The side of the trigger a card panel opens on, when there is room. It\nmoves if that side does not fit. A band ignores it, since a band spans the\npage under its bar.",
|
|
104909
|
+
"fieldName": "placement"
|
|
104910
|
+
},
|
|
104620
104911
|
{
|
|
104621
104912
|
"name": "variant",
|
|
104622
104913
|
"type": {
|
|
@@ -104652,6 +104943,10 @@
|
|
|
104652
104943
|
}
|
|
104653
104944
|
],
|
|
104654
104945
|
"cssStates": [
|
|
104946
|
+
{
|
|
104947
|
+
"description": "A link in the panel carries `aria-current=\"page\"`, so the trigger can show the section you are in.",
|
|
104948
|
+
"name": "current"
|
|
104949
|
+
},
|
|
104655
104950
|
{
|
|
104656
104951
|
"description": "The panel opened in place of one earlier in the bar, so it can enter from the end side.",
|
|
104657
104952
|
"name": "from-end"
|
|
@@ -104781,7 +105076,7 @@
|
|
|
104781
105076
|
"declarations": [
|
|
104782
105077
|
{
|
|
104783
105078
|
"kind": "class",
|
|
104784
|
-
"description": "One element covers three kinds of row, and what you give it decides which:\n- Content in the `submenu` slot makes the row open a submenu page.\n- `checked` makes the row a choice.\n- With neither, the row is a command.\n\nThe role follows the kind. A row with `checked` is `menuitemcheckbox` with\n`aria-checked`, and `exclusive` makes it `menuitemradio`, for a set where\nonly one can be on. A row that opens a page keeps `menuitem` and sets\n`aria-haspopup`.\n\nChoosing a choice row checks or unchecks it before `helix-select` is sent,\nso a listener reads the new `checked`. An `exclusive` row turns on and turns\noff the `exclusive` rows next to it. Cancel `helix-before-toggle` to keep a\nrow as it is and set `checked` yourself.\n\nThe menu sets whether the row's page is showing as a property, never as an\nattribute. An attribute written onto your element after it upgrades causes a\nhydration mismatch.\n\n`shortcut` shows a row's keyboard shortcut after its label, drawn by `Kbd`\nin the platform's glyphs, and gives the row `aria-keyshortcuts`. It binds\nnothing: the shortcut is the page's to bind. Other trailing words, such as a\ncount, go in the `end` slot.\n\nThe row is named by its label alone. Words in `description`, a line under the\nlabel, and in `end` describe it instead, through `aria-describedby`, as\nReact Aria's menu item does with its description: a reader hears \"Copy\",\nthen \"Copies the selection\".\n\nThe check mark and the caret are the fallbacks of the `check` and `chevron`\nslots, so a mark of your own replaces either by being slotted. Neither is\nread as part of the row's name.",
|
|
105079
|
+
"description": "One element covers three kinds of row, and what you give it decides which:\n- Content in the `submenu` slot makes the row open a submenu page.\n- `checked` makes the row a choice.\n- With neither, the row is a command.\n\nThe role follows the kind. A row with `checked` is `menuitemcheckbox` with\n`aria-checked`, and `exclusive` makes it `menuitemradio`, for a set where\nonly one can be on. A row that opens a page keeps `menuitem` and sets\n`aria-haspopup`.\n\nChoosing a choice row checks or unchecks it before `helix-select` is sent,\nso a listener reads the new `checked`. An `exclusive` row turns on and turns\noff the `exclusive` rows next to it. Cancel `helix-before-toggle` to keep a\nrow as it is and set `checked` yourself.\n\nThe menu sets whether the row's page is showing as a property, never as an\nattribute. An attribute written onto your element after it upgrades causes a\nhydration mismatch.\n\n`shortcut` shows a row's keyboard shortcut after its label, drawn by `Kbd`\nin the platform's glyphs, and gives the row `aria-keyshortcuts`. It binds\nnothing: the shortcut is the page's to bind. Other trailing words, such as a\ncount, go in the `end` slot.\n\nThe row is named by its label alone. Words in `description`, a line under the\nlabel, and in `end` describe it instead, through `aria-describedby`, as\nReact Aria's menu item does with its description: a reader hears \"Copy\",\nthen \"Copies the selection\".\n\nA development build warns when a row has no words to be named by, such as a\nrow holding only an icon with no label.\n\nThe check mark and the caret are the fallbacks of the `check` and `chevron`\nslots, so a mark of your own replaces either by being slotted. Neither is\nread as part of the row's name.",
|
|
104785
105080
|
"name": "HelixHeadlessMenuItem",
|
|
104786
105081
|
"cssParts": [
|
|
104787
105082
|
{
|
|
@@ -104815,6 +105110,10 @@
|
|
|
104815
105110
|
{
|
|
104816
105111
|
"description": "The leading column that holds the `start` slot. It is always rendered.",
|
|
104817
105112
|
"name": "start"
|
|
105113
|
+
},
|
|
105114
|
+
{
|
|
105115
|
+
"description": "The panel a submenu opens in beside the row, under the menu's `submenus=\"flyout\"`.",
|
|
105116
|
+
"name": "surface"
|
|
104818
105117
|
}
|
|
104819
105118
|
],
|
|
104820
105119
|
"slots": [
|
|
@@ -105086,6 +105385,14 @@
|
|
|
105086
105385
|
"text": "focusItem() => void"
|
|
105087
105386
|
}
|
|
105088
105387
|
},
|
|
105388
|
+
{
|
|
105389
|
+
"kind": "field",
|
|
105390
|
+
"name": "flyoutPanel",
|
|
105391
|
+
"privacy": "protected",
|
|
105392
|
+
"readonly": true,
|
|
105393
|
+
"default": "new PopoverController(this, { anchor: () => this.partNamed('item'), boundary: () => this, onDismiss: () => {}, open: () => this.flyout && this.expanded && this.onPage && this.submenu, placement: () => (isRtl(this) ? 'left-start' : 'right-start'), surface: () => (this.flyout ? this.partNamed('surface') : null), })",
|
|
105394
|
+
"description": "The panel a flyout submenu opens in, beside the row and in the top layer.\nThe menu around it says when, and answers a press outside and Escape, so\nits own dismissal does nothing."
|
|
105395
|
+
},
|
|
105089
105396
|
{
|
|
105090
105397
|
"kind": "method",
|
|
105091
105398
|
"name": "select",
|
|
@@ -105636,6 +105943,14 @@
|
|
|
105636
105943
|
"description": "The row is checked.",
|
|
105637
105944
|
"name": "checked"
|
|
105638
105945
|
},
|
|
105946
|
+
{
|
|
105947
|
+
"description": "Under `submenus=\"flyout\"`, a row in this row's submenu can be ticked or opens a submenu, so the submenu keeps its trailing column.",
|
|
105948
|
+
"name": "submenu-mark"
|
|
105949
|
+
},
|
|
105950
|
+
{
|
|
105951
|
+
"description": "Under `submenus=\"flyout\"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.",
|
|
105952
|
+
"name": "submenu-start"
|
|
105953
|
+
},
|
|
105639
105954
|
{
|
|
105640
105955
|
"description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
|
|
105641
105956
|
"name": "settled",
|
|
@@ -105696,7 +106011,7 @@
|
|
|
105696
106011
|
"declarations": [
|
|
105697
106012
|
{
|
|
105698
106013
|
"kind": "class",
|
|
105699
|
-
"description": "The trigger is slotted and stays your own element, as with the tooltip. The\nmenu renders its surface in the top layer with the popover API, so an\nancestor with `overflow: hidden` does not clip it and it needs no `z-index`.\n\nSlot a `helix-button` or `helix-icon-button` as the trigger, and the menu\ntells it that it opens a menu and whether the menu is open
|
|
106014
|
+
"description": "The trigger is slotted and stays your own element, as with the tooltip. The\nmenu renders its surface in the top layer with the popover API, so an\nancestor with `overflow: hidden` does not clip it and it needs no `z-index`.\n\nSlot a `helix-button` or `helix-icon-button` as the trigger, and the menu\ntells it that it opens a menu and whether the menu is open, inside its own\nshadow root. On a plain element, such as a `<button>`, the menu writes\n`aria-haspopup=\"menu\"` and `aria-expanded`, from a frame after its own first\nrender, so a server's markup is never changed while a framework hydrates it.\nIt never writes `aria-expanded` where you wrote it yourself.\n\nSubmenus drill down by default. A submenu replaces the panel's content, and a\nback row returns to the previous page. One panel stays inside a narrow\nwindow, and works on touch screens, which have no hover.\n\n**`submenus=\"flyout\"` opens each submenu in a panel of its own beside its\nrow**, as React Aria's `SubmenuTrigger` and Radix's `Sub` do. Resting the\npointer on the row opens it, and a pointer crossing toward the open panel\nover the rows between keeps it open, as Radix's grace area does. Right Arrow\nopens a row's submenu on its first row, and Left Arrow or Escape closes it\nand returns focus to the row, the two arrows swapping on a right-to-left\npage. The row says `aria-expanded`, and the panel is a `menu` named by the\nrow.\n\nThe root holds which page is open, because only one page shows at a time. It\nsets this on items as a property, never as an attribute. An attribute written\nonto your element after it upgrades causes a hydration mismatch.\n\nGroup rows under a heading with `Menu.Section`, which is a `group` named by\nits heading. Between runs of rows, a `<helix-divider>` is a separator a\nscreen reader announces.\n\nKeys: Enter, Space or Down Arrow on the trigger opens the menu on its first\nrow, and Up Arrow on its last. In the menu, Up and Down Arrow move between\nrows, Home and End go to the first and the last, a typed letter moves to\nthe next row whose name starts with it, Enter and Space choose, Right Arrow\nopens a row's submenu and Left Arrow goes back, the two swapping on a\nright-to-left page, and Escape closes the menu and returns focus to the\ntrigger. Tab closes it and moves on.\n\nWhile it is open, the surface carries the trigger's width as\n`--floating-anchor-inline-size` and the room left below it as\n`--floating-available-block-size`, as Radix's dropdown menu publishes its\ntrigger's width, for a menu as wide as its trigger:\n`helix-menu::part(surface) { min-inline-size: var(--floating-anchor-inline-size) }`.\n\nWith `context`, the trigger is an area and the menu is its context menu: a\nright-click, a long press, Shift+F10 or the menu key over the area opens it\nat the pointer, or at the area's corner from the keyboard, as Radix's context\nmenu does. A press on the area does not open it, and closing it returns focus\nto where it was. A touch or a pen held still on the area opens it too, on\nevery browser, since iOS sends no `contextmenu` for one.\n\n**A trigger with its own action.** With `open-on=\"long-press\"`, a press on\nthe trigger is the trigger's own, and a press held for half a second opens\nthe menu, as React Aria's `trigger=\"longPress\"` does. Alt+Down or Alt+Up\nopens it from the keyboard, and the trigger is described by\n`long-press-label`, which says so.",
|
|
105700
106015
|
"name": "HelixHeadlessMenu",
|
|
105701
106016
|
"cssProperties": [
|
|
105702
106017
|
{
|
|
@@ -105801,6 +106116,116 @@
|
|
|
105801
106116
|
"description": "Accessible name for the surface.\n\nEmpty by default, which names the surface by its trigger, so a menu opened\nfrom \"Actions\" is announced as \"Actions\". An `aria-label` or\n`aria-labelledby` on the host names it too, and wins over both.",
|
|
105802
106117
|
"attribute": "label"
|
|
105803
106118
|
},
|
|
106119
|
+
{
|
|
106120
|
+
"kind": "field",
|
|
106121
|
+
"name": "flies",
|
|
106122
|
+
"type": {
|
|
106123
|
+
"text": "boolean"
|
|
106124
|
+
},
|
|
106125
|
+
"privacy": "private",
|
|
106126
|
+
"description": "Whether submenus open beside their rows.",
|
|
106127
|
+
"readonly": true
|
|
106128
|
+
},
|
|
106129
|
+
{
|
|
106130
|
+
"kind": "field",
|
|
106131
|
+
"name": "topRows",
|
|
106132
|
+
"type": {
|
|
106133
|
+
"text": "HelixHeadlessMenuItem[]"
|
|
106134
|
+
},
|
|
106135
|
+
"privacy": "private",
|
|
106136
|
+
"description": "The rows of the top page, read through each section.",
|
|
106137
|
+
"readonly": true
|
|
106138
|
+
},
|
|
106139
|
+
{
|
|
106140
|
+
"kind": "method",
|
|
106141
|
+
"name": "rowsOf",
|
|
106142
|
+
"privacy": "private",
|
|
106143
|
+
"return": {
|
|
106144
|
+
"type": {
|
|
106145
|
+
"text": "HelixHeadlessMenuItem[]"
|
|
106146
|
+
}
|
|
106147
|
+
},
|
|
106148
|
+
"parameters": [
|
|
106149
|
+
{
|
|
106150
|
+
"name": "holder",
|
|
106151
|
+
"type": {
|
|
106152
|
+
"text": "HelixHeadlessMenuItem | null"
|
|
106153
|
+
}
|
|
106154
|
+
}
|
|
106155
|
+
],
|
|
106156
|
+
"description": "The rows of a submenu, or of the top page for null."
|
|
106157
|
+
},
|
|
106158
|
+
{
|
|
106159
|
+
"kind": "method",
|
|
106160
|
+
"name": "holderOf",
|
|
106161
|
+
"privacy": "private",
|
|
106162
|
+
"return": {
|
|
106163
|
+
"type": {
|
|
106164
|
+
"text": "HelixHeadlessMenuItem | null"
|
|
106165
|
+
}
|
|
106166
|
+
},
|
|
106167
|
+
"parameters": [
|
|
106168
|
+
{
|
|
106169
|
+
"name": "row",
|
|
106170
|
+
"type": {
|
|
106171
|
+
"text": "HelixHeadlessMenuItem"
|
|
106172
|
+
}
|
|
106173
|
+
}
|
|
106174
|
+
],
|
|
106175
|
+
"description": "The row whose submenu holds a row, or null for a row of the top page."
|
|
106176
|
+
},
|
|
106177
|
+
{
|
|
106178
|
+
"kind": "field",
|
|
106179
|
+
"name": "openPages",
|
|
106180
|
+
"type": {
|
|
106181
|
+
"text": "(HelixHeadlessMenuItem | null)[]"
|
|
106182
|
+
},
|
|
106183
|
+
"privacy": "private",
|
|
106184
|
+
"description": "The submenus open, from the top page down to the deepest.",
|
|
106185
|
+
"readonly": true
|
|
106186
|
+
},
|
|
106187
|
+
{
|
|
106188
|
+
"kind": "field",
|
|
106189
|
+
"name": "keyPage",
|
|
106190
|
+
"type": {
|
|
106191
|
+
"text": "HelixHeadlessMenuItem | null"
|
|
106192
|
+
},
|
|
106193
|
+
"privacy": "private",
|
|
106194
|
+
"description": "The submenu the keys move in under `flyout`: the one holding the row with\nfocus, or the deepest open one.",
|
|
106195
|
+
"readonly": true
|
|
106196
|
+
},
|
|
106197
|
+
{
|
|
106198
|
+
"kind": "method",
|
|
106199
|
+
"name": "openPage",
|
|
106200
|
+
"privacy": "private",
|
|
106201
|
+
"return": {
|
|
106202
|
+
"type": {
|
|
106203
|
+
"text": "void"
|
|
106204
|
+
}
|
|
106205
|
+
},
|
|
106206
|
+
"parameters": [
|
|
106207
|
+
{
|
|
106208
|
+
"name": "holder",
|
|
106209
|
+
"type": {
|
|
106210
|
+
"text": "HelixHeadlessMenuItem | null"
|
|
106211
|
+
}
|
|
106212
|
+
}
|
|
106213
|
+
],
|
|
106214
|
+
"description": "Opens a submenu and closes the ones below it, or closes them all for null."
|
|
106215
|
+
},
|
|
106216
|
+
{
|
|
106217
|
+
"kind": "field",
|
|
106218
|
+
"name": "longPressLabel",
|
|
106219
|
+
"type": {
|
|
106220
|
+
"text": "string"
|
|
106221
|
+
},
|
|
106222
|
+
"default": "'Long press or press Alt+Down to show the menu'",
|
|
106223
|
+
"description": "The description a trigger gives under `open-on=\"long-press\"`, saying how\nto open the menu. Translate it with the rest of your interface.",
|
|
106224
|
+
"attribute": "long-press-label",
|
|
106225
|
+
"helix": {
|
|
106226
|
+
"words": true
|
|
106227
|
+
}
|
|
106228
|
+
},
|
|
105804
106229
|
{
|
|
105805
106230
|
"kind": "field",
|
|
105806
106231
|
"name": "offset",
|
|
@@ -105811,6 +106236,43 @@
|
|
|
105811
106236
|
"description": "Space between the trigger and the surface, in pixels.",
|
|
105812
106237
|
"attribute": "offset"
|
|
105813
106238
|
},
|
|
106239
|
+
{
|
|
106240
|
+
"kind": "field",
|
|
106241
|
+
"name": "pressHeld",
|
|
106242
|
+
"type": {
|
|
106243
|
+
"text": "boolean"
|
|
106244
|
+
},
|
|
106245
|
+
"privacy": "private",
|
|
106246
|
+
"description": "Whether the trigger opens the menu only on a held press.",
|
|
106247
|
+
"readonly": true
|
|
106248
|
+
},
|
|
106249
|
+
{
|
|
106250
|
+
"kind": "field",
|
|
106251
|
+
"name": "longPress",
|
|
106252
|
+
"privacy": "private",
|
|
106253
|
+
"readonly": true,
|
|
106254
|
+
"default": "new LongPress(this, { onLongPress: () => { if (this.context) { const at = this.heldAt if (at) { this.openContextAt(at) } return } if (!this.open) { this.show() } }, })",
|
|
106255
|
+
"description": "Watches the trigger for a held press: under `open-on=\"long-press\"`, and\nfor a touch or a pen on a context menu's area."
|
|
106256
|
+
},
|
|
106257
|
+
{
|
|
106258
|
+
"kind": "field",
|
|
106259
|
+
"name": "heldAt",
|
|
106260
|
+
"type": {
|
|
106261
|
+
"text": "{ x: number; y: number } | undefined"
|
|
106262
|
+
},
|
|
106263
|
+
"privacy": "private",
|
|
106264
|
+
"description": "Where a held press on a context menu's area is, to open the menu there."
|
|
106265
|
+
},
|
|
106266
|
+
{
|
|
106267
|
+
"kind": "field",
|
|
106268
|
+
"name": "openOn",
|
|
106269
|
+
"type": {
|
|
106270
|
+
"text": "'click' | 'long-press'"
|
|
106271
|
+
},
|
|
106272
|
+
"default": "'click'",
|
|
106273
|
+
"description": "What opens the menu from its trigger. `long-press` leaves a press to the\ntrigger's own action and opens the menu on a press held for half a second,\nor on Alt+Down or Alt+Up.",
|
|
106274
|
+
"attribute": "open-on"
|
|
106275
|
+
},
|
|
105814
106276
|
{
|
|
105815
106277
|
"kind": "field",
|
|
105816
106278
|
"name": "placement",
|
|
@@ -105821,6 +106283,16 @@
|
|
|
105821
106283
|
"description": "The side the menu opens on, when there is room.\n\nIt moves if that side does not fit.",
|
|
105822
106284
|
"attribute": "placement"
|
|
105823
106285
|
},
|
|
106286
|
+
{
|
|
106287
|
+
"kind": "field",
|
|
106288
|
+
"name": "submenus",
|
|
106289
|
+
"type": {
|
|
106290
|
+
"text": "'drill' | 'flyout'"
|
|
106291
|
+
},
|
|
106292
|
+
"default": "'drill'",
|
|
106293
|
+
"description": "How a submenu opens. `drill` shows it in place of the page showing, with\na way back. `flyout` opens it in a panel of its own beside its row.",
|
|
106294
|
+
"attribute": "submenus"
|
|
106295
|
+
},
|
|
105824
106296
|
{
|
|
105825
106297
|
"kind": "field",
|
|
105826
106298
|
"name": "drilldown",
|
|
@@ -105881,6 +106353,25 @@
|
|
|
105881
106353
|
},
|
|
105882
106354
|
"description": "Tells a slotted trigger the disclosure state, by property.\n\nA control that opens a menu has to say so. By property rather than by\nattribute, which is the class note's rule about items applied one level up:\nan attribute written onto a consumer's element after it upgrades is a\nhydration mismatch waiting to happen."
|
|
105883
106355
|
},
|
|
106356
|
+
{
|
|
106357
|
+
"kind": "field",
|
|
106358
|
+
"name": "settledOnce",
|
|
106359
|
+
"type": {
|
|
106360
|
+
"text": "boolean"
|
|
106361
|
+
},
|
|
106362
|
+
"privacy": "private",
|
|
106363
|
+
"default": "false",
|
|
106364
|
+
"description": "Whether a frame has passed since the first render, after which a plain trigger may be told."
|
|
106365
|
+
},
|
|
106366
|
+
{
|
|
106367
|
+
"kind": "field",
|
|
106368
|
+
"name": "told",
|
|
106369
|
+
"type": {
|
|
106370
|
+
"text": "Element | undefined"
|
|
106371
|
+
},
|
|
106372
|
+
"privacy": "private",
|
|
106373
|
+
"description": "The plain trigger this menu writes `aria-expanded` on."
|
|
106374
|
+
},
|
|
105884
106375
|
{
|
|
105885
106376
|
"kind": "field",
|
|
105886
106377
|
"name": "trigger",
|
|
@@ -105953,6 +106444,25 @@
|
|
|
105953
106444
|
"readonly": true,
|
|
105954
106445
|
"description": "Opens a context menu where the reader asked for it: at the pointer, or at\nthe area's corner where the keyboard asked and the event has no position."
|
|
105955
106446
|
},
|
|
106447
|
+
{
|
|
106448
|
+
"kind": "method",
|
|
106449
|
+
"name": "openContextAt",
|
|
106450
|
+
"privacy": "private",
|
|
106451
|
+
"return": {
|
|
106452
|
+
"type": {
|
|
106453
|
+
"text": "void"
|
|
106454
|
+
}
|
|
106455
|
+
},
|
|
106456
|
+
"parameters": [
|
|
106457
|
+
{
|
|
106458
|
+
"name": "point",
|
|
106459
|
+
"type": {
|
|
106460
|
+
"text": "{ x: number; y: number }"
|
|
106461
|
+
}
|
|
106462
|
+
}
|
|
106463
|
+
],
|
|
106464
|
+
"description": "Opens a context menu at a point in the viewport, or moves an open one there."
|
|
106465
|
+
},
|
|
105956
106466
|
{
|
|
105957
106467
|
"kind": "method",
|
|
105958
106468
|
"name": "enter",
|
|
@@ -106027,6 +106537,160 @@
|
|
|
106027
106537
|
"privacy": "private",
|
|
106028
106538
|
"readonly": true
|
|
106029
106539
|
},
|
|
106540
|
+
{
|
|
106541
|
+
"kind": "method",
|
|
106542
|
+
"name": "fromTrigger",
|
|
106543
|
+
"privacy": "private",
|
|
106544
|
+
"return": {
|
|
106545
|
+
"type": {
|
|
106546
|
+
"text": "boolean"
|
|
106547
|
+
}
|
|
106548
|
+
},
|
|
106549
|
+
"parameters": [
|
|
106550
|
+
{
|
|
106551
|
+
"name": "event",
|
|
106552
|
+
"type": {
|
|
106553
|
+
"text": "Event"
|
|
106554
|
+
}
|
|
106555
|
+
}
|
|
106556
|
+
],
|
|
106557
|
+
"description": "Whether an event came from the slotted trigger, or the area of a context menu."
|
|
106558
|
+
},
|
|
106559
|
+
{
|
|
106560
|
+
"kind": "field",
|
|
106561
|
+
"name": "handlePointerDown",
|
|
106562
|
+
"privacy": "private",
|
|
106563
|
+
"readonly": true,
|
|
106564
|
+
"description": "A press on the trigger starting: the start of a held one under\n`open-on=\"long-press\"`, or a touch or a pen held on a context menu's area."
|
|
106565
|
+
},
|
|
106566
|
+
{
|
|
106567
|
+
"kind": "field",
|
|
106568
|
+
"name": "handlePointerMove",
|
|
106569
|
+
"privacy": "private",
|
|
106570
|
+
"readonly": true
|
|
106571
|
+
},
|
|
106572
|
+
{
|
|
106573
|
+
"kind": "field",
|
|
106574
|
+
"name": "handlePointerUp",
|
|
106575
|
+
"privacy": "private",
|
|
106576
|
+
"readonly": true
|
|
106577
|
+
},
|
|
106578
|
+
{
|
|
106579
|
+
"kind": "field",
|
|
106580
|
+
"name": "handlePointerCancel",
|
|
106581
|
+
"privacy": "private",
|
|
106582
|
+
"readonly": true
|
|
106583
|
+
},
|
|
106584
|
+
{
|
|
106585
|
+
"kind": "field",
|
|
106586
|
+
"name": "handleHeldClick",
|
|
106587
|
+
"privacy": "private",
|
|
106588
|
+
"readonly": true,
|
|
106589
|
+
"description": "Takes the click a held press ends in, ahead of the trigger's own\nlisteners, so a press that opened the menu does not also do the trigger's\naction. In capture, on the host, which is above a slotted trigger."
|
|
106590
|
+
},
|
|
106591
|
+
{
|
|
106592
|
+
"kind": "field",
|
|
106593
|
+
"name": "described",
|
|
106594
|
+
"type": {
|
|
106595
|
+
"text": "Element | undefined"
|
|
106596
|
+
},
|
|
106597
|
+
"privacy": "private",
|
|
106598
|
+
"description": "The control the menu has described, so the description can be taken back."
|
|
106599
|
+
},
|
|
106600
|
+
{
|
|
106601
|
+
"kind": "method",
|
|
106602
|
+
"name": "describeTrigger",
|
|
106603
|
+
"privacy": "private",
|
|
106604
|
+
"return": {
|
|
106605
|
+
"type": {
|
|
106606
|
+
"text": "void"
|
|
106607
|
+
}
|
|
106608
|
+
},
|
|
106609
|
+
"parameters": [
|
|
106610
|
+
{
|
|
106611
|
+
"name": "light",
|
|
106612
|
+
"default": "false"
|
|
106613
|
+
}
|
|
106614
|
+
],
|
|
106615
|
+
"description": "Describes the trigger by `long-press-label` under `open-on=\"long-press\"`,\nor takes it back, by the host, which carries the words as its label, as\n`SpeedDial` does. On the consumer's own element only once a reader has\nreached it, which is after hydration."
|
|
106616
|
+
},
|
|
106617
|
+
{
|
|
106618
|
+
"kind": "field",
|
|
106619
|
+
"name": "handleTriggerFocusIn",
|
|
106620
|
+
"privacy": "private",
|
|
106621
|
+
"readonly": true,
|
|
106622
|
+
"description": "A reader reaching the trigger, which is late enough to describe a plain one."
|
|
106623
|
+
},
|
|
106624
|
+
{
|
|
106625
|
+
"kind": "field",
|
|
106626
|
+
"name": "hovered",
|
|
106627
|
+
"type": {
|
|
106628
|
+
"text": "HelixHeadlessMenuItem | undefined"
|
|
106629
|
+
},
|
|
106630
|
+
"privacy": "private",
|
|
106631
|
+
"description": "The row the pointer last rested on, under `flyout`."
|
|
106632
|
+
},
|
|
106633
|
+
{
|
|
106634
|
+
"kind": "field",
|
|
106635
|
+
"name": "hoverTimer",
|
|
106636
|
+
"type": {
|
|
106637
|
+
"text": "ReturnType<typeof setTimeout> | undefined"
|
|
106638
|
+
},
|
|
106639
|
+
"privacy": "private",
|
|
106640
|
+
"description": "The wait before a rested-on row opens or closes a submenu."
|
|
106641
|
+
},
|
|
106642
|
+
{
|
|
106643
|
+
"kind": "field",
|
|
106644
|
+
"name": "grace",
|
|
106645
|
+
"type": {
|
|
106646
|
+
"text": "{ points: [number, number][]; until: number } | undefined"
|
|
106647
|
+
},
|
|
106648
|
+
"privacy": "private",
|
|
106649
|
+
"description": "The triangle from where the pointer left a row with an open submenu to the\nnear edge of that submenu, and until when it holds."
|
|
106650
|
+
},
|
|
106651
|
+
{
|
|
106652
|
+
"kind": "method",
|
|
106653
|
+
"name": "stopHover",
|
|
106654
|
+
"privacy": "private",
|
|
106655
|
+
"return": {
|
|
106656
|
+
"type": {
|
|
106657
|
+
"text": "void"
|
|
106658
|
+
}
|
|
106659
|
+
}
|
|
106660
|
+
},
|
|
106661
|
+
{
|
|
106662
|
+
"kind": "field",
|
|
106663
|
+
"name": "handleHover",
|
|
106664
|
+
"privacy": "private",
|
|
106665
|
+
"readonly": true,
|
|
106666
|
+
"description": "A mouse resting on a row, under `flyout`: focus follows it, and after a\nmoment the row's submenu opens, or the submenus below the row's own page\nclose. Not while the pointer is crossing toward an open submenu."
|
|
106667
|
+
},
|
|
106668
|
+
{
|
|
106669
|
+
"kind": "field",
|
|
106670
|
+
"name": "handleRowOut",
|
|
106671
|
+
"privacy": "private",
|
|
106672
|
+
"readonly": true,
|
|
106673
|
+
"description": "The pointer leaving a row whose submenu is open, which starts the grace area."
|
|
106674
|
+
},
|
|
106675
|
+
{
|
|
106676
|
+
"kind": "method",
|
|
106677
|
+
"name": "inGrace",
|
|
106678
|
+
"privacy": "private",
|
|
106679
|
+
"return": {
|
|
106680
|
+
"type": {
|
|
106681
|
+
"text": "boolean"
|
|
106682
|
+
}
|
|
106683
|
+
},
|
|
106684
|
+
"parameters": [
|
|
106685
|
+
{
|
|
106686
|
+
"name": "event",
|
|
106687
|
+
"type": {
|
|
106688
|
+
"text": "PointerEvent"
|
|
106689
|
+
}
|
|
106690
|
+
}
|
|
106691
|
+
],
|
|
106692
|
+
"description": "Whether the pointer is inside the grace area, while it holds."
|
|
106693
|
+
},
|
|
106030
106694
|
{
|
|
106031
106695
|
"kind": "method",
|
|
106032
106696
|
"name": "nameSurface",
|
|
@@ -106808,6 +107472,15 @@
|
|
|
106808
107472
|
"description": "Accessible name for the surface.\n\nEmpty by default, which names the surface by its trigger, so a menu opened\nfrom \"Actions\" is announced as \"Actions\". An `aria-label` or\n`aria-labelledby` on the host names it too, and wins over both.",
|
|
106809
107473
|
"fieldName": "label"
|
|
106810
107474
|
},
|
|
107475
|
+
{
|
|
107476
|
+
"name": "long-press-label",
|
|
107477
|
+
"type": {
|
|
107478
|
+
"text": "string"
|
|
107479
|
+
},
|
|
107480
|
+
"default": "'Long press or press Alt+Down to show the menu'",
|
|
107481
|
+
"description": "The description a trigger gives under `open-on=\"long-press\"`, saying how\nto open the menu. Translate it with the rest of your interface.",
|
|
107482
|
+
"fieldName": "longPressLabel"
|
|
107483
|
+
},
|
|
106811
107484
|
{
|
|
106812
107485
|
"name": "offset",
|
|
106813
107486
|
"type": {
|
|
@@ -106817,6 +107490,15 @@
|
|
|
106817
107490
|
"description": "Space between the trigger and the surface, in pixels.",
|
|
106818
107491
|
"fieldName": "offset"
|
|
106819
107492
|
},
|
|
107493
|
+
{
|
|
107494
|
+
"name": "open-on",
|
|
107495
|
+
"type": {
|
|
107496
|
+
"text": "'click' | 'long-press'"
|
|
107497
|
+
},
|
|
107498
|
+
"default": "'click'",
|
|
107499
|
+
"description": "What opens the menu from its trigger. `long-press` leaves a press to the\ntrigger's own action and opens the menu on a press held for half a second,\nor on Alt+Down or Alt+Up.",
|
|
107500
|
+
"fieldName": "openOn"
|
|
107501
|
+
},
|
|
106820
107502
|
{
|
|
106821
107503
|
"name": "placement",
|
|
106822
107504
|
"type": {
|
|
@@ -106826,6 +107508,15 @@
|
|
|
106826
107508
|
"description": "The side the menu opens on, when there is room.\n\nIt moves if that side does not fit.",
|
|
106827
107509
|
"fieldName": "placement"
|
|
106828
107510
|
},
|
|
107511
|
+
{
|
|
107512
|
+
"name": "submenus",
|
|
107513
|
+
"type": {
|
|
107514
|
+
"text": "'drill' | 'flyout'"
|
|
107515
|
+
},
|
|
107516
|
+
"default": "'drill'",
|
|
107517
|
+
"description": "How a submenu opens. `drill` shows it in place of the page showing, with\na way back. `flyout` opens it in a panel of its own beside its row.",
|
|
107518
|
+
"fieldName": "submenus"
|
|
107519
|
+
},
|
|
106829
107520
|
{
|
|
106830
107521
|
"name": "empty-text",
|
|
106831
107522
|
"type": {
|
|
@@ -110793,7 +111484,7 @@
|
|
|
110793
111484
|
"declarations": [
|
|
110794
111485
|
{
|
|
110795
111486
|
"kind": "class",
|
|
110796
|
-
"description": "Notifications are slotted children. Each one is your own markup, with an\navatar, a link, or a button in it. Feeds usually hold tens of items, so\nwriting them out lets an item hold anything.\n\nThe list does not virtualize. Windowing needs the list to own the data, and\nhere you own it, so N notifications are N elements. For a feed of thousands,\nuse a data table with a custom cell.\n\nRead state is reported to you. Marking read goes from the root to the item\nand from the item to you, so a canceled `helix-read` changes nothing, and if\nyou own `read`, nothing changes until you set it. `unread` is derived from\nthe items and written to an attribute, so a stylesheet and a badge can both\nuse it without counting.\n\n**The feed is one `Tab` stop for its rows.** Each row takes focus itself and\nis read by its label. `ArrowDown` and `ArrowUp` move to the next and the\nprevious row, `Home` and `End` to the first and the last, and `PageDown` and\n`PageUp` move a row on or back from anywhere inside one, as in the APG feed\npattern. The controls inside a row stay in the `Tab` order. Set `total` when\nthe feed holds one page of a longer list, and each row says its place in the\nwhole of it.\n\n**Keyboard.**\n\n| Key | What it does |\n|---|---|\n| Down, Up | On a row, moves to the next or the previous row. |\n| Home, End | On a row, moves to the first or the last row. |\n| Page Down, Page Up | From anywhere in a row, moves to the next or the previous row. |\n| Control+End | From anywhere in the feed, moves to the first control after it on the page. |\n| Control+Home | From anywhere in the feed, moves to the nearest control before it on the page. |\n| Tab | Moves through the controls in a row, and on out of the feed. |\n\n**`load-more` adds a button after the list** that sends `helix-load-more`,\nfor a feed that holds one page of a longer list. Append the next page, set\n`loading` while it is on its way, and take `load-more` off once there is\nnothing more. While the feed is loading the button stays, so focus stays on\nit, and it is `aria-disabled` and sends nothing.\n\n**`load-error` says a page could not be fetched**, such as \"Could not load\nnotifications\": it shows under the rows there are, in the `error` part, in\nplace of the empty and loading lines, and a screen reader hears it. Clear it\nwhen you ask again.",
|
|
111487
|
+
"description": "Notifications are slotted children. Each one is your own markup, with an\navatar, a link, or a button in it. Feeds usually hold tens of items, so\nwriting them out lets an item hold anything.\n\nThe list does not virtualize. Windowing needs the list to own the data, and\nhere you own it, so N notifications are N elements. For a feed of thousands,\nuse a data table with a custom cell.\n\nRead state is reported to you. Marking read goes from the root to the item\nand from the item to you, so a canceled `helix-read` changes nothing, and if\nyou own `read`, nothing changes until you set it. `unread` is derived from\nthe items and written to an attribute, so a stylesheet and a badge can both\nuse it without counting.\n\n**The feed is one `Tab` stop for its rows.** Each row takes focus itself and\nis read by its label. `ArrowDown` and `ArrowUp` move to the next and the\nprevious row, `Home` and `End` to the first and the last, and `PageDown` and\n`PageUp` move a row on or back from anywhere inside one, as in the APG feed\npattern. The controls inside a row stay in the `Tab` order. Set `total` when\nthe feed holds one page of a longer list, and each row says its place in the\nwhole of it.\n\n**Keyboard.**\n\n| Key | What it does |\n|---|---|\n| Down, Up | On a row, moves to the next or the previous row. |\n| Home, End | On a row, moves to the first or the last row. |\n| Page Down, Page Up | From anywhere in a row, moves to the next or the previous row. |\n| Control+End | From anywhere in the feed, moves to the first control after it on the page. |\n| Control+Home | From anywhere in the feed, moves to the nearest control before it on the page. |\n| Tab | Moves through the controls in a row, and on out of the feed. |\n\n**A notification that arrives says so.** Unread rows added above the rows\nthere were are counted in the live region,\n\"1 new notification\", in `arrived-label`. Rows that arrive while `loading`\nis set say nothing, so set it while a page is on its way.\n\n**`load-more` adds a button after the list** that sends `helix-load-more`,\nfor a feed that holds one page of a longer list. Append the next page, set\n`loading` while it is on its way, and take `load-more` off once there is\nnothing more. While the feed is loading the button stays, so focus stays on\nit, and it is `aria-disabled` and sends nothing.\n\n**`load-error` says a page could not be fetched**, such as \"Could not load\nnotifications\": it shows under the rows there are, in the `error` part, in\nplace of the empty and loading lines, and a screen reader hears it. Clear it\nwhen you ask again.",
|
|
110797
111488
|
"name": "HelixHeadlessNotifications",
|
|
110798
111489
|
"cssParts": [
|
|
110799
111490
|
{
|
|
@@ -110884,6 +111575,19 @@
|
|
|
110884
111575
|
"module": "src/mixins/mixin-collection/mixin-collection.ts"
|
|
110885
111576
|
}
|
|
110886
111577
|
},
|
|
111578
|
+
{
|
|
111579
|
+
"kind": "field",
|
|
111580
|
+
"name": "arrivedLabel",
|
|
111581
|
+
"type": {
|
|
111582
|
+
"text": "string"
|
|
111583
|
+
},
|
|
111584
|
+
"default": "'{count, plural, one {# new notification} other {# new notifications}}'",
|
|
111585
|
+
"description": "What the feed says when unread notifications arrive, with `{count}` the\nnumber of them. Empty it to say nothing.",
|
|
111586
|
+
"attribute": "arrived-label",
|
|
111587
|
+
"helix": {
|
|
111588
|
+
"words": true
|
|
111589
|
+
}
|
|
111590
|
+
},
|
|
110887
111591
|
{
|
|
110888
111592
|
"kind": "field",
|
|
110889
111593
|
"name": "fallbackLabel",
|
|
@@ -111154,6 +111858,34 @@
|
|
|
111154
111858
|
},
|
|
111155
111859
|
"description": "Tells each row whether it is the stop, and where it sits in the feed.\n\nThrough each row's own properties, written once it has hydrated, so a\nserver's markup stays the server's: every row is a stop until this runs."
|
|
111156
111860
|
},
|
|
111861
|
+
{
|
|
111862
|
+
"kind": "field",
|
|
111863
|
+
"name": "seen",
|
|
111864
|
+
"type": {
|
|
111865
|
+
"text": "WeakSet<Element> | undefined"
|
|
111866
|
+
},
|
|
111867
|
+
"privacy": "private",
|
|
111868
|
+
"description": "The rows the feed has met, so a row that arrives later is told apart."
|
|
111869
|
+
},
|
|
111870
|
+
{
|
|
111871
|
+
"kind": "field",
|
|
111872
|
+
"name": "hush",
|
|
111873
|
+
"privacy": "private",
|
|
111874
|
+
"readonly": true,
|
|
111875
|
+
"default": "new DelayController(this, { renders: false })",
|
|
111876
|
+
"description": "Empties the arrival a moment after it is said, so the next one is news."
|
|
111877
|
+
},
|
|
111878
|
+
{
|
|
111879
|
+
"kind": "method",
|
|
111880
|
+
"name": "noteArrivals",
|
|
111881
|
+
"privacy": "private",
|
|
111882
|
+
"return": {
|
|
111883
|
+
"type": {
|
|
111884
|
+
"text": "void"
|
|
111885
|
+
}
|
|
111886
|
+
},
|
|
111887
|
+
"description": "Counts the unread rows that arrived above the rows there were, and says\nhow many. Rows that fill an empty feed are a page, which says nothing. The rows there are at the first update are\nthe feed's to begin with, and say nothing."
|
|
111888
|
+
},
|
|
111157
111889
|
{
|
|
111158
111890
|
"kind": "method",
|
|
111159
111891
|
"name": "renderStatus",
|
|
@@ -111768,6 +112500,15 @@
|
|
|
111768
112500
|
}
|
|
111769
112501
|
],
|
|
111770
112502
|
"attributes": [
|
|
112503
|
+
{
|
|
112504
|
+
"name": "arrived-label",
|
|
112505
|
+
"type": {
|
|
112506
|
+
"text": "string"
|
|
112507
|
+
},
|
|
112508
|
+
"default": "'{count, plural, one {# new notification} other {# new notifications}}'",
|
|
112509
|
+
"description": "What the feed says when unread notifications arrive, with `{count}` the\nnumber of them. Empty it to say nothing.",
|
|
112510
|
+
"fieldName": "arrivedLabel"
|
|
112511
|
+
},
|
|
111771
112512
|
{
|
|
111772
112513
|
"name": "fallback-label",
|
|
111773
112514
|
"type": {
|
|
@@ -168761,7 +169502,7 @@
|
|
|
168761
169502
|
"declarations": [
|
|
168762
169503
|
{
|
|
168763
169504
|
"kind": "class",
|
|
168764
|
-
"description": "Each message is an element because it has a timeout, a tone, a dismiss\ncontrol, and a lifetime that pauses.\n\n**Each item runs its own timer.** A timer held by the region would restart\nwith each new message, and the last of three messages would stay for nine\nseconds. It pauses while the pointer or focus is on the message, and while\nthe page is hidden, so a message is not spent in a background tab.\n\n**Each message is an `alertdialog` named by its words**, which is how a reader\nwho moves into the stack hears which message they are on. Give it a\n`heading` and a `description`, and the heading names it and the description\ndescribes it, for a message with a title and a line of detail. The region\nsays each message once as it arrives, a `danger` one assertively, so a\nmessage is never a live region of its own.\n\nA touch or a pen swipes a message toward the end of the line, and past\nhalfway, or quickly, dismisses it through the same `helix-dismiss` as its\ncontrol. While it moves, the distance is on the `item` part as\n`--toast-swipe-x`.\n\n**Messages are inverted by default.** The item flips `color-scheme`, so a new\nmessage stands out from the page without using a color that carries meaning.",
|
|
169505
|
+
"description": "Each message is an element because it has a timeout, a tone, a dismiss\ncontrol, and a lifetime that pauses.\n\n**Each item runs its own timer.** A timer held by the region would restart\nwith each new message, and the last of three messages would stay for nine\nseconds. It pauses while the pointer or focus is on the message, and while\nthe page is hidden, so a message is not spent in a background tab.\n\n**Each message is an `alertdialog` named by its words**, which is how a reader\nwho moves into the stack hears which message they are on. Give it a\n`heading` and a `description`, and the heading names it and the description\ndescribes it, for a message with a title and a line of detail. The region\nsays each message once as it arrives, a `danger` one assertively, so a\nmessage is never a live region of its own.\n\nA touch or a pen swipes a message toward the end of the line, and past\nhalfway, or quickly, dismisses it through the same `helix-dismiss` as its\ncontrol. While it moves, the distance is on the `item` part as\n`--toast-swipe-x`.\n\n**Escape dismisses the message holding focus**, through the same\n`helix-dismiss`, and focus moves to the next message.\n\n**Messages are inverted by default.** The item flips `color-scheme`, so a new\nmessage stands out from the page without using a color that carries meaning.",
|
|
168765
169506
|
"name": "HelixHeadlessToastItem",
|
|
168766
169507
|
"cssProperties": [
|
|
168767
169508
|
{
|
|
@@ -168905,7 +169646,7 @@
|
|
|
168905
169646
|
"name": "countdown",
|
|
168906
169647
|
"privacy": "private",
|
|
168907
169648
|
"readonly": true,
|
|
168908
|
-
"default": "new CountdownController(this, { done: () => { this.dismiss() }, holdWhileHidden: true, paused: (paused) => { this.toggleAttribute('data-paused', paused) }, })",
|
|
169649
|
+
"default": "new CountdownController(this, { done: () => { this.dismiss() }, holdWhileHidden: true, paused: (paused) => { this.toggleAttribute('data-paused', paused) this.toggleState('paused', paused) }, })",
|
|
168909
169650
|
"description": "The dismiss timer, which pauses while a reader is on the message, and\nwhile the page is hidden, and continues from what was left. A message that\narrives in a background tab waits for the reader to come back, as React\nAria's toast queue does.\n\nPaused is said on the host so the indicator can freeze with the clock. A\n`data-` attribute rather than a property, because it is written after\nupgrade from a pointer moving: nothing declares it and no server rendered\nit, which is the same reason `Carousel` names its slides from here."
|
|
168910
169651
|
},
|
|
168911
169652
|
{
|
|
@@ -168918,6 +169659,54 @@
|
|
|
168918
169659
|
"attribute": "tone",
|
|
168919
169660
|
"reflects": true
|
|
168920
169661
|
},
|
|
169662
|
+
{
|
|
169663
|
+
"kind": "field",
|
|
169664
|
+
"name": "waiting",
|
|
169665
|
+
"type": {
|
|
169666
|
+
"text": "boolean"
|
|
169667
|
+
},
|
|
169668
|
+
"default": "false",
|
|
169669
|
+
"description": "Whether the region holds the message back, because more messages are\nshowing than its `max-visible`. The region sets it. A waiting message is\nhidden, its timer has not started, and it is said once it shows."
|
|
169670
|
+
},
|
|
169671
|
+
{
|
|
169672
|
+
"kind": "field",
|
|
169673
|
+
"name": "started",
|
|
169674
|
+
"type": {
|
|
169675
|
+
"text": "boolean"
|
|
169676
|
+
},
|
|
169677
|
+
"privacy": "private",
|
|
169678
|
+
"default": "false",
|
|
169679
|
+
"description": "Whether the dismiss timer has started, which it does once the message first shows."
|
|
169680
|
+
},
|
|
169681
|
+
{
|
|
169682
|
+
"kind": "field",
|
|
169683
|
+
"name": "holding",
|
|
169684
|
+
"type": {
|
|
169685
|
+
"text": "boolean"
|
|
169686
|
+
},
|
|
169687
|
+
"privacy": "private",
|
|
169688
|
+
"default": "false",
|
|
169689
|
+
"description": "Whether the timer is held for `waiting`, so the hold is let go once."
|
|
169690
|
+
},
|
|
169691
|
+
{
|
|
169692
|
+
"kind": "method",
|
|
169693
|
+
"name": "wait",
|
|
169694
|
+
"privacy": "private",
|
|
169695
|
+
"return": {
|
|
169696
|
+
"type": {
|
|
169697
|
+
"text": "void"
|
|
169698
|
+
}
|
|
169699
|
+
},
|
|
169700
|
+
"parameters": [
|
|
169701
|
+
{
|
|
169702
|
+
"name": "waiting",
|
|
169703
|
+
"type": {
|
|
169704
|
+
"text": "boolean"
|
|
169705
|
+
}
|
|
169706
|
+
}
|
|
169707
|
+
],
|
|
169708
|
+
"description": "Starts the timer when the message first shows, and holds it while it waits again."
|
|
169709
|
+
},
|
|
168921
169710
|
{
|
|
168922
169711
|
"kind": "field",
|
|
168923
169712
|
"name": "openState",
|
|
@@ -168983,6 +169772,13 @@
|
|
|
168983
169772
|
"privacy": "private",
|
|
168984
169773
|
"readonly": true
|
|
168985
169774
|
},
|
|
169775
|
+
{
|
|
169776
|
+
"kind": "field",
|
|
169777
|
+
"name": "handleKeydown",
|
|
169778
|
+
"privacy": "private",
|
|
169779
|
+
"readonly": true,
|
|
169780
|
+
"description": "Escape dismisses the message holding focus, as Radix's toast does. Taken\nonly when the dismissal goes ahead, so a refused one leaves the key to\nthe page."
|
|
169781
|
+
},
|
|
168986
169782
|
{
|
|
168987
169783
|
"kind": "method",
|
|
168988
169784
|
"name": "assigned",
|
|
@@ -169590,6 +170386,28 @@
|
|
|
169590
170386
|
}
|
|
169591
170387
|
}
|
|
169592
170388
|
],
|
|
170389
|
+
"cssStates": [
|
|
170390
|
+
{
|
|
170391
|
+
"description": "The message has been dismissed and is hidden, or leaving.",
|
|
170392
|
+
"name": "closed"
|
|
170393
|
+
},
|
|
170394
|
+
{
|
|
170395
|
+
"description": "The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.",
|
|
170396
|
+
"name": "paused"
|
|
170397
|
+
},
|
|
170398
|
+
{
|
|
170399
|
+
"description": "The region holds the message back, past its `max-visible`, until a message before it goes.",
|
|
170400
|
+
"name": "waiting"
|
|
170401
|
+
},
|
|
170402
|
+
{
|
|
170403
|
+
"description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
|
|
170404
|
+
"name": "settled",
|
|
170405
|
+
"inheritedFrom": {
|
|
170406
|
+
"name": "HelixElement",
|
|
170407
|
+
"module": "src/helix-element/helix-element.ts"
|
|
170408
|
+
}
|
|
170409
|
+
}
|
|
170410
|
+
],
|
|
169593
170411
|
"mixins": [
|
|
169594
170412
|
{
|
|
169595
170413
|
"name": "MixinDismissible",
|
|
@@ -169611,16 +170429,6 @@
|
|
|
169611
170429
|
},
|
|
169612
170430
|
"tagName": "helix-headless-toast-item",
|
|
169613
170431
|
"customElement": true,
|
|
169614
|
-
"cssStates": [
|
|
169615
|
-
{
|
|
169616
|
-
"description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
|
|
169617
|
-
"name": "settled",
|
|
169618
|
-
"inheritedFrom": {
|
|
169619
|
-
"name": "HelixElement",
|
|
169620
|
-
"module": "src/helix-element/helix-element.ts"
|
|
169621
|
-
}
|
|
169622
|
-
}
|
|
169623
|
-
],
|
|
169624
170432
|
"modulePath": "src/toast/item/toast-item.ts",
|
|
169625
170433
|
"definitionPath": "src/toast/item/toast-item.ts"
|
|
169626
170434
|
}
|
|
@@ -169650,7 +170458,7 @@
|
|
|
169650
170458
|
"declarations": [
|
|
169651
170459
|
{
|
|
169652
170460
|
"kind": "class",
|
|
169653
|
-
"description": "The region and its items are one family because a live region must be in the\ndocument before a message is added to it. Assistive technology often does not\nannounce a region that arrives already holding its message. `Radio.Group` is\npart of its family for the same reason.\n\n**The region is a landmark named by `label`, and it says each message once\nas it arrives**: a `danger` message assertively, and every other one\npolitely. It says the word for the tone, the heading, the description and\nthe text, and not the actions, through two live regions of its own, the\n`live` parts, which it empties again a moment later. The stack itself is not\na live region, so a message is never said twice, and changing the words of a\nmessage already showing says nothing. Each message is an `alertdialog` named\nby its words, so a reader who moves into the stack hears which message they\nare on.\n\n**`hotkey` takes focus to the stack and back**, F8 unless you set it, and\n`label` says which key: `{hotkey}` in it is filled in, so the default name\nis \"Notifications (F8)\". Pressed while focus is in the stack, it gives focus\nback to where it was.\n\n**The region never creates or removes items.** You render items and remove\nthem. An item requests closing with a cancelable `helix-dismiss` event. A\ndismissed item hides itself and stays in the DOM, so your framework's state\nand the DOM stay in sync. It hides on its own unless you set `open`, which\nmakes the state yours.\n\n**`add()` shows a message from script**, for a page with no framework state\nto render them from: it appends a message of the region's own tier and\nremoves it once it has been dismissed and has finished leaving. Messages\nyou render yourself stay yours, and the region never removes them. A touch\nor a pen swipes a message away toward the end of the line.\n\n**The stack is in the top layer.** The `region` part is a `popover=\"manual\"`\nshown while a message is showing, and shown again above a modal dialog that\nopened after it. Position the `region` part, which is the box in the top\nlayer. While a modal `Dialog`, `Drawer` or `Lightbox` is open, the browser\nmakes everything outside it inert, the stack included, so a message stays\nvisible and its actions cannot be pressed. Where the browser has\n`ariaNotify`, a message that arrives then is announced through it. For a\nmessage with an action, render a second region inside the dialog.\n\nWhen a message with focus inside it is dismissed, focus moves to the next\nmessage, then the one before it, then back to where it was before it entered\nthe stack.",
|
|
170461
|
+
"description": "The region and its items are one family because a live region must be in the\ndocument before a message is added to it. Assistive technology often does not\nannounce a region that arrives already holding its message. `Radio.Group` is\npart of its family for the same reason.\n\n**The region is a landmark named by `label`, and it says each message once\nas it arrives**: a `danger` message assertively, and every other one\npolitely. It says the word for the tone, the heading, the description and\nthe text, and not the actions, through two live regions of its own, the\n`live` parts, which it empties again a moment later. The stack itself is not\na live region, so a message is never said twice, and changing the words of a\nmessage already showing says nothing. Each message is an `alertdialog` named\nby its words, so a reader who moves into the stack hears which message they\nare on.\n\n**`hotkey` takes focus to the stack and back**, F8 unless you set it, and\n`label` says which key: `{hotkey}` in it is filled in, so the default name\nis \"Notifications (F8)\". Pressed while focus is in the stack, it gives focus\nback to where it was.\n\n**The region never creates or removes items.** You render items and remove\nthem. An item requests closing with a cancelable `helix-dismiss` event. A\ndismissed item hides itself and stays in the DOM, so your framework's state\nand the DOM stay in sync. It hides on its own unless you set `open`, which\nmakes the state yours.\n\n**`add()` shows a message from script**, for a page with no framework state\nto render them from: it appends a message of the region's own tier and\nremoves it once it has been dismissed and has finished leaving. Messages\nyou render yourself stay yours, and the region never removes them. A touch\nor a pen swipes a message away toward the end of the line.\n\n**The stack is in the top layer.** The `region` part is a `popover=\"manual\"`\nshown while a message is showing, and shown again above a modal dialog that\nopened after it. Position the `region` part, which is the box in the top\nlayer. While a modal `Dialog`, `Drawer` or `Lightbox` is open, the browser\nmakes everything outside it inert, the stack included, so a message stays\nvisible and its actions cannot be pressed. Where the browser has\n`ariaNotify`, a message that arrives then is announced through it. For a\nmessage with an action, render a second region inside the dialog.\n\nWhen a message with focus inside it is dismissed, focus moves to the next\nmessage, then the one before it, then back to where it was before it entered\nthe stack.\n\n**`max-visible` limits how many messages show at once**, as Zag's `max`\ndoes. The messages after that many, in document order, wait: each is hidden,\nits timer has not started, and the region says it once it shows, when a\nmessage before it goes. A waiting message has `:state(waiting)`.\n\n**Keyboard.**\n\n| Key | What it does |\n|---|---|\n| F8, or your `hotkey` | Moves focus to the first control in the stack, and back to where it was when pressed in the stack. |\n| Tab, Shift+Tab | Moves between the controls of the messages. |\n| Escape | Dismisses the message holding focus. Focus moves to the next message, then the one before it, then back to where it was. |",
|
|
169654
170462
|
"name": "HelixHeadlessToast",
|
|
169655
170463
|
"cssParts": [
|
|
169656
170464
|
{
|
|
@@ -169702,6 +170510,15 @@
|
|
|
169702
170510
|
"words": true
|
|
169703
170511
|
}
|
|
169704
170512
|
},
|
|
170513
|
+
{
|
|
170514
|
+
"kind": "field",
|
|
170515
|
+
"name": "maxVisible",
|
|
170516
|
+
"type": {
|
|
170517
|
+
"text": "number | undefined"
|
|
170518
|
+
},
|
|
170519
|
+
"description": "How many messages show at once. The messages after that many wait, hidden\nand with their timers stopped, until a message before them goes. Unset,\nevery message shows.",
|
|
170520
|
+
"attribute": "max-visible"
|
|
170521
|
+
},
|
|
169705
170522
|
{
|
|
169706
170523
|
"kind": "field",
|
|
169707
170524
|
"name": "placement",
|
|
@@ -169887,6 +170704,36 @@
|
|
|
169887
170704
|
"description": "The messages that are showing, in order.",
|
|
169888
170705
|
"readonly": true
|
|
169889
170706
|
},
|
|
170707
|
+
{
|
|
170708
|
+
"kind": "field",
|
|
170709
|
+
"name": "held",
|
|
170710
|
+
"privacy": "private",
|
|
170711
|
+
"readonly": true,
|
|
170712
|
+
"default": "new WeakSet<Element>()",
|
|
170713
|
+
"description": "The messages `max-visible` holds back."
|
|
170714
|
+
},
|
|
170715
|
+
{
|
|
170716
|
+
"kind": "method",
|
|
170717
|
+
"name": "queue",
|
|
170718
|
+
"privacy": "private",
|
|
170719
|
+
"return": {
|
|
170720
|
+
"type": {
|
|
170721
|
+
"text": "HTMLElement[]"
|
|
170722
|
+
}
|
|
170723
|
+
},
|
|
170724
|
+
"description": "Holds back the messages past `max-visible`, and returns the ones it has\njust let go. A message that has been dismissed takes no place in the line."
|
|
170725
|
+
},
|
|
170726
|
+
{
|
|
170727
|
+
"kind": "method",
|
|
170728
|
+
"name": "restack",
|
|
170729
|
+
"privacy": "private",
|
|
170730
|
+
"return": {
|
|
170731
|
+
"type": {
|
|
170732
|
+
"text": "void"
|
|
170733
|
+
}
|
|
170734
|
+
},
|
|
170735
|
+
"description": "Lets go of the messages past `max-visible` that now have room, raises the\nstack and says them, once each has shown."
|
|
170736
|
+
},
|
|
169890
170737
|
{
|
|
169891
170738
|
"kind": "field",
|
|
169892
170739
|
"name": "region",
|
|
@@ -170348,6 +171195,14 @@
|
|
|
170348
171195
|
"description": "Accessible name for the region, with `{hotkey}` filled in. Translate it with\nthe rest of your interface.",
|
|
170349
171196
|
"fieldName": "label"
|
|
170350
171197
|
},
|
|
171198
|
+
{
|
|
171199
|
+
"name": "max-visible",
|
|
171200
|
+
"type": {
|
|
171201
|
+
"text": "number | undefined"
|
|
171202
|
+
},
|
|
171203
|
+
"description": "How many messages show at once. The messages after that many wait, hidden\nand with their timers stopped, until a message before them goes. Unset,\nevery message shows.",
|
|
171204
|
+
"fieldName": "maxVisible"
|
|
171205
|
+
},
|
|
170351
171206
|
{
|
|
170352
171207
|
"name": "placement",
|
|
170353
171208
|
"type": {
|
|
@@ -181373,6 +182228,10 @@
|
|
|
181373
182228
|
"description": "The column at the start of an entry. It is a slot and is always present.",
|
|
181374
182229
|
"name": "entry-start"
|
|
181375
182230
|
},
|
|
182231
|
+
{
|
|
182232
|
+
"description": "The panel an entry's submenu opens in beside it. The playlist's entries have none.",
|
|
182233
|
+
"name": "entry-surface"
|
|
182234
|
+
},
|
|
181376
182235
|
{
|
|
181377
182236
|
"description": "The menu that holds the entries.",
|
|
181378
182237
|
"name": "menu"
|
|
@@ -183442,6 +184301,10 @@
|
|
|
183442
184301
|
"description": "The leading column that holds the `start` slot. It is always rendered.",
|
|
183443
184302
|
"name": "entry-start"
|
|
183444
184303
|
},
|
|
184304
|
+
{
|
|
184305
|
+
"description": "The panel a row's submenu opens in beside it. The player's rows have none.",
|
|
184306
|
+
"name": "entry-surface"
|
|
184307
|
+
},
|
|
183445
184308
|
{
|
|
183446
184309
|
"description": "The message shown when the source cannot be played.",
|
|
183447
184310
|
"name": "failure"
|
|
@@ -187865,6 +188728,6 @@
|
|
|
187865
188728
|
],
|
|
187866
188729
|
"helix": {
|
|
187867
188730
|
"package": "@fusion.dev/helix-headless",
|
|
187868
|
-
"version": "0.
|
|
188731
|
+
"version": "0.157.0"
|
|
187869
188732
|
}
|
|
187870
188733
|
}
|