@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.
@@ -41470,6 +41470,13 @@ const useUIGroupStateController = (
41470
41470
  placeOneChild(childUIStateController, childNewState, e);
41471
41471
  },
41472
41472
  setUIState: (newUIState, e) => {
41473
+ // `undefined` is how a parent empties a child (see the object
41474
+ // group's distributeChildUIState): what a leaf holds when it holds
41475
+ // nothing, and for a group of the default shape, the empty of its
41476
+ // type — not a value of the wrong shape to refuse.
41477
+ if (newUIState === undefined && stateShapeIsTheDefaultOne) {
41478
+ newUIState = fallbackState;
41479
+ }
41473
41480
  if (
41474
41481
  stateType === "object" &&
41475
41482
  stateShapeIsTheDefaultOne &&
@@ -71188,6 +71195,11 @@ const css$x = /* css */`@layer navi {
71188
71195
  display: flex;
71189
71196
  overflow: hidden;
71190
71197
 
71198
+ &[data-borderless] {
71199
+ --x-list-border-radius: 0px;
71200
+ overflow: visible;
71201
+ }
71202
+
71191
71203
  &[data-overflow-visible="both"] {
71192
71204
  overflow: visible;
71193
71205
  }
@@ -71872,6 +71884,7 @@ const ListUI = props => {
71872
71884
  "data-item-transition": itemTransition ? "" : undefined,
71873
71885
  popover: popover,
71874
71886
  "data-horizontal": horizontal ? "" : undefined,
71887
+ "data-borderless": isBorderless(rest) ? "" : undefined,
71875
71888
  "data-scroller": getScrollerAttribute(scroller),
71876
71889
  "data-overflow-visible": getOverflowVisibleAttribute(overflow, overflowX, overflowY),
71877
71890
  "navi-hover-while-scrolling": hoverWhileScrolling ? "" : undefined,
@@ -73341,6 +73354,25 @@ const getScrollerAttribute = scroller => {
73341
73354
  return "parent";
73342
73355
  };
73343
73356
 
73357
+ // A radius asked for explicitly is kept: a borderless list painting a
73358
+ // background of its own may want that surface rounded, and clipped to it.
73359
+ const isBorderless = ({
73360
+ border,
73361
+ borderWidth,
73362
+ borderRadius
73363
+ }) => {
73364
+ if (borderRadius !== undefined) {
73365
+ return false;
73366
+ }
73367
+ if (borderWidth !== undefined) {
73368
+ return parseFloat(borderWidth) === 0;
73369
+ }
73370
+ if (border === undefined) {
73371
+ return false;
73372
+ }
73373
+ return border === "none" || parseFloat(border) === 0;
73374
+ };
73375
+
73344
73376
  // overflow lands as an inline style on the inner scroll element, which is
73345
73377
  // enough for every value but "visible": that one only means anything once the
73346
73378
  // frame around it stops clipping too. Reading the per-axis props over the