@fusion.dev/helix-headless 0.229.0 → 0.229.1
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/api.json +1 -1
- package/custom-elements.json +1 -1
- package/dist/canvas/edge/canvas-edge.d.ts +9 -9
- package/dist/canvas/edge/canvas-edge.js +3 -3
- package/dist/canvas/root/canvas-root.js +1 -1
- package/dist/code-block/root/code-block-root.d.ts +9 -9
- package/dist/code-block/root/code-block-root.js +4 -4
- package/dist/color-input/root/color-input-root.d.ts +7 -7
- package/dist/color-input/root/color-input-root.js +9 -9
- package/dist/megamenu/root/megamenu-root.d.ts +24 -24
- package/dist/megamenu/root/megamenu-root.js +4 -4
- package/dist/navigation/root/navigation-root.d.ts +7 -7
- package/dist/navigation/root/navigation-root.js +2 -2
- package/dist/outline/root/outline-root.d.ts +21 -21
- package/dist/outline/root/outline-root.js +6 -6
- package/dist/radio/root/radio-root.d.ts +1 -1
- package/dist/spatial-bar-chart/root/spatial-bar-chart-root.d.ts +33 -33
- package/dist/spatial-bar-chart/root/spatial-bar-chart-root.js +5 -5
- package/dist/steps/root/steps-root.d.ts +17 -17
- package/dist/steps/root/steps-root.js +3 -3
- package/dist/tabs/root/tabs-root.d.ts +13 -13
- package/dist/tabs/root/tabs-root.js +3 -3
- package/dist/time-input/root/time-input-root.d.ts +26 -26
- package/dist/time-input/root/time-input-root.js +10 -10
- package/dist/time-picker/root/time-picker-root.d.ts +40 -40
- package/dist/time-picker/root/time-picker-root.js +10 -10
- package/lint.json +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +196 -196
- package/types/vue.d.ts +155 -155
- package/types/words.d.ts +1 -1
|
@@ -64,6 +64,15 @@ export declare class HelixHeadlessCanvasEdge extends HelixElement {
|
|
|
64
64
|
* the board can draw.
|
|
65
65
|
*/
|
|
66
66
|
readOnly: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* How the line is drawn: `dashed` or `dotted`. Unset is solid.
|
|
69
|
+
*
|
|
70
|
+
* **A stroke rather than an axis**, which is what the registry keeps it for:
|
|
71
|
+
* no other family draws a line whose stroke says something, and a dashed
|
|
72
|
+
* connection is the ordinary way to draw a weaker or an optional one. On the
|
|
73
|
+
* headless tier because the board that draws the line is.
|
|
74
|
+
*/
|
|
75
|
+
stroke?: 'dashed' | 'dotted';
|
|
67
76
|
/** The name of the card the connection ends at. */
|
|
68
77
|
to: string;
|
|
69
78
|
/** The marker at the end of the connection. Unset is an arrow, as JSON Canvas specifies. */
|
|
@@ -79,15 +88,6 @@ export declare class HelixHeadlessCanvasEdge extends HelixElement {
|
|
|
79
88
|
tone?: 'accent' | 'danger' | 'info' | 'neutral' | 'primary' | 'success' | 'warning';
|
|
80
89
|
/** The side of the `to` card the connection arrives at, when the document sets one. */
|
|
81
90
|
toSide?: CanvasSide | undefined;
|
|
82
|
-
/**
|
|
83
|
-
* How the line is drawn: `dashed` or `dotted`. Unset is solid.
|
|
84
|
-
*
|
|
85
|
-
* **A variant rather than an axis**, which is what the registry keeps it for:
|
|
86
|
-
* no other family draws a line whose stroke says something, and a dashed
|
|
87
|
-
* connection is the ordinary way to draw a weaker or an optional one. On the
|
|
88
|
-
* headless tier because the board that draws the line is.
|
|
89
|
-
*/
|
|
90
|
-
variant?: 'dashed' | 'dotted';
|
|
91
91
|
/**
|
|
92
92
|
* Tells the board the connector changed, since the board is what draws it.
|
|
93
93
|
*
|
|
@@ -40,6 +40,9 @@ __decorate([
|
|
|
40
40
|
__decorate([
|
|
41
41
|
property({ attribute: 'readonly', reflect: true, type: Boolean })
|
|
42
42
|
], HelixHeadlessCanvasEdge.prototype, "readOnly", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
property({ reflect: true })
|
|
45
|
+
], HelixHeadlessCanvasEdge.prototype, "stroke", void 0);
|
|
43
46
|
__decorate([
|
|
44
47
|
property()
|
|
45
48
|
], HelixHeadlessCanvasEdge.prototype, "to", void 0);
|
|
@@ -52,9 +55,6 @@ __decorate([
|
|
|
52
55
|
__decorate([
|
|
53
56
|
property({ attribute: 'to-side' })
|
|
54
57
|
], HelixHeadlessCanvasEdge.prototype, "toSide", void 0);
|
|
55
|
-
__decorate([
|
|
56
|
-
property({ reflect: true })
|
|
57
|
-
], HelixHeadlessCanvasEdge.prototype, "variant", void 0);
|
|
58
58
|
HelixHeadlessCanvasEdge = __decorate([
|
|
59
59
|
customElement('helix-headless-canvas-edge')
|
|
60
60
|
], HelixHeadlessCanvasEdge);
|
|
@@ -2277,7 +2277,7 @@ let HelixHeadlessCanvas = class HelixHeadlessCanvas extends MixinViewport(HelixE
|
|
|
2277
2277
|
d=${drawn.d}
|
|
2278
2278
|
data-selected=${pickedKeys.has(key) ? '' : nothing}
|
|
2279
2279
|
data-tone=${element?.tone ?? nothing}
|
|
2280
|
-
data-
|
|
2280
|
+
data-stroke=${element?.stroke ?? nothing}
|
|
2281
2281
|
fill="none"
|
|
2282
2282
|
marker-end=${ends.end ? `url(#${ARROW})` : nothing}
|
|
2283
2283
|
marker-start=${ends.start ? `url(#${ARROW})` : nothing}
|
|
@@ -72,7 +72,7 @@ import { HighlighterController } from '../highlighter.js';
|
|
|
72
72
|
* depend on color. Where a removed line is paired with the added line that
|
|
73
73
|
* replaced it, the words each does not share with the other are the `changed`
|
|
74
74
|
* part, so the eye goes to what changed within the line. Each file in the patch is its own block under its own name,
|
|
75
|
-
* and its copy button copies the new version of the file. `
|
|
75
|
+
* and its copy button copies the new version of the file. `layout="split"`
|
|
76
76
|
* shows the old version beside the new, each removal opposite its replacement.
|
|
77
77
|
* `context-lines` folds each long run of unchanged lines, keeping that many
|
|
78
78
|
* beside each change, behind a button that shows them and hides them again,
|
|
@@ -311,6 +311,14 @@ export declare class HelixHeadlessCodeBlock extends HelixElement {
|
|
|
311
311
|
* `highlight` an empty string and names nothing.
|
|
312
312
|
*/
|
|
313
313
|
language: string;
|
|
314
|
+
/**
|
|
315
|
+
* How a diff's two versions are arranged. It has no effect without `diff`.
|
|
316
|
+
*
|
|
317
|
+
* Absent is unified, each removal above its replacement, which fits any
|
|
318
|
+
* width. `split` sets the old version beside the new one. Optional rather
|
|
319
|
+
* than defaulted, so the host carries no attribute the consumer did not write.
|
|
320
|
+
*/
|
|
321
|
+
layout?: 'split';
|
|
314
322
|
/**
|
|
315
323
|
* Whether the lines are numbered in a gutter beside the code.
|
|
316
324
|
*
|
|
@@ -358,14 +366,6 @@ export declare class HelixHeadlessCodeBlock extends HelixElement {
|
|
|
358
366
|
* diff with `context-lines`. `{count}` is how many.
|
|
359
367
|
*/
|
|
360
368
|
showUnchangedLabel: string;
|
|
361
|
-
/**
|
|
362
|
-
* How a diff's two versions are arranged. It has no effect without `diff`.
|
|
363
|
-
*
|
|
364
|
-
* Absent is unified, each removal above its replacement, which fits any
|
|
365
|
-
* width. `split` sets the old version beside the new one. Optional rather
|
|
366
|
-
* than defaulted, so the host carries no attribute the consumer did not write.
|
|
367
|
-
*/
|
|
368
|
-
variant?: 'split';
|
|
369
369
|
/**
|
|
370
370
|
* Whether long lines wrap. Without it they scroll.
|
|
371
371
|
*
|
|
@@ -504,7 +504,7 @@ let HelixHeadlessCodeBlock = class HelixHeadlessCodeBlock extends HelixElement {
|
|
|
504
504
|
return html `<div part="file">
|
|
505
505
|
${this.renderHeader(name, now)}
|
|
506
506
|
<div part="frame">
|
|
507
|
-
${this.
|
|
507
|
+
${this.layout === 'split'
|
|
508
508
|
? this.renderSplit(file, width, at)
|
|
509
509
|
: html `<pre part="block" translate="no"><code part="code">${file.hunks.map((hunk, h) => html `${this.renderHunk(hunk)}${this.runsOf(hunk).map((run) => run.folded
|
|
510
510
|
? this.renderFold(run, `${at}:${h}:${run.start}`, (line) => this.renderLine(line, width))
|
|
@@ -575,6 +575,9 @@ __decorate([
|
|
|
575
575
|
__decorate([
|
|
576
576
|
property()
|
|
577
577
|
], HelixHeadlessCodeBlock.prototype, "language", void 0);
|
|
578
|
+
__decorate([
|
|
579
|
+
property({ reflect: true })
|
|
580
|
+
], HelixHeadlessCodeBlock.prototype, "layout", void 0);
|
|
578
581
|
__decorate([
|
|
579
582
|
property({ attribute: 'line-numbers', reflect: true, type: Boolean })
|
|
580
583
|
], HelixHeadlessCodeBlock.prototype, "lineNumbers", void 0);
|
|
@@ -591,9 +594,6 @@ __decorate([
|
|
|
591
594
|
words,
|
|
592
595
|
property({ attribute: 'show-unchanged-label' })
|
|
593
596
|
], HelixHeadlessCodeBlock.prototype, "showUnchangedLabel", void 0);
|
|
594
|
-
__decorate([
|
|
595
|
-
property({ reflect: true })
|
|
596
|
-
], HelixHeadlessCodeBlock.prototype, "variant", void 0);
|
|
597
597
|
__decorate([
|
|
598
598
|
property({ reflect: true, type: Boolean })
|
|
599
599
|
], HelixHeadlessCodeBlock.prototype, "wrap", void 0);
|
|
@@ -60,7 +60,7 @@ declare const HelixHeadlessColorInput_base: (new (...args: any[]) => import("@fu
|
|
|
60
60
|
* @event {Event} input - Fired as the value changes.
|
|
61
61
|
* @event {ToggleEvent} toggle - The panel opened or closed. The event carries `newState` and `oldState`.
|
|
62
62
|
*
|
|
63
|
-
* @csspart control - The text input that holds the value. Absent in the `swatch`
|
|
63
|
+
* @csspart control - The text input that holds the value. Absent in the `swatch` trigger.
|
|
64
64
|
* @csspart feedback - The message that says what is wrong with the value.
|
|
65
65
|
* @csspart field - The box holding the text and the trigger.
|
|
66
66
|
* @csspart hint - Help text under the field, shown while there is no feedback.
|
|
@@ -194,15 +194,11 @@ export declare class HelixHeadlessColorInput extends HelixHeadlessColorInput_bas
|
|
|
194
194
|
*/
|
|
195
195
|
swatches: string;
|
|
196
196
|
/**
|
|
197
|
-
* What the swatch says in `
|
|
197
|
+
* What the swatch says in `trigger="swatch"`, after the field's label, once
|
|
198
198
|
* there is a color. `{name}` is the color's name, such as "vibrant red", and
|
|
199
199
|
* `{value}` the value as written.
|
|
200
200
|
*/
|
|
201
201
|
swatchLabel: string;
|
|
202
|
-
/**
|
|
203
|
-
* Accessible name for the control that opens the panel.
|
|
204
|
-
*/
|
|
205
|
-
triggerLabel: string;
|
|
206
202
|
/**
|
|
207
203
|
* Whether the field is a text box with a swatch on it, or only the swatch.
|
|
208
204
|
*
|
|
@@ -220,7 +216,11 @@ export declare class HelixHeadlessColorInput extends HelixHeadlessColorInput_bas
|
|
|
220
216
|
* be read or pasted into without opening the panel, which is worse for a form
|
|
221
217
|
* where the color is the answer rather than a setting.
|
|
222
218
|
*/
|
|
223
|
-
|
|
219
|
+
trigger?: 'swatch';
|
|
220
|
+
/**
|
|
221
|
+
* Accessible name for the control that opens the panel.
|
|
222
|
+
*/
|
|
223
|
+
triggerLabel: string;
|
|
224
224
|
/**
|
|
225
225
|
* Draws the panel's hue as a wheel around the square, in place of the hue
|
|
226
226
|
* ramp. See Color Picker's `wheel`.
|
|
@@ -68,7 +68,7 @@ let HelixHeadlessColorInput = class HelixHeadlessColorInput extends MixinPickerF
|
|
|
68
68
|
return this.control ?? this.partNamed('trigger');
|
|
69
69
|
}
|
|
70
70
|
renderSwatchValue() {
|
|
71
|
-
return this.
|
|
71
|
+
return this.trigger === 'swatch'
|
|
72
72
|
? html `<span id="swatch-value" hidden>${this.swatchWords}</span>`
|
|
73
73
|
: nothing;
|
|
74
74
|
}
|
|
@@ -139,7 +139,7 @@ let HelixHeadlessColorInput = class HelixHeadlessColorInput extends MixinPickerF
|
|
|
139
139
|
?wheel=${this.wheel}
|
|
140
140
|
?channel-fields=${this.channelFields}
|
|
141
141
|
?no-format=${this.noFormat}
|
|
142
|
-
?no-value=${this.
|
|
142
|
+
?no-value=${this.trigger !== 'swatch'}
|
|
143
143
|
.colorWords=${this.colorWords}
|
|
144
144
|
.format=${this.format ?? 'hex'}
|
|
145
145
|
.value=${this.picked}
|
|
@@ -163,7 +163,7 @@ let HelixHeadlessColorInput = class HelixHeadlessColorInput extends MixinPickerF
|
|
|
163
163
|
comment: it is inside a tagged template, so one would end the
|
|
164
164
|
literal and the error lands on a line further down. -->
|
|
165
165
|
<slot name="start"></slot>
|
|
166
|
-
${this.
|
|
166
|
+
${this.trigger === 'swatch'
|
|
167
167
|
? nothing
|
|
168
168
|
: html `<input
|
|
169
169
|
part="control"
|
|
@@ -186,14 +186,14 @@ let HelixHeadlessColorInput = class HelixHeadlessColorInput extends MixinPickerF
|
|
|
186
186
|
<slot name="end"></slot>
|
|
187
187
|
<button
|
|
188
188
|
part="trigger"
|
|
189
|
-
id=${this.
|
|
189
|
+
id=${this.trigger === 'swatch' ? 'control' : nothing}
|
|
190
190
|
type="button"
|
|
191
191
|
aria-controls="surface"
|
|
192
192
|
aria-disabled=${this.readOnly ? 'true' : nothing}
|
|
193
193
|
aria-expanded=${this.open ? 'true' : 'false'}
|
|
194
194
|
aria-haspopup="dialog"
|
|
195
|
-
aria-label=${this.
|
|
196
|
-
aria-labelledby=${this.
|
|
195
|
+
aria-label=${this.trigger === 'swatch' ? nothing : this.triggerLabel}
|
|
196
|
+
aria-labelledby=${this.trigger === 'swatch'
|
|
197
197
|
? this.labeled
|
|
198
198
|
? `${this.labelId} swatch-value`
|
|
199
199
|
: 'swatch-value'
|
|
@@ -257,13 +257,13 @@ __decorate([
|
|
|
257
257
|
words,
|
|
258
258
|
property({ attribute: 'swatch-label' })
|
|
259
259
|
], HelixHeadlessColorInput.prototype, "swatchLabel", void 0);
|
|
260
|
+
__decorate([
|
|
261
|
+
property({ reflect: true })
|
|
262
|
+
], HelixHeadlessColorInput.prototype, "trigger", void 0);
|
|
260
263
|
__decorate([
|
|
261
264
|
words,
|
|
262
265
|
property({ attribute: 'trigger-label' })
|
|
263
266
|
], HelixHeadlessColorInput.prototype, "triggerLabel", void 0);
|
|
264
|
-
__decorate([
|
|
265
|
-
property({ reflect: true })
|
|
266
|
-
], HelixHeadlessColorInput.prototype, "variant", void 0);
|
|
267
267
|
__decorate([
|
|
268
268
|
property({ reflect: true, type: Boolean })
|
|
269
269
|
], HelixHeadlessColorInput.prototype, "wheel", void 0);
|
|
@@ -94,7 +94,7 @@ declare const HelixHeadlessMegamenu_base: (new (...args: any[]) => import("@fusi
|
|
|
94
94
|
* @cssstate current - A link in the panel carries `aria-current="page"`, so the trigger can show the section you are in.
|
|
95
95
|
* @cssstate from-end - The panel opened in place of one earlier in the bar, so it can enter from the end side.
|
|
96
96
|
* @cssstate from-start - The panel opened in place of one later in the bar, so it can enter from the start side.
|
|
97
|
-
* @cssstate narrow - The page is narrower than `band-below`, so the panel is shown as a band whatever its
|
|
97
|
+
* @cssstate narrow - The page is narrower than `band-below`, so the panel is shown as a band whatever its layout.
|
|
98
98
|
* @cssstate open - The panel is open, and the trigger is shown as current.
|
|
99
99
|
* @cssstate to-end - The panel closed because one earlier in the bar opened, so it can leave toward the end.
|
|
100
100
|
* @cssstate to-start - The panel closed because one later in the bar opened, so it can leave toward the start.
|
|
@@ -139,6 +139,29 @@ export declare class HelixHeadlessMegamenu extends HelixHeadlessMegamenu_base {
|
|
|
139
139
|
* The section's name, used for the default trigger and the panel.
|
|
140
140
|
*/
|
|
141
141
|
label: string;
|
|
142
|
+
/**
|
|
143
|
+
* Whether the panel is a card under the trigger or a band across the page.
|
|
144
|
+
*
|
|
145
|
+
* The resting one is the card, hanging off the trigger and as wide as it
|
|
146
|
+
* needs to be. `band` is the other shape navigations use: a run from edge to
|
|
147
|
+
* edge under the header, with its contents held to the page's own measure, so
|
|
148
|
+
* a set of destinations too wide to sit under one word gets the whole width
|
|
149
|
+
* to lay out in.
|
|
150
|
+
*
|
|
151
|
+
* **A band and not a width, which is why the word is not `full`.** It changes
|
|
152
|
+
* where the panel goes as well as how wide it is, which is why this tier
|
|
153
|
+
* knows about it at all: a band spans the viewport, so there is nothing to
|
|
154
|
+
* measure it against and nothing to flip or shift to, and the placing pass is
|
|
155
|
+
* told not to run. Everything else the popover gives, the top layer and the
|
|
156
|
+
* dismissal, is exactly what such a band needs. `full` is the registry's word
|
|
157
|
+
* for a width, and `Button` and `Dialog` are the two families answering that
|
|
158
|
+
* question; borrowing it here would put a third meaning on it.
|
|
159
|
+
*
|
|
160
|
+
* `layout` and not an axis, for the reason the registry gives: a card under
|
|
161
|
+
* a word and a band under a header are two arrangements this family has, and
|
|
162
|
+
* no other family is being asked the same question.
|
|
163
|
+
*/
|
|
164
|
+
layout?: 'band';
|
|
142
165
|
/**
|
|
143
166
|
* How long a pointer rests on the trigger before the panel opens, in
|
|
144
167
|
* milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
|
|
@@ -162,29 +185,6 @@ export declare class HelixHeadlessMegamenu extends HelixHeadlessMegamenu_base {
|
|
|
162
185
|
* page under its bar.
|
|
163
186
|
*/
|
|
164
187
|
placement: Placement;
|
|
165
|
-
/**
|
|
166
|
-
* Whether the panel is a card under the trigger or a band across the page.
|
|
167
|
-
*
|
|
168
|
-
* The resting one is the card, hanging off the trigger and as wide as it
|
|
169
|
-
* needs to be. `band` is the other shape navigations use: a run from edge to
|
|
170
|
-
* edge under the header, with its contents held to the page's own measure, so
|
|
171
|
-
* a set of destinations too wide to sit under one word gets the whole width
|
|
172
|
-
* to lay out in.
|
|
173
|
-
*
|
|
174
|
-
* **A band and not a width, which is why the word is not `full`.** It changes
|
|
175
|
-
* where the panel goes as well as how wide it is, which is why this tier
|
|
176
|
-
* knows about it at all: a band spans the viewport, so there is nothing to
|
|
177
|
-
* measure it against and nothing to flip or shift to, and the placing pass is
|
|
178
|
-
* told not to run. Everything else the popover gives, the top layer and the
|
|
179
|
-
* dismissal, is exactly what such a band needs. `full` is the registry's word
|
|
180
|
-
* for a width, and `Button` and `Dialog` are the two families answering that
|
|
181
|
-
* question; borrowing it here would put a third meaning on it.
|
|
182
|
-
*
|
|
183
|
-
* `variant` and not an axis, for the reason the registry gives: a card under
|
|
184
|
-
* a word and a band under a header are two arrangements this family has, and
|
|
185
|
-
* no other family is being asked the same question.
|
|
186
|
-
*/
|
|
187
|
-
variant?: 'band';
|
|
188
188
|
private narrow;
|
|
189
189
|
private query;
|
|
190
190
|
/** A band, whether because it was asked for or because there is no room. */
|
|
@@ -133,7 +133,7 @@ let HelixHeadlessMegamenu = class HelixHeadlessMegamenu extends MixinControllerO
|
|
|
133
133
|
static { HelixHeadlessMegamenu_1 = this; }
|
|
134
134
|
static { this.bar = new HandOver((megamenu, to) => megamenu.motion(to)); }
|
|
135
135
|
get banded() {
|
|
136
|
-
return this.
|
|
136
|
+
return this.layout === 'band' || this.narrow;
|
|
137
137
|
}
|
|
138
138
|
watchWidth() {
|
|
139
139
|
this.query?.removeEventListener('change', this.handleWidth);
|
|
@@ -336,6 +336,9 @@ __decorate([
|
|
|
336
336
|
__decorate([
|
|
337
337
|
property()
|
|
338
338
|
], HelixHeadlessMegamenu.prototype, "label", void 0);
|
|
339
|
+
__decorate([
|
|
340
|
+
property({ reflect: true })
|
|
341
|
+
], HelixHeadlessMegamenu.prototype, "layout", void 0);
|
|
339
342
|
__decorate([
|
|
340
343
|
property({ attribute: 'open-delay', converter: timeConverter('open-delay', 120) })
|
|
341
344
|
], HelixHeadlessMegamenu.prototype, "openDelay", void 0);
|
|
@@ -345,9 +348,6 @@ __decorate([
|
|
|
345
348
|
__decorate([
|
|
346
349
|
property()
|
|
347
350
|
], HelixHeadlessMegamenu.prototype, "placement", void 0);
|
|
348
|
-
__decorate([
|
|
349
|
-
property({ reflect: true })
|
|
350
|
-
], HelixHeadlessMegamenu.prototype, "variant", void 0);
|
|
351
351
|
__decorate([
|
|
352
352
|
state()
|
|
353
353
|
], HelixHeadlessMegamenu.prototype, "narrow", void 0);
|
|
@@ -88,12 +88,6 @@ export declare class HelixHeadlessNavigation extends HelixElement {
|
|
|
88
88
|
protected readonly keys: KeyboardNavigationController;
|
|
89
89
|
/** Carries a host `aria-label` and `aria-labelledby` to the `<nav>`. */
|
|
90
90
|
protected readonly aria: AriaForwardController;
|
|
91
|
-
/**
|
|
92
|
-
* Stacks the destinations in a column, for a sidebar, where unset is a row
|
|
93
|
-
* for a header or a footer. The marker follows the current destination down
|
|
94
|
-
* the column as it does along the row.
|
|
95
|
-
*/
|
|
96
|
-
orientation?: 'vertical';
|
|
97
91
|
/**
|
|
98
92
|
* How the destinations are drawn, with `Tabs`' three values and for the same
|
|
99
93
|
* reasons.
|
|
@@ -115,7 +109,13 @@ export declare class HelixHeadlessNavigation extends HelixElement {
|
|
|
115
109
|
* Reflected and left unset by default, so the host carries nothing a
|
|
116
110
|
* consumer's server markup does not already have.
|
|
117
111
|
*/
|
|
118
|
-
|
|
112
|
+
marker?: 'segmented' | 'underlined';
|
|
113
|
+
/**
|
|
114
|
+
* Stacks the destinations in a column, for a sidebar, where unset is a row
|
|
115
|
+
* for a header or a footer. The marker follows the current destination down
|
|
116
|
+
* the column as it does along the row.
|
|
117
|
+
*/
|
|
118
|
+
orientation?: 'vertical';
|
|
119
119
|
private current;
|
|
120
120
|
/** The disclosures among the destinations that are open. */
|
|
121
121
|
private readonly opened;
|
|
@@ -153,10 +153,10 @@ __decorate([
|
|
|
153
153
|
], HelixHeadlessNavigation.prototype, "label", void 0);
|
|
154
154
|
__decorate([
|
|
155
155
|
property({ reflect: true })
|
|
156
|
-
], HelixHeadlessNavigation.prototype, "
|
|
156
|
+
], HelixHeadlessNavigation.prototype, "marker", void 0);
|
|
157
157
|
__decorate([
|
|
158
158
|
property({ reflect: true })
|
|
159
|
-
], HelixHeadlessNavigation.prototype, "
|
|
159
|
+
], HelixHeadlessNavigation.prototype, "orientation", void 0);
|
|
160
160
|
HelixHeadlessNavigation = __decorate([
|
|
161
161
|
customElement('helix-headless-navigation')
|
|
162
162
|
], HelixHeadlessNavigation);
|
|
@@ -56,7 +56,7 @@ import { type Branch } from '../levels.js';
|
|
|
56
56
|
* marked, so `a[aria-current]` and `a[data-depth="2"]` are the hooks for a
|
|
57
57
|
* rule of yours.
|
|
58
58
|
*
|
|
59
|
-
* **The rail.** `
|
|
59
|
+
* **The rail.** `marker="rail"` draws a slim column of ticks at the edge of a
|
|
60
60
|
* long scroll, one per link, with the section in view drawn longer and a deeper
|
|
61
61
|
* level shorter. Hovering or focusing the rail opens a surface holding the
|
|
62
62
|
* links, each on one line, and Escape closes it. A tap opens it too, and it stays
|
|
@@ -82,9 +82,9 @@ import { type Branch } from '../levels.js';
|
|
|
82
82
|
* `--indicator-block-size`, and `data-placed` once it has been placed, for a mark you draw
|
|
83
83
|
* and animate yourself.
|
|
84
84
|
* @csspart nav - The navigation landmark.
|
|
85
|
-
* @csspart surface - The box holding the heading and the navigation under `
|
|
85
|
+
* @csspart surface - The box holding the heading and the navigation under `marker="rail"`, which opens over the ticks.
|
|
86
86
|
* @csspart tick - One tick of the rail, for one link, with `data-current` while its section is in view. It carries the link's depth as `--outline-depth`.
|
|
87
|
-
* @csspart ticks - The column of ticks under `
|
|
87
|
+
* @csspart ticks - The column of ticks under `marker="rail"`, hidden from assistive technology.
|
|
88
88
|
*
|
|
89
89
|
* @cssproperty --outline-depth - The depth of the link a tick stands for, from one, set on each tick.
|
|
90
90
|
*
|
|
@@ -144,22 +144,23 @@ export declare class HelixHeadlessOutline extends HelixElement {
|
|
|
144
144
|
* Empty by default, which leaves the name to `fallbackLabel`.
|
|
145
145
|
*/
|
|
146
146
|
label: string;
|
|
147
|
+
/**
|
|
148
|
+
* The rail form: a slim column of ticks, one per link, that opens on hover,
|
|
149
|
+
* focus, or a tap into a surface holding the links.
|
|
150
|
+
*
|
|
151
|
+
* A marker because no registered axis (emphasis, material, nesting,
|
|
152
|
+
* orientation, separation, shape, size, tone, width) has a value for it, and
|
|
153
|
+
* a rail is an arrangement of this family alone, as Megamenu's
|
|
154
|
+
* `marker="band"` is. It has no default: the outline without it is the list
|
|
155
|
+
* of links.
|
|
156
|
+
*/
|
|
157
|
+
marker?: 'rail';
|
|
147
158
|
/**
|
|
148
159
|
* Which links are marked. `reading` marks the one section being read, the
|
|
149
160
|
* last whose heading has passed the reading line. `visible` marks every
|
|
150
161
|
* section with part of it on screen, and the mark runs across their links.
|
|
151
162
|
*/
|
|
152
163
|
marks: 'reading' | 'visible';
|
|
153
|
-
/**
|
|
154
|
-
* How far below the top of the scroll container a heading counts as reached,
|
|
155
|
-
* in pixels. The scroll container is the window or the panel the sections
|
|
156
|
-
* scroll in.
|
|
157
|
-
*
|
|
158
|
-
* The reading line. A page with a sticky masthead sets this to its height, or
|
|
159
|
-
* a little more: without it the current section changes as a heading slides
|
|
160
|
-
* under the chrome rather than as it reaches the top of what can be seen.
|
|
161
|
-
*/
|
|
162
|
-
offset: number;
|
|
163
164
|
/**
|
|
164
165
|
* The id of the section in view, or empty before anything is measured.
|
|
165
166
|
*
|
|
@@ -180,16 +181,15 @@ export declare class HelixHeadlessOutline extends HelixElement {
|
|
|
180
181
|
/** What `marked` reports, which only `markTo` writes. */
|
|
181
182
|
private markedIds;
|
|
182
183
|
/**
|
|
183
|
-
*
|
|
184
|
-
*
|
|
184
|
+
* How far below the top of the scroll container a heading counts as reached,
|
|
185
|
+
* in pixels. The scroll container is the window or the panel the sections
|
|
186
|
+
* scroll in.
|
|
185
187
|
*
|
|
186
|
-
* A
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* `variant="band"` is. It has no default: the outline without it is the list
|
|
190
|
-
* of links.
|
|
188
|
+
* The reading line. A page with a sticky masthead sets this to its height, or
|
|
189
|
+
* a little more: without it the current section changes as a heading slides
|
|
190
|
+
* under the chrome rather than as it reaches the top of what can be seen.
|
|
191
191
|
*/
|
|
192
|
-
|
|
192
|
+
offset: number;
|
|
193
193
|
/**
|
|
194
194
|
* What `current` reports, which only `mark` writes.
|
|
195
195
|
*
|
|
@@ -19,8 +19,8 @@ let HelixHeadlessOutline = class HelixHeadlessOutline extends HelixElement {
|
|
|
19
19
|
this.follow = false;
|
|
20
20
|
this.label = '';
|
|
21
21
|
this.marks = 'reading';
|
|
22
|
-
this.offset = 0;
|
|
23
22
|
this.markedIds = [];
|
|
23
|
+
this.offset = 0;
|
|
24
24
|
this.reading = '';
|
|
25
25
|
this.frame = 0;
|
|
26
26
|
this.handleScroll = () => {
|
|
@@ -319,7 +319,7 @@ let HelixHeadlessOutline = class HelixHeadlessOutline extends HelixElement {
|
|
|
319
319
|
}
|
|
320
320
|
}
|
|
321
321
|
get rail() {
|
|
322
|
-
return this.
|
|
322
|
+
return this.marker === 'rail';
|
|
323
323
|
}
|
|
324
324
|
setOpen(on) {
|
|
325
325
|
if (!on) {
|
|
@@ -418,7 +418,7 @@ let HelixHeadlessOutline = class HelixHeadlessOutline extends HelixElement {
|
|
|
418
418
|
}
|
|
419
419
|
updated(changed) {
|
|
420
420
|
super.updated(changed);
|
|
421
|
-
if (changed.has('
|
|
421
|
+
if (changed.has('marker') && !this.rail) {
|
|
422
422
|
this.setOpen(false);
|
|
423
423
|
}
|
|
424
424
|
this.assign();
|
|
@@ -469,15 +469,15 @@ __decorate([
|
|
|
469
469
|
__decorate([
|
|
470
470
|
property()
|
|
471
471
|
], HelixHeadlessOutline.prototype, "label", void 0);
|
|
472
|
+
__decorate([
|
|
473
|
+
property({ reflect: true })
|
|
474
|
+
], HelixHeadlessOutline.prototype, "marker", void 0);
|
|
472
475
|
__decorate([
|
|
473
476
|
property()
|
|
474
477
|
], HelixHeadlessOutline.prototype, "marks", void 0);
|
|
475
478
|
__decorate([
|
|
476
479
|
property({ converter: numberConverter('offset', 0, 'pixels') })
|
|
477
480
|
], HelixHeadlessOutline.prototype, "offset", void 0);
|
|
478
|
-
__decorate([
|
|
479
|
-
property({ reflect: true })
|
|
480
|
-
], HelixHeadlessOutline.prototype, "variant", void 0);
|
|
481
481
|
HelixHeadlessOutline = __decorate([
|
|
482
482
|
customElement('helix-headless-outline')
|
|
483
483
|
], HelixHeadlessOutline);
|
|
@@ -25,7 +25,7 @@ declare const HelixHeadlessRadio_base: (new (...args: any[]) => import("@fusion.
|
|
|
25
25
|
* @documentation https://fusion.dev/helix/components/radio
|
|
26
26
|
*
|
|
27
27
|
* @slot - The radio's label.
|
|
28
|
-
* @slot icon - An icon shown beside the label. With `
|
|
28
|
+
* @slot icon - An icon shown beside the label. With `chip`, the icon
|
|
29
29
|
* replaces the visible label, and the label becomes the name read by screen
|
|
30
30
|
* readers. The icon has its own slot so the chip can hide the label and show
|
|
31
31
|
* the icon.
|
|
@@ -159,38 +159,6 @@ export declare class HelixHeadlessSpatialBarChart extends HelixHeadlessSpatialBa
|
|
|
159
159
|
* height.
|
|
160
160
|
*/
|
|
161
161
|
growAgain: boolean;
|
|
162
|
-
/**
|
|
163
|
-
* Draws no box: no edges, grid, numbers, or names, and in a `row` no
|
|
164
|
-
* floor, so the readings stand alone and fill the plot, as a picture on a
|
|
165
|
-
* product's own page does. The
|
|
166
|
-
* table, the summary, the tooltip, and the keys still carry every value,
|
|
167
|
-
* and a renderer draws no box either.
|
|
168
|
-
*/
|
|
169
|
-
noBox: boolean;
|
|
170
|
-
/**
|
|
171
|
-
* What the readout says for a place with no value. `{category}` and
|
|
172
|
-
* `{series}` name the place.
|
|
173
|
-
*/
|
|
174
|
-
openLabel: string;
|
|
175
|
-
/** The plot's name where the chart has none: no `aria-label`, `label`, or table caption. */
|
|
176
|
-
plotLabel: string;
|
|
177
|
-
/**
|
|
178
|
-
* Stacks a category's series into one column, each block standing on the
|
|
179
|
-
* ones before it, so the column is as tall as the category's total, as a
|
|
180
|
-
* flat `Bar Chart` stacks them.
|
|
181
|
-
*
|
|
182
|
-
* Absent stands the series one behind another in depth. Stacked, every
|
|
183
|
-
* series stands in the front row, so none hides another, and the parts of
|
|
184
|
-
* one total read together. A negative reading hangs below zero on the
|
|
185
|
-
* negatives before it. The scale fits the stacks.
|
|
186
|
-
*/
|
|
187
|
-
stacked: boolean;
|
|
188
|
-
/**
|
|
189
|
-
* The `summary` part's sentence. `{count}`, `{series}`, and `{categories}`
|
|
190
|
-
* are the number of bars, series, and categories, written in the locale,
|
|
191
|
-
* and `{low}` and `{high}` the lowest and the highest value.
|
|
192
|
-
*/
|
|
193
|
-
summaryLabel: string;
|
|
194
162
|
/**
|
|
195
163
|
* How the bars stand.
|
|
196
164
|
*
|
|
@@ -224,7 +192,39 @@ export declare class HelixHeadlessSpatialBarChart extends HelixHeadlessSpatialBa
|
|
|
224
192
|
* can give it the latest of a longer table. It is read when the plot's
|
|
225
193
|
* size changes.
|
|
226
194
|
*/
|
|
227
|
-
|
|
195
|
+
layout?: 'diagonal' | 'row';
|
|
196
|
+
/**
|
|
197
|
+
* Draws no box: no edges, grid, numbers, or names, and in a `row` no
|
|
198
|
+
* floor, so the readings stand alone and fill the plot, as a picture on a
|
|
199
|
+
* product's own page does. The
|
|
200
|
+
* table, the summary, the tooltip, and the keys still carry every value,
|
|
201
|
+
* and a renderer draws no box either.
|
|
202
|
+
*/
|
|
203
|
+
noBox: boolean;
|
|
204
|
+
/**
|
|
205
|
+
* What the readout says for a place with no value. `{category}` and
|
|
206
|
+
* `{series}` name the place.
|
|
207
|
+
*/
|
|
208
|
+
openLabel: string;
|
|
209
|
+
/** The plot's name where the chart has none: no `aria-label`, `label`, or table caption. */
|
|
210
|
+
plotLabel: string;
|
|
211
|
+
/**
|
|
212
|
+
* Stacks a category's series into one column, each block standing on the
|
|
213
|
+
* ones before it, so the column is as tall as the category's total, as a
|
|
214
|
+
* flat `Bar Chart` stacks them.
|
|
215
|
+
*
|
|
216
|
+
* Absent stands the series one behind another in depth. Stacked, every
|
|
217
|
+
* series stands in the front row, so none hides another, and the parts of
|
|
218
|
+
* one total read together. A negative reading hangs below zero on the
|
|
219
|
+
* negatives before it. The scale fits the stacks.
|
|
220
|
+
*/
|
|
221
|
+
stacked: boolean;
|
|
222
|
+
/**
|
|
223
|
+
* The `summary` part's sentence. `{count}`, `{series}`, and `{categories}`
|
|
224
|
+
* are the number of bars, series, and categories, written in the locale,
|
|
225
|
+
* and `{low}` and `{high}` the lowest and the highest value.
|
|
226
|
+
*/
|
|
227
|
+
summaryLabel: string;
|
|
228
228
|
/** Whether a renderer has drawn the bars, which hides the chart's own drawing. */
|
|
229
229
|
private rendered;
|
|
230
230
|
/** Where the chart's own drawing is seen from, which a drag or Shift with an arrow turns. */
|
|
@@ -197,7 +197,7 @@ let HelixHeadlessSpatialBarChart = class HelixHeadlessSpatialBarChart extends Mi
|
|
|
197
197
|
}
|
|
198
198
|
get fits() {
|
|
199
199
|
const box = this.partNamed('fallback');
|
|
200
|
-
if (!box || !this.
|
|
200
|
+
if (!box || !this.layout || typeof getComputedStyle !== 'function') {
|
|
201
201
|
return undefined;
|
|
202
202
|
}
|
|
203
203
|
const style = getComputedStyle(box);
|
|
@@ -331,7 +331,7 @@ let HelixHeadlessSpatialBarChart = class HelixHeadlessSpatialBarChart extends Mi
|
|
|
331
331
|
${readable ? this.renderSummary(field) : this.renderStatus()}${this.renderSonify()}${this.renderTable()}`;
|
|
332
332
|
}
|
|
333
333
|
renderFallback(read, at) {
|
|
334
|
-
const layout = this.
|
|
334
|
+
const layout = this.layout ?? 'grid';
|
|
335
335
|
const lined = layout === 'grid' ? undefined : layout;
|
|
336
336
|
const bare = this.noBox || lined !== undefined;
|
|
337
337
|
const view = boxView(read.axes, this.camera, [], bare);
|
|
@@ -489,6 +489,9 @@ __decorate([
|
|
|
489
489
|
__decorate([
|
|
490
490
|
property({ attribute: 'grow-again', reflect: true, type: Boolean })
|
|
491
491
|
], HelixHeadlessSpatialBarChart.prototype, "growAgain", void 0);
|
|
492
|
+
__decorate([
|
|
493
|
+
property({ reflect: true })
|
|
494
|
+
], HelixHeadlessSpatialBarChart.prototype, "layout", void 0);
|
|
492
495
|
__decorate([
|
|
493
496
|
property({ attribute: 'no-box', reflect: true, type: Boolean })
|
|
494
497
|
], HelixHeadlessSpatialBarChart.prototype, "noBox", void 0);
|
|
@@ -507,9 +510,6 @@ __decorate([
|
|
|
507
510
|
words,
|
|
508
511
|
property({ attribute: 'summary-label' })
|
|
509
512
|
], HelixHeadlessSpatialBarChart.prototype, "summaryLabel", void 0);
|
|
510
|
-
__decorate([
|
|
511
|
-
property({ reflect: true })
|
|
512
|
-
], HelixHeadlessSpatialBarChart.prototype, "variant", void 0);
|
|
513
513
|
__decorate([
|
|
514
514
|
state()
|
|
515
515
|
], HelixHeadlessSpatialBarChart.prototype, "rendered", void 0);
|