@jsenv/navi 0.29.76 → 0.29.78
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/dist/jsenv_navi.js +57 -2
- package/dist/jsenv_navi.js.map +8 -4
- package/package.json +2 -2
package/dist/jsenv_navi.js
CHANGED
|
@@ -30255,6 +30255,11 @@ const css$X = /* css */`
|
|
|
30255
30255
|
outline-offset: 0;
|
|
30256
30256
|
box-shadow: var(--dialog-box-shadow);
|
|
30257
30257
|
|
|
30258
|
+
/* A gesture landing on the dialog belongs to the dialog: what it cannot
|
|
30259
|
+
scroll (a short body, an axis with nowhere to go) must not travel to
|
|
30260
|
+
whatever is behind. */
|
|
30261
|
+
overscroll-behavior: none;
|
|
30262
|
+
|
|
30258
30263
|
/* Docking answers a different question than --dialog-max-width: a sheet
|
|
30259
30264
|
spans its container's full width, flush against the two side edges —
|
|
30260
30265
|
that shape IS the mode — while the caller's ceiling was an answer about
|
|
@@ -31125,7 +31130,11 @@ const useDialogProps = props => {
|
|
|
31125
31130
|
}));
|
|
31126
31131
|
}
|
|
31127
31132
|
if (scrollCapture) {
|
|
31128
|
-
|
|
31133
|
+
// A modal dialog always has its own ::backdrop; the custom renderer has
|
|
31134
|
+
// the backdrop element when it renders one.
|
|
31135
|
+
addCleanup(trapScrollInside(dialogEl, {
|
|
31136
|
+
backdrop: isModal || backdropEl
|
|
31137
|
+
}));
|
|
31129
31138
|
} else if (!isModal) {
|
|
31130
31139
|
// A local dialog is confined to its positioned ancestor, and so is its
|
|
31131
31140
|
// backdrop (inset: 0 covers the scrollport, not the scrolled content):
|
|
@@ -32662,7 +32671,9 @@ const usePopoverProps = props => {
|
|
|
32662
32671
|
// here.
|
|
32663
32672
|
};
|
|
32664
32673
|
if (scrollCapture) {
|
|
32665
|
-
addCleanup(trapScrollInside(popoverEl
|
|
32674
|
+
addCleanup(trapScrollInside(popoverEl, {
|
|
32675
|
+
backdrop: backdropEl
|
|
32676
|
+
}));
|
|
32666
32677
|
}
|
|
32667
32678
|
if (focusCapture) {
|
|
32668
32679
|
addCleanup(trapFocusInside(popoverEl, {
|
|
@@ -57384,6 +57395,28 @@ const css$w = /* css */`
|
|
|
57384
57395
|
the corners would visually overflow the rounded corners during scroll. */
|
|
57385
57396
|
overflow: hidden;
|
|
57386
57397
|
|
|
57398
|
+
/* overflow="visible" asks for the exact opposite of the clipping above: the
|
|
57399
|
+
content must be free to paint outside the list's box and to overflow into
|
|
57400
|
+
whatever scroll container is around it. Setting it on the inner scroll
|
|
57401
|
+
element alone changes nothing visible — this frame would clip it right
|
|
57402
|
+
back — so the frame has to let go of it too, and with it of the rounded
|
|
57403
|
+
corners it was clipping to. The two cannot both be true.
|
|
57404
|
+
An axis asked to be visible pairs with "clip" on the other one rather
|
|
57405
|
+
than "hidden": mixing visible with a scrollport value makes the browser
|
|
57406
|
+
compute the visible one to "auto" (a scrollport again), while
|
|
57407
|
+
visible/clip is the one pairing it keeps as written. */
|
|
57408
|
+
&[data-overflow-visible="both"] {
|
|
57409
|
+
overflow: visible;
|
|
57410
|
+
}
|
|
57411
|
+
&[data-overflow-visible="x"] {
|
|
57412
|
+
overflow-x: visible;
|
|
57413
|
+
overflow-y: clip;
|
|
57414
|
+
}
|
|
57415
|
+
&[data-overflow-visible="y"] {
|
|
57416
|
+
overflow-x: clip;
|
|
57417
|
+
overflow-y: visible;
|
|
57418
|
+
}
|
|
57419
|
+
|
|
57387
57420
|
.navi_list_scroll_container {
|
|
57388
57421
|
/* The ask stops here: this element is inside the list's frame, so a row
|
|
57389
57422
|
or a control it holds is not at the surface's corner. */
|
|
@@ -58124,6 +58157,7 @@ const ListUI = props => {
|
|
|
58124
58157
|
popover: popover,
|
|
58125
58158
|
"data-horizontal": horizontal ? "" : undefined,
|
|
58126
58159
|
"data-scroller": getScrollerAttribute(scroller),
|
|
58160
|
+
"data-overflow-visible": getOverflowVisibleAttribute(overflow, overflowX, overflowY),
|
|
58127
58161
|
"navi-hover-while-scrolling": hoverWhileScrolling ? "" : undefined,
|
|
58128
58162
|
"data-expand-x": expandX || expand ? "" : undefined,
|
|
58129
58163
|
"data-expand-y": expandY || expand ? "" : undefined,
|
|
@@ -59402,6 +59436,27 @@ const getScrollerAttribute = scroller => {
|
|
|
59402
59436
|
return "parent";
|
|
59403
59437
|
};
|
|
59404
59438
|
|
|
59439
|
+
// overflow lands as an inline style on the inner scroll element, which is
|
|
59440
|
+
// enough for every value but "visible": that one only means anything once the
|
|
59441
|
+
// frame around it stops clipping too. Reading the per-axis props over the
|
|
59442
|
+
// shorthand mirrors how CSS itself resolves them.
|
|
59443
|
+
const getOverflowVisibleAttribute = (overflow, overflowX, overflowY) => {
|
|
59444
|
+
const x = overflowX === undefined ? overflow : overflowX;
|
|
59445
|
+
const y = overflowY === undefined ? overflow : overflowY;
|
|
59446
|
+
const xVisible = x === "visible";
|
|
59447
|
+
const yVisible = y === "visible";
|
|
59448
|
+
if (xVisible && yVisible) {
|
|
59449
|
+
return "both";
|
|
59450
|
+
}
|
|
59451
|
+
if (xVisible) {
|
|
59452
|
+
return "x";
|
|
59453
|
+
}
|
|
59454
|
+
if (yVisible) {
|
|
59455
|
+
return "y";
|
|
59456
|
+
}
|
|
59457
|
+
return undefined;
|
|
59458
|
+
};
|
|
59459
|
+
|
|
59405
59460
|
// scroller="parent": the list virtualizes against the scroll box it lives in
|
|
59406
59461
|
// instead of one of its own. Which box that is can only be measured, and a
|
|
59407
59462
|
// measurement holds for the geometry it was taken on — see resolveScroller in
|