@gusto/embedded-react-sdk 0.52.1 → 0.53.0
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 +52 -0
- package/dist/components/Base/Base.d.ts +2 -2
- package/dist/components/Base/Base.js.map +1 -1
- package/dist/components/Common/DateRangeFilter/DateRangeFilter.d.ts +1 -2
- package/dist/components/Common/DateRangeFilter/DateRangeFilter.js +42 -43
- package/dist/components/Common/DateRangeFilter/DateRangeFilter.js.map +1 -1
- package/dist/components/Common/Fields/PercentageField/PercentageField.js +44 -42
- package/dist/components/Common/Fields/PercentageField/PercentageField.js.map +1 -1
- package/dist/components/Common/UI/Box/Box.js +6 -6
- package/dist/components/Common/UI/Box/Box.js.map +1 -1
- package/dist/components/Common/UI/Box/Box.module.scss.js +8 -8
- package/dist/components/Common/UI/Box/BoxTypes.d.ts +1 -1
- package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/Common/UI/CalendarPreview/CalendarPreview.js +16 -14
- package/dist/components/Common/UI/CalendarPreview/CalendarPreview.js.map +1 -1
- package/dist/components/Common/UI/Dialog/Dialog.js +29 -28
- package/dist/components/Common/UI/Dialog/Dialog.js.map +1 -1
- package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
- package/dist/components/Common/UI/FormBox/FormBox.d.ts +1 -1
- package/dist/components/Common/UI/FormBox/FormBox.js +9 -8
- package/dist/components/Common/UI/FormBox/FormBox.js.map +1 -1
- package/dist/components/Common/UI/FormBox/FormBox.module.scss.js +8 -6
- package/dist/components/Common/UI/FormBox/FormBox.module.scss.js.map +1 -1
- package/dist/components/Common/UI/FormBox/FormBoxTypes.d.ts +5 -1
- package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
- package/dist/components/Company/AssignSignatory/AssignSignatory.js +7 -10
- package/dist/components/Company/AssignSignatory/AssignSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +6 -8
- package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +8 -9
- package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +18 -21
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +11 -12
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/Head.js +8 -9
- package/dist/components/Company/AssignSignatory/Head.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +6 -7
- package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +5 -8
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +20 -21
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/TitleSelect.js +10 -12
- package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +2 -3
- package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/Form.js +9 -11
- package/dist/components/Company/BankAccount/BankAccountForm/Form.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/Head.js +2 -3
- package/dist/components/Company/BankAccount/BankAccountForm/Head.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/Actions.js +6 -7
- package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +7 -8
- package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/Form.js +4 -6
- package/dist/components/Company/BankAccount/BankAccountVerify/Form.js.map +1 -1
- package/dist/components/Company/BankAccount/stateMachine.d.ts +0 -1
- package/dist/components/Company/BankAccount/stateMachine.js +33 -35
- package/dist/components/Company/BankAccount/stateMachine.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +5 -6
- package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +11 -14
- package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +7 -8
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Company/DocumentSigner/stateMachine.d.ts +0 -1
- package/dist/components/Company/DocumentSigner/stateMachine.js +27 -29
- package/dist/components/Company/DocumentSigner/stateMachine.js.map +1 -1
- package/dist/components/Company/FederalTaxes/Actions.js +6 -7
- package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
- package/dist/components/Company/FederalTaxes/FederalTaxes.js +7 -10
- package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
- package/dist/components/Company/FederalTaxes/Form.js +4 -4
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +5 -6
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Actions.js +5 -6
- package/dist/components/Company/Industry/Actions.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +6 -7
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Industry/Edit.js +10 -12
- package/dist/components/Company/Industry/Edit.js.map +1 -1
- package/dist/components/Company/Industry/IndustrySelect.js +6 -8
- package/dist/components/Company/Industry/IndustrySelect.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/Actions.js +6 -7
- package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/Form.js +4 -6
- package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/LocationForm.js +11 -14
- package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/Actions.js +2 -3
- package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/LocationsList.js +9 -12
- package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/Completed.js +5 -6
- package/dist/components/Company/OnboardingOverview/Completed.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/MissingRequirements.js +9 -10
- package/dist/components/Company/OnboardingOverview/MissingRequirements.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +2 -5
- package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +3 -4
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleForm.js +47 -51
- package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
- package/dist/components/Company/PaySchedule/payScheduleStateMachine.d.ts +0 -1
- package/dist/components/Company/PaySchedule/payScheduleStateMachine.js +26 -28
- package/dist/components/Company/PaySchedule/payScheduleStateMachine.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxes.d.ts +2 -1
- package/dist/components/Company/StateTaxes/StateTaxes.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesComponents.d.ts +2 -0
- package/dist/components/Company/StateTaxes/StateTaxesComponents.js +29 -16
- package/dist/components/Company/StateTaxes/StateTaxesComponents.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +2 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/Form.d.ts +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/Form.js +21 -32
- package/dist/components/Company/StateTaxes/StateTaxesForm/Form.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +67 -75
- package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +6 -7
- package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/List.js +62 -47
- package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.d.ts +1 -0
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +26 -23
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.d.ts +1 -0
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/AddRateAction.d.ts +12 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/AddRateAction.js +36 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/AddRateAction.js.map +1 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.d.ts +10 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.js +110 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.js.map +1 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/TaxRateHistorySection.d.ts +18 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/TaxRateHistorySection.js +55 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/TaxRateHistorySection.js.map +1 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/TaxRateManagement.d.ts +47 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/TaxRateManagement.js +108 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/TaxRateManagement.js.map +1 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.d.ts +25 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +22 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/index.d.ts +1 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/toHistoryRows.d.ts +29 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/toHistoryRows.js +34 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/toHistoryRows.js.map +1 -0
- package/dist/components/Company/StateTaxes/shared/RequirementFields.d.ts +17 -0
- package/dist/components/Company/StateTaxes/shared/RequirementFields.js +24 -0
- package/dist/components/Company/StateTaxes/shared/RequirementFields.js.map +1 -0
- package/dist/components/Company/StateTaxes/{StateTaxesForm → shared}/applicableIf.d.ts +1 -1
- package/dist/components/Company/StateTaxes/shared/applicableIf.js.map +1 -0
- package/dist/components/Company/StateTaxes/shared/applicableIf.test.d.ts +1 -0
- package/dist/components/Company/StateTaxes/shared/buildRequirementSchema.d.ts +19 -0
- package/dist/components/Company/StateTaxes/shared/buildRequirementSchema.js +38 -0
- package/dist/components/Company/StateTaxes/shared/buildRequirementSchema.js.map +1 -0
- package/dist/components/Company/StateTaxes/shared/requirementValue.d.ts +2 -0
- package/dist/components/Company/StateTaxes/shared/requirementValue.js +7 -0
- package/dist/components/Company/StateTaxes/shared/requirementValue.js.map +1 -0
- package/dist/components/Company/StateTaxes/shared/rhfKey.d.ts +23 -0
- package/dist/components/Company/StateTaxes/shared/rhfKey.js +13 -0
- package/dist/components/Company/StateTaxes/shared/rhfKey.js.map +1 -0
- package/dist/components/Company/StateTaxes/shared/rhfKey.test.d.ts +1 -0
- package/dist/components/Company/StateTaxes/stateTaxesStateMachine.d.ts +1 -1
- package/dist/components/Company/StateTaxes/stateTaxesStateMachine.js +40 -20
- package/dist/components/Company/StateTaxes/stateTaxesStateMachine.js.map +1 -1
- package/dist/components/Company/exports/companyOnboarding.d.ts +1 -0
- package/dist/components/Company/exports/companyOnboarding.js +12 -10
- package/dist/components/Company/exports/companyOnboarding.js.map +1 -1
- package/dist/components/Contractor/Address/Address.js +83 -76
- package/dist/components/Contractor/Address/Address.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.d.ts +39 -0
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +90 -0
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -0
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +22 -0
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +247 -0
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -0
- package/dist/components/Contractor/ContractorList/{index.d.ts → onboarding/ContractorList.d.ts} +3 -3
- package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js +51 -0
- package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js.map +1 -0
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.d.ts +16 -0
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js +113 -0
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js.map +1 -0
- package/dist/components/Contractor/ContractorList/shared/index.d.ts +1 -0
- package/dist/components/Contractor/ContractorList/shared/useContractorList.d.ts +87 -0
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js +110 -0
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -0
- package/dist/components/Contractor/Documents/DocumentSigner/stateMachine.d.ts +0 -1
- package/dist/components/Contractor/Documents/DocumentSigner/stateMachine.js +18 -20
- package/dist/components/Contractor/Documents/DocumentSigner/stateMachine.js.map +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js +2 -3
- package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js +170 -123
- package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.module.scss.js +12 -0
- package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.module.scss.js.map +1 -0
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/fields.js +40 -39
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/fields.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js +91 -88
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.d.ts +0 -33
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js +77 -86
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js.map +1 -1
- package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js +1 -1
- package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js.map +1 -1
- package/dist/components/Contractor/OnboardingSummary/OnboardingSummary.js +9 -10
- package/dist/components/Contractor/OnboardingSummary/OnboardingSummary.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.js +2 -3
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +162 -251
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentFormSchema.d.ts +2 -1
- package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentFormSchema.js +2 -2
- package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentFormSchema.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentPresentation.js +45 -44
- package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js +2 -3
- package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +2 -3
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/shared/usePaymentAmountsEditor.d.ts +32 -0
- package/dist/components/Contractor/Payments/shared/usePaymentAmountsEditor.js +107 -0
- package/dist/components/Contractor/Payments/shared/usePaymentAmountsEditor.js.map +1 -0
- package/dist/components/Contractor/Payments/shared/usePaymentAmountsEditor.test.d.ts +1 -0
- package/dist/components/Contractor/Profile/BusinessSelfOnboardingProfile.js +6 -7
- package/dist/components/Contractor/Profile/BusinessSelfOnboardingProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/ContractorProfile.js +63 -57
- package/dist/components/Contractor/Profile/ContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/IndividualSelfOnboardingProfile.js +18 -19
- package/dist/components/Contractor/Profile/IndividualSelfOnboardingProfile.js.map +1 -1
- package/dist/components/Contractor/Submit/Submit.js +118 -102
- package/dist/components/Contractor/Submit/Submit.js.map +1 -1
- package/dist/components/Contractor/exports/contractorManagement.d.ts +1 -0
- package/dist/components/Contractor/exports/contractorManagement.js +12 -10
- package/dist/components/Contractor/exports/contractorManagement.js.map +1 -1
- package/dist/components/Contractor/exports/contractorOnboarding.d.ts +1 -1
- package/dist/components/Contractor/exports/contractorOnboarding.js +1 -1
- package/dist/components/Contractor/shared/useContractorHasSignedW9.d.ts +8 -0
- package/dist/components/Contractor/shared/useContractorHasSignedW9.js +10 -0
- package/dist/components/Contractor/shared/useContractorHasSignedW9.js.map +1 -0
- package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js +32 -33
- package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js +2 -3
- package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.js +6 -7
- package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.js +14 -15
- package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentManager.js +6 -7
- package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js +6 -7
- package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js +4 -5
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js +10 -13
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js +5 -6
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.module.scss.js +8 -0
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.module.scss.js.map +1 -0
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js +22 -21
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +6 -6
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js +5 -4
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js +3 -4
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js +6 -7
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js.map +1 -1
- package/dist/components/Employee/Documents/shared/SignatureForm/SignatureForm.js +11 -12
- package/dist/components/Employee/Documents/shared/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/management/FederalTaxesCard/FederalTaxesCard.js +15 -16
- package/dist/components/Employee/FederalTaxes/management/FederalTaxesCard/FederalTaxesCard.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js +6 -7
- package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js +11 -12
- package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressCard/HomeAddressCard.js +7 -8
- package/dist/components/Employee/HomeAddress/management/HomeAddressCard/HomeAddressCard.js.map +1 -1
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +4 -4
- package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js +29 -23
- package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js +26 -20
- package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js +133 -99
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.module.scss.js +8 -0
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.module.scss.js.map +1 -0
- package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js +19 -20
- package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.js +92 -86
- package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.js.map +1 -1
- package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +65 -64
- package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
- package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js +7 -8
- package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
- package/dist/components/Employee/Profile/management/ProfileEditForm.js +7 -7
- package/dist/components/Employee/Profile/onboarding/AdminProfile.js +6 -6
- package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +6 -6
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.d.ts +1 -0
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.d.ts +1 -0
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js.map +1 -1
- package/dist/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.js +11 -12
- package/dist/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.js.map +1 -1
- package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js +9 -10
- package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js.map +1 -1
- package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js +6 -7
- package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js +44 -45
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +23 -22
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +27 -27
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.js +9 -10
- package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +2 -3
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressCard/WorkAddressCard.js +16 -17
- package/dist/components/Employee/WorkAddress/management/WorkAddressCard/WorkAddressCard.js.map +1 -1
- package/dist/components/Flow/Flow.js +1 -1
- package/dist/components/Flow/FlowHeader.js +3 -4
- package/dist/components/Flow/FlowHeader.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +8 -9
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +7 -8
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +37 -37
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +8 -9
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +7 -8
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +10 -12
- package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +0 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js +7 -8
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.d.ts +3 -3
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +54 -50
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +80 -69
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +20 -18
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +138 -136
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.module.scss.js +10 -12
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.module.scss.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +4 -4
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js +2 -3
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +2 -3
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +1 -2
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/useRecoveryCaseErrorCode.js +2 -3
- package/dist/components/Payroll/RecoveryCases/useRecoveryCaseErrorCode.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +8 -9
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +2 -3
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js +4 -4
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js +4 -4
- package/dist/components/TimeOff/TimeOffFlow/TimeOffFlowComponents.js +34 -36
- package/dist/components/TimeOff/TimeOffFlow/TimeOffFlowComponents.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js +4 -4
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +24 -25
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
- package/dist/components/index.d.ts +40 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +6 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +29 -28
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/LocaleProvider/useLocale.d.ts +1 -9
- package/dist/contexts/LocaleProvider/useLocale.js +5 -15
- package/dist/contexts/LocaleProvider/useLocale.js.map +1 -1
- package/dist/contexts/NonceProvider/index.d.ts +1 -0
- package/dist/contexts/NonceProvider/useNonce.d.ts +37 -0
- package/dist/contexts/NonceProvider/useNonce.js +7 -0
- package/dist/contexts/NonceProvider/useNonce.js.map +1 -0
- package/dist/contexts/ThemeProvider/ThemeProvider.js +25 -24
- package/dist/contexts/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/contexts/index.d.ts +1 -0
- package/dist/hooks/useDateRangeFilter/useDateRangeFilter.d.ts +12 -7
- package/dist/hooks/useDateRangeFilter/useDateRangeFilter.js +25 -21
- package/dist/hooks/useDateRangeFilter/useDateRangeFilter.js.map +1 -1
- package/dist/i18n/I18n.js +1 -0
- package/dist/i18n/I18n.js.map +1 -1
- package/dist/i18n/en/Company.StateTaxes.json.js +6 -4
- package/dist/i18n/en/Company.StateTaxes.json.js.map +1 -1
- package/dist/i18n/en/Contractor.Address.json.js +22 -20
- package/dist/i18n/en/Contractor.Address.json.js.map +1 -1
- package/dist/i18n/en/Contractor.ContractorList.json.js +14 -12
- package/dist/i18n/en/Contractor.ContractorList.json.js.map +1 -1
- package/dist/i18n/en/Contractor.ManagementContractorList.json.js +60 -0
- package/dist/i18n/en/Contractor.ManagementContractorList.json.js.map +1 -0
- package/dist/i18n/en/Contractor.Profile.json.js +13 -11
- package/dist/i18n/en/Contractor.Profile.json.js.map +1 -1
- package/dist/i18n/en/Contractor.SignatureForm.json.js +5 -5
- package/dist/i18n/en/Employee.Management.PaymentMethodBankForm.json.js +18 -16
- package/dist/i18n/en/Employee.Management.PaymentMethodBankForm.json.js.map +1 -1
- package/dist/i18n/en/Employee.Management.PaymentMethodSplitForm.json.js +2 -2
- package/dist/i18n/en/Employee.PaymentMethod.json.js +74 -72
- package/dist/i18n/en/Employee.PaymentMethod.json.js.map +1 -1
- package/dist/i18n/en/Employee.SplitPaymentsFormBody.json.js +2 -2
- package/dist/i18n/en/Payroll.PayrollHistory.json.js +8 -8
- package/dist/i18n/en/Payroll.PayrollList.json.js +23 -23
- package/dist/i18n/types.d.ts +215 -17
- package/dist/index.d.ts +6 -3
- package/dist/index.js +15 -13
- package/dist/index.js.map +1 -1
- package/dist/models/external.d.ts +4 -0
- package/dist/partner-hook-utils/form/SDKFormProvider.js +39 -24
- package/dist/partner-hook-utils/form/SDKFormProvider.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/CheckboxHookField.js +12 -15
- package/dist/partner-hook-utils/form/fields/CheckboxHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/NumberInputHookField.js +16 -19
- package/dist/partner-hook-utils/form/fields/NumberInputHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +13 -16
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/SelectHookField.js +12 -15
- package/dist/partner-hook-utils/form/fields/SelectHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/SwitchHookField.js +18 -21
- package/dist/partner-hook-utils/form/fields/SwitchHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/TextInputHookField.js +9 -12
- package/dist/partner-hook-utils/form/fields/TextInputHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/preprocessors.d.ts +2 -2
- package/dist/partner-hook-utils/form/preprocessors.js +8 -7
- package/dist/partner-hook-utils/form/preprocessors.js.map +1 -1
- package/dist/partner-hook-utils/form/preprocessors.test.d.ts +1 -0
- package/dist/shared/constants.d.ts +12 -0
- package/dist/shared/constants.js +23 -17
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/Helpers.d.ts +1 -1
- package/docs/guides/endpoint-inventory.json +61 -27
- package/package.json +19 -17
- package/dist/components/Company/StateTaxes/StateTaxesForm/applicableIf.js.map +0 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/rhfKey.d.ts +0 -4
- package/dist/components/Company/StateTaxes/StateTaxesForm/rhfKey.js +0 -5
- package/dist/components/Company/StateTaxes/StateTaxesForm/rhfKey.js.map +0 -1
- package/dist/components/Contractor/ContractorList/index.js +0 -150
- package/dist/components/Contractor/ContractorList/index.js.map +0 -1
- package/dist/components/Contractor/ContractorList/useContractorList.d.ts +0 -18
- package/dist/components/Contractor/ContractorList/useContractorList.js +0 -15
- package/dist/components/Contractor/ContractorList/useContractorList.js.map +0 -1
- /package/dist/components/Company/StateTaxes/{StateTaxesForm/applicableIf.test.d.ts → TaxRateManagement/toHistoryRows.test.d.ts} +0 -0
- /package/dist/components/Company/StateTaxes/{StateTaxesForm → shared}/applicableIf.js +0 -0
package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.d.ts
CHANGED
|
@@ -16,39 +16,6 @@ export declare const W9_DOCUMENT_NAME = "taxpayer_identification_form_w_9";
|
|
|
16
16
|
* @internal
|
|
17
17
|
*/
|
|
18
18
|
export declare const NOT_APPLICABLE_VALUE = "N/A";
|
|
19
|
-
/**
|
|
20
|
-
* EIN input transform that preserves the `N/A` sentinel (and the in-progress
|
|
21
|
-
* prefixes a user types toward it) while formatting numeric input as a standard
|
|
22
|
-
* EIN (`NN-NNNNNNN`).
|
|
23
|
-
*
|
|
24
|
-
* @remarks
|
|
25
|
-
* The W-9 accepts `N/A` for a taxpayer who supplies an SSN instead of an EIN,
|
|
26
|
-
* but the plain `normalizeEin` formatter strips every non-digit on each
|
|
27
|
-
* keystroke — making the sentinel impossible to type. This wrapper lets the
|
|
28
|
-
* sentinel through (normalized to uppercase) and defers to `normalizeEin` for
|
|
29
|
-
* everything else.
|
|
30
|
-
*
|
|
31
|
-
* @param value - Raw user input.
|
|
32
|
-
* @returns The `N/A` sentinel (or an in-progress prefix), otherwise the EIN-formatted value.
|
|
33
|
-
* @internal
|
|
34
|
-
*/
|
|
35
|
-
export declare function normalizeEinOrNotApplicable(value: string): string;
|
|
36
|
-
/**
|
|
37
|
-
* SSN input transform that preserves the `N/A` sentinel (and the in-progress
|
|
38
|
-
* prefixes `N` and `N/`) while otherwise deferring to {@link normalizeSSN}.
|
|
39
|
-
*
|
|
40
|
-
* @remarks
|
|
41
|
-
* The W-9 accepts `N/A` for a taxpayer who supplies an EIN instead of an SSN,
|
|
42
|
-
* but the plain `normalizeSSN` formatter strips every non-digit on each
|
|
43
|
-
* keystroke — making the sentinel impossible to type. This wrapper lets the
|
|
44
|
-
* sentinel through (normalized to uppercase) and defers to `normalizeSSN` for
|
|
45
|
-
* everything else.
|
|
46
|
-
*
|
|
47
|
-
* @param value - Raw user input.
|
|
48
|
-
* @returns The `N/A` sentinel (or an in-progress prefix), otherwise the SSN-formatted value.
|
|
49
|
-
* @internal
|
|
50
|
-
*/
|
|
51
|
-
export declare function normalizeSsnOrNotApplicable(value: string): string;
|
|
52
19
|
/**
|
|
53
20
|
* Form-field name for the synthesized federal tax classification radio group.
|
|
54
21
|
*
|
package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { normalizeSSN as N } from "../../../../../helpers/ssn.js";
|
|
3
|
-
const R = "taxpayer_identification_form_w_9", _ = "N/A";
|
|
4
|
-
function D(e) {
|
|
5
|
-
const t = e.replace(/\s/g, "").toUpperCase();
|
|
6
|
-
return t === "NA" ? _ : t === "N" || t === "N/" || t === _ ? t : S(e);
|
|
7
|
-
}
|
|
8
|
-
function k(e) {
|
|
9
|
-
const t = e.replace(/\s/g, "").toUpperCase();
|
|
10
|
-
return t === "NA" ? _ : t === "N" || t === "N/" || t === _ ? t : N(e);
|
|
11
|
-
}
|
|
12
|
-
const x = "taxClassification", T = "llcClassificationCode", F = "otherText", C = [
|
|
1
|
+
const C = "taxpayer_identification_form_w_9", P = "N/A", S = "taxClassification", x = "llcClassificationCode", T = "otherText", A = [
|
|
13
2
|
"individual_proprietor",
|
|
14
3
|
"c_corporation",
|
|
15
4
|
"s_corporation",
|
|
@@ -17,7 +6,7 @@ const x = "taxClassification", T = "llcClassificationCode", F = "otherText", C =
|
|
|
17
6
|
"trust_estate",
|
|
18
7
|
"limited_liability_company",
|
|
19
8
|
"other"
|
|
20
|
-
], y = "limited_liability_company",
|
|
9
|
+
], y = "limited_liability_company", F = "other", b = ["c", "s", "p"], _ = {
|
|
21
10
|
name: "name",
|
|
22
11
|
businessName: "business_name",
|
|
23
12
|
otherText: "other_text",
|
|
@@ -34,64 +23,67 @@ const x = "taxClassification", T = "llcClassificationCode", F = "otherText", C =
|
|
|
34
23
|
ssn: "ssn",
|
|
35
24
|
ein: "ein",
|
|
36
25
|
signatureText: "signature_text"
|
|
37
|
-
},
|
|
38
|
-
function
|
|
39
|
-
return typeof
|
|
26
|
+
}, I = /* @__PURE__ */ new Set(["ssn", "ein"]);
|
|
27
|
+
function N(s) {
|
|
28
|
+
return typeof s == "string" && /[X•*]/.test(s);
|
|
29
|
+
}
|
|
30
|
+
function h(s) {
|
|
31
|
+
return s ? (I.has(s.key ?? "") || s.dataType === "ssn" || s.dataType === "ein") && N(s.value) : !1;
|
|
40
32
|
}
|
|
41
|
-
function
|
|
42
|
-
|
|
33
|
+
function u(s) {
|
|
34
|
+
const n = /* @__PURE__ */ new Map();
|
|
35
|
+
for (const t of s.fields ?? [])
|
|
36
|
+
t.key && n.set(t.key, t);
|
|
37
|
+
return n;
|
|
43
38
|
}
|
|
44
|
-
function
|
|
45
|
-
|
|
46
|
-
for (const n of e.fields ?? [])
|
|
47
|
-
n.key && t.set(n.key, n);
|
|
48
|
-
return t;
|
|
39
|
+
function p(s) {
|
|
40
|
+
return s === "1" || s === "true";
|
|
49
41
|
}
|
|
50
|
-
function
|
|
51
|
-
return
|
|
42
|
+
function O(s) {
|
|
43
|
+
return s.name === C;
|
|
52
44
|
}
|
|
53
|
-
function
|
|
54
|
-
const
|
|
45
|
+
function g(s) {
|
|
46
|
+
const n = u(s), t = n.get("ssn"), e = n.get("ein"), a = h(t), o = h(e);
|
|
55
47
|
return {
|
|
56
|
-
ssnRedacted:
|
|
57
|
-
einRedacted:
|
|
58
|
-
ssnPlaceholder:
|
|
59
|
-
einPlaceholder:
|
|
48
|
+
ssnRedacted: a,
|
|
49
|
+
einRedacted: o,
|
|
50
|
+
ssnPlaceholder: a ? t?.value ?? void 0 : void 0,
|
|
51
|
+
einPlaceholder: o ? e?.value ?? void 0 : void 0
|
|
60
52
|
};
|
|
61
53
|
}
|
|
62
|
-
function
|
|
63
|
-
const
|
|
64
|
-
for (const [
|
|
65
|
-
|
|
66
|
-
return
|
|
54
|
+
function E(s) {
|
|
55
|
+
const n = u(s), t = /* @__PURE__ */ new Set();
|
|
56
|
+
for (const [a, o] of Object.entries(_))
|
|
57
|
+
n.has(o) && t.add(a);
|
|
58
|
+
return A.some((a) => n.has(a)) && (t.add(S), t.add(x)), t;
|
|
67
59
|
}
|
|
68
|
-
function
|
|
69
|
-
const
|
|
60
|
+
function v(s) {
|
|
61
|
+
const n = u(s), t = g(s), e = (o) => n.get(o)?.value ?? "", a = A.find((o) => p(n.get(o)?.value)) ?? "";
|
|
70
62
|
return {
|
|
71
|
-
name:
|
|
72
|
-
businessName:
|
|
73
|
-
taxClassification:
|
|
63
|
+
name: e("name"),
|
|
64
|
+
businessName: e("business_name"),
|
|
65
|
+
taxClassification: a,
|
|
74
66
|
// The LLC code serializes into the `tax_classification` field, so seed it
|
|
75
67
|
// back from there when the LLC classification is the selected one.
|
|
76
|
-
llcClassificationCode:
|
|
77
|
-
otherText:
|
|
78
|
-
foreignPartners:
|
|
79
|
-
exemptPayeeCode:
|
|
80
|
-
exemptionFromFatca:
|
|
81
|
-
homeAddressStreet1:
|
|
82
|
-
homeAddressStreet2:
|
|
83
|
-
homeAddressCity:
|
|
84
|
-
homeAddressState:
|
|
85
|
-
homeAddressZip:
|
|
86
|
-
accountNumber:
|
|
87
|
-
companyName:
|
|
88
|
-
ssn:
|
|
89
|
-
ein:
|
|
90
|
-
signatureText:
|
|
68
|
+
llcClassificationCode: a === y ? e("tax_classification") : "",
|
|
69
|
+
otherText: e("other_text"),
|
|
70
|
+
foreignPartners: p(n.get("foreign_partners")?.value),
|
|
71
|
+
exemptPayeeCode: e("exempt_payee_code"),
|
|
72
|
+
exemptionFromFatca: e("exemption_from_FATCA"),
|
|
73
|
+
homeAddressStreet1: e("home_address_street_1"),
|
|
74
|
+
homeAddressStreet2: e("home_address_street_2"),
|
|
75
|
+
homeAddressCity: e("home_address_city"),
|
|
76
|
+
homeAddressState: e("home_address_state"),
|
|
77
|
+
homeAddressZip: e("home_address_zip"),
|
|
78
|
+
accountNumber: e("account_number"),
|
|
79
|
+
companyName: e("company_name"),
|
|
80
|
+
ssn: t.ssnRedacted ? "" : e("ssn"),
|
|
81
|
+
ein: t.einRedacted ? "" : e("ein"),
|
|
82
|
+
signatureText: e("signature_text"),
|
|
91
83
|
agree: !1
|
|
92
84
|
};
|
|
93
85
|
}
|
|
94
|
-
const
|
|
86
|
+
const D = {
|
|
95
87
|
name: "",
|
|
96
88
|
businessName: "",
|
|
97
89
|
taxClassification: "",
|
|
@@ -111,7 +103,7 @@ const V = {
|
|
|
111
103
|
ein: "",
|
|
112
104
|
signatureText: "",
|
|
113
105
|
agree: !1
|
|
114
|
-
},
|
|
106
|
+
}, L = [
|
|
115
107
|
"name",
|
|
116
108
|
"businessName",
|
|
117
109
|
"exemptPayeeCode",
|
|
@@ -125,39 +117,38 @@ const V = {
|
|
|
125
117
|
"companyName",
|
|
126
118
|
"signatureText"
|
|
127
119
|
];
|
|
128
|
-
function
|
|
129
|
-
const
|
|
130
|
-
const m =
|
|
120
|
+
function R(s, n, t) {
|
|
121
|
+
const e = E(s), a = [], o = n, r = (i) => {
|
|
122
|
+
const m = o[i];
|
|
131
123
|
return typeof m == "string" ? m : "";
|
|
132
|
-
},
|
|
133
|
-
|
|
124
|
+
}, d = r("taxClassification"), c = (i, m) => {
|
|
125
|
+
a.push({ key: _[i], value: m });
|
|
134
126
|
};
|
|
135
|
-
for (const i of
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
key:
|
|
139
|
-
value:
|
|
127
|
+
for (const i of L)
|
|
128
|
+
e.has(i) && c(i, r(i));
|
|
129
|
+
e.has(T) && d === F && c("otherText", r("otherText")), e.has("foreignPartners") && a.push({
|
|
130
|
+
key: _.foreignPartners,
|
|
131
|
+
value: n.foreignPartners ? "1" : "0"
|
|
140
132
|
});
|
|
141
|
-
const
|
|
142
|
-
return
|
|
133
|
+
const l = r("ssn"), f = r("ein");
|
|
134
|
+
return e.has("ssn") && !(t.ssnRedacted && l === "") && c("ssn", l), e.has("ein") && !(t.einRedacted && f === "") && c("ein", f), d && (a.push({ key: d, value: "1" }), d === y && a.push({ key: "tax_classification", value: r("llcClassificationCode") })), a;
|
|
143
135
|
}
|
|
144
136
|
export {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
137
|
+
D as EMPTY_W9_DEFAULTS,
|
|
138
|
+
b as LLC_CLASSIFICATION_CODES,
|
|
139
|
+
x as LLC_CLASSIFICATION_FIELD,
|
|
148
140
|
y as LLC_CLASSIFICATION_OPTION,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
U as serializeW9Fields
|
|
141
|
+
P as NOT_APPLICABLE_VALUE,
|
|
142
|
+
F as OTHER_CLASSIFICATION_OPTION,
|
|
143
|
+
T as OTHER_TEXT_FIELD,
|
|
144
|
+
S as TAX_CLASSIFICATION_FIELD,
|
|
145
|
+
A as TAX_CLASSIFICATION_OPTION_KEYS,
|
|
146
|
+
C as W9_DOCUMENT_NAME,
|
|
147
|
+
_ as W9_FIELD_API_KEYS,
|
|
148
|
+
v as buildW9Defaults,
|
|
149
|
+
E as getPresentFieldNames,
|
|
150
|
+
g as getRedactionState,
|
|
151
|
+
O as isW9Document,
|
|
152
|
+
R as serializeW9Fields
|
|
162
153
|
};
|
|
163
154
|
//# sourceMappingURL=w9Fields.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"w9Fields.js","sources":["../../../../../../src/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.ts"],"sourcesContent":["import type {\n Document,\n Fields as DocumentField,\n} from '@gusto/embedded-api/models/components/document'\nimport type { ContractorSignatureFormData } from './contractorSignatureFormSchema'\nimport { normalizeEin } from '@/helpers/federalEin'\nimport { normalizeSSN } from '@/helpers/ssn'\n\n/**\n * The `name` of the W-9 document — the only contractor document type that\n * supports signing today.\n *\n * @internal\n */\nexport const W9_DOCUMENT_NAME = 'taxpayer_identification_form_w_9'\n\n/**\n * Sentinel the API returns (and accepts) for a taxpayer-ID field that doesn't\n * apply to the signer — e.g. the EIN of an individual contractor, or the SSN of\n * a business contractor. The sign endpoint stamps this verbatim, so the form\n * both prefills it and treats it as a valid submission.\n *\n * @internal\n */\nexport const NOT_APPLICABLE_VALUE = 'N/A'\n\n/**\n * EIN input transform that preserves the `N/A` sentinel (and the in-progress\n * prefixes a user types toward it) while formatting numeric input as a standard\n * EIN (`NN-NNNNNNN`).\n *\n * @remarks\n * The W-9 accepts `N/A` for a taxpayer who supplies an SSN instead of an EIN,\n * but the plain `normalizeEin` formatter strips every non-digit on each\n * keystroke — making the sentinel impossible to type. This wrapper lets the\n * sentinel through (normalized to uppercase) and defers to `normalizeEin` for\n * everything else.\n *\n * @param value - Raw user input.\n * @returns The `N/A` sentinel (or an in-progress prefix), otherwise the EIN-formatted value.\n * @internal\n */\nexport function normalizeEinOrNotApplicable(value: string): string {\n const sentinel = value.replace(/\\s/g, '').toUpperCase()\n if (sentinel === 'NA') return NOT_APPLICABLE_VALUE\n if (sentinel === 'N' || sentinel === 'N/' || sentinel === NOT_APPLICABLE_VALUE) return sentinel\n return normalizeEin(value)\n}\n\n/**\n * SSN input transform that preserves the `N/A` sentinel (and the in-progress\n * prefixes `N` and `N/`) while otherwise deferring to {@link normalizeSSN}.\n *\n * @remarks\n * The W-9 accepts `N/A` for a taxpayer who supplies an EIN instead of an SSN,\n * but the plain `normalizeSSN` formatter strips every non-digit on each\n * keystroke — making the sentinel impossible to type. This wrapper lets the\n * sentinel through (normalized to uppercase) and defers to `normalizeSSN` for\n * everything else.\n *\n * @param value - Raw user input.\n * @returns The `N/A` sentinel (or an in-progress prefix), otherwise the SSN-formatted value.\n * @internal\n */\nexport function normalizeSsnOrNotApplicable(value: string): string {\n const sentinel = value.replace(/\\s/g, '').toUpperCase()\n if (sentinel === 'NA') return NOT_APPLICABLE_VALUE\n if (sentinel === 'N' || sentinel === 'N/' || sentinel === NOT_APPLICABLE_VALUE) return sentinel\n return normalizeSSN(value)\n}\n\n/**\n * Form-field name for the synthesized federal tax classification radio group.\n *\n * @internal\n */\nexport const TAX_CLASSIFICATION_FIELD = 'taxClassification'\n\n/**\n * Form-field name for the synthesized LLC tax classification code select.\n *\n * @internal\n */\nexport const LLC_CLASSIFICATION_FIELD = 'llcClassificationCode'\n\n/**\n * Form-field name for the \"Other\" free-text classification field.\n *\n * @internal\n */\nexport const OTHER_TEXT_FIELD = 'otherText'\n\n/**\n * Ordered classification option keys backing the {@link TAX_CLASSIFICATION_FIELD}\n * radio group. Each maps to a W-9 checkbox field on the underlying document.\n *\n * @internal\n */\nexport const TAX_CLASSIFICATION_OPTION_KEYS = [\n 'individual_proprietor',\n 'c_corporation',\n 's_corporation',\n 'partnership',\n 'trust_estate',\n 'limited_liability_company',\n 'other',\n] as const\n\n/**\n * A single federal tax classification option key.\n *\n * @internal\n */\nexport type TaxClassificationOptionKey = (typeof TAX_CLASSIFICATION_OPTION_KEYS)[number]\n\n/**\n * The classification option that reveals the LLC tax classification select.\n *\n * @internal\n */\nexport const LLC_CLASSIFICATION_OPTION: TaxClassificationOptionKey = 'limited_liability_company'\n\n/**\n * The classification option that reveals the \"Other\" free-text field.\n *\n * @internal\n */\nexport const OTHER_CLASSIFICATION_OPTION: TaxClassificationOptionKey = 'other'\n\n/**\n * Ordered LLC tax classification code options.\n *\n * @internal\n */\nexport const LLC_CLASSIFICATION_CODES = ['c', 's', 'p'] as const\n\n/**\n * Maps each pass-through {@link ContractorSignatureFormData} field to its W-9\n * API field key. Synthesized fields (`taxClassification`,\n * `llcClassificationCode`) and `agree` are intentionally absent.\n *\n * @internal\n */\nexport const W9_FIELD_API_KEYS = {\n name: 'name',\n businessName: 'business_name',\n otherText: 'other_text',\n foreignPartners: 'foreign_partners',\n exemptPayeeCode: 'exempt_payee_code',\n exemptionFromFatca: 'exemption_from_FATCA',\n homeAddressStreet1: 'home_address_street_1',\n homeAddressStreet2: 'home_address_street_2',\n homeAddressCity: 'home_address_city',\n homeAddressState: 'home_address_state',\n homeAddressZip: 'home_address_zip',\n accountNumber: 'account_number',\n companyName: 'company_name',\n ssn: 'ssn',\n ein: 'ein',\n signatureText: 'signature_text',\n} as const satisfies Record<string, string>\n\n/** A pass-through W-9 field name (one with a single backing API key). */\ntype PassThroughFieldName = keyof typeof W9_FIELD_API_KEYS\n\n/** API field keys whose values are sensitive and arrive masked when on file. */\nconst SENSITIVE_FIELD_KEYS = new Set(['ssn', 'ein'])\n\n/** Whether a value is a server-side mask (e.g. `XXX-XX-1111`) rather than real input. */\nfunction isMaskedValue(value: string | null | undefined): boolean {\n return typeof value === 'string' && /[X•*]/.test(value)\n}\n\n/** Whether a document field carries a redacted (masked) sensitive value. */\nfunction hasRedactedValue(field: DocumentField | undefined): boolean {\n if (!field) return false\n const isSensitive =\n SENSITIVE_FIELD_KEYS.has(field.key ?? '') ||\n field.dataType === 'ssn' ||\n field.dataType === 'ein'\n return isSensitive && isMaskedValue(field.value)\n}\n\nfunction indexFields(document: Document): Map<string, DocumentField> {\n const byKey = new Map<string, DocumentField>()\n for (const field of document.fields ?? []) {\n if (field.key) byKey.set(field.key, field)\n }\n return byKey\n}\n\n/** Coerces an API checkbox value (`'1'`, `'true'`) to a boolean. */\nfunction toBoolean(value: string | null | undefined): boolean {\n return value === '1' || value === 'true'\n}\n\n/**\n * Whether the document is a W-9 (the only signable contractor document type).\n *\n * @internal\n */\nexport function isW9Document(document: Document): boolean {\n return document.name === W9_DOCUMENT_NAME\n}\n\n/**\n * Redaction state for the sensitive W-9 fields, derived from the API response.\n *\n * @internal\n */\nexport interface W9RedactionState {\n /** Whether the API returned a masked SSN value. */\n ssnRedacted: boolean\n /** Whether the API returned a masked EIN value. */\n einRedacted: boolean\n /** The masked SSN to surface as a placeholder, when redacted. */\n ssnPlaceholder?: string\n /** The masked EIN to surface as a placeholder, when redacted. */\n einPlaceholder?: string\n}\n\n/**\n * Computes the redaction state of the SSN/EIN fields from the document.\n *\n * @param document - The W-9 document returned by the API.\n * @returns The redaction flags and masked placeholders.\n * @internal\n */\nexport function getRedactionState(document: Document): W9RedactionState {\n const byKey = indexFields(document)\n const ssnField = byKey.get('ssn')\n const einField = byKey.get('ein')\n const ssnRedacted = hasRedactedValue(ssnField)\n const einRedacted = hasRedactedValue(einField)\n return {\n ssnRedacted,\n einRedacted,\n ssnPlaceholder: ssnRedacted ? (ssnField?.value ?? undefined) : undefined,\n einPlaceholder: einRedacted ? (einField?.value ?? undefined) : undefined,\n }\n}\n\n/**\n * Computes which W-9 form fields the API actually returned — the safety check\n * that drives presence-gating in {@link useContractorSignatureForm}.\n *\n * @remarks\n * A pass-through field is present when its API key is in `document.fields`. The\n * synthesized classification fields (`taxClassification`,\n * `llcClassificationCode`) are present when the document carries any of the\n * federal tax classification checkbox fields.\n *\n * @param document - The W-9 document returned by the API.\n * @returns The set of present camelCase field names.\n * @internal\n */\nexport function getPresentFieldNames(document: Document): Set<string> {\n const byKey = indexFields(document)\n const presentFieldNames = new Set<string>()\n\n for (const [fieldName, apiKey] of Object.entries(W9_FIELD_API_KEYS)) {\n if (byKey.has(apiKey)) presentFieldNames.add(fieldName)\n }\n\n const hasClassification = TAX_CLASSIFICATION_OPTION_KEYS.some(key => byKey.has(key))\n if (hasClassification) {\n presentFieldNames.add(TAX_CLASSIFICATION_FIELD)\n presentFieldNames.add(LLC_CLASSIFICATION_FIELD)\n }\n\n return presentFieldNames\n}\n\n/**\n * Builds default form values from a document's fields.\n *\n * @remarks\n * Pass-through values are seeded from the API `value`. The classification radio\n * defaults to whichever classification checkbox is already set (`'1'`/`'true'`),\n * and when that is the LLC classification the LLC code select is seeded from the\n * `tax_classification` field it serializes into. A masked SSN/EIN seeds an empty\n * input (the mask is surfaced as a placeholder instead) so it is never echoed\n * back as the new value on submit.\n *\n * @param document - The W-9 document returned by the API.\n * @returns The default form values.\n * @internal\n */\nexport function buildW9Defaults(document: Document): ContractorSignatureFormData {\n const byKey = indexFields(document)\n const redaction = getRedactionState(document)\n const textValue = (apiKey: string): string => byKey.get(apiKey)?.value ?? ''\n const selectedClassification =\n TAX_CLASSIFICATION_OPTION_KEYS.find(key => toBoolean(byKey.get(key)?.value)) ?? ''\n\n return {\n name: textValue('name'),\n businessName: textValue('business_name'),\n taxClassification: selectedClassification,\n // The LLC code serializes into the `tax_classification` field, so seed it\n // back from there when the LLC classification is the selected one.\n llcClassificationCode:\n selectedClassification === LLC_CLASSIFICATION_OPTION ? textValue('tax_classification') : '',\n otherText: textValue('other_text'),\n foreignPartners: toBoolean(byKey.get('foreign_partners')?.value),\n exemptPayeeCode: textValue('exempt_payee_code'),\n exemptionFromFatca: textValue('exemption_from_FATCA'),\n homeAddressStreet1: textValue('home_address_street_1'),\n homeAddressStreet2: textValue('home_address_street_2'),\n homeAddressCity: textValue('home_address_city'),\n homeAddressState: textValue('home_address_state'),\n homeAddressZip: textValue('home_address_zip'),\n accountNumber: textValue('account_number'),\n companyName: textValue('company_name'),\n ssn: redaction.ssnRedacted ? '' : textValue('ssn'),\n ein: redaction.einRedacted ? '' : textValue('ein'),\n signatureText: textValue('signature_text'),\n agree: false,\n }\n}\n\n/**\n * The empty default form values, used while the document is still loading.\n *\n * @internal\n */\nexport const EMPTY_W9_DEFAULTS: ContractorSignatureFormData = {\n name: '',\n businessName: '',\n taxClassification: '',\n llcClassificationCode: '',\n otherText: '',\n foreignPartners: false,\n exemptPayeeCode: '',\n exemptionFromFatca: '',\n homeAddressStreet1: '',\n homeAddressStreet2: '',\n homeAddressCity: '',\n homeAddressState: '',\n homeAddressZip: '',\n accountNumber: '',\n companyName: '',\n ssn: '',\n ein: '',\n signatureText: '',\n agree: false,\n}\n\n/**\n * A single `{ key, value }` pair sent in the sign request.\n *\n * @internal\n */\nexport interface SignFieldValue {\n /** The API field key. */\n key: string\n /** The serialized field value. */\n value: string\n}\n\n/** Pass-through text fields serialized verbatim (everything except the checkbox and TIN fields). */\nconst TEXT_PASS_THROUGH_FIELDS: PassThroughFieldName[] = [\n 'name',\n 'businessName',\n 'exemptPayeeCode',\n 'exemptionFromFatca',\n 'homeAddressStreet1',\n 'homeAddressStreet2',\n 'homeAddressCity',\n 'homeAddressState',\n 'homeAddressZip',\n 'accountNumber',\n 'companyName',\n 'signatureText',\n]\n\n/**\n * Serializes W-9 form values into the `{ key, value }` field array expected by\n * the sign API.\n *\n * @remarks\n * Only fields the API returned (see {@link getPresentFieldNames}) are sent.\n * Applies the W-9 mapping: the chosen classification key is sent with value\n * `'1'`; when the LLC classification is chosen, the selected LLC code is sent\n * under the `tax_classification` key. `foreignPartners` serializes to\n * `'1'`/`'0'`. The `otherText` value is only included for the \"Other\"\n * classification. An untouched redacted SSN/EIN is omitted so the mask is never\n * sent back. The `date` field is intentionally omitted so the API auto-fills the\n * signing date in its own locale-correct format.\n *\n * @param document - The W-9 document being signed.\n * @param values - The validated form values.\n * @param redaction - The redaction state from {@link getRedactionState}.\n * @returns The ordered field array for the sign request body.\n * @internal\n */\nexport function serializeW9Fields(\n document: Document,\n values: ContractorSignatureFormData,\n redaction: W9RedactionState,\n): SignFieldValue[] {\n const presentFieldNames = getPresentFieldNames(document)\n const fields: SignFieldValue[] = []\n // The schema preprocesses empty inputs to `undefined`, so read through an\n // `unknown` view and coalesce missing values to an empty string.\n const raw = values as Record<string, unknown>\n const text = (name: string): string => {\n const value = raw[name]\n return typeof value === 'string' ? value : ''\n }\n const classification = text('taxClassification')\n\n const pushField = (fieldName: PassThroughFieldName, value: string) => {\n fields.push({ key: W9_FIELD_API_KEYS[fieldName], value })\n }\n\n for (const fieldName of TEXT_PASS_THROUGH_FIELDS) {\n if (!presentFieldNames.has(fieldName)) continue\n pushField(fieldName, text(fieldName))\n }\n\n if (presentFieldNames.has(OTHER_TEXT_FIELD) && classification === OTHER_CLASSIFICATION_OPTION) {\n pushField('otherText', text('otherText'))\n }\n\n if (presentFieldNames.has('foreignPartners')) {\n fields.push({\n key: W9_FIELD_API_KEYS.foreignPartners,\n value: values.foreignPartners ? '1' : '0',\n })\n }\n\n // A redacted field left untouched is omitted so the masked value isn't sent\n // back as a replacement; the server keeps the value already on file.\n const ssnValue = text('ssn')\n const einValue = text('ein')\n if (presentFieldNames.has('ssn') && !(redaction.ssnRedacted && ssnValue === '')) {\n pushField('ssn', ssnValue)\n }\n if (presentFieldNames.has('ein') && !(redaction.einRedacted && einValue === '')) {\n pushField('ein', einValue)\n }\n\n if (classification) {\n fields.push({ key: classification, value: '1' })\n if (classification === LLC_CLASSIFICATION_OPTION) {\n fields.push({ key: 'tax_classification', value: text('llcClassificationCode') })\n }\n }\n\n return fields\n}\n"],"names":["W9_DOCUMENT_NAME","NOT_APPLICABLE_VALUE","normalizeEinOrNotApplicable","value","sentinel","normalizeEin","normalizeSsnOrNotApplicable","normalizeSSN","TAX_CLASSIFICATION_FIELD","LLC_CLASSIFICATION_FIELD","OTHER_TEXT_FIELD","TAX_CLASSIFICATION_OPTION_KEYS","LLC_CLASSIFICATION_OPTION","OTHER_CLASSIFICATION_OPTION","LLC_CLASSIFICATION_CODES","W9_FIELD_API_KEYS","SENSITIVE_FIELD_KEYS","isMaskedValue","hasRedactedValue","field","indexFields","document","byKey","toBoolean","getRedactionState","ssnField","einField","ssnRedacted","einRedacted","getPresentFieldNames","presentFieldNames","fieldName","apiKey","key","buildW9Defaults","redaction","textValue","selectedClassification","EMPTY_W9_DEFAULTS","TEXT_PASS_THROUGH_FIELDS","serializeW9Fields","values","fields","raw","text","name","classification","pushField","ssnValue","einValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"w9Fields.js","sources":["../../../../../../src/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.ts"],"sourcesContent":["import type {\n Document,\n Fields as DocumentField,\n} from '@gusto/embedded-api/models/components/document'\nimport type { ContractorSignatureFormData } from './contractorSignatureFormSchema'\n\n/**\n * The `name` of the W-9 document — the only contractor document type that\n * supports signing today.\n *\n * @internal\n */\nexport const W9_DOCUMENT_NAME = 'taxpayer_identification_form_w_9'\n\n/**\n * Sentinel the API returns (and accepts) for a taxpayer-ID field that doesn't\n * apply to the signer — e.g. the EIN of an individual contractor, or the SSN of\n * a business contractor. The sign endpoint stamps this verbatim, so the form\n * both prefills it and treats it as a valid submission.\n *\n * @internal\n */\nexport const NOT_APPLICABLE_VALUE = 'N/A'\n\n/**\n * Form-field name for the synthesized federal tax classification radio group.\n *\n * @internal\n */\nexport const TAX_CLASSIFICATION_FIELD = 'taxClassification'\n\n/**\n * Form-field name for the synthesized LLC tax classification code select.\n *\n * @internal\n */\nexport const LLC_CLASSIFICATION_FIELD = 'llcClassificationCode'\n\n/**\n * Form-field name for the \"Other\" free-text classification field.\n *\n * @internal\n */\nexport const OTHER_TEXT_FIELD = 'otherText'\n\n/**\n * Ordered classification option keys backing the {@link TAX_CLASSIFICATION_FIELD}\n * radio group. Each maps to a W-9 checkbox field on the underlying document.\n *\n * @internal\n */\nexport const TAX_CLASSIFICATION_OPTION_KEYS = [\n 'individual_proprietor',\n 'c_corporation',\n 's_corporation',\n 'partnership',\n 'trust_estate',\n 'limited_liability_company',\n 'other',\n] as const\n\n/**\n * A single federal tax classification option key.\n *\n * @internal\n */\nexport type TaxClassificationOptionKey = (typeof TAX_CLASSIFICATION_OPTION_KEYS)[number]\n\n/**\n * The classification option that reveals the LLC tax classification select.\n *\n * @internal\n */\nexport const LLC_CLASSIFICATION_OPTION: TaxClassificationOptionKey = 'limited_liability_company'\n\n/**\n * The classification option that reveals the \"Other\" free-text field.\n *\n * @internal\n */\nexport const OTHER_CLASSIFICATION_OPTION: TaxClassificationOptionKey = 'other'\n\n/**\n * Ordered LLC tax classification code options.\n *\n * @internal\n */\nexport const LLC_CLASSIFICATION_CODES = ['c', 's', 'p'] as const\n\n/**\n * Maps each pass-through {@link ContractorSignatureFormData} field to its W-9\n * API field key. Synthesized fields (`taxClassification`,\n * `llcClassificationCode`) and `agree` are intentionally absent.\n *\n * @internal\n */\nexport const W9_FIELD_API_KEYS = {\n name: 'name',\n businessName: 'business_name',\n otherText: 'other_text',\n foreignPartners: 'foreign_partners',\n exemptPayeeCode: 'exempt_payee_code',\n exemptionFromFatca: 'exemption_from_FATCA',\n homeAddressStreet1: 'home_address_street_1',\n homeAddressStreet2: 'home_address_street_2',\n homeAddressCity: 'home_address_city',\n homeAddressState: 'home_address_state',\n homeAddressZip: 'home_address_zip',\n accountNumber: 'account_number',\n companyName: 'company_name',\n ssn: 'ssn',\n ein: 'ein',\n signatureText: 'signature_text',\n} as const satisfies Record<string, string>\n\n/** A pass-through W-9 field name (one with a single backing API key). */\ntype PassThroughFieldName = keyof typeof W9_FIELD_API_KEYS\n\n/** API field keys whose values are sensitive and arrive masked when on file. */\nconst SENSITIVE_FIELD_KEYS = new Set(['ssn', 'ein'])\n\n/** Whether a value is a server-side mask (e.g. `XXX-XX-1111`) rather than real input. */\nfunction isMaskedValue(value: string | null | undefined): boolean {\n return typeof value === 'string' && /[X•*]/.test(value)\n}\n\n/** Whether a document field carries a redacted (masked) sensitive value. */\nfunction hasRedactedValue(field: DocumentField | undefined): boolean {\n if (!field) return false\n const isSensitive =\n SENSITIVE_FIELD_KEYS.has(field.key ?? '') ||\n field.dataType === 'ssn' ||\n field.dataType === 'ein'\n return isSensitive && isMaskedValue(field.value)\n}\n\nfunction indexFields(document: Document): Map<string, DocumentField> {\n const byKey = new Map<string, DocumentField>()\n for (const field of document.fields ?? []) {\n if (field.key) byKey.set(field.key, field)\n }\n return byKey\n}\n\n/** Coerces an API checkbox value (`'1'`, `'true'`) to a boolean. */\nfunction toBoolean(value: string | null | undefined): boolean {\n return value === '1' || value === 'true'\n}\n\n/**\n * Whether the document is a W-9 (the only signable contractor document type).\n *\n * @internal\n */\nexport function isW9Document(document: Document): boolean {\n return document.name === W9_DOCUMENT_NAME\n}\n\n/**\n * Redaction state for the sensitive W-9 fields, derived from the API response.\n *\n * @internal\n */\nexport interface W9RedactionState {\n /** Whether the API returned a masked SSN value. */\n ssnRedacted: boolean\n /** Whether the API returned a masked EIN value. */\n einRedacted: boolean\n /** The masked SSN to surface as a placeholder, when redacted. */\n ssnPlaceholder?: string\n /** The masked EIN to surface as a placeholder, when redacted. */\n einPlaceholder?: string\n}\n\n/**\n * Computes the redaction state of the SSN/EIN fields from the document.\n *\n * @param document - The W-9 document returned by the API.\n * @returns The redaction flags and masked placeholders.\n * @internal\n */\nexport function getRedactionState(document: Document): W9RedactionState {\n const byKey = indexFields(document)\n const ssnField = byKey.get('ssn')\n const einField = byKey.get('ein')\n const ssnRedacted = hasRedactedValue(ssnField)\n const einRedacted = hasRedactedValue(einField)\n return {\n ssnRedacted,\n einRedacted,\n ssnPlaceholder: ssnRedacted ? (ssnField?.value ?? undefined) : undefined,\n einPlaceholder: einRedacted ? (einField?.value ?? undefined) : undefined,\n }\n}\n\n/**\n * Computes which W-9 form fields the API actually returned — the safety check\n * that drives presence-gating in {@link useContractorSignatureForm}.\n *\n * @remarks\n * A pass-through field is present when its API key is in `document.fields`. The\n * synthesized classification fields (`taxClassification`,\n * `llcClassificationCode`) are present when the document carries any of the\n * federal tax classification checkbox fields.\n *\n * @param document - The W-9 document returned by the API.\n * @returns The set of present camelCase field names.\n * @internal\n */\nexport function getPresentFieldNames(document: Document): Set<string> {\n const byKey = indexFields(document)\n const presentFieldNames = new Set<string>()\n\n for (const [fieldName, apiKey] of Object.entries(W9_FIELD_API_KEYS)) {\n if (byKey.has(apiKey)) presentFieldNames.add(fieldName)\n }\n\n const hasClassification = TAX_CLASSIFICATION_OPTION_KEYS.some(key => byKey.has(key))\n if (hasClassification) {\n presentFieldNames.add(TAX_CLASSIFICATION_FIELD)\n presentFieldNames.add(LLC_CLASSIFICATION_FIELD)\n }\n\n return presentFieldNames\n}\n\n/**\n * Builds default form values from a document's fields.\n *\n * @remarks\n * Pass-through values are seeded from the API `value`. The classification radio\n * defaults to whichever classification checkbox is already set (`'1'`/`'true'`),\n * and when that is the LLC classification the LLC code select is seeded from the\n * `tax_classification` field it serializes into. A masked SSN/EIN seeds an empty\n * input (the mask is surfaced as a placeholder instead) so it is never echoed\n * back as the new value on submit.\n *\n * @param document - The W-9 document returned by the API.\n * @returns The default form values.\n * @internal\n */\nexport function buildW9Defaults(document: Document): ContractorSignatureFormData {\n const byKey = indexFields(document)\n const redaction = getRedactionState(document)\n const textValue = (apiKey: string): string => byKey.get(apiKey)?.value ?? ''\n const selectedClassification =\n TAX_CLASSIFICATION_OPTION_KEYS.find(key => toBoolean(byKey.get(key)?.value)) ?? ''\n\n return {\n name: textValue('name'),\n businessName: textValue('business_name'),\n taxClassification: selectedClassification,\n // The LLC code serializes into the `tax_classification` field, so seed it\n // back from there when the LLC classification is the selected one.\n llcClassificationCode:\n selectedClassification === LLC_CLASSIFICATION_OPTION ? textValue('tax_classification') : '',\n otherText: textValue('other_text'),\n foreignPartners: toBoolean(byKey.get('foreign_partners')?.value),\n exemptPayeeCode: textValue('exempt_payee_code'),\n exemptionFromFatca: textValue('exemption_from_FATCA'),\n homeAddressStreet1: textValue('home_address_street_1'),\n homeAddressStreet2: textValue('home_address_street_2'),\n homeAddressCity: textValue('home_address_city'),\n homeAddressState: textValue('home_address_state'),\n homeAddressZip: textValue('home_address_zip'),\n accountNumber: textValue('account_number'),\n companyName: textValue('company_name'),\n ssn: redaction.ssnRedacted ? '' : textValue('ssn'),\n ein: redaction.einRedacted ? '' : textValue('ein'),\n signatureText: textValue('signature_text'),\n agree: false,\n }\n}\n\n/**\n * The empty default form values, used while the document is still loading.\n *\n * @internal\n */\nexport const EMPTY_W9_DEFAULTS: ContractorSignatureFormData = {\n name: '',\n businessName: '',\n taxClassification: '',\n llcClassificationCode: '',\n otherText: '',\n foreignPartners: false,\n exemptPayeeCode: '',\n exemptionFromFatca: '',\n homeAddressStreet1: '',\n homeAddressStreet2: '',\n homeAddressCity: '',\n homeAddressState: '',\n homeAddressZip: '',\n accountNumber: '',\n companyName: '',\n ssn: '',\n ein: '',\n signatureText: '',\n agree: false,\n}\n\n/**\n * A single `{ key, value }` pair sent in the sign request.\n *\n * @internal\n */\nexport interface SignFieldValue {\n /** The API field key. */\n key: string\n /** The serialized field value. */\n value: string\n}\n\n/** Pass-through text fields serialized verbatim (everything except the checkbox and TIN fields). */\nconst TEXT_PASS_THROUGH_FIELDS: PassThroughFieldName[] = [\n 'name',\n 'businessName',\n 'exemptPayeeCode',\n 'exemptionFromFatca',\n 'homeAddressStreet1',\n 'homeAddressStreet2',\n 'homeAddressCity',\n 'homeAddressState',\n 'homeAddressZip',\n 'accountNumber',\n 'companyName',\n 'signatureText',\n]\n\n/**\n * Serializes W-9 form values into the `{ key, value }` field array expected by\n * the sign API.\n *\n * @remarks\n * Only fields the API returned (see {@link getPresentFieldNames}) are sent.\n * Applies the W-9 mapping: the chosen classification key is sent with value\n * `'1'`; when the LLC classification is chosen, the selected LLC code is sent\n * under the `tax_classification` key. `foreignPartners` serializes to\n * `'1'`/`'0'`. The `otherText` value is only included for the \"Other\"\n * classification. An untouched redacted SSN/EIN is omitted so the mask is never\n * sent back. The `date` field is intentionally omitted so the API auto-fills the\n * signing date in its own locale-correct format.\n *\n * @param document - The W-9 document being signed.\n * @param values - The validated form values.\n * @param redaction - The redaction state from {@link getRedactionState}.\n * @returns The ordered field array for the sign request body.\n * @internal\n */\nexport function serializeW9Fields(\n document: Document,\n values: ContractorSignatureFormData,\n redaction: W9RedactionState,\n): SignFieldValue[] {\n const presentFieldNames = getPresentFieldNames(document)\n const fields: SignFieldValue[] = []\n // The schema preprocesses empty inputs to `undefined`, so read through an\n // `unknown` view and coalesce missing values to an empty string.\n const raw = values as Record<string, unknown>\n const text = (name: string): string => {\n const value = raw[name]\n return typeof value === 'string' ? value : ''\n }\n const classification = text('taxClassification')\n\n const pushField = (fieldName: PassThroughFieldName, value: string) => {\n fields.push({ key: W9_FIELD_API_KEYS[fieldName], value })\n }\n\n for (const fieldName of TEXT_PASS_THROUGH_FIELDS) {\n if (!presentFieldNames.has(fieldName)) continue\n pushField(fieldName, text(fieldName))\n }\n\n if (presentFieldNames.has(OTHER_TEXT_FIELD) && classification === OTHER_CLASSIFICATION_OPTION) {\n pushField('otherText', text('otherText'))\n }\n\n if (presentFieldNames.has('foreignPartners')) {\n fields.push({\n key: W9_FIELD_API_KEYS.foreignPartners,\n value: values.foreignPartners ? '1' : '0',\n })\n }\n\n // A redacted field left untouched is omitted so the masked value isn't sent\n // back as a replacement; the server keeps the value already on file.\n const ssnValue = text('ssn')\n const einValue = text('ein')\n if (presentFieldNames.has('ssn') && !(redaction.ssnRedacted && ssnValue === '')) {\n pushField('ssn', ssnValue)\n }\n if (presentFieldNames.has('ein') && !(redaction.einRedacted && einValue === '')) {\n pushField('ein', einValue)\n }\n\n if (classification) {\n fields.push({ key: classification, value: '1' })\n if (classification === LLC_CLASSIFICATION_OPTION) {\n fields.push({ key: 'tax_classification', value: text('llcClassificationCode') })\n }\n }\n\n return fields\n}\n"],"names":["W9_DOCUMENT_NAME","NOT_APPLICABLE_VALUE","TAX_CLASSIFICATION_FIELD","LLC_CLASSIFICATION_FIELD","OTHER_TEXT_FIELD","TAX_CLASSIFICATION_OPTION_KEYS","LLC_CLASSIFICATION_OPTION","OTHER_CLASSIFICATION_OPTION","LLC_CLASSIFICATION_CODES","W9_FIELD_API_KEYS","SENSITIVE_FIELD_KEYS","isMaskedValue","value","hasRedactedValue","field","indexFields","document","byKey","toBoolean","isW9Document","getRedactionState","ssnField","einField","ssnRedacted","einRedacted","getPresentFieldNames","presentFieldNames","fieldName","apiKey","key","buildW9Defaults","redaction","textValue","selectedClassification","EMPTY_W9_DEFAULTS","TEXT_PASS_THROUGH_FIELDS","serializeW9Fields","values","fields","raw","text","name","classification","pushField","ssnValue","einValue"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as n } from "react/jsx-runtime";
|
|
2
2
|
import { useTranslation as s } from "react-i18next";
|
|
3
|
-
import { ContractorList as i } from "../ContractorList/
|
|
3
|
+
import { ContractorList as i } from "../ContractorList/onboarding/ContractorList.js";
|
|
4
4
|
import { PaymentMethod as u } from "../PaymentMethod/PaymentMethod.js";
|
|
5
5
|
import { NewHireReport as m } from "../NewHireReport/NewHireReport.js";
|
|
6
6
|
import { ContractorSubmit as d } from "../Submit/Submit.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnboardingFlowComponents.js","sources":["../../../../src/components/Contractor/OnboardingFlow/OnboardingFlowComponents.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { ContractorList } from '../ContractorList'\nimport { ContractorProfile } from '../Profile'\nimport { Address } from '../Address'\nimport { PaymentMethod } from '../PaymentMethod/PaymentMethod'\nimport { NewHireReport } from '../NewHireReport/NewHireReport'\nimport { ContractorSubmit } from '../Submit/Submit'\nimport type { ContractorDetailsFormData } from '../Profile/shared'\nimport type { AddressDefaultValues } from '../Address'\nimport { useFlow, type FlowContextInterface } from '@/components/Flow/useFlow'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { ensureRequired } from '@/helpers/ensureRequired'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\n\n/**\n * Default pre-fill values for the contractor onboarding flow.\n * At least one of `profile` or `address` must be provided.\n *\n * @public\n */\nexport type OnboardingFlowDefaultValues = RequireAtLeastOne<{\n profile?: Partial<ContractorDetailsFormData>\n address?: AddressDefaultValues\n}>\n/**\n * Props for {@link OnboardingFlow}.\n *\n * @public\n */\nexport interface OnboardingFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** Default values for individual flow step components — `profile` and/or `address` sub-objects. */\n defaultValues?: RequireAtLeastOne<OnboardingFlowDefaultValues>\n}\n/** @internal */\nexport interface OnboardingFlowContextInterface extends FlowContextInterface {\n /** The associated company identifier. */\n companyId: string\n /** The contractor currently being onboarded; populated once the profile step creates or selects one. */\n contractorId?: string\n /** Default values for individual flow step components. */\n defaultValues?: OnboardingFlowDefaultValues\n /** True when the contractor will be self-onboarding; switches the flow to the shorter self-onboarding path. */\n selfOnboarding?: boolean\n /** True while the new hire report step should be shown; false once the contractor has advanced past the admin's initial onboarding pass. */\n showNewHireReport?: boolean\n /** Success message to display on the contractor list when returning from a completed sub-flow. */\n successMessage?: string\n}\n\n/** @internal */\nexport function ContractorListContextual() {\n const { companyId, onEvent, successMessage } = useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorList\n onEvent={onEvent}\n companyId={ensureRequired(companyId)}\n successMessage={successMessage}\n />\n )\n}\n\n/** @internal */\nexport function ProfileContextual() {\n const { companyId, onEvent, contractorId, defaultValues } =\n useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorProfile\n onEvent={onEvent}\n companyId={ensureRequired(companyId)}\n contractorId={contractorId}\n defaultValues={defaultValues?.profile}\n />\n )\n}\n\n/** @internal */\nexport function AddressContextual() {\n const { onEvent, contractorId, defaultValues } = useFlow<OnboardingFlowContextInterface>()\n return (\n <Address\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n defaultValues={defaultValues?.address}\n />\n )\n}\n/** @internal */\nexport function PaymentMethodContextual() {\n const { onEvent, contractorId } = useFlow<OnboardingFlowContextInterface>()\n return <PaymentMethod onEvent={onEvent} contractorId={ensureRequired(contractorId)} />\n}\n/** @internal */\nexport function NewHireReportContextual() {\n const { onEvent, contractorId, selfOnboarding } = useFlow<OnboardingFlowContextInterface>()\n return (\n <NewHireReport\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n selfOnboarding={selfOnboarding}\n />\n )\n}\n/** @internal */\nexport function SubmitContextual() {\n const { onEvent, contractorId, selfOnboarding } = useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorSubmit\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n selfOnboarding={selfOnboarding}\n />\n )\n}\n\n/** @internal */\nexport function ProgressBarCta() {\n const { onEvent } = useFlow<OnboardingFlowContextInterface>()\n const { Button } = useComponentContext()\n useI18n('Contractor.ContractorList')\n const { t } = useTranslation('Contractor.ContractorList')\n return (\n <Button\n onClick={() => {\n onEvent(componentEvents.CANCEL)\n }}\n variant=\"secondary\"\n >\n {t('progressBarCta')}\n </Button>\n )\n}\n"],"names":["ContractorListContextual","companyId","onEvent","successMessage","useFlow","jsx","ContractorList","ensureRequired","ProfileContextual","contractorId","defaultValues","ContractorProfile","AddressContextual","Address","PaymentMethodContextual","PaymentMethod","NewHireReportContextual","selfOnboarding","NewHireReport","SubmitContextual","ContractorSubmit","ProgressBarCta","Button","useComponentContext","useI18n","t","useTranslation","componentEvents"],"mappings":";;;;;;;;;;;;;AAuDO,SAASA,IAA2B;AACzC,QAAM,EAAE,WAAAC,GAAW,SAAAC,GAAS,gBAAAC,EAAA,IAAmBC,EAAA;AAC/C,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAAJ;AAAA,MACA,WAAWK,EAAeN,CAAS;AAAA,MACnC,gBAAAE;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASK,IAAoB;AAClC,QAAM,EAAE,WAAAP,GAAW,SAAAC,GAAS,cAAAO,GAAc,eAAAC,EAAA,IACxCN,EAAA;AACF,SACE,gBAAAC;AAAA,IAACM;AAAA,IAAA;AAAA,MACC,SAAAT;AAAA,MACA,WAAWK,EAAeN,CAAS;AAAA,MACnC,cAAAQ;AAAA,MACA,eAAeC,GAAe;AAAA,IAAA;AAAA,EAAA;AAGpC;AAGO,SAASE,IAAoB;AAClC,QAAM,EAAE,SAAAV,GAAS,cAAAO,GAAc,eAAAC,EAAA,IAAkBN,EAAA;AACjD,SACE,gBAAAC;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,SAAAX;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,eAAeC,GAAe;AAAA,IAAA;AAAA,EAAA;AAGpC;AAEO,SAASI,IAA0B;AACxC,QAAM,EAAE,SAAAZ,GAAS,cAAAO,EAAA,IAAiBL,EAAA;AAClC,2BAAQW,GAAA,EAAc,SAAAb,GAAkB,cAAcK,EAAeE,CAAY,GAAG;AACtF;AAEO,SAASO,IAA0B;AACxC,QAAM,EAAE,SAAAd,GAAS,cAAAO,GAAc,gBAAAQ,EAAA,IAAmBb,EAAA;AAClD,SACE,gBAAAC;AAAA,IAACa;AAAA,IAAA;AAAA,MACC,SAAAhB;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,gBAAAQ;AAAA,IAAA;AAAA,EAAA;AAGN;AAEO,SAASE,IAAmB;AACjC,QAAM,EAAE,SAAAjB,GAAS,cAAAO,GAAc,gBAAAQ,EAAA,IAAmBb,EAAA;AAClD,SACE,gBAAAC;AAAA,IAACe;AAAA,IAAA;AAAA,MACC,SAAAlB;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,gBAAAQ;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASI,IAAiB;AAC/B,QAAM,EAAE,SAAAnB,EAAA,IAAYE,EAAA,GACd,EAAE,QAAAkB,EAAA,IAAWC,EAAA;AACnB,EAAAC,EAAQ,2BAA2B;AACnC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,2BAA2B;AACxD,SACE,gBAAArB;AAAA,IAACiB;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AACb,QAAApB,EAAQyB,EAAgB,MAAM;AAAA,MAChC;AAAA,MACA,SAAQ;AAAA,MAEP,YAAE,gBAAgB;AAAA,IAAA;AAAA,EAAA;AAGzB;"}
|
|
1
|
+
{"version":3,"file":"OnboardingFlowComponents.js","sources":["../../../../src/components/Contractor/OnboardingFlow/OnboardingFlowComponents.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { ContractorList } from '../ContractorList/onboarding/ContractorList'\nimport { ContractorProfile } from '../Profile'\nimport { Address } from '../Address'\nimport { PaymentMethod } from '../PaymentMethod/PaymentMethod'\nimport { NewHireReport } from '../NewHireReport/NewHireReport'\nimport { ContractorSubmit } from '../Submit/Submit'\nimport type { ContractorDetailsFormData } from '../Profile/shared'\nimport type { AddressDefaultValues } from '../Address'\nimport { useFlow, type FlowContextInterface } from '@/components/Flow/useFlow'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { ensureRequired } from '@/helpers/ensureRequired'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\n\n/**\n * Default pre-fill values for the contractor onboarding flow.\n * At least one of `profile` or `address` must be provided.\n *\n * @public\n */\nexport type OnboardingFlowDefaultValues = RequireAtLeastOne<{\n profile?: Partial<ContractorDetailsFormData>\n address?: AddressDefaultValues\n}>\n/**\n * Props for {@link OnboardingFlow}.\n *\n * @public\n */\nexport interface OnboardingFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** Default values for individual flow step components — `profile` and/or `address` sub-objects. */\n defaultValues?: RequireAtLeastOne<OnboardingFlowDefaultValues>\n}\n/** @internal */\nexport interface OnboardingFlowContextInterface extends FlowContextInterface {\n /** The associated company identifier. */\n companyId: string\n /** The contractor currently being onboarded; populated once the profile step creates or selects one. */\n contractorId?: string\n /** Default values for individual flow step components. */\n defaultValues?: OnboardingFlowDefaultValues\n /** True when the contractor will be self-onboarding; switches the flow to the shorter self-onboarding path. */\n selfOnboarding?: boolean\n /** True while the new hire report step should be shown; false once the contractor has advanced past the admin's initial onboarding pass. */\n showNewHireReport?: boolean\n /** Success message to display on the contractor list when returning from a completed sub-flow. */\n successMessage?: string\n}\n\n/** @internal */\nexport function ContractorListContextual() {\n const { companyId, onEvent, successMessage } = useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorList\n onEvent={onEvent}\n companyId={ensureRequired(companyId)}\n successMessage={successMessage}\n />\n )\n}\n\n/** @internal */\nexport function ProfileContextual() {\n const { companyId, onEvent, contractorId, defaultValues } =\n useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorProfile\n onEvent={onEvent}\n companyId={ensureRequired(companyId)}\n contractorId={contractorId}\n defaultValues={defaultValues?.profile}\n />\n )\n}\n\n/** @internal */\nexport function AddressContextual() {\n const { onEvent, contractorId, defaultValues } = useFlow<OnboardingFlowContextInterface>()\n return (\n <Address\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n defaultValues={defaultValues?.address}\n />\n )\n}\n/** @internal */\nexport function PaymentMethodContextual() {\n const { onEvent, contractorId } = useFlow<OnboardingFlowContextInterface>()\n return <PaymentMethod onEvent={onEvent} contractorId={ensureRequired(contractorId)} />\n}\n/** @internal */\nexport function NewHireReportContextual() {\n const { onEvent, contractorId, selfOnboarding } = useFlow<OnboardingFlowContextInterface>()\n return (\n <NewHireReport\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n selfOnboarding={selfOnboarding}\n />\n )\n}\n/** @internal */\nexport function SubmitContextual() {\n const { onEvent, contractorId, selfOnboarding } = useFlow<OnboardingFlowContextInterface>()\n return (\n <ContractorSubmit\n onEvent={onEvent}\n contractorId={ensureRequired(contractorId)}\n selfOnboarding={selfOnboarding}\n />\n )\n}\n\n/** @internal */\nexport function ProgressBarCta() {\n const { onEvent } = useFlow<OnboardingFlowContextInterface>()\n const { Button } = useComponentContext()\n useI18n('Contractor.ContractorList')\n const { t } = useTranslation('Contractor.ContractorList')\n return (\n <Button\n onClick={() => {\n onEvent(componentEvents.CANCEL)\n }}\n variant=\"secondary\"\n >\n {t('progressBarCta')}\n </Button>\n )\n}\n"],"names":["ContractorListContextual","companyId","onEvent","successMessage","useFlow","jsx","ContractorList","ensureRequired","ProfileContextual","contractorId","defaultValues","ContractorProfile","AddressContextual","Address","PaymentMethodContextual","PaymentMethod","NewHireReportContextual","selfOnboarding","NewHireReport","SubmitContextual","ContractorSubmit","ProgressBarCta","Button","useComponentContext","useI18n","t","useTranslation","componentEvents"],"mappings":";;;;;;;;;;;;;AAuDO,SAASA,IAA2B;AACzC,QAAM,EAAE,WAAAC,GAAW,SAAAC,GAAS,gBAAAC,EAAA,IAAmBC,EAAA;AAC/C,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAAJ;AAAA,MACA,WAAWK,EAAeN,CAAS;AAAA,MACnC,gBAAAE;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASK,IAAoB;AAClC,QAAM,EAAE,WAAAP,GAAW,SAAAC,GAAS,cAAAO,GAAc,eAAAC,EAAA,IACxCN,EAAA;AACF,SACE,gBAAAC;AAAA,IAACM;AAAA,IAAA;AAAA,MACC,SAAAT;AAAA,MACA,WAAWK,EAAeN,CAAS;AAAA,MACnC,cAAAQ;AAAA,MACA,eAAeC,GAAe;AAAA,IAAA;AAAA,EAAA;AAGpC;AAGO,SAASE,IAAoB;AAClC,QAAM,EAAE,SAAAV,GAAS,cAAAO,GAAc,eAAAC,EAAA,IAAkBN,EAAA;AACjD,SACE,gBAAAC;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,SAAAX;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,eAAeC,GAAe;AAAA,IAAA;AAAA,EAAA;AAGpC;AAEO,SAASI,IAA0B;AACxC,QAAM,EAAE,SAAAZ,GAAS,cAAAO,EAAA,IAAiBL,EAAA;AAClC,2BAAQW,GAAA,EAAc,SAAAb,GAAkB,cAAcK,EAAeE,CAAY,GAAG;AACtF;AAEO,SAASO,IAA0B;AACxC,QAAM,EAAE,SAAAd,GAAS,cAAAO,GAAc,gBAAAQ,EAAA,IAAmBb,EAAA;AAClD,SACE,gBAAAC;AAAA,IAACa;AAAA,IAAA;AAAA,MACC,SAAAhB;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,gBAAAQ;AAAA,IAAA;AAAA,EAAA;AAGN;AAEO,SAASE,IAAmB;AACjC,QAAM,EAAE,SAAAjB,GAAS,cAAAO,GAAc,gBAAAQ,EAAA,IAAmBb,EAAA;AAClD,SACE,gBAAAC;AAAA,IAACe;AAAA,IAAA;AAAA,MACC,SAAAlB;AAAA,MACA,cAAcK,EAAeE,CAAY;AAAA,MACzC,gBAAAQ;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASI,IAAiB;AAC/B,QAAM,EAAE,SAAAnB,EAAA,IAAYE,EAAA,GACd,EAAE,QAAAkB,EAAA,IAAWC,EAAA;AACnB,EAAAC,EAAQ,2BAA2B;AACnC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,2BAA2B;AACxD,SACE,gBAAArB;AAAA,IAACiB;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AACb,QAAApB,EAAQyB,EAAgB,MAAM;AAAA,MAChC;AAAA,MACA,SAAQ;AAAA,MAEP,YAAE,gBAAgB;AAAA,IAAA;AAAA,EAAA;AAGzB;"}
|
|
@@ -5,15 +5,14 @@ import { useBase as l } from "../../Base/useBase.js";
|
|
|
5
5
|
import { Flex as i } from "../../Common/Flex/Flex.js";
|
|
6
6
|
import { ActionsLayout as d } from "../../Common/ActionsLayout/ActionsLayout.js";
|
|
7
7
|
import { useComponentContext as u } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
8
|
-
import "
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return f("Contractor.OnboardingSummary"), p("Contractor.OnboardingSummary", t.dictionary), /* @__PURE__ */ n(s, { ...t, children: /* @__PURE__ */ n(h, { ...t, children: t.children }) });
|
|
8
|
+
import { useI18n as f, useComponentDictionary as C } from "../../../i18n/I18n.js";
|
|
9
|
+
import { componentEvents as p } from "../../../shared/constants.js";
|
|
10
|
+
function E(t) {
|
|
11
|
+
return f("Contractor.OnboardingSummary"), C("Contractor.OnboardingSummary", t.dictionary), /* @__PURE__ */ n(s, { ...t, children: /* @__PURE__ */ n(h, { ...t, children: t.children }) });
|
|
13
12
|
}
|
|
14
|
-
const h = ({ contractorId: t, className:
|
|
15
|
-
const { onEvent:
|
|
16
|
-
return /* @__PURE__ */ n("section", { className:
|
|
13
|
+
const h = ({ contractorId: t, className: c }) => {
|
|
14
|
+
const { onEvent: m } = l(), { t: o } = a("Contractor.OnboardingSummary"), r = u();
|
|
15
|
+
return /* @__PURE__ */ n("section", { className: c, children: /* @__PURE__ */ e(i, { flexDirection: "column", gap: 32, children: [
|
|
17
16
|
/* @__PURE__ */ e(i, { alignItems: "center", flexDirection: "column", gap: 8, children: [
|
|
18
17
|
/* @__PURE__ */ n(r.Heading, { as: "h2", textAlign: "center", children: o("subtitle") }),
|
|
19
18
|
/* @__PURE__ */ n(r.Text, { textAlign: "center", children: o("description") })
|
|
@@ -23,7 +22,7 @@ const h = ({ contractorId: t, className: m }) => {
|
|
|
23
22
|
{
|
|
24
23
|
variant: "secondary",
|
|
25
24
|
onClick: () => {
|
|
26
|
-
|
|
25
|
+
m(p.CONTRACTOR_SELF_ONBOARDING_DONE, { contractorId: t });
|
|
27
26
|
},
|
|
28
27
|
children: o("doneCta")
|
|
29
28
|
}
|
|
@@ -31,6 +30,6 @@ const h = ({ contractorId: t, className: m }) => {
|
|
|
31
30
|
] }) });
|
|
32
31
|
};
|
|
33
32
|
export {
|
|
34
|
-
|
|
33
|
+
E as OnboardingSummary
|
|
35
34
|
};
|
|
36
35
|
//# sourceMappingURL=OnboardingSummary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnboardingSummary.js","sources":["../../../../src/components/Contractor/OnboardingSummary/OnboardingSummary.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { Flex, ActionsLayout } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary } from '@/i18n/I18n'\n\n/**\n * Props for {@link OnboardingSummary}.\n *\n * @public\n */\nexport interface OnboardingSummaryProps extends BaseComponentInterface<'Contractor.OnboardingSummary'> {\n /** UUID of the contractor who completed self-onboarding. */\n contractorId: string\n}\n\n/**\n * Confirmation screen shown at the end of the contractor self-onboarding flow.\n * Lets the contractor know their information has been submitted and emits\n * `contractor/selfOnboarding/done` when they acknowledge it.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/selfOnboarding/done` | Fired when the contractor acknowledges completion and clicks the Done button | `{ contractorId: string }` |\n *\n * @public\n */\nexport function OnboardingSummary(props: OnboardingSummaryProps) {\n useI18n('Contractor.OnboardingSummary')\n useComponentDictionary('Contractor.OnboardingSummary', props.dictionary)\n\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ contractorId, className }: OnboardingSummaryProps) => {\n const { onEvent } = useBase()\n const { t } = useTranslation('Contractor.OnboardingSummary')\n const Components = useComponentContext()\n\n return (\n <section className={className}>\n <Flex flexDirection=\"column\" gap={32}>\n <Flex alignItems=\"center\" flexDirection=\"column\" gap={8}>\n <Components.Heading as=\"h2\" textAlign=\"center\">\n {t('subtitle')}\n </Components.Heading>\n <Components.Text textAlign=\"center\">{t('description')}</Components.Text>\n </Flex>\n <ActionsLayout justifyContent=\"center\">\n <Components.Button\n variant=\"secondary\"\n onClick={() => {\n onEvent(componentEvents.CONTRACTOR_SELF_ONBOARDING_DONE, { contractorId })\n }}\n >\n {t('doneCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n </section>\n )\n}\n"],"names":["OnboardingSummary","props","useI18n","useComponentDictionary","jsx","BaseComponent","Root","contractorId","className","onEvent","useBase","t","useTranslation","Components","useComponentContext","jsxs","Flex","ActionsLayout","componentEvents"],"mappings":"
|
|
1
|
+
{"version":3,"file":"OnboardingSummary.js","sources":["../../../../src/components/Contractor/OnboardingSummary/OnboardingSummary.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { Flex, ActionsLayout } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary } from '@/i18n/I18n'\n\n/**\n * Props for {@link OnboardingSummary}.\n *\n * @public\n */\nexport interface OnboardingSummaryProps extends BaseComponentInterface<'Contractor.OnboardingSummary'> {\n /** UUID of the contractor who completed self-onboarding. */\n contractorId: string\n}\n\n/**\n * Confirmation screen shown at the end of the contractor self-onboarding flow.\n * Lets the contractor know their information has been submitted and emits\n * `contractor/selfOnboarding/done` when they acknowledge it.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/selfOnboarding/done` | Fired when the contractor acknowledges completion and clicks the Done button | `{ contractorId: string }` |\n *\n * @public\n */\nexport function OnboardingSummary(props: OnboardingSummaryProps) {\n useI18n('Contractor.OnboardingSummary')\n useComponentDictionary('Contractor.OnboardingSummary', props.dictionary)\n\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ contractorId, className }: OnboardingSummaryProps) => {\n const { onEvent } = useBase()\n const { t } = useTranslation('Contractor.OnboardingSummary')\n const Components = useComponentContext()\n\n return (\n <section className={className}>\n <Flex flexDirection=\"column\" gap={32}>\n <Flex alignItems=\"center\" flexDirection=\"column\" gap={8}>\n <Components.Heading as=\"h2\" textAlign=\"center\">\n {t('subtitle')}\n </Components.Heading>\n <Components.Text textAlign=\"center\">{t('description')}</Components.Text>\n </Flex>\n <ActionsLayout justifyContent=\"center\">\n <Components.Button\n variant=\"secondary\"\n onClick={() => {\n onEvent(componentEvents.CONTRACTOR_SELF_ONBOARDING_DONE, { contractorId })\n }}\n >\n {t('doneCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n </section>\n )\n}\n"],"names":["OnboardingSummary","props","useI18n","useComponentDictionary","jsx","BaseComponent","Root","contractorId","className","onEvent","useBase","t","useTranslation","Components","useComponentContext","jsxs","Flex","ActionsLayout","componentEvents"],"mappings":";;;;;;;;;AA8BO,SAASA,EAAkBC,GAA+B;AAC/D,SAAAC,EAAQ,8BAA8B,GACtCC,EAAuB,gCAAgCF,EAAM,UAAU,GAGrE,gBAAAG,EAACC,GAAA,EAAe,GAAGJ,GACjB,UAAA,gBAAAG,EAACE,KAAM,GAAGL,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEA,MAAMK,IAAO,CAAC,EAAE,cAAAC,GAAc,WAAAC,QAAwC;AACpE,QAAM,EAAE,SAAAC,EAAA,IAAYC,EAAA,GACd,EAAE,GAAAC,EAAA,IAAMC,EAAe,8BAA8B,GACrDC,IAAaC,EAAA;AAEnB,SACE,gBAAAV,EAAC,aAAQ,WAAAI,GACP,UAAA,gBAAAO,EAACC,KAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,IAAA,gBAAAD,EAACC,KAAK,YAAW,UAAS,eAAc,UAAS,KAAK,GACpD,UAAA;AAAA,MAAA,gBAAAZ,EAACS,EAAW,SAAX,EAAmB,IAAG,MAAK,WAAU,UACnC,UAAAF,EAAE,UAAU,EAAA,CACf;AAAA,MACA,gBAAAP,EAACS,EAAW,MAAX,EAAgB,WAAU,UAAU,UAAAF,EAAE,aAAa,EAAA,CAAE;AAAA,IAAA,GACxD;AAAA,IACA,gBAAAP,EAACa,GAAA,EAAc,gBAAe,UAC5B,UAAA,gBAAAb;AAAA,MAACS,EAAW;AAAA,MAAX;AAAA,QACC,SAAQ;AAAA,QACR,SAAS,MAAM;AACb,UAAAJ,EAAQS,EAAgB,iCAAiC,EAAE,cAAAX,EAAA,CAAc;AAAA,QAC3E;AAAA,QAEC,YAAE,SAAS;AAAA,MAAA;AAAA,IAAA,EACd,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
|
|
@@ -14,8 +14,7 @@ import { composeErrorHandler as S } from "../../../partner-hook-utils/composeErr
|
|
|
14
14
|
import { composeSubmitHandler as N } from "../../../partner-hook-utils/form/composeSubmitHandler.js";
|
|
15
15
|
import { ActionsLayout as Y } from "../../Common/ActionsLayout/ActionsLayout.js";
|
|
16
16
|
import { Flex as f } from "../../Common/Flex/Flex.js";
|
|
17
|
-
|
|
18
|
-
function io({ dictionary: i, ...s }) {
|
|
17
|
+
function ro({ dictionary: i, ...s }) {
|
|
19
18
|
return v("Contractor.PaymentMethod", i), /* @__PURE__ */ t(U, { componentName: "Contractor.PaymentMethod", children: /* @__PURE__ */ t(Q, { ...s }) });
|
|
20
19
|
}
|
|
21
20
|
function Q({ contractorId: i, className: s, onEvent: a }) {
|
|
@@ -110,6 +109,6 @@ function Q({ contractorId: i, className: s, onEvent: a }) {
|
|
|
110
109
|
] }) }) }) });
|
|
111
110
|
}
|
|
112
111
|
export {
|
|
113
|
-
|
|
112
|
+
ro as PaymentMethod
|
|
114
113
|
};
|
|
115
114
|
//# sourceMappingURL=PaymentMethod.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentMethod.js","sources":["../../../../src/components/Contractor/PaymentMethod/PaymentMethod.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport type { PaymentMethodProps } from './types'\nimport {\n useContractorPaymentMethodForm,\n type ContractorPaymentMethodFormType,\n} from './shared/useContractorPaymentMethodForm'\nimport { useContractorBankAccountForm } from './shared/useContractorBankAccountForm'\nimport styles from './PaymentMethod.module.scss'\nimport { useI18n } from '@/i18n'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { Form } from '@/components/Common/Form'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { componentEvents, PAYMENT_METHODS } from '@/shared/constants'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { composeSubmitHandler } from '@/partner-hook-utils/form/composeSubmitHandler'\nimport { ActionsLayout } from '@/components/Common/ActionsLayout'\nimport { Flex } from '@/components/Common'\nimport type { RadioGroupProps } from '@/components/Common/UI/RadioGroup/RadioGroupTypes'\n\n/**\n * Manages a contractor's payment method, capturing a bank account for direct deposit or recording check as the payment method.\n *\n * Displays the current payment type, lets the user switch between direct deposit and check, and\n * collects bank account details (account holder name, routing number, account number, and account\n * type) when direct deposit is selected. Direct deposit creates the bank account (which updates the\n * payment method server-side); check updates the contractor's payment method type directly.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/bankAccount/created` | Fired on the direct deposit path after the bank account is created | The created bank account at `.contractorBankAccount` |\n * | `contractor/paymentMethod/updated` | Fired on the check path after the payment method type is updated | The updated payment method at `.contractorPaymentMethod` |\n * | `contractor/paymentMethod/done` | Fired when the payment method step completes | — |\n *\n * @param props - Component configuration; see {@link PaymentMethodProps}.\n * @returns The rendered payment method form.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorOnboarding } from '@gusto/embedded-react-sdk'\n *\n * function PaymentMethodStep() {\n * return (\n * <ContractorOnboarding.PaymentMethod\n * contractorId=\"contractor-uuid\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function PaymentMethod({ dictionary, ...props }: PaymentMethodProps) {\n useComponentDictionary('Contractor.PaymentMethod', dictionary)\n return (\n <BaseBoundaries componentName=\"Contractor.PaymentMethod\">\n <Root {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction Root({ contractorId, className, onEvent }: Omit<PaymentMethodProps, 'dictionary'>) {\n useI18n('Contractor.PaymentMethod')\n const { t } = useTranslation('Contractor.PaymentMethod')\n const Components = useComponentContext()\n\n const paymentMethodForm = useContractorPaymentMethodForm({\n contractorId,\n shouldFocusError: false,\n })\n const bankAccountForm = useContractorBankAccountForm({\n contractorId,\n shouldFocusError: false,\n })\n\n if (paymentMethodForm.isLoading || bankAccountForm.isLoading) {\n const loadingErrorHandling = composeErrorHandler([paymentMethodForm, bankAccountForm])\n return <BaseLayout isLoading error={loadingErrorHandling.errors} />\n }\n\n const isDirectDeposit = paymentMethodForm.status.isDirectDeposit\n const { Type } = paymentMethodForm.form.Fields\n const { Name, RoutingNumber, AccountNumber, AccountType } = bankAccountForm.form.Fields\n\n // Direct Deposit always submits the bank account (which sets the payment\n // method server-side); Check updates the payment method type directly. The\n // account number is pre-filled with the masked token, which the API treats as\n // \"keep the existing account,\" so an unchanged submit preserves it while a\n // newly typed number replaces it.\n const submitDirectDeposit = async () => {\n const result = await bankAccountForm.actions.onSubmit()\n if (!result) return\n onEvent(componentEvents.CONTRACTOR_BANK_ACCOUNT_CREATED, {\n contractorBankAccount: result.data,\n })\n onEvent(componentEvents.CONTRACTOR_PAYMENT_METHOD_DONE)\n }\n\n const submitCheck = async () => {\n const result = await paymentMethodForm.actions.onSubmit()\n if (!result) return\n onEvent(componentEvents.CONTRACTOR_PAYMENT_METHOD_UPDATED, {\n contractorPaymentMethod: result.data,\n })\n onEvent(componentEvents.CONTRACTOR_PAYMENT_METHOD_DONE)\n }\n\n const { handleSubmit, errorHandling } = isDirectDeposit\n ? composeSubmitHandler([paymentMethodForm, bankAccountForm], submitDirectDeposit)\n : composeSubmitHandler([paymentMethodForm], submitCheck)\n\n const isPending = paymentMethodForm.status.isPending || bankAccountForm.status.isPending\n\n const TypeFieldComponent = (radioProps: RadioGroupProps) => (\n <Components.RadioGroup\n {...radioProps}\n shouldVisuallyHideLabel\n options={radioProps.options.map(option => ({\n ...option,\n description:\n option.value === PAYMENT_METHODS.directDeposit\n ? t('directDepositDescription')\n : t('checkDescription'),\n }))}\n />\n )\n\n return (\n <section className={classNames(styles.root, className)}>\n <BaseLayout error={errorHandling.errors}>\n <Form onSubmit={handleSubmit}>\n <Flex gap={32} flexDirection=\"column\">\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Flex flexDirection=\"column\" gap={20}>\n <Type\n label={t('paymentFieldsetLegend')}\n getOptionLabel={(value: ContractorPaymentMethodFormType) =>\n value === PAYMENT_METHODS.directDeposit\n ? t('directDepositLabel')\n : t('checkLabel')\n }\n FieldComponent={TypeFieldComponent}\n formHookResult={paymentMethodForm}\n />\n {isDirectDeposit && (\n <>\n <Name\n label={t('bankAccountForm.nameLabel')}\n validationMessages={{ REQUIRED: t('bankAccountForm.validations.accountName') }}\n formHookResult={bankAccountForm}\n />\n <RoutingNumber\n label={t('bankAccountForm.routingNumberLabel')}\n description={t('bankAccountForm.routingNumberDescription')}\n validationMessages={{\n REQUIRED: t('bankAccountForm.validations.routingNumber'),\n INVALID_ROUTING_NUMBER: t('bankAccountForm.validations.routingNumber'),\n }}\n formHookResult={bankAccountForm}\n />\n <AccountNumber\n label={t('bankAccountForm.accountNumberLabel')}\n validationMessages={{\n REQUIRED: t('bankAccountForm.validations.accountNumber'),\n INVALID_ACCOUNT_NUMBER: t('bankAccountForm.validations.accountNumber'),\n }}\n formHookResult={bankAccountForm}\n />\n <AccountType\n label={t('bankAccountForm.accountTypeLabel')}\n getOptionLabel={(value: string) =>\n value === 'Checking'\n ? t('bankAccountForm.accountTypeChecking')\n : t('bankAccountForm.accountTypeSavings')\n }\n formHookResult={bankAccountForm}\n />\n </>\n )}\n </Flex>\n <ActionsLayout>\n <Components.Button type=\"submit\" variant=\"primary\" isDisabled={isPending}>\n {isPending ? t('submittingCta') : t('continueCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n </Form>\n </BaseLayout>\n </section>\n )\n}\n"],"names":["PaymentMethod","dictionary","props","useComponentDictionary","jsx","BaseBoundaries","Root","contractorId","className","onEvent","useI18n","t","useTranslation","Components","useComponentContext","paymentMethodForm","useContractorPaymentMethodForm","bankAccountForm","useContractorBankAccountForm","loadingErrorHandling","composeErrorHandler","BaseLayout","isDirectDeposit","Type","Name","RoutingNumber","AccountNumber","AccountType","submitDirectDeposit","result","componentEvents","submitCheck","handleSubmit","errorHandling","composeSubmitHandler","isPending","TypeFieldComponent","radioProps","option","PAYMENT_METHODS","classNames","styles","Form","Flex","jsxs","value","Fragment","ActionsLayout"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PaymentMethod.js","sources":["../../../../src/components/Contractor/PaymentMethod/PaymentMethod.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport type { PaymentMethodProps } from './types'\nimport {\n useContractorPaymentMethodForm,\n type ContractorPaymentMethodFormType,\n} from './shared/useContractorPaymentMethodForm'\nimport { useContractorBankAccountForm } from './shared/useContractorBankAccountForm'\nimport styles from './PaymentMethod.module.scss'\nimport { useI18n } from '@/i18n'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { Form } from '@/components/Common/Form'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { componentEvents, PAYMENT_METHODS } from '@/shared/constants'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { composeSubmitHandler } from '@/partner-hook-utils/form/composeSubmitHandler'\nimport { ActionsLayout } from '@/components/Common/ActionsLayout'\nimport { Flex } from '@/components/Common'\nimport type { RadioGroupProps } from '@/components/Common/UI/RadioGroup/RadioGroupTypes'\n\n/**\n * Manages a contractor's payment method, capturing a bank account for direct deposit or recording check as the payment method.\n *\n * Displays the current payment type, lets the user switch between direct deposit and check, and\n * collects bank account details (account holder name, routing number, account number, and account\n * type) when direct deposit is selected. Direct deposit creates the bank account (which updates the\n * payment method server-side); check updates the contractor's payment method type directly.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/bankAccount/created` | Fired on the direct deposit path after the bank account is created | The created bank account at `.contractorBankAccount` |\n * | `contractor/paymentMethod/updated` | Fired on the check path after the payment method type is updated | The updated payment method at `.contractorPaymentMethod` |\n * | `contractor/paymentMethod/done` | Fired when the payment method step completes | — |\n *\n * @param props - Component configuration; see {@link PaymentMethodProps}.\n * @returns The rendered payment method form.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorOnboarding } from '@gusto/embedded-react-sdk'\n *\n * function PaymentMethodStep() {\n * return (\n * <ContractorOnboarding.PaymentMethod\n * contractorId=\"contractor-uuid\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function PaymentMethod({ dictionary, ...props }: PaymentMethodProps) {\n useComponentDictionary('Contractor.PaymentMethod', dictionary)\n return (\n <BaseBoundaries componentName=\"Contractor.PaymentMethod\">\n <Root {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction Root({ contractorId, className, onEvent }: Omit<PaymentMethodProps, 'dictionary'>) {\n useI18n('Contractor.PaymentMethod')\n const { t } = useTranslation('Contractor.PaymentMethod')\n const Components = useComponentContext()\n\n const paymentMethodForm = useContractorPaymentMethodForm({\n contractorId,\n shouldFocusError: false,\n })\n const bankAccountForm = useContractorBankAccountForm({\n contractorId,\n shouldFocusError: false,\n })\n\n if (paymentMethodForm.isLoading || bankAccountForm.isLoading) {\n const loadingErrorHandling = composeErrorHandler([paymentMethodForm, bankAccountForm])\n return <BaseLayout isLoading error={loadingErrorHandling.errors} />\n }\n\n const isDirectDeposit = paymentMethodForm.status.isDirectDeposit\n const { Type } = paymentMethodForm.form.Fields\n const { Name, RoutingNumber, AccountNumber, AccountType } = bankAccountForm.form.Fields\n\n // Direct Deposit always submits the bank account (which sets the payment\n // method server-side); Check updates the payment method type directly. The\n // account number is pre-filled with the masked token, which the API treats as\n // \"keep the existing account,\" so an unchanged submit preserves it while a\n // newly typed number replaces it.\n const submitDirectDeposit = async () => {\n const result = await bankAccountForm.actions.onSubmit()\n if (!result) return\n onEvent(componentEvents.CONTRACTOR_BANK_ACCOUNT_CREATED, {\n contractorBankAccount: result.data,\n })\n onEvent(componentEvents.CONTRACTOR_PAYMENT_METHOD_DONE)\n }\n\n const submitCheck = async () => {\n const result = await paymentMethodForm.actions.onSubmit()\n if (!result) return\n onEvent(componentEvents.CONTRACTOR_PAYMENT_METHOD_UPDATED, {\n contractorPaymentMethod: result.data,\n })\n onEvent(componentEvents.CONTRACTOR_PAYMENT_METHOD_DONE)\n }\n\n const { handleSubmit, errorHandling } = isDirectDeposit\n ? composeSubmitHandler([paymentMethodForm, bankAccountForm], submitDirectDeposit)\n : composeSubmitHandler([paymentMethodForm], submitCheck)\n\n const isPending = paymentMethodForm.status.isPending || bankAccountForm.status.isPending\n\n const TypeFieldComponent = (radioProps: RadioGroupProps) => (\n <Components.RadioGroup\n {...radioProps}\n shouldVisuallyHideLabel\n options={radioProps.options.map(option => ({\n ...option,\n description:\n option.value === PAYMENT_METHODS.directDeposit\n ? t('directDepositDescription')\n : t('checkDescription'),\n }))}\n />\n )\n\n return (\n <section className={classNames(styles.root, className)}>\n <BaseLayout error={errorHandling.errors}>\n <Form onSubmit={handleSubmit}>\n <Flex gap={32} flexDirection=\"column\">\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Flex flexDirection=\"column\" gap={20}>\n <Type\n label={t('paymentFieldsetLegend')}\n getOptionLabel={(value: ContractorPaymentMethodFormType) =>\n value === PAYMENT_METHODS.directDeposit\n ? t('directDepositLabel')\n : t('checkLabel')\n }\n FieldComponent={TypeFieldComponent}\n formHookResult={paymentMethodForm}\n />\n {isDirectDeposit && (\n <>\n <Name\n label={t('bankAccountForm.nameLabel')}\n validationMessages={{ REQUIRED: t('bankAccountForm.validations.accountName') }}\n formHookResult={bankAccountForm}\n />\n <RoutingNumber\n label={t('bankAccountForm.routingNumberLabel')}\n description={t('bankAccountForm.routingNumberDescription')}\n validationMessages={{\n REQUIRED: t('bankAccountForm.validations.routingNumber'),\n INVALID_ROUTING_NUMBER: t('bankAccountForm.validations.routingNumber'),\n }}\n formHookResult={bankAccountForm}\n />\n <AccountNumber\n label={t('bankAccountForm.accountNumberLabel')}\n validationMessages={{\n REQUIRED: t('bankAccountForm.validations.accountNumber'),\n INVALID_ACCOUNT_NUMBER: t('bankAccountForm.validations.accountNumber'),\n }}\n formHookResult={bankAccountForm}\n />\n <AccountType\n label={t('bankAccountForm.accountTypeLabel')}\n getOptionLabel={(value: string) =>\n value === 'Checking'\n ? t('bankAccountForm.accountTypeChecking')\n : t('bankAccountForm.accountTypeSavings')\n }\n formHookResult={bankAccountForm}\n />\n </>\n )}\n </Flex>\n <ActionsLayout>\n <Components.Button type=\"submit\" variant=\"primary\" isDisabled={isPending}>\n {isPending ? t('submittingCta') : t('continueCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n </Form>\n </BaseLayout>\n </section>\n )\n}\n"],"names":["PaymentMethod","dictionary","props","useComponentDictionary","jsx","BaseBoundaries","Root","contractorId","className","onEvent","useI18n","t","useTranslation","Components","useComponentContext","paymentMethodForm","useContractorPaymentMethodForm","bankAccountForm","useContractorBankAccountForm","loadingErrorHandling","composeErrorHandler","BaseLayout","isDirectDeposit","Type","Name","RoutingNumber","AccountNumber","AccountType","submitDirectDeposit","result","componentEvents","submitCheck","handleSubmit","errorHandling","composeSubmitHandler","isPending","TypeFieldComponent","radioProps","option","PAYMENT_METHODS","classNames","styles","Form","Flex","jsxs","value","Fragment","ActionsLayout"],"mappings":"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"}
|