@jsenv/navi 0.29.312 → 0.29.315
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/dev/jsenv_navi.js +72 -11
- package/dist/dev/jsenv_navi.js.map +7 -7
- package/dist/jsenv_navi.js +72 -11
- package/dist/jsenv_navi.js.map +7 -7
- package/docs/control_object.md +15 -6
- package/package.json +1 -1
package/dist/dev/jsenv_navi.js
CHANGED
|
@@ -41353,8 +41353,6 @@ time.navi_text {
|
|
|
41353
41353
|
}
|
|
41354
41354
|
|
|
41355
41355
|
.navi_text {
|
|
41356
|
-
position: relative;
|
|
41357
|
-
|
|
41358
41356
|
&[data-capitalize] {
|
|
41359
41357
|
&:first-letter, & .navi_text_sizer_placeholder:first-letter, & .navi_text_sizer_overlay:first-letter {
|
|
41360
41358
|
text-transform: uppercase;
|
|
@@ -41388,6 +41386,7 @@ time.navi_text {
|
|
|
41388
41386
|
&[data-skeleton] {
|
|
41389
41387
|
visibility: hidden;
|
|
41390
41388
|
max-width: 100%;
|
|
41389
|
+
position: relative;
|
|
41391
41390
|
|
|
41392
41391
|
& .navi_text_skeleton_children_placeholder {
|
|
41393
41392
|
width: 100%;
|
|
@@ -41470,6 +41469,7 @@ time.navi_text {
|
|
|
41470
41469
|
|
|
41471
41470
|
.navi_text[data-contains-absolute-child] {
|
|
41472
41471
|
display: inline-block;
|
|
41472
|
+
position: relative;
|
|
41473
41473
|
}
|
|
41474
41474
|
|
|
41475
41475
|
.navi_text[data-bold] {
|
|
@@ -42464,8 +42464,6 @@ const css$Y = /* css */`@layer navi {
|
|
|
42464
42464
|
}
|
|
42465
42465
|
|
|
42466
42466
|
&[aria-selected] {
|
|
42467
|
-
position: relative;
|
|
42468
|
-
|
|
42469
42467
|
& input[type="checkbox"] {
|
|
42470
42468
|
opacity: 0;
|
|
42471
42469
|
position: absolute;
|
|
@@ -42479,7 +42477,16 @@ const css$Y = /* css */`@layer navi {
|
|
|
42479
42477
|
|
|
42480
42478
|
&[data-focus], &[data-focus-visible] {
|
|
42481
42479
|
z-index: 1;
|
|
42482
|
-
|
|
42480
|
+
}
|
|
42481
|
+
|
|
42482
|
+
&[data-stretch] {
|
|
42483
|
+
position: static;
|
|
42484
|
+
|
|
42485
|
+
&:after {
|
|
42486
|
+
content: "";
|
|
42487
|
+
position: absolute;
|
|
42488
|
+
inset: 0;
|
|
42489
|
+
}
|
|
42483
42490
|
}
|
|
42484
42491
|
|
|
42485
42492
|
&[data-readonly] > * {
|
|
@@ -42706,6 +42713,15 @@ Object.assign(PSEUDO_CLASSES, {
|
|
|
42706
42713
|
* @param {boolean} [props.revealOnInteraction] - Hide the link until its
|
|
42707
42714
|
* container is hovered/focused (`data-reveal-on-interaction`), floating it
|
|
42708
42715
|
* out of flow — the "#" anchor-on-hover pattern (e.g. inside a `Title`).
|
|
42716
|
+
* @param {boolean} [props.stretch] - The press area is the nearest positioned
|
|
42717
|
+
* ancestor, not the link's own box (`data-stretch`): a row that leads
|
|
42718
|
+
* somewhere as a whole while only its name is the link — a button next to the
|
|
42719
|
+
* name cannot live inside an `<a>`. The ancestor to cover says so itself
|
|
42720
|
+
* (`<List.Item relative>`, `<Box relative>`), and nothing in between may be
|
|
42721
|
+
* positioned; navi's `Text` is not. A control in the row that keeps its own
|
|
42722
|
+
* press sits above the area when it is positioned and comes after the link
|
|
42723
|
+
* (navi's `Button` is positioned); one written before the link is raised
|
|
42724
|
+
* with a `z-index`. The link is never positioned itself, in any state.
|
|
42709
42725
|
* @param {boolean} [props.hrefFallback] - Use `href` as the visible text when
|
|
42710
42726
|
* no children are given; defaults to `true` unless `anchor`.
|
|
42711
42727
|
* @param {string|{type?: string, duration?: number|string, direction?: "forward"|"back"}} [props.routeTransition] -
|
|
@@ -42850,6 +42866,7 @@ const LinkPlain = props => {
|
|
|
42850
42866
|
startIcon,
|
|
42851
42867
|
endIcon,
|
|
42852
42868
|
revealOnInteraction = false,
|
|
42869
|
+
stretch,
|
|
42853
42870
|
hrefFallback = !anchor,
|
|
42854
42871
|
routeTransition,
|
|
42855
42872
|
pressableDuringRouteTransition,
|
|
@@ -43023,6 +43040,7 @@ const LinkPlain = props => {
|
|
|
43023
43040
|
anchor: undefined,
|
|
43024
43041
|
slide: undefined,
|
|
43025
43042
|
revealOnInteraction: undefined,
|
|
43043
|
+
stretch: undefined,
|
|
43026
43044
|
variant: undefined,
|
|
43027
43045
|
current: undefined,
|
|
43028
43046
|
currentExcept: undefined,
|
|
@@ -43113,6 +43131,7 @@ const LinkPlain = props => {
|
|
|
43113
43131
|
"data-anchor": anchor ? "" : undefined,
|
|
43114
43132
|
"data-interactive": onClick || props.command || props.action ? "" : undefined,
|
|
43115
43133
|
"data-reveal-on-interaction": revealOnInteraction ? "" : undefined,
|
|
43134
|
+
"data-stretch": stretch ? "" : undefined,
|
|
43116
43135
|
baseClassName: "navi_link",
|
|
43117
43136
|
styleCSSVars: LinkStyleCSSVars,
|
|
43118
43137
|
pseudoClasses: LinkPseudoClasses,
|
|
@@ -54315,8 +54334,8 @@ const Form = props => {
|
|
|
54315
54334
|
// second's opening tag, so the inner fields would silently belong to the
|
|
54316
54335
|
// outer form. Rather than forbidding the shape (a form inside a picker inside
|
|
54317
54336
|
// a form is a legitimate thing to want), a form that finds itself inside one
|
|
54318
|
-
// is a different component:
|
|
54319
|
-
// browser machinery that comes with it.
|
|
54337
|
+
// is a different component: a group of its own, no <form> element and none of
|
|
54338
|
+
// the browser machinery that comes with it (see FormNested).
|
|
54320
54339
|
const isNested = Boolean(useContext(FormContext));
|
|
54321
54340
|
return isNested ? jsx(FormNested, {
|
|
54322
54341
|
...props
|
|
@@ -54446,13 +54465,26 @@ const FormControl = props => {
|
|
|
54446
54465
|
// event to intercept and no requestSubmit() to go through, so it is driven the
|
|
54447
54466
|
// way every other group is — a command, or an action requested on it. method
|
|
54448
54467
|
// belongs to the browser's own submission, so it means nothing here either.
|
|
54468
|
+
//
|
|
54469
|
+
// And it owns what it holds: `standalone`, unconditionally. A <Form> is a
|
|
54470
|
+
// question with a send of its own, so its fields answer to it and to nothing
|
|
54471
|
+
// above it — they are not in the outer form's value, not in its "changed", and
|
|
54472
|
+
// not in the constraints it checks before sending. That last one is what a
|
|
54473
|
+
// caller feels: a required field in a popup nobody opened would otherwise
|
|
54474
|
+
// refuse the outer submit, pointing at something the screen is not even
|
|
54475
|
+
// showing. A cluster of fields that IS part of the value around it is a
|
|
54476
|
+
// <ControlGroup>, which is the shape without the send (see
|
|
54477
|
+
// docs/control_object.md).
|
|
54449
54478
|
const FormNested = props => {
|
|
54450
54479
|
const {
|
|
54451
54480
|
formRootProps,
|
|
54452
54481
|
formProps,
|
|
54453
54482
|
onnavi_action_end,
|
|
54454
54483
|
inside
|
|
54455
|
-
} = useFormGroup(
|
|
54484
|
+
} = useFormGroup({
|
|
54485
|
+
...props,
|
|
54486
|
+
standalone: true
|
|
54487
|
+
});
|
|
54456
54488
|
return jsx(Box, {
|
|
54457
54489
|
...formRootProps,
|
|
54458
54490
|
...formProps,
|
|
@@ -59494,6 +59526,18 @@ const css$E = /* css */`
|
|
|
59494
59526
|
--x-corner-bottom-right-radius: initial;
|
|
59495
59527
|
--x-corner-bottom-left-radius: initial;
|
|
59496
59528
|
|
|
59529
|
+
/* Sizing is per dialog: the anchor box (sizeFromAnchor) and the
|
|
59530
|
+
minWidth/maxWidth/minHeight/maxHeight props are written inline on THIS
|
|
59531
|
+
element, and an inline declaration wins over these resets. Without
|
|
59532
|
+
them, a dialog nested in another dialog would inherit its parent's
|
|
59533
|
+
inline values and open at the parent's size. */
|
|
59534
|
+
--anchor-width: initial;
|
|
59535
|
+
--anchor-height: initial;
|
|
59536
|
+
--dialog-min-width: initial;
|
|
59537
|
+
--dialog-max-width: initial;
|
|
59538
|
+
--dialog-min-height: initial;
|
|
59539
|
+
--dialog-max-height: initial;
|
|
59540
|
+
|
|
59497
59541
|
/* Computed once, reused by both max-width itself and min-width's own
|
|
59498
59542
|
clamp below (see its comment for why) — avoids repeating the same
|
|
59499
59543
|
min(..., ...) expression twice. */
|
|
@@ -61403,6 +61447,21 @@ const css$D = /* css */`
|
|
|
61403
61447
|
--x-corner-bottom-right-radius: initial;
|
|
61404
61448
|
--x-corner-bottom-left-radius: initial;
|
|
61405
61449
|
|
|
61450
|
+
/* Sizing is per popover: the anchor box and the
|
|
61451
|
+
minWidth/maxWidth/minHeight/maxHeight props are written inline on THIS
|
|
61452
|
+
element, and an inline declaration wins over these resets. Without
|
|
61453
|
+
them, a popover nested in another popup (or opened without an anchor
|
|
61454
|
+
inside one sized from its own) would inherit the outer inline values
|
|
61455
|
+
and open at the outer size. */
|
|
61456
|
+
--anchor-width: initial;
|
|
61457
|
+
--anchor-height: initial;
|
|
61458
|
+
--anchor-inner-width: initial;
|
|
61459
|
+
--anchor-inner-height: initial;
|
|
61460
|
+
--popover-min-width: initial;
|
|
61461
|
+
--popover-max-width: initial;
|
|
61462
|
+
--popover-min-height: initial;
|
|
61463
|
+
--popover-max-height: initial;
|
|
61464
|
+
|
|
61406
61465
|
--x-popover-max-width: min(
|
|
61407
61466
|
var(--popover-max-width, var(--popover-maxmax-width)),
|
|
61408
61467
|
var(--container-position-remaining-width, var(--popover-maxmax-width)),
|
|
@@ -71611,9 +71670,11 @@ const PickerText = props => {
|
|
|
71611
71670
|
};
|
|
71612
71671
|
|
|
71613
71672
|
// The popup holds a group of named controls — a `<ControlGroup>`, or a `<Form>`
|
|
71614
|
-
// when that group is a question with a send of its own
|
|
71615
|
-
//
|
|
71616
|
-
//
|
|
71673
|
+
// when that group is a question with a send of its own and the picker is not
|
|
71674
|
+
// itself inside a form (a form in a form answers for itself, see form.jsx) —
|
|
71675
|
+
// and this picker's value is the object that group aggregates. The popup itself
|
|
71676
|
+
// holds nothing: it is a surface (see dialog.jsx), so there is nothing to tell
|
|
71677
|
+
// it about the shape.
|
|
71617
71678
|
const PickerObject = props => {
|
|
71618
71679
|
const Next = useNextResolver();
|
|
71619
71680
|
return jsx(Next, {
|