Please login to access all of the features of the Community Site.

Cover Sheets

Sometimes you do not want to swap content into the current screen; you want to slide up a detail view over it. Hx.Target="coversheet" presents the response fragment in a cover sheet instead of swapping it in place.

<Button Text="Get Person Information"
        Hx.Get="^/sink/person-details"
        Hx.Target="coversheet" />

coversheet is a reserved target name, alongside this. Both are case-insensitive.

A sheet is its own Helix scope

This is the part to plan around. The sheet is not part of the page it covers, and it gets:

  • Ids are scoped to the sheet. Requests inside the sheet target ids inside the sheet. A sheet cannot target the presenting page, and the page cannot target into the sheet.
  • Dismissing the sheet cancels its in-flight requests.
  • The opener's application carries over, so short ^/endpoint-slug routes keep working inside the sheet.
  • The sheet stands in for the block. A request inside it with no Hx.Target fills the sheet, and errors render there.

To update the presenting page from inside a sheet, use HX-Refresh or an X-Helix-Command header. See Endpoint Responses.

The title comes from the fragment

PropertyTypeDescription
Hx.PageTitlestringSets the title of whatever is presenting the fragment.

Inherits: no. Read only from a response fragment's root element.

<!-- Returned by your endpoint. -->
<VerticalStackLayout Hx.PageTitle="Group Details">
    <Label Text="..." />
</VerticalStackLayout>

For a coversheet target this sets the sheet title. For a normal swap it sets the page title.

Note

Putting Hx.PageTitle on the initiating element does nothing at all, silently. That is a decision, not an oversight: keeping the title server-controlled is better than a pile of Hx.CoverSheet.* properties on every button that opens a sheet. Put it on what you return.

Behaviors to expect

  • One sheet at a time. Presenting while a sheet is already open drops the response rather than queueing it or stacking a second sheet.
  • Retitling an open sheet does not repaint the title bar before iOS 26. The sheet reads its title when it is presented, so a later swap that changes Hx.PageTitle updates nothing visible.
  • HX-Refresh from inside a sheet reloads the presenting page but leaves the sheet open.

The general cover sheet guidance still applies: use them for secondary detail, and keep to one at a time.