@jsenv/navi 0.29.311 → 0.29.314

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.
@@ -36068,6 +36068,13 @@ const useUIFacadeStateController = (props, realUIStateController) => {
36068
36068
  // ── init: runs once on mount ───────────────────────────────────────────
36069
36069
  (s) => {
36070
36070
  const canRegisterAsFacadeChild = (childController) => {
36071
+ if (s.props.picksNothing) {
36072
+ // The popup is a question, not a choice: a control in it (the "I
36073
+ // understand" checkbox gating a confirm) holds its own value, and
36074
+ // that value is not the picker's. Adopted, it would reach the
36075
+ // picker's action as its params, over whatever the caller bound.
36076
+ return false;
36077
+ }
36071
36078
  if (childController.controlType === "button") {
36072
36079
  return false;
36073
36080
  }
@@ -53569,8 +53576,8 @@ const Form = props => {
53569
53576
  // second's opening tag, so the inner fields would silently belong to the
53570
53577
  // outer form. Rather than forbidding the shape (a form inside a picker inside
53571
53578
  // a form is a legitimate thing to want), a form that finds itself inside one
53572
- // is a different component: same group, no <form> element and none of the
53573
- // browser machinery that comes with it.
53579
+ // is a different component: a group of its own, no <form> element and none of
53580
+ // the browser machinery that comes with it (see FormNested).
53574
53581
  const isNested = Boolean(useContext(FormContext));
53575
53582
  return isNested ? jsx(FormNested, {
53576
53583
  ...props
@@ -53700,13 +53707,26 @@ const FormControl = props => {
53700
53707
  // event to intercept and no requestSubmit() to go through, so it is driven the
53701
53708
  // way every other group is — a command, or an action requested on it. method
53702
53709
  // belongs to the browser's own submission, so it means nothing here either.
53710
+ //
53711
+ // And it owns what it holds: `standalone`, unconditionally. A <Form> is a
53712
+ // question with a send of its own, so its fields answer to it and to nothing
53713
+ // above it — they are not in the outer form's value, not in its "changed", and
53714
+ // not in the constraints it checks before sending. That last one is what a
53715
+ // caller feels: a required field in a popup nobody opened would otherwise
53716
+ // refuse the outer submit, pointing at something the screen is not even
53717
+ // showing. A cluster of fields that IS part of the value around it is a
53718
+ // <ControlGroup>, which is the shape without the send (see
53719
+ // docs/control_object.md).
53703
53720
  const FormNested = props => {
53704
53721
  const {
53705
53722
  formRootProps,
53706
53723
  formProps,
53707
53724
  onnavi_action_end,
53708
53725
  inside
53709
- } = useFormGroup(props);
53726
+ } = useFormGroup({
53727
+ ...props,
53728
+ standalone: true
53729
+ });
53710
53730
  return jsx(Box, {
53711
53731
  ...formRootProps,
53712
53732
  ...formProps,
@@ -70745,9 +70765,11 @@ const PickerText = props => {
70745
70765
  };
70746
70766
 
70747
70767
  // The popup holds a group of named controls — a `<ControlGroup>`, or a `<Form>`
70748
- // when that group is a question with a send of its own — and this picker's
70749
- // value is the object that group aggregates. The popup itself holds nothing: it
70750
- // is a surface (see dialog.jsx), so there is nothing to tell it about the shape.
70768
+ // when that group is a question with a send of its own and the picker is not
70769
+ // itself inside a form (a form in a form answers for itself, see form.jsx) —
70770
+ // and this picker's value is the object that group aggregates. The popup itself
70771
+ // holds nothing: it is a surface (see dialog.jsx), so there is nothing to tell
70772
+ // it about the shape.
70751
70773
  const PickerObject = props => {
70752
70774
  const Next = useNextResolver();
70753
70775
  return jsx(Next, {