@fusion.dev/helix-headless 0.51.0 → 0.52.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 +6 -6
- package/dist/carousel/root/carousel-root.d.ts +11 -4
- package/dist/carousel/root/carousel-root.js +2 -3
- package/dist/splitter/root/splitter-root.d.ts +29 -7
- package/dist/splitter/root/splitter-root.js +4 -2
- package/package.json +5 -5
- package/types/jsx.d.ts +12 -8
- package/types/vue.d.ts +1 -1
package/custom-elements.json
CHANGED
|
@@ -9988,7 +9988,7 @@
|
|
|
9988
9988
|
}
|
|
9989
9989
|
}
|
|
9990
9990
|
],
|
|
9991
|
-
"description": "The leading padding the track keeps for a slide to draw its own edge in.\n\nA styled track carries one so a slide's shadow and focus ring have\nsomewhere to go: a scroll container clips at its padding box, and a slide\nflush against that edge loses whatever it paints outside itself. The\nheadless tier has no stylesheet and so no padding, and this reads zero\nthere, which is why both tiers can share the arithmetic below.\n\nPhysical sides rather than logical, to match the physical `offsetLeft` and\n`offsetTop` it is subtracted from
|
|
9991
|
+
"description": "The leading padding the track keeps for a slide to draw its own edge in.\n\nA styled track carries one so a slide's shadow and focus ring have\nsomewhere to go: a scroll container clips at its padding box, and a slide\nflush against that edge loses whatever it paints outside itself. The\nheadless tier has no stylesheet and so no padding, and this reads zero\nthere, which is why both tiers can share the arithmetic below.\n\nPhysical sides rather than logical, to match the physical `offsetLeft` and\n`offsetTop` it is subtracted from.\n\n**The side read is the side the track scrolls on, and not one side standing\nfor four.** They are one length on a track laid out at the defaults and\nstop being one the moment a consumer raises `--carousel-bleed`, which the\nhook exists to invite: a slide on `--helix-shadow-lg` reaches 44px and is\ntold to ask for it. So a horizontal track's room is its inline padding and\na vertical one's is its block padding, and each sheet puts the bleed where\nthe scroller clips. Reading one side for both would have a vertical track\nmeasuring a length nothing on its axis was laid out with."
|
|
9992
9992
|
},
|
|
9993
9993
|
{
|
|
9994
9994
|
"kind": "method",
|
|
@@ -10594,7 +10594,7 @@
|
|
|
10594
10594
|
"helix": {
|
|
10595
10595
|
"category": "layout",
|
|
10596
10596
|
"since": "0.1.0",
|
|
10597
|
-
"status": "
|
|
10597
|
+
"status": "stable",
|
|
10598
10598
|
"documentation": "https://fusion.dev/helix/components/carousel",
|
|
10599
10599
|
"aliases": [
|
|
10600
10600
|
"Slider",
|
|
@@ -80928,7 +80928,7 @@
|
|
|
80928
80928
|
"declarations": [
|
|
80929
80929
|
{
|
|
80930
80930
|
"kind": "class",
|
|
80931
|
-
"description": "**One axis, and nesting is how you get two.** A splitter inside a splitter\ngives back the cross, and gives the three-pane and four-pane arrangements a\nsingle divider never had.\n\n**Where two of them cross there is a corner, and it moves both.** A splitter\nslotted into a pane of another, at right angles to it, grows a handle at the\ncrossing: `move` under the pointer, both arrow axes on the keyboard, and a\ndrag that carries the two positions at once. It appears at `firstUpdated`\nrather than in the served markup, being an affordance rather than content,\nand a splitter with no corner yet is a splitter with two working dividers.\n\n**The divider is a real `role=\"separator\"` with `aria-valuenow`**, moved by\nthe arrow keys as well as by pointer, with `Home` and `End` taking it to its\nbounds. A drag in progress is a state rather than `:hover`, so both dividers\na corner moves are lit for as long as it moves them.\n\n**It goes where it is put, all the way to either end.** `min` and `max` are\nnothing and everything unless a consumer says otherwise, because a divider\nthat stops short of the edge gives a reader no way to put a pane away.\n\n**A pane can be shut, and that is not the same as a divider at the edge.**\nThe geometry is identical and the knowledge is not: only a shut pane knows\nwhere to open back to. So `collapsed` is a second state rather than a reading\nof the position, and the position it opens to is the
|
|
80931
|
+
"description": "**One axis, and nesting is how you get two.** A splitter inside a splitter\ngives back the cross, and gives the three-pane and four-pane arrangements a\nsingle divider never had.\n\n**Where two of them cross there is a corner, and it moves both.** A splitter\nslotted into a pane of another, at right angles to it, grows a handle at the\ncrossing: `move` under the pointer, both arrow axes on the keyboard, and a\ndrag that carries the two positions at once. It appears at `firstUpdated`\nrather than in the served markup, being an affordance rather than content,\nand a splitter with no corner yet is a splitter with two working dividers.\n\n**The divider is a real `role=\"separator\"` with `aria-valuenow`**, moved by\nthe arrow keys as well as by pointer, with `Home` and `End` taking it to its\nbounds. A drag in progress is a state rather than `:hover`, so both dividers\na corner moves are lit for as long as it moves them.\n\n**It goes where it is put, all the way to either end.** `min` and `max` are\nnothing and everything unless a consumer says otherwise, because a divider\nthat stops short of the edge gives a reader no way to put a pane away.\n\n**A pane can be shut, and that is not the same as a divider at the edge.**\nThe geometry is identical and the knowledge is not: only a shut pane knows\nwhere to open back to. So `collapsed` is a second state rather than a reading\nof the position, and the position it opens to is where the gesture that shut\nit began, whichever gesture that was: a drag takes its reading on the press,\nand every other door takes it in `settle`, nothing having been applied there\nyet. `collapsed-size` keeps a sliver showing where a pane has a tab strip\nworth leaving, and collapse overrides `min` and `max`, which is what those\nare for.",
|
|
80932
80932
|
"name": "HelixHeadlessSplitter",
|
|
80933
80933
|
"cssProperties": [
|
|
80934
80934
|
{
|
|
@@ -81149,7 +81149,7 @@
|
|
|
81149
81149
|
},
|
|
81150
81150
|
"privacy": "private",
|
|
81151
81151
|
"default": "undefined",
|
|
81152
|
-
"description": "Where the divider was before the gesture that may be about to shut it.\n\nA drag writes a position on every pointer move, so by the time it reaches\nthe edge the number it started from is gone. Taken once, on the press, and\nwritten back if the gesture ends shut, so the pane opens to where it was\nrather than to the edge it was dragged against."
|
|
81152
|
+
"description": "Where the divider was before the gesture that may be about to shut it.\n\nA drag writes a position on every pointer move, so by the time it reaches\nthe edge the number it started from is gone. Taken once, on the press, and\nwritten back if the gesture ends shut, so the pane opens to where it was\nrather than to the edge it was dragged against.\n\n**A pointer gesture only, because it is the only one that loses it**, and\n`settle` answers for the rest from `began`: a key and a double click apply\nnothing before they settle, so where the divider is at the top of that\nmethod is where it was. Read once and cleared there, exactly as `began` is,\nand for the second reason as well as the first. Left standing it measured\nthe next gesture against the last one's press, so a collapse pressed from\n20 reopened at the 60 a drag had started from an hour earlier."
|
|
81153
81153
|
},
|
|
81154
81154
|
{
|
|
81155
81155
|
"kind": "field",
|
|
@@ -81399,7 +81399,7 @@
|
|
|
81399
81399
|
}
|
|
81400
81400
|
}
|
|
81401
81401
|
],
|
|
81402
|
-
"description": "Says the arrangement has settled, so a consumer can keep it.\n\nThrough the audited path, so a consumer who owns `position` is told what was\nasked for and decides, and one who does not has already had it applied.\n\n**A refused resize ends the resize and not the gesture.** `shutAt` reads the\nposition the gesture ended on, so the collapse is computed from a number the\nconsumer may have declined, and the reading this replaces was that the two\nare therefore one decision: refuse the first and the second cannot stand.\nThat is a reasonable thing to believe about a splitter nobody else owns, and\nit takes \"no\" to mean the gesture is over. What it misses is that a consumer\nwho owns the position refuses in order to *take* the decision, not to end\nit. The sandbox two folders away refuses every `helix-before-resize` from\nthe splitter inside it, re-announces the same move in its own vocabulary and\nwrites the answer back through `position`, which is what makes it the single\ndecision point; returning on its refusal left `panel-collapsed-size` inert\nthere, the shipped `with-a-panel` example measuring a 0px panel against the\n36
|
|
81402
|
+
"description": "Says the arrangement has settled, so a consumer can keep it.\n\nThrough the audited path, so a consumer who owns `position` is told what was\nasked for and decides, and one who does not has already had it applied.\n\n**A refused resize ends the resize and not the gesture.** `shutAt` reads the\nposition the gesture ended on, so the collapse is computed from a number the\nconsumer may have declined, and the reading this replaces was that the two\nare therefore one decision: refuse the first and the second cannot stand.\nThat is a reasonable thing to believe about a splitter nobody else owns, and\nit takes \"no\" to mean the gesture is over. What it misses is that a consumer\nwho owns the position refuses in order to *take* the decision, not to end\nit. The sandbox two folders away refuses every `helix-before-resize` from\nthe splitter inside it, re-announces the same move in its own vocabulary and\nwrites the answer back through `position`, which is what makes it the single\ndecision point; returning on its refusal left `panel-collapsed-size` inert\nthere, the shipped `with-a-panel` example measuring a 0px panel against the\n36 it asks for. So the collapse is reached either way and is refused, or\nnot, on its own.\n\n**Which is honest because the collapse carries its own position.** A shut\npane sits at `collapsed-size`, which is where `position` reads it from once\n`collapsed` is set, and never at the number the resize named: refuse a drag\nto 100 on a splitter with `collapsed-size=\"10\"`, allow the collapse, and the\ndivider is at 90. Nothing writes the refused number either, `requestChange`\napplying nothing when it is refused and the collapse below writing the open\nposition back over whatever a drag had already drawn, so a consumer who says\nno to the position and yes to the collapse gets the pane shut and keeps the\nnumber they had to reopen to. The two coincide only where `collapsed-size`\nis zero, and the states differ even there: a shut pane knows where to open\nback to and a divider parked at the edge does not.\n\nRefusing the collapse alone still leaves the resize, which is the other way\nround and is coherent: the divider goes where the drag put it and the pane\nis not declared shut.\n\n**The open position is taken here for every door but the pointer's, which\nis the same split `began` makes and for the same reason.** A drag has\noverwritten the position on the way to the edge, so it reads it on the\npress; a key, a double click and `moveTo` apply nothing until the request\nbelow, so where the divider is at the top of this method is where it was.\nCaptured on the press alone, the class docstring's promise that a shut pane\nknows where to open back to held for a drag and for nothing else: measured\n17 Sep 2026, `Home` on a splitter resting at 60 shut the start pane and\nreopened it at 0, the resize above having written the edge and the collapse\nhaving nothing to put back. Stale, it was worse than absent, `opened` never\nbeing cleared: a press at 60, then a key collapse from 20, reopened at 60.\n\n**A gesture that moved nothing announces nothing, and this is the one place\nthat can say so.** A change carrying the position the divider already had\nrewrites a consumer's stored value from a gesture that moved nothing:\nharmless where the value round-trips exactly, and not where it does not,\nwhich is any consumer storing pixels and dividing by a box. The separator's\n`pointerup` held that as an early return of its own and was the only door\nwith one. There are five: the separator's pointer and arrows, the corner's\npointer and arrows, and a double click through `reset`, and `moveTo` is a\nsixth a consumer can open. Measured in Chromium 17 Sep 2026 on the built\nbundle, every door but the guarded one announced a move of zero: a corner\npress with nothing between announced on both splitters, `Home` on a divider\nalready at its minimum announced, and a double click on one already at its\ndefault announced.\n\n**Measured against where the gesture began, and not against `position`.**\n`move` applies as it goes, so by the time a drag settles the position is\nalready the number about to be announced, and comparing those two would\nsilence every drag there is. `began` is the press; a discrete path takes\nnone and compares against the position, which for it is the same thing.\n\n**Per divider rather than per gesture, which is the corner's question.** The\ncorner drives two at once, so \"moved nothing\" cannot mean \"neither moved\":\na drag along one axis moves one of them, and the other would be announcing\na number nobody asked to change. Each settles on its own and guards on its\nown, so the one that moved still announces while the one that did not stays\nquiet. That is also why the guard cannot live in `handleCornerUp`, which\nonly ever sees the pair.\n\n**The collapse counts as movement, because a refusal can leave the two\ndisagreeing.** A consumer who refuses `helix-before-collapse` has a pane at\nthe edge that is not declared shut, and a guard reading the position alone\nwould then never offer the collapse again: `Home` is already at the\nminimum, so every later press is a move of zero."
|
|
81403
81403
|
},
|
|
81404
81404
|
{
|
|
81405
81405
|
"kind": "field",
|
|
@@ -82021,7 +82021,7 @@
|
|
|
82021
82021
|
"helix": {
|
|
82022
82022
|
"category": "layout",
|
|
82023
82023
|
"since": "0.1.0",
|
|
82024
|
-
"status": "
|
|
82024
|
+
"status": "stable",
|
|
82025
82025
|
"documentation": "https://fusion.dev/helix/components/splitter",
|
|
82026
82026
|
"aliases": [
|
|
82027
82027
|
"SplitPane",
|
|
@@ -20,7 +20,7 @@ import { type PropertyValues, type TemplateResult } from 'lit';
|
|
|
20
20
|
* performs, and it is first in the tab order.
|
|
21
21
|
*
|
|
22
22
|
* @since 0.1.0
|
|
23
|
-
* @status
|
|
23
|
+
* @status stable
|
|
24
24
|
* @category layout
|
|
25
25
|
* @aliases Slider, Gallery, Slideshow
|
|
26
26
|
* @documentation https://fusion.dev/helix/components/carousel
|
|
@@ -390,9 +390,16 @@ export declare class HelixHeadlessCarousel extends HelixElement {
|
|
|
390
390
|
* there, which is why both tiers can share the arithmetic below.
|
|
391
391
|
*
|
|
392
392
|
* Physical sides rather than logical, to match the physical `offsetLeft` and
|
|
393
|
-
* `offsetTop` it is subtracted from.
|
|
394
|
-
*
|
|
395
|
-
*
|
|
393
|
+
* `offsetTop` it is subtracted from.
|
|
394
|
+
*
|
|
395
|
+
* **The side read is the side the track scrolls on, and not one side standing
|
|
396
|
+
* for four.** They are one length on a track laid out at the defaults and
|
|
397
|
+
* stop being one the moment a consumer raises `--carousel-bleed`, which the
|
|
398
|
+
* hook exists to invite: a slide on `--helix-shadow-lg` reaches 44px and is
|
|
399
|
+
* told to ask for it. So a horizontal track's room is its inline padding and
|
|
400
|
+
* a vertical one's is its block padding, and each sheet puts the bleed where
|
|
401
|
+
* the scroller clips. Reading one side for both would have a vertical track
|
|
402
|
+
* measuring a length nothing on its axis was laid out with.
|
|
396
403
|
*/
|
|
397
404
|
private bleed;
|
|
398
405
|
/**
|
|
@@ -297,15 +297,14 @@ let HelixHeadlessCarousel = class HelixHeadlessCarousel extends HelixElement {
|
|
|
297
297
|
}
|
|
298
298
|
updated(changed) {
|
|
299
299
|
super.updated(changed);
|
|
300
|
-
const count = this.slides.length;
|
|
301
300
|
const drawn = this.renderRoot.querySelectorAll('[part="slide"]').length;
|
|
302
301
|
if (changed.has('index') || (this.scrolledFor === 0 && drawn > 0)) {
|
|
303
302
|
this.scrollToIndex();
|
|
304
303
|
}
|
|
305
304
|
this.scrolledFor = drawn;
|
|
306
305
|
this.runTimer();
|
|
307
|
-
if (
|
|
308
|
-
this.goTo(
|
|
306
|
+
if (this.slides.length > 0 && this.index > this.positions - 1) {
|
|
307
|
+
this.goTo(this.positions - 1);
|
|
309
308
|
}
|
|
310
309
|
this.watchPane();
|
|
311
310
|
this.assign();
|
|
@@ -27,13 +27,15 @@ import { type PropertyValues, type TemplateResult } from 'lit';
|
|
|
27
27
|
* **A pane can be shut, and that is not the same as a divider at the edge.**
|
|
28
28
|
* The geometry is identical and the knowledge is not: only a shut pane knows
|
|
29
29
|
* where to open back to. So `collapsed` is a second state rather than a reading
|
|
30
|
-
* of the position, and the position it opens to is the
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
30
|
+
* of the position, and the position it opens to is where the gesture that shut
|
|
31
|
+
* it began, whichever gesture that was: a drag takes its reading on the press,
|
|
32
|
+
* and every other door takes it in `settle`, nothing having been applied there
|
|
33
|
+
* yet. `collapsed-size` keeps a sliver showing where a pane has a tab strip
|
|
34
|
+
* worth leaving, and collapse overrides `min` and `max`, which is what those
|
|
35
|
+
* are for.
|
|
34
36
|
*
|
|
35
37
|
* @since 0.1.0
|
|
36
|
-
* @status
|
|
38
|
+
* @status stable
|
|
37
39
|
* @category layout
|
|
38
40
|
* @aliases SplitPane, Resizable, SplitView
|
|
39
41
|
* @documentation https://fusion.dev/helix/components/splitter
|
|
@@ -181,6 +183,14 @@ export declare class HelixHeadlessSplitter extends HelixElement {
|
|
|
181
183
|
* the edge the number it started from is gone. Taken once, on the press, and
|
|
182
184
|
* written back if the gesture ends shut, so the pane opens to where it was
|
|
183
185
|
* rather than to the edge it was dragged against.
|
|
186
|
+
*
|
|
187
|
+
* **A pointer gesture only, because it is the only one that loses it**, and
|
|
188
|
+
* `settle` answers for the rest from `began`: a key and a double click apply
|
|
189
|
+
* nothing before they settle, so where the divider is at the top of that
|
|
190
|
+
* method is where it was. Read once and cleared there, exactly as `began` is,
|
|
191
|
+
* and for the second reason as well as the first. Left standing it measured
|
|
192
|
+
* the next gesture against the last one's press, so a collapse pressed from
|
|
193
|
+
* 20 reopened at the 60 a drag had started from an hour earlier.
|
|
184
194
|
*/
|
|
185
195
|
private opened;
|
|
186
196
|
/**
|
|
@@ -343,8 +353,8 @@ export declare class HelixHeadlessSplitter extends HelixElement {
|
|
|
343
353
|
* writes the answer back through `position`, which is what makes it the single
|
|
344
354
|
* decision point; returning on its refusal left `panel-collapsed-size` inert
|
|
345
355
|
* there, the shipped `with-a-panel` example measuring a 0px panel against the
|
|
346
|
-
* 36
|
|
347
|
-
*
|
|
356
|
+
* 36 it asks for. So the collapse is reached either way and is refused, or
|
|
357
|
+
* not, on its own.
|
|
348
358
|
*
|
|
349
359
|
* **Which is honest because the collapse carries its own position.** A shut
|
|
350
360
|
* pane sits at `collapsed-size`, which is where `position` reads it from once
|
|
@@ -362,6 +372,18 @@ export declare class HelixHeadlessSplitter extends HelixElement {
|
|
|
362
372
|
* round and is coherent: the divider goes where the drag put it and the pane
|
|
363
373
|
* is not declared shut.
|
|
364
374
|
*
|
|
375
|
+
* **The open position is taken here for every door but the pointer's, which
|
|
376
|
+
* is the same split `began` makes and for the same reason.** A drag has
|
|
377
|
+
* overwritten the position on the way to the edge, so it reads it on the
|
|
378
|
+
* press; a key, a double click and `moveTo` apply nothing until the request
|
|
379
|
+
* below, so where the divider is at the top of this method is where it was.
|
|
380
|
+
* Captured on the press alone, the class docstring's promise that a shut pane
|
|
381
|
+
* knows where to open back to held for a drag and for nothing else: measured
|
|
382
|
+
* 17 Sep 2026, `Home` on a splitter resting at 60 shut the start pane and
|
|
383
|
+
* reopened it at 0, the resize above having written the edge and the collapse
|
|
384
|
+
* having nothing to put back. Stale, it was worse than absent, `opened` never
|
|
385
|
+
* being cleared: a press at 60, then a key collapse from 20, reopened at 60.
|
|
386
|
+
*
|
|
365
387
|
* **A gesture that moved nothing announces nothing, and this is the one place
|
|
366
388
|
* that can say so.** A change carrying the position the divider already had
|
|
367
389
|
* rewrites a consumer's stored value from a gesture that moved nothing:
|
|
@@ -302,6 +302,8 @@ let HelixHeadlessSplitter = HelixHeadlessSplitter_1 = class HelixHeadlessSplitte
|
|
|
302
302
|
const shut = this.shutAt(wanted);
|
|
303
303
|
const began = this.began ?? this.position;
|
|
304
304
|
this.began = undefined;
|
|
305
|
+
const opened = this.opened ?? (this.collapsed ? undefined : began);
|
|
306
|
+
this.opened = undefined;
|
|
305
307
|
if (wanted === began && shut === this.collapsed) {
|
|
306
308
|
return;
|
|
307
309
|
}
|
|
@@ -319,8 +321,8 @@ let HelixHeadlessSplitter = HelixHeadlessSplitter_1 = class HelixHeadlessSplitte
|
|
|
319
321
|
requestChange({
|
|
320
322
|
apply: (value) => {
|
|
321
323
|
const previous = this.collapsed;
|
|
322
|
-
if (value !== '' &&
|
|
323
|
-
this.positionState =
|
|
324
|
+
if (value !== '' && opened !== undefined) {
|
|
325
|
+
this.positionState = opened;
|
|
324
326
|
}
|
|
325
327
|
this.collapsedState = value === '' ? 'none' : value;
|
|
326
328
|
this.requestUpdate('collapsed', previous);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix-headless",
|
|
3
3
|
"description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.52.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -46,14 +46,14 @@
|
|
|
46
46
|
},
|
|
47
47
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@fusion.dev/helix-core": "0.
|
|
50
|
-
"@fusion.dev/helix-icons": "0.
|
|
49
|
+
"@fusion.dev/helix-core": "0.52.0",
|
|
50
|
+
"@fusion.dev/helix-icons": "0.52.0",
|
|
51
51
|
"uqr": "^0.1.3"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
55
|
-
"@fusion.dev/helix-cem": "0.
|
|
56
|
-
"@fusion.dev/helix-testing": "0.
|
|
55
|
+
"@fusion.dev/helix-cem": "0.52.0",
|
|
56
|
+
"@fusion.dev/helix-testing": "0.52.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",
|
package/types/jsx.d.ts
CHANGED
|
@@ -31187,10 +31187,12 @@ export type CustomElements = {
|
|
|
31187
31187
|
* **A pane can be shut, and that is not the same as a divider at the edge.**
|
|
31188
31188
|
* The geometry is identical and the knowledge is not: only a shut pane knows
|
|
31189
31189
|
* where to open back to. So `collapsed` is a second state rather than a reading
|
|
31190
|
-
* of the position, and the position it opens to is the
|
|
31191
|
-
*
|
|
31192
|
-
*
|
|
31193
|
-
*
|
|
31190
|
+
* of the position, and the position it opens to is where the gesture that shut
|
|
31191
|
+
* it began, whichever gesture that was: a drag takes its reading on the press,
|
|
31192
|
+
* and every other door takes it in `settle`, nothing having been applied there
|
|
31193
|
+
* yet. `collapsed-size` keeps a sliver showing where a pane has a tab strip
|
|
31194
|
+
* worth leaving, and collapse overrides `min` and `max`, which is what those
|
|
31195
|
+
* are for.
|
|
31194
31196
|
*
|
|
31195
31197
|
* ## Attributes & Properties
|
|
31196
31198
|
*
|
|
@@ -49269,10 +49271,12 @@ export type CustomElementsSolidJs = {
|
|
|
49269
49271
|
* **A pane can be shut, and that is not the same as a divider at the edge.**
|
|
49270
49272
|
* The geometry is identical and the knowledge is not: only a shut pane knows
|
|
49271
49273
|
* where to open back to. So `collapsed` is a second state rather than a reading
|
|
49272
|
-
* of the position, and the position it opens to is the
|
|
49273
|
-
*
|
|
49274
|
-
*
|
|
49275
|
-
*
|
|
49274
|
+
* of the position, and the position it opens to is where the gesture that shut
|
|
49275
|
+
* it began, whichever gesture that was: a drag takes its reading on the press,
|
|
49276
|
+
* and every other door takes it in `settle`, nothing having been applied there
|
|
49277
|
+
* yet. `collapsed-size` keeps a sliver showing where a pane has a tab strip
|
|
49278
|
+
* worth leaving, and collapse overrides `min` and `max`, which is what those
|
|
49279
|
+
* are for.
|
|
49276
49280
|
*
|
|
49277
49281
|
* ## Attributes & Properties
|
|
49278
49282
|
*
|
package/types/vue.d.ts
CHANGED
|
@@ -9793,7 +9793,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
9793
9793
|
HelixHeadlessSpeedDialVueProps,
|
|
9794
9794
|
HelixHeadlessSpeedDialVueEvents
|
|
9795
9795
|
>;
|
|
9796
|
-
/** **One axis, and nesting is how you get two.** A splitter inside a splitter gives back the cross, and gives the three-pane and four-pane arrangements a single divider never had. **Where two of them cross there is a corner, and it moves both.** A splitter slotted into a pane of another, at right angles to it, grows a handle at the crossing: 'move' under the pointer, both arrow axes on the keyboard, and a drag that carries the two positions at once. It appears at 'firstUpdated' rather than in the served markup, being an affordance rather than content, and a splitter with no corner yet is a splitter with two working dividers. **The divider is a real 'role="separator"' with 'aria-valuenow'**, moved by the arrow keys as well as by pointer, with 'Home' and 'End' taking it to its bounds. A drag in progress is a state rather than ':hover', so both dividers a corner moves are lit for as long as it moves them. **It goes where it is put, all the way to either end.** 'min' and 'max' are nothing and everything unless a consumer says otherwise, because a divider that stops short of the edge gives a reader no way to put a pane away. **A pane can be shut, and that is not the same as a divider at the edge.** The geometry is identical and the knowledge is not: only a shut pane knows where to open back to. So 'collapsed' is a second state rather than a reading of the position, and the position it opens to is the
|
|
9796
|
+
/** **One axis, and nesting is how you get two.** A splitter inside a splitter gives back the cross, and gives the three-pane and four-pane arrangements a single divider never had. **Where two of them cross there is a corner, and it moves both.** A splitter slotted into a pane of another, at right angles to it, grows a handle at the crossing: 'move' under the pointer, both arrow axes on the keyboard, and a drag that carries the two positions at once. It appears at 'firstUpdated' rather than in the served markup, being an affordance rather than content, and a splitter with no corner yet is a splitter with two working dividers. **The divider is a real 'role="separator"' with 'aria-valuenow'**, moved by the arrow keys as well as by pointer, with 'Home' and 'End' taking it to its bounds. A drag in progress is a state rather than ':hover', so both dividers a corner moves are lit for as long as it moves them. **It goes where it is put, all the way to either end.** 'min' and 'max' are nothing and everything unless a consumer says otherwise, because a divider that stops short of the edge gives a reader no way to put a pane away. **A pane can be shut, and that is not the same as a divider at the edge.** The geometry is identical and the knowledge is not: only a shut pane knows where to open back to. So 'collapsed' is a second state rather than a reading of the position, and the position it opens to is where the gesture that shut it began, whichever gesture that was: a drag takes its reading on the press, and every other door takes it in 'settle', nothing having been applied there yet. 'collapsed-size' keeps a sliver showing where a pane has a tab strip worth leaving, and collapse overrides 'min' and 'max', which is what those are for. */
|
|
9797
9797
|
"helix-headless-splitter": DefineCustomElement<
|
|
9798
9798
|
HelixHeadlessSplitter,
|
|
9799
9799
|
HelixHeadlessSplitterVueProps,
|