@fusion.dev/helix 0.44.0 → 0.46.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 +190 -39
- package/dist/filter-input/chip/filter-chip.d.ts +1 -1
- package/dist/filter-input/field/filter-field.d.ts +1 -1
- package/dist/filter-input/menu/filter-menu.d.ts +1 -1
- package/dist/filter-input/operator/filter-operator.d.ts +1 -1
- package/dist/filter-input/root/filter-input-root.d.ts +1 -1
- package/dist/option/group/option-group.d.ts +1 -1
- package/dist/option/root/option-root.d.ts +1 -1
- package/dist/radio/group/radio-group.d.ts +1 -1
- package/dist/radio/root/radio-root.d.ts +1 -1
- package/dist/sandbox/preview/sandbox-preview.d.ts +15 -0
- package/dist/sandbox/preview/sandbox-preview.js +2 -2
- package/dist/sandbox/root/sandbox-root.d.ts +43 -4
- package/dist/sandbox/root/sandbox-root.js +33 -12
- package/dist/sandbox/status-bar/sandbox-status-bar.js +1 -1
- package/dist/skip-link/root/skip-link-root.d.ts +2 -1
- package/dist/text/root/text-root.d.ts +1 -1
- package/package.json +6 -6
- package/types/jsx.d.ts +180 -20
- package/types/vue.d.ts +45 -7
|
@@ -95,6 +95,11 @@ export declare class HelixSandbox extends HelixElement {
|
|
|
95
95
|
lead: 'source' | 'preview';
|
|
96
96
|
/**
|
|
97
97
|
* Whether the panes sit side by side or stacked.
|
|
98
|
+
*
|
|
99
|
+
* Not reflected, for `lead`'s reason above: no rule selects on it. The axis
|
|
100
|
+
* reaches the stylesheet as the inner splitter's own `orientation`, which is
|
|
101
|
+
* where the panes are laid out, and this element's sheet names no host
|
|
102
|
+
* attribute at all.
|
|
98
103
|
*/
|
|
99
104
|
orientation?: 'horizontal' | 'vertical';
|
|
100
105
|
/**
|
|
@@ -230,7 +235,7 @@ export declare class HelixSandbox extends HelixElement {
|
|
|
230
235
|
*/
|
|
231
236
|
private get axis();
|
|
232
237
|
/**
|
|
233
|
-
*
|
|
238
|
+
* Asks for the panes' divider to settle here, and moves it unless refused.
|
|
234
239
|
*
|
|
235
240
|
* When it settles, not while it moves. A drag is a stream of positions and
|
|
236
241
|
* only the one it ends at is a preference; announcing each would ask whoever
|
|
@@ -241,13 +246,25 @@ export declare class HelixSandbox extends HelixElement {
|
|
|
241
246
|
* wrote to storage on its own would be deciding for all of them under a key
|
|
242
247
|
* it chose.
|
|
243
248
|
*
|
|
249
|
+
* **Through `requestChange`, and never the other way round.** Both of these
|
|
250
|
+
* fired after `split` and `panelSize` had already been written, with the
|
|
251
|
+
* answer dropped, so a consumer calling `preventDefault()` on an event whose
|
|
252
|
+
* own line says refusing it takes the decision changed nothing whatever: the
|
|
253
|
+
* divider stayed where the drag left it and their handler read a value they
|
|
254
|
+
* had just declined. `SandboxSource.edit` two files away already carries the
|
|
255
|
+
* argument, that assigning first turns a `before` event into one that has
|
|
256
|
+
* already happened, and `Splitter`, whose `helix-before-resize` these two were
|
|
257
|
+
* split out of, has always announced through the audited path. Refusing one
|
|
258
|
+
* now leaves `.position` bound to the value this element still holds, so the
|
|
259
|
+
* divider goes back where it was.
|
|
260
|
+
*
|
|
244
261
|
* **A verb each, rather than one `helix-before-resize` naming which of the two
|
|
245
262
|
* moved.** Both dividers are this element's, so `composedPath()[0]` is the same
|
|
246
263
|
* host for either and the event name is the only thing that can separate them.
|
|
247
264
|
*/
|
|
248
|
-
private
|
|
249
|
-
/** As `
|
|
250
|
-
private
|
|
265
|
+
private requestSplit;
|
|
266
|
+
/** As `requestSplit`, for the panel, whose value is pixels rather than a share. */
|
|
267
|
+
private requestPanelSize;
|
|
251
268
|
/**
|
|
252
269
|
* Answers a divider that has asked to move.
|
|
253
270
|
*
|
|
@@ -261,9 +278,31 @@ export declare class HelixSandbox extends HelixElement {
|
|
|
261
278
|
* speaking for itself is one of ours, and only those are stopped: the sandbox
|
|
262
279
|
* announces `helix-before-split` and `helix-before-panel-resize` in their
|
|
263
280
|
* place, and a consumer never sees the two splitters inside it.
|
|
281
|
+
*
|
|
282
|
+
* **Refused as well as stopped, which is what "controlled from here" costs.**
|
|
283
|
+
* A splitter nobody refuses applies the move itself and says so in its own
|
|
284
|
+
* docblock, so the sentence above was true only while nothing downstream ever
|
|
285
|
+
* declined: refusing `helix-before-split` left `split` at fifty and the
|
|
286
|
+
* divider drawn at fifty-two, one element holding the arrangement and the
|
|
287
|
+
* other showing it. Refusing the inner request first makes this element the
|
|
288
|
+
* single answer.
|
|
289
|
+
*
|
|
290
|
+
* **And the divider is written back, because a refusal writes nothing.** A
|
|
291
|
+
* splitter draws itself from where the gesture reached until its `position` is
|
|
292
|
+
* assigned, which is the setter's stated job, and a bound property Lit did not
|
|
293
|
+
* change is a property Lit does not write. So the answer is assigned either
|
|
294
|
+
* way, which for an accepted move is the number the binding is about to carry
|
|
295
|
+
* anyway.
|
|
264
296
|
*/
|
|
265
297
|
private readonly handlePanesChange;
|
|
266
298
|
private readonly handlePanelChange;
|
|
299
|
+
/**
|
|
300
|
+
* Puts a divider where this element says it is.
|
|
301
|
+
*
|
|
302
|
+
* Typed by what is used rather than by the class, which is the whole of the
|
|
303
|
+
* coupling: a splitter this does not import is one that can be replaced.
|
|
304
|
+
*/
|
|
305
|
+
private answer;
|
|
267
306
|
connectedCallback(): void;
|
|
268
307
|
/** Watches the body, whose height is what the pane sizes are computed from. */
|
|
269
308
|
private watchBody;
|
|
@@ -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, HelixBeforePanelResizeEvent, HelixBeforeSplitEvent, HelixElement, } from '@fusion.dev/helix-core';
|
|
7
|
+
import { customElement, HelixBeforePanelResizeEvent, HelixBeforeSplitEvent, HelixElement, requestChange, } from '@fusion.dev/helix-core';
|
|
8
8
|
import '../../splitter/index.js';
|
|
9
9
|
import { html } from 'lit';
|
|
10
10
|
import { property, state } from 'lit/decorators.js';
|
|
@@ -71,8 +71,9 @@ let HelixSandbox = class HelixSandbox extends HelixElement {
|
|
|
71
71
|
}
|
|
72
72
|
const { value } = event.detail;
|
|
73
73
|
event.stopPropagation();
|
|
74
|
-
|
|
75
|
-
this.
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
this.requestSplit(Number(value));
|
|
76
|
+
this.answer(event.currentTarget, this.split);
|
|
76
77
|
};
|
|
77
78
|
this.handlePanelChange = (event) => {
|
|
78
79
|
if (event.target !== event.currentTarget) {
|
|
@@ -80,11 +81,11 @@ let HelixSandbox = class HelixSandbox extends HelixElement {
|
|
|
80
81
|
}
|
|
81
82
|
const { value } = event.detail;
|
|
82
83
|
event.stopPropagation();
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
if (this.bodyHeight > 0) {
|
|
86
|
+
this.requestPanelSize(Math.max(0, ((100 - Number(value)) / 100) * this.bodyHeight));
|
|
85
87
|
}
|
|
86
|
-
this.
|
|
87
|
-
this.panelSettled();
|
|
88
|
+
this.answer(event.currentTarget, this.panelPosition);
|
|
88
89
|
};
|
|
89
90
|
this.readPanel = () => {
|
|
90
91
|
this.hasPanel = this.querySelector(':scope > [slot="panel"]') !== null;
|
|
@@ -135,11 +136,31 @@ let HelixSandbox = class HelixSandbox extends HelixElement {
|
|
|
135
136
|
get axis() {
|
|
136
137
|
return this.orientation ?? 'horizontal';
|
|
137
138
|
}
|
|
138
|
-
|
|
139
|
-
|
|
139
|
+
requestSplit(next) {
|
|
140
|
+
return requestChange({
|
|
141
|
+
apply: (value) => {
|
|
142
|
+
this.split = value;
|
|
143
|
+
},
|
|
144
|
+
event: (value) => new HelixBeforeSplitEvent({ value: String(value) }),
|
|
145
|
+
host: this,
|
|
146
|
+
next,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
requestPanelSize(next) {
|
|
150
|
+
return requestChange({
|
|
151
|
+
apply: (value) => {
|
|
152
|
+
this.panelSize = value;
|
|
153
|
+
},
|
|
154
|
+
event: (value) => new HelixBeforePanelResizeEvent({ value: String(value) }),
|
|
155
|
+
host: this,
|
|
156
|
+
next,
|
|
157
|
+
});
|
|
140
158
|
}
|
|
141
|
-
|
|
142
|
-
|
|
159
|
+
answer(divider, position) {
|
|
160
|
+
const target = divider;
|
|
161
|
+
if (target && Number.isFinite(position)) {
|
|
162
|
+
target.position = position;
|
|
163
|
+
}
|
|
143
164
|
}
|
|
144
165
|
connectedCallback() {
|
|
145
166
|
super.connectedCallback();
|
|
@@ -233,7 +254,7 @@ __decorate([
|
|
|
233
254
|
property()
|
|
234
255
|
], HelixSandbox.prototype, "lead", void 0);
|
|
235
256
|
__decorate([
|
|
236
|
-
property(
|
|
257
|
+
property()
|
|
237
258
|
], HelixSandbox.prototype, "orientation", void 0);
|
|
238
259
|
__decorate([
|
|
239
260
|
property({ attribute: 'panel-collapsed-size', type: Number })
|
|
@@ -28,7 +28,7 @@ let HelixSandboxStatusBar = class HelixSandboxStatusBar extends HelixElement {
|
|
|
28
28
|
${position === undefined ? nothing : html `<span part="caret">${position}</span>`}
|
|
29
29
|
${language === undefined
|
|
30
30
|
? nothing
|
|
31
|
-
: html `<span part="language">${LABELS[language]
|
|
31
|
+
: html `<span part="language">${Object.hasOwn(LABELS, language) ? LABELS[language] : language}</span>`}
|
|
32
32
|
<slot name="end"></slot>`;
|
|
33
33
|
}
|
|
34
34
|
static { this.styles = styles; }
|
|
@@ -20,8 +20,9 @@ import type { CSSResultGroup } from 'lit';
|
|
|
20
20
|
* region the id its `href` names.
|
|
21
21
|
*
|
|
22
22
|
* @since 0.1.0
|
|
23
|
-
* @status
|
|
23
|
+
* @status stable
|
|
24
24
|
* @category navigation
|
|
25
|
+
* @aliases Skip navigation, Skip to content
|
|
25
26
|
* @documentation https://fusion.dev/helix/components/skip-link
|
|
26
27
|
*
|
|
27
28
|
* @cssproperty --skip-link-border-color - Color of the revealed link's edge.
|
|
@@ -33,7 +33,7 @@ import type { CSSResultGroup } from 'lit';
|
|
|
33
33
|
* cross product, which is the explosion a named ramp exists to prevent.
|
|
34
34
|
*
|
|
35
35
|
* @since 0.1.0
|
|
36
|
-
* @status
|
|
36
|
+
* @status stable
|
|
37
37
|
* @category typography
|
|
38
38
|
* @aliases Paragraph, Copy, Label, Caption, Heading, Title
|
|
39
39
|
* @documentation https://fusion.dev/helix/components/text
|
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.46.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -47,14 +47,14 @@
|
|
|
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.46.0",
|
|
51
|
+
"@fusion.dev/helix-headless": "0.46.0",
|
|
52
|
+
"@fusion.dev/helix-styles": "0.46.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
56
|
-
"@fusion.dev/helix-cem": "0.
|
|
57
|
-
"@fusion.dev/helix-testing": "0.
|
|
56
|
+
"@fusion.dev/helix-cem": "0.46.0",
|
|
57
|
+
"@fusion.dev/helix-testing": "0.46.0",
|
|
58
58
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
59
59
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
60
60
|
"@lit-labs/ssr": "^4.1.0",
|
package/types/jsx.d.ts
CHANGED
|
@@ -2826,7 +2826,7 @@ server markup never had, which React reports as a mismatch. The one-across
|
|
|
2826
2826
|
case is the absent attribute, and the styles read it that way. */
|
|
2827
2827
|
perView?: (HelixCarousel["perView"]) | undefined;
|
|
2828
2828
|
|
|
2829
|
-
/** Fired
|
|
2829
|
+
/** Fired before the slide in view changes, with the index being asked for. Cancelable: refusing it takes the decision and nothing moves, including a drag, which is put back on the slide the index still holds. See `handleScroll`. */
|
|
2830
2830
|
"onhelix-select"?: ((e: HelixCarouselHelixSelectElementEvent) => void) | undefined;
|
|
2831
2831
|
};
|
|
2832
2832
|
|
|
@@ -3056,7 +3056,7 @@ its attribute on upgrade, and the host then carries something a consumer's
|
|
|
3056
3056
|
server markup never had, which React reports as a mismatch. The one-across
|
|
3057
3057
|
case is the absent attribute, and the styles read it that way. */
|
|
3058
3058
|
"prop:perView"?: (HelixCarousel["perView"]) | undefined;
|
|
3059
|
-
/** Fired
|
|
3059
|
+
/** Fired before the slide in view changes, with the index being asked for. Cancelable: refusing it takes the decision and nothing moves, including a drag, which is put back on the slide the index still holds. See `handleScroll`. */
|
|
3060
3060
|
"on:helix-select"?: ((e: HelixCarouselHelixSelectElementEvent) => void) | undefined;
|
|
3061
3061
|
|
|
3062
3062
|
/** Set the innerHTML of the element */
|
|
@@ -3211,10 +3211,13 @@ Reflected, because every one of the four is a visual state and a stylesheet
|
|
|
3211
3211
|
has no other way to know. Absent is a settled message with nothing to
|
|
3212
3212
|
report, which is what most of a transcript is, and it is the absence of the
|
|
3213
3213
|
attribute rather than a value of it: there is no initializer, so nothing is
|
|
3214
|
-
reflected until something happens.
|
|
3214
|
+
reflected until something happens.
|
|
3215
|
+
|
|
3216
|
+
**The turn writes this once, on a retry nobody refused**, and `handleRetry`
|
|
3217
|
+
holds the reason. Everything else that moves it is the consumer's. */
|
|
3215
3218
|
state?: (HelixChatMessage["state"]) | undefined;
|
|
3216
3219
|
|
|
3217
|
-
/** Fired when the reader asks to send a failed message again, and
|
|
3220
|
+
/** Fired when the reader asks to send a failed message again. Cancelable: a retry that stands puts the turn back on its way, and refusing it leaves the failure and the control offering it exactly where they were. */
|
|
3218
3221
|
"onhelix-send"?: ((e: HelixChatMessageHelixSendElementEvent) => void) | undefined;
|
|
3219
3222
|
};
|
|
3220
3223
|
|
|
@@ -3270,9 +3273,12 @@ Reflected, because every one of the four is a visual state and a stylesheet
|
|
|
3270
3273
|
has no other way to know. Absent is a settled message with nothing to
|
|
3271
3274
|
report, which is what most of a transcript is, and it is the absence of the
|
|
3272
3275
|
attribute rather than a value of it: there is no initializer, so nothing is
|
|
3273
|
-
reflected until something happens.
|
|
3276
|
+
reflected until something happens.
|
|
3277
|
+
|
|
3278
|
+
**The turn writes this once, on a retry nobody refused**, and `handleRetry`
|
|
3279
|
+
holds the reason. Everything else that moves it is the consumer's. */
|
|
3274
3280
|
"prop:state"?: (HelixChatMessage["state"]) | undefined;
|
|
3275
|
-
/** Fired when the reader asks to send a failed message again, and
|
|
3281
|
+
/** Fired when the reader asks to send a failed message again. Cancelable: a retry that stands puts the turn back on its way, and refusing it leaves the failure and the control offering it exactly where they were. */
|
|
3276
3282
|
"on:helix-send"?: ((e: HelixChatMessageHelixSendElementEvent) => void) | undefined;
|
|
3277
3283
|
|
|
3278
3284
|
/** Set the innerHTML of the element */
|
|
@@ -7558,7 +7564,7 @@ Here rather than on each control. */
|
|
|
7558
7564
|
|
|
7559
7565
|
/** Announced once the value has moved. */
|
|
7560
7566
|
onchange?: ((e: HelixFileInputElementEvent) => void) | undefined;
|
|
7561
|
-
/** Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and
|
|
7567
|
+
/** Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and the field keeps the files it had, a pick the browser has already written included. */
|
|
7562
7568
|
"onhelix-before-change"?: ((
|
|
7563
7569
|
e: HelixFileInputHelixBeforeChangeElementEvent,
|
|
7564
7570
|
) => void) | undefined;
|
|
@@ -7621,7 +7627,7 @@ Here rather than on each control. */
|
|
|
7621
7627
|
"prop:name"?: (HelixFileInput["name"]) | undefined;
|
|
7622
7628
|
/** Announced once the value has moved. */
|
|
7623
7629
|
"on:change"?: ((e: HelixFileInputElementEvent) => void) | undefined;
|
|
7624
|
-
/** Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and
|
|
7630
|
+
/** Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and the field keeps the files it had, a pick the browser has already written included. */
|
|
7625
7631
|
"on:helix-before-change"?: ((
|
|
7626
7632
|
e: HelixFileInputHelixBeforeChangeElementEvent,
|
|
7627
7633
|
) => void) | undefined;
|
|
@@ -13636,6 +13642,21 @@ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
|
|
|
13636
13642
|
Splitting them means moving what every stylesheet selects on, which is a
|
|
13637
13643
|
change of its own rather than a property being added. */
|
|
13638
13644
|
defaultSelected?: (HelixRadio["defaultSelected"]) | undefined;
|
|
13645
|
+
/** Whether this choice holds the group's tab stop while nothing is chosen.
|
|
13646
|
+
|
|
13647
|
+
The stop rides on the selection, and an unanswered group has no selection,
|
|
13648
|
+
so without this every choice is `tabindex="-1"` and the keyboard cannot
|
|
13649
|
+
enter the set at all.
|
|
13650
|
+
|
|
13651
|
+
**Written by the group, with no attribute, and it reaches the control
|
|
13652
|
+
rather than the host.** A `tabindex` on the host is two faults at once: it
|
|
13653
|
+
is markup a consumer rendered and their server never sent, which React
|
|
13654
|
+
reports as a mismatch and does not patch up, and it puts the tab stop on
|
|
13655
|
+
the element rather than on the `<button role="radio">` inside it, so a
|
|
13656
|
+
screen reader meets an unnamed box where a native group would have given
|
|
13657
|
+
them an unchecked radio. `Toggle.Root` carries the same property for the
|
|
13658
|
+
same reason. */
|
|
13659
|
+
focusable?: (HelixRadio["focusable"]) | undefined;
|
|
13639
13660
|
|
|
13640
13661
|
/** Fired when this choice is made. Cancelable: refusing it takes the decision and nothing moves. */
|
|
13641
13662
|
"onhelix-select"?: ((e: HelixRadioHelixSelectElementEvent) => void) | undefined;
|
|
@@ -13726,6 +13747,21 @@ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
|
|
|
13726
13747
|
Splitting them means moving what every stylesheet selects on, which is a
|
|
13727
13748
|
change of its own rather than a property being added. */
|
|
13728
13749
|
"prop:defaultSelected"?: (HelixRadio["defaultSelected"]) | undefined;
|
|
13750
|
+
/** Whether this choice holds the group's tab stop while nothing is chosen.
|
|
13751
|
+
|
|
13752
|
+
The stop rides on the selection, and an unanswered group has no selection,
|
|
13753
|
+
so without this every choice is `tabindex="-1"` and the keyboard cannot
|
|
13754
|
+
enter the set at all.
|
|
13755
|
+
|
|
13756
|
+
**Written by the group, with no attribute, and it reaches the control
|
|
13757
|
+
rather than the host.** A `tabindex` on the host is two faults at once: it
|
|
13758
|
+
is markup a consumer rendered and their server never sent, which React
|
|
13759
|
+
reports as a mismatch and does not patch up, and it puts the tab stop on
|
|
13760
|
+
the element rather than on the `<button role="radio">` inside it, so a
|
|
13761
|
+
screen reader meets an unnamed box where a native group would have given
|
|
13762
|
+
them an unchecked radio. `Toggle.Root` carries the same property for the
|
|
13763
|
+
same reason. */
|
|
13764
|
+
"prop:focusable"?: (HelixRadio["focusable"]) | undefined;
|
|
13729
13765
|
/** Fired when this choice is made. Cancelable: refusing it takes the decision and nothing moves. */
|
|
13730
13766
|
"on:helix-select"?: ((e: HelixRadioHelixSelectElementEvent) => void) | undefined;
|
|
13731
13767
|
|
|
@@ -14066,11 +14102,26 @@ keyed on this attribute, and of the 56 tokens that differ by scheme the
|
|
|
14066
14102
|
theme engine emits 19. The other 37 would stay light in a dark preview,
|
|
14067
14103
|
including every one of the 24 series colors a chart reads. */
|
|
14068
14104
|
colorMode?: (HelixSandboxPreview["colorMode"]) | undefined;
|
|
14069
|
-
/** Writing direction inside the frame.
|
|
14105
|
+
/** Writing direction inside the frame.
|
|
14106
|
+
|
|
14107
|
+
Not reflected. It is payload for the render message and nothing selects on
|
|
14108
|
+
it, here or anywhere: a frame is a document of its own and what is written
|
|
14109
|
+
on this host reaches nothing inside it, which is the same reason
|
|
14110
|
+
`colorMode` has to be sent rather than set. */
|
|
14070
14111
|
direction?: (HelixSandboxPreview["direction"]) | undefined;
|
|
14071
14112
|
/** Accessible name for the frame. */
|
|
14072
14113
|
label?: (HelixSandboxPreview["label"]) | undefined;
|
|
14073
|
-
/** How the example is placed in the frame.
|
|
14114
|
+
/** How the example is placed in the frame.
|
|
14115
|
+
|
|
14116
|
+
`padded` insets it and leaves it at the top, which is the resting case and
|
|
14117
|
+
what an absent value sends. `centered` gives it a measure and centers that
|
|
14118
|
+
box in the frame. `hug` shrinks the example to its own content and centers
|
|
14119
|
+
what is left, which is the difference that matters for a component whose
|
|
14120
|
+
root is a full-width block. `fullscreen` is the whole frame with no inset.
|
|
14121
|
+
|
|
14122
|
+
Not reflected, for `direction`'s reason: the placement is applied by the
|
|
14123
|
+
document inside the frame, against its own root, so no rule on this side
|
|
14124
|
+
could read it. */
|
|
14074
14125
|
layout?: (HelixSandboxPreview["layout"]) | undefined;
|
|
14075
14126
|
/** Markup to render. */
|
|
14076
14127
|
source?: (HelixSandboxPreview["source"]) | undefined;
|
|
@@ -14114,11 +14165,26 @@ keyed on this attribute, and of the 56 tokens that differ by scheme the
|
|
|
14114
14165
|
theme engine emits 19. The other 37 would stay light in a dark preview,
|
|
14115
14166
|
including every one of the 24 series colors a chart reads. */
|
|
14116
14167
|
"prop:colorMode"?: (HelixSandboxPreview["colorMode"]) | undefined;
|
|
14117
|
-
/** Writing direction inside the frame.
|
|
14168
|
+
/** Writing direction inside the frame.
|
|
14169
|
+
|
|
14170
|
+
Not reflected. It is payload for the render message and nothing selects on
|
|
14171
|
+
it, here or anywhere: a frame is a document of its own and what is written
|
|
14172
|
+
on this host reaches nothing inside it, which is the same reason
|
|
14173
|
+
`colorMode` has to be sent rather than set. */
|
|
14118
14174
|
"prop:direction"?: (HelixSandboxPreview["direction"]) | undefined;
|
|
14119
14175
|
/** Accessible name for the frame. */
|
|
14120
14176
|
"prop:label"?: (HelixSandboxPreview["label"]) | undefined;
|
|
14121
|
-
/** How the example is placed in the frame.
|
|
14177
|
+
/** How the example is placed in the frame.
|
|
14178
|
+
|
|
14179
|
+
`padded` insets it and leaves it at the top, which is the resting case and
|
|
14180
|
+
what an absent value sends. `centered` gives it a measure and centers that
|
|
14181
|
+
box in the frame. `hug` shrinks the example to its own content and centers
|
|
14182
|
+
what is left, which is the difference that matters for a component whose
|
|
14183
|
+
root is a full-width block. `fullscreen` is the whole frame with no inset.
|
|
14184
|
+
|
|
14185
|
+
Not reflected, for `direction`'s reason: the placement is applied by the
|
|
14186
|
+
document inside the frame, against its own root, so no rule on this side
|
|
14187
|
+
could read it. */
|
|
14122
14188
|
"prop:layout"?: (HelixSandboxPreview["layout"]) | undefined;
|
|
14123
14189
|
/** Markup to render. */
|
|
14124
14190
|
"prop:source"?: (HelixSandboxPreview["source"]) | undefined;
|
|
@@ -14211,7 +14277,12 @@ names below keeps that true whichever way round they sit.
|
|
|
14211
14277
|
`split` follows the lead pane rather than the source, so `split="30"` means
|
|
14212
14278
|
the same thing in both directions: thirty percent to whatever comes first. */
|
|
14213
14279
|
lead?: (HelixSandbox["lead"]) | undefined;
|
|
14214
|
-
/** Whether the panes sit side by side or stacked.
|
|
14280
|
+
/** Whether the panes sit side by side or stacked.
|
|
14281
|
+
|
|
14282
|
+
Not reflected, for `lead`'s reason above: no rule selects on it. The axis
|
|
14283
|
+
reaches the stylesheet as the inner splitter's own `orientation`, which is
|
|
14284
|
+
where the panes are laid out, and this element's sheet names no host
|
|
14285
|
+
attribute at all. */
|
|
14215
14286
|
orientation?: (HelixSandbox["orientation"]) | undefined;
|
|
14216
14287
|
/** What the panel's height becomes when it is closed.
|
|
14217
14288
|
|
|
@@ -14311,7 +14382,12 @@ names below keeps that true whichever way round they sit.
|
|
|
14311
14382
|
`split` follows the lead pane rather than the source, so `split="30"` means
|
|
14312
14383
|
the same thing in both directions: thirty percent to whatever comes first. */
|
|
14313
14384
|
"prop:lead"?: (HelixSandbox["lead"]) | undefined;
|
|
14314
|
-
/** Whether the panes sit side by side or stacked.
|
|
14385
|
+
/** Whether the panes sit side by side or stacked.
|
|
14386
|
+
|
|
14387
|
+
Not reflected, for `lead`'s reason above: no rule selects on it. The axis
|
|
14388
|
+
reaches the stylesheet as the inner splitter's own `orientation`, which is
|
|
14389
|
+
where the panes are laid out, and this element's sheet names no host
|
|
14390
|
+
attribute at all. */
|
|
14315
14391
|
"prop:orientation"?: (HelixSandbox["orientation"]) | undefined;
|
|
14316
14392
|
/** What the panel's height becomes when it is closed.
|
|
14317
14393
|
|
|
@@ -22590,7 +22666,7 @@ export type CustomElements = {
|
|
|
22590
22666
|
*
|
|
22591
22667
|
* Events that will be emitted by the component.
|
|
22592
22668
|
*
|
|
22593
|
-
* - `helix-select`: Fired
|
|
22669
|
+
* - `helix-select`: Fired before the slide in view changes, with the index being asked for. Cancelable: refusing it takes the decision and nothing moves, including a drag, which is put back on the slide the index still holds. See `handleScroll`.
|
|
22594
22670
|
*
|
|
22595
22671
|
* ## Slots
|
|
22596
22672
|
*
|
|
@@ -22793,6 +22869,9 @@ export type CustomElements = {
|
|
|
22793
22869
|
* report, which is what most of a transcript is, and it is the absence of the
|
|
22794
22870
|
* attribute rather than a value of it: there is no initializer, so nothing is
|
|
22795
22871
|
* reflected until something happens.
|
|
22872
|
+
*
|
|
22873
|
+
* **The turn writes this once, on a retry nobody refused**, and `handleRetry`
|
|
22874
|
+
* holds the reason. Everything else that moves it is the consumer's.
|
|
22796
22875
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
22797
22876
|
*
|
|
22798
22877
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -22818,7 +22897,7 @@ export type CustomElements = {
|
|
|
22818
22897
|
*
|
|
22819
22898
|
* Events that will be emitted by the component.
|
|
22820
22899
|
*
|
|
22821
|
-
* - `helix-send`: Fired when the reader asks to send a failed message again, and
|
|
22900
|
+
* - `helix-send`: Fired when the reader asks to send a failed message again. Cancelable: a retry that stands puts the turn back on its way, and refusing it leaves the failure and the control offering it exactly where they were.
|
|
22822
22901
|
*
|
|
22823
22902
|
* ## Slots
|
|
22824
22903
|
*
|
|
@@ -26750,7 +26829,7 @@ export type CustomElements = {
|
|
|
26750
26829
|
* Events that will be emitted by the component.
|
|
26751
26830
|
*
|
|
26752
26831
|
* - `change`: Announced once the value has moved.
|
|
26753
|
-
* - `helix-before-change`: Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and
|
|
26832
|
+
* - `helix-before-change`: Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and the field keeps the files it had, a pick the browser has already written included.
|
|
26754
26833
|
* - `input`: Announced once the value has moved.
|
|
26755
26834
|
*
|
|
26756
26835
|
* ## Slots
|
|
@@ -26781,6 +26860,11 @@ export type CustomElements = {
|
|
|
26781
26860
|
* picker come back out the same way.
|
|
26782
26861
|
* - `focus(options?: FocusOptions) => void`: Puts focus on the input, the way a label pointing at one would.
|
|
26783
26862
|
* - `formResetCallback() => void`: Empties it, which is what a form reset means for a file input.
|
|
26863
|
+
*
|
|
26864
|
+
* Not through `commit`, and that is the point of the split: a reset is the
|
|
26865
|
+
* form's decision and there is nothing here for a listener to refuse. What it
|
|
26866
|
+
* owes is the report and the platform's own announcement, which is what
|
|
26867
|
+
* `settle` is.
|
|
26784
26868
|
* - `formDisabledCallback(disabled: boolean) => void`: The platform's notice that an ancestor fieldset changed.
|
|
26785
26869
|
*
|
|
26786
26870
|
* **The argument is the effective state, and taking it whole is what latched
|
|
@@ -32824,6 +32908,20 @@ export type CustomElements = {
|
|
|
32824
32908
|
* name is the fault `TreeItem` avoids by mirroring to `data-selected`.
|
|
32825
32909
|
* Splitting them means moving what every stylesheet selects on, which is a
|
|
32826
32910
|
* change of its own rather than a property being added. (property only)
|
|
32911
|
+
* - `focusable`: Whether this choice holds the group's tab stop while nothing is chosen.
|
|
32912
|
+
*
|
|
32913
|
+
* The stop rides on the selection, and an unanswered group has no selection,
|
|
32914
|
+
* so without this every choice is `tabindex="-1"` and the keyboard cannot
|
|
32915
|
+
* enter the set at all.
|
|
32916
|
+
*
|
|
32917
|
+
* **Written by the group, with no attribute, and it reaches the control
|
|
32918
|
+
* rather than the host.** A `tabindex` on the host is two faults at once: it
|
|
32919
|
+
* is markup a consumer rendered and their server never sent, which React
|
|
32920
|
+
* reports as a mismatch and does not patch up, and it puts the tab stop on
|
|
32921
|
+
* the element rather than on the `<button role="radio">` inside it, so a
|
|
32922
|
+
* screen reader meets an unnamed box where a native group would have given
|
|
32923
|
+
* them an unchecked radio. `Toggle.Root` carries the same property for the
|
|
32924
|
+
* same reason. (property only)
|
|
32827
32925
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
32828
32926
|
*
|
|
32829
32927
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -33158,8 +33256,23 @@ export type CustomElements = {
|
|
|
33158
33256
|
* theme engine emits 19. The other 37 would stay light in a dark preview,
|
|
33159
33257
|
* including every one of the 24 series colors a chart reads.
|
|
33160
33258
|
* - `direction`: Writing direction inside the frame.
|
|
33259
|
+
*
|
|
33260
|
+
* Not reflected. It is payload for the render message and nothing selects on
|
|
33261
|
+
* it, here or anywhere: a frame is a document of its own and what is written
|
|
33262
|
+
* on this host reaches nothing inside it, which is the same reason
|
|
33263
|
+
* `colorMode` has to be sent rather than set.
|
|
33161
33264
|
* - `label`: Accessible name for the frame.
|
|
33162
33265
|
* - `layout`: How the example is placed in the frame.
|
|
33266
|
+
*
|
|
33267
|
+
* `padded` insets it and leaves it at the top, which is the resting case and
|
|
33268
|
+
* what an absent value sends. `centered` gives it a measure and centers that
|
|
33269
|
+
* box in the frame. `hug` shrinks the example to its own content and centers
|
|
33270
|
+
* what is left, which is the difference that matters for a component whose
|
|
33271
|
+
* root is a full-width block. `fullscreen` is the whole frame with no inset.
|
|
33272
|
+
*
|
|
33273
|
+
* Not reflected, for `direction`'s reason: the placement is applied by the
|
|
33274
|
+
* document inside the frame, against its own root, so no rule on this side
|
|
33275
|
+
* could read it.
|
|
33163
33276
|
* - `source`: Markup to render.
|
|
33164
33277
|
* - `src`: Document the frame loads, which brings the styles and the elements.
|
|
33165
33278
|
* - `styles`: Stylesheet applied inside the frame, alongside the markup.
|
|
@@ -33275,6 +33388,11 @@ export type CustomElements = {
|
|
|
33275
33388
|
* `split` follows the lead pane rather than the source, so `split="30"` means
|
|
33276
33389
|
* the same thing in both directions: thirty percent to whatever comes first.
|
|
33277
33390
|
* - `orientation`: Whether the panes sit side by side or stacked.
|
|
33391
|
+
*
|
|
33392
|
+
* Not reflected, for `lead`'s reason above: no rule selects on it. The axis
|
|
33393
|
+
* reaches the stylesheet as the inner splitter's own `orientation`, which is
|
|
33394
|
+
* where the panes are laid out, and this element's sheet names no host
|
|
33395
|
+
* attribute at all.
|
|
33278
33396
|
* - `panel-collapsed-size`/`panelCollapsedSize`: What the panel's height becomes when it is closed.
|
|
33279
33397
|
*
|
|
33280
33398
|
* Zero closes it outright. A panel whose contents include the control that
|
|
@@ -41856,7 +41974,7 @@ export type CustomElementsSolidJs = {
|
|
|
41856
41974
|
*
|
|
41857
41975
|
* Events that will be emitted by the component.
|
|
41858
41976
|
*
|
|
41859
|
-
* - `helix-select`: Fired
|
|
41977
|
+
* - `helix-select`: Fired before the slide in view changes, with the index being asked for. Cancelable: refusing it takes the decision and nothing moves, including a drag, which is put back on the slide the index still holds. See `handleScroll`.
|
|
41860
41978
|
*
|
|
41861
41979
|
* ## Slots
|
|
41862
41980
|
*
|
|
@@ -42065,6 +42183,9 @@ export type CustomElementsSolidJs = {
|
|
|
42065
42183
|
* report, which is what most of a transcript is, and it is the absence of the
|
|
42066
42184
|
* attribute rather than a value of it: there is no initializer, so nothing is
|
|
42067
42185
|
* reflected until something happens.
|
|
42186
|
+
*
|
|
42187
|
+
* **The turn writes this once, on a retry nobody refused**, and `handleRetry`
|
|
42188
|
+
* holds the reason. Everything else that moves it is the consumer's.
|
|
42068
42189
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
42069
42190
|
*
|
|
42070
42191
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -42090,7 +42211,7 @@ export type CustomElementsSolidJs = {
|
|
|
42090
42211
|
*
|
|
42091
42212
|
* Events that will be emitted by the component.
|
|
42092
42213
|
*
|
|
42093
|
-
* - `helix-send`: Fired when the reader asks to send a failed message again, and
|
|
42214
|
+
* - `helix-send`: Fired when the reader asks to send a failed message again. Cancelable: a retry that stands puts the turn back on its way, and refusing it leaves the failure and the control offering it exactly where they were.
|
|
42094
42215
|
*
|
|
42095
42216
|
* ## Slots
|
|
42096
42217
|
*
|
|
@@ -46089,7 +46210,7 @@ export type CustomElementsSolidJs = {
|
|
|
46089
46210
|
* Events that will be emitted by the component.
|
|
46090
46211
|
*
|
|
46091
46212
|
* - `change`: Announced once the value has moved.
|
|
46092
|
-
* - `helix-before-change`: Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and
|
|
46213
|
+
* - `helix-before-change`: Fired before the chosen files change, with their names. Cancelable: refusing it takes the decision and the field keeps the files it had, a pick the browser has already written included.
|
|
46093
46214
|
* - `input`: Announced once the value has moved.
|
|
46094
46215
|
*
|
|
46095
46216
|
* ## Slots
|
|
@@ -46120,6 +46241,11 @@ export type CustomElementsSolidJs = {
|
|
|
46120
46241
|
* picker come back out the same way.
|
|
46121
46242
|
* - `focus(options?: FocusOptions) => void`: Puts focus on the input, the way a label pointing at one would.
|
|
46122
46243
|
* - `formResetCallback() => void`: Empties it, which is what a form reset means for a file input.
|
|
46244
|
+
*
|
|
46245
|
+
* Not through `commit`, and that is the point of the split: a reset is the
|
|
46246
|
+
* form's decision and there is nothing here for a listener to refuse. What it
|
|
46247
|
+
* owes is the report and the platform's own announcement, which is what
|
|
46248
|
+
* `settle` is.
|
|
46123
46249
|
* - `formDisabledCallback(disabled: boolean) => void`: The platform's notice that an ancestor fieldset changed.
|
|
46124
46250
|
*
|
|
46125
46251
|
* **The argument is the effective state, and taking it whole is what latched
|
|
@@ -52296,6 +52422,20 @@ export type CustomElementsSolidJs = {
|
|
|
52296
52422
|
* name is the fault `TreeItem` avoids by mirroring to `data-selected`.
|
|
52297
52423
|
* Splitting them means moving what every stylesheet selects on, which is a
|
|
52298
52424
|
* change of its own rather than a property being added. (property only)
|
|
52425
|
+
* - `focusable`: Whether this choice holds the group's tab stop while nothing is chosen.
|
|
52426
|
+
*
|
|
52427
|
+
* The stop rides on the selection, and an unanswered group has no selection,
|
|
52428
|
+
* so without this every choice is `tabindex="-1"` and the keyboard cannot
|
|
52429
|
+
* enter the set at all.
|
|
52430
|
+
*
|
|
52431
|
+
* **Written by the group, with no attribute, and it reaches the control
|
|
52432
|
+
* rather than the host.** A `tabindex` on the host is two faults at once: it
|
|
52433
|
+
* is markup a consumer rendered and their server never sent, which React
|
|
52434
|
+
* reports as a mismatch and does not patch up, and it puts the tab stop on
|
|
52435
|
+
* the element rather than on the `<button role="radio">` inside it, so a
|
|
52436
|
+
* screen reader meets an unnamed box where a native group would have given
|
|
52437
|
+
* them an unchecked radio. `Toggle.Root` carries the same property for the
|
|
52438
|
+
* same reason. (property only)
|
|
52299
52439
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
52300
52440
|
*
|
|
52301
52441
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -52638,8 +52778,23 @@ export type CustomElementsSolidJs = {
|
|
|
52638
52778
|
* theme engine emits 19. The other 37 would stay light in a dark preview,
|
|
52639
52779
|
* including every one of the 24 series colors a chart reads.
|
|
52640
52780
|
* - `direction`: Writing direction inside the frame.
|
|
52781
|
+
*
|
|
52782
|
+
* Not reflected. It is payload for the render message and nothing selects on
|
|
52783
|
+
* it, here or anywhere: a frame is a document of its own and what is written
|
|
52784
|
+
* on this host reaches nothing inside it, which is the same reason
|
|
52785
|
+
* `colorMode` has to be sent rather than set.
|
|
52641
52786
|
* - `label`: Accessible name for the frame.
|
|
52642
52787
|
* - `layout`: How the example is placed in the frame.
|
|
52788
|
+
*
|
|
52789
|
+
* `padded` insets it and leaves it at the top, which is the resting case and
|
|
52790
|
+
* what an absent value sends. `centered` gives it a measure and centers that
|
|
52791
|
+
* box in the frame. `hug` shrinks the example to its own content and centers
|
|
52792
|
+
* what is left, which is the difference that matters for a component whose
|
|
52793
|
+
* root is a full-width block. `fullscreen` is the whole frame with no inset.
|
|
52794
|
+
*
|
|
52795
|
+
* Not reflected, for `direction`'s reason: the placement is applied by the
|
|
52796
|
+
* document inside the frame, against its own root, so no rule on this side
|
|
52797
|
+
* could read it.
|
|
52643
52798
|
* - `source`: Markup to render.
|
|
52644
52799
|
* - `src`: Document the frame loads, which brings the styles and the elements.
|
|
52645
52800
|
* - `styles`: Stylesheet applied inside the frame, alongside the markup.
|
|
@@ -52758,6 +52913,11 @@ export type CustomElementsSolidJs = {
|
|
|
52758
52913
|
* `split` follows the lead pane rather than the source, so `split="30"` means
|
|
52759
52914
|
* the same thing in both directions: thirty percent to whatever comes first.
|
|
52760
52915
|
* - `orientation`: Whether the panes sit side by side or stacked.
|
|
52916
|
+
*
|
|
52917
|
+
* Not reflected, for `lead`'s reason above: no rule selects on it. The axis
|
|
52918
|
+
* reaches the stylesheet as the inner splitter's own `orientation`, which is
|
|
52919
|
+
* where the panes are laid out, and this element's sheet names no host
|
|
52920
|
+
* attribute at all.
|
|
52761
52921
|
* - `panel-collapsed-size`/`panelCollapsedSize`: What the panel's height becomes when it is closed.
|
|
52762
52922
|
*
|
|
52763
52923
|
* Zero closes it outright. A panel whose contents include the control that
|