@fusion.dev/helix-headless 0.37.0 → 0.38.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 +32 -24
- package/dist/combobox/root/combobox-root.d.ts +10 -1
- package/dist/combobox/root/combobox-root.js +0 -1
- package/dist/drawer/root/drawer-root.d.ts +1 -1
- package/dist/drilldown/item/drilldown-item.d.ts +1 -1
- package/dist/drilldown/root/drilldown-root.d.ts +3 -1
- package/dist/drilldown/root/drilldown-root.js +1 -1
- package/dist/element-events.generated.js +1 -1
- package/dist/megamenu/root/megamenu-root.d.ts +12 -3
- package/dist/megamenu/root/megamenu-root.js +1 -1
- package/dist/outline/root/outline-root.d.ts +1 -1
- package/dist/outline/root/outline-root.js +2 -2
- package/dist/tooltip/root/tooltip-root.d.ts +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +113 -25
- package/types/vue.d.ts +37 -12
package/custom-elements.json
CHANGED
|
@@ -20391,7 +20391,7 @@
|
|
|
20391
20391
|
"text": "boolean"
|
|
20392
20392
|
},
|
|
20393
20393
|
"default": "false",
|
|
20394
|
-
"description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.",
|
|
20394
|
+
"description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.\n\n**The list is told, and the field is not.** `aria-multiselectable` belongs\nto `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in\nARIA 1.2; the list sets it on itself through `ElementInternals`, where a\nreader on the field hears it through `aria-controls`. This element wrote it\nonto its own `role=\"combobox\"` input as well, which an audit reports as a\nproperty the role does not support and no spec here ever asserted: the one\nthat covers this says in as many words that telling the list is what this\nelement is responsible for.",
|
|
20395
20395
|
"attribute": "multiple"
|
|
20396
20396
|
},
|
|
20397
20397
|
{
|
|
@@ -21987,7 +21987,7 @@
|
|
|
21987
21987
|
"text": "boolean"
|
|
21988
21988
|
},
|
|
21989
21989
|
"default": "false",
|
|
21990
|
-
"description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.",
|
|
21990
|
+
"description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.\n\n**The list is told, and the field is not.** `aria-multiselectable` belongs\nto `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in\nARIA 1.2; the list sets it on itself through `ElementInternals`, where a\nreader on the field hears it through `aria-controls`. This element wrote it\nonto its own `role=\"combobox\"` input as well, which an audit reports as a\nproperty the role does not support and no spec here ever asserted: the one\nthat covers this says in as many words that telling the list is what this\nelement is responsible for.",
|
|
21991
21991
|
"fieldName": "multiple"
|
|
21992
21992
|
},
|
|
21993
21993
|
{
|
|
@@ -22242,7 +22242,7 @@
|
|
|
22242
22242
|
"helix": {
|
|
22243
22243
|
"category": "forms",
|
|
22244
22244
|
"since": "0.1.0",
|
|
22245
|
-
"status": "
|
|
22245
|
+
"status": "stable",
|
|
22246
22246
|
"documentation": "https://fusion.dev/helix/components/combobox",
|
|
22247
22247
|
"aliases": [
|
|
22248
22248
|
"Autocomplete",
|
|
@@ -34311,7 +34311,7 @@
|
|
|
34311
34311
|
"helix": {
|
|
34312
34312
|
"category": "overlays",
|
|
34313
34313
|
"since": "0.1.0",
|
|
34314
|
-
"status": "
|
|
34314
|
+
"status": "stable",
|
|
34315
34315
|
"documentation": "https://fusion.dev/helix/components/drawer",
|
|
34316
34316
|
"aliases": [
|
|
34317
34317
|
"Sheet",
|
|
@@ -34873,7 +34873,7 @@
|
|
|
34873
34873
|
"summary": "One row of a drill-down, which may hold a page of its own.",
|
|
34874
34874
|
"helix": {
|
|
34875
34875
|
"since": "0.1.0",
|
|
34876
|
-
"status": "
|
|
34876
|
+
"status": "stable",
|
|
34877
34877
|
"documentation": "https://fusion.dev/helix/components/drilldown",
|
|
34878
34878
|
"aliases": [
|
|
34879
34879
|
"Panel item",
|
|
@@ -35639,6 +35639,20 @@
|
|
|
35639
35639
|
}
|
|
35640
35640
|
}
|
|
35641
35641
|
],
|
|
35642
|
+
"cssStates": [
|
|
35643
|
+
{
|
|
35644
|
+
"description": "While a row's page is showing rather than the top one, so a frame around this can answer the depth it is at.",
|
|
35645
|
+
"name": "drilled"
|
|
35646
|
+
},
|
|
35647
|
+
{
|
|
35648
|
+
"description": "Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.",
|
|
35649
|
+
"name": "settled",
|
|
35650
|
+
"inheritedFrom": {
|
|
35651
|
+
"name": "HelixElement",
|
|
35652
|
+
"module": "src/helix-element/helix-element.ts"
|
|
35653
|
+
}
|
|
35654
|
+
}
|
|
35655
|
+
],
|
|
35642
35656
|
"mixins": [
|
|
35643
35657
|
{
|
|
35644
35658
|
"name": "MixinCollection",
|
|
@@ -35653,7 +35667,7 @@
|
|
|
35653
35667
|
"helix": {
|
|
35654
35668
|
"category": "navigation",
|
|
35655
35669
|
"since": "0.1.0",
|
|
35656
|
-
"status": "
|
|
35670
|
+
"status": "stable",
|
|
35657
35671
|
"documentation": "https://fusion.dev/helix/components/drilldown",
|
|
35658
35672
|
"aliases": [
|
|
35659
35673
|
"Panel",
|
|
@@ -35673,16 +35687,6 @@
|
|
|
35673
35687
|
},
|
|
35674
35688
|
"tagName": "helix-headless-drilldown",
|
|
35675
35689
|
"customElement": true,
|
|
35676
|
-
"cssStates": [
|
|
35677
|
-
{
|
|
35678
|
-
"description": "Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.",
|
|
35679
|
-
"name": "settled",
|
|
35680
|
-
"inheritedFrom": {
|
|
35681
|
-
"name": "HelixElement",
|
|
35682
|
-
"module": "src/helix-element/helix-element.ts"
|
|
35683
|
-
}
|
|
35684
|
-
}
|
|
35685
|
-
],
|
|
35686
35690
|
"modulePath": "src/drilldown/root/drilldown-root.ts",
|
|
35687
35691
|
"definitionPath": "src/drilldown/root/drilldown-root.ts"
|
|
35688
35692
|
}
|
|
@@ -53530,7 +53534,7 @@
|
|
|
53530
53534
|
"text": "number"
|
|
53531
53535
|
},
|
|
53532
53536
|
"default": "640",
|
|
53533
|
-
"description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This
|
|
53537
|
+
"description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This records\n`:state(narrow)` on the host and the stylesheet arranges itself off that.\n\n**A custom state and never `data-narrow`, which is what it was.** The width\nis read in `connectedCallback`, so on a phone this is true on the very first\nupdate: an attribute written there is markup a consumer's server never sent,\nwhich React reports as a mismatch and answers by rebuilding the subtree. The\nnarrow exception the server specs describe covers a mirror that can only\nbecome true long after hydration, and a viewport measured before the first\npaint is the opposite case. See `MixinControllerOpen` on `open`.",
|
|
53534
53538
|
"attribute": "full-below"
|
|
53535
53539
|
},
|
|
53536
53540
|
{
|
|
@@ -54263,7 +54267,7 @@
|
|
|
54263
54267
|
"text": "number"
|
|
54264
54268
|
},
|
|
54265
54269
|
"default": "640",
|
|
54266
|
-
"description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This
|
|
54270
|
+
"description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This records\n`:state(narrow)` on the host and the stylesheet arranges itself off that.\n\n**A custom state and never `data-narrow`, which is what it was.** The width\nis read in `connectedCallback`, so on a phone this is true on the very first\nupdate: an attribute written there is markup a consumer's server never sent,\nwhich React reports as a mismatch and answers by rebuilding the subtree. The\nnarrow exception the server specs describe covers a mirror that can only\nbecome true long after hydration, and a viewport measured before the first\npaint is the opposite case. See `MixinControllerOpen` on `open`.",
|
|
54267
54271
|
"fieldName": "fullBelow"
|
|
54268
54272
|
},
|
|
54269
54273
|
{
|
|
@@ -54319,6 +54323,10 @@
|
|
|
54319
54323
|
}
|
|
54320
54324
|
],
|
|
54321
54325
|
"cssStates": [
|
|
54326
|
+
{
|
|
54327
|
+
"description": "While the page is under `full-below`, so the panel is a band whether or not one was asked for.",
|
|
54328
|
+
"name": "narrow"
|
|
54329
|
+
},
|
|
54322
54330
|
{
|
|
54323
54331
|
"description": "While the panel is open, which is when the trigger reads as current.",
|
|
54324
54332
|
"name": "open"
|
|
@@ -54346,7 +54354,7 @@
|
|
|
54346
54354
|
"helix": {
|
|
54347
54355
|
"category": "navigation",
|
|
54348
54356
|
"since": "0.1.0",
|
|
54349
|
-
"status": "
|
|
54357
|
+
"status": "stable",
|
|
54350
54358
|
"documentation": "https://fusion.dev/helix/components/megamenu",
|
|
54351
54359
|
"aliases": [
|
|
54352
54360
|
"Mega menu",
|
|
@@ -63945,11 +63953,11 @@
|
|
|
63945
63953
|
"events": [
|
|
63946
63954
|
{
|
|
63947
63955
|
"type": {
|
|
63948
|
-
"text": "
|
|
63956
|
+
"text": "HelixActivateEvent"
|
|
63949
63957
|
},
|
|
63950
|
-
"description": "The section being read has changed, carrying its id as the value.
|
|
63951
|
-
"name": "helix-
|
|
63952
|
-
"reactProp": "onhelix-
|
|
63958
|
+
"description": "The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take.",
|
|
63959
|
+
"name": "helix-activate",
|
|
63960
|
+
"reactProp": "onhelix-activate"
|
|
63953
63961
|
}
|
|
63954
63962
|
],
|
|
63955
63963
|
"attributes": [
|
|
@@ -100133,7 +100141,7 @@
|
|
|
100133
100141
|
"helix": {
|
|
100134
100142
|
"category": "overlays",
|
|
100135
100143
|
"since": "0.1.0",
|
|
100136
|
-
"status": "
|
|
100144
|
+
"status": "stable",
|
|
100137
100145
|
"documentation": "https://fusion.dev/helix/components/tooltip",
|
|
100138
100146
|
"aliases": [
|
|
100139
100147
|
"Hint",
|
|
@@ -34,7 +34,7 @@ declare const HelixHeadlessCombobox_base: (new (...args: any[]) => import("@fusi
|
|
|
34
34
|
* row and fires the event; adding the option is the consumer's.
|
|
35
35
|
*
|
|
36
36
|
* @since 0.1.0
|
|
37
|
-
* @status
|
|
37
|
+
* @status stable
|
|
38
38
|
* @category forms
|
|
39
39
|
* @aliases Autocomplete, Typeahead, Search select
|
|
40
40
|
* @documentation https://fusion.dev/helix/components/combobox
|
|
@@ -134,6 +134,15 @@ export declare class HelixHeadlessCombobox extends HelixHeadlessCombobox_base {
|
|
|
134
134
|
*
|
|
135
135
|
* A comma is therefore not available inside an option's value, which is the
|
|
136
136
|
* listbox's contract and not this element's to change.
|
|
137
|
+
*
|
|
138
|
+
* **The list is told, and the field is not.** `aria-multiselectable` belongs
|
|
139
|
+
* to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
|
|
140
|
+
* ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
|
|
141
|
+
* reader on the field hears it through `aria-controls`. This element wrote it
|
|
142
|
+
* onto its own `role="combobox"` input as well, which an audit reports as a
|
|
143
|
+
* property the role does not support and no spec here ever asserted: the one
|
|
144
|
+
* that covers this says in as many words that telling the list is what this
|
|
145
|
+
* element is responsible for.
|
|
137
146
|
*/
|
|
138
147
|
multiple: boolean;
|
|
139
148
|
/**
|
|
@@ -304,7 +304,6 @@ let HelixHeadlessCombobox = class HelixHeadlessCombobox extends MixinControllerO
|
|
|
304
304
|
aria-autocomplete=${this.suggest ? 'both' : 'list'}
|
|
305
305
|
aria-expanded=${this.open ? 'true' : 'false'}
|
|
306
306
|
aria-describedby=${this.describedBy ?? nothing}
|
|
307
|
-
aria-multiselectable=${this.multiple ? 'true' : nothing}
|
|
308
307
|
placeholder=${(this.chosen.length > 0 ? '' : this.placeholder) || nothing}
|
|
309
308
|
?disabled=${this.isDisabled}
|
|
310
309
|
.value=${this.multiple || this.open ? this.suggestion || this.typed : this.word}
|
|
@@ -29,7 +29,7 @@ declare const HelixHeadlessDrawer_base: (new (...args: any[]) => import("@fusion
|
|
|
29
29
|
* ```
|
|
30
30
|
*
|
|
31
31
|
* @since 0.1.0
|
|
32
|
-
* @status
|
|
32
|
+
* @status stable
|
|
33
33
|
* @category overlays
|
|
34
34
|
* @aliases Sheet, Sidebar, Panel, Off-canvas
|
|
35
35
|
* @documentation https://fusion.dev/helix/components/drawer
|
|
@@ -24,7 +24,7 @@ import { nothing, type PropertyValues, type TemplateResult } from 'lit';
|
|
|
24
24
|
* pressed. Not on the server, which cannot see the children and so cannot know.
|
|
25
25
|
*
|
|
26
26
|
* @since 0.1.0
|
|
27
|
-
* @status
|
|
27
|
+
* @status stable
|
|
28
28
|
* @aliases Panel item, Drill row
|
|
29
29
|
* @documentation https://fusion.dev/helix/components/drilldown
|
|
30
30
|
*
|
|
@@ -27,7 +27,7 @@ declare const HelixHeadlessDrilldown_base: (new (...args: any[]) => import("@fus
|
|
|
27
27
|
* shares.
|
|
28
28
|
*
|
|
29
29
|
* @since 0.1.0
|
|
30
|
-
* @status
|
|
30
|
+
* @status stable
|
|
31
31
|
* @category navigation
|
|
32
32
|
* @aliases Panel, Nested list, Drill-in
|
|
33
33
|
* @documentation https://fusion.dev/helix/components/drilldown
|
|
@@ -43,6 +43,8 @@ declare const HelixHeadlessDrilldown_base: (new (...args: any[]) => import("@fus
|
|
|
43
43
|
* @csspart loading - Shown while the entries are still on their way.
|
|
44
44
|
* @csspart page - The region the rows are in.
|
|
45
45
|
* @csspart title - The name of the page showing.
|
|
46
|
+
*
|
|
47
|
+
* @cssstate drilled - While a row's page is showing rather than the top one, so a frame around this can answer the depth it is at.
|
|
46
48
|
*/
|
|
47
49
|
export declare class HelixHeadlessDrilldown extends HelixHeadlessDrilldown_base {
|
|
48
50
|
/**
|
|
@@ -123,7 +123,7 @@ let HelixHeadlessDrilldown = class HelixHeadlessDrilldown extends MixinCollectio
|
|
|
123
123
|
this.mark(child, page, page === null);
|
|
124
124
|
}
|
|
125
125
|
this.placeTabStop();
|
|
126
|
-
this.
|
|
126
|
+
this.toggleState('drilled', !this.drilldown.atRoot);
|
|
127
127
|
if (this.direction === undefined) {
|
|
128
128
|
this.removeAttribute('data-direction');
|
|
129
129
|
}
|
|
@@ -86,7 +86,7 @@ registerElementEvents({
|
|
|
86
86
|
'helix-headless-number-input': ['change', 'helix-before-change', 'input'],
|
|
87
87
|
'helix-headless-object-inspector': ['helix-copy'],
|
|
88
88
|
'helix-headless-option': ['helix-select'],
|
|
89
|
-
'helix-headless-outline': ['helix-
|
|
89
|
+
'helix-headless-outline': ['helix-activate'],
|
|
90
90
|
'helix-headless-pagination': ['helix-navigate'],
|
|
91
91
|
'helix-headless-pagination-size': ['helix-before-change'],
|
|
92
92
|
'helix-headless-pin-input': ['change', 'helix-before-change', 'helix-complete', 'input'],
|
|
@@ -21,7 +21,7 @@ declare const HelixHeadlessMegamenu_base: (new (...args: any[]) => import("@fusi
|
|
|
21
21
|
* expects to sweep along a row and see each section.
|
|
22
22
|
*
|
|
23
23
|
* @since 0.1.0
|
|
24
|
-
* @status
|
|
24
|
+
* @status stable
|
|
25
25
|
* @category navigation
|
|
26
26
|
* @aliases Mega menu, Flyout, Nav panel
|
|
27
27
|
* @documentation https://fusion.dev/helix/components/megamenu
|
|
@@ -38,6 +38,7 @@ declare const HelixHeadlessMegamenu_base: (new (...args: any[]) => import("@fusi
|
|
|
38
38
|
*
|
|
39
39
|
* @cssproperty --megamenu-top - Where the panel starts, measured from the bar above it.
|
|
40
40
|
*
|
|
41
|
+
* @cssstate narrow - While the page is under `full-below`, so the panel is a band whether or not one was asked for.
|
|
41
42
|
* @cssstate open - While the panel is open, which is when the trigger reads as current.
|
|
42
43
|
*/
|
|
43
44
|
export declare class HelixHeadlessMegamenu extends HelixHeadlessMegamenu_base {
|
|
@@ -55,8 +56,16 @@ export declare class HelixHeadlessMegamenu extends HelixHeadlessMegamenu_base {
|
|
|
55
56
|
* a band is not a question of paint: a band is not placed against the trigger,
|
|
56
57
|
* so the controller has to be told not to measure, and that decision is here
|
|
57
58
|
* whatever the stylesheet says. Writing the width in both places would be one
|
|
58
|
-
* number in two languages, drifting the first time either moved. This
|
|
59
|
-
*
|
|
59
|
+
* number in two languages, drifting the first time either moved. This records
|
|
60
|
+
* `:state(narrow)` on the host and the stylesheet arranges itself off that.
|
|
61
|
+
*
|
|
62
|
+
* **A custom state and never `data-narrow`, which is what it was.** The width
|
|
63
|
+
* is read in `connectedCallback`, so on a phone this is true on the very first
|
|
64
|
+
* update: an attribute written there is markup a consumer's server never sent,
|
|
65
|
+
* which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
66
|
+
* narrow exception the server specs describe covers a mirror that can only
|
|
67
|
+
* become true long after hydration, and a viewport measured before the first
|
|
68
|
+
* paint is the opposite case. See `MixinControllerOpen` on `open`.
|
|
60
69
|
*/
|
|
61
70
|
fullBelow: number;
|
|
62
71
|
/**
|
|
@@ -189,7 +189,7 @@ let HelixHeadlessMegamenu = class HelixHeadlessMegamenu extends MixinControllerO
|
|
|
189
189
|
if (changed.has('fullBelow')) {
|
|
190
190
|
this.watchWidth();
|
|
191
191
|
}
|
|
192
|
-
this.
|
|
192
|
+
this.toggleState('narrow', this.narrow);
|
|
193
193
|
this.tellTrigger();
|
|
194
194
|
if (this.open) {
|
|
195
195
|
this.band();
|
|
@@ -24,7 +24,7 @@ import { type PropertyValues, type TemplateResult } from 'lit';
|
|
|
24
24
|
*
|
|
25
25
|
* @slot - The links, as anchors with fragment hrefs.
|
|
26
26
|
*
|
|
27
|
-
* @event {
|
|
27
|
+
* @event {HelixActivateEvent} helix-activate - The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take.
|
|
28
28
|
*
|
|
29
29
|
* @csspart indicator - The mark that travels to the section being read.
|
|
30
30
|
* @csspart nav - The navigation landmark.
|
|
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { customElement,
|
|
7
|
+
import { customElement, HelixActivateEvent, HelixElement, IndicatorController, } from '@fusion.dev/helix-core';
|
|
8
8
|
import { html } from 'lit';
|
|
9
9
|
import { property, state } from 'lit/decorators.js';
|
|
10
10
|
let HelixHeadlessOutline = class HelixHeadlessOutline extends HelixElement {
|
|
@@ -116,7 +116,7 @@ let HelixHeadlessOutline = class HelixHeadlessOutline extends HelixElement {
|
|
|
116
116
|
const next = active?.target.id ?? '';
|
|
117
117
|
if (next !== this.reading) {
|
|
118
118
|
this.reading = next;
|
|
119
|
-
this.dispatchEvent(new
|
|
119
|
+
this.dispatchEvent(new HelixActivateEvent({ value: next }));
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
get atEnd() {
|
|
@@ -38,7 +38,7 @@ declare const HelixHeadlessTooltip_base: (new (...args: any[]) => import("@fusio
|
|
|
38
38
|
* been used.
|
|
39
39
|
*
|
|
40
40
|
* @since 0.1.0
|
|
41
|
-
* @status
|
|
41
|
+
* @status stable
|
|
42
42
|
* @category overlays
|
|
43
43
|
* @aliases Hint, Popup label
|
|
44
44
|
* @documentation https://fusion.dev/helix/components/tooltip
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix-headless",
|
|
3
3
|
"description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.38.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -46,14 +46,14 @@
|
|
|
46
46
|
},
|
|
47
47
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@fusion.dev/helix-core": "0.
|
|
50
|
-
"@fusion.dev/helix-icons": "0.
|
|
49
|
+
"@fusion.dev/helix-core": "0.38.0",
|
|
50
|
+
"@fusion.dev/helix-icons": "0.38.0",
|
|
51
51
|
"uqr": "^0.1.3"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
55
|
-
"@fusion.dev/helix-cem": "0.
|
|
56
|
-
"@fusion.dev/helix-testing": "0.
|
|
55
|
+
"@fusion.dev/helix-cem": "0.38.0",
|
|
56
|
+
"@fusion.dev/helix-testing": "0.38.0",
|
|
57
57
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
58
58
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
59
59
|
"@lit-labs/ssr": "^4.1.0",
|
package/types/jsx.d.ts
CHANGED
|
@@ -3283,7 +3283,16 @@ toggles rather than replaces, and the arrows move without choosing. What
|
|
|
3283
3283
|
this adds is the tags, and keeping the panel open between picks.
|
|
3284
3284
|
|
|
3285
3285
|
A comma is therefore not available inside an option's value, which is the
|
|
3286
|
-
listbox's contract and not this element's to change.
|
|
3286
|
+
listbox's contract and not this element's to change.
|
|
3287
|
+
|
|
3288
|
+
**The list is told, and the field is not.** `aria-multiselectable` belongs
|
|
3289
|
+
to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
|
|
3290
|
+
ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
|
|
3291
|
+
reader on the field hears it through `aria-controls`. This element wrote it
|
|
3292
|
+
onto its own `role="combobox"` input as well, which an audit reports as a
|
|
3293
|
+
property the role does not support and no spec here ever asserted: the one
|
|
3294
|
+
that covers this says in as many words that telling the list is what this
|
|
3295
|
+
element is responsible for. */
|
|
3287
3296
|
multiple?: (HelixHeadlessCombobox["multiple"]) | undefined;
|
|
3288
3297
|
/** Text shown while nothing has been chosen. */
|
|
3289
3298
|
placeholder?: (HelixHeadlessCombobox["placeholder"]) | undefined;
|
|
@@ -3449,7 +3458,16 @@ toggles rather than replaces, and the arrows move without choosing. What
|
|
|
3449
3458
|
this adds is the tags, and keeping the panel open between picks.
|
|
3450
3459
|
|
|
3451
3460
|
A comma is therefore not available inside an option's value, which is the
|
|
3452
|
-
listbox's contract and not this element's to change.
|
|
3461
|
+
listbox's contract and not this element's to change.
|
|
3462
|
+
|
|
3463
|
+
**The list is told, and the field is not.** `aria-multiselectable` belongs
|
|
3464
|
+
to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
|
|
3465
|
+
ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
|
|
3466
|
+
reader on the field hears it through `aria-controls`. This element wrote it
|
|
3467
|
+
onto its own `role="combobox"` input as well, which an audit reports as a
|
|
3468
|
+
property the role does not support and no spec here ever asserted: the one
|
|
3469
|
+
that covers this says in as many words that telling the list is what this
|
|
3470
|
+
element is responsible for. */
|
|
3453
3471
|
"prop:multiple"?: (HelixHeadlessCombobox["multiple"]) | undefined;
|
|
3454
3472
|
/** Text shown while nothing has been chosen. */
|
|
3455
3473
|
"prop:placeholder"?: (HelixHeadlessCombobox["placeholder"]) | undefined;
|
|
@@ -8659,8 +8677,16 @@ fits.
|
|
|
8659
8677
|
a band is not a question of paint: a band is not placed against the trigger,
|
|
8660
8678
|
so the controller has to be told not to measure, and that decision is here
|
|
8661
8679
|
whatever the stylesheet says. Writing the width in both places would be one
|
|
8662
|
-
number in two languages, drifting the first time either moved. This
|
|
8663
|
-
|
|
8680
|
+
number in two languages, drifting the first time either moved. This records
|
|
8681
|
+
`:state(narrow)` on the host and the stylesheet arranges itself off that.
|
|
8682
|
+
|
|
8683
|
+
**A custom state and never `data-narrow`, which is what it was.** The width
|
|
8684
|
+
is read in `connectedCallback`, so on a phone this is true on the very first
|
|
8685
|
+
update: an attribute written there is markup a consumer's server never sent,
|
|
8686
|
+
which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
8687
|
+
narrow exception the server specs describe covers a mirror that can only
|
|
8688
|
+
become true long after hydration, and a viewport measured before the first
|
|
8689
|
+
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
8664
8690
|
"full-below"?: (HelixHeadlessMegamenu["fullBelow"] | `${number}`) | undefined;
|
|
8665
8691
|
/** The width, in pixels, under which a card becomes a band. Zero never does.
|
|
8666
8692
|
|
|
@@ -8675,8 +8701,16 @@ fits.
|
|
|
8675
8701
|
a band is not a question of paint: a band is not placed against the trigger,
|
|
8676
8702
|
so the controller has to be told not to measure, and that decision is here
|
|
8677
8703
|
whatever the stylesheet says. Writing the width in both places would be one
|
|
8678
|
-
number in two languages, drifting the first time either moved. This
|
|
8679
|
-
|
|
8704
|
+
number in two languages, drifting the first time either moved. This records
|
|
8705
|
+
`:state(narrow)` on the host and the stylesheet arranges itself off that.
|
|
8706
|
+
|
|
8707
|
+
**A custom state and never `data-narrow`, which is what it was.** The width
|
|
8708
|
+
is read in `connectedCallback`, so on a phone this is true on the very first
|
|
8709
|
+
update: an attribute written there is markup a consumer's server never sent,
|
|
8710
|
+
which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
8711
|
+
narrow exception the server specs describe covers a mirror that can only
|
|
8712
|
+
become true long after hydration, and a viewport measured before the first
|
|
8713
|
+
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
8680
8714
|
fullBelow?: (HelixHeadlessMegamenu["fullBelow"]) | undefined;
|
|
8681
8715
|
/** The section's name, which names the default trigger and the panel. */
|
|
8682
8716
|
label?: (HelixHeadlessMegamenu["label"]) | undefined;
|
|
@@ -8752,8 +8786,16 @@ fits.
|
|
|
8752
8786
|
a band is not a question of paint: a band is not placed against the trigger,
|
|
8753
8787
|
so the controller has to be told not to measure, and that decision is here
|
|
8754
8788
|
whatever the stylesheet says. Writing the width in both places would be one
|
|
8755
|
-
number in two languages, drifting the first time either moved. This
|
|
8756
|
-
|
|
8789
|
+
number in two languages, drifting the first time either moved. This records
|
|
8790
|
+
`:state(narrow)` on the host and the stylesheet arranges itself off that.
|
|
8791
|
+
|
|
8792
|
+
**A custom state and never `data-narrow`, which is what it was.** The width
|
|
8793
|
+
is read in `connectedCallback`, so on a phone this is true on the very first
|
|
8794
|
+
update: an attribute written there is markup a consumer's server never sent,
|
|
8795
|
+
which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
8796
|
+
narrow exception the server specs describe covers a mirror that can only
|
|
8797
|
+
become true long after hydration, and a viewport measured before the first
|
|
8798
|
+
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
8757
8799
|
"attr:full-below"?: (HelixHeadlessMegamenu["fullBelow"] | `${number}`) | undefined;
|
|
8758
8800
|
/** The width, in pixels, under which a card becomes a band. Zero never does.
|
|
8759
8801
|
|
|
@@ -8768,8 +8810,16 @@ fits.
|
|
|
8768
8810
|
a band is not a question of paint: a band is not placed against the trigger,
|
|
8769
8811
|
so the controller has to be told not to measure, and that decision is here
|
|
8770
8812
|
whatever the stylesheet says. Writing the width in both places would be one
|
|
8771
|
-
number in two languages, drifting the first time either moved. This
|
|
8772
|
-
|
|
8813
|
+
number in two languages, drifting the first time either moved. This records
|
|
8814
|
+
`:state(narrow)` on the host and the stylesheet arranges itself off that.
|
|
8815
|
+
|
|
8816
|
+
**A custom state and never `data-narrow`, which is what it was.** The width
|
|
8817
|
+
is read in `connectedCallback`, so on a phone this is true on the very first
|
|
8818
|
+
update: an attribute written there is markup a consumer's server never sent,
|
|
8819
|
+
which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
8820
|
+
narrow exception the server specs describe covers a mirror that can only
|
|
8821
|
+
become true long after hydration, and a viewport measured before the first
|
|
8822
|
+
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
8773
8823
|
"prop:fullBelow"?: (HelixHeadlessMegamenu["fullBelow"]) | undefined;
|
|
8774
8824
|
/** The section's name, which names the default trigger and the panel. */
|
|
8775
8825
|
"prop:label"?: (HelixHeadlessMegamenu["label"]) | undefined;
|
|
@@ -10230,9 +10280,9 @@ export type HelixHeadlessOutlineElementEvent<E = Event> = TypedEvent<
|
|
|
10230
10280
|
HelixHeadlessOutline,
|
|
10231
10281
|
E
|
|
10232
10282
|
>;
|
|
10233
|
-
/** `helix-
|
|
10234
|
-
export type
|
|
10235
|
-
HelixHeadlessOutlineElementEvent<
|
|
10283
|
+
/** `helix-activate` event type */
|
|
10284
|
+
export type HelixHeadlessOutlineHelixActivateElementEvent =
|
|
10285
|
+
HelixHeadlessOutlineElementEvent<HelixActivateEvent>;
|
|
10236
10286
|
|
|
10237
10287
|
export type HelixHeadlessOutlineProps = {
|
|
10238
10288
|
/** How a click on one of these links travels to its section.
|
|
@@ -10265,9 +10315,9 @@ a little more: without it the current section changes as a heading slides
|
|
|
10265
10315
|
under the chrome rather than as it reaches the top of what can be seen. */
|
|
10266
10316
|
offset?: (HelixHeadlessOutline["offset"]) | undefined;
|
|
10267
10317
|
|
|
10268
|
-
/** The section being read has changed, carrying its id as the value.
|
|
10269
|
-
"onhelix-
|
|
10270
|
-
e:
|
|
10318
|
+
/** The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take. */
|
|
10319
|
+
"onhelix-activate"?: ((
|
|
10320
|
+
e: HelixHeadlessOutlineHelixActivateElementEvent,
|
|
10271
10321
|
) => void) | undefined;
|
|
10272
10322
|
};
|
|
10273
10323
|
|
|
@@ -10301,9 +10351,9 @@ The reading line. A page with a sticky masthead sets this to its height, or
|
|
|
10301
10351
|
a little more: without it the current section changes as a heading slides
|
|
10302
10352
|
under the chrome rather than as it reaches the top of what can be seen. */
|
|
10303
10353
|
"prop:offset"?: (HelixHeadlessOutline["offset"]) | undefined;
|
|
10304
|
-
/** The section being read has changed, carrying its id as the value.
|
|
10305
|
-
"on:helix-
|
|
10306
|
-
e:
|
|
10354
|
+
/** The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take. */
|
|
10355
|
+
"on:helix-activate"?: ((
|
|
10356
|
+
e: HelixHeadlessOutlineHelixActivateElementEvent,
|
|
10307
10357
|
) => void) | undefined;
|
|
10308
10358
|
|
|
10309
10359
|
/** Set the innerHTML of the element */
|
|
@@ -20385,6 +20435,15 @@ export type CustomElements = {
|
|
|
20385
20435
|
*
|
|
20386
20436
|
* A comma is therefore not available inside an option's value, which is the
|
|
20387
20437
|
* listbox's contract and not this element's to change.
|
|
20438
|
+
*
|
|
20439
|
+
* **The list is told, and the field is not.** `aria-multiselectable` belongs
|
|
20440
|
+
* to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
|
|
20441
|
+
* ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
|
|
20442
|
+
* reader on the field hears it through `aria-controls`. This element wrote it
|
|
20443
|
+
* onto its own `role="combobox"` input as well, which an audit reports as a
|
|
20444
|
+
* property the role does not support and no spec here ever asserted: the one
|
|
20445
|
+
* that covers this says in as many words that telling the list is what this
|
|
20446
|
+
* element is responsible for.
|
|
20388
20447
|
* - `placeholder`: Text shown while nothing has been chosen.
|
|
20389
20448
|
* - `remove-label`/`removeLabel`: What a tag's remove control is called, since the mark has no name.
|
|
20390
20449
|
* - `suggest`: Whether the field finishes the word as it is typed.
|
|
@@ -22678,6 +22737,7 @@ export type CustomElements = {
|
|
|
22678
22737
|
*
|
|
22679
22738
|
* These can be used to apply styling when a component is in a given state.
|
|
22680
22739
|
*
|
|
22740
|
+
* - `drilled`: While a row's page is showing rather than the top one, so a frame around this can answer the depth it is at.
|
|
22681
22741
|
* - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
|
|
22682
22742
|
*/
|
|
22683
22743
|
"helix-headless-drilldown": Partial<
|
|
@@ -25614,8 +25674,16 @@ export type CustomElements = {
|
|
|
25614
25674
|
* a band is not a question of paint: a band is not placed against the trigger,
|
|
25615
25675
|
* so the controller has to be told not to measure, and that decision is here
|
|
25616
25676
|
* whatever the stylesheet says. Writing the width in both places would be one
|
|
25617
|
-
* number in two languages, drifting the first time either moved. This
|
|
25618
|
-
*
|
|
25677
|
+
* number in two languages, drifting the first time either moved. This records
|
|
25678
|
+
* `:state(narrow)` on the host and the stylesheet arranges itself off that.
|
|
25679
|
+
*
|
|
25680
|
+
* **A custom state and never `data-narrow`, which is what it was.** The width
|
|
25681
|
+
* is read in `connectedCallback`, so on a phone this is true on the very first
|
|
25682
|
+
* update: an attribute written there is markup a consumer's server never sent,
|
|
25683
|
+
* which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
25684
|
+
* narrow exception the server specs describe covers a mirror that can only
|
|
25685
|
+
* become true long after hydration, and a viewport measured before the first
|
|
25686
|
+
* paint is the opposite case. See `MixinControllerOpen` on `open`.
|
|
25619
25687
|
* - `label`: The section's name, which names the default trigger and the panel.
|
|
25620
25688
|
* - `open-on`/`openOn`: Whether hovering the trigger opens the panel, or only a press does.
|
|
25621
25689
|
*
|
|
@@ -25715,6 +25783,7 @@ export type CustomElements = {
|
|
|
25715
25783
|
*
|
|
25716
25784
|
* These can be used to apply styling when a component is in a given state.
|
|
25717
25785
|
*
|
|
25786
|
+
* - `narrow`: While the page is under `full-below`, so the panel is a band whether or not one was asked for.
|
|
25718
25787
|
* - `open`: While the panel is open, which is when the trigger reads as current.
|
|
25719
25788
|
* - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
|
|
25720
25789
|
*/
|
|
@@ -27344,7 +27413,7 @@ export type CustomElements = {
|
|
|
27344
27413
|
*
|
|
27345
27414
|
* Events that will be emitted by the component.
|
|
27346
27415
|
*
|
|
27347
|
-
* - `helix-
|
|
27416
|
+
* - `helix-activate`: The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take.
|
|
27348
27417
|
*
|
|
27349
27418
|
* ## Slots
|
|
27350
27419
|
*
|
|
@@ -37839,6 +37908,15 @@ export type CustomElementsSolidJs = {
|
|
|
37839
37908
|
*
|
|
37840
37909
|
* A comma is therefore not available inside an option's value, which is the
|
|
37841
37910
|
* listbox's contract and not this element's to change.
|
|
37911
|
+
*
|
|
37912
|
+
* **The list is told, and the field is not.** `aria-multiselectable` belongs
|
|
37913
|
+
* to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
|
|
37914
|
+
* ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
|
|
37915
|
+
* reader on the field hears it through `aria-controls`. This element wrote it
|
|
37916
|
+
* onto its own `role="combobox"` input as well, which an audit reports as a
|
|
37917
|
+
* property the role does not support and no spec here ever asserted: the one
|
|
37918
|
+
* that covers this says in as many words that telling the list is what this
|
|
37919
|
+
* element is responsible for.
|
|
37842
37920
|
* - `placeholder`: Text shown while nothing has been chosen.
|
|
37843
37921
|
* - `remove-label`/`removeLabel`: What a tag's remove control is called, since the mark has no name.
|
|
37844
37922
|
* - `suggest`: Whether the field finishes the word as it is typed.
|
|
@@ -40159,6 +40237,7 @@ export type CustomElementsSolidJs = {
|
|
|
40159
40237
|
*
|
|
40160
40238
|
* These can be used to apply styling when a component is in a given state.
|
|
40161
40239
|
*
|
|
40240
|
+
* - `drilled`: While a row's page is showing rather than the top one, so a frame around this can answer the depth it is at.
|
|
40162
40241
|
* - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
|
|
40163
40242
|
*/
|
|
40164
40243
|
"helix-headless-drilldown": Partial<
|
|
@@ -43144,8 +43223,16 @@ export type CustomElementsSolidJs = {
|
|
|
43144
43223
|
* a band is not a question of paint: a band is not placed against the trigger,
|
|
43145
43224
|
* so the controller has to be told not to measure, and that decision is here
|
|
43146
43225
|
* whatever the stylesheet says. Writing the width in both places would be one
|
|
43147
|
-
* number in two languages, drifting the first time either moved. This
|
|
43148
|
-
*
|
|
43226
|
+
* number in two languages, drifting the first time either moved. This records
|
|
43227
|
+
* `:state(narrow)` on the host and the stylesheet arranges itself off that.
|
|
43228
|
+
*
|
|
43229
|
+
* **A custom state and never `data-narrow`, which is what it was.** The width
|
|
43230
|
+
* is read in `connectedCallback`, so on a phone this is true on the very first
|
|
43231
|
+
* update: an attribute written there is markup a consumer's server never sent,
|
|
43232
|
+
* which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
43233
|
+
* narrow exception the server specs describe covers a mirror that can only
|
|
43234
|
+
* become true long after hydration, and a viewport measured before the first
|
|
43235
|
+
* paint is the opposite case. See `MixinControllerOpen` on `open`.
|
|
43149
43236
|
* - `label`: The section's name, which names the default trigger and the panel.
|
|
43150
43237
|
* - `open-on`/`openOn`: Whether hovering the trigger opens the panel, or only a press does.
|
|
43151
43238
|
*
|
|
@@ -43245,6 +43332,7 @@ export type CustomElementsSolidJs = {
|
|
|
43245
43332
|
*
|
|
43246
43333
|
* These can be used to apply styling when a component is in a given state.
|
|
43247
43334
|
*
|
|
43335
|
+
* - `narrow`: While the page is under `full-below`, so the panel is a band whether or not one was asked for.
|
|
43248
43336
|
* - `open`: While the panel is open, which is when the trigger reads as current.
|
|
43249
43337
|
* - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
|
|
43250
43338
|
*/
|
|
@@ -44896,7 +44984,7 @@ export type CustomElementsSolidJs = {
|
|
|
44896
44984
|
*
|
|
44897
44985
|
* Events that will be emitted by the component.
|
|
44898
44986
|
*
|
|
44899
|
-
* - `helix-
|
|
44987
|
+
* - `helix-activate`: The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take.
|
|
44900
44988
|
*
|
|
44901
44989
|
* ## Slots
|
|
44902
44990
|
*
|
package/types/vue.d.ts
CHANGED
|
@@ -159,11 +159,11 @@ import type {
|
|
|
159
159
|
HelixResizeEvent,
|
|
160
160
|
HelixShortcutEvent,
|
|
161
161
|
HelixReadEvent,
|
|
162
|
-
|
|
162
|
+
HelixActivateEvent,
|
|
163
163
|
HelixCompleteEvent,
|
|
164
164
|
HelixBeforeCollapseEvent,
|
|
165
165
|
HelixBeforeResizeEvent,
|
|
166
|
-
|
|
166
|
+
HelixBeforeActivateEvent,
|
|
167
167
|
HelixTourAskEvent,
|
|
168
168
|
HelixNextEvent,
|
|
169
169
|
HelixPreviousEvent,
|
|
@@ -1724,7 +1724,16 @@ toggles rather than replaces, and the arrows move without choosing. What
|
|
|
1724
1724
|
this adds is the tags, and keeping the panel open between picks.
|
|
1725
1725
|
|
|
1726
1726
|
A comma is therefore not available inside an option's value, which is the
|
|
1727
|
-
listbox's contract and not this element's to change.
|
|
1727
|
+
listbox's contract and not this element's to change.
|
|
1728
|
+
|
|
1729
|
+
**The list is told, and the field is not.** `aria-multiselectable` belongs
|
|
1730
|
+
to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
|
|
1731
|
+
ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
|
|
1732
|
+
reader on the field hears it through `aria-controls`. This element wrote it
|
|
1733
|
+
onto its own `role="combobox"` input as well, which an audit reports as a
|
|
1734
|
+
property the role does not support and no spec here ever asserted: the one
|
|
1735
|
+
that covers this says in as many words that telling the list is what this
|
|
1736
|
+
element is responsible for. */
|
|
1728
1737
|
multiple?: (HelixHeadlessCombobox["multiple"]) | undefined;
|
|
1729
1738
|
/** Text shown while nothing has been chosen. */
|
|
1730
1739
|
placeholder?: (HelixHeadlessCombobox["placeholder"]) | undefined;
|
|
@@ -4445,8 +4454,16 @@ fits.
|
|
|
4445
4454
|
a band is not a question of paint: a band is not placed against the trigger,
|
|
4446
4455
|
so the controller has to be told not to measure, and that decision is here
|
|
4447
4456
|
whatever the stylesheet says. Writing the width in both places would be one
|
|
4448
|
-
number in two languages, drifting the first time either moved. This
|
|
4449
|
-
|
|
4457
|
+
number in two languages, drifting the first time either moved. This records
|
|
4458
|
+
`:state(narrow)` on the host and the stylesheet arranges itself off that.
|
|
4459
|
+
|
|
4460
|
+
**A custom state and never `data-narrow`, which is what it was.** The width
|
|
4461
|
+
is read in `connectedCallback`, so on a phone this is true on the very first
|
|
4462
|
+
update: an attribute written there is markup a consumer's server never sent,
|
|
4463
|
+
which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
4464
|
+
narrow exception the server specs describe covers a mirror that can only
|
|
4465
|
+
become true long after hydration, and a viewport measured before the first
|
|
4466
|
+
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
4450
4467
|
"full-below"?: (HelixHeadlessMegamenu["fullBelow"] | `${number}`) | undefined;
|
|
4451
4468
|
/** The width, in pixels, under which a card becomes a band. Zero never does.
|
|
4452
4469
|
|
|
@@ -4461,8 +4478,16 @@ fits.
|
|
|
4461
4478
|
a band is not a question of paint: a band is not placed against the trigger,
|
|
4462
4479
|
so the controller has to be told not to measure, and that decision is here
|
|
4463
4480
|
whatever the stylesheet says. Writing the width in both places would be one
|
|
4464
|
-
number in two languages, drifting the first time either moved. This
|
|
4465
|
-
|
|
4481
|
+
number in two languages, drifting the first time either moved. This records
|
|
4482
|
+
`:state(narrow)` on the host and the stylesheet arranges itself off that.
|
|
4483
|
+
|
|
4484
|
+
**A custom state and never `data-narrow`, which is what it was.** The width
|
|
4485
|
+
is read in `connectedCallback`, so on a phone this is true on the very first
|
|
4486
|
+
update: an attribute written there is markup a consumer's server never sent,
|
|
4487
|
+
which React reports as a mismatch and answers by rebuilding the subtree. The
|
|
4488
|
+
narrow exception the server specs describe covers a mirror that can only
|
|
4489
|
+
become true long after hydration, and a viewport measured before the first
|
|
4490
|
+
paint is the opposite case. See `MixinControllerOpen` on `open`. */
|
|
4466
4491
|
fullBelow?: (HelixHeadlessMegamenu["fullBelow"]) | undefined;
|
|
4467
4492
|
/** The section's name, which names the default trigger and the panel. */
|
|
4468
4493
|
label?: (HelixHeadlessMegamenu["label"]) | undefined;
|
|
@@ -5247,9 +5272,9 @@ export type HelixHeadlessOutlineElementEvent<E = Event> = TypedEvent<
|
|
|
5247
5272
|
HelixHeadlessOutline,
|
|
5248
5273
|
E
|
|
5249
5274
|
>;
|
|
5250
|
-
/** `helix-
|
|
5251
|
-
export type
|
|
5252
|
-
HelixHeadlessOutlineElementEvent<
|
|
5275
|
+
/** `helix-activate` event type */
|
|
5276
|
+
export type HelixHeadlessOutlineHelixActivateElementEvent =
|
|
5277
|
+
HelixHeadlessOutlineElementEvent<HelixActivateEvent>;
|
|
5253
5278
|
|
|
5254
5279
|
export type HelixHeadlessOutlineVueProps = {
|
|
5255
5280
|
/** How a click on one of these links travels to its section.
|
|
@@ -5284,8 +5309,8 @@ under the chrome rather than as it reaches the top of what can be seen. */
|
|
|
5284
5309
|
};
|
|
5285
5310
|
|
|
5286
5311
|
export type HelixHeadlessOutlineVueEvents = {
|
|
5287
|
-
/** The section being read has changed, carrying its id as the value.
|
|
5288
|
-
"helix-
|
|
5312
|
+
/** The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take. */
|
|
5313
|
+
"helix-activate": HelixHeadlessOutlineHelixActivateElementEvent;
|
|
5289
5314
|
};
|
|
5290
5315
|
|
|
5291
5316
|
/** `HelixHeadlessPagination` component event */
|