@gusto/embedded-react-sdk 0.51.0 → 0.51.2
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 +18 -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/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/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +5 -5
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
- 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/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/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/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/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 +1 -1
- 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/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/usePayScheduleForm.d.ts +2 -2
- 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/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 +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +1 -1
- 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/shared/useContractorAddressForm/useContractorAddressForm.d.ts +2 -2
- 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 +1 -1
- 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 +201 -161
- package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.d.ts +2 -2
- 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 +1 -1
- 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/useContractorPaymentMethodForm/useContractorPaymentMethodForm.d.ts +1 -1
- 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/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.js +3 -3
- 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.js +3 -3
- 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.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.js +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.d.ts +1 -1
- 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 -2
- package/dist/components/Employee/Compensation/onboarding/Compensation.js +1 -1
- 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/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/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/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 +1 -1
- 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 +2 -2
- 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.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.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 +2 -2
- 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/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 +3 -3
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
- 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 +1 -1
- 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/OnboardingSummary/OnboardingSummary.js +2 -2
- 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/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/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/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/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 +1 -1
- 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/InformationRequests/InformationRequestForm/InformationRequestForm.js +4 -4
- 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/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 +1 -1
- 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.js +1 -1
- package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +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 +1 -1
- 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 +7 -7
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +5 -5
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +4 -4
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +5 -5
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +3 -3
- 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 +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js +1 -1
- 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.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/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.js +1 -1
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +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 +6 -6
- package/dist/components/Payroll/helpers.js +1 -1
- package/dist/components/Payroll/helpers.js.map +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 +1 -1
- 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 +3 -3
- 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.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/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.DocumentsList.json.js +20 -16
- package/dist/i18n/en/Contractor.DocumentsList.json.js.map +1 -1
- package/dist/i18n/types.d.ts +4 -0
- package/dist/models/external.d.ts +204 -204
- package/dist/shared/constants.d.ts +1 -1
- package/dist/shared/constants.js +2 -2
- package/dist/shared/constants.js.map +1 -1
- package/dist/types/hooks.d.ts +1 -1
- 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 +7 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Location } from '@gusto/embedded-api
|
|
1
|
+
import { Location } from '@gusto/embedded-api/models/components/location';
|
|
2
2
|
import { WorkAddressErrorCodes } from './workAddressSchema';
|
|
3
3
|
import { SelectHookFieldProps } from '../../../../../partner-hook-utils/form/fields/SelectHookField';
|
|
4
4
|
import { DatePickerHookFieldProps } from '../../../../../partner-hook-utils/form/fields/DatePickerHookField';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/fields.tsx"],"sourcesContent":["import type { Location } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"fields.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/fields.tsx"],"sourcesContent":["import type { Location } from '@gusto/embedded-api/models/components/location'\nimport type { WorkAddressErrorCodes } from './workAddressSchema'\nimport type { SelectHookFieldProps } from '@/partner-hook-utils/form/fields/SelectHookField'\nimport type { DatePickerHookFieldProps } from '@/partner-hook-utils/form/fields/DatePickerHookField'\nimport { SelectHookField, DatePickerHookField } from '@/partner-hook-utils/form/fields'\nimport type { HookFieldProps } from '@/partner-hook-utils/types'\n\n/**\n * The required-field error code produced by {@link useWorkAddressForm} fields that only emit `REQUIRED`.\n *\n * @remarks\n * Used as the `validationMessages` key for the location and effective date fields.\n * See `WorkAddressErrorCodes`.\n *\n * @public\n */\nexport type RequiredValidation = typeof WorkAddressErrorCodes.REQUIRED\n\n/**\n * Props accepted by {@link useWorkAddressForm}'s `Fields.Location` component.\n *\n * @public\n */\nexport type LocationFieldProps = HookFieldProps<SelectHookFieldProps<RequiredValidation, Location>>\n\n/** @internal */\nexport function LocationField(props: LocationFieldProps) {\n return <SelectHookField {...props} name=\"locationUuid\" />\n}\n\n/**\n * Props accepted by {@link useWorkAddressForm}'s `Fields.EffectiveDate` component.\n *\n * @public\n */\nexport type EffectiveDateFieldProps = HookFieldProps<DatePickerHookFieldProps<RequiredValidation>>\n\n/** @internal */\nexport function EffectiveDateField(props: EffectiveDateFieldProps) {\n return <DatePickerHookField {...props} name=\"effectiveDate\" />\n}\n"],"names":["LocationField","props","jsx","SelectHookField","EffectiveDateField","DatePickerHookField"],"mappings":";;;AA0BO,SAASA,EAAcC,GAA2B;AACvD,SAAO,gBAAAC,EAACC,GAAA,EAAiB,GAAGF,GAAO,MAAK,gBAAe;AACzD;AAUO,SAASG,EAAmBH,GAAgC;AACjE,SAAO,gBAAAC,EAACG,GAAA,EAAqB,GAAGJ,GAAO,MAAK,iBAAgB;AAC9D;"}
|
package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEmployeeAddressesGetWorkAddresses as a } from "@gusto/embedded-api
|
|
1
|
+
import { useEmployeeAddressesGetWorkAddresses as a } from "@gusto/embedded-api/react-query/employeeAddressesGetWorkAddresses";
|
|
2
2
|
import { useWorkAddressForm as u } from "./useWorkAddressForm.js";
|
|
3
3
|
import { composeErrorHandler as s } from "../../../../../partner-hook-utils/composeErrorHandler.js";
|
|
4
4
|
function p(d) {
|
package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCurrentWorkAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.tsx"],"sourcesContent":["import { useEmployeeAddressesGetWorkAddresses } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"useCurrentWorkAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.tsx"],"sourcesContent":["import { useEmployeeAddressesGetWorkAddresses } from '@gusto/embedded-api/react-query/employeeAddressesGetWorkAddresses'\nimport { useWorkAddressForm } from './useWorkAddressForm'\nimport type { UseWorkAddressFormProps, UseWorkAddressFormResult } from './useWorkAddressForm'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\n\n/**\n * Options for {@link useCurrentWorkAddressForm}.\n *\n * @remarks\n * Same shape as {@link UseWorkAddressFormProps} minus `workAddressUuid` —\n * the hook resolves the current work address itself.\n *\n * @public\n */\nexport type UseCurrentWorkAddressFormProps = Omit<UseWorkAddressFormProps, 'workAddressUuid'>\n\n/**\n * Convenience wrapper around {@link useWorkAddressForm} that auto-resolves the employee's current work address.\n *\n * @remarks\n * Lists the employee's work addresses and selects the active one (or the\n * first when none are active) as the row to edit. When the employee has no\n * work address on file the hook operates in create mode. The returned shape\n * is identical to {@link useWorkAddressForm}, so the same `Fields`,\n * `actions.onSubmit`, and `errorHandling` apply.\n *\n * @param props - See {@link UseCurrentWorkAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseWorkAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import { useCurrentWorkAddressForm } from '@gusto/embedded-react-sdk'\n *\n * function WorkAddressEditor({ employeeId, companyId }: { employeeId: string; companyId: string }) {\n * const workAddress = useCurrentWorkAddressForm({ employeeId, companyId })\n *\n * if (workAddress.isLoading) return <div>Loading...</div>\n *\n * const { Fields } = workAddress.form\n * return (\n * <form onSubmit={e => { e.preventDefault(); void workAddress.actions.onSubmit() }}>\n * <Fields.Location label=\"Work location\" />\n * <button type=\"submit\">Save</button>\n * </form>\n * )\n * }\n * ```\n */\nexport function useCurrentWorkAddressForm(\n props: UseCurrentWorkAddressFormProps,\n): UseWorkAddressFormResult {\n const { employeeId, ...rest } = props\n\n const listQuery = useEmployeeAddressesGetWorkAddresses({ employeeId }, { enabled: !!employeeId })\n\n const workAddresses = listQuery.data?.employeeWorkAddressesList\n const currentWorkAddress = workAddresses?.find(w => w.active) ?? workAddresses?.[0]\n\n const base = useWorkAddressForm({\n ...rest,\n employeeId,\n workAddressUuid: currentWorkAddress?.uuid,\n })\n\n const listInitiallyBlocking = listQuery.isLoading && !listQuery.data\n\n if (listInitiallyBlocking) {\n return {\n isLoading: true as const,\n errorHandling: composeErrorHandler([listQuery]),\n }\n }\n\n if (base.isLoading) {\n return {\n ...base,\n errorHandling: composeErrorHandler([listQuery, { errorHandling: base.errorHandling }]),\n }\n }\n\n return {\n ...base,\n errorHandling: composeErrorHandler([listQuery, { errorHandling: base.errorHandling }]),\n }\n}\n"],"names":["useCurrentWorkAddressForm","props","employeeId","rest","listQuery","useEmployeeAddressesGetWorkAddresses","workAddresses","currentWorkAddress","w","base","useWorkAddressForm","composeErrorHandler"],"mappings":";;;AAiDO,SAASA,EACdC,GAC0B;AAC1B,QAAM,EAAE,YAAAC,GAAY,GAAGC,EAAA,IAASF,GAE1BG,IAAYC,EAAqC,EAAE,YAAAH,EAAA,GAAc,EAAE,SAAS,CAAC,CAACA,GAAY,GAE1FI,IAAgBF,EAAU,MAAM,2BAChCG,IAAqBD,GAAe,KAAK,CAAAE,MAAKA,EAAE,MAAM,KAAKF,IAAgB,CAAC,GAE5EG,IAAOC,EAAmB;AAAA,IAC9B,GAAGP;AAAA,IACH,YAAAD;AAAA,IACA,iBAAiBK,GAAoB;AAAA,EAAA,CACtC;AAID,SAF8BH,EAAU,aAAa,CAACA,EAAU,OAGvD;AAAA,IACL,WAAW;AAAA,IACX,eAAeO,EAAoB,CAACP,CAAS,CAAC;AAAA,EAAA,IAI9CK,EAAK,YACA;AAAA,IACL,GAAGA;AAAA,IACH,eAAeE,EAAoB,CAACP,GAAW,EAAE,eAAeK,EAAK,eAAe,CAAC;AAAA,EAAA,IAIlF;AAAA,IACL,GAAGA;AAAA,IACH,eAAeE,EAAoB,CAACP,GAAW,EAAE,eAAeK,EAAK,eAAe,CAAC;AAAA,EAAA;AAEzF;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentType } from 'react';
|
|
2
2
|
import { UseFormProps } from 'react-hook-form';
|
|
3
|
-
import { Location } from '@gusto/embedded-api
|
|
4
|
-
import { EmployeeWorkAddress } from '@gusto/embedded-api
|
|
3
|
+
import { Location } from '@gusto/embedded-api/models/components/location';
|
|
4
|
+
import { EmployeeWorkAddress } from '@gusto/embedded-api/models/components/employeeworkaddress';
|
|
5
5
|
import { WorkAddressOptionalFieldsToRequire, WorkAddressFormData } from './workAddressSchema';
|
|
6
6
|
import { LocationFieldProps, EffectiveDateFieldProps } from './fields';
|
|
7
7
|
import { BaseFormHookReady, FieldMetadata, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useMemo as C } from "react";
|
|
2
2
|
import { useForm as N } from "react-hook-form";
|
|
3
3
|
import { zodResolver as X } from "@hookform/resolvers/zod";
|
|
4
|
-
import { useLocationsGet as Y } from "@gusto/embedded-api
|
|
5
|
-
import { useEmployeeAddressesRetrieveWorkAddress as Z } from "@gusto/embedded-api
|
|
6
|
-
import { useEmployeeAddressesCreateWorkAddressMutation as _ } from "@gusto/embedded-api
|
|
7
|
-
import { useEmployeeAddressesUpdateWorkAddressMutation as $ } from "@gusto/embedded-api
|
|
8
|
-
import { RFCDate as T } from "@gusto/embedded-api
|
|
4
|
+
import { useLocationsGet as Y } from "@gusto/embedded-api/react-query/locationsGet";
|
|
5
|
+
import { useEmployeeAddressesRetrieveWorkAddress as Z } from "@gusto/embedded-api/react-query/employeeAddressesRetrieveWorkAddress";
|
|
6
|
+
import { useEmployeeAddressesCreateWorkAddressMutation as _ } from "@gusto/embedded-api/react-query/employeeAddressesCreateWorkAddress";
|
|
7
|
+
import { useEmployeeAddressesUpdateWorkAddressMutation as $ } from "@gusto/embedded-api/react-query/employeeAddressesUpdateWorkAddress";
|
|
8
|
+
import { RFCDate as T } from "@gusto/embedded-api/types/rfcdate";
|
|
9
9
|
import { createWorkAddressSchema as ee } from "./workAddressSchema.js";
|
|
10
10
|
import { EffectiveDateField as oe, LocationField as te } from "./fields.js";
|
|
11
11
|
import { useDeriveFieldsMetadata as re } from "../../../../../partner-hook-utils/form/useDeriveFieldsMetadata.js";
|
package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWorkAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.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 { Location } from '@gusto/embedded-api-v-2026-02-01/models/components/location'\nimport type { EmployeeWorkAddress } from '@gusto/embedded-api-v-2026-02-01/models/components/employeeworkaddress'\nimport { useLocationsGet } from '@gusto/embedded-api-v-2026-02-01/react-query/locationsGet'\nimport { useEmployeeAddressesRetrieveWorkAddress } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeAddressesRetrieveWorkAddress'\nimport { useEmployeeAddressesCreateWorkAddressMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeAddressesCreateWorkAddress'\nimport { useEmployeeAddressesUpdateWorkAddressMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeAddressesUpdateWorkAddress'\nimport { RFCDate } from '@gusto/embedded-api-v-2026-02-01/types/rfcdate'\nimport {\n createWorkAddressSchema,\n type WorkAddressOptionalFieldsToRequire,\n type WorkAddressFormData,\n type WorkAddressFormOutputs,\n} from './workAddressSchema'\nimport type { LocationFieldProps, EffectiveDateFieldProps } from './fields'\nimport { LocationField, EffectiveDateField } 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 { addressInline } from '@/helpers/formattedStrings'\n\nexport type { WorkAddressOptionalFieldsToRequire } from './workAddressSchema'\n\n/** @internal */\nfunction buildWorkAddressFieldsMetadata(\n base: Record<keyof WorkAddressFormData, FieldMetadata>,\n {\n locationOptions,\n companyLocations,\n }: {\n locationOptions: Array<{ label: string; value: string }>\n companyLocations: Location[]\n },\n) {\n return {\n locationUuid: withOptions<Location>(base.locationUuid, locationOptions, companyLocations),\n effectiveDate: base.effectiveDate,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional callbacks passed to {@link UseWorkAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @remarks\n * Only the callback matching the submit mode fires —\n * `onWorkAddressCreated` on create, `onWorkAddressUpdated` on update.\n *\n * @public\n */\nexport interface WorkAddressSubmitCallbacks {\n /** Fired after a new work address is successfully created. */\n onWorkAddressCreated?: (workAddress: EmployeeWorkAddress) => void\n /** Fired after an existing work address is successfully updated. */\n onWorkAddressUpdated?: (workAddress: EmployeeWorkAddress) => void\n}\n\n/**\n * Optional overrides passed to {@link UseWorkAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @public\n */\nexport interface WorkAddressSubmitOptions {\n /** Override the employee identifier supplied to the hook (e.g. after creating a new employee in the same flow). */\n employeeId?: string\n /** Override the effective date submitted with the address. */\n effectiveDate?: string\n}\n\n/**\n * Configuration options for {@link useWorkAddressForm}.\n *\n * @remarks\n * Presence or absence of `workAddressUuid` selects the API verb — see the\n * `workAddressUuid` field description. `companyId` is required to fetch\n * the location list; pass it when it is known.\n *\n * @public\n */\nexport interface UseWorkAddressFormProps {\n /** Company UUID for locations; omit or leave unset while resolving from the employee record. */\n companyId?: string\n /** UUID of the employee whose work address is being created or edited. */\n employeeId: string\n /**\n * When set, loads that work address via GET `/v1/work_addresses/{work_address_uuid}` and updates it (PUT).\n * When omitted, the form is in create mode (POST).\n */\n workAddressUuid?: string\n /**\n * Pre-loaded address matching `workAddressUuid`. When supplied, the form uses it directly\n * instead of issuing a GET — useful when the parent already has the row from a list query.\n */\n initialAddress?: EmployeeWorkAddress\n /** When `true`, renders `Fields.EffectiveDate`; otherwise it is `undefined`. Defaults to `true`. */\n withEffectiveDateField?: boolean\n /** Override fields that are optional on a given mode to be required. See `WorkAddressOptionalFieldsToRequire`. */\n optionalFieldsToRequire?: WorkAddressOptionalFieldsToRequire\n /** Pre-fill form values. Server data takes precedence on update. */\n defaultValues?: Partial<WorkAddressFormData>\n /** 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` so submit-time focus is coordinated across multiple forms. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Pre-bound field components exposed on `useWorkAddressForm().form.Fields`.\n *\n * @remarks\n * `EffectiveDate` is `undefined` when `withEffectiveDateField` is `false`.\n * Always null-check it before rendering.\n *\n * @public\n */\nexport interface WorkAddressFormFields {\n /** Bound to `locationUuid`. Location selector. Always available. */\n Location: ComponentType<LocationFieldProps>\n /** Bound to `effectiveDate`. Effective-date picker. Only available when `withEffectiveDateField` is `true`. */\n EffectiveDate: ComponentType<EffectiveDateFieldProps> | undefined\n}\n\n/**\n * Ready-state shape returned by {@link useWorkAddressForm} once data has loaded.\n *\n * @remarks\n * Discriminated by `isLoading: false`. Extends {@link BaseFormHookReady} with\n * the work-address-specific `data`, `status`, `actions`, and `form.Fields` shape.\n *\n * @public\n */\nexport interface UseWorkAddressFormReady extends BaseFormHookReady<\n WorkAddressFieldsMetadata,\n WorkAddressFormData,\n WorkAddressFormFields\n> {\n /** Static entity data resolved from the API. */\n data: {\n /** The address row loaded for update; `null` in create mode. */\n workAddress: EmployeeWorkAddress | null\n /** Company locations available for selection; `undefined` until the locations query resolves. */\n companyLocations: Location[] | undefined\n }\n /** Reactive status flags. */\n status: { isPending: boolean; mode: 'create' | 'update' }\n /** Available actions. */\n actions: {\n onSubmit: (\n callbacks?: WorkAddressSubmitCallbacks,\n options?: WorkAddressSubmitOptions,\n ) => Promise<HookSubmitResult<EmployeeWorkAddress> | undefined>\n }\n}\n\n/**\n * Form hook for creating or editing an employee's work address.\n *\n * @remarks\n * When `workAddressUuid` is supplied the hook loads that address and issues a PUT on submit;\n * when omitted it operates in create mode and issues a POST. The hook requires `companyId`\n * to fetch the company's location list — it stays in loading state until `companyId` is known.\n *\n * @param props - See {@link UseWorkAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseWorkAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useWorkAddressForm,\n * SDKFormProvider,\n * type UseWorkAddressFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function WorkAddressPage({ companyId, employeeId }: { companyId: string; employeeId: string }) {\n * const workAddress = useWorkAddressForm({ companyId, employeeId })\n *\n * if (workAddress.isLoading) return <div>Loading...</div>\n *\n * return <WorkAddressReady workAddress={workAddress} />\n * }\n *\n * function WorkAddressReady({ workAddress }: { workAddress: UseWorkAddressFormReady }) {\n * const { Fields } = workAddress.form\n *\n * return (\n * <SDKFormProvider formHookResult={workAddress}>\n * <form onSubmit={e => { e.preventDefault(); void workAddress.actions.onSubmit() }}>\n * <Fields.Location label=\"Work address\" />\n * {Fields.EffectiveDate && <Fields.EffectiveDate label=\"Effective date\" />}\n * <button type=\"submit\" disabled={workAddress.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useWorkAddressForm({\n companyId,\n employeeId,\n workAddressUuid,\n initialAddress,\n withEffectiveDateField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseWorkAddressFormProps): HookLoadingResult | UseWorkAddressFormReady {\n const locationsQuery = useLocationsGet({ companyId: companyId ?? '' }, { enabled: !!companyId })\n\n const hasInitialAddressMatch = !!workAddressUuid && initialAddress?.uuid === workAddressUuid\n\n const retrieveWorkAddressQuery = useEmployeeAddressesRetrieveWorkAddress(\n { workAddressUuid: workAddressUuid ?? '' },\n { enabled: !!workAddressUuid && !hasInitialAddressMatch },\n )\n\n const companyLocations = locationsQuery.data?.companyLocationsList\n\n const isCreateMode = !workAddressUuid\n\n const fetchedWorkAddress = workAddressUuid\n ? hasInitialAddressMatch\n ? initialAddress\n : retrieveWorkAddressQuery.data?.employeeWorkAddress\n : undefined\n\n const schemaMode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () =>\n createWorkAddressSchema({\n mode: schemaMode,\n optionalFieldsToRequire,\n withEffectiveDateField,\n }),\n [schemaMode, optionalFieldsToRequire, withEffectiveDateField],\n )\n\n const resolvedDefaults: WorkAddressFormData = useMemo(\n () => ({\n locationUuid: fetchedWorkAddress?.locationUuid ?? partnerDefaults?.locationUuid ?? '',\n effectiveDate: fetchedWorkAddress?.effectiveDate ?? partnerDefaults?.effectiveDate ?? '',\n }),\n [fetchedWorkAddress, partnerDefaults],\n )\n\n const formMethods = useForm<WorkAddressFormData, unknown, WorkAddressFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createWorkAddressMutation = useEmployeeAddressesCreateWorkAddressMutation()\n const updateWorkAddressMutation = useEmployeeAddressesUpdateWorkAddressMutation()\n\n const isPending = createWorkAddressMutation.isPending || updateWorkAddressMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('WorkAddressForm')\n\n const queriesForErrors = [locationsQuery, ...(workAddressUuid ? [retrieveWorkAddressQuery] : [])]\n const errorHandling = composeErrorHandler(queriesForErrors, { submitError, setSubmitError })\n\n const locationOptions = (companyLocations ?? []).map(location => ({\n value: location.uuid,\n label: addressInline(location),\n }))\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildWorkAddressFieldsMetadata(baseMetadata, {\n locationOptions,\n companyLocations: companyLocations ?? [],\n })\n\n const onSubmit = async (\n callbacks?: WorkAddressSubmitCallbacks,\n options?: WorkAddressSubmitOptions,\n ): Promise<HookSubmitResult<EmployeeWorkAddress> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeWorkAddress> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: WorkAddressFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedEmployeeId = options?.employeeId ?? employeeId\n\n if (!resolvedEmployeeId) {\n throw new SDKInternalError('employeeId is required to submit work address')\n }\n\n const resolvedEffectiveDate =\n withEffectiveDateField && payload.effectiveDate\n ? payload.effectiveDate\n : options?.effectiveDate\n\n const effectiveDateParam = resolvedEffectiveDate\n ? new RFCDate(new Date(resolvedEffectiveDate))\n : undefined\n\n let updatedWorkAddress: EmployeeWorkAddress\n\n if (isCreateMode) {\n const result = await createWorkAddressMutation.mutateAsync({\n request: {\n employeeId: resolvedEmployeeId,\n requestBody: {\n locationUuid: payload.locationUuid,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeWorkAddress) {\n throw new SDKInternalError('Work address creation failed')\n }\n\n updatedWorkAddress = result.employeeWorkAddress\n callbacks?.onWorkAddressCreated?.(updatedWorkAddress)\n } else {\n if (!fetchedWorkAddress || !workAddressUuid) {\n throw new SDKInternalError(\n 'Cannot update work address: no matching address on file',\n )\n }\n\n const result = await updateWorkAddressMutation.mutateAsync({\n request: {\n workAddressUuid: fetchedWorkAddress.uuid,\n requestBody: {\n version: fetchedWorkAddress.version,\n locationUuid: payload.locationUuid,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeWorkAddress) {\n throw new SDKInternalError('Work address update failed')\n }\n\n updatedWorkAddress = result.employeeWorkAddress\n callbacks?.onWorkAddressUpdated?.(updatedWorkAddress)\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedWorkAddress,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const isDataLoading =\n (!!companyId && locationsQuery.isLoading) ||\n (!!workAddressUuid && retrieveWorkAddressQuery.isLoading)\n\n if (!companyId || isDataLoading || !companyLocations) {\n return { isLoading: true as const, errorHandling }\n }\n\n if (workAddressUuid && !fetchedWorkAddress) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n workAddress: fetchedWorkAddress ?? null,\n companyLocations,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Location: LocationField,\n EffectiveDate: withEffectiveDateField ? EffectiveDateField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Discriminated union returned by {@link useWorkAddressForm}.\n *\n * @public\n */\nexport type UseWorkAddressFormResult = HookLoadingResult | UseWorkAddressFormReady\n/**\n * Type of `form.fieldsMetadata` returned by {@link useWorkAddressForm}.\n *\n * @public\n */\nexport type WorkAddressFieldsMetadata = ReturnType<typeof buildWorkAddressFieldsMetadata>\n"],"names":["buildWorkAddressFieldsMetadata","base","locationOptions","companyLocations","withOptions","useWorkAddressForm","companyId","employeeId","workAddressUuid","initialAddress","withEffectiveDateField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","locationsQuery","useLocationsGet","hasInitialAddressMatch","retrieveWorkAddressQuery","useEmployeeAddressesRetrieveWorkAddress","isCreateMode","fetchedWorkAddress","schemaMode","schema","metadataConfig","useMemo","createWorkAddressSchema","resolvedDefaults","formMethods","useForm","zodResolver","createWorkAddressMutation","useEmployeeAddressesCreateWorkAddressMutation","updateWorkAddressMutation","useEmployeeAddressesUpdateWorkAddressMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","queriesForErrors","errorHandling","composeErrorHandler","location","addressInline","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","callbacks","options","submitResult","resolve","data","payload","resolvedEmployeeId","SDKInternalError","resolvedEffectiveDate","effectiveDateParam","RFCDate","updatedWorkAddress","result","hookFormInternals","useHookFormInternals","isDataLoading","LocationField","EffectiveDateField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useWorkAddressForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.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 { Location } from '@gusto/embedded-api/models/components/location'\nimport type { EmployeeWorkAddress } from '@gusto/embedded-api/models/components/employeeworkaddress'\nimport { useLocationsGet } from '@gusto/embedded-api/react-query/locationsGet'\nimport { useEmployeeAddressesRetrieveWorkAddress } from '@gusto/embedded-api/react-query/employeeAddressesRetrieveWorkAddress'\nimport { useEmployeeAddressesCreateWorkAddressMutation } from '@gusto/embedded-api/react-query/employeeAddressesCreateWorkAddress'\nimport { useEmployeeAddressesUpdateWorkAddressMutation } from '@gusto/embedded-api/react-query/employeeAddressesUpdateWorkAddress'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport {\n createWorkAddressSchema,\n type WorkAddressOptionalFieldsToRequire,\n type WorkAddressFormData,\n type WorkAddressFormOutputs,\n} from './workAddressSchema'\nimport type { LocationFieldProps, EffectiveDateFieldProps } from './fields'\nimport { LocationField, EffectiveDateField } 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 { addressInline } from '@/helpers/formattedStrings'\n\nexport type { WorkAddressOptionalFieldsToRequire } from './workAddressSchema'\n\n/** @internal */\nfunction buildWorkAddressFieldsMetadata(\n base: Record<keyof WorkAddressFormData, FieldMetadata>,\n {\n locationOptions,\n companyLocations,\n }: {\n locationOptions: Array<{ label: string; value: string }>\n companyLocations: Location[]\n },\n) {\n return {\n locationUuid: withOptions<Location>(base.locationUuid, locationOptions, companyLocations),\n effectiveDate: base.effectiveDate,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional callbacks passed to {@link UseWorkAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @remarks\n * Only the callback matching the submit mode fires —\n * `onWorkAddressCreated` on create, `onWorkAddressUpdated` on update.\n *\n * @public\n */\nexport interface WorkAddressSubmitCallbacks {\n /** Fired after a new work address is successfully created. */\n onWorkAddressCreated?: (workAddress: EmployeeWorkAddress) => void\n /** Fired after an existing work address is successfully updated. */\n onWorkAddressUpdated?: (workAddress: EmployeeWorkAddress) => void\n}\n\n/**\n * Optional overrides passed to {@link UseWorkAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @public\n */\nexport interface WorkAddressSubmitOptions {\n /** Override the employee identifier supplied to the hook (e.g. after creating a new employee in the same flow). */\n employeeId?: string\n /** Override the effective date submitted with the address. */\n effectiveDate?: string\n}\n\n/**\n * Configuration options for {@link useWorkAddressForm}.\n *\n * @remarks\n * Presence or absence of `workAddressUuid` selects the API verb — see the\n * `workAddressUuid` field description. `companyId` is required to fetch\n * the location list; pass it when it is known.\n *\n * @public\n */\nexport interface UseWorkAddressFormProps {\n /** Company UUID for locations; omit or leave unset while resolving from the employee record. */\n companyId?: string\n /** UUID of the employee whose work address is being created or edited. */\n employeeId: string\n /**\n * When set, loads that work address via GET `/v1/work_addresses/{work_address_uuid}` and updates it (PUT).\n * When omitted, the form is in create mode (POST).\n */\n workAddressUuid?: string\n /**\n * Pre-loaded address matching `workAddressUuid`. When supplied, the form uses it directly\n * instead of issuing a GET — useful when the parent already has the row from a list query.\n */\n initialAddress?: EmployeeWorkAddress\n /** When `true`, renders `Fields.EffectiveDate`; otherwise it is `undefined`. Defaults to `true`. */\n withEffectiveDateField?: boolean\n /** Override fields that are optional on a given mode to be required. See `WorkAddressOptionalFieldsToRequire`. */\n optionalFieldsToRequire?: WorkAddressOptionalFieldsToRequire\n /** Pre-fill form values. Server data takes precedence on update. */\n defaultValues?: Partial<WorkAddressFormData>\n /** 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` so submit-time focus is coordinated across multiple forms. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Pre-bound field components exposed on `useWorkAddressForm().form.Fields`.\n *\n * @remarks\n * `EffectiveDate` is `undefined` when `withEffectiveDateField` is `false`.\n * Always null-check it before rendering.\n *\n * @public\n */\nexport interface WorkAddressFormFields {\n /** Bound to `locationUuid`. Location selector. Always available. */\n Location: ComponentType<LocationFieldProps>\n /** Bound to `effectiveDate`. Effective-date picker. Only available when `withEffectiveDateField` is `true`. */\n EffectiveDate: ComponentType<EffectiveDateFieldProps> | undefined\n}\n\n/**\n * Ready-state shape returned by {@link useWorkAddressForm} once data has loaded.\n *\n * @remarks\n * Discriminated by `isLoading: false`. Extends {@link BaseFormHookReady} with\n * the work-address-specific `data`, `status`, `actions`, and `form.Fields` shape.\n *\n * @public\n */\nexport interface UseWorkAddressFormReady extends BaseFormHookReady<\n WorkAddressFieldsMetadata,\n WorkAddressFormData,\n WorkAddressFormFields\n> {\n /** Static entity data resolved from the API. */\n data: {\n /** The address row loaded for update; `null` in create mode. */\n workAddress: EmployeeWorkAddress | null\n /** Company locations available for selection; `undefined` until the locations query resolves. */\n companyLocations: Location[] | undefined\n }\n /** Reactive status flags. */\n status: { isPending: boolean; mode: 'create' | 'update' }\n /** Available actions. */\n actions: {\n onSubmit: (\n callbacks?: WorkAddressSubmitCallbacks,\n options?: WorkAddressSubmitOptions,\n ) => Promise<HookSubmitResult<EmployeeWorkAddress> | undefined>\n }\n}\n\n/**\n * Form hook for creating or editing an employee's work address.\n *\n * @remarks\n * When `workAddressUuid` is supplied the hook loads that address and issues a PUT on submit;\n * when omitted it operates in create mode and issues a POST. The hook requires `companyId`\n * to fetch the company's location list — it stays in loading state until `companyId` is known.\n *\n * @param props - See {@link UseWorkAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseWorkAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useWorkAddressForm,\n * SDKFormProvider,\n * type UseWorkAddressFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function WorkAddressPage({ companyId, employeeId }: { companyId: string; employeeId: string }) {\n * const workAddress = useWorkAddressForm({ companyId, employeeId })\n *\n * if (workAddress.isLoading) return <div>Loading...</div>\n *\n * return <WorkAddressReady workAddress={workAddress} />\n * }\n *\n * function WorkAddressReady({ workAddress }: { workAddress: UseWorkAddressFormReady }) {\n * const { Fields } = workAddress.form\n *\n * return (\n * <SDKFormProvider formHookResult={workAddress}>\n * <form onSubmit={e => { e.preventDefault(); void workAddress.actions.onSubmit() }}>\n * <Fields.Location label=\"Work address\" />\n * {Fields.EffectiveDate && <Fields.EffectiveDate label=\"Effective date\" />}\n * <button type=\"submit\" disabled={workAddress.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useWorkAddressForm({\n companyId,\n employeeId,\n workAddressUuid,\n initialAddress,\n withEffectiveDateField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseWorkAddressFormProps): HookLoadingResult | UseWorkAddressFormReady {\n const locationsQuery = useLocationsGet({ companyId: companyId ?? '' }, { enabled: !!companyId })\n\n const hasInitialAddressMatch = !!workAddressUuid && initialAddress?.uuid === workAddressUuid\n\n const retrieveWorkAddressQuery = useEmployeeAddressesRetrieveWorkAddress(\n { workAddressUuid: workAddressUuid ?? '' },\n { enabled: !!workAddressUuid && !hasInitialAddressMatch },\n )\n\n const companyLocations = locationsQuery.data?.companyLocationsList\n\n const isCreateMode = !workAddressUuid\n\n const fetchedWorkAddress = workAddressUuid\n ? hasInitialAddressMatch\n ? initialAddress\n : retrieveWorkAddressQuery.data?.employeeWorkAddress\n : undefined\n\n const schemaMode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () =>\n createWorkAddressSchema({\n mode: schemaMode,\n optionalFieldsToRequire,\n withEffectiveDateField,\n }),\n [schemaMode, optionalFieldsToRequire, withEffectiveDateField],\n )\n\n const resolvedDefaults: WorkAddressFormData = useMemo(\n () => ({\n locationUuid: fetchedWorkAddress?.locationUuid ?? partnerDefaults?.locationUuid ?? '',\n effectiveDate: fetchedWorkAddress?.effectiveDate ?? partnerDefaults?.effectiveDate ?? '',\n }),\n [fetchedWorkAddress, partnerDefaults],\n )\n\n const formMethods = useForm<WorkAddressFormData, unknown, WorkAddressFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createWorkAddressMutation = useEmployeeAddressesCreateWorkAddressMutation()\n const updateWorkAddressMutation = useEmployeeAddressesUpdateWorkAddressMutation()\n\n const isPending = createWorkAddressMutation.isPending || updateWorkAddressMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('WorkAddressForm')\n\n const queriesForErrors = [locationsQuery, ...(workAddressUuid ? [retrieveWorkAddressQuery] : [])]\n const errorHandling = composeErrorHandler(queriesForErrors, { submitError, setSubmitError })\n\n const locationOptions = (companyLocations ?? []).map(location => ({\n value: location.uuid,\n label: addressInline(location),\n }))\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildWorkAddressFieldsMetadata(baseMetadata, {\n locationOptions,\n companyLocations: companyLocations ?? [],\n })\n\n const onSubmit = async (\n callbacks?: WorkAddressSubmitCallbacks,\n options?: WorkAddressSubmitOptions,\n ): Promise<HookSubmitResult<EmployeeWorkAddress> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeWorkAddress> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: WorkAddressFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedEmployeeId = options?.employeeId ?? employeeId\n\n if (!resolvedEmployeeId) {\n throw new SDKInternalError('employeeId is required to submit work address')\n }\n\n const resolvedEffectiveDate =\n withEffectiveDateField && payload.effectiveDate\n ? payload.effectiveDate\n : options?.effectiveDate\n\n const effectiveDateParam = resolvedEffectiveDate\n ? new RFCDate(new Date(resolvedEffectiveDate))\n : undefined\n\n let updatedWorkAddress: EmployeeWorkAddress\n\n if (isCreateMode) {\n const result = await createWorkAddressMutation.mutateAsync({\n request: {\n employeeId: resolvedEmployeeId,\n requestBody: {\n locationUuid: payload.locationUuid,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeWorkAddress) {\n throw new SDKInternalError('Work address creation failed')\n }\n\n updatedWorkAddress = result.employeeWorkAddress\n callbacks?.onWorkAddressCreated?.(updatedWorkAddress)\n } else {\n if (!fetchedWorkAddress || !workAddressUuid) {\n throw new SDKInternalError(\n 'Cannot update work address: no matching address on file',\n )\n }\n\n const result = await updateWorkAddressMutation.mutateAsync({\n request: {\n workAddressUuid: fetchedWorkAddress.uuid,\n requestBody: {\n version: fetchedWorkAddress.version,\n locationUuid: payload.locationUuid,\n effectiveDate: effectiveDateParam,\n },\n },\n })\n\n if (!result.employeeWorkAddress) {\n throw new SDKInternalError('Work address update failed')\n }\n\n updatedWorkAddress = result.employeeWorkAddress\n callbacks?.onWorkAddressUpdated?.(updatedWorkAddress)\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedWorkAddress,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const isDataLoading =\n (!!companyId && locationsQuery.isLoading) ||\n (!!workAddressUuid && retrieveWorkAddressQuery.isLoading)\n\n if (!companyId || isDataLoading || !companyLocations) {\n return { isLoading: true as const, errorHandling }\n }\n\n if (workAddressUuid && !fetchedWorkAddress) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n workAddress: fetchedWorkAddress ?? null,\n companyLocations,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Location: LocationField,\n EffectiveDate: withEffectiveDateField ? EffectiveDateField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Discriminated union returned by {@link useWorkAddressForm}.\n *\n * @public\n */\nexport type UseWorkAddressFormResult = HookLoadingResult | UseWorkAddressFormReady\n/**\n * Type of `form.fieldsMetadata` returned by {@link useWorkAddressForm}.\n *\n * @public\n */\nexport type WorkAddressFieldsMetadata = ReturnType<typeof buildWorkAddressFieldsMetadata>\n"],"names":["buildWorkAddressFieldsMetadata","base","locationOptions","companyLocations","withOptions","useWorkAddressForm","companyId","employeeId","workAddressUuid","initialAddress","withEffectiveDateField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","locationsQuery","useLocationsGet","hasInitialAddressMatch","retrieveWorkAddressQuery","useEmployeeAddressesRetrieveWorkAddress","isCreateMode","fetchedWorkAddress","schemaMode","schema","metadataConfig","useMemo","createWorkAddressSchema","resolvedDefaults","formMethods","useForm","zodResolver","createWorkAddressMutation","useEmployeeAddressesCreateWorkAddressMutation","updateWorkAddressMutation","useEmployeeAddressesUpdateWorkAddressMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","queriesForErrors","errorHandling","composeErrorHandler","location","addressInline","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","callbacks","options","submitResult","resolve","data","payload","resolvedEmployeeId","SDKInternalError","resolvedEffectiveDate","effectiveDateParam","RFCDate","updatedWorkAddress","result","hookFormInternals","useHookFormInternals","isDataLoading","LocationField","EffectiveDateField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PaymentMethodBankAccount } from '@gusto/embedded-api
|
|
1
|
+
import { PaymentMethodBankAccount } from '@gusto/embedded-api/models/components/paymentmethodbankaccount';
|
|
2
2
|
import { FlowContextInterface } from '../../Flow/useFlow';
|
|
3
3
|
import { BaseComponentInterface } from '../../Base';
|
|
4
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelfOnboardingComponents.js","sources":["../../../../src/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.tsx"],"sourcesContent":["import type { PaymentMethodBankAccount } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"SelfOnboardingComponents.js","sources":["../../../../src/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.tsx"],"sourcesContent":["import type { PaymentMethodBankAccount } from '@gusto/embedded-api/models/components/paymentmethodbankaccount'\nimport { ensureRequired } from '@/helpers/ensureRequired'\nimport type { FlowContextInterface } from '@/components/Flow/useFlow'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { Landing as LandingComponent } from '@/components/Employee/Landing'\nimport { Profile as ProfileComponent } from '@/components/Employee/Profile/onboarding/Profile'\nimport { FederalTaxes as FederalTaxesComponent } from '@/components/Employee/FederalTaxes/onboarding/FederalTaxes'\nimport { StateTaxes as StateTaxesComponent } from '@/components/Employee/StateTaxes/onboarding'\nimport { PaymentMethod as PaymentMethodComponent } from '@/components/Employee/PaymentMethod'\nimport { OnboardingSummary as OnboardingSummaryComponent } from '@/components/Employee/OnboardingSummary'\nimport { DocumentSigner as DocumentSignerComponent } from '@/components/Employee/Documents/onboarding/DocumentSigner'\n\n/**\n * Props for {@link SelfOnboardingFlow}.\n *\n * @public\n */\nexport interface SelfOnboardingFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** The associated employee identifier. */\n employeeId: string\n /** When true, the Document Signer step checks if the employee has I-9 enabled and routes to the Employment Eligibility and I-9 signature form steps. Defaults to `false`. */\n withEmployeeI9?: boolean\n}\n\n/** @internal */\nexport interface SelfOnboardingContextInterface extends FlowContextInterface {\n companyId: string\n employeeId: string\n withEmployeeI9?: boolean\n paymentMethod?: PaymentMethodBankAccount\n}\n\n/** @internal */\nexport function Landing() {\n const { companyId, employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <LandingComponent\n companyId={ensureRequired(companyId)}\n employeeId={ensureRequired(employeeId)}\n onEvent={onEvent}\n />\n )\n}\n\n/** @internal */\nexport function Profile() {\n const { companyId, employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <ProfileComponent\n companyId={ensureRequired(companyId)}\n employeeId={ensureRequired(employeeId)}\n onEvent={onEvent}\n isAdmin={false}\n />\n )\n}\n\n/** @internal */\nexport function FederalTaxes() {\n const { employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return <FederalTaxesComponent employeeId={ensureRequired(employeeId)} onEvent={onEvent} />\n}\n\n/** @internal */\nexport function StateTaxes() {\n const { employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <StateTaxesComponent\n employeeId={ensureRequired(employeeId)}\n onEvent={onEvent}\n isAdmin={false}\n />\n )\n}\n\n/** @internal */\nexport function PaymentMethod() {\n const { employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return <PaymentMethodComponent employeeId={ensureRequired(employeeId)} onEvent={onEvent} />\n}\n\n/** @internal */\nexport function OnboardingSummary() {\n const { employeeId, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <OnboardingSummaryComponent\n employeeId={ensureRequired(employeeId)}\n onEvent={onEvent}\n isAdmin={false}\n />\n )\n}\n\n/** @internal */\nexport function DocumentSigner() {\n const { employeeId, withEmployeeI9 = false, onEvent } = useFlow<SelfOnboardingContextInterface>()\n return (\n <DocumentSignerComponent\n employeeId={ensureRequired(employeeId)}\n withEmployeeI9={withEmployeeI9}\n onEvent={onEvent}\n />\n )\n}\n"],"names":["Landing","companyId","employeeId","onEvent","useFlow","jsx","LandingComponent","ensureRequired","Profile","ProfileComponent","FederalTaxes","FederalTaxesComponent","StateTaxes","StateTaxesComponent","PaymentMethod","PaymentMethodComponent","OnboardingSummary","OnboardingSummaryComponent","DocumentSigner","withEmployeeI9","DocumentSignerComponent"],"mappings":";;;;;;;;;;AAoCO,SAASA,IAAU;AACxB,QAAM,EAAE,WAAAC,GAAW,YAAAC,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAC3C,SACE,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,WAAWC,EAAeN,CAAS;AAAA,MACnC,YAAYM,EAAeL,CAAU;AAAA,MACrC,SAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASK,IAAU;AACxB,QAAM,EAAE,WAAAP,GAAW,YAAAC,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAC3C,SACE,gBAAAC;AAAA,IAACI;AAAAA,IAAA;AAAA,MACC,WAAWF,EAAeN,CAAS;AAAA,MACnC,YAAYM,EAAeL,CAAU;AAAA,MACrC,SAAAC;AAAA,MACA,SAAS;AAAA,IAAA;AAAA,EAAA;AAGf;AAGO,SAASO,IAAe;AAC7B,QAAM,EAAE,YAAAR,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAChC,2BAAQO,GAAA,EAAsB,YAAYJ,EAAeL,CAAU,GAAG,SAAAC,GAAkB;AAC1F;AAGO,SAASS,IAAa;AAC3B,QAAM,EAAE,YAAAV,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAChC,SACE,gBAAAC;AAAA,IAACQ;AAAAA,IAAA;AAAA,MACC,YAAYN,EAAeL,CAAU;AAAA,MACrC,SAAAC;AAAA,MACA,SAAS;AAAA,IAAA;AAAA,EAAA;AAGf;AAGO,SAASW,IAAgB;AAC9B,QAAM,EAAE,YAAAZ,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAChC,2BAAQW,GAAA,EAAuB,YAAYR,EAAeL,CAAU,GAAG,SAAAC,GAAkB;AAC3F;AAGO,SAASa,IAAoB;AAClC,QAAM,EAAE,YAAAd,GAAY,SAAAC,EAAA,IAAYC,EAAA;AAChC,SACE,gBAAAC;AAAA,IAACY;AAAAA,IAAA;AAAA,MACC,YAAYV,EAAeL,CAAU;AAAA,MACrC,SAAAC;AAAA,MACA,SAAS;AAAA,IAAA;AAAA,EAAA;AAGf;AAGO,SAASe,IAAiB;AAC/B,QAAM,EAAE,YAAAhB,GAAY,gBAAAiB,IAAiB,IAAO,SAAAhB,EAAA,IAAYC,EAAA;AACxD,SACE,gBAAAC;AAAA,IAACe;AAAAA,IAAA;AAAA,MACC,YAAYb,EAAeL,CAAU;AAAA,MACrC,gBAAAiB;AAAA,MACA,SAAAhB;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateTaxesCard.js","sources":["../../../../../../src/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeStateTaxQuestion } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"StateTaxesCard.js","sources":["../../../../../../src/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeStateTaxQuestion } from '@gusto/embedded-api/models/components/employeestatetaxquestion'\nimport { useStateTaxesSummary } from '../../shared/useStateTaxesSummary'\nimport { Flex } from '@/components/Common/Flex/Flex'\nimport { Loading } from '@/components/Common'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\n\n/**\n * Props for {@link StateTaxesCard}.\n *\n * @public\n */\nexport interface StateTaxesCardProps {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when the Edit button is clicked. */\n onEvent: OnEventType<EventType, unknown>\n}\n\n/**\n * Standalone read-only summary card showing an employee's per-state tax\n * withholding answers. Fetches its own data and surfaces an Edit button\n * that emits an event for the orchestrator to swap in the edit form.\n *\n * @remarks\n * The Edit button is hidden when no state on record has any tax-withholding\n * questions (e.g. states with no income tax), since there is nothing to edit.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/management/stateTaxes/editRequested` | Edit button was clicked | `{ employeeId: string }` |\n *\n * @param props - The component props.\n * @public\n */\nexport function StateTaxesCard(props: StateTaxesCardProps) {\n return (\n <BaseBoundaries componentName=\"Employee.Management.StateTaxes\">\n <StateTaxesCardContent {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction StateTaxesCardContent({ employeeId, onEvent }: StateTaxesCardProps) {\n useI18n('Employee.Management.StateTaxes')\n const { t } = useTranslation('Employee.Management.StateTaxes')\n const { t: tCommon } = useTranslation('common')\n const Components = useComponentContext()\n const formatCurrency = useNumberFormatter('currency')\n\n const summary = useStateTaxesSummary({ employeeId })\n const isLoading = summary.isLoading\n const stateTaxes = summary.isLoading ? [] : summary.data.employeeStateTaxesList\n\n const stateTaxesHaveAnyQuestions = stateTaxes.some(s => (s.questions?.length ?? 0) > 0)\n\n const formatStateTaxAnswer = (\n question: EmployeeStateTaxQuestion,\n answer: string | number | boolean,\n ) => {\n if (\n question.inputQuestionFormat.type === 'Select' &&\n question.inputQuestionFormat.options &&\n question.inputQuestionFormat.options.length > 0\n ) {\n const option = question.inputQuestionFormat.options.find(opt => opt.value === answer)\n if (option?.label) {\n return option.label\n }\n }\n\n if (typeof answer === 'number') {\n if (question.inputQuestionFormat.type === 'Currency') {\n return formatCurrency(answer)\n }\n return answer\n }\n\n if (typeof answer === 'string' && !isNaN(parseFloat(answer))) {\n const numValue = parseFloat(answer)\n if (question.inputQuestionFormat.type === 'Currency') {\n return formatCurrency(numValue)\n }\n return answer\n }\n\n if (typeof answer === 'boolean') {\n return answer ? t('card.yes') : t('card.no')\n }\n\n return answer\n }\n\n const emptyPlaceholder = <span aria-label={t('card.listEmptyPlaceholder')}>–</span>\n\n const handleEdit = () => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_STATE_TAXES_EDIT_REQUESTED, { employeeId })\n }\n\n return (\n <BaseLayout error={summary.errorHandling.errors}>\n <Components.Box\n header={\n <Components.BoxHeader\n title={t('card.title')}\n action={\n isLoading || stateTaxesHaveAnyQuestions ? (\n <Components.Button variant=\"secondary\" onClick={handleEdit} isDisabled={isLoading}>\n {t('card.editCta')}\n </Components.Button>\n ) : undefined\n }\n />\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n {isLoading ? (\n <Loading />\n ) : stateTaxes.length > 0 ? (\n <Flex flexDirection=\"column\" gap={24}>\n {stateTaxes.map((stateTax, index) => {\n const stateName = stateTax.state\n ? tCommon(`statesHash.${stateTax.state}`, stateTax.state)\n : ''\n const hasQuestions = (stateTax.questions?.length ?? 0) > 0\n return (\n <Flex key={stateTax.state ?? index} flexDirection=\"column\" gap={16}>\n {stateName ? (\n <Components.Heading as=\"h4\">{stateName}</Components.Heading>\n ) : null}\n\n {hasQuestions ? (\n <Components.DescriptionList\n items={stateTax.questions!.map(question => {\n const answer = question.answers[0]?.value\n return {\n term: question.label,\n description:\n answer === null || answer === undefined\n ? emptyPlaceholder\n : formatStateTaxAnswer(question, answer),\n }\n })}\n />\n ) : (\n <Components.Text variant=\"supporting\">\n {t('card.noWithholdingForState')}\n </Components.Text>\n )}\n </Flex>\n )\n })}\n </Flex>\n ) : (\n <Components.Text>{t('card.noStateTaxes')}</Components.Text>\n )}\n </Flex>\n </Components.Box>\n </BaseLayout>\n )\n}\n"],"names":["StateTaxesCard","props","jsx","BaseBoundaries","StateTaxesCardContent","employeeId","onEvent","useI18n","t","useTranslation","tCommon","Components","useComponentContext","formatCurrency","useNumberFormatter","summary","useStateTaxesSummary","isLoading","stateTaxes","stateTaxesHaveAnyQuestions","s","formatStateTaxAnswer","question","answer","option","opt","numValue","emptyPlaceholder","handleEdit","componentEvents","BaseLayout","Flex","Loading","stateTax","index","stateName","hasQuestions","jsxs"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EmployeeStateTaxesList } from '@gusto/embedded-api
|
|
1
|
+
import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
|
|
2
2
|
export declare const caEmployeeStateTaxes: EmployeeStateTaxesList[];
|
|
3
3
|
export declare const nyEmployeeStateTaxes: EmployeeStateTaxesList[];
|
|
4
4
|
export declare const inEmployeeStateTaxes: EmployeeStateTaxesList[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EmployeeStateTaxesList } from '@gusto/embedded-api
|
|
1
|
+
import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
|
|
2
2
|
interface WireAnswer {
|
|
3
3
|
value: unknown;
|
|
4
4
|
valid_from: string | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { EmployeeStateTaxesList } from '@gusto/embedded-api
|
|
2
|
+
import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
|
|
3
3
|
import { StateTaxQuestionVariant } from './fieldMapping';
|
|
4
4
|
import { FieldsMetadataConfig } from '../../../../../partner-hook-utils/form/buildFormSchema';
|
|
5
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"employeeStateTaxesSchema.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist'\nimport { getQuestionVariant, type StateTaxQuestionVariant } from './fieldMapping'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\nimport type {\n FieldMetadata,\n FieldMetadataWithOptions,\n FieldsMetadata,\n} from '@/partner-hook-utils/types'\nimport type { FieldsMetadataConfig } from '@/partner-hook-utils/form/buildFormSchema'\n\n// ── Error codes ────────────────────────────────────────────────────────\n\n/**\n * Validation error codes produced by the {@link useEmployeeStateTaxesForm} schema.\n *\n * @remarks\n * Use these constants as the keys in a field's `validationMessages` prop to\n * map an error code to a user-facing message. The state-taxes form surfaces\n * only a single error code: every required field that is empty emits\n * `REQUIRED`.\n *\n * @public\n */\nexport const EmployeeStateTaxesErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the employee state taxes\n * form schema.\n *\n * @public\n */\nexport type EmployeeStateTaxesErrorCode =\n (typeof EmployeeStateTaxesErrorCodes)[keyof typeof EmployeeStateTaxesErrorCodes]\n\n// ── Form data shape ────────────────────────────────────────────────────\n\n/**\n * Union of value types a single state-tax answer may hold in the form. The\n * shape depends on the API-provided question variant.\n *\n * @public\n */\nexport type StateTaxValue = string | number | boolean | Date | null | undefined\n\n/**\n * Shape of the values managed by the employee state taxes form. Keyed by\n * two-letter state code, then by question key (camelCased from the API key).\n *\n * @public\n */\nexport interface EmployeeStateTaxesFormData {\n /** Per-state answer map: state code → (camelCased question key → value). */\n states: Record<string, Record<string, StateTaxValue>>\n}\n\n/**\n * Shape of the validated values produced by the employee state taxes form on\n * submit.\n *\n * @public\n */\nexport type EmployeeStateTaxesFormOutputs = EmployeeStateTaxesFormData\n\n// ── Empty-value detection ──────────────────────────────────────────────\n\n/**\n * State-taxes fields are typed as `z.unknown()` in the schema and validated\n * for emptiness in `superRefine`. The bundled UI components only emit\n * type-correct values (NumberInput → number | undefined, DatePicker → Date |\n * undefined, etc.) and the submit serializer normalizes NaN / invalid Dates\n * to empty strings before hitting the API, so a per-variant Zod validator\n * would only fire for adversarial inputs that aren't reachable through the UI.\n */\nfunction isEmpty(value: unknown): boolean {\n if (value === undefined || value === null) return true\n if (typeof value === 'string' && value.trim() === '') return true\n if (typeof value === 'number' && Number.isNaN(value)) return true\n if (value instanceof Date && Number.isNaN(value.getTime())) return true\n return false\n}\n\n// ── Schema factory ─────────────────────────────────────────────────────\n\n/** @internal */\nexport interface EmployeeStateTaxesSchemaOptions {\n isAdmin?: boolean\n}\n\ninterface QuestionOption {\n value: string | number | boolean\n label: string\n}\n\ninterface QuestionEntry {\n apiKey: string\n formKey: string\n fullPath: string\n variant: StateTaxQuestionVariant\n options?: QuestionOption[]\n isAdminOnly: boolean\n /** Server-provided answer at hook initialization. Used to compute the\n * `file_new_hire_report` lock-once-set rule. */\n initialValue: unknown\n}\n\n/** @internal */\nexport interface EmployeeStateTaxesQuestionMeta {\n state: string\n isWorkState: boolean\n apiKey: string\n formKey: string\n variant: StateTaxQuestionVariant\n isAdminOnly: boolean\n isWireSelectWithBooleanOptions: boolean\n}\n\n/** @internal */\nexport interface EmployeeStateTaxesMetadataConfig extends FieldsMetadataConfig<\n Record<string, z.ZodType>\n> {\n /** Group → questions, in API response order, post admin-filtering. */\n groups: Array<{\n state: string\n isWorkState: boolean\n questions: EmployeeStateTaxesQuestionMeta[]\n }>\n}\n\n/** @internal */\nexport type EmployeeStateTaxesSchemaResult = [\n schema: z.ZodType<EmployeeStateTaxesFormData, EmployeeStateTaxesFormData>,\n metadataConfig: EmployeeStateTaxesMetadataConfig,\n]\n\n/** @internal */\nexport function createEmployeeStateTaxesSchema(\n employeeStateTaxes: EmployeeStateTaxesList[],\n options: EmployeeStateTaxesSchemaOptions = {},\n): EmployeeStateTaxesSchemaResult {\n const { isAdmin = false } = options\n\n const groupEntries: Array<{\n state: string\n isWorkState: boolean\n questions: QuestionEntry[]\n }> = []\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const visibleQuestions: QuestionEntry[] = []\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n const formKey = snakeCaseToCamelCase(question.key)\n const fullPath = `states.${stateGroup.state}.${formKey}`\n visibleQuestions.push({\n apiKey: question.key,\n formKey,\n fullPath,\n variant: getQuestionVariant(question),\n options: normalizeOptions(question.inputQuestionFormat.options),\n isAdminOnly: question.isQuestionForAdminOnly,\n initialValue: question.answers[0]?.value,\n })\n }\n\n groupEntries.push({\n state: stateGroup.state,\n isWorkState: Boolean(stateGroup.isWorkState),\n questions: visibleQuestions,\n })\n }\n\n const statesShape: Record<string, z.ZodType> = {}\n for (const group of groupEntries) {\n const innerShape: Record<string, z.ZodType> = {}\n for (const entry of group.questions) {\n innerShape[entry.formKey] = z.unknown()\n }\n statesShape[group.state] = z.object(innerShape).optional()\n }\n\n const baseSchema = z.object({\n states: z.object(statesShape),\n })\n\n const refined = baseSchema.superRefine((data, ctx) => {\n for (const group of groupEntries) {\n const stateValues = data.states[group.state] ?? {}\n for (const entry of group.questions) {\n const value = (stateValues as Record<string, unknown>)[entry.formKey]\n if (isEmpty(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['states', group.state, entry.formKey],\n message: EmployeeStateTaxesErrorCodes.REQUIRED,\n })\n }\n }\n }\n })\n\n const schema = refined as unknown as z.ZodType<\n EmployeeStateTaxesFormData,\n EmployeeStateTaxesFormData\n >\n\n const groupsForMetadata = groupEntries.map(g => ({\n state: g.state,\n isWorkState: g.isWorkState,\n questions: g.questions.map(q => ({\n state: g.state,\n isWorkState: g.isWorkState,\n apiKey: q.apiKey,\n formKey: q.formKey,\n variant: q.variant,\n isAdminOnly: q.isAdminOnly,\n isWireSelectWithBooleanOptions: isWireSelectWithBooleanOptions(q.options),\n })),\n }))\n\n function getFieldsMetadata(): FieldsMetadata {\n const metadata: FieldsMetadata = {}\n for (const group of groupEntries) {\n for (const entry of group.questions) {\n const base: FieldMetadata = {\n name: entry.fullPath,\n isRequired: true,\n }\n\n if (isLockedOnceSet(entry.apiKey, entry.initialValue)) {\n base.isDisabled = true\n }\n\n if (entry.options && entry.options.length > 0) {\n const withOptions: FieldMetadataWithOptions = {\n ...base,\n options: entry.options.map(opt => ({\n value: String(opt.value),\n label: opt.label,\n })),\n }\n metadata[entry.fullPath] = withOptions\n } else {\n metadata[entry.fullPath] = base\n }\n }\n }\n return metadata\n }\n\n /**\n * Mirrors the existing `TaxInputs.tsx` rule for `file_new_hire_report`:\n * once a value has been recorded server-side, the question is locked.\n */\n function isLockedOnceSet(apiKey: string, initialValue: unknown): boolean {\n if (apiKey !== 'file_new_hire_report') return false\n return initialValue !== undefined && initialValue !== null\n }\n\n return [\n schema,\n {\n getFieldsMetadata,\n predicateDeps: [],\n groups: groupsForMetadata,\n } as EmployeeStateTaxesMetadataConfig,\n ]\n}\n\nfunction isWireSelectWithBooleanOptions(options: QuestionOption[] | undefined): boolean {\n if (!options || options.length === 0) return false\n return options.every(opt => typeof opt.value === 'boolean')\n}\n\nfunction normalizeOptions(\n options:\n | Array<{ value?: string | number | boolean | undefined; label?: string | undefined }>\n | undefined,\n): QuestionOption[] | undefined {\n if (!options) return undefined\n const result: QuestionOption[] = []\n for (const opt of options) {\n if (opt.value === undefined || opt.label === undefined) continue\n result.push({ value: opt.value, label: opt.label })\n }\n return result.length > 0 ? result : undefined\n}\n"],"names":["EmployeeStateTaxesErrorCodes","isEmpty","value","createEmployeeStateTaxesSchema","employeeStateTaxes","options","isAdmin","groupEntries","stateGroup","visibleQuestions","question","formKey","snakeCaseToCamelCase","fullPath","getQuestionVariant","normalizeOptions","statesShape","group","innerShape","entry","z","schema","data","ctx","stateValues","groupsForMetadata","g","q","isWireSelectWithBooleanOptions","getFieldsMetadata","metadata","base","isLockedOnceSet","withOptions","opt","apiKey","initialValue","result"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"employeeStateTaxesSchema.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport { getQuestionVariant, type StateTaxQuestionVariant } from './fieldMapping'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\nimport type {\n FieldMetadata,\n FieldMetadataWithOptions,\n FieldsMetadata,\n} from '@/partner-hook-utils/types'\nimport type { FieldsMetadataConfig } from '@/partner-hook-utils/form/buildFormSchema'\n\n// ── Error codes ────────────────────────────────────────────────────────\n\n/**\n * Validation error codes produced by the {@link useEmployeeStateTaxesForm} schema.\n *\n * @remarks\n * Use these constants as the keys in a field's `validationMessages` prop to\n * map an error code to a user-facing message. The state-taxes form surfaces\n * only a single error code: every required field that is empty emits\n * `REQUIRED`.\n *\n * @public\n */\nexport const EmployeeStateTaxesErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the employee state taxes\n * form schema.\n *\n * @public\n */\nexport type EmployeeStateTaxesErrorCode =\n (typeof EmployeeStateTaxesErrorCodes)[keyof typeof EmployeeStateTaxesErrorCodes]\n\n// ── Form data shape ────────────────────────────────────────────────────\n\n/**\n * Union of value types a single state-tax answer may hold in the form. The\n * shape depends on the API-provided question variant.\n *\n * @public\n */\nexport type StateTaxValue = string | number | boolean | Date | null | undefined\n\n/**\n * Shape of the values managed by the employee state taxes form. Keyed by\n * two-letter state code, then by question key (camelCased from the API key).\n *\n * @public\n */\nexport interface EmployeeStateTaxesFormData {\n /** Per-state answer map: state code → (camelCased question key → value). */\n states: Record<string, Record<string, StateTaxValue>>\n}\n\n/**\n * Shape of the validated values produced by the employee state taxes form on\n * submit.\n *\n * @public\n */\nexport type EmployeeStateTaxesFormOutputs = EmployeeStateTaxesFormData\n\n// ── Empty-value detection ──────────────────────────────────────────────\n\n/**\n * State-taxes fields are typed as `z.unknown()` in the schema and validated\n * for emptiness in `superRefine`. The bundled UI components only emit\n * type-correct values (NumberInput → number | undefined, DatePicker → Date |\n * undefined, etc.) and the submit serializer normalizes NaN / invalid Dates\n * to empty strings before hitting the API, so a per-variant Zod validator\n * would only fire for adversarial inputs that aren't reachable through the UI.\n */\nfunction isEmpty(value: unknown): boolean {\n if (value === undefined || value === null) return true\n if (typeof value === 'string' && value.trim() === '') return true\n if (typeof value === 'number' && Number.isNaN(value)) return true\n if (value instanceof Date && Number.isNaN(value.getTime())) return true\n return false\n}\n\n// ── Schema factory ─────────────────────────────────────────────────────\n\n/** @internal */\nexport interface EmployeeStateTaxesSchemaOptions {\n isAdmin?: boolean\n}\n\ninterface QuestionOption {\n value: string | number | boolean\n label: string\n}\n\ninterface QuestionEntry {\n apiKey: string\n formKey: string\n fullPath: string\n variant: StateTaxQuestionVariant\n options?: QuestionOption[]\n isAdminOnly: boolean\n /** Server-provided answer at hook initialization. Used to compute the\n * `file_new_hire_report` lock-once-set rule. */\n initialValue: unknown\n}\n\n/** @internal */\nexport interface EmployeeStateTaxesQuestionMeta {\n state: string\n isWorkState: boolean\n apiKey: string\n formKey: string\n variant: StateTaxQuestionVariant\n isAdminOnly: boolean\n isWireSelectWithBooleanOptions: boolean\n}\n\n/** @internal */\nexport interface EmployeeStateTaxesMetadataConfig extends FieldsMetadataConfig<\n Record<string, z.ZodType>\n> {\n /** Group → questions, in API response order, post admin-filtering. */\n groups: Array<{\n state: string\n isWorkState: boolean\n questions: EmployeeStateTaxesQuestionMeta[]\n }>\n}\n\n/** @internal */\nexport type EmployeeStateTaxesSchemaResult = [\n schema: z.ZodType<EmployeeStateTaxesFormData, EmployeeStateTaxesFormData>,\n metadataConfig: EmployeeStateTaxesMetadataConfig,\n]\n\n/** @internal */\nexport function createEmployeeStateTaxesSchema(\n employeeStateTaxes: EmployeeStateTaxesList[],\n options: EmployeeStateTaxesSchemaOptions = {},\n): EmployeeStateTaxesSchemaResult {\n const { isAdmin = false } = options\n\n const groupEntries: Array<{\n state: string\n isWorkState: boolean\n questions: QuestionEntry[]\n }> = []\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const visibleQuestions: QuestionEntry[] = []\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n const formKey = snakeCaseToCamelCase(question.key)\n const fullPath = `states.${stateGroup.state}.${formKey}`\n visibleQuestions.push({\n apiKey: question.key,\n formKey,\n fullPath,\n variant: getQuestionVariant(question),\n options: normalizeOptions(question.inputQuestionFormat.options),\n isAdminOnly: question.isQuestionForAdminOnly,\n initialValue: question.answers[0]?.value,\n })\n }\n\n groupEntries.push({\n state: stateGroup.state,\n isWorkState: Boolean(stateGroup.isWorkState),\n questions: visibleQuestions,\n })\n }\n\n const statesShape: Record<string, z.ZodType> = {}\n for (const group of groupEntries) {\n const innerShape: Record<string, z.ZodType> = {}\n for (const entry of group.questions) {\n innerShape[entry.formKey] = z.unknown()\n }\n statesShape[group.state] = z.object(innerShape).optional()\n }\n\n const baseSchema = z.object({\n states: z.object(statesShape),\n })\n\n const refined = baseSchema.superRefine((data, ctx) => {\n for (const group of groupEntries) {\n const stateValues = data.states[group.state] ?? {}\n for (const entry of group.questions) {\n const value = (stateValues as Record<string, unknown>)[entry.formKey]\n if (isEmpty(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['states', group.state, entry.formKey],\n message: EmployeeStateTaxesErrorCodes.REQUIRED,\n })\n }\n }\n }\n })\n\n const schema = refined as unknown as z.ZodType<\n EmployeeStateTaxesFormData,\n EmployeeStateTaxesFormData\n >\n\n const groupsForMetadata = groupEntries.map(g => ({\n state: g.state,\n isWorkState: g.isWorkState,\n questions: g.questions.map(q => ({\n state: g.state,\n isWorkState: g.isWorkState,\n apiKey: q.apiKey,\n formKey: q.formKey,\n variant: q.variant,\n isAdminOnly: q.isAdminOnly,\n isWireSelectWithBooleanOptions: isWireSelectWithBooleanOptions(q.options),\n })),\n }))\n\n function getFieldsMetadata(): FieldsMetadata {\n const metadata: FieldsMetadata = {}\n for (const group of groupEntries) {\n for (const entry of group.questions) {\n const base: FieldMetadata = {\n name: entry.fullPath,\n isRequired: true,\n }\n\n if (isLockedOnceSet(entry.apiKey, entry.initialValue)) {\n base.isDisabled = true\n }\n\n if (entry.options && entry.options.length > 0) {\n const withOptions: FieldMetadataWithOptions = {\n ...base,\n options: entry.options.map(opt => ({\n value: String(opt.value),\n label: opt.label,\n })),\n }\n metadata[entry.fullPath] = withOptions\n } else {\n metadata[entry.fullPath] = base\n }\n }\n }\n return metadata\n }\n\n /**\n * Mirrors the existing `TaxInputs.tsx` rule for `file_new_hire_report`:\n * once a value has been recorded server-side, the question is locked.\n */\n function isLockedOnceSet(apiKey: string, initialValue: unknown): boolean {\n if (apiKey !== 'file_new_hire_report') return false\n return initialValue !== undefined && initialValue !== null\n }\n\n return [\n schema,\n {\n getFieldsMetadata,\n predicateDeps: [],\n groups: groupsForMetadata,\n } as EmployeeStateTaxesMetadataConfig,\n ]\n}\n\nfunction isWireSelectWithBooleanOptions(options: QuestionOption[] | undefined): boolean {\n if (!options || options.length === 0) return false\n return options.every(opt => typeof opt.value === 'boolean')\n}\n\nfunction normalizeOptions(\n options:\n | Array<{ value?: string | number | boolean | undefined; label?: string | undefined }>\n | undefined,\n): QuestionOption[] | undefined {\n if (!options) return undefined\n const result: QuestionOption[] = []\n for (const opt of options) {\n if (opt.value === undefined || opt.label === undefined) continue\n result.push({ value: opt.value, label: opt.label })\n }\n return result.length > 0 ? result : undefined\n}\n"],"names":["EmployeeStateTaxesErrorCodes","isEmpty","value","createEmployeeStateTaxesSchema","employeeStateTaxes","options","isAdmin","groupEntries","stateGroup","visibleQuestions","question","formKey","snakeCaseToCamelCase","fullPath","getQuestionVariant","normalizeOptions","statesShape","group","innerShape","entry","z","schema","data","ctx","stateValues","groupsForMetadata","g","q","isWireSelectWithBooleanOptions","getFieldsMetadata","metadata","base","isLockedOnceSet","withOptions","opt","apiKey","initialValue","result"],"mappings":"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"}
|
package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EmployeeStateTaxQuestion } from '@gusto/embedded-api
|
|
1
|
+
import { EmployeeStateTaxQuestion } from '@gusto/embedded-api/models/components/employeestatetaxquestion';
|
|
2
2
|
/**
|
|
3
3
|
* UI input variant for a state-tax question — determines which field type renders for a given question from the employee state-taxes API.
|
|
4
4
|
*
|
package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldMapping.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.ts"],"sourcesContent":["import type { EmployeeStateTaxQuestion } from '@gusto/embedded-api
|
|
1
|
+
{"version":3,"file":"fieldMapping.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.ts"],"sourcesContent":["import type { EmployeeStateTaxQuestion } from '@gusto/embedded-api/models/components/employeestatetaxquestion'\n\n/**\n * UI input variant for a state-tax question — determines which field type renders for a given question from the employee state-taxes API.\n *\n * @public\n */\nexport type StateTaxQuestionVariant = 'select' | 'radio' | 'text' | 'number' | 'currency' | 'date'\n\n/**\n * Per-key mapping rules that promote API `Select`s to other variants for\n * UX reasons.\n *\n * `file_new_hire_report` is internally a Radio per the canonical Ruby\n * helper (`FileNewHireReportHelper.display_field_for_file_new_hire_report`),\n * but the converter at\n * `convert_employee_state_field_to_gws_flow_questions.rb` emits it as\n * `Select` because there's no Radio output type. The existing component at\n * `src/components/Employee/StateTaxes/StateForm.tsx` intends to override\n * `questionType` to `'Radio'` for this question but the comparison checks\n * `'fileNewHireReport'` (camelCase) against an API `key` of\n * `'file_new_hire_report'` (snake_case), so the override never fires today.\n *\n * This map fixes that bug and surfaces it as a Radio in the new hook.\n */\nconst SELECT_TO_RADIO_PROMOTION_KEYS = new Set<string>(['file_new_hire_report'])\n\n/** @internal */\nexport function getQuestionVariant(question: EmployeeStateTaxQuestion): StateTaxQuestionVariant {\n if (SELECT_TO_RADIO_PROMOTION_KEYS.has(question.key)) {\n return 'radio'\n }\n\n switch (question.inputQuestionFormat.type.toLowerCase()) {\n case 'select':\n return 'select'\n case 'number':\n return 'number'\n case 'currency':\n return 'currency'\n case 'date':\n return 'date'\n case 'text':\n return 'text'\n default:\n return 'text'\n }\n}\n"],"names":["SELECT_TO_RADIO_PROMOTION_KEYS","getQuestionVariant","question"],"mappings":"AAyBA,MAAMA,IAAiC,oBAAI,IAAY,CAAC,sBAAsB,CAAC;AAGxE,SAASC,EAAmBC,GAA6D;AAC9F,MAAIF,EAA+B,IAAIE,EAAS,GAAG;AACjD,WAAO;AAGT,UAAQA,EAAS,oBAAoB,KAAK,YAAA,GAAY;AAAA,IACpD,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentType } from 'react';
|
|
2
|
-
import { EmployeeStateTaxesList } from '@gusto/embedded-api
|
|
2
|
+
import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
|
|
3
3
|
import { CurrencyStateTaxFieldProps, DateStateTaxFieldProps, NumberStateTaxFieldProps, RadioStateTaxFieldProps, SelectStateTaxFieldProps, TextStateTaxFieldProps } from './fieldProps';
|
|
4
4
|
export type { BaseStateTaxFieldProps, StateTaxValidationMessages, CurrencyStateTaxFieldProps, DateStateTaxFieldProps, NumberStateTaxFieldProps, RadioStateTaxFieldProps, SelectStateTaxFieldProps, TextStateTaxFieldProps, } from './fieldProps';
|
|
5
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist'\nimport { getQuestionVariant, type StateTaxQuestionVariant } from './fieldMapping'\nimport {\n CurrencyStateTaxField,\n DateStateTaxField,\n NumberStateTaxField,\n RadioStateTaxField,\n SelectStateTaxField,\n TextStateTaxField,\n} from './fieldComponents'\nimport type { BoundFieldMeta } from './fieldMeta'\nimport type {\n CurrencyStateTaxFieldProps,\n DateStateTaxFieldProps,\n NumberStateTaxFieldProps,\n RadioStateTaxFieldProps,\n SelectStateTaxFieldProps,\n TextStateTaxFieldProps,\n} from './fieldProps'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\n\nexport type {\n BaseStateTaxFieldProps,\n StateTaxValidationMessages,\n CurrencyStateTaxFieldProps,\n DateStateTaxFieldProps,\n NumberStateTaxFieldProps,\n RadioStateTaxFieldProps,\n SelectStateTaxFieldProps,\n TextStateTaxFieldProps,\n} from './fieldProps'\n\n// ── Discriminated union surfaced to partners ───────────────────────────\n\n/**\n * Metadata shared by every {@link StateTaxQuestionFieldEntry} variant,\n * independent of which input the question renders.\n *\n * @public\n */\nexport interface SharedQuestionMetadata {\n /** Stable identifier for this question (camelCase form of the API key). */\n questionId: string\n /** API-supplied label; default text for the rendered Field. */\n label: string\n /** API-supplied description (raw HTML, sanitized internally before render). */\n description: string | null\n}\n\n/**\n * A state-tax question that renders as a select (dropdown). Includes read-only\n * question metadata from the API and a bound select field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface SelectStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the select variant. */\n type: 'select'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<SelectStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a radio group. Includes read-only\n * question metadata from the API and a bound radio field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface RadioStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the radio variant. */\n type: 'radio'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<RadioStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a single-line text input. Includes\n * read-only question metadata from the API and a bound text field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface TextStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the text variant. */\n type: 'text'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<TextStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a decimal number input. Includes\n * read-only question metadata from the API and a bound number field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface NumberStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the number variant. */\n type: 'number'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<NumberStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a currency-formatted number input. Includes\n * read-only question metadata from the API and a bound currency field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface CurrencyStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the currency variant. */\n type: 'currency'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<CurrencyStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a date picker. Includes read-only\n * question metadata from the API and a bound date field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface DateStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the date variant. */\n type: 'date'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<DateStateTaxFieldProps>\n}\n\n/**\n * One question entry within a {@link StateTaxFieldsGroup}, discriminated by\n * `type` to identify which input variant the question uses. Each entry carries\n * a `Field` component pre-bound to its API-supplied metadata so callers can\n * render the input directly.\n *\n * @public\n * @group Fields\n * @groupWith {@link StateTaxFieldsGroup}\n */\nexport type StateTaxQuestionFieldEntry =\n | SelectStateTaxQuestion\n | RadioStateTaxQuestion\n | TextStateTaxQuestion\n | NumberStateTaxQuestion\n | CurrencyStateTaxQuestion\n | DateStateTaxQuestion\n\n/**\n * Group of state-tax questions for a single jurisdiction returned by\n * {@link useStateFields}.\n *\n * @public\n * @group Fields\n * @groupWith {@link StateTaxFields}\n */\nexport interface StateTaxFieldsGroup {\n /** Two-letter state code. */\n state: string\n /** Ordered list of question entries for this state, post admin-only filtering. */\n questions: StateTaxQuestionFieldEntry[]\n}\n\n/**\n * Iterable, render-ready group + question entries with bound Field components,\n * grouped by state.\n *\n * @public\n *\n * @example\n * The value exposed on `form.Fields`: one entry per state, each carrying its\n * questions as pre-bound `Field` components you render directly.\n *\n * ```tsx\n * function StateTaxQuestions({ fields }: { fields: StateTaxFields }) {\n * return fields.map(group => (\n * <section key={group.state}>\n * <h3>{group.state}</h3>\n * {group.questions.map(question => (\n * <question.Field key={question.questionId} />\n * ))}\n * </section>\n * ))\n * }\n * ```\n */\nexport type StateTaxFields = StateTaxFieldsGroup[]\n\n// ── Factory ────────────────────────────────────────────────────────────\n\n/** @internal */\nexport interface CreateStateFieldsOptions {\n isAdmin: boolean\n}\n\n/** @internal */\nexport function createStateFields(\n employeeStateTaxes: EmployeeStateTaxesList[],\n options: CreateStateFieldsOptions,\n): StateTaxFieldsGroup[] {\n const { isAdmin } = options\n const groups: StateTaxFieldsGroup[] = []\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const questions: StateTaxQuestionFieldEntry[] = []\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n\n const formKey = snakeCaseToCamelCase(question.key)\n const meta: BoundFieldMeta = {\n name: `states.${stateGroup.state}.${formKey}`,\n apiLabel: question.label,\n apiDescription: question.description,\n }\n const variant = getQuestionVariant(question)\n const shared: SharedQuestionMetadata = {\n questionId: formKey,\n label: question.label,\n description: question.description,\n }\n\n questions.push(buildEntry(variant, meta, shared))\n }\n\n if (questions.length === 0) continue\n\n groups.push({\n state: stateGroup.state,\n questions,\n })\n }\n\n return groups\n}\n\nfunction buildEntry(\n variant: StateTaxQuestionVariant,\n meta: BoundFieldMeta,\n shared: SharedQuestionMetadata,\n): StateTaxQuestionFieldEntry {\n switch (variant) {\n case 'select':\n return {\n type: 'select',\n Field: function BoundSelectStateTaxField(props: SelectStateTaxFieldProps) {\n return <SelectStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'radio':\n return {\n type: 'radio',\n Field: function BoundRadioStateTaxField(props: RadioStateTaxFieldProps) {\n return <RadioStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'text':\n return {\n type: 'text',\n Field: function BoundTextStateTaxField(props: TextStateTaxFieldProps) {\n return <TextStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'number':\n return {\n type: 'number',\n Field: function BoundNumberStateTaxField(props: NumberStateTaxFieldProps) {\n return <NumberStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'currency':\n return {\n type: 'currency',\n Field: function BoundCurrencyStateTaxField(props: CurrencyStateTaxFieldProps) {\n return <CurrencyStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'date':\n return {\n type: 'date',\n Field: function BoundDateStateTaxField(props: DateStateTaxFieldProps) {\n return <DateStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n }\n}\n\n/**\n * Memoizes the bound field components for a state-taxes form, avoiding unnecessary rebuilds when the data refetches but the underlying questions haven't changed.\n *\n * @param employeeStateTaxes - Array of state-tax groups returned by the employee state-taxes API.\n * @param isAdmin - When `true`, admin-only questions are included; when `false`, they are filtered out.\n * @returns An array of {@link StateTaxFieldsGroup} — one entry per state, each with a `questions` array of bound field components.\n * @public\n * @group Utility hooks\n */\nexport function useStateFields(\n employeeStateTaxes: EmployeeStateTaxesList[],\n isAdmin: boolean,\n): StateTaxFieldsGroup[] {\n return useMemo(\n () => createStateFields(employeeStateTaxes, { isAdmin }),\n [employeeStateTaxes, isAdmin],\n )\n}\n"],"names":["createStateFields","employeeStateTaxes","options","isAdmin","groups","stateGroup","questions","question","formKey","snakeCaseToCamelCase","meta","variant","getQuestionVariant","shared","buildEntry","props","jsx","SelectStateTaxField","RadioStateTaxField","TextStateTaxField","NumberStateTaxField","CurrencyStateTaxField","DateStateTaxField","useStateFields","useMemo"],"mappings":";;;;;AA+MO,SAASA,EACdC,GACAC,GACuB;AACvB,QAAM,EAAE,SAAAC,MAAYD,GACdE,IAAgC,CAAA;AAEtC,aAAWC,KAAcJ,GAAoB;AAC3C,QAAI,CAACI,EAAW,SAAS,CAACA,EAAW,UAAW;AAEhD,UAAMC,IAA0C,CAAA;AAChD,eAAWC,KAAYF,EAAW,WAAW;AAC3C,UAAIE,EAAS,0BAA0B,CAACJ,EAAS;AAEjD,YAAMK,IAAUC,EAAqBF,EAAS,GAAG,GAC3CG,IAAuB;AAAA,QAC3B,MAAM,UAAUL,EAAW,KAAK,IAAIG,CAAO;AAAA,QAC3C,UAAUD,EAAS;AAAA,QACnB,gBAAgBA,EAAS;AAAA,MAAA,GAErBI,IAAUC,EAAmBL,CAAQ,GACrCM,IAAiC;AAAA,QACrC,YAAYL;AAAA,QACZ,OAAOD,EAAS;AAAA,QAChB,aAAaA,EAAS;AAAA,MAAA;AAGxB,MAAAD,EAAU,KAAKQ,EAAWH,GAASD,GAAMG,CAAM,CAAC;AAAA,IAClD;AAEA,IAAIP,EAAU,WAAW,KAEzBF,EAAO,KAAK;AAAA,MACV,OAAOC,EAAW;AAAA,MAClB,WAAAC;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAOF;AACT;AAEA,SAASU,EACPH,GACAD,GACAG,GAC4B;AAC5B,UAAQF,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAkCI,GAAiC;AACxE,iBAAO,gBAAAC,EAACC,GAAA,EAAoB,MAAAP,GAAa,GAAGK,EAAA,CAAO;AAAA,QACrD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAiCE,GAAgC;AACtE,iBAAO,gBAAAC,EAACE,GAAA,EAAmB,MAAAR,GAAa,GAAGK,EAAA,CAAO;AAAA,QACpD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAgCE,GAA+B;AACpE,iBAAO,gBAAAC,EAACG,GAAA,EAAkB,MAAAT,GAAa,GAAGK,EAAA,CAAO;AAAA,QACnD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAkCE,GAAiC;AACxE,iBAAO,gBAAAC,EAACI,GAAA,EAAoB,MAAAV,GAAa,GAAGK,EAAA,CAAO;AAAA,QACrD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAoCE,GAAmC;AAC5E,iBAAO,gBAAAC,EAACK,GAAA,EAAsB,MAAAX,GAAa,GAAGK,EAAA,CAAO;AAAA,QACvD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAgCE,GAA+B;AACpE,iBAAO,gBAAAC,EAACM,GAAA,EAAkB,MAAAZ,GAAa,GAAGK,EAAA,CAAO;AAAA,QACnD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,EACL;AAEN;AAWO,SAASU,EACdtB,GACAE,GACuB;AACvB,SAAOqB;AAAA,IACL,MAAMxB,EAAkBC,GAAoB,EAAE,SAAAE,GAAS;AAAA,IACvD,CAACF,GAAoBE,CAAO;AAAA,EAAA;AAEhC;"}
|
|
1
|
+
{"version":3,"file":"fields.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport { getQuestionVariant, type StateTaxQuestionVariant } from './fieldMapping'\nimport {\n CurrencyStateTaxField,\n DateStateTaxField,\n NumberStateTaxField,\n RadioStateTaxField,\n SelectStateTaxField,\n TextStateTaxField,\n} from './fieldComponents'\nimport type { BoundFieldMeta } from './fieldMeta'\nimport type {\n CurrencyStateTaxFieldProps,\n DateStateTaxFieldProps,\n NumberStateTaxFieldProps,\n RadioStateTaxFieldProps,\n SelectStateTaxFieldProps,\n TextStateTaxFieldProps,\n} from './fieldProps'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\n\nexport type {\n BaseStateTaxFieldProps,\n StateTaxValidationMessages,\n CurrencyStateTaxFieldProps,\n DateStateTaxFieldProps,\n NumberStateTaxFieldProps,\n RadioStateTaxFieldProps,\n SelectStateTaxFieldProps,\n TextStateTaxFieldProps,\n} from './fieldProps'\n\n// ── Discriminated union surfaced to partners ───────────────────────────\n\n/**\n * Metadata shared by every {@link StateTaxQuestionFieldEntry} variant,\n * independent of which input the question renders.\n *\n * @public\n */\nexport interface SharedQuestionMetadata {\n /** Stable identifier for this question (camelCase form of the API key). */\n questionId: string\n /** API-supplied label; default text for the rendered Field. */\n label: string\n /** API-supplied description (raw HTML, sanitized internally before render). */\n description: string | null\n}\n\n/**\n * A state-tax question that renders as a select (dropdown). Includes read-only\n * question metadata from the API and a bound select field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface SelectStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the select variant. */\n type: 'select'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<SelectStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a radio group. Includes read-only\n * question metadata from the API and a bound radio field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface RadioStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the radio variant. */\n type: 'radio'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<RadioStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a single-line text input. Includes\n * read-only question metadata from the API and a bound text field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface TextStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the text variant. */\n type: 'text'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<TextStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a decimal number input. Includes\n * read-only question metadata from the API and a bound number field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface NumberStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the number variant. */\n type: 'number'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<NumberStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a currency-formatted number input. Includes\n * read-only question metadata from the API and a bound currency field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface CurrencyStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the currency variant. */\n type: 'currency'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<CurrencyStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a date picker. Includes read-only\n * question metadata from the API and a bound date field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface DateStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the date variant. */\n type: 'date'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<DateStateTaxFieldProps>\n}\n\n/**\n * One question entry within a {@link StateTaxFieldsGroup}, discriminated by\n * `type` to identify which input variant the question uses. Each entry carries\n * a `Field` component pre-bound to its API-supplied metadata so callers can\n * render the input directly.\n *\n * @public\n * @group Fields\n * @groupWith {@link StateTaxFieldsGroup}\n */\nexport type StateTaxQuestionFieldEntry =\n | SelectStateTaxQuestion\n | RadioStateTaxQuestion\n | TextStateTaxQuestion\n | NumberStateTaxQuestion\n | CurrencyStateTaxQuestion\n | DateStateTaxQuestion\n\n/**\n * Group of state-tax questions for a single jurisdiction returned by\n * {@link useStateFields}.\n *\n * @public\n * @group Fields\n * @groupWith {@link StateTaxFields}\n */\nexport interface StateTaxFieldsGroup {\n /** Two-letter state code. */\n state: string\n /** Ordered list of question entries for this state, post admin-only filtering. */\n questions: StateTaxQuestionFieldEntry[]\n}\n\n/**\n * Iterable, render-ready group + question entries with bound Field components,\n * grouped by state.\n *\n * @public\n *\n * @example\n * The value exposed on `form.Fields`: one entry per state, each carrying its\n * questions as pre-bound `Field` components you render directly.\n *\n * ```tsx\n * function StateTaxQuestions({ fields }: { fields: StateTaxFields }) {\n * return fields.map(group => (\n * <section key={group.state}>\n * <h3>{group.state}</h3>\n * {group.questions.map(question => (\n * <question.Field key={question.questionId} />\n * ))}\n * </section>\n * ))\n * }\n * ```\n */\nexport type StateTaxFields = StateTaxFieldsGroup[]\n\n// ── Factory ────────────────────────────────────────────────────────────\n\n/** @internal */\nexport interface CreateStateFieldsOptions {\n isAdmin: boolean\n}\n\n/** @internal */\nexport function createStateFields(\n employeeStateTaxes: EmployeeStateTaxesList[],\n options: CreateStateFieldsOptions,\n): StateTaxFieldsGroup[] {\n const { isAdmin } = options\n const groups: StateTaxFieldsGroup[] = []\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const questions: StateTaxQuestionFieldEntry[] = []\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n\n const formKey = snakeCaseToCamelCase(question.key)\n const meta: BoundFieldMeta = {\n name: `states.${stateGroup.state}.${formKey}`,\n apiLabel: question.label,\n apiDescription: question.description,\n }\n const variant = getQuestionVariant(question)\n const shared: SharedQuestionMetadata = {\n questionId: formKey,\n label: question.label,\n description: question.description,\n }\n\n questions.push(buildEntry(variant, meta, shared))\n }\n\n if (questions.length === 0) continue\n\n groups.push({\n state: stateGroup.state,\n questions,\n })\n }\n\n return groups\n}\n\nfunction buildEntry(\n variant: StateTaxQuestionVariant,\n meta: BoundFieldMeta,\n shared: SharedQuestionMetadata,\n): StateTaxQuestionFieldEntry {\n switch (variant) {\n case 'select':\n return {\n type: 'select',\n Field: function BoundSelectStateTaxField(props: SelectStateTaxFieldProps) {\n return <SelectStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'radio':\n return {\n type: 'radio',\n Field: function BoundRadioStateTaxField(props: RadioStateTaxFieldProps) {\n return <RadioStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'text':\n return {\n type: 'text',\n Field: function BoundTextStateTaxField(props: TextStateTaxFieldProps) {\n return <TextStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'number':\n return {\n type: 'number',\n Field: function BoundNumberStateTaxField(props: NumberStateTaxFieldProps) {\n return <NumberStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'currency':\n return {\n type: 'currency',\n Field: function BoundCurrencyStateTaxField(props: CurrencyStateTaxFieldProps) {\n return <CurrencyStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'date':\n return {\n type: 'date',\n Field: function BoundDateStateTaxField(props: DateStateTaxFieldProps) {\n return <DateStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n }\n}\n\n/**\n * Memoizes the bound field components for a state-taxes form, avoiding unnecessary rebuilds when the data refetches but the underlying questions haven't changed.\n *\n * @param employeeStateTaxes - Array of state-tax groups returned by the employee state-taxes API.\n * @param isAdmin - When `true`, admin-only questions are included; when `false`, they are filtered out.\n * @returns An array of {@link StateTaxFieldsGroup} — one entry per state, each with a `questions` array of bound field components.\n * @public\n * @group Utility hooks\n */\nexport function useStateFields(\n employeeStateTaxes: EmployeeStateTaxesList[],\n isAdmin: boolean,\n): StateTaxFieldsGroup[] {\n return useMemo(\n () => createStateFields(employeeStateTaxes, { isAdmin }),\n [employeeStateTaxes, isAdmin],\n )\n}\n"],"names":["createStateFields","employeeStateTaxes","options","isAdmin","groups","stateGroup","questions","question","formKey","snakeCaseToCamelCase","meta","variant","getQuestionVariant","shared","buildEntry","props","jsx","SelectStateTaxField","RadioStateTaxField","TextStateTaxField","NumberStateTaxField","CurrencyStateTaxField","DateStateTaxField","useStateFields","useMemo"],"mappings":";;;;;AA+MO,SAASA,EACdC,GACAC,GACuB;AACvB,QAAM,EAAE,SAAAC,MAAYD,GACdE,IAAgC,CAAA;AAEtC,aAAWC,KAAcJ,GAAoB;AAC3C,QAAI,CAACI,EAAW,SAAS,CAACA,EAAW,UAAW;AAEhD,UAAMC,IAA0C,CAAA;AAChD,eAAWC,KAAYF,EAAW,WAAW;AAC3C,UAAIE,EAAS,0BAA0B,CAACJ,EAAS;AAEjD,YAAMK,IAAUC,EAAqBF,EAAS,GAAG,GAC3CG,IAAuB;AAAA,QAC3B,MAAM,UAAUL,EAAW,KAAK,IAAIG,CAAO;AAAA,QAC3C,UAAUD,EAAS;AAAA,QACnB,gBAAgBA,EAAS;AAAA,MAAA,GAErBI,IAAUC,EAAmBL,CAAQ,GACrCM,IAAiC;AAAA,QACrC,YAAYL;AAAA,QACZ,OAAOD,EAAS;AAAA,QAChB,aAAaA,EAAS;AAAA,MAAA;AAGxB,MAAAD,EAAU,KAAKQ,EAAWH,GAASD,GAAMG,CAAM,CAAC;AAAA,IAClD;AAEA,IAAIP,EAAU,WAAW,KAEzBF,EAAO,KAAK;AAAA,MACV,OAAOC,EAAW;AAAA,MAClB,WAAAC;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAOF;AACT;AAEA,SAASU,EACPH,GACAD,GACAG,GAC4B;AAC5B,UAAQF,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAkCI,GAAiC;AACxE,iBAAO,gBAAAC,EAACC,GAAA,EAAoB,MAAAP,GAAa,GAAGK,EAAA,CAAO;AAAA,QACrD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAiCE,GAAgC;AACtE,iBAAO,gBAAAC,EAACE,GAAA,EAAmB,MAAAR,GAAa,GAAGK,EAAA,CAAO;AAAA,QACpD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAgCE,GAA+B;AACpE,iBAAO,gBAAAC,EAACG,GAAA,EAAkB,MAAAT,GAAa,GAAGK,EAAA,CAAO;AAAA,QACnD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAkCE,GAAiC;AACxE,iBAAO,gBAAAC,EAACI,GAAA,EAAoB,MAAAV,GAAa,GAAGK,EAAA,CAAO;AAAA,QACrD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAoCE,GAAmC;AAC5E,iBAAO,gBAAAC,EAACK,GAAA,EAAsB,MAAAX,GAAa,GAAGK,EAAA,CAAO;AAAA,QACvD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAgCE,GAA+B;AACpE,iBAAO,gBAAAC,EAACM,GAAA,EAAkB,MAAAZ,GAAa,GAAGK,EAAA,CAAO;AAAA,QACnD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,EACL;AAEN;AAWO,SAASU,EACdtB,GACAE,GACuB;AACvB,SAAOqB;AAAA,IACL,MAAMxB,EAAkBC,GAAoB,EAAE,SAAAE,GAAS;AAAA,IACvD,CAACF,GAAoBE,CAAO;AAAA,EAAA;AAEhC;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UseFormProps } from 'react-hook-form';
|
|
2
|
-
import { EmployeeStateTaxesList } from '@gusto/embedded-api
|
|
2
|
+
import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
|
|
3
3
|
import { EmployeeStateTaxesFormData } from './employeeStateTaxesSchema';
|
|
4
4
|
import { StateTaxFields } from './fields';
|
|
5
5
|
import { BaseFormHookReady, FieldMetadata, FieldMetadataWithOptions, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useMemo as l } from "react";
|
|
2
2
|
import { useForm as D } from "react-hook-form";
|
|
3
3
|
import { zodResolver as L } from "@hookform/resolvers/zod";
|
|
4
|
-
import { useEmployeeTaxSetupGetStateTaxes as O } from "@gusto/embedded-api
|
|
5
|
-
import { useEmployeeTaxSetupUpdateStateTaxesMutation as M } from "@gusto/embedded-api
|
|
4
|
+
import { useEmployeeTaxSetupGetStateTaxes as O } from "@gusto/embedded-api/react-query/employeeTaxSetupGetStateTaxes";
|
|
5
|
+
import { useEmployeeTaxSetupUpdateStateTaxesMutation as M } from "@gusto/embedded-api/react-query/employeeTaxSetupUpdateStateTaxes";
|
|
6
6
|
import { createEmployeeStateTaxesSchema as U } from "./employeeStateTaxesSchema.js";
|
|
7
7
|
import { createStateFields as _ } from "./fields.js";
|
|
8
8
|
import { getQuestionVariant as Q } from "./fieldMapping.js";
|