feat(SDK-1161): add PrintChecksForm - #2586
Merged
Merged
Conversation
First slice of the print-checks feature (split out of #2572 for reviewability): the shared event constants and the two terminal screens of the upcoming print-checks flow, PrintChecksFailure and PrintChecksSummary. Both are standalone, presentational components that will be wired into a state-machine orchestrator in a follow-up PR stacked on this one. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Second slice of the print-checks feature stack (see #2584). A standalone banner that fetches its own payroll data via usePayrollsGet, shows an info alert when the payroll has employees paid by check, and surfaces a "View and print checks" CTA once the payroll is processed. Fires PRINT_CHECKS_START when clicked. Stacked on kw/feat/print-checks-1-terminal-screens; targets that branch, not main. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Third slice of the print-checks feature stack (see #2584). The core piece: the check-stock form, the generate-and-poll cycle against usePayrollsGeneratePrintableChecksMutation/useGeneratedDocumentsGet, and the checks-download mechanism. The download navigates directly to the generated document's signed URL via a synthetic anchor click rather than fetching it into a blob: the URL already has response-content-disposition=attachment baked into its query string, so a direct browser-level request downloads it via that response header. A client-side fetch() would be subject to CORS, which the document host doesn't allow, and fails outright. Defines a narrow PrintChecksFormFlowContext (just the isGenerating flag its Footer needs from the shared machine context) rather than depending on the orchestrator's full context type, which doesn't land until the next PR in the stack — keeps this PR buildable and testable on its own. Stacked on kw/feat/print-checks-2-banner; targets that branch, not main. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This was referenced Aug 18, 2026
serikjensen
approved these changes
Aug 19, 2026
Comment on lines
+16
to
+25
| (Story: React.ComponentType) => ( | ||
| <Suspense fallback={<div>Loading translations...</div>}> | ||
| <I18nLoader> | ||
| <GustoTestProvider> | ||
| <Story /> | ||
| </GustoTestProvider> | ||
| </I18nLoader> | ||
| </Suspense> | ||
| ), | ||
| ], |
Member
There was a problem hiding this comment.
same feedback around stories, i think there should be an abstraction to share this stuff, i feel like it exists already?
…nto kw/feat/print-checks-3-form # Conflicts: # .reports/embedded-react-sdk.api.md # docs/reference/Translations/index.md
…2-banner # Conflicts: # .reports/embedded-react-sdk.api.md # docs/reference/Translations/index.md # src/i18n/types.d.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Third PR in the print-checks stack (see #2584 for the full split rationale, splitting up #2572). This is the core piece — the check-stock form, the generate-and-poll cycle, and the checks-download mechanism.
usePayrollsGeneratePrintableChecksMutation, then pollsuseGeneratedDocumentsGetuntil the document is ready or fails.response-content-disposition=attachmentbaked into its query string, so a direct browser-level request downloads it via that response header — afetch()from JS is subject to CORS, which the document host doesn't allow, and fails outright (learned this the hard way against a real generated URL).PrintChecksFormFlowContext(just theisGeneratingflag itsFooterneeds) instead of depending on the orchestrator's full context type, which doesn't land until PR 4 — keeps this PR buildable and testable in isolation.Base branch note: targets
kw/feat/print-checks-2-banner, stacked on PR #2585.Stack
Testing
npm run test -- --run src/components/Payroll/PrintChecks— 21 tests passnpx tsc --noEmitandnpm run lint:checkclean🤖 Generated with Claude Code