@fusion.dev/helix-headless 0.104.1 → 0.106.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 +10386 -3813
- package/dist/accordion/item/accordion-item.d.ts +17 -16
- package/dist/accordion/root/accordion-root.d.ts +13 -17
- package/dist/announcement/root/announcement-root.d.ts +24 -31
- package/dist/app-header/root/app-header-root.d.ts +14 -14
- package/dist/area-chart/root/area-chart-root.d.ts +29 -48
- package/dist/avatar/group/avatar-group.d.ts +6 -8
- package/dist/avatar/root/avatar-root.d.ts +11 -11
- package/dist/badge/root/badge-root.d.ts +14 -15
- package/dist/bar-chart/root/bar-chart-root.d.ts +40 -44
- package/dist/blockquote/root/blockquote-root.d.ts +5 -7
- package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +25 -33
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +12 -11
- package/dist/button/root/button-root.d.ts +16 -17
- package/dist/button-group/root/button-group-root.d.ts +9 -10
- package/dist/callout/root/callout-root.d.ts +10 -15
- package/dist/canvas/edge/canvas-edge.d.ts +21 -21
- package/dist/canvas/node/canvas-node.d.ts +43 -45
- package/dist/canvas/root/canvas-root.d.ts +100 -99
- package/dist/card/root/card-root.d.ts +10 -12
- package/dist/carousel/root/carousel-root.d.ts +32 -33
- package/dist/chat/composer/chat-composer.d.ts +24 -26
- package/dist/chat/message/chat-message.d.ts +30 -33
- package/dist/chat/root/chat-root.d.ts +63 -80
- package/dist/checkbox/root/checkbox-root.d.ts +30 -32
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +25 -25
- package/dist/code/root/code-root.d.ts +6 -10
- package/dist/code-block/root/code-block-root.d.ts +35 -48
- package/dist/color-input/root/color-input-root.d.ts +62 -56
- package/dist/color-input/root/color-input-root.js +3 -0
- package/dist/color-picker/root/color-picker-root.d.ts +61 -49
- package/dist/color-picker/root/color-picker-root.js +4 -0
- package/dist/combobox/root/combobox-root.d.ts +52 -53
- package/dist/command/root/command-root.d.ts +40 -40
- package/dist/command/root/command-root.js +1 -0
- package/dist/copy-button/root/copy-button-root.d.ts +24 -26
- package/dist/data-table/root/data-table-root.d.ts +106 -107
- package/dist/date-input/root/date-input-root.d.ts +54 -53
- package/dist/date-picker/root/date-picker-root.d.ts +25 -21
- package/dist/description-list/item/description-list-item.d.ts +7 -7
- package/dist/description-list/root/description-list-root.d.ts +10 -15
- package/dist/dialog/root/dialog-root.d.ts +22 -19
- package/dist/divider/root/divider-root.d.ts +12 -13
- package/dist/donut-chart/root/donut-chart-root.d.ts +19 -20
- package/dist/drawer/root/drawer-root.d.ts +19 -18
- package/dist/drilldown/item/drilldown-item.d.ts +28 -28
- package/dist/drilldown/root/drilldown-root.d.ts +22 -28
- package/dist/element-events.generated.js +19 -1
- package/dist/empty/root/empty-root.d.ts +16 -19
- package/dist/file-input/root/file-input-root.d.ts +32 -32
- package/dist/filter-input/chip/filter-chip.d.ts +36 -39
- package/dist/filter-input/field/filter-field.d.ts +25 -31
- package/dist/filter-input/menu/filter-menu.d.ts +50 -47
- package/dist/filter-input/operator/filter-operator.d.ts +15 -20
- package/dist/filter-input/root/filter-input-root.d.ts +80 -98
- package/dist/format-date/root/format-date-root.d.ts +19 -27
- package/dist/heatmap/root/heatmap-root.d.ts +40 -41
- package/dist/icon/root/icon-root.d.ts +21 -23
- package/dist/icon-button/root/icon-button-root.d.ts +12 -14
- package/dist/image/root/image-root.d.ts +30 -30
- package/dist/input/root/input-root.d.ts +36 -35
- package/dist/kbd/root/kbd-root.d.ts +13 -15
- package/dist/legend/root/legend-root.d.ts +18 -16
- package/dist/lightbox/item/lightbox-item.d.ts +13 -15
- package/dist/lightbox/root/lightbox-root.d.ts +40 -41
- package/dist/line-chart/root/line-chart-root.d.ts +20 -29
- package/dist/list/item/list-item.d.ts +17 -22
- package/dist/list/root/list-root.d.ts +6 -7
- package/dist/listbox/root/listbox-root.d.ts +42 -41
- package/dist/loader/root/loader-root.d.ts +16 -20
- package/dist/map/area/map-area.d.ts +48 -0
- package/dist/map/area/map-area.js +40 -0
- package/dist/map/buildings/map-buildings.d.ts +45 -0
- package/dist/map/buildings/map-buildings.js +37 -0
- package/dist/map/contours/map-contours.d.ts +61 -0
- package/dist/map/contours/map-contours.js +54 -0
- package/dist/map/index.d.ts +14 -0
- package/dist/map/index.js +10 -0
- package/dist/map/landcover/map-landcover.d.ts +47 -0
- package/dist/map/landcover/map-landcover.js +37 -0
- package/dist/map/marker/map-marker.d.ts +120 -0
- package/dist/map/marker/map-marker.js +109 -0
- package/dist/map/points/map-points.d.ts +139 -0
- package/dist/map/points/map-points.js +161 -0
- package/dist/map/position/map-position.d.ts +70 -0
- package/dist/map/position/map-position.js +89 -0
- package/dist/map/raster/map-raster.d.ts +84 -0
- package/dist/map/raster/map-raster.js +96 -0
- package/dist/map/root/map-root.d.ts +269 -52
- package/dist/map/root/map-root.js +473 -5
- package/dist/map/route/map-route.d.ts +73 -0
- package/dist/map/route/map-route.js +52 -0
- package/dist/map/terrain/map-terrain.d.ts +68 -0
- package/dist/map/terrain/map-terrain.js +58 -0
- package/dist/megamenu/root/megamenu-root.d.ts +27 -25
- package/dist/menu/item/menu-item.d.ts +30 -31
- package/dist/menu/root/menu-root.d.ts +25 -29
- package/dist/meter/root/meter-root.d.ts +22 -21
- package/dist/navigation/root/navigation-root.d.ts +13 -16
- package/dist/notifications/group/notification-group.d.ts +27 -28
- package/dist/notifications/notification/notification.d.ts +35 -42
- package/dist/notifications/root/notifications-root.d.ts +22 -24
- package/dist/number-input/root/number-input-root.d.ts +46 -50
- package/dist/object-inspector/root/object-inspector-root.d.ts +46 -58
- package/dist/option/group/option-group.d.ts +11 -11
- package/dist/option/root/option-root.d.ts +28 -33
- package/dist/outline/root/outline-root.d.ts +18 -17
- package/dist/pagination/root/pagination-root.d.ts +37 -39
- package/dist/pagination/size/pagination-size.d.ts +37 -43
- package/dist/pagination/summary/pagination-summary.d.ts +12 -14
- package/dist/pin-input/root/pin-input-root.d.ts +32 -38
- package/dist/popover/root/popover-root.d.ts +16 -21
- package/dist/progress/root/progress-root.d.ts +16 -14
- package/dist/qr-code/root/qr-code-root.d.ts +22 -25
- package/dist/quote/root/quote-root.d.ts +5 -6
- package/dist/radio/group/radio-group.d.ts +26 -28
- package/dist/radio/root/radio-root.d.ts +24 -28
- package/dist/rating/root/rating-root.d.ts +27 -30
- package/dist/scatter-chart/root/scatter-chart-root.d.ts +43 -55
- package/dist/scroll-area/root/scroll-area-root.d.ts +15 -21
- package/dist/select/root/select-root.d.ts +41 -44
- package/dist/skeleton/root/skeleton-root.d.ts +7 -8
- package/dist/skip-link/root/skip-link-root.d.ts +21 -28
- package/dist/slider/root/slider-root.d.ts +36 -39
- package/dist/sparkline/root/sparkline-root.d.ts +22 -28
- package/dist/speed-dial/item/speed-dial-item.d.ts +21 -21
- package/dist/speed-dial/root/speed-dial-root.d.ts +25 -27
- package/dist/splitter/root/splitter-root.d.ts +37 -41
- package/dist/stat/group/stat-group.d.ts +4 -4
- package/dist/stat/root/stat-root.d.ts +8 -9
- package/dist/steps/root/steps-root.d.ts +11 -14
- package/dist/steps/step/step.d.ts +22 -29
- package/dist/switch/root/switch-root.d.ts +20 -24
- package/dist/table/cell/table-cell.d.ts +18 -8
- package/dist/table/cell/table-cell.js +5 -1
- package/dist/table/column/table-column.d.ts +62 -55
- package/dist/table/root/table-root.d.ts +16 -17
- package/dist/table/row/table-row.d.ts +3 -3
- package/dist/tabs/panel/tab-panel.d.ts +3 -3
- package/dist/tabs/root/tabs-root.d.ts +19 -17
- package/dist/tabs/tab/tab.d.ts +6 -6
- package/dist/tag/root/tag-root.d.ts +11 -12
- package/dist/textarea/root/textarea-root.d.ts +29 -32
- package/dist/time-input/root/time-input-root.d.ts +70 -69
- package/dist/time-picker/root/time-picker-root.d.ts +58 -66
- package/dist/timeline/item/timeline-item.d.ts +18 -24
- package/dist/timeline/root/timeline-root.d.ts +13 -21
- package/dist/toast/item/toast-item.d.ts +21 -22
- package/dist/toast/root/toast-root.d.ts +18 -23
- package/dist/toggle/group/toggle-group.d.ts +23 -25
- package/dist/toggle/root/toggle-root.d.ts +8 -8
- package/dist/toolbar/root/toolbar-root.d.ts +7 -10
- package/dist/tooltip/root/tooltip-root.d.ts +41 -47
- package/dist/tour/root/tour-root.d.ts +24 -26
- package/dist/tour/stop/tour-stop.d.ts +39 -48
- package/dist/tree/item/tree-item.d.ts +23 -25
- package/dist/tree/root/tree-root.d.ts +13 -12
- package/dist/trend/root/trend-root.d.ts +18 -19
- package/dist/video/root/video-root.d.ts +108 -101
- package/dist/video-playlist/item/video-playlist-item.d.ts +23 -28
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +17 -21
- package/dist/video-playlist/root/video-playlist-root.d.ts +21 -25
- package/dist/virtual-list/root/virtual-list-root.d.ts +27 -26
- package/package.json +5 -5
- package/types/jsx.d.ts +14011 -11983
- package/types/svelte.d.ts +10 -0
- package/types/vue.d.ts +2143 -1497
|
@@ -5,35 +5,33 @@ declare const HelixHeadlessToastItem_base: (new (...args: any[]) => import("@fus
|
|
|
5
5
|
* @summary One message in the toast region.
|
|
6
6
|
*
|
|
7
7
|
* @description
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Each message is an element because it has a timeout, a tone, a dismiss
|
|
9
|
+
* control, and a lifetime that pauses.
|
|
10
10
|
*
|
|
11
|
-
* **
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* **Each item runs its own timer.** A timer held by the region would restart
|
|
12
|
+
* with each new message, and the last of three messages would stay for nine
|
|
13
|
+
* seconds.
|
|
14
14
|
*
|
|
15
|
-
* **
|
|
16
|
-
*
|
|
17
|
-
* and by a flip of `color-scheme` rather than by spending a color that means
|
|
18
|
-
* something.
|
|
15
|
+
* **Messages are inverted by default.** The item flips `color-scheme`, so a new
|
|
16
|
+
* message stands out from the page without using a color that carries meaning.
|
|
19
17
|
*
|
|
20
18
|
* @since 0.1.0
|
|
21
19
|
* @status stable
|
|
22
20
|
* @documentation https://fusion.dev/helix/components/toast
|
|
23
21
|
*
|
|
24
22
|
* @slot - The message.
|
|
25
|
-
* @slot actions -
|
|
23
|
+
* @slot actions - Actions for the message, usually a button or a link.
|
|
26
24
|
* @slot dismiss-icon - Replaces the glyph inside the dismiss control.
|
|
27
|
-
* @slot icon - Replaces the tone mark.
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
25
|
+
* @slot icon - Replaces the tone mark. The name matches `Callout`. The dismiss
|
|
26
|
+
* control's glyph uses `dismiss-icon`, because two slots cannot share a name:
|
|
27
|
+
* content goes to whichever slot comes first in the tree, and the tone mark is
|
|
28
|
+
* the one you are more likely to replace.
|
|
31
29
|
*
|
|
32
|
-
* @event {HelixDismissEvent} helix-dismiss - Fired when
|
|
30
|
+
* @event {HelixDismissEvent} helix-dismiss - Fired when the message is dismissed, by the control or by its timer, and cancelable. Canceling it keeps the message.
|
|
33
31
|
*
|
|
34
|
-
* @csspart actions - The region
|
|
32
|
+
* @csspart actions - The region that holds the actions.
|
|
35
33
|
* @csspart content - The message.
|
|
36
|
-
* @csspart dismiss - The control that
|
|
34
|
+
* @csspart dismiss - The control that dismisses the message.
|
|
37
35
|
* @csspart dismiss-mark - The glyph on the dismiss control, where none is slotted.
|
|
38
36
|
* @csspart icon - The tone mark, where the message has one.
|
|
39
37
|
* @csspart icon-mark - The tone glyph, where none is slotted.
|
|
@@ -44,7 +42,8 @@ declare const HelixHeadlessToastItem_base: (new (...args: any[]) => import("@fus
|
|
|
44
42
|
*/
|
|
45
43
|
export declare class HelixHeadlessToastItem extends HelixHeadlessToastItem_base {
|
|
46
44
|
/**
|
|
47
|
-
* How long
|
|
45
|
+
* How long the message stays, in milliseconds. When it is not set, the
|
|
46
|
+
* message stays until it is dismissed.
|
|
48
47
|
*
|
|
49
48
|
* Read once when the item is first rendered. Changing it afterwards does not
|
|
50
49
|
* restart a message the reader is already partway through.
|
|
@@ -71,7 +70,7 @@ export declare class HelixHeadlessToastItem extends HelixHeadlessToastItem_base
|
|
|
71
70
|
private remaining;
|
|
72
71
|
private timer;
|
|
73
72
|
/**
|
|
74
|
-
*
|
|
73
|
+
* The kind of message, which sets its mark and the mark's accessible name.
|
|
75
74
|
*
|
|
76
75
|
* A subset of the tone axis: a toast reports a status and never a brand role.
|
|
77
76
|
*/
|
|
@@ -79,7 +78,7 @@ export declare class HelixHeadlessToastItem extends HelixHeadlessToastItem_base
|
|
|
79
78
|
/** Whether it is showing, whoever said so, and `undefined` until somebody has. */
|
|
80
79
|
private openState;
|
|
81
80
|
/**
|
|
82
|
-
*
|
|
81
|
+
* Dismisses the message, and returns whether the dismissal went ahead.
|
|
83
82
|
*
|
|
84
83
|
* Announced before anything happens, so `preventDefault()` is a refusal and
|
|
85
84
|
* the message stays. The event still carries the label, because a consumer
|
|
@@ -87,9 +86,9 @@ export declare class HelixHeadlessToastItem extends HelixHeadlessToastItem_base
|
|
|
87
86
|
* true whether or not the item hid itself first.
|
|
88
87
|
*/
|
|
89
88
|
dismiss(): boolean;
|
|
90
|
-
/**
|
|
89
|
+
/** Pauses the dismiss timer and keeps the time that is left. */
|
|
91
90
|
pause(): void;
|
|
92
|
-
/**
|
|
91
|
+
/** Restarts the dismiss timer from where it paused. */
|
|
93
92
|
resume(): void;
|
|
94
93
|
/**
|
|
95
94
|
* How many reasons there are to hold the clock, rather than whether there is
|
|
@@ -1,32 +1,27 @@
|
|
|
1
1
|
import { HelixElement } from '@fusion.dev/helix-core';
|
|
2
2
|
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
3
|
/**
|
|
4
|
-
* @summary The region
|
|
4
|
+
* @summary The region that holds toast messages, and the only element that announces them.
|
|
5
5
|
*
|
|
6
6
|
* @description
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* family and not an arranger of complete things, which is the same reasoning
|
|
12
|
-
* that puts `Radio.Group` inside its own family.
|
|
7
|
+
* The region and its items are one family because a live region must be in the
|
|
8
|
+
* document before a message is added to it. Assistive technology often does not
|
|
9
|
+
* announce a region that arrives already holding its message. `Radio.Group` is
|
|
10
|
+
* part of its family for the same reason.
|
|
13
11
|
*
|
|
14
|
-
* **
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* the page for everyone rather than only for the people who cannot see it.
|
|
12
|
+
* **The region is polite, never assertive.** `role="alert"` interrupts whatever
|
|
13
|
+
* a screen reader is reading. For something that cannot wait, use a `Dialog`,
|
|
14
|
+
* which stops the page for every user.
|
|
18
15
|
*
|
|
19
|
-
* **
|
|
20
|
-
*
|
|
21
|
-
* item
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* There is no `toast.show()
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* has, and keeps the ability to render the same messages on the server, in a
|
|
29
|
-
* test, or twice.
|
|
16
|
+
* **The region never creates or removes items.** You render items and remove
|
|
17
|
+
* them. An item requests closing with a cancelable `helix-dismiss` event. A
|
|
18
|
+
* dismissed item hides itself and stays in the DOM, so your framework's state
|
|
19
|
+
* and the DOM stay in sync. It hides on its own unless you set `open`, which
|
|
20
|
+
* makes the state yours.
|
|
21
|
+
*
|
|
22
|
+
* There is no `toast.show()`. For a `toast()` function, write a small one over
|
|
23
|
+
* your app's state, which also lets you render the same messages on the server,
|
|
24
|
+
* in a test, or more than once.
|
|
30
25
|
*
|
|
31
26
|
* @since 0.1.0
|
|
32
27
|
* @status stable
|
|
@@ -36,7 +31,7 @@ import { type PropertyValues, type TemplateResult } from 'lit';
|
|
|
36
31
|
*
|
|
37
32
|
* @slot - The messages.
|
|
38
33
|
*
|
|
39
|
-
* @event {HelixDismissEvent} helix-dismiss - A message
|
|
34
|
+
* @event {HelixDismissEvent} helix-dismiss - A message is being dismissed, by its control or by its timer. The message sends it, and you can listen for it on the region. Cancelable: canceling it keeps the message.
|
|
40
35
|
*
|
|
41
36
|
* @csspart region - The stack the messages are in.
|
|
42
37
|
*/
|
|
@@ -5,15 +5,14 @@ declare const HelixHeadlessToggleGroup_base: (new (...args: any[]) => import("@f
|
|
|
5
5
|
* @summary A row of options with the selection marked by a moving indicator.
|
|
6
6
|
*
|
|
7
7
|
* @description
|
|
8
|
-
* The indicator is one element that
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* and it says where the selection came from as well as where it went.
|
|
8
|
+
* The indicator is one element that moves to the selected item. A single moving
|
|
9
|
+
* object is easier to follow than a fill that swaps, and it shows where the
|
|
10
|
+
* selection came from.
|
|
12
11
|
*
|
|
13
|
-
* Its
|
|
14
|
-
* custom properties, labels
|
|
15
|
-
*
|
|
16
|
-
* it
|
|
12
|
+
* Its size and position are measured from the selected item and written to the
|
|
13
|
+
* indicator as custom properties, because labels have different lengths.
|
|
14
|
+
* Measurement happens on the client, so the server renders the indicator hidden
|
|
15
|
+
* and it fades in once measured.
|
|
17
16
|
*
|
|
18
17
|
* @since 0.1.0
|
|
19
18
|
* @status stable
|
|
@@ -21,26 +20,25 @@ declare const HelixHeadlessToggleGroup_base: (new (...args: any[]) => import("@f
|
|
|
21
20
|
* @documentation https://fusion.dev/helix/components/toggle
|
|
22
21
|
*
|
|
23
22
|
* @slot - The group's items.
|
|
24
|
-
* @slot end -
|
|
25
|
-
* @slot start -
|
|
23
|
+
* @slot end - Content after the track, on the same line, such as a count or a reset.
|
|
24
|
+
* @slot start - Content before the track, on the same line, such as an icon or a caption.
|
|
26
25
|
*
|
|
27
|
-
* @event {Event} change -
|
|
28
|
-
* @event {HelixBeforeChangeEvent} helix-before-change - Fired before the
|
|
29
|
-
* @event {HelixSelectEvent} helix-select - Fired when an item is chosen.
|
|
30
|
-
* @event {Event} input -
|
|
26
|
+
* @event {Event} change - Fired after the value changes.
|
|
27
|
+
* @event {HelixBeforeChangeEvent} helix-before-change - Fired before the choice changes. Cancelable: call `preventDefault()` to keep the current choice. It is the only way to block a change.
|
|
28
|
+
* @event {HelixSelectEvent} helix-select - Fired when an item is chosen. The item sends it, and you listen for it on the group. Cancelable: call `preventDefault()` to keep the current choice.
|
|
29
|
+
* @event {Event} input - Fired after the value changes.
|
|
31
30
|
*
|
|
32
|
-
* @csspart feedback -
|
|
33
|
-
* @csspart hint -
|
|
31
|
+
* @csspart feedback - The error message under the row.
|
|
32
|
+
* @csspart hint - The help text under the row, shown while there is no error.
|
|
34
33
|
* @csspart indicator - The moving marker behind the selected item.
|
|
35
|
-
* @csspart label - The
|
|
36
|
-
* @csspart row - The line the track
|
|
37
|
-
* @csspart track - The bar the items sit in.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* consumer's own layout charges for a child. `ListItem` measured that.
|
|
34
|
+
* @csspart label - The label above the row.
|
|
35
|
+
* @csspart row - The line that holds the track and the content on either side of it.
|
|
36
|
+
* @csspart track - The bar the items sit in. Draw the line between an inline
|
|
37
|
+
* label and the items with `::part(track)::before` in your stylesheet. This tier
|
|
38
|
+
* ships no CSS, so it renders no separate element for the line, which would add
|
|
39
|
+
* an empty child to your layout.
|
|
42
40
|
*
|
|
43
|
-
* @cssstate invalid -
|
|
41
|
+
* @cssstate invalid - The group has an error to show, from the browser's validation or from your `feedback`.
|
|
44
42
|
*/
|
|
45
43
|
export declare class HelixHeadlessToggleGroup extends HelixHeadlessToggleGroup_base {
|
|
46
44
|
/**
|
|
@@ -110,7 +108,7 @@ export declare class HelixHeadlessToggleGroup extends HelixHeadlessToggleGroup_b
|
|
|
110
108
|
*/
|
|
111
109
|
private validate;
|
|
112
110
|
/**
|
|
113
|
-
* Where the group's label sits
|
|
111
|
+
* Where the group's label sits. `start` puts it on the track's line.
|
|
114
112
|
*
|
|
115
113
|
* Absent is above, which is what a field looks like and what almost every
|
|
116
114
|
* group wants. `start` is for a row of controls that are labeled rather than
|
|
@@ -5,11 +5,11 @@ declare const HelixHeadlessToggle_base: (new (...args: any[]) => import("@fusion
|
|
|
5
5
|
* @summary One option in a toggle group.
|
|
6
6
|
*
|
|
7
7
|
* @description
|
|
8
|
-
* Renders a `<button role="radio"
|
|
8
|
+
* Renders a `<button role="radio">` for use as a form control.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* the `data-navigation-item` recipe in the base
|
|
12
|
-
*
|
|
10
|
+
* Do not use it for navigation. For navigation, use links marked with
|
|
11
|
+
* `aria-current` and styled by the `data-navigation-item` recipe in the base
|
|
12
|
+
* layer. The recipe has the same look, and links are not announced as choices.
|
|
13
13
|
*
|
|
14
14
|
* @since 0.1.0
|
|
15
15
|
* @status stable
|
|
@@ -19,15 +19,15 @@ declare const HelixHeadlessToggle_base: (new (...args: any[]) => import("@fusion
|
|
|
19
19
|
*
|
|
20
20
|
* @slot - The item's label.
|
|
21
21
|
*
|
|
22
|
-
* @event {HelixSelectEvent} helix-select - Fired when the item is chosen. Cancelable:
|
|
22
|
+
* @event {HelixSelectEvent} helix-select - Fired when the item is chosen. Cancelable: call `preventDefault()` to keep the current choice.
|
|
23
23
|
*
|
|
24
24
|
* @csspart item - The radio button.
|
|
25
25
|
*
|
|
26
|
-
* @cssstate selected -
|
|
26
|
+
* @cssstate selected - The item is chosen.
|
|
27
27
|
*/
|
|
28
28
|
export declare class HelixHeadlessToggle extends HelixHeadlessToggle_base {
|
|
29
29
|
/**
|
|
30
|
-
* Whether the markup
|
|
30
|
+
* Whether the markup declares the item chosen. A form reset returns to it.
|
|
31
31
|
*
|
|
32
32
|
* `<option selected>` reflects to `defaultSelected` and `option.selected` is
|
|
33
33
|
* live state that does not reflect, and those are two different facts. This
|
|
@@ -56,7 +56,7 @@ export declare class HelixHeadlessToggle extends HelixHeadlessToggle_base {
|
|
|
56
56
|
get defaultSelected(): boolean;
|
|
57
57
|
set defaultSelected(next: boolean);
|
|
58
58
|
/**
|
|
59
|
-
* Whether
|
|
59
|
+
* Whether the item holds the group's tab stop while nothing is chosen.
|
|
60
60
|
*
|
|
61
61
|
* The stop normally rides on the selection, and an unanswered group has no
|
|
62
62
|
* selection, so without this the keyboard cannot reach it. Written by the
|
|
@@ -4,15 +4,12 @@ import { type PropertyValues, type TemplateResult } from 'lit';
|
|
|
4
4
|
* @summary A group of controls that share one tab stop.
|
|
5
5
|
*
|
|
6
6
|
* @description
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* which is why it is its own component rather than a variant of something.
|
|
7
|
+
* A toolbar holds a mix of controls, such as buttons, toggles, and menus. A
|
|
8
|
+
* button group holds one kind, so the two are separate components.
|
|
10
9
|
*
|
|
11
|
-
* The
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* than by matching tag names, so a toolbar works with anything put in it,
|
|
15
|
-
* including a consumer's own elements.
|
|
10
|
+
* The toolbar is one tab stop, and the arrow keys move between its controls, so
|
|
11
|
+
* three toolbars take three presses of Tab to pass. Any element the browser can
|
|
12
|
+
* focus counts as a control, including your own elements.
|
|
16
13
|
*
|
|
17
14
|
* @since 0.1.0
|
|
18
15
|
* @status stable
|
|
@@ -26,11 +23,11 @@ import { type PropertyValues, type TemplateResult } from 'lit';
|
|
|
26
23
|
*/
|
|
27
24
|
export declare class HelixHeadlessToolbar extends HelixElement {
|
|
28
25
|
/**
|
|
29
|
-
*
|
|
26
|
+
* The toolbar's name, read by screen readers.
|
|
30
27
|
*/
|
|
31
28
|
label: string;
|
|
32
29
|
/**
|
|
33
|
-
*
|
|
30
|
+
* The direction the arrow keys move focus in.
|
|
34
31
|
*/
|
|
35
32
|
orientation?: 'horizontal' | 'vertical';
|
|
36
33
|
private watcher;
|
|
@@ -2,40 +2,32 @@ import { HelixElement, type Placement } from '@fusion.dev/helix-core';
|
|
|
2
2
|
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
3
|
declare const HelixHeadlessTooltip_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerOpenInterface) & typeof HelixElement;
|
|
4
4
|
/**
|
|
5
|
-
* @summary A short
|
|
5
|
+
* @summary A short text that appears next to an element on hover and focus.
|
|
6
6
|
*
|
|
7
7
|
* @description
|
|
8
|
-
* The trigger is slotted and stays
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* does not fit.
|
|
8
|
+
* The trigger is slotted and stays your own element. The bubble renders in the
|
|
9
|
+
* top layer through the popover API, so an ancestor with `overflow: hidden`
|
|
10
|
+
* does not clip it and no `z-index` is needed. `FloatingController` positions
|
|
11
|
+
* it and flips it to another side when the preferred side does not fit.
|
|
13
12
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* IDREF being unable to cross a shadow boundary.
|
|
13
|
+
* Wrapping the trigger is the convenient form. Use it where the trigger already
|
|
14
|
+
* has an accessible name, because the tooltip cannot describe a slotted
|
|
15
|
+
* trigger: an IDREF cannot cross a shadow boundary.
|
|
18
16
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* the ordinary way:
|
|
17
|
+
* To add a description, place the tooltip beside the trigger and name the
|
|
18
|
+
* trigger with `for`:
|
|
22
19
|
*
|
|
23
20
|
* ```html
|
|
24
21
|
* <helix-headless-button id="save" aria-describedby="save-tip">Save</helix-headless-button>
|
|
25
22
|
* <helix-headless-tooltip id="save-tip" for="save" content="Save your work"></helix-headless-tooltip>
|
|
26
23
|
* ```
|
|
27
24
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
25
|
+
* Write the `aria-describedby` yourself, pointing at the tooltip host. Setting
|
|
26
|
+
* it at runtime causes a hydration mismatch that React does not fix. With
|
|
27
|
+
* `for`, the tooltip warns once on first open if the attribute is missing.
|
|
31
28
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* up. `for` audits itself on first open and warns once where it is missing.
|
|
35
|
-
*
|
|
36
|
-
* It shows on hover and on focus, and hides on leave, on blur, on Escape, and
|
|
37
|
-
* once the trigger has been activated: the hint is spent when the control has
|
|
38
|
-
* been used.
|
|
29
|
+
* The tooltip shows on hover and on focus. It hides on pointer leave, on blur,
|
|
30
|
+
* on Escape, and when the trigger is activated.
|
|
39
31
|
*
|
|
40
32
|
* @since 0.1.0
|
|
41
33
|
* @status stable
|
|
@@ -43,24 +35,24 @@ declare const HelixHeadlessTooltip_base: (new (...args: any[]) => import("@fusio
|
|
|
43
35
|
* @aliases Hint, Popup label
|
|
44
36
|
* @documentation https://fusion.dev/helix/components/tooltip
|
|
45
37
|
*
|
|
46
|
-
* @slot - The trigger.
|
|
47
|
-
* @slot content -
|
|
48
|
-
*
|
|
38
|
+
* @slot - The trigger: the element the tooltip describes.
|
|
39
|
+
* @slot content - Rich content for the bubble. It replaces the `content`
|
|
40
|
+
* property.
|
|
49
41
|
*
|
|
50
|
-
* @event {HelixBeforeCloseEvent} helix-before-close -
|
|
51
|
-
* @event {HelixBeforeOpenEvent} helix-before-open -
|
|
52
|
-
* @event {Event} toggle -
|
|
42
|
+
* @event {HelixBeforeCloseEvent} helix-before-close - The bubble is about to hide. Cancelable: cancel it to keep it shown.
|
|
43
|
+
* @event {HelixBeforeOpenEvent} helix-before-open - The bubble is about to show. Cancelable: cancel it to keep it hidden.
|
|
44
|
+
* @event {Event} toggle - The bubble opened or closed. The event carries `newState` and `oldState`.
|
|
53
45
|
*
|
|
54
|
-
* @csspart arrow - The
|
|
55
|
-
* @csspart arrow-bottom -
|
|
56
|
-
* @csspart arrow-left -
|
|
57
|
-
* @csspart arrow-right -
|
|
58
|
-
* @csspart arrow-top -
|
|
46
|
+
* @csspart arrow - The arrow that points at the trigger.
|
|
47
|
+
* @csspart arrow-bottom - Added to `arrow` while the bubble is below its trigger, with the arrow on the bubble's top edge.
|
|
48
|
+
* @csspart arrow-left - Added to `arrow` while the bubble is left of its trigger, with the arrow on the bubble's right edge.
|
|
49
|
+
* @csspart arrow-right - Added to `arrow` while the bubble is right of its trigger, with the arrow on the bubble's left edge.
|
|
50
|
+
* @csspart arrow-top - Added to `arrow` while the bubble is above its trigger, with the arrow on the bubble's bottom edge.
|
|
59
51
|
* @csspart tooltip - The bubble.
|
|
60
|
-
* @csspart tooltip-bottom -
|
|
61
|
-
* @csspart tooltip-left -
|
|
62
|
-
* @csspart tooltip-right -
|
|
63
|
-
* @csspart tooltip-top -
|
|
52
|
+
* @csspart tooltip-bottom - Added to `tooltip` while the bubble is below its trigger.
|
|
53
|
+
* @csspart tooltip-left - Added to `tooltip` while the bubble is left of its trigger.
|
|
54
|
+
* @csspart tooltip-right - Added to `tooltip` while the bubble is right of its trigger.
|
|
55
|
+
* @csspart tooltip-top - Added to `tooltip` while the bubble is above its trigger.
|
|
64
56
|
*
|
|
65
57
|
* @cssstate open - While the tooltip shows.
|
|
66
58
|
* @cssstate placed-bottom - While the bubble sits below its trigger.
|
|
@@ -90,11 +82,12 @@ export declare class HelixHeadlessTooltip extends HelixHeadlessTooltip_base {
|
|
|
90
82
|
*/
|
|
91
83
|
delayOut: number;
|
|
92
84
|
/**
|
|
93
|
-
*
|
|
85
|
+
* Stops the tooltip from showing.
|
|
94
86
|
*/
|
|
95
87
|
disabled: boolean;
|
|
96
88
|
/**
|
|
97
|
-
* The id of the element
|
|
89
|
+
* The id of the element the tooltip describes, in the same document or shadow
|
|
90
|
+
* root as the tooltip.
|
|
98
91
|
*
|
|
99
92
|
* Set it and the tooltip stops wrapping: it renders no trigger, listens on
|
|
100
93
|
* the element it names, and points its bubble there. Leave it unset and the
|
|
@@ -114,7 +107,7 @@ export declare class HelixHeadlessTooltip extends HelixHeadlessTooltip_base {
|
|
|
114
107
|
*/
|
|
115
108
|
for: string;
|
|
116
109
|
/**
|
|
117
|
-
*
|
|
110
|
+
* The space between the trigger and the tip of the bubble, in pixels.
|
|
118
111
|
*
|
|
119
112
|
* **Measured from the point, which is what the arrow being back changed.**
|
|
120
113
|
* The arrow is drawn half outside the bubble, so a gap measured to the
|
|
@@ -126,7 +119,8 @@ export declare class HelixHeadlessTooltip extends HelixHeadlessTooltip_base {
|
|
|
126
119
|
*/
|
|
127
120
|
offset: number;
|
|
128
121
|
/**
|
|
129
|
-
*
|
|
122
|
+
* Keeps the bubble open when the trigger is used, such as a copy button whose
|
|
123
|
+
* tooltip changes to "Copied".
|
|
130
124
|
*
|
|
131
125
|
* **Activation takes a tooltip down, because a hint about what a control will
|
|
132
126
|
* do is spent once the control has done it.** That is right for a gear that
|
|
@@ -143,13 +137,13 @@ export declare class HelixHeadlessTooltip extends HelixHeadlessTooltip_base {
|
|
|
143
137
|
*/
|
|
144
138
|
persist: boolean;
|
|
145
139
|
/**
|
|
146
|
-
*
|
|
140
|
+
* The side to show the bubble on.
|
|
147
141
|
*
|
|
148
142
|
* It moves if that side does not fit.
|
|
149
143
|
*/
|
|
150
144
|
placement: Placement;
|
|
151
145
|
/**
|
|
152
|
-
* The id of a box to keep the bubble inside
|
|
146
|
+
* The id of a box to keep the bubble inside. Defaults to the viewport.
|
|
153
147
|
*
|
|
154
148
|
* Resolved the way `for` is, so an id in the same tree, which is what lets a
|
|
155
149
|
* component name a box in its own shadow root. A chart does: its bubble is
|
|
@@ -190,7 +184,7 @@ export declare class HelixHeadlessTooltip extends HelixHeadlessTooltip_base {
|
|
|
190
184
|
*/
|
|
191
185
|
private get trigger();
|
|
192
186
|
/**
|
|
193
|
-
*
|
|
187
|
+
* Positions the bubble again, for a trigger that moved while the page did not.
|
|
194
188
|
*
|
|
195
189
|
* Public because a chart needs it. Its mark walks from reading to reading
|
|
196
190
|
* while the page holds still, and `autoUpdate` watches scrolling, resizing
|
|
@@ -245,10 +239,10 @@ export declare class HelixHeadlessTooltip extends HelixHeadlessTooltip_base {
|
|
|
245
239
|
* a framework does, would leave the trigger describing nothing.
|
|
246
240
|
*/
|
|
247
241
|
private readonly handleContentChange;
|
|
248
|
-
/** Shows the bubble,
|
|
242
|
+
/** Shows the bubble, if it has content. */
|
|
249
243
|
show(): void;
|
|
250
244
|
/**
|
|
251
|
-
*
|
|
245
|
+
* Hides the bubble, and cancels a pending show.
|
|
252
246
|
*
|
|
253
247
|
* The timer matters as much as the state: a pointer that arrives and leaves
|
|
254
248
|
* inside the delay left one queued, and the tooltip appeared over whatever
|
|
@@ -2,22 +2,20 @@ import { HelixElement } from '@fusion.dev/helix-core';
|
|
|
2
2
|
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
3
|
import type { HelixHeadlessTourStop } from '../stop/tour-stop.js';
|
|
4
4
|
/**
|
|
5
|
-
* @summary A guided
|
|
5
|
+
* @summary A guided tour of an interface, one stop at a time.
|
|
6
6
|
*
|
|
7
7
|
* @description
|
|
8
|
-
* The root
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* The root holds the order of the stops: which stop is current, what Next and
|
|
9
|
+
* Back do, and when the tour is finished. Each stop holds its target, and you
|
|
10
|
+
* write all the text.
|
|
11
11
|
*
|
|
12
|
-
* **The spotlight is a shadow
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* moment anything between them is transformed.
|
|
12
|
+
* **The spotlight is a shadow.** The scrim is a box the size of the current
|
|
13
|
+
* target with a very large `box-shadow` spread, and the shadow paints the
|
|
14
|
+
* darkness. A `clip-path` on a full-screen scrim breaks as soon as an element
|
|
15
|
+
* between the scrim and the viewport is transformed.
|
|
17
16
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* nothing needs to be: a tour starts when a reader asks for it.
|
|
17
|
+
* The root measures the target's position in the browser. Nothing is measured
|
|
18
|
+
* on the server, because a tour starts only on request.
|
|
21
19
|
*
|
|
22
20
|
* @since 0.1.0
|
|
23
21
|
* @status stable
|
|
@@ -25,23 +23,23 @@ import type { HelixHeadlessTourStop } from '../stop/tour-stop.js';
|
|
|
25
23
|
* @aliases Coachmark, Product tour, Walkthrough, Onboarding
|
|
26
24
|
* @documentation https://fusion.dev/helix/components/tour
|
|
27
25
|
*
|
|
28
|
-
* @slot - The stops, in the order they
|
|
26
|
+
* @slot - The stops, in the order they are shown.
|
|
29
27
|
*
|
|
30
|
-
* @event {HelixBeforeActivateEvent} helix-before-activate - Fired before the current stop
|
|
31
|
-
* @event {HelixBeforeCloseEvent} helix-before-close - Fired before the
|
|
28
|
+
* @event {HelixBeforeActivateEvent} helix-before-activate - Fired before the current stop changes, with the new index. Cancelable: call `preventDefault()` to stay on the current stop.
|
|
29
|
+
* @event {HelixBeforeCloseEvent} helix-before-close - Fired before the user ends the tour early. Cancelable: call `preventDefault()` to keep the tour open.
|
|
32
30
|
* @event {HelixCompleteEvent} helix-complete - Fired when the last stop is
|
|
33
31
|
* finished.
|
|
34
|
-
* @event {HelixTourAskEvent} helix-tour-ask -
|
|
32
|
+
* @event {HelixTourAskEvent} helix-tour-ask - Fired when a stop's control is pressed to move the tour. The stop sends it, and the tour handles it.
|
|
35
33
|
*
|
|
36
|
-
* @csspart spotlight - The box over the current target
|
|
34
|
+
* @csspart spotlight - The box over the current target. It also draws the dimmed area around the target.
|
|
37
35
|
*/
|
|
38
36
|
export declare class HelixHeadlessTour extends HelixElement {
|
|
39
37
|
/**
|
|
40
|
-
* Label for the control that goes back,
|
|
38
|
+
* Label for the control that goes back, passed to every stop.
|
|
41
39
|
*/
|
|
42
40
|
backLabel: string;
|
|
43
41
|
/**
|
|
44
|
-
*
|
|
42
|
+
* The stop to start on, when nothing else sets one.
|
|
45
43
|
*/
|
|
46
44
|
defaultIndex: number;
|
|
47
45
|
/**
|
|
@@ -51,7 +49,7 @@ export declare class HelixHeadlessTour extends HelixElement {
|
|
|
51
49
|
/** The stop being shown, whoever set it, and `undefined` until somebody has. */
|
|
52
50
|
private indexState;
|
|
53
51
|
/**
|
|
54
|
-
*
|
|
52
|
+
* The index of the stop being shown.
|
|
55
53
|
*
|
|
56
54
|
* **Moved through `requestChange`, never by assignment from `move`.** That
|
|
57
55
|
* announces first and applies only if nobody refused, and refusing is how a
|
|
@@ -65,7 +63,7 @@ export declare class HelixHeadlessTour extends HelixElement {
|
|
|
65
63
|
get index(): number;
|
|
66
64
|
set index(next: number);
|
|
67
65
|
/**
|
|
68
|
-
*
|
|
66
|
+
* The tour's name, read by screen readers, such as "Getting started".
|
|
69
67
|
*/
|
|
70
68
|
label: string;
|
|
71
69
|
/**
|
|
@@ -81,7 +79,7 @@ export declare class HelixHeadlessTour extends HelixElement {
|
|
|
81
79
|
*/
|
|
82
80
|
skipLabel: string;
|
|
83
81
|
/**
|
|
84
|
-
*
|
|
82
|
+
* The space around the target inside the spotlight, in pixels.
|
|
85
83
|
*/
|
|
86
84
|
spotlightPadding: number;
|
|
87
85
|
private assigned;
|
|
@@ -98,16 +96,16 @@ export declare class HelixHeadlessTour extends HelixElement {
|
|
|
98
96
|
private sizer;
|
|
99
97
|
/** What `sizer` is watching, so a render that changed nothing re-observes nothing. */
|
|
100
98
|
private sized;
|
|
101
|
-
/** The stops, in
|
|
99
|
+
/** The stops, in source order. */
|
|
102
100
|
get stops(): HelixHeadlessTourStop[];
|
|
103
101
|
/** How many stops there are. */
|
|
104
102
|
get length(): number;
|
|
105
|
-
/** Goes
|
|
103
|
+
/** Goes to the next stop, and finishes the tour on the last stop. */
|
|
106
104
|
next(): void;
|
|
107
|
-
/** Goes
|
|
105
|
+
/** Goes to the previous stop. It does nothing on the first stop. */
|
|
108
106
|
back(): void;
|
|
109
107
|
/**
|
|
110
|
-
*
|
|
108
|
+
* Ends the tour early, as a close. `helix-complete` is not fired.
|
|
111
109
|
*
|
|
112
110
|
* Announced before it is applied, and cancelable because of it: writing
|
|
113
111
|
* `open` first and dispatching after leaves a consumer calling
|