@gusto/embedded-react-sdk 0.51.0 → 0.52.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 +46 -0
- package/dist/components/Base/useBaseSubmit.js +4 -4
- package/dist/components/Base/useBaseSubmit.js.map +1 -1
- package/dist/components/Common/DocumentList/DocumentList.d.ts +8 -1
- package/dist/components/Common/DocumentList/DocumentList.js +24 -21
- package/dist/components/Common/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes.d.ts +1 -1
- package/dist/components/Common/OnboardingStatusBadge/index.d.ts +2 -2
- package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
- package/dist/components/Common/TaxInputs/TaxInputs.d.ts +2 -2
- package/dist/components/Common/TaxInputs/TaxInputs.js.map +1 -1
- package/dist/components/Common/UI/FormBox/FormBox.d.ts +9 -0
- package/dist/components/Common/UI/FormBox/FormBox.js +13 -0
- package/dist/components/Common/UI/FormBox/FormBox.js.map +1 -0
- package/dist/components/Common/UI/FormBox/FormBox.module.scss.js +14 -0
- package/dist/components/Common/UI/FormBox/FormBox.module.scss.js.map +1 -0
- package/dist/components/Common/UI/FormBox/FormBoxTypes.d.ts +26 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.d.ts +9 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js +23 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js.map +1 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js +8 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js.map +1 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.d.ts +36 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js +7 -0
- package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js.map +1 -0
- package/dist/components/Common/UI/FormBoxHeader/index.d.ts +1 -0
- package/dist/components/Common/UI/Input/InputTypes.d.ts +1 -0
- package/dist/components/Common/UI/Input/InputTypes.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +5 -5
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.d.ts +1 -2
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.d.ts +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +9 -8
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +3 -3
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.d.ts +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.d.ts +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +9 -8
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +11 -10
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccount.js +1 -1
- package/dist/components/Company/BankAccount/BankAccount.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountComponents.d.ts +1 -1
- package/dist/components/Company/BankAccount/BankAccountComponents.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/Form.d.ts +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +9 -8
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/context.d.ts +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/context.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/Form.d.ts +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +2 -2
- package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.d.ts +2 -2
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +9 -8
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentSigner.js +1 -1
- package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Company/DocumentSigner/documentSignerStateMachine.d.ts +2 -2
- package/dist/components/Company/DocumentSigner/documentSignerStateMachine.js.map +1 -1
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/signCompanyFormSchema.d.ts +1 -1
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.d.ts +1 -1
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.js +3 -3
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.js.map +1 -1
- package/dist/components/Company/FederalTaxes/FederalTaxes.js +2 -2
- package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
- package/dist/components/Company/FederalTaxes/Form.js +1 -1
- package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.d.ts +2 -2
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +12 -11
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +12 -11
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Industry/Industry.js +2 -2
- package/dist/components/Company/Industry/Industry.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/Actions.js +7 -7
- package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/Form.d.ts +1 -1
- package/dist/components/Company/Locations/LocationForm/LocationForm.js +46 -45
- package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +9 -8
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/LocationsList.js +1 -1
- package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.d.ts +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +9 -8
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +1 -1
- package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.d.ts +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +9 -8
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleList.js +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleList.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +3 -3
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +3 -3
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +6 -6
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxes.d.ts +10 -1
- package/dist/components/Company/StateTaxes/StateTaxes.js +23 -17
- 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 +17 -10
- package/dist/components/Company/StateTaxes/StateTaxesComponents.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +3 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +2 -2
- package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/applicableIf.d.ts +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/applicableIf.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.d.ts +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +9 -8
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/List.js +27 -27
- package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.d.ts +9 -0
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +24 -24
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.d.ts +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +9 -8
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Contractor/Address/Address.d.ts +4 -3
- package/dist/components/Contractor/Address/Address.js.map +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/contractorAddressSchema.d.ts +2 -2
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.d.ts +3 -3
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +3 -3
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
- package/dist/components/Contractor/ContractorList/index.js +95 -92
- package/dist/components/Contractor/ContractorList/index.js.map +1 -1
- package/dist/components/Contractor/ContractorList/useContractorList.d.ts +1 -1
- package/dist/components/Contractor/ContractorList/useContractorList.js +1 -1
- package/dist/components/Contractor/ContractorList/useContractorList.js.map +1 -1
- package/dist/components/Contractor/Documents/DocumentSigner/documentSignerStateMachine.d.ts +1 -1
- package/dist/components/Contractor/Documents/DocumentSigner/documentSignerStateMachine.js.map +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.d.ts +3 -1
- package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js +64 -51
- package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js.map +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.d.ts +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.js +1 -1
- package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js +202 -159
- package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/contractorSignatureFormSchema.d.ts +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.d.ts +3 -3
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js +3 -3
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.d.ts +2 -2
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js +55 -54
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js.map +1 -1
- package/dist/components/Contractor/Landing/Landing.js +2 -2
- package/dist/components/Contractor/Landing/Landing.js.map +1 -1
- package/dist/components/Contractor/NewHireReport/NewHireReport.js +2 -2
- package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.d.ts +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js +2 -2
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountFormSchema.d.ts +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.d.ts +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.d.ts +3 -3
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js +2 -2
- package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +5 -5
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +2 -2
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.d.ts +2 -2
- package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/GenericBlocker.d.ts +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/GenericBlocker.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.d.ts +4 -4
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/helpers.d.ts +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/helpers.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js +2 -2
- package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +3 -3
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.d.ts +2 -2
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +4 -4
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.d.ts +3 -3
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.d.ts +17 -5
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +32 -31
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.d.ts +3 -3
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.d.ts +16 -4
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +34 -30
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
- package/dist/components/Contractor/Profile/SelfOnboardingContractorProfile.js +1 -1
- package/dist/components/Contractor/Profile/SelfOnboardingContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.d.ts +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +6 -6
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.d.ts +2 -2
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +3 -3
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
- package/dist/components/Contractor/Submit/Submit.js +3 -3
- package/dist/components/Contractor/Submit/Submit.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +1 -1
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/Compensation.d.ts +2 -6
- package/dist/components/Employee/Compensation/onboarding/Compensation.js +38 -42
- package/dist/components/Employee/Compensation/onboarding/Compensation.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.d.ts +2 -2
- package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.js +2 -2
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.d.ts +1 -1
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.d.ts +1 -1
- package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.d.ts +2 -2
- package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.d.ts +2 -2
- package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.d.ts +3 -3
- package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.d.ts +4 -4
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +7 -7
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.d.ts +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +4 -4
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.d.ts +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.d.ts +3 -3
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +7 -7
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.js +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Employee/Dashboard/dashboardStateMachine.js.map +1 -1
- package/dist/components/Employee/Dashboard/index.d.ts +1 -1
- package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
- package/dist/components/Employee/Deductions/management/deductionsStateMachine.js.map +1 -1
- package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.d.ts +1 -1
- package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.js.map +1 -1
- package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.d.ts +1 -1
- package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/formatDeductionAmount.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/formatDeductionAmount.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.d.ts +2 -2
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.d.ts +3 -3
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.js +5 -5
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.d.ts +2 -2
- package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.js +3 -3
- package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionsList.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useDeductionsList.js +2 -2
- package/dist/components/Employee/Deductions/shared/useDeductionsList.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useDeleteDeduction.d.ts +1 -1
- package/dist/components/Employee/Deductions/shared/useDeleteDeduction.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentManager.js +2 -2
- package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.d.ts +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +9 -8
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +2 -2
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js +3 -3
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.d.ts +2 -2
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.d.ts +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +3 -6
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
- package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.d.ts +1 -1
- package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.js +1 -1
- package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.js.map +1 -1
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.d.ts +2 -2
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js +27 -32
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js.map +1 -1
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.d.ts +1 -1
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.js +3 -3
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +3 -3
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +4 -5
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.d.ts +2 -2
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.d.ts +2 -2
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.js +2 -2
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.d.ts +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.js +1 -1
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.d.ts +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.d.ts +1 -1
- package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.d.ts +1 -1
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +3 -3
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
- package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.d.ts +1 -1
- package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.js +1 -1
- package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.js.map +1 -1
- package/dist/components/Employee/Landing/Landing.js +2 -2
- package/dist/components/Employee/Landing/Landing.js.map +1 -1
- package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.d.ts +1 -1
- package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.js.map +1 -1
- package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.d.ts +1 -1
- package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js +1 -3
- package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js.map +1 -1
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +55 -49
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.d.ts +1 -1
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js +2 -2
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.d.ts +2 -2
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.js +4 -4
- package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.d.ts +2 -2
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js +3 -3
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.d.ts +1 -1
- package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.d.ts +1 -1
- package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.js +3 -3
- package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.js.map +1 -1
- package/dist/components/Employee/Profile/onboarding/AdminProfile.js.map +1 -1
- package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +1 -1
- package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/employeeDetailsSchema.d.ts +2 -2
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.d.ts +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +5 -5
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.d.ts +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/homeAddressSchema.d.ts +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.d.ts +2 -2
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js +4 -4
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.d.ts +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.d.ts +2 -2
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js +5 -5
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js.map +1 -1
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.d.ts +1 -1
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
- package/dist/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/__fixtures__/stateTaxesFixtures.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/__fixtures__/toWireFormat.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js +2 -2
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js.map +1 -1
- package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.d.ts +1 -1
- package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.js +1 -1
- package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +9 -9
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +4 -4
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.d.ts +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.d.ts +2 -2
- package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.d.ts +1 -1
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +3 -3
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
- package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.d.ts +1 -1
- package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.js +1 -1
- package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.js.map +1 -1
- package/dist/components/Employee/exports/employeeManagement.d.ts +1 -1
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.d.ts +4 -5
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +101 -125
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +2 -2
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestsComponents.d.ts +0 -5
- package/dist/components/InformationRequests/InformationRequestsComponents.js +12 -13
- package/dist/components/InformationRequests/InformationRequestsComponents.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +2 -2
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +3 -3
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js +2 -2
- package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js +5 -5
- package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +4 -4
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +8 -7
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.d.ts +1 -1
- package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js +9 -9
- package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +1 -1
- package/dist/components/Payroll/OffCycle/index.d.ts +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +4 -4
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +2 -2
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js.map +1 -1
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +4 -4
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +2 -2
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +100 -95
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +5 -6
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +5 -5
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +6 -6
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +57 -56
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +4 -4
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +2 -2
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +24 -7
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js +37 -33
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +2 -2
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js +7 -7
- package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +2 -2
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +4 -4
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +2 -2
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +2 -2
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +8 -8
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +3 -3
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +7 -7
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +4 -4
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +31 -31
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.d.ts +2 -2
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/GenericBlocker.d.ts +1 -1
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/GenericBlocker.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.d.ts +1 -1
- package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.js +2 -2
- package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCases.d.ts +9 -5
- package/dist/components/Payroll/RecoveryCases/RecoveryCases.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +2 -2
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
- package/dist/components/Payroll/Transition/TransitionFlowComponents.d.ts +1 -1
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js +2 -2
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +1 -1
- package/dist/components/Payroll/Transition/index.d.ts +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +4 -4
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +3 -3
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
- package/dist/components/Payroll/helpers.d.ts +26 -12
- package/dist/components/Payroll/helpers.js +1 -1
- package/dist/components/Payroll/helpers.js.map +1 -1
- package/dist/components/Payroll/index.d.ts +3 -2
- package/dist/components/Payroll/payrollTypes.d.ts +1 -1
- package/dist/components/Payroll/payrollTypes.js +1 -1
- package/dist/components/Payroll/payrollTypes.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.d.ts +2 -2
- package/dist/components/Payroll/usePreparedPayrollData.js +16 -15
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.d.ts +1 -1
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +3 -3
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js +3 -3
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js.map +1 -1
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js +3 -3
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyList.js +6 -6
- package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js +30 -29
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js.map +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js.map +1 -1
- package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.d.ts +2 -2
- package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +27 -26
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +2 -2
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +69 -68
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js +20 -20
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js.map +1 -1
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +67 -66
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.d.ts +5 -5
- package/dist/contexts/ApiProvider/ApiProvider.js +3 -3
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/apiVersion.d.ts +23 -0
- package/dist/contexts/ApiProvider/apiVersion.js +6 -0
- package/dist/contexts/ApiProvider/apiVersion.js.map +1 -0
- package/dist/contexts/ApiProvider/apiVersionHook.js +3 -2
- package/dist/contexts/ApiProvider/apiVersionHook.js.map +1 -1
- package/dist/contexts/ApiProvider/createSdkQueryClient.d.ts +1 -1
- package/dist/contexts/ApiProvider/createSdkQueryClient.js +7 -6
- package/dist/contexts/ApiProvider/createSdkQueryClient.js.map +1 -1
- package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js +40 -36
- package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js.map +1 -1
- package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +2 -0
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.d.ts +5 -0
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js +18 -16
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js.map +1 -1
- package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +6 -0
- package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProvider.d.ts +4 -5
- package/dist/contexts/GustoProvider/GustoProvider.js +6 -6
- package/dist/contexts/GustoProvider/GustoProvider.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +7 -7
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +8 -8
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/GustoProvider/index.d.ts +1 -1
- package/dist/contexts/index.d.ts +2 -6
- package/dist/helpers/apiErrorToList.d.ts +1 -1
- package/dist/helpers/apiErrorToList.js.map +1 -1
- package/dist/helpers/formattedStrings.d.ts +2 -2
- package/dist/helpers/formattedStrings.js.map +1 -1
- package/dist/hooks/useCompanyPaymentSpeed.d.ts +1 -1
- package/dist/hooks/useCompanyPaymentSpeed.js +1 -1
- package/dist/hooks/useCompanyPaymentSpeed.js.map +1 -1
- package/dist/i18n/en/Contractor.ContractorList.json.js +18 -16
- package/dist/i18n/en/Contractor.ContractorList.json.js.map +1 -1
- package/dist/i18n/en/Contractor.DocumentsList.json.js +20 -16
- package/dist/i18n/en/Contractor.DocumentsList.json.js.map +1 -1
- package/dist/i18n/en/Contractor.SignatureForm.json.js +5 -5
- package/dist/i18n/en/Employee.OnboardingSummary.json.js +24 -20
- package/dist/i18n/en/Employee.OnboardingSummary.json.js.map +1 -1
- package/dist/i18n/types.d.ts +12 -0
- package/dist/index.d.ts +8 -7
- package/dist/index.js +121 -134
- package/dist/index.js.map +1 -1
- package/dist/models/WA_RISK_CODES.d.ts +5 -2
- package/dist/models/WA_RISK_CODES.js.map +1 -1
- package/dist/models/external.d.ts +236 -226
- package/dist/partner-hook-utils/composeErrorHandler.d.ts +9 -4
- package/dist/partner-hook-utils/composeErrorHandler.js.map +1 -1
- package/dist/partner-hook-utils/form/SDKFormProvider.d.ts +10 -2
- package/dist/partner-hook-utils/form/SDKFormProvider.js +7 -1
- package/dist/partner-hook-utils/form/SDKFormProvider.js.map +1 -1
- package/dist/partner-hook-utils/form/composeSubmitHandler.d.ts +7 -4
- package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/index.d.ts +1 -0
- package/dist/partner-hook-utils/form/index.d.ts +3 -3
- package/dist/partner-hook-utils/form/useHookFieldResolution.js.map +1 -1
- package/dist/partner-hook-utils/index.d.ts +1 -1
- package/dist/partner-hook-utils/types.d.ts +7 -3
- package/dist/shared/constants.d.ts +2 -2
- package/dist/shared/constants.js +5 -5
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/Helpers.d.ts +11 -0
- package/dist/types/hooks.d.ts +2 -2
- package/dist/types/sdkError.js +3 -3
- package/dist/types/sdkError.js.map +1 -1
- package/docs/guides/endpoint-inventory.json +1201 -297
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContractorBankAccountForm.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { ContractorBankAccount } from '@gusto/embedded-api-v-2026-02-01/models/components/contractorbankaccount'\nimport { useContractorPaymentMethodGetBankAccounts } from '@gusto/embedded-api-v-2026-02-01/react-query/contractorPaymentMethodGetBankAccounts'\nimport { useContractorPaymentMethodsCreateBankAccountMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/contractorPaymentMethodsCreateBankAccount'\nimport {\n ACCOUNT_TYPES,\n createContractorBankAccountSchema,\n type ContractorAccountType,\n type ContractorBankAccountFormData,\n type ContractorBankAccountFormOutputs,\n type ContractorBankAccountOptionalFieldsToRequire,\n} from './useContractorBankAccountFormSchema'\nimport type {\n AccountNumberFieldProps,\n AccountTypeFieldProps,\n NameFieldProps,\n RoutingNumberFieldProps,\n} from './fields'\nimport { AccountNumberField, AccountTypeField, NameField, RoutingNumberField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\n/**\n * Props for {@link useContractorBankAccountForm}.\n *\n * @public\n */\nexport interface UseContractorBankAccountFormProps {\n /** Contractor for whom to create the bank account. */\n contractorId: string\n /** Override optional fields to be required. */\n optionalFieldsToRequire?: ContractorBankAccountOptionalFieldsToRequire\n /** Pre-fill form values. The contractor's existing bank account is used when no override is supplied. */\n defaultValues?: Partial<ContractorBankAccountFormData>\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useContractorBankAccountForm} on `form.Fields`.\n *\n * @public\n */\nexport interface ContractorBankAccountFormFields {\n /** Bound to `name`. Captures the bank account nickname. */\n Name: ComponentType<NameFieldProps>\n /** Bound to `routingNumber`. Validated against a 9-digit numeric pattern. */\n RoutingNumber: ComponentType<RoutingNumberFieldProps>\n /**\n * Bound to `accountNumber`. Pre-filled with the masked account number (e.g.\n * \"XXXX1207\"), which is accepted unchanged to keep the existing account; a\n * newly entered value is validated against the 1–17 digit numeric pattern.\n */\n AccountNumber: ComponentType<AccountNumberFieldProps>\n /**\n * Bound to `accountType`. Options are `Checking` and `Savings`; defaults to\n * `Checking`. Supply `getOptionLabel` to translate the option labels.\n */\n AccountType: ComponentType<AccountTypeFieldProps>\n}\n\n/**\n * Ready-state return value of {@link useContractorBankAccountForm}.\n *\n * @public\n */\nexport interface UseContractorBankAccountFormReady extends BaseFormHookReady<\n ContractorBankAccountFieldsMetadata,\n ContractorBankAccountFormData,\n ContractorBankAccountFormFields\n> {\n /** The contractor's current bank account, loaded from the API, if any. */\n data: {\n bankAccount: ContractorBankAccount | undefined\n }\n /** `isPending` reflects the in-flight create mutation; `mode` is always `'create'`. */\n status: { isPending: boolean; mode: 'create' }\n /** Submit the form. Returns the created bank account on success or `undefined` on validation/mutation failure. */\n actions: {\n onSubmit: () => Promise<HookSubmitResult<ContractorBankAccount> | undefined>\n }\n}\n\n/** @internal */\nfunction buildContractorBankAccountFieldsMetadata(\n base: Record<keyof ContractorBankAccountFormData, FieldMetadata>,\n) {\n const accountTypeOptions = ACCOUNT_TYPES.map(value => ({ value, label: value }))\n return {\n name: base.name,\n routingNumber: base.routingNumber,\n accountNumber: base.accountNumber,\n accountType: withOptions<ContractorAccountType>(base.accountType, accountTypeOptions, [\n ...ACCOUNT_TYPES,\n ]),\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for creating a contractor's bank account.\n *\n * @remarks\n * Captures the account nickname, routing number, account number, and account\n * type. Creating a bank account also updates the contractor's payment method to\n * Direct Deposit on the Gusto API as a side-effect, so the Direct Deposit path\n * needs only this submit — no separate payment method update.\n *\n * When the contractor already has a bank account on file, the account number\n * field is pre-filled with the masked token the API returns (e.g. \"XXXX1207\").\n * The API requires `account_number` on every write and treats that exact masked\n * value as \"keep the existing account,\" so submitting it unchanged preserves the\n * account while still applying any name/routing/type edits; typing a real number\n * replaces it.\n *\n * @param props - See {@link UseContractorBankAccountFormProps}.\n * @returns A loading-state result while data loads, or a {@link UseContractorBankAccountFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import { useContractorBankAccountForm, SDKFormProvider } from '@gusto/embedded-react-sdk'\n *\n * function AddBankAccount({ contractorId }: { contractorId: string }) {\n * const bankForm = useContractorBankAccountForm({ contractorId })\n *\n * if (bankForm.isLoading) return null\n * const { Fields } = bankForm.form\n *\n * return (\n * <SDKFormProvider formHookResult={bankForm}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void bankForm.actions.onSubmit()\n * }}\n * >\n * <Fields.Name label=\"Account nickname\" />\n * <Fields.RoutingNumber label=\"Routing number\" />\n * <Fields.AccountNumber label=\"Account number\" />\n * <Fields.AccountType label=\"Account type\" />\n * <button type=\"submit\" disabled={bankForm.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useContractorBankAccountForm({\n contractorId,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseContractorBankAccountFormProps): HookLoadingResult | UseContractorBankAccountFormReady {\n const bankAccountsQuery = useContractorPaymentMethodGetBankAccounts({\n contractorUuid: contractorId,\n })\n const bankAccount = bankAccountsQuery.data?.contractorBankAccountList?.[0] ?? undefined\n\n const existingAccountNumberMask = bankAccount?.hiddenAccountNumber ?? undefined\n\n const [schema, metadataConfig] = useMemo(\n () =>\n createContractorBankAccountSchema({\n optionalFieldsToRequire,\n existingAccountNumberMask,\n }),\n [optionalFieldsToRequire, existingAccountNumberMask],\n )\n\n // The account number is seeded with the masked token the API returns (e.g.\n // \"XXXX1207\"). The bank account API requires account_number on every write\n // and treats that exact masked value as \"keep the existing account,\" so\n // submitting it unchanged preserves the account; typing a new number replaces it.\n const resolvedDefaults: ContractorBankAccountFormData = useMemo(\n () => ({\n name: partnerDefaults?.name ?? bankAccount?.name ?? '',\n routingNumber: partnerDefaults?.routingNumber ?? bankAccount?.routingNumber ?? '',\n accountNumber: partnerDefaults?.accountNumber ?? existingAccountNumberMask ?? '',\n accountType: (partnerDefaults?.accountType ??\n bankAccount?.accountType ??\n 'Checking') as ContractorAccountType,\n }),\n [partnerDefaults, bankAccount, existingAccountNumberMask],\n )\n\n const formMethods = useForm<\n ContractorBankAccountFormData,\n unknown,\n ContractorBankAccountFormOutputs\n >({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createMutation = useContractorPaymentMethodsCreateBankAccountMutation()\n const isPending = createMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('ContractorBankAccountForm')\n\n const errorHandling = composeErrorHandler([bankAccountsQuery], {\n submitError,\n setSubmitError,\n })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildContractorBankAccountFieldsMetadata(baseMetadata)\n\n const onSubmit = async (): Promise<HookSubmitResult<ContractorBankAccount> | undefined> => {\n let submitResult: HookSubmitResult<ContractorBankAccount> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: ContractorBankAccountFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const response = await createMutation.mutateAsync({\n request: {\n contractorUuid: contractorId,\n contractorBankAccountCreateRequestBody: {\n name: payload.name,\n routingNumber: payload.routingNumber,\n accountNumber: payload.accountNumber,\n accountType: payload.accountType,\n },\n },\n })\n\n if (!response.contractorBankAccount) {\n throw new SDKInternalError('Bank account creation failed')\n }\n\n submitResult = { mode: 'create' as const, data: response.contractorBankAccount }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (bankAccountsQuery.isLoading) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { bankAccount },\n status: { isPending, mode: 'create' as const },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Name: NameField,\n RoutingNumber: RoutingNumberField,\n AccountNumber: AccountNumberField,\n AccountType: AccountTypeField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useContractorBankAccountForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseContractorBankAccountFormResult =\n HookLoadingResult | UseContractorBankAccountFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useContractorBankAccountForm}.\n *\n * @public\n */\nexport type ContractorBankAccountFieldsMetadata = ReturnType<\n typeof buildContractorBankAccountFieldsMetadata\n>\n"],"names":["buildContractorBankAccountFieldsMetadata","base","accountTypeOptions","ACCOUNT_TYPES","value","withOptions","useContractorBankAccountForm","contractorId","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","bankAccountsQuery","useContractorPaymentMethodGetBankAccounts","bankAccount","existingAccountNumberMask","schema","metadataConfig","useMemo","createContractorBankAccountSchema","resolvedDefaults","formMethods","useForm","zodResolver","createMutation","useContractorPaymentMethodsCreateBankAccountMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","submitResult","resolve","data","payload","response","SDKInternalError","hookFormInternals","useHookFormInternals","NameField","RoutingNumberField","AccountNumberField","AccountTypeField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useContractorBankAccountForm.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { ContractorBankAccount } from '@gusto/embedded-api/models/components/contractorbankaccount'\nimport { useContractorPaymentMethodGetBankAccounts } from '@gusto/embedded-api/react-query/contractorPaymentMethodGetBankAccounts'\nimport { useContractorPaymentMethodsCreateBankAccountMutation } from '@gusto/embedded-api/react-query/contractorPaymentMethodsCreateBankAccount'\nimport {\n ACCOUNT_TYPES,\n createContractorBankAccountSchema,\n type ContractorAccountType,\n type ContractorBankAccountFormData,\n type ContractorBankAccountFormOutputs,\n type ContractorBankAccountOptionalFieldsToRequire,\n} from './useContractorBankAccountFormSchema'\nimport type {\n AccountNumberFieldProps,\n AccountTypeFieldProps,\n NameFieldProps,\n RoutingNumberFieldProps,\n} from './fields'\nimport { AccountNumberField, AccountTypeField, NameField, RoutingNumberField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\n/**\n * Props for {@link useContractorBankAccountForm}.\n *\n * @public\n */\nexport interface UseContractorBankAccountFormProps {\n /** Contractor for whom to create the bank account. */\n contractorId: string\n /** Override optional fields to be required. */\n optionalFieldsToRequire?: ContractorBankAccountOptionalFieldsToRequire\n /** Pre-fill form values. The contractor's existing bank account is used when no override is supplied. */\n defaultValues?: Partial<ContractorBankAccountFormData>\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useContractorBankAccountForm} on `form.Fields`.\n *\n * @public\n */\nexport interface ContractorBankAccountFormFields {\n /** Bound to `name`. Captures the bank account nickname. */\n Name: ComponentType<NameFieldProps>\n /** Bound to `routingNumber`. Validated against a 9-digit numeric pattern. */\n RoutingNumber: ComponentType<RoutingNumberFieldProps>\n /**\n * Bound to `accountNumber`. Pre-filled with the masked account number (e.g.\n * \"XXXX1207\"), which is accepted unchanged to keep the existing account; a\n * newly entered value is validated against the 1–17 digit numeric pattern.\n */\n AccountNumber: ComponentType<AccountNumberFieldProps>\n /**\n * Bound to `accountType`. Options are `Checking` and `Savings`; defaults to\n * `Checking`. Supply `getOptionLabel` to translate the option labels.\n */\n AccountType: ComponentType<AccountTypeFieldProps>\n}\n\n/**\n * Ready-state return value of {@link useContractorBankAccountForm}.\n *\n * @public\n */\nexport interface UseContractorBankAccountFormReady extends BaseFormHookReady<\n ContractorBankAccountFieldsMetadata,\n ContractorBankAccountFormData,\n ContractorBankAccountFormFields\n> {\n /** The contractor's current bank account, loaded from the API, if any. */\n data: {\n bankAccount: ContractorBankAccount | undefined\n }\n /** `isPending` reflects the in-flight create mutation; `mode` is always `'create'`. */\n status: { isPending: boolean; mode: 'create' }\n /** Submit the form. Returns the created bank account on success or `undefined` on validation/mutation failure. */\n actions: {\n onSubmit: () => Promise<HookSubmitResult<ContractorBankAccount> | undefined>\n }\n}\n\n/** @internal */\nfunction buildContractorBankAccountFieldsMetadata(\n base: Record<keyof ContractorBankAccountFormData, FieldMetadata>,\n) {\n const accountTypeOptions = ACCOUNT_TYPES.map(value => ({ value, label: value }))\n return {\n name: base.name,\n routingNumber: base.routingNumber,\n accountNumber: base.accountNumber,\n accountType: withOptions<ContractorAccountType>(base.accountType, accountTypeOptions, [\n ...ACCOUNT_TYPES,\n ]),\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for creating a contractor's bank account.\n *\n * @remarks\n * Captures the account nickname, routing number, account number, and account\n * type. Creating a bank account also updates the contractor's payment method to\n * Direct Deposit on the Gusto API as a side-effect, so the Direct Deposit path\n * needs only this submit — no separate payment method update.\n *\n * When the contractor already has a bank account on file, the account number\n * field is pre-filled with the masked token the API returns (e.g. \"XXXX1207\").\n * The API requires `account_number` on every write and treats that exact masked\n * value as \"keep the existing account,\" so submitting it unchanged preserves the\n * account while still applying any name/routing/type edits; typing a real number\n * replaces it.\n *\n * @param props - See {@link UseContractorBankAccountFormProps}.\n * @returns A loading-state result while data loads, or a {@link UseContractorBankAccountFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import { useContractorBankAccountForm, SDKFormProvider } from '@gusto/embedded-react-sdk'\n *\n * function AddBankAccount({ contractorId }: { contractorId: string }) {\n * const bankForm = useContractorBankAccountForm({ contractorId })\n *\n * if (bankForm.isLoading) return null\n * const { Fields } = bankForm.form\n *\n * return (\n * <SDKFormProvider formHookResult={bankForm}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void bankForm.actions.onSubmit()\n * }}\n * >\n * <Fields.Name label=\"Account nickname\" />\n * <Fields.RoutingNumber label=\"Routing number\" />\n * <Fields.AccountNumber label=\"Account number\" />\n * <Fields.AccountType label=\"Account type\" />\n * <button type=\"submit\" disabled={bankForm.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useContractorBankAccountForm({\n contractorId,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseContractorBankAccountFormProps): HookLoadingResult | UseContractorBankAccountFormReady {\n const bankAccountsQuery = useContractorPaymentMethodGetBankAccounts({\n contractorUuid: contractorId,\n })\n const bankAccount = bankAccountsQuery.data?.contractorBankAccountList?.[0] ?? undefined\n\n const existingAccountNumberMask = bankAccount?.hiddenAccountNumber ?? undefined\n\n const [schema, metadataConfig] = useMemo(\n () =>\n createContractorBankAccountSchema({\n optionalFieldsToRequire,\n existingAccountNumberMask,\n }),\n [optionalFieldsToRequire, existingAccountNumberMask],\n )\n\n // The account number is seeded with the masked token the API returns (e.g.\n // \"XXXX1207\"). The bank account API requires account_number on every write\n // and treats that exact masked value as \"keep the existing account,\" so\n // submitting it unchanged preserves the account; typing a new number replaces it.\n const resolvedDefaults: ContractorBankAccountFormData = useMemo(\n () => ({\n name: partnerDefaults?.name ?? bankAccount?.name ?? '',\n routingNumber: partnerDefaults?.routingNumber ?? bankAccount?.routingNumber ?? '',\n accountNumber: partnerDefaults?.accountNumber ?? existingAccountNumberMask ?? '',\n accountType: (partnerDefaults?.accountType ??\n bankAccount?.accountType ??\n 'Checking') as ContractorAccountType,\n }),\n [partnerDefaults, bankAccount, existingAccountNumberMask],\n )\n\n const formMethods = useForm<\n ContractorBankAccountFormData,\n unknown,\n ContractorBankAccountFormOutputs\n >({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createMutation = useContractorPaymentMethodsCreateBankAccountMutation()\n const isPending = createMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('ContractorBankAccountForm')\n\n const errorHandling = composeErrorHandler([bankAccountsQuery], {\n submitError,\n setSubmitError,\n })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildContractorBankAccountFieldsMetadata(baseMetadata)\n\n const onSubmit = async (): Promise<HookSubmitResult<ContractorBankAccount> | undefined> => {\n let submitResult: HookSubmitResult<ContractorBankAccount> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: ContractorBankAccountFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const response = await createMutation.mutateAsync({\n request: {\n contractorUuid: contractorId,\n contractorBankAccountCreateRequestBody: {\n name: payload.name,\n routingNumber: payload.routingNumber,\n accountNumber: payload.accountNumber,\n accountType: payload.accountType,\n },\n },\n })\n\n if (!response.contractorBankAccount) {\n throw new SDKInternalError('Bank account creation failed')\n }\n\n submitResult = { mode: 'create' as const, data: response.contractorBankAccount }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (bankAccountsQuery.isLoading) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { bankAccount },\n status: { isPending, mode: 'create' as const },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Name: NameField,\n RoutingNumber: RoutingNumberField,\n AccountNumber: AccountNumberField,\n AccountType: AccountTypeField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useContractorBankAccountForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseContractorBankAccountFormResult =\n HookLoadingResult | UseContractorBankAccountFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useContractorBankAccountForm}.\n *\n * @public\n */\nexport type ContractorBankAccountFieldsMetadata = ReturnType<\n typeof buildContractorBankAccountFieldsMetadata\n>\n"],"names":["buildContractorBankAccountFieldsMetadata","base","accountTypeOptions","ACCOUNT_TYPES","value","withOptions","useContractorBankAccountForm","contractorId","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","bankAccountsQuery","useContractorPaymentMethodGetBankAccounts","bankAccount","existingAccountNumberMask","schema","metadataConfig","useMemo","createContractorBankAccountSchema","resolvedDefaults","formMethods","useForm","zodResolver","createMutation","useContractorPaymentMethodsCreateBankAccountMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","submitResult","resolve","data","payload","response","SDKInternalError","hookFormInternals","useHookFormInternals","NameField","RoutingNumberField","AccountNumberField","AccountTypeField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ export type ContractorAccountType = (typeof ACCOUNT_TYPES)[number];
|
|
|
36
36
|
*
|
|
37
37
|
* @public
|
|
38
38
|
*/
|
|
39
|
-
export type ContractorBankAccountFormField = "
|
|
39
|
+
export type ContractorBankAccountFormField = "accountNumber" | "accountType" | "name" | "routingNumber";
|
|
40
40
|
/**
|
|
41
41
|
* Shape of the values managed by the contractor bank account form.
|
|
42
42
|
*
|
|
@@ -27,7 +27,7 @@ export declare const PAYMENT_METHOD_TYPES: readonly ["Direct Deposit", "Check"];
|
|
|
27
27
|
*
|
|
28
28
|
* @public
|
|
29
29
|
*/
|
|
30
|
-
export type ContractorPaymentMethodFormType =
|
|
30
|
+
export type ContractorPaymentMethodFormType = "Check" | "Direct Deposit";
|
|
31
31
|
/**
|
|
32
32
|
* Field names accepted by the contractor payment method form.
|
|
33
33
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractorPaymentMethodSchema.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n buildFormSchema,\n type RequiredFieldConfig,\n} from '@/partner-hook-utils/form/buildFormSchema'\nimport { PAYMENT_METHODS } from '@/shared/constants'\n\n/**\n * Validation error codes emitted by the contractor payment method form schema.\n * Map these codes to localized copy in `validationMessages` when composing the\n * hook.\n *\n * @public\n */\nexport const ContractorPaymentMethodErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the contractor payment\n * method form schema.\n *\n * @public\n */\nexport type ContractorPaymentMethodErrorCode =\n (typeof ContractorPaymentMethodErrorCodes)[keyof typeof ContractorPaymentMethodErrorCodes]\n\n/**\n * Supported payment method type values: direct deposit and check.\n *\n * @public\n */\nexport const PAYMENT_METHOD_TYPES = [PAYMENT_METHODS.directDeposit, PAYMENT_METHODS.check] as const\n\n/**\n * Union of payment method type values that the form accepts.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormType = (typeof
|
|
1
|
+
{"version":3,"file":"contractorPaymentMethodSchema.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n buildFormSchema,\n type RequiredFieldConfig,\n} from '@/partner-hook-utils/form/buildFormSchema'\nimport { PAYMENT_METHODS } from '@/shared/constants'\n\n/**\n * Validation error codes emitted by the contractor payment method form schema.\n * Map these codes to localized copy in `validationMessages` when composing the\n * hook.\n *\n * @public\n */\nexport const ContractorPaymentMethodErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the contractor payment\n * method form schema.\n *\n * @public\n */\nexport type ContractorPaymentMethodErrorCode =\n (typeof ContractorPaymentMethodErrorCodes)[keyof typeof ContractorPaymentMethodErrorCodes]\n\n/**\n * Supported payment method type values: direct deposit and check.\n *\n * @public\n */\nexport const PAYMENT_METHOD_TYPES = [PAYMENT_METHODS.directDeposit, PAYMENT_METHODS.check] as const\n\n/**\n * Union of payment method type values that the form accepts.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormType = (typeof PAYMENT_METHODS)[keyof typeof PAYMENT_METHODS]\n\nconst fieldValidators = {\n type: z.enum(PAYMENT_METHOD_TYPES),\n}\n\n/**\n * Field names accepted by the contractor payment method form.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormField = keyof typeof fieldValidators\n\n/**\n * Shape of the values managed by the contractor payment method form.\n *\n * @public\n * @interface\n */\nexport type ContractorPaymentMethodFormData = {\n [K in keyof typeof fieldValidators]: z.infer<(typeof fieldValidators)[K]>\n}\n\n/**\n * Shape of the validated values produced by the contractor payment method form\n * on submit. Internal seam between the form's input and parsed-output types; the\n * two coincide today, and partners consume the parsed values through\n * `form.getFormSubmissionValues` (typed as the form-data shape).\n *\n * @internal\n */\nexport type ContractorPaymentMethodFormOutputs = ContractorPaymentMethodFormData\n\nconst requiredFieldsConfig = {} satisfies RequiredFieldConfig<typeof fieldValidators>\n\n/** @internal */\nexport function createContractorPaymentMethodSchema() {\n return buildFormSchema(fieldValidators, {\n requiredFieldsConfig,\n requiredErrorCode: ContractorPaymentMethodErrorCodes.REQUIRED,\n mode: 'update',\n })\n}\n"],"names":["ContractorPaymentMethodErrorCodes","PAYMENT_METHOD_TYPES","PAYMENT_METHODS","fieldValidators","z","requiredFieldsConfig","createContractorPaymentMethodSchema","buildFormSchema"],"mappings":";;;AAcO,MAAMA,IAAoC;AAAA,EAC/C,UAAU;AACZ,GAgBaC,IAAuB,CAACC,EAAgB,eAAeA,EAAgB,KAAK,GASnFC,IAAkB;AAAA,EACtB,MAAMC,EAAE,KAAKH,CAAoB;AACnC,GA6BMI,IAAuB,CAAA;AAGtB,SAASC,IAAsC;AACpD,SAAOC,EAAgBJ,GAAiB;AAAA,IACtC,sBAAAE;AAAA,IACA,mBAAmBL,EAAkC;AAAA,IACrD,MAAM;AAAA,EAAA,CACP;AACH;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentType } from 'react';
|
|
2
2
|
import { UseFormProps } from 'react-hook-form';
|
|
3
|
-
import { ContractorPaymentMethod } from '@gusto/embedded-api
|
|
4
|
-
import { ContractorPaymentMethodFormData } from './contractorPaymentMethodSchema';
|
|
3
|
+
import { ContractorPaymentMethod } from '@gusto/embedded-api/models/components/contractorpaymentmethod';
|
|
4
|
+
import { ContractorPaymentMethodFormData, ContractorPaymentMethodFormType } from './contractorPaymentMethodSchema';
|
|
5
5
|
import { TypeFieldProps } from './fields';
|
|
6
6
|
import { BaseFormHookReady, FieldMetadata, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
|
|
7
7
|
/**
|
|
@@ -114,5 +114,5 @@ export type UseContractorPaymentMethodFormResult = HookLoadingResult | UseContra
|
|
|
114
114
|
*
|
|
115
115
|
* @public
|
|
116
116
|
*/
|
|
117
|
-
export type ContractorPaymentMethodFieldsMetadata = { type: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<
|
|
117
|
+
export type ContractorPaymentMethodFieldsMetadata = { type: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<ContractorPaymentMethodFormType>; };
|
|
118
118
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useMemo as y } from "react";
|
|
2
2
|
import { useForm as V, useWatch as k } from "react-hook-form";
|
|
3
3
|
import { zodResolver as A } from "@hookform/resolvers/zod";
|
|
4
|
-
import { useContractorPaymentMethodGet as L } from "@gusto/embedded-api
|
|
5
|
-
import { useContractorPaymentMethodUpdateMutation as R } from "@gusto/embedded-api
|
|
4
|
+
import { useContractorPaymentMethodGet as L } from "@gusto/embedded-api/react-query/contractorPaymentMethodGet";
|
|
5
|
+
import { useContractorPaymentMethodUpdateMutation as R } from "@gusto/embedded-api/react-query/contractorPaymentMethodUpdate";
|
|
6
6
|
import { createContractorPaymentMethodSchema as U, PAYMENT_METHOD_TYPES as l } from "./contractorPaymentMethodSchema.js";
|
|
7
7
|
import { TypeField as Y } from "./fields.js";
|
|
8
8
|
import { useDeriveFieldsMetadata as _ } from "../../../../../partner-hook-utils/form/useDeriveFieldsMetadata.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContractorPaymentMethodForm.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm, useWatch } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { ContractorPaymentMethod } from '@gusto/embedded-api-v-2026-02-01/models/components/contractorpaymentmethod'\nimport { useContractorPaymentMethodGet } from '@gusto/embedded-api-v-2026-02-01/react-query/contractorPaymentMethodGet'\nimport { useContractorPaymentMethodUpdateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/contractorPaymentMethodUpdate'\nimport {\n createContractorPaymentMethodSchema,\n type ContractorPaymentMethodFormData,\n type ContractorPaymentMethodFormOutputs,\n type ContractorPaymentMethodFormType,\n PAYMENT_METHOD_TYPES,\n} from './contractorPaymentMethodSchema'\nimport type { TypeFieldProps } from './fields'\nimport { TypeField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { PAYMENT_METHODS } from '@/shared/constants'\n\n/**\n * Props for {@link useContractorPaymentMethodForm}.\n *\n * @public\n */\nexport interface UseContractorPaymentMethodFormProps {\n /** Contractor whose payment method is being edited. */\n contractorId: string\n /** Pre-fill form values. Server data (the current payment method) is used when no override is supplied. */\n defaultValues?: Partial<ContractorPaymentMethodFormData>\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useContractorPaymentMethodForm} on `form.Fields`.\n *\n * @public\n */\nexport interface ContractorPaymentMethodFormFields {\n /**\n * Radio group bound to `type`. Selects whether the contractor is paid by\n * Direct Deposit or Check. Supply `getOptionLabel` to translate the option\n * labels.\n */\n Type: ComponentType<TypeFieldProps>\n}\n\n/**\n * Ready-state return value of {@link useContractorPaymentMethodForm}.\n *\n * @public\n */\nexport interface UseContractorPaymentMethodFormReady extends BaseFormHookReady<\n ContractorPaymentMethodFieldsMetadata,\n ContractorPaymentMethodFormData,\n ContractorPaymentMethodFormFields\n> {\n /** The contractor's current payment method, loaded from the API. */\n data: {\n paymentMethod: ContractorPaymentMethod\n }\n /**\n * `isPending` reflects the in-flight update mutation; `mode` is always\n * `'update'`. `isDirectDeposit` reflects the currently selected type so a\n * composing component can render bank fields and decide whether to submit the\n * bank-account form.\n */\n status: { isPending: boolean; mode: 'update'; isDirectDeposit: boolean }\n /** Submit the form. Returns the updated payment method on success or `undefined` on validation/mutation failure. */\n actions: {\n onSubmit: () => Promise<HookSubmitResult<ContractorPaymentMethod> | undefined>\n }\n}\n\n/** @internal */\nfunction buildContractorPaymentMethodFieldsMetadata(\n base: Record<keyof ContractorPaymentMethodFormData, FieldMetadata>,\n) {\n const typeOptions = PAYMENT_METHOD_TYPES.map(value => ({ value, label: value }))\n return {\n type: withOptions<ContractorPaymentMethodFormType>(base.type, typeOptions, [\n ...PAYMENT_METHOD_TYPES,\n ]),\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for managing a contractor's payment method type.\n *\n * @remarks\n * Owns only the payment method `type` selection (Direct Deposit or Check) and,\n * on submit, updates the contractor's payment method via `PUT`. Always operates\n * in update mode — every contractor has a payment method, defaulting to Check.\n *\n * The bank account itself is managed by the separate `useContractorBankAccountForm`\n * hook. On the Direct Deposit path the bank-account `POST` updates the payment\n * method as a server side-effect, so a composing component submits the bank form\n * instead of this hook; this hook's `onSubmit` is used for the Check path.\n * `status.isDirectDeposit` lets the component drive that branching.\n *\n * @param props - See {@link UseContractorPaymentMethodFormProps}.\n * @returns A loading-state result while data loads, or a {@link UseContractorPaymentMethodFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import { useContractorPaymentMethodForm, SDKFormProvider } from '@gusto/embedded-react-sdk'\n *\n * function PaymentTypeScreen({ contractorId }: { contractorId: string }) {\n * const paymentMethod = useContractorPaymentMethodForm({ contractorId })\n *\n * if (paymentMethod.isLoading) return null\n * const { Fields } = paymentMethod.form\n *\n * return (\n * <SDKFormProvider formHookResult={paymentMethod}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void paymentMethod.actions.onSubmit()\n * }}\n * >\n * <Fields.Type label=\"Select payment method\" />\n * <button type=\"submit\" disabled={paymentMethod.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useContractorPaymentMethodForm({\n contractorId,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseContractorPaymentMethodFormProps): HookLoadingResult | UseContractorPaymentMethodFormReady {\n const paymentMethodQuery = useContractorPaymentMethodGet({ contractorUuid: contractorId })\n const paymentMethod = paymentMethodQuery.data?.contractorPaymentMethod\n\n const [schema, metadataConfig] = useMemo(() => createContractorPaymentMethodSchema(), [])\n\n const resolvedDefaults: ContractorPaymentMethodFormData = useMemo(\n () => ({\n type: (partnerDefaults?.type ??\n paymentMethod?.type ??\n PAYMENT_METHODS.check) as ContractorPaymentMethodFormType,\n }),\n [partnerDefaults, paymentMethod],\n )\n\n const formMethods = useForm<\n ContractorPaymentMethodFormData,\n unknown,\n ContractorPaymentMethodFormOutputs\n >({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const watchedType = useWatch({ control: formMethods.control, name: 'type' })\n const isDirectDeposit = watchedType === PAYMENT_METHODS.directDeposit\n\n const updatePaymentMethodMutation = useContractorPaymentMethodUpdateMutation()\n const isPending = updatePaymentMethodMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('ContractorPaymentMethodForm')\n\n const errorHandling = composeErrorHandler([paymentMethodQuery], {\n submitError,\n setSubmitError,\n })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildContractorPaymentMethodFieldsMetadata(baseMetadata)\n\n const onSubmit = async (): Promise<HookSubmitResult<ContractorPaymentMethod> | undefined> => {\n if (!paymentMethod) {\n throw new SDKInternalError('Cannot submit payment method form before data is loaded')\n }\n const version = paymentMethod.version as string\n let submitResult: HookSubmitResult<ContractorPaymentMethod> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: ContractorPaymentMethodFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const updateResponse = await updatePaymentMethodMutation.mutateAsync({\n request: {\n contractorUuid: contractorId,\n requestBody: { type: payload.type, version },\n },\n })\n\n if (!updateResponse.contractorPaymentMethod) {\n throw new SDKInternalError('Payment method update failed')\n }\n\n submitResult = { mode: 'update' as const, data: updateResponse.contractorPaymentMethod }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (paymentMethodQuery.isLoading || !paymentMethod) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { paymentMethod },\n status: { isPending, mode: 'update' as const, isDirectDeposit },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Type: TypeField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useContractorPaymentMethodForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseContractorPaymentMethodFormResult =\n HookLoadingResult | UseContractorPaymentMethodFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useContractorPaymentMethodForm}.\n *\n * @public\n */\nexport type ContractorPaymentMethodFieldsMetadata = ReturnType<\n typeof buildContractorPaymentMethodFieldsMetadata\n>\n"],"names":["buildContractorPaymentMethodFieldsMetadata","base","typeOptions","PAYMENT_METHOD_TYPES","value","withOptions","useContractorPaymentMethodForm","contractorId","partnerDefaults","validationMode","shouldFocusError","paymentMethodQuery","useContractorPaymentMethodGet","paymentMethod","schema","metadataConfig","useMemo","createContractorPaymentMethodSchema","resolvedDefaults","PAYMENT_METHODS","formMethods","useForm","zodResolver","isDirectDeposit","useWatch","updatePaymentMethodMutation","useContractorPaymentMethodUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","SDKInternalError","version","submitResult","resolve","data","payload","updateResponse","hookFormInternals","useHookFormInternals","TypeField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useContractorPaymentMethodForm.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm, useWatch } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { ContractorPaymentMethod } from '@gusto/embedded-api/models/components/contractorpaymentmethod'\nimport { useContractorPaymentMethodGet } from '@gusto/embedded-api/react-query/contractorPaymentMethodGet'\nimport { useContractorPaymentMethodUpdateMutation } from '@gusto/embedded-api/react-query/contractorPaymentMethodUpdate'\nimport {\n createContractorPaymentMethodSchema,\n type ContractorPaymentMethodFormData,\n type ContractorPaymentMethodFormOutputs,\n type ContractorPaymentMethodFormType,\n PAYMENT_METHOD_TYPES,\n} from './contractorPaymentMethodSchema'\nimport type { TypeFieldProps } from './fields'\nimport { TypeField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { PAYMENT_METHODS } from '@/shared/constants'\n\n/**\n * Props for {@link useContractorPaymentMethodForm}.\n *\n * @public\n */\nexport interface UseContractorPaymentMethodFormProps {\n /** Contractor whose payment method is being edited. */\n contractorId: string\n /** Pre-fill form values. Server data (the current payment method) is used when no override is supplied. */\n defaultValues?: Partial<ContractorPaymentMethodFormData>\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useContractorPaymentMethodForm} on `form.Fields`.\n *\n * @public\n */\nexport interface ContractorPaymentMethodFormFields {\n /**\n * Radio group bound to `type`. Selects whether the contractor is paid by\n * Direct Deposit or Check. Supply `getOptionLabel` to translate the option\n * labels.\n */\n Type: ComponentType<TypeFieldProps>\n}\n\n/**\n * Ready-state return value of {@link useContractorPaymentMethodForm}.\n *\n * @public\n */\nexport interface UseContractorPaymentMethodFormReady extends BaseFormHookReady<\n ContractorPaymentMethodFieldsMetadata,\n ContractorPaymentMethodFormData,\n ContractorPaymentMethodFormFields\n> {\n /** The contractor's current payment method, loaded from the API. */\n data: {\n paymentMethod: ContractorPaymentMethod\n }\n /**\n * `isPending` reflects the in-flight update mutation; `mode` is always\n * `'update'`. `isDirectDeposit` reflects the currently selected type so a\n * composing component can render bank fields and decide whether to submit the\n * bank-account form.\n */\n status: { isPending: boolean; mode: 'update'; isDirectDeposit: boolean }\n /** Submit the form. Returns the updated payment method on success or `undefined` on validation/mutation failure. */\n actions: {\n onSubmit: () => Promise<HookSubmitResult<ContractorPaymentMethod> | undefined>\n }\n}\n\n/** @internal */\nfunction buildContractorPaymentMethodFieldsMetadata(\n base: Record<keyof ContractorPaymentMethodFormData, FieldMetadata>,\n) {\n const typeOptions = PAYMENT_METHOD_TYPES.map(value => ({ value, label: value }))\n return {\n type: withOptions<ContractorPaymentMethodFormType>(base.type, typeOptions, [\n ...PAYMENT_METHOD_TYPES,\n ]),\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for managing a contractor's payment method type.\n *\n * @remarks\n * Owns only the payment method `type` selection (Direct Deposit or Check) and,\n * on submit, updates the contractor's payment method via `PUT`. Always operates\n * in update mode — every contractor has a payment method, defaulting to Check.\n *\n * The bank account itself is managed by the separate `useContractorBankAccountForm`\n * hook. On the Direct Deposit path the bank-account `POST` updates the payment\n * method as a server side-effect, so a composing component submits the bank form\n * instead of this hook; this hook's `onSubmit` is used for the Check path.\n * `status.isDirectDeposit` lets the component drive that branching.\n *\n * @param props - See {@link UseContractorPaymentMethodFormProps}.\n * @returns A loading-state result while data loads, or a {@link UseContractorPaymentMethodFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import { useContractorPaymentMethodForm, SDKFormProvider } from '@gusto/embedded-react-sdk'\n *\n * function PaymentTypeScreen({ contractorId }: { contractorId: string }) {\n * const paymentMethod = useContractorPaymentMethodForm({ contractorId })\n *\n * if (paymentMethod.isLoading) return null\n * const { Fields } = paymentMethod.form\n *\n * return (\n * <SDKFormProvider formHookResult={paymentMethod}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void paymentMethod.actions.onSubmit()\n * }}\n * >\n * <Fields.Type label=\"Select payment method\" />\n * <button type=\"submit\" disabled={paymentMethod.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useContractorPaymentMethodForm({\n contractorId,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseContractorPaymentMethodFormProps): HookLoadingResult | UseContractorPaymentMethodFormReady {\n const paymentMethodQuery = useContractorPaymentMethodGet({ contractorUuid: contractorId })\n const paymentMethod = paymentMethodQuery.data?.contractorPaymentMethod\n\n const [schema, metadataConfig] = useMemo(() => createContractorPaymentMethodSchema(), [])\n\n const resolvedDefaults: ContractorPaymentMethodFormData = useMemo(\n () => ({\n type: (partnerDefaults?.type ??\n paymentMethod?.type ??\n PAYMENT_METHODS.check) as ContractorPaymentMethodFormType,\n }),\n [partnerDefaults, paymentMethod],\n )\n\n const formMethods = useForm<\n ContractorPaymentMethodFormData,\n unknown,\n ContractorPaymentMethodFormOutputs\n >({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const watchedType = useWatch({ control: formMethods.control, name: 'type' })\n const isDirectDeposit = watchedType === PAYMENT_METHODS.directDeposit\n\n const updatePaymentMethodMutation = useContractorPaymentMethodUpdateMutation()\n const isPending = updatePaymentMethodMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('ContractorPaymentMethodForm')\n\n const errorHandling = composeErrorHandler([paymentMethodQuery], {\n submitError,\n setSubmitError,\n })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildContractorPaymentMethodFieldsMetadata(baseMetadata)\n\n const onSubmit = async (): Promise<HookSubmitResult<ContractorPaymentMethod> | undefined> => {\n if (!paymentMethod) {\n throw new SDKInternalError('Cannot submit payment method form before data is loaded')\n }\n const version = paymentMethod.version as string\n let submitResult: HookSubmitResult<ContractorPaymentMethod> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: ContractorPaymentMethodFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const updateResponse = await updatePaymentMethodMutation.mutateAsync({\n request: {\n contractorUuid: contractorId,\n requestBody: { type: payload.type, version },\n },\n })\n\n if (!updateResponse.contractorPaymentMethod) {\n throw new SDKInternalError('Payment method update failed')\n }\n\n submitResult = { mode: 'update' as const, data: updateResponse.contractorPaymentMethod }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (paymentMethodQuery.isLoading || !paymentMethod) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { paymentMethod },\n status: { isPending, mode: 'update' as const, isDirectDeposit },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Type: TypeField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useContractorPaymentMethodForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseContractorPaymentMethodFormResult =\n HookLoadingResult | UseContractorPaymentMethodFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useContractorPaymentMethodForm}.\n *\n * @public\n */\nexport type ContractorPaymentMethodFieldsMetadata = ReturnType<\n typeof buildContractorPaymentMethodFieldsMetadata\n>\n"],"names":["buildContractorPaymentMethodFieldsMetadata","base","typeOptions","PAYMENT_METHOD_TYPES","value","withOptions","useContractorPaymentMethodForm","contractorId","partnerDefaults","validationMode","shouldFocusError","paymentMethodQuery","useContractorPaymentMethodGet","paymentMethod","schema","metadataConfig","useMemo","createContractorPaymentMethodSchema","resolvedDefaults","PAYMENT_METHODS","formMethods","useForm","zodResolver","isDirectDeposit","useWatch","updatePaymentMethodMutation","useContractorPaymentMethodUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","SDKInternalError","version","submitResult","resolve","data","payload","updateResponse","hookFormInternals","useHookFormInternals","TypeField","createGetFormSubmissionValues"],"mappings":";;;;;;;;;;;;;;;AA2FA,SAASA,EACPC,GACA;AACA,QAAMC,IAAcC,EAAqB,IAAI,CAAAC,OAAU,EAAE,OAAAA,GAAO,OAAOA,IAAQ;AAC/E,SAAO;AAAA,IACL,MAAMC,EAA6CJ,EAAK,MAAMC,GAAa;AAAA,MACzE,GAAGC;AAAA,IAAA,CACJ;AAAA,EAAA;AAEL;AA8CO,SAASG,GAA+B;AAAA,EAC7C,cAAAC;AAAA,EACA,eAAeC;AAAA,EACf,gBAAAC,IAAiB;AAAA,EACjB,kBAAAC,IAAmB;AACrB,GAAiG;AAC/F,QAAMC,IAAqBC,EAA8B,EAAE,gBAAgBL,GAAc,GACnFM,IAAgBF,EAAmB,MAAM,yBAEzC,CAACG,GAAQC,CAAc,IAAIC,EAAQ,MAAMC,EAAA,GAAuC,EAAE,GAElFC,IAAoDF;AAAA,IACxD,OAAO;AAAA,MACL,MAAOR,GAAiB,QACtBK,GAAe,QACfM,EAAgB;AAAA,IAAA;AAAA,IAEpB,CAACX,GAAiBK,CAAa;AAAA,EAAA,GAG3BO,IAAcC,EAIlB;AAAA,IACA,UAAUC,EAAYR,CAAM;AAAA,IAC5B,MAAML;AAAA,IACN,kBAAAC;AAAA,IACA,eAAeQ;AAAA,IACf,QAAQA;AAAA,IACR,cAAc,EAAE,iBAAiB,GAAA;AAAA,EAAK,CACvC,GAGKK,IADcC,EAAS,EAAE,SAASJ,EAAY,SAAS,MAAM,QAAQ,MACnCD,EAAgB,eAElDM,IAA8BC,EAAA,GAC9BC,IAAYF,EAA4B,WAExC;AAAA,IACJ,mBAAAG;AAAA,IACA,OAAOC;AAAA,IACP,UAAUC;AAAA,EAAA,IACRC,EAAc,6BAA6B,GAEzCC,IAAgBC,EAAoB,CAACtB,CAAkB,GAAG;AAAA,IAC9D,aAAAkB;AAAA,IACA,gBAAAC;AAAA,EAAA,CACD,GAEKI,IAAeC,EAAwBpB,GAAgBK,EAAY,OAAO,GAC1EgB,IAAiBpC,EAA2CkC,CAAY,GAExEG,IAAW,YAA4E;AAC3F,QAAI,CAACxB;AACH,YAAM,IAAIyB,EAAiB,yDAAyD;AAEtF,UAAMC,IAAU1B,EAAc;AAC9B,QAAI2B;AAEJ,iBAAM,IAAI,QAAc,CAAAC,MAAW;AACjC,MAAKrB,EAAY;AAAA,QACf,OAAOsB,MAA6C;AAClD,gBAAMd,EAAkBc,GAAM,OAAMC,MAAW;AAC7C,kBAAMC,IAAiB,MAAMnB,EAA4B,YAAY;AAAA,cACnE,SAAS;AAAA,gBACP,gBAAgBlB;AAAA,gBAChB,aAAa,EAAE,MAAMoC,EAAQ,MAAM,SAAAJ,EAAA;AAAA,cAAQ;AAAA,YAC7C,CACD;AAED,gBAAI,CAACK,EAAe;AAClB,oBAAM,IAAIN,EAAiB,8BAA8B;AAG3D,YAAAE,IAAe,EAAE,MAAM,UAAmB,MAAMI,EAAe,wBAAA;AAAA,UACjE,CAAC,GACDH,EAAA;AAAA,QACF;AAAA,QACA,MAAM;AACJ,UAAAA,EAAA;AAAA,QACF;AAAA,MAAA,EACF;AAAA,IACF,CAAC,GAEMD;AAAA,EACT,GAEMK,IAAoBC,EAAqB1B,CAAW;AAE1D,SAAIT,EAAmB,aAAa,CAACE,IAC5B,EAAE,WAAW,IAAe,eAAAmB,EAAA,IAG9B;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,eAAAnB,EAAA;AAAA,IACR,QAAQ,EAAE,WAAAc,GAAW,MAAM,UAAmB,iBAAAJ,EAAA;AAAA,IAC9C,SAAS,EAAE,UAAAc,EAAA;AAAA,IACX,eAAAL;AAAA,IACA,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,MAAMe;AAAA,MAAA;AAAA,MAER,gBAAAX;AAAA,MACA,mBAAAS;AAAA,MACA,yBAAyBG,EAA8B5B,GAAaN,CAAM;AAAA,IAAA;AAAA,EAC5E;AAEJ;"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx as h, jsxs as Q, Fragment as X } from "react/jsx-runtime";
|
|
2
|
-
import { useContractorsListSuspense as Z } from "@gusto/embedded-api
|
|
3
|
-
import { useContractorPaymentGroupsCreateMutation as $ } from "@gusto/embedded-api
|
|
4
|
-
import { useContractorPaymentGroupsPreviewMutation as tt } from "@gusto/embedded-api
|
|
2
|
+
import { useContractorsListSuspense as Z } from "@gusto/embedded-api/react-query/contractorsList";
|
|
3
|
+
import { useContractorPaymentGroupsCreateMutation as $ } from "@gusto/embedded-api/react-query/contractorPaymentGroupsCreate";
|
|
4
|
+
import { useContractorPaymentGroupsPreviewMutation as tt } from "@gusto/embedded-api/react-query/contractorPaymentGroupsPreview";
|
|
5
5
|
import { useState as m, useRef as et, useEffect as ot, useMemo as G } from "react";
|
|
6
6
|
import rt from "dompurify";
|
|
7
|
-
import { RFCDate as V } from "@gusto/embedded-api
|
|
7
|
+
import { RFCDate as V } from "@gusto/embedded-api/types/rfcdate";
|
|
8
8
|
import { useForm as nt } from "react-hook-form";
|
|
9
9
|
import { zodResolver as st } from "@hookform/resolvers/zod";
|
|
10
10
|
import { useTranslation as at } from "react-i18next";
|
|
11
|
-
import { useBankAccountsGet as ct } from "@gusto/embedded-api
|
|
11
|
+
import { useBankAccountsGet as ct } from "@gusto/embedded-api/react-query/bankAccountsGet";
|
|
12
12
|
import { CreatePaymentPresentation as it } from "./CreatePaymentPresentation.js";
|
|
13
13
|
import { EditContractorPaymentPresentation as ut } from "./EditContractorPaymentPresentation.js";
|
|
14
14
|
import { createEditContractorPaymentFormSchema as mt } from "./EditContractorPaymentFormSchema.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreatePayment.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api-v-2026-02-01/react-query/contractorsList'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/contractorPaymentGroupsCreate'\nimport type {\n ContractorPayments,\n PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n SubmissionBlockers,\n} from '@gusto/embedded-api-v-2026-02-01/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/contractorPaymentGroupsPreview'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api-v-2026-02-01/types/rfcdate'\nimport { useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTranslation } from 'react-i18next'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api-v-2026-02-01/models/components/contractorpaymentgrouppreview'\nimport { useBankAccountsGet } from '@gusto/embedded-api-v-2026-02-01/react-query/bankAccountsGet'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { EditContractorPaymentPresentation } from './EditContractorPaymentPresentation'\nimport {\n createEditContractorPaymentFormSchema,\n type EditContractorPaymentFormValues,\n} from './EditContractorPaymentFormSchema'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport { addBusinessDays } from '@/helpers/dateFormatting'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n payrollSubmitHandler,\n type ApiPayrollBlocker,\n} from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nfunction formatLocalDate(date: Date): string {\n return [\n String(date.getFullYear()).padStart(4, '0'),\n String(date.getMonth() + 1).padStart(2, '0'),\n String(date.getDate()).padStart(2, '0'),\n ].join('-')\n}\n\nfunction calculateInitialPaymentDate(speedDays: number): string {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n return formatLocalDate(addBusinessDays(today, speedDays))\n}\n\n/**\n * Props for {@link CreatePayment}.\n *\n * @public\n */\nexport interface CreatePaymentProps extends BaseComponentInterface<'Contractor.Payments.CreatePayment'> {\n /** UUID of the company for which to create a contractor payment group. */\n companyId: string\n}\n\n/**\n * Form for creating a contractor payment group, including date selection, per-contractor edits, preview, and submission blockers.\n *\n * @remarks\n * Active, fully onboarded contractors are listed for the given company. Hours and bonuses apply to hourly contractors; wages apply to fixed contractors; reimbursements apply to both. The form previews the payment group before final submission and surfaces Fast ACH submission blockers when applicable.\n *\n * Features:\n *\n * - **Payment date selection** — choose the payment date; a notice shows the resulting payment speed.\n * - **Per-contractor editing** — edit hours and bonus (hourly contractors), wage (fixed contractors), and reimbursement (all) in a modal, with a running total.\n * - **Payment method** — choose Check or Direct Deposit per contractor.\n * - **Live totals** — wage, bonus, reimbursement, and overall totals update as amounts change.\n * - **Preview before submit** — review per-contractor amounts, debit amount, debit account, debit date, contractor pay date, and the submission deadline before finalizing.\n * - **Submission blockers** — Fast ACH blockers surface inline with selectable unblock options (wire transfer or slower direct deposit); submission stays disabled until every blocker is resolved.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/payments/edit` | The edit modal was opened for a contractor. | — |\n * | `contractor/payments/update` | A contractor's payment values were updated locally. | The updated form values (hours, wage, bonus, reimbursement, payment method, etc.). |\n * | `contractor/payments/preview` | The preview API call succeeded. | The contractor payment group preview response. |\n * | `contractor/payments/backToEdit` | The user returned from preview to continue editing. | — |\n * | `contractor/payments/created` | The payment group was successfully created. | The created contractor payment group response. |\n * | `contractor/payments/rfi/respond` | The user clicked to respond to a payment blocker. | — |\n *\n * @param props - Component props including the company identifier and event handler.\n * @returns The rendered create-payment form, preview, and edit modal.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function CreateContractorPayment() {\n * return (\n * <ContractorManagement.CreatePayment\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function CreatePayment(props: CreatePaymentProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.CreatePayment\">\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ companyId, dictionary, onEvent }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const [isModalOpen, setIsModalOpen] = useState(false)\n const { baseSubmitHandler } = useBase()\n const [alerts, setAlerts] = useState<Record<string, InternalAlert>>({})\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreatingContractorPaymentGroup } =\n useContractorPaymentGroupsCreateMutation()\n const {\n mutateAsync: previewContractorPaymentGroup,\n isPending: isPreviewingContractorPaymentGroup,\n } = useContractorPaymentGroupsPreviewMutation()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.contractors || []).filter(\n contractor =>\n contractor.isActive &&\n contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED,\n )\n const { data: bankAccounts } = useBankAccountsGet({ companyId })\n const { paymentSpeed, paymentSpeedDays } = useCompanyPaymentSpeed(companyId)\n const bankAccount = bankAccounts?.companyBankAccounts?.[0]\n\n const [paymentDate, setPaymentDate] = useState(calculateInitialPaymentDate(paymentSpeedDays))\n const hasInitializedPaymentDateRef = useRef(false)\n\n useEffect(() => {\n if (paymentSpeed && !hasInitializedPaymentDateRef.current) {\n setPaymentDate(calculateInitialPaymentDate(paymentSpeedDays))\n hasInitializedPaymentDateRef.current = true\n }\n }, [paymentSpeed, paymentSpeedDays])\n\n const initialContractorPayments: (ContractorPayments & { isTouched: boolean })[] = useMemo(\n () =>\n contractors.map(contractor => {\n const paymentMethod = contractor.paymentMethod ? contractor.paymentMethod : 'Direct Deposit'\n\n return {\n contractorUuid: contractor.uuid,\n paymentMethod,\n wage: '0',\n hours: '0',\n bonus: '0',\n reimbursement: '0',\n isTouched: false,\n }\n }),\n [contractors],\n )\n const [virtualContractorPayments, setVirtualContractorPayments] =\n useState(initialContractorPayments)\n const totals = useMemo(\n () =>\n virtualContractorPayments.reduce(\n (acc, payment) => {\n const contractor = contractors.find(c => c.uuid === payment.contractorUuid)\n const isHourly = contractor?.wageType === 'Hourly'\n const hours = Number(payment.hours || '0')\n const wage = Number(payment.wage || '0')\n const bonus = Number(payment.bonus || '0')\n const reimbursement = Number(payment.reimbursement || '0')\n const hourlyAmount = isHourly ? hours * Number(contractor.hourlyRate || '0') : 0\n const fixedWage = isHourly ? 0 : wage\n\n return {\n wage: acc.wage + fixedWage,\n bonus: acc.bonus + bonus,\n reimbursement: acc.reimbursement + reimbursement,\n total: acc.total + hourlyAmount + fixedWage + bonus + reimbursement,\n }\n },\n { wage: 0, bonus: 0, reimbursement: 0, total: 0 },\n ),\n [virtualContractorPayments, contractors],\n )\n\n const formMethods = useForm<EditContractorPaymentFormValues>({\n resolver: zodResolver(createEditContractorPaymentFormSchema()),\n defaultValues: {\n wageType: 'Hourly',\n hours: 0,\n wage: 0,\n bonus: 0,\n reimbursement: 0,\n paymentMethod: 'Direct Deposit',\n hourlyRate: 0,\n contractorUuid: '',\n contractorPaymentMethod: undefined,\n },\n })\n\n const onCreatePaymentGroup = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0 || !previewData?.creationToken) {\n return\n }\n const creationToken = previewData.creationToken\n\n const submissionBlockers: SubmissionBlockers[] = Object.entries(selectedUnblockOptions).map(\n ([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n }),\n )\n\n const requestBody: PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody = {\n checkDate: new RFCDate(paymentDate),\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n creationToken,\n ...(submissionBlockers.length > 0 && { submissionBlockers }),\n }\n\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CREATED, response.contractorPaymentGroup || {})\n })\n }\n\n const onUnblockOptionChange = (blockerType: string, value: string) => {\n setSelectedUnblockOptions(prev => ({\n ...prev,\n [blockerType]: value,\n }))\n }\n const onEditContractor = (contractorUuid: string) => {\n const contractor = contractors.find(contractor => contractor.uuid === contractorUuid)\n const contractorPayment = virtualContractorPayments.find(\n payment => payment.contractorUuid === contractorUuid,\n )\n\n const rawPaymentMethod = contractorPayment?.paymentMethod || 'Direct Deposit'\n const sanitizedPaymentMethod = ['Check', 'Direct Deposit'].includes(rawPaymentMethod)\n ? (rawPaymentMethod as 'Check' | 'Direct Deposit')\n : 'Check'\n\n formMethods.reset(\n {\n wageType: contractor?.wageType || 'Hourly',\n hours: Number(contractorPayment?.hours || '0'),\n wage: Number(contractorPayment?.wage || '0'),\n bonus: Number(contractorPayment?.bonus || '0'),\n reimbursement: Number(contractorPayment?.reimbursement || '0'),\n paymentMethod: sanitizedPaymentMethod,\n hourlyRate: Number(contractor?.hourlyRate || '0'),\n contractorUuid: contractorUuid,\n contractorPaymentMethod: contractor?.paymentMethod || undefined,\n },\n { keepDirty: false, keepValues: false },\n )\n setAlerts({})\n setIsModalOpen(true)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n }\n\n const onEditContractorSubmit = (data: EditContractorPaymentFormValues) => {\n const currentContractor = contractors.find(c => c.uuid === data.contractorUuid)\n const currentContractorPaymentMethod = currentContractor?.paymentMethod\n\n if (!['Check', 'Direct Deposit'].includes(data.paymentMethod)) {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.unsupportedPaymentMethod'),\n })\n return\n }\n\n if (currentContractorPaymentMethod === 'Check' && data.paymentMethod === 'Direct Deposit') {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.directDepositNotAvailable'),\n })\n return\n }\n\n const hasAnyPayment =\n (data.wage ?? 0) > 0 ||\n (data.hours ?? 0) > 0 ||\n (data.bonus ?? 0) > 0 ||\n (data.reimbursement ?? 0) > 0\n\n setVirtualContractorPayments(prevPayments =>\n prevPayments.map(payment =>\n payment.contractorUuid === data.contractorUuid\n ? {\n contractorUuid: payment.contractorUuid,\n wage: String(data.wage ?? 0),\n hours: String(data.hours ?? 0),\n bonus: String(data.bonus ?? 0),\n reimbursement: String(data.reimbursement ?? 0),\n paymentMethod: data.paymentMethod,\n isTouched: hasAnyPayment,\n }\n : payment,\n ),\n )\n const displayContractor = contractors.find(\n contractor => contractor.uuid === data.contractorUuid,\n )\n const displayName = DOMPurify.sanitize(\n displayContractor?.type === 'Individual'\n ? firstLastName({\n first_name: displayContractor.firstName,\n last_name: displayContractor.lastName,\n })\n : displayContractor?.businessName || '',\n )\n setAlerts(prevAlerts => ({\n ...prevAlerts,\n [data.contractorUuid]: {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlerts(prevAlerts => {\n const { [data.contractorUuid]: _, ...rest } = prevAlerts\n return rest\n })\n },\n },\n }))\n setIsModalOpen(false)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\n }\n\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlerts({\n ...alerts,\n error: {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n },\n })\n return\n }\n setAlerts({})\n setPayrollBlockers([])\n\n const result = await payrollSubmitHandler(async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n checkDate: new RFCDate(paymentDate),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_PREVIEW, response.contractorPaymentGroupPreview)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onBackToEdit = () => {\n setPreviewData(null)\n setPayrollBlockers([])\n setSelectedUnblockOptions({})\n onEvent(componentEvents.CONTRACTOR_PAYMENT_BACK_TO_EDIT)\n }\n const onViewBlockers = () => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND)\n }\n\n return (\n <>\n {previewData && (\n <PreviewPresentation\n contractorPaymentGroup={previewData}\n contractors={contractors}\n onBackToEdit={onBackToEdit}\n onSubmit={onCreatePaymentGroup}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n bankAccount={bankAccount}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={onUnblockOptionChange}\n paymentSpeed={paymentSpeed}\n />\n )}\n {!previewData && (\n <CreatePaymentPresentation\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n onEditContractor={onEditContractor}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n paymentSpeedDays={paymentSpeedDays}\n />\n )}\n <EditContractorPaymentPresentation\n isOpen={isModalOpen}\n onClose={() => {\n setIsModalOpen(false)\n }}\n formMethods={formMethods}\n onSubmit={onEditContractorSubmit}\n contractorPaymentMethod={\n contractors.find(c => c.uuid === formMethods.getValues('contractorUuid'))\n ?.paymentMethod ?? undefined\n }\n />\n </>\n )\n}\n"],"names":["formatLocalDate","date","calculateInitialPaymentDate","speedDays","today","addBusinessDays","CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","useComponentDictionary","t","useTranslation","isModalOpen","setIsModalOpen","useState","baseSubmitHandler","useBase","alerts","setAlerts","previewData","setPreviewData","payrollBlockers","setPayrollBlockers","selectedUnblockOptions","setSelectedUnblockOptions","createContractorPaymentGroup","isCreatingContractorPaymentGroup","useContractorPaymentGroupsCreateMutation","previewContractorPaymentGroup","isPreviewingContractorPaymentGroup","useContractorPaymentGroupsPreviewMutation","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","bankAccounts","useBankAccountsGet","paymentSpeed","paymentSpeedDays","useCompanyPaymentSpeed","bankAccount","paymentDate","setPaymentDate","hasInitializedPaymentDateRef","useRef","useEffect","initialContractorPayments","useMemo","paymentMethod","virtualContractorPayments","setVirtualContractorPayments","totals","acc","payment","c","isHourly","hours","wage","bonus","reimbursement","hourlyAmount","fixedWage","formMethods","useForm","zodResolver","createEditContractorPaymentFormSchema","jsxs","Fragment","PreviewPresentation","componentEvents","contractorPayments","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","rest","response","value","prev","CreatePaymentPresentation","result","payrollSubmitHandler","contractorUuid","contractorPayment","rawPaymentMethod","sanitizedPaymentMethod","EditContractorPaymentPresentation","data","currentContractorPaymentMethod","hasAnyPayment","prevPayments","displayContractor","displayName","DOMPurify","firstLastName","prevAlerts","_"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreatePayment.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsCreate'\nimport type {\n PostV1CompaniesCompanyIdContractorPaymentGroupsContractorPayments as ContractorPayments,\n PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n SubmissionBlockers,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTranslation } from 'react-i18next'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview'\nimport { useBankAccountsGet } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { EditContractorPaymentPresentation } from './EditContractorPaymentPresentation'\nimport {\n createEditContractorPaymentFormSchema,\n type EditContractorPaymentFormValues,\n} from './EditContractorPaymentFormSchema'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport { addBusinessDays } from '@/helpers/dateFormatting'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n payrollSubmitHandler,\n type ApiPayrollBlocker,\n} from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nfunction formatLocalDate(date: Date): string {\n return [\n String(date.getFullYear()).padStart(4, '0'),\n String(date.getMonth() + 1).padStart(2, '0'),\n String(date.getDate()).padStart(2, '0'),\n ].join('-')\n}\n\nfunction calculateInitialPaymentDate(speedDays: number): string {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n return formatLocalDate(addBusinessDays(today, speedDays))\n}\n\n/**\n * Props for {@link CreatePayment}.\n *\n * @public\n */\nexport interface CreatePaymentProps extends BaseComponentInterface<'Contractor.Payments.CreatePayment'> {\n /** UUID of the company for which to create a contractor payment group. */\n companyId: string\n}\n\n/**\n * Form for creating a contractor payment group, including date selection, per-contractor edits, preview, and submission blockers.\n *\n * @remarks\n * Active, fully onboarded contractors are listed for the given company. Hours and bonuses apply to hourly contractors; wages apply to fixed contractors; reimbursements apply to both. The form previews the payment group before final submission and surfaces Fast ACH submission blockers when applicable.\n *\n * Features:\n *\n * - **Payment date selection** — choose the payment date; a notice shows the resulting payment speed.\n * - **Per-contractor editing** — edit hours and bonus (hourly contractors), wage (fixed contractors), and reimbursement (all) in a modal, with a running total.\n * - **Payment method** — choose Check or Direct Deposit per contractor.\n * - **Live totals** — wage, bonus, reimbursement, and overall totals update as amounts change.\n * - **Preview before submit** — review per-contractor amounts, debit amount, debit account, debit date, contractor pay date, and the submission deadline before finalizing.\n * - **Submission blockers** — Fast ACH blockers surface inline with selectable unblock options (wire transfer or slower direct deposit); submission stays disabled until every blocker is resolved.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/payments/edit` | The edit modal was opened for a contractor. | — |\n * | `contractor/payments/update` | A contractor's payment values were updated locally. | The updated form values (hours, wage, bonus, reimbursement, payment method, etc.). |\n * | `contractor/payments/preview` | The preview API call succeeded. | The contractor payment group preview response. |\n * | `contractor/payments/backToEdit` | The user returned from preview to continue editing. | — |\n * | `contractor/payments/created` | The payment group was successfully created. | The created contractor payment group response. |\n * | `contractor/payments/rfi/respond` | The user clicked to respond to a payment blocker. | — |\n *\n * @param props - Component props including the company identifier and event handler.\n * @returns The rendered create-payment form, preview, and edit modal.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function CreateContractorPayment() {\n * return (\n * <ContractorManagement.CreatePayment\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function CreatePayment(props: CreatePaymentProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.CreatePayment\">\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ companyId, dictionary, onEvent }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const [isModalOpen, setIsModalOpen] = useState(false)\n const { baseSubmitHandler } = useBase()\n const [alerts, setAlerts] = useState<Record<string, InternalAlert>>({})\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreatingContractorPaymentGroup } =\n useContractorPaymentGroupsCreateMutation()\n const {\n mutateAsync: previewContractorPaymentGroup,\n isPending: isPreviewingContractorPaymentGroup,\n } = useContractorPaymentGroupsPreviewMutation()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.contractors || []).filter(\n contractor =>\n contractor.isActive &&\n contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED,\n )\n const { data: bankAccounts } = useBankAccountsGet({ companyId })\n const { paymentSpeed, paymentSpeedDays } = useCompanyPaymentSpeed(companyId)\n const bankAccount = bankAccounts?.companyBankAccounts?.[0]\n\n const [paymentDate, setPaymentDate] = useState(calculateInitialPaymentDate(paymentSpeedDays))\n const hasInitializedPaymentDateRef = useRef(false)\n\n useEffect(() => {\n if (paymentSpeed && !hasInitializedPaymentDateRef.current) {\n setPaymentDate(calculateInitialPaymentDate(paymentSpeedDays))\n hasInitializedPaymentDateRef.current = true\n }\n }, [paymentSpeed, paymentSpeedDays])\n\n const initialContractorPayments: (ContractorPayments & { isTouched: boolean })[] = useMemo(\n () =>\n contractors.map(contractor => {\n const paymentMethod = contractor.paymentMethod ? contractor.paymentMethod : 'Direct Deposit'\n\n return {\n contractorUuid: contractor.uuid,\n paymentMethod,\n wage: '0',\n hours: '0',\n bonus: '0',\n reimbursement: '0',\n isTouched: false,\n }\n }),\n [contractors],\n )\n const [virtualContractorPayments, setVirtualContractorPayments] =\n useState(initialContractorPayments)\n const totals = useMemo(\n () =>\n virtualContractorPayments.reduce(\n (acc, payment) => {\n const contractor = contractors.find(c => c.uuid === payment.contractorUuid)\n const isHourly = contractor?.wageType === 'Hourly'\n const hours = Number(payment.hours || '0')\n const wage = Number(payment.wage || '0')\n const bonus = Number(payment.bonus || '0')\n const reimbursement = Number(payment.reimbursement || '0')\n const hourlyAmount = isHourly ? hours * Number(contractor.hourlyRate || '0') : 0\n const fixedWage = isHourly ? 0 : wage\n\n return {\n wage: acc.wage + fixedWage,\n bonus: acc.bonus + bonus,\n reimbursement: acc.reimbursement + reimbursement,\n total: acc.total + hourlyAmount + fixedWage + bonus + reimbursement,\n }\n },\n { wage: 0, bonus: 0, reimbursement: 0, total: 0 },\n ),\n [virtualContractorPayments, contractors],\n )\n\n const formMethods = useForm<EditContractorPaymentFormValues>({\n resolver: zodResolver(createEditContractorPaymentFormSchema()),\n defaultValues: {\n wageType: 'Hourly',\n hours: 0,\n wage: 0,\n bonus: 0,\n reimbursement: 0,\n paymentMethod: 'Direct Deposit',\n hourlyRate: 0,\n contractorUuid: '',\n contractorPaymentMethod: undefined,\n },\n })\n\n const onCreatePaymentGroup = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0 || !previewData?.creationToken) {\n return\n }\n const creationToken = previewData.creationToken\n\n const submissionBlockers: SubmissionBlockers[] = Object.entries(selectedUnblockOptions).map(\n ([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n }),\n )\n\n const requestBody: PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody = {\n checkDate: new RFCDate(paymentDate),\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n creationToken,\n ...(submissionBlockers.length > 0 && { submissionBlockers }),\n }\n\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CREATED, response.contractorPaymentGroup || {})\n })\n }\n\n const onUnblockOptionChange = (blockerType: string, value: string) => {\n setSelectedUnblockOptions(prev => ({\n ...prev,\n [blockerType]: value,\n }))\n }\n const onEditContractor = (contractorUuid: string) => {\n const contractor = contractors.find(contractor => contractor.uuid === contractorUuid)\n const contractorPayment = virtualContractorPayments.find(\n payment => payment.contractorUuid === contractorUuid,\n )\n\n const rawPaymentMethod = contractorPayment?.paymentMethod || 'Direct Deposit'\n const sanitizedPaymentMethod = ['Check', 'Direct Deposit'].includes(rawPaymentMethod)\n ? (rawPaymentMethod as 'Check' | 'Direct Deposit')\n : 'Check'\n\n formMethods.reset(\n {\n wageType: contractor?.wageType || 'Hourly',\n hours: Number(contractorPayment?.hours || '0'),\n wage: Number(contractorPayment?.wage || '0'),\n bonus: Number(contractorPayment?.bonus || '0'),\n reimbursement: Number(contractorPayment?.reimbursement || '0'),\n paymentMethod: sanitizedPaymentMethod,\n hourlyRate: Number(contractor?.hourlyRate || '0'),\n contractorUuid: contractorUuid,\n contractorPaymentMethod: contractor?.paymentMethod || undefined,\n },\n { keepDirty: false, keepValues: false },\n )\n setAlerts({})\n setIsModalOpen(true)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n }\n\n const onEditContractorSubmit = (data: EditContractorPaymentFormValues) => {\n const currentContractor = contractors.find(c => c.uuid === data.contractorUuid)\n const currentContractorPaymentMethod = currentContractor?.paymentMethod\n\n if (!['Check', 'Direct Deposit'].includes(data.paymentMethod)) {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.unsupportedPaymentMethod'),\n })\n return\n }\n\n if (currentContractorPaymentMethod === 'Check' && data.paymentMethod === 'Direct Deposit') {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.directDepositNotAvailable'),\n })\n return\n }\n\n const hasAnyPayment =\n (data.wage ?? 0) > 0 ||\n (data.hours ?? 0) > 0 ||\n (data.bonus ?? 0) > 0 ||\n (data.reimbursement ?? 0) > 0\n\n setVirtualContractorPayments(prevPayments =>\n prevPayments.map(payment =>\n payment.contractorUuid === data.contractorUuid\n ? {\n contractorUuid: payment.contractorUuid,\n wage: String(data.wage ?? 0),\n hours: String(data.hours ?? 0),\n bonus: String(data.bonus ?? 0),\n reimbursement: String(data.reimbursement ?? 0),\n paymentMethod: data.paymentMethod,\n isTouched: hasAnyPayment,\n }\n : payment,\n ),\n )\n const displayContractor = contractors.find(\n contractor => contractor.uuid === data.contractorUuid,\n )\n const displayName = DOMPurify.sanitize(\n displayContractor?.type === 'Individual'\n ? firstLastName({\n first_name: displayContractor.firstName,\n last_name: displayContractor.lastName,\n })\n : displayContractor?.businessName || '',\n )\n setAlerts(prevAlerts => ({\n ...prevAlerts,\n [data.contractorUuid]: {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlerts(prevAlerts => {\n const { [data.contractorUuid]: _, ...rest } = prevAlerts\n return rest\n })\n },\n },\n }))\n setIsModalOpen(false)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\n }\n\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlerts({\n ...alerts,\n error: {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n },\n })\n return\n }\n setAlerts({})\n setPayrollBlockers([])\n\n const result = await payrollSubmitHandler(async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n checkDate: new RFCDate(paymentDate),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_PREVIEW, response.contractorPaymentGroupPreview)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onBackToEdit = () => {\n setPreviewData(null)\n setPayrollBlockers([])\n setSelectedUnblockOptions({})\n onEvent(componentEvents.CONTRACTOR_PAYMENT_BACK_TO_EDIT)\n }\n const onViewBlockers = () => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND)\n }\n\n return (\n <>\n {previewData && (\n <PreviewPresentation\n contractorPaymentGroup={previewData}\n contractors={contractors}\n onBackToEdit={onBackToEdit}\n onSubmit={onCreatePaymentGroup}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n bankAccount={bankAccount}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={onUnblockOptionChange}\n paymentSpeed={paymentSpeed}\n />\n )}\n {!previewData && (\n <CreatePaymentPresentation\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n onEditContractor={onEditContractor}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n paymentSpeedDays={paymentSpeedDays}\n />\n )}\n <EditContractorPaymentPresentation\n isOpen={isModalOpen}\n onClose={() => {\n setIsModalOpen(false)\n }}\n formMethods={formMethods}\n onSubmit={onEditContractorSubmit}\n contractorPaymentMethod={\n contractors.find(c => c.uuid === formMethods.getValues('contractorUuid'))\n ?.paymentMethod ?? undefined\n }\n />\n </>\n )\n}\n"],"names":["formatLocalDate","date","calculateInitialPaymentDate","speedDays","today","addBusinessDays","CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","useComponentDictionary","t","useTranslation","isModalOpen","setIsModalOpen","useState","baseSubmitHandler","useBase","alerts","setAlerts","previewData","setPreviewData","payrollBlockers","setPayrollBlockers","selectedUnblockOptions","setSelectedUnblockOptions","createContractorPaymentGroup","isCreatingContractorPaymentGroup","useContractorPaymentGroupsCreateMutation","previewContractorPaymentGroup","isPreviewingContractorPaymentGroup","useContractorPaymentGroupsPreviewMutation","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","bankAccounts","useBankAccountsGet","paymentSpeed","paymentSpeedDays","useCompanyPaymentSpeed","bankAccount","paymentDate","setPaymentDate","hasInitializedPaymentDateRef","useRef","useEffect","initialContractorPayments","useMemo","paymentMethod","virtualContractorPayments","setVirtualContractorPayments","totals","acc","payment","c","isHourly","hours","wage","bonus","reimbursement","hourlyAmount","fixedWage","formMethods","useForm","zodResolver","createEditContractorPaymentFormSchema","jsxs","Fragment","PreviewPresentation","componentEvents","contractorPayments","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","rest","response","value","prev","CreatePaymentPresentation","result","payrollSubmitHandler","contractorUuid","contractorPayment","rawPaymentMethod","sanitizedPaymentMethod","EditContractorPaymentPresentation","data","currentContractorPaymentMethod","hasAnyPayment","prevPayments","displayContractor","displayName","DOMPurify","firstLastName","prevAlerts","_"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Contractor } from '@gusto/embedded-api
|
|
2
|
-
import { ContractorPayments } from '@gusto/embedded-api
|
|
1
|
+
import { Contractor } from '@gusto/embedded-api/models/components/contractor';
|
|
2
|
+
import { PostV1CompaniesCompanyIdContractorPaymentGroupsContractorPayments as ContractorPayments } from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups';
|
|
3
3
|
import { InternalAlert } from '../types';
|
|
4
4
|
import { ApiPayrollBlocker } from '../../../Payroll/PayrollBlocker/payrollHelpers';
|
|
5
5
|
interface ContractorPaymentCreatePaymentPresentationProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreatePaymentPresentation.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { Contractor } from '@gusto/embedded-api-v-2026-02-01/models/components/contractor'\nimport type { ContractorPayments } from '@gusto/embedded-api-v-2026-02-01/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useMemo } from 'react'\nimport type { InternalAlert } from '../types'\nimport { getContractorDisplayName } from './helpers'\nimport type { ApiPayrollBlocker } from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '@/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts'\nimport { DataView, Flex, FlexItem, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { useI18n } from '@/i18n'\nimport { formatHoursDisplay } from '@/components/Payroll/helpers'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport {\n formatDateToStringDate,\n normalizeDateToLocal,\n normalizeToDate,\n} from '@/helpers/dateFormatting'\n\nconst ZERO_HOURS_DISPLAY = '0.000'\n\ninterface ContractorPaymentCreatePaymentPresentationProps {\n contractors: Contractor[]\n contractorPayments: (ContractorPayments & { isTouched?: boolean })[]\n paymentDate: string\n onPaymentDateChange: (date: string) => void\n onSaveAndContinue: () => void\n onEditContractor: (contractorUuid: string) => void\n totals: {\n wage: number\n bonus: number\n reimbursement: number\n total: number\n }\n alerts: Record<string, InternalAlert>\n payrollBlockers?: ApiPayrollBlocker[]\n onViewBlockers?: () => void\n isLoading: boolean\n paymentSpeedDays: number\n}\n\n/** @internal */\nexport const CreatePaymentPresentation = ({\n contractors,\n paymentDate,\n contractorPayments,\n onPaymentDateChange,\n onSaveAndContinue,\n onEditContractor,\n totals,\n alerts,\n payrollBlockers = [],\n onViewBlockers,\n isLoading,\n paymentSpeedDays,\n}: ContractorPaymentCreatePaymentPresentationProps) => {\n const { Button, Text, Heading, DatePicker, Alert } = useComponentContext()\n useI18n('Contractor.Payments.CreatePayment')\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const currencyFormatter = useNumberFormatter('currency')\n\n const formatWageType = (contractor?: Contractor) => {\n if (!contractor) return ''\n if (contractor.wageType === 'Hourly' && contractor.hourlyRate) {\n return ` ${currencyFormatter(Number(contractor.hourlyRate || '0'))}${t('perHour')}`\n }\n return contractor.wageType\n }\n\n const tableData = useMemo(\n () =>\n contractorPayments.map(payment => {\n return {\n ...payment,\n contractorDetails: contractors.find(\n contractor => contractor.uuid === payment.contractorUuid,\n ),\n }\n }),\n [contractorPayments, contractors],\n )\n\n return (\n <Flex flexDirection=\"column\" gap={32}>\n <Flex justifyContent=\"flex-end\" gap={16}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('title')}</Heading>\n <Text variant=\"supporting\">\n {t('paymentSpeedNotice', {\n count: paymentSpeedDays,\n })}\n </Text>\n </Flex>\n <FlexItem>\n <Button onClick={onSaveAndContinue} variant=\"primary\" isLoading={isLoading}>\n {t('continueCta')}\n </Button>\n </FlexItem>\n </Flex>\n\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts blockers={payrollBlockers} onViewBlockersClick={onViewBlockers} />\n )}\n\n {Object.values(alerts).map(alert => (\n <Alert\n key={alert.title}\n label={alert.title}\n onDismiss={alert.onDismiss}\n status={alert.type}\n >\n {alert.content ?? null}\n </Alert>\n ))}\n\n <Flex flexDirection=\"column\" gap={8}>\n <DatePicker\n value={paymentDate ? normalizeToDate(paymentDate) : null}\n onChange={date => {\n const normalized = normalizeDateToLocal(date)\n onPaymentDateChange(normalized ? (formatDateToStringDate(normalized) ?? '') : '')\n }}\n label={t('dateLabel')}\n isRequired\n />\n </Flex>\n\n <Flex flexDirection=\"column\" gap={16}>\n <Heading as=\"h3\">{t('hoursAndPaymentsLabel')}</Heading>\n <DataView\n columns={[\n {\n title: t('contractorTableHeaders.contractor'),\n render: paymentData => getContractorDisplayName(paymentData.contractorDetails),\n },\n {\n title: t('contractorTableHeaders.wageType'),\n render: paymentData => formatWageType(paymentData.contractorDetails),\n },\n {\n title: t('contractorTableHeaders.paymentMethod'),\n render: paymentData => paymentData.paymentMethod || t('na'),\n },\n {\n title: t('contractorTableHeaders.hours'),\n justify: 'end',\n render: paymentData => {\n if (paymentData.contractorDetails?.wageType === 'Fixed') return t('na')\n const hours = Number(paymentData.hours || '0')\n return hours ? formatHoursDisplay(hours) : ZERO_HOURS_DISPLAY\n },\n },\n {\n title: t('contractorTableHeaders.wage'),\n justify: 'end',\n render: paymentData => {\n if (paymentData.contractorDetails?.wageType === 'Hourly') return t('na')\n return currencyFormatter(Number(paymentData.wage || '0'))\n },\n },\n {\n title: t('contractorTableHeaders.bonus'),\n justify: 'end',\n render: paymentData => currencyFormatter(Number(paymentData.bonus || '0')),\n },\n {\n title: t('contractorTableHeaders.reimbursement'),\n justify: 'end',\n render: paymentData => currencyFormatter(Number(paymentData.reimbursement || '0')),\n },\n {\n title: t('contractorTableHeaders.total'),\n justify: 'end',\n render: ({ bonus, reimbursement, wage, hours, contractorDetails }) => {\n const totalAmount =\n Number(bonus || '0') +\n Number(reimbursement || '0') +\n Number(wage || '0') +\n (contractorDetails?.wageType === 'Hourly' && hours\n ? Number(hours || '0') * Number(contractorDetails.hourlyRate || '0')\n : 0)\n return currencyFormatter(totalAmount)\n },\n },\n ]}\n data={tableData}\n footer={\n tableData.length > 0\n ? () => ({\n 'column-0': t('totalsLabel'),\n 'column-4': currencyFormatter(totals.wage),\n 'column-5': currencyFormatter(totals.bonus),\n 'column-6': currencyFormatter(totals.reimbursement),\n 'column-7': currencyFormatter(totals.total),\n })\n : undefined\n }\n label={t('hoursAndPaymentsLabel')}\n itemMenu={paymentData => (\n <HamburgerMenu\n items={[\n {\n label: t('editContractor'),\n onClick: () => {\n onEditContractor(paymentData.contractorUuid!)\n },\n },\n ]}\n triggerLabel={t('editContractor')}\n />\n )}\n emptyState={() => (\n <EmptyData title={t('emptyTableTitle')} description={t('emptyTableDescription')} />\n )}\n />\n </Flex>\n </Flex>\n )\n}\n"],"names":["ZERO_HOURS_DISPLAY","CreatePaymentPresentation","contractors","paymentDate","contractorPayments","onPaymentDateChange","onSaveAndContinue","onEditContractor","totals","alerts","payrollBlockers","onViewBlockers","isLoading","paymentSpeedDays","Button","Text","Heading","DatePicker","Alert","useComponentContext","useI18n","t","useTranslation","currencyFormatter","useNumberFormatter","formatWageType","contractor","tableData","useMemo","payment","jsxs","Flex","jsx","FlexItem","PayrollBlockerAlerts","alert","normalizeToDate","date","normalized","normalizeDateToLocal","formatDateToStringDate","DataView","paymentData","getContractorDisplayName","hours","formatHoursDisplay","bonus","reimbursement","wage","contractorDetails","totalAmount","HamburgerMenu","EmptyData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreatePaymentPresentation.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport type { PostV1CompaniesCompanyIdContractorPaymentGroupsContractorPayments as ContractorPayments } from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useMemo } from 'react'\nimport type { InternalAlert } from '../types'\nimport { getContractorDisplayName } from './helpers'\nimport type { ApiPayrollBlocker } from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '@/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts'\nimport { DataView, Flex, FlexItem, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { useI18n } from '@/i18n'\nimport { formatHoursDisplay } from '@/components/Payroll/helpers'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport {\n formatDateToStringDate,\n normalizeDateToLocal,\n normalizeToDate,\n} from '@/helpers/dateFormatting'\n\nconst ZERO_HOURS_DISPLAY = '0.000'\n\ninterface ContractorPaymentCreatePaymentPresentationProps {\n contractors: Contractor[]\n contractorPayments: (ContractorPayments & { isTouched?: boolean })[]\n paymentDate: string\n onPaymentDateChange: (date: string) => void\n onSaveAndContinue: () => void\n onEditContractor: (contractorUuid: string) => void\n totals: {\n wage: number\n bonus: number\n reimbursement: number\n total: number\n }\n alerts: Record<string, InternalAlert>\n payrollBlockers?: ApiPayrollBlocker[]\n onViewBlockers?: () => void\n isLoading: boolean\n paymentSpeedDays: number\n}\n\n/** @internal */\nexport const CreatePaymentPresentation = ({\n contractors,\n paymentDate,\n contractorPayments,\n onPaymentDateChange,\n onSaveAndContinue,\n onEditContractor,\n totals,\n alerts,\n payrollBlockers = [],\n onViewBlockers,\n isLoading,\n paymentSpeedDays,\n}: ContractorPaymentCreatePaymentPresentationProps) => {\n const { Button, Text, Heading, DatePicker, Alert } = useComponentContext()\n useI18n('Contractor.Payments.CreatePayment')\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const currencyFormatter = useNumberFormatter('currency')\n\n const formatWageType = (contractor?: Contractor) => {\n if (!contractor) return ''\n if (contractor.wageType === 'Hourly' && contractor.hourlyRate) {\n return ` ${currencyFormatter(Number(contractor.hourlyRate || '0'))}${t('perHour')}`\n }\n return contractor.wageType\n }\n\n const tableData = useMemo(\n () =>\n contractorPayments.map(payment => {\n return {\n ...payment,\n contractorDetails: contractors.find(\n contractor => contractor.uuid === payment.contractorUuid,\n ),\n }\n }),\n [contractorPayments, contractors],\n )\n\n return (\n <Flex flexDirection=\"column\" gap={32}>\n <Flex justifyContent=\"flex-end\" gap={16}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('title')}</Heading>\n <Text variant=\"supporting\">\n {t('paymentSpeedNotice', {\n count: paymentSpeedDays,\n })}\n </Text>\n </Flex>\n <FlexItem>\n <Button onClick={onSaveAndContinue} variant=\"primary\" isLoading={isLoading}>\n {t('continueCta')}\n </Button>\n </FlexItem>\n </Flex>\n\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts blockers={payrollBlockers} onViewBlockersClick={onViewBlockers} />\n )}\n\n {Object.values(alerts).map(alert => (\n <Alert\n key={alert.title}\n label={alert.title}\n onDismiss={alert.onDismiss}\n status={alert.type}\n >\n {alert.content ?? null}\n </Alert>\n ))}\n\n <Flex flexDirection=\"column\" gap={8}>\n <DatePicker\n value={paymentDate ? normalizeToDate(paymentDate) : null}\n onChange={date => {\n const normalized = normalizeDateToLocal(date)\n onPaymentDateChange(normalized ? (formatDateToStringDate(normalized) ?? '') : '')\n }}\n label={t('dateLabel')}\n isRequired\n />\n </Flex>\n\n <Flex flexDirection=\"column\" gap={16}>\n <Heading as=\"h3\">{t('hoursAndPaymentsLabel')}</Heading>\n <DataView\n columns={[\n {\n title: t('contractorTableHeaders.contractor'),\n render: paymentData => getContractorDisplayName(paymentData.contractorDetails),\n },\n {\n title: t('contractorTableHeaders.wageType'),\n render: paymentData => formatWageType(paymentData.contractorDetails),\n },\n {\n title: t('contractorTableHeaders.paymentMethod'),\n render: paymentData => paymentData.paymentMethod || t('na'),\n },\n {\n title: t('contractorTableHeaders.hours'),\n justify: 'end',\n render: paymentData => {\n if (paymentData.contractorDetails?.wageType === 'Fixed') return t('na')\n const hours = Number(paymentData.hours || '0')\n return hours ? formatHoursDisplay(hours) : ZERO_HOURS_DISPLAY\n },\n },\n {\n title: t('contractorTableHeaders.wage'),\n justify: 'end',\n render: paymentData => {\n if (paymentData.contractorDetails?.wageType === 'Hourly') return t('na')\n return currencyFormatter(Number(paymentData.wage || '0'))\n },\n },\n {\n title: t('contractorTableHeaders.bonus'),\n justify: 'end',\n render: paymentData => currencyFormatter(Number(paymentData.bonus || '0')),\n },\n {\n title: t('contractorTableHeaders.reimbursement'),\n justify: 'end',\n render: paymentData => currencyFormatter(Number(paymentData.reimbursement || '0')),\n },\n {\n title: t('contractorTableHeaders.total'),\n justify: 'end',\n render: ({ bonus, reimbursement, wage, hours, contractorDetails }) => {\n const totalAmount =\n Number(bonus || '0') +\n Number(reimbursement || '0') +\n Number(wage || '0') +\n (contractorDetails?.wageType === 'Hourly' && hours\n ? Number(hours || '0') * Number(contractorDetails.hourlyRate || '0')\n : 0)\n return currencyFormatter(totalAmount)\n },\n },\n ]}\n data={tableData}\n footer={\n tableData.length > 0\n ? () => ({\n 'column-0': t('totalsLabel'),\n 'column-4': currencyFormatter(totals.wage),\n 'column-5': currencyFormatter(totals.bonus),\n 'column-6': currencyFormatter(totals.reimbursement),\n 'column-7': currencyFormatter(totals.total),\n })\n : undefined\n }\n label={t('hoursAndPaymentsLabel')}\n itemMenu={paymentData => (\n <HamburgerMenu\n items={[\n {\n label: t('editContractor'),\n onClick: () => {\n onEditContractor(paymentData.contractorUuid!)\n },\n },\n ]}\n triggerLabel={t('editContractor')}\n />\n )}\n emptyState={() => (\n <EmptyData title={t('emptyTableTitle')} description={t('emptyTableDescription')} />\n )}\n />\n </Flex>\n </Flex>\n )\n}\n"],"names":["ZERO_HOURS_DISPLAY","CreatePaymentPresentation","contractors","paymentDate","contractorPayments","onPaymentDateChange","onSaveAndContinue","onEditContractor","totals","alerts","payrollBlockers","onViewBlockers","isLoading","paymentSpeedDays","Button","Text","Heading","DatePicker","Alert","useComponentContext","useI18n","t","useTranslation","currencyFormatter","useNumberFormatter","formatWageType","contractor","tableData","useMemo","payment","jsxs","Flex","jsx","FlexItem","PayrollBlockerAlerts","alert","normalizeToDate","date","normalized","normalizeDateToLocal","formatDateToStringDate","DataView","paymentData","getContractorDisplayName","hours","formatHoursDisplay","bonus","reimbursement","wage","contractorDetails","totalAmount","HamburgerMenu","EmptyData"],"mappings":"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"}
|
package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PayrollSubmissionBlockerType } from '@gusto/embedded-api
|
|
2
|
-
import { PaymentSpeed } from '@gusto/embedded-api
|
|
1
|
+
import { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype';
|
|
2
|
+
import { PaymentSpeed } from '@gusto/embedded-api/models/components/paymentconfigs';
|
|
3
3
|
interface FastAchSubmissionBlockerBannerProps {
|
|
4
4
|
blocker: PayrollSubmissionBlockerType;
|
|
5
5
|
selectedValue?: string;
|
package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FastAchSubmissionBlockerBanner.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { PayrollSubmissionBlockerType } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"FastAchSubmissionBlockerBanner.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype'\nimport type { PaymentSpeed } from '@gusto/embedded-api/models/components/paymentconfigs'\nimport { Flex } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport IconFast from '@/assets/icons/icon-zap-fast.svg?react'\n\ntype FastAchBlockerType = 'fast_ach_threshold_exceeded' | 'needs_earned_access_for_fast_ach'\n\ninterface FastAchSubmissionBlockerBannerProps {\n blocker: PayrollSubmissionBlockerType\n selectedValue?: string\n onUnblockOptionChange: (blockerType: string, value: string) => void\n paymentSpeed?: PaymentSpeed\n}\n\n/** @internal */\nexport const FastAchSubmissionBlockerBanner = ({\n blocker,\n selectedValue,\n onUnblockOptionChange,\n paymentSpeed,\n}: FastAchSubmissionBlockerBannerProps) => {\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const { Banner, Text, RadioGroup, Badge } = useComponentContext()\n const dateFormatter = useDateFormatter()\n const blockerType = (blocker.blockerType || 'fast_ach_threshold_exceeded') as FastAchBlockerType\n\n const titleKey =\n blockerType === 'fast_ach_threshold_exceeded'\n ? 'previewPresentation.submissionBlockers.fast_ach_threshold_exceeded.title'\n : 'previewPresentation.submissionBlockers.needs_earned_access_for_fast_ach.title'\n\n return (\n <Banner status=\"error\" title={t(titleKey, { days: paymentSpeed || '2-day' })}>\n <Flex flexDirection=\"column\" gap={16}>\n <Text>{t('previewPresentation.submissionBlockers.fastAchOptions.description')}</Text>\n <RadioGroup\n label={t('previewPresentation.submissionBlockers.fastAchOptions.fundingOptionsLabel')}\n shouldVisuallyHideLabel\n options={\n blocker.unblockOptions?.map(option => {\n const isWire = option.unblockType === 'wire_in'\n const label = isWire\n ? t('previewPresentation.submissionBlockers.fastAchOptions.wireLabel')\n : t('previewPresentation.submissionBlockers.fastAchOptions.directDepositLabel')\n const description = isWire\n ? t('previewPresentation.submissionBlockers.fastAchOptions.wireDescription')\n : t(\n 'previewPresentation.submissionBlockers.fastAchOptions.directDepositDescription',\n )\n\n return {\n value: option.unblockType || '',\n label: (\n <Flex alignItems=\"center\" gap={8}>\n <Text weight=\"semibold\">{label}</Text>\n {isWire && (\n <Badge status=\"success\">\n <IconFast aria-hidden />{' '}\n {t(\n 'previewPresentation.submissionBlockers.fastAchOptions.wireFastestBadge',\n )}\n </Badge>\n )}\n {option.checkDate && (\n <Badge status=\"info\">\n {t(\n 'previewPresentation.submissionBlockers.fastAchOptions.contractorPayDate',\n {\n date: dateFormatter.formatShortWithYear(option.checkDate),\n },\n )}\n </Badge>\n )}\n </Flex>\n ),\n description,\n }\n }) || []\n }\n value={selectedValue}\n onChange={value => {\n onUnblockOptionChange(blockerType, value)\n }}\n />\n </Flex>\n </Banner>\n )\n}\n"],"names":["FastAchSubmissionBlockerBanner","blocker","selectedValue","onUnblockOptionChange","paymentSpeed","t","useTranslation","Banner","Text","RadioGroup","Badge","useComponentContext","dateFormatter","useDateFormatter","blockerType","jsxs","Flex","jsx","option","isWire","label","description","IconFast","value"],"mappings":";;;;;;;AAkBO,MAAMA,IAAiC,CAAC;AAAA,EAC7C,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,cAAAC;AACF,MAA2C;AACzC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,mCAAmC,GAC1D,EAAE,QAAAC,GAAQ,MAAAC,GAAM,YAAAC,GAAY,OAAAC,EAAA,IAAUC,EAAA,GACtCC,IAAgBC,EAAA,GAChBC,IAAeb,EAAQ,eAAe;AAO5C,2BACGM,GAAA,EAAO,QAAO,SAAQ,OAAOF,EAL9BS,MAAgB,gCACZ,6EACA,iFAGsC,EAAE,MAAMV,KAAgB,SAAS,GACzE,UAAA,gBAAAW,EAACC,KAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,IAAA,gBAAAC,EAACT,GAAA,EAAM,UAAAH,EAAE,mEAAmE,EAAA,CAAE;AAAA,IAC9E,gBAAAY;AAAA,MAACR;AAAA,MAAA;AAAA,QACC,OAAOJ,EAAE,2EAA2E;AAAA,QACpF,yBAAuB;AAAA,QACvB,SACEJ,EAAQ,gBAAgB,IAAI,CAAAiB,MAAU;AACpC,gBAAMC,IAASD,EAAO,gBAAgB,WAChCE,IACFf,EADUc,IACR,oEACA,0EADiE,GAEjEE,IACFhB,EADgBc,IACd,0EAEA,gFAFuE;AAK7E,iBAAO;AAAA,YACL,OAAOD,EAAO,eAAe;AAAA,YAC7B,OACE,gBAAAH,EAACC,GAAA,EAAK,YAAW,UAAS,KAAK,GAC7B,UAAA;AAAA,cAAA,gBAAAC,EAACT,GAAA,EAAK,QAAO,YAAY,UAAAY,GAAM;AAAA,cAC9BD,KACC,gBAAAJ,EAACL,GAAA,EAAM,QAAO,WACZ,UAAA;AAAA,gBAAA,gBAAAO,EAACK,GAAA,EAAS,eAAW,GAAA,CAAC;AAAA,gBAAG;AAAA,gBACxBjB;AAAA,kBACC;AAAA,gBAAA;AAAA,cACF,GACF;AAAA,cAEDa,EAAO,aACN,gBAAAD,EAACP,GAAA,EAAM,QAAO,QACX,UAAAL;AAAA,gBACC;AAAA,gBACA;AAAA,kBACE,MAAMO,EAAc,oBAAoBM,EAAO,SAAS;AAAA,gBAAA;AAAA,cAC1D,EACF,CACF;AAAA,YAAA,GAEJ;AAAA,YAEF,aAAAG;AAAA,UAAA;AAAA,QAEJ,CAAC,KAAK,CAAA;AAAA,QAER,OAAOnB;AAAA,QACP,UAAU,CAAAqB,MAAS;AACjB,UAAApB,EAAsBW,GAAaS,CAAK;AAAA,QAC1C;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,EAAA,CACF,EAAA,CACF;AAEJ;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PayrollSubmissionBlockerType } from '@gusto/embedded-api
|
|
1
|
+
import { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype';
|
|
2
2
|
interface GenericBlockerProps {
|
|
3
3
|
blocker: PayrollSubmissionBlockerType;
|
|
4
4
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericBlocker.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/GenericBlocker.tsx"],"sourcesContent":["import type { PayrollSubmissionBlockerType } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"GenericBlocker.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/GenericBlocker.tsx"],"sourcesContent":["import type { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype'\nimport { useTranslation } from 'react-i18next'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\ninterface GenericBlockerProps {\n blocker: PayrollSubmissionBlockerType\n}\n\n/** @internal */\nexport const GenericBlocker = ({ blocker }: GenericBlockerProps) => {\n const { Banner, Text } = useComponentContext()\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n\n return (\n <Banner\n status=\"error\"\n title={blocker.blockerName || t('previewPresentation.submissionBlockers.genericBlockerTitle')}\n >\n <Text>{t('previewPresentation.submissionBlockers.genericBlockerMessage')}</Text>\n </Banner>\n )\n}\n"],"names":["GenericBlocker","blocker","Banner","Text","useComponentContext","t","useTranslation","jsx"],"mappings":";;;AASO,MAAMA,IAAiB,CAAC,EAAE,SAAAC,QAAmC;AAClE,QAAM,EAAE,QAAAC,GAAQ,MAAAC,EAAA,IAASC,EAAA,GACnB,EAAE,GAAAC,EAAA,IAAMC,EAAe,mCAAmC;AAEhE,SACE,gBAAAC;AAAA,IAACL;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,OAAOD,EAAQ,eAAeI,EAAE,4DAA4D;AAAA,MAE5F,UAAA,gBAAAE,EAACJ,GAAA,EAAM,UAAAE,EAAE,8DAA8D,EAAA,CAAE;AAAA,IAAA;AAAA,EAAA;AAG/E;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ContractorPaymentGroupPreview } from '@gusto/embedded-api
|
|
2
|
-
import { Contractor } from '@gusto/embedded-api
|
|
3
|
-
import { CompanyBankAccount } from '@gusto/embedded-api
|
|
4
|
-
import { PaymentSpeed } from '@gusto/embedded-api
|
|
1
|
+
import { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview';
|
|
2
|
+
import { Contractor } from '@gusto/embedded-api/models/components/contractor';
|
|
3
|
+
import { CompanyBankAccount } from '@gusto/embedded-api/models/components/companybankaccount';
|
|
4
|
+
import { PaymentSpeed } from '@gusto/embedded-api/models/components/paymentconfigs';
|
|
5
5
|
interface PreviewPresentationProps {
|
|
6
6
|
contractorPaymentGroup: ContractorPaymentGroupPreview;
|
|
7
7
|
contractors: Contractor[];
|