@jsenv/navi 0.29.147 → 0.29.148

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.
@@ -564,11 +564,19 @@ code inside knows whether anything in there loads at all:
564
564
  </Dialog>
565
565
  ```
566
566
 
567
- Without it the nearest boundary is the one at the root of the app, and a
568
- suspension there empties the whole page — taking with it the popup element the
569
- browser is in the middle of animating. The alternative is the component drawing
570
- its own wait (`useAsyncData(action, { loading: true })`), which needs no
571
- boundary; what is not an option is neither of the two.
567
+ Without it the nearest boundary is one that holds the popup itself, and what
568
+ happens then is worth knowing because nothing says it: the request goes out and
569
+ **the popup does not open at all** — no fallback drawn, no error raised. A
570
+ boundary waiting on an update keeps the page as it was, as a copy; the popup
571
+ being opened is part of that copy, so `showModal()` reaches a node the app no
572
+ longer owns, and once the data is there the subtree is rebuilt from scratch —
573
+ closed, and empty. The press is simply lost, and the next one works. In dev the popup says so
574
+ rather than leaving it to be guessed. The alternative is the component drawing its
575
+ own wait (`useAsyncData(action, { loading: true })`), which needs no boundary of
576
+ its own; what is not an option is neither of the two.
577
+
578
+ Both, and what each one looks like, are on
579
+ `src/layout/demos/13_popup_loading_demo.html`.
572
580
 
573
581
  What the popup gains is everything a page has:
574
582
 
package/docs/testid.md CHANGED
@@ -99,6 +99,11 @@ and is the better name for a test that reads or clicks the content. Reach for
99
99
  `popupTestId` when the frame IS what the test looks at: a screenshot of the
100
100
  popup's surface, its position, its size, its backdrop.
101
101
 
102
+ `<ControlSwap.Side>` answers the same situation the other way: the cap at the
103
+ end of the row is drawn by navi, and every prop the side does not use for
104
+ itself lands on it — so `data-testid` on the side names the cap, while what the
105
+ side holds is a vnode of yours that takes its own.
106
+
102
107
  ## What not to target
103
108
 
104
109
  Navi's own attributes are implementation, not a contract: `data-header`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/navi",
3
- "version": "0.29.147",
3
+ "version": "0.29.148",
4
4
  "type": "module",
5
5
  "description": "Library of components including navigation to create frontend applications",
6
6
  "repository": {