@jsenv/navi 0.27.8 → 0.27.9

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.
@@ -6506,13 +6506,13 @@ const DIMENSION_PROPS = {
6506
6506
  if (!value || value === "0") {
6507
6507
  return { flexShrink: 0 };
6508
6508
  }
6509
- return { flexShrink: 1 };
6509
+ return { flexShrink: 1, minWidth: 0 };
6510
6510
  },
6511
6511
  shrinkY: (value) => {
6512
6512
  if (!value || value === "0") {
6513
6513
  return { flexShrink: 0 };
6514
6514
  }
6515
- return { flexShrink: 1 };
6515
+ return { flexShrink: 1, minHeight: 0 };
6516
6516
  },
6517
6517
 
6518
6518
  scaleX: (value) => {
@@ -6725,7 +6725,10 @@ const VISUAL_PROPS = {
6725
6725
  overflow: PASS_THROUGH,
6726
6726
  overflowX: PASS_THROUGH,
6727
6727
  overflowY: PASS_THROUGH,
6728
- overflowEllipsis: () => {
6728
+ overflowEllipsis: (value) => {
6729
+ if (value === undefined || value === false) {
6730
+ return null;
6731
+ }
6729
6732
  return {
6730
6733
  overflow: "hidden",
6731
6734
  textOverflow: "ellipsis",
@@ -12445,6 +12448,27 @@ const useUIStateController = (
12445
12448
  value: newUIState,
12446
12449
  });
12447
12450
  }
12451
+ // When this controller is a real input that has a visible proxy
12452
+ // (linked via `navi-control-proxy-for`), mirror the new state to the
12453
+ // proxy DOM synchronously. Otherwise the proxy would only catch up
12454
+ // later through a React re-render — visible as e.g. two radios
12455
+ // appearing checked at once between the real input update and the
12456
+ // next render (radio_sibling_uncheck case).
12457
+ if (el && !controlProxyFor) {
12458
+ const proxyEl = findControlProxy(el);
12459
+ if (proxyEl) {
12460
+ const propValue = uiStateController.getPropFromState(newUIState);
12461
+ proxyEl[statePropName] = propValue;
12462
+ // Also notify the proxy's controller so it can stay in sync with
12463
+ // state changes that originate from the real input (e.g. radio_sibling_uncheck).
12464
+ // Without this the proxy only learns about deselection later via state_prop
12465
+ // (Preact re-render), too late for lastActionValueRef to be updated.
12466
+ dispatchInternalCustomEvent(proxyEl, "navi_ui_state_change", {
12467
+ event: e,
12468
+ value: newUIState,
12469
+ });
12470
+ }
12471
+ }
12448
12472
  const internalBehavior = e.detail?.internalBehavior;
12449
12473
  if (internalBehavior) {
12450
12474
  return true;
@@ -33709,6 +33733,7 @@ const css$m = /* css */`
33709
33733
  );
33710
33734
 
33711
33735
  display: flex;
33736
+ min-width: 0;
33712
33737
  /* fit-content by default, but never wider than the parent */
33713
33738
  max-width: 100%;
33714
33739
  flex-direction: column;
@@ -33780,7 +33805,7 @@ const css$m = /* css */`
33780
33805
  --x-list-item-font-weight: var(--list-item-font-weight);
33781
33806
 
33782
33807
  box-sizing: border-box;
33783
- min-width: 100%;
33808
+ min-width: 0;
33784
33809
  max-width: 100%;
33785
33810
  padding: var(--list-item-padding);
33786
33811
  color: var(--x-list-item-color);
@@ -34979,6 +35004,10 @@ const css$l = /* css */`
34979
35004
  outline-color: var(--list-item-outline-color);
34980
35005
  outline-offset: var(--list-item-outline-offset);
34981
35006
 
35007
+ &[navi-selectable] {
35008
+ user-select: none;
35009
+ }
35010
+
34982
35011
  &[data-interactive] {
34983
35012
  cursor: pointer;
34984
35013
  user-select: none;
@@ -35373,6 +35402,7 @@ const Selectable = props => {
35373
35402
  },
35374
35403
  "aria-selected": checked,
35375
35404
  selected: checked,
35405
+ "navi-selectable": "",
35376
35406
  children: jsxs(Field, {
35377
35407
  as: selectableArea === "manual" ? "div" : undefined,
35378
35408
  padding: "m",
@@ -35672,7 +35702,6 @@ installImportMetaCssBuild(import.meta);const css$k = /* css */`
35672
35702
  font-size: var(--picker-font-size);
35673
35703
  text-align: inherit;
35674
35704
  text-overflow: ellipsis;
35675
- white-space: nowrap;
35676
35705
  background-color: var(--x-picker-background-color);
35677
35706
  border-width: var(--picker-border-width);
35678
35707
  border-style: solid;