@gusto/embedded-react-sdk 0.57.1 → 0.57.3
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 +33 -0
- package/dist/components/Base/Base.js +2 -3
- package/dist/components/Base/Base.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/Company/AssignSignatory/AssignSignatorySelection.js +6 -8
- package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +8 -10
- package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -6
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +6 -8
- package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -6
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/TitleSelect.js +10 -11
- package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -8
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +8 -9
- package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -6
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/Actions.js +10 -12
- package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +11 -13
- package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +5 -7
- package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -6
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/FederalTaxes/Actions.js +7 -9
- package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +8 -11
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Actions.js +5 -7
- package/dist/components/Company/Industry/Actions.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +6 -9
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Industry/Edit.js +10 -12
- package/dist/components/Company/Industry/Edit.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/Actions.js +8 -10
- package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -6
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/Actions.js +6 -8
- package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/List.js +11 -13
- package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -6
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +3 -6
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleForm.js +66 -62
- package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleForm.module.scss.js +2 -2
- 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 +253 -92
- 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 +11 -13
- 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 +49 -44
- 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/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +5 -7
- package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -6
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +6 -8
- package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -6
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -6
- 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/CompensationCard/CompensationCard.js +16 -17
- package/dist/components/Contractor/Compensation/management/CompensationCard/CompensationCard.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/useContractorPayForm.js +3 -3
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js.map +1 -1
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js +6 -6
- 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/Documents/management/DocumentsCard/DocumentsCard.js +8 -9
- package/dist/components/Contractor/Documents/management/DocumentsCard/DocumentsCard.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/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.js +6 -8
- package/dist/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.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/management/ProfileCard/ProfileCard.js +26 -27
- package/dist/components/Contractor/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
- package/dist/components/Contractor/Profile/management/ProfileEditForm.js +11 -11
- 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/useContractorDetailsForm.js +1 -1
- 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/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/Deductions/management/DeductionsCard/DeductionsCard.js +12 -13
- package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js +12 -13
- package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js +6 -8
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -6
- 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/FederalTaxes/management/FederalTaxesEditForm.js +3 -4
- package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js +3 -4
- package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.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/shared/BankFormBody/BankFormBody.js +22 -24
- package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
- package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +8 -9
- package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
- package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js +14 -15
- package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
- package/dist/components/Employee/Profile/management/ProfileEditForm.js +1 -1
- package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +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/StateTaxes/management/StateTaxesEditForm.js +7 -8
- package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js.map +1 -1
- package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js +7 -8
- package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.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/OffCycleCreation/OffCycleCreation.js +56 -54
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +14 -16
- package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +6 -8
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +9 -11
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +66 -64
- 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 +6 -6
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.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/PayrollHistory/PayrollHistory.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +75 -89
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- 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/PayrollOverviewPresentation.js +44 -46
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +63 -61
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +14 -13
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +1 -1
- package/dist/components/Payroll/helpers.js +53 -49
- package/dist/components/Payroll/helpers.js.map +1 -1
- package/dist/components/Payroll/payrollTypes.js +1 -1
- package/dist/components/Payroll/payrollTypes.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +13 -16
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +2 -2
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +2 -4
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js +6 -8
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js.map +1 -1
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +28 -30
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
- package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js +1 -1
- package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +2 -4
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/helpers/dateFormatting.js +47 -40
- package/dist/helpers/dateFormatting.js.map +1 -1
- package/dist/i18n/en/Company.Management.PaySchedule.json.js +37 -17
- package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -1
- package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +20 -10
- package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollHistory.json.js +5 -5
- package/dist/i18n/en/Payroll.PayrollList.json.js +5 -5
- package/dist/i18n/en/Payroll.PayrollOverview.json.js +1 -1
- package/dist/package.json.js +1 -1
- package/dist/partner-hook-utils/form/fields/CheckboxHookField.js +8 -10
- package/dist/partner-hook-utils/form/fields/CheckboxHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/NumberInputHookField.js +12 -14
- package/dist/partner-hook-utils/form/fields/NumberInputHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +13 -15
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/SelectHookField.js +10 -12
- package/dist/partner-hook-utils/form/fields/SelectHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/SwitchHookField.js +14 -16
- package/dist/partner-hook-utils/form/fields/SwitchHookField.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/TextInputHookField.js +8 -10
- package/dist/partner-hook-utils/form/fields/TextInputHookField.js.map +1 -1
- package/dist/shared/constants.js +5 -5
- package/dist/shared/constants.js.map +1 -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/Company/PaySchedule/PayScheduleForm.d.ts +6 -0
- 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/usePayScheduleForm.d.ts +1 -1
- package/dist/src/components/Contractor/Landing/Landing.d.ts +5 -2
- package/dist/src/components/Employee/Landing/Landing.d.ts +5 -2
- 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/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.d.ts +2 -2
- package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
- 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/helpers.d.ts +22 -2
- package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +2 -2
- package/dist/src/helpers/dateFormatting.d.ts +13 -0
- package/dist/src/i18n/types.d.ts +96 -6
- package/dist/src/models/external.d.ts +63 -48
- package/dist/src/shared/constants.d.ts +1 -1
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +33 -13
- package/package.json +21 -21
|
@@ -11,14 +11,11 @@ import "@gusto/embedded-api/models/errors/apierror";
|
|
|
11
11
|
import "@gusto/embedded-api/models/errors/gustoembeddederror";
|
|
12
12
|
import "@gusto/embedded-api/models/errors/sdkvalidationerror";
|
|
13
13
|
import "@gusto/embedded-api/models/errors/httpclienterrors";
|
|
14
|
-
import "dompurify";
|
|
15
|
-
import "../../contexts/LocaleProvider/useLocale.js";
|
|
16
14
|
import "../../shared/constants.js";
|
|
17
|
-
import "classnames";
|
|
18
15
|
import "../../contexts/ComponentAdapter/useComponentContext.js";
|
|
19
16
|
import "../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
20
17
|
import { retryAsync as T } from "../../helpers/retryAsync.js";
|
|
21
|
-
const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.category === "invalid_operation") : !1,
|
|
18
|
+
const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.category === "invalid_operation") : !1, Z = ({
|
|
22
19
|
companyId: e,
|
|
23
20
|
payrollId: r,
|
|
24
21
|
employeeUuids: a,
|
|
@@ -26,7 +23,7 @@ const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.catego
|
|
|
26
23
|
onDataReady: l,
|
|
27
24
|
isTransitionPayroll: p = !1
|
|
28
25
|
}) => {
|
|
29
|
-
const { mutateAsync: c, isPending: u } = D(), [o, h] = _(), t = y(!1), d = y(!1), { baseSubmitHandler:
|
|
26
|
+
const { mutateAsync: c, isPending: u } = D(), [o, h] = _(), t = y(!1), d = y(!1), { baseSubmitHandler: P } = x(), S = b(() => a?.join(",") ?? "", [a]), { data: E, isLoading: g } = v(
|
|
30
27
|
{
|
|
31
28
|
companyId: e,
|
|
32
29
|
payScheduleId: o?.payPeriod?.payScheduleUuid || ""
|
|
@@ -34,8 +31,8 @@ const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.catego
|
|
|
34
31
|
{
|
|
35
32
|
enabled: !!o?.payPeriod?.payScheduleUuid
|
|
36
33
|
}
|
|
37
|
-
),
|
|
38
|
-
const
|
|
34
|
+
), m = f(async () => {
|
|
35
|
+
const i = await c({
|
|
39
36
|
request: {
|
|
40
37
|
companyId: e,
|
|
41
38
|
payrollId: r,
|
|
@@ -45,7 +42,7 @@ const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.catego
|
|
|
45
42
|
}
|
|
46
43
|
}
|
|
47
44
|
});
|
|
48
|
-
h(
|
|
45
|
+
h(i.payrollPrepared), i.payrollPrepared && (t.current = !0, l?.(i.payrollPrepared));
|
|
49
46
|
}, [
|
|
50
47
|
e,
|
|
51
48
|
r,
|
|
@@ -54,22 +51,22 @@ const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.catego
|
|
|
54
51
|
n,
|
|
55
52
|
l,
|
|
56
53
|
p
|
|
57
|
-
]),
|
|
58
|
-
await
|
|
54
|
+
]), s = f(async () => {
|
|
55
|
+
await P(
|
|
59
56
|
null,
|
|
60
|
-
() => T(
|
|
57
|
+
() => T(m, {
|
|
61
58
|
maxAttempts: U,
|
|
62
59
|
delayMs: q,
|
|
63
60
|
shouldRetry: B
|
|
64
61
|
})
|
|
65
62
|
);
|
|
66
|
-
}, [
|
|
63
|
+
}, [P, m]);
|
|
67
64
|
L(() => {
|
|
68
|
-
d.current || (d.current = !0,
|
|
69
|
-
}, [
|
|
65
|
+
d.current || (d.current = !0, s());
|
|
66
|
+
}, [s]);
|
|
70
67
|
const R = u && !t.current, A = u && t.current, M = R || g;
|
|
71
68
|
return {
|
|
72
|
-
handlePreparePayroll:
|
|
69
|
+
handlePreparePayroll: s,
|
|
73
70
|
preparedPayroll: o,
|
|
74
71
|
paySchedule: E?.payScheduleShow,
|
|
75
72
|
isLoading: M,
|
|
@@ -78,6 +75,6 @@ const U = 4, q = 1500, B = (e) => e instanceof w ? e.errors.some((r) => r.catego
|
|
|
78
75
|
};
|
|
79
76
|
};
|
|
80
77
|
export {
|
|
81
|
-
|
|
78
|
+
Z as usePreparedPayrollData
|
|
82
79
|
};
|
|
83
80
|
//# sourceMappingURL=usePreparedPayrollData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreparedPayrollData.js","sources":["../../../src/components/Payroll/usePreparedPayrollData.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from 'react'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport type { PayrollPrepared } from '@gusto/embedded-api/models/components/
|
|
1
|
+
{"version":3,"file":"usePreparedPayrollData.js","sources":["../../../src/components/Payroll/usePreparedPayrollData.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from 'react'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport type { PayrollPrepared } from '@gusto/embedded-api/models/components/unprocessedpayroll'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payschedulelistitem'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useBase } from '../Base'\nimport { retryAsync } from '@/helpers/retryAsync'\n\ninterface UsePreparedPayrollDataParams {\n companyId: string\n payrollId: string\n employeeUuids?: string[]\n sortBy?: string\n onDataReady?: (preparedPayroll: PayrollPrepared) => void\n /**\n * When true, prepare is called without a roster. A transition payroll's roster is fixed by the\n * pay-schedule transition, so the API rejects any `employeeUuids` sent to prepare.\n */\n isTransitionPayroll?: boolean\n}\n\ninterface UsePreparedPayrollDataReturn {\n handlePreparePayroll: () => Promise<void>\n preparedPayroll: PayrollPrepared | undefined\n paySchedule: PayScheduleShow | undefined\n isLoading: boolean\n isPaginating: boolean\n hasInitialData: boolean\n}\n\nconst PREPARE_MAX_ATTEMPTS = 4\nconst PREPARE_RETRY_DELAY_MS = 1500\n\nconst isPayrollBeingProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\n/**\n * Wraps the prepare-payroll mutation and pay-schedule fetch, retrying while the payroll is still being processed.\n *\n * @remarks\n * Fires the prepare call once on mount, then exposes `handlePreparePayroll` for callers that need to re-prepare\n * (e.g. after sort or pagination changes). Distinguishes initial loading from subsequent pagination via\n * `isLoading` and `isPaginating`, and surfaces the pay schedule for the prepared payroll's pay period.\n *\n * @param params - The company and payroll identifiers, plus optional employee filter, sort, and ready callback.\n * @returns The prepared payroll, its pay schedule, loading flags, and a `handlePreparePayroll` callback to re-run.\n * @internal\n */\nexport const usePreparedPayrollData = ({\n companyId,\n payrollId,\n employeeUuids,\n sortBy,\n onDataReady,\n isTransitionPayroll = false,\n}: UsePreparedPayrollDataParams): UsePreparedPayrollDataReturn => {\n const { mutateAsync: preparePayroll, isPending: isPreparePayrollPending } =\n usePayrollsPrepareMutation()\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const hasInitialDataRef = useRef(false)\n const hasFiredRef = useRef(false)\n const { baseSubmitHandler } = useBase()\n\n const employeeUuidsKey = useMemo(() => employeeUuids?.join(',') ?? '', [employeeUuids])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!preparedPayroll?.payPeriod?.payScheduleUuid,\n },\n )\n\n const executePrepare = useCallback(async () => {\n const result = await preparePayroll({\n request: {\n companyId,\n payrollId,\n sortBy,\n requestBody: {\n employeeUuids: isTransitionPayroll ? undefined : employeeUuids,\n },\n },\n })\n setPreparedPayroll(result.payrollPrepared)\n if (result.payrollPrepared) {\n hasInitialDataRef.current = true\n onDataReady?.(result.payrollPrepared)\n }\n }, [\n companyId,\n payrollId,\n preparePayroll,\n employeeUuidsKey,\n sortBy,\n onDataReady,\n isTransitionPayroll,\n ])\n\n const handlePreparePayroll = useCallback(async () => {\n await baseSubmitHandler(null, () =>\n retryAsync(executePrepare, {\n maxAttempts: PREPARE_MAX_ATTEMPTS,\n delayMs: PREPARE_RETRY_DELAY_MS,\n shouldRetry: isPayrollBeingProcessedError,\n }),\n )\n }, [baseSubmitHandler, executePrepare])\n\n useEffect(() => {\n if (hasFiredRef.current) return\n hasFiredRef.current = true\n void handlePreparePayroll()\n }, [handlePreparePayroll])\n\n const isInitialLoading = isPreparePayrollPending && !hasInitialDataRef.current\n const isPaginating = isPreparePayrollPending && hasInitialDataRef.current\n const isLoading = isInitialLoading || isPayScheduleLoading\n\n return {\n handlePreparePayroll,\n preparedPayroll,\n paySchedule: payScheduleData?.payScheduleShow,\n isLoading,\n isPaginating,\n hasInitialData: hasInitialDataRef.current,\n }\n}\n"],"names":["PREPARE_MAX_ATTEMPTS","PREPARE_RETRY_DELAY_MS","isPayrollBeingProcessedError","error","UnprocessableEntityError","e","usePreparedPayrollData","companyId","payrollId","employeeUuids","sortBy","onDataReady","isTransitionPayroll","preparePayroll","isPreparePayrollPending","usePayrollsPrepareMutation","preparedPayroll","setPreparedPayroll","useState","hasInitialDataRef","useRef","hasFiredRef","baseSubmitHandler","useBase","employeeUuidsKey","useMemo","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","executePrepare","useCallback","result","handlePreparePayroll","retryAsync","useEffect","isInitialLoading","isPaginating","isLoading"],"mappings":";;;;;;;;;;;;;;;;;AA+BA,MAAMA,IAAuB,GACvBC,IAAyB,MAEzBC,IAA+B,CAACC,MAC9BA,aAAiBC,IAChBD,EAAM,OAAO,KAAK,CAAAE,MAAKA,EAAE,aAAa,mBAAmB,IADP,IAgB9CC,IAAyB,CAAC;AAAA,EACrC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,qBAAAC,IAAsB;AACxB,MAAkE;AAChE,QAAM,EAAE,aAAaC,GAAgB,WAAWC,EAAA,IAC9CC,EAAA,GACI,CAACC,GAAiBC,CAAkB,IAAIC,EAAA,GACxCC,IAAoBC,EAAO,EAAK,GAChCC,IAAcD,EAAO,EAAK,GAC1B,EAAE,mBAAAE,EAAA,IAAsBC,EAAA,GAExBC,IAAmBC,EAAQ,MAAMhB,GAAe,KAAK,GAAG,KAAK,IAAI,CAACA,CAAa,CAAC,GAEhF,EAAE,MAAMiB,GAAiB,WAAWC,MAAyBC;AAAA,IACjE;AAAA,MACE,WAAArB;AAAA,MACA,eAAeS,GAAiB,WAAW,mBAAmB;AAAA,IAAA;AAAA,IAEhE;AAAA,MACE,SAAS,CAAC,CAACA,GAAiB,WAAW;AAAA,IAAA;AAAA,EACzC,GAGIa,IAAiBC,EAAY,YAAY;AAC7C,UAAMC,IAAS,MAAMlB,EAAe;AAAA,MAClC,SAAS;AAAA,QACP,WAAAN;AAAA,QACA,WAAAC;AAAA,QACA,QAAAE;AAAA,QACA,aAAa;AAAA,UACX,eAAeE,IAAsB,SAAYH;AAAA,QAAA;AAAA,MACnD;AAAA,IACF,CACD;AACD,IAAAQ,EAAmBc,EAAO,eAAe,GACrCA,EAAO,oBACTZ,EAAkB,UAAU,IAC5BR,IAAcoB,EAAO,eAAe;AAAA,EAExC,GAAG;AAAA,IACDxB;AAAA,IACAC;AAAA,IACAK;AAAA,IACAW;AAAA,IACAd;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,CACD,GAEKoB,IAAuBF,EAAY,YAAY;AACnD,UAAMR;AAAA,MAAkB;AAAA,MAAM,MAC5BW,EAAWJ,GAAgB;AAAA,QACzB,aAAa7B;AAAA,QACb,SAASC;AAAA,QACT,aAAaC;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL,GAAG,CAACoB,GAAmBO,CAAc,CAAC;AAEtC,EAAAK,EAAU,MAAM;AACd,IAAIb,EAAY,YAChBA,EAAY,UAAU,IACjBW,EAAA;AAAA,EACP,GAAG,CAACA,CAAoB,CAAC;AAEzB,QAAMG,IAAmBrB,KAA2B,CAACK,EAAkB,SACjEiB,IAAetB,KAA2BK,EAAkB,SAC5DkB,IAAYF,KAAoBR;AAEtC,SAAO;AAAA,IACL,sBAAAK;AAAA,IACA,iBAAAhB;AAAA,IACA,aAAaU,GAAiB;AAAA,IAC9B,WAAAW;AAAA,IACA,cAAAD;AAAA,IACA,gBAAgBjB,EAAkB;AAAA,EAAA;AAEtC;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { useMemo as t } from "react";
|
|
2
2
|
import { usePaySchedulesGetPayPeriodsSuspense as a } from "@gusto/embedded-api/react-query/paySchedulesGetPayPeriods";
|
|
3
3
|
import { PayrollTypes as i } from "@gusto/embedded-api/models/operations/getv1companiescompanyidpayperiods";
|
|
4
|
-
import {
|
|
4
|
+
import { toRFCDate as p } from "../../helpers/dateFormatting.js";
|
|
5
5
|
const d = 90;
|
|
6
6
|
function u(r) {
|
|
7
7
|
const n = t(() => {
|
|
8
8
|
const e = /* @__PURE__ */ new Date();
|
|
9
|
-
return e.setDate(e.getDate() + d),
|
|
9
|
+
return e.setDate(e.getDate() + d), p(e);
|
|
10
10
|
}, []), { data: o } = a({
|
|
11
11
|
companyId: r,
|
|
12
12
|
payrollTypes: i.Transition,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUnprocessedTransitionPayPeriods.js","sources":["../../../src/components/Payroll/useUnprocessedTransitionPayPeriods.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { usePaySchedulesGetPayPeriodsSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetPayPeriods'\nimport { PayrollTypes } from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayperiods'\nimport type { PayPeriod } from '@gusto/embedded-api/models/components/payperiod'\nimport {
|
|
1
|
+
{"version":3,"file":"useUnprocessedTransitionPayPeriods.js","sources":["../../../src/components/Payroll/useUnprocessedTransitionPayPeriods.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { usePaySchedulesGetPayPeriodsSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetPayPeriods'\nimport { PayrollTypes } from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayperiods'\nimport type { PayPeriod } from '@gusto/embedded-api/models/components/payperiod'\nimport { toRFCDate } from '@/helpers/dateFormatting'\n\nconst LOOK_AHEAD_DAYS = 90\n\ninterface UseUnprocessedTransitionPayPeriodsResult {\n unprocessedPayPeriods: PayPeriod[]\n hasUnprocessedTransitions: boolean\n}\n\n/**\n * Returns the company's unprocessed transition pay periods within the next 90 days.\n *\n * @param companyId - The company whose transition pay periods to fetch.\n * @returns The unprocessed transition pay periods and a flag indicating whether any exist.\n * @internal\n */\nexport function useUnprocessedTransitionPayPeriods(\n companyId: string,\n): UseUnprocessedTransitionPayPeriodsResult {\n const lookAheadEndDate = useMemo(() => {\n const date = new Date()\n date.setDate(date.getDate() + LOOK_AHEAD_DAYS)\n return toRFCDate(date)\n }, [])\n\n const { data } = usePaySchedulesGetPayPeriodsSuspense({\n companyId,\n payrollTypes: PayrollTypes.Transition,\n endDate: lookAheadEndDate,\n })\n\n const unprocessedPayPeriods = useMemo<PayPeriod[]>(\n () => (data.payPeriods ?? []).filter((pp: PayPeriod) => !pp.payroll?.processed),\n [data],\n )\n\n return {\n unprocessedPayPeriods,\n hasUnprocessedTransitions: unprocessedPayPeriods.length > 0,\n }\n}\n"],"names":["LOOK_AHEAD_DAYS","useUnprocessedTransitionPayPeriods","companyId","lookAheadEndDate","useMemo","date","toRFCDate","data","usePaySchedulesGetPayPeriodsSuspense","PayrollTypes","unprocessedPayPeriods","pp"],"mappings":";;;;AAMA,MAAMA,IAAkB;AAcjB,SAASC,EACdC,GAC0C;AAC1C,QAAMC,IAAmBC,EAAQ,MAAM;AACrC,UAAMC,wBAAW,KAAA;AACjB,WAAAA,EAAK,QAAQA,EAAK,QAAA,IAAYL,CAAe,GACtCM,EAAUD,CAAI;AAAA,EACvB,GAAG,CAAA,CAAE,GAEC,EAAE,MAAAE,EAAA,IAASC,EAAqC;AAAA,IACpD,WAAAN;AAAA,IACA,cAAcO,EAAa;AAAA,IAC3B,SAASN;AAAA,EAAA,CACV,GAEKO,IAAwBN;AAAA,IAC5B,OAAOG,EAAK,cAAc,IAAI,OAAO,CAACI,MAAkB,CAACA,EAAG,SAAS,SAAS;AAAA,IAC9E,CAACJ,CAAI;AAAA,EAAA;AAGP,SAAO;AAAA,IACL,uBAAAG;AAAA,IACA,2BAA2BA,EAAsB,SAAS;AAAA,EAAA;AAE9D;"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo as T } from "react";
|
|
3
3
|
import { useTranslation as n } from "react-i18next";
|
|
4
|
-
import "classnames";
|
|
5
|
-
import "../../../shared/constants.js";
|
|
6
4
|
import { useI18n as l } from "../../../i18n/I18n.js";
|
|
7
5
|
import { PolicyDetailLayout as O } from "../shared/PolicyDetailLayout/PolicyDetailLayout.js";
|
|
8
6
|
import { useDataView as P } from "../../Common/DataView/useDataView.js";
|
|
9
7
|
import { DataView as v } from "../../Common/DataView/DataView.js";
|
|
10
8
|
const x = "holidays";
|
|
11
|
-
function
|
|
9
|
+
function _({
|
|
12
10
|
title: t,
|
|
13
11
|
subtitle: e,
|
|
14
12
|
onBack: a,
|
|
@@ -78,6 +76,6 @@ function C({ holidays: t }) {
|
|
|
78
76
|
return /* @__PURE__ */ r(v, { label: e("tableLabel"), ...i });
|
|
79
77
|
}
|
|
80
78
|
export {
|
|
81
|
-
|
|
79
|
+
_ as HolidayPolicyDetailPresentation
|
|
82
80
|
};
|
|
83
81
|
//# sourceMappingURL=HolidayPolicyDetailPresentation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HolidayPolicyDetailPresentation.js","sources":["../../../../src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { HolidayItem } from '../HolidaySelectionForm/HolidaySelectionFormTypes'\nimport { PolicyDetailLayout } from '../shared/PolicyDetailLayout'\nimport type { HolidayPolicyDetailPresentationProps } from './HolidayPolicyDetailTypes'\nimport { DataView, useDataView } from '@/components/Common'\nimport { useI18n } from '@/i18n'\n\nconst HOLIDAYS_TAB_ID = 'holidays'\n\n/** @internal */\nexport function HolidayPolicyDetailPresentation({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n holidays,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n className,\n}: HolidayPolicyDetailPresentationProps) {\n useI18n('Company.TimeOff.HolidayPolicy')\n const { t } = useTranslation('Company.TimeOff.HolidayPolicy')\n\n const holidaysTabContent = <HolidaysTab holidays={holidays} />\n\n return (\n <PolicyDetailLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n firstTab={{\n id: HOLIDAYS_TAB_ID,\n label: t('tabs.holidays'),\n content: holidaysTabContent,\n }}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n employees={employees}\n onAddEmployee={onAddEmployee}\n removeDialog={removeDialog}\n successAlert={successAlert}\n onDismissAlert={onDismissAlert}\n className={className}\n />\n )\n}\n\nfunction HolidaysTab({ holidays }: { holidays: HolidayItem[] }) {\n useI18n('Company.TimeOff.HolidayPolicy')\n const { t } = useTranslation('Company.TimeOff.HolidayPolicy')\n\n const columns = useMemo(\n () => [\n {\n key: 'name' as keyof HolidayItem,\n title: t('tableHeaders.holidayName'),\n render: (item: HolidayItem) => item.name,\n },\n {\n key: 'observedDate' as keyof HolidayItem,\n title: t('tableHeaders.observedDate'),\n render: (item: HolidayItem) => item.observedDate,\n },\n {\n key: 'nextObservation' as keyof HolidayItem,\n title: t('tableHeaders.nextObservation'),\n render: (item: HolidayItem) => item.nextObservation,\n },\n ],\n [t],\n )\n\n const dataViewProps = useDataView<HolidayItem>({\n data: holidays,\n columns,\n })\n\n return <DataView label={t('tableLabel')} {...dataViewProps} />\n}\n"],"names":["HOLIDAYS_TAB_ID","HolidayPolicyDetailPresentation","title","subtitle","onBack","backLabel","actions","holidays","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","className","useI18n","t","useTranslation","holidaysTabContent","jsx","HolidaysTab","PolicyDetailLayout","columns","useMemo","item","dataViewProps","useDataView","DataView"],"mappings":"
|
|
1
|
+
{"version":3,"file":"HolidayPolicyDetailPresentation.js","sources":["../../../../src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { HolidayItem } from '../HolidaySelectionForm/HolidaySelectionFormTypes'\nimport { PolicyDetailLayout } from '../shared/PolicyDetailLayout'\nimport type { HolidayPolicyDetailPresentationProps } from './HolidayPolicyDetailTypes'\nimport { DataView, useDataView } from '@/components/Common'\nimport { useI18n } from '@/i18n'\n\nconst HOLIDAYS_TAB_ID = 'holidays'\n\n/** @internal */\nexport function HolidayPolicyDetailPresentation({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n holidays,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n className,\n}: HolidayPolicyDetailPresentationProps) {\n useI18n('Company.TimeOff.HolidayPolicy')\n const { t } = useTranslation('Company.TimeOff.HolidayPolicy')\n\n const holidaysTabContent = <HolidaysTab holidays={holidays} />\n\n return (\n <PolicyDetailLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n firstTab={{\n id: HOLIDAYS_TAB_ID,\n label: t('tabs.holidays'),\n content: holidaysTabContent,\n }}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n employees={employees}\n onAddEmployee={onAddEmployee}\n removeDialog={removeDialog}\n successAlert={successAlert}\n onDismissAlert={onDismissAlert}\n className={className}\n />\n )\n}\n\nfunction HolidaysTab({ holidays }: { holidays: HolidayItem[] }) {\n useI18n('Company.TimeOff.HolidayPolicy')\n const { t } = useTranslation('Company.TimeOff.HolidayPolicy')\n\n const columns = useMemo(\n () => [\n {\n key: 'name' as keyof HolidayItem,\n title: t('tableHeaders.holidayName'),\n render: (item: HolidayItem) => item.name,\n },\n {\n key: 'observedDate' as keyof HolidayItem,\n title: t('tableHeaders.observedDate'),\n render: (item: HolidayItem) => item.observedDate,\n },\n {\n key: 'nextObservation' as keyof HolidayItem,\n title: t('tableHeaders.nextObservation'),\n render: (item: HolidayItem) => item.nextObservation,\n },\n ],\n [t],\n )\n\n const dataViewProps = useDataView<HolidayItem>({\n data: holidays,\n columns,\n })\n\n return <DataView label={t('tableLabel')} {...dataViewProps} />\n}\n"],"names":["HOLIDAYS_TAB_ID","HolidayPolicyDetailPresentation","title","subtitle","onBack","backLabel","actions","holidays","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","className","useI18n","t","useTranslation","holidaysTabContent","jsx","HolidaysTab","PolicyDetailLayout","columns","useMemo","item","dataViewProps","useDataView","DataView"],"mappings":";;;;;;;AAQA,MAAMA,IAAkB;AAGjB,SAASC,EAAgC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AACF,GAAyC;AACvC,EAAAC,EAAQ,+BAA+B;AACvC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,+BAA+B,GAEtDC,IAAqB,gBAAAC,EAACC,GAAA,EAAY,UAAAd,EAAA,CAAoB;AAE5D,SACE,gBAAAa;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,OAAApB;AAAA,MACA,UAAAC;AAAA,MACA,QAAAC;AAAA,MACA,WAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAU;AAAA,QACR,IAAIN;AAAA,QACJ,OAAOiB,EAAE,eAAe;AAAA,QACxB,SAASE;AAAA,MAAA;AAAA,MAEX,eAAAX;AAAA,MACA,aAAAC;AAAA,MACA,WAAAC;AAAA,MACA,eAAAC;AAAA,MACA,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,WAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAASM,EAAY,EAAE,UAAAd,KAAyC;AAC9D,EAAAS,EAAQ,+BAA+B;AACvC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,+BAA+B,GAEtDK,IAAUC;AAAA,IACd,MAAM;AAAA,MACJ;AAAA,QACE,KAAK;AAAA,QACL,OAAOP,EAAE,0BAA0B;AAAA,QACnC,QAAQ,CAACQ,MAAsBA,EAAK;AAAA,MAAA;AAAA,MAEtC;AAAA,QACE,KAAK;AAAA,QACL,OAAOR,EAAE,2BAA2B;AAAA,QACpC,QAAQ,CAACQ,MAAsBA,EAAK;AAAA,MAAA;AAAA,MAEtC;AAAA,QACE,KAAK;AAAA,QACL,OAAOR,EAAE,8BAA8B;AAAA,QACvC,QAAQ,CAACQ,MAAsBA,EAAK;AAAA,MAAA;AAAA,IACtC;AAAA,IAEF,CAACR,CAAC;AAAA,EAAA,GAGES,IAAgBC,EAAyB;AAAA,IAC7C,MAAMpB;AAAA,IACN,SAAAgB;AAAA,EAAA,CACD;AAED,2BAAQK,GAAA,EAAS,OAAOX,EAAE,YAAY,GAAI,GAAGS,GAAe;AAC9D;"}
|
|
@@ -2,8 +2,6 @@ import { jsx as r, jsxs as V } from "react/jsx-runtime";
|
|
|
2
2
|
import { useMemo as m } from "react";
|
|
3
3
|
import { useTranslation as F } from "react-i18next";
|
|
4
4
|
import f from "./EmployeeTable.module.scss.js";
|
|
5
|
-
import "classnames";
|
|
6
|
-
import "../../../../shared/constants.js";
|
|
7
5
|
import { EmptyData as I } from "../../../Common/EmptyData/EmptyData.js";
|
|
8
6
|
import { useComponentContext as O } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
9
7
|
import { useI18n as P } from "../../../../i18n/I18n.js";
|
|
@@ -11,7 +9,7 @@ import { firstLastName as _ } from "../../../../helpers/formattedStrings.js";
|
|
|
11
9
|
import H from "../../../../assets/icons/search-lg.svg.js";
|
|
12
10
|
import { useDataView as M } from "../../../Common/DataView/useDataView.js";
|
|
13
11
|
import { DataView as W } from "../../../Common/DataView/DataView.js";
|
|
14
|
-
function
|
|
12
|
+
function ee({
|
|
15
13
|
data: o,
|
|
16
14
|
label: h,
|
|
17
15
|
additionalColumns: s = [],
|
|
@@ -22,14 +20,14 @@ function re({
|
|
|
22
20
|
searchPlaceholder: b,
|
|
23
21
|
hideSearch: E,
|
|
24
22
|
selectionMode: T,
|
|
25
|
-
onSelect:
|
|
23
|
+
onSelect: c,
|
|
26
24
|
onSelectAll: g,
|
|
27
25
|
getIsItemSelected: C,
|
|
28
26
|
hideSelectAll: S,
|
|
29
27
|
itemMenu: N,
|
|
30
28
|
pagination: j,
|
|
31
29
|
isFetching: k,
|
|
32
|
-
emptyState:
|
|
30
|
+
emptyState: p,
|
|
33
31
|
emptySearchState: a,
|
|
34
32
|
footer: x
|
|
35
33
|
}) {
|
|
@@ -41,7 +39,7 @@ function re({
|
|
|
41
39
|
return function() {
|
|
42
40
|
return /* @__PURE__ */ r($, { message: e });
|
|
43
41
|
};
|
|
44
|
-
}, [t]), w = m(() => n && a ? a : n ? u :
|
|
42
|
+
}, [t]), w = m(() => n && a ? a : n ? u : p, [n, a, p, u]), D = m(
|
|
45
43
|
() => [
|
|
46
44
|
{
|
|
47
45
|
key: "name",
|
|
@@ -69,7 +67,7 @@ function re({
|
|
|
69
67
|
isFetching: k,
|
|
70
68
|
emptyState: w,
|
|
71
69
|
footer: x,
|
|
72
|
-
...
|
|
70
|
+
...c && { selectionMode: T, onSelect: c, onSelectAll: g, getIsItemSelected: C, hideSelectAll: S }
|
|
73
71
|
});
|
|
74
72
|
return /* @__PURE__ */ V("div", { className: f.root, children: [
|
|
75
73
|
!E && /* @__PURE__ */ r("div", { className: f.searchContainer, children: /* @__PURE__ */ r(
|
|
@@ -92,6 +90,6 @@ function $({ message: o }) {
|
|
|
92
90
|
return /* @__PURE__ */ r(I, { title: o });
|
|
93
91
|
}
|
|
94
92
|
export {
|
|
95
|
-
|
|
93
|
+
ee as EmployeeTable
|
|
96
94
|
};
|
|
97
95
|
//# sourceMappingURL=EmployeeTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmployeeTable.js","sources":["../../../../../src/components/TimeOff/shared/EmployeeTable/EmployeeTable.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { EmployeeTableItem, EmployeeTableProps } from './EmployeeTableTypes'\nimport styles from './EmployeeTable.module.scss'\nimport { DataView, EmptyData, useDataView } from '@/components/Common'\nimport type { useDataViewProp } from '@/components/Common/DataView/useDataView'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n/I18n'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport SearchIcon from '@/assets/icons/search-lg.svg?react'\n\n/** @internal */\nexport function EmployeeTable<T extends EmployeeTableItem>({\n data,\n label,\n additionalColumns = [],\n hideJobTitle,\n searchValue,\n onSearchChange,\n onSearchClear,\n searchPlaceholder,\n hideSearch,\n selectionMode,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n itemMenu,\n pagination,\n isFetching,\n emptyState,\n emptySearchState,\n footer,\n}: EmployeeTableProps<T>) {\n useI18n('Company.TimeOff.EmployeeTable')\n const { t } = useTranslation('Company.TimeOff.EmployeeTable')\n const Components = useComponentContext()\n\n const isSearchWithNoResults = searchValue.length > 0 && data.length === 0\n\n const handleSearchChange = (value: string) => {\n onSearchChange(value)\n if (!value) onSearchClear()\n }\n\n const defaultEmptySearch = useMemo(() => {\n const noSearchResults = t('noSearchResults')\n return function EmptySearchFallback() {\n return <DefaultEmptySearchState message={noSearchResults} />\n }\n }, [t])\n\n const resolvedEmptyState = useMemo(() => {\n if (isSearchWithNoResults && emptySearchState) {\n return emptySearchState\n }\n if (isSearchWithNoResults) {\n return defaultEmptySearch\n }\n return emptyState\n }, [isSearchWithNoResults, emptySearchState, emptyState, defaultEmptySearch])\n\n const columns = useMemo(\n () => [\n {\n key: 'name',\n title: t('name'),\n render: (item: T) => (\n <span id={`employee-name-${item.uuid}`}>\n {firstLastName({\n first_name: item.firstName,\n last_name: item.lastName,\n }) || t('unknownEmployeeFallback')}\n </span>\n ),\n },\n ...(hideJobTitle\n ? []\n : [\n {\n key: 'jobTitle' as keyof T,\n title: t('jobTitle'),\n render: (item: T) => item.jobTitle ?? '',\n },\n ]),\n ...additionalColumns,\n ],\n [t, additionalColumns, hideJobTitle],\n )\n\n const dataViewProps = useDataView<T>({\n data,\n columns,\n itemMenu,\n pagination,\n isFetching,\n emptyState: resolvedEmptyState,\n footer,\n ...(onSelect && { selectionMode, onSelect, onSelectAll, getIsItemSelected, hideSelectAll }),\n } as useDataViewProp<T>)\n\n return (\n <div className={styles.root}>\n {!hideSearch && (\n <div className={styles.searchContainer}>\n <Components.TextInput\n name=\"employee-search\"\n type=\"search\"\n label={t('searchLabel')}\n shouldVisuallyHideLabel\n placeholder={searchPlaceholder ?? t('searchPlaceholder')}\n value={searchValue}\n onChange={handleSearchChange}\n adornmentStart={<SearchIcon aria-hidden />}\n />\n </div>\n )}\n <DataView label={label ?? t('tableLabel')} {...dataViewProps} />\n </div>\n )\n}\n\nfunction DefaultEmptySearchState({ message }: { message: string }) {\n return <EmptyData title={message} />\n}\n"],"names":["EmployeeTable","data","label","additionalColumns","hideJobTitle","searchValue","onSearchChange","onSearchClear","searchPlaceholder","hideSearch","selectionMode","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","itemMenu","pagination","isFetching","emptyState","emptySearchState","footer","useI18n","useTranslation","Components","useComponentContext","isSearchWithNoResults","handleSearchChange","value","defaultEmptySearch","useMemo","noSearchResults","jsx","DefaultEmptySearchState","resolvedEmptyState","columns","item","firstLastName","dataViewProps","useDataView","jsxs","styles","SearchIcon","DataView","message","EmptyData"],"mappings":"
|
|
1
|
+
{"version":3,"file":"EmployeeTable.js","sources":["../../../../../src/components/TimeOff/shared/EmployeeTable/EmployeeTable.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { EmployeeTableItem, EmployeeTableProps } from './EmployeeTableTypes'\nimport styles from './EmployeeTable.module.scss'\nimport { DataView, EmptyData, useDataView } from '@/components/Common'\nimport type { useDataViewProp } from '@/components/Common/DataView/useDataView'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n/I18n'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport SearchIcon from '@/assets/icons/search-lg.svg?react'\n\n/** @internal */\nexport function EmployeeTable<T extends EmployeeTableItem>({\n data,\n label,\n additionalColumns = [],\n hideJobTitle,\n searchValue,\n onSearchChange,\n onSearchClear,\n searchPlaceholder,\n hideSearch,\n selectionMode,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n itemMenu,\n pagination,\n isFetching,\n emptyState,\n emptySearchState,\n footer,\n}: EmployeeTableProps<T>) {\n useI18n('Company.TimeOff.EmployeeTable')\n const { t } = useTranslation('Company.TimeOff.EmployeeTable')\n const Components = useComponentContext()\n\n const isSearchWithNoResults = searchValue.length > 0 && data.length === 0\n\n const handleSearchChange = (value: string) => {\n onSearchChange(value)\n if (!value) onSearchClear()\n }\n\n const defaultEmptySearch = useMemo(() => {\n const noSearchResults = t('noSearchResults')\n return function EmptySearchFallback() {\n return <DefaultEmptySearchState message={noSearchResults} />\n }\n }, [t])\n\n const resolvedEmptyState = useMemo(() => {\n if (isSearchWithNoResults && emptySearchState) {\n return emptySearchState\n }\n if (isSearchWithNoResults) {\n return defaultEmptySearch\n }\n return emptyState\n }, [isSearchWithNoResults, emptySearchState, emptyState, defaultEmptySearch])\n\n const columns = useMemo(\n () => [\n {\n key: 'name',\n title: t('name'),\n render: (item: T) => (\n <span id={`employee-name-${item.uuid}`}>\n {firstLastName({\n first_name: item.firstName,\n last_name: item.lastName,\n }) || t('unknownEmployeeFallback')}\n </span>\n ),\n },\n ...(hideJobTitle\n ? []\n : [\n {\n key: 'jobTitle' as keyof T,\n title: t('jobTitle'),\n render: (item: T) => item.jobTitle ?? '',\n },\n ]),\n ...additionalColumns,\n ],\n [t, additionalColumns, hideJobTitle],\n )\n\n const dataViewProps = useDataView<T>({\n data,\n columns,\n itemMenu,\n pagination,\n isFetching,\n emptyState: resolvedEmptyState,\n footer,\n ...(onSelect && { selectionMode, onSelect, onSelectAll, getIsItemSelected, hideSelectAll }),\n } as useDataViewProp<T>)\n\n return (\n <div className={styles.root}>\n {!hideSearch && (\n <div className={styles.searchContainer}>\n <Components.TextInput\n name=\"employee-search\"\n type=\"search\"\n label={t('searchLabel')}\n shouldVisuallyHideLabel\n placeholder={searchPlaceholder ?? t('searchPlaceholder')}\n value={searchValue}\n onChange={handleSearchChange}\n adornmentStart={<SearchIcon aria-hidden />}\n />\n </div>\n )}\n <DataView label={label ?? t('tableLabel')} {...dataViewProps} />\n </div>\n )\n}\n\nfunction DefaultEmptySearchState({ message }: { message: string }) {\n return <EmptyData title={message} />\n}\n"],"names":["EmployeeTable","data","label","additionalColumns","hideJobTitle","searchValue","onSearchChange","onSearchClear","searchPlaceholder","hideSearch","selectionMode","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","itemMenu","pagination","isFetching","emptyState","emptySearchState","footer","useI18n","useTranslation","Components","useComponentContext","isSearchWithNoResults","handleSearchChange","value","defaultEmptySearch","useMemo","noSearchResults","jsx","DefaultEmptySearchState","resolvedEmptyState","columns","item","firstLastName","dataViewProps","useDataView","jsxs","styles","SearchIcon","DataView","message","EmptyData"],"mappings":";;;;;;;;;;;AAYO,SAASA,GAA2C;AAAA,EACzD,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,mBAAAC,IAAoB,CAAA;AAAA,EACpB,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,QAAAC;AACF,GAA0B;AACxB,EAAAC,EAAQ,+BAA+B;AACvC,QAAM,EAAE,EAAA,IAAMC,EAAe,+BAA+B,GACtDC,IAAaC,EAAA,GAEbC,IAAwBpB,EAAY,SAAS,KAAKJ,EAAK,WAAW,GAElEyB,IAAqB,CAACC,MAAkB;AAC5C,IAAArB,EAAeqB,CAAK,GACfA,KAAOpB,EAAA;AAAA,EACd,GAEMqB,IAAqBC,EAAQ,MAAM;AACvC,UAAMC,IAAkB,EAAE,iBAAiB;AAC3C,WAAO,WAA+B;AACpC,aAAO,gBAAAC,EAACC,GAAA,EAAwB,SAASF,EAAA,CAAiB;AAAA,IAC5D;AAAA,EACF,GAAG,CAAC,CAAC,CAAC,GAEAG,IAAqBJ,EAAQ,MAC7BJ,KAAyBN,IACpBA,IAELM,IACKG,IAEFV,GACN,CAACO,GAAuBN,GAAkBD,GAAYU,CAAkB,CAAC,GAEtEM,IAAUL;AAAA,IACd,MAAM;AAAA,MACJ;AAAA,QACE,KAAK;AAAA,QACL,OAAO,EAAE,MAAM;AAAA,QACf,QAAQ,CAACM,MACP,gBAAAJ,EAAC,QAAA,EAAK,IAAI,iBAAiBI,EAAK,IAAI,IACjC,UAAAC,EAAc;AAAA,UACb,YAAYD,EAAK;AAAA,UACjB,WAAWA,EAAK;AAAA,QAAA,CACjB,KAAK,EAAE,yBAAyB,EAAA,CACnC;AAAA,MAAA;AAAA,MAGJ,GAAI/B,IACA,CAAA,IACA;AAAA,QACE;AAAA,UACE,KAAK;AAAA,UACL,OAAO,EAAE,UAAU;AAAA,UACnB,QAAQ,CAAC+B,MAAYA,EAAK,YAAY;AAAA,QAAA;AAAA,MACxC;AAAA,MAEN,GAAGhC;AAAA,IAAA;AAAA,IAEL,CAAC,GAAGA,GAAmBC,CAAY;AAAA,EAAA,GAG/BiC,IAAgBC,EAAe;AAAA,IACnC,MAAArC;AAAA,IACA,SAAAiC;AAAA,IACA,UAAAnB;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,YAAYgB;AAAA,IACZ,QAAAb;AAAA,IACA,GAAIT,KAAY,EAAE,eAAAD,GAAe,UAAAC,GAAU,aAAAC,GAAa,mBAAAC,GAAmB,eAAAC,EAAA;AAAA,EAAc,CACpE;AAEvB,SACE,gBAAAyB,EAAC,OAAA,EAAI,WAAWC,EAAO,MACpB,UAAA;AAAA,IAAA,CAAC/B,KACA,gBAAAsB,EAAC,OAAA,EAAI,WAAWS,EAAO,iBACrB,UAAA,gBAAAT;AAAA,MAACR,EAAW;AAAA,MAAX;AAAA,QACC,MAAK;AAAA,QACL,MAAK;AAAA,QACL,OAAO,EAAE,aAAa;AAAA,QACtB,yBAAuB;AAAA,QACvB,aAAaf,KAAqB,EAAE,mBAAmB;AAAA,QACvD,OAAOH;AAAA,QACP,UAAUqB;AAAA,QACV,gBAAgB,gBAAAK,EAACU,GAAA,EAAW,eAAW,GAAA,CAAC;AAAA,MAAA;AAAA,IAAA,GAE5C;AAAA,IAEF,gBAAAV,EAACW,KAAS,OAAOxC,KAAS,EAAE,YAAY,GAAI,GAAGmC,EAAA,CAAe;AAAA,EAAA,GAChE;AAEJ;AAEA,SAASL,EAAwB,EAAE,SAAAW,KAAgC;AACjE,SAAO,gBAAAZ,EAACa,GAAA,EAAU,OAAOD,EAAA,CAAS;AACpC;"}
|
|
@@ -1,38 +1,36 @@
|
|
|
1
1
|
import { jsx as i, jsxs as b, Fragment as S } from "react/jsx-runtime";
|
|
2
2
|
import { useTranslation as D } from "react-i18next";
|
|
3
3
|
import { EmployeeTable as L } from "../EmployeeTable/EmployeeTable.js";
|
|
4
|
-
import "classnames";
|
|
5
|
-
import "../../../../shared/constants.js";
|
|
6
4
|
import { EmptyData as O } from "../../../Common/EmptyData/EmptyData.js";
|
|
7
5
|
import { useComponentContext as T } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
8
6
|
import { useI18n as x } from "../../../../i18n/I18n.js";
|
|
9
7
|
import A from "../../../../assets/icons/plus-circle.svg.js";
|
|
10
8
|
import { DetailViewLayout as v } from "../../../Common/DetailViewLayout/DetailViewLayout.js";
|
|
11
9
|
const F = "employees";
|
|
12
|
-
function
|
|
13
|
-
title:
|
|
14
|
-
subtitle:
|
|
15
|
-
onBack:
|
|
10
|
+
function _({
|
|
11
|
+
title: r,
|
|
12
|
+
subtitle: c,
|
|
13
|
+
onBack: m,
|
|
16
14
|
backLabel: s,
|
|
17
15
|
actions: p,
|
|
18
16
|
firstTab: a,
|
|
19
17
|
selectedTabId: d,
|
|
20
18
|
onTabChange: h,
|
|
21
|
-
employees:
|
|
19
|
+
employees: e,
|
|
22
20
|
onAddEmployee: n,
|
|
23
21
|
removeDialog: o,
|
|
24
|
-
successAlert:
|
|
22
|
+
successAlert: l,
|
|
25
23
|
onDismissAlert: u,
|
|
26
24
|
className: y
|
|
27
25
|
}) {
|
|
28
26
|
x("Company.TimeOff.PolicyDetail");
|
|
29
|
-
const { t
|
|
27
|
+
const { t } = D("Company.TimeOff.PolicyDetail"), { Alert: C, Dialog: f, Button: E } = T(), g = e.emptyState ?? (n ? () => /* @__PURE__ */ i(O, { title: t("emptyEmployees.title"), children: /* @__PURE__ */ i(
|
|
30
28
|
E,
|
|
31
29
|
{
|
|
32
30
|
variant: "secondary",
|
|
33
31
|
icon: /* @__PURE__ */ i(A, { "aria-hidden": !0 }),
|
|
34
32
|
onClick: n,
|
|
35
|
-
children:
|
|
33
|
+
children: t("emptyEmployees.addEmployeeCta")
|
|
36
34
|
}
|
|
37
35
|
) }) : void 0), P = [
|
|
38
36
|
{
|
|
@@ -42,33 +40,33 @@ function Y({
|
|
|
42
40
|
},
|
|
43
41
|
{
|
|
44
42
|
id: F,
|
|
45
|
-
label:
|
|
43
|
+
label: t("tabs.employees"),
|
|
46
44
|
content: /* @__PURE__ */ i(
|
|
47
45
|
L,
|
|
48
46
|
{
|
|
49
|
-
data:
|
|
50
|
-
searchValue:
|
|
51
|
-
onSearchChange:
|
|
52
|
-
onSearchClear:
|
|
53
|
-
searchPlaceholder:
|
|
54
|
-
itemMenu:
|
|
55
|
-
pagination:
|
|
56
|
-
isFetching:
|
|
47
|
+
data: e.data,
|
|
48
|
+
searchValue: e.searchValue,
|
|
49
|
+
onSearchChange: e.onSearchChange,
|
|
50
|
+
onSearchClear: e.onSearchClear,
|
|
51
|
+
searchPlaceholder: e.searchPlaceholder,
|
|
52
|
+
itemMenu: e.itemMenu,
|
|
53
|
+
pagination: e.pagination,
|
|
54
|
+
isFetching: e.isFetching,
|
|
57
55
|
emptyState: g,
|
|
58
|
-
additionalColumns:
|
|
59
|
-
hideJobTitle:
|
|
56
|
+
additionalColumns: e.additionalColumns,
|
|
57
|
+
hideJobTitle: e.hideJobTitle
|
|
60
58
|
}
|
|
61
59
|
)
|
|
62
60
|
}
|
|
63
61
|
];
|
|
64
62
|
return /* @__PURE__ */ b(S, { children: [
|
|
65
|
-
|
|
63
|
+
l && /* @__PURE__ */ i(C, { status: "success", label: l, onDismiss: u }),
|
|
66
64
|
/* @__PURE__ */ i(
|
|
67
65
|
v,
|
|
68
66
|
{
|
|
69
|
-
title:
|
|
70
|
-
subtitle:
|
|
71
|
-
onBack:
|
|
67
|
+
title: r,
|
|
68
|
+
subtitle: c,
|
|
69
|
+
onBack: m,
|
|
72
70
|
backLabel: s,
|
|
73
71
|
actions: p,
|
|
74
72
|
tabs: P,
|
|
@@ -85,15 +83,15 @@ function Y({
|
|
|
85
83
|
onPrimaryActionClick: o.onConfirm,
|
|
86
84
|
isPrimaryActionLoading: o.isPending,
|
|
87
85
|
isDestructive: !0,
|
|
88
|
-
title:
|
|
89
|
-
primaryActionLabel:
|
|
90
|
-
closeActionLabel:
|
|
91
|
-
children:
|
|
86
|
+
title: t("removeEmployeeDialog.title", { name: o.employeeName }),
|
|
87
|
+
primaryActionLabel: t("removeEmployeeDialog.confirmCta"),
|
|
88
|
+
closeActionLabel: t("removeEmployeeDialog.cancelCta"),
|
|
89
|
+
children: t("removeEmployeeDialog.description", { name: o.employeeName })
|
|
92
90
|
}
|
|
93
91
|
)
|
|
94
92
|
] });
|
|
95
93
|
}
|
|
96
94
|
export {
|
|
97
|
-
|
|
95
|
+
_ as PolicyDetailLayout
|
|
98
96
|
};
|
|
99
97
|
//# sourceMappingURL=PolicyDetailLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyDetailLayout.js","sources":["../../../../../src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeTableItem } from '../EmployeeTable/EmployeeTableTypes'\nimport { EmployeeTable } from '../EmployeeTable/EmployeeTable'\nimport type { PolicyDetailLayoutProps } from './PolicyDetailLayoutTypes'\nimport { DetailViewLayout, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\nconst EMPLOYEES_TAB_ID = 'employees'\n\n/** @internal */\nexport function PolicyDetailLayout<T extends EmployeeTableItem>({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n firstTab,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n className,\n}: PolicyDetailLayoutProps<T>) {\n useI18n('Company.TimeOff.PolicyDetail')\n const { t } = useTranslation('Company.TimeOff.PolicyDetail')\n const { Alert, Dialog, Button } = useComponentContext()\n\n const emptyEmployeesState =\n employees.emptyState ??\n (onAddEmployee\n ? () => (\n <EmptyData title={t('emptyEmployees.title')}>\n <Button\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={onAddEmployee}\n >\n {t('emptyEmployees.addEmployeeCta')}\n </Button>\n </EmptyData>\n )\n : undefined)\n\n const tabs = [\n {\n id: firstTab.id,\n label: firstTab.label,\n content: firstTab.content,\n },\n {\n id: EMPLOYEES_TAB_ID,\n label: t('tabs.employees'),\n content: (\n <EmployeeTable<T>\n data={employees.data}\n searchValue={employees.searchValue}\n onSearchChange={employees.onSearchChange}\n onSearchClear={employees.onSearchClear}\n searchPlaceholder={employees.searchPlaceholder}\n itemMenu={employees.itemMenu}\n pagination={employees.pagination}\n isFetching={employees.isFetching}\n emptyState={emptyEmployeesState}\n additionalColumns={employees.additionalColumns}\n hideJobTitle={employees.hideJobTitle}\n />\n ),\n },\n ]\n\n return (\n <>\n {successAlert && <Alert status=\"success\" label={successAlert} onDismiss={onDismissAlert} />}\n\n <DetailViewLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n tabs={tabs}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n className={className}\n />\n\n <Dialog\n isOpen={removeDialog.isOpen}\n onClose={removeDialog.onClose}\n onPrimaryActionClick={removeDialog.onConfirm}\n isPrimaryActionLoading={removeDialog.isPending}\n isDestructive\n title={t('removeEmployeeDialog.title', { name: removeDialog.employeeName })}\n primaryActionLabel={t('removeEmployeeDialog.confirmCta')}\n closeActionLabel={t('removeEmployeeDialog.cancelCta')}\n >\n {t('removeEmployeeDialog.description', { name: removeDialog.employeeName })}\n </Dialog>\n </>\n )\n}\n"],"names":["EMPLOYEES_TAB_ID","PolicyDetailLayout","title","subtitle","onBack","backLabel","actions","firstTab","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","className","useI18n","
|
|
1
|
+
{"version":3,"file":"PolicyDetailLayout.js","sources":["../../../../../src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeTableItem } from '../EmployeeTable/EmployeeTableTypes'\nimport { EmployeeTable } from '../EmployeeTable/EmployeeTable'\nimport type { PolicyDetailLayoutProps } from './PolicyDetailLayoutTypes'\nimport { DetailViewLayout, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\nconst EMPLOYEES_TAB_ID = 'employees'\n\n/** @internal */\nexport function PolicyDetailLayout<T extends EmployeeTableItem>({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n firstTab,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n className,\n}: PolicyDetailLayoutProps<T>) {\n useI18n('Company.TimeOff.PolicyDetail')\n const { t } = useTranslation('Company.TimeOff.PolicyDetail')\n const { Alert, Dialog, Button } = useComponentContext()\n\n const emptyEmployeesState =\n employees.emptyState ??\n (onAddEmployee\n ? () => (\n <EmptyData title={t('emptyEmployees.title')}>\n <Button\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={onAddEmployee}\n >\n {t('emptyEmployees.addEmployeeCta')}\n </Button>\n </EmptyData>\n )\n : undefined)\n\n const tabs = [\n {\n id: firstTab.id,\n label: firstTab.label,\n content: firstTab.content,\n },\n {\n id: EMPLOYEES_TAB_ID,\n label: t('tabs.employees'),\n content: (\n <EmployeeTable<T>\n data={employees.data}\n searchValue={employees.searchValue}\n onSearchChange={employees.onSearchChange}\n onSearchClear={employees.onSearchClear}\n searchPlaceholder={employees.searchPlaceholder}\n itemMenu={employees.itemMenu}\n pagination={employees.pagination}\n isFetching={employees.isFetching}\n emptyState={emptyEmployeesState}\n additionalColumns={employees.additionalColumns}\n hideJobTitle={employees.hideJobTitle}\n />\n ),\n },\n ]\n\n return (\n <>\n {successAlert && <Alert status=\"success\" label={successAlert} onDismiss={onDismissAlert} />}\n\n <DetailViewLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n tabs={tabs}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n className={className}\n />\n\n <Dialog\n isOpen={removeDialog.isOpen}\n onClose={removeDialog.onClose}\n onPrimaryActionClick={removeDialog.onConfirm}\n isPrimaryActionLoading={removeDialog.isPending}\n isDestructive\n title={t('removeEmployeeDialog.title', { name: removeDialog.employeeName })}\n primaryActionLabel={t('removeEmployeeDialog.confirmCta')}\n closeActionLabel={t('removeEmployeeDialog.cancelCta')}\n >\n {t('removeEmployeeDialog.description', { name: removeDialog.employeeName })}\n </Dialog>\n </>\n )\n}\n"],"names":["EMPLOYEES_TAB_ID","PolicyDetailLayout","title","subtitle","onBack","backLabel","actions","firstTab","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","className","useI18n","useTranslation","Alert","Dialog","Button","useComponentContext","emptyEmployeesState","EmptyData","jsx","PlusCircleIcon","tabs","EmployeeTable","jsxs","Fragment","DetailViewLayout"],"mappings":";;;;;;;;AASA,MAAMA,IAAmB;AAGlB,SAASC,EAAgD;AAAA,EAC9D,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AACF,GAA+B;AAC7B,EAAAC,EAAQ,8BAA8B;AACtC,QAAM,EAAE,EAAA,IAAMC,EAAe,8BAA8B,GACrD,EAAE,OAAAC,GAAO,QAAAC,GAAQ,QAAAC,EAAA,IAAWC,EAAA,GAE5BC,IACJZ,EAAU,eACTC,IACG,wBACGY,GAAA,EAAU,OAAO,EAAE,sBAAsB,GACxC,UAAA,gBAAAC;AAAA,IAACJ;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAM,gBAAAI,EAACC,GAAA,EAAe,eAAW,GAAA,CAAC;AAAA,MAClC,SAASd;AAAA,MAER,YAAE,+BAA+B;AAAA,IAAA;AAAA,EAAA,GAEtC,IAEF,SAEAe,IAAO;AAAA,IACX;AAAA,MACE,IAAInB,EAAS;AAAA,MACb,OAAOA,EAAS;AAAA,MAChB,SAASA,EAAS;AAAA,IAAA;AAAA,IAEpB;AAAA,MACE,IAAIP;AAAA,MACJ,OAAO,EAAE,gBAAgB;AAAA,MACzB,SACE,gBAAAwB;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,MAAMjB,EAAU;AAAA,UAChB,aAAaA,EAAU;AAAA,UACvB,gBAAgBA,EAAU;AAAA,UAC1B,eAAeA,EAAU;AAAA,UACzB,mBAAmBA,EAAU;AAAA,UAC7B,UAAUA,EAAU;AAAA,UACpB,YAAYA,EAAU;AAAA,UACtB,YAAYA,EAAU;AAAA,UACtB,YAAYY;AAAA,UACZ,mBAAmBZ,EAAU;AAAA,UAC7B,cAAcA,EAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1B;AAAA,EAEJ;AAGF,SACE,gBAAAkB,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAhB,uBAAiBK,GAAA,EAAM,QAAO,WAAU,OAAOL,GAAc,WAAWC,GAAgB;AAAA,IAEzF,gBAAAU;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,OAAA5B;AAAA,QACA,UAAAC;AAAA,QACA,QAAAC;AAAA,QACA,WAAAC;AAAA,QACA,SAAAC;AAAA,QACA,MAAAoB;AAAA,QACA,eAAAlB;AAAA,QACA,aAAAC;AAAA,QACA,WAAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAS;AAAA,MAACL;AAAA,MAAA;AAAA,QACC,QAAQP,EAAa;AAAA,QACrB,SAASA,EAAa;AAAA,QACtB,sBAAsBA,EAAa;AAAA,QACnC,wBAAwBA,EAAa;AAAA,QACrC,eAAa;AAAA,QACb,OAAO,EAAE,8BAA8B,EAAE,MAAMA,EAAa,cAAc;AAAA,QAC1E,oBAAoB,EAAE,iCAAiC;AAAA,QACvD,kBAAkB,EAAE,gCAAgC;AAAA,QAEnD,YAAE,oCAAoC,EAAE,MAAMA,EAAa,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAC5E,GACF;AAEJ;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OffCycleReasonType as i } from "@gusto/embedded-api/models/components/
|
|
1
|
+
import { OffCycleReasonType as i } from "@gusto/embedded-api/models/components/unprocessedpayroll";
|
|
2
2
|
const c = "get-v1-companies-company_id-payrolls", p = /* @__PURE__ */ new Set([
|
|
3
3
|
"get-v1-companies-company_id-payrolls-payroll_id",
|
|
4
4
|
"post-v1-companies-company_id-payrolls",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payrollOffCycleReasonEnumHook.js","sources":["../../../src/contexts/ApiProvider/payrollOffCycleReasonEnumHook.ts"],"sourcesContent":["import { OffCycleReasonType } from '@gusto/embedded-api/models/components/
|
|
1
|
+
{"version":3,"file":"payrollOffCycleReasonEnumHook.js","sources":["../../../src/contexts/ApiProvider/payrollOffCycleReasonEnumHook.ts"],"sourcesContent":["import { OffCycleReasonType } from '@gusto/embedded-api/models/components/unprocessedpayroll'\nimport type { AfterSuccessHook } from '@/types/hooks'\n\nconst PAYROLL_LIST_OPERATION_ID = 'get-v1-companies-company_id-payrolls'\n\nconst SINGLE_PAYROLL_OPERATIONS: ReadonlySet<string> = new Set([\n 'get-v1-companies-company_id-payrolls-payroll_id',\n 'post-v1-companies-company_id-payrolls',\n 'put-v1-companies-company_id-payrolls',\n 'put-v1-companies-company_id-payrolls-payroll_id-prepare',\n 'put-api-v1-companies-company_id-payrolls-payroll_id-cancel',\n])\n\nconst KNOWN_OFF_CYCLE_REASONS: ReadonlySet<string> = new Set(Object.values(OffCycleReasonType))\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object' && !Array.isArray(value)\n\nconst hasUnknownOffCycleReason = (payroll: unknown): payroll is Record<string, unknown> =>\n isRecord(payroll) &&\n typeof payroll.off_cycle_reason === 'string' &&\n !KNOWN_OFF_CYCLE_REASONS.has(payroll.off_cycle_reason)\n\n// `off_cycle_reason` is nullable in the schema, so an unrecognized reason collapses to `null`\n// (rendered as a generic off-cycle payroll) rather than being relabeled as some other reason.\nconst clearOffCycleReason = (payroll: Record<string, unknown>): Record<string, unknown> => ({\n ...payroll,\n off_cycle_reason: null,\n})\n\nconst remapBody = (body: unknown, operationID: string): unknown => {\n if (operationID === PAYROLL_LIST_OPERATION_ID) {\n if (!Array.isArray(body) || !body.some(hasUnknownOffCycleReason)) return undefined\n return body.map(payroll =>\n hasUnknownOffCycleReason(payroll) ? clearOffCycleReason(payroll) : payroll,\n )\n }\n\n return hasUnknownOffCycleReason(body) ? clearOffCycleReason(body) : undefined\n}\n\n/**\n * Temporary workaround for a Gusto-Partner-API spec gap: `off_cycle_reason` on payroll responses\n * is generated as a closed enum (`z.nativeEnum(OffCycleReasonType)`) in `@gusto/embedded-api`, but\n * the API also emits reasons the published OAS doesn't list (e.g. `Max out 401k`, `Other`). A\n * single such payroll makes the whole `GetV1CompaniesCompanyIdPayrolls` response throw an\n * `SDKValidationError`, taking down Payroll History and every other payroll list for the company.\n * This afterSuccess hook nulls out any reason outside the closed enum before the SDK's zod parse,\n * so the response still validates and the payroll renders as a generic off-cycle payroll. Remove\n * once the client supports lax/open enum parsing for this field.\n *\n * @internal\n */\nexport const payrollOffCycleReasonEnumHook: AfterSuccessHook = {\n afterSuccess: async (context, response) => {\n if (\n context.operationID !== PAYROLL_LIST_OPERATION_ID &&\n !SINGLE_PAYROLL_OPERATIONS.has(context.operationID)\n ) {\n return response\n }\n\n let body: unknown\n try {\n body = await response.clone().json()\n } catch {\n return response\n }\n\n const remapped = remapBody(body, context.operationID)\n if (remapped === undefined) return response\n\n const headers = new Headers(response.headers)\n headers.delete('content-length')\n return new Response(JSON.stringify(remapped), {\n status: response.status,\n statusText: response.statusText,\n headers,\n })\n },\n}\n"],"names":["PAYROLL_LIST_OPERATION_ID","SINGLE_PAYROLL_OPERATIONS","KNOWN_OFF_CYCLE_REASONS","OffCycleReasonType","isRecord","value","hasUnknownOffCycleReason","payroll","clearOffCycleReason","remapBody","body","operationID","payrollOffCycleReasonEnumHook","context","response","remapped","headers"],"mappings":";AAGA,MAAMA,IAA4B,wCAE5BC,wBAAqD,IAAI;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC,GAEKC,IAA+C,IAAI,IAAI,OAAO,OAAOC,CAAkB,CAAC,GAExFC,IAAW,CAACC,MAChBA,MAAU,QAAQ,OAAOA,KAAU,YAAY,CAAC,MAAM,QAAQA,CAAK,GAE/DC,IAA2B,CAACC,MAChCH,EAASG,CAAO,KAChB,OAAOA,EAAQ,oBAAqB,YACpC,CAACL,EAAwB,IAAIK,EAAQ,gBAAgB,GAIjDC,IAAsB,CAACD,OAA+D;AAAA,EAC1F,GAAGA;AAAA,EACH,kBAAkB;AACpB,IAEME,IAAY,CAACC,GAAeC,MAC5BA,MAAgBX,IACd,CAAC,MAAM,QAAQU,CAAI,KAAK,CAACA,EAAK,KAAKJ,CAAwB,IAAG,SAC3DI,EAAK;AAAA,EAAI,OACdJ,EAAyBC,CAAO,IAAIC,EAAoBD,CAAO,IAAIA;AAAA,IAIhED,EAAyBI,CAAI,IAAIF,EAAoBE,CAAI,IAAI,QAezDE,IAAkD;AAAA,EAC7D,cAAc,OAAOC,GAASC,MAAa;AACzC,QACED,EAAQ,gBAAgBb,KACxB,CAACC,EAA0B,IAAIY,EAAQ,WAAW;AAElD,aAAOC;AAGT,QAAIJ;AACJ,QAAI;AACF,MAAAA,IAAO,MAAMI,EAAS,MAAA,EAAQ,KAAA;AAAA,IAChC,QAAQ;AACN,aAAOA;AAAA,IACT;AAEA,UAAMC,IAAWN,EAAUC,GAAMG,EAAQ,WAAW;AACpD,QAAIE,MAAa,OAAW,QAAOD;AAEnC,UAAME,IAAU,IAAI,QAAQF,EAAS,OAAO;AAC5C,WAAAE,EAAQ,OAAO,gBAAgB,GACxB,IAAI,SAAS,KAAK,UAAUD,CAAQ,GAAG;AAAA,MAC5C,QAAQD,EAAS;AAAA,MACjB,YAAYA,EAAS;AAAA,MACrB,SAAAE;AAAA,IAAA,CACD;AAAA,EACH;AACF;"}
|
|
@@ -8,8 +8,6 @@ import { LoadingIndicatorProvider as U } from "../LoadingIndicatorProvider/Loadi
|
|
|
8
8
|
import { sanitizeError as z } from "../ObservabilityProvider/sanitization.js";
|
|
9
9
|
import { UnstableFeaturesProvider as D } from "../UnstableFeaturesProvider/UnstableFeaturesProvider.js";
|
|
10
10
|
import { SDKI18next as m } from "./SDKI18next.js";
|
|
11
|
-
import "classnames";
|
|
12
|
-
import "../../shared/constants.js";
|
|
13
11
|
import { InternalError as F } from "../../components/Common/InternalError/InternalError.js";
|
|
14
12
|
import { LocaleProvider as T } from "../LocaleProvider/LocaleProvider.js";
|
|
15
13
|
import "../LocaleProvider/useLocale.js";
|
|
@@ -17,7 +15,7 @@ import { ThemeProvider as w } from "../ThemeProvider/ThemeProvider.js";
|
|
|
17
15
|
import { normalizeToSDKError as A } from "../../types/sdkError.js";
|
|
18
16
|
import { NonceContext as B } from "../NonceProvider/useNonce.js";
|
|
19
17
|
import { ObservabilityProvider as K } from "../ObservabilityProvider/ObservabilityProvider.js";
|
|
20
|
-
function
|
|
18
|
+
function rr(l) {
|
|
21
19
|
const {
|
|
22
20
|
children: s,
|
|
23
21
|
config: o,
|
|
@@ -72,6 +70,6 @@ function er(l) {
|
|
|
72
70
|
) }, n) }) }) }) }) }) }) });
|
|
73
71
|
}
|
|
74
72
|
export {
|
|
75
|
-
|
|
73
|
+
rr as GustoProviderCustomUIAdapter
|
|
76
74
|
};
|
|
77
75
|
//# sourceMappingURL=GustoProviderCustomUIAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GustoProviderCustomUIAdapter.js","sources":["../../../src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx"],"sourcesContent":["import type React from 'react'\nimport type { ErrorInfo, JSX, ReactNode } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect, useMemo } from 'react'\nimport { ComponentsProvider } from '../ComponentAdapter/ComponentsProvider'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport { ApiProvider } from '../ApiProvider/ApiProvider'\nimport { LoadingIndicatorProvider } from '../LoadingIndicatorProvider/LoadingIndicatorProvider'\nimport { ObservabilityProvider } from '../ObservabilityProvider'\nimport { sanitizeError } from '../ObservabilityProvider/sanitization'\nimport { UnstableFeaturesProvider } from '../UnstableFeaturesProvider/UnstableFeaturesProvider'\nimport type { UnstableFeatures } from '../UnstableFeaturesProvider/useUnstableFeature'\nimport { SDKI18next } from './SDKI18next'\nimport { InternalError } from '@/components/Common'\nimport { LocaleProvider } from '@/contexts/LocaleProvider'\nimport { NonceContext } from '@/contexts/NonceProvider'\nimport { ThemeProvider } from '@/contexts/ThemeProvider'\nimport type { GustoSDKTheme } from '@/contexts/ThemeProvider/theme'\nimport type { GlobalResourceDictionary, SupportedLanguages } from '@/types/Helpers'\nimport type { SDKHooks } from '@/types/hooks'\nimport type { ObservabilityHook } from '@/types/observability'\nimport { normalizeToSDKError } from '@/types/sdkError'\n\n/**\n * API client configuration passed to {@link GustoProvider} (and {@link GustoProviderCustomUIAdapter}).\n *\n * @public\n */\nexport interface APIConfig {\n /** URL of your backend proxy that forwards SDK requests to the Gusto Embedded API. SDK components never call Gusto directly. */\n baseUrl: string\n /** Extra headers applied to every API request. Combined with any headers your proxy adds. */\n headers?: HeadersInit\n /** Request interceptor hooks. Use these to inspect, modify, or react to requests and responses. See {@link SDKHooks}. */\n hooks?: SDKHooks\n /** Observability hook for surfacing errors and metrics from the SDK to your monitoring stack. See {@link ObservabilityHook}. */\n observability?: ObservabilityHook\n}\n\n/**\n * Shared configuration props accepted by {@link GustoProvider} and {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoBaseProviderProps {\n /** API client configuration, including the proxy `baseUrl`, request hooks, and observability. See {@link APIConfig}. */\n config: APIConfig\n /** Translation overrides keyed by language and i18next namespace. Strings supplied here replace the SDK defaults for the matching keys. */\n dictionary?: GlobalResourceDictionary\n /** Active i18next language. Defaults to `'en'`. */\n lng?: string\n /** BCP 47 locale used for number, date, and currency formatting throughout the SDK. Defaults to `'en-US'`. */\n locale?: string\n /** ISO 4217 currency code used for monetary formatting. Defaults to `'USD'`. */\n currency?: string\n /** Theme overrides applied to SDK components. See {@link GustoSDKTheme}. */\n theme?: Partial<GustoSDKTheme>\n /**\n * CSP nonce to apply to runtime-injected `<style>` elements (theming, PDF download window).\n * Pass the same per-request nonce your app uses in its `style-src 'nonce-…'` directive.\n * Also exposed to custom UI components via `useNonce`.\n */\n nonce?: string\n /**\n * Element to use as the portal container for SDK popovers and dropdowns.\n * Defaults to a themed root element the SDK appends to `document.body`.\n *\n * Pass an element here if rendering inside a modal, or **required** if\n * rendering inside a shadow root — `document.body` sits outside every\n * shadow boundary, so without an explicit container overlays would\n * otherwise escape your shadow root's style encapsulation.\n */\n portalContainer?: HTMLElement\n /** Optional TanStack Query `QueryClient`. When omitted, the SDK creates its own client configured for Gusto's API. */\n queryClient?: QueryClient\n /** Complete map of UI components the SDK renders. Required because this adapter ships no defaults. */\n components: ComponentsContextType\n /** Loading indicator rendered while SDK queries are pending. Overrides the SDK default spinner. */\n LoaderComponent?: ({ children }: { children?: ReactNode }) => JSX.Element\n /**\n * Opt-in flags for alpha SDK functionality. See {@link UnstableFeatures}.\n * @alpha\n */\n unstableFeatures?: UnstableFeatures\n}\n\n/**\n * Props for {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoProviderCustomUIAdapterProps extends GustoBaseProviderProps {\n /** The application tree that should have access to the SDK. */\n children?: React.ReactNode\n}\n\n/**\n * Top-level provider that requires a complete component map and ships no UI defaults.\n *\n * @remarks\n * Use this adapter when you want full control over every UI primitive the SDK renders, or when\n * you want to avoid the React Aria dependency for tree-shaking. Unlike {@link GustoProvider}, the\n * `components` prop on {@link GustoProviderProps} is required and must supply every component the\n * SDK renders.\n *\n * @param props - See {@link GustoProviderCustomUIAdapterProps}.\n * @returns The configured provider tree wrapping `children`.\n * @public\n * @group Providers\n */\nexport function GustoProviderCustomUIAdapter(props: GustoProviderCustomUIAdapterProps) {\n const {\n children,\n config,\n dictionary,\n lng = 'en',\n locale = 'en-US',\n currency = 'USD',\n theme,\n nonce,\n portalContainer,\n components,\n LoaderComponent,\n queryClient,\n unstableFeatures,\n } = props\n\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\n SDKI18next.addResourceBundle(\n lang,\n ns,\n (dictionary[lang] as Record<string, unknown>)[ns],\n true,\n true,\n )\n }\n }\n }\n\n useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n const handleTopLevelError = useMemo(() => {\n if (!config.observability?.onError) return undefined\n\n return (error: unknown, errorInfo: ErrorInfo) => {\n if (!config.observability?.onError) return\n\n const sdkError = normalizeToSDKError(error)\n\n const observabilityError = {\n ...sdkError,\n timestamp: Date.now(),\n componentStack: errorInfo.componentStack ?? undefined,\n }\n\n const sanitizedError = sanitizeError(observabilityError, config.observability.sanitization)\n\n config.observability.onError(sanitizedError)\n }\n }, [config.observability])\n return (\n <NonceContext.Provider value={nonce}>\n <ComponentsProvider value={components}>\n <LoadingIndicatorProvider value={LoaderComponent}>\n <ObservabilityProvider observability={config.observability}>\n <ErrorBoundary FallbackComponent={InternalError} onError={handleTopLevelError}>\n <ThemeProvider theme={theme} portalContainer={portalContainer}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider\n url={config.baseUrl}\n headers={config.headers}\n hooks={config.hooks}\n queryClient={queryClient}\n >\n <UnstableFeaturesProvider value={unstableFeatures}>\n {children}\n </UnstableFeaturesProvider>\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </ObservabilityProvider>\n </LoadingIndicatorProvider>\n </ComponentsProvider>\n </NonceContext.Provider>\n )\n}\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","nonce","portalContainer","components","LoaderComponent","queryClient","unstableFeatures","language","lang","ns","SDKI18next","useEffect","handleTopLevelError","useMemo","error","errorInfo","observabilityError","normalizeToSDKError","sanitizedError","sanitizeError","NonceContext","jsx","ComponentsProvider","LoadingIndicatorProvider","ObservabilityProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider","UnstableFeaturesProvider"],"mappings":";;;;;;;;;;;;;;;;;;;AAgHO,SAASA,GAA6BC,GAA0C;AACrF,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA,IACEb;AAEJ,MAAIG;AACF,eAAWW,KAAYX,GAAY;AACjC,YAAMY,IAAOD;AACb,iBAAWE,KAAMb,EAAWY,CAAI;AAC9B,QAAAE,EAAW;AAAA,UACTF;AAAA,UACAC;AAAA,UACCb,EAAWY,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QAAA;AAAA,IAGN;AAGF,EAAAE,EAAU,MAAM;AACd,KAAM,YACJ,MAAMD,EAAW,eAAeb,CAAG;AAAA,EAEvC,GAAG,CAACA,CAAG,CAAC;AAER,QAAMe,IAAsBC,EAAQ,MAAM;AACxC,QAAKlB,EAAO,eAAe;AAE3B,aAAO,CAACmB,GAAgBC,MAAyB;AAC/C,YAAI,CAACpB,EAAO,eAAe,QAAS;AAIpC,cAAMqB,IAAqB;AAAA,UACzB,GAHeC,EAAoBH,CAAK;AAAA,UAIxC,WAAW,KAAK,IAAA;AAAA,UAChB,gBAAgBC,EAAU,kBAAkB;AAAA,QAAA,GAGxCG,IAAiBC,EAAcH,GAAoBrB,EAAO,cAAc,YAAY;AAE1F,QAAAA,EAAO,cAAc,QAAQuB,CAAc;AAAA,MAC7C;AAAA,EACF,GAAG,CAACvB,EAAO,aAAa,CAAC;AACzB,2BACGyB,EAAa,UAAb,EAAsB,OAAOnB,GAC5B,UAAA,gBAAAoB,EAACC,GAAA,EAAmB,OAAOnB,GACzB,4BAACoB,GAAA,EAAyB,OAAOnB,GAC/B,UAAA,gBAAAiB,EAACG,KAAsB,eAAe7B,EAAO,eAC3C,UAAA,gBAAA0B,EAACI,KAAc,mBAAmBC,GAAe,SAASd,GACxD,4BAACe,GAAA,EAAc,OAAA3B,GAAc,iBAAAE,GAC3B,UAAA,gBAAAmB,EAACO,KAAe,QAAA9B,GAAgB,UAAAC,GAC9B,UAAA,gBAAAsB,EAACQ,GAAA,EAAgB,MAAMnB,GACrB,UAAA,gBAAAW;AAAA,IAACS;AAAA,IAAA;AAAA,MACC,KAAKnC,EAAO;AAAA,MACZ,SAASA,EAAO;AAAA,MAChB,OAAOA,EAAO;AAAA,MACd,aAAAU;AAAA,MAEA,UAAA,gBAAAgB,EAACU,GAAA,EAAyB,OAAOzB,GAC9B,UAAAZ,EAAA,CACH;AAAA,IAAA;AAAA,EAAA,KAToCG,CAWxC,EAAA,CACF,EAAA,CACF,GACF,GACF,EAAA,CACF,GACF,GACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"GustoProviderCustomUIAdapter.js","sources":["../../../src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx"],"sourcesContent":["import type React from 'react'\nimport type { ErrorInfo, JSX, ReactNode } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect, useMemo } from 'react'\nimport { ComponentsProvider } from '../ComponentAdapter/ComponentsProvider'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport { ApiProvider } from '../ApiProvider/ApiProvider'\nimport { LoadingIndicatorProvider } from '../LoadingIndicatorProvider/LoadingIndicatorProvider'\nimport { ObservabilityProvider } from '../ObservabilityProvider'\nimport { sanitizeError } from '../ObservabilityProvider/sanitization'\nimport { UnstableFeaturesProvider } from '../UnstableFeaturesProvider/UnstableFeaturesProvider'\nimport type { UnstableFeatures } from '../UnstableFeaturesProvider/useUnstableFeature'\nimport { SDKI18next } from './SDKI18next'\nimport { InternalError } from '@/components/Common'\nimport { LocaleProvider } from '@/contexts/LocaleProvider'\nimport { NonceContext } from '@/contexts/NonceProvider'\nimport { ThemeProvider } from '@/contexts/ThemeProvider'\nimport type { GustoSDKTheme } from '@/contexts/ThemeProvider/theme'\nimport type { GlobalResourceDictionary, SupportedLanguages } from '@/types/Helpers'\nimport type { SDKHooks } from '@/types/hooks'\nimport type { ObservabilityHook } from '@/types/observability'\nimport { normalizeToSDKError } from '@/types/sdkError'\n\n/**\n * API client configuration passed to {@link GustoProvider} (and {@link GustoProviderCustomUIAdapter}).\n *\n * @public\n */\nexport interface APIConfig {\n /** URL of your backend proxy that forwards SDK requests to the Gusto Embedded API. SDK components never call Gusto directly. */\n baseUrl: string\n /** Extra headers applied to every API request. Combined with any headers your proxy adds. */\n headers?: HeadersInit\n /** Request interceptor hooks. Use these to inspect, modify, or react to requests and responses. See {@link SDKHooks}. */\n hooks?: SDKHooks\n /** Observability hook for surfacing errors and metrics from the SDK to your monitoring stack. See {@link ObservabilityHook}. */\n observability?: ObservabilityHook\n}\n\n/**\n * Shared configuration props accepted by {@link GustoProvider} and {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoBaseProviderProps {\n /** API client configuration, including the proxy `baseUrl`, request hooks, and observability. See {@link APIConfig}. */\n config: APIConfig\n /** Translation overrides keyed by language and i18next namespace. Strings supplied here replace the SDK defaults for the matching keys. */\n dictionary?: GlobalResourceDictionary\n /** Active i18next language. Defaults to `'en'`. */\n lng?: string\n /** BCP 47 locale used for number, date, and currency formatting throughout the SDK. Defaults to `'en-US'`. */\n locale?: string\n /** ISO 4217 currency code used for monetary formatting. Defaults to `'USD'`. */\n currency?: string\n /** Theme overrides applied to SDK components. See {@link GustoSDKTheme}. */\n theme?: Partial<GustoSDKTheme>\n /**\n * CSP nonce to apply to runtime-injected `<style>` elements (theming, PDF download window).\n * Pass the same per-request nonce your app uses in its `style-src 'nonce-…'` directive.\n * Also exposed to custom UI components via `useNonce`.\n */\n nonce?: string\n /**\n * Element to use as the portal container for SDK popovers and dropdowns.\n * Defaults to a themed root element the SDK appends to `document.body`.\n *\n * Pass an element here if rendering inside a modal, or **required** if\n * rendering inside a shadow root — `document.body` sits outside every\n * shadow boundary, so without an explicit container overlays would\n * otherwise escape your shadow root's style encapsulation.\n */\n portalContainer?: HTMLElement\n /** Optional TanStack Query `QueryClient`. When omitted, the SDK creates its own client configured for Gusto's API. */\n queryClient?: QueryClient\n /** Complete map of UI components the SDK renders. Required because this adapter ships no defaults. */\n components: ComponentsContextType\n /** Loading indicator rendered while SDK queries are pending. Overrides the SDK default spinner. */\n LoaderComponent?: ({ children }: { children?: ReactNode }) => JSX.Element\n /**\n * Opt-in flags for alpha SDK functionality. See {@link UnstableFeatures}.\n * @alpha\n */\n unstableFeatures?: UnstableFeatures\n}\n\n/**\n * Props for {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoProviderCustomUIAdapterProps extends GustoBaseProviderProps {\n /** The application tree that should have access to the SDK. */\n children?: React.ReactNode\n}\n\n/**\n * Top-level provider that requires a complete component map and ships no UI defaults.\n *\n * @remarks\n * Use this adapter when you want full control over every UI primitive the SDK renders, or when\n * you want to avoid the React Aria dependency for tree-shaking. Unlike {@link GustoProvider}, the\n * `components` prop on {@link GustoProviderProps} is required and must supply every component the\n * SDK renders.\n *\n * @param props - See {@link GustoProviderCustomUIAdapterProps}.\n * @returns The configured provider tree wrapping `children`.\n * @public\n * @group Providers\n */\nexport function GustoProviderCustomUIAdapter(props: GustoProviderCustomUIAdapterProps) {\n const {\n children,\n config,\n dictionary,\n lng = 'en',\n locale = 'en-US',\n currency = 'USD',\n theme,\n nonce,\n portalContainer,\n components,\n LoaderComponent,\n queryClient,\n unstableFeatures,\n } = props\n\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\n SDKI18next.addResourceBundle(\n lang,\n ns,\n (dictionary[lang] as Record<string, unknown>)[ns],\n true,\n true,\n )\n }\n }\n }\n\n useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n const handleTopLevelError = useMemo(() => {\n if (!config.observability?.onError) return undefined\n\n return (error: unknown, errorInfo: ErrorInfo) => {\n if (!config.observability?.onError) return\n\n const sdkError = normalizeToSDKError(error)\n\n const observabilityError = {\n ...sdkError,\n timestamp: Date.now(),\n componentStack: errorInfo.componentStack ?? undefined,\n }\n\n const sanitizedError = sanitizeError(observabilityError, config.observability.sanitization)\n\n config.observability.onError(sanitizedError)\n }\n }, [config.observability])\n return (\n <NonceContext.Provider value={nonce}>\n <ComponentsProvider value={components}>\n <LoadingIndicatorProvider value={LoaderComponent}>\n <ObservabilityProvider observability={config.observability}>\n <ErrorBoundary FallbackComponent={InternalError} onError={handleTopLevelError}>\n <ThemeProvider theme={theme} portalContainer={portalContainer}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider\n url={config.baseUrl}\n headers={config.headers}\n hooks={config.hooks}\n queryClient={queryClient}\n >\n <UnstableFeaturesProvider value={unstableFeatures}>\n {children}\n </UnstableFeaturesProvider>\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </ObservabilityProvider>\n </LoadingIndicatorProvider>\n </ComponentsProvider>\n </NonceContext.Provider>\n )\n}\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","nonce","portalContainer","components","LoaderComponent","queryClient","unstableFeatures","language","lang","ns","SDKI18next","useEffect","handleTopLevelError","useMemo","error","errorInfo","observabilityError","normalizeToSDKError","sanitizedError","sanitizeError","NonceContext","jsx","ComponentsProvider","LoadingIndicatorProvider","ObservabilityProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider","UnstableFeaturesProvider"],"mappings":";;;;;;;;;;;;;;;;;AAgHO,SAASA,GAA6BC,GAA0C;AACrF,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA,IACEb;AAEJ,MAAIG;AACF,eAAWW,KAAYX,GAAY;AACjC,YAAMY,IAAOD;AACb,iBAAWE,KAAMb,EAAWY,CAAI;AAC9B,QAAAE,EAAW;AAAA,UACTF;AAAA,UACAC;AAAA,UACCb,EAAWY,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QAAA;AAAA,IAGN;AAGF,EAAAE,EAAU,MAAM;AACd,KAAM,YACJ,MAAMD,EAAW,eAAeb,CAAG;AAAA,EAEvC,GAAG,CAACA,CAAG,CAAC;AAER,QAAMe,IAAsBC,EAAQ,MAAM;AACxC,QAAKlB,EAAO,eAAe;AAE3B,aAAO,CAACmB,GAAgBC,MAAyB;AAC/C,YAAI,CAACpB,EAAO,eAAe,QAAS;AAIpC,cAAMqB,IAAqB;AAAA,UACzB,GAHeC,EAAoBH,CAAK;AAAA,UAIxC,WAAW,KAAK,IAAA;AAAA,UAChB,gBAAgBC,EAAU,kBAAkB;AAAA,QAAA,GAGxCG,IAAiBC,EAAcH,GAAoBrB,EAAO,cAAc,YAAY;AAE1F,QAAAA,EAAO,cAAc,QAAQuB,CAAc;AAAA,MAC7C;AAAA,EACF,GAAG,CAACvB,EAAO,aAAa,CAAC;AACzB,2BACGyB,EAAa,UAAb,EAAsB,OAAOnB,GAC5B,UAAA,gBAAAoB,EAACC,GAAA,EAAmB,OAAOnB,GACzB,4BAACoB,GAAA,EAAyB,OAAOnB,GAC/B,UAAA,gBAAAiB,EAACG,KAAsB,eAAe7B,EAAO,eAC3C,UAAA,gBAAA0B,EAACI,KAAc,mBAAmBC,GAAe,SAASd,GACxD,4BAACe,GAAA,EAAc,OAAA3B,GAAc,iBAAAE,GAC3B,UAAA,gBAAAmB,EAACO,KAAe,QAAA9B,GAAgB,UAAAC,GAC9B,UAAA,gBAAAsB,EAACQ,GAAA,EAAgB,MAAMnB,GACrB,UAAA,gBAAAW;AAAA,IAACS;AAAA,IAAA;AAAA,MACC,KAAKnC,EAAO;AAAA,MACZ,SAASA,EAAO;AAAA,MAChB,OAAOA,EAAO;AAAA,MACd,aAAAU;AAAA,MAEA,UAAA,gBAAAgB,EAACU,GAAA,EAAyB,OAAOzB,GAC9B,UAAAZ,EAAA,CACH;AAAA,IAAA;AAAA,EAAA,KAToCG,CAWxC,EAAA,CACF,EAAA,CACF,GACF,GACF,EAAA,CACF,GACF,GACF;AAEJ;"}
|