@jsenv/navi 0.21.6 → 0.21.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.
@@ -12389,10 +12389,23 @@ const route = (pattern, { searchParams } = {}) => {
12389
12389
 
12390
12390
  // If we found a more specific route, delegate to it; otherwise handle it ourselves
12391
12391
  if (!isMostSpecificRoute) {
12392
- // Check if this is a signal-originated call and there's a more specific route that will also handle it
12393
- // If so, skip the redirect to avoid duplicate navTo calls
12392
+ // For signal-originated calls, only skip delegation if the more specific route
12393
+ // has its own signal connection for the same params meaning its own effect will
12394
+ // fire and handle the redirect. If it doesn't have the connection, the signal
12395
+ // change would be silently dropped, so we must delegate anyway.
12394
12396
  if (isSignalChange) {
12395
- return null;
12397
+ const mostSpecificRoutePrivateProperties =
12398
+ getRoutePrivateProperties(mostSpecificRoute);
12399
+ const { pathConnectionMap, queryConnectionMap } =
12400
+ mostSpecificRoutePrivateProperties.routePattern;
12401
+ const willHandleItself = Object.keys(newParams).every(
12402
+ (paramName) =>
12403
+ pathConnectionMap.has(paramName) ||
12404
+ queryConnectionMap.has(paramName),
12405
+ );
12406
+ if (willHandleItself) {
12407
+ return null;
12408
+ }
12396
12409
  }
12397
12410
  return mostSpecificRoute.redirectTo(newParams, {
12398
12411
  callReason: `replaceParams delegation from ${route} to ${mostSpecificRoute} (original reason: ${callReason})`,
@@ -18821,7 +18834,15 @@ const selectByTextStrings = (element, range, startText, endText) => {
18821
18834
  };
18822
18835
 
18823
18836
  installImportMetaCssBuild(import.meta);/* eslint-disable jsenv/no-unknown-params */
18824
- const css$3 = /* css */`
18837
+ const css$4 = /* css */`
18838
+ @layer navi {
18839
+ .navi_text {
18840
+ &[data-skeleton] {
18841
+ border-radius: 0.2em;
18842
+ }
18843
+ }
18844
+ }
18845
+
18825
18846
  *[data-navi-space] {
18826
18847
  /* user-select: none; */
18827
18848
  padding-left: 0.25em;
@@ -18829,7 +18850,6 @@ const css$3 = /* css */`
18829
18850
 
18830
18851
  .navi_text {
18831
18852
  position: relative;
18832
- border-radius: var(--x-border-radius);
18833
18853
 
18834
18854
  /* There is a chrome specific bug that prevents text-transform: capitalize to be applied in nested DOM structure */
18835
18855
  /* The CSS below ensure capitalize is propagated to the bold clones */
@@ -18882,8 +18902,6 @@ const css$3 = /* css */`
18882
18902
  }
18883
18903
 
18884
18904
  &[data-skeleton] {
18885
- --x-border-radius: 0.2em;
18886
-
18887
18905
  /* Children stay in the DOM to preserve natural layout dimensions,
18888
18906
  but are hidden so only the skeleton is visible. */
18889
18907
  visibility: hidden;
@@ -19114,7 +19132,7 @@ const shouldInjectSpacingBetween = (left, right) => {
19114
19132
  };
19115
19133
  const OverflowPinnedElementContext = createContext(null);
19116
19134
  const Text = props => {
19117
- import.meta.css = [css$3, "@jsenv/navi/src/text/text.jsx"];
19135
+ import.meta.css = [css$4, "@jsenv/navi/src/text/text.jsx"];
19118
19136
  if (props.loading || props.skeleton) {
19119
19137
  return jsx(TextSkeleton, {
19120
19138
  ...props
@@ -19307,7 +19325,7 @@ const TextBasic = ({
19307
19325
  });
19308
19326
  };
19309
19327
 
19310
- installImportMetaCssBuild(import.meta);const css$2 = /* css */`
19328
+ installImportMetaCssBuild(import.meta);const css$3 = /* css */`
19311
19329
  @layer navi {
19312
19330
  /* Ensure data attributes from box.jsx can win to update display */
19313
19331
  .navi_icon {
@@ -19395,7 +19413,7 @@ const Icon = ({
19395
19413
  onClick,
19396
19414
  ...props
19397
19415
  }) => {
19398
- import.meta.css = [css$2, "@jsenv/navi/src/graphic/icon.jsx"];
19416
+ import.meta.css = [css$3, "@jsenv/navi/src/graphic/icon.jsx"];
19399
19417
  const innerChildren = href ? jsx("svg", {
19400
19418
  width: "100%",
19401
19419
  height: "100%",
@@ -22663,7 +22681,7 @@ installImportMetaCssBuild(import.meta);/**
22663
22681
  * TabList component with support for horizontal and vertical layouts
22664
22682
  * https://dribbble.com/search/tabs
22665
22683
  */
22666
- import.meta.css = [/* css */`
22684
+ const css$2 = /* css */`
22667
22685
  @layer navi {
22668
22686
  .navi_nav {
22669
22687
  --nav-border: none;
@@ -22772,7 +22790,7 @@ import.meta.css = [/* css */`
22772
22790
  }
22773
22791
  }
22774
22792
  }
22775
- `, "@jsenv/navi/src/nav/link/nav.jsx"];
22793
+ `;
22776
22794
  const NavStyleCSSVars = {
22777
22795
  border: "--nav-border",
22778
22796
  borderRadius: "--nav-border-radius",
@@ -22797,6 +22815,7 @@ const Nav = ({
22797
22815
  panelBorderConnection,
22798
22816
  ...props
22799
22817
  }) => {
22818
+ import.meta.css = [css$2, "@jsenv/navi/src/nav/link/nav.jsx"];
22800
22819
  children = toChildArray(children);
22801
22820
  return jsx(Box, {
22802
22821
  as: "nav",