@fusion.dev/helix 0.142.1 → 0.143.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/README.md +9 -5
- package/custom-elements.json +19275 -1410
- package/dist/accordion/item/accordion-item.css.js +6 -1
- package/dist/accordion/item/accordion-item.d.ts +1 -0
- package/dist/announcement/root/announcement-root.d.ts +3 -3
- package/dist/app-header/root/app-header-root.d.ts +1 -3
- package/dist/aura/shader.d.ts +5 -1
- package/dist/aura/shader.js +88 -613
- package/dist/avatar/root/avatar-root.d.ts +3 -3
- package/dist/badge/root/badge-root.css.js +3 -2
- package/dist/badge/root/badge-root.d.ts +1 -0
- package/dist/bar-chart/root/bar-chart-root.css.js +10 -0
- package/dist/blockquote/root/blockquote-root.css.js +4 -0
- package/dist/card/root/card-root.css.js +1 -0
- package/dist/carousel/root/carousel-root.js +2 -1
- package/dist/checkbox/root/checkbox-root.css.js +3 -3
- package/dist/color-picker/root/color-picker-root.d.ts +0 -1
- package/dist/color-picker/root/color-picker-root.js +0 -1
- package/dist/combobox/root/combobox-root.css.js +5 -4
- package/dist/data-table/root/data-table-root.css.js +7 -0
- package/dist/date-picker/root/date-picker-root.css.js +15 -3
- package/dist/donut-chart/root/donut-chart-root.css.js +10 -0
- package/dist/drawer/root/drawer-root.css.js +25 -4
- package/dist/element-events.generated.js +41 -10
- package/dist/file-input/root/file-input-root.d.ts +0 -1
- package/dist/file-input/root/file-input-root.js +0 -1
- package/dist/filter-input/root/filter-input-root.d.ts +0 -1
- package/dist/filter-input/root/filter-input-root.js +0 -1
- package/dist/grid/root/grid-root.d.ts +15 -11
- package/dist/grid/root/grid-root.js +49 -15
- package/dist/icon-button/root/icon-button-root.css.js +43 -16
- package/dist/icon-button/root/icon-button-root.d.ts +4 -1
- package/dist/image/root/image-root.css.js +1 -1
- package/dist/input/root/input-root.d.ts +0 -1
- package/dist/input/root/input-root.js +0 -1
- package/dist/line-chart/root/line-chart-root.css.js +10 -0
- package/dist/list/item/list-item.css.js +7 -1
- package/dist/loader/root/loader-root.d.ts +7 -4
- package/dist/menu/item/menu-item.css.js +1 -1
- package/dist/menu/root/menu-root.d.ts +0 -3
- package/dist/meter/root/meter-root.css.js +4 -4
- package/dist/number-input/root/number-input-root.d.ts +3 -0
- package/dist/orb/root/orb-root.d.ts +11 -2
- package/dist/orb/root/orb-root.js +5 -1
- package/dist/qr-code/root/qr-code-root.css.js +2 -1
- package/dist/qr-code/root/qr-code-root.d.ts +2 -2
- package/dist/rating/root/rating-root.d.ts +3 -0
- package/dist/sandbox/index.d.ts +2 -2
- package/dist/sandbox/root/sandbox-root.d.ts +20 -1
- package/dist/sandbox/root/sandbox-root.js +27 -10
- package/dist/sandbox/source/sandbox-source.d.ts +6 -1
- package/dist/sandbox/source/sandbox-source.js +13 -3
- package/dist/sandbox/terminal/sandbox-terminal.d.ts +3 -1
- package/dist/sandbox/terminal/sandbox-terminal.js +3 -1
- package/dist/skeleton/root/skeleton-root.css.js +4 -0
- package/dist/skeleton/root/skeleton-root.d.ts +4 -1
- package/dist/table/column/table-column.css.js +5 -0
- package/dist/tabs/panel/tab-panel.css.js +1 -1
- package/dist/tabs/panel/tab-panel.d.ts +2 -0
- package/dist/tabs/root/tabs-root.css.js +13 -7
- package/dist/tabs/root/tabs-root.d.ts +5 -0
- package/dist/tabs/tab/tab.css.js +4 -4
- package/dist/tabs/tab/tab.d.ts +5 -0
- package/dist/tag/root/tag-root.d.ts +2 -3
- package/dist/text/root/text-root.css.js +58 -1
- package/dist/text/root/text-root.d.ts +11 -2
- package/dist/text/root/text-root.js +19 -1
- package/dist/time-input/root/time-input-root.d.ts +0 -1
- package/dist/time-input/root/time-input-root.js +0 -1
- package/dist/toast/root/toast-root.css.js +31 -7
- package/dist/toast/root/toast-root.d.ts +6 -9
- package/dist/toggle/group/toggle-group.d.ts +3 -0
- package/dist/tour/stop/tour-stop.css.js +5 -0
- package/dist/trend/root/trend-root.d.ts +0 -1
- package/dist/trend/root/trend-root.js +0 -1
- package/dist/video/root/video-root.d.ts +0 -1
- package/dist/video/root/video-root.js +0 -1
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +0 -1
- package/dist/video-playlist/menu/video-playlist-menu.js +0 -1
- package/lint.json +1 -1
- package/package.json +6 -6
- package/types/jsx.d.ts +4973 -1964
- package/types/vue.d.ts +998 -212
|
@@ -14,6 +14,8 @@ import type { CSSResultGroup } from 'lit';
|
|
|
14
14
|
* @slot - The panel's content.
|
|
15
15
|
*
|
|
16
16
|
* @csspart panel - The panel container.
|
|
17
|
+
*
|
|
18
|
+
* @cssproperty --tabs-panel-padding-block-start - The space between the tab row and the panel's content.
|
|
17
19
|
*/
|
|
18
20
|
export declare class HelixTabPanel extends HelixHeadlessTabPanel {
|
|
19
21
|
static styles: CSSResultGroup;
|
|
@@ -18,12 +18,15 @@ background-position: bottom;
|
|
|
18
18
|
background-repeat: repeat-x;
|
|
19
19
|
background-size: 100% var(--helix-border-thin);
|
|
20
20
|
display: flex;
|
|
21
|
-
gap: var(--helix-space-2xs);
|
|
21
|
+
gap: var(--tabs-gap, var(--helix-space-2xs));
|
|
22
22
|
overflow-x: auto;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
:host([variant="underlined"]) {
|
|
26
|
-
--_tabs-rule: linear-gradient(
|
|
26
|
+
--_tabs-rule: linear-gradient(
|
|
27
|
+
var(--tabs-rule-color, var(--helix-color-border)),
|
|
28
|
+
var(--tabs-rule-color, var(--helix-color-border))
|
|
29
|
+
);
|
|
27
30
|
--_tab-radius: var(--helix-radii-none);
|
|
28
31
|
--_tab-selected-shadow: none;
|
|
29
32
|
--_tab-selected-surface: transparent;
|
|
@@ -87,14 +90,17 @@ z-index: var(--helix-layer-raised);
|
|
|
87
90
|
}
|
|
88
91
|
|
|
89
92
|
:host([variant="underlined"]) [part="indicator"] {
|
|
90
|
-
--_indicator-block: var(--helix-border-thick);
|
|
91
|
-
--_indicator-color: var(--helix-color-primary);
|
|
92
|
-
--_indicator-offset: calc(
|
|
93
|
+
--_indicator-block: var(--tabs-indicator-thickness, var(--helix-border-thick));
|
|
94
|
+
--_indicator-color: var(--tabs-indicator-color, var(--helix-color-primary));
|
|
95
|
+
--_indicator-offset: calc(
|
|
96
|
+
var(--indicator-block-size, 0px) -
|
|
97
|
+
var(--tabs-indicator-thickness, var(--helix-border-thick))
|
|
98
|
+
);
|
|
93
99
|
}
|
|
94
100
|
|
|
95
101
|
:host([variant="segmented"]) [part="indicator"] {
|
|
96
102
|
--_indicator-block: var(--indicator-block-size, 0);
|
|
97
|
-
--_indicator-color: var(--helix-color-surface-overlay);
|
|
103
|
+
--_indicator-color: var(--tabs-indicator-color, var(--helix-color-surface-overlay));
|
|
98
104
|
--_indicator-radius: calc(var(--helix-radii-sm) - var(--helix-border-thin));
|
|
99
105
|
--_indicator-shadow: var(--helix-shadow-sm);
|
|
100
106
|
--_indicator-offset: 0px;
|
|
@@ -109,7 +115,7 @@ z-index: var(--helix-layer-raised);
|
|
|
109
115
|
|
|
110
116
|
--_indicator-border: var(--helix-border-thin);
|
|
111
117
|
--_indicator-border-color: var(--helix-color-border);
|
|
112
|
-
--_indicator-color: var(--helix-color-surface-overlay);
|
|
118
|
+
--_indicator-color: var(--tabs-indicator-color, var(--helix-color-surface-overlay));
|
|
113
119
|
--_indicator-radius: var(--helix-radii-sm);
|
|
114
120
|
--_indicator-shadow: var(--helix-shadow-sm);
|
|
115
121
|
--_indicator-offset: 0px;
|
|
@@ -26,6 +26,11 @@ import type { CSSResultGroup } from 'lit';
|
|
|
26
26
|
*
|
|
27
27
|
* @csspart panels - The panel container.
|
|
28
28
|
* @csspart tabs - The tab list.
|
|
29
|
+
*
|
|
30
|
+
* @cssproperty --tabs-gap - The space between tabs.
|
|
31
|
+
* @cssproperty --tabs-indicator-color - The fill of the mark on the current tab: the bar under `underlined`, and the pill otherwise.
|
|
32
|
+
* @cssproperty --tabs-indicator-thickness - The height of the bar under `underlined`.
|
|
33
|
+
* @cssproperty --tabs-rule-color - The color of the rule under the row in `underlined`.
|
|
29
34
|
*/
|
|
30
35
|
export declare class HelixTabs extends HelixHeadlessTabs {
|
|
31
36
|
static styles: CSSResultGroup;
|
package/dist/tabs/tab/tab.css.js
CHANGED
|
@@ -7,19 +7,19 @@ display: inline-flex;
|
|
|
7
7
|
align-items: center;
|
|
8
8
|
background-color: transparent;
|
|
9
9
|
|
|
10
|
-
block-size: var(--_tab-height, var(--helix-size-control));
|
|
10
|
+
block-size: var(--_tab-height, var(--tabs-tab-block-size, var(--helix-size-control)));
|
|
11
11
|
border: none;
|
|
12
12
|
|
|
13
13
|
border-block-end: var(--helix-border-thick) solid transparent;
|
|
14
14
|
border-radius: var(--_tab-radius, var(--helix-radii-none));
|
|
15
|
-
color: var(--helix-color-foreground-subtle);
|
|
15
|
+
color: var(--tabs-tab-color, var(--helix-color-foreground-subtle));
|
|
16
16
|
cursor: pointer;
|
|
17
17
|
font: inherit;
|
|
18
18
|
font-size: var(--helix-text-sm);
|
|
19
19
|
font-weight: var(--helix-weight-medium);
|
|
20
20
|
display: inline-flex;
|
|
21
21
|
justify-content: center;
|
|
22
|
-
padding-inline: var(--helix-space-sm);
|
|
22
|
+
padding-inline: var(--tabs-tab-padding-inline, var(--helix-space-sm));
|
|
23
23
|
transition:
|
|
24
24
|
background-color var(--helix-duration-fast) var(--helix-easing-standard),
|
|
25
25
|
border-color var(--helix-duration-normal) var(--helix-easing-emphasized),
|
|
@@ -36,7 +36,7 @@ color: var(--helix-color-foreground);
|
|
|
36
36
|
:host(:state(selected)) [part="tab"]:hover {
|
|
37
37
|
background-color: var(--_tab-selected-surface, transparent);
|
|
38
38
|
box-shadow: var(--_tab-selected-shadow, none);
|
|
39
|
-
color: var(--helix-color-foreground);
|
|
39
|
+
color: var(--tabs-tab-selected-color, var(--helix-color-foreground));
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
[part="tab"]:disabled {
|
package/dist/tabs/tab/tab.d.ts
CHANGED
|
@@ -16,6 +16,11 @@ import type { CSSResultGroup } from 'lit';
|
|
|
16
16
|
* @slot - The tab's label.
|
|
17
17
|
*
|
|
18
18
|
* @csspart tab - The tab itself.
|
|
19
|
+
*
|
|
20
|
+
* @cssproperty --tabs-tab-block-size - The height of a tab. `segmented` sizes its tabs to the track and does not read it.
|
|
21
|
+
* @cssproperty --tabs-tab-color - The label color of a tab that is not current.
|
|
22
|
+
* @cssproperty --tabs-tab-padding-inline - The space either side of the label.
|
|
23
|
+
* @cssproperty --tabs-tab-selected-color - The label color of the current tab.
|
|
19
24
|
*/
|
|
20
25
|
export declare class HelixTab extends HelixHeadlessTab {
|
|
21
26
|
static styles: CSSResultGroup;
|
|
@@ -47,9 +47,8 @@ export declare class HelixTag extends HelixHeadlessTag {
|
|
|
47
47
|
* already calls them. `helix component`'s `axes` holds the vocabulary.
|
|
48
48
|
*
|
|
49
49
|
* **Not all seven are statuses, and `accent` is the one worth saying out
|
|
50
|
-
* loud**: it is the second emphasis,
|
|
51
|
-
*
|
|
52
|
-
* `primary` is the seed itself. The four that are statuses are the four
|
|
50
|
+
* loud**: it is the second emphasis, the second color a theme names, and the
|
|
51
|
+
* brand itself until one is named. `primary` is the brand. The four that are statuses are the four
|
|
53
52
|
* `HelixStatusTone` names, and those are the ones that would carry a glyph
|
|
54
53
|
* somewhere that draws one.
|
|
55
54
|
*
|
|
@@ -49,7 +49,8 @@ letter-spacing: var(--helix-tracking-normal);
|
|
|
49
49
|
line-height: var(--helix-leading-heading);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
:host([variant="body"])
|
|
52
|
+
:host([variant="body"]),
|
|
53
|
+
:host(:not([variant])[as="p"]) {
|
|
53
54
|
font-family: var(--helix-font-sans);
|
|
54
55
|
font-size: var(--helix-text-md);
|
|
55
56
|
font-weight: var(--helix-weight-regular);
|
|
@@ -111,6 +112,62 @@ line-height: var(--helix-leading-normal);
|
|
|
111
112
|
color: var(--_heading-ink, currentColor);
|
|
112
113
|
}
|
|
113
114
|
|
|
115
|
+
:host([emphasis="muted"]) {
|
|
116
|
+
color: var(--helix-color-foreground-muted);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
:host([emphasis="subtle"]) {
|
|
120
|
+
color: var(--helix-color-foreground-subtle);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
:host([tone="accent"]) {
|
|
124
|
+
color: var(--helix-color-accent);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
:host([tone="danger"]) {
|
|
128
|
+
color: var(--helix-color-danger);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
:host([tone="info"]) {
|
|
132
|
+
color: var(--helix-color-info);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
:host([tone="primary"]) {
|
|
136
|
+
color: var(--helix-color-primary);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
:host([tone="success"]) {
|
|
140
|
+
color: var(--helix-color-success);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
:host([tone="warning"]) {
|
|
144
|
+
color: var(--helix-color-warning);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
:host([tone="accent"]:is([emphasis="muted"], [emphasis="subtle"])) {
|
|
148
|
+
color: var(--helix-color-accent-muted);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
:host([tone="danger"]:is([emphasis="muted"], [emphasis="subtle"])) {
|
|
152
|
+
color: var(--helix-color-danger-muted);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
:host([tone="info"]:is([emphasis="muted"], [emphasis="subtle"])) {
|
|
156
|
+
color: var(--helix-color-info-muted);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
:host([tone="primary"]:is([emphasis="muted"], [emphasis="subtle"])) {
|
|
160
|
+
color: var(--helix-color-primary-muted);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
:host([tone="success"]:is([emphasis="muted"], [emphasis="subtle"])) {
|
|
164
|
+
color: var(--helix-color-success-muted);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
:host([tone="warning"]:is([emphasis="muted"], [emphasis="subtle"])) {
|
|
168
|
+
color: var(--helix-color-warning-muted);
|
|
169
|
+
}
|
|
170
|
+
|
|
114
171
|
[part="text"] {
|
|
115
172
|
color: inherit;
|
|
116
173
|
font: inherit;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HelixElement } from '@fusion.dev/helix-core';
|
|
2
|
-
import type { CSSResultGroup } from 'lit';
|
|
2
|
+
import type { CSSResultGroup, PropertyValues } from 'lit';
|
|
3
3
|
/**
|
|
4
4
|
* @summary Text, with its HTML element and its type style set separately.
|
|
5
5
|
*
|
|
@@ -40,6 +40,11 @@ export declare class HelixText extends HelixElement {
|
|
|
40
40
|
* The HTML element to render.
|
|
41
41
|
*
|
|
42
42
|
* Decides the outline and the semantics.
|
|
43
|
+
*
|
|
44
|
+
* **`label` gives the label ramp and labels no control.** The element is in
|
|
45
|
+
* this one's shadow root, which neither `for` nor a wrapped control can
|
|
46
|
+
* reach, so a page that writes either is warned. Name a Helix field with its
|
|
47
|
+
* own `label`, and a native control with `<label data-text="label">`.
|
|
43
48
|
*/
|
|
44
49
|
as?: 'span' | 'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'strong' | 'em' | 'code' | 'label';
|
|
45
50
|
/**
|
|
@@ -74,9 +79,13 @@ export declare class HelixText extends HelixElement {
|
|
|
74
79
|
/**
|
|
75
80
|
* The type style, which sets the size, weight, leading, and tracking.
|
|
76
81
|
*
|
|
77
|
-
* Defaults to the one that matches `as
|
|
82
|
+
* Defaults to the one that matches `as`: `body` for `p`, `body-strong` for
|
|
83
|
+
* `strong`, `h5` and `h6`. A `span` or an `em` keeps the type around it.
|
|
78
84
|
*/
|
|
79
85
|
variant?: 'display' | 'heading' | 'subheading' | 'title' | 'body' | 'body-strong' | 'caption' | 'label' | 'code';
|
|
86
|
+
protected updated(changed: PropertyValues): void;
|
|
87
|
+
/** Whether the page wrote this as the label of a control, which it cannot be. */
|
|
88
|
+
private labelsNothing;
|
|
80
89
|
protected render(): unknown;
|
|
81
90
|
static styles: CSSResultGroup;
|
|
82
91
|
}
|
|
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { customElement, HelixElement } from '@fusion.dev/helix-core';
|
|
7
|
+
import { customElement, HelixElement, reportRuntime } from '@fusion.dev/helix-core';
|
|
8
8
|
import { property } from 'lit/decorators.js';
|
|
9
9
|
import { literal, html as staticHtml } from 'lit/static-html.js';
|
|
10
10
|
import { styles } from './text-root.css.js';
|
|
@@ -23,6 +23,24 @@ const TAGS = {
|
|
|
23
23
|
strong: literal `strong`,
|
|
24
24
|
};
|
|
25
25
|
let HelixText = class HelixText extends HelixElement {
|
|
26
|
+
updated(changed) {
|
|
27
|
+
super.updated(changed);
|
|
28
|
+
if (changed.has('as') && this.as === 'label' && this.labelsNothing()) {
|
|
29
|
+
reportRuntime({
|
|
30
|
+
kind: 'unreachable-label',
|
|
31
|
+
message: '<helix-text as="label"> names no control: its label is in a shadow root, which ' +
|
|
32
|
+
'`for` and a wrapped control cannot reach. Give a Helix field its own `label`, or ' +
|
|
33
|
+
'write `<label data-text="label">` for a native control.',
|
|
34
|
+
tag: this.localName,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
labelsNothing() {
|
|
39
|
+
const fields = [...this.querySelectorAll('*')].some((element) => element.constructor.formAssociated === true);
|
|
40
|
+
return (fields ||
|
|
41
|
+
this.hasAttribute('for') ||
|
|
42
|
+
this.querySelector('input, select, textarea, button, meter, output, progress') !== null);
|
|
43
|
+
}
|
|
26
44
|
render() {
|
|
27
45
|
const tag = (this.as && Object.hasOwn(TAGS, this.as) ? TAGS[this.as] : undefined) ?? literal `span`;
|
|
28
46
|
return staticHtml `<${tag} part="text"><slot></slot></${tag}>`;
|
|
@@ -6,7 +6,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessTimeInput } from '@fusion.dev/helix-headless/time-input';
|
|
9
|
-
import '../../icon/index.js';
|
|
10
9
|
import '../../tag/index.js';
|
|
11
10
|
import '../../time-picker/index.js';
|
|
12
11
|
import { styles as fieldStyles } from '../../shared/field/field.css.js';
|
|
@@ -1,24 +1,42 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
2
|
export const styles = createSheet(`:host {
|
|
3
3
|
--_toast-inset: var(--toast-inset, var(--helix-space-lg));
|
|
4
|
-
|
|
5
|
-
inset-inline: var(--_toast-inset);
|
|
6
|
-
pointer-events: none;
|
|
7
|
-
position: fixed;
|
|
8
|
-
|
|
9
|
-
z-index: var(--helix-layer-toast);
|
|
4
|
+
display: contents;
|
|
10
5
|
}
|
|
11
6
|
|
|
12
7
|
:host(:not([placement])) {
|
|
13
8
|
--_toast-enter: var(--helix-space-lg);
|
|
14
|
-
inset-block-end: var(--_toast-inset);
|
|
15
9
|
}
|
|
16
10
|
|
|
17
11
|
[part="region"] {
|
|
18
12
|
|
|
19
13
|
--_toast-gap: var(--toast-gap, var(--helix-space-xs));
|
|
14
|
+
background: none;
|
|
15
|
+
block-size: auto;
|
|
16
|
+
border: none;
|
|
17
|
+
color: inherit;
|
|
20
18
|
display: flex;
|
|
21
19
|
flex-direction: column;
|
|
20
|
+
inline-size: auto;
|
|
21
|
+
inset: auto;
|
|
22
|
+
inset-inline: var(--_toast-inset);
|
|
23
|
+
margin: var(--helix-space-none);
|
|
24
|
+
max-block-size: none;
|
|
25
|
+
max-inline-size: none;
|
|
26
|
+
overflow: visible;
|
|
27
|
+
padding: var(--helix-space-none);
|
|
28
|
+
pointer-events: none;
|
|
29
|
+
position: fixed;
|
|
30
|
+
|
|
31
|
+
z-index: var(--helix-layer-toast);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:host(:not([placement])) [part="region"] {
|
|
35
|
+
inset-block-end: var(--_toast-inset);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
[part="region"]:not(:popover-open) {
|
|
39
|
+
display: none;
|
|
22
40
|
}
|
|
23
41
|
|
|
24
42
|
::slotted(*) {
|
|
@@ -27,11 +45,17 @@ pointer-events: auto;
|
|
|
27
45
|
|
|
28
46
|
:host([placement^="bottom"]) {
|
|
29
47
|
--_toast-enter: var(--helix-space-lg);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
:host([placement^="bottom"]) [part="region"] {
|
|
30
51
|
inset-block-end: var(--_toast-inset);
|
|
31
52
|
}
|
|
32
53
|
|
|
33
54
|
:host([placement^="top"]) {
|
|
34
55
|
--_toast-enter: calc(var(--helix-space-lg) * -1);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:host([placement^="top"]) [part="region"] {
|
|
35
59
|
inset-block-start: var(--_toast-inset);
|
|
36
60
|
}
|
|
37
61
|
|
|
@@ -4,16 +4,13 @@ import type { CSSResultGroup } from 'lit';
|
|
|
4
4
|
* @summary The region that holds toast messages, and the only element that announces them.
|
|
5
5
|
*
|
|
6
6
|
* @description
|
|
7
|
-
* Fixed to the window. The region spans a whole edge, so it
|
|
8
|
-
* and only the messages receive clicks. Content beside a
|
|
9
|
-
* clickable.
|
|
7
|
+
* Fixed to the window, in the top layer. The region spans a whole edge, so it
|
|
8
|
+
* ignores the pointer and only the messages receive clicks. Content beside a
|
|
9
|
+
* message stays clickable.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* containing block, and an ancestor with `overflow: hidden` still clips the
|
|
15
|
-
* region. The other floating surfaces in Helix use the top layer for the same
|
|
16
|
-
* reason.
|
|
11
|
+
* Because the stack is in the top layer, an ancestor with `transform`,
|
|
12
|
+
* `filter`, `contain`, or `overflow: hidden` does not move or clip it, and a
|
|
13
|
+
* message that arrives while a modal dialog is open shows above the dialog.
|
|
17
14
|
*
|
|
18
15
|
* @since 0.1.0
|
|
19
16
|
* @status stable
|
|
@@ -19,6 +19,9 @@ import type { CSSResultGroup } from 'lit';
|
|
|
19
19
|
*
|
|
20
20
|
* @slot - The group's items.
|
|
21
21
|
* @slot end - Content after the track, on the same line, such as a count or a reset.
|
|
22
|
+
* @slot feedback - The message that says what is wrong, for content richer than a string. It shows while there is a message.
|
|
23
|
+
* @slot hint - Help under the control, for content richer than the `hint` text.
|
|
24
|
+
* @slot label - The label, for content richer than the `label` text.
|
|
22
25
|
* @slot start - Content before the track, on the same line, such as an icon or a caption.
|
|
23
26
|
*
|
|
24
27
|
* @csspart indicator - The moving marker behind the selected item.
|
|
@@ -6,7 +6,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessTrend } from '@fusion.dev/helix-headless/trend';
|
|
9
|
-
import '../../icon/index.js';
|
|
10
9
|
import { styles as glyphStyles } from '../../shared/glyph/glyph.css.js';
|
|
11
10
|
import { styles } from './trend-root.css.js';
|
|
12
11
|
let HelixTrend = class HelixTrend extends HelixHeadlessTrend {
|
|
@@ -7,7 +7,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessVideo } from '@fusion.dev/helix-headless/video';
|
|
9
9
|
import { property } from 'lit/decorators.js';
|
|
10
|
-
import '../../icon/index.js';
|
|
11
10
|
import '../../menu/index.js';
|
|
12
11
|
import { styles as glyphStyles } from '../../shared/glyph/glyph.css.js';
|
|
13
12
|
import { styles as liveStyles } from '../../shared/live/live.css.js';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { HelixHeadlessVideoPlaylistMenu } from '@fusion.dev/helix-headless/video-playlist';
|
|
2
2
|
import type { CSSResultGroup } from 'lit';
|
|
3
|
-
import '../../icon/index.js';
|
|
4
3
|
import '../../menu/index.js';
|
|
5
4
|
/**
|
|
6
5
|
* @summary The playlist's entries, as a menu inside the player's control bar.
|
|
@@ -8,7 +8,6 @@ import { customElement } from '@fusion.dev/helix-core';
|
|
|
8
8
|
import { HelixHeadlessVideoPlaylistMenu } from '@fusion.dev/helix-headless/video-playlist';
|
|
9
9
|
import { styles as glyphStyles } from '../../shared/glyph/glyph.css.js';
|
|
10
10
|
import { styles } from './video-playlist-menu.css.js';
|
|
11
|
-
import '../../icon/index.js';
|
|
12
11
|
import '../../menu/index.js';
|
|
13
12
|
let HelixVideoPlaylistMenu = class HelixVideoPlaylistMenu extends HelixHeadlessVideoPlaylistMenu {
|
|
14
13
|
static { this.tier = 'helix-'; }
|