@jsenv/navi 0.29.130 → 0.29.132

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.
@@ -39245,7 +39245,6 @@ installImportMetaCssBuild(import.meta);const css$W = /* css */`
39245
39245
  outline-style: solid;
39246
39246
  outline-color: var(--link-outline-color);
39247
39247
  cursor: var(--x-link-cursor);
39248
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
39249
39248
 
39250
39249
  .navi_current_indicator {
39251
39250
  position: absolute;
@@ -44090,7 +44089,6 @@ installImportMetaCssBuild(import.meta);const css$N = /* css */`
44090
44089
  opacity: 0;
44091
44090
  appearance: none; /* This allows border-radius to have an effect */
44092
44091
  cursor: var(--x-cursor);
44093
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
44094
44092
  }
44095
44093
 
44096
44094
  .navi_checkbox_accent_probe {
@@ -44871,7 +44869,6 @@ installImportMetaCssBuild(import.meta);const css$L = /* css */`
44871
44869
  opacity: 0;
44872
44870
  appearance: none; /* This allows border-radius to have an effect */
44873
44871
  cursor: var(--x-cursor);
44874
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
44875
44872
  }
44876
44873
 
44877
44874
  /* Focus */
@@ -45434,7 +45431,6 @@ installImportMetaCssBuild(import.meta);const css$K = /* css */`
45434
45431
  min-width: inherit;
45435
45432
  font-size: inherit;
45436
45433
  appearance: none;
45437
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
45438
45434
 
45439
45435
  &::-webkit-slider-thumb {
45440
45436
  width: var(--thumb-width);
@@ -46145,7 +46141,6 @@ installImportMetaCssBuild(import.meta);const css$J = /* css */`
46145
46141
  cursor: var(--x-button-cursor);
46146
46142
  touch-action: manipulation;
46147
46143
  user-select: none;
46148
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
46149
46144
 
46150
46145
  .navi_button_content {
46151
46146
  /* The ask stops here: this element is the button's frame, so what is
@@ -47497,7 +47492,6 @@ const inputCss = /* css */`
47497
47492
  border: none;
47498
47493
  border-radius: inherit;
47499
47494
  outline: none;
47500
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
47501
47495
 
47502
47496
  &::placeholder {
47503
47497
  color: var(--x-placeholder-color);
@@ -59302,6 +59296,22 @@ const PickerConfirmBody = ({
59302
59296
 
59303
59297
  const PickerContext = createContext();
59304
59298
 
59299
+ /*
59300
+ * A typed picker (`type="date"`, `type="array"`, …) draws its value with a ui
59301
+ * of navi's own, installed as the very "ui" prop a caller overrides to draw
59302
+ * that value themselves. Marking navi's own tells the two apart afterwards:
59303
+ * an empty value is greyed as a placeholder only when the drawing is navi's —
59304
+ * a caller's ui may well be their way of writing "no filter", which is an
59305
+ * answer, not a blank (see navi-placeholder in picker.jsx).
59306
+ */
59307
+ const asPickerOwnUI = PickerUI => {
59308
+ PickerUI.isPickerOwnUI = true;
59309
+ return PickerUI;
59310
+ };
59311
+ const pickerUIIsNaviOwn = ui => {
59312
+ return Boolean(ui) && typeof ui === "object" && Boolean(ui.type?.isPickerOwnUI);
59313
+ };
59314
+
59305
59315
  const PickerNaviMinute = props => {
59306
59316
  const Next = useNextResolver();
59307
59317
  const {
@@ -60124,7 +60134,6 @@ installImportMetaCssBuild(import.meta);const css$y = /* css */`
60124
60134
  inputs (a horizontal list of choices), so it takes the control line
60125
60135
  with the control font — the same number of pixels tall as them. */
60126
60136
  line-height: var(--navi-control-line-height);
60127
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
60128
60137
  }
60129
60138
  }
60130
60139
 
@@ -66342,7 +66351,7 @@ const PickerObject = props => {
66342
66351
  "navi-state-shape": "object"
66343
66352
  });
66344
66353
  };
66345
- const PickerObjectUI = () => {
66354
+ const PickerObjectUI = asPickerOwnUI(() => {
66346
66355
  const {
66347
66356
  value,
66348
66357
  placeholder
@@ -66367,7 +66376,7 @@ const PickerObjectUI = () => {
66367
66376
  }, key);
66368
66377
  })
66369
66378
  });
66370
- };
66379
+ });
66371
66380
  const PickerArray = props => {
66372
66381
  const Next = useNextResolver();
66373
66382
  return jsx(Next, {
@@ -66377,7 +66386,7 @@ const PickerArray = props => {
66377
66386
  "navi-state-shape": "array"
66378
66387
  });
66379
66388
  };
66380
- const PickerArrayUI = () => {
66389
+ const PickerArrayUI = asPickerOwnUI(() => {
66381
66390
  const {
66382
66391
  value,
66383
66392
  placeholder,
@@ -66399,7 +66408,7 @@ const PickerArrayUI = () => {
66399
66408
  }, item);
66400
66409
  })
66401
66410
  });
66402
- };
66411
+ });
66403
66412
 
66404
66413
  /**
66405
66414
  * One value the picker holds, drawn as a chip with a cross that takes it back
@@ -66460,7 +66469,7 @@ const PickerColor = props => {
66460
66469
  ...props
66461
66470
  });
66462
66471
  };
66463
- const PickerColorUI = () => {
66472
+ const PickerColorUI = asPickerOwnUI(() => {
66464
66473
  const {
66465
66474
  value,
66466
66475
  placeholder
@@ -66474,7 +66483,7 @@ const PickerColorUI = () => {
66474
66483
  return jsx(Color, {
66475
66484
  children: value
66476
66485
  });
66477
- };
66486
+ });
66478
66487
  const PickerDate = props => {
66479
66488
  const Next = useNextResolver();
66480
66489
  return jsx(Next, {
@@ -66484,7 +66493,7 @@ const PickerDate = props => {
66484
66493
  type: "date"
66485
66494
  });
66486
66495
  };
66487
- const PickerDateUI = props => {
66496
+ const PickerDateUI = asPickerOwnUI(props => {
66488
66497
  const {
66489
66498
  value,
66490
66499
  placeholder
@@ -66506,7 +66515,7 @@ const PickerDateUI = props => {
66506
66515
  ...props,
66507
66516
  children: value
66508
66517
  });
66509
- };
66518
+ });
66510
66519
  const PickerMonth = props => {
66511
66520
  const Next = useNextResolver();
66512
66521
  return jsx(Next, {
@@ -66516,7 +66525,7 @@ const PickerMonth = props => {
66516
66525
  type: "month"
66517
66526
  });
66518
66527
  };
66519
- const PickerMonthUI = props => {
66528
+ const PickerMonthUI = asPickerOwnUI(props => {
66520
66529
  const {
66521
66530
  value,
66522
66531
  placeholder
@@ -66537,7 +66546,7 @@ const PickerMonthUI = props => {
66537
66546
  ...props,
66538
66547
  children: value
66539
66548
  });
66540
- };
66549
+ });
66541
66550
  const PickerWeek = props => {
66542
66551
  const Next = useNextResolver();
66543
66552
  return jsx(Next, {
@@ -66547,7 +66556,7 @@ const PickerWeek = props => {
66547
66556
  type: "week"
66548
66557
  });
66549
66558
  };
66550
- const PickerWeekUI = props => {
66559
+ const PickerWeekUI = asPickerOwnUI(props => {
66551
66560
  const {
66552
66561
  value,
66553
66562
  placeholder
@@ -66568,7 +66577,7 @@ const PickerWeekUI = props => {
66568
66577
  ...props,
66569
66578
  children: value
66570
66579
  });
66571
- };
66580
+ });
66572
66581
  const PickerTime = props => {
66573
66582
  const Next = useNextResolver();
66574
66583
  return jsx(Next, {
@@ -66578,7 +66587,7 @@ const PickerTime = props => {
66578
66587
  type: "time"
66579
66588
  });
66580
66589
  };
66581
- const PickerTimeUI = props => {
66590
+ const PickerTimeUI = asPickerOwnUI(props => {
66582
66591
  const {
66583
66592
  value,
66584
66593
  placeholder
@@ -66598,7 +66607,7 @@ const PickerTimeUI = props => {
66598
66607
  ...props,
66599
66608
  children: value
66600
66609
  });
66601
- };
66610
+ });
66602
66611
  const PickerDuration = props => {
66603
66612
  const Next = useNextResolver();
66604
66613
  return jsx(Next, {
@@ -66609,7 +66618,7 @@ const PickerDuration = props => {
66609
66618
  "navi-input-type": "duration"
66610
66619
  });
66611
66620
  };
66612
- const PickerDurationUI = props => {
66621
+ const PickerDurationUI = asPickerOwnUI(props => {
66613
66622
  const {
66614
66623
  value,
66615
66624
  placeholder
@@ -66629,7 +66638,7 @@ const PickerDurationUI = props => {
66629
66638
  ...props,
66630
66639
  children: value
66631
66640
  });
66632
- };
66641
+ });
66633
66642
  const PickerDatetime = props => {
66634
66643
  const Next = useNextResolver();
66635
66644
  return jsx(Next, {
@@ -66639,7 +66648,7 @@ const PickerDatetime = props => {
66639
66648
  type: "datetime-local"
66640
66649
  });
66641
66650
  };
66642
- const PickerDatetimeUI = props => {
66651
+ const PickerDatetimeUI = asPickerOwnUI(props => {
66643
66652
  const {
66644
66653
  value,
66645
66654
  placeholder
@@ -66658,7 +66667,7 @@ const PickerDatetimeUI = props => {
66658
66667
  type: "datetime",
66659
66668
  children: value
66660
66669
  });
66661
- };
66670
+ });
66662
66671
  const PickerFile = props => {
66663
66672
  const Next = useNextResolver();
66664
66673
  return jsx(Next, {
@@ -66668,7 +66677,7 @@ const PickerFile = props => {
66668
66677
  ...props
66669
66678
  });
66670
66679
  };
66671
- const PickerFileUI = () => {
66680
+ const PickerFileUI = asPickerOwnUI(() => {
66672
66681
  const {
66673
66682
  value,
66674
66683
  placeholder
@@ -66681,7 +66690,7 @@ const PickerFileUI = () => {
66681
66690
  }
66682
66691
  // value is a FileList-like string from the input; display file names
66683
66692
  return String(value);
66684
- };
66693
+ });
66685
66694
 
66686
66695
  installImportMetaCssBuild(import.meta);const css$t = /* css */`
66687
66696
  @layer navi {
@@ -66870,7 +66879,6 @@ installImportMetaCssBuild(import.meta);const css$t = /* css */`
66870
66879
  cursor: var(--x-picker-cursor, pointer);
66871
66880
  pointer-events: auto;
66872
66881
  /* user-select: none; */
66873
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
66874
66882
  }
66875
66883
 
66876
66884
  .navi_picker_value {
@@ -67513,11 +67521,16 @@ const PickerButton = props => {
67513
67521
  ,
67514
67522
 
67515
67523
  "data-picker-facade": ui === undefined ? undefined : ""
67516
- // A button's label is not a placeholder, however empty the
67517
- // picker behind it is.
67524
+ // A placeholder is the picker saying "nothing here yet" about
67525
+ // the value navi draws — the default rendering, or the one a
67526
+ // typed picker installs for itself. A button's label is not
67527
+ // that, however empty the picker behind it is, and neither is a
67528
+ // caller's own "ui": an empty value may be exactly what the
67529
+ // caller is drawing there ("no filter", "anywhere"), so how it
67530
+ // looks empty stays theirs (documented on the ui prop below).
67518
67531
  ,
67519
67532
 
67520
- "navi-placeholder": variant !== "button" && variant !== "text" && uiStateHoldsNothing(value) ? "" : undefined,
67533
+ "navi-placeholder": (ui === undefined || pickerUIIsNaviOwn(ui)) && variant !== "button" && variant !== "text" && uiStateHoldsNothing(value) ? "" : undefined,
67521
67534
  maxLines: maxLines,
67522
67535
  children: jsx(PickerOwnContent, {
67523
67536
  children: jsx(PickerContext.Provider, {
@@ -67946,10 +67959,6 @@ const css$s = /* css */`
67946
67959
  keyboard here (see navi-focus-delegate below). */
67947
67960
  outline-color: var(--navi-focus-outline-color);
67948
67961
  outline-offset: 0px;
67949
- /* No grey flash under a finger: what a press does is said by the chevron's
67950
- own background, and the browser's rectangle is drawn square over corners
67951
- that are round. Inherited, so the three pieces inside get it too. */
67952
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
67953
67962
  }
67954
67963
  /* The middle holds the keyboard, and this box wears its ring: whatever is in
67955
67964
  there fills it, so a ring of its own would be drawn a pixel inside this
@@ -68203,7 +68212,6 @@ const css$s = /* css */`
68203
68212
  outline-width: var(--navi-focus-outline-width);
68204
68213
  outline-color: var(--navi-focus-outline-color);
68205
68214
  outline-offset: 0px;
68206
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
68207
68215
  }
68208
68216
  /* A value one PICKS has nowhere of its own to wear a ring — its middle is a
68209
68217
  container that hands the ring over (data-focus-outline-delegate) — so the
@@ -71145,7 +71153,6 @@ const css$m = /* css */`
71145
71153
  border: var(--navi-control-border-width) solid
71146
71154
  var(--navi-control-border-color);
71147
71155
  border-radius: var(--navi-control-border-radius);
71148
- -webkit-tap-highlight-color: var(--navi-control-tap-highlight-color);
71149
71156
 
71150
71157
  &:focus {
71151
71158
  /* Keyboard focus rings the center window only (see .navi_wheel_focus_ring) —
@@ -71275,7 +71282,6 @@ const css$m = /* css */`
71275
71282
  inherited here, so it stays fixed to the center window rather than flipping
71276
71283
  as rows scroll under the pointer. */
71277
71284
  user-select: none;
71278
- -webkit-tap-highlight-color: transparent;
71279
71285
  /* NO content-visibility here, ever. content-visibility: auto was tried
71280
71286
  (to skip painting clipped rows) and it breaks the first opening of any
71281
71287
  popup holding a wheel: rows born inside a closed dialog are "skipped"