From 61e62f3894914b2ca7c8c80443f6623090afe2dd Mon Sep 17 00:00:00 2001 From: Nicolas Fry Date: Tue, 20 Oct 2026 09:58:46 -0400 Subject: [PATCH 1/3] docs(turbosign): document signing page navigation and the pageNavigation option Add pageNavigation (auto, collapsed, hidden) to the embedded signing reference with SDK samples and errors, note in the build guides that the page navigation follows the iframe width, and describe the page thumbnails signers see, with screenshots. --- docs/TurboSign/Setting-up-TurboSign.md | 12 ++++++ .../embedded-signing/build/own-iframe.md | 4 ++ .../embedded-signing/build/react-widget.md | 2 + .../embedded-signing/build/web-component.md | 2 + docs/TurboSign/embedded-signing/reference.md | 38 ++++++++++++++++-- .../external-identity-verification.md | 2 +- .../page-navigation-iframe.png | Bin 0 -> 44182 bytes .../page-navigation/01-desktop-rail.png | Bin 0 -> 31885 bytes .../page-navigation/02-phone-pages-sheet.png | Bin 0 -> 12815 bytes 9 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 static/img/embedded-signing/page-navigation-iframe.png create mode 100644 static/img/turbosign/page-navigation/01-desktop-rail.png create mode 100644 static/img/turbosign/page-navigation/02-phone-pages-sheet.png diff --git a/docs/TurboSign/Setting-up-TurboSign.md b/docs/TurboSign/Setting-up-TurboSign.md index 6ca41ad6..6f5e39f9 100644 --- a/docs/TurboSign/Setting-up-TurboSign.md +++ b/docs/TurboSign/Setting-up-TurboSign.md @@ -501,6 +501,18 @@ After clicking "Send Document": 3. **You track progress** on your TurboSign dashboard as each person signs 4. **Everyone receives** a copy of the fully signed document, including you as the sender +### What Your Signers See + +When a signer opens the document, a **Pages** panel shows every page as a thumbnail. A mark sits wherever that signer has a field: indigo for a field they still need to fill, green for one that's done, and dashed for an optional one. Each page also shows how many required fields are left on it. Clicking a thumbnail jumps to that page, and the highlight follows the page the signer is reading. + +![The signing page on a desktop, with the Pages panel open on the left showing 6 pages, page 2 highlighted with 2 left, page 3 with 1 left, and the Needs you, Done and Optional legend](/img/turbosign/page-navigation/01-desktop-rail.png) + +- **Wide screens:** the panel is open on the left. +- **Narrower screens:** the panel collapses to slim tabs with a count badge. The signer can open it again, and their choice is remembered. +- **Tablets and phones:** a **Pages** button in the bottom bar opens the same thumbnails in a drawer or a bottom sheet. + +![The Pages bottom sheet on a phone, showing 4 required fields left and a row of page thumbnails with 2 left on page 2 and 1 left on page 3](/img/turbosign/page-navigation/02-phone-pages-sheet.png) +
## Congratulations! 🎉 diff --git a/docs/TurboSign/embedded-signing/build/own-iframe.md b/docs/TurboSign/embedded-signing/build/own-iframe.md index 869dcedc..028399fb 100644 --- a/docs/TurboSign/embedded-signing/build/own-iframe.md +++ b/docs/TurboSign/embedded-signing/build/own-iframe.md @@ -73,6 +73,10 @@ In your page, ask your server for a URL and set it as the iframe's `src`. Give t The browser code is the same whichever language your server uses. +The signing page shows a page thumbnail rail that follows the iframe's width, not the browser window's: open at 1200px and wider, collapsed to slim tabs from 900px to 1199px, and a **Pages** button in the bottom bar under 900px. Picking a page scrolls only the document inside the iframe, never your page. To start the rail collapsed or hide it, pass `pageNavigation` when you request the signing URL. See [Page navigation](../reference.md#page-navigation). + +![The signing page in a host app's iframe, with the page thumbnail rail collapsed to slim tabs and count badges on the pages that still need the signer](/img/embedded-signing/page-navigation-iframe.png) + ## Step 4: Listen for the completion message When the signer finishes, the signing page posts a `turbosign:completed` message to your page. Accept it only when it comes from the TurboSign origin **and** from your own iframe. diff --git a/docs/TurboSign/embedded-signing/build/react-widget.md b/docs/TurboSign/embedded-signing/build/react-widget.md index 3c28f506..e54b9256 100644 --- a/docs/TurboSign/embedded-signing/build/react-widget.md +++ b/docs/TurboSign/embedded-signing/build/react-widget.md @@ -108,6 +108,8 @@ export function SignStep({ name, email }: { name: string; email: string }) { | `onDeclined`, `onError` | No | Reserved. The signing page does not send these events yet. | | `allowAnyOrigin` | No | Development only. Accepts messages from any origin. Never ship it. | +The widget has no prop for the signing page's page navigation. The thumbnail rail follows the widget's width (open at 1200px and wider, collapsed from 900px to 1199px, a **Pages** button under 900px). To start it collapsed or hide it, pass `pageNavigation` on your server when you request the signing URL. See [Page navigation](../reference.md#page-navigation). + :::warning Don't leave origin empty The widget fails closed. If `origin` is missing, it ignores every message, logs a one-time warning in the console, and `onCompleted` never fires. `allowAnyOrigin` turns that off for local debugging, but then any frame on your page could fake a completion. ::: diff --git a/docs/TurboSign/embedded-signing/build/web-component.md b/docs/TurboSign/embedded-signing/build/web-component.md index e1f11c08..d6c77cf7 100644 --- a/docs/TurboSign/embedded-signing/build/web-component.md +++ b/docs/TurboSign/embedded-signing/build/web-component.md @@ -110,6 +110,8 @@ Add a route to your server, for example `POST /api/signing-session`. It calls `c | `title` | No | The iframe's accessible name. Defaults to `TurboSign signing`. | | `allow-any-origin` | No | Development only. Accepts messages from any origin. Never ship it. | +The element has no attribute for the signing page's page navigation. The thumbnail rail follows the element's width (open at 1200px and wider, collapsed from 900px to 1199px, a **Pages** button under 900px). To start it collapsed or hide it, pass `pageNavigation` on your server when you request the signing URL. See [Page navigation](../reference.md#page-navigation). + The element re-emits `turbosign:completed` as a bubbling `CustomEvent`, so a listener on a parent element works too. It also defines `turbosign:declined` and `turbosign:error`, which the signing page does not send yet. :::warning Don't leave origin empty diff --git a/docs/TurboSign/embedded-signing/reference.md b/docs/TurboSign/embedded-signing/reference.md index f7363de1..c31b3ed0 100644 --- a/docs/TurboSign/embedded-signing/reference.md +++ b/docs/TurboSign/embedded-signing/reference.md @@ -11,6 +11,7 @@ keywords: - identityVerification - signing-url endpoint - turbosign:completed + - pageNavigation - embedded signing errors - OtpOverrideNotAllowed --- @@ -47,6 +48,7 @@ Creates the document, adds each signer, and returns a signing URL for whoever si | `fields` | No | Full field list. When set, it replaces every recipient's `fields` shorthand. | | `sendEmail` | No | Defaults to `false`. | | `returnUrl` | No | `https` URL the signer returns to after signing. | +| `pageNavigation` | No | `auto` (default), `collapsed` or `hidden`. How the signing page shows its page thumbnails in your iframe. See [Page navigation](#page-navigation). | A recipient's `auth` asks for a passcode, and its `fields` places fields on text anchors such as `{signature1}`. Leave `auth` off for no passcode (the [organization default](#the-organization-default) then applies). @@ -106,6 +108,7 @@ REST: `POST /turbosign/documents/{documentId}/signing-url` |---|---|---| | `recipientId` or `externalId` | Exactly one | Picks the recipient. | | `returnUrl` | No | `https` URL the signer returns to after signing. See [Return URL](#return-url). | +| `pageNavigation` | No | `auto` (default), `collapsed` or `hidden`. How the signing page shows its page thumbnails in your iframe. See [Page navigation](#page-navigation). | | `identityAssertion` | For `external_idv` | Your provider's verification. See [External identity verification](../identity-verification/external-identity-verification.md). | Unknown keys are rejected. @@ -150,6 +153,24 @@ The REST response wraps the result in `data.results`. The SDKs return the inner - The signing page reads it back when it loads and redirects there after the signer finishes. - It is set per request. Requesting a new signing URL without `returnUrl` clears the one stored earlier. +#### Page navigation {#page-navigation} + +The signing page shows every page of the document as a thumbnail, marks where the signer's fields are, and counts the required fields left on each page. `pageNavigation` sets how that navigation appears in your iframe: + +| Value | What the signer sees | +|---|---| +| `auto` (default) | Sized to the iframe's width, not the browser window's: the thumbnail rail is open at 1200px and wider, collapsed to slim tabs from 900px to 1199px, and replaced by a **Pages** button in the bottom bar under 900px. | +| `collapsed` | The rail starts collapsed at any width. The signer can still open it. | +| `hidden` | No rail and no **Pages** button. | + +- Any other value is rejected with a `400`. +- It is set per request, like `returnUrl`. Requesting a new signing URL without `pageNavigation`, or with `auto`, resets it to `auto`. +- `createEmbeddedSignature` passes it to the signing URL it returns for the first signer. When you mint a URL for a later signer with `createSigningUrl`, pass it again. +- It applies only to signing URLs from `createSigningUrl` and `createEmbeddedSignature`. Signing links sent by email always behave as `auto`. +- When the signer picks a page, only the document inside the iframe scrolls, never your page. + +In the SDKs: `pageNavigation` in JavaScript / TypeScript (type `PageNavigationMode`), `page_navigation=` in Python, `PageNavigation` with the `PageNavigationAuto`, `PageNavigationCollapsed` and `PageNavigationHidden` constants in Go, the `PageNavigation` enum in PHP and Java, and `page_navigation:` on `create_signing_url` in Ruby (`pageNavigation:` in the `create_embedded_signature` request hash). + ### Example @@ -161,6 +182,7 @@ const { url, expiresAt, identityVerificationMode, pendingChecks } = await TurboSign.createSigningUrl(documentId, { externalId: "your_customer_123", // or recipientId, exactly one returnUrl: "https://app.yourcompany.com/signed", + pageNavigation: "collapsed", // optional: "auto" (default), "collapsed" or "hidden" }); ``` @@ -173,6 +195,7 @@ link = await TurboSign.create_signing_url( document_id, external_id="your_customer_123", # or recipient_id, exactly one return_url="https://app.yourcompany.com/signed", + page_navigation="collapsed", # optional: "auto" (default), "collapsed" or "hidden" ) url, pending_checks = link["url"], link["pendingChecks"] ``` @@ -181,11 +204,13 @@ url, pending_checks = link["url"], link["pendingChecks"] ```php +use TurboDocx\Types\PageNavigation; use TurboDocx\Types\Requests\CreateSigningUrlRequest; $link = TurboSign::createSigningUrl($documentId, new CreateSigningUrlRequest( externalId: 'your_customer_123', // or recipientId, exactly one - returnUrl: 'https://app.yourcompany.com/signed' + returnUrl: 'https://app.yourcompany.com/signed', + pageNavigation: PageNavigation::COLLAPSED // optional: AUTO (default), COLLAPSED or HIDDEN )); $url = $link->url; ``` @@ -196,8 +221,9 @@ $url = $link->url; ```go // Inside a function that returns error, with client and ctx as in "Your own iframe". pdf holds the PDF bytes. link, err := client.TurboSign.CreateSigningURL(ctx, documentID, &turbodocx.CreateSigningURLRequest{ - ExternalID: "your_customer_123", // or RecipientID, exactly one - ReturnURL: "https://app.yourcompany.com/signed", + ExternalID: "your_customer_123", // or RecipientID, exactly one + ReturnURL: "https://app.yourcompany.com/signed", + PageNavigation: turbodocx.PageNavigationCollapsed, // optional: Auto (default), Collapsed or Hidden }) if err != nil { return err @@ -215,6 +241,7 @@ CreateSigningUrlResponse link = client.turboSign().createSigningUrl( new CreateSigningUrlRequest.Builder() .externalId("your_customer_123") // or recipientId, exactly one .returnUrl("https://app.yourcompany.com/signed") + .pageNavigation(PageNavigation.COLLAPSED) // optional: AUTO (default), COLLAPSED or HIDDEN .build()); String url = link.getUrl(); ``` @@ -227,7 +254,8 @@ String url = link.getUrl(); link = TurboDocxSdk::TurboSign.create_signing_url( document_id, external_id: "your_customer_123", # or recipient_id:, exactly one - return_url: "https://app.yourcompany.com/signed" + return_url: "https://app.yourcompany.com/signed", + page_navigation: "collapsed" # optional: "auto" (default), "collapsed" or "hidden" ) url = link["url"] ``` @@ -241,6 +269,7 @@ url = link["url"] |---|---|---| | 400 | `RecipientSelectorInvalid`, `InvalidReturnUrl` | Send exactly one selector; `returnUrl` must be `https`. | | 400 | `IdentityAssertion*`, `IdentityProviderMismatch`, `IdentityEmailMismatch` | The `external_idv` assertion is missing or fails a check. | +| 400 | none (`type` is `ValidationError`) | `pageNavigation` is not `auto`, `collapsed` or `hidden`. | | 403 | none (a plain `403 Forbidden`) | The API key belongs to a **User**. | | 403 | `EmbeddedSigningNotEnabled`, `ExternalIdvNotAllowed`, `IdentityOverrideNotAllowed` | The organization has not turned on what the recipient uses. | | 404 | `RecipientNotFound` | No recipient matches the selector. | @@ -524,6 +553,7 @@ Identity and passcode errors from sending a document and from `createSigningUrl` | 400 | `DuplicateExternalId` | Two recipients on the document share an `externalId`. | | 400 | `RecipientSelectorInvalid` | `createSigningUrl` needs exactly one of `recipientId` or `externalId`. | | 400 | `InvalidReturnUrl` | `returnUrl` is not an `https` URL. | +| 400 | none (`type` is `ValidationError`) | `createSigningUrl` got a `pageNavigation` other than `auto`, `collapsed` or `hidden`. This body is `{ "message", "type", "data": { "errors" } }`, not the four-field body above. | | 400 | `IdentityAssertionRequired`, `IdentityAssertionInvalid`, `IdentityProviderMismatch`, `IdentityEmailMismatch`, `IdentityAssertionStale`, `IdentityAssertionReused` | The `external_idv` assertion is missing or fails a check (see [External identity verification](../identity-verification/external-identity-verification.md#errors)). | | 402 | `OtpNotEntitled`, `SmsOtpLimitExceeded` | The plan does not include this verification, or the SMS allowance is used up. | | 403 | none (a plain `403 Forbidden`) | The API key belongs to a **User**. Requesting a signing URL needs an **Administrator** or **Contributor** key. | diff --git a/docs/TurboSign/identity-verification/external-identity-verification.md b/docs/TurboSign/identity-verification/external-identity-verification.md index 512eb5f6..9dd2fb2f 100644 --- a/docs/TurboSign/identity-verification/external-identity-verification.md +++ b/docs/TurboSign/identity-verification/external-identity-verification.md @@ -418,7 +418,7 @@ url = link["url"] Open `url` right away: it is single-use and expires in about five minutes. To show it inside your app, hand it to the [React widget](../embedded-signing/build/react-widget.md), frame it in [your own iframe](../embedded-signing/build/own-iframe.md), or use the [web component](../embedded-signing/build/web-component.md). -The REST equivalent is `POST /turbosign/documents/{documentId}/signing-url` with the same body (`externalId` or `recipientId`, `identityAssertion`, optional `returnUrl`). Unknown keys are rejected. +The REST equivalent is `POST /turbosign/documents/{documentId}/signing-url` with the same body (`externalId` or `recipientId`, `identityAssertion`, optional `returnUrl`, optional `pageNavigation`). Unknown keys are rejected. ### Required assertion fields diff --git a/static/img/embedded-signing/page-navigation-iframe.png b/static/img/embedded-signing/page-navigation-iframe.png new file mode 100644 index 0000000000000000000000000000000000000000..56717061bd48cf3d2e10f927aa5bfff0ed799050 GIT binary patch literal 44182 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 CeRtmg literal 0 HcmV?d00001 diff --git a/static/img/turbosign/page-navigation/02-phone-pages-sheet.png b/static/img/turbosign/page-navigation/02-phone-pages-sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..078cae8a0b1fec33e37fa00483fa1c66997e04fd GIT binary patch literal 12815 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 vQZMYvp?#ufaBczr=mAocRg Date: Tue, 20 Oct 2026 10:25:02 -0400 Subject: [PATCH 2/3] docs(turbosign): a non-https returnUrl is a validation error The signing-url body is validated before the handler runs, so a non-https returnUrl comes back as a 400 ValidationError, not InvalidReturnUrl. Fold it into the ValidationError rows. --- docs/TurboSign/embedded-signing/reference.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/TurboSign/embedded-signing/reference.md b/docs/TurboSign/embedded-signing/reference.md index c31b3ed0..ab157582 100644 --- a/docs/TurboSign/embedded-signing/reference.md +++ b/docs/TurboSign/embedded-signing/reference.md @@ -267,9 +267,9 @@ url = link["url"] | Status | `code` | Meaning | |---|---|---| -| 400 | `RecipientSelectorInvalid`, `InvalidReturnUrl` | Send exactly one selector; `returnUrl` must be `https`. | +| 400 | `RecipientSelectorInvalid` | Send exactly one selector. | | 400 | `IdentityAssertion*`, `IdentityProviderMismatch`, `IdentityEmailMismatch` | The `external_idv` assertion is missing or fails a check. | -| 400 | none (`type` is `ValidationError`) | `pageNavigation` is not `auto`, `collapsed` or `hidden`. | +| 400 | none (`type` is `ValidationError`) | The body failed validation: `returnUrl` is not an `https` URL, or `pageNavigation` is not `auto`, `collapsed` or `hidden`. | | 403 | none (a plain `403 Forbidden`) | The API key belongs to a **User**. | | 403 | `EmbeddedSigningNotEnabled`, `ExternalIdvNotAllowed`, `IdentityOverrideNotAllowed` | The organization has not turned on what the recipient uses. | | 404 | `RecipientNotFound` | No recipient matches the selector. | @@ -552,8 +552,7 @@ Identity and passcode errors from sending a document and from `createSigningUrl` | 400 | `IdentityConfigInvalid`, `IdvProviderRequired`, `OverrideNotAcknowledged`, `IdentityModeConflict` | The recipient's `identityVerification` block is invalid or incomplete. | | 400 | `DuplicateExternalId` | Two recipients on the document share an `externalId`. | | 400 | `RecipientSelectorInvalid` | `createSigningUrl` needs exactly one of `recipientId` or `externalId`. | -| 400 | `InvalidReturnUrl` | `returnUrl` is not an `https` URL. | -| 400 | none (`type` is `ValidationError`) | `createSigningUrl` got a `pageNavigation` other than `auto`, `collapsed` or `hidden`. This body is `{ "message", "type", "data": { "errors" } }`, not the four-field body above. | +| 400 | none (`type` is `ValidationError`) | The `createSigningUrl` body failed validation: a `returnUrl` that is not `https`, or a `pageNavigation` other than `auto`, `collapsed` or `hidden`. This body is `{ "message", "type", "data": { "errors" } }`, not the four-field body above. | | 400 | `IdentityAssertionRequired`, `IdentityAssertionInvalid`, `IdentityProviderMismatch`, `IdentityEmailMismatch`, `IdentityAssertionStale`, `IdentityAssertionReused` | The `external_idv` assertion is missing or fails a check (see [External identity verification](../identity-verification/external-identity-verification.md#errors)). | | 402 | `OtpNotEntitled`, `SmsOtpLimitExceeded` | The plan does not include this verification, or the SMS allowance is used up. | | 403 | none (a plain `403 Forbidden`) | The API key belongs to a **User**. Requesting a signing URL needs an **Administrator** or **Contributor** key. | From 50d77c0fc9345767dd7c4eda65ba254caeb3d6e5 Mon Sep 17 00:00:00 2001 From: Nicolas Fry Date: Tue, 20 Oct 2026 12:04:43 -0400 Subject: [PATCH 3/3] docs(turbosign): describe the page button as it appears The bottom-bar button shows a grid icon and the current page (3/6), not the word Pages. Found walking the docs against the live signing page. --- docs/TurboSign/Setting-up-TurboSign.md | 2 +- docs/TurboSign/embedded-signing/build/own-iframe.md | 2 +- docs/TurboSign/embedded-signing/build/react-widget.md | 2 +- docs/TurboSign/embedded-signing/build/web-component.md | 2 +- docs/TurboSign/embedded-signing/reference.md | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/TurboSign/Setting-up-TurboSign.md b/docs/TurboSign/Setting-up-TurboSign.md index 6f5e39f9..e6558388 100644 --- a/docs/TurboSign/Setting-up-TurboSign.md +++ b/docs/TurboSign/Setting-up-TurboSign.md @@ -509,7 +509,7 @@ When a signer opens the document, a **Pages** panel shows every page as a thumbn - **Wide screens:** the panel is open on the left. - **Narrower screens:** the panel collapses to slim tabs with a count badge. The signer can open it again, and their choice is remembered. -- **Tablets and phones:** a **Pages** button in the bottom bar opens the same thumbnails in a drawer or a bottom sheet. +- **Tablets and phones:** a page button in the bottom bar (a grid icon with the current page, like **3/6**) opens the same thumbnails in a drawer or a bottom sheet. ![The Pages bottom sheet on a phone, showing 4 required fields left and a row of page thumbnails with 2 left on page 2 and 1 left on page 3](/img/turbosign/page-navigation/02-phone-pages-sheet.png) diff --git a/docs/TurboSign/embedded-signing/build/own-iframe.md b/docs/TurboSign/embedded-signing/build/own-iframe.md index 028399fb..c5b0edea 100644 --- a/docs/TurboSign/embedded-signing/build/own-iframe.md +++ b/docs/TurboSign/embedded-signing/build/own-iframe.md @@ -73,7 +73,7 @@ In your page, ask your server for a URL and set it as the iframe's `src`. Give t The browser code is the same whichever language your server uses. -The signing page shows a page thumbnail rail that follows the iframe's width, not the browser window's: open at 1200px and wider, collapsed to slim tabs from 900px to 1199px, and a **Pages** button in the bottom bar under 900px. Picking a page scrolls only the document inside the iframe, never your page. To start the rail collapsed or hide it, pass `pageNavigation` when you request the signing URL. See [Page navigation](../reference.md#page-navigation). +The signing page shows a page thumbnail rail that follows the iframe's width, not the browser window's: open at 1200px and wider, collapsed to slim tabs from 900px to 1199px, and under 900px a page button in the bottom bar (a grid icon with the current page, like **3/6**). Picking a page scrolls only the document inside the iframe, never your page. To start the rail collapsed or hide it, pass `pageNavigation` when you request the signing URL. See [Page navigation](../reference.md#page-navigation). ![The signing page in a host app's iframe, with the page thumbnail rail collapsed to slim tabs and count badges on the pages that still need the signer](/img/embedded-signing/page-navigation-iframe.png) diff --git a/docs/TurboSign/embedded-signing/build/react-widget.md b/docs/TurboSign/embedded-signing/build/react-widget.md index e54b9256..8a14557f 100644 --- a/docs/TurboSign/embedded-signing/build/react-widget.md +++ b/docs/TurboSign/embedded-signing/build/react-widget.md @@ -108,7 +108,7 @@ export function SignStep({ name, email }: { name: string; email: string }) { | `onDeclined`, `onError` | No | Reserved. The signing page does not send these events yet. | | `allowAnyOrigin` | No | Development only. Accepts messages from any origin. Never ship it. | -The widget has no prop for the signing page's page navigation. The thumbnail rail follows the widget's width (open at 1200px and wider, collapsed from 900px to 1199px, a **Pages** button under 900px). To start it collapsed or hide it, pass `pageNavigation` on your server when you request the signing URL. See [Page navigation](../reference.md#page-navigation). +The widget has no prop for the signing page's page navigation. The thumbnail rail follows the widget's width (open at 1200px and wider, collapsed from 900px to 1199px, a page button in the bottom bar under 900px). To start it collapsed or hide it, pass `pageNavigation` on your server when you request the signing URL. See [Page navigation](../reference.md#page-navigation). :::warning Don't leave origin empty The widget fails closed. If `origin` is missing, it ignores every message, logs a one-time warning in the console, and `onCompleted` never fires. `allowAnyOrigin` turns that off for local debugging, but then any frame on your page could fake a completion. diff --git a/docs/TurboSign/embedded-signing/build/web-component.md b/docs/TurboSign/embedded-signing/build/web-component.md index d6c77cf7..90c6e6cb 100644 --- a/docs/TurboSign/embedded-signing/build/web-component.md +++ b/docs/TurboSign/embedded-signing/build/web-component.md @@ -110,7 +110,7 @@ Add a route to your server, for example `POST /api/signing-session`. It calls `c | `title` | No | The iframe's accessible name. Defaults to `TurboSign signing`. | | `allow-any-origin` | No | Development only. Accepts messages from any origin. Never ship it. | -The element has no attribute for the signing page's page navigation. The thumbnail rail follows the element's width (open at 1200px and wider, collapsed from 900px to 1199px, a **Pages** button under 900px). To start it collapsed or hide it, pass `pageNavigation` on your server when you request the signing URL. See [Page navigation](../reference.md#page-navigation). +The element has no attribute for the signing page's page navigation. The thumbnail rail follows the element's width (open at 1200px and wider, collapsed from 900px to 1199px, a page button in the bottom bar under 900px). To start it collapsed or hide it, pass `pageNavigation` on your server when you request the signing URL. See [Page navigation](../reference.md#page-navigation). The element re-emits `turbosign:completed` as a bubbling `CustomEvent`, so a listener on a parent element works too. It also defines `turbosign:declined` and `turbosign:error`, which the signing page does not send yet. diff --git a/docs/TurboSign/embedded-signing/reference.md b/docs/TurboSign/embedded-signing/reference.md index ab157582..d920d1e0 100644 --- a/docs/TurboSign/embedded-signing/reference.md +++ b/docs/TurboSign/embedded-signing/reference.md @@ -159,9 +159,9 @@ The signing page shows every page of the document as a thumbnail, marks where th | Value | What the signer sees | |---|---| -| `auto` (default) | Sized to the iframe's width, not the browser window's: the thumbnail rail is open at 1200px and wider, collapsed to slim tabs from 900px to 1199px, and replaced by a **Pages** button in the bottom bar under 900px. | +| `auto` (default) | Sized to the iframe's width, not the browser window's: the thumbnail rail is open at 1200px and wider, collapsed to slim tabs from 900px to 1199px, and replaced under 900px by a page button in the bottom bar (a grid icon with the current page, like **3/6**). | | `collapsed` | The rail starts collapsed at any width. The signer can still open it. | -| `hidden` | No rail and no **Pages** button. | +| `hidden` | No rail and no page button in the bottom bar. | - Any other value is rejected with a `400`. - It is set per request, like `returnUrl`. Requesting a new signing URL without `pageNavigation`, or with `auto`, resets it to `auto`.