@fusion.dev/helix-headless 0.158.0 → 0.160.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 +1925 -174
- package/dist/app-header/root/app-header-root.d.ts +59 -12
- package/dist/app-header/root/app-header-root.js +68 -29
- package/dist/button/root/button-root.d.ts +8 -0
- package/dist/button/root/button-root.js +4 -0
- package/dist/button-group/root/button-group-root.d.ts +20 -7
- package/dist/button-group/root/button-group-root.js +30 -5
- package/dist/date-input/root/date-input-root.d.ts +108 -19
- package/dist/date-input/root/date-input-root.js +112 -13
- package/dist/date-picker/root/date-picker-root.d.ts +81 -16
- package/dist/date-picker/root/date-picker-root.js +140 -36
- package/dist/element-events.generated.js +9 -1
- package/dist/format-date/fields.js +1 -0
- package/dist/format-date/options.d.ts +3 -1
- package/dist/format-date/options.js +4 -1
- package/dist/format-date/root/format-date-root.d.ts +27 -11
- package/dist/format-date/root/format-date-root.js +6 -0
- package/dist/lightbox/item/lightbox-item.d.ts +7 -1
- package/dist/lightbox/item/lightbox-item.js +15 -2
- package/dist/lightbox/root/lightbox-root.d.ts +8 -4
- package/dist/lightbox/root/lightbox-root.js +9 -1
- package/dist/lightbox/zoom-controller.d.ts +13 -4
- package/dist/lightbox/zoom-controller.js +17 -0
- package/dist/listbox/root/listbox-root.js +5 -0
- package/dist/notifications/notification/notification.d.ts +1 -0
- package/dist/notifications/notification/notification.js +2 -1
- package/dist/slider/root/slider-root.d.ts +54 -3
- package/dist/slider/root/slider-root.js +124 -2
- package/dist/steps/root/steps-root.js +8 -6
- package/dist/steps/step/step.d.ts +9 -0
- package/dist/steps/step/step.js +19 -2
- package/dist/tabs/panel/tab-panel.d.ts +22 -1
- package/dist/tabs/panel/tab-panel.js +22 -1
- package/dist/tabs/root/tabs-root.d.ts +21 -5
- package/dist/tabs/root/tabs-root.js +24 -13
- package/dist/tabs/tab/tab.d.ts +4 -2
- package/dist/tabs/tab/tab.js +3 -1
- package/dist/time-input/root/time-input-root.d.ts +55 -7
- package/dist/time-input/root/time-input-root.js +70 -10
- package/dist/time-picker/root/time-picker-root.d.ts +27 -5
- package/dist/time-picker/root/time-picker-root.js +52 -13
- package/dist/toast/item/toast-item.d.ts +27 -8
- package/dist/toast/item/toast-item.js +47 -11
- package/dist/toast/root/toast-root.d.ts +24 -1
- package/dist/toast/root/toast-root.js +54 -0
- package/dist/toggle/group/toggle-group.d.ts +18 -1
- package/dist/toggle/group/toggle-group.js +8 -2
- package/dist/toggle/root/toggle-root.d.ts +2 -2
- package/dist/toggle/root/toggle-root.js +2 -1
- package/dist/tour/root/tour-root.d.ts +34 -0
- package/dist/tour/root/tour-root.js +92 -3
- package/dist/tour/stop/tour-stop.d.ts +33 -1
- package/dist/tour/stop/tour-stop.js +12 -1
- package/lint.json +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +1119 -218
- package/types/vue.d.ts +278 -51
- package/types/words.d.ts +72 -0
package/custom-elements.json
CHANGED
|
@@ -2303,7 +2303,7 @@
|
|
|
2303
2303
|
"declarations": [
|
|
2304
2304
|
{
|
|
2305
2305
|
"kind": "class",
|
|
2306
|
-
"description": "Tracks whether the page has scrolled and sets the custom state `scrolled`, so\nthe styled tier can lift the bar without a scroll handler of its own. The\nstate is read when the element connects. A fresh load starts at the top,\nwhich matches the server markup, and a reload partway down the page is\ncorrected on hydration.\n\nThe element uses a custom state because an attribute such as `data-scrolled`,\nwritten onto its own host, is one the server did not send. A hydrating\nframework would report a mismatch whenever the page reloads far enough down.\n`ElementInternals.states` is not in the DOM, so hydration has nothing to\ncompare. Select the state with `:state(scrolled)`.\n\nThe page is the window unless `scroller` names the element that scrolls, for\nan app shell whose content scrolls inside a container.\n\n**Set `hide-on-scroll` for a bar that moves out of the way.** Scrolling down\npast the bar's own height hides it, and scrolling up shows it again, as does\nfocus moving into it. The custom state `hidden` is on the host while it is\nhidden, and the styled tier slides a `sticky` bar up out of view.\n\n**Set `fold-below` to fold the middle region on a narrow screen.** Below that\nmany pixels of the bar's own width, the middle region is hidden behind a\ntoggle at the end of the bar, named by `menu-label`. The toggle says whether
|
|
2306
|
+
"description": "Tracks whether the page has scrolled and sets the custom state `scrolled`, so\nthe styled tier can lift the bar without a scroll handler of its own. The\nstate is read when the element connects. A fresh load starts at the top,\nwhich matches the server markup, and a reload partway down the page is\ncorrected on hydration.\n\nThe element uses a custom state because an attribute such as `data-scrolled`,\nwritten onto its own host, is one the server did not send. A hydrating\nframework would report a mismatch whenever the page reloads far enough down.\n`ElementInternals.states` is not in the DOM, so hydration has nothing to\ncompare. Select the state with `:state(scrolled)`.\n\nThe page is the window unless `scroller` names the element that scrolls, for\nan app shell whose content scrolls inside a container.\n\n**Set `hide-on-scroll` for a bar that moves out of the way.** Scrolling down\npast the bar's own height hides it, and scrolling up shows it again, as does\nfocus moving into it. The custom state `hidden` is on the host while it is\nhidden, and the styled tier slides a `sticky` bar up out of view.\n\n**Set `fold-below` to fold the middle region on a narrow screen.** Below that\nmany pixels of the bar's own width, the middle region is hidden behind a\ntoggle at the end of the bar, named by `menu-label`, or at its start with\n`toggle-placement=\"start\"`. The toggle says whether the region is open with\n`aria-expanded`, and the region opens below the row. The region follows the\ntoggle's region in focus order, so Tab from the toggle at the end goes into\nthe open region. The custom state `folded` is on the host while the bar is\nthat narrow, and `open` while the folded region is open. A server serves the\nbar unfolded, and the browser folds it once it has measured it.\n\n**`open` says whether the folded region is open, and setting it opens or\ncloses the region.** `requestOpen(true)` and `requestOpen(false)` do the same\nand send `helix-before-open` or `helix-before-close` first, which you can\ncancel, and `toggleOpen()` asks for the opposite. `toggle` follows every\nchange. The region closes on Escape, which puts focus back on the toggle,\nwhen focus moves to something outside the header, and on a press outside\nit. A bar that widens past `fold-below` closes its region.\n\nThe host is the page's `banner` landmark. Placed inside `main`, `article`,\n`aside`, `nav` or `section`, it is a plain box instead, as a native\n`<header>` is there, so a header inside a card or a pane does not add a\nsecond banner. The ancestors are read as the accessibility tree reads them,\nthrough the slots that take the header in, so one slotted into a component\nthat draws a `<nav>`, such as `Navigation`, is not a banner either. A server\ncannot see the ancestors, so it serves the banner and the browser corrects\nit when the element connects.",
|
|
2307
2307
|
"name": "HelixHeadlessAppHeader",
|
|
2308
2308
|
"cssParts": [
|
|
2309
2309
|
{
|
|
@@ -2389,6 +2389,19 @@
|
|
|
2389
2389
|
"description": "Hides the bar as the page scrolls down past it, and shows it again as the\npage scrolls up.",
|
|
2390
2390
|
"attribute": "hide-on-scroll"
|
|
2391
2391
|
},
|
|
2392
|
+
{
|
|
2393
|
+
"kind": "field",
|
|
2394
|
+
"name": "menuLabel",
|
|
2395
|
+
"type": {
|
|
2396
|
+
"text": "string"
|
|
2397
|
+
},
|
|
2398
|
+
"default": "'Menu'",
|
|
2399
|
+
"description": "The name of the toggle that opens a folded middle region.",
|
|
2400
|
+
"attribute": "menu-label",
|
|
2401
|
+
"helix": {
|
|
2402
|
+
"words": true
|
|
2403
|
+
}
|
|
2404
|
+
},
|
|
2392
2405
|
{
|
|
2393
2406
|
"kind": "field",
|
|
2394
2407
|
"name": "folded",
|
|
@@ -2406,8 +2419,8 @@
|
|
|
2406
2419
|
"text": "boolean"
|
|
2407
2420
|
},
|
|
2408
2421
|
"privacy": "private",
|
|
2409
|
-
"
|
|
2410
|
-
"
|
|
2422
|
+
"description": "Whether the folded middle region is open and showing.",
|
|
2423
|
+
"readonly": true
|
|
2411
2424
|
},
|
|
2412
2425
|
{
|
|
2413
2426
|
"kind": "field",
|
|
@@ -2446,7 +2459,7 @@
|
|
|
2446
2459
|
}
|
|
2447
2460
|
}
|
|
2448
2461
|
],
|
|
2449
|
-
"description": "Folds the middle region where the bar is narrower than `fold-below`."
|
|
2462
|
+
"description": "Folds the middle region where the bar is narrower than `fold-below`. A bar\nthat widens closes its region, so it starts closed when it folds again;\none that narrows keeps an `open` you set."
|
|
2450
2463
|
},
|
|
2451
2464
|
{
|
|
2452
2465
|
"kind": "field",
|
|
@@ -2462,6 +2475,41 @@
|
|
|
2462
2475
|
"readonly": true,
|
|
2463
2476
|
"description": "Escape in the open region closes it and puts focus back on the toggle."
|
|
2464
2477
|
},
|
|
2478
|
+
{
|
|
2479
|
+
"kind": "field",
|
|
2480
|
+
"name": "handleFocusOut",
|
|
2481
|
+
"privacy": "private",
|
|
2482
|
+
"readonly": true,
|
|
2483
|
+
"description": "Closes the open region when focus moves to something outside the header.\nFocus leaving the window has no `relatedTarget`, and closes nothing."
|
|
2484
|
+
},
|
|
2485
|
+
{
|
|
2486
|
+
"kind": "field",
|
|
2487
|
+
"name": "handleOutsidePress",
|
|
2488
|
+
"privacy": "private",
|
|
2489
|
+
"readonly": true,
|
|
2490
|
+
"description": "Closes the open region on a press outside the header."
|
|
2491
|
+
},
|
|
2492
|
+
{
|
|
2493
|
+
"kind": "field",
|
|
2494
|
+
"name": "pressing",
|
|
2495
|
+
"type": {
|
|
2496
|
+
"text": "boolean"
|
|
2497
|
+
},
|
|
2498
|
+
"privacy": "private",
|
|
2499
|
+
"default": "false",
|
|
2500
|
+
"description": "Whether the outside press is listened for, which is while the region is open."
|
|
2501
|
+
},
|
|
2502
|
+
{
|
|
2503
|
+
"kind": "method",
|
|
2504
|
+
"name": "watchPresses",
|
|
2505
|
+
"privacy": "private",
|
|
2506
|
+
"return": {
|
|
2507
|
+
"type": {
|
|
2508
|
+
"text": "void"
|
|
2509
|
+
}
|
|
2510
|
+
},
|
|
2511
|
+
"description": "Listens for a press outside while the folded region is open, and only then."
|
|
2512
|
+
},
|
|
2465
2513
|
{
|
|
2466
2514
|
"kind": "field",
|
|
2467
2515
|
"name": "away",
|
|
@@ -2529,25 +2577,22 @@
|
|
|
2529
2577
|
},
|
|
2530
2578
|
{
|
|
2531
2579
|
"kind": "field",
|
|
2532
|
-
"name": "
|
|
2580
|
+
"name": "scroller",
|
|
2533
2581
|
"type": {
|
|
2534
|
-
"text": "string"
|
|
2582
|
+
"text": "string | undefined"
|
|
2535
2583
|
},
|
|
2536
|
-
"
|
|
2537
|
-
"
|
|
2538
|
-
"attribute": "menu-label",
|
|
2539
|
-
"helix": {
|
|
2540
|
-
"words": true
|
|
2541
|
-
}
|
|
2584
|
+
"description": "The id of the element whose scrolling lifts the bar, for an app shell that\nscrolls a container instead of the window. Unset is the window.",
|
|
2585
|
+
"attribute": "scroller"
|
|
2542
2586
|
},
|
|
2543
2587
|
{
|
|
2544
2588
|
"kind": "field",
|
|
2545
|
-
"name": "
|
|
2589
|
+
"name": "togglePlacement",
|
|
2546
2590
|
"type": {
|
|
2547
|
-
"text": "
|
|
2591
|
+
"text": "'start' | undefined"
|
|
2548
2592
|
},
|
|
2549
|
-
"description": "
|
|
2550
|
-
"attribute": "
|
|
2593
|
+
"description": "Where the toggle that opens a folded middle region sits: at the end of the\nbar, after the trailing content, or with `start`, before the leading\ncontent.\n\nOptional, so the resting bar writes no attribute onto the host.",
|
|
2594
|
+
"attribute": "toggle-placement",
|
|
2595
|
+
"reflects": true
|
|
2551
2596
|
},
|
|
2552
2597
|
{
|
|
2553
2598
|
"kind": "field",
|
|
@@ -2636,6 +2681,126 @@
|
|
|
2636
2681
|
},
|
|
2637
2682
|
"description": "The glyph on the toggle that opens a folded middle region, behind a seam:\nslot fallback, so a consumer replaces it by slotting, and a method, so a\ntier above replaces it by overriding."
|
|
2638
2683
|
},
|
|
2684
|
+
{
|
|
2685
|
+
"kind": "field",
|
|
2686
|
+
"name": "defaultOpen",
|
|
2687
|
+
"type": {
|
|
2688
|
+
"text": "boolean"
|
|
2689
|
+
},
|
|
2690
|
+
"default": "false",
|
|
2691
|
+
"description": "Whether the element starts open. Ignored once `open` is written.",
|
|
2692
|
+
"attribute": "default-open",
|
|
2693
|
+
"inheritedFrom": {
|
|
2694
|
+
"name": "MixinControllerOpen",
|
|
2695
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
2696
|
+
}
|
|
2697
|
+
},
|
|
2698
|
+
{
|
|
2699
|
+
"kind": "field",
|
|
2700
|
+
"name": "open",
|
|
2701
|
+
"type": {
|
|
2702
|
+
"text": "boolean"
|
|
2703
|
+
},
|
|
2704
|
+
"description": "Whether the element is open.\n\nOne property, not two, so `dialog.open` answers the question anyone\nasking it meant. Writing always applies; `<helix-dialog open>` is the\nsame statement in markup.\n\n**Not reflected, and that is required rather than tidy.** Reflection\nwrites the resolved state back as an attribute, so an element that opened\nitself would put `open` on its own host: cloned, serialized for\nhydration, or diffed by a framework, it comes back holding whatever the\nlast reader did rather than what the author wrote. `:state(open)` carries\nthe resolved state for stylesheets, which is what the mirror is for.",
|
|
2705
|
+
"attribute": "open",
|
|
2706
|
+
"inheritedFrom": {
|
|
2707
|
+
"name": "MixinControllerOpen",
|
|
2708
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
2709
|
+
}
|
|
2710
|
+
},
|
|
2711
|
+
{
|
|
2712
|
+
"kind": "field",
|
|
2713
|
+
"name": "openState",
|
|
2714
|
+
"type": {
|
|
2715
|
+
"text": "boolean | undefined"
|
|
2716
|
+
},
|
|
2717
|
+
"privacy": "private",
|
|
2718
|
+
"default": "undefined",
|
|
2719
|
+
"description": "The state, whoever set it, and `undefined` until somebody has.\n\nPrefixed, and it has to be. These mixins compose onto one prototype\nchain, `Select` takes this one and `MixinControllerValue` together, and\nTypeScript's `private` is a compile-time fiction: two mixins with a field\ncalled `state` share one property on the instance, and the second one\nsilently overwrites the first. Measured, as a select whose `value` came\nback holding its `open` boolean.\n\nOne field and not two. Writing always applies, the way a native control\ndoes when a script assigns to it.",
|
|
2720
|
+
"inheritedFrom": {
|
|
2721
|
+
"name": "MixinControllerOpen",
|
|
2722
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
2723
|
+
}
|
|
2724
|
+
},
|
|
2725
|
+
{
|
|
2726
|
+
"kind": "field",
|
|
2727
|
+
"name": "announcedOpen",
|
|
2728
|
+
"type": {
|
|
2729
|
+
"text": "boolean | undefined"
|
|
2730
|
+
},
|
|
2731
|
+
"privacy": "private",
|
|
2732
|
+
"default": "undefined",
|
|
2733
|
+
"description": "The state `toggle` last reported, and `undefined` before the first update.\n\n`requestOpen` announces at once. An assignment to `open` announces here,\nonce it has rendered, so a consumer binding `toggle` hears every change\nthat a `close` listener on a dialog hears. The first update sets it and\nannounces nothing, because a seed is where the element starts.",
|
|
2734
|
+
"inheritedFrom": {
|
|
2735
|
+
"name": "MixinControllerOpen",
|
|
2736
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
2737
|
+
}
|
|
2738
|
+
},
|
|
2739
|
+
{
|
|
2740
|
+
"kind": "method",
|
|
2741
|
+
"name": "requestOpen",
|
|
2742
|
+
"return": {
|
|
2743
|
+
"type": {
|
|
2744
|
+
"text": "boolean"
|
|
2745
|
+
}
|
|
2746
|
+
},
|
|
2747
|
+
"parameters": [
|
|
2748
|
+
{
|
|
2749
|
+
"name": "next",
|
|
2750
|
+
"type": {
|
|
2751
|
+
"text": "boolean"
|
|
2752
|
+
}
|
|
2753
|
+
}
|
|
2754
|
+
],
|
|
2755
|
+
"description": "Requests that the element open or close, and returns whether the change\nwas applied.\n\nAnnounces before it acts, so `preventDefault()` on the `helix-before-open` or\n`helix-before-close` is a refusal and nothing moves. Nobody refusing means the\nelement opens or closes itself, whether or not a consumer declared\n`open`: a declared property is a seed and a correction, and a consumer\nwho wants the decision for themselves refuses it and assigns their own.",
|
|
2756
|
+
"inheritedFrom": {
|
|
2757
|
+
"name": "MixinControllerOpen",
|
|
2758
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
2759
|
+
},
|
|
2760
|
+
"type": {
|
|
2761
|
+
"text": "requestOpen(next: boolean) => boolean"
|
|
2762
|
+
}
|
|
2763
|
+
},
|
|
2764
|
+
{
|
|
2765
|
+
"kind": "method",
|
|
2766
|
+
"name": "announceToggle",
|
|
2767
|
+
"privacy": "private",
|
|
2768
|
+
"return": {
|
|
2769
|
+
"type": {
|
|
2770
|
+
"text": "void"
|
|
2771
|
+
}
|
|
2772
|
+
},
|
|
2773
|
+
"parameters": [
|
|
2774
|
+
{
|
|
2775
|
+
"name": "open",
|
|
2776
|
+
"type": {
|
|
2777
|
+
"text": "boolean"
|
|
2778
|
+
}
|
|
2779
|
+
}
|
|
2780
|
+
],
|
|
2781
|
+
"description": "Says the state moved, under the platform's own name and in its shape.\n\n**A native `toggle` from inside a shadow root reaches nobody**, because\nit neither bubbles nor composes, so the ten families showing a\n`popover=\"manual\"` panel and the two rendering a real `<dialog>` announce\nnothing to a consumer. The disclosures have no native element to fire\nanything at all: `AccordionItem` and `TreeItem` are `aria-expanded` and\n`hidden` written by hand, which is `<details>`'s job done manually.\n\n**From here rather than from `PopoverController`.** The controller covers\neleven families and the mixin covers sixteen, so announcing from both\nwould announce twice on the ten they share. What `toggle` reports is the\n*state*, and the state is this mixin's; the controller is a way of\nputting a panel on the screen.\n\n**`newState` and `oldState`, because that is the platform's shape**, so a\nconsumer arriving from `<details>` reads the same two words. Not\ncancelable: the before events are the request, and a second cancelable\nevent for one transition is two answers to one question.",
|
|
2782
|
+
"inheritedFrom": {
|
|
2783
|
+
"name": "MixinControllerOpen",
|
|
2784
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
2785
|
+
}
|
|
2786
|
+
},
|
|
2787
|
+
{
|
|
2788
|
+
"kind": "method",
|
|
2789
|
+
"name": "toggleOpen",
|
|
2790
|
+
"return": {
|
|
2791
|
+
"type": {
|
|
2792
|
+
"text": "boolean"
|
|
2793
|
+
}
|
|
2794
|
+
},
|
|
2795
|
+
"description": "Requests the opposite of the current state.",
|
|
2796
|
+
"inheritedFrom": {
|
|
2797
|
+
"name": "MixinControllerOpen",
|
|
2798
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
2799
|
+
},
|
|
2800
|
+
"type": {
|
|
2801
|
+
"text": "toggleOpen() => boolean"
|
|
2802
|
+
}
|
|
2803
|
+
},
|
|
2639
2804
|
{
|
|
2640
2805
|
"kind": "field",
|
|
2641
2806
|
"name": "tier",
|
|
@@ -2977,6 +3142,22 @@
|
|
|
2977
3142
|
}
|
|
2978
3143
|
],
|
|
2979
3144
|
"events": [
|
|
3145
|
+
{
|
|
3146
|
+
"type": {
|
|
3147
|
+
"text": "HelixBeforeCloseEvent"
|
|
3148
|
+
},
|
|
3149
|
+
"description": "The folded region is about to close. Cancelable: cancel it to keep it open.",
|
|
3150
|
+
"name": "helix-before-close",
|
|
3151
|
+
"reactProp": "onhelix-before-close"
|
|
3152
|
+
},
|
|
3153
|
+
{
|
|
3154
|
+
"type": {
|
|
3155
|
+
"text": "HelixBeforeOpenEvent"
|
|
3156
|
+
},
|
|
3157
|
+
"description": "The folded region is about to open. Cancelable: cancel it to keep it closed.",
|
|
3158
|
+
"name": "helix-before-open",
|
|
3159
|
+
"reactProp": "onhelix-before-open"
|
|
3160
|
+
},
|
|
2980
3161
|
{
|
|
2981
3162
|
"type": {
|
|
2982
3163
|
"text": "HelixScrolledEvent"
|
|
@@ -2984,6 +3165,18 @@
|
|
|
2984
3165
|
"description": "Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener.",
|
|
2985
3166
|
"name": "helix-scrolled",
|
|
2986
3167
|
"reactProp": "onhelix-scrolled"
|
|
3168
|
+
},
|
|
3169
|
+
{
|
|
3170
|
+
"name": "toggle",
|
|
3171
|
+
"type": {
|
|
3172
|
+
"text": "ToggleEvent"
|
|
3173
|
+
},
|
|
3174
|
+
"description": "The folded region opened or closed. The event carries `newState` and `oldState`.",
|
|
3175
|
+
"inheritedFrom": {
|
|
3176
|
+
"name": "MixinControllerOpen",
|
|
3177
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
3178
|
+
},
|
|
3179
|
+
"reactProp": "ontoggle"
|
|
2987
3180
|
}
|
|
2988
3181
|
],
|
|
2989
3182
|
"attributes": [
|
|
@@ -3028,6 +3221,39 @@
|
|
|
3028
3221
|
},
|
|
3029
3222
|
"description": "The id of the element whose scrolling lifts the bar, for an app shell that\nscrolls a container instead of the window. Unset is the window.",
|
|
3030
3223
|
"fieldName": "scroller"
|
|
3224
|
+
},
|
|
3225
|
+
{
|
|
3226
|
+
"name": "toggle-placement",
|
|
3227
|
+
"type": {
|
|
3228
|
+
"text": "'start' | undefined"
|
|
3229
|
+
},
|
|
3230
|
+
"description": "Where the toggle that opens a folded middle region sits: at the end of the\nbar, after the trailing content, or with `start`, before the leading\ncontent.\n\nOptional, so the resting bar writes no attribute onto the host.",
|
|
3231
|
+
"fieldName": "togglePlacement"
|
|
3232
|
+
},
|
|
3233
|
+
{
|
|
3234
|
+
"name": "default-open",
|
|
3235
|
+
"type": {
|
|
3236
|
+
"text": "boolean"
|
|
3237
|
+
},
|
|
3238
|
+
"default": "false",
|
|
3239
|
+
"description": "Whether the element starts open. Ignored once `open` is written.",
|
|
3240
|
+
"fieldName": "defaultOpen",
|
|
3241
|
+
"inheritedFrom": {
|
|
3242
|
+
"name": "MixinControllerOpen",
|
|
3243
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
3244
|
+
}
|
|
3245
|
+
},
|
|
3246
|
+
{
|
|
3247
|
+
"name": "open",
|
|
3248
|
+
"type": {
|
|
3249
|
+
"text": "boolean"
|
|
3250
|
+
},
|
|
3251
|
+
"description": "Whether the element is open.\n\nOne property, not two, so `dialog.open` answers the question anyone\nasking it meant. Writing always applies; `<helix-dialog open>` is the\nsame statement in markup.\n\n**Not reflected, and that is required rather than tidy.** Reflection\nwrites the resolved state back as an attribute, so an element that opened\nitself would put `open` on its own host: cloned, serialized for\nhydration, or diffed by a framework, it comes back holding whatever the\nlast reader did rather than what the author wrote. `:state(open)` carries\nthe resolved state for stylesheets, which is what the mirror is for.",
|
|
3252
|
+
"fieldName": "open",
|
|
3253
|
+
"inheritedFrom": {
|
|
3254
|
+
"name": "MixinControllerOpen",
|
|
3255
|
+
"module": "src/mixins/mixin-controller-open/mixin-controller-open.ts"
|
|
3256
|
+
}
|
|
3031
3257
|
}
|
|
3032
3258
|
],
|
|
3033
3259
|
"cssStates": [
|
|
@@ -3056,6 +3282,12 @@
|
|
|
3056
3282
|
}
|
|
3057
3283
|
}
|
|
3058
3284
|
],
|
|
3285
|
+
"mixins": [
|
|
3286
|
+
{
|
|
3287
|
+
"name": "MixinControllerOpen",
|
|
3288
|
+
"package": "@fusion.dev/helix-core"
|
|
3289
|
+
}
|
|
3290
|
+
],
|
|
3059
3291
|
"superclass": {
|
|
3060
3292
|
"name": "HelixElement",
|
|
3061
3293
|
"package": "@fusion.dev/helix-core"
|
|
@@ -10275,7 +10507,7 @@
|
|
|
10275
10507
|
"declarations": [
|
|
10276
10508
|
{
|
|
10277
10509
|
"kind": "class",
|
|
10278
|
-
"description": "Sets `role=\"group\"` on the host through internals, and `label` names the\ngroup. Without a name, a screen reader announces the buttons as separate\ncontrols, and a development build warns once with the kind `missing-name`.\n\nThe group does not manage focus, so each button keeps its own tab stop. For\none tab stop with arrow keys between a mix of controls, the APG toolbar\npattern, use Toolbar.\n\nButtons are slotted, so they stay your own elements and keep their own\nappearance and size.\n\n**Buttons that stay pressed.** With `selection-mode`, each button with a\n`value` is a toggle button: a press presses or releases it, and
|
|
10510
|
+
"description": "Sets `role=\"group\"` on the host through internals, and `label` names the\ngroup. Without a name, a screen reader announces the buttons as separate\ncontrols, and a development build warns once with the kind `missing-name`.\n\nThe group does not manage focus, so each button keeps its own tab stop. For\none tab stop with arrow keys between a mix of controls, the APG toolbar\npattern, use Toolbar.\n\nButtons are slotted, so they stay your own elements and keep their own\nappearance and size.\n\n**Buttons that stay pressed.** With `selection-mode`, each button with a\n`value` is a toggle button: a press presses or releases it. `multiple` lets\nany number be pressed, and each button says so with `aria-pressed`. `single`\nkeeps one pressed at a time: the group is a `radiogroup` and each button a\n`radio` that says so with `aria-checked`, as React Aria's toggle button\ngroup is. A press on the pressed one releases it, unless\n`disallow-empty-selection` keeps one pressed. `value` is the pressed values,\ncomma separated. A press sends a cancelable `helix-before-change` with the\nvalue it would leave, then `change`. A pressed Helix button has\n`:state(pressed)` on its own element.\n\nThe pressed state is written on the control inside each button's shadow\nroot, so the markup you rendered is never changed and a framework hydrating\nit sees what its server sent. That is also why only Helix buttons are\ntoggles: a native `<button>` or a button without a `value` stays a plain\naction button in the group, and a native one without its own\n`aria-pressed` warns once, with the runtime kind `untold-toggle`. The inner\ncontrol also carries\n`--button-group-pressed`, `1` or `0`, for a `::part(button)` rule of yours.\n\nUse Toggle Group instead for a choice that belongs in a form, or one where\nthe arrow keys choose as they move: it is a `radiogroup` of options with a\nform value, `required` and validation. A Button Group in a selection mode is\na set of actions that stay on, such as bold and italic, or a view that a\npress switches, and it submits nothing.\n\n**Keyboard.** In a selection mode the group is one tab stop: the button\nfocus was last on, then the first pressed one, then the first one.\n\n| Key | What it does |\n|---|---|\n| Right, Down | Moves to the next button, from the last back to the first. |\n| Left, Up | Moves to the button before, from the first round to the last. |\n| Home, End | Moves to the first or the last button. |\n| Space, Enter | Presses or releases the focused button. |\n\nLeft and Right swap on a right-to-left page, and a disabled button is\npassed over. Under `multiple` the group is a `toolbar`, with\n`aria-orientation` under `orientation=\"vertical\"`. Inside a toolbar it stays\na named `group`, and the toolbar's own arrow keys walk its buttons, so a\nreader meets one toolbar. Under `single` it is a `radiogroup` either way.",
|
|
10279
10511
|
"name": "HelixHeadlessButtonGroup",
|
|
10280
10512
|
"cssProperties": [
|
|
10281
10513
|
{
|
|
@@ -10290,6 +10522,16 @@
|
|
|
10290
10522
|
}
|
|
10291
10523
|
],
|
|
10292
10524
|
"members": [
|
|
10525
|
+
{
|
|
10526
|
+
"kind": "field",
|
|
10527
|
+
"name": "disallowEmptySelection",
|
|
10528
|
+
"type": {
|
|
10529
|
+
"text": "boolean"
|
|
10530
|
+
},
|
|
10531
|
+
"default": "false",
|
|
10532
|
+
"description": "Keeps at least one button pressed once one is, as React Aria's\n`disallowEmptySelection`: a press that would leave none pressed is\nrefused.",
|
|
10533
|
+
"attribute": "disallow-empty-selection"
|
|
10534
|
+
},
|
|
10293
10535
|
{
|
|
10294
10536
|
"kind": "field",
|
|
10295
10537
|
"name": "label",
|
|
@@ -10479,7 +10721,7 @@
|
|
|
10479
10721
|
"description": "Whether the button is pressed, or undefined where it is not a toggle."
|
|
10480
10722
|
}
|
|
10481
10723
|
],
|
|
10482
|
-
"description": "Says on a button's control whether it is pressed, or that it is no toggle\nat all where `pressed` is undefined. A styled tier draws the look here
|
|
10724
|
+
"description": "Says on a button's control whether it is pressed, or that it is no toggle\nat all where `pressed` is undefined. A styled tier draws the look here.\n\nUnder `single` the control is a `radio` that says so with `aria-checked`,\nand under `multiple` a toggle button that says so with `aria-pressed`."
|
|
10483
10725
|
},
|
|
10484
10726
|
{
|
|
10485
10727
|
"kind": "field",
|
|
@@ -10861,6 +11103,15 @@
|
|
|
10861
11103
|
}
|
|
10862
11104
|
],
|
|
10863
11105
|
"attributes": [
|
|
11106
|
+
{
|
|
11107
|
+
"name": "disallow-empty-selection",
|
|
11108
|
+
"type": {
|
|
11109
|
+
"text": "boolean"
|
|
11110
|
+
},
|
|
11111
|
+
"default": "false",
|
|
11112
|
+
"description": "Keeps at least one button pressed once one is, as React Aria's\n`disallowEmptySelection`: a press that would leave none pressed is\nrefused.",
|
|
11113
|
+
"fieldName": "disallowEmptySelection"
|
|
11114
|
+
},
|
|
10864
11115
|
{
|
|
10865
11116
|
"name": "label",
|
|
10866
11117
|
"type": {
|
|
@@ -12343,6 +12594,10 @@
|
|
|
12343
12594
|
"description": "The button is pending: `pending` is set.",
|
|
12344
12595
|
"name": "pending"
|
|
12345
12596
|
},
|
|
12597
|
+
{
|
|
12598
|
+
"description": "A Button Group in a selection mode has this button pressed.",
|
|
12599
|
+
"name": "pressed"
|
|
12600
|
+
},
|
|
12346
12601
|
{
|
|
12347
12602
|
"description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
|
|
12348
12603
|
"name": "settled",
|
|
@@ -35523,6 +35778,20 @@
|
|
|
35523
35778
|
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
35524
35779
|
}
|
|
35525
35780
|
},
|
|
35781
|
+
{
|
|
35782
|
+
"kind": "field",
|
|
35783
|
+
"name": "touched",
|
|
35784
|
+
"type": {
|
|
35785
|
+
"text": "boolean"
|
|
35786
|
+
},
|
|
35787
|
+
"privacy": "private",
|
|
35788
|
+
"default": "false",
|
|
35789
|
+
"description": "Whether the reader has committed an answer, or a form has refused the\npicker. A reset forgets it.",
|
|
35790
|
+
"inheritedFrom": {
|
|
35791
|
+
"name": "MixinPickerFeedback",
|
|
35792
|
+
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
35793
|
+
}
|
|
35794
|
+
},
|
|
35526
35795
|
{
|
|
35527
35796
|
"kind": "field",
|
|
35528
35797
|
"name": "marked",
|
|
@@ -35530,13 +35799,44 @@
|
|
|
35530
35799
|
"text": "boolean"
|
|
35531
35800
|
},
|
|
35532
35801
|
"privacy": "protected",
|
|
35533
|
-
"description": "Whether a reader is told the answer is wrong: `invalid`, or `
|
|
35802
|
+
"description": "Whether a reader is told the answer is wrong: `invalid`, `feedback`, a\nheld answer the picker refuses, or a missing answer once the reader has\ncommitted one or a form has refused the picker.\n\n**A refused answer is marked at once, and a missing one waits**, as\nChromium's tree does for native controls: a time input holding a time\npast its `max` reports invalid on load, and an empty required text field\ndoes not, since the reader already hears that it is required. Measured\nbefore this on Time Picker: `value=\"13:00\" max=\"12:00\"` reported\n`rangeOverflow` while the list said nothing and `:state(invalid)` was off.",
|
|
35534
35803
|
"readonly": true,
|
|
35535
35804
|
"inheritedFrom": {
|
|
35536
35805
|
"name": "MixinPickerFeedback",
|
|
35537
35806
|
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
35538
35807
|
}
|
|
35539
35808
|
},
|
|
35809
|
+
{
|
|
35810
|
+
"kind": "field",
|
|
35811
|
+
"name": "failure",
|
|
35812
|
+
"type": {
|
|
35813
|
+
"text": "'missing' | 'refused' | undefined"
|
|
35814
|
+
},
|
|
35815
|
+
"privacy": "protected",
|
|
35816
|
+
"description": "What the picker's own validation finds: `missing`, `refused`, or\nnothing, which is what a picker that does not answer it reports.",
|
|
35817
|
+
"readonly": true,
|
|
35818
|
+
"inheritedFrom": {
|
|
35819
|
+
"name": "MixinPickerFeedback",
|
|
35820
|
+
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
35821
|
+
}
|
|
35822
|
+
},
|
|
35823
|
+
{
|
|
35824
|
+
"kind": "method",
|
|
35825
|
+
"name": "formResetCallback",
|
|
35826
|
+
"return": {
|
|
35827
|
+
"type": {
|
|
35828
|
+
"text": "void"
|
|
35829
|
+
}
|
|
35830
|
+
},
|
|
35831
|
+
"description": "Returns the control to its `defaultValue`, or to its `value` attribute\nwhere there is no `default-value`.\n\nBoth halves are dropped, the consumer's and the control's, because a\nreset means the form is as it was served. Clearing only the internal one\nwould leave a control that had been written to stuck at that value.",
|
|
35832
|
+
"inheritedFrom": {
|
|
35833
|
+
"name": "HelixFormElement",
|
|
35834
|
+
"module": "src/helix-form-element/helix-form-element.ts"
|
|
35835
|
+
},
|
|
35836
|
+
"type": {
|
|
35837
|
+
"text": "formResetCallback() => void"
|
|
35838
|
+
}
|
|
35839
|
+
},
|
|
35540
35840
|
{
|
|
35541
35841
|
"kind": "method",
|
|
35542
35842
|
"name": "renderPickerFeedback",
|
|
@@ -35622,23 +35922,6 @@
|
|
|
35622
35922
|
"module": "src/mixins/mixin-controller-value/mixin-controller-value.ts"
|
|
35623
35923
|
}
|
|
35624
35924
|
},
|
|
35625
|
-
{
|
|
35626
|
-
"kind": "method",
|
|
35627
|
-
"name": "formResetCallback",
|
|
35628
|
-
"return": {
|
|
35629
|
-
"type": {
|
|
35630
|
-
"text": "void"
|
|
35631
|
-
}
|
|
35632
|
-
},
|
|
35633
|
-
"description": "Returns the control to its `defaultValue`, or to its `value` attribute\nwhere there is no `default-value`.\n\nBoth halves are dropped, the consumer's and the control's, because a\nreset means the form is as it was served. Clearing only the internal one\nwould leave a control that had been written to stuck at that value.",
|
|
35634
|
-
"inheritedFrom": {
|
|
35635
|
-
"name": "HelixFormElement",
|
|
35636
|
-
"module": "src/helix-form-element/helix-form-element.ts"
|
|
35637
|
-
},
|
|
35638
|
-
"type": {
|
|
35639
|
-
"text": "formResetCallback() => void"
|
|
35640
|
-
}
|
|
35641
|
-
},
|
|
35642
35925
|
{
|
|
35643
35926
|
"kind": "method",
|
|
35644
35927
|
"name": "formStateRestoreCallback",
|
|
@@ -43308,6 +43591,14 @@
|
|
|
43308
43591
|
"module": "src/button/root/button-root.ts"
|
|
43309
43592
|
}
|
|
43310
43593
|
},
|
|
43594
|
+
{
|
|
43595
|
+
"description": "A Button Group in a selection mode has this button pressed.",
|
|
43596
|
+
"name": "pressed",
|
|
43597
|
+
"inheritedFrom": {
|
|
43598
|
+
"name": "HelixHeadlessButton",
|
|
43599
|
+
"module": "src/button/root/button-root.ts"
|
|
43600
|
+
}
|
|
43601
|
+
},
|
|
43311
43602
|
{
|
|
43312
43603
|
"description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
|
|
43313
43604
|
"name": "settled",
|
|
@@ -47567,9 +47858,13 @@
|
|
|
47567
47858
|
"declarations": [
|
|
47568
47859
|
{
|
|
47569
47860
|
"kind": "class",
|
|
47570
|
-
"description": "The calendar is `DatePicker`, which handles months, ranges, disabled days,\nthe first day of the week, and the grid's keyboard behavior. The date input\nadds the field, the overlay, and the connection between them.\n\nYou can type a date as well as pick one. The native `<input type=\"date\">`\ngives a picker and locale formatting but allows almost no styling, so the\nfield is a text field. Typing sends `input` on each keystroke and `change`\nwhen you leave the field, as a text field does. A date picked from the\ncalendar sends both.\n\nThe trigger and ArrowDown open the calendar with focus on the selected day,\nTab moves between the calendar's controls without leaving it, and Escape\ncloses it and returns focus to the field. A press into the field opens the\ncalendar too. Tab into the field opens nothing, and Tab out of the field\ncloses the calendar.\n\nWith `segmented`, the field is a row of segments in place of the text: a\nmonth, a day and a year in the order the locale writes them, each set with\ndigits or the arrow keys. Alt+Down opens the calendar from a segment.\n\nText that is not a date gives the form an empty value, as a native date\nfield does, and `value` keeps the text so it can be corrected.\n\n**Keyboard.** The field is one tab stop, or each segment is with\n`segmented`, and the trigger is one more.\n\n| Key | What it does |\n|---|---|\n| Down | In the text field, opens the calendar with focus on the chosen day. |\n| Alt with Down | Opens the calendar, from the text field or a segment. |\n| Enter | In the text field, takes the typed date and submits the form, as a native field does. |\n| Escape | Closes the calendar and puts focus back in the field. |\n| Tab | In the open calendar, moves between its controls. Out of the field, closes it. |\n| Up, Down on a segment | Steps the segment by one, round from its last value to its first. |\n| Page Up, Page Down on a segment | Steps by a page: a week of days, two months, or five years. |\n| Home, End on a segment | Goes to the segment's first or last value. |\n| Digits on a segment | Fill it, and move to the next once it can take no more. |\n| Backspace, Delete on a segment | Empty the segment. |\n| Left, Right on a segment | Move to the previous or the next segment, along the line of text. |\n\nIn the calendar, the keys are `DatePicker`'s: the arrows move by a day or a\nweek, Page Up and Page Down by a month, with Shift by a year, and Home and\nEnd to the start and the end of the week.",
|
|
47861
|
+
"description": "The calendar is `DatePicker`, which handles months, ranges, disabled days,\nthe first day of the week, and the grid's keyboard behavior. The date input\nadds the field, the overlay, and the connection between them.\n\nYou can type a date as well as pick one. The native `<input type=\"date\">`\ngives a picker and locale formatting but allows almost no styling, so the\nfield is a text field. Typing sends `input` on each keystroke and `change`\nwhen you leave the field, as a text field does. A date picked from the\ncalendar sends both. The field reads ISO, `2026-08-04`, and a date written\nin the order, the digits, and the month names of `locale`, `8/4/2026` or\n`Aug 4, 2026` in `en-US` and `4.8.2026` in `de-DE`, which becomes the value\nas you leave the field.\n\nThe trigger and ArrowDown open the calendar with focus on the selected day,\nTab moves between the calendar's controls without leaving it, and Escape\ncloses it and returns focus to the field. A press into the field opens the\ncalendar too. Tab into the field opens nothing, and Tab out of the field\ncloses the calendar. The text field is a `combobox` with\n`aria-haspopup=\"dialog\"`, `aria-expanded`, and `aria-controls`, as in the\nAPG date picker combobox, since Down opens the calendar from it.\n\nWith `segmented`, the field is a row of segments in place of the text: a\nmonth, a day and a year in the order the locale writes them, each set with\ndigits or the arrow keys. Alt+Down opens the calendar from a segment. A\n`range` is two rows with a dash between them, the start and the end, as\nReact Aria's DateRangePicker draws them, and `multiple` keeps the text.\n\nText that is not a date gives the form an empty value, as a native date\nfield does, and `value` keeps the text so it can be corrected.\n\n**Keyboard.** The field is one tab stop, or each segment is with\n`segmented`, and the trigger is one more.\n\n| Key | What it does |\n|---|---|\n| Down | In the text field, opens the calendar with focus on the chosen day. |\n| Alt with Down | Opens the calendar, from the text field or a segment. |\n| Enter | In the text field, takes the typed date and submits the form, as a native field does. |\n| Escape | Closes the calendar and puts focus back in the field. |\n| Tab | In the open calendar, moves between its controls. Out of the field, closes it. |\n| Up, Down on a segment | Steps the segment by one, round from its last value to its first. |\n| Page Up, Page Down on a segment | Steps by a page: a week of days, two months, or five years. |\n| Home, End on a segment | Goes to the segment's first or last value. |\n| Digits on a segment | Fill it, and move to the next once it can take no more. |\n| Backspace, Delete on a segment | Empty the segment. |\n| Left, Right on a segment | Move to the previous or the next segment, along the line of text. |\n\nIn the calendar, the keys are `DatePicker`'s: the arrows move by a day or a\nweek, Page Up and Page Down by a month, with Shift by a year, and Home and\nEnd to the start and the end of the week.",
|
|
47571
47862
|
"name": "HelixHeadlessDateInput",
|
|
47572
47863
|
"cssParts": [
|
|
47864
|
+
{
|
|
47865
|
+
"description": "The button that empties the field, under `clearable`, while it holds a date.",
|
|
47866
|
+
"name": "clear"
|
|
47867
|
+
},
|
|
47573
47868
|
{
|
|
47574
47869
|
"description": "The text input.",
|
|
47575
47870
|
"name": "control"
|
|
@@ -47734,6 +48029,10 @@
|
|
|
47734
48029
|
"description": "The icon on the previous month control.",
|
|
47735
48030
|
"name": "picker-previous-mark"
|
|
47736
48031
|
},
|
|
48032
|
+
{
|
|
48033
|
+
"description": "The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.",
|
|
48034
|
+
"name": "picker-selection"
|
|
48035
|
+
},
|
|
47737
48036
|
{
|
|
47738
48037
|
"description": "One row of days.",
|
|
47739
48038
|
"name": "picker-week"
|
|
@@ -47742,6 +48041,10 @@
|
|
|
47742
48041
|
"description": "A column header naming a day of the week.",
|
|
47743
48042
|
"name": "picker-weekday"
|
|
47744
48043
|
},
|
|
48044
|
+
{
|
|
48045
|
+
"description": "The dash between a range's two rows of segments, in `segmented`, beside `literal`.",
|
|
48046
|
+
"name": "range-separator"
|
|
48047
|
+
},
|
|
47745
48048
|
{
|
|
47746
48049
|
"description": "The count of dates beyond the ones shown. It is a `<button>` with `expandable` and a `<span>` without it.",
|
|
47747
48050
|
"name": "rest"
|
|
@@ -47776,6 +48079,10 @@
|
|
|
47776
48079
|
}
|
|
47777
48080
|
],
|
|
47778
48081
|
"slots": [
|
|
48082
|
+
{
|
|
48083
|
+
"description": "Replaces the cross on the clear button, under `clearable`.",
|
|
48084
|
+
"name": "clear-icon"
|
|
48085
|
+
},
|
|
47779
48086
|
{
|
|
47780
48087
|
"description": "Content after the date, before the trigger, such as a clear button.",
|
|
47781
48088
|
"name": "end"
|
|
@@ -47846,16 +48153,16 @@
|
|
|
47846
48153
|
"text": "string"
|
|
47847
48154
|
},
|
|
47848
48155
|
"default": "''",
|
|
47849
|
-
"description": "What the browser may autofill here, as one of the platform's own tokens
|
|
48156
|
+
"description": "What the browser may autofill here, as one of the platform's own tokens,\nsuch as `bday`.\n\nEmpty leaves the attribute off, which is the browser's default and is what\nlets autofill work at all: hardcoding `off` here means a birthday or a\npostal code can never be filled in for a reader. With `segmented`, a\nhidden native date input carries it, since no browser fills the segments.",
|
|
47850
48157
|
"attribute": "autocomplete"
|
|
47851
48158
|
},
|
|
47852
48159
|
{
|
|
47853
48160
|
"kind": "field",
|
|
47854
48161
|
"name": "calendar",
|
|
47855
48162
|
"type": {
|
|
47856
|
-
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | undefined"
|
|
48163
|
+
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | 'chinese' | 'coptic' | 'dangi' | 'ethioaa' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic' | 'islamic-civil' | 'islamic-rgsa' | 'islamic-tbla' | 'islamic-umalqura' | 'persian' | undefined"
|
|
47857
48164
|
},
|
|
47858
|
-
"description": "The calendar the written date and the calendar's days are
|
|
48165
|
+
"description": "The calendar the written date, the segments, and the calendar's days are\nin: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar\nwith months of its own that Date Picker's `calendar` names, such as\n`persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.\n\nAbsent is the locale's own where its months are the Gregorian months, and\n`gregory` for every other, as Date Picker's `calendar` is. The value is\n`YYYY-MM-DD` in every calendar, and a focused text field is ISO in every\ncalendar. In `segmented`, the segments are the day, month, and year as\nthe calendar counts them, in the order the locale writes them: Mehr 14,\n1405 is month 7 and day 14 of 1405 under `persian`. Under the five with\nGregorian months they are the Gregorian day, month, and year, or ISO order\nfor `iso8601`.",
|
|
47859
48166
|
"attribute": "calendar"
|
|
47860
48167
|
},
|
|
47861
48168
|
{
|
|
@@ -47871,6 +48178,29 @@
|
|
|
47871
48178
|
"words": true
|
|
47872
48179
|
}
|
|
47873
48180
|
},
|
|
48181
|
+
{
|
|
48182
|
+
"kind": "field",
|
|
48183
|
+
"name": "clearable",
|
|
48184
|
+
"type": {
|
|
48185
|
+
"text": "boolean"
|
|
48186
|
+
},
|
|
48187
|
+
"default": "false",
|
|
48188
|
+
"description": "Whether the field shows a button that empties it, as Input's `clearable`\ndoes. Shown only while the field holds something to clear and is neither\ndisabled nor read-only.",
|
|
48189
|
+
"attribute": "clearable"
|
|
48190
|
+
},
|
|
48191
|
+
{
|
|
48192
|
+
"kind": "field",
|
|
48193
|
+
"name": "clearLabel",
|
|
48194
|
+
"type": {
|
|
48195
|
+
"text": "string"
|
|
48196
|
+
},
|
|
48197
|
+
"default": "'Clear'",
|
|
48198
|
+
"description": "The accessible name of the clear button, which shows only an icon.",
|
|
48199
|
+
"attribute": "clear-label",
|
|
48200
|
+
"helix": {
|
|
48201
|
+
"words": true
|
|
48202
|
+
}
|
|
48203
|
+
},
|
|
47874
48204
|
{
|
|
47875
48205
|
"kind": "field",
|
|
47876
48206
|
"name": "announcesInput",
|
|
@@ -47893,7 +48223,7 @@
|
|
|
47893
48223
|
"text": "'full' | 'iso' | 'long' | 'medium' | 'short'"
|
|
47894
48224
|
},
|
|
47895
48225
|
"default": "'long'",
|
|
47896
|
-
"description": "How a date is written in the field: `short` through `full`, or ISO.\n\n**The field renders when it is idle and holds the value when it is being\nedited.** A written date is a rendering, and a document being edited must\nnot be a rendering of something else: `Intl.DateTimeFormat` formats and does\nnot parse, so `
|
|
48226
|
+
"description": "How a date is written in the field: `short` through `full`, or ISO.\n\n**The field renders when it is idle and holds the value when it is being\nedited.** A written date is a rendering, and a document being edited must\nnot be a rendering of something else: `Intl.DateTimeFormat` formats and does\nnot parse, so a rendering such as `Tuesday, August 4, 2026` is no text to\nedit. The field does read a date typed in the locale's order and digits as\nyou leave it, which covers what a reader types.\n\nThe way out is not to choose between the two but to separate them in time.\nIdle, the field shows `4 August 2026`, which is what a date is for reading.\nFocused, it shows `2026-08-04`, which is what a date is for typing, and it\ngoes back on the way out. Nothing parses a rendering, and nothing is\nread-only, which is what an earlier version of this settled for.\n\nA range is the exception that needs no swap: the dash between its two dates\nis a separator this element understands, so that much reads back either way.\n\n`iso` turns the rendering off, for a field whose reader is entering data\nrather than reading it, or where the ISO form is itself the point.\n\nThe value is always `YYYY-MM-DD` regardless, because that is what a form\nsubmits and what `min` and `max` compare against.",
|
|
47897
48227
|
"attribute": "date-style"
|
|
47898
48228
|
},
|
|
47899
48229
|
{
|
|
@@ -48209,6 +48539,19 @@
|
|
|
48209
48539
|
"words": true
|
|
48210
48540
|
}
|
|
48211
48541
|
},
|
|
48542
|
+
{
|
|
48543
|
+
"kind": "field",
|
|
48544
|
+
"name": "selectionLabel",
|
|
48545
|
+
"type": {
|
|
48546
|
+
"text": "string"
|
|
48547
|
+
},
|
|
48548
|
+
"default": "'{kind, select, date {Selected date: {start}} start {Range starts {start}. Choose the day it ends.} range {Selected range: {start} to {end}} other {{count, plural, one {# date selected} other {# dates selected}}}}'",
|
|
48549
|
+
"description": "What a screen reader hears about the dates chosen in the calendar, with\n`{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's\n`selection-label` says.",
|
|
48550
|
+
"attribute": "selection-label",
|
|
48551
|
+
"helix": {
|
|
48552
|
+
"words": true
|
|
48553
|
+
}
|
|
48554
|
+
},
|
|
48212
48555
|
{
|
|
48213
48556
|
"kind": "field",
|
|
48214
48557
|
"name": "step",
|
|
@@ -48232,6 +48575,16 @@
|
|
|
48232
48575
|
"words": true
|
|
48233
48576
|
}
|
|
48234
48577
|
},
|
|
48578
|
+
{
|
|
48579
|
+
"kind": "field",
|
|
48580
|
+
"name": "timeZone",
|
|
48581
|
+
"type": {
|
|
48582
|
+
"text": "string"
|
|
48583
|
+
},
|
|
48584
|
+
"default": "''",
|
|
48585
|
+
"description": "The time zone today is read in, such as `America/New_York`, handed to the\ncalendar: the day marked today, and the month an empty field opens on.\nEmpty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone.",
|
|
48586
|
+
"attribute": "time-zone"
|
|
48587
|
+
},
|
|
48235
48588
|
{
|
|
48236
48589
|
"kind": "field",
|
|
48237
48590
|
"name": "triggerLabel",
|
|
@@ -48262,7 +48615,21 @@
|
|
|
48262
48615
|
"text": "boolean"
|
|
48263
48616
|
},
|
|
48264
48617
|
"privacy": "protected",
|
|
48265
|
-
"description": "
|
|
48618
|
+
"description": "A row of segments holds one date, and `range` takes two rows with a dash\nbetween them, as React Aria's range fields do. `multiple` keeps the line\nof text, whose tags are how it writes several.",
|
|
48619
|
+
"readonly": true,
|
|
48620
|
+
"inheritedFrom": {
|
|
48621
|
+
"name": "MixinSegmentedField",
|
|
48622
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
48623
|
+
}
|
|
48624
|
+
},
|
|
48625
|
+
{
|
|
48626
|
+
"kind": "field",
|
|
48627
|
+
"name": "segmentGroups",
|
|
48628
|
+
"type": {
|
|
48629
|
+
"text": "number"
|
|
48630
|
+
},
|
|
48631
|
+
"privacy": "protected",
|
|
48632
|
+
"description": "How many rows of segments the value takes: two for a range, one otherwise.",
|
|
48266
48633
|
"readonly": true,
|
|
48267
48634
|
"inheritedFrom": {
|
|
48268
48635
|
"name": "MixinSegmentedField",
|
|
@@ -48290,7 +48657,21 @@
|
|
|
48290
48657
|
"text": "string"
|
|
48291
48658
|
},
|
|
48292
48659
|
"privacy": "protected",
|
|
48293
|
-
"description": "The segments are the Gregorian day, month and year, which is what they\nhold, in ISO order where the calendar is `iso8601`. A year shown as 2569\nor Reiwa 8 would be a year the segment does not hold.",
|
|
48660
|
+
"description": "The segments are the Gregorian day, month and year, which is what they\nhold, in ISO order where the calendar is `iso8601`. A year shown as 2569\nor Reiwa 8 would be a year the segment does not hold. Under a calendar\nwith months of its own they hold that calendar's parts, so they are laid\nout and named in it.",
|
|
48661
|
+
"readonly": true,
|
|
48662
|
+
"inheritedFrom": {
|
|
48663
|
+
"name": "MixinSegmentedField",
|
|
48664
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
48665
|
+
}
|
|
48666
|
+
},
|
|
48667
|
+
{
|
|
48668
|
+
"kind": "field",
|
|
48669
|
+
"name": "segmentSystem",
|
|
48670
|
+
"type": {
|
|
48671
|
+
"text": "MonthSystem | undefined"
|
|
48672
|
+
},
|
|
48673
|
+
"privacy": "protected",
|
|
48674
|
+
"description": "The calendar the segments count in, where it has months of its own.",
|
|
48294
48675
|
"readonly": true,
|
|
48295
48676
|
"inheritedFrom": {
|
|
48296
48677
|
"name": "MixinSegmentedField",
|
|
@@ -48347,6 +48728,32 @@
|
|
|
48347
48728
|
"readonly": true,
|
|
48348
48729
|
"description": "Relayed under this element's name, so a consumer hears one control."
|
|
48349
48730
|
},
|
|
48731
|
+
{
|
|
48732
|
+
"kind": "method",
|
|
48733
|
+
"name": "read",
|
|
48734
|
+
"privacy": "private",
|
|
48735
|
+
"return": {
|
|
48736
|
+
"type": {
|
|
48737
|
+
"text": "string"
|
|
48738
|
+
}
|
|
48739
|
+
},
|
|
48740
|
+
"parameters": [
|
|
48741
|
+
{
|
|
48742
|
+
"name": "text",
|
|
48743
|
+
"type": {
|
|
48744
|
+
"text": "string"
|
|
48745
|
+
}
|
|
48746
|
+
}
|
|
48747
|
+
],
|
|
48748
|
+
"description": "A date as the reader wrote it, as `YYYY-MM-DD`: ISO as it is, and the\norder, the digits, and the month names of the field's locale and calendar\nread back, so `8/4/2026` in `en-US` is August 4, 2026. Empty where it is\nno date."
|
|
48749
|
+
},
|
|
48750
|
+
{
|
|
48751
|
+
"kind": "field",
|
|
48752
|
+
"name": "handleTextCommit",
|
|
48753
|
+
"privacy": "private",
|
|
48754
|
+
"readonly": true,
|
|
48755
|
+
"description": "The text the reader leaves, read in the field's locale: a date written as\nthe locale writes one becomes the value, as ISO, when the field commits.\nNot on each key, where `8/4/202` is a date in the year 202 and taking it\nwould move the caret mid-year."
|
|
48756
|
+
},
|
|
48350
48757
|
{
|
|
48351
48758
|
"kind": "field",
|
|
48352
48759
|
"name": "handleDraftKey",
|
|
@@ -48429,6 +48836,19 @@
|
|
|
48429
48836
|
"words": true
|
|
48430
48837
|
}
|
|
48431
48838
|
},
|
|
48839
|
+
{
|
|
48840
|
+
"kind": "field",
|
|
48841
|
+
"name": "unreadableMessage",
|
|
48842
|
+
"type": {
|
|
48843
|
+
"text": "string"
|
|
48844
|
+
},
|
|
48845
|
+
"default": "'{mode, select, single {Enter a date as YYYY-MM-DD.} other {Enter dates as YYYY-MM-DD, separated by commas.}}'",
|
|
48846
|
+
"description": "The message for text that is no date, where `bad-input-message` is not\nset. `{mode}` is `single`, `range`, or `multiple`.",
|
|
48847
|
+
"attribute": "unreadable-message",
|
|
48848
|
+
"helix": {
|
|
48849
|
+
"words": true
|
|
48850
|
+
}
|
|
48851
|
+
},
|
|
48432
48852
|
{
|
|
48433
48853
|
"kind": "field",
|
|
48434
48854
|
"name": "yearViewLabel",
|
|
@@ -48508,6 +48928,51 @@
|
|
|
48508
48928
|
},
|
|
48509
48929
|
"description": "The mark on the button that opens the calendar, behind a seam.\n\nSlot fallback, so a consumer replaces it by slotting; and a method, so the\ntier above replaces it by overriding.\n\n**A named import rather than `<helix-headless-icon>`**, which loses on\nthree counts. `Icon` indexes the whole icon map at runtime,\n`icons[this.name]`, and no bundler can shake a runtime lookup, so every\nconsumer of any component that renders one ships all 50kB of path data; a\nnamed import ships one path. The import is checked when the package\ncompiles, where a `name` string is checked only by a later name lookup. And\n`Icon` is not registered on the headless tier at all, which registers\n`helix-headless-icon`, so a headless consumer gets an inert unknown element\nand no mark whatsoever."
|
|
48510
48930
|
},
|
|
48931
|
+
{
|
|
48932
|
+
"kind": "method",
|
|
48933
|
+
"name": "renderAutofill",
|
|
48934
|
+
"privacy": "private",
|
|
48935
|
+
"return": {
|
|
48936
|
+
"type": {
|
|
48937
|
+
"text": "TemplateResult | typeof nothing"
|
|
48938
|
+
}
|
|
48939
|
+
},
|
|
48940
|
+
"description": "A native date input a browser's autofill can fill, where the field shows\nsegments: a row of spans that no browser fills. React Aria's\n`HiddenDateInput` is the same answer for its segmented field.\n\nDrawn and never seen, a pixel and see-through, as Select's hidden select\nis, since Safari skips a field that is `display: none`. `aria-hidden` and\nout of the tab order, and in this shadow root, so the form still takes\nthe value once, from the host. A fill is taken as a pick, with `input`\nand `change` from the host."
|
|
48941
|
+
},
|
|
48942
|
+
{
|
|
48943
|
+
"kind": "field",
|
|
48944
|
+
"name": "handleAutofill",
|
|
48945
|
+
"privacy": "private",
|
|
48946
|
+
"readonly": true
|
|
48947
|
+
},
|
|
48948
|
+
{
|
|
48949
|
+
"kind": "field",
|
|
48950
|
+
"name": "showsClear",
|
|
48951
|
+
"type": {
|
|
48952
|
+
"text": "boolean"
|
|
48953
|
+
},
|
|
48954
|
+
"privacy": "private",
|
|
48955
|
+
"description": "Whether there is a clear button on screen right now.",
|
|
48956
|
+
"readonly": true
|
|
48957
|
+
},
|
|
48958
|
+
{
|
|
48959
|
+
"kind": "field",
|
|
48960
|
+
"name": "handleClear",
|
|
48961
|
+
"privacy": "private",
|
|
48962
|
+
"readonly": true,
|
|
48963
|
+
"description": "Empties the field, through `requestValue` so a consumer who owns the\nvalue decides, then says `change` and `helix-clear` and puts focus back\nin the field, the button having gone."
|
|
48964
|
+
},
|
|
48965
|
+
{
|
|
48966
|
+
"kind": "method",
|
|
48967
|
+
"name": "renderClearIcon",
|
|
48968
|
+
"privacy": "protected",
|
|
48969
|
+
"return": {
|
|
48970
|
+
"type": {
|
|
48971
|
+
"text": "TemplateResult"
|
|
48972
|
+
}
|
|
48973
|
+
},
|
|
48974
|
+
"description": "The cross on the clear button, behind a seam a tier can move."
|
|
48975
|
+
},
|
|
48511
48976
|
{
|
|
48512
48977
|
"kind": "method",
|
|
48513
48978
|
"name": "renderControl",
|
|
@@ -48586,6 +49051,40 @@
|
|
|
48586
49051
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
48587
49052
|
}
|
|
48588
49053
|
},
|
|
49054
|
+
{
|
|
49055
|
+
"kind": "field",
|
|
49056
|
+
"name": "rangeEndLabel",
|
|
49057
|
+
"type": {
|
|
49058
|
+
"text": "string"
|
|
49059
|
+
},
|
|
49060
|
+
"default": "'End'",
|
|
49061
|
+
"description": "What a screen reader hears before the segments of a range's second date\nor time, after each segment's own name.",
|
|
49062
|
+
"attribute": "range-end-label",
|
|
49063
|
+
"helix": {
|
|
49064
|
+
"words": true
|
|
49065
|
+
},
|
|
49066
|
+
"inheritedFrom": {
|
|
49067
|
+
"name": "MixinSegmentedField",
|
|
49068
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
49069
|
+
}
|
|
49070
|
+
},
|
|
49071
|
+
{
|
|
49072
|
+
"kind": "field",
|
|
49073
|
+
"name": "rangeStartLabel",
|
|
49074
|
+
"type": {
|
|
49075
|
+
"text": "string"
|
|
49076
|
+
},
|
|
49077
|
+
"default": "'Start'",
|
|
49078
|
+
"description": "What a screen reader hears before the segments of a range's first date\nor time, after each segment's own name: \"month, Start, Stay\".",
|
|
49079
|
+
"attribute": "range-start-label",
|
|
49080
|
+
"helix": {
|
|
49081
|
+
"words": true
|
|
49082
|
+
},
|
|
49083
|
+
"inheritedFrom": {
|
|
49084
|
+
"name": "MixinSegmentedField",
|
|
49085
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
49086
|
+
}
|
|
49087
|
+
},
|
|
48589
49088
|
{
|
|
48590
49089
|
"kind": "field",
|
|
48591
49090
|
"name": "segmented",
|
|
@@ -48604,11 +49103,11 @@
|
|
|
48604
49103
|
"kind": "field",
|
|
48605
49104
|
"name": "parts",
|
|
48606
49105
|
"type": {
|
|
48607
|
-
"text": "Segments"
|
|
49106
|
+
"text": "Segments[]"
|
|
48608
49107
|
},
|
|
48609
49108
|
"privacy": "private",
|
|
48610
|
-
"default": "{}",
|
|
48611
|
-
"description": "The parts set so far, which may be fewer than a whole
|
|
49109
|
+
"default": "[{}]",
|
|
49110
|
+
"description": "The parts set so far in each row, which may be fewer than a whole\nvalue: one row, or two for a range.",
|
|
48612
49111
|
"inheritedFrom": {
|
|
48613
49112
|
"name": "MixinSegmentedField",
|
|
48614
49113
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
@@ -48667,6 +49166,35 @@
|
|
|
48667
49166
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
48668
49167
|
}
|
|
48669
49168
|
},
|
|
49169
|
+
{
|
|
49170
|
+
"kind": "field",
|
|
49171
|
+
"name": "opener",
|
|
49172
|
+
"type": {
|
|
49173
|
+
"text": "HTMLElement | undefined"
|
|
49174
|
+
},
|
|
49175
|
+
"privacy": "private",
|
|
49176
|
+
"default": "undefined",
|
|
49177
|
+
"description": "The segment Alt+Down opened the picker from, which focus goes back to.",
|
|
49178
|
+
"inheritedFrom": {
|
|
49179
|
+
"name": "MixinSegmentedField",
|
|
49180
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
49181
|
+
}
|
|
49182
|
+
},
|
|
49183
|
+
{
|
|
49184
|
+
"kind": "method",
|
|
49185
|
+
"name": "returnFocus",
|
|
49186
|
+
"privacy": "protected",
|
|
49187
|
+
"return": {
|
|
49188
|
+
"type": {
|
|
49189
|
+
"text": "void"
|
|
49190
|
+
}
|
|
49191
|
+
},
|
|
49192
|
+
"description": "Puts focus back on the segment the picker was opened from, as the\ntrigger takes it back to the field. Measured before this: Escape after\nAlt+Down on AM/PM put focus on the hour.",
|
|
49193
|
+
"inheritedFrom": {
|
|
49194
|
+
"name": "MixinPickerField",
|
|
49195
|
+
"module": "src/mixins/mixin-picker-field/mixin-picker-field.ts"
|
|
49196
|
+
}
|
|
49197
|
+
},
|
|
48670
49198
|
{
|
|
48671
49199
|
"kind": "field",
|
|
48672
49200
|
"name": "segmentsShown",
|
|
@@ -48681,6 +49209,52 @@
|
|
|
48681
49209
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
48682
49210
|
}
|
|
48683
49211
|
},
|
|
49212
|
+
{
|
|
49213
|
+
"kind": "method",
|
|
49214
|
+
"name": "joined",
|
|
49215
|
+
"privacy": "private",
|
|
49216
|
+
"return": {
|
|
49217
|
+
"type": {
|
|
49218
|
+
"text": "string"
|
|
49219
|
+
}
|
|
49220
|
+
},
|
|
49221
|
+
"parameters": [
|
|
49222
|
+
{
|
|
49223
|
+
"name": "rows",
|
|
49224
|
+
"type": {
|
|
49225
|
+
"text": "readonly Segments[]"
|
|
49226
|
+
}
|
|
49227
|
+
}
|
|
49228
|
+
],
|
|
49229
|
+
"description": "The value the rows add up to: each row's, joined by commas, or empty while any row is not whole.",
|
|
49230
|
+
"inheritedFrom": {
|
|
49231
|
+
"name": "MixinSegmentedField",
|
|
49232
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
49233
|
+
}
|
|
49234
|
+
},
|
|
49235
|
+
{
|
|
49236
|
+
"kind": "method",
|
|
49237
|
+
"name": "rowsOf",
|
|
49238
|
+
"privacy": "private",
|
|
49239
|
+
"return": {
|
|
49240
|
+
"type": {
|
|
49241
|
+
"text": "Segments[]"
|
|
49242
|
+
}
|
|
49243
|
+
},
|
|
49244
|
+
"parameters": [
|
|
49245
|
+
{
|
|
49246
|
+
"name": "value",
|
|
49247
|
+
"type": {
|
|
49248
|
+
"text": "string"
|
|
49249
|
+
}
|
|
49250
|
+
}
|
|
49251
|
+
],
|
|
49252
|
+
"description": "The rows a value names, one per row, empty where it names none.",
|
|
49253
|
+
"inheritedFrom": {
|
|
49254
|
+
"name": "MixinSegmentedField",
|
|
49255
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
49256
|
+
}
|
|
49257
|
+
},
|
|
48684
49258
|
{
|
|
48685
49259
|
"kind": "field",
|
|
48686
49260
|
"name": "segmentOptions",
|
|
@@ -48760,6 +49334,12 @@
|
|
|
48760
49334
|
}
|
|
48761
49335
|
},
|
|
48762
49336
|
"parameters": [
|
|
49337
|
+
{
|
|
49338
|
+
"name": "row",
|
|
49339
|
+
"type": {
|
|
49340
|
+
"text": "number"
|
|
49341
|
+
}
|
|
49342
|
+
},
|
|
48763
49343
|
{
|
|
48764
49344
|
"name": "next",
|
|
48765
49345
|
"type": {
|
|
@@ -49197,21 +49777,6 @@
|
|
|
49197
49777
|
"module": "src/mixins/mixin-picker-field/mixin-picker-field.ts"
|
|
49198
49778
|
}
|
|
49199
49779
|
},
|
|
49200
|
-
{
|
|
49201
|
-
"kind": "method",
|
|
49202
|
-
"name": "returnFocus",
|
|
49203
|
-
"privacy": "protected",
|
|
49204
|
-
"return": {
|
|
49205
|
-
"type": {
|
|
49206
|
-
"text": "void"
|
|
49207
|
-
}
|
|
49208
|
-
},
|
|
49209
|
-
"description": "Puts the caret back in the field without the field reopening the panel.\n\nThe anchor rather than the text, which is the trigger where there is no\ntext: Color Input's swatch dropped focus to the body on Escape.",
|
|
49210
|
-
"inheritedFrom": {
|
|
49211
|
-
"name": "MixinPickerField",
|
|
49212
|
-
"module": "src/mixins/mixin-picker-field/mixin-picker-field.ts"
|
|
49213
|
-
}
|
|
49214
|
-
},
|
|
49215
49780
|
{
|
|
49216
49781
|
"kind": "method",
|
|
49217
49782
|
"name": "focus",
|
|
@@ -50870,6 +51435,14 @@
|
|
|
50870
51435
|
"name": "helix-before-open",
|
|
50871
51436
|
"reactProp": "onhelix-before-open"
|
|
50872
51437
|
},
|
|
51438
|
+
{
|
|
51439
|
+
"type": {
|
|
51440
|
+
"text": "HelixClearEvent"
|
|
51441
|
+
},
|
|
51442
|
+
"description": "Fired after the clear button has emptied the field, after `input` and `change`.",
|
|
51443
|
+
"name": "helix-clear",
|
|
51444
|
+
"reactProp": "onhelix-clear"
|
|
51445
|
+
},
|
|
50873
51446
|
{
|
|
50874
51447
|
"type": {
|
|
50875
51448
|
"text": "Event"
|
|
@@ -50898,15 +51471,15 @@
|
|
|
50898
51471
|
"text": "string"
|
|
50899
51472
|
},
|
|
50900
51473
|
"default": "''",
|
|
50901
|
-
"description": "What the browser may autofill here, as one of the platform's own tokens
|
|
51474
|
+
"description": "What the browser may autofill here, as one of the platform's own tokens,\nsuch as `bday`.\n\nEmpty leaves the attribute off, which is the browser's default and is what\nlets autofill work at all: hardcoding `off` here means a birthday or a\npostal code can never be filled in for a reader. With `segmented`, a\nhidden native date input carries it, since no browser fills the segments.",
|
|
50902
51475
|
"fieldName": "autocomplete"
|
|
50903
51476
|
},
|
|
50904
51477
|
{
|
|
50905
51478
|
"name": "calendar",
|
|
50906
51479
|
"type": {
|
|
50907
|
-
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | undefined"
|
|
51480
|
+
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | 'chinese' | 'coptic' | 'dangi' | 'ethioaa' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic' | 'islamic-civil' | 'islamic-rgsa' | 'islamic-tbla' | 'islamic-umalqura' | 'persian' | undefined"
|
|
50908
51481
|
},
|
|
50909
|
-
"description": "The calendar the written date and the calendar's days are
|
|
51482
|
+
"description": "The calendar the written date, the segments, and the calendar's days are\nin: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar\nwith months of its own that Date Picker's `calendar` names, such as\n`persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.\n\nAbsent is the locale's own where its months are the Gregorian months, and\n`gregory` for every other, as Date Picker's `calendar` is. The value is\n`YYYY-MM-DD` in every calendar, and a focused text field is ISO in every\ncalendar. In `segmented`, the segments are the day, month, and year as\nthe calendar counts them, in the order the locale writes them: Mehr 14,\n1405 is month 7 and day 14 of 1405 under `persian`. Under the five with\nGregorian months they are the Gregorian day, month, and year, or ISO order\nfor `iso8601`.",
|
|
50910
51483
|
"fieldName": "calendar"
|
|
50911
51484
|
},
|
|
50912
51485
|
{
|
|
@@ -50918,13 +51491,31 @@
|
|
|
50918
51491
|
"description": "The name of the calendar's grid of days, read by screen readers.",
|
|
50919
51492
|
"fieldName": "calendarLabel"
|
|
50920
51493
|
},
|
|
51494
|
+
{
|
|
51495
|
+
"name": "clearable",
|
|
51496
|
+
"type": {
|
|
51497
|
+
"text": "boolean"
|
|
51498
|
+
},
|
|
51499
|
+
"default": "false",
|
|
51500
|
+
"description": "Whether the field shows a button that empties it, as Input's `clearable`\ndoes. Shown only while the field holds something to clear and is neither\ndisabled nor read-only.",
|
|
51501
|
+
"fieldName": "clearable"
|
|
51502
|
+
},
|
|
51503
|
+
{
|
|
51504
|
+
"name": "clear-label",
|
|
51505
|
+
"type": {
|
|
51506
|
+
"text": "string"
|
|
51507
|
+
},
|
|
51508
|
+
"default": "'Clear'",
|
|
51509
|
+
"description": "The accessible name of the clear button, which shows only an icon.",
|
|
51510
|
+
"fieldName": "clearLabel"
|
|
51511
|
+
},
|
|
50921
51512
|
{
|
|
50922
51513
|
"name": "date-style",
|
|
50923
51514
|
"type": {
|
|
50924
51515
|
"text": "'full' | 'iso' | 'long' | 'medium' | 'short'"
|
|
50925
51516
|
},
|
|
50926
51517
|
"default": "'long'",
|
|
50927
|
-
"description": "How a date is written in the field: `short` through `full`, or ISO.\n\n**The field renders when it is idle and holds the value when it is being\nedited.** A written date is a rendering, and a document being edited must\nnot be a rendering of something else: `Intl.DateTimeFormat` formats and does\nnot parse, so `
|
|
51518
|
+
"description": "How a date is written in the field: `short` through `full`, or ISO.\n\n**The field renders when it is idle and holds the value when it is being\nedited.** A written date is a rendering, and a document being edited must\nnot be a rendering of something else: `Intl.DateTimeFormat` formats and does\nnot parse, so a rendering such as `Tuesday, August 4, 2026` is no text to\nedit. The field does read a date typed in the locale's order and digits as\nyou leave it, which covers what a reader types.\n\nThe way out is not to choose between the two but to separate them in time.\nIdle, the field shows `4 August 2026`, which is what a date is for reading.\nFocused, it shows `2026-08-04`, which is what a date is for typing, and it\ngoes back on the way out. Nothing parses a rendering, and nothing is\nread-only, which is what an earlier version of this settled for.\n\nA range is the exception that needs no swap: the dash between its two dates\nis a separator this element understands, so that much reads back either way.\n\n`iso` turns the rendering off, for a field whose reader is entering data\nrather than reading it, or where the ISO form is itself the point.\n\nThe value is always `YYYY-MM-DD` regardless, because that is what a form\nsubmits and what `min` and `max` compare against.",
|
|
50928
51519
|
"fieldName": "dateStyle"
|
|
50929
51520
|
},
|
|
50930
51521
|
{
|
|
@@ -51113,6 +51704,15 @@
|
|
|
51113
51704
|
"description": "The name of the button that removes one date. `{name}` is replaced with\nthe date.\n\n**The name goes in**, so a row of them is heard as which one each\nremoves rather than as \"Remove\" said once per date.",
|
|
51114
51705
|
"fieldName": "removeLabel"
|
|
51115
51706
|
},
|
|
51707
|
+
{
|
|
51708
|
+
"name": "selection-label",
|
|
51709
|
+
"type": {
|
|
51710
|
+
"text": "string"
|
|
51711
|
+
},
|
|
51712
|
+
"default": "'{kind, select, date {Selected date: {start}} start {Range starts {start}. Choose the day it ends.} range {Selected range: {start} to {end}} other {{count, plural, one {# date selected} other {# dates selected}}}}'",
|
|
51713
|
+
"description": "What a screen reader hears about the dates chosen in the calendar, with\n`{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's\n`selection-label` says.",
|
|
51714
|
+
"fieldName": "selectionLabel"
|
|
51715
|
+
},
|
|
51116
51716
|
{
|
|
51117
51717
|
"name": "step",
|
|
51118
51718
|
"type": {
|
|
@@ -51131,6 +51731,15 @@
|
|
|
51131
51731
|
"description": "The message shown when a date is not on `step`.",
|
|
51132
51732
|
"fieldName": "stepMismatchMessage"
|
|
51133
51733
|
},
|
|
51734
|
+
{
|
|
51735
|
+
"name": "time-zone",
|
|
51736
|
+
"type": {
|
|
51737
|
+
"text": "string"
|
|
51738
|
+
},
|
|
51739
|
+
"default": "''",
|
|
51740
|
+
"description": "The time zone today is read in, such as `America/New_York`, handed to the\ncalendar: the day marked today, and the month an empty field opens on.\nEmpty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone.",
|
|
51741
|
+
"fieldName": "timeZone"
|
|
51742
|
+
},
|
|
51134
51743
|
{
|
|
51135
51744
|
"name": "trigger-label",
|
|
51136
51745
|
"type": {
|
|
@@ -51149,6 +51758,15 @@
|
|
|
51149
51758
|
"description": "The message shown when `disable-dates` or `disable-days` bars a date.",
|
|
51150
51759
|
"fieldName": "unavailableMessage"
|
|
51151
51760
|
},
|
|
51761
|
+
{
|
|
51762
|
+
"name": "unreadable-message",
|
|
51763
|
+
"type": {
|
|
51764
|
+
"text": "string"
|
|
51765
|
+
},
|
|
51766
|
+
"default": "'{mode, select, single {Enter a date as YYYY-MM-DD.} other {Enter dates as YYYY-MM-DD, separated by commas.}}'",
|
|
51767
|
+
"description": "The message for text that is no date, where `bad-input-message` is not\nset. `{mode}` is `single`, `range`, or `multiple`.",
|
|
51768
|
+
"fieldName": "unreadableMessage"
|
|
51769
|
+
},
|
|
51152
51770
|
{
|
|
51153
51771
|
"name": "year-view-label",
|
|
51154
51772
|
"type": {
|
|
@@ -51197,6 +51815,32 @@
|
|
|
51197
51815
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
51198
51816
|
}
|
|
51199
51817
|
},
|
|
51818
|
+
{
|
|
51819
|
+
"name": "range-end-label",
|
|
51820
|
+
"type": {
|
|
51821
|
+
"text": "string"
|
|
51822
|
+
},
|
|
51823
|
+
"default": "'End'",
|
|
51824
|
+
"description": "What a screen reader hears before the segments of a range's second date\nor time, after each segment's own name.",
|
|
51825
|
+
"fieldName": "rangeEndLabel",
|
|
51826
|
+
"inheritedFrom": {
|
|
51827
|
+
"name": "MixinSegmentedField",
|
|
51828
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
51829
|
+
}
|
|
51830
|
+
},
|
|
51831
|
+
{
|
|
51832
|
+
"name": "range-start-label",
|
|
51833
|
+
"type": {
|
|
51834
|
+
"text": "string"
|
|
51835
|
+
},
|
|
51836
|
+
"default": "'Start'",
|
|
51837
|
+
"description": "What a screen reader hears before the segments of a range's first date\nor time, after each segment's own name: \"month, Start, Stay\".",
|
|
51838
|
+
"fieldName": "rangeStartLabel",
|
|
51839
|
+
"inheritedFrom": {
|
|
51840
|
+
"name": "MixinSegmentedField",
|
|
51841
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
51842
|
+
}
|
|
51843
|
+
},
|
|
51200
51844
|
{
|
|
51201
51845
|
"name": "segmented",
|
|
51202
51846
|
"type": {
|
|
@@ -51455,6 +52099,10 @@
|
|
|
51455
52099
|
}
|
|
51456
52100
|
],
|
|
51457
52101
|
"cssStates": [
|
|
52102
|
+
{
|
|
52103
|
+
"description": "The field holds no date.",
|
|
52104
|
+
"name": "blank"
|
|
52105
|
+
},
|
|
51458
52106
|
{
|
|
51459
52107
|
"description": "The field has an error to show, from the browser's validation or from your `feedback`.",
|
|
51460
52108
|
"name": "invalid"
|
|
@@ -51578,7 +52226,7 @@
|
|
|
51578
52226
|
"declarations": [
|
|
51579
52227
|
{
|
|
51580
52228
|
"kind": "class",
|
|
51581
|
-
"description": "A grid of days that follows the APG date grid pattern:\n\n- The grid is one tab stop. Only the focused cell is in the tab sequence.\n- Arrow keys move by day and by week.\n- `PageUp` and `PageDown` move by month.\n- `Home` and `End` move to the start and end of the week.\n\n**Dates are `YYYY-MM-DD` strings, and every calculation is in UTC**, because\na local-time `Date` shifts across a time zone or daylight-saving boundary.\n\n**The
|
|
52229
|
+
"description": "A grid of days that follows the APG date grid pattern:\n\n- The grid is one tab stop. Only the focused cell is in the tab sequence.\n- Arrow keys move by day and by week.\n- `PageUp` and `PageDown` move by month.\n- `Home` and `End` move to the start and end of the week.\n\n**Dates are `YYYY-MM-DD` strings, and every calculation is in UTC**, because\na local-time `Date` shifts across a time zone or daylight-saving boundary.\n\n**The months are the ones `calendar` counts**: the Gregorian months for the\nlocale's own calendar where its months are the Gregorian months, as `th-TH`\nwrites 2569 for 2026, and `gregory` where they are not, as for `fa-IR`\nwith no `calendar`. Name a calendar with months of its own, such as\n`persian`, and every view counts its days, months, and years from `Intl`.\n\n`month` sets which month the grid shows, separately from `value`, so paging\nselects nothing and you can control the view. When unset, it follows the\nfirst selected date, then the current month.\n\n`mode` sets how many dates are held. Unset holds one, `range` holds two and\nmarks the dates between them, and `multiple` toggles each date. All three\nread and write the same comma-separated `value`. With a `mode`, the grid\ncarries `aria-multiselectable`. While a range holds one end, the grid draws\nthe range to the day under the pointer or the focus, marking those cells\n`data-range-preview`.\n\nThe chosen date, range, or count of dates is the grid's description, in a\nregion screen readers announce when it changes, as React Aria's calendars\ndo. `selection-label` words it.\n\n`max-view` makes the heading a button that steps back to the months of the\nyear, and with `year` to a page of years, as Zag's date picker does. The\narrows, Home, End and the page keys move there, Enter or a press chooses, and\nEscape goes back to the days.\n\n`isDateUnavailable` and `dayContent` are properties for a script: a rule\nthat bars dates, and what each day shows in place of its number.\n\nThe month heading is a live region, so a screen reader hears the new month\nwhen Previous or Next is pressed. Neither moves past `min` or `max`, and the\nkeys stop at them too. A value outside the bounds, on a barred day, or off\n`step` reports `rangeUnderflow`, `rangeOverflow`, `badInput` or\n`stepMismatch`, so a form does not submit it.",
|
|
51582
52230
|
"name": "HelixHeadlessDatePicker",
|
|
51583
52231
|
"cssProperties": [
|
|
51584
52232
|
{
|
|
@@ -51592,7 +52240,7 @@
|
|
|
51592
52240
|
"name": "cell"
|
|
51593
52241
|
},
|
|
51594
52242
|
{
|
|
51595
|
-
"description": "The cell of a range's last day, beside `cell
|
|
52243
|
+
"description": "The cell of a range's last day, beside `cell`, or of the day a waiting range is drawn to.",
|
|
51596
52244
|
"name": "cell-range-end"
|
|
51597
52245
|
},
|
|
51598
52246
|
{
|
|
@@ -51695,6 +52343,10 @@
|
|
|
51695
52343
|
"description": "The glyph on the previous month control, where none is slotted.",
|
|
51696
52344
|
"name": "previous-mark"
|
|
51697
52345
|
},
|
|
52346
|
+
{
|
|
52347
|
+
"description": "The chosen date or range in words, which screen readers hear when it changes. Drawn for screen readers only.",
|
|
52348
|
+
"name": "selection"
|
|
52349
|
+
},
|
|
51698
52350
|
{
|
|
51699
52351
|
"description": "One row of days.",
|
|
51700
52352
|
"name": "week"
|
|
@@ -51750,9 +52402,9 @@
|
|
|
51750
52402
|
"kind": "field",
|
|
51751
52403
|
"name": "calendar",
|
|
51752
52404
|
"type": {
|
|
51753
|
-
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | 'coptic' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic-civil' | 'islamic-umalqura' | 'persian' | undefined"
|
|
52405
|
+
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | 'chinese' | 'coptic' | 'dangi' | 'ethioaa' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic' | 'islamic-civil' | 'islamic-rgsa' | 'islamic-tbla' | 'islamic-umalqura' | 'persian' | undefined"
|
|
51754
52406
|
},
|
|
51755
|
-
"description": "The calendar the heading, the days, and the months are written in.\n\n`gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five\nwhose months are the Gregorian months. Absent is the locale's own where\nit is one of the five, such as `buddhist` for `th-TH` or `japanese` for\n`ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`\nfor `fa-IR`.\n\n`persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,\n`
|
|
52407
|
+
"description": "The calendar the heading, the days, and the months are written in.\n\n`gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five\nwhose months are the Gregorian months. Absent is the locale's own where\nit is one of the five, such as `buddhist` for `th-TH` or `japanese` for\n`ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`\nfor `fa-IR`.\n\n`persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,\n`islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,\n`indian`, `chinese`, and `dangi` draw a calendar with months of its own,\nas React Aria's calendars do: each grid is one of that calendar's months,\nthe Hebrew and Chinese leap months and Ethiopia's five-day thirteenth\nmonth included, and Previous, Next and the page keys move by those\nmonths. With `max-view`, the months view shows that calendar's year, of\ntwelve or thirteen months, and the years view its years. `month` and\n`helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The\nvalue is `YYYY-MM-DD` in every calendar.",
|
|
51756
52408
|
"attribute": "calendar"
|
|
51757
52409
|
},
|
|
51758
52410
|
{
|
|
@@ -51892,6 +52544,16 @@
|
|
|
51892
52544
|
"default": "undefined",
|
|
51893
52545
|
"description": "The month on show, whoever set it, and `undefined` until somebody has."
|
|
51894
52546
|
},
|
|
52547
|
+
{
|
|
52548
|
+
"kind": "field",
|
|
52549
|
+
"name": "browsed",
|
|
52550
|
+
"type": {
|
|
52551
|
+
"text": "boolean"
|
|
52552
|
+
},
|
|
52553
|
+
"privacy": "private",
|
|
52554
|
+
"default": "false",
|
|
52555
|
+
"description": "Whether the month on show is one the reader paged to, which `showChosen` forgets."
|
|
52556
|
+
},
|
|
51895
52557
|
{
|
|
51896
52558
|
"kind": "field",
|
|
51897
52559
|
"name": "month",
|
|
@@ -52075,6 +52737,61 @@
|
|
|
52075
52737
|
"description": "The range's ends, when there are two and the mode asks for them.",
|
|
52076
52738
|
"readonly": true
|
|
52077
52739
|
},
|
|
52740
|
+
{
|
|
52741
|
+
"kind": "field",
|
|
52742
|
+
"name": "previewed",
|
|
52743
|
+
"type": {
|
|
52744
|
+
"text": "string"
|
|
52745
|
+
},
|
|
52746
|
+
"privacy": "private",
|
|
52747
|
+
"default": "''",
|
|
52748
|
+
"description": "The day a reader points at or moves to while a range holds one end, which\nthe grid draws the range to before it is chosen."
|
|
52749
|
+
},
|
|
52750
|
+
{
|
|
52751
|
+
"kind": "field",
|
|
52752
|
+
"name": "pending",
|
|
52753
|
+
"type": {
|
|
52754
|
+
"text": "boolean"
|
|
52755
|
+
},
|
|
52756
|
+
"privacy": "private",
|
|
52757
|
+
"description": "Whether a range holds its first end and waits for the second.",
|
|
52758
|
+
"readonly": true
|
|
52759
|
+
},
|
|
52760
|
+
{
|
|
52761
|
+
"kind": "field",
|
|
52762
|
+
"name": "drawnRange",
|
|
52763
|
+
"type": {
|
|
52764
|
+
"text": "{ ends: [string, string]; preview: boolean } | null"
|
|
52765
|
+
},
|
|
52766
|
+
"privacy": "private",
|
|
52767
|
+
"description": "The range the grid draws: the chosen one, or, while one end waits for\nthe other, the run to the day under the pointer or the focus.",
|
|
52768
|
+
"readonly": true
|
|
52769
|
+
},
|
|
52770
|
+
{
|
|
52771
|
+
"kind": "method",
|
|
52772
|
+
"name": "preview",
|
|
52773
|
+
"privacy": "private",
|
|
52774
|
+
"return": {
|
|
52775
|
+
"type": {
|
|
52776
|
+
"text": "void"
|
|
52777
|
+
}
|
|
52778
|
+
},
|
|
52779
|
+
"parameters": [
|
|
52780
|
+
{
|
|
52781
|
+
"name": "iso",
|
|
52782
|
+
"type": {
|
|
52783
|
+
"text": "string"
|
|
52784
|
+
}
|
|
52785
|
+
}
|
|
52786
|
+
],
|
|
52787
|
+
"description": "Draws a waiting range to the day the pointer is on."
|
|
52788
|
+
},
|
|
52789
|
+
{
|
|
52790
|
+
"kind": "field",
|
|
52791
|
+
"name": "handleGridLeave",
|
|
52792
|
+
"privacy": "private",
|
|
52793
|
+
"readonly": true
|
|
52794
|
+
},
|
|
52078
52795
|
{
|
|
52079
52796
|
"kind": "method",
|
|
52080
52797
|
"name": "isSelected",
|
|
@@ -52113,16 +52830,6 @@
|
|
|
52113
52830
|
"description": "The months the calendar pages through: its own under a `calendar` with\nmonths of its own, and the Gregorian months otherwise.",
|
|
52114
52831
|
"readonly": true
|
|
52115
52832
|
},
|
|
52116
|
-
{
|
|
52117
|
-
"kind": "field",
|
|
52118
|
-
"name": "ownMonths",
|
|
52119
|
-
"type": {
|
|
52120
|
-
"text": "boolean"
|
|
52121
|
-
},
|
|
52122
|
-
"privacy": "private",
|
|
52123
|
-
"description": "Whether `calendar` names a calendar with months of its own.",
|
|
52124
|
-
"readonly": true
|
|
52125
|
-
},
|
|
52126
52833
|
{
|
|
52127
52834
|
"kind": "field",
|
|
52128
52835
|
"name": "derivedMonth",
|
|
@@ -52469,6 +53176,19 @@
|
|
|
52469
53176
|
"text": "focus(options?: FocusOptions) => void"
|
|
52470
53177
|
}
|
|
52471
53178
|
},
|
|
53179
|
+
{
|
|
53180
|
+
"kind": "method",
|
|
53181
|
+
"name": "showChosen",
|
|
53182
|
+
"return": {
|
|
53183
|
+
"type": {
|
|
53184
|
+
"text": "void"
|
|
53185
|
+
}
|
|
53186
|
+
},
|
|
53187
|
+
"description": "Shows the days again, on the month of the chosen date, with the tab stop\non that date, forgetting the month and the day the reader browsed to.\n\nDate Input calls it each time its panel opens, which is where the APG\ndate picker dialog puts focus. Measured before this: from August 4, two\npresses of Page Down, Escape, and Down again opened on October 4.\nA `month` you set stays until the reader pages away from it.",
|
|
53188
|
+
"type": {
|
|
53189
|
+
"text": "showChosen() => void"
|
|
53190
|
+
}
|
|
53191
|
+
},
|
|
52472
53192
|
{
|
|
52473
53193
|
"kind": "field",
|
|
52474
53194
|
"name": "rangeUnderflowMessage",
|
|
@@ -52529,6 +53249,29 @@
|
|
|
52529
53249
|
"attribute": "required",
|
|
52530
53250
|
"reflects": true
|
|
52531
53251
|
},
|
|
53252
|
+
{
|
|
53253
|
+
"kind": "field",
|
|
53254
|
+
"name": "selectionLabel",
|
|
53255
|
+
"type": {
|
|
53256
|
+
"text": "string"
|
|
53257
|
+
},
|
|
53258
|
+
"default": "'{kind, select, date {Selected date: {start}} start {Range starts {start}. Choose the day it ends.} range {Selected range: {start} to {end}} other {{count, plural, one {# date selected} other {# dates selected}}}}'",
|
|
53259
|
+
"description": "What a screen reader hears about the chosen dates: the grid's\ndescription, said again whenever the dates change. `{kind}` is `date`,\n`start` while a range holds one end, `range`, or `dates` for `multiple`.\n`{start}` and `{end}` are dates written in `locale`, and `{count}` is how\nmany dates are chosen.",
|
|
53260
|
+
"attribute": "selection-label",
|
|
53261
|
+
"helix": {
|
|
53262
|
+
"words": true
|
|
53263
|
+
}
|
|
53264
|
+
},
|
|
53265
|
+
{
|
|
53266
|
+
"kind": "field",
|
|
53267
|
+
"name": "selectionWords",
|
|
53268
|
+
"type": {
|
|
53269
|
+
"text": "string"
|
|
53270
|
+
},
|
|
53271
|
+
"privacy": "private",
|
|
53272
|
+
"description": "`selectionLabel` for the dates chosen now, or nothing while there are none.\n\nReact Aria's calendars describe the grid by the chosen date or range and\nannounce it when it changes. Measured before this: a range of seven days\nwas seven cells with `aria-selected` in a grid that said nothing of a\nrange, and choosing its end was heard as one more selected cell.",
|
|
53273
|
+
"readonly": true
|
|
53274
|
+
},
|
|
52532
53275
|
{
|
|
52533
53276
|
"kind": "field",
|
|
52534
53277
|
"name": "step",
|
|
@@ -52660,6 +53403,30 @@
|
|
|
52660
53403
|
},
|
|
52661
53404
|
"description": "Reports \"required and empty\", or clears it.\n\nWritten out rather than taken from `MixinField`, which is where the seven\nform controls get this. That mixin brings a label, a hint and a feedback\nregion with it, and this is a grid rather than a field: it is composed\n*into* the field that has those, so taking the mixin would give one control\ntwo of each. What is shared is five lines, and the anchor is what the\nbrowser points its bubble at."
|
|
52662
53405
|
},
|
|
53406
|
+
{
|
|
53407
|
+
"kind": "field",
|
|
53408
|
+
"name": "problem",
|
|
53409
|
+
"type": {
|
|
53410
|
+
"text": "[ValidityStateFlags, string] | undefined"
|
|
53411
|
+
},
|
|
53412
|
+
"privacy": "private",
|
|
53413
|
+
"description": "What is wrong with the answer, as validity flags and a message, or nothing.\n`reportRequired` hands it to the form, and `failure` to the mark.",
|
|
53414
|
+
"readonly": true
|
|
53415
|
+
},
|
|
53416
|
+
{
|
|
53417
|
+
"kind": "field",
|
|
53418
|
+
"name": "failure",
|
|
53419
|
+
"type": {
|
|
53420
|
+
"text": "'missing' | 'refused' | undefined"
|
|
53421
|
+
},
|
|
53422
|
+
"privacy": "protected",
|
|
53423
|
+
"description": "A missing date waits for the reader; a refused one is marked at once.",
|
|
53424
|
+
"readonly": true,
|
|
53425
|
+
"inheritedFrom": {
|
|
53426
|
+
"name": "MixinPickerFeedback",
|
|
53427
|
+
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
53428
|
+
}
|
|
53429
|
+
},
|
|
52663
53430
|
{
|
|
52664
53431
|
"kind": "method",
|
|
52665
53432
|
"name": "report",
|
|
@@ -52850,6 +53617,20 @@
|
|
|
52850
53617
|
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
52851
53618
|
}
|
|
52852
53619
|
},
|
|
53620
|
+
{
|
|
53621
|
+
"kind": "field",
|
|
53622
|
+
"name": "touched",
|
|
53623
|
+
"type": {
|
|
53624
|
+
"text": "boolean"
|
|
53625
|
+
},
|
|
53626
|
+
"privacy": "private",
|
|
53627
|
+
"default": "false",
|
|
53628
|
+
"description": "Whether the reader has committed an answer, or a form has refused the\npicker. A reset forgets it.",
|
|
53629
|
+
"inheritedFrom": {
|
|
53630
|
+
"name": "MixinPickerFeedback",
|
|
53631
|
+
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
53632
|
+
}
|
|
53633
|
+
},
|
|
52853
53634
|
{
|
|
52854
53635
|
"kind": "field",
|
|
52855
53636
|
"name": "marked",
|
|
@@ -52857,13 +53638,30 @@
|
|
|
52857
53638
|
"text": "boolean"
|
|
52858
53639
|
},
|
|
52859
53640
|
"privacy": "protected",
|
|
52860
|
-
"description": "Whether a reader is told the answer is wrong: `invalid`, or `
|
|
53641
|
+
"description": "Whether a reader is told the answer is wrong: `invalid`, `feedback`, a\nheld answer the picker refuses, or a missing answer once the reader has\ncommitted one or a form has refused the picker.\n\n**A refused answer is marked at once, and a missing one waits**, as\nChromium's tree does for native controls: a time input holding a time\npast its `max` reports invalid on load, and an empty required text field\ndoes not, since the reader already hears that it is required. Measured\nbefore this on Time Picker: `value=\"13:00\" max=\"12:00\"` reported\n`rangeOverflow` while the list said nothing and `:state(invalid)` was off.",
|
|
52861
53642
|
"readonly": true,
|
|
52862
53643
|
"inheritedFrom": {
|
|
52863
53644
|
"name": "MixinPickerFeedback",
|
|
52864
53645
|
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
52865
53646
|
}
|
|
52866
53647
|
},
|
|
53648
|
+
{
|
|
53649
|
+
"kind": "method",
|
|
53650
|
+
"name": "formResetCallback",
|
|
53651
|
+
"return": {
|
|
53652
|
+
"type": {
|
|
53653
|
+
"text": "void"
|
|
53654
|
+
}
|
|
53655
|
+
},
|
|
53656
|
+
"description": "Returns the control to its `defaultValue`, or to its `value` attribute\nwhere there is no `default-value`.\n\nBoth halves are dropped, the consumer's and the control's, because a\nreset means the form is as it was served. Clearing only the internal one\nwould leave a control that had been written to stuck at that value.",
|
|
53657
|
+
"inheritedFrom": {
|
|
53658
|
+
"name": "HelixFormElement",
|
|
53659
|
+
"module": "src/helix-form-element/helix-form-element.ts"
|
|
53660
|
+
},
|
|
53661
|
+
"type": {
|
|
53662
|
+
"text": "formResetCallback() => void"
|
|
53663
|
+
}
|
|
53664
|
+
},
|
|
52867
53665
|
{
|
|
52868
53666
|
"kind": "method",
|
|
52869
53667
|
"name": "renderPickerFeedback",
|
|
@@ -52964,23 +53762,6 @@
|
|
|
52964
53762
|
"module": "src/mixins/mixin-controller-value/mixin-controller-value.ts"
|
|
52965
53763
|
}
|
|
52966
53764
|
},
|
|
52967
|
-
{
|
|
52968
|
-
"kind": "method",
|
|
52969
|
-
"name": "formResetCallback",
|
|
52970
|
-
"return": {
|
|
52971
|
-
"type": {
|
|
52972
|
-
"text": "void"
|
|
52973
|
-
}
|
|
52974
|
-
},
|
|
52975
|
-
"description": "Returns the control to its `defaultValue`, or to its `value` attribute\nwhere there is no `default-value`.\n\nBoth halves are dropped, the consumer's and the control's, because a\nreset means the form is as it was served. Clearing only the internal one\nwould leave a control that had been written to stuck at that value.",
|
|
52976
|
-
"inheritedFrom": {
|
|
52977
|
-
"name": "HelixFormElement",
|
|
52978
|
-
"module": "src/helix-form-element/helix-form-element.ts"
|
|
52979
|
-
},
|
|
52980
|
-
"type": {
|
|
52981
|
-
"text": "formResetCallback() => void"
|
|
52982
|
-
}
|
|
52983
|
-
},
|
|
52984
53765
|
{
|
|
52985
53766
|
"kind": "method",
|
|
52986
53767
|
"name": "formStateRestoreCallback",
|
|
@@ -53814,9 +54595,9 @@
|
|
|
53814
54595
|
{
|
|
53815
54596
|
"name": "calendar",
|
|
53816
54597
|
"type": {
|
|
53817
|
-
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | 'coptic' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic-civil' | 'islamic-umalqura' | 'persian' | undefined"
|
|
54598
|
+
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | 'chinese' | 'coptic' | 'dangi' | 'ethioaa' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic' | 'islamic-civil' | 'islamic-rgsa' | 'islamic-tbla' | 'islamic-umalqura' | 'persian' | undefined"
|
|
53818
54599
|
},
|
|
53819
|
-
"description": "The calendar the heading, the days, and the months are written in.\n\n`gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five\nwhose months are the Gregorian months. Absent is the locale's own where\nit is one of the five, such as `buddhist` for `th-TH` or `japanese` for\n`ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`\nfor `fa-IR`.\n\n`persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,\n`
|
|
54600
|
+
"description": "The calendar the heading, the days, and the months are written in.\n\n`gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five\nwhose months are the Gregorian months. Absent is the locale's own where\nit is one of the five, such as `buddhist` for `th-TH` or `japanese` for\n`ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`\nfor `fa-IR`.\n\n`persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,\n`islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,\n`indian`, `chinese`, and `dangi` draw a calendar with months of its own,\nas React Aria's calendars do: each grid is one of that calendar's months,\nthe Hebrew and Chinese leap months and Ethiopia's five-day thirteenth\nmonth included, and Previous, Next and the page keys move by those\nmonths. With `max-view`, the months view shows that calendar's year, of\ntwelve or thirteen months, and the years view its years. `month` and\n`helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The\nvalue is `YYYY-MM-DD` in every calendar.",
|
|
53820
54601
|
"fieldName": "calendar"
|
|
53821
54602
|
},
|
|
53822
54603
|
{
|
|
@@ -54022,6 +54803,15 @@
|
|
|
54022
54803
|
"description": "Stops the form from submitting while no date is chosen.",
|
|
54023
54804
|
"fieldName": "required"
|
|
54024
54805
|
},
|
|
54806
|
+
{
|
|
54807
|
+
"name": "selection-label",
|
|
54808
|
+
"type": {
|
|
54809
|
+
"text": "string"
|
|
54810
|
+
},
|
|
54811
|
+
"default": "'{kind, select, date {Selected date: {start}} start {Range starts {start}. Choose the day it ends.} range {Selected range: {start} to {end}} other {{count, plural, one {# date selected} other {# dates selected}}}}'",
|
|
54812
|
+
"description": "What a screen reader hears about the chosen dates: the grid's\ndescription, said again whenever the dates change. `{kind}` is `date`,\n`start` while a range holds one end, `range`, or `dates` for `multiple`.\n`{start}` and `{end}` are dates written in `locale`, and `{count}` is how\nmany dates are chosen.",
|
|
54813
|
+
"fieldName": "selectionLabel"
|
|
54814
|
+
},
|
|
54025
54815
|
{
|
|
54026
54816
|
"name": "step",
|
|
54027
54817
|
"type": {
|
|
@@ -54165,9 +54955,25 @@
|
|
|
54165
54955
|
],
|
|
54166
54956
|
"cssStates": [
|
|
54167
54957
|
{
|
|
54168
|
-
"description": "While
|
|
54958
|
+
"description": "While no date is chosen.",
|
|
54959
|
+
"name": "blank"
|
|
54960
|
+
},
|
|
54961
|
+
{
|
|
54962
|
+
"description": "While `invalid` is set, `feedback` says what is wrong, the picker holds a date outside `min` and `max` or one it bars, or it is `required`, holds no date, and the reader has answered once or a form has refused it.",
|
|
54169
54963
|
"name": "invalid"
|
|
54170
54964
|
},
|
|
54965
|
+
{
|
|
54966
|
+
"description": "While the months of a year are shown, where `max-view` is set.",
|
|
54967
|
+
"name": "month-view"
|
|
54968
|
+
},
|
|
54969
|
+
{
|
|
54970
|
+
"description": "While a `range` holds its first end and waits for the second.",
|
|
54971
|
+
"name": "range-pending"
|
|
54972
|
+
},
|
|
54973
|
+
{
|
|
54974
|
+
"description": "While a page of years is shown, where `max-view` is `year`.",
|
|
54975
|
+
"name": "year-view"
|
|
54976
|
+
},
|
|
54171
54977
|
{
|
|
54172
54978
|
"description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
|
|
54173
54979
|
"name": "settled",
|
|
@@ -69760,7 +70566,7 @@
|
|
|
69760
70566
|
"type": {
|
|
69761
70567
|
"text": "Record<string, (value: string) => TemplateResult>"
|
|
69762
70568
|
},
|
|
69763
|
-
"default": "{ day: (value) => html`<span part=\"day\">${value}</span>`, dayPeriod: (value) => html`<span part=\"day-period\">${value}</span>`, era: (value) => html`<span part=\"era\">${value}</span>`, hour: (value) => html`<span part=\"hour\">${value}</span>`, minute: (value) => html`<span part=\"minute\">${value}</span>`, month: (value) => html`<span part=\"month\">${value}</span>`, second: (value) => html`<span part=\"second\">${value}</span>`, timeZoneName: (value) => html`<span part=\"time-zone-name\">${value}</span>`, weekday: (value) => html`<span part=\"weekday\">${value}</span>`, year: (value) => html`<span part=\"year\">${value}</span>`, }",
|
|
70569
|
+
"default": "{ day: (value) => html`<span part=\"day\">${value}</span>`, dayPeriod: (value) => html`<span part=\"day-period\">${value}</span>`, era: (value) => html`<span part=\"era\">${value}</span>`, fractionalSecond: (value) => html`<span part=\"fractional-second\">${value}</span>`, hour: (value) => html`<span part=\"hour\">${value}</span>`, minute: (value) => html`<span part=\"minute\">${value}</span>`, month: (value) => html`<span part=\"month\">${value}</span>`, second: (value) => html`<span part=\"second\">${value}</span>`, timeZoneName: (value) => html`<span part=\"time-zone-name\">${value}</span>`, weekday: (value) => html`<span part=\"weekday\">${value}</span>`, year: (value) => html`<span part=\"year\">${value}</span>`, }",
|
|
69764
70570
|
"description": "Each date field `Intl` names, drawn as a part of its own.\n\nKeyed by the `type` of `Intl.DateTimeFormat#formatToParts`. Written out one\ntemplate to a field rather than bound through one `part` binding, because a\npart is read from the source as a literal: a bound name is a part no\nstylesheet check can find. A type left out, the punctuation between the\nfields among them, is drawn as plain text."
|
|
69765
70571
|
},
|
|
69766
70572
|
{
|
|
@@ -69860,7 +70666,7 @@
|
|
|
69860
70666
|
"declarations": [
|
|
69861
70667
|
{
|
|
69862
70668
|
"kind": "class",
|
|
69863
|
-
"description": "Formats a date with `Intl` where it is shown, so you do not write the same\n`Intl` call and options in your own code.\n\n**`elapsed` shows compact relative time for a feed**, such as \"42m\", \"3h\", or\n\"1d\". After six days it shows a date. In en-US, `Intl.NumberFormat` narrow\nrenders both `minute` and `month` as `m`, so a compact \"3m\" could mean three\nminutes or three months. `elapsedTime` in `helix/core` does the measurement.\n\n**`relative` shows the same reading in words**, such as \"3 hours ago\" at\n`long`, \"3 hr. ago\" at `short` and \"3h ago\" at `narrow`, the styles\n`sl-relative-time` offers. `numeric=\"always\"` says \"1 day ago\" where the\ndefault says \"yesterday\".\n\n**`date-style` and `time-style` take each locale's own pattern**, such as\n\"Tuesday, August 4, 2026\" at `full`, and stand in for the separate fields,\nwhich `Intl` refuses beside them. `hour-cycle` sets a twelve or twenty-four\nhour clock either way.\n\n**The text refreshes on one timer shared by the page.** Each element\nschedules an update for when its current reading expires, and an element\nshowing a date schedules none, so a long feed left open costs almost nothing.\n`frozen` draws the reading once and leaves it.\n\n**`fields` draws each field of a date as a part of its own**, such as\n`day`, `month` and `year`, so a stylesheet can set the year in a lighter ink\nor the weekday in capitals with `::part()`. The text between the fields is\nthe locale's own and has no part. An `elapsed` or `relative` reading is one\nphrase, with no parts inside it.\n\n**The output is always `<time datetime>`**, so copy and paste and scripts\nparsing the page get the exact instant, whatever the visible text says. A\nscreen reader reads the text, so an `elapsed` reading is named in full, such\nas \"3 hours ago\", and carries the whole date as its title.\n\n**A date with no time, such as `2026-08-04`, is that day everywhere.** It is\nformatted in UTC unless `time-zone` says otherwise, as Date Input and Date\nPicker format their dates, so a reader west of UTC sees August 4 and not\nAugust 3.\n\n**A date is written in a calendar Date Picker draws**: the locale's own\nwhere its months are the Gregorian months, as `th-TH` writes 2569 for 2026,\nand `gregory` where they are not, as for `fa-IR`. `calendar` picks
|
|
70669
|
+
"description": "Formats a date with `Intl` where it is shown, so you do not write the same\n`Intl` call and options in your own code.\n\n**`elapsed` shows compact relative time for a feed**, such as \"42m\", \"3h\", or\n\"1d\". After six days it shows a date. In en-US, `Intl.NumberFormat` narrow\nrenders both `minute` and `month` as `m`, so a compact \"3m\" could mean three\nminutes or three months. `elapsedTime` in `helix/core` does the measurement.\n\n**`relative` shows the same reading in words**, such as \"3 hours ago\" at\n`long`, \"3 hr. ago\" at `short` and \"3h ago\" at `narrow`, the styles\n`sl-relative-time` offers. `numeric=\"always\"` says \"1 day ago\" where the\ndefault says \"yesterday\".\n\n**`date-style` and `time-style` take each locale's own pattern**, such as\n\"Tuesday, August 4, 2026\" at `full`, and stand in for the separate fields,\nwhich `Intl` refuses beside them. `hour-cycle` sets a twelve or twenty-four\nhour clock either way.\n\n**The text refreshes on one timer shared by the page.** Each element\nschedules an update for when its current reading expires, and an element\nshowing a date schedules none, so a long feed left open costs almost nothing.\n`frozen` draws the reading once and leaves it.\n\n**`fields` draws each field of a date as a part of its own**, such as\n`day`, `month` and `year`, so a stylesheet can set the year in a lighter ink\nor the weekday in capitals with `::part()`. The text between the fields is\nthe locale's own and has no part. An `elapsed` or `relative` reading is one\nphrase, with no parts inside it.\n\n**The output is always `<time datetime>`**, so copy and paste and scripts\nparsing the page get the exact instant, whatever the visible text says. A\nscreen reader reads the text, so an `elapsed` reading is named in full, such\nas \"3 hours ago\", and carries the whole date as its title.\n\n**A date with no time, such as `2026-08-04`, is that day everywhere.** It is\nformatted in UTC unless `time-zone` says otherwise, as Date Input and Date\nPicker format their dates, so a reader west of UTC sees August 4 and not\nAugust 3.\n\n**A date is written in a calendar Date Picker draws**: the locale's own\nwhere its months are the Gregorian months, as `th-TH` writes 2569 for 2026,\nand `gregory` where they are not, as for `fa-IR`. `calendar` picks any of\nthem, `persian` and `hebrew` included.",
|
|
69864
70670
|
"name": "HelixHeadlessFormatDate",
|
|
69865
70671
|
"cssParts": [
|
|
69866
70672
|
{
|
|
@@ -69875,6 +70681,10 @@
|
|
|
69875
70681
|
"description": "The era, such as AD, with `fields` and `era`.",
|
|
69876
70682
|
"name": "era"
|
|
69877
70683
|
},
|
|
70684
|
+
{
|
|
70685
|
+
"description": "The fraction of a second, with `fields` and `fractional-second-digits`.",
|
|
70686
|
+
"name": "fractional-second"
|
|
70687
|
+
},
|
|
69878
70688
|
{
|
|
69879
70689
|
"description": "The hour, with `fields`.",
|
|
69880
70690
|
"name": "hour"
|
|
@@ -69913,9 +70723,9 @@
|
|
|
69913
70723
|
"kind": "field",
|
|
69914
70724
|
"name": "calendar",
|
|
69915
70725
|
"type": {
|
|
69916
|
-
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | undefined"
|
|
70726
|
+
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | 'chinese' | 'coptic' | 'dangi' | 'ethioaa' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic' | 'islamic-civil' | 'islamic-rgsa' | 'islamic-tbla' | 'islamic-umalqura' | 'persian' | undefined"
|
|
69917
70727
|
},
|
|
69918
|
-
"description": "The calendar a date is written in: `gregory`, `buddhist`, `japanese`,\n`roc`, or `iso8601`,
|
|
70728
|
+
"description": "The calendar a date is written in: `gregory`, `buddhist`, `japanese`,\n`roc`, or `iso8601`, or a calendar with months of its own, such as\n`persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every\ncalendar Date Picker and Date Input draw.\n\nAbsent is the locale's own where its months are the Gregorian months,\nsuch as `buddhist` for `th-TH`, and `gregory` for every other, such as\n`persian` for `fa-IR`, so a date written here reads as the same date a\nDate Picker beside it shows. Write `calendar=\"persian\"` for Mehr 14, 1405.",
|
|
69919
70729
|
"attribute": "calendar"
|
|
69920
70730
|
},
|
|
69921
70731
|
{
|
|
@@ -69946,6 +70756,15 @@
|
|
|
69946
70756
|
"description": "How the day of the month is written, where a date is shown.",
|
|
69947
70757
|
"attribute": "day"
|
|
69948
70758
|
},
|
|
70759
|
+
{
|
|
70760
|
+
"kind": "field",
|
|
70761
|
+
"name": "dayPeriod",
|
|
70762
|
+
"type": {
|
|
70763
|
+
"text": "'long' | 'narrow' | 'short' | undefined"
|
|
70764
|
+
},
|
|
70765
|
+
"description": "Writes the part of the day in words, such as \"in the morning\" or \"at\nnight\", in its `long`, `short`, or `narrow` form, where `hour` is on a\ntwelve-hour clock.",
|
|
70766
|
+
"attribute": "day-period"
|
|
70767
|
+
},
|
|
69949
70768
|
{
|
|
69950
70769
|
"kind": "field",
|
|
69951
70770
|
"name": "elapsed",
|
|
@@ -69975,6 +70794,15 @@
|
|
|
69975
70794
|
"description": "Draws each field of a date in a part of its own: `weekday`, `day`,\n`month`, `year`, `era`, `hour`, `minute`, `second`, `day-period` and\n`time-zone-name`, so `::part(year)` can set the year apart.\n\nOff by default, which draws the date as one run of text, as Shoelace and\nWeb Awesome do. An `elapsed` or `relative` reading is one phrase either\nway.",
|
|
69976
70795
|
"attribute": "fields"
|
|
69977
70796
|
},
|
|
70797
|
+
{
|
|
70798
|
+
"kind": "field",
|
|
70799
|
+
"name": "fractionalSecondDigits",
|
|
70800
|
+
"type": {
|
|
70801
|
+
"text": "1 | 2 | 3 | undefined"
|
|
70802
|
+
},
|
|
70803
|
+
"description": "How many digits of a fraction of a second to write after `second`: 1, 2,\nor 3, as in 09:41:07.250.",
|
|
70804
|
+
"attribute": "fractional-second-digits"
|
|
70805
|
+
},
|
|
69978
70806
|
{
|
|
69979
70807
|
"kind": "field",
|
|
69980
70808
|
"name": "frozen",
|
|
@@ -70090,9 +70918,9 @@
|
|
|
70090
70918
|
"kind": "field",
|
|
70091
70919
|
"name": "timeZoneName",
|
|
70092
70920
|
"type": {
|
|
70093
|
-
"text": "'long' | 'short' | undefined"
|
|
70921
|
+
"text": "'long' | 'longGeneric' | 'longOffset' | 'short' | 'shortGeneric' | 'shortOffset' | undefined"
|
|
70094
70922
|
},
|
|
70095
|
-
"description": "Shows the name of the time zone
|
|
70923
|
+
"description": "Shows the name of the time zone: `long` or `short`, as Pacific Daylight\nTime or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or\n`longGeneric` or `shortGeneric`, as Pacific Time or PT.",
|
|
70096
70924
|
"attribute": "time-zone-name"
|
|
70097
70925
|
},
|
|
70098
70926
|
{
|
|
@@ -70569,9 +71397,9 @@
|
|
|
70569
71397
|
{
|
|
70570
71398
|
"name": "calendar",
|
|
70571
71399
|
"type": {
|
|
70572
|
-
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | undefined"
|
|
71400
|
+
"text": "'buddhist' | 'gregory' | 'iso8601' | 'japanese' | 'roc' | 'chinese' | 'coptic' | 'dangi' | 'ethioaa' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic' | 'islamic-civil' | 'islamic-rgsa' | 'islamic-tbla' | 'islamic-umalqura' | 'persian' | undefined"
|
|
70573
71401
|
},
|
|
70574
|
-
"description": "The calendar a date is written in: `gregory`, `buddhist`, `japanese`,\n`roc`, or `iso8601`,
|
|
71402
|
+
"description": "The calendar a date is written in: `gregory`, `buddhist`, `japanese`,\n`roc`, or `iso8601`, or a calendar with months of its own, such as\n`persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every\ncalendar Date Picker and Date Input draw.\n\nAbsent is the locale's own where its months are the Gregorian months,\nsuch as `buddhist` for `th-TH`, and `gregory` for every other, such as\n`persian` for `fa-IR`, so a date written here reads as the same date a\nDate Picker beside it shows. Write `calendar=\"persian\"` for Mehr 14, 1405.",
|
|
70575
71403
|
"fieldName": "calendar"
|
|
70576
71404
|
},
|
|
70577
71405
|
{
|
|
@@ -70599,6 +71427,14 @@
|
|
|
70599
71427
|
"description": "How the day of the month is written, where a date is shown.",
|
|
70600
71428
|
"fieldName": "day"
|
|
70601
71429
|
},
|
|
71430
|
+
{
|
|
71431
|
+
"name": "day-period",
|
|
71432
|
+
"type": {
|
|
71433
|
+
"text": "'long' | 'narrow' | 'short' | undefined"
|
|
71434
|
+
},
|
|
71435
|
+
"description": "Writes the part of the day in words, such as \"in the morning\" or \"at\nnight\", in its `long`, `short`, or `narrow` form, where `hour` is on a\ntwelve-hour clock.",
|
|
71436
|
+
"fieldName": "dayPeriod"
|
|
71437
|
+
},
|
|
70602
71438
|
{
|
|
70603
71439
|
"name": "elapsed",
|
|
70604
71440
|
"type": {
|
|
@@ -70624,6 +71460,14 @@
|
|
|
70624
71460
|
"description": "Draws each field of a date in a part of its own: `weekday`, `day`,\n`month`, `year`, `era`, `hour`, `minute`, `second`, `day-period` and\n`time-zone-name`, so `::part(year)` can set the year apart.\n\nOff by default, which draws the date as one run of text, as Shoelace and\nWeb Awesome do. An `elapsed` or `relative` reading is one phrase either\nway.",
|
|
70625
71461
|
"fieldName": "fields"
|
|
70626
71462
|
},
|
|
71463
|
+
{
|
|
71464
|
+
"name": "fractional-second-digits",
|
|
71465
|
+
"type": {
|
|
71466
|
+
"text": "1 | 2 | 3 | undefined"
|
|
71467
|
+
},
|
|
71468
|
+
"description": "How many digits of a fraction of a second to write after `second`: 1, 2,\nor 3, as in 09:41:07.250.",
|
|
71469
|
+
"fieldName": "fractionalSecondDigits"
|
|
71470
|
+
},
|
|
70627
71471
|
{
|
|
70628
71472
|
"name": "frozen",
|
|
70629
71473
|
"type": {
|
|
@@ -70717,9 +71561,9 @@
|
|
|
70717
71561
|
{
|
|
70718
71562
|
"name": "time-zone-name",
|
|
70719
71563
|
"type": {
|
|
70720
|
-
"text": "'long' | 'short' | undefined"
|
|
71564
|
+
"text": "'long' | 'longGeneric' | 'longOffset' | 'short' | 'shortGeneric' | 'shortOffset' | undefined"
|
|
70721
71565
|
},
|
|
70722
|
-
"description": "Shows the name of the time zone
|
|
71566
|
+
"description": "Shows the name of the time zone: `long` or `short`, as Pacific Daylight\nTime or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or\n`longGeneric` or `shortGeneric`, as Pacific Time or PT.",
|
|
70723
71567
|
"fieldName": "timeZoneName"
|
|
70724
71568
|
},
|
|
70725
71569
|
{
|
|
@@ -77572,6 +78416,14 @@
|
|
|
77572
78416
|
"module": "src/button/root/button-root.ts"
|
|
77573
78417
|
}
|
|
77574
78418
|
},
|
|
78419
|
+
{
|
|
78420
|
+
"description": "A Button Group in a selection mode has this button pressed.",
|
|
78421
|
+
"name": "pressed",
|
|
78422
|
+
"inheritedFrom": {
|
|
78423
|
+
"name": "HelixHeadlessButton",
|
|
78424
|
+
"module": "src/button/root/button-root.ts"
|
|
78425
|
+
}
|
|
78426
|
+
},
|
|
77575
78427
|
{
|
|
77576
78428
|
"description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
|
|
77577
78429
|
"name": "settled",
|
|
@@ -84197,7 +85049,7 @@
|
|
|
84197
85049
|
"declarations": [
|
|
84198
85050
|
{
|
|
84199
85051
|
"kind": "class",
|
|
84200
|
-
"description": "Wraps one piece of content in the lightbox, such as a picture, a video frame,\nor a chart. The lightbox shows one item at a time, and the root decides\nwhich.\n\nEach item is a `group` with the role description `slide`, named by its\n`label` or, without one, by its place in the set, such as \"2 of 5\", as the\nAPG carousel pattern names a slide. The lightbox supplies both words, so they\nare translated on the lightbox.\n\nAn item that is not current is hidden and stays in the DOM, as a `TabPanel`\ndoes. Crawlers can read it, it is in the server-rendered markup, and an\n`<img>` that has decoded does not decode again when you go back to it.",
|
|
85052
|
+
"description": "Wraps one piece of content in the lightbox, such as a picture, a video frame,\nor a chart. The lightbox shows one item at a time, and the root decides\nwhich.\n\nEach item is a `group` with the role description `slide`, named by its\n`label` or, without one, by its place in the set, such as \"2 of 5\", as the\nAPG carousel pattern names a slide. The lightbox supplies both words, so they\nare translated on the lightbox. A `description`, while there is one,\ndescribes the group, so a screen reader says it with the name.\n\nAn item that is not current is hidden and stays in the DOM, as a `TabPanel`\ndoes. Crawlers can read it, it is in the server-rendered markup, and an\n`<img>` that has decoded does not decode again when you go back to it.",
|
|
84201
85053
|
"name": "HelixHeadlessLightboxItem",
|
|
84202
85054
|
"cssParts": [
|
|
84203
85055
|
{
|
|
@@ -84246,6 +85098,23 @@
|
|
|
84246
85098
|
"description": "The item's identifier. The root compares its `active` value against it.",
|
|
84247
85099
|
"attribute": "value"
|
|
84248
85100
|
},
|
|
85101
|
+
{
|
|
85102
|
+
"kind": "field",
|
|
85103
|
+
"name": "described",
|
|
85104
|
+
"type": {
|
|
85105
|
+
"text": "boolean"
|
|
85106
|
+
},
|
|
85107
|
+
"privacy": "private",
|
|
85108
|
+
"default": "false",
|
|
85109
|
+
"description": "Whether anything is slotted into `description`, which then describes the group."
|
|
85110
|
+
},
|
|
85111
|
+
{
|
|
85112
|
+
"kind": "field",
|
|
85113
|
+
"name": "readDescription",
|
|
85114
|
+
"privacy": "private",
|
|
85115
|
+
"readonly": true,
|
|
85116
|
+
"description": "Reads whether the `description` slot holds anything."
|
|
85117
|
+
},
|
|
84249
85118
|
{
|
|
84250
85119
|
"kind": "field",
|
|
84251
85120
|
"name": "tier",
|
|
@@ -84678,7 +85547,7 @@
|
|
|
84678
85547
|
"declarations": [
|
|
84679
85548
|
{
|
|
84680
85549
|
"kind": "class",
|
|
84681
|
-
"description": "The frame around content you open, such as a picture, a video frame, or a\nchart. The lightbox draws no content of its own. It provides the frame, the\nkeyboard behavior, and text that states the current position in the set.\n\nThe modal behavior comes from a native `<dialog>` opened with `showModal()`,\nwhich provides the top layer, a backdrop, Escape to close, and `inert` on the\nrest of the document. Every way of closing goes through `requestOpen`, as in\n`Dialog` and `Drawer`.\n\nA lightbox shows one item at a time and has no scrolling track, so `active`\nholds the current item, as in `Tabs`. The arrow keys change the item while\nfocus stays in the dialog.\n\nSet `controls` for the viewer's own previous, next and close controls, named\nby `previous-label`, `next-label` and `dismiss-label`, whose glyphs you can\nreplace in the `previous-icon`, `next-icon` and `dismiss-icon` slots. Without\nit, compose the chrome yourself in the `header` and `footer` slots, with\nbuttons that send `--previous`, `--next` and `--close`.\n\n**Set `max-zoom` to let a reader zoom into the shown item**, such as `3`.\nTwo fingers pinch it, a double click or a double tap
|
|
85550
|
+
"description": "The frame around content you open, such as a picture, a video frame, or a\nchart. The lightbox draws no content of its own. It provides the frame, the\nkeyboard behavior, and text that states the current position in the set.\n\nThe modal behavior comes from a native `<dialog>` opened with `showModal()`,\nwhich provides the top layer, a backdrop, Escape to close, and `inert` on the\nrest of the document. Every way of closing goes through `requestOpen`, as in\n`Dialog` and `Drawer`.\n\nA lightbox shows one item at a time and has no scrolling track, so `active`\nholds the current item, as in `Tabs`. The arrow keys change the item while\nfocus stays in the dialog.\n\nSet `controls` for the viewer's own previous, next and close controls, named\nby `previous-label`, `next-label` and `dismiss-label`, whose glyphs you can\nreplace in the `previous-icon`, `next-icon` and `dismiss-icon` slots. Without\nit, compose the chrome yourself in the `header` and `footer` slots, with\nbuttons that send `--previous`, `--next` and `--close`.\n\n**Set `max-zoom` to let a reader zoom into the shown item**, such as `3`.\nTwo fingers pinch it, and so does a trackpad pinch or the wheel with Ctrl\nheld, about the point under the pointer. A double click or a double tap\nzooms all the way in about the point pressed and back out, and once zoomed\none pointer drags it about and the wheel moves it. `+` and `-` zoom in and out from the keyboard, and `0` puts it back.\nThe scale and the offset are on the `viewport` part as `--lightbox-zoom`,\n`--lightbox-pan-x` and `--lightbox-pan-y`, written only while zoomed, and a\nswipe moves to the next item only while the item is at its own size. With\n`controls`, the viewer also draws zoom-out and zoom-in controls, for a\npointer with no wheel and no second finger. Once a reader stops zooming, the\nlive region says the new scale in the words of `zoom-status-label`, such as\n\"Zoomed to 150%\".\n\nEach item is a slide: a `group` with the role description in\n`slide-role-label`, named by its `label` or by `slide-label`. A touch or a pen\nswiped across the picture shows the next or the previous item, the way the\nline of text runs.\n\nA press on the empty area around the item closes the viewer, as a press on\nthe backdrop does. Under `max-zoom`, a press beside the item zooms on a\ndouble press and closes nothing, and only the space outside the viewport\ncloses the viewer. A press that dragged closes nothing.\n\n**Keyboard.** Opening moves focus to the viewer itself, which a screen\nreader names.\n\n| Key | What it does |\n|---|---|\n| Right, Down | Shows the next item. On a right-to-left page, Left does. While the item is zoomed, the arrows move about it instead. |\n| Left, Up | Shows the previous item. |\n| Home, End | Shows the first or the last item. |\n| `+`, `-`, `0` | Zooms in, zooms out, and puts the item back at its own size, where `max-zoom` allows zooming. |\n| Tab, Shift+Tab | Moves through the controls in the viewer, from the last round to the first and from the first round to the last. |\n| Escape | Closes the viewer. A `helix-before-close` listener can refuse. |\n\nA development build warns when a viewer opens with no `label`.\n\nThe chrome hides when there is no input, through `IdleController`, and comes\nback on a pointer move, a key press, or a focus. It stays while focus is on a\ncontrol in the header or the footer, so a keyboard reader is never left on\na control that has gone. `fullscreen` uses `FullscreenController`, as `Video`\ndoes. While the viewer is open, the page behind it does not scroll.",
|
|
84682
85551
|
"name": "HelixHeadlessLightbox",
|
|
84683
85552
|
"cssProperties": [
|
|
84684
85553
|
{
|
|
@@ -85069,6 +85938,13 @@
|
|
|
85069
85938
|
"readonly": true,
|
|
85070
85939
|
"default": "new FocusScopeController(this, { contain: () => this.open, contents: () => [ ...['header', '', 'footer'].flatMap( (name) => this.renderRoot ?.querySelector<HTMLSlotElement>(name ? `slot[name=\"${name}\"]` : 'slot:not([name])') ?.assignedElements({ flatten: true }) ?? [], ), /* And the controls the viewer draws itself. */ ...[...(this.dialog?.children ?? [])].filter((one) => one.localName === 'button'), ], surface: () => this.dialog, })"
|
|
85071
85940
|
},
|
|
85941
|
+
{
|
|
85942
|
+
"kind": "field",
|
|
85943
|
+
"name": "phases",
|
|
85944
|
+
"privacy": "protected",
|
|
85945
|
+
"readonly": true,
|
|
85946
|
+
"default": "new OpenPhaseController(this, { mark: { entering: (on) => this.toggleState('entering', on), exiting: (on) => this.toggleState('exiting', on), }, open: () => this.open, surface: () => this.dialog, })"
|
|
85947
|
+
},
|
|
85072
85948
|
{
|
|
85073
85949
|
"kind": "field",
|
|
85074
85950
|
"name": "zoomer",
|
|
@@ -86347,6 +87223,14 @@
|
|
|
86347
87223
|
}
|
|
86348
87224
|
],
|
|
86349
87225
|
"cssStates": [
|
|
87226
|
+
{
|
|
87227
|
+
"description": "From the moment the viewer opens until its entrance has finished.",
|
|
87228
|
+
"name": "entering"
|
|
87229
|
+
},
|
|
87230
|
+
{
|
|
87231
|
+
"description": "From the moment the viewer closes until its exit has finished.",
|
|
87232
|
+
"name": "exiting"
|
|
87233
|
+
},
|
|
86350
87234
|
{
|
|
86351
87235
|
"description": "While the viewer fills the screen.",
|
|
86352
87236
|
"name": "fullscreen"
|
|
@@ -86444,7 +87328,7 @@
|
|
|
86444
87328
|
"declarations": [
|
|
86445
87329
|
{
|
|
86446
87330
|
"kind": "class",
|
|
86447
|
-
"description": "Pinch, double press and drag to zoom into the item a viewer shows, and to\nmove about it once zoomed.\n\nTwo fingers scale the item about the point between them. A double press, a
|
|
87331
|
+
"description": "Pinch, double press and drag to zoom into the item a viewer shows, and to\nmove about it once zoomed.\n\nTwo fingers scale the item about the point between them. A trackpad pinch,\nwhich the browser sends as a wheel with Ctrl held, and the wheel with Ctrl\nheld scale it about the pointer. A double press, a double click or a double\ntap, zooms all the way in about the point pressed, and back out again. One\npointer dragged across a zoomed item moves it, never so far that an edge\ncomes inside the box, and so does the wheel without Ctrl. What it reports is a scale and an\noffset from the middle of the box; drawing them is the caller's.",
|
|
86448
87332
|
"name": "ZoomController",
|
|
86449
87333
|
"members": [
|
|
86450
87334
|
{
|
|
@@ -86682,6 +87566,13 @@
|
|
|
86682
87566
|
"privacy": "private",
|
|
86683
87567
|
"readonly": true
|
|
86684
87568
|
},
|
|
87569
|
+
{
|
|
87570
|
+
"kind": "field",
|
|
87571
|
+
"name": "handleWheel",
|
|
87572
|
+
"privacy": "private",
|
|
87573
|
+
"readonly": true,
|
|
87574
|
+
"description": "A wheel with Ctrl held, which is also how the browser sends a trackpad\npinch, scales the item about the pointer. Without Ctrl, a wheel over a\nzoomed item moves it. Over an item at its own size, a plain wheel is left\nto the page."
|
|
87575
|
+
},
|
|
86685
87576
|
{
|
|
86686
87577
|
"kind": "field",
|
|
86687
87578
|
"name": "handleDouble",
|
|
@@ -110733,6 +111624,10 @@
|
|
|
110733
111624
|
"description": "Format Date's `era`, forwarded for a time drawn as fields. An elapsed time draws none.",
|
|
110734
111625
|
"name": "time-era"
|
|
110735
111626
|
},
|
|
111627
|
+
{
|
|
111628
|
+
"description": "Format Date's `fractional-second`, forwarded for a time drawn as fields. An elapsed time draws none.",
|
|
111629
|
+
"name": "time-fractional-second"
|
|
111630
|
+
},
|
|
110736
111631
|
{
|
|
110737
111632
|
"description": "Format Date's `hour`, forwarded for a time drawn as fields. An elapsed time draws none.",
|
|
110738
111633
|
"name": "time-hour"
|
|
@@ -139686,7 +140581,7 @@
|
|
|
139686
140581
|
"declarations": [
|
|
139687
140582
|
{
|
|
139688
140583
|
"kind": "class",
|
|
139689
|
-
"description": "Renders a native `<input type=\"range\">`, so the drag, the arrow keys, Home,\nEnd, the page keys, and the touch target come from the platform. A native\nrange has a hit area larger than its thumb, sized for a finger.\n\nThe value is a string, like every other form control's, and\n`MixinControllerValue` holds text. Use `valueAsNumber` for arithmetic.\n\nMarks are drawn by the component. The ticks of a `<datalist>` cannot be\nstyled, and Firefox does not render them for a range. Marks are decoration.\n`step` sets where the value can land, and the input enforces it whether or\nnot marks are drawn. `markers` is a count, so a slider from zero to a hundred\ndoes not draw a hundred and one marks by accident.\n\nA range with two thumbs is two inputs stacked on one track, because there is\nno native two-thumb range. Each thumb keeps its own value, and a named range\nsubmits one entry per thumb under its name, the lowest first. A range given\nmore than two values, such as `default-value=\"20,50,80\"`, has a thumb for\neach, as React Aria's slider takes any number of thumbs: each stops at its\nneighbors, and the ones between the first and the last are named by\n`thumb-label`.\n`min-steps-between-thumbs` keeps them that many steps apart, and the readout\njoins the two as `range-text` writes them.\n\n`origin` sets where a single thumb's fill starts: at `min`, at the middle of\nthe track, or at `max`. A balance or an offset from zero fills from the\nmiddle, as Zag's slider `origin` does. The fill's ends are published as\n`--slider-from` and `--slider-to`.\n\n`format-options` writes the value with `Intl.NumberFormat` in `locale`, as a\ncurrency, a percent or a unit, and `formatter` writes it with a function of\nyour own, such as words for a scale. Either one is what a screen reader\nhears, what the readout shows and what the marker labels say. `value-text`\nstill wraps it in a sentence, with the formatted value in its place.\n\n`required` comes with the field mixin and cannot fail. A range is never\nempty: the platform shows its midpoint when no value is set, and `willUpdate`\nseeds that midpoint into `defaultValue`, so the value matches the handle from\nthe first render. HTML does not apply `required` to a range either, so it is\nnot set on the input. It only adds the marker beside the label.\n\n**Keyboard.** Each thumb is one tab stop, and its keys are the native\nrange's.\n\n| Key | What it does |\n|---|---|\n| Right, Up | Moves the thumb up by `step`. |\n| Left, Down | Moves the thumb down by `step`. |\n| Page Up, Page Down | Moves the thumb by
|
|
140584
|
+
"description": "Renders a native `<input type=\"range\">`, so the drag, the arrow keys, Home,\nEnd, the page keys, and the touch target come from the platform. A native\nrange has a hit area larger than its thumb, sized for a finger.\n\nThe value is a string, like every other form control's, and\n`MixinControllerValue` holds text. Use `valueAsNumber` for arithmetic.\n\nMarks are drawn by the component. The ticks of a `<datalist>` cannot be\nstyled, and Firefox does not render them for a range. Marks are decoration.\n`step` sets where the value can land, and the input enforces it whether or\nnot marks are drawn. `markers` is a count, so a slider from zero to a hundred\ndoes not draw a hundred and one marks by accident.\n\nA range with two thumbs is two inputs stacked on one track, because there is\nno native two-thumb range. Each thumb keeps its own value, and a named range\nsubmits one entry per thumb under its name, the lowest first. A range given\nmore than two values, such as `default-value=\"20,50,80\"`, has a thumb for\neach, as React Aria's slider takes any number of thumbs: each stops at its\nneighbors, and the ones between the first and the last are named by\n`thumb-label`.\n`min-steps-between-thumbs` keeps them that many steps apart, and the readout\njoins the two as `range-text` writes them.\n\nA press on a range's track takes the nearest thumb to the point pressed,\nand moving the pointer drags it, as React Aria's and Web Awesome's sliders\ndo. The thumb takes focus, and `change` is sent as the press ends.\n\n`origin` sets where a single thumb's fill starts: at `min`, at the middle of\nthe track, or at `max`. A balance or an offset from zero fills from the\nmiddle, as Zag's slider `origin` does. The fill's ends are published as\n`--slider-from` and `--slider-to`.\n\n`format-options` writes the value with `Intl.NumberFormat` in `locale`, as a\ncurrency, a percent or a unit, and `formatter` writes it with a function of\nyour own, such as words for a scale. Either one is what a screen reader\nhears, what the readout shows and what the marker labels say. `value-text`\nstill wraps it in a sentence, with the formatted value in its place.\n\n`required` comes with the field mixin and cannot fail. A range is never\nempty: the platform shows its midpoint when no value is set, and `willUpdate`\nseeds that midpoint into `defaultValue`, so the value matches the handle from\nthe first render. HTML does not apply `required` to a range either, so it is\nnot set on the input. It only adds the marker beside the label.\n\n**Keyboard.** Each thumb is one tab stop, and its keys are the native\nrange's.\n\n| Key | What it does |\n|---|---|\n| Right, Up | Moves the thumb up by `step`. |\n| Left, Down | Moves the thumb down by `step`. |\n| Page Up, Page Down | Moves the thumb by `page-step`, or by the platform's larger step where it is not set. |\n| Home, End | Moves the thumb to its lowest or highest value. |\n\nUnder `readonly` none of these move the thumb, and Tab still reaches it.\n\nEach thumb is an `<input type=\"range\">` with `aria-valuetext` where the value\nis formatted or worded. A range's thumbs say they stop at each other with\n`aria-valuemin` and `aria-valuemax`.",
|
|
139690
140585
|
"name": "HelixHeadlessSlider",
|
|
139691
140586
|
"cssProperties": [
|
|
139692
140587
|
{
|
|
@@ -139943,6 +140838,15 @@
|
|
|
139943
140838
|
"attribute": "origin",
|
|
139944
140839
|
"reflects": true
|
|
139945
140840
|
},
|
|
140841
|
+
{
|
|
140842
|
+
"kind": "field",
|
|
140843
|
+
"name": "pageStep",
|
|
140844
|
+
"type": {
|
|
140845
|
+
"text": "number | undefined"
|
|
140846
|
+
},
|
|
140847
|
+
"description": "How far Page Up and Page Down move a thumb, in the slider's own units, as\nReact Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys\nto the platform, which moves a tenth of the track.",
|
|
140848
|
+
"attribute": "page-step"
|
|
140849
|
+
},
|
|
139946
140850
|
{
|
|
139947
140851
|
"kind": "field",
|
|
139948
140852
|
"name": "range",
|
|
@@ -140124,6 +141028,115 @@
|
|
|
140124
141028
|
"privacy": "private",
|
|
140125
141029
|
"readonly": true
|
|
140126
141030
|
},
|
|
141031
|
+
{
|
|
141032
|
+
"kind": "field",
|
|
141033
|
+
"name": "dragging",
|
|
141034
|
+
"type": {
|
|
141035
|
+
"text": "boolean"
|
|
141036
|
+
},
|
|
141037
|
+
"privacy": "private",
|
|
141038
|
+
"default": "false",
|
|
141039
|
+
"description": "Whether a pointer is dragging a thumb, which `:state(dragging)` says."
|
|
141040
|
+
},
|
|
141041
|
+
{
|
|
141042
|
+
"kind": "field",
|
|
141043
|
+
"name": "endDrag",
|
|
141044
|
+
"privacy": "private",
|
|
141045
|
+
"readonly": true,
|
|
141046
|
+
"description": "Ends a drag when its pointer lifts, wherever it lifts."
|
|
141047
|
+
},
|
|
141048
|
+
{
|
|
141049
|
+
"kind": "method",
|
|
141050
|
+
"name": "startDrag",
|
|
141051
|
+
"privacy": "private",
|
|
141052
|
+
"return": {
|
|
141053
|
+
"type": {
|
|
141054
|
+
"text": "void"
|
|
141055
|
+
}
|
|
141056
|
+
}
|
|
141057
|
+
},
|
|
141058
|
+
{
|
|
141059
|
+
"kind": "method",
|
|
141060
|
+
"name": "thumbInset",
|
|
141061
|
+
"privacy": "private",
|
|
141062
|
+
"return": {
|
|
141063
|
+
"type": {
|
|
141064
|
+
"text": "number"
|
|
141065
|
+
}
|
|
141066
|
+
},
|
|
141067
|
+
"parameters": [
|
|
141068
|
+
{
|
|
141069
|
+
"name": "field",
|
|
141070
|
+
"type": {
|
|
141071
|
+
"text": "HTMLElement"
|
|
141072
|
+
}
|
|
141073
|
+
}
|
|
141074
|
+
],
|
|
141075
|
+
"description": "Half a thumb, which is where the thumb's center stops short of each end\nof its input. Measured off the thumb's length as the stylesheet sets it,\nor a platform thumb's 16 pixels where none does."
|
|
141076
|
+
},
|
|
141077
|
+
{
|
|
141078
|
+
"kind": "method",
|
|
141079
|
+
"name": "valueAt",
|
|
141080
|
+
"privacy": "private",
|
|
141081
|
+
"return": {
|
|
141082
|
+
"type": {
|
|
141083
|
+
"text": "number"
|
|
141084
|
+
}
|
|
141085
|
+
},
|
|
141086
|
+
"parameters": [
|
|
141087
|
+
{
|
|
141088
|
+
"name": "event",
|
|
141089
|
+
"type": {
|
|
141090
|
+
"text": "PointerEvent"
|
|
141091
|
+
}
|
|
141092
|
+
},
|
|
141093
|
+
{
|
|
141094
|
+
"name": "input",
|
|
141095
|
+
"type": {
|
|
141096
|
+
"text": "HTMLElement"
|
|
141097
|
+
}
|
|
141098
|
+
},
|
|
141099
|
+
{
|
|
141100
|
+
"name": "inset",
|
|
141101
|
+
"type": {
|
|
141102
|
+
"text": "number"
|
|
141103
|
+
}
|
|
141104
|
+
}
|
|
141105
|
+
],
|
|
141106
|
+
"description": "The value under a pointer, along a thumb's input, less `inset` at each\nend. Upward on a vertical track, and from the right on a right-to-left\npage."
|
|
141107
|
+
},
|
|
141108
|
+
{
|
|
141109
|
+
"kind": "method",
|
|
141110
|
+
"name": "moveThumb",
|
|
141111
|
+
"privacy": "private",
|
|
141112
|
+
"return": {
|
|
141113
|
+
"type": {
|
|
141114
|
+
"text": "boolean"
|
|
141115
|
+
}
|
|
141116
|
+
},
|
|
141117
|
+
"parameters": [
|
|
141118
|
+
{
|
|
141119
|
+
"name": "at",
|
|
141120
|
+
"type": {
|
|
141121
|
+
"text": "number"
|
|
141122
|
+
}
|
|
141123
|
+
},
|
|
141124
|
+
{
|
|
141125
|
+
"name": "wanted",
|
|
141126
|
+
"type": {
|
|
141127
|
+
"text": "number"
|
|
141128
|
+
}
|
|
141129
|
+
}
|
|
141130
|
+
],
|
|
141131
|
+
"description": "Moves one of a range's thumbs, kept between its neighbors, and says whether it moved."
|
|
141132
|
+
},
|
|
141133
|
+
{
|
|
141134
|
+
"kind": "field",
|
|
141135
|
+
"name": "handlePress",
|
|
141136
|
+
"privacy": "private",
|
|
141137
|
+
"readonly": true,
|
|
141138
|
+
"description": "A press on the field: on a thumb, the start of the platform's own drag,\nand on a range's track, the nearest thumb taken to the point and dragged\nfrom there.\n\n**A range's inputs take presses on their thumbs only**, being stacked on\none track, so a press beside a thumb reached no input at all and did\nnothing. Measured before this: a press at 90 on a range holding 20 and 60\nleft it at 20 and 60. React Aria's and Web Awesome's sliders move the\nnearest thumb there."
|
|
141139
|
+
},
|
|
140127
141140
|
{
|
|
140128
141141
|
"kind": "field",
|
|
140129
141142
|
"name": "handleChange",
|
|
@@ -140136,7 +141149,14 @@
|
|
|
140136
141149
|
"name": "handleKeydown",
|
|
140137
141150
|
"privacy": "private",
|
|
140138
141151
|
"readonly": true,
|
|
140139
|
-
"description": "Keeps a read-only thumb still under the keys that move it. Tab and every
|
|
141152
|
+
"description": "Keeps a read-only thumb still under the keys that move it, and moves a\nthumb by `page-step` under Page Up and Page Down. Tab and every other key\npass, so focus moves on."
|
|
141153
|
+
},
|
|
141154
|
+
{
|
|
141155
|
+
"kind": "field",
|
|
141156
|
+
"name": "handleFocusChange",
|
|
141157
|
+
"privacy": "private",
|
|
141158
|
+
"readonly": true,
|
|
141159
|
+
"description": "Says whether the keyboard brought focus to a thumb, as\n`:state(focus-visible)` on the host, where a stylesheet outside can reach\nthe whole control: a ring around the track, or the readout in bold."
|
|
140140
141160
|
},
|
|
140141
141161
|
{
|
|
140142
141162
|
"kind": "method",
|
|
@@ -141751,6 +142771,14 @@
|
|
|
141751
142771
|
"description": "Where a single thumb's fill starts: `start` at `min`, `center` at the\nmiddle of the track, or `end` at `max`. Absent is `start`. A range fills\nbetween its thumbs and ignores it.",
|
|
141752
142772
|
"fieldName": "origin"
|
|
141753
142773
|
},
|
|
142774
|
+
{
|
|
142775
|
+
"name": "page-step",
|
|
142776
|
+
"type": {
|
|
142777
|
+
"text": "number | undefined"
|
|
142778
|
+
},
|
|
142779
|
+
"description": "How far Page Up and Page Down move a thumb, in the slider's own units, as\nReact Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys\nto the platform, which moves a tenth of the track.",
|
|
142780
|
+
"fieldName": "pageStep"
|
|
142781
|
+
},
|
|
141754
142782
|
{
|
|
141755
142783
|
"name": "range",
|
|
141756
142784
|
"type": {
|
|
@@ -141953,6 +142981,14 @@
|
|
|
141953
142981
|
}
|
|
141954
142982
|
],
|
|
141955
142983
|
"cssStates": [
|
|
142984
|
+
{
|
|
142985
|
+
"description": "A thumb is being dragged, by its thumb or from a press on the track.",
|
|
142986
|
+
"name": "dragging"
|
|
142987
|
+
},
|
|
142988
|
+
{
|
|
142989
|
+
"description": "A thumb has focus that the keyboard brought, where the browser draws a focus ring.",
|
|
142990
|
+
"name": "focus-visible"
|
|
142991
|
+
},
|
|
141956
142992
|
{
|
|
141957
142993
|
"description": "The slider has an error to show, from the browser's validation or from your `feedback`.",
|
|
141958
142994
|
"name": "invalid"
|
|
@@ -148972,7 +150008,7 @@
|
|
|
148972
150008
|
"declarations": [
|
|
148973
150009
|
{
|
|
148974
150010
|
"kind": "class",
|
|
148975
|
-
"description": "Only the step's name is a button. The marker is `aria-hidden` decoration, so\nit is outside the button. The name uses `Button`, so the hover wash, the\nfocus ring, and the disabled style come from `Button`.\n\nEvery step can be pressed and fires `helix-select`. To stop the user from\nmoving to a step, set `disabled` on it.\n\nThe marker is a slot, and its fallback shows the step's state: a check for a\nfinished stage, a target for the current stage, and an empty ring for a stage\nnot reached yet. Only that one mark is rendered, so the accessibility tree\nhas no hidden marks.\n\nThe half lines on each side of the mark are drawn on the step's `::before`\nand `::after` from properties the list sets, so the step renders no extra\nelement for them.\n\nA finished stage says so in words: the name's button is described by\n`complete-label`, \"Complete\" unless you translate it, and a stage that\nbecomes complete while the page is open says it once in a polite live\nregion. The current stage's button carries `aria-current=\"step\"`, and only\nthe button, so the state is said once, on the control.",
|
|
150011
|
+
"description": "Only the step's name is a button. The marker is `aria-hidden` decoration, so\nit is outside the button. The name uses `Button`, so the hover wash, the\nfocus ring, and the disabled style come from `Button`.\n\nEvery step can be pressed and fires `helix-select`. To stop the user from\nmoving to a step, set `disabled` on it.\n\nThe marker is a slot, and its fallback shows the step's state: a check for a\nfinished stage, a target for the current stage, and an empty ring for a stage\nnot reached yet. Only that one mark is rendered, so the accessibility tree\nhas no hidden marks.\n\nThe half lines on each side of the mark are drawn on the step's `::before`\nand `::after` from properties the list sets, so the step renders no extra\nelement for them.\n\nA finished stage says so in words: the name's button is described by\n`complete-label`, \"Complete\" unless you translate it, and a stage that\nbecomes complete while the page is open says it once in a polite live\nregion. The current stage's button carries `aria-current=\"step\"`, and only\nthe button, so the state is said once, on the control.\n\nA stage's `content`, while it holds anything, is a group named by the\nstage's name, so a screen reader moving into it hears which stage it\nbelongs to.",
|
|
148976
150012
|
"name": "HelixHeadlessStep",
|
|
148977
150013
|
"cssParts": [
|
|
148978
150014
|
{
|
|
@@ -149133,6 +150169,23 @@
|
|
|
149133
150169
|
"description": "The value the step sends in `helix-select`.",
|
|
149134
150170
|
"attribute": "value"
|
|
149135
150171
|
},
|
|
150172
|
+
{
|
|
150173
|
+
"kind": "field",
|
|
150174
|
+
"name": "holding",
|
|
150175
|
+
"type": {
|
|
150176
|
+
"text": "boolean"
|
|
150177
|
+
},
|
|
150178
|
+
"privacy": "private",
|
|
150179
|
+
"default": "false",
|
|
150180
|
+
"description": "Whether anything is slotted into `content`, which makes it a named group."
|
|
150181
|
+
},
|
|
150182
|
+
{
|
|
150183
|
+
"kind": "field",
|
|
150184
|
+
"name": "readContent",
|
|
150185
|
+
"privacy": "private",
|
|
150186
|
+
"readonly": true,
|
|
150187
|
+
"description": "Reads whether the `content` slot holds anything."
|
|
150188
|
+
},
|
|
149136
150189
|
{
|
|
149137
150190
|
"kind": "field",
|
|
149138
150191
|
"name": "status",
|
|
@@ -155815,7 +156868,7 @@
|
|
|
155815
156868
|
"declarations": [
|
|
155816
156869
|
{
|
|
155817
156870
|
"kind": "class",
|
|
155818
|
-
"description": "An inactive panel is hidden and stays mounted. Anything typed into it is\nstill there when the person comes back, and the content of every panel is in\nthe server-rendered markup for crawlers, whichever tab is open.\n\nThe host is the `tabpanel` while its tab is selected, through\n`ElementInternals`, so the tab's `aria-controls` can reach it from the tab's\nshadow root. The box inside is a tab stop only while the panel holds nothing\nfocusable, as the ARIA tabs pattern and React Aria's tab panel do: Tab from\nthe tab list lands on the panel's first link or control where there is one,\nand on the panel itself where there is none.",
|
|
156871
|
+
"description": "An inactive panel is hidden and stays mounted. Anything typed into it is\nstill there when the person comes back, and the content of every panel is in\nthe server-rendered markup for crawlers, whichever tab is open.\n\nThe host is the `tabpanel` while its tab is selected, through\n`ElementInternals`, so the tab's `aria-controls` can reach it from the tab's\nshadow root. The box inside is a tab stop only while the panel holds nothing\nfocusable, as the ARIA tabs pattern and React Aria's tab panel do: Tab from\nthe tab list lands on the panel's first link or control where there is one,\nand on the panel itself where there is none.\n\n**Set `lazy` for a panel that is expensive to draw.** Its content waits in a\n`<template>` inside it, and goes into the panel the first time the panel is\nshown, so it costs nothing until a reader opens that tab. Once in, it stays.\nThe panel sends `helix-load` at the same moment, for content your code\nrenders itself.",
|
|
155819
156872
|
"name": "HelixHeadlessTabPanel",
|
|
155820
156873
|
"cssParts": [
|
|
155821
156874
|
{
|
|
@@ -155825,7 +156878,7 @@
|
|
|
155825
156878
|
],
|
|
155826
156879
|
"slots": [
|
|
155827
156880
|
{
|
|
155828
|
-
"description": "The panel's content.",
|
|
156881
|
+
"description": "The panel's content. Under `lazy`, a `<template>` holding it.",
|
|
155829
156882
|
"name": ""
|
|
155830
156883
|
}
|
|
155831
156884
|
],
|
|
@@ -155839,6 +156892,37 @@
|
|
|
155839
156892
|
"default": "''",
|
|
155840
156893
|
"description": "The name of the panel, which is the text of the tab that opens it.\n\nSet by the root, which is the only thing that sees both. No attribute,\nbecause it is coordination between elements rather than anything a consumer\nwrites: the tab already says it.\n\nA string and not a reference: an IDREF resolves only in the tree it is\nwritten in, and the tab's control is inside the tab's shadow root, which no\nreference from the light DOM can reach. `aria-label` on a `tabpanel` is how\nthe pattern names one anyway."
|
|
155841
156894
|
},
|
|
156895
|
+
{
|
|
156896
|
+
"kind": "field",
|
|
156897
|
+
"name": "lazy",
|
|
156898
|
+
"type": {
|
|
156899
|
+
"text": "boolean"
|
|
156900
|
+
},
|
|
156901
|
+
"default": "false",
|
|
156902
|
+
"description": "Whether the panel's content waits in a `<template>` until the panel is\nfirst shown.",
|
|
156903
|
+
"attribute": "lazy"
|
|
156904
|
+
},
|
|
156905
|
+
{
|
|
156906
|
+
"kind": "field",
|
|
156907
|
+
"name": "loaded",
|
|
156908
|
+
"type": {
|
|
156909
|
+
"text": "boolean"
|
|
156910
|
+
},
|
|
156911
|
+
"privacy": "private",
|
|
156912
|
+
"default": "false",
|
|
156913
|
+
"description": "Whether a `lazy` panel has put its content in."
|
|
156914
|
+
},
|
|
156915
|
+
{
|
|
156916
|
+
"kind": "method",
|
|
156917
|
+
"name": "load",
|
|
156918
|
+
"privacy": "private",
|
|
156919
|
+
"return": {
|
|
156920
|
+
"type": {
|
|
156921
|
+
"text": "void"
|
|
156922
|
+
}
|
|
156923
|
+
},
|
|
156924
|
+
"description": "Puts a `lazy` panel's content in the first time the panel is shown: the\ncontent of each `<template>` it holds, in place of the template."
|
|
156925
|
+
},
|
|
155842
156926
|
{
|
|
155843
156927
|
"kind": "field",
|
|
155844
156928
|
"name": "selected",
|
|
@@ -156222,7 +157306,26 @@
|
|
|
156222
157306
|
}
|
|
156223
157307
|
}
|
|
156224
157308
|
],
|
|
157309
|
+
"events": [
|
|
157310
|
+
{
|
|
157311
|
+
"type": {
|
|
157312
|
+
"text": "HelixLoadEvent"
|
|
157313
|
+
},
|
|
157314
|
+
"description": "Fired the first time a `lazy` panel is shown, once its template's content is in.",
|
|
157315
|
+
"name": "helix-load",
|
|
157316
|
+
"reactProp": "onhelix-load"
|
|
157317
|
+
}
|
|
157318
|
+
],
|
|
156225
157319
|
"attributes": [
|
|
157320
|
+
{
|
|
157321
|
+
"name": "lazy",
|
|
157322
|
+
"type": {
|
|
157323
|
+
"text": "boolean"
|
|
157324
|
+
},
|
|
157325
|
+
"default": "false",
|
|
157326
|
+
"description": "Whether the panel's content waits in a `<template>` until the panel is\nfirst shown.",
|
|
157327
|
+
"fieldName": "lazy"
|
|
157328
|
+
},
|
|
156226
157329
|
{
|
|
156227
157330
|
"name": "selected",
|
|
156228
157331
|
"type": {
|
|
@@ -156243,6 +157346,10 @@
|
|
|
156243
157346
|
}
|
|
156244
157347
|
],
|
|
156245
157348
|
"cssStates": [
|
|
157349
|
+
{
|
|
157350
|
+
"description": "Once a `lazy` panel has been shown and its content is in.",
|
|
157351
|
+
"name": "loaded"
|
|
157352
|
+
},
|
|
156246
157353
|
{
|
|
156247
157354
|
"description": "While its tab is the one selected.",
|
|
156248
157355
|
"name": "selected"
|
|
@@ -156303,7 +157410,7 @@
|
|
|
156303
157410
|
"declarations": [
|
|
156304
157411
|
{
|
|
156305
157412
|
"kind": "class",
|
|
156306
|
-
"description": "Selection works through an event, the same as in the accordion and the tree.\nA tab dispatches `helix-select`, and the root pairs it with the panel of the\nsame value. Nothing registers with anything, so tabs added later work with no\nextra setup.\n\nThe tab list is a single tab stop, and the arrow keys move between tabs\nthrough `KeyboardNavigationController`, the same as in the radio and toggle\ngroups. Selection follows focus, which suits a small set where showing a\npanel is cheap. Set `manual` when showing a panel is expensive, so focus can\nmove without selecting.\n\n`orientation=\"vertical\"` sets the tabs in a column beside the panels, and the\ntab list says `aria-orientation=\"vertical\"`. The arrow keys of both axes move\nbetween tabs either way.\n\nA tab with an `href` is a link, for tabs that are pages of a site. Pressing\nit follows the link. Where any tab is a link, the arrow keys move focus\nwithout choosing on every tab of the list, as under `manual`, so arrowing\npast a tab never leaves the page and the list answers the keys one way.\nMark the tab of the page you are on with `selected`, or set `active` to its\nvalue.\n\nEach tab says which panel it controls through `aria-controls`, set as an\nelement reference to the panel's host, where the engine has reflection.\n\nKeys, on the tab list: Left and Right Arrow move between tabs, and so do Up\nand Down; Home and End go to the first and the last. The horizontal arrows\nfollow the reading direction, so on a right-to-left page Left moves on.\nDisabled tabs are passed over. Tab leaves the list for the selected panel,\nwhich is a tab stop only while it holds nothing focusable.\n\n**Keyboard.**\n\n| Key | What it does |\n|---|---|\n| Right, Down | Moves to the next tab, from the last round to the first. Selects it, unless `manual` is set or a tab is a link. |\n| Left, Up | Moves to the tab before, from the first round to the last. |\n| Home, End | Moves to the first or the last tab. |\n| Enter, Space | Selects the tab with focus, or follows its link. |\n| Tab | Leaves the list for the selected panel. |\n\nRemoving the selected tab selects the
|
|
157413
|
+
"description": "Selection works through an event, the same as in the accordion and the tree.\nA tab dispatches `helix-select`, and the root pairs it with the panel of the\nsame value. Nothing registers with anything, so tabs added later work with no\nextra setup.\n\nThe tab list is a single tab stop, and the arrow keys move between tabs\nthrough `KeyboardNavigationController`, the same as in the radio and toggle\ngroups. Selection follows focus, which suits a small set where showing a\npanel is cheap. Set `manual` when showing a panel is expensive, so focus can\nmove without selecting.\n\n`orientation=\"vertical\"` sets the tabs in a column beside the panels, and the\ntab list says `aria-orientation=\"vertical\"`. The arrow keys of both axes move\nbetween tabs either way.\n\nA tab with an `href` is a link, for tabs that are pages of a site. Pressing\nit follows the link. Where any tab is a link, the arrow keys move focus\nwithout choosing on every tab of the list, as under `manual`, so arrowing\npast a tab never leaves the page and the list answers the keys one way.\nMark the tab of the page you are on with `selected`, or set `active` to its\nvalue.\n\nEach tab says which panel it controls through `aria-controls`, set as an\nelement reference to the panel's host, where the engine has reflection.\n\nKeys, on the tab list: Left and Right Arrow move between tabs, and so do Up\nand Down; Home and End go to the first and the last. The horizontal arrows\nfollow the reading direction, so on a right-to-left page Left moves on.\nDisabled tabs are passed over. Tab leaves the list for the selected panel,\nwhich is a tab stop only while it holds nothing focusable.\n\n**Keyboard.**\n\n| Key | What it does |\n|---|---|\n| Right, Down | Moves to the next tab, from the last round to the first. Selects it, unless `manual` is set or a tab is a link. |\n| Left, Up | Moves to the tab before, from the first round to the last. |\n| Home, End | Moves to the first or the last tab. |\n| Enter, Space | Selects the tab with focus, or follows its link. |\n| Tab | Leaves the list for the selected panel. |\n\nRemoving the selected tab selects the enabled tab beside it, the next one\nor else the one before, and `active` says so, with `helix-activate`. Where\nthe removed tab had focus, focus moves to the tab now selected.\n\n**More tabs than fit.** With `scroll-controls`, a strip that scrolls shows a\nbutton at each end it can scroll toward, as Web Awesome's tab group does,\nand a press scrolls it most of its own length. The buttons are for the\npointer, so they are out of the tab order and hidden from screen readers;\nthe arrow keys already reach every tab, and the strip scrolls the selected\ntab into view. A strip scrolls once a stylesheet gives the `tabs` part an\n`overflow`, as the styled tier does.\n\nA tab with `dismissible` can be closed: see `Tabs.Tab`.\n\nThe `indicator` part moves to the selected tab and carries its place and\nsize, so a mark of your own can be drawn there: style the part, or slot an\nelement into `indicator`, which sits inside the part and reads the same\nproperties.",
|
|
156307
157414
|
"name": "HelixHeadlessTabs",
|
|
156308
157415
|
"cssParts": [
|
|
156309
157416
|
{
|
|
@@ -156318,10 +157425,18 @@
|
|
|
156318
157425
|
"description": "The button that scrolls the strip toward its end, shown under `scroll-controls` while there is more that way.",
|
|
156319
157426
|
"name": "scroll-end"
|
|
156320
157427
|
},
|
|
157428
|
+
{
|
|
157429
|
+
"description": "The glyph on that button, where none is slotted.",
|
|
157430
|
+
"name": "scroll-end-mark"
|
|
157431
|
+
},
|
|
156321
157432
|
{
|
|
156322
157433
|
"description": "The button that scrolls the strip toward its start, shown under `scroll-controls` while there is more that way.",
|
|
156323
157434
|
"name": "scroll-start"
|
|
156324
157435
|
},
|
|
157436
|
+
{
|
|
157437
|
+
"description": "The glyph on that button, where none is slotted.",
|
|
157438
|
+
"name": "scroll-start-mark"
|
|
157439
|
+
},
|
|
156325
157440
|
{
|
|
156326
157441
|
"description": "The tab list.",
|
|
156327
157442
|
"name": "tabs"
|
|
@@ -156339,6 +157454,14 @@
|
|
|
156339
157454
|
{
|
|
156340
157455
|
"description": "The panels, as direct children of this element. Panels inside a wrapper are not paired with tabs, because pairing reads only the direct children.",
|
|
156341
157456
|
"name": "panels"
|
|
157457
|
+
},
|
|
157458
|
+
{
|
|
157459
|
+
"description": "Replaces the glyph on the button that scrolls the strip toward its end.",
|
|
157460
|
+
"name": "scroll-end-icon"
|
|
157461
|
+
},
|
|
157462
|
+
{
|
|
157463
|
+
"description": "Replaces the glyph on the button that scrolls the strip toward its start.",
|
|
157464
|
+
"name": "scroll-start-icon"
|
|
156342
157465
|
}
|
|
156343
157466
|
],
|
|
156344
157467
|
"members": [
|
|
@@ -156518,6 +157641,31 @@
|
|
|
156518
157641
|
"default": "[]",
|
|
156519
157642
|
"description": "The values of the tabs the last pairing read, to tell a removed tab from one not yet here."
|
|
156520
157643
|
},
|
|
157644
|
+
{
|
|
157645
|
+
"kind": "method",
|
|
157646
|
+
"name": "beside",
|
|
157647
|
+
"privacy": "private",
|
|
157648
|
+
"return": {
|
|
157649
|
+
"type": {
|
|
157650
|
+
"text": "HelixHeadlessTab | undefined"
|
|
157651
|
+
}
|
|
157652
|
+
},
|
|
157653
|
+
"parameters": [
|
|
157654
|
+
{
|
|
157655
|
+
"name": "gone",
|
|
157656
|
+
"type": {
|
|
157657
|
+
"text": "string"
|
|
157658
|
+
}
|
|
157659
|
+
},
|
|
157660
|
+
{
|
|
157661
|
+
"name": "tabs",
|
|
157662
|
+
"type": {
|
|
157663
|
+
"text": "HelixHeadlessTab[]"
|
|
157664
|
+
}
|
|
157665
|
+
}
|
|
157666
|
+
],
|
|
157667
|
+
"description": "The enabled tab nearest to where a removed one stood: the next ones\nnearest first, then the ones before it nearest first. The same order a\ndismissed tab hands focus in."
|
|
157668
|
+
},
|
|
156521
157669
|
{
|
|
156522
157670
|
"kind": "method",
|
|
156523
157671
|
"name": "sync",
|
|
@@ -156601,7 +157749,26 @@
|
|
|
156601
157749
|
}
|
|
156602
157750
|
}
|
|
156603
157751
|
],
|
|
156604
|
-
"description": "One of the two scroll buttons, pointing the way it scrolls.
|
|
157752
|
+
"description": "One of the two scroll buttons, with the glyph pointing the way it scrolls."
|
|
157753
|
+
},
|
|
157754
|
+
{
|
|
157755
|
+
"kind": "method",
|
|
157756
|
+
"name": "renderScrollIcon",
|
|
157757
|
+
"privacy": "protected",
|
|
157758
|
+
"return": {
|
|
157759
|
+
"type": {
|
|
157760
|
+
"text": "TemplateResult"
|
|
157761
|
+
}
|
|
157762
|
+
},
|
|
157763
|
+
"parameters": [
|
|
157764
|
+
{
|
|
157765
|
+
"name": "toward",
|
|
157766
|
+
"type": {
|
|
157767
|
+
"text": "1 | -1"
|
|
157768
|
+
}
|
|
157769
|
+
}
|
|
157770
|
+
],
|
|
157771
|
+
"description": "The glyph on a scroll button, behind a seam: slot fallback, so a consumer\nreplaces it by slotting, and a method, so a tier above replaces it by\noverriding. A caret along the line is mirrored on a right-to-left page, and\none down a column is not."
|
|
156605
157772
|
},
|
|
156606
157773
|
{
|
|
156607
157774
|
"kind": "field",
|
|
@@ -157229,13 +158396,17 @@
|
|
|
157229
158396
|
"declarations": [
|
|
157230
158397
|
{
|
|
157231
158398
|
"kind": "class",
|
|
157232
|
-
"description": "A tab is an element, because it manages selection and its own tab stop.\n\nWith an `href`, the tab is a link: `role=\"tab\"` on an `<a>`, which a press,\nEnter and the browser's own link gestures follow. `helix-select` is sent\nfirst, and canceling it keeps the browser from following, so a client-side\nrouter follows it instead.\n\nWith `dismissible`, the tab can be closed, as Web Awesome's closable tab\ncan: a press on its `dismiss` mark, or Delete or Backspace while the tab\nhas focus, sends `helix-dismiss`. The tab does not remove itself, because\nyour code owns the set, so remove the tab and its panel in your handler.\nFocus moves to the tab beside it, and the tab
|
|
158399
|
+
"description": "A tab is an element, because it manages selection and its own tab stop.\n\nWith an `href`, the tab is a link: `role=\"tab\"` on an `<a>`, which a press,\nEnter and the browser's own link gestures follow. `helix-select` is sent\nfirst, and canceling it keeps the browser from following, so a client-side\nrouter follows it instead.\n\nWith `dismissible`, the tab can be closed, as Web Awesome's closable tab\ncan: a press on its `dismiss` mark, or Delete or Backspace while the tab\nhas focus, sends `helix-dismiss`. The tab does not remove itself, because\nyour code owns the set, so remove the tab and its panel in your handler.\nFocus moves to the tab beside it, and where the tab was selected, the tab\nset selects that same tab.\nThe tab says the key through `aria-keyshortcuts`, and the mark is for the\npointer, hidden from screen readers.",
|
|
157233
158400
|
"name": "HelixHeadlessTab",
|
|
157234
158401
|
"cssParts": [
|
|
157235
158402
|
{
|
|
157236
158403
|
"description": "The mark a pointer presses to close a `dismissible` tab.",
|
|
157237
158404
|
"name": "dismiss"
|
|
157238
158405
|
},
|
|
158406
|
+
{
|
|
158407
|
+
"description": "The glyph on that mark, where none is slotted.",
|
|
158408
|
+
"name": "dismiss-mark"
|
|
158409
|
+
},
|
|
157239
158410
|
{
|
|
157240
158411
|
"description": "The tab itself.",
|
|
157241
158412
|
"name": "tab"
|
|
@@ -157245,6 +158416,10 @@
|
|
|
157245
158416
|
{
|
|
157246
158417
|
"description": "The tab's label.",
|
|
157247
158418
|
"name": ""
|
|
158419
|
+
},
|
|
158420
|
+
{
|
|
158421
|
+
"description": "Replaces the glyph on the mark that closes a `dismissible` tab.",
|
|
158422
|
+
"name": "dismiss-icon"
|
|
157248
158423
|
}
|
|
157249
158424
|
],
|
|
157250
158425
|
"members": [
|
|
@@ -161989,9 +163164,13 @@
|
|
|
161989
163164
|
"declarations": [
|
|
161990
163165
|
{
|
|
161991
163166
|
"kind": "class",
|
|
161992
|
-
"description": "The list is a `TimePicker`, which you can also use on its own, for example in\na settings pane. This element adds the field, the overlay, and the form\nassociation, the same arrangement Date Input has with `DatePicker` and Color\nInput has with `ColorPicker`.\n\nYou can type a time or pick one. The list offers times at a step, and the\nfield lets you enter any time, such as `09:07`.\n\nThe value is always `HH:mm` on a 24-hour clock, or `HH:mm:ss` with\n`seconds`, because that is what the form\nsubmits, what `min` and `max` compare against, and what sorts correctly as a\nstring. While idle, the field shows the time in the user's locale format.\nOnce the caret is in the field, it shows the value itself
|
|
163167
|
+
"description": "The list is a `TimePicker`, which you can also use on its own, for example in\na settings pane. This element adds the field, the overlay, and the form\nassociation, the same arrangement Date Input has with `DatePicker` and Color\nInput has with `ColorPicker`.\n\nYou can type a time or pick one. The list offers times at a step, and the\nfield lets you enter any time, such as `09:07`.\n\nThe value is always `HH:mm` on a 24-hour clock, or `HH:mm:ss` with\n`seconds`, because that is what the form\nsubmits, what `min` and `max` compare against, and what sorts correctly as a\nstring. While idle, the field shows the time in the user's locale format.\nOnce the caret is in the field, it shows the value itself. You can type\n`14:30`, or a time as you write one, such as `2:30 PM`, `2.30pm`, or\n`14h30`, and the field reads it as you leave it, with AM and PM in the\nlocale's words.\n\nTyping sends `input` on each keystroke and `change` when you leave the\nfield. The trigger and ArrowDown open the list, and so does a press into the\nfield; Tab into the field opens nothing. The text field is a `combobox`\nwith `aria-haspopup=\"dialog\"`, `aria-expanded`, and `aria-controls`, since\nDown opens the list from it. In the list, the arrow keys, typed digits and PageUp and PageDown\nmove through the times, and Enter, Space or a click chooses one and closes\nthe panel. With `variant=\"wheels\"` each wheel moves the time as you turn it,\nthe panel stays open, and Enter or Escape closes it.\n\nWith `segmented`, the field is a row of segments in place of the text: an\nhour, a minute, and AM or PM where the clock has them, each set with digits\nor the arrow keys. Alt+Down opens the list from a segment. A `range` is two\nrows with a dash between them, the start and the end, and `multiple` keeps\nthe text.\n\nText that is not a time gives the form an empty value, as a native time\nfield does, and `value` keeps the text so it can be corrected.\n\n**Keyboard.** The field is one tab stop, or each segment is with\n`segmented`, and the trigger is one more.\n\n| Key | What it does |\n|---|---|\n| Down | In the text field, opens the list on the chosen time. |\n| Alt with Down | Opens the list, from the text field or a segment. |\n| Enter | In the text field, takes the typed time and submits the form, as a native field does. In the list, chooses the highlighted time. |\n| Escape | Closes the list and puts focus back in the field. |\n| Up, Down on a segment | Steps the segment by one, round from its last value to its first. |\n| Page Up, Page Down on a segment | Steps by a page: two hours, or fifteen minutes or seconds. |\n| Home, End on a segment | Goes to the segment's first or last value. |\n| Digits on a segment | Fill it, and move to the next once it can take no more. |\n| A letter on the half of the day | Picks the half whose name starts with it, such as A for AM. |\n| Backspace, Delete on a segment | Empty the segment. |\n| Left, Right on a segment | Move to the previous or the next segment, along the line of text. |\n\nIn the list, the keys are `TimePicker`'s.",
|
|
161993
163168
|
"name": "HelixHeadlessTimeInput",
|
|
161994
163169
|
"cssParts": [
|
|
163170
|
+
{
|
|
163171
|
+
"description": "The button that empties the field, under `clearable`, while it holds a time.",
|
|
163172
|
+
"name": "clear"
|
|
163173
|
+
},
|
|
161995
163174
|
{
|
|
161996
163175
|
"description": "The text input.",
|
|
161997
163176
|
"name": "control"
|
|
@@ -162172,6 +163351,10 @@
|
|
|
162172
163351
|
"description": "The label and the caption, as one column.",
|
|
162173
163352
|
"name": "picker-option-text"
|
|
162174
163353
|
},
|
|
163354
|
+
{
|
|
163355
|
+
"description": "The dash between a range's two rows of segments, in `segmented`, beside `literal`.",
|
|
163356
|
+
"name": "range-separator"
|
|
163357
|
+
},
|
|
162175
163358
|
{
|
|
162176
163359
|
"description": "The count of times held beyond the ones shown. A `<button>` with `expandable`, and a `<span>` without it.",
|
|
162177
163360
|
"name": "rest"
|
|
@@ -162234,6 +163417,10 @@
|
|
|
162234
163417
|
}
|
|
162235
163418
|
],
|
|
162236
163419
|
"slots": [
|
|
163420
|
+
{
|
|
163421
|
+
"description": "Replaces the cross on the clear button, under `clearable`.",
|
|
163422
|
+
"name": "clear-icon"
|
|
163423
|
+
},
|
|
162237
163424
|
{
|
|
162238
163425
|
"description": "Content after the time, before the trigger, such as a clear button.",
|
|
162239
163426
|
"name": "end"
|
|
@@ -162299,6 +163486,29 @@
|
|
|
162299
163486
|
"description": "What the browser may autofill here, as one of the platform's own tokens.\n\nEmpty leaves the attribute off, which is the browser's default and is what\nlets autofill work at all.",
|
|
162300
163487
|
"attribute": "autocomplete"
|
|
162301
163488
|
},
|
|
163489
|
+
{
|
|
163490
|
+
"kind": "field",
|
|
163491
|
+
"name": "clearable",
|
|
163492
|
+
"type": {
|
|
163493
|
+
"text": "boolean"
|
|
163494
|
+
},
|
|
163495
|
+
"default": "false",
|
|
163496
|
+
"description": "Whether the field shows a button that empties it, as Input's `clearable`\ndoes. Shown only while the field holds something to clear and is neither\ndisabled nor read-only.",
|
|
163497
|
+
"attribute": "clearable"
|
|
163498
|
+
},
|
|
163499
|
+
{
|
|
163500
|
+
"kind": "field",
|
|
163501
|
+
"name": "clearLabel",
|
|
163502
|
+
"type": {
|
|
163503
|
+
"text": "string"
|
|
163504
|
+
},
|
|
163505
|
+
"default": "'Clear'",
|
|
163506
|
+
"description": "The accessible name of the clear button, which shows only an icon.",
|
|
163507
|
+
"attribute": "clear-label",
|
|
163508
|
+
"helix": {
|
|
163509
|
+
"words": true
|
|
163510
|
+
}
|
|
163511
|
+
},
|
|
162302
163512
|
{
|
|
162303
163513
|
"kind": "field",
|
|
162304
163514
|
"name": "announcesInput",
|
|
@@ -162504,6 +163714,19 @@
|
|
|
162504
163714
|
"words": true
|
|
162505
163715
|
}
|
|
162506
163716
|
},
|
|
163717
|
+
{
|
|
163718
|
+
"kind": "field",
|
|
163719
|
+
"name": "unreadableMessage",
|
|
163720
|
+
"type": {
|
|
163721
|
+
"text": "string"
|
|
163722
|
+
},
|
|
163723
|
+
"default": "'{mode, select, single {Enter a time as {shape}.} other {Enter times as {shape}, separated by commas.}}'",
|
|
163724
|
+
"description": "The message for text that is no time, where `bad-input-message` is not\nset. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`.",
|
|
163725
|
+
"attribute": "unreadable-message",
|
|
163726
|
+
"helix": {
|
|
163727
|
+
"words": true
|
|
163728
|
+
}
|
|
163729
|
+
},
|
|
162507
163730
|
{
|
|
162508
163731
|
"kind": "field",
|
|
162509
163732
|
"name": "held",
|
|
@@ -162521,7 +163744,21 @@
|
|
|
162521
163744
|
"text": "boolean"
|
|
162522
163745
|
},
|
|
162523
163746
|
"privacy": "protected",
|
|
162524
|
-
"description": "
|
|
163747
|
+
"description": "A row of segments holds one time, and `range` takes two rows with a dash\nbetween them, as React Aria's range fields do. `multiple` keeps the line\nof text, whose tags are how it writes several.",
|
|
163748
|
+
"readonly": true,
|
|
163749
|
+
"inheritedFrom": {
|
|
163750
|
+
"name": "MixinSegmentedField",
|
|
163751
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
163752
|
+
}
|
|
163753
|
+
},
|
|
163754
|
+
{
|
|
163755
|
+
"kind": "field",
|
|
163756
|
+
"name": "segmentGroups",
|
|
163757
|
+
"type": {
|
|
163758
|
+
"text": "number"
|
|
163759
|
+
},
|
|
163760
|
+
"privacy": "protected",
|
|
163761
|
+
"description": "How many rows of segments the value takes: two for a range, one otherwise.",
|
|
162525
163762
|
"readonly": true,
|
|
162526
163763
|
"inheritedFrom": {
|
|
162527
163764
|
"name": "MixinSegmentedField",
|
|
@@ -162652,6 +163889,32 @@
|
|
|
162652
163889
|
"description": "How many are held beyond the ones shown.",
|
|
162653
163890
|
"readonly": true
|
|
162654
163891
|
},
|
|
163892
|
+
{
|
|
163893
|
+
"kind": "method",
|
|
163894
|
+
"name": "read",
|
|
163895
|
+
"privacy": "private",
|
|
163896
|
+
"return": {
|
|
163897
|
+
"type": {
|
|
163898
|
+
"text": "string"
|
|
163899
|
+
}
|
|
163900
|
+
},
|
|
163901
|
+
"parameters": [
|
|
163902
|
+
{
|
|
163903
|
+
"name": "text",
|
|
163904
|
+
"type": {
|
|
163905
|
+
"text": "string"
|
|
163906
|
+
}
|
|
163907
|
+
}
|
|
163908
|
+
],
|
|
163909
|
+
"description": "A time as the reader wrote it, as the value writes one: `HH:mm` as it\nis, and `2:30 PM`, `2.30pm`, `14h30`, or `1430` read back, with the half\nof the day in the locale's words. Empty where it is no time."
|
|
163910
|
+
},
|
|
163911
|
+
{
|
|
163912
|
+
"kind": "field",
|
|
163913
|
+
"name": "handleTextCommit",
|
|
163914
|
+
"privacy": "private",
|
|
163915
|
+
"readonly": true,
|
|
163916
|
+
"description": "The text the reader leaves, read: a time written as a reader writes one\nbecomes the value as the field commits. Not on each key, where `2:3` is\na time a moment before it is `2:30`."
|
|
163917
|
+
},
|
|
162655
163918
|
{
|
|
162656
163919
|
"kind": "field",
|
|
162657
163920
|
"name": "handleDraftKey",
|
|
@@ -162775,6 +164038,34 @@
|
|
|
162775
164038
|
},
|
|
162776
164039
|
"description": "The mark on the button that opens the clock, behind a seam.\n\nSlot fallback, so a consumer replaces it by slotting; and a method, so the\ntier above replaces it by overriding.\n\n**A named import rather than `<helix-headless-icon>`**, on three counts.\n`Icon` indexes the whole icon map at runtime, `icons[this.name]`, and no\nbundler can shake a runtime lookup, so every consumer of any component that\nrenders one ships all 50kB of path data; a named import ships one path. The\nimport is checked when the package compiles, where a `name` string is\nchecked only by a later name lookup. And `Icon` is not registered on the\nheadless tier at all, which registers `helix-headless-icon`, so a headless\nconsumer gets an inert unknown element and no mark whatsoever."
|
|
162777
164040
|
},
|
|
164041
|
+
{
|
|
164042
|
+
"kind": "field",
|
|
164043
|
+
"name": "showsClear",
|
|
164044
|
+
"type": {
|
|
164045
|
+
"text": "boolean"
|
|
164046
|
+
},
|
|
164047
|
+
"privacy": "private",
|
|
164048
|
+
"description": "Whether there is a clear button on screen right now.",
|
|
164049
|
+
"readonly": true
|
|
164050
|
+
},
|
|
164051
|
+
{
|
|
164052
|
+
"kind": "field",
|
|
164053
|
+
"name": "handleClear",
|
|
164054
|
+
"privacy": "private",
|
|
164055
|
+
"readonly": true,
|
|
164056
|
+
"description": "Empties the field, through `requestValue` so a consumer who owns the\nvalue decides, then says `change` and `helix-clear` and puts focus back\nin the field, the button having gone."
|
|
164057
|
+
},
|
|
164058
|
+
{
|
|
164059
|
+
"kind": "method",
|
|
164060
|
+
"name": "renderClearIcon",
|
|
164061
|
+
"privacy": "protected",
|
|
164062
|
+
"return": {
|
|
164063
|
+
"type": {
|
|
164064
|
+
"text": "TemplateResult"
|
|
164065
|
+
}
|
|
164066
|
+
},
|
|
164067
|
+
"description": "The cross on the clear button, behind a seam a tier can move."
|
|
164068
|
+
},
|
|
162778
164069
|
{
|
|
162779
164070
|
"kind": "method",
|
|
162780
164071
|
"name": "renderControl",
|
|
@@ -162853,6 +164144,40 @@
|
|
|
162853
164144
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
162854
164145
|
}
|
|
162855
164146
|
},
|
|
164147
|
+
{
|
|
164148
|
+
"kind": "field",
|
|
164149
|
+
"name": "rangeEndLabel",
|
|
164150
|
+
"type": {
|
|
164151
|
+
"text": "string"
|
|
164152
|
+
},
|
|
164153
|
+
"default": "'End'",
|
|
164154
|
+
"description": "What a screen reader hears before the segments of a range's second date\nor time, after each segment's own name.",
|
|
164155
|
+
"attribute": "range-end-label",
|
|
164156
|
+
"helix": {
|
|
164157
|
+
"words": true
|
|
164158
|
+
},
|
|
164159
|
+
"inheritedFrom": {
|
|
164160
|
+
"name": "MixinSegmentedField",
|
|
164161
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
164162
|
+
}
|
|
164163
|
+
},
|
|
164164
|
+
{
|
|
164165
|
+
"kind": "field",
|
|
164166
|
+
"name": "rangeStartLabel",
|
|
164167
|
+
"type": {
|
|
164168
|
+
"text": "string"
|
|
164169
|
+
},
|
|
164170
|
+
"default": "'Start'",
|
|
164171
|
+
"description": "What a screen reader hears before the segments of a range's first date\nor time, after each segment's own name: \"month, Start, Stay\".",
|
|
164172
|
+
"attribute": "range-start-label",
|
|
164173
|
+
"helix": {
|
|
164174
|
+
"words": true
|
|
164175
|
+
},
|
|
164176
|
+
"inheritedFrom": {
|
|
164177
|
+
"name": "MixinSegmentedField",
|
|
164178
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
164179
|
+
}
|
|
164180
|
+
},
|
|
162856
164181
|
{
|
|
162857
164182
|
"kind": "field",
|
|
162858
164183
|
"name": "segmented",
|
|
@@ -162871,11 +164196,11 @@
|
|
|
162871
164196
|
"kind": "field",
|
|
162872
164197
|
"name": "parts",
|
|
162873
164198
|
"type": {
|
|
162874
|
-
"text": "Segments"
|
|
164199
|
+
"text": "Segments[]"
|
|
162875
164200
|
},
|
|
162876
164201
|
"privacy": "private",
|
|
162877
|
-
"default": "{}",
|
|
162878
|
-
"description": "The parts set so far, which may be fewer than a whole
|
|
164202
|
+
"default": "[{}]",
|
|
164203
|
+
"description": "The parts set so far in each row, which may be fewer than a whole\nvalue: one row, or two for a range.",
|
|
162879
164204
|
"inheritedFrom": {
|
|
162880
164205
|
"name": "MixinSegmentedField",
|
|
162881
164206
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
@@ -162934,6 +164259,35 @@
|
|
|
162934
164259
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
162935
164260
|
}
|
|
162936
164261
|
},
|
|
164262
|
+
{
|
|
164263
|
+
"kind": "field",
|
|
164264
|
+
"name": "opener",
|
|
164265
|
+
"type": {
|
|
164266
|
+
"text": "HTMLElement | undefined"
|
|
164267
|
+
},
|
|
164268
|
+
"privacy": "private",
|
|
164269
|
+
"default": "undefined",
|
|
164270
|
+
"description": "The segment Alt+Down opened the picker from, which focus goes back to.",
|
|
164271
|
+
"inheritedFrom": {
|
|
164272
|
+
"name": "MixinSegmentedField",
|
|
164273
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
164274
|
+
}
|
|
164275
|
+
},
|
|
164276
|
+
{
|
|
164277
|
+
"kind": "method",
|
|
164278
|
+
"name": "returnFocus",
|
|
164279
|
+
"privacy": "protected",
|
|
164280
|
+
"return": {
|
|
164281
|
+
"type": {
|
|
164282
|
+
"text": "void"
|
|
164283
|
+
}
|
|
164284
|
+
},
|
|
164285
|
+
"description": "Puts focus back on the segment the picker was opened from, as the\ntrigger takes it back to the field. Measured before this: Escape after\nAlt+Down on AM/PM put focus on the hour.",
|
|
164286
|
+
"inheritedFrom": {
|
|
164287
|
+
"name": "MixinPickerField",
|
|
164288
|
+
"module": "src/mixins/mixin-picker-field/mixin-picker-field.ts"
|
|
164289
|
+
}
|
|
164290
|
+
},
|
|
162937
164291
|
{
|
|
162938
164292
|
"kind": "field",
|
|
162939
164293
|
"name": "segmentsShown",
|
|
@@ -162948,6 +164302,66 @@
|
|
|
162948
164302
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
162949
164303
|
}
|
|
162950
164304
|
},
|
|
164305
|
+
{
|
|
164306
|
+
"kind": "method",
|
|
164307
|
+
"name": "joined",
|
|
164308
|
+
"privacy": "private",
|
|
164309
|
+
"return": {
|
|
164310
|
+
"type": {
|
|
164311
|
+
"text": "string"
|
|
164312
|
+
}
|
|
164313
|
+
},
|
|
164314
|
+
"parameters": [
|
|
164315
|
+
{
|
|
164316
|
+
"name": "rows",
|
|
164317
|
+
"type": {
|
|
164318
|
+
"text": "readonly Segments[]"
|
|
164319
|
+
}
|
|
164320
|
+
}
|
|
164321
|
+
],
|
|
164322
|
+
"description": "The value the rows add up to: each row's, joined by commas, or empty while any row is not whole.",
|
|
164323
|
+
"inheritedFrom": {
|
|
164324
|
+
"name": "MixinSegmentedField",
|
|
164325
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
164326
|
+
}
|
|
164327
|
+
},
|
|
164328
|
+
{
|
|
164329
|
+
"kind": "method",
|
|
164330
|
+
"name": "rowsOf",
|
|
164331
|
+
"privacy": "private",
|
|
164332
|
+
"return": {
|
|
164333
|
+
"type": {
|
|
164334
|
+
"text": "Segments[]"
|
|
164335
|
+
}
|
|
164336
|
+
},
|
|
164337
|
+
"parameters": [
|
|
164338
|
+
{
|
|
164339
|
+
"name": "value",
|
|
164340
|
+
"type": {
|
|
164341
|
+
"text": "string"
|
|
164342
|
+
}
|
|
164343
|
+
}
|
|
164344
|
+
],
|
|
164345
|
+
"description": "The rows a value names, one per row, empty where it names none.",
|
|
164346
|
+
"inheritedFrom": {
|
|
164347
|
+
"name": "MixinSegmentedField",
|
|
164348
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
164349
|
+
}
|
|
164350
|
+
},
|
|
164351
|
+
{
|
|
164352
|
+
"kind": "field",
|
|
164353
|
+
"name": "segmentSystem",
|
|
164354
|
+
"type": {
|
|
164355
|
+
"text": "MonthSystem | undefined"
|
|
164356
|
+
},
|
|
164357
|
+
"privacy": "protected",
|
|
164358
|
+
"description": "The calendar a date's parts are counted in, or `undefined` for the Gregorian calendar.",
|
|
164359
|
+
"readonly": true,
|
|
164360
|
+
"inheritedFrom": {
|
|
164361
|
+
"name": "MixinSegmentedField",
|
|
164362
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
164363
|
+
}
|
|
164364
|
+
},
|
|
162951
164365
|
{
|
|
162952
164366
|
"kind": "field",
|
|
162953
164367
|
"name": "layout",
|
|
@@ -163013,6 +164427,12 @@
|
|
|
163013
164427
|
}
|
|
163014
164428
|
},
|
|
163015
164429
|
"parameters": [
|
|
164430
|
+
{
|
|
164431
|
+
"name": "row",
|
|
164432
|
+
"type": {
|
|
164433
|
+
"text": "number"
|
|
164434
|
+
}
|
|
164435
|
+
},
|
|
163016
164436
|
{
|
|
163017
164437
|
"name": "next",
|
|
163018
164438
|
"type": {
|
|
@@ -163473,21 +164893,6 @@
|
|
|
163473
164893
|
"module": "src/mixins/mixin-picker-field/mixin-picker-field.ts"
|
|
163474
164894
|
}
|
|
163475
164895
|
},
|
|
163476
|
-
{
|
|
163477
|
-
"kind": "method",
|
|
163478
|
-
"name": "returnFocus",
|
|
163479
|
-
"privacy": "protected",
|
|
163480
|
-
"return": {
|
|
163481
|
-
"type": {
|
|
163482
|
-
"text": "void"
|
|
163483
|
-
}
|
|
163484
|
-
},
|
|
163485
|
-
"description": "Puts the caret back in the field without the field reopening the panel.\n\nThe anchor rather than the text, which is the trigger where there is no\ntext: Color Input's swatch dropped focus to the body on Escape.",
|
|
163486
|
-
"inheritedFrom": {
|
|
163487
|
-
"name": "MixinPickerField",
|
|
163488
|
-
"module": "src/mixins/mixin-picker-field/mixin-picker-field.ts"
|
|
163489
|
-
}
|
|
163490
|
-
},
|
|
163491
164896
|
{
|
|
163492
164897
|
"kind": "method",
|
|
163493
164898
|
"name": "focus",
|
|
@@ -165146,6 +166551,14 @@
|
|
|
165146
166551
|
"name": "helix-before-open",
|
|
165147
166552
|
"reactProp": "onhelix-before-open"
|
|
165148
166553
|
},
|
|
166554
|
+
{
|
|
166555
|
+
"type": {
|
|
166556
|
+
"text": "HelixClearEvent"
|
|
166557
|
+
},
|
|
166558
|
+
"description": "Fired after the clear button has emptied the field, after `input` and `change`.",
|
|
166559
|
+
"name": "helix-clear",
|
|
166560
|
+
"reactProp": "onhelix-clear"
|
|
166561
|
+
},
|
|
165149
166562
|
{
|
|
165150
166563
|
"type": {
|
|
165151
166564
|
"text": "Event"
|
|
@@ -165177,6 +166590,24 @@
|
|
|
165177
166590
|
"description": "What the browser may autofill here, as one of the platform's own tokens.\n\nEmpty leaves the attribute off, which is the browser's default and is what\nlets autofill work at all.",
|
|
165178
166591
|
"fieldName": "autocomplete"
|
|
165179
166592
|
},
|
|
166593
|
+
{
|
|
166594
|
+
"name": "clearable",
|
|
166595
|
+
"type": {
|
|
166596
|
+
"text": "boolean"
|
|
166597
|
+
},
|
|
166598
|
+
"default": "false",
|
|
166599
|
+
"description": "Whether the field shows a button that empties it, as Input's `clearable`\ndoes. Shown only while the field holds something to clear and is neither\ndisabled nor read-only.",
|
|
166600
|
+
"fieldName": "clearable"
|
|
166601
|
+
},
|
|
166602
|
+
{
|
|
166603
|
+
"name": "clear-label",
|
|
166604
|
+
"type": {
|
|
166605
|
+
"text": "string"
|
|
166606
|
+
},
|
|
166607
|
+
"default": "'Clear'",
|
|
166608
|
+
"description": "The accessible name of the clear button, which shows only an icon.",
|
|
166609
|
+
"fieldName": "clearLabel"
|
|
166610
|
+
},
|
|
165180
166611
|
{
|
|
165181
166612
|
"name": "disable-times",
|
|
165182
166613
|
"type": {
|
|
@@ -165319,6 +166750,15 @@
|
|
|
165319
166750
|
"description": "The message shown when `disable-times` bars a time.",
|
|
165320
166751
|
"fieldName": "unavailableMessage"
|
|
165321
166752
|
},
|
|
166753
|
+
{
|
|
166754
|
+
"name": "unreadable-message",
|
|
166755
|
+
"type": {
|
|
166756
|
+
"text": "string"
|
|
166757
|
+
},
|
|
166758
|
+
"default": "'{mode, select, single {Enter a time as {shape}.} other {Enter times as {shape}, separated by commas.}}'",
|
|
166759
|
+
"description": "The message for text that is no time, where `bad-input-message` is not\nset. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`.",
|
|
166760
|
+
"fieldName": "unreadableMessage"
|
|
166761
|
+
},
|
|
165322
166762
|
{
|
|
165323
166763
|
"name": "variant",
|
|
165324
166764
|
"type": {
|
|
@@ -165366,6 +166806,32 @@
|
|
|
165366
166806
|
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
165367
166807
|
}
|
|
165368
166808
|
},
|
|
166809
|
+
{
|
|
166810
|
+
"name": "range-end-label",
|
|
166811
|
+
"type": {
|
|
166812
|
+
"text": "string"
|
|
166813
|
+
},
|
|
166814
|
+
"default": "'End'",
|
|
166815
|
+
"description": "What a screen reader hears before the segments of a range's second date\nor time, after each segment's own name.",
|
|
166816
|
+
"fieldName": "rangeEndLabel",
|
|
166817
|
+
"inheritedFrom": {
|
|
166818
|
+
"name": "MixinSegmentedField",
|
|
166819
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
166820
|
+
}
|
|
166821
|
+
},
|
|
166822
|
+
{
|
|
166823
|
+
"name": "range-start-label",
|
|
166824
|
+
"type": {
|
|
166825
|
+
"text": "string"
|
|
166826
|
+
},
|
|
166827
|
+
"default": "'Start'",
|
|
166828
|
+
"description": "What a screen reader hears before the segments of a range's first date\nor time, after each segment's own name: \"month, Start, Stay\".",
|
|
166829
|
+
"fieldName": "rangeStartLabel",
|
|
166830
|
+
"inheritedFrom": {
|
|
166831
|
+
"name": "MixinSegmentedField",
|
|
166832
|
+
"module": "src/mixins/mixin-segmented-field/mixin-segmented-field.ts"
|
|
166833
|
+
}
|
|
166834
|
+
},
|
|
165369
166835
|
{
|
|
165370
166836
|
"name": "segmented",
|
|
165371
166837
|
"type": {
|
|
@@ -165624,6 +167090,10 @@
|
|
|
165624
167090
|
}
|
|
165625
167091
|
],
|
|
165626
167092
|
"cssStates": [
|
|
167093
|
+
{
|
|
167094
|
+
"description": "The field holds no time.",
|
|
167095
|
+
"name": "blank"
|
|
167096
|
+
},
|
|
165627
167097
|
{
|
|
165628
167098
|
"description": "The control has an error to show, from the browser's validation or from your `feedback`.",
|
|
165629
167099
|
"name": "invalid"
|
|
@@ -165746,7 +167216,7 @@
|
|
|
165746
167216
|
"declarations": [
|
|
165747
167217
|
{
|
|
165748
167218
|
"kind": "class",
|
|
165749
|
-
"description": "Shows the times at each `step` as a `Listbox`, which provides the keyboard\nbehavior, typeahead, scrolling into view, and announcements for a set of\noptions. `variant=\"wheels\"` shows a column each for the hour, the minute, and\nthe meridiem, and one for the second with `seconds`. Left and Right move\nbetween the wheels, and Tab does too.\n\n`hour-cycle` writes every time on a twelve or a twenty-four hour clock\nwhatever the locale, and `seconds` holds times to the second.\n\nThe step keeps the list usable. At the default of 15 minutes a day is 96\nrows, which people can scroll or type into. At 1 minute it is 1,440. Use the\nlist for the times your product offers, and Time Input for any time, the same\nway Date Input separates typing a date from picking one on the calendar.\n\nThe value is always `HH:mm` on a 24-hour clock, or `HH:mm:ss` with\n`seconds`. A form submits that shape,\n`min` and `max` compare against it, and it sorts as a string. Each row's text\nfollows the person's own conventions, from `Intl`.\n\nThe chosen row is marked in the served markup. The listbox gets the answer as\n`.value`, and Lit SSR serializes no property binding, so without more the 96\nserved rows would carry no mark until the listbox upgrades and runs `place`.\nEach option also gets `selected`, an attribute binding that does serialize,\nand `place` then writes the same answer from the same value. This is the same\n`selected` you write on `Option` elsewhere in Helix, and Date Picker marks\nits choice in markup for the same reason. The list and the wheels both do\nthis, because each wheel is also a listbox.\n\n**Keyboard.** The list is one tab stop, and each wheel is one.\n\n| Key | What it does |\n|---|---|\n| Down, Up | Moves to the next or the previous time, or in a wheel to the next or the previous hour, minute, second, or half of the day. |\n| Home, End | Moves to the first or the last time, or the first or the last in a wheel. |\n| Page Down, Page Up | Moves by as many times as the list shows at once. |\n| Digits | Moves to the next time that starts with what you typed, such as `9` for 9:00. |\n| Enter, Space | Chooses the highlighted time. Moving chooses too, except under `manual` or with a `mode`. With a `mode`, Space adds or removes the time. |\n| Right, Left | In the wheels, moves to the next or the previous wheel, mirrored right to left. |\n| Tab | Moves to the next wheel, then out of the picker. |\n\n**ARIA.** The list is a `listbox` named by `label`, a slotted label, the\nhost's `aria-label` or its `aria-labelledby`. A development build warns\nwhere all four are empty. The list is described by the hint, or by the\nmessage in `feedback` in its place, and carries `aria-multiselectable` with\na `mode
|
|
167219
|
+
"description": "Shows the times at each `step` as a `Listbox`, which provides the keyboard\nbehavior, typeahead, scrolling into view, and announcements for a set of\noptions. `variant=\"wheels\"` shows a column each for the hour, the minute, and\nthe meridiem, and one for the second with `seconds`. Left and Right move\nbetween the wheels, and Tab does too.\n\n`hour-cycle` writes every time on a twelve or a twenty-four hour clock\nwhatever the locale, and `seconds` holds times to the second.\n\nThe step keeps the list usable. At the default of 15 minutes a day is 96\nrows, which people can scroll or type into. At 1 minute it is 1,440. Use the\nlist for the times your product offers, and Time Input for any time, the same\nway Date Input separates typing a date from picking one on the calendar.\n\nThe value is always `HH:mm` on a 24-hour clock, or `HH:mm:ss` with\n`seconds`. A form submits that shape,\n`min` and `max` compare against it, and it sorts as a string. Each row's text\nfollows the person's own conventions, from `Intl`.\n\nThe chosen row is marked in the served markup. The listbox gets the answer as\n`.value`, and Lit SSR serializes no property binding, so without more the 96\nserved rows would carry no mark until the listbox upgrades and runs `place`.\nEach option also gets `selected`, an attribute binding that does serialize,\nand `place` then writes the same answer from the same value. This is the same\n`selected` you write on `Option` elsewhere in Helix, and Date Picker marks\nits choice in markup for the same reason. The list and the wheels both do\nthis, because each wheel is also a listbox.\n\n**Keyboard.** The list is one tab stop, and each wheel is one.\n\n| Key | What it does |\n|---|---|\n| Down, Up | Moves to the next or the previous time, or in a wheel to the next or the previous hour, minute, second, or half of the day. |\n| Home, End | Moves to the first or the last time, or the first or the last in a wheel. |\n| Page Down, Page Up | Moves by as many times as the list shows at once. |\n| Digits | Moves to the next time that starts with what you typed, such as `9` for 9:00. |\n| Enter, Space | Chooses the highlighted time. Moving chooses too, except under `manual` or with a `mode`. With a `mode`, Space adds or removes the time. |\n| Right, Left | In the wheels, moves to the next or the previous wheel, mirrored right to left. |\n| Tab | Moves to the next wheel, then out of the picker. |\n\n**ARIA.** The list is a `listbox` named by `label`, a slotted label, the\nhost's `aria-label` or its `aria-labelledby`. A development build warns\nwhere all four are empty. The list is described by the hint, or by the\nmessage in `feedback` in its place, and carries `aria-multiselectable` with\na `mode`. It carries `aria-invalid` while `feedback` says what is wrong,\nwhile it holds a time outside `min` and `max` or one the picker does not\noffer, and, for a `required` picker with no time, once the reader has\nchosen one or a form has refused the picker. The wheels\nare a `group` with that name, holding one `listbox` per wheel, named \"Hour\",\n\"Minute\", \"Second\" and \"AM/PM\" in the page's language, and each described\nthe same way.",
|
|
165750
167220
|
"name": "HelixHeadlessTimePicker",
|
|
165751
167221
|
"cssParts": [
|
|
165752
167222
|
{
|
|
@@ -165870,7 +167340,7 @@
|
|
|
165870
167340
|
"name": "list-search-field"
|
|
165871
167341
|
},
|
|
165872
167342
|
{
|
|
165873
|
-
"description": "One time in the list. It carries `data-between` inside a range.",
|
|
167343
|
+
"description": "One time in the list. It carries `data-between` inside a range, and inside the run to the time under the pointer while a range waits for its second end.",
|
|
165874
167344
|
"name": "option"
|
|
165875
167345
|
},
|
|
165876
167346
|
{
|
|
@@ -166273,6 +167743,28 @@
|
|
|
166273
167743
|
"readonly": true,
|
|
166274
167744
|
"description": "Takes what the list announced and constrains it to what the mode allows.\n\nThe listbox is put in `multiple` for both modes, because that is what marks\nmore than one row and toggles on press. A range then differs only in what is\nkept: two, and a third pick starts again from that third one. Working out\nwhich is newest by difference rather than by position, since a toggle can\nremove as easily as add and the announced list is a set rather than a\nsequence."
|
|
166275
167745
|
},
|
|
167746
|
+
{
|
|
167747
|
+
"kind": "field",
|
|
167748
|
+
"name": "previewed",
|
|
167749
|
+
"type": {
|
|
167750
|
+
"text": "string"
|
|
167751
|
+
},
|
|
167752
|
+
"privacy": "private",
|
|
167753
|
+
"default": "''",
|
|
167754
|
+
"description": "The time under the pointer while a range holds one end, which the list\nbands the range to before it is chosen, as Date Picker does."
|
|
167755
|
+
},
|
|
167756
|
+
{
|
|
167757
|
+
"kind": "field",
|
|
167758
|
+
"name": "handleListHover",
|
|
167759
|
+
"privacy": "private",
|
|
167760
|
+
"readonly": true
|
|
167761
|
+
},
|
|
167762
|
+
{
|
|
167763
|
+
"kind": "field",
|
|
167764
|
+
"name": "handleListLeave",
|
|
167765
|
+
"privacy": "private",
|
|
167766
|
+
"readonly": true
|
|
167767
|
+
},
|
|
166276
167768
|
{
|
|
166277
167769
|
"kind": "method",
|
|
166278
167770
|
"name": "between",
|
|
@@ -166290,7 +167782,7 @@
|
|
|
166290
167782
|
}
|
|
166291
167783
|
}
|
|
166292
167784
|
],
|
|
166293
|
-
"description": "Whether a time falls inside a range, which is what gets banded."
|
|
167785
|
+
"description": "Whether a time falls inside a range, which is what gets banded: the\nchosen range, or while one end waits, the run to the time under the\npointer."
|
|
166294
167786
|
},
|
|
166295
167787
|
{
|
|
166296
167788
|
"kind": "field",
|
|
@@ -166507,6 +167999,30 @@
|
|
|
166507
167999
|
},
|
|
166508
168000
|
"description": "Reports \"required and empty\", or clears it.\n\nWritten out rather than taken from `MixinField`, which is where the seven\nform controls get this. That mixin brings a label, a hint and a feedback\nregion with it, and this is a grid rather than a field: it is composed\n*into* the field that has those, so taking the mixin would give one control\ntwo of each. What is shared is five lines, and the anchor is what the\nbrowser points its bubble at."
|
|
166509
168001
|
},
|
|
168002
|
+
{
|
|
168003
|
+
"kind": "field",
|
|
168004
|
+
"name": "problem",
|
|
168005
|
+
"type": {
|
|
168006
|
+
"text": "[ValidityStateFlags, string] | undefined"
|
|
168007
|
+
},
|
|
168008
|
+
"privacy": "private",
|
|
168009
|
+
"description": "What is wrong with the answer, as validity flags and a message, or nothing.\n`reportRequired` hands it to the form, and `failure` to the mark.",
|
|
168010
|
+
"readonly": true
|
|
168011
|
+
},
|
|
168012
|
+
{
|
|
168013
|
+
"kind": "field",
|
|
168014
|
+
"name": "failure",
|
|
168015
|
+
"type": {
|
|
168016
|
+
"text": "'missing' | 'refused' | undefined"
|
|
168017
|
+
},
|
|
168018
|
+
"privacy": "protected",
|
|
168019
|
+
"description": "A missing time waits for the reader; a refused one is marked at once.",
|
|
168020
|
+
"readonly": true,
|
|
168021
|
+
"inheritedFrom": {
|
|
168022
|
+
"name": "MixinPickerFeedback",
|
|
168023
|
+
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
168024
|
+
}
|
|
168025
|
+
},
|
|
166510
168026
|
{
|
|
166511
168027
|
"kind": "method",
|
|
166512
168028
|
"name": "report",
|
|
@@ -166777,6 +168293,20 @@
|
|
|
166777
168293
|
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
166778
168294
|
}
|
|
166779
168295
|
},
|
|
168296
|
+
{
|
|
168297
|
+
"kind": "field",
|
|
168298
|
+
"name": "touched",
|
|
168299
|
+
"type": {
|
|
168300
|
+
"text": "boolean"
|
|
168301
|
+
},
|
|
168302
|
+
"privacy": "private",
|
|
168303
|
+
"default": "false",
|
|
168304
|
+
"description": "Whether the reader has committed an answer, or a form has refused the\npicker. A reset forgets it.",
|
|
168305
|
+
"inheritedFrom": {
|
|
168306
|
+
"name": "MixinPickerFeedback",
|
|
168307
|
+
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
168308
|
+
}
|
|
168309
|
+
},
|
|
166780
168310
|
{
|
|
166781
168311
|
"kind": "field",
|
|
166782
168312
|
"name": "marked",
|
|
@@ -166784,13 +168314,30 @@
|
|
|
166784
168314
|
"text": "boolean"
|
|
166785
168315
|
},
|
|
166786
168316
|
"privacy": "protected",
|
|
166787
|
-
"description": "Whether a reader is told the answer is wrong: `invalid`, or `
|
|
168317
|
+
"description": "Whether a reader is told the answer is wrong: `invalid`, `feedback`, a\nheld answer the picker refuses, or a missing answer once the reader has\ncommitted one or a form has refused the picker.\n\n**A refused answer is marked at once, and a missing one waits**, as\nChromium's tree does for native controls: a time input holding a time\npast its `max` reports invalid on load, and an empty required text field\ndoes not, since the reader already hears that it is required. Measured\nbefore this on Time Picker: `value=\"13:00\" max=\"12:00\"` reported\n`rangeOverflow` while the list said nothing and `:state(invalid)` was off.",
|
|
166788
168318
|
"readonly": true,
|
|
166789
168319
|
"inheritedFrom": {
|
|
166790
168320
|
"name": "MixinPickerFeedback",
|
|
166791
168321
|
"module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
|
|
166792
168322
|
}
|
|
166793
168323
|
},
|
|
168324
|
+
{
|
|
168325
|
+
"kind": "method",
|
|
168326
|
+
"name": "formResetCallback",
|
|
168327
|
+
"return": {
|
|
168328
|
+
"type": {
|
|
168329
|
+
"text": "void"
|
|
168330
|
+
}
|
|
168331
|
+
},
|
|
168332
|
+
"description": "Returns the control to its `defaultValue`, or to its `value` attribute\nwhere there is no `default-value`.\n\nBoth halves are dropped, the consumer's and the control's, because a\nreset means the form is as it was served. Clearing only the internal one\nwould leave a control that had been written to stuck at that value.",
|
|
168333
|
+
"inheritedFrom": {
|
|
168334
|
+
"name": "HelixFormElement",
|
|
168335
|
+
"module": "src/helix-form-element/helix-form-element.ts"
|
|
168336
|
+
},
|
|
168337
|
+
"type": {
|
|
168338
|
+
"text": "formResetCallback() => void"
|
|
168339
|
+
}
|
|
168340
|
+
},
|
|
166794
168341
|
{
|
|
166795
168342
|
"kind": "method",
|
|
166796
168343
|
"name": "renderPickerFeedback",
|
|
@@ -166891,23 +168438,6 @@
|
|
|
166891
168438
|
"module": "src/mixins/mixin-controller-value/mixin-controller-value.ts"
|
|
166892
168439
|
}
|
|
166893
168440
|
},
|
|
166894
|
-
{
|
|
166895
|
-
"kind": "method",
|
|
166896
|
-
"name": "formResetCallback",
|
|
166897
|
-
"return": {
|
|
166898
|
-
"type": {
|
|
166899
|
-
"text": "void"
|
|
166900
|
-
}
|
|
166901
|
-
},
|
|
166902
|
-
"description": "Returns the control to its `defaultValue`, or to its `value` attribute\nwhere there is no `default-value`.\n\nBoth halves are dropped, the consumer's and the control's, because a\nreset means the form is as it was served. Clearing only the internal one\nwould leave a control that had been written to stuck at that value.",
|
|
166903
|
-
"inheritedFrom": {
|
|
166904
|
-
"name": "HelixFormElement",
|
|
166905
|
-
"module": "src/helix-form-element/helix-form-element.ts"
|
|
166906
|
-
},
|
|
166907
|
-
"type": {
|
|
166908
|
-
"text": "formResetCallback() => void"
|
|
166909
|
-
}
|
|
166910
|
-
},
|
|
166911
168441
|
{
|
|
166912
168442
|
"kind": "method",
|
|
166913
168443
|
"name": "formStateRestoreCallback",
|
|
@@ -168023,9 +169553,13 @@
|
|
|
168023
169553
|
"name": "blank"
|
|
168024
169554
|
},
|
|
168025
169555
|
{
|
|
168026
|
-
"description": "While `invalid` is set
|
|
169556
|
+
"description": "While `invalid` is set, `feedback` says what is wrong, or the list carries `aria-invalid`.",
|
|
168027
169557
|
"name": "invalid"
|
|
168028
169558
|
},
|
|
169559
|
+
{
|
|
169560
|
+
"description": "While a `range` holds its first time and waits for the second.",
|
|
169561
|
+
"name": "range-pending"
|
|
169562
|
+
},
|
|
168029
169563
|
{
|
|
168030
169564
|
"description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
|
|
168031
169565
|
"name": "settled",
|
|
@@ -169658,7 +171192,7 @@
|
|
|
169658
171192
|
"declarations": [
|
|
169659
171193
|
{
|
|
169660
171194
|
"kind": "class",
|
|
169661
|
-
"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
|
|
171195
|
+
"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 or anywhere\nin the region's stack, and while the page is hidden, so a message is not\nspent 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, or toward the\nedge the region's `swipe-direction` names, and past halfway, or quickly,\ndismisses it through the same `helix-dismiss` as its control. While it\nmoves, the distance is on the `item` part as `--toast-swipe-x` or\n`--toast-swipe-y`.\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.",
|
|
169662
171196
|
"name": "HelixHeadlessToastItem",
|
|
169663
171197
|
"cssProperties": [
|
|
169664
171198
|
{
|
|
@@ -169668,6 +171202,10 @@
|
|
|
169668
171202
|
{
|
|
169669
171203
|
"description": "How far a swipe has moved the message across, in pixels, toward the right.",
|
|
169670
171204
|
"name": "--toast-swipe-x"
|
|
171205
|
+
},
|
|
171206
|
+
{
|
|
171207
|
+
"description": "How far a swipe has moved the message down, in pixels, under a `swipe-direction` of `top` or `bottom`.",
|
|
171208
|
+
"name": "--toast-swipe-y"
|
|
169671
171209
|
}
|
|
169672
171210
|
],
|
|
169673
171211
|
"cssParts": [
|
|
@@ -169771,12 +171309,43 @@
|
|
|
169771
171309
|
"description": "Whether the message is still showing.\n\nThe item always applies: it goes when it is asked to, having announced\n`helix-dismiss` first, and a consumer who owns the list refuses that event\nto take the decision instead.\n\n**No `default-open`, unlike the four mixins.** A `default-` seed exists so\nmarkup can choose a starting state without claiming ownership, and there is\nonly one starting state that makes sense: a message that has been rendered\nis showing. An attribute whose only legal value is the default is an\nattribute nobody can use.",
|
|
169772
171310
|
"attribute": "open"
|
|
169773
171311
|
},
|
|
171312
|
+
{
|
|
171313
|
+
"kind": "field",
|
|
171314
|
+
"name": "regionHolding",
|
|
171315
|
+
"type": {
|
|
171316
|
+
"text": "boolean"
|
|
171317
|
+
},
|
|
171318
|
+
"privacy": "private",
|
|
171319
|
+
"default": "false",
|
|
171320
|
+
"description": "Whether the timer is held for `regionHeld`, so the hold is let go once."
|
|
171321
|
+
},
|
|
171322
|
+
{
|
|
171323
|
+
"kind": "method",
|
|
171324
|
+
"name": "holdForRegion",
|
|
171325
|
+
"privacy": "private",
|
|
171326
|
+
"return": {
|
|
171327
|
+
"type": {
|
|
171328
|
+
"text": "void"
|
|
171329
|
+
}
|
|
171330
|
+
},
|
|
171331
|
+
"description": "Holds the timer while the region asks, and lets it go once."
|
|
171332
|
+
},
|
|
171333
|
+
{
|
|
171334
|
+
"kind": "field",
|
|
171335
|
+
"name": "swipeTo",
|
|
171336
|
+
"type": {
|
|
171337
|
+
"text": "ReturnType<typeof swipeEdge>"
|
|
171338
|
+
},
|
|
171339
|
+
"privacy": "private",
|
|
171340
|
+
"description": "The physical edge a swipe dismisses toward.",
|
|
171341
|
+
"readonly": true
|
|
171342
|
+
},
|
|
169774
171343
|
{
|
|
169775
171344
|
"kind": "field",
|
|
169776
171345
|
"name": "swipes",
|
|
169777
171346
|
"privacy": "protected",
|
|
169778
171347
|
"readonly": true,
|
|
169779
|
-
"default": "new SwipeController(this, { axis: () => (this.open ?
|
|
171348
|
+
"default": "new SwipeController(this, { axis: () => (this.open ? swipeAxis(this.swipeTo) : undefined), end: (dx, dy, vx, vy) => { const edge = this.swipeTo const box = this.partNamed('item')?.getBoundingClientRect() const across = swipeAxis(edge) === 'x' const shown = settleSwipe({ points: [1], size: (across ? box?.width : box?.height) ?? 0, travel: Math.max(0, towardEdge(edge, dx, dy)), velocity: towardEdge(edge, vx, vy), }) if (shown === 0 && this.dismiss()) { return } this.slide(0) }, move: (dx, dy) => this.slide(Math.max(0, towardEdge(this.swipeTo, dx, dy))), start: (_target, event) => event.pointerType !== 'mouse', surface: () => this.partNamed('item'), })"
|
|
169780
171349
|
},
|
|
169781
171350
|
{
|
|
169782
171351
|
"kind": "method",
|
|
@@ -169795,7 +171364,7 @@
|
|
|
169795
171364
|
}
|
|
169796
171365
|
}
|
|
169797
171366
|
],
|
|
169798
|
-
"description": "Writes how far a swipe has moved the message toward
|
|
171367
|
+
"description": "Writes how far a swipe has moved the message toward its edge."
|
|
169799
171368
|
},
|
|
169800
171369
|
{
|
|
169801
171370
|
"kind": "field",
|
|
@@ -170548,7 +172117,7 @@
|
|
|
170548
172117
|
"name": "closed"
|
|
170549
172118
|
},
|
|
170550
172119
|
{
|
|
170551
|
-
"description": "The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.",
|
|
172120
|
+
"description": "The dismiss timer is paused, while a pointer or focus is on the message or in the stack, or while the page is hidden.",
|
|
170552
172121
|
"name": "paused"
|
|
170553
172122
|
},
|
|
170554
172123
|
{
|
|
@@ -170614,7 +172183,7 @@
|
|
|
170614
172183
|
"declarations": [
|
|
170615
172184
|
{
|
|
170616
172185
|
"kind": "class",
|
|
170617
|
-
"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. |",
|
|
172186
|
+
"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, or toward the\nedge `swipe-direction` names.\n\n**Every message's timer waits while a pointer or focus is in the stack**, as\nReact Aria's and Radix's regions do, so a reader moving from one message to\nthe next does not lose the one behind them.\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. |",
|
|
170618
172187
|
"name": "HelixHeadlessToast",
|
|
170619
172188
|
"cssParts": [
|
|
170620
172189
|
{
|
|
@@ -170685,6 +172254,15 @@
|
|
|
170685
172254
|
"attribute": "placement",
|
|
170686
172255
|
"reflects": true
|
|
170687
172256
|
},
|
|
172257
|
+
{
|
|
172258
|
+
"kind": "field",
|
|
172259
|
+
"name": "swipeDirection",
|
|
172260
|
+
"type": {
|
|
172261
|
+
"text": "'bottom' | 'end' | 'start' | 'top' | undefined"
|
|
172262
|
+
},
|
|
172263
|
+
"description": "The edge a touch or a pen swipes a message toward to dismiss it: `end`,\nthe end of the line, or `start`, `top` or `bottom`. Unset is `end`.",
|
|
172264
|
+
"attribute": "swipe-direction"
|
|
172265
|
+
},
|
|
170688
172266
|
{
|
|
170689
172267
|
"kind": "field",
|
|
170690
172268
|
"name": "said",
|
|
@@ -170860,6 +172438,56 @@
|
|
|
170860
172438
|
"description": "The messages that are showing, in order.",
|
|
170861
172439
|
"readonly": true
|
|
170862
172440
|
},
|
|
172441
|
+
{
|
|
172442
|
+
"kind": "field",
|
|
172443
|
+
"name": "pointerIn",
|
|
172444
|
+
"type": {
|
|
172445
|
+
"text": "boolean"
|
|
172446
|
+
},
|
|
172447
|
+
"privacy": "private",
|
|
172448
|
+
"default": "false",
|
|
172449
|
+
"description": "Whether a pointer is over the stack."
|
|
172450
|
+
},
|
|
172451
|
+
{
|
|
172452
|
+
"kind": "field",
|
|
172453
|
+
"name": "focusIn",
|
|
172454
|
+
"type": {
|
|
172455
|
+
"text": "boolean"
|
|
172456
|
+
},
|
|
172457
|
+
"privacy": "private",
|
|
172458
|
+
"default": "false",
|
|
172459
|
+
"description": "Whether focus is in the stack."
|
|
172460
|
+
},
|
|
172461
|
+
{
|
|
172462
|
+
"kind": "method",
|
|
172463
|
+
"name": "inform",
|
|
172464
|
+
"privacy": "private",
|
|
172465
|
+
"return": {
|
|
172466
|
+
"type": {
|
|
172467
|
+
"text": "void"
|
|
172468
|
+
}
|
|
172469
|
+
},
|
|
172470
|
+
"description": "Tells every message whether the stack holds its timer and which way it\nswipes, which only the region knows."
|
|
172471
|
+
},
|
|
172472
|
+
{
|
|
172473
|
+
"kind": "field",
|
|
172474
|
+
"name": "handlePointerEnter",
|
|
172475
|
+
"privacy": "private",
|
|
172476
|
+
"readonly": true
|
|
172477
|
+
},
|
|
172478
|
+
{
|
|
172479
|
+
"kind": "field",
|
|
172480
|
+
"name": "handlePointerLeave",
|
|
172481
|
+
"privacy": "private",
|
|
172482
|
+
"readonly": true
|
|
172483
|
+
},
|
|
172484
|
+
{
|
|
172485
|
+
"kind": "field",
|
|
172486
|
+
"name": "handleFocusOut",
|
|
172487
|
+
"privacy": "private",
|
|
172488
|
+
"readonly": true,
|
|
172489
|
+
"description": "Focus leaving the stack, and not moving between its messages."
|
|
172490
|
+
},
|
|
170863
172491
|
{
|
|
170864
172492
|
"kind": "field",
|
|
170865
172493
|
"name": "held",
|
|
@@ -171366,6 +172994,14 @@
|
|
|
171366
172994
|
},
|
|
171367
172995
|
"description": "Which corner or edge the stack sits at.\n\nNamed here rather than on each message, because where a page puts its\ntoasts is a fact about the page: a stack whose members disagreed about\nwhere they were would not be a stack.\n\n**Six corners in one word, where `Carousel` splits the same question in\ntwo.** That family takes a placement and an alignment, and argues at its own\ndeclaration that one attribute naming both facts multiplies rather than\ncomposing. It is right there and wrong here, and the difference is the\nshape of the product. A carousel's is ragged: its `overlay` belongs to no\nedge at all, and its two groups of chrome move independently, shipping\ndifferent defaults so they do not land on each other, which is what makes\nrewriting one to move the other a real cost. A stack's is two edges by\nthree alignments, every pair real and every pair named this way by every\ntoast a reader has already met. Fusing spells the domain out and loses\nnothing; a stack has one position and takes it once.\n\n**Optional, and bottom-end is the absence of it.** Reflecting *and*\ndefaulting is the pair that writes onto a host: every toast region anybody\nrendered would gain a `placement=\"bottom-end\"` nobody typed, which a React\nconsumer's server markup does not have. A sheet carries the resting\narrangement in its own `:host` rule and the selectors describe only the\ndepartures, which is what `orientation` does.",
|
|
171368
172996
|
"fieldName": "placement"
|
|
172997
|
+
},
|
|
172998
|
+
{
|
|
172999
|
+
"name": "swipe-direction",
|
|
173000
|
+
"type": {
|
|
173001
|
+
"text": "'bottom' | 'end' | 'start' | 'top' | undefined"
|
|
173002
|
+
},
|
|
173003
|
+
"description": "The edge a touch or a pen swipes a message toward to dismiss it: `end`,\nthe end of the line, or `start`, `top` or `bottom`. Unset is `end`.",
|
|
173004
|
+
"fieldName": "swipeDirection"
|
|
171369
173005
|
}
|
|
171370
173006
|
],
|
|
171371
173007
|
"superclass": {
|
|
@@ -171494,7 +173130,7 @@
|
|
|
171494
173130
|
"declarations": [
|
|
171495
173131
|
{
|
|
171496
173132
|
"kind": "class",
|
|
171497
|
-
"description": "The indicator is one element that moves to the selected item. A single moving\nobject is easier to follow than a fill that swaps, and it shows where the\nselection came from.\n\nIts size and position are measured from the selected item and written to the\nindicator as custom properties, because labels have different lengths.\nMeasurement happens on the client, so the server renders the indicator hidden\nand it fades in once measured.\n\n`selection-mode=\"multiple\"` makes the group a toolbar of buttons that each\nsay whether they are pressed with `aria-pressed`, as React Aria's\nToggleButtonGroup and Radix's ToggleGroup do. A press presses or releases\none item, the arrow keys move focus without pressing, and `value` is the\npressed values, comma separated, which `values` also gives as a list. Use\n`values` where an item's value holds a comma. The form receives one entry\nper pressed value, and a page the browser brings back presses the same\nitems again. The indicator stays hidden, and each pressed item is marked\nwith `:state(pressed)`. Inside a toolbar it is a named group of that\ntoolbar's controls instead, so a reader meets one toolbar.\n\n`orientation=\"vertical\"` runs the items down a column, says so to the\naccessibility tree, and the up and down arrows move between them.\n\n**Keyboard.** The group is one tab stop: the chosen item, or the first that\ncan be chosen, as in a radio group, and in a multiple group the item focus\nwas last on.\n\n| Key | What it does |\n|---|---|\n| Right, Down | Moves to the next item, from the last back to the first. In a single group, chooses it. |\n| Left, Up | Moves to the item before, from the first round to the last. In a single group, chooses it. |\n| Home, End | Moves to the first or the last item. In a single group, chooses it. |\n| Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. |\n\nLeft and Right swap on a right-to-left page, and a disabled item is passed\nover. A single group is a `radiogroup` of items with `role=\"radio\"` and\n`aria-checked`. A multiple group is a `toolbar` of buttons with\n`aria-pressed`, or a `group` inside a toolbar. The group is named by\n`label` and carries `aria-orientation` under `orientation`.",
|
|
173133
|
+
"description": "The indicator is one element that moves to the selected item. A single moving\nobject is easier to follow than a fill that swaps, and it shows where the\nselection came from.\n\nIts size and position are measured from the selected item and written to the\nindicator as custom properties, because labels have different lengths.\nMeasurement happens on the client, so the server renders the indicator hidden\nand it fades in once measured.\n\n`selection-mode=\"multiple\"` makes the group a toolbar of buttons that each\nsay whether they are pressed with `aria-pressed`, as React Aria's\nToggleButtonGroup and Radix's ToggleGroup do. A press presses or releases\none item, the arrow keys move focus without pressing, and `value` is the\npressed values, comma separated, which `values` also gives as a list. Use\n`values` where an item's value holds a comma. The form receives one entry\nper pressed value, and a page the browser brings back presses the same\nitems again. The indicator stays hidden, and each pressed item is marked\nwith `:state(pressed)`. Inside a toolbar it is a named group of that\ntoolbar's controls instead, so a reader meets one toolbar.\n\n`orientation=\"vertical\"` runs the items down a column, says so to the\naccessibility tree, and the up and down arrows move between them.\n\n**Keyboard.** The group is one tab stop: the chosen item, or the first that\ncan be chosen, as in a radio group, and in a multiple group the item focus\nwas last on.\n\n| Key | What it does |\n|---|---|\n| Right, Down | Moves to the next item, from the last back to the first. In a single group, chooses it. |\n| Left, Up | Moves to the item before, from the first round to the last. In a single group, chooses it. |\n| Home, End | Moves to the first or the last item. In a single group, chooses it. |\n| Space, Enter | Chooses the focused item, or presses or releases it in a multiple group. With `allow-empty-selection`, takes back the chosen item. |\n\nLeft and Right swap on a right-to-left page, and a disabled item is passed\nover. A single group is a `radiogroup` of items with `role=\"radio\"` and\n`aria-checked`. A multiple group is a `toolbar` of buttons with\n`aria-pressed`, or a `group` inside a toolbar. The group is named by\n`label` and carries `aria-orientation` under `orientation`.",
|
|
171498
173134
|
"name": "HelixHeadlessToggleGroup",
|
|
171499
173135
|
"cssParts": [
|
|
171500
173136
|
{
|
|
@@ -171560,6 +173196,14 @@
|
|
|
171560
173196
|
},
|
|
171561
173197
|
"description": "Takes the markup's own answer where nothing has set a value.\n\n**The case a server renders**, and `Tabs` records the same fault from the\nother side. This element cannot choose on the server, having no children to\ncount, so a consumer whose first paint is right wrote `selected` on the\nitem: that serves `aria-checked=\"true\"`, and `sync` then cleared it one\nframe later, because `value` is `''` and nothing matches it. The shipped\n`disabled` example is exactly that markup, and drew both of its groups with\nnothing chosen.\n\n**Onto `defaultValue`, never onto `value`**, which is the same call\n`Slider` makes about the midpoint it seeds: what the markup declared is a\nfact about the markup, so it is where a reset returns to rather than\nsomething the reader chose. It also makes the group report the answer it is\nshowing, which marking the item alone would not: a `required` group would\notherwise tell a reader a value is missing while they are looking at one.\n\nA written `value` still wins, a declared property being a seed and a\ncorrection, and a group with neither still marks nothing at all.\n\n**The property and never `defaultSelected`, which is the attribute.** React\nassigns a JSX prop as a property where the custom element has one, and\nwrites no attribute at all, so keying on the attribute answers for markup\nand not for JSX. Measured by the parity check on the shipped `disabled`\nexample, whose two syntaxes are the same tree: 192 pixels apart, the HTML\nmarking `List` and the TSX marking nothing. The attribute seeds the\nproperty at upgrade, so reading the property covers both.\n\nRead before `sync` writes to it, which is the only moment it still holds\nwhat the consumer declared: after that it holds this group's answer, and\n`value` is no longer empty, so this returns above.\n\n**Called from `willUpdate` and from the slot, never from `sync`**, which\nruns in `updated`: a reactive property set there schedules a second update,\nand Lit's development build warns about exactly that once per group. From\n`willUpdate` the first render already carries the value, which is the pass\nthat has to be right. `children` is undefined on the server, whose element\nshim carries attributes and no tree, and that is the same guard\n`MixinCollection` records for the same reason."
|
|
171562
173198
|
},
|
|
173199
|
+
{
|
|
173200
|
+
"kind": "field",
|
|
173201
|
+
"name": "marked",
|
|
173202
|
+
"privacy": "private",
|
|
173203
|
+
"readonly": true,
|
|
173204
|
+
"default": "new WeakSet<HelixHeadlessToggle>()",
|
|
173205
|
+
"description": "The items whose `selected` this group has written, which `adopt` passes\nover: the mark is this group's answer, and the markup declared nothing.\n\nMeasured before this: in a group with no default, choosing List and then\nresetting the form left List chosen and submitted, because `adopt` read\nthe mark `sync` had put on it as a declaration and made it the default."
|
|
173206
|
+
},
|
|
171563
173207
|
{
|
|
171564
173208
|
"kind": "method",
|
|
171565
173209
|
"name": "sync",
|
|
@@ -171618,6 +173262,16 @@
|
|
|
171618
173262
|
"description": "Whether several items can be pressed at once.",
|
|
171619
173263
|
"readonly": true
|
|
171620
173264
|
},
|
|
173265
|
+
{
|
|
173266
|
+
"kind": "field",
|
|
173267
|
+
"name": "allowEmptySelection",
|
|
173268
|
+
"type": {
|
|
173269
|
+
"text": "boolean"
|
|
173270
|
+
},
|
|
173271
|
+
"default": "false",
|
|
173272
|
+
"description": "Whether a press on the chosen item, or Space or Enter on it, takes it\nback so nothing is chosen, as React Aria's `ToggleButtonGroup` and\nRadix's `ToggleGroup` do in a single group. Absent, a single group always\nkeeps its choice once it has one, as a radio group does. A multiple group\nreleases a pressed item either way.",
|
|
173273
|
+
"attribute": "allow-empty-selection"
|
|
173274
|
+
},
|
|
171621
173275
|
{
|
|
171622
173276
|
"kind": "field",
|
|
171623
173277
|
"name": "focusable",
|
|
@@ -173094,6 +174748,15 @@
|
|
|
173094
174748
|
}
|
|
173095
174749
|
],
|
|
173096
174750
|
"attributes": [
|
|
174751
|
+
{
|
|
174752
|
+
"name": "allow-empty-selection",
|
|
174753
|
+
"type": {
|
|
174754
|
+
"text": "boolean"
|
|
174755
|
+
},
|
|
174756
|
+
"default": "false",
|
|
174757
|
+
"description": "Whether a press on the chosen item, or Space or Enter on it, takes it\nback so nothing is chosen, as React Aria's `ToggleButtonGroup` and\nRadix's `ToggleGroup` do in a single group. Absent, a single group always\nkeeps its choice once it has one, as a radio group does. A multiple group\nreleases a pressed item either way.",
|
|
174758
|
+
"fieldName": "allowEmptySelection"
|
|
174759
|
+
},
|
|
173097
174760
|
{
|
|
173098
174761
|
"name": "label-placement",
|
|
173099
174762
|
"type": {
|
|
@@ -173348,7 +175011,7 @@
|
|
|
173348
175011
|
"name": "HelixHeadlessToggle",
|
|
173349
175012
|
"cssParts": [
|
|
173350
175013
|
{
|
|
173351
|
-
"description": "The radio button.",
|
|
175014
|
+
"description": "The button: a radio in a group where one is chosen, and a button with `aria-pressed` on its own or in a group where several can be.",
|
|
173352
175015
|
"name": "item"
|
|
173353
175016
|
}
|
|
173354
175017
|
],
|
|
@@ -173860,7 +175523,7 @@
|
|
|
173860
175523
|
],
|
|
173861
175524
|
"cssStates": [
|
|
173862
175525
|
{
|
|
173863
|
-
"description": "The item is pressed, in a group where several can be.",
|
|
175526
|
+
"description": "The item is pressed, on its own or in a group where several can be.",
|
|
173864
175527
|
"name": "pressed"
|
|
173865
175528
|
},
|
|
173866
175529
|
{
|
|
@@ -176018,7 +177681,7 @@
|
|
|
176018
177681
|
"declarations": [
|
|
176019
177682
|
{
|
|
176020
177683
|
"kind": "class",
|
|
176021
|
-
"description": "The root holds the order of the stops: which stop is current, what Next and\nBack do, and when the tour is finished. Each stop holds its target, and you\nwrite all the text.\n\n**The spotlight is a shadow.** The scrim is a box the size of the current\ntarget with a very large `box-shadow` spread, and the shadow paints the\ndarkness. A `clip-path` on a full-screen scrim breaks as soon as an element\nbetween the scrim and the viewport is transformed.\n\nThe root measures the target's position in the browser. Nothing is measured\non the server, because a tour starts only on request.\n\n`open`, `default-open`, `helix-before-open`, `helix-before-close` and\n`toggle` work as they do on `Dialog`. Setting `open` starts the run, and\n`skip()` and `requestOpen(false)` end it early.\n\nThe box the light falls on is on the `spotlight` part as\n`--tour-spotlight-x`, `--tour-spotlight-y`, `--tour-spotlight-width` and\n`--tour-spotlight-height`, for a sheet that draws its own light, such as a\nring around the target.\n\nEach stop is told its place in the run, from `progress-label`, such as \"2 of\n5\". It describes the stop's panel, so a screen reader says it at every stop,\nand `progress` draws it in the panel as well. A dialog or a floating stop,\nwhich has nothing to light, is shown over the `backdrop` part. At a `wait`\nstop the run waits for that stop's target to be on the page, and moves on by\nitself.\n\n**Focus follows the run.** Opening moves focus to the first stop's panel,\nand moving on from a control in a stop moves it to the next one. Ending the\ntour puts focus back on the element that had it when the tour opened, unless\nyou have moved it somewhere else on the page. A stop does not trap focus, so\nyou can still `Tab` out to the element it describes.\n\n**The target is scrolled into view** before its stop is shown, by the\nleast distance that brings it on screen, so the stop that points at it is\non screen too.\n\n**Keyboard.** Focus is on the current stop's panel, which is not in the\n`Tab` order itself.\n\n| Key | What it does |\n|---|---|\n| Right | Goes to the next stop. On the last stop it does nothing, and Next finishes the tour. |\n| Left | Goes back to the previous stop. |\n| Escape | Skips the tour, and puts focus back where it was when the tour opened. |\n| Tab, Shift+Tab | Moves through the controls in the stop, and on out to the page. A stop does not trap focus. |\n| Enter, Space | On Back, Next, or Skip, presses it. |\n\nThe arrow that points the way the line runs goes on, and the other goes\nback, so on a right-to-left page Left goes on and Right goes back. A text field in a stop keeps\nits own arrows.\n\nThe tour is a region named by `label` while it runs. A development build\nwarns when a tour opens with no `label`.",
|
|
177684
|
+
"description": "The root holds the order of the stops: which stop is current, what Next and\nBack do, and when the tour is finished. Each stop holds its target, and you\nwrite all the text.\n\n**The spotlight is a shadow.** The scrim is a box the size of the current\ntarget with a very large `box-shadow` spread, and the shadow paints the\ndarkness. A `clip-path` on a full-screen scrim breaks as soon as an element\nbetween the scrim and the viewport is transformed.\n\nThe root measures the target's position in the browser. Nothing is measured\non the server, because a tour starts only on request.\n\n`open`, `default-open`, `helix-before-open`, `helix-before-close` and\n`toggle` work as they do on `Dialog`. Setting `open` starts the run, and\n`skip()` and `requestOpen(false)` end it early.\n\nThe box the light falls on is on the `spotlight` part as\n`--tour-spotlight-x`, `--tour-spotlight-y`, `--tour-spotlight-width` and\n`--tour-spotlight-height`, for a sheet that draws its own light, such as a\nring around the target.\n\nEach stop is told its place in the run, from `progress-label`, such as \"2 of\n5\". It describes the stop's panel, so a screen reader says it at every stop,\nand `progress` draws it in the panel as well. A dialog or a floating stop,\nwhich has nothing to light, is shown over the `backdrop` part. At a `wait`\nstop the run waits for that stop's target to be on the page, and moves on by\nitself.\n\n**Focus follows the run.** Opening moves focus to the first stop's panel,\nand moving on from a control in a stop moves it to the next one. Ending the\ntour puts focus back on the element that had it when the tour opened, unless\nyou have moved it somewhere else on the page. A stop does not trap focus, so\nyou can still `Tab` out to the element it describes.\n\n**The target is scrolled into view** before its stop is shown, by the\nleast distance that brings it on screen, so the stop that points at it is\non screen too.\n\n**A stop's `effect` runs as the tour reaches it**, before it is shown, and\nthe stop waits for a promise it returns, with `:state(preparing)` on the\ntour meanwhile. A function it returns runs when the tour leaves the stop.\n\n**A press outside the current stop and its target does nothing by\ndefault**, so a reader can use the page the tour is describing. Set\n`outside-press=\"close\"` to end the tour on one, through `helix-before-close`\nas Skip does, or `outside-press=\"block\"` to refuse it, so the stop and its\ntarget are all a pointer can reach while the tour runs, as Zag's\n`preventInteraction` does.\n\n**Keyboard.** Focus is on the current stop's panel, which is not in the\n`Tab` order itself.\n\n| Key | What it does |\n|---|---|\n| Right | Goes to the next stop. On the last stop it does nothing, and Next finishes the tour. |\n| Left | Goes back to the previous stop. |\n| Escape | Skips the tour, and puts focus back where it was when the tour opened. |\n| Tab, Shift+Tab | Moves through the controls in the stop, and on out to the page. A stop does not trap focus. |\n| Enter, Space | On Back, Next, or Skip, presses it. |\n\nThe arrow that points the way the line runs goes on, and the other goes\nback, so on a right-to-left page Left goes on and Right goes back. A text field in a stop keeps\nits own arrows.\n\nThe tour is a region named by `label` while it runs. A development build\nwarns when a tour opens with no `label`.",
|
|
176022
177685
|
"name": "HelixHeadlessTour",
|
|
176023
177686
|
"cssProperties": [
|
|
176024
177687
|
{
|
|
@@ -176134,6 +177797,15 @@
|
|
|
176134
177797
|
"description": "Label for the control that goes on.",
|
|
176135
177798
|
"attribute": "next-label"
|
|
176136
177799
|
},
|
|
177800
|
+
{
|
|
177801
|
+
"kind": "field",
|
|
177802
|
+
"name": "outsidePress",
|
|
177803
|
+
"type": {
|
|
177804
|
+
"text": "'block' | 'close' | undefined"
|
|
177805
|
+
},
|
|
177806
|
+
"description": "What a press outside the current stop and its target does while the tour\nruns. Unset, nothing: the page stays usable. `close` ends the tour, as\nSkip does, and `block` refuses the press.",
|
|
177807
|
+
"attribute": "outside-press"
|
|
177808
|
+
},
|
|
176137
177809
|
{
|
|
176138
177810
|
"kind": "field",
|
|
176139
177811
|
"name": "progress",
|
|
@@ -176334,6 +178006,50 @@
|
|
|
176334
178006
|
"privacy": "private",
|
|
176335
178007
|
"readonly": true
|
|
176336
178008
|
},
|
|
178009
|
+
{
|
|
178010
|
+
"kind": "field",
|
|
178011
|
+
"name": "handleOutside",
|
|
178012
|
+
"privacy": "private",
|
|
178013
|
+
"readonly": true,
|
|
178014
|
+
"description": "Answers a press outside the current stop and its target, as\n`outside-press` asks. A press on the tour's own parts, the stop or the\ntarget is the reader using the tour."
|
|
178015
|
+
},
|
|
178016
|
+
{
|
|
178017
|
+
"kind": "field",
|
|
178018
|
+
"name": "entered",
|
|
178019
|
+
"type": {
|
|
178020
|
+
"text": "{ leave?: () => void; stop: HelixHeadlessTourStop } | undefined"
|
|
178021
|
+
},
|
|
178022
|
+
"privacy": "private",
|
|
178023
|
+
"description": "The stop whose `effect` has run, and the function to run on leaving it."
|
|
178024
|
+
},
|
|
178025
|
+
{
|
|
178026
|
+
"kind": "field",
|
|
178027
|
+
"name": "preparing",
|
|
178028
|
+
"type": {
|
|
178029
|
+
"text": "HelixHeadlessTourStop | undefined"
|
|
178030
|
+
},
|
|
178031
|
+
"privacy": "private",
|
|
178032
|
+
"description": "The stop held back while its `effect` settles."
|
|
178033
|
+
},
|
|
178034
|
+
{
|
|
178035
|
+
"kind": "method",
|
|
178036
|
+
"name": "enter",
|
|
178037
|
+
"privacy": "private",
|
|
178038
|
+
"return": {
|
|
178039
|
+
"type": {
|
|
178040
|
+
"text": "void"
|
|
178041
|
+
}
|
|
178042
|
+
},
|
|
178043
|
+
"parameters": [
|
|
178044
|
+
{
|
|
178045
|
+
"name": "stop",
|
|
178046
|
+
"type": {
|
|
178047
|
+
"text": "HelixHeadlessTourStop | undefined"
|
|
178048
|
+
}
|
|
178049
|
+
}
|
|
178050
|
+
],
|
|
178051
|
+
"description": "Runs the current stop's `effect` as the tour reaches it, and the last\none's leaving function as it leaves, and holds the stop back while a\npromise settles."
|
|
178052
|
+
},
|
|
176337
178053
|
{
|
|
176338
178054
|
"kind": "field",
|
|
176339
178055
|
"name": "revealed",
|
|
@@ -177096,6 +178812,14 @@
|
|
|
177096
178812
|
"description": "Label for the control that goes on.",
|
|
177097
178813
|
"fieldName": "nextLabel"
|
|
177098
178814
|
},
|
|
178815
|
+
{
|
|
178816
|
+
"name": "outside-press",
|
|
178817
|
+
"type": {
|
|
178818
|
+
"text": "'block' | 'close' | undefined"
|
|
178819
|
+
},
|
|
178820
|
+
"description": "What a press outside the current stop and its target does while the tour\nruns. Unset, nothing: the page stays usable. `close` ends the tour, as\nSkip does, and `block` refuses the press.",
|
|
178821
|
+
"fieldName": "outsidePress"
|
|
178822
|
+
},
|
|
177099
178823
|
{
|
|
177100
178824
|
"name": "progress",
|
|
177101
178825
|
"type": {
|
|
@@ -177163,6 +178887,10 @@
|
|
|
177163
178887
|
"description": "While the tour is running.",
|
|
177164
178888
|
"name": "open"
|
|
177165
178889
|
},
|
|
178890
|
+
{
|
|
178891
|
+
"description": "While the tour waits for the current stop's `effect` before showing the stop.",
|
|
178892
|
+
"name": "preparing"
|
|
178893
|
+
},
|
|
177166
178894
|
{
|
|
177167
178895
|
"description": "While the tour waits at a `wait` stop for its target to be on the page.",
|
|
177168
178896
|
"name": "waiting"
|
|
@@ -177241,7 +178969,7 @@
|
|
|
177241
178969
|
"declarations": [
|
|
177242
178970
|
{
|
|
177243
178971
|
"kind": "class",
|
|
177244
|
-
"description": "A stop names its target with `for` and holds the content you put in it. The\nstop handles three things:\n\n- **Placement.** The panel is anchored to the target by the same floating\n positioning as the other Helix overlays.\n- **Stacking.** The panel is a popover, so it is in the top layer and shows\n above dialogs, scrolling regions, and other stacking contexts.\n- **Visibility.** The stop shows when it is `current`, which the root sets.\n\nPut any content in the stop, such as a `Card`, or a heading and a line of\ntext. The `heading` and `description` slots are optional places for the\ntitle and the line under it, which then name and describe the panel.\n\n**A stop has a type.** Without one it is a bubble pointing at its target.\n`type=\"dialog\"` is a panel in the middle of the window, over a backdrop, for\na welcome or a summary with nothing to point at. `type=\"floating\"` is a\npanel in a corner of the window, which the styled tier puts at the end of\nthe line, for a note that points at nothing in particular. `type=\"wait\"` shows nothing: the tour waits\nfor the element `for` names to be on the page, such as a menu the reader has\nto open, and moves on by itself.\n\n**The buttons are slot fallback.** With nothing in the `actions` slot, you\nget Back, Next, and Skip, already wired. Slot your own `actions` and drive\nthem with `next()`, `back()`, and `skip()` on the root.\n\n**`for` is an id, as with `Tooltip`**, so you can point at a target elsewhere\non the page from markup. It resolves against the stop's root node, so a stop\ninside a shadow tree points at a target in that tree.\n\nThe panel is a `group`, and a `dialog` for a dialog stop, only while the\nstop is shown. It is named by the `heading` slot, then by the first heading\nin the content, then by `label`, and otherwise by its place in the tour. It\nis described by the `description` slot, or where that is empty by the words\nat the start of the content, and by its place, such as \"2 of 5\",\nso a screen reader says where the reader is at every stop. `focus()` moves\nfocus to the panel, which is what the tour does when it opens or moves on.",
|
|
178972
|
+
"description": "A stop names its target with `for` and holds the content you put in it. The\nstop handles three things:\n\n- **Placement.** The panel is anchored to the target by the same floating\n positioning as the other Helix overlays.\n- **Stacking.** The panel is a popover, so it is in the top layer and shows\n above dialogs, scrolling regions, and other stacking contexts.\n- **Visibility.** The stop shows when it is `current`, which the root sets.\n\nPut any content in the stop, such as a `Card`, or a heading and a line of\ntext. The `heading` and `description` slots are optional places for the\ntitle and the line under it, which then name and describe the panel.\n\n**A stop has a type.** Without one it is a bubble pointing at its target.\n`type=\"dialog\"` is a panel in the middle of the window, over a backdrop, for\na welcome or a summary with nothing to point at. `type=\"floating\"` is a\npanel in a corner of the window, which the styled tier puts at the end of\nthe line, for a note that points at nothing in particular. `type=\"wait\"` shows nothing: the tour waits\nfor the element `for` names to be on the page, such as a menu the reader has\nto open, and moves on by itself.\n\n**The buttons are slot fallback.** With nothing in the `actions` slot, you\nget Back, Next, and Skip, already wired. Slot your own `actions` and drive\nthem with `next()`, `back()`, and `skip()` on the root.\n\n**Set `effect` to prepare the page for a stop**, such as opening the menu\nit points into or loading what it describes. It is a function, set from\nscript, that the tour runs as it reaches the stop. Return a promise and the\nstop waits for it, and the tour has `:state(preparing)` meanwhile; return a\nfunction, or resolve to one, and the tour runs it when it leaves the stop.\nZag's tour step has the same `effect`.\n\n**`for` is an id, as with `Tooltip`**, so you can point at a target elsewhere\non the page from markup. It resolves against the stop's root node, so a stop\ninside a shadow tree points at a target in that tree.\n\nThe panel is a `group`, and a `dialog` for a dialog stop, only while the\nstop is shown. It is named by the `heading` slot, then by the first heading\nin the content, then by `label`, and otherwise by its place in the tour. It\nis described by the `description` slot, or where that is empty by the words\nat the start of the content, and by its place, such as \"2 of 5\",\nso a screen reader says where the reader is at every stop. `focus()` moves\nfocus to the panel, which is what the tour does when it opens or moves on.",
|
|
177245
178973
|
"name": "HelixHeadlessTourStop",
|
|
177246
178974
|
"cssParts": [
|
|
177247
178975
|
{
|
|
@@ -177415,6 +179143,14 @@
|
|
|
177415
179143
|
"words": true
|
|
177416
179144
|
}
|
|
177417
179145
|
},
|
|
179146
|
+
{
|
|
179147
|
+
"kind": "field",
|
|
179148
|
+
"name": "effect",
|
|
179149
|
+
"type": {
|
|
179150
|
+
"text": "TourStopEffect | undefined"
|
|
179151
|
+
},
|
|
179152
|
+
"description": "Run as the tour reaches the stop, before it is shown: see the description\nabove. A function, so it is set from script and has no attribute."
|
|
179153
|
+
},
|
|
177418
179154
|
{
|
|
177419
179155
|
"kind": "field",
|
|
177420
179156
|
"name": "first",
|
|
@@ -177512,6 +179248,13 @@
|
|
|
177512
179248
|
"privacy": "private",
|
|
177513
179249
|
"description": "The side of its target the panel last landed on, which names the arrow's\nsecond part. Undefined until the first placement, which the server never\nmakes."
|
|
177514
179250
|
},
|
|
179251
|
+
{
|
|
179252
|
+
"kind": "field",
|
|
179253
|
+
"name": "phases",
|
|
179254
|
+
"privacy": "protected",
|
|
179255
|
+
"readonly": true,
|
|
179256
|
+
"default": "new OpenPhaseController(this, { mark: { entering: (on) => this.toggleState('entering', on), exiting: (on) => this.toggleState('exiting', on), }, open: () => this.current && this.type !== 'wait', surface: () => this.partNamed('bubble'), })"
|
|
179257
|
+
},
|
|
177515
179258
|
{
|
|
177516
179259
|
"kind": "field",
|
|
177517
179260
|
"name": "target",
|
|
@@ -178042,6 +179785,14 @@
|
|
|
178042
179785
|
}
|
|
178043
179786
|
],
|
|
178044
179787
|
"cssStates": [
|
|
179788
|
+
{
|
|
179789
|
+
"description": "From the moment the stop is shown until its entrance has finished.",
|
|
179790
|
+
"name": "entering"
|
|
179791
|
+
},
|
|
179792
|
+
{
|
|
179793
|
+
"description": "From the moment the stop is left until its exit has finished.",
|
|
179794
|
+
"name": "exiting"
|
|
179795
|
+
},
|
|
178045
179796
|
{
|
|
178046
179797
|
"description": "The panel sits below its target.",
|
|
178047
179798
|
"name": "placed-bottom"
|
|
@@ -188884,6 +190635,6 @@
|
|
|
188884
190635
|
],
|
|
188885
190636
|
"helix": {
|
|
188886
190637
|
"package": "@fusion.dev/helix-headless",
|
|
188887
|
-
"version": "0.
|
|
190638
|
+
"version": "0.160.0"
|
|
188888
190639
|
}
|
|
188889
190640
|
}
|