@fusion.dev/helix 0.103.2 → 0.104.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 +10742 -930
- package/dist/announcement/root/announcement-root.js +2 -1
- package/dist/canvas/edge/canvas-edge.d.ts +24 -0
- package/dist/canvas/edge/canvas-edge.js +20 -0
- package/dist/canvas/index.d.ts +5 -0
- package/dist/canvas/index.js +4 -0
- package/dist/canvas/node/canvas-node.css.d.ts +1 -0
- package/dist/canvas/node/canvas-node.css.js +360 -0
- package/dist/canvas/node/canvas-node.d.ts +53 -0
- package/dist/canvas/node/canvas-node.js +23 -0
- package/dist/canvas/root/canvas-root.css.d.ts +1 -0
- package/dist/canvas/root/canvas-root.css.js +268 -0
- package/dist/canvas/root/canvas-root.d.ts +63 -0
- package/dist/canvas/root/canvas-root.js +25 -0
- package/dist/chat/root/chat-root.css.js +4 -10
- package/dist/chat/root/chat-root.js +2 -1
- package/dist/data-table/root/data-table-root.d.ts +1 -0
- package/dist/data-table/root/data-table-root.js +2 -1
- package/dist/drilldown/root/drilldown-root.js +2 -1
- package/dist/element-events.generated.js +15 -0
- package/dist/empty/root/empty-root.js +2 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/lightbox/root/lightbox-root.css.js +4 -9
- package/dist/lightbox/root/lightbox-root.js +2 -1
- package/dist/listbox/root/listbox-root.js +2 -0
- package/dist/map/root/map-root.css.js +2 -102
- package/dist/map/root/map-root.d.ts +2 -2
- package/dist/map/root/map-root.js +2 -1
- package/dist/menu/root/menu-root.js +2 -0
- package/dist/notifications/root/notifications-root.d.ts +1 -0
- package/dist/notifications/root/notifications-root.js +2 -1
- package/dist/pagination/root/pagination-root.css.js +0 -9
- package/dist/pagination/root/pagination-root.js +2 -1
- package/dist/sandbox/root/sandbox-root.d.ts +16 -1
- package/dist/sandbox/root/sandbox-root.js +13 -5
- package/dist/shared/live/live.css.d.ts +1 -0
- package/dist/shared/live/live.css.js +9 -0
- package/dist/shared/viewport/viewport.css.d.ts +1 -0
- package/dist/shared/viewport/viewport.css.js +106 -0
- package/dist/table/root/table-root.d.ts +1 -0
- package/dist/table/root/table-root.js +2 -1
- package/dist/tree/root/tree-root.d.ts +1 -0
- package/dist/tree/root/tree-root.js +2 -1
- package/dist/video/root/video-root.js +2 -1
- package/package.json +6 -6
- package/types/jsx.d.ts +5675 -1039
- package/types/svelte.d.ts +3 -0
- package/types/vue.d.ts +1708 -272
|
@@ -13,7 +13,7 @@ import type { CSSResultGroup } from 'lit';
|
|
|
13
13
|
* takes the header and footer a consumer slotted and leaves the buttons alone.
|
|
14
14
|
*
|
|
15
15
|
* @since 0.100.0
|
|
16
|
-
* @status
|
|
16
|
+
* @status experimental
|
|
17
17
|
* @category media
|
|
18
18
|
* @aliases Map frame, Map container, Geo
|
|
19
19
|
* @documentation https://fusion.dev/helix/components/map
|
|
@@ -21,7 +21,7 @@ import type { CSSResultGroup } from 'lit';
|
|
|
21
21
|
* @cssproperty --map-background-color - The well behind the map, seen while tiles are on their way.
|
|
22
22
|
* @cssproperty --map-block-size - How tall the frame is. A length, since the map fills it.
|
|
23
23
|
* @cssproperty --map-border-color - Color of the frame's edge.
|
|
24
|
-
* @cssproperty --
|
|
24
|
+
* @cssproperty --viewport-control-background-color - The ground under the pan and zoom buttons, one name with `Canvas`.
|
|
25
25
|
*/
|
|
26
26
|
export declare class HelixMap extends HelixHeadlessMap {
|
|
27
27
|
static styles: CSSResultGroup;
|
|
@@ -6,9 +6,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessMap } from '@fusion.dev/helix-headless/map';
|
|
9
|
+
import { styles as viewportStyles } from '../../shared/viewport/viewport.css.js';
|
|
9
10
|
import { styles } from './map-root.css.js';
|
|
10
11
|
let HelixMap = class HelixMap extends HelixHeadlessMap {
|
|
11
|
-
static { this.styles = styles; }
|
|
12
|
+
static { this.styles = [viewportStyles, styles]; }
|
|
12
13
|
};
|
|
13
14
|
HelixMap = __decorate([
|
|
14
15
|
customElement('helix-map')
|
|
@@ -9,9 +9,11 @@ import { HelixHeadlessMenu } from '@fusion.dev/helix-headless/menu';
|
|
|
9
9
|
import { styles as collectionStateStyles } from '../../shared/collection/state.css.js';
|
|
10
10
|
import { styles as floatingEntranceStyles } from '../../shared/floating/entrance.css.js';
|
|
11
11
|
import { styles as floatingPanelStyles } from '../../shared/floating/panel.css.js';
|
|
12
|
+
import { styles as liveStyles } from '../../shared/live/live.css.js';
|
|
12
13
|
import { styles } from './menu-root.css.js';
|
|
13
14
|
let HelixMenu = class HelixMenu extends HelixHeadlessMenu {
|
|
14
15
|
static { this.styles = [
|
|
16
|
+
liveStyles,
|
|
15
17
|
collectionStateStyles,
|
|
16
18
|
floatingPanelStyles,
|
|
17
19
|
floatingEntranceStyles,
|
|
@@ -25,6 +25,7 @@ import '../notification/notification.js';
|
|
|
25
25
|
* @slot header - Above the list, for a title and the mark-all control.
|
|
26
26
|
*
|
|
27
27
|
* @csspart list - The list itself.
|
|
28
|
+
* @csspart live - The empty and loading lines again, in a region a screen reader hears when they change. Visually hidden in the styled tier.
|
|
28
29
|
* @csspart mark-all - The control that marks everything read.
|
|
29
30
|
*
|
|
30
31
|
* @cssproperty --notifications-max-block-size - How tall the feed may get before the list scrolls.
|
|
@@ -7,11 +7,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessNotifications } from '@fusion.dev/helix-headless/notifications';
|
|
9
9
|
import { styles as collectionStateStyles } from '../../shared/collection/state.css.js';
|
|
10
|
+
import { styles as liveStyles } from '../../shared/live/live.css.js';
|
|
10
11
|
import { styles } from './notifications-root.css.js';
|
|
11
12
|
import '../notification/notification.js';
|
|
12
13
|
let HelixNotifications = class HelixNotifications extends HelixHeadlessNotifications {
|
|
13
14
|
static { this.tier = 'helix-'; }
|
|
14
|
-
static { this.styles = [collectionStateStyles, styles]; }
|
|
15
|
+
static { this.styles = [liveStyles, collectionStateStyles, styles]; }
|
|
15
16
|
};
|
|
16
17
|
HelixNotifications = __decorate([
|
|
17
18
|
customElement('helix-notifications')
|
|
@@ -119,15 +119,6 @@ user-select: none;
|
|
|
119
119
|
display: none;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
[part="live"] {
|
|
123
|
-
block-size: 1px;
|
|
124
|
-
clip-path: inset(50%);
|
|
125
|
-
inline-size: 1px;
|
|
126
|
-
overflow: hidden;
|
|
127
|
-
position: absolute;
|
|
128
|
-
white-space: nowrap;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
122
|
[part="status"] {
|
|
132
123
|
color: var(--helix-color-foreground-muted);
|
|
133
124
|
font-variant-numeric: tabular-nums;
|
|
@@ -6,9 +6,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessPagination } from '@fusion.dev/helix-headless/pagination';
|
|
9
|
+
import { styles as liveStyles } from '../../shared/live/live.css.js';
|
|
9
10
|
import { styles } from './pagination-root.css.js';
|
|
10
11
|
let HelixPagination = class HelixPagination extends HelixHeadlessPagination {
|
|
11
|
-
static { this.styles = styles; }
|
|
12
|
+
static { this.styles = [liveStyles, styles]; }
|
|
12
13
|
};
|
|
13
14
|
HelixPagination = __decorate([
|
|
14
15
|
customElement('helix-pagination')
|
|
@@ -353,7 +353,13 @@ export declare class HelixSandbox extends HelixElement {
|
|
|
353
353
|
*/
|
|
354
354
|
private answer;
|
|
355
355
|
connectedCallback(): void;
|
|
356
|
-
/**
|
|
356
|
+
/**
|
|
357
|
+
* Watches the body, whose height is what the pane sizes are computed from.
|
|
358
|
+
*
|
|
359
|
+
* `render` asks for the render that height is for. The observer asks too, in
|
|
360
|
+
* the report it gives every box it starts watching, so only a caller that
|
|
361
|
+
* cannot wait for it passes true.
|
|
362
|
+
*/
|
|
357
363
|
private watchBody;
|
|
358
364
|
/**
|
|
359
365
|
* Takes the body's height before each render, so the conversion is current.
|
|
@@ -363,6 +369,15 @@ export declare class HelixSandbox extends HelixElement {
|
|
|
363
369
|
* shim carries attributes but not tree traversal.
|
|
364
370
|
*/
|
|
365
371
|
protected willUpdate(changed: PropertyValues): void;
|
|
372
|
+
/**
|
|
373
|
+
* Starts watching the body, now there is one.
|
|
374
|
+
*
|
|
375
|
+
* **The render its height is for is the observer's to ask for**, in the
|
|
376
|
+
* report every newly watched box gets, which arrives after layout and before
|
|
377
|
+
* the first paint. Asking here as well rendered once from inside this update
|
|
378
|
+
* and again when the report came. Where there is no observer, nothing else
|
|
379
|
+
* will ask.
|
|
380
|
+
*/
|
|
366
381
|
protected firstUpdated(changed: PropertyValues): void;
|
|
367
382
|
disconnectedCallback(): void;
|
|
368
383
|
/**
|
|
@@ -179,20 +179,25 @@ let HelixSandbox = class HelixSandbox extends HelixElement {
|
|
|
179
179
|
this.addEventListener('helix-console', this.handleConsole);
|
|
180
180
|
this.addEventListener('helix-before-edit', this.handleSourceChange);
|
|
181
181
|
if (this.hasUpdated) {
|
|
182
|
-
this.watchBody();
|
|
182
|
+
this.watchBody(true);
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
|
-
watchBody() {
|
|
185
|
+
watchBody(render) {
|
|
186
186
|
const body = this.renderRoot.querySelector('[part="body"]');
|
|
187
187
|
if (!body) {
|
|
188
188
|
return;
|
|
189
189
|
}
|
|
190
190
|
this.bodyHeight = body.getBoundingClientRect().height;
|
|
191
191
|
this.watch?.observe(body);
|
|
192
|
-
|
|
192
|
+
if (render) {
|
|
193
|
+
this.requestUpdate();
|
|
194
|
+
}
|
|
193
195
|
}
|
|
194
196
|
willUpdate(changed) {
|
|
195
197
|
super.willUpdate(changed);
|
|
198
|
+
if (!this.hasUpdated && this.childrenKnown) {
|
|
199
|
+
this.readPanel();
|
|
200
|
+
}
|
|
196
201
|
if (!this.hasUpdated || typeof this.renderRoot?.querySelector !== 'function') {
|
|
197
202
|
return;
|
|
198
203
|
}
|
|
@@ -203,8 +208,11 @@ let HelixSandbox = class HelixSandbox extends HelixElement {
|
|
|
203
208
|
}
|
|
204
209
|
firstUpdated(changed) {
|
|
205
210
|
super.firstUpdated(changed);
|
|
206
|
-
this.
|
|
207
|
-
|
|
211
|
+
if (this.serverRendered) {
|
|
212
|
+
this.readPanel();
|
|
213
|
+
this.finishHydration();
|
|
214
|
+
}
|
|
215
|
+
this.watchBody(this.watch === undefined);
|
|
208
216
|
}
|
|
209
217
|
disconnectedCallback() {
|
|
210
218
|
super.disconnectedCallback();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
+
export const styles = createSheet(`[part="controls"] {
|
|
3
|
+
display: grid;
|
|
4
|
+
gap: var(--helix-space-2xs);
|
|
5
|
+
|
|
6
|
+
grid-template-areas:
|
|
7
|
+
". up . zoomin"
|
|
8
|
+
"start . end zoomout"
|
|
9
|
+
". down . full";
|
|
10
|
+
position: absolute;
|
|
11
|
+
|
|
12
|
+
inset-block-start: var(--helix-space-sm);
|
|
13
|
+
inset-inline-end: var(--helix-space-sm);
|
|
14
|
+
transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
[part="controls"]:not(:has([part="zoom-in"])) {
|
|
18
|
+
grid-template-areas:
|
|
19
|
+
". up ."
|
|
20
|
+
"start . end"
|
|
21
|
+
". down full";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
[part="controls"]:not(:has([part="pan-up"])) {
|
|
25
|
+
grid-template-areas:
|
|
26
|
+
"zoomin"
|
|
27
|
+
"zoomout"
|
|
28
|
+
"full";
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host(:fullscreen) {
|
|
32
|
+
display: block;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:host(:state(fullscreen)) [part="region"] {
|
|
36
|
+
block-size: 100dvh;
|
|
37
|
+
border: none;
|
|
38
|
+
border-radius: 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:host([controls-placement="top-end"]) [part="controls"] {
|
|
42
|
+
inset-block: var(--helix-space-sm) auto;
|
|
43
|
+
inset-inline: auto var(--helix-space-sm);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:host([controls-placement="top-start"]) [part="controls"] {
|
|
47
|
+
inset-block: var(--helix-space-sm) auto;
|
|
48
|
+
inset-inline: var(--helix-space-sm) auto;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:host([controls-placement="bottom-end"]) [part="controls"] {
|
|
52
|
+
inset-block: auto var(--helix-space-sm);
|
|
53
|
+
inset-inline: auto var(--helix-space-sm);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:host([controls-placement="bottom-start"]) [part="controls"] {
|
|
57
|
+
inset-block: auto var(--helix-space-sm);
|
|
58
|
+
inset-inline: var(--helix-space-sm) auto;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
[part="pan-up"] {
|
|
62
|
+
grid-area: up;
|
|
63
|
+
}
|
|
64
|
+
[part="pan-down"] {
|
|
65
|
+
grid-area: down;
|
|
66
|
+
}
|
|
67
|
+
[part="pan-start"] {
|
|
68
|
+
grid-area: start;
|
|
69
|
+
}
|
|
70
|
+
[part="pan-end"] {
|
|
71
|
+
grid-area: end;
|
|
72
|
+
}
|
|
73
|
+
[part="zoom-in"] {
|
|
74
|
+
grid-area: zoomin;
|
|
75
|
+
}
|
|
76
|
+
[part="zoom-out"] {
|
|
77
|
+
grid-area: zoomout;
|
|
78
|
+
}
|
|
79
|
+
[part="fullscreen"] {
|
|
80
|
+
grid-area: full;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
[part="controls"] button {
|
|
84
|
+
align-items: center;
|
|
85
|
+
background-color: var(--viewport-control-background-color, var(--helix-color-surface-overlay));
|
|
86
|
+
border: var(--helix-border-thin) solid var(--helix-color-border);
|
|
87
|
+
border-radius: var(--helix-radii-sm);
|
|
88
|
+
block-size: var(--helix-size-control-sm);
|
|
89
|
+
color: var(--helix-color-foreground);
|
|
90
|
+
cursor: pointer;
|
|
91
|
+
display: inline-flex;
|
|
92
|
+
font-family: var(--helix-font-sans);
|
|
93
|
+
font-size: var(--helix-text-sm);
|
|
94
|
+
inline-size: var(--helix-size-control-sm);
|
|
95
|
+
justify-content: center;
|
|
96
|
+
padding: 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
[part="controls"] button:focus-visible {
|
|
100
|
+
outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
|
|
101
|
+
outline-offset: var(--helix-size-focus-offset);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
[part="controls"] button:hover {
|
|
105
|
+
background-color: var(--helix-color-surface-raised);
|
|
106
|
+
}`);
|
|
@@ -15,6 +15,7 @@ import type { CSSResultGroup } from 'lit';
|
|
|
15
15
|
*
|
|
16
16
|
* @slot - The table's rows.
|
|
17
17
|
*
|
|
18
|
+
* @csspart live - The empty and loading lines again, in a region a screen reader hears when they change. Visually hidden in the styled tier.
|
|
18
19
|
* @csspart table - The grid.
|
|
19
20
|
*
|
|
20
21
|
* @cssproperty --table-columns - Track list for the columns, which wins over the one the columns worked out.
|
|
@@ -7,9 +7,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessTable } from '@fusion.dev/helix-headless/table';
|
|
9
9
|
import { styles as collectionStateStyles } from '../../shared/collection/state.css.js';
|
|
10
|
+
import { styles as liveStyles } from '../../shared/live/live.css.js';
|
|
10
11
|
import { styles } from './table-root.css.js';
|
|
11
12
|
let HelixTable = class HelixTable extends HelixHeadlessTable {
|
|
12
|
-
static { this.styles = [collectionStateStyles, styles]; }
|
|
13
|
+
static { this.styles = [liveStyles, collectionStateStyles, styles]; }
|
|
13
14
|
};
|
|
14
15
|
HelixTable = __decorate([
|
|
15
16
|
customElement('helix-table')
|
|
@@ -18,6 +18,7 @@ import type { CSSResultGroup } from 'lit';
|
|
|
18
18
|
*
|
|
19
19
|
* @event {HelixSelectEvent} helix-select - Fired when an item is chosen. Dispatched by the item and listened for here, because the tree is what a consumer holds a reference to. Cancelable: refusing it takes the decision and nothing moves.
|
|
20
20
|
*
|
|
21
|
+
* @csspart live - The empty and loading lines again, in a region a screen reader hears when they change. Visually hidden in the styled tier.
|
|
21
22
|
* @csspart tree - The tree container.
|
|
22
23
|
*
|
|
23
24
|
* @cssproperty --tree-chevron-gap - Set from `chevron-placement`; the space before the chevron.
|
|
@@ -8,9 +8,10 @@ import { customElement } from '@fusion.dev/helix-core';
|
|
|
8
8
|
import { HelixHeadlessTree } from '@fusion.dev/helix-headless/tree';
|
|
9
9
|
import { property } from 'lit/decorators.js';
|
|
10
10
|
import { styles as collectionStateStyles } from '../../shared/collection/state.css.js';
|
|
11
|
+
import { styles as liveStyles } from '../../shared/live/live.css.js';
|
|
11
12
|
import { styles } from './tree-root.css.js';
|
|
12
13
|
let HelixTree = class HelixTree extends HelixHeadlessTree {
|
|
13
|
-
static { this.styles = [collectionStateStyles, styles]; }
|
|
14
|
+
static { this.styles = [liveStyles, collectionStateStyles, styles]; }
|
|
14
15
|
};
|
|
15
16
|
__decorate([
|
|
16
17
|
property({ attribute: 'chevron-placement', reflect: true })
|
|
@@ -10,10 +10,11 @@ import { property } from 'lit/decorators.js';
|
|
|
10
10
|
import '../../icon/index.js';
|
|
11
11
|
import '../../menu/index.js';
|
|
12
12
|
import { styles as glyphStyles } from '../../shared/glyph/glyph.css.js';
|
|
13
|
+
import { styles as liveStyles } from '../../shared/live/live.css.js';
|
|
13
14
|
import { styles } from './video-root.css.js';
|
|
14
15
|
let HelixVideo = class HelixVideo extends HelixHeadlessVideo {
|
|
15
16
|
static { this.tier = 'helix-'; }
|
|
16
|
-
static { this.styles = [glyphStyles, styles]; }
|
|
17
|
+
static { this.styles = [liveStyles, glyphStyles, styles]; }
|
|
17
18
|
};
|
|
18
19
|
__decorate([
|
|
19
20
|
property({ reflect: true })
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix",
|
|
3
3
|
"description": "Styled component tier. Extends the headless tier with token-driven presentation.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.104.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
},
|
|
48
48
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@fusion.dev/helix-core": "0.
|
|
51
|
-
"@fusion.dev/helix-headless": "0.
|
|
52
|
-
"@fusion.dev/helix-styles": "0.
|
|
50
|
+
"@fusion.dev/helix-core": "0.104.0",
|
|
51
|
+
"@fusion.dev/helix-headless": "0.104.0",
|
|
52
|
+
"@fusion.dev/helix-styles": "0.104.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@fusion.dev/helix-cem": "0.
|
|
56
|
-
"@fusion.dev/helix-testing": "0.
|
|
55
|
+
"@fusion.dev/helix-cem": "0.104.0",
|
|
56
|
+
"@fusion.dev/helix-testing": "0.104.0",
|
|
57
57
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
58
58
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
59
59
|
"@lit-labs/ssr": "^4.1.0",
|