@fusion.dev/helix-headless 0.151.0 → 0.153.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 +1332 -37
- package/dist/app-header/root/app-header-root.d.ts +75 -0
- package/dist/app-header/root/app-header-root.js +140 -5
- package/dist/area-chart/root/area-chart-root.d.ts +16 -1
- package/dist/area-chart/root/area-chart-root.js +3 -3
- package/dist/bar-chart/root/bar-chart-root.d.ts +16 -1
- package/dist/bar-chart/root/bar-chart-root.js +3 -3
- package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +11 -2
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +11 -2
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +14 -2
- package/dist/breadcrumbs/root/breadcrumbs-root.js +16 -3
- package/dist/dialog/description.d.ts +10 -0
- package/dist/dialog/description.js +22 -8
- package/dist/dialog/root/dialog-root.d.ts +17 -1
- package/dist/dialog/root/dialog-root.js +2 -2
- package/dist/drawer/root/drawer-root.d.ts +38 -2
- package/dist/drawer/root/drawer-root.js +33 -6
- package/dist/heatmap/root/heatmap-root.d.ts +3 -0
- package/dist/heatmap/root/heatmap-root.js +2 -8
- package/dist/lightbox/root/lightbox-root.d.ts +44 -6
- package/dist/lightbox/root/lightbox-root.js +59 -11
- package/dist/lightbox/zoom-controller.d.ts +5 -0
- package/dist/lightbox/zoom-controller.js +8 -0
- package/dist/line-chart/root/line-chart-root.d.ts +16 -1
- package/dist/line-chart/root/line-chart-root.js +3 -3
- package/dist/loader/root/loader-root.d.ts +5 -0
- package/dist/menu/root/menu-root.js +2 -0
- package/dist/navigation/root/navigation-root.d.ts +11 -1
- package/dist/navigation/root/navigation-root.js +10 -5
- package/dist/notifications/root/notifications-root.d.ts +17 -0
- package/dist/notifications/root/notifications-root.js +21 -1
- package/dist/popover/root/popover-root.d.ts +18 -7
- package/dist/popover/root/popover-root.js +8 -1
- package/dist/progress/root/progress-root.d.ts +16 -1
- package/dist/progress/root/progress-root.js +12 -4
- package/dist/scatter-chart/root/scatter-chart-root.d.ts +16 -1
- package/dist/scatter-chart/root/scatter-chart-root.js +3 -3
- package/dist/splitter/root/splitter-root.d.ts +41 -0
- package/dist/splitter/root/splitter-root.js +77 -0
- package/dist/tabs/root/tabs-root.d.ts +25 -0
- package/dist/tabs/root/tabs-root.js +28 -1
- package/dist/tour/naming.d.ts +9 -3
- package/dist/tour/naming.js +9 -3
- package/dist/tour/root/tour-root.d.ts +29 -5
- package/dist/tour/root/tour-root.js +13 -1
- package/dist/tour/stop/tour-stop.d.ts +2 -1
- package/dist/tour/stop/tour-stop.js +4 -1
- package/dist/tree/root/tree-root.d.ts +13 -0
- package/dist/tree/root/tree-root.js +42 -2
- package/lint.json +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +1456 -36
- package/types/vue.d.ts +277 -24
- package/types/words.d.ts +64 -0
package/types/vue.d.ts
CHANGED
|
@@ -563,6 +563,22 @@ the wordmark and the actions happen to measure.
|
|
|
563
563
|
takes a search field or a breadcrumb trail as readily as a `Navigation`, so
|
|
564
564
|
the property carries the part's name, `content`. */
|
|
565
565
|
contentAlign?: (HelixHeadlessAppHeader["contentAlign"]) | undefined;
|
|
566
|
+
/** The width of the bar, in pixels, below which the middle region folds behind
|
|
567
|
+
a toggle. Unset, it never folds. */
|
|
568
|
+
"fold-below"?: (HelixHeadlessAppHeader["foldBelow"] | `${number}`) | undefined;
|
|
569
|
+
/** The width of the bar, in pixels, below which the middle region folds behind
|
|
570
|
+
a toggle. Unset, it never folds. */
|
|
571
|
+
foldBelow?: (HelixHeadlessAppHeader["foldBelow"]) | undefined;
|
|
572
|
+
/** Hides the bar as the page scrolls down past it, and shows it again as the
|
|
573
|
+
page scrolls up. */
|
|
574
|
+
"hide-on-scroll"?: (HelixHeadlessAppHeader["hideOnScroll"]) | undefined;
|
|
575
|
+
/** Hides the bar as the page scrolls down past it, and shows it again as the
|
|
576
|
+
page scrolls up. */
|
|
577
|
+
hideOnScroll?: (HelixHeadlessAppHeader["hideOnScroll"]) | undefined;
|
|
578
|
+
/** The name of the toggle that opens a folded middle region. */
|
|
579
|
+
"menu-label"?: (HelixHeadlessAppHeader["menuLabel"]) | undefined;
|
|
580
|
+
/** The name of the toggle that opens a folded middle region. */
|
|
581
|
+
menuLabel?: (HelixHeadlessAppHeader["menuLabel"]) | undefined;
|
|
566
582
|
/** The id of the element whose scrolling lifts the bar, for an app shell that
|
|
567
583
|
scrolls a container instead of the window. Unset is the window. */
|
|
568
584
|
scroller?: (HelixHeadlessAppHeader["scroller"]) | undefined;
|
|
@@ -647,6 +663,25 @@ them, and the tooltip and the table hold every reading. */
|
|
|
647
663
|
Absent draws none: bands read as a composition need no numbers beside
|
|
648
664
|
them, and the tooltip and the table hold every reading. */
|
|
649
665
|
valueAxis?: (HelixHeadlessAreaChart["valueAxis"]) | undefined;
|
|
666
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
667
|
+
and the fallback of the `empty` slot. */
|
|
668
|
+
"empty-text"?: (HelixHeadlessAreaChart["emptyText"]) | undefined;
|
|
669
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
670
|
+
and the fallback of the `empty` slot. */
|
|
671
|
+
emptyText?: (HelixHeadlessAreaChart["emptyText"]) | undefined;
|
|
672
|
+
/** Whether the readings are still on their way. The chart shows
|
|
673
|
+
`loading-text` in place of an empty drawing until it has readings.
|
|
674
|
+
|
|
675
|
+
Reflected, so a stylesheet can treat the chart while it waits. A chart
|
|
676
|
+
that already has readings keeps drawing them, so a refresh does not
|
|
677
|
+
blank it. */
|
|
678
|
+
loading?: (HelixHeadlessAreaChart["loading"]) | undefined;
|
|
679
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
680
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
681
|
+
"loading-text"?: (HelixHeadlessAreaChart["loadingText"]) | undefined;
|
|
682
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
683
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
684
|
+
loadingText?: (HelixHeadlessAreaChart["loadingText"]) | undefined;
|
|
650
685
|
/** The id of the table to read.
|
|
651
686
|
|
|
652
687
|
Names a table in the same tree, so a chart inside another component's
|
|
@@ -683,6 +718,29 @@ Set it to the words of the page's language, such as `{position} von
|
|
|
683
718
|
{count}`, or to nothing to say no position. A slice or a series a
|
|
684
719
|
legend hid is not counted. */
|
|
685
720
|
positionLabel?: (HelixHeadlessAreaChart["positionLabel"]) | undefined;
|
|
721
|
+
/** The readings as data, in the shape of a table, where the page has no
|
|
722
|
+
table to point `for` at. `for` wins where both are set.
|
|
723
|
+
|
|
724
|
+
```js
|
|
725
|
+
chart.data = {
|
|
726
|
+
caption: 'Sessions by channel',
|
|
727
|
+
columns: ['Month', 'Direct', 'Referral'],
|
|
728
|
+
rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
729
|
+
}
|
|
730
|
+
```
|
|
731
|
+
|
|
732
|
+
The first column holds each row's label and every column after it a
|
|
733
|
+
series, as in a table. A cell is a number, words, `null` for a blank,
|
|
734
|
+
or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
735
|
+
number is shown in `locale`.
|
|
736
|
+
|
|
737
|
+
**A table is still the better source where the page can show one**:
|
|
738
|
+
it reads with no script and before hydration, and a reader can sort and
|
|
739
|
+
copy it. Data is drawn on the client only, so a server serves the
|
|
740
|
+
frame, and the summary, the keys and the readout are then the whole of
|
|
741
|
+
what a screen reader is given. Set a new object to redraw: the chart
|
|
742
|
+
does not look inside the one it has. */
|
|
743
|
+
data?: (HelixHeadlessAreaChart["data"]) | undefined;
|
|
686
744
|
};
|
|
687
745
|
|
|
688
746
|
export type HelixHeadlessAreaChartVueEvents = {
|
|
@@ -985,6 +1043,25 @@ bottom of bars under `orientation="horizontal"`.
|
|
|
985
1043
|
Absent draws none with one scale, since bars compared with each other need
|
|
986
1044
|
no numbers. With `secondary` both scales are drawn whatever this says. */
|
|
987
1045
|
valueAxis?: (HelixHeadlessBarChart["valueAxis"]) | undefined;
|
|
1046
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
1047
|
+
and the fallback of the `empty` slot. */
|
|
1048
|
+
"empty-text"?: (HelixHeadlessBarChart["emptyText"]) | undefined;
|
|
1049
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
1050
|
+
and the fallback of the `empty` slot. */
|
|
1051
|
+
emptyText?: (HelixHeadlessBarChart["emptyText"]) | undefined;
|
|
1052
|
+
/** Whether the readings are still on their way. The chart shows
|
|
1053
|
+
`loading-text` in place of an empty drawing until it has readings.
|
|
1054
|
+
|
|
1055
|
+
Reflected, so a stylesheet can treat the chart while it waits. A chart
|
|
1056
|
+
that already has readings keeps drawing them, so a refresh does not
|
|
1057
|
+
blank it. */
|
|
1058
|
+
loading?: (HelixHeadlessBarChart["loading"]) | undefined;
|
|
1059
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
1060
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
1061
|
+
"loading-text"?: (HelixHeadlessBarChart["loadingText"]) | undefined;
|
|
1062
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
1063
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
1064
|
+
loadingText?: (HelixHeadlessBarChart["loadingText"]) | undefined;
|
|
988
1065
|
/** The id of the table to read.
|
|
989
1066
|
|
|
990
1067
|
Names a table in the same tree, so a chart inside another component's
|
|
@@ -1021,6 +1098,29 @@ Set it to the words of the page's language, such as `{position} von
|
|
|
1021
1098
|
{count}`, or to nothing to say no position. A slice or a series a
|
|
1022
1099
|
legend hid is not counted. */
|
|
1023
1100
|
positionLabel?: (HelixHeadlessBarChart["positionLabel"]) | undefined;
|
|
1101
|
+
/** The readings as data, in the shape of a table, where the page has no
|
|
1102
|
+
table to point `for` at. `for` wins where both are set.
|
|
1103
|
+
|
|
1104
|
+
```js
|
|
1105
|
+
chart.data = {
|
|
1106
|
+
caption: 'Sessions by channel',
|
|
1107
|
+
columns: ['Month', 'Direct', 'Referral'],
|
|
1108
|
+
rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
1109
|
+
}
|
|
1110
|
+
```
|
|
1111
|
+
|
|
1112
|
+
The first column holds each row's label and every column after it a
|
|
1113
|
+
series, as in a table. A cell is a number, words, `null` for a blank,
|
|
1114
|
+
or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
1115
|
+
number is shown in `locale`.
|
|
1116
|
+
|
|
1117
|
+
**A table is still the better source where the page can show one**:
|
|
1118
|
+
it reads with no script and before hydration, and a reader can sort and
|
|
1119
|
+
copy it. Data is drawn on the client only, so a server serves the
|
|
1120
|
+
frame, and the summary, the keys and the readout are then the whole of
|
|
1121
|
+
what a screen reader is given. Set a new object to redraw: the chart
|
|
1122
|
+
does not look inside the one it has. */
|
|
1123
|
+
data?: (HelixHeadlessBarChart["data"]) | undefined;
|
|
1024
1124
|
};
|
|
1025
1125
|
|
|
1026
1126
|
export type HelixHeadlessBarChartVueEvents = {
|
|
@@ -5515,8 +5615,14 @@ first, `handleCancel` prevents it, and `requestOpen` decides. So
|
|
|
5515
5615
|
`closedby="any"` gains light dismiss without giving up the refusal, which is
|
|
5516
5616
|
the property this component exists to keep.
|
|
5517
5617
|
|
|
5618
|
+
The press on the backdrop that this element handles itself follows it too:
|
|
5619
|
+
`closerequest` and `none` leave the dialog open on that press, as the
|
|
5620
|
+
platform does, and `none` also keeps it open on Escape in a browser without
|
|
5621
|
+
`closedby`.
|
|
5622
|
+
|
|
5518
5623
|
Absent by default, which is the platform's `auto` and this library's rule
|
|
5519
|
-
that a resting value is an attribute's absence.
|
|
5624
|
+
that a resting value is an attribute's absence. Absent, a press on the
|
|
5625
|
+
backdrop closes the dialog. */
|
|
5520
5626
|
closedby?: (HelixHeadlessDialog["closedBy"]) | undefined;
|
|
5521
5627
|
/** Which close requests the browser handles on its own.
|
|
5522
5628
|
|
|
@@ -5526,8 +5632,14 @@ first, `handleCancel` prevents it, and `requestOpen` decides. So
|
|
|
5526
5632
|
`closedby="any"` gains light dismiss without giving up the refusal, which is
|
|
5527
5633
|
the property this component exists to keep.
|
|
5528
5634
|
|
|
5635
|
+
The press on the backdrop that this element handles itself follows it too:
|
|
5636
|
+
`closerequest` and `none` leave the dialog open on that press, as the
|
|
5637
|
+
platform does, and `none` also keeps it open on Escape in a browser without
|
|
5638
|
+
`closedby`.
|
|
5639
|
+
|
|
5529
5640
|
Absent by default, which is the platform's `auto` and this library's rule
|
|
5530
|
-
that a resting value is an attribute's absence.
|
|
5641
|
+
that a resting value is an attribute's absence. Absent, a press on the
|
|
5642
|
+
backdrop closes the dialog. */
|
|
5531
5643
|
closedBy?: (HelixHeadlessDialog["closedBy"]) | undefined;
|
|
5532
5644
|
/** Draws a control that closes the dialog, in the corner where the title is.
|
|
5533
5645
|
|
|
@@ -5720,6 +5832,29 @@ Set it to the words of the page's language, such as `{position} von
|
|
|
5720
5832
|
{count}`, or to nothing to say no position. A slice or a series a
|
|
5721
5833
|
legend hid is not counted. */
|
|
5722
5834
|
positionLabel?: (HelixHeadlessDonutChart["positionLabel"]) | undefined;
|
|
5835
|
+
/** The readings as data, in the shape of a table, where the page has no
|
|
5836
|
+
table to point `for` at. `for` wins where both are set.
|
|
5837
|
+
|
|
5838
|
+
```js
|
|
5839
|
+
chart.data = {
|
|
5840
|
+
caption: 'Sessions by channel',
|
|
5841
|
+
columns: ['Month', 'Direct', 'Referral'],
|
|
5842
|
+
rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
5843
|
+
}
|
|
5844
|
+
```
|
|
5845
|
+
|
|
5846
|
+
The first column holds each row's label and every column after it a
|
|
5847
|
+
series, as in a table. A cell is a number, words, `null` for a blank,
|
|
5848
|
+
or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
5849
|
+
number is shown in `locale`.
|
|
5850
|
+
|
|
5851
|
+
**A table is still the better source where the page can show one**:
|
|
5852
|
+
it reads with no script and before hydration, and a reader can sort and
|
|
5853
|
+
copy it. Data is drawn on the client only, so a server serves the
|
|
5854
|
+
frame, and the summary, the keys and the readout are then the whole of
|
|
5855
|
+
what a screen reader is given. Set a new object to redraw: the chart
|
|
5856
|
+
does not look inside the one it has. */
|
|
5857
|
+
data?: (HelixHeadlessDonutChart["data"]) | undefined;
|
|
5723
5858
|
};
|
|
5724
5859
|
|
|
5725
5860
|
export type HelixHeadlessDonutChartVueEvents = {};
|
|
@@ -5794,6 +5929,12 @@ lost its focus trap because a consumer forgot a word would be worse than an
|
|
|
5794
5929
|
attribute on the host, and nothing selects on it: the scrim is rendered or
|
|
5795
5930
|
not, rather than shown or hidden by CSS. */
|
|
5796
5931
|
modal?: (HelixHeadlessDrawer["modal"]) | undefined;
|
|
5932
|
+
/** Stops Escape, a press outside, and a swipe from closing the drawer, for a
|
|
5933
|
+
drawer that has to be answered.
|
|
5934
|
+
|
|
5935
|
+
The close control and `close()` still close it, as on `Dialog`: a panel
|
|
5936
|
+
with no way out at all is a trap. */
|
|
5937
|
+
persistent?: (HelixHeadlessDrawer["persistent"]) | undefined;
|
|
5797
5938
|
/** Which edge the drawer comes from.
|
|
5798
5939
|
|
|
5799
5940
|
Unset is `end`, and it stays unset rather than being written down: a
|
|
@@ -7141,6 +7282,29 @@ Set it to the words of the page's language, such as `{position} von
|
|
|
7141
7282
|
{count}`, or to nothing to say no position. A slice or a series a
|
|
7142
7283
|
legend hid is not counted. */
|
|
7143
7284
|
positionLabel?: (HelixHeadlessHeatmap["positionLabel"]) | undefined;
|
|
7285
|
+
/** The readings as data, in the shape of a table, where the page has no
|
|
7286
|
+
table to point `for` at. `for` wins where both are set.
|
|
7287
|
+
|
|
7288
|
+
```js
|
|
7289
|
+
chart.data = {
|
|
7290
|
+
caption: 'Sessions by channel',
|
|
7291
|
+
columns: ['Month', 'Direct', 'Referral'],
|
|
7292
|
+
rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
7293
|
+
}
|
|
7294
|
+
```
|
|
7295
|
+
|
|
7296
|
+
The first column holds each row's label and every column after it a
|
|
7297
|
+
series, as in a table. A cell is a number, words, `null` for a blank,
|
|
7298
|
+
or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
7299
|
+
number is shown in `locale`.
|
|
7300
|
+
|
|
7301
|
+
**A table is still the better source where the page can show one**:
|
|
7302
|
+
it reads with no script and before hydration, and a reader can sort and
|
|
7303
|
+
copy it. Data is drawn on the client only, so a server serves the
|
|
7304
|
+
frame, and the summary, the keys and the readout are then the whole of
|
|
7305
|
+
what a screen reader is given. Set a new object to redraw: the chart
|
|
7306
|
+
does not look inside the one it has. */
|
|
7307
|
+
data?: (HelixHeadlessHeatmap["data"]) | undefined;
|
|
7144
7308
|
};
|
|
7145
7309
|
|
|
7146
7310
|
export type HelixHeadlessHeatmapVueEvents = {
|
|
@@ -8213,6 +8377,25 @@ Set it where the distance from nothing is the point rather than the shape,
|
|
|
8213
8377
|
and accept that a series which never approaches zero becomes a flat rule
|
|
8214
8378
|
near the top of the box. */
|
|
8215
8379
|
zero?: (HelixHeadlessLineChart["zero"]) | undefined;
|
|
8380
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
8381
|
+
and the fallback of the `empty` slot. */
|
|
8382
|
+
"empty-text"?: (HelixHeadlessLineChart["emptyText"]) | undefined;
|
|
8383
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
8384
|
+
and the fallback of the `empty` slot. */
|
|
8385
|
+
emptyText?: (HelixHeadlessLineChart["emptyText"]) | undefined;
|
|
8386
|
+
/** Whether the readings are still on their way. The chart shows
|
|
8387
|
+
`loading-text` in place of an empty drawing until it has readings.
|
|
8388
|
+
|
|
8389
|
+
Reflected, so a stylesheet can treat the chart while it waits. A chart
|
|
8390
|
+
that already has readings keeps drawing them, so a refresh does not
|
|
8391
|
+
blank it. */
|
|
8392
|
+
loading?: (HelixHeadlessLineChart["loading"]) | undefined;
|
|
8393
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
8394
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
8395
|
+
"loading-text"?: (HelixHeadlessLineChart["loadingText"]) | undefined;
|
|
8396
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
8397
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
8398
|
+
loadingText?: (HelixHeadlessLineChart["loadingText"]) | undefined;
|
|
8216
8399
|
/** The id of the table to read.
|
|
8217
8400
|
|
|
8218
8401
|
Names a table in the same tree, so a chart inside another component's
|
|
@@ -8249,6 +8432,29 @@ Set it to the words of the page's language, such as `{position} von
|
|
|
8249
8432
|
{count}`, or to nothing to say no position. A slice or a series a
|
|
8250
8433
|
legend hid is not counted. */
|
|
8251
8434
|
positionLabel?: (HelixHeadlessLineChart["positionLabel"]) | undefined;
|
|
8435
|
+
/** The readings as data, in the shape of a table, where the page has no
|
|
8436
|
+
table to point `for` at. `for` wins where both are set.
|
|
8437
|
+
|
|
8438
|
+
```js
|
|
8439
|
+
chart.data = {
|
|
8440
|
+
caption: 'Sessions by channel',
|
|
8441
|
+
columns: ['Month', 'Direct', 'Referral'],
|
|
8442
|
+
rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
8443
|
+
}
|
|
8444
|
+
```
|
|
8445
|
+
|
|
8446
|
+
The first column holds each row's label and every column after it a
|
|
8447
|
+
series, as in a table. A cell is a number, words, `null` for a blank,
|
|
8448
|
+
or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
8449
|
+
number is shown in `locale`.
|
|
8450
|
+
|
|
8451
|
+
**A table is still the better source where the page can show one**:
|
|
8452
|
+
it reads with no script and before hydration, and a reader can sort and
|
|
8453
|
+
copy it. Data is drawn on the client only, so a server serves the
|
|
8454
|
+
frame, and the summary, the keys and the readout are then the whole of
|
|
8455
|
+
what a screen reader is given. Set a new object to redraw: the chart
|
|
8456
|
+
does not look inside the one it has. */
|
|
8457
|
+
data?: (HelixHeadlessLineChart["data"]) | undefined;
|
|
8252
8458
|
};
|
|
8253
8459
|
|
|
8254
8460
|
export type HelixHeadlessLineChartVueEvents = {
|
|
@@ -11409,7 +11615,8 @@ decimals. Written as JSON in the attribute.
|
|
|
11409
11615
|
|
|
11410
11616
|
A `percent` style writes the share of the range, and any other the value
|
|
11411
11617
|
itself, so the example says "18 GB". Absent is a whole percentage. The
|
|
11412
|
-
words are announced
|
|
11618
|
+
words are announced whether or not `show-value` shows them. `value-text`
|
|
11619
|
+
still wins. */
|
|
11413
11620
|
"format-options"?: (HelixHeadlessProgress["formatOptions"]) | undefined;
|
|
11414
11621
|
/** `Intl.NumberFormat` options the reading is written with, as React Aria's
|
|
11415
11622
|
Meter and ProgressBar take them: a unit, a currency, or a number of
|
|
@@ -11421,7 +11628,8 @@ decimals. Written as JSON in the attribute.
|
|
|
11421
11628
|
|
|
11422
11629
|
A `percent` style writes the share of the range, and any other the value
|
|
11423
11630
|
itself, so the example says "18 GB". Absent is a whole percentage. The
|
|
11424
|
-
words are announced
|
|
11631
|
+
words are announced whether or not `show-value` shows them. `value-text`
|
|
11632
|
+
still wins. */
|
|
11425
11633
|
formatOptions?: (HelixHeadlessProgress["formatOptions"]) | undefined;
|
|
11426
11634
|
/** Whether the length of the task is unknown. The bar then shows activity
|
|
11427
11635
|
without a value.
|
|
@@ -12054,6 +12262,25 @@ Absent draws none. A series with fewer than two points, or with every
|
|
|
12054
12262
|
point at one measure across, has no line to draw. The summary already
|
|
12055
12263
|
gives each series' correlation, which says how near the points are to it. */
|
|
12056
12264
|
trend?: (HelixHeadlessScatterChart["trend"]) | undefined;
|
|
12265
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
12266
|
+
and the fallback of the `empty` slot. */
|
|
12267
|
+
"empty-text"?: (HelixHeadlessScatterChart["emptyText"]) | undefined;
|
|
12268
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
12269
|
+
and the fallback of the `empty` slot. */
|
|
12270
|
+
emptyText?: (HelixHeadlessScatterChart["emptyText"]) | undefined;
|
|
12271
|
+
/** Whether the readings are still on their way. The chart shows
|
|
12272
|
+
`loading-text` in place of an empty drawing until it has readings.
|
|
12273
|
+
|
|
12274
|
+
Reflected, so a stylesheet can treat the chart while it waits. A chart
|
|
12275
|
+
that already has readings keeps drawing them, so a refresh does not
|
|
12276
|
+
blank it. */
|
|
12277
|
+
loading?: (HelixHeadlessScatterChart["loading"]) | undefined;
|
|
12278
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
12279
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
12280
|
+
"loading-text"?: (HelixHeadlessScatterChart["loadingText"]) | undefined;
|
|
12281
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
12282
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
12283
|
+
loadingText?: (HelixHeadlessScatterChart["loadingText"]) | undefined;
|
|
12057
12284
|
/** The id of the table to read.
|
|
12058
12285
|
|
|
12059
12286
|
Names a table in the same tree, so a chart inside another component's
|
|
@@ -12090,6 +12317,29 @@ Set it to the words of the page's language, such as `{position} von
|
|
|
12090
12317
|
{count}`, or to nothing to say no position. A slice or a series a
|
|
12091
12318
|
legend hid is not counted. */
|
|
12092
12319
|
positionLabel?: (HelixHeadlessScatterChart["positionLabel"]) | undefined;
|
|
12320
|
+
/** The readings as data, in the shape of a table, where the page has no
|
|
12321
|
+
table to point `for` at. `for` wins where both are set.
|
|
12322
|
+
|
|
12323
|
+
```js
|
|
12324
|
+
chart.data = {
|
|
12325
|
+
caption: 'Sessions by channel',
|
|
12326
|
+
columns: ['Month', 'Direct', 'Referral'],
|
|
12327
|
+
rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
12328
|
+
}
|
|
12329
|
+
```
|
|
12330
|
+
|
|
12331
|
+
The first column holds each row's label and every column after it a
|
|
12332
|
+
series, as in a table. A cell is a number, words, `null` for a blank,
|
|
12333
|
+
or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
12334
|
+
number is shown in `locale`.
|
|
12335
|
+
|
|
12336
|
+
**A table is still the better source where the page can show one**:
|
|
12337
|
+
it reads with no script and before hydration, and a reader can sort and
|
|
12338
|
+
copy it. Data is drawn on the client only, so a server serves the
|
|
12339
|
+
frame, and the summary, the keys and the readout are then the whole of
|
|
12340
|
+
what a screen reader is given. Set a new object to redraw: the chart
|
|
12341
|
+
does not look inside the one it has. */
|
|
12342
|
+
data?: (HelixHeadlessScatterChart["data"]) | undefined;
|
|
12093
12343
|
};
|
|
12094
12344
|
|
|
12095
12345
|
export type HelixHeadlessScatterChartVueEvents = {
|
|
@@ -12965,6 +13215,9 @@ Reading gives where it is; writing declares it the consumer's, and
|
|
|
12965
13215
|
`default-position` seeds one this element owns. The same accessor pair
|
|
12966
13216
|
`Pagination.page` and the calendar's `month` carry. */
|
|
12967
13217
|
position?: (HelixHeadlessSplitter["position"]) | undefined;
|
|
13218
|
+
/** The pane that keeps its size when the splitter's own size changes. The
|
|
13219
|
+
other pane takes all of the change. Unset, both keep their share. */
|
|
13220
|
+
primary?: (HelixHeadlessSplitter["primary"]) | undefined;
|
|
12968
13221
|
/** Where a dragged divider snaps, comma separated, as Web Awesome's split
|
|
12969
13222
|
panel does: a bare number is a percentage and a length such as `240px` is
|
|
12970
13223
|
measured along the splitter, so `snap="25, 50, 75"` or `snap="240px, 50"`.
|
|
@@ -16803,13 +17056,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16803
17056
|
HelixHeadlessAnnouncementVueProps,
|
|
16804
17057
|
HelixHeadlessAnnouncementVueEvents
|
|
16805
17058
|
>;
|
|
16806
|
-
/** Tracks whether the page has scrolled and sets the custom state 'scrolled', so the styled tier can lift the bar without a scroll handler of its own. The state is read when the element connects. A fresh load starts at the top, which matches the server markup, and a reload partway down the page is corrected on hydration. The element uses a custom state because an attribute such as 'data-scrolled', written onto its own host, is one the server did not send. A hydrating framework would report a mismatch whenever the page reloads far enough down. 'ElementInternals.states' is not in the DOM, so hydration has nothing to compare. Select the state with ':state(scrolled)'. The page is the window unless 'scroller' names the element that scrolls, for an app shell whose content scrolls inside a container. The host is the page's 'banner' landmark. Placed inside 'main', 'article', 'aside', 'nav' or 'section', it is a plain box instead, as a native '<header>' is there, so a header inside a card or a pane does not add a second banner. The ancestors are read as the accessibility tree reads them, through the slots that take the header in, so one slotted into a component that draws a '<nav>', such as 'Navigation', is not a banner either. A server cannot see the ancestors, so it serves the banner and the browser corrects it when the element connects. */
|
|
17059
|
+
/** Tracks whether the page has scrolled and sets the custom state 'scrolled', so the styled tier can lift the bar without a scroll handler of its own. The state is read when the element connects. A fresh load starts at the top, which matches the server markup, and a reload partway down the page is corrected on hydration. The element uses a custom state because an attribute such as 'data-scrolled', written onto its own host, is one the server did not send. A hydrating framework would report a mismatch whenever the page reloads far enough down. 'ElementInternals.states' is not in the DOM, so hydration has nothing to compare. Select the state with ':state(scrolled)'. The page is the window unless 'scroller' names the element that scrolls, for an app shell whose content scrolls inside a container. **Set 'hide-on-scroll' for a bar that moves out of the way.** Scrolling down past the bar's own height hides it, and scrolling up shows it again, as does focus moving into it. The custom state 'hidden' is on the host while it is hidden, and the styled tier slides a 'sticky' bar up out of view. **Set 'fold-below' to fold the middle region on a narrow screen.** Below that many pixels of the bar's own width, the middle region is hidden behind a toggle at the end of the bar, named by 'menu-label'. The toggle says whether the region is open with 'aria-expanded', and the region opens below the row. Escape closes it and puts focus back on the toggle. The custom state 'folded' is on the host while the bar is that narrow, and 'open' while the folded region is open. A server serves the bar unfolded, and the browser folds it once it has measured it. The host is the page's 'banner' landmark. Placed inside 'main', 'article', 'aside', 'nav' or 'section', it is a plain box instead, as a native '<header>' is there, so a header inside a card or a pane does not add a second banner. The ancestors are read as the accessibility tree reads them, through the slots that take the header in, so one slotted into a component that draws a '<nav>', such as 'Navigation', is not a banner either. A server cannot see the ancestors, so it serves the banner and the browser corrects it when the element connects. */
|
|
16807
17060
|
"helix-headless-app-header": DefineCustomElement<
|
|
16808
17061
|
HelixHeadlessAppHeader,
|
|
16809
17062
|
HelixHeadlessAppHeaderVueProps,
|
|
16810
17063
|
HelixHeadlessAppHeaderVueEvents
|
|
16811
17064
|
>;
|
|
16812
|
-
/** Shows how a total is made up. Each numeric column of the table is a part, the parts add up to the total at each reading, and the top edge is that total. The thickness of a band is that part's amount. Use 'LineChart' with 'area' to show how each series moved: it fills each series from the floor separately, so the fills overlap. Use this chart to show the composition: it stacks the series. **The value axis always starts at zero**, as in 'BarChart', because a band's thickness is its value. For the same reason there is no streamgraph mode, which moves the baseline. To show how the composition changed, set 'share'. Band edges are straight between readings by default. A smoothed curve through one sum can dip below the curve through the sum beneath it, which draws a part as less than zero. Other curves: - 'curve="smooth"': for a stack read as an overall shape. - 'curve="step"': holds each reading and jumps at the midpoint, so stacked edges stay in order, as with 'straight'. Use it for a quantity that changes at a moment, such as a headcount or a price. 'share' draws each reading as 100 percent, so the top edge is flat and the bands show each part's share. Use it to see which part grew. The default shows whether the total grew. 'overlap' draws every band from zero, one in front of another, so each part's own amount is its height: the first column is in front. Use it to compare the parts with each other; the scale then fits the largest part rather than the total. 'value-axis' draws the scale's numbers beside the plot, at the levels 'gridlines' rules: amounts in 'locale', or percentages under 'share'. The drawing is hidden from screen readers. The text summary gives the latest reading's total and each part's share of it, and the table beside the chart has every number. **The plot is read by key.** It takes focus, named by 'label' or the caption. The left and right arrows move from reading to reading, Home and End go to the first and the last, and the up and down arrows move among the series of a reading. The tooltip follows, the 'live' part says the reading in words, and Escape puts the tooltip away. Every numeric column is a part, so leave a total column out of the table the chart reads, or it is counted twice. A negative reading is drawn as zero. **A tap shows the reading under it**, and keeps it until a tap lands elsewhere. 'helix-reading-change' says each move of the reading, by pointer, tap or key, and 'helix-reading-press' says a reading was clicked, tapped, or pressed with Enter or Space, for a page that opens what a reading stands for. */
|
|
17065
|
+
/** Shows how a total is made up. Each numeric column of the table is a part, the parts add up to the total at each reading, and the top edge is that total. The thickness of a band is that part's amount. Use 'LineChart' with 'area' to show how each series moved: it fills each series from the floor separately, so the fills overlap. Use this chart to show the composition: it stacks the series. **The value axis always starts at zero**, as in 'BarChart', because a band's thickness is its value. For the same reason there is no streamgraph mode, which moves the baseline. To show how the composition changed, set 'share'. Band edges are straight between readings by default. A smoothed curve through one sum can dip below the curve through the sum beneath it, which draws a part as less than zero. Other curves: - 'curve="smooth"': for a stack read as an overall shape. - 'curve="step"': holds each reading and jumps at the midpoint, so stacked edges stay in order, as with 'straight'. Use it for a quantity that changes at a moment, such as a headcount or a price. 'share' draws each reading as 100 percent, so the top edge is flat and the bands show each part's share. Use it to see which part grew. The default shows whether the total grew. 'overlap' draws every band from zero, one in front of another, so each part's own amount is its height: the first column is in front. Use it to compare the parts with each other; the scale then fits the largest part rather than the total. 'value-axis' draws the scale's numbers beside the plot, at the levels 'gridlines' rules: amounts in 'locale', or percentages under 'share'. The drawing is hidden from screen readers. The text summary gives the latest reading's total and each part's share of it, and the table beside the chart has every number. **The plot is read by key.** It takes focus, named by 'label' or the caption. The left and right arrows move from reading to reading, Home and End go to the first and the last, and the up and down arrows move among the series of a reading. The tooltip follows, the 'live' part says the reading in words, and Escape puts the tooltip away. Every numeric column is a part, so leave a total column out of the table the chart reads, or it is counted twice. A negative reading is drawn as zero. **A tap shows the reading under it**, and keeps it until a tap lands elsewhere. 'helix-reading-change' says each move of the reading, by pointer, tap or key, and 'helix-reading-press' says a reading was clicked, tapped, or pressed with Enter or Space, for a page that opens what a reading stands for. **'data' takes the readings as data** where the page has no table to point 'for' at, in a table's shape: the column headings, then one row per reading with its label first. A table is still the better source where the page can show one, since it reads before any script runs. **A chart with nothing to draw says so.** A table with no readings shows 'empty-text', "No readings", in the plot, and 'loading' shows 'loading-text' there until readings arrive. The 'empty' and 'loading' slots take markup in their place, such as a link to add the first reading. */
|
|
16813
17066
|
"helix-headless-area-chart": DefineCustomElement<
|
|
16814
17067
|
HelixHeadlessAreaChart,
|
|
16815
17068
|
HelixHeadlessAreaChartVueProps,
|
|
@@ -16833,7 +17086,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16833
17086
|
HelixHeadlessBadgeVueProps,
|
|
16834
17087
|
HelixHeadlessBadgeVueEvents
|
|
16835
17088
|
>;
|
|
16836
|
-
/** Every bar is measured from zero, and no property changes the baseline, because a bar's length is its value. To show the differences between values, use a line chart. The labels are HTML beside the drawing. An '<svg>' that fills its box scales the text inside it: the same 'font-size' renders at 10px in a narrow chart and 43px in a wide one, and SVG has no setting that keeps text at one size the way 'vector-effect' does for strokes. The table is the accessible representation, and the drawing is hidden from screen readers, so they get the numbers themselves. The 'summary' part names the chart, from 'label' or the table's caption, and gives each series' highest reading. **The plot is read by key.** It takes focus, named by 'label' or the caption. The arrows along the categories move from one to the next, which is left and right for columns and up and down for 'orientation="horizontal"'. Home and End go to the first and the last, and the other pair of arrows moves among the series of a category. The tooltip follows, the 'live' part says the reading in words, and Escape puts the tooltip away. The component writes the custom properties below with numbers it computes, and the stylesheet that draws the chart reads them. Do not set them yourself. **A tap shows the reading under it**, and keeps it until a tap lands elsewhere. 'helix-reading-change' says each move of the reading, by pointer, tap or key, and 'helix-reading-press' says a reading was clicked, tapped, or pressed with Enter or Space, for a page that opens what a reading stands for. */
|
|
17089
|
+
/** Every bar is measured from zero, and no property changes the baseline, because a bar's length is its value. To show the differences between values, use a line chart. The labels are HTML beside the drawing. An '<svg>' that fills its box scales the text inside it: the same 'font-size' renders at 10px in a narrow chart and 43px in a wide one, and SVG has no setting that keeps text at one size the way 'vector-effect' does for strokes. The table is the accessible representation, and the drawing is hidden from screen readers, so they get the numbers themselves. The 'summary' part names the chart, from 'label' or the table's caption, and gives each series' highest reading. **The plot is read by key.** It takes focus, named by 'label' or the caption. The arrows along the categories move from one to the next, which is left and right for columns and up and down for 'orientation="horizontal"'. Home and End go to the first and the last, and the other pair of arrows moves among the series of a category. The tooltip follows, the 'live' part says the reading in words, and Escape puts the tooltip away. The component writes the custom properties below with numbers it computes, and the stylesheet that draws the chart reads them. Do not set them yourself. **A tap shows the reading under it**, and keeps it until a tap lands elsewhere. 'helix-reading-change' says each move of the reading, by pointer, tap or key, and 'helix-reading-press' says a reading was clicked, tapped, or pressed with Enter or Space, for a page that opens what a reading stands for. **'data' takes the readings as data** where the page has no table to point 'for' at, in a table's shape: the column headings, then one row per reading with its label first. A table is still the better source where the page can show one, since it reads before any script runs. **A chart with nothing to draw says so.** A table with no readings shows 'empty-text', "No readings", in the plot, and 'loading' shows 'loading-text' there until readings arrive. The 'empty' and 'loading' slots take markup in their place, such as a link to add the first reading. */
|
|
16837
17090
|
"helix-headless-bar-chart": DefineCustomElement<
|
|
16838
17091
|
HelixHeadlessBarChart,
|
|
16839
17092
|
HelixHeadlessBarChartVueProps,
|
|
@@ -16845,13 +17098,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
16845
17098
|
HelixHeadlessBlockquoteVueProps,
|
|
16846
17099
|
HelixHeadlessBlockquoteVueEvents
|
|
16847
17100
|
>;
|
|
16848
|
-
/** Each crumb renders its separator and sets its list-item role. It hides its own separator with ':host(:first-child)', so the trail needs no index from the parent. Set 'href' to make the whole crumb an anchor, which works with Enter, middle click, and the status bar, and before any JavaScript runs. A router cannot reach an anchor inside a shadow root, so intercept the click for client-side navigation, as with 'Tree.Item' and 'List.Item'. A trail that collapses also reads 'href' to rebuild its hidden crumbs elsewhere. Without 'href', the crumb renders a plain '<span>' around what you slot, including your own anchor. The current page is plain text, and 'aria-current="page"' on the host conveys the position. */
|
|
17101
|
+
/** Each crumb renders its separator and sets its list-item role. It hides its own separator with ':host(:first-child)', so the trail needs no index from the parent. Set 'href' to make the whole crumb an anchor, which works with Enter, middle click, and the status bar, and before any JavaScript runs. A router cannot reach an anchor inside a shadow root, so intercept the click for client-side navigation, as with 'Tree.Item' and 'List.Item'. A trail that collapses also reads 'href' to rebuild its hidden crumbs elsewhere. Without 'href', the crumb renders a plain '<span>' around what you slot, including your own anchor. The current page is plain text, and 'aria-current="page"' on the host conveys the position. In a trail where no crumb is 'current', the last one is said to be the current page, and keeps its link. An 'aria-current' you write on the host, such as 'aria-current="location"', replaces the one the crumb gives itself. */
|
|
16849
17102
|
"helix-headless-breadcrumb": DefineCustomElement<
|
|
16850
17103
|
HelixHeadlessBreadcrumb,
|
|
16851
17104
|
HelixHeadlessBreadcrumbVueProps,
|
|
16852
17105
|
HelixHeadlessBreadcrumbVueEvents
|
|
16853
17106
|
>;
|
|
16854
|
-
/** The host is the navigation landmark, named "Breadcrumb" by default. An 'aria-label' on the host names the trail instead, and so does 'label'. When a page has more than one navigation landmark, screen reader users choose between them by name. The '<ol>' has an explicit 'role="list"', because Safari removes list semantics from a list with 'list-style: none', and the trail always hides its markers. The items are slotted directly, so they are '<ol>' children in the flat tree, and each item sets 'role="listitem"' on itself. The trail does not measure itself, and you write its overflow in markup: put the crumb that holds the folded items where the gap should appear. A trail built from data, such as a router's matched routes, takes 'items': an array of '{ label, href }', drawn as crumbs in order, the last one as the current page. Slotted crumbs follow them. Use one way or the other in a trail. With 'max-items', a trail drawn from 'items' that is longer folds its middle into one crumb: the first crumb, a button, then the last 'max-items' less one. The button is named by 'expand-label' and shows the whole trail, moving focus to the first crumb it brought back. A new 'items' folds again. Slotted crumbs do not fold; write the folded crumb where the gap should be. */
|
|
17107
|
+
/** The host is the navigation landmark, named "Breadcrumb" by default. An 'aria-label' on the host names the trail instead, and so does 'label'. When a page has more than one navigation landmark, screen reader users choose between them by name. The '<ol>' has an explicit 'role="list"', because Safari removes list semantics from a list with 'list-style: none', and the trail always hides its markers. The items are slotted directly, so they are '<ol>' children in the flat tree, and each item sets 'role="listitem"' on itself. Where no slotted crumb is 'current', the last one is said to be the current page. The trail does not measure itself, and you write its overflow in markup: put the crumb that holds the folded items where the gap should appear. A trail built from data, such as a router's matched routes, takes 'items': an array of '{ label, href }', drawn as crumbs in order, the last one as the current page. Slotted crumbs follow them. Use one way or the other in a trail. With 'max-items', a trail drawn from 'items' that is longer folds its middle into one crumb: the first crumb, a button, then the last 'max-items' less one. The button is named by 'expand-label' and shows the whole trail, moving focus to the first crumb it brought back. A new 'items' folds again. Slotted crumbs do not fold; write the folded crumb where the gap should be. **Keyboard.** Each crumb with an 'href' is a link and one tab stop, and Enter follows it. The current page and the separators are not in the tab order. In a folded trail, Enter or Space on the fold's button shows the whole trail and moves focus to the first crumb it brought back. */
|
|
16855
17108
|
"helix-headless-breadcrumbs": DefineCustomElement<
|
|
16856
17109
|
HelixHeadlessBreadcrumbs,
|
|
16857
17110
|
HelixHeadlessBreadcrumbsVueProps,
|
|
@@ -17007,7 +17260,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17007
17260
|
HelixHeadlessDescriptionListVueProps,
|
|
17008
17261
|
HelixHeadlessDescriptionListVueEvents
|
|
17009
17262
|
>;
|
|
17010
|
-
/** Renders a native '<dialog>' opened with 'showModal()'. The platform provides: - the top layer, so the dialog is above everything whatever the 'z-index' - a backdrop - closing with Escape - an inert page behind the dialog, unreachable by pointer, keyboard, or virtual cursor The dialog adds one thing to those: 'Tab' from its last control goes to its first, and 'Shift+Tab' from its first to its last. A native modal lets 'Tab' past its last control out to the browser's own controls. 'open' calls 'showModal()', and every way the dialog closes goes through 'requestOpen'. A native dialog closes three ways: the property, Escape, and a '<form method="dialog">' submit. Routing all three through 'requestOpen' keeps your state in step, so the dialog never closes while your state still says it is open, which would leave it impossible to reopen. The dialog's name is 'label' when you set it. Otherwise it is the heading in the 'header' slot, or the elements an 'aria-labelledby' on the host names, and 'fallback-label' where nothing names it. While it is open, the page behind it does not scroll. The dialog is described by the words at the start of its body: the elements in the default slot before the first one that is or holds a control. A question above a form describes the dialog, and the form does not. A Helix component that draws words and no control, such as 'Text', counts as words. An 'aria-describedby' on the host replaces it. Set 'alert' for a dialog that interrupts to ask for an answer, such as a confirmation before a deletion. It is an 'alertdialog', which a screen reader announces with its description as it opens. Set 'dismissible' to draw a close control, labeled by 'dismiss-label'. */
|
|
17263
|
+
/** Renders a native '<dialog>' opened with 'showModal()'. The platform provides: - the top layer, so the dialog is above everything whatever the 'z-index' - a backdrop - closing with Escape - an inert page behind the dialog, unreachable by pointer, keyboard, or virtual cursor The dialog adds one thing to those: 'Tab' from its last control goes to its first, and 'Shift+Tab' from its first to its last. A native modal lets 'Tab' past its last control out to the browser's own controls. 'open' calls 'showModal()', and every way the dialog closes goes through 'requestOpen'. A native dialog closes three ways: the property, Escape, and a '<form method="dialog">' submit. Routing all three through 'requestOpen' keeps your state in step, so the dialog never closes while your state still says it is open, which would leave it impossible to reopen. The dialog's name is 'label' when you set it. Otherwise it is the heading in the 'header' slot, or the elements an 'aria-labelledby' on the host names, and 'fallback-label' where nothing names it. While it is open, the page behind it does not scroll. The dialog is described by the words at the start of its body: the elements in the default slot before the first one that is or holds a control. A question above a form describes the dialog, and the form does not. A Helix component that draws words and no control, such as 'Text', counts as words. An 'aria-describedby' on the host replaces it. Set 'alert' for a dialog that interrupts to ask for an answer, such as a confirmation before a deletion. It is an 'alertdialog', which a screen reader announces with its description as it opens. Set 'dismissible' to draw a close control, labeled by 'dismiss-label'. **Keyboard.** Opening moves focus to the first control in the dialog. | Key | What it does | |---|---| | Tab, Shift+Tab | Moves through the controls in the dialog, from the last round to the first and from the first round to the last. | | Escape | Asks to close the dialog. A 'helix-before-close' listener can refuse, and 'persistent' or 'closedby="none"' keeps it open. | | Enter, Space | On the close control, closes the dialog. | Closing puts focus back on the element that had it before the dialog opened. */
|
|
17011
17264
|
"helix-headless-dialog": DefineCustomElement<
|
|
17012
17265
|
HelixHeadlessDialog,
|
|
17013
17266
|
HelixHeadlessDialogVueProps,
|
|
@@ -17025,7 +17278,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17025
17278
|
HelixHeadlessDonutChartVueProps,
|
|
17026
17279
|
HelixHeadlessDonutChartVueEvents
|
|
17027
17280
|
>;
|
|
17028
|
-
/** Uses 'MixinControllerOpen', so 'open', 'defaultOpen', and the 'helix-before-open' and 'helix-before-close' events work the same way as on an accordion item. The drawer is modal by default, which means four things: - focus is trapped inside: 'Tab' from the last control goes to the first, and 'Shift+Tab' from the first to the last, as in 'Dialog' - Escape and a press outside close it - the page behind is covered - the page behind does not scroll A drawer with 'modal="false"' leaves the page usable and still closes on Escape, in a browser without 'closedby' as well. **A touch or a pen swipes it away**, toward the edge it came from, resolved against the writing direction. A swipe past halfway, or a quick one, closes it through the same request as every other way out. 'snap-points' lists the fractions of the panel a reader can leave on screen, such as '0.5 1' for a sheet that rests half open: it opens at the smallest, and a swipe settles at the nearest. While a swipe moves the panel, the distance is written on it as '--drawer-swipe-x' and '--drawer-swipe-y'. 'swipe="false"' turns swiping off. 'snap' is the snap point the panel rests at, and ':state(snapped)' is on the host while that is less than the whole panel. 'snapTo()' moves it to another. **Focus moving to a control past the window's edge opens the panel to its largest snap point**, so a reader moving through a half open sheet with 'Tab' never lands on a control they cannot see. Set 'dismissible' to draw a close control in the corner, labeled by 'dismiss-label', as 'Dialog' draws one. The panel's name is 'label' when you set it. Otherwise it is the heading in the 'header' slot, or the elements an 'aria-labelledby' on the host names, and 'fallback-label' where nothing names it. Content stays mounted when the drawer is closed, so it is in the server markup and can animate. A closed '<dialog>' is already out of the tab order and the accessibility tree, so the drawer does not write 'inert'. The 'role', 'aria-modal', and the scrim also come from the '<dialog>' element. 'drawer-root.ssr.spec.ts' checks that the panel has no hand-written 'inert' or 'role'. Open the drawer declaratively with the platform's invoker attributes: '''html <helix-headless-button commandfor="nav" command="--toggle">Menu</helix-headless-button> <helix-headless-drawer id="nav">…</helix-headless-drawer> ''' */
|
|
17281
|
+
/** Uses 'MixinControllerOpen', so 'open', 'defaultOpen', and the 'helix-before-open' and 'helix-before-close' events work the same way as on an accordion item. The drawer is modal by default, which means four things: - focus is trapped inside: 'Tab' from the last control goes to the first, and 'Shift+Tab' from the first to the last, as in 'Dialog' - Escape and a press outside close it - the page behind is covered - the page behind does not scroll A drawer with 'modal="false"' leaves the page usable and still closes on Escape, in a browser without 'closedby' as well. Set 'persistent' for a drawer that has to be answered: Escape, a press outside, and a swipe leave it open, and the close control and 'close()' still close it. 'closedby="none"' keeps it open on all three as well, and 'closedby="closerequest"' keeps it open on a press outside. **A touch or a pen swipes it away**, toward the edge it came from, resolved against the writing direction. A swipe past halfway, or a quick one, closes it through the same request as every other way out. 'snap-points' lists the fractions of the panel a reader can leave on screen, such as '0.5 1' for a sheet that rests half open: it opens at the smallest, and a swipe settles at the nearest. While a swipe moves the panel, the distance is written on it as '--drawer-swipe-x' and '--drawer-swipe-y'. 'swipe="false"' turns swiping off. 'snap' is the snap point the panel rests at, and ':state(snapped)' is on the host while that is less than the whole panel. 'snapTo()' moves it to another. **Focus moving to a control past the window's edge opens the panel to its largest snap point**, so a reader moving through a half open sheet with 'Tab' never lands on a control they cannot see. Set 'dismissible' to draw a close control in the corner, labeled by 'dismiss-label', as 'Dialog' draws one. The panel's name is 'label' when you set it. Otherwise it is the heading in the 'header' slot, or the elements an 'aria-labelledby' on the host names, and 'fallback-label' where nothing names it. A development build warns when a drawer opens with nothing but 'fallback-label' to name it. The panel is described by the words at the start of its body, as 'Dialog' is: the elements in the default slot before the first one that is or holds a control. An 'aria-describedby' on the host replaces it. **Keyboard.** Opening moves focus to the first control in the panel. | Key | What it does | |---|---| | Tab, Shift+Tab | In a modal drawer, moves through the controls in the panel, from the last round to the first and from the first round to the last. In a drawer that is not modal, moves on to the page. | | Escape | Asks to close the drawer. A 'helix-before-close' listener can refuse, and 'persistent' or 'closedby="none"' keeps it open. | | Enter, Space | On the close control, closes the drawer. | Content stays mounted when the drawer is closed, so it is in the server markup and can animate. A closed '<dialog>' is already out of the tab order and the accessibility tree, so the drawer does not write 'inert'. The 'role', 'aria-modal', and the scrim also come from the '<dialog>' element. 'drawer-root.ssr.spec.ts' checks that the panel has no hand-written 'inert' or 'role'. Open the drawer declaratively with the platform's invoker attributes: '''html <helix-headless-button commandfor="nav" command="--toggle">Menu</helix-headless-button> <helix-headless-drawer id="nav">…</helix-headless-drawer> ''' */
|
|
17029
17282
|
"helix-headless-drawer": DefineCustomElement<
|
|
17030
17283
|
HelixHeadlessDrawer,
|
|
17031
17284
|
HelixHeadlessDrawerVueProps,
|
|
@@ -17145,13 +17398,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17145
17398
|
HelixHeadlessLightboxItemVueProps,
|
|
17146
17399
|
HelixHeadlessLightboxItemVueEvents
|
|
17147
17400
|
>;
|
|
17148
|
-
/** The frame around content you open, such as a picture, a video frame, or a chart. The lightbox draws no content of its own. It provides the frame, the keyboard behavior, and text that states the current position in the set. The modal behavior comes from a native '<dialog>' opened with 'showModal()', which provides the top layer, a backdrop, Escape to close, and 'inert' on the rest of the document. Every way of closing goes through 'requestOpen', as in 'Dialog' and 'Drawer'. A lightbox shows one item at a time and has no scrolling track, so 'active' holds the current item, as in 'Tabs'. The arrow keys change the item while focus stays in the dialog. Set 'controls' for the viewer's own previous, next and close controls, named by 'previous-label', 'next-label' and 'dismiss-label', whose glyphs you can replace in the 'previous-icon', 'next-icon' and 'dismiss-icon' slots. Without it, compose the chrome yourself in the 'header' and 'footer' slots, with buttons that send '--previous', '--next' and '--close'. **Set 'max-zoom' to let a reader zoom into the shown item**, such as '3'. Two fingers pinch it, a double click or a double tap zooms all the way in about the point pressed and back out, and once zoomed one pointer drags it about. '+' and '-' zoom in and out from the keyboard, and '0' puts it back. The scale and the offset are on the 'viewport' part as '--lightbox-zoom', '--lightbox-pan-x' and '--lightbox-pan-y', written only while zoomed, and a swipe moves to the next item only while the item is at its own size. With 'controls', the viewer also draws zoom-out and zoom-in controls, for a pointer with no wheel and no second finger. Once a reader stops zooming, the live region says the new scale in the words of 'zoom-status-label', such as "Zoomed to 150%". Each item is a slide: a 'group' with the role description in 'slide-role-label', named by its 'label' or by 'slide-label'. A touch or a pen swiped across the picture shows the next or the previous item, the way the line of text runs. The chrome hides when there is no input, through 'IdleController', and comes back on a pointer move, a key press, or a focus. It stays while focus is on a control in the header or the footer, so a keyboard reader is never left on a control that has gone. 'fullscreen' uses 'FullscreenController', as 'Video' does. While the viewer is open, the page behind it does not scroll. */
|
|
17401
|
+
/** The frame around content you open, such as a picture, a video frame, or a chart. The lightbox draws no content of its own. It provides the frame, the keyboard behavior, and text that states the current position in the set. The modal behavior comes from a native '<dialog>' opened with 'showModal()', which provides the top layer, a backdrop, Escape to close, and 'inert' on the rest of the document. Every way of closing goes through 'requestOpen', as in 'Dialog' and 'Drawer'. A lightbox shows one item at a time and has no scrolling track, so 'active' holds the current item, as in 'Tabs'. The arrow keys change the item while focus stays in the dialog. Set 'controls' for the viewer's own previous, next and close controls, named by 'previous-label', 'next-label' and 'dismiss-label', whose glyphs you can replace in the 'previous-icon', 'next-icon' and 'dismiss-icon' slots. Without it, compose the chrome yourself in the 'header' and 'footer' slots, with buttons that send '--previous', '--next' and '--close'. **Set 'max-zoom' to let a reader zoom into the shown item**, such as '3'. Two fingers pinch it, a double click or a double tap zooms all the way in about the point pressed and back out, and once zoomed one pointer drags it about. '+' and '-' zoom in and out from the keyboard, and '0' puts it back. The scale and the offset are on the 'viewport' part as '--lightbox-zoom', '--lightbox-pan-x' and '--lightbox-pan-y', written only while zoomed, and a swipe moves to the next item only while the item is at its own size. With 'controls', the viewer also draws zoom-out and zoom-in controls, for a pointer with no wheel and no second finger. Once a reader stops zooming, the live region says the new scale in the words of 'zoom-status-label', such as "Zoomed to 150%". Each item is a slide: a 'group' with the role description in 'slide-role-label', named by its 'label' or by 'slide-label'. A touch or a pen swiped across the picture shows the next or the previous item, the way the line of text runs. A press on the empty area around the item closes the viewer, as a press on the backdrop does. Under 'max-zoom', a press beside the item zooms on a double press and closes nothing, and only the space outside the viewport closes the viewer. A press that dragged closes nothing. **Keyboard.** Opening moves focus to the viewer itself, which a screen reader names. | Key | What it does | |---|---| | 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. | | Left, Up | Shows the previous item. | | Home, End | Shows the first or the last item. | | '+', '-', '0' | Zooms in, zooms out, and puts the item back at its own size, where 'max-zoom' allows zooming. | | 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. | | Escape | Closes the viewer. A 'helix-before-close' listener can refuse. | A development build warns when a viewer opens with no 'label'. The chrome hides when there is no input, through 'IdleController', and comes back on a pointer move, a key press, or a focus. It stays while focus is on a control in the header or the footer, so a keyboard reader is never left on a control that has gone. 'fullscreen' uses 'FullscreenController', as 'Video' does. While the viewer is open, the page behind it does not scroll. */
|
|
17149
17402
|
"helix-headless-lightbox": DefineCustomElement<
|
|
17150
17403
|
HelixHeadlessLightbox,
|
|
17151
17404
|
HelixHeadlessLightboxVueProps,
|
|
17152
17405
|
HelixHeadlessLightboxVueEvents
|
|
17153
17406
|
>;
|
|
17154
|
-
/** A line chart shows the shape of each series: where the readings went. The scale covers the range of the data. Including zero in the range of a series that moves between 980 and 1020 would flatten the line into a rule across the top of the box. 'BarChart' always starts at zero, because a bar's length is its value. Set 'zero' when the distance from zero is the point. Every series shares one scale, as in the bar chart. 'dashed' names the series drawn as a dashed line, such as a forecast or a target beside the readings: 'dashed="Forecast"'. Each takes a 'line-dashed' part beside 'line'. 'area' fills each series down to the floor on its own, so the fills overlap. For a total made of parts, use 'Area Chart', which stacks the series so the top edge is the total and each band is a share. The labels are HTML beside the drawing, as in 'BarChart'. Text inside an '<svg>' that fills its box scales with the box, so the same 'font-size' can render at 10px in a narrow chart and 43px in a wide one. 'value-axis' draws the scale's numbers beside the plot, at the levels 'gridlines' rules, written in 'locale'. The table is the accessible representation, and the drawing is hidden from screen readers, who get the numbers. The 'summary' part names the chart, from 'label' or the table's caption, and gives each series' latest reading. **The plot is read by key.** It takes focus, named by 'label' or the caption. The left and right arrows move from reading to reading, Home and End go to the first and the last, and the up and down arrows move among the series of a reading. The tooltip follows, the 'live' part says the reading in words, and Escape puts the tooltip away. **A tap shows the reading under it**, and keeps it until a tap lands elsewhere. 'helix-reading-change' says each move of the reading, by pointer, tap or key, and 'helix-reading-press' says a reading was clicked, tapped, or pressed with Enter or Space, for a page that opens what a reading stands for. */
|
|
17407
|
+
/** A line chart shows the shape of each series: where the readings went. The scale covers the range of the data. Including zero in the range of a series that moves between 980 and 1020 would flatten the line into a rule across the top of the box. 'BarChart' always starts at zero, because a bar's length is its value. Set 'zero' when the distance from zero is the point. Every series shares one scale, as in the bar chart. 'dashed' names the series drawn as a dashed line, such as a forecast or a target beside the readings: 'dashed="Forecast"'. Each takes a 'line-dashed' part beside 'line'. 'area' fills each series down to the floor on its own, so the fills overlap. For a total made of parts, use 'Area Chart', which stacks the series so the top edge is the total and each band is a share. The labels are HTML beside the drawing, as in 'BarChart'. Text inside an '<svg>' that fills its box scales with the box, so the same 'font-size' can render at 10px in a narrow chart and 43px in a wide one. 'value-axis' draws the scale's numbers beside the plot, at the levels 'gridlines' rules, written in 'locale'. The table is the accessible representation, and the drawing is hidden from screen readers, who get the numbers. The 'summary' part names the chart, from 'label' or the table's caption, and gives each series' latest reading. **The plot is read by key.** It takes focus, named by 'label' or the caption. The left and right arrows move from reading to reading, Home and End go to the first and the last, and the up and down arrows move among the series of a reading. The tooltip follows, the 'live' part says the reading in words, and Escape puts the tooltip away. **A tap shows the reading under it**, and keeps it until a tap lands elsewhere. 'helix-reading-change' says each move of the reading, by pointer, tap or key, and 'helix-reading-press' says a reading was clicked, tapped, or pressed with Enter or Space, for a page that opens what a reading stands for. **'data' takes the readings as data** where the page has no table to point 'for' at, in a table's shape: the column headings, then one row per reading with its label first. A table is still the better source where the page can show one, since it reads before any script runs. **A chart with nothing to draw says so.** A table with no readings shows 'empty-text', "No readings", in the plot, and 'loading' shows 'loading-text' there until readings arrive. The 'empty' and 'loading' slots take markup in their place, such as a link to add the first reading. */
|
|
17155
17408
|
"helix-headless-line-chart": DefineCustomElement<
|
|
17156
17409
|
HelixHeadlessLineChart,
|
|
17157
17410
|
HelixHeadlessLineChartVueProps,
|
|
@@ -17175,7 +17428,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17175
17428
|
HelixHeadlessListboxVueProps,
|
|
17176
17429
|
HelixHeadlessListboxVueEvents
|
|
17177
17430
|
>;
|
|
17178
|
-
/** Draws two concentric circles: a track and a moving arc. The track shows the arc as a proportion of a whole, and costs one element. **The center is a slot, empty by default.** Put your logo there once, where your app wraps the loader. When nothing is slotted, nothing extra is rendered. Slotted content does not rotate. Only the arc moves, so a logo stays readable. The role is set on the host through 'ElementInternals'. A 'role' in the shadow root would leave the host itself without a role in the light DOM, and a 'role' attribute on the host would be missing from React server-rendered markup. **'for' names the region being loaded**, and the loader sets 'aria-busy="true"' on it for as long as the loader is on the page, so a screen reader waits for the region rather than reading it half filled. Two loaders in one region hold it busy until the last one leaves. A region drawn after the loader is marked when it arrives. **'delay' keeps a quick load from flashing a loader.** The loader stays hidden, and silent, for that many milliseconds, and appears only if the work is still going. While it waits it carries ':state(waiting)'. */
|
|
17431
|
+
/** Draws two concentric circles: a track and a moving arc. The track shows the arc as a proportion of a whole, and costs one element. **For work whose length is known, use 'Progress' with 'shape="ring"'.** It draws the same ring filled to the value, says the value as a progress bar does, and says when the work is complete. A loader claims no proportion, so it takes no value. **The center is a slot, empty by default.** Put your logo there once, where your app wraps the loader. When nothing is slotted, nothing extra is rendered. Slotted content does not rotate. Only the arc moves, so a logo stays readable. The role is set on the host through 'ElementInternals'. A 'role' in the shadow root would leave the host itself without a role in the light DOM, and a 'role' attribute on the host would be missing from React server-rendered markup. **'for' names the region being loaded**, and the loader sets 'aria-busy="true"' on it for as long as the loader is on the page, so a screen reader waits for the region rather than reading it half filled. Two loaders in one region hold it busy until the last one leaves. A region drawn after the loader is marked when it arrives. **'delay' keeps a quick load from flashing a loader.** The loader stays hidden, and silent, for that many milliseconds, and appears only if the work is still going. While it waits it carries ':state(waiting)'. */
|
|
17179
17432
|
"helix-headless-loader": DefineCustomElement<
|
|
17180
17433
|
HelixHeadlessLoader,
|
|
17181
17434
|
HelixHeadlessLoaderVueProps,
|
|
@@ -17277,7 +17530,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17277
17530
|
HelixHeadlessMeterVueProps,
|
|
17278
17531
|
HelixHeadlessMeterVueEvents
|
|
17279
17532
|
>;
|
|
17280
|
-
/** Renders a real '<nav>', the landmark that screen reader users jump to. Navigation is its own component, separate from 'AppHeader', so you can use it in a header, a footer, or a sidebar. **It renders no links.** Bring your own, mark the current one with 'aria-current="page"', and style them with the 'data-navigation-item' recipe. A router renders its own anchors and cannot render them inside the component's shadow root. The component moves a marker to the current item. It finds the current item by reading 'aria-current', so the attribute that screen readers announce also places the marker. Any value but 'false' counts, so a sidebar of sections on one page can mark the section in view with 'aria-current="location"'. Where several are marked, 'page' wins. Set 'orientation="vertical"' to stack the destinations in a column, for a sidebar. Set 'arrows' and the arrow keys move focus between the destinations, as Radix's navigation menu does: left and right along a row, up and down a column, Home and End to the ends. A 'Megamenu' among them is reached at its trigger. Tab still stops at every link, since a navigation is a list of links and not a single control, and the keys across the other axis are left to the page and to an open panel. */
|
|
17533
|
+
/** Renders a real '<nav>', the landmark that screen reader users jump to. Navigation is its own component, separate from 'AppHeader', so you can use it in a header, a footer, or a sidebar. **It renders no links.** Bring your own, mark the current one with 'aria-current="page"', and style them with the 'data-navigation-item' recipe. A router renders its own anchors and cannot render them inside the component's shadow root. The component moves a marker to the current item. It finds the current item by reading 'aria-current', so the attribute that screen readers announce also places the marker. Any value but 'false' counts, so a sidebar of sections on one page can mark the section in view with 'aria-current="location"'. Where several are marked, 'page' wins. **The destinations can be a list.** Slot a '<ul>' or an '<ol>' of '<li>' elements, each holding a link, and a screen reader says how many there are and where each one is, as in Radix's 'NavigationMenu.List'. The marker and the arrow keys work on the list items as they do on bare links. Give the list 'role="list"' as well, since Safari drops the semantics of a list drawn without bullets. Set 'orientation="vertical"' to stack the destinations in a column, for a sidebar. Set 'arrows' and the arrow keys move focus between the destinations, as Radix's navigation menu does: left and right along a row, up and down a column, Home and End to the ends. A 'Megamenu' among them is reached at its trigger. Tab still stops at every link, since a navigation is a list of links and not a single control, and the keys across the other axis are left to the page and to an open panel. */
|
|
17281
17534
|
"helix-headless-navigation": DefineCustomElement<
|
|
17282
17535
|
HelixHeadlessNavigation,
|
|
17283
17536
|
HelixHeadlessNavigationVueProps,
|
|
@@ -17295,7 +17548,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17295
17548
|
HelixHeadlessNotificationVueProps,
|
|
17296
17549
|
HelixHeadlessNotificationVueEvents
|
|
17297
17550
|
>;
|
|
17298
|
-
/** Notifications are slotted children. Each one is your own markup, with an avatar, a link, or a button in it. Feeds usually hold tens of items, so writing them out lets an item hold anything. The list does not virtualize. Windowing needs the list to own the data, and here you own it, so N notifications are N elements. For a feed of thousands, use a data table with a custom cell. Read state is reported to you. Marking read goes from the root to the item and from the item to you, so a canceled 'helix-read' changes nothing, and if you own 'read', nothing changes until you set it. 'unread' is derived from the items and written to an attribute, so a stylesheet and a badge can both use it without counting. **The feed is one 'Tab' stop for its rows.** Each row takes focus itself and is read by its label. 'ArrowDown' and 'ArrowUp' move to the next and the previous row, 'Home' and 'End' to the first and the last, and 'PageDown' and 'PageUp' move a row on or back from anywhere inside one, as in the APG feed pattern. The controls inside a row stay in the 'Tab' order. Set 'total' when the feed holds one page of a longer list, and each row says its place in the whole of it. **'load-more' adds a button after the list** that sends 'helix-load-more', for a feed that holds one page of a longer list. Append the next page, set 'loading' while it is on its way, and take 'load-more' off once there is nothing more. While the feed is loading the button stays, so focus stays on it, and it is 'aria-disabled' and sends nothing. **'load-error' says a page could not be fetched**, such as "Could not load notifications": it shows under the rows there are, in the 'error' part, in place of the empty and loading lines, and a screen reader hears it. Clear it when you ask again. */
|
|
17551
|
+
/** Notifications are slotted children. Each one is your own markup, with an avatar, a link, or a button in it. Feeds usually hold tens of items, so writing them out lets an item hold anything. The list does not virtualize. Windowing needs the list to own the data, and here you own it, so N notifications are N elements. For a feed of thousands, use a data table with a custom cell. Read state is reported to you. Marking read goes from the root to the item and from the item to you, so a canceled 'helix-read' changes nothing, and if you own 'read', nothing changes until you set it. 'unread' is derived from the items and written to an attribute, so a stylesheet and a badge can both use it without counting. **The feed is one 'Tab' stop for its rows.** Each row takes focus itself and is read by its label. 'ArrowDown' and 'ArrowUp' move to the next and the previous row, 'Home' and 'End' to the first and the last, and 'PageDown' and 'PageUp' move a row on or back from anywhere inside one, as in the APG feed pattern. The controls inside a row stay in the 'Tab' order. Set 'total' when the feed holds one page of a longer list, and each row says its place in the whole of it. **Keyboard.** | Key | What it does | |---|---| | Down, Up | On a row, moves to the next or the previous row. | | Home, End | On a row, moves to the first or the last row. | | Page Down, Page Up | From anywhere in a row, moves to the next or the previous row. | | Control+End | From anywhere in the feed, moves to the first control after it on the page. | | Control+Home | From anywhere in the feed, moves to the nearest control before it on the page. | | Tab | Moves through the controls in a row, and on out of the feed. | **'load-more' adds a button after the list** that sends 'helix-load-more', for a feed that holds one page of a longer list. Append the next page, set 'loading' while it is on its way, and take 'load-more' off once there is nothing more. While the feed is loading the button stays, so focus stays on it, and it is 'aria-disabled' and sends nothing. **'load-error' says a page could not be fetched**, such as "Could not load notifications": it shows under the rows there are, in the 'error' part, in place of the empty and loading lines, and a screen reader hears it. Clear it when you ask again. */
|
|
17299
17552
|
"helix-headless-notifications": DefineCustomElement<
|
|
17300
17553
|
HelixHeadlessNotifications,
|
|
17301
17554
|
HelixHeadlessNotificationsVueProps,
|
|
@@ -17361,13 +17614,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17361
17614
|
HelixHeadlessPinInputVueProps,
|
|
17362
17615
|
HelixHeadlessPinInputVueEvents
|
|
17363
17616
|
>;
|
|
17364
|
-
/** Popover is the general overlay that the specific ones build on. 'Menu' holds commands, 'Select' holds options, and 'Tooltip' holds a description. Popover holds any content you put in it, so it has no keyboard handling of its own. The trigger is slotted and stays your own element. A Helix trigger is told whether the popover is open inside its own shadow root. On a plain element, such as a '<button>', the popover writes 'aria-expanded'
|
|
17617
|
+
/** Popover is the general overlay that the specific ones build on. 'Menu' holds commands, 'Select' holds options, and 'Tooltip' holds a description. Popover holds any content you put in it, so it has no keyboard handling of its own. The trigger is slotted and stays your own element. A Helix trigger is told whether the popover is open inside its own shadow root. On a plain element, such as a '<button>', the popover writes 'aria-expanded', from a frame after its own first render, or from the first press where that comes sooner. It never writes it where you wrote 'aria-expanded' yourself, and writes nothing else onto your markup. The panel is in the top layer through the popover API, so it needs no 'z-index', and an ancestor with 'overflow: hidden', 'transform', 'filter', or 'contain' does not clip or move it. It opens on click and from a command. 'command="--show"' and the related commands work as they do on 'Dialog' and 'Drawer', so a button anywhere on the page can open the popover with no script. **Opening moves focus into the panel**, to the first control in it, or to the panel itself where it holds none, and closing from inside gives it back to the trigger. It closes on Escape, on a press outside it, and when focus moves out of the trigger and the panel to somewhere else on the page. 'modal' keeps 'Tab' inside the panel while it is open and says so with 'aria-modal', for a panel that has to be answered before the page goes on. The rest of the page is hidden from screen readers with 'aria-hidden' while it is open, so the virtual cursor stays in the panel too. Without it the popover does not trap focus. The panel's name is 'label' when you set it. Otherwise it is the first heading in the panel, or the elements an 'aria-labelledby' on the host names. A development build warns when a popover opens with nothing but 'fallback-label' to name it. **Keyboard.** Opening moves focus to the first control in the panel, or to the panel where it holds none. | Key | What it does | |---|---| | Enter, Space | On the trigger, opens the panel, or closes it while it is open. | | Escape | Closes the panel and puts focus back on the trigger. | | Tab, Shift+Tab | Moves through the controls in the panel. Leaving the panel and the trigger closes it. With 'modal', moves from the last control round to the first and from the first round to the last. | 'arrow' draws a point on the panel's edge facing the trigger. The side the panel landed on is on the host as ':state(placed-top)' and its kin, and the trigger's width is on the panel as '--floating-anchor-inline-size', for a panel as wide as its trigger: '''css helix-popover::part(popover) { min-inline-size: var(--floating-anchor-inline-size); } ''' */
|
|
17365
17618
|
"helix-headless-popover": DefineCustomElement<
|
|
17366
17619
|
HelixHeadlessPopover,
|
|
17367
17620
|
HelixHeadlessPopoverVueProps,
|
|
17368
17621
|
HelixHeadlessPopoverVueEvents
|
|
17369
17622
|
>;
|
|
17370
|
-
/** Determinate by default. Set 'indeterminate' for a task whose total is not known yet. Use 'Loader' for a short wait or one with no place of its own on the page. The indeterminate bar runs a segment across the track and does not fill, so it shows that work is happening without claiming a proportion. 'aria-valuenow' is omitted in that state, which is the platform's signal for the same thing. The fill is a fraction of the track, written as a custom property. **Reaching 'max' is said and sent.** When the value arrives at 'max' from below, the bar says 'complete-label', "Complete" by default, in a polite 'live' region and sends 'helix-complete', so a reader hears that the work is done and a page can move on. A bar that starts full says nothing, and an empty 'complete-label' keeps it quiet. The 'complete' custom state is set while the bar is full. */
|
|
17623
|
+
/** Determinate by default. Set 'indeterminate' for a task whose total is not known yet. Use 'Loader' for a short wait or one with no place of its own on the page. The indeterminate bar runs a segment across the track and does not fill, so it shows that work is happening without claiming a proportion. 'aria-valuenow' is omitted in that state, which is the platform's signal for the same thing. The fill is a fraction of the track, written as a custom property. **The reading is said in the words the bar would show**: a whole percentage of the range in 'locale', the reading 'format-options' writes, or 'value-text', as 'aria-valuetext' beside the number. **Words set in the default slot are drawn on the bar**, or in the middle of a ring, such as '62%' or '3 of 8', and are what the bar says as its reading where 'value-text' is not set. While there are any, the bar carries ':state(content)', so a sheet can make room for them. **Reaching 'max' is said and sent.** When the value arrives at 'max' from below, the bar says 'complete-label', "Complete" by default, in a polite 'live' region and sends 'helix-complete', so a reader hears that the work is done and a page can move on. A bar that starts full says nothing, and an empty 'complete-label' keeps it quiet. The 'complete' custom state is set while the bar is full. */
|
|
17371
17624
|
"helix-headless-progress": DefineCustomElement<
|
|
17372
17625
|
HelixHeadlessProgress,
|
|
17373
17626
|
HelixHeadlessProgressVueProps,
|
|
@@ -17403,7 +17656,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17403
17656
|
HelixHeadlessRatingVueProps,
|
|
17404
17657
|
HelixHeadlessRatingVueEvents
|
|
17405
17658
|
>;
|
|
17406
|
-
/** A scatter chart shows how two measures relate. The table's first numeric column is measured across, every other numeric column is measured up, and each row is one point. A table of countries with an income column and a life expectancy column draws one point for each country. Each additional numeric column is another series, in its own color. Both axes are labeled, because both positions are values. The ticks sit at round numbers, and the range extends to them. 'trend' draws each series' line of best fit, by least squares, across the plot in the series' color. **'size-by' names a third measure, drawn as each point's size**, as a bubble chart does: 'size-by="Population"' takes that column out of the series and gives each point an area in proportion to its row's number there. The tooltip and the table still say the number. The summary gives each series' correlation coefficient and its number of points. The table has every number, and the drawing is hidden from screen readers. **The plot is read by key.** It takes focus, named by 'label' or the caption. The left and right arrows move from row to row in the table's order, Home and End go to the first and the last, and the up and down arrows move among the series of a row. The tooltip sits on that point, the 'live' part says the row in words, and Escape puts the tooltip away. Each point is a '<span>' placed by percentage over the drawing, as 'LineChart' places its end points, so points stay round when the drawing stretches. The plot runs left to right in every text direction, as a number line does. The plot, its axes, and the axis names sit in a 'plane' part with 'dir="ltr"'. The axis names carry 'dir="auto"', so a name in Arabic or Hebrew reads in its own direction. The summary and the tooltip bubble follow the page's direction. **A tap shows the reading under it**, and keeps it until a tap lands elsewhere. 'helix-reading-change' says each move of the reading, by pointer, tap or key, and 'helix-reading-press' says a reading was clicked, tapped, or pressed with Enter or Space, for a page that opens what a reading stands for. */
|
|
17659
|
+
/** A scatter chart shows how two measures relate. The table's first numeric column is measured across, every other numeric column is measured up, and each row is one point. A table of countries with an income column and a life expectancy column draws one point for each country. Each additional numeric column is another series, in its own color. Both axes are labeled, because both positions are values. The ticks sit at round numbers, and the range extends to them. 'trend' draws each series' line of best fit, by least squares, across the plot in the series' color. **'size-by' names a third measure, drawn as each point's size**, as a bubble chart does: 'size-by="Population"' takes that column out of the series and gives each point an area in proportion to its row's number there. The tooltip and the table still say the number. The summary gives each series' correlation coefficient and its number of points. The table has every number, and the drawing is hidden from screen readers. **The plot is read by key.** It takes focus, named by 'label' or the caption. The left and right arrows move from row to row in the table's order, Home and End go to the first and the last, and the up and down arrows move among the series of a row. The tooltip sits on that point, the 'live' part says the row in words, and Escape puts the tooltip away. Each point is a '<span>' placed by percentage over the drawing, as 'LineChart' places its end points, so points stay round when the drawing stretches. The plot runs left to right in every text direction, as a number line does. The plot, its axes, and the axis names sit in a 'plane' part with 'dir="ltr"'. The axis names carry 'dir="auto"', so a name in Arabic or Hebrew reads in its own direction. The summary and the tooltip bubble follow the page's direction. **A tap shows the reading under it**, and keeps it until a tap lands elsewhere. 'helix-reading-change' says each move of the reading, by pointer, tap or key, and 'helix-reading-press' says a reading was clicked, tapped, or pressed with Enter or Space, for a page that opens what a reading stands for. **'data' takes the readings as data** where the page has no table to point 'for' at, in a table's shape: the column headings, then one row per reading with its label first. A table is still the better source where the page can show one, since it reads before any script runs. **A chart with nothing to draw says so.** A table with no readings shows 'empty-text', "No readings", in the plot, and 'loading' shows 'loading-text' there until readings arrive. The 'empty' and 'loading' slots take markup in their place, such as a link to add the first reading. */
|
|
17407
17660
|
"helix-headless-scatter-chart": DefineCustomElement<
|
|
17408
17661
|
HelixHeadlessScatterChart,
|
|
17409
17662
|
HelixHeadlessScatterChartVueProps,
|
|
@@ -17463,7 +17716,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17463
17716
|
HelixHeadlessSpeedDialVueProps,
|
|
17464
17717
|
HelixHeadlessSpeedDialVueEvents
|
|
17465
17718
|
>;
|
|
17466
|
-
/** A splitter has one axis. Nest splitters to get two axes and three-pane or four-pane layouts. When a splitter is slotted into a pane of another at a right angle, a corner handle appears where the dividers cross. It shows the 'move' cursor, responds to both arrow axes, and a drag moves both dividers at once. The corner is added at 'firstUpdated' and is not in the server markup. Before it appears, both dividers work on their own. The divider has 'role="separator"' and 'aria-valuenow', with 'aria-valuetext' saying the start pane's share as a percentage in the nearest 'lang', or in the reader's locale where no 'lang' is set, and 'aria-controls' names the start pane. Drag it with a pointer or move it with the arrow keys, press 'Home' or 'End' to move it to its bounds, and press 'Enter' to collapse the start pane and open it again. A drag in progress is tracked as a state, so both dividers a corner moves stay lit for as long as they move. By default, 'min' and 'max' let the divider reach either edge, so you can drag a pane fully closed. Set them to limit the range. A pane can be collapsed, which is a separate state from a divider at the edge. 'collapsed' names the shut pane, 'start' or 'end', and the pane opens back to the position where the collapsing gesture began. A drag records that position on press, and every other way of collapsing records it in 'settle'. 'collapsed-size' keeps a sliver of the pane visible, such as a tab strip. Collapsing overrides 'min' and 'max'. */
|
|
17719
|
+
/** A splitter has one axis. Nest splitters to get two axes and three-pane or four-pane layouts. When a splitter is slotted into a pane of another at a right angle, a corner handle appears where the dividers cross. It shows the 'move' cursor, responds to both arrow axes, and a drag moves both dividers at once. The corner is added at 'firstUpdated' and is not in the server markup. Before it appears, both dividers work on their own. The divider has 'role="separator"' and 'aria-valuenow', with 'aria-valuetext' saying the start pane's share as a percentage in the nearest 'lang', or in the reader's locale where no 'lang' is set, and 'aria-controls' names the start pane. Drag it with a pointer or move it with the arrow keys, press 'Home' or 'End' to move it to its bounds, and press 'Enter' to collapse the start pane and open it again. A drag in progress is tracked as a state, so both dividers a corner moves stay lit for as long as they move. By default, 'min' and 'max' let the divider reach either edge, so you can drag a pane fully closed. Set them to limit the range. A pane can be collapsed, which is a separate state from a divider at the edge. 'collapsed' names the shut pane, 'start' or 'end', and the pane opens back to the position where the collapsing gesture began. A drag records that position on press, and every other way of collapsing records it in 'settle'. 'collapsed-size' keeps a sliver of the pane visible, such as a tab strip. Collapsing overrides 'min' and 'max'. Set 'primary' to the pane that keeps its size when the splitter's own size changes, such as a sidebar beside a window being resized. The other pane takes all of the change, as Web Awesome's split panel does. Without it, both panes keep their share. **Keyboard.** The divider is one tab stop. | Key | What it does | |---|---| | Left, Right | Moves a side-by-side divider by 'step'. On a right-to-left page, Left moves it toward the end. | | Up, Down | Moves a stacked divider by 'step'. | | Home, End | Moves the divider to its bounds. | | Enter | Collapses the start pane, and opens it again. | | F6 | Moves focus from one pane to the first control in the other, and from the divider to the start pane. | */
|
|
17467
17720
|
"helix-headless-splitter": DefineCustomElement<
|
|
17468
17721
|
HelixHeadlessSplitter,
|
|
17469
17722
|
HelixHeadlessSplitterVueProps,
|
|
@@ -17529,7 +17782,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17529
17782
|
HelixHeadlessTabPanelVueProps,
|
|
17530
17783
|
HelixHeadlessTabPanelVueEvents
|
|
17531
17784
|
>;
|
|
17532
|
-
/** Selection works through an event, the same as in the accordion and the tree. A tab dispatches 'helix-select', and the root pairs it with the panel of the same value. Nothing registers with anything, so tabs added later work with no extra setup. The tab list is a single tab stop, and the arrow keys move between tabs through 'KeyboardNavigationController', the same as in the radio and toggle groups. Selection follows focus, which suits a small set where showing a panel is cheap. Set 'manual' when showing a panel is expensive, so focus can move without selecting. 'orientation="vertical"' sets the tabs in a column beside the panels, and the tab list says 'aria-orientation="vertical"'. The arrow keys of both axes move between tabs either way. A tab with an 'href' is a link, for tabs that are pages of a site. Pressing it follows the link. Where any tab is a link, the arrow keys move focus without choosing on every tab of the list, as under 'manual', so arrowing past a tab never leaves the page and the list answers the keys one way. Mark the tab of the page you are on with 'selected', or set 'active' to its value. Each tab says which panel it controls through 'aria-controls', set as an element reference to the panel's host, where the engine has reflection. Keys, on the tab list: Left and Right Arrow move between tabs, and so do Up and Down; Home and End go to the first and the last. The horizontal arrows follow the reading direction, so on a right-to-left page Left moves on. Disabled tabs are passed over. Tab leaves the list for the selected panel, which is a tab stop only while it holds nothing focusable. The 'indicator' part moves to the selected tab and carries its place and size, so a mark of your own can be drawn there: style the part, or slot an element into 'indicator', which sits inside the part and reads the same properties. */
|
|
17785
|
+
/** Selection works through an event, the same as in the accordion and the tree. A tab dispatches 'helix-select', and the root pairs it with the panel of the same value. Nothing registers with anything, so tabs added later work with no extra setup. The tab list is a single tab stop, and the arrow keys move between tabs through 'KeyboardNavigationController', the same as in the radio and toggle groups. Selection follows focus, which suits a small set where showing a panel is cheap. Set 'manual' when showing a panel is expensive, so focus can move without selecting. 'orientation="vertical"' sets the tabs in a column beside the panels, and the tab list says 'aria-orientation="vertical"'. The arrow keys of both axes move between tabs either way. A tab with an 'href' is a link, for tabs that are pages of a site. Pressing it follows the link. Where any tab is a link, the arrow keys move focus without choosing on every tab of the list, as under 'manual', so arrowing past a tab never leaves the page and the list answers the keys one way. Mark the tab of the page you are on with 'selected', or set 'active' to its value. Each tab says which panel it controls through 'aria-controls', set as an element reference to the panel's host, where the engine has reflection. Keys, on the tab list: Left and Right Arrow move between tabs, and so do Up and Down; Home and End go to the first and the last. The horizontal arrows follow the reading direction, so on a right-to-left page Left moves on. Disabled tabs are passed over. Tab leaves the list for the selected panel, which is a tab stop only while it holds nothing focusable. **Keyboard.** | Key | What it does | |---|---| | 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. | | Left, Up | Moves to the tab before, from the first round to the last. | | Home, End | Moves to the first or the last tab. | | Enter, Space | Selects the tab with focus, or follows its link. | | Tab | Leaves the list for the selected panel. | Removing the selected tab selects the first enabled tab that is left, and 'active' says so, with 'helix-activate'. Where the removed tab had focus, focus moves to the tab now selected. The 'indicator' part moves to the selected tab and carries its place and size, so a mark of your own can be drawn there: style the part, or slot an element into 'indicator', which sits inside the part and reads the same properties. */
|
|
17533
17786
|
"helix-headless-tabs": DefineCustomElement<
|
|
17534
17787
|
HelixHeadlessTabs,
|
|
17535
17788
|
HelixHeadlessTabsVueProps,
|
|
@@ -17625,13 +17878,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17625
17878
|
HelixHeadlessTooltipVueProps,
|
|
17626
17879
|
HelixHeadlessTooltipVueEvents
|
|
17627
17880
|
>;
|
|
17628
|
-
/** The root holds the order of the stops: which stop is current, what Next and Back do, and when the tour is finished. Each stop holds its target, and you write all the text. **The spotlight is a shadow.** The scrim is a box the size of the current target with a very large 'box-shadow' spread, and the shadow paints the darkness. A 'clip-path' on a full-screen scrim breaks as soon as an element between the scrim and the viewport is transformed. The root measures the target's position in the browser. Nothing is measured on the server, because a tour starts only on request. 'open', 'default-open', 'helix-before-open', 'helix-before-close' and 'toggle' work as they do on 'Dialog'. Setting 'open' starts the run, and 'skip()' and 'requestOpen(false)' end it early. The box the light falls on is on the 'spotlight' part as '--tour-spotlight-x', '--tour-spotlight-y', '--tour-spotlight-width' and '--tour-spotlight-height', for a sheet that draws its own light, such as a ring around the target. Each stop is told its place in the run, from 'progress-label', such as "2 of 5". It describes the stop's panel, so a screen reader says it at every stop, and 'progress' draws it in the panel as well. A dialog or a floating stop, which has nothing to light, is shown over the 'backdrop' part. At a 'wait' stop the run waits for that stop's target to be on the page, and moves on by itself. **Focus follows the run.** Opening moves focus to the first stop's panel, and moving on from a control in a stop moves it to the next one. Ending the tour puts focus back on the element that had it when the tour opened, unless you have moved it somewhere else on the page. A stop does not trap focus, so you can still 'Tab' out to the element it describes. **The
|
|
17881
|
+
/** The root holds the order of the stops: which stop is current, what Next and Back do, and when the tour is finished. Each stop holds its target, and you write all the text. **The spotlight is a shadow.** The scrim is a box the size of the current target with a very large 'box-shadow' spread, and the shadow paints the darkness. A 'clip-path' on a full-screen scrim breaks as soon as an element between the scrim and the viewport is transformed. The root measures the target's position in the browser. Nothing is measured on the server, because a tour starts only on request. 'open', 'default-open', 'helix-before-open', 'helix-before-close' and 'toggle' work as they do on 'Dialog'. Setting 'open' starts the run, and 'skip()' and 'requestOpen(false)' end it early. The box the light falls on is on the 'spotlight' part as '--tour-spotlight-x', '--tour-spotlight-y', '--tour-spotlight-width' and '--tour-spotlight-height', for a sheet that draws its own light, such as a ring around the target. Each stop is told its place in the run, from 'progress-label', such as "2 of 5". It describes the stop's panel, so a screen reader says it at every stop, and 'progress' draws it in the panel as well. A dialog or a floating stop, which has nothing to light, is shown over the 'backdrop' part. At a 'wait' stop the run waits for that stop's target to be on the page, and moves on by itself. **Focus follows the run.** Opening moves focus to the first stop's panel, and moving on from a control in a stop moves it to the next one. Ending the tour puts focus back on the element that had it when the tour opened, unless you have moved it somewhere else on the page. A stop does not trap focus, so you can still 'Tab' out to the element it describes. **The target is scrolled into view** before its stop is shown, by the least distance that brings it on screen, so the stop that points at it is on screen too. **Keyboard.** Focus is on the current stop's panel, which is not in the 'Tab' order itself. | Key | What it does | |---|---| | Right | Goes to the next stop. On the last stop it does nothing, and Next finishes the tour. | | Left | Goes back to the previous stop. | | Escape | Skips the tour, and puts focus back where it was when the tour opened. | | Tab, Shift+Tab | Moves through the controls in the stop, and on out to the page. A stop does not trap focus. | | Enter, Space | On Back, Next, or Skip, presses it. | The arrow that points the way the line runs goes on, and the other goes back, so on a right-to-left page Left goes on and Right goes back. A text field in a stop keeps its own arrows. The tour is a region named by 'label' while it runs. A development build warns when a tour opens with no 'label'. */
|
|
17629
17882
|
"helix-headless-tour": DefineCustomElement<
|
|
17630
17883
|
HelixHeadlessTour,
|
|
17631
17884
|
HelixHeadlessTourVueProps,
|
|
17632
17885
|
HelixHeadlessTourVueEvents
|
|
17633
17886
|
>;
|
|
17634
|
-
/** A stop names its target with 'for' and holds the content you put in it. The stop handles three things: - **Placement.** The panel is anchored to the target by the same floating positioning as the other Helix overlays. - **Stacking.** The panel is a popover, so it is in the top layer and shows above dialogs, scrolling regions, and other stacking contexts. - **Visibility.** The stop shows when it is 'current', which the root sets. Put any content in the stop, such as a 'Card', or a heading and a line of text. The 'heading' and 'description' slots are optional places for the title and the line under it, which then name and describe the panel. **A stop has a type.** Without one it is a bubble pointing at its target. 'type="dialog"' is a panel in the middle of the window, over a backdrop, for a welcome or a summary with nothing to point at. 'type="floating"' is a panel in a corner of the window, which the styled tier puts at the end of the line, for a note that points at nothing in particular. 'type="wait"' shows nothing: the tour waits for the element 'for' names to be on the page, such as a menu the reader has to open, and moves on by itself. **The buttons are slot fallback.** With nothing in the 'actions' slot, you get Back, Next, and Skip, already wired. Slot your own 'actions' and drive them with 'next()', 'back()', and 'skip()' on the root. **'for' is an id, as with 'Tooltip'**, so you can point at a target elsewhere on the page from markup. It resolves against the stop's root node, so a stop inside a shadow tree points at a target in that tree. The panel is a 'group', and a 'dialog' for a dialog stop, only while the stop is shown. It is named by the 'heading' slot, then by the first heading in the content, then by 'label', and otherwise by its place in the tour. It is described by the 'description' slot and by its place, such as "2 of 5", so a screen reader says where the reader is at every stop. 'focus()' moves focus to the panel, which is what the tour does when it opens or moves on. */
|
|
17887
|
+
/** A stop names its target with 'for' and holds the content you put in it. The stop handles three things: - **Placement.** The panel is anchored to the target by the same floating positioning as the other Helix overlays. - **Stacking.** The panel is a popover, so it is in the top layer and shows above dialogs, scrolling regions, and other stacking contexts. - **Visibility.** The stop shows when it is 'current', which the root sets. Put any content in the stop, such as a 'Card', or a heading and a line of text. The 'heading' and 'description' slots are optional places for the title and the line under it, which then name and describe the panel. **A stop has a type.** Without one it is a bubble pointing at its target. 'type="dialog"' is a panel in the middle of the window, over a backdrop, for a welcome or a summary with nothing to point at. 'type="floating"' is a panel in a corner of the window, which the styled tier puts at the end of the line, for a note that points at nothing in particular. 'type="wait"' shows nothing: the tour waits for the element 'for' names to be on the page, such as a menu the reader has to open, and moves on by itself. **The buttons are slot fallback.** With nothing in the 'actions' slot, you get Back, Next, and Skip, already wired. Slot your own 'actions' and drive them with 'next()', 'back()', and 'skip()' on the root. **'for' is an id, as with 'Tooltip'**, so you can point at a target elsewhere on the page from markup. It resolves against the stop's root node, so a stop inside a shadow tree points at a target in that tree. The panel is a 'group', and a 'dialog' for a dialog stop, only while the stop is shown. It is named by the 'heading' slot, then by the first heading in the content, then by 'label', and otherwise by its place in the tour. It is described by the 'description' slot, or where that is empty by the words at the start of the content, and by its place, such as "2 of 5", so a screen reader says where the reader is at every stop. 'focus()' moves focus to the panel, which is what the tour does when it opens or moves on. */
|
|
17635
17888
|
"helix-headless-tour-stop": DefineCustomElement<
|
|
17636
17889
|
HelixHeadlessTourStop,
|
|
17637
17890
|
HelixHeadlessTourStopVueProps,
|
|
@@ -17643,7 +17896,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
17643
17896
|
HelixHeadlessTreeItemVueProps,
|
|
17644
17897
|
HelixHeadlessTreeItemVueEvents
|
|
17645
17898
|
>;
|
|
17646
|
-
/** The tree is a single tab stop, and arrow keys move focus between items, as the tree pattern requires, so Tab moves past a long sidebar in one press. The tree moves the tab stop to the focused item, so the browser's focus order stays intact. Items are found with 'instanceof', never by tag name, so the headless tier does not depend on the styled one. Typing a letter moves to the next visible item whose name starts with it, and '*' opens every branch beside the focused item. 'selection-mode="multiple"' draws a check mark on every row and lets a reader check many, as Web Awesome's and Ark UI's checkbox trees do. Checking a branch checks every item under it, and a branch some of whose items are checked is partly checked. Space or a press on the mark checks the focused row, and Enter or a press on a branch's row opens it. 'active' then holds the checked values, comma separated, which 'values' also gives as a list, and the tree says 'aria-multiselectable'. 'selection-mode="leaf"' chooses one item at a time and only the items at the ends: a press, Enter or Space on a branch opens or closes it and chooses nothing, as Web Awesome's 'leaf' mode does. Keys: Up and Down Arrow move between the items a reader can see; Right Arrow opens a shut branch and then moves into it, and Left Arrow shuts an open one and then moves to its parent, the two swapping on a right-to-left page. Home and End go to the first and the last item, Enter and Space choose or open, and the tree's one tab stop stays on the item last reached. In a tree of check marks, Control+A (Command+A on an Apple keyboard) checks every item or clears them all, and Shift with Up or Down Arrow moves and checks. **'reorderable' lets you move items among their siblings.** Alt with Up or Down moves the focused item a place, and Alt with Home or End to the first or the last place among its siblings, as the APG's rearrangeable listbox does. Each row gets a grip at its far end: drag it to move the item, and the tree scrolls near an edge. A click on a grip picks the item up and a click on one of its siblings drops it there, which needs no drag. The arrows move an item picked up that way, Enter or Space drops it, and Escape puts it back. The tree says each step in its 'live' region. A drop sends 'helix-before-reorder', which you can refuse, and then 'helix-reorder', whose 'keys' hold the siblings in the new order. **You move the items**: the tree moves no element of yours, and focus follows the moved item once you have. Moving an item into another branch is not part of this. */
|
|
17899
|
+
/** The tree is a single tab stop, and arrow keys move focus between items, as the tree pattern requires, so Tab moves past a long sidebar in one press. The tree moves the tab stop to the focused item, so the browser's focus order stays intact. Items are found with 'instanceof', never by tag name, so the headless tier does not depend on the styled one. Typing a letter moves to the next visible item whose name starts with it, and '*' opens every branch beside the focused item. 'selection-mode="multiple"' draws a check mark on every row and lets a reader check many, as Web Awesome's and Ark UI's checkbox trees do. Checking a branch checks every item under it, and a branch some of whose items are checked is partly checked. Space or a press on the mark checks the focused row, and Enter or a press on a branch's row opens it. 'active' then holds the checked values, comma separated, which 'values' also gives as a list, and the tree says 'aria-multiselectable'. 'selection-mode="leaf"' chooses one item at a time and only the items at the ends: a press, Enter or Space on a branch opens or closes it and chooses nothing, as Web Awesome's 'leaf' mode does. Keys: Up and Down Arrow move between the items a reader can see; Right Arrow opens a shut branch and then moves into it, and Left Arrow shuts an open one and then moves to its parent, the two swapping on a right-to-left page. Home and End go to the first and the last item, Enter and Space choose or open, and the tree's one tab stop stays on the item last reached. In a tree of check marks, Control+A (Command+A on an Apple keyboard) checks every item or clears them all, and Shift with Up or Down Arrow moves and checks. Removing the item that has focus moves focus to the item after it among its siblings, or the one before, or its parent, so focus stays in the tree. **'reorderable' lets you move items among their siblings.** Alt with Up or Down moves the focused item a place, and Alt with Home or End to the first or the last place among its siblings, as the APG's rearrangeable listbox does. Each row gets a grip at its far end: drag it to move the item, and the tree scrolls near an edge. A click on a grip picks the item up and a click on one of its siblings drops it there, which needs no drag. The arrows move an item picked up that way, Enter or Space drops it, and Escape puts it back. The tree says each step in its 'live' region. A drop sends 'helix-before-reorder', which you can refuse, and then 'helix-reorder', whose 'keys' hold the siblings in the new order. **You move the items**: the tree moves no element of yours, and focus follows the moved item once you have. Moving an item into another branch is not part of this. */
|
|
17647
17900
|
"helix-headless-tree": DefineCustomElement<
|
|
17648
17901
|
HelixHeadlessTree,
|
|
17649
17902
|
HelixHeadlessTreeVueProps,
|