@synopackageland/ui 0.23.2 → 0.23.4

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.23.4 (2026-11-07)
6
+
7
+ An App's own sticky rows count in the sticky offset. No App change is required; an App that measured its row by hand can mark it instead.
8
+
9
+ - **New `data-ui-sticky` for a row an App keeps at the top of its page** (a sticky audio player on a detail page). PageContent measures each marked row in its body (ResizeObserver; rows that mount later are found) and, while it sticks, adds its height to `--ui-sticky-top-offset`, so `scrollToStart`, `scrollIntoViewWithinScroller`, a `#hash` link and focus land below it instead of under it. The row is stuck right under what sticks above it (`--ui-sticky-row-top`: the covered padding of a padded page scroller, a sticky `PageHeader`, the phone's tabs strip and earlier rows, stacking in document order), with the page header's background. A row whose `position` is not `sticky` is not counted; a row in a nested PageContent counts for that page. An App's own class still wins for `position`, `background` or `z-index`. Before, an App measured the row and added it to the token by hand
10
+ - docs/mobile-native.md (and `nearestScroller`'s doc comment): `nearestScroller` skips a scroller whose content is not taller than it, so a jsdom test defines `scrollHeight` / `clientHeight` on its scroller; a short example shows how
11
+ - `check:phone-layout` adds a `record-player` scene: a detail page with a sticky audio player marked `data-ui-sticky`, at every viewport, where the player sticks right under what sticks above it, counts in the offset, and `scrollToStart` lands a transcript line right below it
12
+
13
+ ## 0.23.3 (2026-11-07)
14
+
15
+ Phone fixes: the FAB no longer leaves a blank band on a page whose list scrolls itself, and no focus ring on the drawer's close button after a tap. No App change is required; a DSM window and desktop are unchanged.
16
+
17
+ - **No blank band above the tab bar on a fill page with a FAB.** On a page whose content scrolls itself (`data-ui-page-fills`: `PageContent height="fill"`, or an App shell that fills it), the FAB's 88px room was padding under the list's scroller, so the list stopped about 100px above the tab bar and a full-width white band sat left of the FAB, cutting the last visible row. PageContent now finds the page's own scroller (the vertical scroller in its body that reaches its bottom; marked `data-ui-page-scroller`) and the room goes at the end of that scroller's content instead: the list runs under the FAB down to the tab bar (or the bottom accessory), only the FAB's circle covers it, and the last row can still be scrolled above the FAB (`scroll-padding-bottom` too). The scroller's own bottom padding is kept, and the App shell's `--ui-page-end-space` under it is 0 while the room is there. The room no longer comes and goes with the FAB. A fill page whose scroller is not found keeps the room under its content, as before. A page that scrolls as a whole is unchanged: its room is already at the end of what scrolls. `check:phone-layout` adds a `feed-fill-end` scene: the list reaches the tab bar with the FAB in view, and at its end the last row is above the FAB
18
+ - **One "…" in the phone bar** was already the rule from 0.23.0 (a page's own `DropdownMenu` in the bar takes the `headerActions` after a separator); a new test covers a record page with a FAB action, a Share button, its own "…" and several `headerActions`. An App on 0.22 or earlier still shows two
19
+ - **No focus ring on the drawer's close button after a tap.** Opening the navigation drawer by a tap or click (the menu button, or the tab bar's More) moved focus to its close button, and a browser could ring a button focused by script even after a tap, so the X showed a 2px primary outline. Focus now lands on the drawer panel itself, which draws no ring; Tab still stays in the drawer. Opened with Enter or Space, focus still lands on the close button with its ring. Escape, the focus trap and focus going back to the menu button are unchanged. The choice uses the same last-input signal as the dialogs' first focus
20
+
5
21
  ## 0.23.2 (2026-11-07)
6
22
 
7
23
  Two phone fixes for tab pages. No App change is required; a DSM window and desktop are unchanged.
package/dist/cli.js CHANGED
File without changes
@@ -1,2 +1,4 @@
1
+ /** Whether the last input was a key (not a press of a mouse, finger or pen). */
2
+ export declare function lastInputWasKeyboard(): boolean;
1
3
  /** Focuses `element` without scrolling, with a ring only when the last input was a key. */
2
4
  export declare function focusLikeInput(element: HTMLElement): void;