@gusto/embedded-react-sdk 0.55.7 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -0
- package/dist/components/Common/FadeIn/FadeIn.module.scss.js +4 -4
- package/dist/components/Common/FieldCaption/FieldCaption.js +22 -18
- package/dist/components/Common/FieldCaption/FieldCaption.js.map +1 -1
- package/dist/components/Common/Flex/Flex.js +17 -15
- package/dist/components/Common/Flex/Flex.js.map +1 -1
- package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
- package/dist/components/Common/UI/Heading/Heading.module.scss.js +7 -7
- package/dist/components/Common/UI/Menu/MenuTypes.js.map +1 -1
- package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +43 -42
- package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js.map +1 -1
- package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +5 -3
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +5 -3
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +7 -5
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +5 -3
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +5 -3
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +27 -27
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +10 -8
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +8 -6
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +5 -3
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +5 -3
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +5 -3
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +45 -30
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js +12 -11
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleForm.js +72 -55
- package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js +24 -20
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js +33 -29
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +131 -115
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +5 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +5 -3
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +5 -3
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +31 -29
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +110 -109
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
- package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js +21 -19
- package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js +56 -55
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js.map +1 -1
- package/dist/components/Contractor/Dashboard/Dashboard.js +34 -33
- package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +117 -115
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +77 -75
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js +44 -43
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js +40 -39
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +35 -29
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +21 -20
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js +41 -40
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +21 -20
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +33 -32
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +80 -78
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +44 -43
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
- package/dist/components/Contractor/Submit/Submit.js +113 -105
- package/dist/components/Contractor/Submit/Submit.js.map +1 -1
- package/dist/components/Contractor/Submit/SubmitDone.js +11 -11
- package/dist/components/Contractor/Submit/SubmitDone.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js +20 -18
- package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +18 -15
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.js +33 -32
- package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js +21 -19
- package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentManager.js +34 -26
- package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +5 -3
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js +30 -29
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +54 -53
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +29 -28
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js +16 -15
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js.map +1 -1
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js +27 -25
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js +121 -111
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js +22 -20
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js +24 -23
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +52 -43
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js +29 -26
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js +19 -17
- package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js +79 -78
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js +4 -4
- package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js +4 -4
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +40 -39
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +31 -30
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +43 -41
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +20 -19
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js +19 -17
- package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js +49 -48
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
- package/dist/components/Flow/Flow.js +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +28 -28
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +37 -36
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +36 -35
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +35 -28
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +23 -22
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +48 -45
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +85 -77
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +63 -59
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
- package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js +23 -21
- package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js.map +1 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelection.js +26 -19
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelection.js.map +1 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +14 -12
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +184 -162
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +67 -65
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js +48 -34
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +43 -41
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +225 -223
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +78 -75
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js +27 -27
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js +19 -19
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +51 -48
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +58 -48
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +58 -57
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +83 -69
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +62 -60
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +119 -117
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +187 -171
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +120 -110
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js +45 -34
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +20 -14
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +62 -61
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.module.scss.js +14 -14
- package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js +24 -17
- package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js +22 -22
- package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +88 -80
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js +52 -37
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js +26 -26
- package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +32 -32
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +50 -48
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +34 -33
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +28 -24
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +255 -228
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js +8 -4
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +10 -8
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js +5 -5
- package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js +8 -7
- package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js +51 -50
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +20 -18
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js +51 -49
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js.map +1 -1
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormPresentation.js +20 -20
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyList.js +50 -49
- package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js +34 -33
- package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js +46 -45
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js +152 -143
- package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js +14 -13
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js.map +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js +44 -35
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +88 -71
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js +164 -155
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +57 -55
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js +25 -24
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +94 -92
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +156 -155
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.js +21 -19
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.js.map +1 -1
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +28 -26
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +29 -28
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/apiVersionMismatchHook.js +15 -0
- package/dist/contexts/ApiProvider/apiVersionMismatchHook.js.map +1 -0
- package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/ThemeProvider/ThemeProvider.js +32 -26
- package/dist/contexts/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
- package/dist/hooks/usePollingTask/usePollingTask.js +53 -41
- package/dist/hooks/usePollingTask/usePollingTask.js.map +1 -1
- package/dist/i18n/en/Company.PaySchedule.json.js +22 -20
- package/dist/i18n/en/Company.PaySchedule.json.js.map +1 -1
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js +28 -24
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js.map +1 -1
- package/dist/i18n/en/Payroll.GrossUpModal.json.js +12 -10
- package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +8 -8
- package/dist/i18n/en/Payroll.PayrollOverview.json.js +15 -15
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js +62 -58
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/src/components/Common/FieldCaption/FieldCaption.d.ts +2 -16
- package/dist/src/components/Common/FieldCaption/FieldCaptionTypes.d.ts +22 -0
- package/dist/src/components/Common/FieldCaption/index.d.ts +1 -0
- package/dist/src/components/Common/Flex/Flex.d.ts +3 -1
- package/dist/src/components/Common/UI/ComboBox/ComboBoxTypes.d.ts +1 -1
- package/dist/src/components/Common/UI/DatePicker/DatePickerTypes.d.ts +2 -1
- package/dist/src/components/Common/UI/Menu/MenuTypes.d.ts +1 -1
- package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.d.ts +1 -1
- package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +5 -0
- package/dist/src/components/Common/UI/Select/SelectTypes.d.ts +2 -1
- package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +10 -2
- package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +1 -0
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +9 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/index.d.ts +2 -2
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +21 -5
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +21 -3
- package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +3 -1
- package/dist/src/components/Contractor/ContractorList/onboarding/ContractorListView.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/CreatePayment/PreviewPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Submit/SubmitDone.d.ts +3 -1
- package/dist/src/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.d.ts +1 -1
- package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.d.ts +3 -1
- package/dist/src/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.d.ts +3 -1
- package/dist/src/components/Employee/EmployeeList/management/ManagementEmployeeListView.d.ts +3 -1
- package/dist/src/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +3 -1
- package/dist/src/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +11 -2
- package/dist/src/components/Employee/EmployeeListFlow/employeeListStateMachine.test.d.ts +1 -0
- package/dist/src/components/Employee/HomeAddress/management/HomeAddressView.d.ts +3 -1
- package/dist/src/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +3 -1
- package/dist/src/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.d.ts +3 -1
- package/dist/src/components/Employee/WorkAddress/management/WorkAddressView.d.ts +3 -1
- package/dist/src/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +8 -0
- package/dist/src/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollConfiguration/useCalculationPoll.d.ts +6 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +9 -9
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.d.ts +2 -2
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.d.ts +4 -4
- package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +2 -1
- package/dist/src/components/Payroll/PayrollOverview/useSubmissionPoll.d.ts +10 -1
- package/dist/src/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +2 -1
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +2 -0
- package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.d.ts +3 -1
- package/dist/src/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts +1 -1
- package/dist/src/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.d.ts +1 -1
- package/dist/src/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.d.ts +1 -1
- package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/PolicyList/PolicyListPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/PolicyList/PolicyListTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/PolicySettings/PolicySettingsPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/PolicySettings/PolicySettingsTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailTypes.d.ts +3 -0
- package/dist/src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.d.ts +1 -1
- package/dist/src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayoutTypes.d.ts +2 -0
- package/dist/src/contexts/ApiProvider/ApiProvider.d.ts +5 -3
- package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.d.ts +3 -0
- package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.test.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/useComponentContext.d.ts +4 -1
- package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +9 -1
- package/dist/src/contexts/ThemeProvider/ThemeProvider.d.ts +8 -3
- package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +4 -1
- package/dist/src/hooks/usePollingTask/usePollingTask.d.ts +55 -14
- package/dist/src/i18n/types.d.ts +42 -2
- package/dist/src/index.d.ts +1 -1
- package/dist/src/models/external.d.ts +1 -0
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +5 -0
- package/package.json +20 -19
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { useTranslation as
|
|
4
|
-
import { useTimeOffPoliciesGetSuspense as
|
|
5
|
-
import { useTimeOffPoliciesRemoveEmployeesMutation as
|
|
6
|
-
import { useTimeOffPoliciesUpdateBalanceMutation as
|
|
7
|
-
import { useEmployeesListSuspense as
|
|
8
|
-
import { UnprocessableEntityError as
|
|
9
|
-
import { useQueryClient as
|
|
10
|
-
import { TimeOffPolicyDetailPresentation as
|
|
11
|
-
import { EditEmployeeBalanceModal as
|
|
12
|
-
import { API_QUERY_NAMESPACE as
|
|
13
|
-
import { HamburgerMenu as
|
|
14
|
-
import { BaseComponent as
|
|
15
|
-
import { useBase as
|
|
16
|
-
import { SDKInternalError as
|
|
17
|
-
import { componentEvents as
|
|
18
|
-
import { useComponentContext as
|
|
19
|
-
import { useI18n as
|
|
20
|
-
import { useLocale as
|
|
21
|
-
import { isEditableTimeOffPolicyType as
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
import
|
|
25
|
-
function
|
|
26
|
-
return /* @__PURE__ */
|
|
1
|
+
import { jsx as i, jsxs as z, Fragment as Z } from "react/jsx-runtime";
|
|
2
|
+
import { useState as p, useMemo as y, useCallback as _ } from "react";
|
|
3
|
+
import { useTranslation as ee } from "react-i18next";
|
|
4
|
+
import { useTimeOffPoliciesGetSuspense as re } from "@gusto/embedded-api/react-query/timeOffPoliciesGet";
|
|
5
|
+
import { useTimeOffPoliciesRemoveEmployeesMutation as te } from "@gusto/embedded-api/react-query/timeOffPoliciesRemoveEmployees";
|
|
6
|
+
import { useTimeOffPoliciesUpdateBalanceMutation as ae } from "@gusto/embedded-api/react-query/timeOffPoliciesUpdateBalance";
|
|
7
|
+
import { useEmployeesListSuspense as oe } from "@gusto/embedded-api/react-query/employeesList";
|
|
8
|
+
import { UnprocessableEntityError as ne } from "@gusto/embedded-api/models/errors/unprocessableentityerror";
|
|
9
|
+
import { useQueryClient as ie } from "@tanstack/react-query";
|
|
10
|
+
import { TimeOffPolicyDetailPresentation as le } from "./TimeOffPolicyDetailPresentation.js";
|
|
11
|
+
import { EditEmployeeBalanceModal as se } from "./EditEmployeeBalanceModal.js";
|
|
12
|
+
import { API_QUERY_NAMESPACE as me } from "../../../contexts/ApiProvider/apiVersion.js";
|
|
13
|
+
import { HamburgerMenu as ue } from "../../Common/HamburgerMenu/HamburgerMenu.js";
|
|
14
|
+
import { BaseComponent as ce } from "../../Base/Base.js";
|
|
15
|
+
import { useBase as de } from "../../Base/useBase.js";
|
|
16
|
+
import { SDKInternalError as R } from "../../../types/sdkError.js";
|
|
17
|
+
import { componentEvents as b } from "../../../shared/constants.js";
|
|
18
|
+
import { useComponentContext as fe } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
19
|
+
import { useI18n as pe } from "../../../i18n/I18n.js";
|
|
20
|
+
import { useLocale as ye } from "../../../contexts/LocaleProvider/useLocale.js";
|
|
21
|
+
import { isEditableTimeOffPolicyType as _e } from "../TimeOffFlow/timeOffPolicyTypes.js";
|
|
22
|
+
import U from "../../../assets/icons/edit-02.svg.js";
|
|
23
|
+
import Pe from "../../../assets/icons/trashcan.svg.js";
|
|
24
|
+
import he from "../../../assets/icons/plus-circle.svg.js";
|
|
25
|
+
function ze(e) {
|
|
26
|
+
return /* @__PURE__ */ i(ce, { ...e, children: /* @__PURE__ */ i(Ne, { ...e }) });
|
|
27
27
|
}
|
|
28
|
-
const
|
|
28
|
+
const ve = {
|
|
29
29
|
unlimited: "unlimited",
|
|
30
30
|
per_pay_period: "perPayPeriod",
|
|
31
31
|
per_calendar_year: "perCalendarYear",
|
|
@@ -35,28 +35,28 @@ const he = {
|
|
|
35
35
|
per_hour_paid: "perHourPaid",
|
|
36
36
|
per_hour_paid_no_overtime: "perHourPaidNoOvertime"
|
|
37
37
|
};
|
|
38
|
-
function ve(e) {
|
|
39
|
-
return he[e] ?? "unlimited";
|
|
40
|
-
}
|
|
41
38
|
function Te(e) {
|
|
39
|
+
return ve[e] ?? "unlimited";
|
|
40
|
+
}
|
|
41
|
+
function be(e) {
|
|
42
42
|
return e === "sick" ? "sick" : "vacation";
|
|
43
43
|
}
|
|
44
|
-
function
|
|
44
|
+
function Ee(e, s) {
|
|
45
45
|
if (!e) return;
|
|
46
|
-
const [
|
|
47
|
-
return !
|
|
46
|
+
const [r, t] = e.split("-");
|
|
47
|
+
return !r || !t ? e : new Date(2e3, parseInt(r, 10) - 1, parseInt(t, 10)).toLocaleDateString(s, { month: "long", day: "numeric" });
|
|
48
48
|
}
|
|
49
|
-
function
|
|
50
|
-
const
|
|
51
|
-
return t === "unlimited" ? { policyType:
|
|
52
|
-
policyType:
|
|
49
|
+
function Oe(e, s) {
|
|
50
|
+
const r = be(e.policyType), t = Te(e.accrualMethod);
|
|
51
|
+
return t === "unlimited" ? { policyType: r, accrualMethod: t } : {
|
|
52
|
+
policyType: r,
|
|
53
53
|
accrualMethod: t,
|
|
54
54
|
accrualRate: e.accrualRate ? Number(e.accrualRate) : 0,
|
|
55
55
|
accrualRateUnit: e.accrualRateUnit ? Number(e.accrualRateUnit) : void 0,
|
|
56
|
-
resetDate:
|
|
56
|
+
resetDate: Ee(e.policyResetDate, s)
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
|
-
function
|
|
59
|
+
function ge(e) {
|
|
60
60
|
if (e.accrualMethod !== "unlimited")
|
|
61
61
|
return {
|
|
62
62
|
maxAccrualHoursPerYear: e.maxAccrualHoursPerYear != null ? Number(e.maxAccrualHoursPerYear) : null,
|
|
@@ -66,219 +66,220 @@ function Oe(e) {
|
|
|
66
66
|
paidOutOnTermination: e.paidOutOnTermination ?? !1
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
|
-
function
|
|
70
|
-
const
|
|
69
|
+
function Ce(e, s) {
|
|
70
|
+
const r = new Map(s.map((t) => [t.uuid, t]));
|
|
71
71
|
return e.employees.map((t) => {
|
|
72
|
-
const
|
|
72
|
+
const l = r.get(t.uuid ?? ""), E = l?.jobs?.find((u) => u.primary);
|
|
73
73
|
return {
|
|
74
74
|
uuid: t.uuid ?? "",
|
|
75
|
-
firstName:
|
|
76
|
-
lastName:
|
|
77
|
-
jobTitle:
|
|
75
|
+
firstName: l?.firstName ?? null,
|
|
76
|
+
lastName: l?.lastName ?? null,
|
|
77
|
+
jobTitle: E?.title ?? l?.jobs?.[0]?.title ?? null,
|
|
78
78
|
balance: t.balance != null ? Number(t.balance) : null
|
|
79
79
|
};
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
|
-
function
|
|
83
|
-
|
|
84
|
-
const { t: r } =
|
|
82
|
+
function Ne({ policyId: e, className: s }) {
|
|
83
|
+
pe("Company.TimeOff.TimeOffPolicyDetails");
|
|
84
|
+
const { t: r } = ee("Company.TimeOff.TimeOffPolicyDetails"), { onEvent: t, baseSubmitHandler: l, error: E, setError: u } = de(), { Button: O } = fe(), { locale: A } = ye(), H = ie(), { data: k } = re({
|
|
85
85
|
timeOffPolicyUuid: e
|
|
86
|
-
}), { mutateAsync:
|
|
87
|
-
if (!
|
|
88
|
-
const
|
|
89
|
-
companyId:
|
|
86
|
+
}), { mutateAsync: B, isPending: I } = te(), { mutateAsync: w, isPending: F } = ae(), a = k.timeOffPolicy;
|
|
87
|
+
if (!a) throw new Error("Unexpected response: missing timeOffPolicy");
|
|
88
|
+
const c = _e(a.policyType), { data: D } = oe({
|
|
89
|
+
companyId: a.companyUuid,
|
|
90
90
|
terminated: !1
|
|
91
|
-
}), [
|
|
92
|
-
() =>
|
|
93
|
-
[
|
|
94
|
-
),
|
|
95
|
-
if (!
|
|
96
|
-
const
|
|
97
|
-
return
|
|
98
|
-
}, [
|
|
99
|
-
|
|
100
|
-
queryKey: [
|
|
91
|
+
}), [Y, q] = p("details"), [P, L] = p(""), [$, g] = p(), [d, C] = p(null), [m, N] = p(null), h = y(() => Oe(a, A), [a, A]), j = y(() => ge(a), [a]), M = y(
|
|
92
|
+
() => Ce(a, D.showEmployees ?? []),
|
|
93
|
+
[a, D.showEmployees]
|
|
94
|
+
), V = y(() => {
|
|
95
|
+
if (!P.trim()) return M;
|
|
96
|
+
const n = P.toLowerCase();
|
|
97
|
+
return M.filter((o) => `${o.firstName ?? ""} ${o.lastName ?? ""}`.toLowerCase().includes(n));
|
|
98
|
+
}, [M, P]), v = _(() => {
|
|
99
|
+
H.invalidateQueries({
|
|
100
|
+
queryKey: [me, "timeOffPolicies", "get"]
|
|
101
101
|
});
|
|
102
|
-
}, [
|
|
103
|
-
async (
|
|
104
|
-
|
|
105
|
-
await
|
|
102
|
+
}, [H]), W = _(
|
|
103
|
+
async (n, o) => {
|
|
104
|
+
C(null), await l({}, async () => {
|
|
105
|
+
await B({
|
|
106
106
|
request: {
|
|
107
107
|
timeOffPolicyUuid: e,
|
|
108
|
-
requestBody: { employees: [{ uuid:
|
|
108
|
+
requestBody: { employees: [{ uuid: n }] }
|
|
109
109
|
}
|
|
110
|
-
}),
|
|
110
|
+
}), v(), g(r("flash.employeeRemoved", { name: o }));
|
|
111
111
|
});
|
|
112
112
|
},
|
|
113
|
-
[
|
|
114
|
-
),
|
|
115
|
-
async (
|
|
116
|
-
m && await
|
|
113
|
+
[l, B, e, v, r]
|
|
114
|
+
), G = _(
|
|
115
|
+
async (n) => {
|
|
116
|
+
m && await l({}, async () => {
|
|
117
117
|
try {
|
|
118
|
-
await
|
|
118
|
+
await w({
|
|
119
119
|
request: {
|
|
120
120
|
timeOffPolicyUuid: e,
|
|
121
121
|
requestBody: {
|
|
122
|
-
employees: [{ uuid: m.employeeUuid, balance: String(
|
|
122
|
+
employees: [{ uuid: m.employeeUuid, balance: String(n) }]
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
|
-
} catch (
|
|
127
|
-
if (
|
|
128
|
-
const
|
|
129
|
-
if (
|
|
130
|
-
(
|
|
131
|
-
) &&
|
|
132
|
-
throw new
|
|
133
|
-
r("editBalanceModal.errors.balanceExceedsMax", { max:
|
|
126
|
+
} catch (o) {
|
|
127
|
+
if (o instanceof ne) {
|
|
128
|
+
const f = a.maxHours != null ? Number(a.maxHours) : null;
|
|
129
|
+
if (o.errors.some(
|
|
130
|
+
(T) => T.message === "LIMIT_VIOLATION_MAX_HOURS" || T.category === "invalid_attribute_value"
|
|
131
|
+
) && f != null)
|
|
132
|
+
throw new R(
|
|
133
|
+
r("editBalanceModal.errors.balanceExceedsMax", { max: f }),
|
|
134
134
|
"api_error"
|
|
135
135
|
);
|
|
136
|
-
const
|
|
137
|
-
throw new
|
|
138
|
-
|
|
136
|
+
const X = o.errors.map((T) => T.message).filter(Boolean);
|
|
137
|
+
throw new R(
|
|
138
|
+
X.join(". ") || r("editBalanceModal.errors.updateFailed"),
|
|
139
139
|
"api_error"
|
|
140
140
|
);
|
|
141
141
|
}
|
|
142
|
-
throw
|
|
142
|
+
throw o;
|
|
143
143
|
}
|
|
144
|
-
|
|
144
|
+
v(), N(null), g(r("flash.balanceUpdated", { name: m.employeeName }));
|
|
145
145
|
});
|
|
146
146
|
},
|
|
147
147
|
[
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
l,
|
|
149
|
+
w,
|
|
150
150
|
e,
|
|
151
151
|
m,
|
|
152
|
-
|
|
152
|
+
v,
|
|
153
153
|
r,
|
|
154
|
-
|
|
154
|
+
a.maxHours
|
|
155
155
|
]
|
|
156
|
-
),
|
|
157
|
-
|
|
158
|
-
}, [
|
|
159
|
-
if (
|
|
156
|
+
), S = _(() => {
|
|
157
|
+
t(b.TIME_OFF_ADD_EMPLOYEES_TO_POLICY, { policyId: e });
|
|
158
|
+
}, [t, e]), K = y(() => {
|
|
159
|
+
if (c)
|
|
160
160
|
return [
|
|
161
|
-
/* @__PURE__ */
|
|
162
|
-
|
|
161
|
+
/* @__PURE__ */ i(
|
|
162
|
+
O,
|
|
163
163
|
{
|
|
164
164
|
variant: "secondary",
|
|
165
|
-
icon: /* @__PURE__ */
|
|
166
|
-
onClick:
|
|
165
|
+
icon: /* @__PURE__ */ i(he, { "aria-hidden": !0 }),
|
|
166
|
+
onClick: S,
|
|
167
167
|
children: r("addEmployeeCta")
|
|
168
168
|
},
|
|
169
169
|
"add"
|
|
170
170
|
),
|
|
171
|
-
/* @__PURE__ */
|
|
172
|
-
|
|
171
|
+
/* @__PURE__ */ i(
|
|
172
|
+
O,
|
|
173
173
|
{
|
|
174
174
|
variant: "secondary",
|
|
175
|
-
icon: /* @__PURE__ */
|
|
175
|
+
icon: /* @__PURE__ */ i(U, { "aria-hidden": !0 }),
|
|
176
176
|
onClick: () => {
|
|
177
|
-
|
|
177
|
+
t(b.TIME_OFF_EDIT_POLICY, { policyId: e });
|
|
178
178
|
},
|
|
179
179
|
children: r("editPolicyCta")
|
|
180
180
|
},
|
|
181
181
|
"edit"
|
|
182
182
|
)
|
|
183
183
|
];
|
|
184
|
-
}, [
|
|
185
|
-
(
|
|
186
|
-
const
|
|
187
|
-
...
|
|
184
|
+
}, [O, t, e, r, c, S]), x = a.accrualMethod === "unlimited", Q = _(
|
|
185
|
+
(n) => {
|
|
186
|
+
const o = `${n.firstName ?? ""} ${n.lastName ?? ""}`.trim(), f = [
|
|
187
|
+
...x ? [] : [
|
|
188
188
|
{
|
|
189
189
|
label: r("employeeTable.editBalance"),
|
|
190
|
-
icon: /* @__PURE__ */
|
|
190
|
+
icon: /* @__PURE__ */ i(U, { "aria-hidden": !0 }),
|
|
191
191
|
onClick: () => {
|
|
192
|
-
u(null),
|
|
193
|
-
employeeUuid:
|
|
194
|
-
employeeName:
|
|
195
|
-
currentBalance:
|
|
192
|
+
u(null), N({
|
|
193
|
+
employeeUuid: n.uuid,
|
|
194
|
+
employeeName: o,
|
|
195
|
+
currentBalance: n.balance ?? 0
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
],
|
|
200
200
|
{
|
|
201
201
|
label: r("employeeTable.removeEmployee"),
|
|
202
|
-
icon: /* @__PURE__ */
|
|
202
|
+
icon: /* @__PURE__ */ i(Pe, { "aria-hidden": !0 }),
|
|
203
203
|
onClick: () => {
|
|
204
|
-
|
|
204
|
+
C({ uuid: n.uuid, name: o });
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
];
|
|
208
|
-
return /* @__PURE__ */
|
|
209
|
-
|
|
208
|
+
return /* @__PURE__ */ i(
|
|
209
|
+
ue,
|
|
210
210
|
{
|
|
211
|
-
items:
|
|
212
|
-
triggerLabel: `${r("employeeTable.actions")} ${
|
|
211
|
+
items: f,
|
|
212
|
+
triggerLabel: `${r("employeeTable.actions")} ${o}`
|
|
213
213
|
}
|
|
214
214
|
);
|
|
215
215
|
},
|
|
216
|
-
[r,
|
|
217
|
-
),
|
|
218
|
-
policyDetails:
|
|
219
|
-
policySettings:
|
|
220
|
-
onChangeSettings:
|
|
221
|
-
|
|
216
|
+
[r, x, u]
|
|
217
|
+
), J = h.accrualMethod === "unlimited" ? { policyDetails: h } : {
|
|
218
|
+
policyDetails: h,
|
|
219
|
+
policySettings: j,
|
|
220
|
+
onChangeSettings: c ? () => {
|
|
221
|
+
t(b.TIME_OFF_CHANGE_SETTINGS, { policyId: e });
|
|
222
222
|
} : void 0
|
|
223
223
|
};
|
|
224
|
-
return /* @__PURE__ */
|
|
225
|
-
/* @__PURE__ */
|
|
226
|
-
|
|
224
|
+
return /* @__PURE__ */ z(Z, { children: [
|
|
225
|
+
/* @__PURE__ */ i(
|
|
226
|
+
le,
|
|
227
227
|
{
|
|
228
|
-
...
|
|
229
|
-
title:
|
|
230
|
-
subtitle: r(`subtitle.${
|
|
228
|
+
...J,
|
|
229
|
+
title: a.name,
|
|
230
|
+
subtitle: r(`subtitle.${h.policyType}`),
|
|
231
231
|
onBack: () => {
|
|
232
|
-
|
|
232
|
+
t(b.TIME_OFF_BACK_TO_LIST);
|
|
233
233
|
},
|
|
234
234
|
backLabel: r("breadcrumb"),
|
|
235
|
-
actions:
|
|
236
|
-
selectedTabId:
|
|
237
|
-
onTabChange:
|
|
235
|
+
actions: K,
|
|
236
|
+
selectedTabId: Y,
|
|
237
|
+
onTabChange: q,
|
|
238
238
|
employees: {
|
|
239
|
-
data:
|
|
240
|
-
searchValue:
|
|
241
|
-
onSearchChange:
|
|
239
|
+
data: V,
|
|
240
|
+
searchValue: P,
|
|
241
|
+
onSearchChange: L,
|
|
242
242
|
onSearchClear: () => {
|
|
243
|
-
|
|
243
|
+
L("");
|
|
244
244
|
},
|
|
245
|
-
...
|
|
245
|
+
...c ? { itemMenu: Q } : {}
|
|
246
246
|
},
|
|
247
|
-
onAddEmployee:
|
|
247
|
+
onAddEmployee: c ? S : void 0,
|
|
248
248
|
removeDialog: {
|
|
249
|
-
isOpen:
|
|
250
|
-
employeeName:
|
|
249
|
+
isOpen: d !== null,
|
|
250
|
+
employeeName: d?.name ?? "",
|
|
251
251
|
onConfirm: () => {
|
|
252
|
-
|
|
252
|
+
d && W(d.uuid, d.name);
|
|
253
253
|
},
|
|
254
254
|
onClose: () => {
|
|
255
|
-
|
|
255
|
+
C(null);
|
|
256
256
|
},
|
|
257
|
-
isPending:
|
|
257
|
+
isPending: I
|
|
258
258
|
},
|
|
259
|
-
successAlert:
|
|
259
|
+
successAlert: $,
|
|
260
260
|
onDismissAlert: () => {
|
|
261
|
-
|
|
262
|
-
}
|
|
261
|
+
g(void 0);
|
|
262
|
+
},
|
|
263
|
+
className: s
|
|
263
264
|
}
|
|
264
265
|
),
|
|
265
|
-
/* @__PURE__ */
|
|
266
|
-
|
|
266
|
+
/* @__PURE__ */ i(
|
|
267
|
+
se,
|
|
267
268
|
{
|
|
268
269
|
isOpen: m !== null,
|
|
269
270
|
onClose: () => {
|
|
270
|
-
|
|
271
|
+
N(null), u(null);
|
|
271
272
|
},
|
|
272
273
|
employeeName: m?.employeeName ?? "",
|
|
273
274
|
currentBalance: m?.currentBalance ?? 0,
|
|
274
|
-
onConfirm:
|
|
275
|
-
isPending:
|
|
276
|
-
error:
|
|
275
|
+
onConfirm: G,
|
|
276
|
+
isPending: F,
|
|
277
|
+
error: E
|
|
277
278
|
}
|
|
278
279
|
)
|
|
279
280
|
] });
|
|
280
281
|
}
|
|
281
282
|
export {
|
|
282
|
-
|
|
283
|
+
ze as TimeOffPolicyDetail
|
|
283
284
|
};
|
|
284
285
|
//# sourceMappingURL=TimeOffPolicyDetail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeOffPolicyDetail.js","sources":["../../../../src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useTimeOffPoliciesGetSuspense } from '@gusto/embedded-api/react-query/timeOffPoliciesGet'\nimport { useTimeOffPoliciesRemoveEmployeesMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesRemoveEmployees'\nimport { useTimeOffPoliciesUpdateBalanceMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesUpdateBalance'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport type { TimeOffPolicy } from '@gusto/embedded-api/models/components/timeoffpolicy'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { TimeOffPolicyDetailPresentation } from './TimeOffPolicyDetailPresentation'\nimport { EditEmployeeBalanceModal } from './EditEmployeeBalanceModal'\nimport type {\n TimeOffPolicyDetailEmployee,\n AccrualMethodKey,\n PolicyDetails,\n PolicySettingsDisplay,\n PolicyTypeKey,\n} from './TimeOffPolicyDetailTypes'\nimport { API_QUERY_NAMESPACE } from '@/contexts/ApiProvider/apiVersion'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { BaseComponent, type BaseComponentInterface } from '@/components/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { isEditableTimeOffPolicyType } from '@/components/TimeOff/TimeOffFlow/timeOffPolicyTypes'\nimport EditIcon from '@/assets/icons/edit-02.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\n/**\n * Props for {@link TimeOffPolicyDetail}.\n *\n * @public\n */\nexport interface TimeOffPolicyDetailProps extends BaseComponentInterface<'Company.TimeOff.TimeOffPolicyDetails'> {\n /** UUID of the time-off policy to display. */\n policyId: string\n}\n\n/**\n * Detail view for a sick or vacation time-off policy.\n *\n * @remarks\n * Loads the policy and its enrolled employees, then renders the tabbed detail view with\n * actions for editing the policy, adding or removing employees, and adjusting individual\n * balances. Editable actions are only shown for sick and vacation policies.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `timeOff/addEmployeesToPolicy` | The add-employees action was clicked. | `{ policyId: string }` |\n * | `timeOff/backToList` | The back navigation was clicked. | — |\n * | `timeOff/changeSettings` | The change-settings action was clicked. | `{ policyId: string }` |\n * | `timeOff/editPolicy` | The edit-policy action was clicked. | `{ policyId: string }` |\n *\n * @param props - The policy id and standard base component props (`onEvent`, `dictionary`, etc.).\n * @returns The rendered detail view.\n * @public\n */\nexport function TimeOffPolicyDetail(props: TimeOffPolicyDetailProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nconst API_ACCRUAL_METHOD_MAP: Record<string, AccrualMethodKey> = {\n unlimited: 'unlimited',\n per_pay_period: 'perPayPeriod',\n per_calendar_year: 'perCalendarYear',\n per_anniversary_year: 'perAnniversaryYear',\n per_hour_worked: 'perHourWorked',\n per_hour_worked_no_overtime: 'perHourWorkedNoOvertime',\n per_hour_paid: 'perHourPaid',\n per_hour_paid_no_overtime: 'perHourPaidNoOvertime',\n}\n\nfunction mapAccrualMethod(apiMethod: string): AccrualMethodKey {\n return API_ACCRUAL_METHOD_MAP[apiMethod] ?? 'unlimited'\n}\n\nfunction mapPolicyType(apiType: string): PolicyTypeKey {\n if (apiType === 'sick') return 'sick'\n return 'vacation'\n}\n\nfunction formatResetDate(\n resetDate: string | null | undefined,\n locale?: string,\n): string | undefined {\n if (!resetDate) return undefined\n const [month, day] = resetDate.split('-')\n if (!month || !day) return resetDate\n const date = new Date(2000, parseInt(month, 10) - 1, parseInt(day, 10))\n return date.toLocaleDateString(locale, { month: 'long', day: 'numeric' })\n}\n\nfunction derivePolicyDetails(policy: TimeOffPolicy, locale?: string): PolicyDetails {\n const policyType = mapPolicyType(policy.policyType)\n const accrualMethod = mapAccrualMethod(policy.accrualMethod)\n\n if (accrualMethod === 'unlimited') {\n return { policyType, accrualMethod }\n }\n\n return {\n policyType,\n accrualMethod,\n accrualRate: policy.accrualRate ? Number(policy.accrualRate) : 0,\n accrualRateUnit: policy.accrualRateUnit ? Number(policy.accrualRateUnit) : undefined,\n resetDate: formatResetDate(policy.policyResetDate, locale),\n }\n}\n\nfunction derivePolicySettings(policy: TimeOffPolicy): PolicySettingsDisplay | undefined {\n if (policy.accrualMethod === 'unlimited') return undefined\n\n return {\n maxAccrualHoursPerYear:\n policy.maxAccrualHoursPerYear != null ? Number(policy.maxAccrualHoursPerYear) : null,\n maxHours: policy.maxHours != null ? Number(policy.maxHours) : null,\n carryoverLimitHours:\n policy.carryoverLimitHours != null ? Number(policy.carryoverLimitHours) : null,\n accrualWaitingPeriodDays: policy.accrualWaitingPeriodDays ?? null,\n paidOutOnTermination: policy.paidOutOnTermination ?? false,\n }\n}\n\nfunction deriveEmployees(\n policy: TimeOffPolicy,\n allEmployees: Array<{\n uuid: string\n firstName?: string | null\n lastName?: string | null\n jobs?: Array<{ primary?: boolean; title?: string | null }> | null\n }>,\n): TimeOffPolicyDetailEmployee[] {\n const employeeMap = new Map(allEmployees.map(e => [e.uuid, e]))\n return policy.employees.map(policyEmp => {\n const emp = employeeMap.get(policyEmp.uuid ?? '')\n const primaryJob = emp?.jobs?.find(job => job.primary)\n return {\n uuid: policyEmp.uuid ?? '',\n firstName: emp?.firstName ?? null,\n lastName: emp?.lastName ?? null,\n jobTitle: primaryJob?.title ?? emp?.jobs?.[0]?.title ?? null,\n balance: policyEmp.balance != null ? Number(policyEmp.balance) : null,\n }\n })\n}\n\ninterface EditBalanceState {\n employeeUuid: string\n employeeName: string\n currentBalance: number\n}\n\nfunction Root({ policyId }: TimeOffPolicyDetailProps) {\n useI18n('Company.TimeOff.TimeOffPolicyDetails')\n const { t } = useTranslation('Company.TimeOff.TimeOffPolicyDetails')\n const { onEvent, baseSubmitHandler, error, setError } = useBase()\n const { Button } = useComponentContext()\n const { locale } = useLocale()\n const queryClient = useQueryClient()\n\n const { data: policyResponse } = useTimeOffPoliciesGetSuspense({\n timeOffPolicyUuid: policyId,\n })\n\n const { mutateAsync: removeEmployees, isPending: isRemovePending } =\n useTimeOffPoliciesRemoveEmployeesMutation()\n const { mutateAsync: updateBalance, isPending: isBalancePending } =\n useTimeOffPoliciesUpdateBalanceMutation()\n\n const policy = policyResponse.timeOffPolicy\n if (!policy) throw new Error('Unexpected response: missing timeOffPolicy')\n\n const isEditable = isEditableTimeOffPolicyType(policy.policyType)\n\n const { data: employeesData } = useEmployeesListSuspense({\n companyId: policy.companyUuid,\n terminated: false,\n })\n\n const [selectedTabId, setSelectedTabId] = useState('details')\n const [searchValue, setSearchValue] = useState('')\n const [successAlert, setSuccessAlert] = useState<string | undefined>()\n const [removeTarget, setRemoveTarget] = useState<{\n uuid: string\n name: string\n } | null>(null)\n const [editBalanceState, setEditBalanceState] = useState<EditBalanceState | null>(null)\n\n const policyDetails = useMemo(() => derivePolicyDetails(policy, locale), [policy, locale])\n const policySettings = useMemo(() => derivePolicySettings(policy), [policy])\n const employees = useMemo(\n () => deriveEmployees(policy, employeesData.showEmployees ?? []),\n [policy, employeesData.showEmployees],\n )\n\n const filteredEmployees = useMemo(() => {\n if (!searchValue.trim()) return employees\n const query = searchValue.toLowerCase()\n return employees.filter(emp => {\n const fullName = `${emp.firstName ?? ''} ${emp.lastName ?? ''}`.toLowerCase()\n return fullName.includes(query)\n })\n }, [employees, searchValue])\n\n const invalidatePolicy = useCallback(() => {\n void queryClient.invalidateQueries({\n queryKey: [API_QUERY_NAMESPACE, 'timeOffPolicies', 'get'],\n })\n }, [queryClient])\n\n const handleRemoveEmployee = useCallback(\n async (employeeUuid: string, employeeName: string) => {\n setRemoveTarget(null)\n await baseSubmitHandler({}, async () => {\n await removeEmployees({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: { employees: [{ uuid: employeeUuid }] },\n },\n })\n invalidatePolicy()\n setSuccessAlert(t('flash.employeeRemoved', { name: employeeName }))\n })\n },\n [baseSubmitHandler, removeEmployees, policyId, invalidatePolicy, t],\n )\n\n const handleUpdateBalance = useCallback(\n async (newBalance: number) => {\n if (!editBalanceState) return\n await baseSubmitHandler({}, async () => {\n try {\n await updateBalance({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: {\n employees: [{ uuid: editBalanceState.employeeUuid, balance: String(newBalance) }],\n },\n },\n })\n } catch (err) {\n if (err instanceof UnprocessableEntityError) {\n const maxHours = policy.maxHours != null ? Number(policy.maxHours) : null\n const hasLimitViolation = err.errors.some(\n e =>\n e.message === 'LIMIT_VIOLATION_MAX_HOURS' ||\n e.category === 'invalid_attribute_value',\n )\n if (hasLimitViolation && maxHours != null) {\n throw new SDKInternalError(\n t('editBalanceModal.errors.balanceExceedsMax', { max: maxHours }),\n 'api_error',\n )\n }\n const messages = err.errors.map(e => e.message).filter(Boolean)\n throw new SDKInternalError(\n messages.join('. ') || t('editBalanceModal.errors.updateFailed'),\n 'api_error',\n )\n }\n throw err\n }\n invalidatePolicy()\n setEditBalanceState(null)\n setSuccessAlert(t('flash.balanceUpdated', { name: editBalanceState.employeeName }))\n })\n },\n [\n baseSubmitHandler,\n updateBalance,\n policyId,\n editBalanceState,\n invalidatePolicy,\n t,\n policy.maxHours,\n ],\n )\n\n const handleAddEmployees = useCallback(() => {\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_TO_POLICY, { policyId })\n }, [onEvent, policyId])\n\n const actions = useMemo(() => {\n if (!isEditable) return undefined\n return [\n <Button\n key=\"add\"\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={handleAddEmployees}\n >\n {t('addEmployeeCta')}\n </Button>,\n <Button\n key=\"edit\"\n variant=\"secondary\"\n icon={<EditIcon aria-hidden />}\n onClick={() => {\n onEvent(componentEvents.TIME_OFF_EDIT_POLICY, { policyId })\n }}\n >\n {t('editPolicyCta')}\n </Button>,\n ]\n }, [Button, onEvent, policyId, t, isEditable, handleAddEmployees])\n\n const isUnlimited = policy.accrualMethod === 'unlimited'\n\n const itemMenu = useCallback(\n (employee: TimeOffPolicyDetailEmployee) => {\n const employeeName = `${employee.firstName ?? ''} ${employee.lastName ?? ''}`.trim()\n const items = [\n ...(!isUnlimited\n ? [\n {\n label: t('employeeTable.editBalance'),\n icon: <EditIcon aria-hidden />,\n onClick: () => {\n setError(null)\n setEditBalanceState({\n employeeUuid: employee.uuid,\n employeeName,\n currentBalance: employee.balance ?? 0,\n })\n },\n },\n ]\n : []),\n {\n label: t('employeeTable.removeEmployee'),\n icon: <TrashCanSvg aria-hidden />,\n onClick: () => {\n setRemoveTarget({ uuid: employee.uuid, name: employeeName })\n },\n },\n ]\n return (\n <HamburgerMenu\n items={items}\n triggerLabel={`${t('employeeTable.actions')} ${employeeName}`}\n />\n )\n },\n [t, isUnlimited, setError],\n )\n\n const discriminatedProps =\n policyDetails.accrualMethod === 'unlimited'\n ? { policyDetails }\n : {\n policyDetails,\n policySettings: policySettings!,\n onChangeSettings: isEditable\n ? () => {\n onEvent(componentEvents.TIME_OFF_CHANGE_SETTINGS, { policyId })\n }\n : undefined,\n }\n\n return (\n <>\n <TimeOffPolicyDetailPresentation\n {...discriminatedProps}\n title={policy.name}\n subtitle={t(`subtitle.${policyDetails.policyType}`)}\n onBack={() => {\n onEvent(componentEvents.TIME_OFF_BACK_TO_LIST)\n }}\n backLabel={t('breadcrumb')}\n actions={actions}\n selectedTabId={selectedTabId}\n onTabChange={setSelectedTabId}\n employees={{\n data: filteredEmployees,\n searchValue,\n onSearchChange: setSearchValue,\n onSearchClear: () => {\n setSearchValue('')\n },\n ...(isEditable ? { itemMenu } : {}),\n }}\n onAddEmployee={isEditable ? handleAddEmployees : undefined}\n removeDialog={{\n isOpen: removeTarget !== null,\n employeeName: removeTarget?.name ?? '',\n onConfirm: () => {\n if (removeTarget) {\n void handleRemoveEmployee(removeTarget.uuid, removeTarget.name)\n }\n },\n onClose: () => {\n setRemoveTarget(null)\n },\n isPending: isRemovePending,\n }}\n successAlert={successAlert}\n onDismissAlert={() => {\n setSuccessAlert(undefined)\n }}\n />\n\n <EditEmployeeBalanceModal\n isOpen={editBalanceState !== null}\n onClose={() => {\n setEditBalanceState(null)\n setError(null)\n }}\n employeeName={editBalanceState?.employeeName ?? ''}\n currentBalance={editBalanceState?.currentBalance ?? 0}\n onConfirm={handleUpdateBalance}\n isPending={isBalancePending}\n error={error}\n />\n </>\n )\n}\n"],"names":["TimeOffPolicyDetail","props","jsx","BaseComponent","Root","API_ACCRUAL_METHOD_MAP","mapAccrualMethod","apiMethod","mapPolicyType","apiType","formatResetDate","resetDate","locale","month","day","derivePolicyDetails","policy","policyType","accrualMethod","derivePolicySettings","deriveEmployees","allEmployees","employeeMap","e","policyEmp","emp","primaryJob","job","policyId","useI18n","t","useTranslation","onEvent","baseSubmitHandler","error","setError","useBase","Button","useComponentContext","useLocale","queryClient","useQueryClient","policyResponse","useTimeOffPoliciesGetSuspense","removeEmployees","isRemovePending","useTimeOffPoliciesRemoveEmployeesMutation","updateBalance","isBalancePending","useTimeOffPoliciesUpdateBalanceMutation","isEditable","isEditableTimeOffPolicyType","employeesData","useEmployeesListSuspense","selectedTabId","setSelectedTabId","useState","searchValue","setSearchValue","successAlert","setSuccessAlert","removeTarget","setRemoveTarget","editBalanceState","setEditBalanceState","policyDetails","useMemo","policySettings","employees","filteredEmployees","query","invalidatePolicy","useCallback","API_QUERY_NAMESPACE","handleRemoveEmployee","employeeUuid","employeeName","handleUpdateBalance","newBalance","err","UnprocessableEntityError","maxHours","SDKInternalError","messages","handleAddEmployees","componentEvents","actions","PlusCircleIcon","EditIcon","isUnlimited","itemMenu","employee","items","TrashCanSvg","HamburgerMenu","discriminatedProps","jsxs","Fragment","TimeOffPolicyDetailPresentation","EditEmployeeBalanceModal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimeOffPolicyDetail.js","sources":["../../../../src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useTimeOffPoliciesGetSuspense } from '@gusto/embedded-api/react-query/timeOffPoliciesGet'\nimport { useTimeOffPoliciesRemoveEmployeesMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesRemoveEmployees'\nimport { useTimeOffPoliciesUpdateBalanceMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesUpdateBalance'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport type { TimeOffPolicy } from '@gusto/embedded-api/models/components/timeoffpolicy'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { TimeOffPolicyDetailPresentation } from './TimeOffPolicyDetailPresentation'\nimport { EditEmployeeBalanceModal } from './EditEmployeeBalanceModal'\nimport type {\n TimeOffPolicyDetailEmployee,\n AccrualMethodKey,\n PolicyDetails,\n PolicySettingsDisplay,\n PolicyTypeKey,\n} from './TimeOffPolicyDetailTypes'\nimport { API_QUERY_NAMESPACE } from '@/contexts/ApiProvider/apiVersion'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { BaseComponent, type BaseComponentInterface } from '@/components/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { isEditableTimeOffPolicyType } from '@/components/TimeOff/TimeOffFlow/timeOffPolicyTypes'\nimport EditIcon from '@/assets/icons/edit-02.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\n/**\n * Props for {@link TimeOffPolicyDetail}.\n *\n * @public\n */\nexport interface TimeOffPolicyDetailProps extends BaseComponentInterface<'Company.TimeOff.TimeOffPolicyDetails'> {\n /** UUID of the time-off policy to display. */\n policyId: string\n}\n\n/**\n * Detail view for a sick or vacation time-off policy.\n *\n * @remarks\n * Loads the policy and its enrolled employees, then renders the tabbed detail view with\n * actions for editing the policy, adding or removing employees, and adjusting individual\n * balances. Editable actions are only shown for sick and vacation policies.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `timeOff/addEmployeesToPolicy` | The add-employees action was clicked. | `{ policyId: string }` |\n * | `timeOff/backToList` | The back navigation was clicked. | — |\n * | `timeOff/changeSettings` | The change-settings action was clicked. | `{ policyId: string }` |\n * | `timeOff/editPolicy` | The edit-policy action was clicked. | `{ policyId: string }` |\n *\n * @param props - The policy id and standard base component props (`onEvent`, `dictionary`, etc.).\n * @returns The rendered detail view.\n * @public\n */\nexport function TimeOffPolicyDetail(props: TimeOffPolicyDetailProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nconst API_ACCRUAL_METHOD_MAP: Record<string, AccrualMethodKey> = {\n unlimited: 'unlimited',\n per_pay_period: 'perPayPeriod',\n per_calendar_year: 'perCalendarYear',\n per_anniversary_year: 'perAnniversaryYear',\n per_hour_worked: 'perHourWorked',\n per_hour_worked_no_overtime: 'perHourWorkedNoOvertime',\n per_hour_paid: 'perHourPaid',\n per_hour_paid_no_overtime: 'perHourPaidNoOvertime',\n}\n\nfunction mapAccrualMethod(apiMethod: string): AccrualMethodKey {\n return API_ACCRUAL_METHOD_MAP[apiMethod] ?? 'unlimited'\n}\n\nfunction mapPolicyType(apiType: string): PolicyTypeKey {\n if (apiType === 'sick') return 'sick'\n return 'vacation'\n}\n\nfunction formatResetDate(\n resetDate: string | null | undefined,\n locale?: string,\n): string | undefined {\n if (!resetDate) return undefined\n const [month, day] = resetDate.split('-')\n if (!month || !day) return resetDate\n const date = new Date(2000, parseInt(month, 10) - 1, parseInt(day, 10))\n return date.toLocaleDateString(locale, { month: 'long', day: 'numeric' })\n}\n\nfunction derivePolicyDetails(policy: TimeOffPolicy, locale?: string): PolicyDetails {\n const policyType = mapPolicyType(policy.policyType)\n const accrualMethod = mapAccrualMethod(policy.accrualMethod)\n\n if (accrualMethod === 'unlimited') {\n return { policyType, accrualMethod }\n }\n\n return {\n policyType,\n accrualMethod,\n accrualRate: policy.accrualRate ? Number(policy.accrualRate) : 0,\n accrualRateUnit: policy.accrualRateUnit ? Number(policy.accrualRateUnit) : undefined,\n resetDate: formatResetDate(policy.policyResetDate, locale),\n }\n}\n\nfunction derivePolicySettings(policy: TimeOffPolicy): PolicySettingsDisplay | undefined {\n if (policy.accrualMethod === 'unlimited') return undefined\n\n return {\n maxAccrualHoursPerYear:\n policy.maxAccrualHoursPerYear != null ? Number(policy.maxAccrualHoursPerYear) : null,\n maxHours: policy.maxHours != null ? Number(policy.maxHours) : null,\n carryoverLimitHours:\n policy.carryoverLimitHours != null ? Number(policy.carryoverLimitHours) : null,\n accrualWaitingPeriodDays: policy.accrualWaitingPeriodDays ?? null,\n paidOutOnTermination: policy.paidOutOnTermination ?? false,\n }\n}\n\nfunction deriveEmployees(\n policy: TimeOffPolicy,\n allEmployees: Array<{\n uuid: string\n firstName?: string | null\n lastName?: string | null\n jobs?: Array<{ primary?: boolean; title?: string | null }> | null\n }>,\n): TimeOffPolicyDetailEmployee[] {\n const employeeMap = new Map(allEmployees.map(e => [e.uuid, e]))\n return policy.employees.map(policyEmp => {\n const emp = employeeMap.get(policyEmp.uuid ?? '')\n const primaryJob = emp?.jobs?.find(job => job.primary)\n return {\n uuid: policyEmp.uuid ?? '',\n firstName: emp?.firstName ?? null,\n lastName: emp?.lastName ?? null,\n jobTitle: primaryJob?.title ?? emp?.jobs?.[0]?.title ?? null,\n balance: policyEmp.balance != null ? Number(policyEmp.balance) : null,\n }\n })\n}\n\ninterface EditBalanceState {\n employeeUuid: string\n employeeName: string\n currentBalance: number\n}\n\nfunction Root({ policyId, className }: TimeOffPolicyDetailProps) {\n useI18n('Company.TimeOff.TimeOffPolicyDetails')\n const { t } = useTranslation('Company.TimeOff.TimeOffPolicyDetails')\n const { onEvent, baseSubmitHandler, error, setError } = useBase()\n const { Button } = useComponentContext()\n const { locale } = useLocale()\n const queryClient = useQueryClient()\n\n const { data: policyResponse } = useTimeOffPoliciesGetSuspense({\n timeOffPolicyUuid: policyId,\n })\n\n const { mutateAsync: removeEmployees, isPending: isRemovePending } =\n useTimeOffPoliciesRemoveEmployeesMutation()\n const { mutateAsync: updateBalance, isPending: isBalancePending } =\n useTimeOffPoliciesUpdateBalanceMutation()\n\n const policy = policyResponse.timeOffPolicy\n if (!policy) throw new Error('Unexpected response: missing timeOffPolicy')\n\n const isEditable = isEditableTimeOffPolicyType(policy.policyType)\n\n const { data: employeesData } = useEmployeesListSuspense({\n companyId: policy.companyUuid,\n terminated: false,\n })\n\n const [selectedTabId, setSelectedTabId] = useState('details')\n const [searchValue, setSearchValue] = useState('')\n const [successAlert, setSuccessAlert] = useState<string | undefined>()\n const [removeTarget, setRemoveTarget] = useState<{\n uuid: string\n name: string\n } | null>(null)\n const [editBalanceState, setEditBalanceState] = useState<EditBalanceState | null>(null)\n\n const policyDetails = useMemo(() => derivePolicyDetails(policy, locale), [policy, locale])\n const policySettings = useMemo(() => derivePolicySettings(policy), [policy])\n const employees = useMemo(\n () => deriveEmployees(policy, employeesData.showEmployees ?? []),\n [policy, employeesData.showEmployees],\n )\n\n const filteredEmployees = useMemo(() => {\n if (!searchValue.trim()) return employees\n const query = searchValue.toLowerCase()\n return employees.filter(emp => {\n const fullName = `${emp.firstName ?? ''} ${emp.lastName ?? ''}`.toLowerCase()\n return fullName.includes(query)\n })\n }, [employees, searchValue])\n\n const invalidatePolicy = useCallback(() => {\n void queryClient.invalidateQueries({\n queryKey: [API_QUERY_NAMESPACE, 'timeOffPolicies', 'get'],\n })\n }, [queryClient])\n\n const handleRemoveEmployee = useCallback(\n async (employeeUuid: string, employeeName: string) => {\n setRemoveTarget(null)\n await baseSubmitHandler({}, async () => {\n await removeEmployees({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: { employees: [{ uuid: employeeUuid }] },\n },\n })\n invalidatePolicy()\n setSuccessAlert(t('flash.employeeRemoved', { name: employeeName }))\n })\n },\n [baseSubmitHandler, removeEmployees, policyId, invalidatePolicy, t],\n )\n\n const handleUpdateBalance = useCallback(\n async (newBalance: number) => {\n if (!editBalanceState) return\n await baseSubmitHandler({}, async () => {\n try {\n await updateBalance({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: {\n employees: [{ uuid: editBalanceState.employeeUuid, balance: String(newBalance) }],\n },\n },\n })\n } catch (err) {\n if (err instanceof UnprocessableEntityError) {\n const maxHours = policy.maxHours != null ? Number(policy.maxHours) : null\n const hasLimitViolation = err.errors.some(\n e =>\n e.message === 'LIMIT_VIOLATION_MAX_HOURS' ||\n e.category === 'invalid_attribute_value',\n )\n if (hasLimitViolation && maxHours != null) {\n throw new SDKInternalError(\n t('editBalanceModal.errors.balanceExceedsMax', { max: maxHours }),\n 'api_error',\n )\n }\n const messages = err.errors.map(e => e.message).filter(Boolean)\n throw new SDKInternalError(\n messages.join('. ') || t('editBalanceModal.errors.updateFailed'),\n 'api_error',\n )\n }\n throw err\n }\n invalidatePolicy()\n setEditBalanceState(null)\n setSuccessAlert(t('flash.balanceUpdated', { name: editBalanceState.employeeName }))\n })\n },\n [\n baseSubmitHandler,\n updateBalance,\n policyId,\n editBalanceState,\n invalidatePolicy,\n t,\n policy.maxHours,\n ],\n )\n\n const handleAddEmployees = useCallback(() => {\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_TO_POLICY, { policyId })\n }, [onEvent, policyId])\n\n const actions = useMemo(() => {\n if (!isEditable) return undefined\n return [\n <Button\n key=\"add\"\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={handleAddEmployees}\n >\n {t('addEmployeeCta')}\n </Button>,\n <Button\n key=\"edit\"\n variant=\"secondary\"\n icon={<EditIcon aria-hidden />}\n onClick={() => {\n onEvent(componentEvents.TIME_OFF_EDIT_POLICY, { policyId })\n }}\n >\n {t('editPolicyCta')}\n </Button>,\n ]\n }, [Button, onEvent, policyId, t, isEditable, handleAddEmployees])\n\n const isUnlimited = policy.accrualMethod === 'unlimited'\n\n const itemMenu = useCallback(\n (employee: TimeOffPolicyDetailEmployee) => {\n const employeeName = `${employee.firstName ?? ''} ${employee.lastName ?? ''}`.trim()\n const items = [\n ...(!isUnlimited\n ? [\n {\n label: t('employeeTable.editBalance'),\n icon: <EditIcon aria-hidden />,\n onClick: () => {\n setError(null)\n setEditBalanceState({\n employeeUuid: employee.uuid,\n employeeName,\n currentBalance: employee.balance ?? 0,\n })\n },\n },\n ]\n : []),\n {\n label: t('employeeTable.removeEmployee'),\n icon: <TrashCanSvg aria-hidden />,\n onClick: () => {\n setRemoveTarget({ uuid: employee.uuid, name: employeeName })\n },\n },\n ]\n return (\n <HamburgerMenu\n items={items}\n triggerLabel={`${t('employeeTable.actions')} ${employeeName}`}\n />\n )\n },\n [t, isUnlimited, setError],\n )\n\n const discriminatedProps =\n policyDetails.accrualMethod === 'unlimited'\n ? { policyDetails }\n : {\n policyDetails,\n policySettings: policySettings!,\n onChangeSettings: isEditable\n ? () => {\n onEvent(componentEvents.TIME_OFF_CHANGE_SETTINGS, { policyId })\n }\n : undefined,\n }\n\n return (\n <>\n <TimeOffPolicyDetailPresentation\n {...discriminatedProps}\n title={policy.name}\n subtitle={t(`subtitle.${policyDetails.policyType}`)}\n onBack={() => {\n onEvent(componentEvents.TIME_OFF_BACK_TO_LIST)\n }}\n backLabel={t('breadcrumb')}\n actions={actions}\n selectedTabId={selectedTabId}\n onTabChange={setSelectedTabId}\n employees={{\n data: filteredEmployees,\n searchValue,\n onSearchChange: setSearchValue,\n onSearchClear: () => {\n setSearchValue('')\n },\n ...(isEditable ? { itemMenu } : {}),\n }}\n onAddEmployee={isEditable ? handleAddEmployees : undefined}\n removeDialog={{\n isOpen: removeTarget !== null,\n employeeName: removeTarget?.name ?? '',\n onConfirm: () => {\n if (removeTarget) {\n void handleRemoveEmployee(removeTarget.uuid, removeTarget.name)\n }\n },\n onClose: () => {\n setRemoveTarget(null)\n },\n isPending: isRemovePending,\n }}\n successAlert={successAlert}\n onDismissAlert={() => {\n setSuccessAlert(undefined)\n }}\n className={className}\n />\n\n <EditEmployeeBalanceModal\n isOpen={editBalanceState !== null}\n onClose={() => {\n setEditBalanceState(null)\n setError(null)\n }}\n employeeName={editBalanceState?.employeeName ?? ''}\n currentBalance={editBalanceState?.currentBalance ?? 0}\n onConfirm={handleUpdateBalance}\n isPending={isBalancePending}\n error={error}\n />\n </>\n )\n}\n"],"names":["TimeOffPolicyDetail","props","jsx","BaseComponent","Root","API_ACCRUAL_METHOD_MAP","mapAccrualMethod","apiMethod","mapPolicyType","apiType","formatResetDate","resetDate","locale","month","day","derivePolicyDetails","policy","policyType","accrualMethod","derivePolicySettings","deriveEmployees","allEmployees","employeeMap","e","policyEmp","emp","primaryJob","job","policyId","className","useI18n","t","useTranslation","onEvent","baseSubmitHandler","error","setError","useBase","Button","useComponentContext","useLocale","queryClient","useQueryClient","policyResponse","useTimeOffPoliciesGetSuspense","removeEmployees","isRemovePending","useTimeOffPoliciesRemoveEmployeesMutation","updateBalance","isBalancePending","useTimeOffPoliciesUpdateBalanceMutation","isEditable","isEditableTimeOffPolicyType","employeesData","useEmployeesListSuspense","selectedTabId","setSelectedTabId","useState","searchValue","setSearchValue","successAlert","setSuccessAlert","removeTarget","setRemoveTarget","editBalanceState","setEditBalanceState","policyDetails","useMemo","policySettings","employees","filteredEmployees","query","invalidatePolicy","useCallback","API_QUERY_NAMESPACE","handleRemoveEmployee","employeeUuid","employeeName","handleUpdateBalance","newBalance","err","UnprocessableEntityError","maxHours","SDKInternalError","messages","handleAddEmployees","componentEvents","actions","PlusCircleIcon","EditIcon","isUnlimited","itemMenu","employee","items","TrashCanSvg","HamburgerMenu","discriminatedProps","jsxs","Fragment","TimeOffPolicyDetailPresentation","EditEmployeeBalanceModal"],"mappings":"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"}
|