@fusion.dev/helix-headless 0.164.0 → 0.166.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.
Files changed (44) hide show
  1. package/custom-elements.json +837 -64
  2. package/dist/callout/root/callout-root.d.ts +8 -2
  3. package/dist/callout/root/callout-root.js +14 -1
  4. package/dist/code-block/root/code-block-root.d.ts +63 -0
  5. package/dist/code-block/root/code-block-root.js +117 -6
  6. package/dist/date-input/root/date-input-root.d.ts +3 -3
  7. package/dist/date-input/root/date-input-root.js +8 -5
  8. package/dist/element-events.generated.js +15 -2
  9. package/dist/filter-input/menu/filter-menu.d.ts +1 -0
  10. package/dist/filter-input/menu/filter-menu.js +1 -1
  11. package/dist/format-date/root/format-date-root.d.ts +3 -1
  12. package/dist/format-date/root/format-date-root.js +4 -1
  13. package/dist/lightbox/item/lightbox-item.js +3 -1
  14. package/dist/lightbox/root/lightbox-root.d.ts +28 -0
  15. package/dist/lightbox/root/lightbox-root.js +21 -2
  16. package/dist/listbox/root/listbox-root.js +2 -5
  17. package/dist/menu/item/menu-item.d.ts +20 -0
  18. package/dist/menu/item/menu-item.js +53 -20
  19. package/dist/menu/root/menu-root.d.ts +84 -1
  20. package/dist/menu/root/menu-root.js +187 -44
  21. package/dist/number-input/root/number-input-root.d.ts +32 -9
  22. package/dist/number-input/root/number-input-root.js +53 -9
  23. package/dist/object-inspector/root/object-inspector-root.d.ts +5 -0
  24. package/dist/object-inspector/root/object-inspector-root.js +5 -0
  25. package/dist/option/root/index.d.ts +1 -0
  26. package/dist/option/root/index.js +1 -0
  27. package/dist/steps/root/steps-root.d.ts +7 -0
  28. package/dist/steps/root/steps-root.js +7 -0
  29. package/dist/tag/root/index.d.ts +1 -0
  30. package/dist/tag/root/index.js +1 -0
  31. package/dist/time-input/root/time-input-root.d.ts +4 -3
  32. package/dist/time-input/root/time-input-root.js +5 -4
  33. package/dist/time-picker/root/time-picker-root.d.ts +1 -1
  34. package/dist/time-picker/root/time-picker-root.js +5 -2
  35. package/dist/video/root/video-root.d.ts +2 -0
  36. package/dist/video/root/video-root.js +4 -2
  37. package/dist/video-playlist/menu/video-playlist-menu.d.ts +1 -0
  38. package/dist/video-playlist/menu/video-playlist-menu.js +1 -1
  39. package/dist/video-playlist/root/video-playlist-root.js +15 -1
  40. package/lint.json +1 -1
  41. package/package.json +5 -5
  42. package/types/jsx.d.ts +310 -44
  43. package/types/vue.d.ts +68 -11
  44. package/types/words.d.ts +18 -0
@@ -12964,6 +12964,21 @@
12964
12964
  ],
12965
12965
  "description": "The dismiss button's name: `dismissLabel` with the heading's words, or the\ntone's name.\n\nThe heading is read from the children, so a server and a hydrating render\nname the button for the tone, and the update after names it for the\nheading."
12966
12966
  },
12967
+ {
12968
+ "kind": "method",
12969
+ "name": "dismissEvent",
12970
+ "privacy": "protected",
12971
+ "return": {
12972
+ "type": {
12973
+ "text": "HelixDismissEvent"
12974
+ }
12975
+ },
12976
+ "description": "The event a dismissal sends, naming the note by its heading where it has\none, the words its dismiss button is named by, and otherwise by its text.",
12977
+ "inheritedFrom": {
12978
+ "name": "MixinDismissible",
12979
+ "module": "src/mixins/mixin-dismissible/mixin-dismissible.ts"
12980
+ }
12981
+ },
12967
12982
  {
12968
12983
  "kind": "method",
12969
12984
  "name": "journey",
@@ -12997,21 +13012,6 @@
12997
13012
  "module": "src/mixins/mixin-dismissible/mixin-dismissible.ts"
12998
13013
  }
12999
13014
  },
13000
- {
13001
- "kind": "method",
13002
- "name": "dismissEvent",
13003
- "privacy": "protected",
13004
- "return": {
13005
- "type": {
13006
- "text": "HelixDismissEvent"
13007
- }
13008
- },
13009
- "description": "The event, built and not dispatched.\n\nReading text is safe here: nothing calls this on a server, because the\nonly things that do are a press and a timer.",
13010
- "inheritedFrom": {
13011
- "name": "MixinDismissible",
13012
- "module": "src/mixins/mixin-dismissible/mixin-dismissible.ts"
13013
- }
13014
- },
13015
13015
  {
13016
13016
  "kind": "field",
13017
13017
  "name": "returnFocusTo",
@@ -30939,7 +30939,7 @@
30939
30939
  "declarations": [
30940
30940
  {
30941
30941
  "kind": "class",
30942
- "description": "Renders a `<pre><code>` pair: `pre` keeps the whitespace, and `code` marks it\nas code. Long lines scroll inside the block and do not wrap, because a line\nbreak can be significant in code.\n\nA copy button is on by default. Set `no-copy` to remove it. The button copies\nthe slotted text, so there is no second copy of the code to keep in sync.\n\nFor a fragment of code inside a sentence, use `Code`.\n\nSet `line-numbers` to number the lines in a gutter beside the code, hidden\nfrom the accessibility tree and left out of a copy. Set `mark-lines` to\nmark lines a reader should look at, such as `2, 4-6`: the block draws a\nband behind each run, placed where the lines are laid out, so it follows a\nhighlighter's markup and lines that wrap. Set `wrap` to wrap long lines\nrather than scroll them; a gutter then numbers each line where it starts.\nSet `wrappable` for a button in the header that turns `wrap` on and off,\npressed while the lines wrap.\n\nThe header holds the name, the `actions` slot, and the copy button. Slot a\ncontrol into `actions`, such as a button that sets `wrap` or one that opens\nthe code in an editor, and the block draws a header for it even with no\nname. `copy-icon` and `copied-icon` replace the copy button's two icons. Set `highlight` to a\nfunction that turns the code into highlighted markup, such as one wrapping\nShiki or Prism, and the block draws what it returns; it is handed the\nblock's `language`, so one function serves every block. The code stays in\nthe slot, so the copy button and the page's own text are the code as\nwritten.\n\nSet `expandable` on a block whose height is capped, such as by\n`--code-block-max-block-size`, and a button under it shows every line and\nthen fewer again, as a docs site's long example does. The button is drawn\nonly while the cap hides something, says whether the block is expanded with\n`aria-expanded`, names the block it opens with `aria-controls`, and the block\ncarries `:state(expanded)` while it is.\n\nSet `diff` to show a change. Put a unified diff, the output of `git diff` or\n`diff -u`, in the same slot, and the block draws the lines it added and\nremoved. The block never computes a diff itself. Line numbers come from the\nhunk headers and are hidden from the accessibility tree. Changed lines are\n`<ins>` and `<del>` with the `+` and `-` kept as text, so the change does not\ndepend on color. Where a removed line is paired with the added line that\nreplaced it, the words each does not share with the other are the `changed`\npart, so the eye goes to what changed within the line. Each file in the patch is its own block under its own name,\nand its copy button copies the new version of the file. `variant=\"split\"`\nshows the old version beside the new, each removal opposite its replacement.\n`context-lines` folds each long run of unchanged lines, keeping that many\nbeside each change, behind a button that shows them and hides them again,\nas a code host draws a diff written with more context than a reader needs.\n\n**A block that scrolls is a tab stop.** While its lines run past its width or\nits cap, the scroller is a region named for the block, such as \"Code,\napp.ts\", that Tab reaches, so a keyboard scrolls it with the arrow keys in\nevery browser. Chromium and Firefox make a scrolling box focusable on their\nown, and Safari does not. A block that fits is no stop at all.\n\n**The code the block draws is marked untranslated**, `translate=\"no\"` on\nits `<pre>`, so a page translator leaves highlighted lines and a diff as\nwritten. Code in the slot takes its translation mode from the element, which\nwrites nothing onto itself, so set `translate=\"no\"` on the element to keep a\ntranslator off plain code too.\n\nOn the server, the slot renders as ordinary code, so a diff first appears as\nthe patch text in a `<pre>`. The client makes the same first render, which\nkeeps hydration clean, and draws the diff once it can read the content. Diff\nmode is experimental. The rest of the family is stable.",
30942
+ "description": "Renders a `<pre><code>` pair: `pre` keeps the whitespace, and `code` marks it\nas code. Long lines scroll inside the block and do not wrap, because a line\nbreak can be significant in code.\n\nA copy button is on by default. Set `no-copy` to remove it. The button copies\nthe slotted text, so there is no second copy of the code to keep in sync.\n\nFor a fragment of code inside a sentence, use `Code`.\n\nSet `line-numbers` to number the lines in a gutter beside the code, hidden\nfrom the accessibility tree and left out of a copy. Set `mark-lines` to\nmark lines a reader should look at, such as `2, 4-6`: the block draws a\nband behind each run, placed where the lines are laid out, so it follows a\nhighlighter's markup and lines that wrap. Set `wrap` to wrap long lines\nrather than scroll them; a gutter then numbers each line where it starts.\nSet `wrappable` for a button in the header that turns `wrap` on and off,\npressed while the lines wrap.\n\nThe header holds the name, the `actions` slot, and the copy button. Slot a\ncontrol into `actions`, such as a button that sets `wrap` or one that opens\nthe code in an editor, and the block draws a header for it even with no\nname. `copy-icon` and `copied-icon` replace the copy button's two icons. Set `highlight` to a\nfunction that turns the code into highlighted markup, such as one wrapping\nShiki or Prism, and the block draws what it returns; it is handed the\nblock's `language`, so one function serves every block. The code stays in\nthe slot, so the copy button and the page's own text are the code as\nwritten.\n\nSet `expandable` on a block whose height is capped, such as by\n`--code-block-max-block-size`, and a button under it shows every line and\nthen fewer again, as a docs site's long example does. The button is drawn\nonly while the cap hides something, says whether the block is expanded with\n`aria-expanded`, names the block it opens with `aria-controls`, and the block\ncarries `:state(expanded)` while it is.\n\nSet `diff` to show a change. Put a unified diff, the output of `git diff` or\n`diff -u`, in the same slot, and the block draws the lines it added and\nremoved. The block never computes a diff itself. Line numbers come from the\nhunk headers and are hidden from the accessibility tree. Changed lines are\n`<ins>` and `<del>` with the `+` and `-` kept as text, so the change does not\ndepend on color. Where a removed line is paired with the added line that\nreplaced it, the words each does not share with the other are the `changed`\npart, so the eye goes to what changed within the line. Each file in the patch is its own block under its own name,\nand its copy button copies the new version of the file. `variant=\"split\"`\nshows the old version beside the new, each removal opposite its replacement.\n`context-lines` folds each long run of unchanged lines, keeping that many\nbeside each change, behind a button that shows them and hides them again,\nas a code host draws a diff written with more context than a reader needs.\n\n**A block that scrolls is a tab stop.** While its lines run past its width or\nits cap, the scroller is a region named for the block, such as \"Code,\napp.ts\", that Tab reaches, so a keyboard scrolls it with the arrow keys in\nevery browser. Chromium and Firefox make a scrolling box focusable on their\nown, and Safari does not. A block that fits is no stop at all.\n\n**The code the block draws is marked untranslated**, `translate=\"no\"` on\nits `<pre>`, so a page translator leaves highlighted lines and a diff as\nwritten. Code in the slot takes its translation mode from the element, which\nwrites nothing onto itself, so set `translate=\"no\"` on the element to keep a\ntranslator off plain code too.\n\nOn the server, the slot renders as ordinary code, so a diff first appears as\nthe patch text in a `<pre>`. The client makes the same first render, which\nkeeps hydration clean, and draws the diff once it can read the content. Diff\nmode is experimental. The rest of the family is stable.\n\n**Several blocks are files**, one shown at a time under a row of tabs, as\nSandbox shows its source panes. Put Code Blocks in the default slot of a\nCode Block, and each is a file named on its tab by its `label` or, without\none, its `language`. `file` holds the name of the file shown. The tabs are a\ntab list: the arrow keys move to a tab and show its file, the two swapping\non a right-to-left page, and Home and End go to the first and the last.\nChoosing one sends `helix-before-change` with the file's name, which you can\ncancel, and `change` once `file` holds it. The files not shown carry\n`hidden`, and the one shown draws no name of its own, its tab naming it. One\nblock draws no tabs. A server cannot see the blocks inside, so the client\ndraws the tabs once it upgrades.",
30943
30943
  "name": "HelixHeadlessCodeBlock",
30944
30944
  "cssProperties": [
30945
30945
  {
@@ -31056,6 +31056,14 @@
31056
31056
  "description": "In a diff, one file's header and block.",
31057
31057
  "name": "file"
31058
31058
  },
31059
+ {
31060
+ "description": "One file tab, `aria-selected` while its file is shown.",
31061
+ "name": "file-tab"
31062
+ },
31063
+ {
31064
+ "description": "The file tabs over the blocks a block holds, where there are several.",
31065
+ "name": "files"
31066
+ },
31059
31067
  {
31060
31068
  "description": "In a split diff, the empty row opposite a line the other side does not have.",
31061
31069
  "name": "filler"
@@ -31271,6 +31279,28 @@
31271
31279
  "words": true
31272
31280
  }
31273
31281
  },
31282
+ {
31283
+ "kind": "field",
31284
+ "name": "file",
31285
+ "type": {
31286
+ "text": "string | undefined"
31287
+ },
31288
+ "description": "The name of the file shown, where the block holds several Code Blocks:\nthe `label` of one, or its `language` without one.\n\nUnset, or a name no file has, shows the first.",
31289
+ "attribute": "file"
31290
+ },
31291
+ {
31292
+ "kind": "field",
31293
+ "name": "filesLabel",
31294
+ "type": {
31295
+ "text": "string"
31296
+ },
31297
+ "default": "'Files'",
31298
+ "description": "The name of the file tabs, read by screen readers.",
31299
+ "attribute": "files-label",
31300
+ "helix": {
31301
+ "words": true
31302
+ }
31303
+ },
31274
31304
  {
31275
31305
  "kind": "field",
31276
31306
  "name": "hideUnchangedLabel",
@@ -31590,6 +31620,119 @@
31590
31620
  },
31591
31621
  "description": "Places each mark behind its run of lines, and makes each number in a\nwrapping gutter as tall as its line, from where the lines are laid out.\n\n**Written onto the elements as custom properties**, which are facts the\nblock computed and CSS cannot, and no render follows from them."
31592
31622
  },
31623
+ {
31624
+ "kind": "field",
31625
+ "name": "blocks",
31626
+ "type": {
31627
+ "text": "HelixHeadlessCodeBlock[]"
31628
+ },
31629
+ "privacy": "private",
31630
+ "description": "The Code Blocks this block holds as its code, once its children can be read.",
31631
+ "readonly": true
31632
+ },
31633
+ {
31634
+ "kind": "field",
31635
+ "name": "tabbed",
31636
+ "type": {
31637
+ "text": "boolean"
31638
+ },
31639
+ "privacy": "private",
31640
+ "description": "Whether the block is one of several files under another block's tabs,\nwhich name it. Read from the parent, so a block needs no telling.",
31641
+ "readonly": true
31642
+ },
31643
+ {
31644
+ "kind": "method",
31645
+ "name": "shownFile",
31646
+ "privacy": "private",
31647
+ "return": {
31648
+ "type": {
31649
+ "text": "HelixHeadlessCodeBlock | undefined"
31650
+ }
31651
+ },
31652
+ "parameters": [
31653
+ {
31654
+ "name": "blocks",
31655
+ "type": {
31656
+ "text": "HelixHeadlessCodeBlock[]"
31657
+ }
31658
+ }
31659
+ ],
31660
+ "description": "The file shown among several: the one `file` names, or the first."
31661
+ },
31662
+ {
31663
+ "kind": "method",
31664
+ "name": "chooseFile",
31665
+ "privacy": "private",
31666
+ "return": {
31667
+ "type": {
31668
+ "text": "void"
31669
+ }
31670
+ },
31671
+ "parameters": [
31672
+ {
31673
+ "name": "block",
31674
+ "type": {
31675
+ "text": "HelixHeadlessCodeBlock"
31676
+ }
31677
+ }
31678
+ ],
31679
+ "description": "Shows the file a tab names, once nobody refused."
31680
+ },
31681
+ {
31682
+ "kind": "field",
31683
+ "name": "handleFileKey",
31684
+ "privacy": "private",
31685
+ "readonly": true,
31686
+ "description": "Arrow keys, `Home` and `End` on the file tabs, which move to a tab and\nshow its file, as a tab list that follows focus does and as Sandbox's file\ntabs do. Left and Right swap on a right-to-left page."
31687
+ },
31688
+ {
31689
+ "kind": "field",
31690
+ "name": "hid",
31691
+ "privacy": "private",
31692
+ "readonly": true,
31693
+ "default": "new Set<Element>()",
31694
+ "description": "The blocks this element hid, to show them again."
31695
+ },
31696
+ {
31697
+ "kind": "field",
31698
+ "name": "fileCount",
31699
+ "type": {
31700
+ "text": "number"
31701
+ },
31702
+ "privacy": "private",
31703
+ "default": "0",
31704
+ "description": "How many files the block last held, so each is told when that changes."
31705
+ },
31706
+ {
31707
+ "kind": "method",
31708
+ "name": "showFile",
31709
+ "privacy": "private",
31710
+ "return": {
31711
+ "type": {
31712
+ "text": "void"
31713
+ }
31714
+ },
31715
+ "description": "Hides the files not shown, shows any this element hid that is now, and\ntells each file when how many there are changes, since a file draws its\nown name only while it is alone."
31716
+ },
31717
+ {
31718
+ "kind": "method",
31719
+ "name": "renderFiles",
31720
+ "privacy": "private",
31721
+ "return": {
31722
+ "type": {
31723
+ "text": "TemplateResult"
31724
+ }
31725
+ },
31726
+ "parameters": [
31727
+ {
31728
+ "name": "blocks",
31729
+ "type": {
31730
+ "text": "HelixHeadlessCodeBlock[]"
31731
+ }
31732
+ }
31733
+ ],
31734
+ "description": "The tabs over several files, and the file shown under them. One file\ndraws no tabs, only itself."
31735
+ },
31593
31736
  {
31594
31737
  "kind": "method",
31595
31738
  "name": "renderExpand",
@@ -31642,6 +31785,10 @@
31642
31785
  "type": {
31643
31786
  "text": "string"
31644
31787
  }
31788
+ },
31789
+ {
31790
+ "name": "drawn",
31791
+ "default": "name"
31645
31792
  }
31646
31793
  ],
31647
31794
  "description": "The name with the copy button beside it, or nothing when there is no name.\n\n**The button is in the header wherever there is one**, because beside the\ncode it stands over the block and the block has to make room for it. A\ndiff cannot: its washes run to the edge, so the button stood on the hunk\nline and the line under it. In the header it is over nothing.\n\n**No name draws no header**, unless the page put a control in `actions`\nor asked for the wrap button. A bar holding the copy button alone turned a\n`Usage` section of one-line imports into a run of empty strips. The button\nthen stands beside the code, in room the block keeps for it."
@@ -32208,6 +32355,22 @@
32208
32355
  }
32209
32356
  ],
32210
32357
  "events": [
32358
+ {
32359
+ "type": {
32360
+ "text": "Event"
32361
+ },
32362
+ "description": "A file tab showed its file, whose name `file` now holds.",
32363
+ "name": "change",
32364
+ "reactProp": "onchange"
32365
+ },
32366
+ {
32367
+ "type": {
32368
+ "text": "HelixBeforeChangeEvent"
32369
+ },
32370
+ "description": "A file tab is about to show its file, with the file's name in `detail.value`. Cancelable: cancel it to keep the file shown.",
32371
+ "name": "helix-before-change",
32372
+ "reactProp": "onhelix-before-change"
32373
+ },
32211
32374
  {
32212
32375
  "type": {
32213
32376
  "text": "HelixBeforeToggleEvent"
@@ -32216,6 +32379,22 @@
32216
32379
  "name": "helix-before-toggle",
32217
32380
  "reactProp": "onhelix-before-toggle"
32218
32381
  },
32382
+ {
32383
+ "type": {
32384
+ "text": "HelixCopyEvent"
32385
+ },
32386
+ "description": "The copy button put the code on the clipboard, with the text in `detail.value`.",
32387
+ "name": "helix-copy",
32388
+ "reactProp": "onhelix-copy"
32389
+ },
32390
+ {
32391
+ "type": {
32392
+ "text": "HelixCopyErrorEvent"
32393
+ },
32394
+ "description": "A press on the copy button put nothing on the clipboard: the browser did not allow the write, or there was no code.",
32395
+ "name": "helix-copy-error",
32396
+ "reactProp": "onhelix-copy-error"
32397
+ },
32219
32398
  {
32220
32399
  "type": {
32221
32400
  "text": "HelixToggleEvent"
@@ -32315,6 +32494,23 @@
32315
32494
  "description": "The expand button's words while the cap hides lines.",
32316
32495
  "fieldName": "expandLabel"
32317
32496
  },
32497
+ {
32498
+ "name": "file",
32499
+ "type": {
32500
+ "text": "string | undefined"
32501
+ },
32502
+ "description": "The name of the file shown, where the block holds several Code Blocks:\nthe `label` of one, or its `language` without one.\n\nUnset, or a name no file has, shows the first.",
32503
+ "fieldName": "file"
32504
+ },
32505
+ {
32506
+ "name": "files-label",
32507
+ "type": {
32508
+ "text": "string"
32509
+ },
32510
+ "default": "'Files'",
32511
+ "description": "The name of the file tabs, read by screen readers.",
32512
+ "fieldName": "filesLabel"
32513
+ },
32318
32514
  {
32319
32515
  "name": "hide-unchanged-label",
32320
32516
  "type": {
@@ -32419,6 +32615,10 @@
32419
32615
  "description": "The expand button has shown every line of a capped block.",
32420
32616
  "name": "expanded"
32421
32617
  },
32618
+ {
32619
+ "description": "The block is one of several files under another block's tabs, which name it, so it draws no name of its own.",
32620
+ "name": "tabbed"
32621
+ },
32422
32622
  {
32423
32623
  "description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
32424
32624
  "name": "settled",
@@ -49934,7 +50134,7 @@
49934
50134
  "text": "readonly string[] | undefined"
49935
50135
  },
49936
50136
  "privacy": "protected",
49937
- "description": "Each date, where `mode` holds several, sent one entry each.\n\nOne date that is text and no date, such as `August 5`, is sent as an empty\nentry, as a native date field sends a date it cannot read.",
50137
+ "description": "Each date, where `mode` holds several, sent one entry each.\n\nText that is no date, such as `August 5`, is sent as one empty entry, as\na native date field sends a date it cannot read, in every mode.",
49938
50138
  "readonly": true,
49939
50139
  "inheritedFrom": {
49940
50140
  "name": "MixinPickerField",
@@ -50514,6 +50714,81 @@
50514
50714
  "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
50515
50715
  }
50516
50716
  },
50717
+ {
50718
+ "kind": "method",
50719
+ "name": "edit",
50720
+ "privacy": "private",
50721
+ "return": {
50722
+ "type": {
50723
+ "text": "boolean"
50724
+ }
50725
+ },
50726
+ "parameters": [
50727
+ {
50728
+ "name": "element",
50729
+ "type": {
50730
+ "text": "HTMLElement"
50731
+ }
50732
+ },
50733
+ {
50734
+ "name": "key",
50735
+ "type": {
50736
+ "text": "string"
50737
+ }
50738
+ }
50739
+ ],
50740
+ "description": "Applies an editing key to the segment, the arrows, Backspace, a digit or\na letter, and says whether it edited anything.",
50741
+ "inheritedFrom": {
50742
+ "name": "MixinSegmentedField",
50743
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
50744
+ }
50745
+ },
50746
+ {
50747
+ "kind": "field",
50748
+ "name": "composing",
50749
+ "type": {
50750
+ "text": "[Node, string | null][]"
50751
+ },
50752
+ "privacy": "private",
50753
+ "default": "[]",
50754
+ "description": "What the segment's text was when a composition started to write into it.",
50755
+ "inheritedFrom": {
50756
+ "name": "MixinSegmentedField",
50757
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
50758
+ }
50759
+ },
50760
+ {
50761
+ "kind": "field",
50762
+ "name": "handleSegmentBeforeInput",
50763
+ "privacy": "private",
50764
+ "readonly": true,
50765
+ "description": "Text a touch keyboard writes into a segment, which arrives as input and\nnot as a key: an on-screen keyboard sends `Unidentified` for its keys,\nso a digit tapped on a phone is read here, as React Aria's segments read\nit. Every input is canceled, so the segment holds only what the field\ndraws in it.",
50766
+ "inheritedFrom": {
50767
+ "name": "MixinSegmentedField",
50768
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
50769
+ }
50770
+ },
50771
+ {
50772
+ "kind": "field",
50773
+ "name": "handleSegmentInput",
50774
+ "privacy": "private",
50775
+ "readonly": true,
50776
+ "inheritedFrom": {
50777
+ "name": "MixinSegmentedField",
50778
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
50779
+ }
50780
+ },
50781
+ {
50782
+ "kind": "field",
50783
+ "name": "collapseSelection",
50784
+ "privacy": "private",
50785
+ "readonly": true,
50786
+ "description": "Keeps the caret at the start of the segment with focus, where Chromium\nfires input for a typed key, and where Android's keyboard does not\ncompose over the segment's text. A selection already there, or outside\nthe segment, is left alone.",
50787
+ "inheritedFrom": {
50788
+ "name": "MixinSegmentedField",
50789
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
50790
+ }
50791
+ },
50517
50792
  {
50518
50793
  "kind": "field",
50519
50794
  "name": "handleSegmentKeydown",
@@ -67752,6 +68027,10 @@
67752
68027
  "description": "Shown while the fields are loading.",
67753
68028
  "name": "menu-loading"
67754
68029
  },
68030
+ {
68031
+ "description": "The inner menu's filter field, drawn with `filterable`.",
68032
+ "name": "menu-search-field"
68033
+ },
67755
68034
  {
67756
68035
  "description": "The floating panel the menu is drawn on.",
67757
68036
  "name": "menu-surface"
@@ -72046,7 +72325,7 @@
72046
72325
  "type": {
72047
72326
  "text": "'long' | 'narrow' | 'short' | undefined"
72048
72327
  },
72049
- "description": "Shows how long ago the timestamp was, or how long until it, in words, in\nplace of the date: `long` (\"3 hours ago\"), `short` (\"3 hr. ago\") or\n`narrow` (\"3h ago\").\n\nThe reading refreshes as it goes stale, as `elapsed` does, and the whole\ndate is its title. `elapsed` wins where both are set.",
72328
+ "description": "Shows how long ago the timestamp was, or how long until it, in words, in\nplace of the date: `long` (\"3 hours ago\"), `short` (\"3 hr. ago\") or\n`narrow` (\"3h ago\").\n\nThe reading refreshes as it goes stale, as `elapsed` does, and the whole\ndate is its title. `elapsed` wins where both are set. Written with no\nvalue, as `elapsed` is, or with a style `Intl` does not know, it reads\n`long`.",
72050
72329
  "attribute": "relative"
72051
72330
  },
72052
72331
  {
@@ -72693,7 +72972,7 @@
72693
72972
  "type": {
72694
72973
  "text": "'long' | 'narrow' | 'short' | undefined"
72695
72974
  },
72696
- "description": "Shows how long ago the timestamp was, or how long until it, in words, in\nplace of the date: `long` (\"3 hours ago\"), `short` (\"3 hr. ago\") or\n`narrow` (\"3h ago\").\n\nThe reading refreshes as it goes stale, as `elapsed` does, and the whole\ndate is its title. `elapsed` wins where both are set.",
72975
+ "description": "Shows how long ago the timestamp was, or how long until it, in words, in\nplace of the date: `long` (\"3 hours ago\"), `short` (\"3 hr. ago\") or\n`narrow` (\"3h ago\").\n\nThe reading refreshes as it goes stale, as `elapsed` does, and the whole\ndate is its title. `elapsed` wins where both are set. Written with no\nvalue, as `elapsed` is, or with a style `Intl` does not know, it reads\n`long`.",
72697
72976
  "fieldName": "relative"
72698
72977
  },
72699
72978
  {
@@ -87220,6 +87499,23 @@
87220
87499
  "description": "The items, read from the host.\n\n**`knownChildren` and not `children`**, which is undefined on the server:\nspreading it threw the first time a lightbox was rendered there open,\nwhich is the first time anything asked it for its items on a server.",
87221
87500
  "readonly": true
87222
87501
  },
87502
+ {
87503
+ "kind": "field",
87504
+ "name": "handleSlotChange",
87505
+ "privacy": "private",
87506
+ "readonly": true,
87507
+ "description": "The set changed: render it again.\n\n`items` is read on each render and nothing else marks a render as due when\nan item arrives or leaves, so an item appended after the first render had\nno role description, no place in the set, and no part in the count until\nsome unrelated property changed."
87508
+ },
87509
+ {
87510
+ "kind": "field",
87511
+ "name": "itemWatch",
87512
+ "type": {
87513
+ "text": "MutationObserver | undefined"
87514
+ },
87515
+ "privacy": "private",
87516
+ "default": "undefined",
87517
+ "description": "Watches each item's `label` and `value`, which no slot reports.\n\n`value` decides which item `active` names, and `label` fills `{label}` in\n`status-label` and `slide-label`. A change to either left the old item\nshown, or the old words in the counter, until some unrelated property\nchanged. `Select` watches its options for the same reason.\n\nThe subtree, since an observer on the host sees no attribute on its\nchildren otherwise. Only changes on the items themselves count: a `<progress\nvalue>` inside an item, updated while a video plays, would otherwise render\nthe viewer again on each update.\n\nMade on connection, there being no `MutationObserver` on a server."
87518
+ },
87223
87519
  {
87224
87520
  "kind": "field",
87225
87521
  "name": "dialog",
@@ -87414,6 +87710,16 @@
87414
87710
  ],
87415
87711
  "description": "Home and End, which are an index rather than a step."
87416
87712
  },
87713
+ {
87714
+ "kind": "field",
87715
+ "name": "zoomedItem",
87716
+ "type": {
87717
+ "text": "HelixHeadlessLightboxItem | undefined"
87718
+ },
87719
+ "privacy": "private",
87720
+ "default": "undefined",
87721
+ "description": "The item shown at the last update, whose zoom a different item does not keep."
87722
+ },
87417
87723
  {
87418
87724
  "kind": "field",
87419
87725
  "name": "shown",
@@ -107295,7 +107601,7 @@
107295
107601
  "declarations": [
107296
107602
  {
107297
107603
  "kind": "class",
107298
- "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 `checkable` or `checked` is\n`menuitemcheckbox` with `aria-checked`, and an `exclusive` row is\n`menuitemradio`, for a set where only one can be on. A row that opens a page\nkeeps `menuitem` and sets `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\nSpace on a choice row changes it and leaves the menu open, so a reader can\nset several in a row, as the APG's menu does. Enter and a press change it and\nclose the menu. `close-on-select=\"false\"` on the row keeps the menu open after\nany choice of it, and `close-on-select` on the row closes it after a Space as\nwell.\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.",
107604
+ "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 `checkable` or `checked` is\n`menuitemcheckbox` with `aria-checked`, and an `exclusive` row is\n`menuitemradio`, for a set where only one can be on. A row that opens a page\nkeeps `menuitem` and sets `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\nSpace on a choice row changes it and leaves the menu open, so a reader can\nset several in a row, as the APG's menu does. Enter and a press change it and\nclose the menu. `close-on-select=\"false\"` on the row keeps the menu open after\nany choice of it, and `close-on-select` on the row closes it after a Space as\nwell.\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.\n\nIn a menu with `filterable`, focus stays in the menu's filter field and the\nrow the arrow keys reach is highlighted: the field names it with\n`aria-activedescendant`, the row carries its role on its host so the field\ncan point at it, and `:state(highlighted)` says which row it is. A row with\nan `href` then follows its link without an anchor, as `Option` does.",
107299
107605
  "name": "HelixHeadlessMenuItem",
107300
107606
  "cssParts": [
107301
107607
  {
@@ -107563,7 +107869,7 @@
107563
107869
  "kind": "field",
107564
107870
  "name": "describedBy",
107565
107871
  "type": {
107566
- "text": "string | typeof nothing"
107872
+ "text": "string | null"
107567
107873
  },
107568
107874
  "privacy": "private",
107569
107875
  "description": "What describes the row: the line under its label and the words after it.",
@@ -107733,6 +108039,16 @@
107733
108039
  ],
107734
108040
  "description": "The trailing mark: the caret of a row that opens a page, or the tick of a\nchecked one, each the fallback of a slot a mark of your own replaces.\n\nOne trailing column, and a row is never both: a way into a page has nothing\nto tick, and a choice opens nothing. The tick sits after the label rather\nthan before it, so the labels start at the edge of the row and the marks\nline up down the side they are read from.\n\n`data-mirror` is what tells the two apart. They share a part name because\nthey share a column, and only one of them is directional: a caret has to\nmirror in a right-to-left document and a tick must not, which Unicode's own\nmirroring list agrees on. The attribute is on an element in this shadow\nroot rather than on the host, so it is the divider's `data-empty` and not a\nhydration hazard.\n\nNothing to mark, so nothing is drawn. The column this would have sat in is\nreserved by the menu when some row on the page needs one, so the labels\nstill line up without every row carrying an empty box to line them up with."
107735
108041
  },
108042
+ {
108043
+ "kind": "field",
108044
+ "name": "onHost",
108045
+ "type": {
108046
+ "text": "boolean"
108047
+ },
108048
+ "privacy": "private",
108049
+ "description": "Whether the row says what it is from its host, for a field's `aria-activedescendant`.",
108050
+ "readonly": true
108051
+ },
107736
108052
  {
107737
108053
  "kind": "field",
107738
108054
  "name": "tier",
@@ -108196,6 +108512,10 @@
108196
108512
  "description": "The row is checked.",
108197
108513
  "name": "checked"
108198
108514
  },
108515
+ {
108516
+ "description": "In a menu with `filterable`, the arrow keys or the pointer reached the row while focus stays in the filter field.",
108517
+ "name": "highlighted"
108518
+ },
108199
108519
  {
108200
108520
  "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.",
108201
108521
  "name": "submenu-mark"
@@ -108264,7 +108584,7 @@
108264
108584
  "declarations": [
108265
108585
  {
108266
108586
  "kind": "class",
108267
- "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 (Space on a\nchoice row changes it and leaves the menu open), Right Arrow\nopens a row's submenu and Left Arrow goes back, the two swapping on a\nright-to-left page. Left Arrow on the top page does nothing. Escape closes\nthe menu and returns focus to the trigger. 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.",
108587
+ "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 (Space on a\nchoice row changes it and leaves the menu open), Right Arrow\nopens a row's submenu and Left Arrow goes back, the two swapping on a\nright-to-left page. Left Arrow on the top page does nothing. Escape closes\nthe menu and returns focus to the trigger. 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.\n\n**A filter field.** With `filterable`, the menu opens with focus in a field\nabove its rows, and typing narrows the rows of the page the keys move in,\nas React Aria's `Autocomplete` around a `Menu` does. A row is kept where its\nwords hold the filter, in any case, or where `filterMatch` says so. Each\npage starts unfiltered, and the filter is cleared as the menu closes. Where\ntyping keeps no row, the menu shows `no-results-text`. Focus stays in the\nfield: Up and Down Arrow move the highlight through the rows that are left,\nEnter chooses the highlighted row, Right Arrow opens its submenu, Left Arrow\non a submenu goes back, and Escape clears the filter and then closes the\nmenu. Home, End and the other keys move the caret and type. The field names\nthe highlighted row with `aria-activedescendant`, and the rows are a `menu`\nafter the field. Cancel `helix-filter` to keep every row\nshowing and narrow the rows yourself, such as by replacing them with rows\nfrom a server.",
108268
108588
  "name": "HelixHeadlessMenu",
108269
108589
  "cssProperties": [
108270
108590
  {
@@ -108302,7 +108622,11 @@
108302
108622
  "name": "loading"
108303
108623
  },
108304
108624
  {
108305
- "description": "The floating panel the menu is drawn on.",
108625
+ "description": "With `filterable`, the field that narrows the rows.",
108626
+ "name": "search-field"
108627
+ },
108628
+ {
108629
+ "description": "The floating panel the menu is drawn on. It is the `menu` itself, and with `filterable` it holds the filter field and then the `menu`.",
108306
108630
  "name": "surface"
108307
108631
  },
108308
108632
  {
@@ -108315,6 +108639,10 @@
108315
108639
  "description": "The items.",
108316
108640
  "name": ""
108317
108641
  },
108642
+ {
108643
+ "description": "What the menu shows when the filter keeps no rows, for content richer than `no-results-text`.",
108644
+ "name": "no-results"
108645
+ },
108318
108646
  {
108319
108647
  "description": "The control that opens the menu, or with `context` the area a context menu opens over.",
108320
108648
  "name": "trigger"
@@ -108369,6 +108697,47 @@
108369
108697
  "attribute": "context",
108370
108698
  "reflects": true
108371
108699
  },
108700
+ {
108701
+ "kind": "field",
108702
+ "name": "filter",
108703
+ "type": {
108704
+ "text": "string"
108705
+ },
108706
+ "default": "''",
108707
+ "description": "The text the rows are filtered by, which the filter field holds.\n\nCleared as the menu closes and as a submenu opens or closes, so each page\nstarts with every row showing.",
108708
+ "attribute": "filter"
108709
+ },
108710
+ {
108711
+ "kind": "field",
108712
+ "name": "filterable",
108713
+ "type": {
108714
+ "text": "boolean"
108715
+ },
108716
+ "default": "false",
108717
+ "description": "Whether the menu shows a field above its rows that narrows them as the\nreader types, with focus staying in the field.",
108718
+ "attribute": "filterable"
108719
+ },
108720
+ {
108721
+ "kind": "field",
108722
+ "name": "filterLabel",
108723
+ "type": {
108724
+ "text": "string"
108725
+ },
108726
+ "default": "'Filter'",
108727
+ "description": "The filter field's name and placeholder.",
108728
+ "attribute": "filter-label",
108729
+ "helix": {
108730
+ "words": true
108731
+ }
108732
+ },
108733
+ {
108734
+ "kind": "field",
108735
+ "name": "filterMatch",
108736
+ "type": {
108737
+ "text": "((text: string, filter: string) => boolean) | undefined | undefined"
108738
+ },
108739
+ "description": "Whether a row is kept by the filter: a function given the row's words and\nthe filter, trimmed, that returns `true` to keep it showing, as React\nAria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.\n\nAbsent, a row is kept where its words hold the filter, in any case. A\nproperty only, there being no way to write a function in markup."
108740
+ },
108372
108741
  {
108373
108742
  "kind": "field",
108374
108743
  "name": "label",
@@ -108489,6 +108858,19 @@
108489
108858
  "words": true
108490
108859
  }
108491
108860
  },
108861
+ {
108862
+ "kind": "field",
108863
+ "name": "noResultsText",
108864
+ "type": {
108865
+ "text": "string"
108866
+ },
108867
+ "default": "'No matches'",
108868
+ "description": "The text shown when the filter keeps no rows.",
108869
+ "attribute": "no-results-text",
108870
+ "helix": {
108871
+ "words": true
108872
+ }
108873
+ },
108492
108874
  {
108493
108875
  "kind": "field",
108494
108876
  "name": "offset",
@@ -108577,7 +108959,7 @@
108577
108959
  "name": "aria",
108578
108960
  "privacy": "protected",
108579
108961
  "readonly": true,
108580
- "default": "new AriaForwardController(this, { label: true, target: () => this.partNamed('surface'), })",
108962
+ "default": "new AriaForwardController(this, { label: true, target: () => this.menuBox, })",
108581
108963
  "description": "Carries a host `aria-label` and `aria-labelledby` to the surface."
108582
108964
  },
108583
108965
  {
@@ -108655,6 +109037,146 @@
108655
109037
  "description": "The items on the page that is showing, which is what the keys move over.",
108656
109038
  "readonly": true
108657
109039
  },
109040
+ {
109041
+ "kind": "field",
109042
+ "name": "menuBox",
109043
+ "type": {
109044
+ "text": "HTMLElement | null"
109045
+ },
109046
+ "privacy": "private",
109047
+ "description": "The element that is the `menu`: the surface, or with `filterable` the box after the field.",
109048
+ "readonly": true
109049
+ },
109050
+ {
109051
+ "kind": "field",
109052
+ "name": "field",
109053
+ "type": {
109054
+ "text": "HTMLInputElement | null"
109055
+ },
109056
+ "privacy": "private",
109057
+ "description": "The filter field, with `filterable`.",
109058
+ "readonly": true
109059
+ },
109060
+ {
109061
+ "kind": "field",
109062
+ "name": "filterPage",
109063
+ "type": {
109064
+ "text": "HelixHeadlessMenuItem | null"
109065
+ },
109066
+ "privacy": "private",
109067
+ "default": "null",
109068
+ "description": "The submenu the filter narrows, or null for the top page."
109069
+ },
109070
+ {
109071
+ "kind": "field",
109072
+ "name": "refused",
109073
+ "type": {
109074
+ "text": "string | undefined"
109075
+ },
109076
+ "privacy": "private",
109077
+ "description": "The filter a listener refused, which narrows nothing."
109078
+ },
109079
+ {
109080
+ "kind": "field",
109081
+ "name": "filtering",
109082
+ "type": {
109083
+ "text": "boolean"
109084
+ },
109085
+ "privacy": "private",
109086
+ "description": "Whether the filter is narrowing the rows.",
109087
+ "readonly": true
109088
+ },
109089
+ {
109090
+ "kind": "method",
109091
+ "name": "kept",
109092
+ "privacy": "private",
109093
+ "return": {
109094
+ "type": {
109095
+ "text": "boolean"
109096
+ }
109097
+ },
109098
+ "parameters": [
109099
+ {
109100
+ "name": "row",
109101
+ "type": {
109102
+ "text": "HelixHeadlessMenuItem"
109103
+ }
109104
+ }
109105
+ ],
109106
+ "description": "Whether the filter keeps a row: one of another page, or one whose words it matches."
109107
+ },
109108
+ {
109109
+ "kind": "method",
109110
+ "name": "requestFilter",
109111
+ "privacy": "private",
109112
+ "return": {
109113
+ "type": {
109114
+ "text": "void"
109115
+ }
109116
+ },
109117
+ "parameters": [
109118
+ {
109119
+ "name": "value",
109120
+ "type": {
109121
+ "text": "string"
109122
+ }
109123
+ }
109124
+ ],
109125
+ "description": "Asks to filter by new text, which the field and `filter` then hold. A\nrefusal keeps every row showing, for a page that narrows them itself."
109126
+ },
109127
+ {
109128
+ "kind": "field",
109129
+ "name": "handleFilterInput",
109130
+ "privacy": "private",
109131
+ "readonly": true
109132
+ },
109133
+ {
109134
+ "kind": "method",
109135
+ "name": "filterBy",
109136
+ "privacy": "private",
109137
+ "return": {
109138
+ "type": {
109139
+ "text": "void"
109140
+ }
109141
+ },
109142
+ "parameters": [
109143
+ {
109144
+ "name": "value",
109145
+ "type": {
109146
+ "text": "string"
109147
+ }
109148
+ }
109149
+ ],
109150
+ "description": "Filters by what the reader typed, and highlights the first row kept."
109151
+ },
109152
+ {
109153
+ "kind": "field",
109154
+ "name": "highlighted",
109155
+ "type": {
109156
+ "text": "HelixHeadlessMenuItem | undefined"
109157
+ },
109158
+ "privacy": "private",
109159
+ "description": "The row the keys reached while focus stays in the filter field."
109160
+ },
109161
+ {
109162
+ "kind": "method",
109163
+ "name": "reach",
109164
+ "privacy": "private",
109165
+ "return": {
109166
+ "type": {
109167
+ "text": "void"
109168
+ }
109169
+ },
109170
+ "parameters": [
109171
+ {
109172
+ "name": "row",
109173
+ "type": {
109174
+ "text": "HelixHeadlessMenuItem | undefined"
109175
+ }
109176
+ }
109177
+ ],
109178
+ "description": "Moves the reader to a row: focus, or with `filterable` the highlight,\nwhich the field names with `aria-activedescendant`. An element reference,\nbecause the field is in this shadow root and the row in the tree around\nit, the one direction a reference crosses."
109179
+ },
108658
109180
  {
108659
109181
  "kind": "method",
108660
109182
  "name": "show",
@@ -108769,6 +109291,25 @@
108769
109291
  "readonly": true,
108770
109292
  "description": "Keeps whatever has focus in sight, however it got there.\n\nOn `focusin` rather than in the branches that move focus: a row reached by\nTab, or focused by the drilldown on the way into a page, can otherwise sit\nbelow the fold of a scrolled panel."
108771
109293
  },
109294
+ {
109295
+ "kind": "method",
109296
+ "name": "revealRow",
109297
+ "privacy": "private",
109298
+ "return": {
109299
+ "type": {
109300
+ "text": "void"
109301
+ }
109302
+ },
109303
+ "parameters": [
109304
+ {
109305
+ "name": "item",
109306
+ "type": {
109307
+ "text": "HelixHeadlessMenuItem"
109308
+ }
109309
+ }
109310
+ ],
109311
+ "description": "Scrolls the panel that holds a row to show it."
109312
+ },
108772
109313
  {
108773
109314
  "kind": "field",
108774
109315
  "name": "handleKeydown",
@@ -108826,6 +109367,13 @@
108826
109367
  "readonly": true,
108827
109368
  "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."
108828
109369
  },
109370
+ {
109371
+ "kind": "field",
109372
+ "name": "handleMouseDown",
109373
+ "privacy": "private",
109374
+ "readonly": true,
109375
+ "description": "Keeps focus in the filter field through a press on a row or the way\nback, as React Aria's virtual focus does: the press still chooses."
109376
+ },
108829
109377
  {
108830
109378
  "kind": "field",
108831
109379
  "name": "handlePointerMove",
@@ -109686,6 +110234,14 @@
109686
110234
  "name": "helix-before-open",
109687
110235
  "reactProp": "onhelix-before-open"
109688
110236
  },
110237
+ {
110238
+ "type": {
110239
+ "text": "HelixFilterEvent"
110240
+ },
110241
+ "description": "The text in the filter field changed, with the new text in `detail.value`. Cancelable: cancel it to keep every row showing and narrow the rows yourself.",
110242
+ "name": "helix-filter",
110243
+ "reactProp": "onhelix-filter"
110244
+ },
109689
110245
  {
109690
110246
  "type": {
109691
110247
  "text": "HelixSelectEvent"
@@ -109735,6 +110291,33 @@
109735
110291
  "description": "Whether the menu is the trigger's context menu: it opens where the reader\nasks for one, with a right-click, a long press, Shift+F10 or the menu key.",
109736
110292
  "fieldName": "context"
109737
110293
  },
110294
+ {
110295
+ "name": "filter",
110296
+ "type": {
110297
+ "text": "string"
110298
+ },
110299
+ "default": "''",
110300
+ "description": "The text the rows are filtered by, which the filter field holds.\n\nCleared as the menu closes and as a submenu opens or closes, so each page\nstarts with every row showing.",
110301
+ "fieldName": "filter"
110302
+ },
110303
+ {
110304
+ "name": "filterable",
110305
+ "type": {
110306
+ "text": "boolean"
110307
+ },
110308
+ "default": "false",
110309
+ "description": "Whether the menu shows a field above its rows that narrows them as the\nreader types, with focus staying in the field.",
110310
+ "fieldName": "filterable"
110311
+ },
110312
+ {
110313
+ "name": "filter-label",
110314
+ "type": {
110315
+ "text": "string"
110316
+ },
110317
+ "default": "'Filter'",
110318
+ "description": "The filter field's name and placeholder.",
110319
+ "fieldName": "filterLabel"
110320
+ },
109738
110321
  {
109739
110322
  "name": "label",
109740
110323
  "type": {
@@ -109753,6 +110336,15 @@
109753
110336
  "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.",
109754
110337
  "fieldName": "longPressLabel"
109755
110338
  },
110339
+ {
110340
+ "name": "no-results-text",
110341
+ "type": {
110342
+ "text": "string"
110343
+ },
110344
+ "default": "'No matches'",
110345
+ "description": "The text shown when the filter keeps no rows.",
110346
+ "fieldName": "noResultsText"
110347
+ },
109756
110348
  {
109757
110349
  "name": "offset",
109758
110350
  "type": {
@@ -115159,7 +115751,7 @@
115159
115751
  "declarations": [
115160
115752
  {
115161
115753
  "kind": "class",
115162
- "description": "A separate family from `Input`'s `type=\"number\"`. It renders two buttons,\nbinds four keys `Input` does not, and handles clamping and stepping.\n\nThe field is `type=\"text\"` with `inputmode=\"decimal\"`. Tested in a real\nbrowser, `type=\"number\"` fails in three ways:\n- Typing `12e` gives a `.value` of `\"\"`, so the element cannot see what you\n typed. A `type=\"text\"` field keeps `\"12e\"`.\n- The mouse wheel over a focused field changes the value, for example from 5\n to 4, when you only meant to scroll the page.\n- `selectionStart` is `null`, so the caret cannot be managed.\n\n`inputmode=\"decimal\"` keeps the numeric keypad on phones.\n\n`format-options` shows the number with `Intl.NumberFormat` in `locale`, as a\ncurrency, a percent or a unit, while the field is not being edited. Focus\nshows the number itself, and a typed `$1,200` or `25%` is read back with the\nsame options. The value stays the plain number: `1200`, or `0.25` for 25%.\nThe locale's group separators are read in every field, so `1,234` is a\nnumber in `en-US`.\n\nThe field and its two buttons sit in a `role=\"group\"` named by the label,\nand the field carries `role-label`, \"number field\" in English, as its\n`aria-roledescription`, as React Aria's NumberField does. On iOS and iPadOS the field is a plain text\nfield, with no `role=\"spinbutton\"`, which VoiceOver reads as a slider you\ncannot type in, and no role description, so VoiceOver says the field is\nrequired. React Aria's NumberField does the same.\n\nValidity follows the platform's rules: `min`, `max`, and `step` are checked\nand reported through the host's own `setValidity`, under the platform's flag\nnames.\n\nStepping is separate from typing, so a number is not corrected while you type\nit. While you type, the form holds the number the text reads as, so a field\nshowing `$2,500.50` gives the form 2500.5, and text that is not a number\ngives it nothing, as a native number field does.\n\nHolding a stepper button down steps once, then again after 400 milliseconds,\nthen every 60 milliseconds until you let go, as React Aria's NumberField does.\n\n**Keyboard.** The field is one tab stop, and the stepper buttons are not in\nthe tab order.\n\n| Key | What it does |\n|---|---|\n| Up, Down | Steps the value up or down by `step`. |\n| Page Up, Page Down | Steps by `large-step` steps, ten by default. |\n| Home, End | Goes to `min` or `max`, where there is one. Without one, moves the caret. |\n| Enter | Commits the typed number and submits the form, as a native field does. |\n\nThe field has `role=\"spinbutton\"` with `aria-valuenow`, `aria-valuemin`,\n`aria-valuemax`, and the formatted text in `aria-valuetext`.",
115754
+ "description": "A separate family from `Input`'s `type=\"number\"`. It renders two buttons,\nbinds four keys `Input` does not, and handles clamping and stepping.\n\nThe field is `type=\"text\"` with an `inputmode` for a number. Tested in a real\nbrowser, `type=\"number\"` fails in three ways:\n- Typing `12e` gives a `.value` of `\"\"`, so the element cannot see what you\n typed. A `type=\"text\"` field keeps `\"12e\"`.\n- The mouse wheel over a focused field changes the value, for example from 5\n to 4, when you only meant to scroll the page.\n- `selectionStart` is `null`, so the caret cannot be managed.\n\n`inputmode` keeps a numeric keypad on phones, chosen as React Aria's\nNumberField chooses it: a keypad with a minus key where the number can be\nnegative, and one with a decimal separator where the format shows a\nfraction. An iPhone has no keypad with a minus key, so a field that can be\nnegative takes the full keyboard there.\n\n`format-options` shows the number with `Intl.NumberFormat` in `locale`, as a\ncurrency, a percent or a unit, while the field is not being edited. Focus\nshows the number itself, and a typed `$1,200` or `25%` is read back with the\nsame options. The value stays the plain number: `1200`, or `0.25` for 25%.\nThe locale's group separators are read in every field, so `1,234` is a\nnumber in `en-US`.\n\nThe field and its two buttons sit in a `role=\"group\"` named by the label,\nand the field carries `role-label`, \"number field\" in English, as its\n`aria-roledescription`, as React Aria's NumberField does. On iOS and iPadOS the field is a plain text\nfield, with no `role=\"spinbutton\"`, which VoiceOver reads as a slider you\ncannot type in, and no role description, so VoiceOver says the field is\nrequired. React Aria's NumberField does the same.\n\nValidity follows the platform's rules: `min`, `max`, and `step` are checked\nand reported through the host's own `setValidity`, under the platform's flag\nnames.\n\nStepping is separate from typing, so a number is not corrected while you type\nit. While you type, the form holds the number the text reads as, so a field\nshowing `$2,500.50` gives the form 2500.5, and text that is not a number\ngives it nothing, as a native number field does.\n\nHolding a stepper button down steps once, then again after 400 milliseconds,\nthen every 60 milliseconds until you let go, as React Aria's NumberField does.\n\n**Keyboard.** The field is one tab stop, and the stepper buttons are not in\nthe tab order.\n\n| Key | What it does |\n|---|---|\n| Up, Down | Steps the value up or down by `step`. |\n| Page Up, Page Down | Steps by `large-step` steps, ten by default. |\n| Home, End | Goes to `min` or `max`, where there is one. Without one, moves the caret. |\n| Enter | Commits the typed number and submits the form, as a native field does. |\n\nThe field has `role=\"spinbutton\"` with `aria-valuenow`, `aria-valuemin`,\n`aria-valuemax`, and the formatted text in `aria-valuetext`.",
115163
115755
  "name": "HelixHeadlessNumberInput",
115164
115756
  "cssParts": [
115165
115757
  {
@@ -115432,9 +116024,9 @@
115432
116024
  "kind": "field",
115433
116025
  "name": "step",
115434
116026
  "type": {
115435
- "text": "number | undefined"
116027
+ "text": "number | 'any' | undefined"
115436
116028
  },
115437
- "description": "How far one step moves. A value off the step grid, counted from `min`, is\ninvalid, as it is in a native number field.\n\nUnset, a step moves by one, or by one percent under a percent format, and\na typed number is rounded to the smallest amount `format-options` shows\nrather than to whole steps, as React Aria's NumberField does: a field\nshowing dollars keeps the cents typed into it. Without `format-options`\nthe grid is whole numbers, as in a native number field.",
116029
+ "description": "How far one step moves. A value off the step grid, counted from `min`, is\ninvalid, as it is in a native number field.\n\nUnset, a step moves by one, or by one percent under a percent format, and\na typed number is rounded to the smallest amount the format shows, as\nReact Aria's NumberField does: a field showing dollars keeps the cents\ntyped into it, and one with no `format-options` keeps three decimal\nplaces. `any` puts the number on no grid, as it does in a native number\nfield: a step moves by one, and any number in range is valid.",
115438
116030
  "attribute": "step"
115439
116031
  },
115440
116032
  {
@@ -115510,6 +116102,23 @@
115510
116102
  "readonly": true,
115511
116103
  "description": "Whether this is an iPhone or an iPad, read once on the client. A server\nhas no navigator and renders the spinbutton."
115512
116104
  },
116105
+ {
116106
+ "kind": "field",
116107
+ "name": "phone",
116108
+ "privacy": "private",
116109
+ "readonly": true,
116110
+ "description": "The phone the field is on, read once on the client, for the keypad it offers."
116111
+ },
116112
+ {
116113
+ "kind": "field",
116114
+ "name": "keypad",
116115
+ "type": {
116116
+ "text": "'decimal' | 'numeric' | 'text'"
116117
+ },
116118
+ "privacy": "private",
116119
+ "description": "The keypad a phone shows, as React Aria's NumberField chooses it.\n`numeric` on Android has a minus key and a decimal separator, and\n`decimal` has no minus key. On an iPhone neither has a minus key, so a\nnumber that can be negative takes the full keyboard. Measured before\nthis: `decimal` with `min=\"-10\"`, so a phone could not type the minus.",
116120
+ "readonly": true
116121
+ },
115513
116122
  {
115514
116123
  "kind": "field",
115515
116124
  "name": "control",
@@ -115538,6 +116147,16 @@
115538
116147
  "privacy": "private",
115539
116148
  "description": "The grain last read off the format, with the locale and options it was read for."
115540
116149
  },
116150
+ {
116151
+ "kind": "field",
116152
+ "name": "stepSize",
116153
+ "type": {
116154
+ "text": "number"
116155
+ },
116156
+ "privacy": "private",
116157
+ "description": "The step as a number, or zero where it is unset or `any`.",
116158
+ "readonly": true
116159
+ },
115541
116160
  {
115542
116161
  "kind": "field",
115543
116162
  "name": "stride",
@@ -115555,7 +116174,7 @@
115555
116174
  "text": "number"
115556
116175
  },
115557
116176
  "privacy": "private",
115558
- "description": "The grid a typed number is rounded to: `step` where it is set, and\notherwise the smallest amount the format shows, or whole numbers.",
116177
+ "description": "The grid a typed number is rounded to: `step` where it is set, nothing\nwhere it is `any`, and otherwise the smallest amount the format shows.\nMeasured before this: with no step and no format, `2,75` typed in German\nbecame 3 on blur.",
115559
116178
  "readonly": true
115560
116179
  },
115561
116180
  {
@@ -115717,6 +116336,13 @@
115717
116336
  "readonly": true,
115718
116337
  "description": "A stepper button pressed with a pointer steps at once, and again while it\nis held.\n\nCaptured, so letting go outside the button still ends the hold. A click\nwith no press before it, from a screen reader or a script, steps once in\n`handleStepperClick`."
115719
116338
  },
116339
+ {
116340
+ "kind": "field",
116341
+ "name": "handleStepperMouseDown",
116342
+ "privacy": "private",
116343
+ "readonly": true,
116344
+ "description": "Keeps a pressed stepper from taking focus from the field."
116345
+ },
115720
116346
  {
115721
116347
  "kind": "field",
115722
116348
  "name": "stopRepeat",
@@ -117364,9 +117990,9 @@
117364
117990
  {
117365
117991
  "name": "step",
117366
117992
  "type": {
117367
- "text": "number | undefined"
117993
+ "text": "number | 'any' | undefined"
117368
117994
  },
117369
- "description": "How far one step moves. A value off the step grid, counted from `min`, is\ninvalid, as it is in a native number field.\n\nUnset, a step moves by one, or by one percent under a percent format, and\na typed number is rounded to the smallest amount `format-options` shows\nrather than to whole steps, as React Aria's NumberField does: a field\nshowing dollars keeps the cents typed into it. Without `format-options`\nthe grid is whole numbers, as in a native number field.",
117995
+ "description": "How far one step moves. A value off the step grid, counted from `min`, is\ninvalid, as it is in a native number field.\n\nUnset, a step moves by one, or by one percent under a percent format, and\na typed number is rounded to the smallest amount the format shows, as\nReact Aria's NumberField does: a field showing dollars keeps the cents\ntyped into it, and one with no `format-options` keeps three decimal\nplaces. `any` puts the number on no grid, as it does in a native number\nfield: a step moves by one, and any number in range is valid.",
117370
117996
  "fieldName": "step"
117371
117997
  },
117372
117998
  {
@@ -117526,6 +118152,14 @@
117526
118152
  }
117527
118153
  ],
117528
118154
  "cssStates": [
118155
+ {
118156
+ "description": "The number is at `max`, so it cannot step up, as React Aria's NumberField says with `canIncrement`.",
118157
+ "name": "at-max"
118158
+ },
118159
+ {
118160
+ "description": "The number is at `min`, so it cannot step down.",
118161
+ "name": "at-min"
118162
+ },
117529
118163
  {
117530
118164
  "description": "The control has an error to show, from the browser's validation or from your `feedback`.",
117531
118165
  "name": "invalid"
@@ -118301,6 +118935,28 @@
118301
118935
  },
118302
118936
  "description": "Says how many entries the filter matched, and nothing for an empty one."
118303
118937
  },
118938
+ {
118939
+ "kind": "method",
118940
+ "name": "focus",
118941
+ "return": {
118942
+ "type": {
118943
+ "text": "void"
118944
+ }
118945
+ },
118946
+ "parameters": [
118947
+ {
118948
+ "name": "options",
118949
+ "optional": true,
118950
+ "type": {
118951
+ "text": "FocusOptions"
118952
+ }
118953
+ }
118954
+ ],
118955
+ "description": "Moves focus to the row the keys move from, or to the tree while that row\nis scrolled out of the window, as Tab reaches them.",
118956
+ "type": {
118957
+ "text": "focus(options?: FocusOptions) => void"
118958
+ }
118959
+ },
118304
118960
  {
118305
118961
  "kind": "method",
118306
118962
  "name": "focusActive",
@@ -120117,6 +120773,21 @@
120117
120773
  }
120118
120774
  ]
120119
120775
  },
120776
+ {
120777
+ "kind": "javascript-module",
120778
+ "path": "src/option/root/index.ts",
120779
+ "declarations": [],
120780
+ "exports": [
120781
+ {
120782
+ "kind": "js",
120783
+ "name": "*",
120784
+ "declaration": {
120785
+ "name": "*",
120786
+ "module": "src/option/root/option-root.js"
120787
+ }
120788
+ }
120789
+ ]
120790
+ },
120120
120791
  {
120121
120792
  "kind": "javascript-module",
120122
120793
  "path": "src/option/root/option-root.ts",
@@ -150651,6 +151322,38 @@
150651
151322
  "description": "The index of the stage the reader is on, or `-1`.\n\nRead from `active` once anything has set it, because a move writes\n`active` at once and each step's `current` only on the next update: two\ncalls to `next()` in one task then move two stages.",
150652
151323
  "readonly": true
150653
151324
  },
151325
+ {
151326
+ "kind": "method",
151327
+ "name": "requestActive",
151328
+ "return": {
151329
+ "type": {
151330
+ "text": "boolean"
151331
+ }
151332
+ },
151333
+ "parameters": [
151334
+ {
151335
+ "name": "next",
151336
+ "type": {
151337
+ "text": "string"
151338
+ }
151339
+ },
151340
+ {
151341
+ "name": "cause",
151342
+ "optional": true,
151343
+ "type": {
151344
+ "text": "string"
151345
+ }
151346
+ }
151347
+ ],
151348
+ "description": "Requests a new current stage, and returns whether it moved.\n\nWhere only a step's `current` says where the reader is, `active` is first\nwritten with that step, so `helix-activate` names it as `previous`.",
151349
+ "inheritedFrom": {
151350
+ "name": "MixinControllerActive",
151351
+ "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
151352
+ },
151353
+ "type": {
151354
+ "text": "requestActive(next: string, cause?: string) => boolean"
151355
+ }
151356
+ },
150654
151357
  {
150655
151358
  "kind": "method",
150656
151359
  "name": "next",
@@ -150841,38 +151544,6 @@
150841
151544
  "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
150842
151545
  }
150843
151546
  },
150844
- {
150845
- "kind": "method",
150846
- "name": "requestActive",
150847
- "return": {
150848
- "type": {
150849
- "text": "boolean"
150850
- }
150851
- },
150852
- "parameters": [
150853
- {
150854
- "name": "next",
150855
- "type": {
150856
- "text": "string"
150857
- }
150858
- },
150859
- {
150860
- "name": "cause",
150861
- "optional": true,
150862
- "type": {
150863
- "text": "string"
150864
- }
150865
- }
150866
- ],
150867
- "description": "Requests a new current item, and returns whether the change was applied.\n\nAnnounces before it acts, so `preventDefault()` on the `helix-before-activate` is\na refusal and nothing moves. Unlike a native control, nothing has moved\nby the time this runs, so refusing is simply not writing: there is\nnothing to put back. Nobody refusing means the set updates itself,\nwhether or not a consumer declared `active`, a declared property being a\nseed and a correction. `cause` says why, where the family names its\ncauses, and reaches the event as `detail.cause`.",
150868
- "inheritedFrom": {
150869
- "name": "MixinControllerActive",
150870
- "module": "src/mixins/mixin-controller-active/mixin-controller-active.ts"
150871
- },
150872
- "type": {
150873
- "text": "requestActive(next: string, cause?: string) => boolean"
150874
- }
150875
- },
150876
151547
  {
150877
151548
  "kind": "method",
150878
151549
  "name": "announceActivated",
@@ -162129,6 +162800,21 @@
162129
162800
  }
162130
162801
  ]
162131
162802
  },
162803
+ {
162804
+ "kind": "javascript-module",
162805
+ "path": "src/tag/root/index.ts",
162806
+ "declarations": [],
162807
+ "exports": [
162808
+ {
162809
+ "kind": "js",
162810
+ "name": "*",
162811
+ "declaration": {
162812
+ "name": "*",
162813
+ "module": "src/tag/root/tag-root.js"
162814
+ }
162815
+ }
162816
+ ]
162817
+ },
162132
162818
  {
162133
162819
  "kind": "javascript-module",
162134
162820
  "path": "src/tag/root/tag-root.ts",
@@ -165945,7 +166631,7 @@
165945
166631
  "text": "readonly string[] | undefined"
165946
166632
  },
165947
166633
  "privacy": "protected",
165948
- "description": "Each time, where `mode` holds several, sent one entry each.\n\nOne time that is text and no time, such as `2:45 P`, is sent as an empty\nentry, as a native time field sends a time it cannot read.",
166634
+ "description": "Each time, where `mode` holds several, sent one entry each.\n\nText that is no time, such as `2:45 P`, is sent as one empty entry, as a\nnative time field sends a time it cannot read. Measured before this: a\nrange written `09:00/10:30` was invalid and submitted the text.",
165949
166635
  "readonly": true,
165950
166636
  "inheritedFrom": {
165951
166637
  "name": "MixinPickerField",
@@ -166454,6 +167140,81 @@
166454
167140
  "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
166455
167141
  }
166456
167142
  },
167143
+ {
167144
+ "kind": "method",
167145
+ "name": "edit",
167146
+ "privacy": "private",
167147
+ "return": {
167148
+ "type": {
167149
+ "text": "boolean"
167150
+ }
167151
+ },
167152
+ "parameters": [
167153
+ {
167154
+ "name": "element",
167155
+ "type": {
167156
+ "text": "HTMLElement"
167157
+ }
167158
+ },
167159
+ {
167160
+ "name": "key",
167161
+ "type": {
167162
+ "text": "string"
167163
+ }
167164
+ }
167165
+ ],
167166
+ "description": "Applies an editing key to the segment, the arrows, Backspace, a digit or\na letter, and says whether it edited anything.",
167167
+ "inheritedFrom": {
167168
+ "name": "MixinSegmentedField",
167169
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
167170
+ }
167171
+ },
167172
+ {
167173
+ "kind": "field",
167174
+ "name": "composing",
167175
+ "type": {
167176
+ "text": "[Node, string | null][]"
167177
+ },
167178
+ "privacy": "private",
167179
+ "default": "[]",
167180
+ "description": "What the segment's text was when a composition started to write into it.",
167181
+ "inheritedFrom": {
167182
+ "name": "MixinSegmentedField",
167183
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
167184
+ }
167185
+ },
167186
+ {
167187
+ "kind": "field",
167188
+ "name": "handleSegmentBeforeInput",
167189
+ "privacy": "private",
167190
+ "readonly": true,
167191
+ "description": "Text a touch keyboard writes into a segment, which arrives as input and\nnot as a key: an on-screen keyboard sends `Unidentified` for its keys,\nso a digit tapped on a phone is read here, as React Aria's segments read\nit. Every input is canceled, so the segment holds only what the field\ndraws in it.",
167192
+ "inheritedFrom": {
167193
+ "name": "MixinSegmentedField",
167194
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
167195
+ }
167196
+ },
167197
+ {
167198
+ "kind": "field",
167199
+ "name": "handleSegmentInput",
167200
+ "privacy": "private",
167201
+ "readonly": true,
167202
+ "inheritedFrom": {
167203
+ "name": "MixinSegmentedField",
167204
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
167205
+ }
167206
+ },
167207
+ {
167208
+ "kind": "field",
167209
+ "name": "collapseSelection",
167210
+ "privacy": "private",
167211
+ "readonly": true,
167212
+ "description": "Keeps the caret at the start of the segment with focus, where Chromium\nfires input for a typed key, and where Android's keyboard does not\ncompose over the segment's text. A selection already there, or outside\nthe segment, is left alone.",
167213
+ "inheritedFrom": {
167214
+ "name": "MixinSegmentedField",
167215
+ "module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
167216
+ }
167217
+ },
166457
167218
  {
166458
167219
  "kind": "field",
166459
167220
  "name": "handleSegmentKeydown",
@@ -186328,6 +187089,10 @@
186328
187089
  "description": "Shown while the items are loading.",
186329
187090
  "name": "menu-loading"
186330
187091
  },
187092
+ {
187093
+ "description": "The inner menu's filter field, drawn with `filterable`.",
187094
+ "name": "menu-search-field"
187095
+ },
186331
187096
  {
186332
187097
  "description": "The floating panel the menu is drawn on.",
186333
187098
  "name": "menu-surface"
@@ -188645,6 +189410,10 @@
188645
189410
  "description": "The text shown while the items are loading.",
188646
189411
  "name": "captions-menu-loading"
188647
189412
  },
189413
+ {
189414
+ "description": "The inner menu's filter field, drawn with `filterable`.",
189415
+ "name": "captions-menu-search-field"
189416
+ },
188648
189417
  {
188649
189418
  "description": "The floating panel the menu is drawn on.",
188650
189419
  "name": "captions-menu-surface"
@@ -188769,6 +189538,10 @@
188769
189538
  "description": "The text shown while the items are loading.",
188770
189539
  "name": "overflow-loading"
188771
189540
  },
189541
+ {
189542
+ "description": "The inner menu's filter field, drawn with `filterable`.",
189543
+ "name": "overflow-search-field"
189544
+ },
188772
189545
  {
188773
189546
  "description": "The floating panel the menu is drawn on.",
188774
189547
  "name": "overflow-surface"
@@ -193414,6 +194187,6 @@
193414
194187
  ],
193415
194188
  "helix": {
193416
194189
  "package": "@fusion.dev/helix-headless",
193417
- "version": "0.164.0"
194190
+ "version": "0.166.0"
193418
194191
  }
193419
194192
  }