@gusto/embedded-react-sdk 0.57.2 → 0.58.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 +108 -0
- package/dist/components/Common/DataView/DataCards/DataCards.js +98 -66
- package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
- package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js +11 -9
- package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js.map +1 -1
- package/dist/components/Common/DataView/DataTable/DataTable.js +86 -75
- package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
- package/dist/components/Common/DataView/DataView.js.map +1 -1
- package/dist/components/Common/DataView/getSortControls.js +22 -0
- package/dist/components/Common/DataView/getSortControls.js.map +1 -0
- package/dist/components/Common/DataView/useDataView.js +30 -24
- package/dist/components/Common/DataView/useDataView.js.map +1 -1
- package/dist/components/Common/DateRangeFilter/DateRangeFilter.js +32 -32
- package/dist/components/Common/DateRangeFilter/DateRangeFilter.js.map +1 -1
- package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
- package/dist/components/Common/UI/Table/Table.js +65 -25
- package/dist/components/Common/UI/Table/Table.js.map +1 -1
- package/dist/components/Common/UI/Table/Table.module.scss.js +8 -4
- package/dist/components/Common/UI/Table/Table.module.scss.js.map +1 -1
- package/dist/components/Common/UI/Table/TableTypes.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +5 -6
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +6 -7
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +3 -4
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +30 -45
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js +11 -12
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js +34 -14
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js +106 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js +136 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js +38 -20
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js +78 -44
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js +45 -37
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js +244 -95
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js +22 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js +13 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js +48 -43
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js +57 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js +83 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js +84 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +109 -39
- package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +78 -83
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -4
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +5 -5
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js.map +1 -1
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js +45 -54
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js +4 -4
- package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js +17 -22
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js +3 -3
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +1 -0
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +122 -113
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js +63 -54
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -1
- package/dist/components/Contractor/Dashboard/Dashboard.js +20 -20
- package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js +10 -10
- package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js.map +1 -1
- package/dist/components/Contractor/Landing/Landing.js +43 -39
- package/dist/components/Contractor/Landing/Landing.js.map +1 -1
- package/dist/components/Contractor/NewHireReport/NewHireReport.js +3 -3
- package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js +39 -48
- package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js.map +1 -1
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +1 -1
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +10 -10
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +4 -4
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +8 -8
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +5 -5
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +3 -3
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js +76 -69
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js +1 -1
- package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +27 -29
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +15 -13
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js.map +1 -1
- package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js +2 -9
- package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
- package/dist/components/Contractor/Submit/Submit.js +18 -18
- package/dist/components/Contractor/Submit/Submit.js.map +1 -1
- package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js +6 -6
- package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js.map +1 -1
- package/dist/components/Contractor/shared/hourlyRate.js +14 -0
- package/dist/components/Contractor/shared/hourlyRate.js.map +1 -0
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +63 -63
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +25 -25
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +15 -15
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.js +25 -25
- package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +7 -7
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +6 -6
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
- package/dist/components/Employee/Landing/Landing.js +37 -33
- package/dist/components/Employee/Landing/Landing.js.map +1 -1
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +27 -27
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js +65 -74
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +6 -6
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js +8 -15
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +11 -11
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +12 -12
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +26 -26
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +16 -16
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +2 -3
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +84 -82
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js +8 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js.map +1 -0
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +97 -92
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +18 -18
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +146 -134
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js +14 -12
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +34 -33
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +49 -48
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +0 -4
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +51 -38
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +121 -102
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +6 -6
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +79 -74
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +9 -9
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +92 -83
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +23 -27
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +82 -75
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js +416 -0
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js.map +1 -0
- package/dist/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js → RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js} +1 -1
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js +97 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js +106 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js.map +1 -0
- package/dist/components/Payroll/{TransitionCreation/TransitionCreationPresentation.module.scss.js → TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js} +1 -1
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js +10 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js.map +1 -0
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +86 -64
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +126 -77
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js +8 -0
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/helpers.js +1 -1
- package/dist/components/Payroll/helpers.js.map +1 -1
- package/dist/components/Payroll/index.js +16 -20
- package/dist/components/Payroll/index.js.map +1 -1
- package/dist/components/Payroll/payrollTypes.js +1 -1
- package/dist/components/Payroll/payrollTypes.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +2 -3
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +11 -14
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +18 -17
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js +31 -0
- package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js.map +1 -0
- package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js +1 -1
- package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js.map +1 -1
- package/dist/contexts/FeaturesProvider/FeaturesProvider.js +14 -0
- package/dist/contexts/FeaturesProvider/FeaturesProvider.js.map +1 -0
- package/dist/contexts/FeaturesProvider/useFeature.js +7 -0
- package/dist/contexts/FeaturesProvider/useFeature.js.map +1 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +32 -30
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
- package/dist/i18n/I18n.js +2 -3
- package/dist/i18n/I18n.js.map +1 -1
- package/dist/i18n/en/Company.Management.PaySchedule.json.js +31 -13
- package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -1
- package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +20 -12
- package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -1
- package/dist/i18n/en/Contractor.Profile.json.js +1 -1
- package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +29 -23
- package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollHistory.json.js +1 -1
- package/dist/i18n/en/Payroll.PayrollLanding.json.js +1 -1
- package/dist/i18n/en/Payroll.PayrollList.json.js +5 -5
- package/dist/i18n/en/{Payroll.UNSTABLE_PayrollEditEmployee.json.js → Payroll.RropPayrollEditEmployee.json.js} +42 -38
- package/dist/i18n/en/Payroll.RropPayrollEditEmployee.json.js.map +1 -0
- package/dist/i18n/en/Payroll.TransitionConfiguration.json.js +28 -0
- package/dist/i18n/en/Payroll.TransitionConfiguration.json.js.map +1 -0
- package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js +16 -12
- package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js.map +1 -1
- package/dist/i18n/en/common.json.js +1 -1
- package/dist/package.json.js +1 -1
- package/dist/partner-hook-utils/form/composeSubmitHandler.js +55 -48
- package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +31 -29
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
- package/dist/shared/constants.js +7 -6
- package/dist/shared/constants.js.map +1 -1
- package/dist/src/components/Common/DataView/DataCards/DataCards.d.ts +3 -1
- package/dist/src/components/Common/DataView/DataTable/DataTable.d.ts +3 -1
- package/dist/src/components/Common/DataView/DataView.d.ts +2 -0
- package/dist/src/components/Common/DataView/getSortControls.d.ts +24 -0
- package/dist/src/components/Common/DataView/useDataView.d.ts +22 -1
- package/dist/src/components/Common/DateRangeFilter/DateRangeFilter.d.ts +2 -2
- package/dist/src/components/Common/OnboardingStatusBadge/index.d.ts +1 -1
- package/dist/src/components/Common/UI/Table/TableTypes.d.ts +71 -2
- package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +1 -9
- package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +0 -1
- package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.d.ts +10 -3
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.d.ts +21 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.d.ts +34 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.d.ts +9 -3
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.d.ts +5 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.d.ts +10 -10
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.d.ts +12 -4
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.d.ts +19 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.d.ts +17 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.d.ts +34 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/usePayScheduleAssignment.d.ts +16 -3
- package/dist/src/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.d.ts +23 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.d.ts +25 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +4 -15
- package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +2 -2
- package/dist/src/components/Contractor/ContractorList/shared/index.d.ts +1 -1
- package/dist/src/components/Contractor/ContractorList/shared/useContractorList.d.ts +38 -0
- package/dist/src/components/Contractor/Landing/Landing.d.ts +5 -2
- package/dist/src/components/Contractor/shared/hourlyRate.d.ts +23 -0
- package/dist/src/components/Employee/Landing/Landing.d.ts +5 -2
- package/dist/src/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.d.ts +9 -0
- package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +2 -0
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.d.ts +2 -2
- package/dist/src/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +8 -6
- package/dist/src/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.d.ts +0 -8
- package/dist/src/components/Payroll/PayrollFlow/PayrollFlow.d.ts +5 -3
- package/dist/src/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +2 -3
- package/dist/src/components/Payroll/PayrollFlow/payrollStateMachine.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollLanding/PayrollLanding.d.ts +18 -5
- package/dist/src/components/Payroll/PayrollList/PayrollList.d.ts +11 -5
- package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -2
- package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts → RropPayrollEditEmployee/RropPayrollEditEmployee.d.ts} +9 -5
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfiguration.d.ts +55 -0
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.d.ts +9 -0
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.d.ts +52 -0
- package/dist/src/components/Payroll/TransitionConfiguration/index.d.ts +2 -0
- package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +5 -2
- package/dist/src/components/Payroll/helpers.d.ts +2 -2
- package/dist/src/components/Payroll/index.d.ts +2 -6
- package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +2 -2
- package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.d.ts +14 -0
- package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.test.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -1
- package/dist/src/contexts/FeaturesProvider/FeaturesProvider.d.ts +21 -0
- package/dist/src/contexts/FeaturesProvider/useFeature.d.ts +53 -0
- package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +3 -0
- package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +38 -10
- package/dist/src/contexts/index.d.ts +1 -0
- package/dist/src/i18n/en/common.json.d.ts +5 -1
- package/dist/src/i18n/types.d.ts +195 -70
- package/dist/src/models/external.d.ts +63 -48
- package/dist/src/partner-hook-utils/form/fields/RadioGroupHookField.d.ts +9 -7
- package/dist/src/shared/constants.d.ts +5 -3
- package/dist/src/test-utils/renderWithProviders.d.ts +2 -0
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +57 -40
- package/package.json +23 -22
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +0 -29
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +0 -1
- package/dist/components/Payroll/Transition/TransitionFlow.js +0 -60
- package/dist/components/Payroll/Transition/TransitionFlow.js.map +0 -1
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js +0 -31
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +0 -1
- package/dist/components/Payroll/Transition/transitionStateMachine.js +0 -49
- package/dist/components/Payroll/Transition/transitionStateMachine.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +0 -100
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +0 -110
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.module.scss.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js +0 -21
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js +0 -48
- package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js +0 -35
- package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js +0 -23
- package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +0 -29
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +0 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +0 -411
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +0 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +0 -1
- package/dist/i18n/en/Payroll.Transition.json.js +0 -8
- package/dist/i18n/en/Payroll.Transition.json.js.map +0 -1
- package/dist/i18n/en/Payroll.TransitionCreation.json.js +0 -26
- package/dist/i18n/en/Payroll.TransitionCreation.json.js.map +0 -1
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +0 -1
- package/dist/src/components/Payroll/PayrollFlow/TransitionFlowContextual.d.ts +0 -7
- package/dist/src/components/Payroll/Transition/TransitionFlow.d.ts +0 -55
- package/dist/src/components/Payroll/Transition/TransitionFlowComponents.d.ts +0 -52
- package/dist/src/components/Payroll/Transition/index.d.ts +0 -2
- package/dist/src/components/Payroll/Transition/transitionStateMachine.d.ts +0 -29
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreation.d.ts +0 -22
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +0 -9
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +0 -57
- package/dist/src/components/Payroll/TransitionCreation/index.d.ts +0 -2
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayroll.d.ts +0 -55
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollComponents.d.ts +0 -24
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollTypes.d.ts +0 -23
- package/dist/src/components/Payroll/TransitionPayroll/index.d.ts +0 -2
- package/dist/src/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.d.ts +0 -15
- package/dist/src/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.d.ts +0 -28
- /package/dist/src/components/{Payroll/Transition/transitionStateMachine.test.d.ts → Common/DataView/getSortControls.test.d.ts} +0 -0
|
@@ -1,26 +1,26 @@
|
|
|
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
|
|
1
|
+
import { jsx as l, jsxs as O } from "react/jsx-runtime";
|
|
2
|
+
import { usePayrollsSubmitMutation as ke } from "@gusto/embedded-api/react-query/payrollsSubmit";
|
|
3
|
+
import { usePayrollsCancelMutation as Te } from "@gusto/embedded-api/react-query/payrollsCancel";
|
|
4
|
+
import { usePayrollsGet as Ue } from "@gusto/embedded-api/react-query/payrollsGet";
|
|
5
|
+
import { useEmployeesList as Be } from "@gusto/embedded-api/react-query/employeesList";
|
|
6
|
+
import { keepPreviousData as j } from "@tanstack/react-query";
|
|
7
7
|
import { useTranslation as ve } from "react-i18next";
|
|
8
8
|
import Ne from "classnames";
|
|
9
9
|
import { useBankAccountsGetSuspense as We } from "@gusto/embedded-api/react-query/bankAccountsGet";
|
|
10
10
|
import { useWireInRequestsGet as Ye } from "@gusto/embedded-api/react-query/wireInRequestsGet";
|
|
11
|
-
import { useState as m, useMemo as qe, useEffect as
|
|
11
|
+
import { useState as m, useMemo as qe, useEffect as A } from "react";
|
|
12
12
|
import { useGustoEmbeddedContext as Fe } from "@gusto/embedded-api/react-query/_context";
|
|
13
13
|
import { payrollsGetPayStub as xe } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
|
|
14
14
|
import { useErrorBoundary as Ie } from "react-error-boundary";
|
|
15
15
|
import { ConfirmWireDetails as Me } from "../ConfirmWireDetails/ConfirmWireDetails.js";
|
|
16
16
|
import { canCancelPayroll as Ge } from "../helpers.js";
|
|
17
|
-
import { PrintChecks as
|
|
18
|
-
import { PayrollOverviewPresentation as
|
|
17
|
+
import { PrintChecks as je } from "../PrintChecks/PrintChecks.js";
|
|
18
|
+
import { PayrollOverviewPresentation as Ve } from "./PayrollOverviewPresentation.js";
|
|
19
19
|
import { PayrollOverviewStatus as d } from "./PayrollOverviewTypes.js";
|
|
20
20
|
import He from "./PayrollOverview.module.scss.js";
|
|
21
21
|
import { useSubmissionPoll as Ke } from "./useSubmissionPoll.js";
|
|
22
|
-
import { useCompanyPaymentSpeed as
|
|
23
|
-
import { PAYROLL_PROCESSING_STATUS as
|
|
22
|
+
import { useCompanyPaymentSpeed as Je } from "../../../hooks/useCompanyPaymentSpeed.js";
|
|
23
|
+
import { PAYROLL_PROCESSING_STATUS as ze, componentEvents as u, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as Qe, payrollWireEvents as Xe } from "../../../shared/constants.js";
|
|
24
24
|
import { BaseComponent as Ze } from "../../Base/Base.js";
|
|
25
25
|
import { useBase as $e } from "../../Base/useBase.js";
|
|
26
26
|
import { useComponentDictionary as et, useI18n as tt } from "../../../i18n/I18n.js";
|
|
@@ -31,7 +31,7 @@ import { useDateFormatter as nt } from "../../../hooks/useDateFormatter.js";
|
|
|
31
31
|
import { useComponentContext as it } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
32
32
|
import { isNonRetryablePollError as at } from "../../../hooks/usePollingTask/usePollingTask.js";
|
|
33
33
|
import { renderErrorList as lt } from "../../../helpers/apiErrorToList.js";
|
|
34
|
-
import { Flex as
|
|
34
|
+
import { Flex as k } from "../../Common/Flex/Flex.js";
|
|
35
35
|
import { usePagination as ct } from "../../../hooks/usePagination/usePagination.js";
|
|
36
36
|
import { useNonce as ut } from "../../../contexts/NonceProvider/useNonce.js";
|
|
37
37
|
import { PayrollLoading as mt } from "../../Common/PayrollLoading/PayrollLoading.js";
|
|
@@ -49,16 +49,16 @@ function $t(o) {
|
|
|
49
49
|
const ft = ({
|
|
50
50
|
companyId: o,
|
|
51
51
|
payrollId: i,
|
|
52
|
-
dictionary:
|
|
52
|
+
dictionary: T,
|
|
53
53
|
onEvent: a,
|
|
54
|
-
alerts:
|
|
54
|
+
alerts: V,
|
|
55
55
|
withReimbursements: H = !0,
|
|
56
56
|
ConfirmWireDetailsComponent: K = Me,
|
|
57
|
-
readOnly:
|
|
58
|
-
className:
|
|
57
|
+
readOnly: b = !1,
|
|
58
|
+
className: U
|
|
59
59
|
}) => {
|
|
60
|
-
et("Payroll.PayrollOverview",
|
|
61
|
-
const { baseSubmitHandler:
|
|
60
|
+
et("Payroll.PayrollOverview", T), tt("Payroll.PayrollOverview");
|
|
61
|
+
const { baseSubmitHandler: B } = $e(), { t: s } = ve("Payroll.PayrollOverview"), [v, S] = m(!1), [J, g] = m(V || []), [N, z] = m({}), [P, p] = m(!1), { showBoundary: Q } = Ie(), X = st("currency"), f = nt(), { Button: W, UnorderedList: Z, Text: w, Heading: $ } = it(), [Y, D] = m(d.Viewing), { currentPage: R, itemsPerPage: L, getPaginationProps: ee } = ct({
|
|
62
62
|
defaultItemsPerPage: 25
|
|
63
63
|
}), te = Fe(), re = qe(
|
|
64
64
|
() => ({
|
|
@@ -72,29 +72,38 @@ const ft = ({
|
|
|
72
72
|
"payroll_taxes",
|
|
73
73
|
"payroll_status_meta"
|
|
74
74
|
],
|
|
75
|
-
page:
|
|
76
|
-
per:
|
|
75
|
+
page: R,
|
|
76
|
+
per: L,
|
|
77
77
|
sortBy: "last_name"
|
|
78
78
|
}),
|
|
79
|
-
[o, i,
|
|
79
|
+
[o, i, R, L]
|
|
80
80
|
), {
|
|
81
81
|
data: y,
|
|
82
82
|
isFetching: oe,
|
|
83
83
|
isError: q,
|
|
84
84
|
error: se,
|
|
85
85
|
refetch: ne
|
|
86
|
-
} =
|
|
87
|
-
placeholderData:
|
|
86
|
+
} = Ue(re, {
|
|
87
|
+
placeholderData: j
|
|
88
88
|
}), n = y?.payrollShow, ie = dt(n?.submissionBlockers), h = pt(n?.creditBlockers), { data: ae } = Ye(
|
|
89
89
|
{
|
|
90
90
|
wireInRequestUuid: h || ""
|
|
91
91
|
},
|
|
92
92
|
{ enabled: !!h }
|
|
93
|
-
), F = ae?.wireInRequest,
|
|
94
|
-
{
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
), F = ae?.wireInRequest, { data: le } = Be(
|
|
94
|
+
{
|
|
95
|
+
companyId: o,
|
|
96
|
+
payrollUuid: i,
|
|
97
|
+
page: R,
|
|
98
|
+
per: L,
|
|
99
|
+
sortBy: "name"
|
|
100
|
+
},
|
|
101
|
+
{ placeholderData: j, enabled: !!n }
|
|
102
|
+
), ce = (le?.showEmployees ?? []).reduce((e, t) => {
|
|
103
|
+
const r = t.jobs ?? [], c = r.find((Ae) => Ae.primary) ?? r[0];
|
|
104
|
+
return e[t.uuid] = c?.compensations?.[0]?.flsaStatus, e;
|
|
105
|
+
}, {}), x = () => {
|
|
106
|
+
a(u.RUN_PAYROLL_EDIT);
|
|
98
107
|
}, ue = h && /* @__PURE__ */ l(
|
|
99
108
|
K,
|
|
100
109
|
{
|
|
@@ -104,14 +113,14 @@ const ft = ({
|
|
|
104
113
|
e === Xe.PAYROLL_WIRE_FORM_DONE && p(!0), a(e, t);
|
|
105
114
|
}
|
|
106
115
|
}
|
|
107
|
-
), me = /* @__PURE__ */ l(
|
|
108
|
-
|
|
116
|
+
), me = /* @__PURE__ */ l(je, { companyId: o, payrollId: i, onEvent: a });
|
|
117
|
+
A(() => {
|
|
109
118
|
F?.status === "pending_review" && !P && p(!0);
|
|
110
119
|
}, [F?.status, P]);
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
if (
|
|
114
|
-
const e = f.formatShortWithYear(
|
|
120
|
+
const _ = n?.checkDate;
|
|
121
|
+
A(() => {
|
|
122
|
+
if (_ && P) {
|
|
123
|
+
const e = f.formatShortWithYear(_);
|
|
115
124
|
g([
|
|
116
125
|
{
|
|
117
126
|
type: "success",
|
|
@@ -123,9 +132,9 @@ const ft = ({
|
|
|
123
132
|
}
|
|
124
133
|
]);
|
|
125
134
|
}
|
|
126
|
-
}, [P,
|
|
135
|
+
}, [P, _, s, f, w]);
|
|
127
136
|
const de = (e) => {
|
|
128
|
-
a(
|
|
137
|
+
a(u.RUN_PAYROLL_PROCESSED, {
|
|
129
138
|
payPeriod: e?.payPeriod,
|
|
130
139
|
payrollUuid: i
|
|
131
140
|
}), g([
|
|
@@ -139,35 +148,35 @@ const ft = ({
|
|
|
139
148
|
)
|
|
140
149
|
})
|
|
141
150
|
}
|
|
142
|
-
]), p(!1),
|
|
143
|
-
},
|
|
144
|
-
a(
|
|
151
|
+
]), p(!1), S(!1);
|
|
152
|
+
}, I = (e) => {
|
|
153
|
+
a(u.RUN_PAYROLL_PROCESSING_FAILED), g([
|
|
145
154
|
{
|
|
146
155
|
type: "error",
|
|
147
156
|
title: s("alerts.payrollProcessingFailedTitle"),
|
|
148
|
-
content: /* @__PURE__ */
|
|
157
|
+
content: /* @__PURE__ */ O(k, { flexDirection: "column", gap: 16, children: [
|
|
149
158
|
/* @__PURE__ */ l(Z, { items: lt(e?.processingRequest?.errors ?? []) }),
|
|
150
|
-
!
|
|
159
|
+
!b && /* @__PURE__ */ l(W, { variant: "secondary", onClick: x, children: s("alerts.payrollProcessingFailedCtaLabel") })
|
|
151
160
|
] })
|
|
152
161
|
}
|
|
153
|
-
]), p(!1),
|
|
154
|
-
}, { start:
|
|
162
|
+
]), p(!1), S(!1);
|
|
163
|
+
}, { start: C, isPolling: pe } = Ke({
|
|
155
164
|
refetch: ne,
|
|
156
165
|
onProcessed: de,
|
|
157
|
-
onProcessingFailed:
|
|
166
|
+
onProcessingFailed: I,
|
|
158
167
|
// Unlike the calculation poll, a second Submit click here is safe even if this fires on a
|
|
159
168
|
// payroll that actually did process successfully — payrollsSubmit only operates on an
|
|
160
169
|
// unprocessed payroll, so the API itself rejects a resubmit rather than double-running it.
|
|
161
170
|
onError: () => {
|
|
162
|
-
|
|
171
|
+
I(void 0);
|
|
163
172
|
}
|
|
164
173
|
});
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}, [
|
|
174
|
+
A(() => {
|
|
175
|
+
C({ baseline: null, sawSubmitting: !1 });
|
|
176
|
+
}, [C]);
|
|
168
177
|
const { data: fe } = We({
|
|
169
178
|
companyId: o
|
|
170
|
-
}), Pe = fe.companyBankAccounts?.[0], { paymentSpeed: ye } =
|
|
179
|
+
}), Pe = fe.companyBankAccounts?.[0], { paymentSpeed: ye } = Je(o), { mutateAsync: he, isPending: be } = ke(), { mutateAsync: Se } = Te(), ge = ut(), [we, M] = m(
|
|
171
180
|
() => /* @__PURE__ */ new Set()
|
|
172
181
|
);
|
|
173
182
|
if (!n) {
|
|
@@ -177,19 +186,19 @@ const ft = ({
|
|
|
177
186
|
}
|
|
178
187
|
if (q && at(se))
|
|
179
188
|
throw new Error(s("alerts.payrollLoadFailed"));
|
|
180
|
-
const
|
|
181
|
-
if (
|
|
182
|
-
return /* @__PURE__ */ l("div", { className: Ne(He.notCalculated,
|
|
183
|
-
/* @__PURE__ */
|
|
189
|
+
const E = n.processed === !0 || n.processingRequest?.status === ze.submit_success;
|
|
190
|
+
if (Y === d.Viewing && !E && !n.calculatedAt)
|
|
191
|
+
return /* @__PURE__ */ l("div", { className: Ne(He.notCalculated, U), children: /* @__PURE__ */ O(k, { flexDirection: "column", alignItems: "center", gap: 16, children: [
|
|
192
|
+
/* @__PURE__ */ O(k, { flexDirection: "column", alignItems: "center", gap: 4, children: [
|
|
184
193
|
/* @__PURE__ */ l($, { as: "h2", styledAs: "h4", textAlign: "center", children: s("notCalculatedErrorTitle") }),
|
|
185
194
|
/* @__PURE__ */ l(w, { variant: "supporting", textAlign: "center", children: s("notCalculatedErrorDescription") })
|
|
186
195
|
] }),
|
|
187
196
|
/* @__PURE__ */ l(
|
|
188
|
-
|
|
197
|
+
W,
|
|
189
198
|
{
|
|
190
199
|
variant: "secondary",
|
|
191
200
|
onClick: () => {
|
|
192
|
-
a(
|
|
201
|
+
a(u.RUN_PAYROLL_NOT_CALCULATED_BACK_TO_LIST);
|
|
193
202
|
},
|
|
194
203
|
children: s("notCalculatedErrorCta")
|
|
195
204
|
}
|
|
@@ -206,50 +215,50 @@ const ft = ({
|
|
|
206
215
|
},
|
|
207
216
|
{}
|
|
208
217
|
) || {}, Le = async () => {
|
|
209
|
-
D(d.Cancelling), await
|
|
218
|
+
D(d.Cancelling), await B(y, async () => {
|
|
210
219
|
try {
|
|
211
|
-
const e = await
|
|
220
|
+
const e = await Se({
|
|
212
221
|
request: {
|
|
213
222
|
companyId: o,
|
|
214
223
|
payrollId: i
|
|
215
224
|
}
|
|
216
225
|
});
|
|
217
|
-
D(d.Cancelled), a(
|
|
226
|
+
D(d.Cancelled), a(u.RUN_PAYROLL_CANCELLED, e);
|
|
218
227
|
} catch (e) {
|
|
219
228
|
throw D(d.Viewing), e;
|
|
220
229
|
}
|
|
221
230
|
});
|
|
222
231
|
}, _e = () => {
|
|
223
|
-
a(
|
|
232
|
+
a(u.RUN_PAYROLL_RECEIPT_GET, { payrollId: i });
|
|
224
233
|
}, Ce = async (e) => {
|
|
225
234
|
const t = ot({ loadingMessage: s("downloadLoadingMessage"), nonce: ge });
|
|
226
|
-
|
|
227
|
-
const
|
|
228
|
-
return
|
|
235
|
+
M((r) => {
|
|
236
|
+
const c = new Set(r);
|
|
237
|
+
return c.add(e), c;
|
|
229
238
|
});
|
|
230
239
|
try {
|
|
231
240
|
const r = await xe(te, { payrollId: i, employeeId: e });
|
|
232
241
|
if (!r.value?.responseStream)
|
|
233
242
|
throw t.close(), new Error(s("alerts.paystubPdfError"));
|
|
234
|
-
const
|
|
235
|
-
t.navigate(
|
|
243
|
+
const c = await rt(r.value.responseStream, "application/pdf");
|
|
244
|
+
t.navigate(c), a(u.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: e });
|
|
236
245
|
} catch (r) {
|
|
237
246
|
t.close(), Q(r instanceof Error ? r : new Error(String(r)));
|
|
238
247
|
} finally {
|
|
239
|
-
|
|
248
|
+
M((r) => {
|
|
240
249
|
if (!r.has(e)) return r;
|
|
241
|
-
const
|
|
242
|
-
return
|
|
250
|
+
const c = new Set(r);
|
|
251
|
+
return c.delete(e), c;
|
|
243
252
|
});
|
|
244
253
|
}
|
|
245
254
|
}, Ee = async () => {
|
|
246
|
-
await
|
|
255
|
+
await B(y, async () => {
|
|
247
256
|
const e = await he({
|
|
248
257
|
request: {
|
|
249
258
|
companyId: o,
|
|
250
259
|
payrollId: i,
|
|
251
260
|
requestBody: {
|
|
252
|
-
submissionBlockers: Object.entries(
|
|
261
|
+
submissionBlockers: Object.entries(N).filter(
|
|
253
262
|
([t]) => Qe.includes(t)
|
|
254
263
|
).map(([t, r]) => ({
|
|
255
264
|
blockerType: t,
|
|
@@ -258,16 +267,16 @@ const ft = ({
|
|
|
258
267
|
}
|
|
259
268
|
}
|
|
260
269
|
});
|
|
261
|
-
a(
|
|
270
|
+
a(u.RUN_PAYROLL_SUBMITTING), a(u.RUN_PAYROLL_SUBMITTED, e), C({
|
|
262
271
|
baseline: {
|
|
263
272
|
processed: n.processed ?? !1,
|
|
264
273
|
status: n.processingRequest?.status
|
|
265
274
|
},
|
|
266
275
|
sawSubmitting: !1
|
|
267
|
-
}),
|
|
276
|
+
}), S(!0);
|
|
268
277
|
});
|
|
269
|
-
},
|
|
270
|
-
if (!(
|
|
278
|
+
}, G = (() => {
|
|
279
|
+
if (!(v || pe || E) && n.checkDate && n.payrollDeadline)
|
|
271
280
|
return {
|
|
272
281
|
type: "info",
|
|
273
282
|
title: s("alerts.directDepositDeadline", {
|
|
@@ -276,29 +285,29 @@ const ft = ({
|
|
|
276
285
|
}),
|
|
277
286
|
content: s("alerts.directDepositDeadlineText")
|
|
278
287
|
};
|
|
279
|
-
})(), Oe = [...
|
|
288
|
+
})(), Oe = [...J, ...G ? [G] : []];
|
|
280
289
|
return /* @__PURE__ */ l(
|
|
281
|
-
|
|
290
|
+
Ve,
|
|
282
291
|
{
|
|
283
|
-
className:
|
|
284
|
-
onEdit:
|
|
292
|
+
className: U,
|
|
293
|
+
onEdit: x,
|
|
285
294
|
onSubmit: Ee,
|
|
286
295
|
onCancel: Le,
|
|
287
296
|
onPayrollReceipt: _e,
|
|
288
297
|
onPaystubDownload: Ce,
|
|
289
|
-
status:
|
|
290
|
-
isProcessed:
|
|
291
|
-
canCancel: Ge(n) && !
|
|
292
|
-
canEdit: !
|
|
298
|
+
status: be || v ? d.Submitting : Y,
|
|
299
|
+
isProcessed: E,
|
|
300
|
+
canCancel: Ge(n) && !b,
|
|
301
|
+
canEdit: !b,
|
|
293
302
|
payrollData: n,
|
|
294
303
|
employeeFlsaStatusByUuid: ce,
|
|
295
304
|
bankAccount: Pe,
|
|
296
305
|
taxes: Re,
|
|
297
306
|
alerts: Oe,
|
|
298
307
|
submissionBlockers: ie,
|
|
299
|
-
selectedUnblockOptions:
|
|
308
|
+
selectedUnblockOptions: N,
|
|
300
309
|
onUnblockOptionChange: (e, t) => {
|
|
301
|
-
|
|
310
|
+
z((r) => ({ ...r, [e]: t }));
|
|
302
311
|
},
|
|
303
312
|
wireInConfirmationRequest: ue,
|
|
304
313
|
printChecksBanner: me,
|
|
@@ -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 classNames from 'classnames'\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 styles from './PayrollOverview.module.scss'\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 /**\n * Identifier of the payroll being reviewed. An unprocessed payroll must already be calculated;\n * a processed payroll renders as a summary whether or not it has a calculation.\n */\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 * An unprocessed payroll referenced by `payrollId` must already be calculated; rendering an\n * unprocessed, uncalculated payroll throws. Processed payrolls render as a summary even without a\n * calculation (for example tax reconciliation, reversal, wage correction, or external payrolls).\n * 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/notCalculated/backToList` | User chose to return to the payroll list after the payroll was found to be no longer calculated (e.g. cancelled in another session) | — |\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, Heading } = 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: [\n 'taxes',\n 'benefits',\n 'deductions',\n 'totals',\n 'payroll_taxes',\n 'payroll_status_meta',\n ],\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 const isProcessed =\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n\n if (status === PayrollOverviewStatus.Viewing && !isProcessed && !payrollData.calculatedAt) {\n return (\n <div className={classNames(styles.notCalculated, className)}>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={16}>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={4}>\n <Heading as=\"h2\" styledAs=\"h4\" textAlign=\"center\">\n {t('notCalculatedErrorTitle')}\n </Heading>\n <Text variant=\"supporting\" textAlign=\"center\">\n {t('notCalculatedErrorDescription')}\n </Text>\n </Flex>\n <Button\n variant=\"secondary\"\n onClick={() => {\n onEvent(componentEvents.RUN_PAYROLL_NOT_CALCULATED_BACK_TO_LIST)\n }}\n >\n {t('notCalculatedErrorCta')}\n </Button>\n </Flex>\n </div>\n )\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 || isProcessed) 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={isProcessed}\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","Heading","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","isProcessed","PAYROLL_PROCESSING_STATUS","classNames","styles","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","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 classNames from 'classnames'\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 styles from './PayrollOverview.module.scss'\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 /**\n * Identifier of the payroll being reviewed. An unprocessed payroll must already be calculated;\n * a processed payroll renders as a summary whether or not it has a calculation.\n */\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 * An unprocessed payroll referenced by `payrollId` must already be calculated; rendering an\n * unprocessed, uncalculated payroll throws. Processed payrolls render as a summary even without a\n * calculation (for example tax reconciliation, reversal, wage correction, or external payrolls).\n * 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/notCalculated/backToList` | User chose to return to the payroll list after the payroll was found to be no longer calculated (e.g. cancelled in another session) | — |\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, Heading } = 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: [\n 'taxes',\n 'benefits',\n 'deductions',\n 'totals',\n 'payroll_taxes',\n 'payroll_status_meta',\n ],\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 // Compensation type isn't on employeeCompensations for salaried employees, so read it from each\n // employee's primary job. Filtered by `payrollUuid` and paged like the payroll so it stays one\n // page in size; the `uuids` filter returns wrong results for more than one employee.\n const { data: employeesData } = useEmployeesList(\n {\n companyId,\n payrollUuid: payrollId,\n page: currentPage,\n per: itemsPerPage,\n sortBy: 'name',\n },\n { placeholderData: keepPreviousData, enabled: !!payrollData },\n )\n const employeeFlsaStatusByUuid = (employeesData?.showEmployees ?? []).reduce<\n Record<string, string | undefined>\n >((acc, employee) => {\n const jobs = employee.jobs ?? []\n const primaryJob = jobs.find(job => job.primary) ?? jobs[0]\n acc[employee.uuid] = primaryJob?.compensations?.[0]?.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 const isProcessed =\n payrollData.processed === true ||\n payrollData.processingRequest?.status === PAYROLL_PROCESSING_STATUS.submit_success\n\n if (status === PayrollOverviewStatus.Viewing && !isProcessed && !payrollData.calculatedAt) {\n return (\n <div className={classNames(styles.notCalculated, className)}>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={16}>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={4}>\n <Heading as=\"h2\" styledAs=\"h4\" textAlign=\"center\">\n {t('notCalculatedErrorTitle')}\n </Heading>\n <Text variant=\"supporting\" textAlign=\"center\">\n {t('notCalculatedErrorDescription')}\n </Text>\n </Flex>\n <Button\n variant=\"secondary\"\n onClick={() => {\n onEvent(componentEvents.RUN_PAYROLL_NOT_CALCULATED_BACK_TO_LIST)\n }}\n >\n {t('notCalculatedErrorCta')}\n </Button>\n </Flex>\n </div>\n )\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 || isProcessed) 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={isProcessed}\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","Heading","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","employeesData","useEmployeesList","employeeFlsaStatusByUuid","acc","employee","jobs","primaryJob","job","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","isProcessed","PAYROLL_PROCESSING_STATUS","classNames","styles","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","combinedAlerts","PayrollOverviewPresentation","canCancelPayroll","value"],"mappings":"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"}
|