@jsenv/navi 0.29.410 → 0.29.412

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.
@@ -40438,6 +40438,13 @@ const useUIGroupStateController = (
40438
40438
  placeOneChild(childUIStateController, childNewState, e);
40439
40439
  },
40440
40440
  setUIState: (newUIState, e) => {
40441
+ // `undefined` is how a parent empties a child (see the object
40442
+ // group's distributeChildUIState): what a leaf holds when it holds
40443
+ // nothing, and for a group of the default shape, the empty of its
40444
+ // type — not a value of the wrong shape to refuse.
40445
+ if (newUIState === undefined && stateShapeIsTheDefaultOne) {
40446
+ newUIState = fallbackState;
40447
+ }
40441
40448
  if (
40442
40449
  stateType === "object" &&
40443
40450
  stateShapeIsTheDefaultOne &&
@@ -69815,6 +69822,11 @@ const css$x = /* css */`@layer navi {
69815
69822
  display: flex;
69816
69823
  overflow: hidden;
69817
69824
 
69825
+ &[data-borderless] {
69826
+ --x-list-border-radius: 0px;
69827
+ overflow: visible;
69828
+ }
69829
+
69818
69830
  &[data-overflow-visible="both"] {
69819
69831
  overflow: visible;
69820
69832
  }
@@ -70499,6 +70511,7 @@ const ListUI = props => {
70499
70511
  "data-item-transition": itemTransition ? "" : undefined,
70500
70512
  popover: popover,
70501
70513
  "data-horizontal": horizontal ? "" : undefined,
70514
+ "data-borderless": isBorderless(rest) ? "" : undefined,
70502
70515
  "data-scroller": getScrollerAttribute(scroller),
70503
70516
  "data-overflow-visible": getOverflowVisibleAttribute(overflow, overflowX, overflowY),
70504
70517
  "navi-hover-while-scrolling": hoverWhileScrolling ? "" : undefined,
@@ -71869,6 +71882,25 @@ const getScrollerAttribute = scroller => {
71869
71882
  return "parent";
71870
71883
  };
71871
71884
 
71885
+ // A radius asked for explicitly is kept: a borderless list painting a
71886
+ // background of its own may want that surface rounded, and clipped to it.
71887
+ const isBorderless = ({
71888
+ border,
71889
+ borderWidth,
71890
+ borderRadius
71891
+ }) => {
71892
+ if (borderRadius !== undefined) {
71893
+ return false;
71894
+ }
71895
+ if (borderWidth !== undefined) {
71896
+ return parseFloat(borderWidth) === 0;
71897
+ }
71898
+ if (border === undefined) {
71899
+ return false;
71900
+ }
71901
+ return border === "none" || parseFloat(border) === 0;
71902
+ };
71903
+
71872
71904
  // overflow lands as an inline style on the inner scroll element, which is
71873
71905
  // enough for every value but "visible": that one only means anything once the
71874
71906
  // frame around it stops clipping too. Reading the per-axis props over the