@gusto/embedded-react-sdk 0.55.7 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -0
- package/dist/components/Common/FadeIn/FadeIn.module.scss.js +4 -4
- package/dist/components/Common/FieldCaption/FieldCaption.js +22 -18
- package/dist/components/Common/FieldCaption/FieldCaption.js.map +1 -1
- package/dist/components/Common/Flex/Flex.js +17 -15
- package/dist/components/Common/Flex/Flex.js.map +1 -1
- package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
- package/dist/components/Common/UI/Heading/Heading.module.scss.js +7 -7
- package/dist/components/Common/UI/Menu/MenuTypes.js.map +1 -1
- package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +43 -42
- package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js.map +1 -1
- package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +5 -3
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +5 -3
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +7 -5
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +5 -3
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +5 -3
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +27 -27
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +10 -8
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +8 -6
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +5 -3
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +5 -3
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +5 -3
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +45 -30
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js +12 -11
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleForm.js +72 -55
- package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js +24 -20
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js +33 -29
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +131 -115
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +5 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +5 -3
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +5 -3
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +31 -29
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +110 -109
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
- package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js +21 -19
- package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js +56 -55
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js.map +1 -1
- package/dist/components/Contractor/Dashboard/Dashboard.js +34 -33
- package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +117 -115
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +77 -75
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js +44 -43
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js +40 -39
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +35 -29
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +21 -20
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js +41 -40
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +21 -20
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +33 -32
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +80 -78
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +44 -43
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
- package/dist/components/Contractor/Submit/Submit.js +113 -105
- package/dist/components/Contractor/Submit/Submit.js.map +1 -1
- package/dist/components/Contractor/Submit/SubmitDone.js +11 -11
- package/dist/components/Contractor/Submit/SubmitDone.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js +20 -18
- package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +18 -15
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.js +33 -32
- package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js +21 -19
- package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentManager.js +34 -26
- package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +5 -3
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js +30 -29
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +54 -53
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +29 -28
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js +16 -15
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js.map +1 -1
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js +27 -25
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js +121 -111
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js +22 -20
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js +24 -23
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +52 -43
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js +29 -26
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js +19 -17
- package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js +79 -78
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js +4 -4
- package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js +4 -4
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +40 -39
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +31 -30
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +43 -41
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +20 -19
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js +19 -17
- package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js +49 -48
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
- package/dist/components/Flow/Flow.js +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +28 -28
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +37 -36
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +36 -35
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +35 -28
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +23 -22
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +48 -45
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +85 -77
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +63 -59
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
- package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js +23 -21
- package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js.map +1 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelection.js +26 -19
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelection.js.map +1 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +14 -12
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +184 -162
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +67 -65
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js +48 -34
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +43 -41
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +225 -223
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +78 -75
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js +27 -27
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js +19 -19
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +51 -48
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +58 -48
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +58 -57
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +83 -69
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +62 -60
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +119 -117
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +187 -171
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +120 -110
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js +45 -34
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +20 -14
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +62 -61
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.module.scss.js +14 -14
- package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js +24 -17
- package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js +22 -22
- package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +88 -80
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js +52 -37
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js +26 -26
- package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +32 -32
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +50 -48
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +34 -33
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +28 -24
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +255 -228
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js +8 -4
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +10 -8
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js +5 -5
- package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js +8 -7
- package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js +51 -50
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +20 -18
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js +51 -49
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js.map +1 -1
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormPresentation.js +20 -20
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyList.js +50 -49
- package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js +34 -33
- package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js +46 -45
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js +152 -143
- package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js +14 -13
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js.map +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js +44 -35
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +88 -71
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js +164 -155
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +57 -55
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js +25 -24
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +94 -92
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +156 -155
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.js +21 -19
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.js.map +1 -1
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +28 -26
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +29 -28
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/apiVersionMismatchHook.js +15 -0
- package/dist/contexts/ApiProvider/apiVersionMismatchHook.js.map +1 -0
- package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/ThemeProvider/ThemeProvider.js +32 -26
- package/dist/contexts/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
- package/dist/hooks/usePollingTask/usePollingTask.js +53 -41
- package/dist/hooks/usePollingTask/usePollingTask.js.map +1 -1
- package/dist/i18n/en/Company.PaySchedule.json.js +22 -20
- package/dist/i18n/en/Company.PaySchedule.json.js.map +1 -1
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js +28 -24
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js.map +1 -1
- package/dist/i18n/en/Payroll.GrossUpModal.json.js +12 -10
- package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +8 -8
- package/dist/i18n/en/Payroll.PayrollOverview.json.js +15 -15
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js +62 -58
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/src/components/Common/FieldCaption/FieldCaption.d.ts +2 -16
- package/dist/src/components/Common/FieldCaption/FieldCaptionTypes.d.ts +22 -0
- package/dist/src/components/Common/FieldCaption/index.d.ts +1 -0
- package/dist/src/components/Common/Flex/Flex.d.ts +3 -1
- package/dist/src/components/Common/UI/ComboBox/ComboBoxTypes.d.ts +1 -1
- package/dist/src/components/Common/UI/DatePicker/DatePickerTypes.d.ts +2 -1
- package/dist/src/components/Common/UI/Menu/MenuTypes.d.ts +1 -1
- package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.d.ts +1 -1
- package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +5 -0
- package/dist/src/components/Common/UI/Select/SelectTypes.d.ts +2 -1
- package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +10 -2
- package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +1 -0
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +9 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/index.d.ts +2 -2
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +21 -5
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +21 -3
- package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +3 -1
- package/dist/src/components/Contractor/ContractorList/onboarding/ContractorListView.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/CreatePayment/PreviewPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Submit/SubmitDone.d.ts +3 -1
- package/dist/src/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.d.ts +1 -1
- package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.d.ts +3 -1
- package/dist/src/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.d.ts +3 -1
- package/dist/src/components/Employee/EmployeeList/management/ManagementEmployeeListView.d.ts +3 -1
- package/dist/src/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +3 -1
- package/dist/src/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +11 -2
- package/dist/src/components/Employee/EmployeeListFlow/employeeListStateMachine.test.d.ts +1 -0
- package/dist/src/components/Employee/HomeAddress/management/HomeAddressView.d.ts +3 -1
- package/dist/src/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +3 -1
- package/dist/src/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.d.ts +3 -1
- package/dist/src/components/Employee/WorkAddress/management/WorkAddressView.d.ts +3 -1
- package/dist/src/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +8 -0
- package/dist/src/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollConfiguration/useCalculationPoll.d.ts +6 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +9 -9
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.d.ts +2 -2
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.d.ts +4 -4
- package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +2 -1
- package/dist/src/components/Payroll/PayrollOverview/useSubmissionPoll.d.ts +10 -1
- package/dist/src/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +2 -1
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +2 -0
- package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.d.ts +3 -1
- package/dist/src/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts +1 -1
- package/dist/src/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.d.ts +1 -1
- package/dist/src/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.d.ts +1 -1
- package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/PolicyList/PolicyListPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/PolicyList/PolicyListTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/PolicySettings/PolicySettingsPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/PolicySettings/PolicySettingsTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailTypes.d.ts +3 -0
- package/dist/src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.d.ts +1 -1
- package/dist/src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayoutTypes.d.ts +2 -0
- package/dist/src/contexts/ApiProvider/ApiProvider.d.ts +5 -3
- package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.d.ts +3 -0
- package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.test.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/useComponentContext.d.ts +4 -1
- package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +9 -1
- package/dist/src/contexts/ThemeProvider/ThemeProvider.d.ts +8 -3
- package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +4 -1
- package/dist/src/hooks/usePollingTask/usePollingTask.d.ts +55 -14
- package/dist/src/i18n/types.d.ts +42 -2
- package/dist/src/index.d.ts +1 -1
- package/dist/src/models/external.d.ts +1 -0
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +5 -0
- package/package.json +20 -19
|
@@ -1,274 +1,290 @@
|
|
|
1
|
-
import { jsx as l, jsxs as
|
|
2
|
-
import { usePayrollsSubmitMutation as
|
|
3
|
-
import { usePayrollsCancelMutation as
|
|
4
|
-
import { usePayrollsGet as
|
|
5
|
-
import { useEmployeesList as
|
|
6
|
-
import { keepPreviousData as
|
|
7
|
-
import { useTranslation as
|
|
8
|
-
import { useBankAccountsGetSuspense as
|
|
9
|
-
import { useWireInRequestsGet as
|
|
10
|
-
import { useState as m, useMemo as
|
|
11
|
-
import { useGustoEmbeddedContext as
|
|
12
|
-
import { payrollsGetPayStub as
|
|
13
|
-
import { useErrorBoundary as
|
|
14
|
-
import { ConfirmWireDetails as
|
|
15
|
-
import { canCancelPayroll as
|
|
16
|
-
import { PrintChecks as
|
|
17
|
-
import { PayrollOverviewPresentation as
|
|
1
|
+
import { jsx as l, jsxs as _e } from "react/jsx-runtime";
|
|
2
|
+
import { usePayrollsSubmitMutation as Oe } from "@gusto/embedded-api/react-query/payrollsSubmit";
|
|
3
|
+
import { usePayrollsCancelMutation as Ce } from "@gusto/embedded-api/react-query/payrollsCancel";
|
|
4
|
+
import { usePayrollsGet as ke } from "@gusto/embedded-api/react-query/payrollsGet";
|
|
5
|
+
import { useEmployeesList as Ae } from "@gusto/embedded-api/react-query/employeesList";
|
|
6
|
+
import { keepPreviousData as Ue } from "@tanstack/react-query";
|
|
7
|
+
import { useTranslation as Be } from "react-i18next";
|
|
8
|
+
import { useBankAccountsGetSuspense as Te } from "@gusto/embedded-api/react-query/bankAccountsGet";
|
|
9
|
+
import { useWireInRequestsGet as ve } from "@gusto/embedded-api/react-query/wireInRequestsGet";
|
|
10
|
+
import { useState as m, useMemo as Ne, useEffect as E } from "react";
|
|
11
|
+
import { useGustoEmbeddedContext as qe } from "@gusto/embedded-api/react-query/_context";
|
|
12
|
+
import { payrollsGetPayStub as We } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
|
|
13
|
+
import { useErrorBoundary as Fe } from "react-error-boundary";
|
|
14
|
+
import { ConfirmWireDetails as Ye } from "../ConfirmWireDetails/ConfirmWireDetails.js";
|
|
15
|
+
import { canCancelPayroll as Me } from "../helpers.js";
|
|
16
|
+
import { PrintChecks as Ie } from "../PrintChecks/PrintChecks.js";
|
|
17
|
+
import { PayrollOverviewPresentation as xe } from "./PayrollOverviewPresentation.js";
|
|
18
18
|
import { PayrollOverviewStatus as d } from "./PayrollOverviewTypes.js";
|
|
19
|
-
import { useSubmissionPoll as
|
|
20
|
-
import { useCompanyPaymentSpeed as
|
|
21
|
-
import { PAYROLL_PROCESSING_STATUS as
|
|
22
|
-
import { BaseComponent as
|
|
23
|
-
import { useBase as
|
|
24
|
-
import { useComponentDictionary as
|
|
25
|
-
import { readableStreamToBlob as
|
|
26
|
-
import { openPdfInNewTab as
|
|
27
|
-
import
|
|
28
|
-
import { useDateFormatter as
|
|
29
|
-
import { useComponentContext as
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
|
|
19
|
+
import { useSubmissionPoll as Ge } from "./useSubmissionPoll.js";
|
|
20
|
+
import { useCompanyPaymentSpeed as Ve } from "../../../hooks/useCompanyPaymentSpeed.js";
|
|
21
|
+
import { PAYROLL_PROCESSING_STATUS as M, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as je, payrollWireEvents as He } from "../../../shared/constants.js";
|
|
22
|
+
import { BaseComponent as Ke } from "../../Base/Base.js";
|
|
23
|
+
import { useBase as ze } from "../../Base/useBase.js";
|
|
24
|
+
import { useComponentDictionary as Je, useI18n as Qe } from "../../../i18n/I18n.js";
|
|
25
|
+
import { readableStreamToBlob as Xe } from "../../../helpers/readableStreamToBlob.js";
|
|
26
|
+
import { openPdfInNewTab as Ze } from "../../../helpers/openPdfInNewTab.js";
|
|
27
|
+
import $e from "../../../hooks/useNumberFormatter.js";
|
|
28
|
+
import { useDateFormatter as et } from "../../../hooks/useDateFormatter.js";
|
|
29
|
+
import { useComponentContext as tt } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
30
|
+
import { isNonRetryablePollError as ot } from "../../../hooks/usePollingTask/usePollingTask.js";
|
|
31
|
+
import { renderErrorList as rt } from "../../../helpers/apiErrorToList.js";
|
|
32
|
+
import { Flex as st } from "../../Common/Flex/Flex.js";
|
|
33
|
+
import { usePagination as nt } from "../../../hooks/usePagination/usePagination.js";
|
|
34
|
+
import { useNonce as it } from "../../../contexts/NonceProvider/useNonce.js";
|
|
35
|
+
import { PayrollLoading as at } from "../../Common/PayrollLoading/PayrollLoading.js";
|
|
36
|
+
const lt = (s = []) => s.filter(
|
|
36
37
|
(n) => n.status === "unresolved" && n.unblockOptions && n.unblockOptions.length > 0
|
|
37
|
-
),
|
|
38
|
-
const n =
|
|
38
|
+
), ct = (s = []) => {
|
|
39
|
+
const n = s.find((a) => a.status === "unresolved");
|
|
39
40
|
return n?.unblockOptions ? n.unblockOptions.find(
|
|
40
|
-
(
|
|
41
|
+
(a) => a.unblockType === "submit_wire"
|
|
41
42
|
)?.metadata.wireInRequestUuid : void 0;
|
|
42
43
|
};
|
|
43
|
-
function
|
|
44
|
-
return /* @__PURE__ */ l(
|
|
44
|
+
function Kt(s) {
|
|
45
|
+
return /* @__PURE__ */ l(Ke, { ...s, children: /* @__PURE__ */ l(ut, { ...s, children: s.children }) });
|
|
45
46
|
}
|
|
46
|
-
const
|
|
47
|
-
companyId:
|
|
47
|
+
const ut = ({
|
|
48
|
+
companyId: s,
|
|
48
49
|
payrollId: n,
|
|
49
|
-
dictionary:
|
|
50
|
-
onEvent:
|
|
51
|
-
alerts:
|
|
52
|
-
withReimbursements:
|
|
53
|
-
ConfirmWireDetailsComponent:
|
|
54
|
-
readOnly: b = !1
|
|
50
|
+
dictionary: L,
|
|
51
|
+
onEvent: a,
|
|
52
|
+
alerts: I,
|
|
53
|
+
withReimbursements: x = !0,
|
|
54
|
+
ConfirmWireDetailsComponent: G = Ye,
|
|
55
|
+
readOnly: b = !1,
|
|
56
|
+
className: V
|
|
55
57
|
}) => {
|
|
56
|
-
|
|
57
|
-
const { baseSubmitHandler:
|
|
58
|
+
Je("Payroll.PayrollOverview", L), Qe("Payroll.PayrollOverview");
|
|
59
|
+
const { baseSubmitHandler: _ } = ze(), { t: i } = Be("Payroll.PayrollOverview"), [O, S] = m(!1), [j, h] = m(I || []), [C, H] = m({}), [P, p] = m(!1), { showBoundary: K } = Fe(), z = $e("currency"), f = et(), { Button: J, UnorderedList: Q, Text: k } = tt(), [A, g] = m(d.Viewing), { currentPage: U, itemsPerPage: B, getPaginationProps: X } = nt({
|
|
58
60
|
defaultItemsPerPage: 25
|
|
59
|
-
}),
|
|
61
|
+
}), Z = qe(), $ = Ne(
|
|
60
62
|
() => ({
|
|
61
|
-
companyId:
|
|
63
|
+
companyId: s,
|
|
62
64
|
payrollId: n,
|
|
63
65
|
include: ["taxes", "benefits", "deductions", "totals", "payroll_taxes"],
|
|
64
66
|
page: U,
|
|
65
67
|
per: B,
|
|
66
68
|
sortBy: "last_name"
|
|
67
69
|
}),
|
|
68
|
-
[
|
|
70
|
+
[s, n, U, B]
|
|
69
71
|
), {
|
|
70
72
|
data: y,
|
|
71
|
-
isFetching:
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
73
|
+
isFetching: ee,
|
|
74
|
+
isError: T,
|
|
75
|
+
error: te,
|
|
76
|
+
refetch: oe
|
|
77
|
+
} = ke($, {
|
|
78
|
+
placeholderData: Ue
|
|
79
|
+
}), o = y?.payrollShow, re = lt(o?.submissionBlockers), w = ct(o?.creditBlockers), { data: se } = ve(
|
|
76
80
|
{
|
|
77
|
-
wireInRequestUuid:
|
|
81
|
+
wireInRequestUuid: w || ""
|
|
78
82
|
},
|
|
79
|
-
{ enabled: !!
|
|
80
|
-
),
|
|
81
|
-
{ companyId:
|
|
82
|
-
{ enabled:
|
|
83
|
-
),
|
|
84
|
-
|
|
85
|
-
},
|
|
86
|
-
|
|
83
|
+
{ enabled: !!w }
|
|
84
|
+
), v = se?.wireInRequest, N = (o?.employeeCompensations ?? []).map((e) => e.employeeUuid).filter((e) => !!e), { data: ne } = Ae(
|
|
85
|
+
{ companyId: s, uuids: N },
|
|
86
|
+
{ enabled: N.length > 0 }
|
|
87
|
+
), ie = (ne?.showEmployees ?? []).reduce((e, t) => (e[t.uuid] = t.flsaStatus, e), {}), q = () => {
|
|
88
|
+
a(c.RUN_PAYROLL_EDIT);
|
|
89
|
+
}, ae = w && /* @__PURE__ */ l(
|
|
90
|
+
G,
|
|
87
91
|
{
|
|
88
|
-
companyId:
|
|
89
|
-
wireInId:
|
|
92
|
+
companyId: s,
|
|
93
|
+
wireInId: w,
|
|
90
94
|
onEvent: (e, t) => {
|
|
91
|
-
e ===
|
|
95
|
+
e === He.PAYROLL_WIRE_FORM_DONE && p(!0), a(e, t);
|
|
92
96
|
}
|
|
93
97
|
}
|
|
94
|
-
),
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}, [
|
|
98
|
-
const R =
|
|
99
|
-
|
|
98
|
+
), le = /* @__PURE__ */ l(Ie, { companyId: s, payrollId: n, onEvent: a });
|
|
99
|
+
E(() => {
|
|
100
|
+
v?.status === "pending_review" && !P && p(!0);
|
|
101
|
+
}, [v?.status, P]);
|
|
102
|
+
const R = o?.checkDate;
|
|
103
|
+
E(() => {
|
|
100
104
|
if (R && P) {
|
|
101
105
|
const e = f.formatShortWithYear(R);
|
|
102
106
|
h([
|
|
103
107
|
{
|
|
104
108
|
type: "success",
|
|
105
|
-
title:
|
|
106
|
-
content: /* @__PURE__ */ l(k, { children:
|
|
109
|
+
title: i("alerts.wireDetailsSubmittedTitle"),
|
|
110
|
+
content: /* @__PURE__ */ l(k, { children: i("alerts.wireDetailsSubmittedMessage", { checkDate: e }) }),
|
|
107
111
|
onDismiss: () => {
|
|
108
112
|
p(!1);
|
|
109
113
|
}
|
|
110
114
|
}
|
|
111
115
|
]);
|
|
112
116
|
}
|
|
113
|
-
}, [P, R,
|
|
114
|
-
const
|
|
115
|
-
|
|
117
|
+
}, [P, R, i, f, k]);
|
|
118
|
+
const ce = (e) => {
|
|
119
|
+
a(c.RUN_PAYROLL_PROCESSED, {
|
|
116
120
|
payPeriod: e?.payPeriod,
|
|
117
121
|
payrollUuid: n
|
|
118
122
|
}), h([
|
|
119
123
|
{
|
|
120
124
|
type: "success",
|
|
121
|
-
title:
|
|
122
|
-
content:
|
|
123
|
-
amount:
|
|
125
|
+
title: i("alerts.payrollProcessedTitle"),
|
|
126
|
+
content: i("alerts.payrollProcessedMessage", {
|
|
127
|
+
amount: z(Number(e?.totals?.companyDebit)),
|
|
124
128
|
date: f.formatShortWithYear(
|
|
125
129
|
e?.payrollStatusMeta?.expectedDebitTime ?? e?.payrollDeadline
|
|
126
130
|
)
|
|
127
131
|
})
|
|
128
132
|
}
|
|
129
|
-
]), p(!1),
|
|
130
|
-
},
|
|
131
|
-
|
|
133
|
+
]), p(!1), S(!1);
|
|
134
|
+
}, W = (e) => {
|
|
135
|
+
a(c.RUN_PAYROLL_PROCESSING_FAILED), h([
|
|
132
136
|
{
|
|
133
137
|
type: "error",
|
|
134
|
-
title:
|
|
135
|
-
content: /* @__PURE__ */
|
|
136
|
-
/* @__PURE__ */ l(
|
|
137
|
-
!b && /* @__PURE__ */ l(
|
|
138
|
+
title: i("alerts.payrollProcessingFailedTitle"),
|
|
139
|
+
content: /* @__PURE__ */ _e(st, { flexDirection: "column", gap: 16, children: [
|
|
140
|
+
/* @__PURE__ */ l(Q, { items: rt(e?.processingRequest?.errors ?? []) }),
|
|
141
|
+
!b && /* @__PURE__ */ l(J, { variant: "secondary", onClick: q, children: i("alerts.payrollProcessingFailedCtaLabel") })
|
|
138
142
|
] })
|
|
139
143
|
}
|
|
140
|
-
]), p(!1),
|
|
141
|
-
}, { start: D, isPolling:
|
|
142
|
-
refetch:
|
|
143
|
-
onProcessed:
|
|
144
|
-
onProcessingFailed:
|
|
144
|
+
]), p(!1), S(!1);
|
|
145
|
+
}, { start: D, isPolling: ue } = Ge({
|
|
146
|
+
refetch: oe,
|
|
147
|
+
onProcessed: ce,
|
|
148
|
+
onProcessingFailed: W,
|
|
149
|
+
// Unlike the calculation poll, a second Submit click here is safe even if this fires on a
|
|
150
|
+
// payroll that actually did process successfully — payrollsSubmit only operates on an
|
|
151
|
+
// unprocessed payroll, so the API itself rejects a resubmit rather than double-running it.
|
|
152
|
+
onError: () => {
|
|
153
|
+
W(void 0);
|
|
154
|
+
}
|
|
145
155
|
});
|
|
146
|
-
|
|
156
|
+
E(() => {
|
|
147
157
|
D({ baseline: null, sawSubmitting: !1 });
|
|
148
158
|
}, [D]);
|
|
149
|
-
const { data:
|
|
150
|
-
companyId:
|
|
151
|
-
}),
|
|
159
|
+
const { data: me } = Te({
|
|
160
|
+
companyId: s
|
|
161
|
+
}), de = me.companyBankAccounts?.[0], { paymentSpeed: pe } = Ve(s), { mutateAsync: fe, isPending: Pe } = Oe(), { mutateAsync: ye } = Ce(), we = it(), [be, F] = m(
|
|
152
162
|
() => /* @__PURE__ */ new Set()
|
|
153
163
|
);
|
|
154
|
-
if (!
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
164
|
+
if (!o) {
|
|
165
|
+
if (T)
|
|
166
|
+
throw new Error(i("alerts.payrollLoadFailed"));
|
|
167
|
+
return /* @__PURE__ */ l(at, { title: i("dataLoadingTitle") });
|
|
168
|
+
}
|
|
169
|
+
if (T && ot(te))
|
|
170
|
+
throw new Error(i("alerts.payrollLoadFailed"));
|
|
171
|
+
if (A === d.Viewing && !o.calculatedAt)
|
|
172
|
+
throw new Error(i("alerts.payrollNotCalculated"));
|
|
173
|
+
const Se = X(y.httpMeta.response.headers, ee), he = o.payrollTaxes?.reduce(
|
|
159
174
|
(e, t) => {
|
|
160
175
|
if (!t.name) return e;
|
|
161
|
-
const
|
|
176
|
+
const r = t.amount ?? 0;
|
|
162
177
|
return e[t.name] = {
|
|
163
|
-
employee: (e[t.name]?.employee ?? 0) + (t.employer ? 0 :
|
|
164
|
-
employer: (e[t.name]?.employer ?? 0) + (t.employer ?
|
|
178
|
+
employee: (e[t.name]?.employee ?? 0) + (t.employer ? 0 : r),
|
|
179
|
+
employer: (e[t.name]?.employer ?? 0) + (t.employer ? r : 0)
|
|
165
180
|
}, e;
|
|
166
181
|
},
|
|
167
182
|
{}
|
|
168
|
-
) || {},
|
|
169
|
-
g(d.Cancelling), await
|
|
183
|
+
) || {}, ge = async () => {
|
|
184
|
+
g(d.Cancelling), await _(y, async () => {
|
|
170
185
|
try {
|
|
171
|
-
const e = await
|
|
186
|
+
const e = await ye({
|
|
172
187
|
request: {
|
|
173
|
-
companyId:
|
|
188
|
+
companyId: s,
|
|
174
189
|
payrollId: n
|
|
175
190
|
}
|
|
176
191
|
});
|
|
177
|
-
g(d.Cancelled),
|
|
192
|
+
g(d.Cancelled), a(c.RUN_PAYROLL_CANCELLED, e);
|
|
178
193
|
} catch (e) {
|
|
179
194
|
throw g(d.Viewing), e;
|
|
180
195
|
}
|
|
181
196
|
});
|
|
182
|
-
},
|
|
183
|
-
|
|
184
|
-
},
|
|
185
|
-
const t =
|
|
186
|
-
|
|
187
|
-
const u = new Set(
|
|
197
|
+
}, Re = () => {
|
|
198
|
+
a(c.RUN_PAYROLL_RECEIPT_GET, { payrollId: n });
|
|
199
|
+
}, De = async (e) => {
|
|
200
|
+
const t = Ze({ loadingMessage: i("downloadLoadingMessage"), nonce: we });
|
|
201
|
+
F((r) => {
|
|
202
|
+
const u = new Set(r);
|
|
188
203
|
return u.add(e), u;
|
|
189
204
|
});
|
|
190
205
|
try {
|
|
191
|
-
const
|
|
192
|
-
if (!
|
|
193
|
-
throw t.close(), new Error(
|
|
194
|
-
const u = await
|
|
195
|
-
t.navigate(u),
|
|
196
|
-
} catch (
|
|
197
|
-
t.close(),
|
|
206
|
+
const r = await We(Z, { payrollId: n, employeeId: e });
|
|
207
|
+
if (!r.value?.responseStream)
|
|
208
|
+
throw t.close(), new Error(i("alerts.paystubPdfError"));
|
|
209
|
+
const u = await Xe(r.value.responseStream, "application/pdf");
|
|
210
|
+
t.navigate(u), a(c.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: e });
|
|
211
|
+
} catch (r) {
|
|
212
|
+
t.close(), K(r instanceof Error ? r : new Error(String(r)));
|
|
198
213
|
} finally {
|
|
199
|
-
|
|
200
|
-
if (!
|
|
201
|
-
const u = new Set(
|
|
214
|
+
F((r) => {
|
|
215
|
+
if (!r.has(e)) return r;
|
|
216
|
+
const u = new Set(r);
|
|
202
217
|
return u.delete(e), u;
|
|
203
218
|
});
|
|
204
219
|
}
|
|
205
|
-
},
|
|
206
|
-
await
|
|
207
|
-
const e = await
|
|
220
|
+
}, Ee = async () => {
|
|
221
|
+
await _(y, async () => {
|
|
222
|
+
const e = await fe({
|
|
208
223
|
request: {
|
|
209
|
-
companyId:
|
|
224
|
+
companyId: s,
|
|
210
225
|
payrollId: n,
|
|
211
226
|
requestBody: {
|
|
212
|
-
submissionBlockers: Object.entries(
|
|
213
|
-
([t]) =>
|
|
214
|
-
).map(([t,
|
|
227
|
+
submissionBlockers: Object.entries(C).filter(
|
|
228
|
+
([t]) => je.includes(t)
|
|
229
|
+
).map(([t, r]) => ({
|
|
215
230
|
blockerType: t,
|
|
216
|
-
selectedOption:
|
|
231
|
+
selectedOption: r
|
|
217
232
|
}))
|
|
218
233
|
}
|
|
219
234
|
}
|
|
220
235
|
});
|
|
221
|
-
|
|
236
|
+
a(c.RUN_PAYROLL_SUBMITTING), a(c.RUN_PAYROLL_SUBMITTED, e), D({
|
|
222
237
|
baseline: {
|
|
223
|
-
processed:
|
|
224
|
-
status:
|
|
238
|
+
processed: o.processed ?? !1,
|
|
239
|
+
status: o.processingRequest?.status
|
|
225
240
|
},
|
|
226
241
|
sawSubmitting: !1
|
|
227
|
-
}),
|
|
242
|
+
}), S(!0);
|
|
228
243
|
});
|
|
229
|
-
},
|
|
230
|
-
if (!(
|
|
244
|
+
}, Y = (() => {
|
|
245
|
+
if (!(O || ue) && !(o.processed || o.processingRequest?.status === M.submit_success) && o.checkDate && o.payrollDeadline)
|
|
231
246
|
return {
|
|
232
247
|
type: "info",
|
|
233
|
-
title:
|
|
234
|
-
payDate: f.formatShortWithWeekday(
|
|
235
|
-
...f.formatWithTime(
|
|
248
|
+
title: i("alerts.directDepositDeadline", {
|
|
249
|
+
payDate: f.formatShortWithWeekday(o.checkDate),
|
|
250
|
+
...f.formatWithTime(o.payrollDeadline)
|
|
236
251
|
}),
|
|
237
|
-
content:
|
|
252
|
+
content: i("alerts.directDepositDeadlineText")
|
|
238
253
|
};
|
|
239
|
-
})(),
|
|
254
|
+
})(), Le = [...j, ...Y ? [Y] : []];
|
|
240
255
|
return /* @__PURE__ */ l(
|
|
241
|
-
|
|
256
|
+
xe,
|
|
242
257
|
{
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
258
|
+
className: V,
|
|
259
|
+
onEdit: q,
|
|
260
|
+
onSubmit: Ee,
|
|
261
|
+
onCancel: ge,
|
|
262
|
+
onPayrollReceipt: Re,
|
|
263
|
+
onPaystubDownload: De,
|
|
264
|
+
status: Pe || O ? d.Submitting : A,
|
|
265
|
+
isProcessed: o.processed === !0 || o.processingRequest?.status === M.submit_success,
|
|
266
|
+
canCancel: Me(o) && !b,
|
|
251
267
|
canEdit: !b,
|
|
252
|
-
payrollData:
|
|
253
|
-
employeeFlsaStatusByUuid:
|
|
254
|
-
bankAccount:
|
|
255
|
-
taxes:
|
|
256
|
-
alerts:
|
|
257
|
-
submissionBlockers:
|
|
258
|
-
selectedUnblockOptions:
|
|
268
|
+
payrollData: o,
|
|
269
|
+
employeeFlsaStatusByUuid: ie,
|
|
270
|
+
bankAccount: de,
|
|
271
|
+
taxes: he,
|
|
272
|
+
alerts: Le,
|
|
273
|
+
submissionBlockers: re,
|
|
274
|
+
selectedUnblockOptions: C,
|
|
259
275
|
onUnblockOptionChange: (e, t) => {
|
|
260
|
-
|
|
276
|
+
H((r) => ({ ...r, [e]: t }));
|
|
261
277
|
},
|
|
262
|
-
wireInConfirmationRequest:
|
|
263
|
-
printChecksBanner:
|
|
264
|
-
withReimbursements:
|
|
265
|
-
paymentSpeed:
|
|
266
|
-
pagination:
|
|
267
|
-
downloadingEmployeeIds:
|
|
278
|
+
wireInConfirmationRequest: ae,
|
|
279
|
+
printChecksBanner: le,
|
|
280
|
+
withReimbursements: x,
|
|
281
|
+
paymentSpeed: pe,
|
|
282
|
+
pagination: Se,
|
|
283
|
+
downloadingEmployeeIds: be
|
|
268
284
|
}
|
|
269
285
|
);
|
|
270
286
|
};
|
|
271
287
|
export {
|
|
272
|
-
|
|
288
|
+
Kt as PayrollOverview
|
|
273
289
|
};
|
|
274
290
|
//# sourceMappingURL=PayrollOverview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayrollOverview.js","sources":["../../../../src/components/Payroll/PayrollOverview/PayrollOverview.tsx"],"sourcesContent":["import { usePayrollsSubmitMutation } from '@gusto/embedded-api/react-query/payrollsSubmit'\nimport { usePayrollsCancelMutation } from '@gusto/embedded-api/react-query/payrollsCancel'\nimport { usePayrollsGet } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { useBankAccountsGetSuspense } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport { useWireInRequestsGet } from '@gusto/embedded-api/react-query/wireInRequestsGet'\nimport { useEffect, useMemo, useState } from 'react'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsGetPayStub } from '@gusto/embedded-api/funcs/payrollsGetPayStub'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport type { GetV1CompaniesCompanyIdPayrollsPayrollIdRequest } from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrollspayrollid'\nimport type { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype'\nimport type {\n PayrollCreditBlockerType,\n PayrollCreditBlockerTypeUnblockOptions,\n} from '@gusto/embedded-api/models/components/payrollcreditblockertype'\nimport type { PayrollFlowAlert } from '../PayrollFlow/PayrollFlowComponents'\nimport {\n ConfirmWireDetails,\n type ConfirmWireDetailsComponentType,\n} from '../ConfirmWireDetails/ConfirmWireDetails'\nimport { canCancelPayroll } from '../helpers'\nimport { PrintChecks } from '../PrintChecks/PrintChecks'\nimport { PayrollOverviewPresentation } from './PayrollOverviewPresentation'\nimport { PayrollOverviewStatus } from './PayrollOverviewTypes'\nimport { useSubmissionPoll, type PayrollShow } from './useSubmissionPoll'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n componentEvents,\n payrollWireEvents,\n PAYROLL_PROCESSING_STATUS,\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES,\n type EventType,\n} from '@/shared/constants'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { readableStreamToBlob } from '@/helpers/readableStreamToBlob'\nimport { openPdfInNewTab } from '@/helpers/openPdfInNewTab'\nimport { useNonce } from '@/contexts/NonceProvider'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\nimport { Flex, PayrollLoading } from '@/components/Common'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\n/**\n * Props for {@link PayrollOverview}.\n *\n * @public\n */\nexport interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.PayrollOverview'> {\n /** Identifier of the company that owns the payroll. */\n companyId: string\n /** Identifier of the payroll being reviewed. The payroll must already be calculated. */\n payrollId: string\n /** Alert banners to display above the payroll summary. */\n alerts?: PayrollFlowAlert[]\n /** Whether reimbursement fields are shown in the totals and per-employee tables. Defaults to `true`. */\n withReimbursements?: boolean\n /** Custom component to replace the default wire details confirmation UI. */\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n /**\n * Hides the edit and cancel actions, leaving submit and receipt/paystub actions available.\n * Use for a deep link to a specific payroll where editing shouldn't be offered. Defaults to\n * `false`.\n */\n readOnly?: boolean\n}\n\nconst findUnresolvedBlockersWithOptions = (\n blockers: PayrollSubmissionBlockerType[] = [],\n): PayrollSubmissionBlockerType[] => {\n return blockers.filter(\n blocker =>\n blocker.status === 'unresolved' &&\n blocker.unblockOptions &&\n blocker.unblockOptions.length > 0,\n )\n}\n\nconst findWireInRequestUuid = (\n creditBlockers: PayrollCreditBlockerType[] = [],\n): string | undefined => {\n const unresolvedCreditBlocker = creditBlockers.find(blocker => blocker.status === 'unresolved')\n\n if (!unresolvedCreditBlocker?.unblockOptions) {\n return undefined\n }\n\n const wireUnblockOption = unresolvedCreditBlocker.unblockOptions.find(\n (option: PayrollCreditBlockerTypeUnblockOptions) => option.unblockType === 'submit_wire',\n )\n\n return wireUnblockOption?.metadata.wireInRequestUuid\n}\n\n/**\n * Final review screen for a calculated payroll before submission, with submit, cancel,\n * and edit controls. After submission, tracks processing status and surfaces the receipt\n * and per-employee paystub downloads once complete.\n *\n * @remarks\n * The payroll referenced by `payrollId` must already be calculated; rendering with an\n * uncalculated payroll throws. Unresolved submission blockers (e.g. fast-ACH threshold,\n * wire-in funding) are surfaced inline and the submit action stays disabled until each\n * blocker has a selected unblock option. While the payroll is processing, the component\n * polls until success or failure and emits the corresponding event. Pass `readOnly` to hide\n * the edit and cancel actions while keeping submit available.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/edit` | User chose to edit the payroll before submitting | — |\n * | `runPayroll/submitting` | Submit request was sent to the API | — |\n * | `runPayroll/submitted` | Payroll was successfully submitted | Submit payroll response |\n * | `runPayroll/processed` | Payroll finished processing successfully | `{ payPeriod, payrollUuid }` |\n * | `runPayroll/processingFailed` | Payroll processing failed | — |\n * | `runPayroll/cancelled` | Payroll was cancelled | Cancel payroll response |\n * | `runPayroll/receipt/get` | User requested the payroll receipt | `{ payrollId }` |\n * | `runPayroll/pdfPaystub/viewed` | User opened an employee's paystub PDF | `{ employeeId }` |\n * | `payroll/wire/form/done` | Wire-in details were confirmed via the embedded wire form | Submit wire-in response |\n * | `payroll/printChecks/start` | User opened the print-checks modal from the embedded print-checks banner | — |\n * | `payroll/printChecks/generate/start` | User submitted the print-checks form | — |\n * | `payroll/printChecks/generate/succeeded` | Printable checks finished generating | `{ documentUrl }` |\n * | `payroll/printChecks/generate/failed` | The print-checks request was rejected or generation failed | `{ errorMessage }` |\n * | `payroll/printChecks/retry` | User retried after a failed check generation | — |\n * | `payroll/printChecks/cancel` | User cancelled the print-checks form | — |\n * | `payroll/printChecks/close` | User closed the print-checks failure or summary screen | — |\n *\n * @param props - See {@link PayrollOverviewProps}.\n * @returns The payroll overview surface.\n * @public\n */\nexport function PayrollOverview(props: PayrollOverviewProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n companyId,\n payrollId,\n dictionary,\n onEvent,\n alerts,\n withReimbursements = true,\n ConfirmWireDetailsComponent = ConfirmWireDetails,\n readOnly = false,\n}: PayrollOverviewProps) => {\n useComponentDictionary('Payroll.PayrollOverview', dictionary)\n useI18n('Payroll.PayrollOverview')\n const { baseSubmitHandler } = useBase()\n const { t } = useTranslation('Payroll.PayrollOverview')\n const [hasSubmittedInSession, setHasSubmittedInSession] = useState(false)\n const [internalAlerts, setInternalAlerts] = useState(alerts || [])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n const [showWireDetailsConfirmation, setShowWireDetailsConfirmation] = useState(false)\n const { showBoundary } = useErrorBoundary()\n const formatCurrency = useNumberFormatter('currency')\n const dateFormatter = useDateFormatter()\n const { Button, UnorderedList, Text } = useComponentContext()\n const [status, setStatus] = useState(PayrollOverviewStatus.Viewing)\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const gustoEmbedded = useGustoEmbeddedContext()\n\n const payrollRequest = useMemo<GetV1CompaniesCompanyIdPayrollsPayrollIdRequest>(\n () => ({\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions', 'totals', 'payroll_taxes'],\n page: currentPage,\n per: itemsPerPage,\n sortBy: 'last_name',\n }),\n [companyId, payrollId, currentPage, itemsPerPage],\n )\n\n const {\n data,\n isFetching,\n refetch: refetchPayroll,\n } = usePayrollsGet(payrollRequest, {\n placeholderData: keepPreviousData,\n })\n const payrollData = data?.payrollShow\n const submissionBlockers = findUnresolvedBlockersWithOptions(payrollData?.submissionBlockers)\n const wireInId = findWireInRequestUuid(payrollData?.creditBlockers)\n\n const { data: wireInRequestData } = useWireInRequestsGet(\n {\n wireInRequestUuid: wireInId || '',\n },\n { enabled: !!wireInId },\n )\n const wireInRequest = wireInRequestData?.wireInRequest\n\n // Scoped to the current page's employees so this stays bounded regardless of company size,\n // since `flsaStatus` (compensation type) isn't available on employeeCompensations for\n // employees without an hourlyCompensations line item (e.g. salaried employees).\n const employeeUuids = (payrollData?.employeeCompensations ?? [])\n .map(employeeCompensation => employeeCompensation.employeeUuid)\n .filter((uuid): uuid is string => !!uuid)\n\n const { data: employeesData } = useEmployeesList(\n { companyId, uuids: employeeUuids },\n { enabled: employeeUuids.length > 0 },\n )\n const employeeFlsaStatusByUuid = (employeesData?.showEmployees ?? []).reduce<\n Record<string, string | undefined>\n >((acc, employee) => {\n acc[employee.uuid] = employee.flsaStatus\n return acc\n }, {})\n\n const onEdit = () => {\n onEvent(componentEvents.RUN_PAYROLL_EDIT)\n }\n\n const handleWireEvent = (type: EventType, data?: unknown) => {\n if (type === payrollWireEvents.PAYROLL_WIRE_FORM_DONE) {\n setShowWireDetailsConfirmation(true)\n }\n onEvent(type, data)\n }\n\n const wireInConfirmationRequest = wireInId && (\n <ConfirmWireDetailsComponent\n companyId={companyId}\n wireInId={wireInId}\n onEvent={handleWireEvent}\n />\n )\n\n const printChecksBanner = (\n <PrintChecks companyId={companyId} payrollId={payrollId} onEvent={onEvent} />\n )\n\n useEffect(() => {\n if (wireInRequest?.status === 'pending_review' && !showWireDetailsConfirmation) {\n setShowWireDetailsConfirmation(true)\n }\n }, [wireInRequest?.status, showWireDetailsConfirmation])\n\n const checkDate = payrollData?.checkDate\n useEffect(() => {\n if (checkDate && showWireDetailsConfirmation) {\n const formattedCheckDate = dateFormatter.formatShortWithYear(checkDate)\n\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.wireDetailsSubmittedTitle'),\n content: (\n <Text>\n {t('alerts.wireDetailsSubmittedMessage', { checkDate: formattedCheckDate })}\n </Text>\n ),\n onDismiss: () => {\n setShowWireDetailsConfirmation(false)\n },\n },\n ])\n }\n }, [showWireDetailsConfirmation, checkDate, t, dateFormatter, Text])\n\n const emitProcessed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSED, {\n payPeriod: payroll?.payPeriod,\n payrollUuid: payrollId,\n })\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.payrollProcessedTitle'),\n content: t('alerts.payrollProcessedMessage', {\n amount: formatCurrency(Number(payroll?.totals?.companyDebit)),\n date: dateFormatter.formatShortWithYear(\n payroll?.payrollStatusMeta?.expectedDebitTime ?? payroll?.payrollDeadline,\n ),\n }),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const emitProcessingFailed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setInternalAlerts([\n {\n type: 'error',\n title: t('alerts.payrollProcessingFailedTitle'),\n content: (\n <Flex flexDirection=\"column\" gap={16}>\n <UnorderedList items={renderErrorList(payroll?.processingRequest?.errors ?? [])} />\n {!readOnly && (\n <Button variant=\"secondary\" onClick={onEdit}>\n {t('alerts.payrollProcessingFailedCtaLabel')}\n </Button>\n )}\n </Flex>\n ),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const { start: startPayrollPoll, isPolling } = useSubmissionPoll({\n refetch: refetchPayroll,\n onProcessed: emitProcessed,\n onProcessingFailed: emitProcessingFailed,\n })\n\n // Always poll from mount, not just after Submit: the initial read is a non-suspense query, so\n // if its notification never arrives the component is stuck on `!payrollData` forever with no\n // other render source. This also doubles as picking up a submission already in flight\n // (another tab, another admin) — the poll's own evaluate rules keep the loop going for as long\n // as it reads `submitting`, regardless of why the loop started.\n useEffect(() => {\n startPayrollPoll({ baseline: null, sawSubmitting: false })\n }, [startPayrollPoll])\n\n const { data: bankAccountData } = useBankAccountsGetSuspense({\n companyId,\n })\n const bankAccount = bankAccountData.companyBankAccounts?.[0]\n\n const { paymentSpeed } = useCompanyPaymentSpeed(companyId)\n\n const { mutateAsync: submitPayroll, isPending } = usePayrollsSubmitMutation()\n\n const { mutateAsync: cancelPayroll } = usePayrollsCancelMutation()\n\n const nonce = useNonce()\n\n const [downloadingEmployeeIds, setDownloadingEmployeeIds] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n if (!payrollData) {\n return <PayrollLoading title={t('dataLoadingTitle')} />\n }\n\n if (status === PayrollOverviewStatus.Viewing && !payrollData.calculatedAt) {\n throw new Error(t('alerts.payrollNotCalculated'))\n }\n\n const pagination = getPaginationProps(data.httpMeta.response.headers, isFetching)\n\n // Per-tax totals come from the payroll-level `payrollTaxes` aggregate so they stay\n // correct when `employeeCompensations` is paginated (only a single page is loaded).\n const taxes =\n payrollData.payrollTaxes?.reduce(\n (acc, tax) => {\n if (!tax.name) return acc\n const amount = tax.amount ?? 0\n acc[tax.name] = {\n employee: (acc[tax.name]?.employee ?? 0) + (tax.employer ? 0 : amount),\n employer: (acc[tax.name]?.employer ?? 0) + (tax.employer ? amount : 0),\n }\n return acc\n },\n {} as Record<string, { employee: number; employer: number }>,\n ) || {}\n\n const onCancel = async () => {\n setStatus(PayrollOverviewStatus.Cancelling)\n await baseSubmitHandler(data, async () => {\n try {\n const result = await cancelPayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setStatus(PayrollOverviewStatus.Cancelled)\n onEvent(componentEvents.RUN_PAYROLL_CANCELLED, result)\n } catch (error) {\n setStatus(PayrollOverviewStatus.Viewing)\n throw error\n }\n })\n }\n const onPayrollReceipt = () => {\n onEvent(componentEvents.RUN_PAYROLL_RECEIPT_GET, { payrollId })\n }\n\n const onPaystubDownload = async (employeeId: string) => {\n const tab = openPdfInNewTab({ loadingMessage: t('downloadLoadingMessage'), nonce })\n setDownloadingEmployeeIds(prev => {\n const next = new Set(prev)\n next.add(employeeId)\n return next\n })\n try {\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId, employeeId })\n if (!response.value?.responseStream) {\n tab.close()\n throw new Error(t('alerts.paystubPdfError'))\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n tab.navigate(pdfBlob)\n onEvent(componentEvents.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId })\n } catch (err) {\n tab.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingEmployeeIds(prev => {\n if (!prev.has(employeeId)) return prev\n const next = new Set(prev)\n next.delete(employeeId)\n return next\n })\n }\n }\n const onSubmit = async () => {\n await baseSubmitHandler(data, async () => {\n const result = await submitPayroll({\n request: {\n companyId,\n payrollId,\n requestBody: {\n submissionBlockers: Object.entries(selectedUnblockOptions)\n .filter(([blockerType]) =>\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES.includes(blockerType),\n )\n .map(([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n })),\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTING)\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTED, result)\n startPayrollPoll({\n baseline: {\n processed: payrollData.processed ?? false,\n status: payrollData.processingRequest?.status,\n },\n sawSubmitting: false,\n })\n setHasSubmittedInSession(true)\n })\n }\n\n const deadlineAlert: PayrollFlowAlert | undefined = (() => {\n if (hasSubmittedInSession || isPolling) return undefined\n if (\n payrollData.processed ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n )\n return undefined\n\n if (payrollData.checkDate && payrollData.payrollDeadline) {\n return {\n type: 'info' as const,\n title: t('alerts.directDepositDeadline', {\n payDate: dateFormatter.formatShortWithWeekday(payrollData.checkDate),\n ...dateFormatter.formatWithTime(payrollData.payrollDeadline),\n }),\n content: t('alerts.directDepositDeadlineText'),\n }\n }\n return undefined\n })()\n\n const combinedAlerts = [...internalAlerts, ...(deadlineAlert ? [deadlineAlert] : [])]\n\n return (\n <PayrollOverviewPresentation\n onEdit={onEdit}\n onSubmit={onSubmit}\n onCancel={onCancel}\n onPayrollReceipt={onPayrollReceipt}\n onPaystubDownload={onPaystubDownload}\n status={isPending || hasSubmittedInSession ? PayrollOverviewStatus.Submitting : status}\n isProcessed={\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n }\n canCancel={canCancelPayroll(payrollData) && !readOnly}\n canEdit={!readOnly}\n payrollData={payrollData}\n employeeFlsaStatusByUuid={employeeFlsaStatusByUuid}\n bankAccount={bankAccount}\n taxes={taxes}\n alerts={combinedAlerts}\n submissionBlockers={submissionBlockers}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={(blockerType, value) => {\n setSelectedUnblockOptions(prev => ({ ...prev, [blockerType]: value }))\n }}\n wireInConfirmationRequest={wireInConfirmationRequest}\n printChecksBanner={printChecksBanner}\n withReimbursements={withReimbursements}\n paymentSpeed={paymentSpeed}\n pagination={pagination}\n downloadingEmployeeIds={downloadingEmployeeIds}\n />\n )\n}\n"],"names":["findUnresolvedBlockersWithOptions","blockers","blocker","findWireInRequestUuid","creditBlockers","unresolvedCreditBlocker","option","PayrollOverview","props","jsx","BaseComponent","Root","companyId","payrollId","dictionary","onEvent","alerts","withReimbursements","ConfirmWireDetailsComponent","ConfirmWireDetails","readOnly","useComponentDictionary","useI18n","baseSubmitHandler","useBase","t","useTranslation","hasSubmittedInSession","setHasSubmittedInSession","useState","internalAlerts","setInternalAlerts","selectedUnblockOptions","setSelectedUnblockOptions","showWireDetailsConfirmation","setShowWireDetailsConfirmation","showBoundary","useErrorBoundary","formatCurrency","useNumberFormatter","dateFormatter","useDateFormatter","Button","UnorderedList","Text","useComponentContext","status","setStatus","PayrollOverviewStatus","currentPage","itemsPerPage","getPaginationProps","usePagination","gustoEmbedded","useGustoEmbeddedContext","payrollRequest","useMemo","data","isFetching","refetchPayroll","usePayrollsGet","keepPreviousData","payrollData","submissionBlockers","wireInId","wireInRequestData","useWireInRequestsGet","wireInRequest","employeeUuids","employeeCompensation","uuid","employeesData","useEmployeesList","employeeFlsaStatusByUuid","acc","employee","onEdit","componentEvents","wireInConfirmationRequest","type","payrollWireEvents","printChecksBanner","PrintChecks","useEffect","checkDate","formattedCheckDate","emitProcessed","payroll","emitProcessingFailed","jsxs","Flex","renderErrorList","startPayrollPoll","isPolling","useSubmissionPoll","bankAccountData","useBankAccountsGetSuspense","bankAccount","paymentSpeed","useCompanyPaymentSpeed","submitPayroll","isPending","usePayrollsSubmitMutation","cancelPayroll","usePayrollsCancelMutation","nonce","useNonce","downloadingEmployeeIds","setDownloadingEmployeeIds","PayrollLoading","pagination","taxes","tax","amount","onCancel","result","error","onPayrollReceipt","onPaystubDownload","employeeId","tab","openPdfInNewTab","prev","next","response","payrollsGetPayStub","pdfBlob","readableStreamToBlob","err","onSubmit","blockerType","PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES","selectedOption","deadlineAlert","PAYROLL_PROCESSING_STATUS","combinedAlerts","PayrollOverviewPresentation","canCancelPayroll","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PayrollOverview.js","sources":["../../../../src/components/Payroll/PayrollOverview/PayrollOverview.tsx"],"sourcesContent":["import { usePayrollsSubmitMutation } from '@gusto/embedded-api/react-query/payrollsSubmit'\nimport { usePayrollsCancelMutation } from '@gusto/embedded-api/react-query/payrollsCancel'\nimport { usePayrollsGet } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { useBankAccountsGetSuspense } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport { useWireInRequestsGet } from '@gusto/embedded-api/react-query/wireInRequestsGet'\nimport { useEffect, useMemo, useState } from 'react'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsGetPayStub } from '@gusto/embedded-api/funcs/payrollsGetPayStub'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport type { GetV1CompaniesCompanyIdPayrollsPayrollIdRequest } from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrollspayrollid'\nimport type { PayrollSubmissionBlockerType } from '@gusto/embedded-api/models/components/payrollsubmissionblockertype'\nimport type {\n PayrollCreditBlockerType,\n PayrollCreditBlockerTypeUnblockOptions,\n} from '@gusto/embedded-api/models/components/payrollcreditblockertype'\nimport type { PayrollFlowAlert } from '../PayrollFlow/PayrollFlowComponents'\nimport {\n ConfirmWireDetails,\n type ConfirmWireDetailsComponentType,\n} from '../ConfirmWireDetails/ConfirmWireDetails'\nimport { canCancelPayroll } from '../helpers'\nimport { PrintChecks } from '../PrintChecks/PrintChecks'\nimport { PayrollOverviewPresentation } from './PayrollOverviewPresentation'\nimport { PayrollOverviewStatus } from './PayrollOverviewTypes'\nimport { useSubmissionPoll, type PayrollShow } from './useSubmissionPoll'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n componentEvents,\n payrollWireEvents,\n PAYROLL_PROCESSING_STATUS,\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES,\n type EventType,\n} from '@/shared/constants'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { readableStreamToBlob } from '@/helpers/readableStreamToBlob'\nimport { openPdfInNewTab } from '@/helpers/openPdfInNewTab'\nimport { useNonce } from '@/contexts/NonceProvider'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { isNonRetryablePollError } from '@/hooks/usePollingTask/usePollingTask'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\nimport { Flex, PayrollLoading } from '@/components/Common'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\n/**\n * Props for {@link PayrollOverview}.\n *\n * @public\n */\nexport interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.PayrollOverview'> {\n /** Identifier of the company that owns the payroll. */\n companyId: string\n /** Identifier of the payroll being reviewed. The payroll must already be calculated. */\n payrollId: string\n /** Alert banners to display above the payroll summary. */\n alerts?: PayrollFlowAlert[]\n /** Whether reimbursement fields are shown in the totals and per-employee tables. Defaults to `true`. */\n withReimbursements?: boolean\n /** Custom component to replace the default wire details confirmation UI. */\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n /**\n * Hides the edit and cancel actions, leaving submit and receipt/paystub actions available.\n * Use for a deep link to a specific payroll where editing shouldn't be offered. Defaults to\n * `false`.\n */\n readOnly?: boolean\n}\n\nconst findUnresolvedBlockersWithOptions = (\n blockers: PayrollSubmissionBlockerType[] = [],\n): PayrollSubmissionBlockerType[] => {\n return blockers.filter(\n blocker =>\n blocker.status === 'unresolved' &&\n blocker.unblockOptions &&\n blocker.unblockOptions.length > 0,\n )\n}\n\nconst findWireInRequestUuid = (\n creditBlockers: PayrollCreditBlockerType[] = [],\n): string | undefined => {\n const unresolvedCreditBlocker = creditBlockers.find(blocker => blocker.status === 'unresolved')\n\n if (!unresolvedCreditBlocker?.unblockOptions) {\n return undefined\n }\n\n const wireUnblockOption = unresolvedCreditBlocker.unblockOptions.find(\n (option: PayrollCreditBlockerTypeUnblockOptions) => option.unblockType === 'submit_wire',\n )\n\n return wireUnblockOption?.metadata.wireInRequestUuid\n}\n\n/**\n * Final review screen for a calculated payroll before submission, with submit, cancel,\n * and edit controls. After submission, tracks processing status and surfaces the receipt\n * and per-employee paystub downloads once complete.\n *\n * @remarks\n * The payroll referenced by `payrollId` must already be calculated; rendering with an\n * uncalculated payroll throws. Unresolved submission blockers (e.g. fast-ACH threshold,\n * wire-in funding) are surfaced inline and the submit action stays disabled until each\n * blocker has a selected unblock option. While the payroll is processing, the component\n * polls until success or failure and emits the corresponding event. Pass `readOnly` to hide\n * the edit and cancel actions while keeping submit available.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/edit` | User chose to edit the payroll before submitting | — |\n * | `runPayroll/submitting` | Submit request was sent to the API | — |\n * | `runPayroll/submitted` | Payroll was successfully submitted | Submit payroll response |\n * | `runPayroll/processed` | Payroll finished processing successfully | `{ payPeriod, payrollUuid }` |\n * | `runPayroll/processingFailed` | Payroll processing failed | — |\n * | `runPayroll/cancelled` | Payroll was cancelled | Cancel payroll response |\n * | `runPayroll/receipt/get` | User requested the payroll receipt | `{ payrollId }` |\n * | `runPayroll/pdfPaystub/viewed` | User opened an employee's paystub PDF | `{ employeeId }` |\n * | `payroll/wire/form/done` | Wire-in details were confirmed via the embedded wire form | Submit wire-in response |\n * | `payroll/printChecks/start` | User opened the print-checks modal from the embedded print-checks banner | — |\n * | `payroll/printChecks/generate/start` | User submitted the print-checks form | — |\n * | `payroll/printChecks/generate/succeeded` | Printable checks finished generating | `{ documentUrl }` |\n * | `payroll/printChecks/generate/failed` | The print-checks request was rejected or generation failed | `{ errorMessage }` |\n * | `payroll/printChecks/retry` | User retried after a failed check generation | — |\n * | `payroll/printChecks/cancel` | User cancelled the print-checks form | — |\n * | `payroll/printChecks/close` | User closed the print-checks failure or summary screen | — |\n *\n * @param props - See {@link PayrollOverviewProps}.\n * @returns The payroll overview surface.\n * @public\n */\nexport function PayrollOverview(props: PayrollOverviewProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n companyId,\n payrollId,\n dictionary,\n onEvent,\n alerts,\n withReimbursements = true,\n ConfirmWireDetailsComponent = ConfirmWireDetails,\n readOnly = false,\n className,\n}: PayrollOverviewProps) => {\n useComponentDictionary('Payroll.PayrollOverview', dictionary)\n useI18n('Payroll.PayrollOverview')\n const { baseSubmitHandler } = useBase()\n const { t } = useTranslation('Payroll.PayrollOverview')\n const [hasSubmittedInSession, setHasSubmittedInSession] = useState(false)\n const [internalAlerts, setInternalAlerts] = useState(alerts || [])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n const [showWireDetailsConfirmation, setShowWireDetailsConfirmation] = useState(false)\n const { showBoundary } = useErrorBoundary()\n const formatCurrency = useNumberFormatter('currency')\n const dateFormatter = useDateFormatter()\n const { Button, UnorderedList, Text } = useComponentContext()\n const [status, setStatus] = useState(PayrollOverviewStatus.Viewing)\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const gustoEmbedded = useGustoEmbeddedContext()\n\n const payrollRequest = useMemo<GetV1CompaniesCompanyIdPayrollsPayrollIdRequest>(\n () => ({\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions', 'totals', 'payroll_taxes'],\n page: currentPage,\n per: itemsPerPage,\n sortBy: 'last_name',\n }),\n [companyId, payrollId, currentPage, itemsPerPage],\n )\n\n const {\n data,\n isFetching,\n isError,\n error,\n refetch: refetchPayroll,\n } = usePayrollsGet(payrollRequest, {\n placeholderData: keepPreviousData,\n })\n const payrollData = data?.payrollShow\n const submissionBlockers = findUnresolvedBlockersWithOptions(payrollData?.submissionBlockers)\n const wireInId = findWireInRequestUuid(payrollData?.creditBlockers)\n\n const { data: wireInRequestData } = useWireInRequestsGet(\n {\n wireInRequestUuid: wireInId || '',\n },\n { enabled: !!wireInId },\n )\n const wireInRequest = wireInRequestData?.wireInRequest\n\n // Scoped to the current page's employees so this stays bounded regardless of company size,\n // since `flsaStatus` (compensation type) isn't available on employeeCompensations for\n // employees without an hourlyCompensations line item (e.g. salaried employees).\n const employeeUuids = (payrollData?.employeeCompensations ?? [])\n .map(employeeCompensation => employeeCompensation.employeeUuid)\n .filter((uuid): uuid is string => !!uuid)\n\n const { data: employeesData } = useEmployeesList(\n { companyId, uuids: employeeUuids },\n { enabled: employeeUuids.length > 0 },\n )\n const employeeFlsaStatusByUuid = (employeesData?.showEmployees ?? []).reduce<\n Record<string, string | undefined>\n >((acc, employee) => {\n acc[employee.uuid] = employee.flsaStatus\n return acc\n }, {})\n\n const onEdit = () => {\n onEvent(componentEvents.RUN_PAYROLL_EDIT)\n }\n\n const handleWireEvent = (type: EventType, data?: unknown) => {\n if (type === payrollWireEvents.PAYROLL_WIRE_FORM_DONE) {\n setShowWireDetailsConfirmation(true)\n }\n onEvent(type, data)\n }\n\n const wireInConfirmationRequest = wireInId && (\n <ConfirmWireDetailsComponent\n companyId={companyId}\n wireInId={wireInId}\n onEvent={handleWireEvent}\n />\n )\n\n const printChecksBanner = (\n <PrintChecks companyId={companyId} payrollId={payrollId} onEvent={onEvent} />\n )\n\n useEffect(() => {\n if (wireInRequest?.status === 'pending_review' && !showWireDetailsConfirmation) {\n setShowWireDetailsConfirmation(true)\n }\n }, [wireInRequest?.status, showWireDetailsConfirmation])\n\n const checkDate = payrollData?.checkDate\n useEffect(() => {\n if (checkDate && showWireDetailsConfirmation) {\n const formattedCheckDate = dateFormatter.formatShortWithYear(checkDate)\n\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.wireDetailsSubmittedTitle'),\n content: (\n <Text>\n {t('alerts.wireDetailsSubmittedMessage', { checkDate: formattedCheckDate })}\n </Text>\n ),\n onDismiss: () => {\n setShowWireDetailsConfirmation(false)\n },\n },\n ])\n }\n }, [showWireDetailsConfirmation, checkDate, t, dateFormatter, Text])\n\n const emitProcessed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSED, {\n payPeriod: payroll?.payPeriod,\n payrollUuid: payrollId,\n })\n setInternalAlerts([\n {\n type: 'success',\n title: t('alerts.payrollProcessedTitle'),\n content: t('alerts.payrollProcessedMessage', {\n amount: formatCurrency(Number(payroll?.totals?.companyDebit)),\n date: dateFormatter.formatShortWithYear(\n payroll?.payrollStatusMeta?.expectedDebitTime ?? payroll?.payrollDeadline,\n ),\n }),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const emitProcessingFailed = (payroll: PayrollShow | undefined) => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setInternalAlerts([\n {\n type: 'error',\n title: t('alerts.payrollProcessingFailedTitle'),\n content: (\n <Flex flexDirection=\"column\" gap={16}>\n <UnorderedList items={renderErrorList(payroll?.processingRequest?.errors ?? [])} />\n {!readOnly && (\n <Button variant=\"secondary\" onClick={onEdit}>\n {t('alerts.payrollProcessingFailedCtaLabel')}\n </Button>\n )}\n </Flex>\n ),\n },\n ])\n setShowWireDetailsConfirmation(false)\n setHasSubmittedInSession(false)\n }\n\n const { start: startPayrollPoll, isPolling } = useSubmissionPoll({\n refetch: refetchPayroll,\n onProcessed: emitProcessed,\n onProcessingFailed: emitProcessingFailed,\n // Unlike the calculation poll, a second Submit click here is safe even if this fires on a\n // payroll that actually did process successfully — payrollsSubmit only operates on an\n // unprocessed payroll, so the API itself rejects a resubmit rather than double-running it.\n onError: () => {\n emitProcessingFailed(undefined)\n },\n })\n\n // The initial read is a non-suspense query; if its notification never arrives, the component\n // is stuck on `!payrollData` forever with no other render source. This one read forces that\n // render -- it only keeps tracking to completion if it happens to land on `submitting`, not as\n // a durable watcher for a submission started elsewhere.\n useEffect(() => {\n startPayrollPoll({ baseline: null, sawSubmitting: false })\n }, [startPayrollPoll])\n\n const { data: bankAccountData } = useBankAccountsGetSuspense({\n companyId,\n })\n const bankAccount = bankAccountData.companyBankAccounts?.[0]\n\n const { paymentSpeed } = useCompanyPaymentSpeed(companyId)\n\n const { mutateAsync: submitPayroll, isPending } = usePayrollsSubmitMutation()\n\n const { mutateAsync: cancelPayroll } = usePayrollsCancelMutation()\n\n const nonce = useNonce()\n\n const [downloadingEmployeeIds, setDownloadingEmployeeIds] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n if (!payrollData) {\n if (isError) {\n throw new Error(t('alerts.payrollLoadFailed'))\n }\n return <PayrollLoading title={t('dataLoadingTitle')} />\n }\n\n // `keepPreviousData` can leave stale data in place while the query is erroring in the\n // background. A retryable error (network blip, transient 5xx) is fine to ride out on stale\n // data, but a non-retryable one (expired session, schema mismatch) never recovers on its own --\n // continuing to render stale data would hide that from the partner indefinitely.\n if (isError && isNonRetryablePollError(error)) {\n throw new Error(t('alerts.payrollLoadFailed'))\n }\n\n if (status === PayrollOverviewStatus.Viewing && !payrollData.calculatedAt) {\n throw new Error(t('alerts.payrollNotCalculated'))\n }\n\n const pagination = getPaginationProps(data.httpMeta.response.headers, isFetching)\n\n // Per-tax totals come from the payroll-level `payrollTaxes` aggregate so they stay\n // correct when `employeeCompensations` is paginated (only a single page is loaded).\n const taxes =\n payrollData.payrollTaxes?.reduce(\n (acc, tax) => {\n if (!tax.name) return acc\n const amount = tax.amount ?? 0\n acc[tax.name] = {\n employee: (acc[tax.name]?.employee ?? 0) + (tax.employer ? 0 : amount),\n employer: (acc[tax.name]?.employer ?? 0) + (tax.employer ? amount : 0),\n }\n return acc\n },\n {} as Record<string, { employee: number; employer: number }>,\n ) || {}\n\n const onCancel = async () => {\n setStatus(PayrollOverviewStatus.Cancelling)\n await baseSubmitHandler(data, async () => {\n try {\n const result = await cancelPayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setStatus(PayrollOverviewStatus.Cancelled)\n onEvent(componentEvents.RUN_PAYROLL_CANCELLED, result)\n } catch (error) {\n setStatus(PayrollOverviewStatus.Viewing)\n throw error\n }\n })\n }\n const onPayrollReceipt = () => {\n onEvent(componentEvents.RUN_PAYROLL_RECEIPT_GET, { payrollId })\n }\n\n const onPaystubDownload = async (employeeId: string) => {\n const tab = openPdfInNewTab({ loadingMessage: t('downloadLoadingMessage'), nonce })\n setDownloadingEmployeeIds(prev => {\n const next = new Set(prev)\n next.add(employeeId)\n return next\n })\n try {\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId, employeeId })\n if (!response.value?.responseStream) {\n tab.close()\n throw new Error(t('alerts.paystubPdfError'))\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n tab.navigate(pdfBlob)\n onEvent(componentEvents.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId })\n } catch (err) {\n tab.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingEmployeeIds(prev => {\n if (!prev.has(employeeId)) return prev\n const next = new Set(prev)\n next.delete(employeeId)\n return next\n })\n }\n }\n const onSubmit = async () => {\n await baseSubmitHandler(data, async () => {\n const result = await submitPayroll({\n request: {\n companyId,\n payrollId,\n requestBody: {\n submissionBlockers: Object.entries(selectedUnblockOptions)\n .filter(([blockerType]) =>\n PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES.includes(blockerType),\n )\n .map(([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n })),\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTING)\n onEvent(componentEvents.RUN_PAYROLL_SUBMITTED, result)\n startPayrollPoll({\n baseline: {\n processed: payrollData.processed ?? false,\n status: payrollData.processingRequest?.status,\n },\n sawSubmitting: false,\n })\n setHasSubmittedInSession(true)\n })\n }\n\n const deadlineAlert: PayrollFlowAlert | undefined = (() => {\n if (hasSubmittedInSession || isPolling) return undefined\n if (\n payrollData.processed ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n )\n return undefined\n\n if (payrollData.checkDate && payrollData.payrollDeadline) {\n return {\n type: 'info' as const,\n title: t('alerts.directDepositDeadline', {\n payDate: dateFormatter.formatShortWithWeekday(payrollData.checkDate),\n ...dateFormatter.formatWithTime(payrollData.payrollDeadline),\n }),\n content: t('alerts.directDepositDeadlineText'),\n }\n }\n return undefined\n })()\n\n const combinedAlerts = [...internalAlerts, ...(deadlineAlert ? [deadlineAlert] : [])]\n\n return (\n <PayrollOverviewPresentation\n className={className}\n onEdit={onEdit}\n onSubmit={onSubmit}\n onCancel={onCancel}\n onPayrollReceipt={onPayrollReceipt}\n onPaystubDownload={onPaystubDownload}\n status={isPending || hasSubmittedInSession ? PayrollOverviewStatus.Submitting : status}\n isProcessed={\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n }\n canCancel={canCancelPayroll(payrollData) && !readOnly}\n canEdit={!readOnly}\n payrollData={payrollData}\n employeeFlsaStatusByUuid={employeeFlsaStatusByUuid}\n bankAccount={bankAccount}\n taxes={taxes}\n alerts={combinedAlerts}\n submissionBlockers={submissionBlockers}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={(blockerType, value) => {\n setSelectedUnblockOptions(prev => ({ ...prev, [blockerType]: value }))\n }}\n wireInConfirmationRequest={wireInConfirmationRequest}\n printChecksBanner={printChecksBanner}\n withReimbursements={withReimbursements}\n paymentSpeed={paymentSpeed}\n pagination={pagination}\n downloadingEmployeeIds={downloadingEmployeeIds}\n />\n )\n}\n"],"names":["findUnresolvedBlockersWithOptions","blockers","blocker","findWireInRequestUuid","creditBlockers","unresolvedCreditBlocker","option","PayrollOverview","props","jsx","BaseComponent","Root","companyId","payrollId","dictionary","onEvent","alerts","withReimbursements","ConfirmWireDetailsComponent","ConfirmWireDetails","readOnly","className","useComponentDictionary","useI18n","baseSubmitHandler","useBase","t","useTranslation","hasSubmittedInSession","setHasSubmittedInSession","useState","internalAlerts","setInternalAlerts","selectedUnblockOptions","setSelectedUnblockOptions","showWireDetailsConfirmation","setShowWireDetailsConfirmation","showBoundary","useErrorBoundary","formatCurrency","useNumberFormatter","dateFormatter","useDateFormatter","Button","UnorderedList","Text","useComponentContext","status","setStatus","PayrollOverviewStatus","currentPage","itemsPerPage","getPaginationProps","usePagination","gustoEmbedded","useGustoEmbeddedContext","payrollRequest","useMemo","data","isFetching","isError","error","refetchPayroll","usePayrollsGet","keepPreviousData","payrollData","submissionBlockers","wireInId","wireInRequestData","useWireInRequestsGet","wireInRequest","employeeUuids","employeeCompensation","uuid","employeesData","useEmployeesList","employeeFlsaStatusByUuid","acc","employee","onEdit","componentEvents","wireInConfirmationRequest","type","payrollWireEvents","printChecksBanner","PrintChecks","useEffect","checkDate","formattedCheckDate","emitProcessed","payroll","emitProcessingFailed","jsxs","Flex","renderErrorList","startPayrollPoll","isPolling","useSubmissionPoll","bankAccountData","useBankAccountsGetSuspense","bankAccount","paymentSpeed","useCompanyPaymentSpeed","submitPayroll","isPending","usePayrollsSubmitMutation","cancelPayroll","usePayrollsCancelMutation","nonce","useNonce","downloadingEmployeeIds","setDownloadingEmployeeIds","PayrollLoading","isNonRetryablePollError","pagination","taxes","tax","amount","onCancel","result","onPayrollReceipt","onPaystubDownload","employeeId","tab","openPdfInNewTab","prev","next","response","payrollsGetPayStub","pdfBlob","readableStreamToBlob","err","onSubmit","blockerType","PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES","selectedOption","deadlineAlert","PAYROLL_PROCESSING_STATUS","combinedAlerts","PayrollOverviewPresentation","canCancelPayroll","value"],"mappings":"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"}
|