The credit fold was guarded by uiStore.isMobile, which only uiStore.init()
sets; a host that never calls it (UPG-100's map) kept the credit expanded.
The fold now tests the phone breakpoint itself, with the phone CSS block's
own query.
A finger aimed at the open sheet's top edge often landed on the hint pill
just above it, and a drag there scrolled the pane instead of resizing the
sheet. A transparent 12px lip above the open sheet takes that gesture with
the sheet's own handlers (their grab zone is measured from the sheet's top),
above the pill; it exists only while the sheet is open.
The pill takes touch-action:none. With the legend open it sits just above
the sheet's top edge, so a drag meant to resize the sheet often began on the
pill's lower edge and scrolled the pane instead. Taps still fire, so its
dismiss button keeps working.
A control in a map's own column keeps its pointer at every width; a header-form control (the
rounded-square MapControlButton) sits in the strip the rule was measured on, so below 1200px its
pointer hides again. Rebuilt doxa-maps-spa and doxa-simple-map (MapInfo's importers), tree and SRI.
The Regions header takes Big Picture's header recipe: its own MapInfoButton and ShareButton in the header form
(shape rounded-square, the vertical tabs' radius), side by side at the header's end, 28 px with a 44 px tap
target; on a phone the ⓘ takes the header's start edge, since the centred view switcher leaves no room for
two at one end. The gallery hands the tab's MapInfo to that button (trigger 'control'), with the floating ⓘ as
the fallback. The map-print progress card no longer shows the renderer's English phase messages.
An engine can mark its credit compact only after the map is ready, and the
fold stopped polling at a credit that was present but not yet compact, so
on such a map the credit never folded. It now stops only once the credit is
compact and already folded (a drag or a tap got there first), and keeps
looking, for up to 30 s as before, while it is not yet compact.
- Two lines, each its own string, in a new catalogue area only PinHint names (line1 / line2 x 11,
taken from today's one-sentence text at each locale's own separator; that text is untouched).
- 44px tall like the ☰, 12px text, a smaller bob. Capped to the width left between two ☰ footprints
(--map-fab-beside), so it is centred with equal room and never reaches the ☰; with no ☰ it is
simply centred.
- In the ☰'s row: while the layout shows the ☰, the base is the ☰'s own 12px bottom, and the clamp
lifts it to 8px above the legend sheet, the gap the layout keeps for the ☰.
- It no longer reads --map-fab-clearance, which now carries the ☰'s scroll-tracked lift: inside the
map, beside the legend, the pill stays over it by itself, and positioned from that lift it moved
against the legend on every scroll.
The layout's round menu button now sits fixed in the bottom corner on the
start side and never moves, so the sheet no longer insets itself beside it:
it is always full width. The collapsed strip pads its start edge by
--map-fab-beside, the room the button takes, so its caret and title stay
clear of it (0 where there is no button); the detail footer, placed
absolutely, gets the same inset. Open, the sheet keeps its full width under
the button's small corner. The floating image returns to the start edge. The
'dxmaps:legend-sheet' event is still dispatched.
The attribution rule for a map without a footer sheet: the credit keeps the bottom corner (bottom-left in
right-to-left, where the round button sits bottom-right), above the scroll-edge strips; on a phone it folds
to its (i) three seconds after it first shows, and a tap expands it again; MapLibre's optional logo is
hidden, as its licence allows. Desktop is unchanged.
The map's "Export poster…" now prints through a shared template: always landscape Letter; a header with the
map's name (from the host's profile-config mapTitle), the view on screen as its subtitle; the legend as a
side panel; and a footer line from the prayer packet's final page (prayer point 6 with Luke 10:2 and
John 10:11-15, in the reader's language). While it renders, a loading screen like the poster wall's shows
the renderer's own progress. Without a mapTitle the view on screen stays the title, as before.
At the top of every "What can this map do?" panel: a "Short description" header and the map's
intro, on a pale band with the Rudder blue as its accent bar and the text in a darker shade of that
blue (5.6:1), so the eye finds it first. Below it, the strategy is a collapsed "Strategy ▾" disclosure
(a native details element, collapsed again on every open) instead of a tab; the examples follow
wherever a map has them. The tab machinery goes. New label mapInfo.shortDescription in all 11
locales.
"Posters per row" offered 2-5 at every width, and the grid clamps a count
to what the viewport holds, so on a phone "3" and "4" still showed two.
The choices are now Auto plus every count up to what fits, capped at 5:
Auto / 1 / 2 on a 390px phone, up to 5 on a desktop. A stored preference
above the fit is shown as what is rendered and stays stored, so the
desktop keeps its choice. 1 joins the counts for the phone.
After "Show on map" isolated a zone, the only way back was re-tapping the
same legend row, inside a collapsed sheet on a phone. While a zone is
isolated (batch mode off), a chip above the map's floor names it with an
x that shows every zone again, through the wall's own deselect path
(applySelectZone(null)). Its label is the existing buttons.clearSelection.
Rebuilt: my-upg-100-list, country-posters, regions-dashboard; the tree and
SRI regenerated.
On the all-regions map a pin tap jumped to the country's dashboard; a pin tap now opens the people
group's popup everywhere, and a tap on a country with no pin under it picks that country. The
invisible tap target is at least 7 px at every zoom, so pins answer a finger. On phones the maps are
half again as tall as they are wide (the square was too small for a popup), the left scroll-past
strip is off, and the popup is compact and lets a pinch through to the map. Desktop is unchanged.
On a map with the legend sheet the engine's credit keeps its top-start
corner, now above the scroll-edge strips, and folds to its (i) 3 s after it
first shows expanded. The full-width sheet, the 'dxmaps:legend-sheet' event
and the hidden MapLibre logo control stay.
The engine's credit moves from the top corner to the end side just above the
sheet, and folds to its (i) four seconds after it first shows expanded. The
logo corner sits beside the menu button, and MapLibre's optional logo control
is hidden. The sheet announces itself with a 'dxmaps:legend-sheet' event
(bubbling, composed), so the layout can lift its round menu button above it.
The sheet takes the full width while the layout says it lifts the button
(--map-fab-sheet-inset); otherwise it stays beside the button. The older
corner rules are scoped to .lm-on, so they end with the last sheet.
The all-regions map drew its pins at their zoom-2 size below zoom 2, which is where a phone's globe
sits, so they read far too large. They now shrink below zoom 2 (unchanged from zoom 2 up, so desktop
keeps them), and an invisible hit twin with the old radii takes the click and the cursor, so a tap
selects exactly what it did before.
The poster dialog's default is 24x36 in at 300 dpi, a 78-megapixel render: minutes on a desktop, and
beyond a phone's canvas limit, so "Export poster" appeared to do nothing on a phone. On a phone it now
opens on Letter at 150 dpi, and sizes or resolutions over the phone canvas limit are disabled with the
reason shown, in every locale. Desktop is unchanged.
The map's attribution control is a round (i) as well, and two identical glyphs on one map read as the
same thing. Both copies of the glyph change: MapInfoButton (the map control and the dashboard header
button) and MapInfo's floating fallback button.
The panel is role=tabpanel, labelled by the selected tab; each tab names it with aria-controls. Only the
selected tab is in the tab order, and Left/Right switch tabs with focus following.
MapInfo gains a `strategyKey` prop: a catalogue key prefix whose .bottom is the bottom line and .p1, .p2 … the
points, read in order until the first missing one (the catalogue decides how many). The popup shows the intro
(the lead), then:
- a map with examples AND a strategy gets two tabs, Examples first, then Strategy (44px targets, reset to
Examples on every open);
- a map with only a strategy goes straight to it, under a Strategy heading;
- a map with neither is unchanged.
The takeaway is not shown beside a strategy, which supersedes it. Labels come from mapInfo.tabExamples and
mapInfo.tabStrategy. Prayer Progress's own info (for embeds) names its strategy key too.
The shared region/country map lifted its bottom corners by the gallery's round-button clearance whenever
that button rendered. That suits a map that fills the screen, but the Regions maps sit in the page flow,
so on a phone the credit floated 80-100 px up the map. The lift is removed; the full-height maps keep
their own clearance in the mobile legend.