@gusto/embedded-react-sdk 0.57.3 → 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +88 -0
- package/dist/components/Common/DataView/DataCards/DataCards.js +98 -66
- package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
- package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js +11 -9
- package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js.map +1 -1
- package/dist/components/Common/DataView/DataTable/DataTable.js +86 -75
- package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
- package/dist/components/Common/DataView/DataView.js.map +1 -1
- package/dist/components/Common/DataView/getSortControls.js +22 -0
- package/dist/components/Common/DataView/getSortControls.js.map +1 -0
- package/dist/components/Common/DataView/useDataView.js +30 -24
- package/dist/components/Common/DataView/useDataView.js.map +1 -1
- package/dist/components/Common/UI/Table/Table.js +65 -25
- package/dist/components/Common/UI/Table/Table.js.map +1 -1
- package/dist/components/Common/UI/Table/Table.module.scss.js +8 -4
- package/dist/components/Common/UI/Table/Table.module.scss.js.map +1 -1
- package/dist/components/Common/UI/Table/TableTypes.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +5 -6
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +6 -7
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +3 -4
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +30 -45
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js +11 -12
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +78 -83
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -4
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js +45 -54
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js +17 -22
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +1 -0
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +122 -113
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js +63 -54
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js +39 -48
- package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js.map +1 -1
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js +76 -69
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +27 -29
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +14 -12
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
- package/dist/components/Contractor/shared/hourlyRate.js +14 -0
- package/dist/components/Contractor/shared/hourlyRate.js.map +1 -0
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +63 -63
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js +65 -74
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +16 -16
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +2 -3
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +84 -82
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js +8 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js.map +1 -0
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +91 -88
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +16 -16
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +146 -134
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js +14 -12
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +34 -33
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +49 -48
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +0 -4
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +51 -38
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +121 -102
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +79 -74
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +92 -83
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +23 -27
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +82 -75
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js +416 -0
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js.map +1 -0
- package/dist/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js → RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js} +1 -1
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js +97 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js +106 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js.map +1 -0
- package/dist/components/Payroll/{TransitionCreation/TransitionCreationPresentation.module.scss.js → TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js} +1 -1
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js +10 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js.map +1 -0
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +86 -64
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +126 -77
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js +8 -0
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/index.js +16 -20
- package/dist/components/Payroll/index.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +2 -3
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +11 -14
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +18 -17
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js +31 -0
- package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js.map +1 -0
- package/dist/contexts/FeaturesProvider/FeaturesProvider.js +14 -0
- package/dist/contexts/FeaturesProvider/FeaturesProvider.js.map +1 -0
- package/dist/contexts/FeaturesProvider/useFeature.js +7 -0
- package/dist/contexts/FeaturesProvider/useFeature.js.map +1 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +32 -30
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
- package/dist/i18n/I18n.js +2 -3
- package/dist/i18n/I18n.js.map +1 -1
- package/dist/i18n/en/Contractor.Profile.json.js +1 -1
- package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +29 -23
- package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollLanding.json.js +1 -1
- package/dist/i18n/en/{Payroll.UNSTABLE_PayrollEditEmployee.json.js → Payroll.RropPayrollEditEmployee.json.js} +42 -38
- package/dist/i18n/en/Payroll.RropPayrollEditEmployee.json.js.map +1 -0
- package/dist/i18n/en/Payroll.TransitionConfiguration.json.js +28 -0
- package/dist/i18n/en/Payroll.TransitionConfiguration.json.js.map +1 -0
- package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js +16 -12
- package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js.map +1 -1
- package/dist/i18n/en/common.json.js +1 -1
- package/dist/package.json.js +1 -1
- package/dist/partner-hook-utils/form/composeSubmitHandler.js +55 -48
- package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +31 -29
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
- package/dist/shared/constants.js +2 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/src/components/Common/DataView/DataCards/DataCards.d.ts +3 -1
- package/dist/src/components/Common/DataView/DataTable/DataTable.d.ts +3 -1
- package/dist/src/components/Common/DataView/DataView.d.ts +2 -0
- package/dist/src/components/Common/DataView/getSortControls.d.ts +24 -0
- package/dist/src/components/Common/DataView/useDataView.d.ts +22 -1
- package/dist/src/components/Common/UI/Table/TableTypes.d.ts +71 -2
- package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +1 -9
- package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +0 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +3 -14
- package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +2 -2
- package/dist/src/components/Contractor/ContractorList/shared/index.d.ts +1 -1
- package/dist/src/components/Contractor/ContractorList/shared/useContractorList.d.ts +38 -0
- package/dist/src/components/Contractor/shared/hourlyRate.d.ts +23 -0
- package/dist/src/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.d.ts +9 -0
- package/dist/src/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +2 -0
- package/dist/src/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +8 -6
- package/dist/src/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.d.ts +0 -8
- package/dist/src/components/Payroll/PayrollFlow/PayrollFlow.d.ts +5 -3
- package/dist/src/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +2 -3
- package/dist/src/components/Payroll/PayrollFlow/payrollStateMachine.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollLanding/PayrollLanding.d.ts +18 -5
- package/dist/src/components/Payroll/PayrollList/PayrollList.d.ts +11 -5
- package/dist/src/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts → RropPayrollEditEmployee/RropPayrollEditEmployee.d.ts} +9 -5
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfiguration.d.ts +55 -0
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.d.ts +9 -0
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.d.ts +52 -0
- package/dist/src/components/Payroll/TransitionConfiguration/index.d.ts +2 -0
- package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +5 -2
- package/dist/src/components/Payroll/index.d.ts +2 -6
- package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.d.ts +14 -0
- package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.test.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -1
- package/dist/src/contexts/FeaturesProvider/FeaturesProvider.d.ts +21 -0
- package/dist/src/contexts/FeaturesProvider/useFeature.d.ts +53 -0
- package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +3 -0
- package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +38 -10
- package/dist/src/contexts/index.d.ts +1 -0
- package/dist/src/i18n/en/common.json.d.ts +5 -1
- package/dist/src/i18n/types.d.ts +113 -66
- package/dist/src/partner-hook-utils/form/fields/RadioGroupHookField.d.ts +9 -7
- package/dist/src/shared/constants.d.ts +4 -2
- package/dist/src/test-utils/renderWithProviders.d.ts +2 -0
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +24 -27
- package/package.json +15 -14
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +0 -29
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +0 -1
- package/dist/components/Payroll/Transition/TransitionFlow.js +0 -60
- package/dist/components/Payroll/Transition/TransitionFlow.js.map +0 -1
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js +0 -31
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +0 -1
- package/dist/components/Payroll/Transition/transitionStateMachine.js +0 -49
- package/dist/components/Payroll/Transition/transitionStateMachine.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +0 -100
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +0 -110
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.module.scss.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js +0 -21
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js +0 -48
- package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js +0 -35
- package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js +0 -23
- package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +0 -29
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +0 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +0 -411
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +0 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +0 -1
- package/dist/i18n/en/Payroll.Transition.json.js +0 -8
- package/dist/i18n/en/Payroll.Transition.json.js.map +0 -1
- package/dist/i18n/en/Payroll.TransitionCreation.json.js +0 -26
- package/dist/i18n/en/Payroll.TransitionCreation.json.js.map +0 -1
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +0 -1
- package/dist/src/components/Payroll/PayrollFlow/TransitionFlowContextual.d.ts +0 -7
- package/dist/src/components/Payroll/Transition/TransitionFlow.d.ts +0 -55
- package/dist/src/components/Payroll/Transition/TransitionFlowComponents.d.ts +0 -52
- package/dist/src/components/Payroll/Transition/index.d.ts +0 -2
- package/dist/src/components/Payroll/Transition/transitionStateMachine.d.ts +0 -29
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreation.d.ts +0 -22
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +0 -9
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +0 -57
- package/dist/src/components/Payroll/TransitionCreation/index.d.ts +0 -2
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayroll.d.ts +0 -55
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollComponents.d.ts +0 -24
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollTypes.d.ts +0 -23
- package/dist/src/components/Payroll/TransitionPayroll/index.d.ts +0 -2
- package/dist/src/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.d.ts +0 -15
- package/dist/src/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.d.ts +0 -28
- /package/dist/src/components/{Payroll/Transition/transitionStateMachine.test.d.ts → Common/DataView/getSortControls.test.d.ts} +0 -0
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
import { jsx as r, jsxs as
|
|
2
|
-
import { useRef as
|
|
3
|
-
import
|
|
4
|
-
import { useTranslation as
|
|
5
|
-
import { useFormatEmployeePayRate as
|
|
6
|
-
import { PayrollCategory as
|
|
7
|
-
import { PayrollBlockerAlerts as
|
|
8
|
-
import
|
|
9
|
-
import { useI18n as
|
|
10
|
-
import { Flex as
|
|
11
|
-
import { Grid as
|
|
12
|
-
import { HamburgerMenu as
|
|
13
|
-
import { useComponentContext as
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import { formatNumberAsCurrency as p, firstLastName as
|
|
19
|
-
import { useDateFormatter as
|
|
20
|
-
import
|
|
21
|
-
import {
|
|
22
|
-
import { PayrollLoading as
|
|
23
|
-
import { DataView as
|
|
24
|
-
const
|
|
25
|
-
className:
|
|
1
|
+
import { jsx as r, jsxs as i, Fragment as K } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as W } from "react";
|
|
3
|
+
import X from "classnames";
|
|
4
|
+
import { useTranslation as J, Trans as Q } from "react-i18next";
|
|
5
|
+
import { useFormatEmployeePayRate as Y, getRegularHours as Z, getOvertimeHours as $, formatHoursDisplay as H, getTotalPtoHours as ee, getAdditionalEarnings as te, getReimbursements as b, calculateGrossPay as re } from "../helpers.js";
|
|
6
|
+
import { PayrollCategory as E } from "../payrollTypes.js";
|
|
7
|
+
import { PayrollBlockerAlerts as ne } from "../PayrollBlocker/components/PayrollBlockerAlerts.js";
|
|
8
|
+
import oe from "./PayrollConfigurationPresentation.module.scss.js";
|
|
9
|
+
import { useI18n as ie } from "../../../i18n/I18n.js";
|
|
10
|
+
import { Flex as c, FlexItem as D } from "../../Common/Flex/Flex.js";
|
|
11
|
+
import { Grid as ae } from "../../Common/Grid/Grid.js";
|
|
12
|
+
import { HamburgerMenu as le } from "../../Common/HamburgerMenu/HamburgerMenu.js";
|
|
13
|
+
import { useComponentContext as se } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
14
|
+
import me from "../../../assets/icons/pencil.svg.js";
|
|
15
|
+
import ue from "../../../assets/icons/x-circle.svg.js";
|
|
16
|
+
import ce from "../../../assets/icons/plus-circle.svg.js";
|
|
17
|
+
import de from "../../../assets/icons/coins-hand.svg.js";
|
|
18
|
+
import { formatNumberAsCurrency as p, firstLastName as pe } from "../../../helpers/formattedStrings.js";
|
|
19
|
+
import { useDateFormatter as fe } from "../../../hooks/useDateFormatter.js";
|
|
20
|
+
import ge from "../../../hooks/useContainerBreakpoints/useContainerBreakpoints.js";
|
|
21
|
+
import { useFeature as ye } from "../../../contexts/FeaturesProvider/useFeature.js";
|
|
22
|
+
import { PayrollLoading as he } from "../../Common/PayrollLoading/PayrollLoading.js";
|
|
23
|
+
import { DataView as be } from "../../Common/DataView/DataView.js";
|
|
24
|
+
const De = (a, f) => a?.startDate && a.endDate ? f.formatPayPeriod(a.startDate, a.endDate) : { startDate: "", endDate: "" }, qe = ({
|
|
25
|
+
className: a,
|
|
26
26
|
employeeCompensations: f,
|
|
27
|
-
employeeDetails:
|
|
27
|
+
employeeDetails: j,
|
|
28
28
|
payPeriod: g,
|
|
29
|
-
paySchedule:
|
|
30
|
-
onEdit:
|
|
31
|
-
onToggleExclude:
|
|
29
|
+
paySchedule: w,
|
|
30
|
+
onEdit: F,
|
|
31
|
+
onToggleExclude: M,
|
|
32
32
|
onCalculatePayroll: P,
|
|
33
|
-
onViewBlockers:
|
|
34
|
-
payrollCategory: y =
|
|
33
|
+
onViewBlockers: N,
|
|
34
|
+
payrollCategory: y = E.Regular,
|
|
35
35
|
alerts: C,
|
|
36
36
|
payrollAlert: m,
|
|
37
37
|
isPending: h,
|
|
38
|
-
isCalculating:
|
|
38
|
+
isCalculating: l,
|
|
39
39
|
payrollBlockers: k = [],
|
|
40
40
|
pagination: U,
|
|
41
41
|
withReimbursements: B = !0,
|
|
42
42
|
isCalculateDisabled: x = !1,
|
|
43
|
-
grossUpEnabled:
|
|
44
|
-
onGrossUpSelect:
|
|
43
|
+
grossUpEnabled: O = !1,
|
|
44
|
+
onGrossUpSelect: G
|
|
45
45
|
}) => {
|
|
46
|
-
const { Button:
|
|
47
|
-
|
|
48
|
-
const { t } =
|
|
49
|
-
const n =
|
|
50
|
-
return (n ?
|
|
46
|
+
const { Button: v, Heading: T, Text: d, Badge: I, Alert: S } = se();
|
|
47
|
+
ie("Payroll.PayrollConfiguration");
|
|
48
|
+
const { t } = J("Payroll.PayrollConfiguration"), A = fe(), L = Y(), V = ye("regularRateOfPay"), R = W(null), s = ge({ ref: R }).includes("small"), u = new Map(j.map((e) => [e.uuid, e])), _ = (e) => {
|
|
49
|
+
const n = u.get(e);
|
|
50
|
+
return (n ? pe({ first_name: n.firstName, last_name: n.lastName }) : "") || t("unknownEmployeeFallback");
|
|
51
51
|
};
|
|
52
|
-
return /* @__PURE__ */ r("div", { ref: R, className:
|
|
53
|
-
/* @__PURE__ */
|
|
54
|
-
|
|
52
|
+
return /* @__PURE__ */ r("div", { ref: R, className: X(oe.container, a), children: /* @__PURE__ */ i(c, { flexDirection: "column", gap: 32, children: [
|
|
53
|
+
/* @__PURE__ */ i(
|
|
54
|
+
c,
|
|
55
55
|
{
|
|
56
56
|
flexDirection: s ? "row" : "column",
|
|
57
57
|
justifyContent: s ? "space-between" : "normal",
|
|
58
58
|
alignItems: s ? "center" : "stretch",
|
|
59
59
|
gap: s ? 0 : 16,
|
|
60
60
|
children: [
|
|
61
|
-
/* @__PURE__ */
|
|
62
|
-
/* @__PURE__ */ r(
|
|
61
|
+
/* @__PURE__ */ i(D, { children: [
|
|
62
|
+
/* @__PURE__ */ r(T, { as: "h1", children: t("pageTitle") }),
|
|
63
63
|
g && /* @__PURE__ */ r(d, { variant: "supporting", children: /* @__PURE__ */ r(
|
|
64
|
-
|
|
64
|
+
Q,
|
|
65
65
|
{
|
|
66
|
-
i18nKey: y ===
|
|
66
|
+
i18nKey: y === E.Dismissal ? "descriptionDismissal" : "description",
|
|
67
67
|
t,
|
|
68
68
|
components: { dateWrapper: /* @__PURE__ */ r(d, { weight: "bold", as: "span" }) },
|
|
69
69
|
values: {
|
|
70
|
-
...
|
|
70
|
+
...De(g, A),
|
|
71
71
|
payrollType: y
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
) })
|
|
75
75
|
] }),
|
|
76
76
|
/* @__PURE__ */ r(D, { flexGrow: 0, children: s ? /* @__PURE__ */ r(
|
|
77
|
-
|
|
77
|
+
v,
|
|
78
78
|
{
|
|
79
79
|
title: t("calculatePayrollTitle"),
|
|
80
80
|
onClick: P,
|
|
81
|
-
isDisabled: x || h ||
|
|
82
|
-
children: t(
|
|
81
|
+
isDisabled: x || h || l,
|
|
82
|
+
children: t(l ? "calculatingPayroll" : "calculatePayroll")
|
|
83
83
|
}
|
|
84
|
-
) : /* @__PURE__ */ r(
|
|
85
|
-
|
|
84
|
+
) : /* @__PURE__ */ r(c, { flexDirection: "column", justifyContent: "normal", alignItems: "stretch", gap: 12, children: /* @__PURE__ */ r(
|
|
85
|
+
v,
|
|
86
86
|
{
|
|
87
87
|
title: t("calculatePayrollTitle"),
|
|
88
88
|
onClick: P,
|
|
89
|
-
isDisabled: x || h ||
|
|
90
|
-
children: t(
|
|
89
|
+
isDisabled: x || h || l,
|
|
90
|
+
children: t(l ? "calculatingPayroll" : "calculatePayroll")
|
|
91
91
|
}
|
|
92
92
|
) }) })
|
|
93
93
|
]
|
|
94
94
|
}
|
|
95
95
|
),
|
|
96
|
-
(C || m) && /* @__PURE__ */
|
|
96
|
+
(C || m) && /* @__PURE__ */ i(ae, { gap: 16, gridTemplateColumns: "1fr", children: [
|
|
97
97
|
m && /* @__PURE__ */ r(S, { label: m.label, status: m.variant, children: m.content }),
|
|
98
98
|
C
|
|
99
99
|
] }),
|
|
100
100
|
h ? /* @__PURE__ */ r(
|
|
101
|
-
|
|
101
|
+
he,
|
|
102
102
|
{
|
|
103
|
-
title: t(
|
|
104
|
-
description: t(
|
|
103
|
+
title: t(l ? "calculatingTitle" : "loadingTitle"),
|
|
104
|
+
description: t(l ? "calculatingDescription" : "loadingDescription")
|
|
105
105
|
}
|
|
106
|
-
) : /* @__PURE__ */
|
|
106
|
+
) : /* @__PURE__ */ i(K, { children: [
|
|
107
107
|
k.length > 0 && /* @__PURE__ */ r(
|
|
108
|
-
|
|
108
|
+
ne,
|
|
109
109
|
{
|
|
110
110
|
blockers: k,
|
|
111
|
-
onViewBlockersClick:
|
|
111
|
+
onViewBlockersClick: N
|
|
112
112
|
}
|
|
113
113
|
),
|
|
114
|
-
/* @__PURE__ */
|
|
115
|
-
/* @__PURE__ */
|
|
116
|
-
/* @__PURE__ */ r(
|
|
114
|
+
/* @__PURE__ */ i(c, { flexDirection: "column", gap: 20, children: [
|
|
115
|
+
/* @__PURE__ */ i(D, { children: [
|
|
116
|
+
/* @__PURE__ */ r(T, { as: "h2", styledAs: "h3", children: t("hoursAndEarningsTitle") }),
|
|
117
117
|
/* @__PURE__ */ r(d, { variant: "supporting", children: t("hoursAndEarningsDescription") })
|
|
118
118
|
] }),
|
|
119
119
|
/* @__PURE__ */ r(
|
|
120
|
-
|
|
120
|
+
be,
|
|
121
121
|
{
|
|
122
122
|
label: t("employeeCompensationsTitle"),
|
|
123
123
|
columns: [
|
|
124
124
|
{
|
|
125
125
|
title: t("tableColumns.employees"),
|
|
126
126
|
render: (e) => {
|
|
127
|
-
const n =
|
|
128
|
-
return /* @__PURE__ */
|
|
127
|
+
const n = u.get(e.employeeUuid || ""), o = L(n);
|
|
128
|
+
return /* @__PURE__ */ i(c, { flexDirection: "column", gap: 0, children: [
|
|
129
129
|
_(e.employeeUuid || ""),
|
|
130
|
-
|
|
131
|
-
e.excluded && /* @__PURE__ */ r(
|
|
130
|
+
o && /* @__PURE__ */ r(d, { size: "xs", variant: "supporting", children: o }),
|
|
131
|
+
e.excluded && /* @__PURE__ */ r(I, { status: "warning", children: t("skippedBadge") })
|
|
132
132
|
] });
|
|
133
133
|
}
|
|
134
134
|
},
|
|
@@ -136,23 +136,26 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
|
|
|
136
136
|
title: t("tableColumns.hours"),
|
|
137
137
|
justify: "end",
|
|
138
138
|
render: (e) => {
|
|
139
|
-
const n =
|
|
140
|
-
return
|
|
139
|
+
const n = Z(e), o = $(e);
|
|
140
|
+
return H(n + o);
|
|
141
141
|
}
|
|
142
142
|
},
|
|
143
143
|
{
|
|
144
144
|
title: t("tableColumns.timeOff"),
|
|
145
145
|
justify: "end",
|
|
146
146
|
render: (e) => {
|
|
147
|
-
const n =
|
|
148
|
-
|
|
147
|
+
const n = ee(e), o = (e.paidTimeOff ?? []).reduce(
|
|
148
|
+
(q, z) => q + parseFloat(z.approvedRequestHours || "0"),
|
|
149
|
+
0
|
|
150
|
+
);
|
|
151
|
+
return H(n + o);
|
|
149
152
|
}
|
|
150
153
|
},
|
|
151
154
|
{
|
|
152
155
|
title: t("tableColumns.additionalEarnings"),
|
|
153
156
|
justify: "end",
|
|
154
157
|
render: (e) => {
|
|
155
|
-
const n =
|
|
158
|
+
const n = te(e);
|
|
156
159
|
return p(n);
|
|
157
160
|
}
|
|
158
161
|
},
|
|
@@ -170,47 +173,47 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
|
|
|
170
173
|
title: t("tableColumns.totalPay"),
|
|
171
174
|
justify: "end",
|
|
172
175
|
render: (e) => {
|
|
173
|
-
if (V)
|
|
176
|
+
if (V && "grossPay" in e)
|
|
174
177
|
return p(
|
|
175
178
|
Number(e.grossPay ?? 0) + b(e)
|
|
176
179
|
);
|
|
177
|
-
const n =
|
|
180
|
+
const n = u.get(e.employeeUuid || ""), o = n ? re(
|
|
178
181
|
e,
|
|
179
182
|
n,
|
|
180
183
|
g?.startDate ?? void 0,
|
|
181
|
-
|
|
184
|
+
w,
|
|
182
185
|
y
|
|
183
186
|
) : 0;
|
|
184
|
-
return p(
|
|
187
|
+
return p(o + b(e));
|
|
185
188
|
}
|
|
186
189
|
}
|
|
187
190
|
],
|
|
188
191
|
data: f,
|
|
189
192
|
itemMenu: (e) => /* @__PURE__ */ r(
|
|
190
|
-
|
|
193
|
+
le,
|
|
191
194
|
{
|
|
192
195
|
items: [
|
|
193
196
|
{
|
|
194
197
|
label: t("editMenu.edit"),
|
|
195
|
-
icon: /* @__PURE__ */ r(
|
|
198
|
+
icon: /* @__PURE__ */ r(me, { "aria-hidden": !0 }),
|
|
196
199
|
onClick: () => {
|
|
197
|
-
const n =
|
|
198
|
-
n &&
|
|
200
|
+
const n = u.get(e.employeeUuid || "");
|
|
201
|
+
n && F(n);
|
|
199
202
|
}
|
|
200
203
|
},
|
|
201
204
|
{
|
|
202
205
|
label: t(e.excluded ? "editMenu.unskip" : "editMenu.skip"),
|
|
203
|
-
icon: e.excluded ? /* @__PURE__ */ r(
|
|
206
|
+
icon: e.excluded ? /* @__PURE__ */ r(ce, { "aria-hidden": !0 }) : /* @__PURE__ */ r(ue, { "aria-hidden": !0 }),
|
|
204
207
|
onClick: () => {
|
|
205
|
-
|
|
208
|
+
u.get(e.employeeUuid || "") && M(e);
|
|
206
209
|
}
|
|
207
210
|
},
|
|
208
|
-
...
|
|
211
|
+
...O ? [
|
|
209
212
|
{
|
|
210
213
|
label: t("editMenu.setNetEarnings"),
|
|
211
|
-
icon: /* @__PURE__ */ r(
|
|
214
|
+
icon: /* @__PURE__ */ r(de, { "aria-hidden": !0 }),
|
|
212
215
|
onClick: () => {
|
|
213
|
-
e.employeeUuid &&
|
|
216
|
+
e.employeeUuid && G?.(e.employeeUuid);
|
|
214
217
|
}
|
|
215
218
|
}
|
|
216
219
|
] : []
|
|
@@ -226,6 +229,6 @@ const he = (l, f) => l?.startDate && l.endDate ? f.formatPayPeriod(l.startDate,
|
|
|
226
229
|
] }) });
|
|
227
230
|
};
|
|
228
231
|
export {
|
|
229
|
-
|
|
232
|
+
qe as PayrollConfigurationPresentation
|
|
230
233
|
};
|
|
231
234
|
//# sourceMappingURL=PayrollConfigurationPresentation.js.map
|
package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { useRef } from 'react'\nimport classNames from 'classnames'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleShow as PayScheduleObject } from '@gusto/embedded-api/models/components/payschedulelistitem'\nimport { Trans, useTranslation } from 'react-i18next'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport { PayrollCategory } from '../payrollTypes'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '../PayrollBlocker/components/PayrollBlockerAlerts'\nimport styles from './PayrollConfigurationPresentation.module.scss'\nimport { useI18n } from '@/i18n'\nimport { DataView, Flex, FlexItem, Grid, PayrollLoading } from '@/components/Common'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport XCircle from '@/assets/icons/x-circle.svg?react'\nimport PlusCircle from '@/assets/icons/plus-circle.svg?react'\nimport CoinsHandSvg from '@/assets/icons/coins-hand.svg?react'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport { useUnstableFeature } from '@/contexts/UnstableFeaturesProvider/useUnstableFeature'\n\ninterface PayrollConfigurationPresentationProps {\n /** CSS class name applied to the root element. */\n className?: string\n employeeCompensations: PayrollEmployeeCompensationsType[]\n employeeDetails: Employee[]\n payPeriod?: PayrollPayPeriodType\n paySchedule?: PayScheduleObject\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n onToggleExclude: (employeeCompensation: PayrollEmployeeCompensationsType) => void\n onViewBlockers: () => void\n payrollCategory?: PayrollCategory\n alerts?: ReactNode\n payrollAlert?: {\n label: string\n content?: ReactNode\n variant: 'info' | 'warning'\n }\n isPending?: boolean\n isCalculating?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n pagination?: PaginationControlProps\n withReimbursements?: boolean\n isCalculateDisabled?: boolean\n grossUpEnabled?: boolean\n onGrossUpSelect?: (employeeUuid: string) => void\n}\n\nconst getPayrollConfigurationTitle = (\n payPeriod: PayrollPayPeriodType | undefined,\n dateFormatter: ReturnType<typeof useDateFormatter>,\n) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n return dateFormatter.formatPayPeriod(payPeriod.startDate, payPeriod.endDate)\n }\n return { startDate: '', endDate: '' }\n}\n\n/** @internal */\nexport const PayrollConfigurationPresentation = ({\n className,\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onEdit,\n onToggleExclude,\n onCalculatePayroll,\n onViewBlockers,\n payrollCategory = PayrollCategory.Regular,\n alerts,\n payrollAlert,\n isPending,\n isCalculating,\n payrollBlockers = [],\n pagination,\n withReimbursements = true,\n isCalculateDisabled = false,\n grossUpEnabled = false,\n onGrossUpSelect,\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, Alert } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const dateFormatter = useDateFormatter()\n const formatEmployeePayRate = useFormatEmployeePayRate()\n const isRegularRateOfPayEnabled = useUnstableFeature('payrollRegularRateOfPay')\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isDesktop = breakpoints.includes('small')\n\n const employeeMap = new Map(employeeDetails.map(employee => [employee.uuid, employee]))\n\n const getEmployeeName = (employeeUuid: string) => {\n const employee = employeeMap.get(employeeUuid)\n const name = employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : ''\n return name || t('unknownEmployeeFallback')\n }\n\n return (\n <div ref={containerRef} className={classNames(styles.container, className)}>\n <Flex flexDirection=\"column\" gap={32}>\n <Flex\n flexDirection={isDesktop ? 'row' : 'column'}\n justifyContent={isDesktop ? 'space-between' : 'normal'}\n alignItems={isDesktop ? 'center' : 'stretch'}\n gap={isDesktop ? 0 : 16}\n >\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n {payPeriod && (\n <Text variant=\"supporting\">\n <Trans\n i18nKey={\n payrollCategory === PayrollCategory.Dismissal\n ? 'descriptionDismissal'\n : 'description'\n }\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={{\n ...getPayrollConfigurationTitle(payPeriod, dateFormatter),\n payrollType: payrollCategory,\n }}\n />\n </Text>\n )}\n </FlexItem>\n <FlexItem flexGrow={isDesktop ? 0 : 0}>\n {isDesktop ? (\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isCalculateDisabled || isPending || isCalculating}\n >\n {isCalculating ? t('calculatingPayroll') : t('calculatePayroll')}\n </Button>\n ) : (\n <Flex flexDirection=\"column\" justifyContent=\"normal\" alignItems=\"stretch\" gap={12}>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isCalculateDisabled || isPending || isCalculating}\n >\n {isCalculating ? t('calculatingPayroll') : t('calculatePayroll')}\n </Button>\n </Flex>\n )}\n </FlexItem>\n </Flex>\n\n {(alerts || payrollAlert) && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {payrollAlert && (\n <Alert label={payrollAlert.label} status={payrollAlert.variant}>\n {payrollAlert.content}\n </Alert>\n )}\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <PayrollLoading\n title={isCalculating ? t('calculatingTitle') : t('loadingTitle')}\n description={isCalculating ? t('calculatingDescription') : t('loadingDescription')}\n />\n ) : (\n <>\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts\n blockers={payrollBlockers}\n onViewBlockersClick={onViewBlockers}\n />\n )}\n <Flex flexDirection=\"column\" gap={20}>\n <FlexItem>\n <Heading as=\"h2\" styledAs=\"h3\">\n {t('hoursAndEarningsTitle')}\n </Heading>\n <Text variant=\"supporting\">{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: t('tableColumns.employees'),\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={0}>\n {getEmployeeName(item.employeeUuid || '')}\n {payRateDisplay && (\n <Text size=\"xs\" variant=\"supporting\">\n {payRateDisplay}\n </Text>\n )}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: t('tableColumns.hours'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return formatHoursDisplay(hours + overtimeHours)\n },\n },\n {\n title: t('tableColumns.timeOff'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const ptoHours = getTotalPtoHours(item)\n return formatHoursDisplay(ptoHours)\n },\n },\n {\n title: t('tableColumns.additionalEarnings'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const earnings = getAdditionalEarnings(item)\n return formatNumberAsCurrency(earnings)\n },\n },\n ...(withReimbursements\n ? [\n {\n title: t('tableColumns.reimbursements'),\n justify: 'end' as const,\n render: (item: PayrollEmployeeCompensationsType) => {\n const reimbursements = getReimbursements(item)\n return formatNumberAsCurrency(reimbursements)\n },\n },\n ]\n : []),\n {\n title: t('tableColumns.totalPay'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n if (isRegularRateOfPayEnabled) {\n return formatNumberAsCurrency(\n Number(item.grossPay ?? 0) + getReimbursements(item),\n )\n }\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate ?? undefined,\n paySchedule,\n payrollCategory,\n )\n : 0\n return formatNumberAsCurrency(calculatedGrossPay + getReimbursements(item))\n },\n },\n ]}\n data={employeeCompensations}\n itemMenu={(item: PayrollEmployeeCompensationsType) => (\n <HamburgerMenu\n items={[\n {\n label: t('editMenu.edit'),\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onEdit(employee)\n }\n },\n },\n {\n label: t(item.excluded ? 'editMenu.unskip' : 'editMenu.skip'),\n icon: item.excluded ? <PlusCircle aria-hidden /> : <XCircle aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onToggleExclude(item)\n }\n },\n },\n ...(grossUpEnabled\n ? [\n {\n label: t('editMenu.setNetEarnings'),\n icon: <CoinsHandSvg aria-hidden />,\n onClick: () => {\n if (item.employeeUuid) {\n onGrossUpSelect?.(item.employeeUuid)\n }\n },\n },\n ]\n : []),\n ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n pagination={pagination}\n />\n </Flex>\n </>\n )}\n </Flex>\n </div>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","dateFormatter","PayrollConfigurationPresentation","className","employeeCompensations","employeeDetails","paySchedule","onEdit","onToggleExclude","onCalculatePayroll","onViewBlockers","payrollCategory","PayrollCategory","alerts","payrollAlert","isPending","isCalculating","payrollBlockers","pagination","withReimbursements","isCalculateDisabled","grossUpEnabled","onGrossUpSelect","Button","Heading","Text","Badge","Alert","useComponentContext","useI18n","useTranslation","useDateFormatter","formatEmployeePayRate","useFormatEmployeePayRate","isRegularRateOfPayEnabled","useUnstableFeature","containerRef","useRef","isDesktop","useContainerBreakpoints","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsx","classNames","styles","jsxs","Flex","FlexItem","Trans","Grid","PayrollLoading","Fragment","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","HamburgerMenu","PencilSvg","PlusCircle","XCircle","CoinsHandSvg"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { useRef } from 'react'\nimport classNames from 'classnames'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleShow as PayScheduleObject } from '@gusto/embedded-api/models/components/payschedulelistitem'\nimport { Trans, useTranslation } from 'react-i18next'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport { PayrollCategory } from '../payrollTypes'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '../PayrollBlocker/components/PayrollBlockerAlerts'\nimport styles from './PayrollConfigurationPresentation.module.scss'\nimport { useI18n } from '@/i18n'\nimport { DataView, Flex, FlexItem, Grid, PayrollLoading } from '@/components/Common'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport XCircle from '@/assets/icons/x-circle.svg?react'\nimport PlusCircle from '@/assets/icons/plus-circle.svg?react'\nimport CoinsHandSvg from '@/assets/icons/coins-hand.svg?react'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport { useFeature } from '@/contexts/FeaturesProvider/useFeature'\n\ninterface PayrollConfigurationPresentationProps {\n /** CSS class name applied to the root element. */\n className?: string\n employeeCompensations: PayrollEmployeeCompensationsType[]\n employeeDetails: Employee[]\n payPeriod?: PayrollPayPeriodType\n paySchedule?: PayScheduleObject\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n onToggleExclude: (employeeCompensation: PayrollEmployeeCompensationsType) => void\n onViewBlockers: () => void\n payrollCategory?: PayrollCategory\n alerts?: ReactNode\n payrollAlert?: {\n label: string\n content?: ReactNode\n variant: 'info' | 'warning'\n }\n isPending?: boolean\n isCalculating?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n pagination?: PaginationControlProps\n withReimbursements?: boolean\n isCalculateDisabled?: boolean\n grossUpEnabled?: boolean\n onGrossUpSelect?: (employeeUuid: string) => void\n}\n\nconst getPayrollConfigurationTitle = (\n payPeriod: PayrollPayPeriodType | undefined,\n dateFormatter: ReturnType<typeof useDateFormatter>,\n) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n return dateFormatter.formatPayPeriod(payPeriod.startDate, payPeriod.endDate)\n }\n return { startDate: '', endDate: '' }\n}\n\n/** @internal */\nexport const PayrollConfigurationPresentation = ({\n className,\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onEdit,\n onToggleExclude,\n onCalculatePayroll,\n onViewBlockers,\n payrollCategory = PayrollCategory.Regular,\n alerts,\n payrollAlert,\n isPending,\n isCalculating,\n payrollBlockers = [],\n pagination,\n withReimbursements = true,\n isCalculateDisabled = false,\n grossUpEnabled = false,\n onGrossUpSelect,\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, Alert } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const dateFormatter = useDateFormatter()\n const formatEmployeePayRate = useFormatEmployeePayRate()\n const isRegularRateOfPayEnabled = useFeature('regularRateOfPay')\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isDesktop = breakpoints.includes('small')\n\n const employeeMap = new Map(employeeDetails.map(employee => [employee.uuid, employee]))\n\n const getEmployeeName = (employeeUuid: string) => {\n const employee = employeeMap.get(employeeUuid)\n const name = employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : ''\n return name || t('unknownEmployeeFallback')\n }\n\n return (\n <div ref={containerRef} className={classNames(styles.container, className)}>\n <Flex flexDirection=\"column\" gap={32}>\n <Flex\n flexDirection={isDesktop ? 'row' : 'column'}\n justifyContent={isDesktop ? 'space-between' : 'normal'}\n alignItems={isDesktop ? 'center' : 'stretch'}\n gap={isDesktop ? 0 : 16}\n >\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n {payPeriod && (\n <Text variant=\"supporting\">\n <Trans\n i18nKey={\n payrollCategory === PayrollCategory.Dismissal\n ? 'descriptionDismissal'\n : 'description'\n }\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={{\n ...getPayrollConfigurationTitle(payPeriod, dateFormatter),\n payrollType: payrollCategory,\n }}\n />\n </Text>\n )}\n </FlexItem>\n <FlexItem flexGrow={isDesktop ? 0 : 0}>\n {isDesktop ? (\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isCalculateDisabled || isPending || isCalculating}\n >\n {isCalculating ? t('calculatingPayroll') : t('calculatePayroll')}\n </Button>\n ) : (\n <Flex flexDirection=\"column\" justifyContent=\"normal\" alignItems=\"stretch\" gap={12}>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isCalculateDisabled || isPending || isCalculating}\n >\n {isCalculating ? t('calculatingPayroll') : t('calculatePayroll')}\n </Button>\n </Flex>\n )}\n </FlexItem>\n </Flex>\n\n {(alerts || payrollAlert) && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {payrollAlert && (\n <Alert label={payrollAlert.label} status={payrollAlert.variant}>\n {payrollAlert.content}\n </Alert>\n )}\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <PayrollLoading\n title={isCalculating ? t('calculatingTitle') : t('loadingTitle')}\n description={isCalculating ? t('calculatingDescription') : t('loadingDescription')}\n />\n ) : (\n <>\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts\n blockers={payrollBlockers}\n onViewBlockersClick={onViewBlockers}\n />\n )}\n <Flex flexDirection=\"column\" gap={20}>\n <FlexItem>\n <Heading as=\"h2\" styledAs=\"h3\">\n {t('hoursAndEarningsTitle')}\n </Heading>\n <Text variant=\"supporting\">{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: t('tableColumns.employees'),\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={0}>\n {getEmployeeName(item.employeeUuid || '')}\n {payRateDisplay && (\n <Text size=\"xs\" variant=\"supporting\">\n {payRateDisplay}\n </Text>\n )}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: t('tableColumns.hours'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return formatHoursDisplay(hours + overtimeHours)\n },\n },\n {\n title: t('tableColumns.timeOff'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const additionalHours = getTotalPtoHours(item)\n const approvedHours = (item.paidTimeOff ?? []).reduce(\n (total, timeOff) => total + parseFloat(timeOff.approvedRequestHours || '0'),\n 0,\n )\n return formatHoursDisplay(additionalHours + approvedHours)\n },\n },\n {\n title: t('tableColumns.additionalEarnings'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n const earnings = getAdditionalEarnings(item)\n return formatNumberAsCurrency(earnings)\n },\n },\n ...(withReimbursements\n ? [\n {\n title: t('tableColumns.reimbursements'),\n justify: 'end' as const,\n render: (item: PayrollEmployeeCompensationsType) => {\n const reimbursements = getReimbursements(item)\n return formatNumberAsCurrency(reimbursements)\n },\n },\n ]\n : []),\n {\n title: t('tableColumns.totalPay'),\n justify: 'end',\n render: (item: PayrollEmployeeCompensationsType) => {\n // TODO: The API leaves the grossPay key out of unprocessed payrolls until\n // regular rate of pay is enabled for the partner, so fall back to the client\n // estimate only when the key is absent. Remove the fallback once it's enabled\n // for every partner and the regularRateOfPay flag is removed.\n if (isRegularRateOfPayEnabled && 'grossPay' in item) {\n return formatNumberAsCurrency(\n Number(item.grossPay ?? 0) + getReimbursements(item),\n )\n }\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate ?? undefined,\n paySchedule,\n payrollCategory,\n )\n : 0\n return formatNumberAsCurrency(calculatedGrossPay + getReimbursements(item))\n },\n },\n ]}\n data={employeeCompensations}\n itemMenu={(item: PayrollEmployeeCompensationsType) => (\n <HamburgerMenu\n items={[\n {\n label: t('editMenu.edit'),\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onEdit(employee)\n }\n },\n },\n {\n label: t(item.excluded ? 'editMenu.unskip' : 'editMenu.skip'),\n icon: item.excluded ? <PlusCircle aria-hidden /> : <XCircle aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onToggleExclude(item)\n }\n },\n },\n ...(grossUpEnabled\n ? [\n {\n label: t('editMenu.setNetEarnings'),\n icon: <CoinsHandSvg aria-hidden />,\n onClick: () => {\n if (item.employeeUuid) {\n onGrossUpSelect?.(item.employeeUuid)\n }\n },\n },\n ]\n : []),\n ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n pagination={pagination}\n />\n </Flex>\n </>\n )}\n </Flex>\n </div>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","dateFormatter","PayrollConfigurationPresentation","className","employeeCompensations","employeeDetails","paySchedule","onEdit","onToggleExclude","onCalculatePayroll","onViewBlockers","payrollCategory","PayrollCategory","alerts","payrollAlert","isPending","isCalculating","payrollBlockers","pagination","withReimbursements","isCalculateDisabled","grossUpEnabled","onGrossUpSelect","Button","Heading","Text","Badge","Alert","useComponentContext","useI18n","useTranslation","useDateFormatter","formatEmployeePayRate","useFormatEmployeePayRate","isRegularRateOfPayEnabled","useFeature","containerRef","useRef","isDesktop","useContainerBreakpoints","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsx","classNames","styles","jsxs","Flex","FlexItem","Trans","Grid","PayrollLoading","Fragment","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","additionalHours","getTotalPtoHours","approvedHours","total","timeOff","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","HamburgerMenu","PencilSvg","PlusCircle","XCircle","CoinsHandSvg"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import { useEmployeesGetSuspense as
|
|
3
|
-
import { useEmployeePaymentMethodsGetBankAccountsSuspense as
|
|
4
|
-
import { usePayrollsUpdateMutation as
|
|
2
|
+
import { useEmployeesGetSuspense as G } from "@gusto/embedded-api/react-query/employeesGet";
|
|
3
|
+
import { useEmployeePaymentMethodsGetBankAccountsSuspense as M } from "@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts";
|
|
4
|
+
import { usePayrollsUpdateMutation as N } from "@gusto/embedded-api/react-query/payrollsUpdate";
|
|
5
5
|
import { useMemo as Q } from "react";
|
|
6
6
|
import { useQueryClient as W } from "@tanstack/react-query";
|
|
7
7
|
import { usePayrollsGetSuspense as z } from "@gusto/embedded-api/react-query/payrollsGet";
|
|
@@ -9,15 +9,15 @@ import { usePreparedPayrollData as H } from "../usePreparedPayrollData.js";
|
|
|
9
9
|
import { PREPARE_QUERY_KEY as K } from "../PayrollConfiguration/usePayrollConfigurationData.js";
|
|
10
10
|
import { derivePayrollCategory as d, PayrollCategory as j, isOffCyclePayroll as F } from "../payrollTypes.js";
|
|
11
11
|
import { cleanupReimbursements as V } from "../helpers.js";
|
|
12
|
-
import {
|
|
12
|
+
import { RropPayrollEditEmployee as J } from "../RropPayrollEditEmployee/RropPayrollEditEmployee.js";
|
|
13
13
|
import { PayrollEditEmployeePresentation as X } from "./PayrollEditEmployeePresentation.js";
|
|
14
|
-
import {
|
|
14
|
+
import { useFeature as Z } from "../../../contexts/FeaturesProvider/useFeature.js";
|
|
15
15
|
import { componentEvents as f } from "../../../shared/constants.js";
|
|
16
16
|
import { BaseComponent as $ } from "../../Base/Base.js";
|
|
17
17
|
import { useComponentDictionary as I } from "../../../i18n/I18n.js";
|
|
18
18
|
import { useBase as ee } from "../../Base/useBase.js";
|
|
19
19
|
function be(e) {
|
|
20
|
-
return Z("
|
|
20
|
+
return Z("regularRateOfPay") ? /* @__PURE__ */ t(J, { ...e }) : /* @__PURE__ */ t($, { ...e, children: /* @__PURE__ */ t(oe, { ...e, children: e.children }) });
|
|
21
21
|
}
|
|
22
22
|
const oe = ({
|
|
23
23
|
employeeId: e,
|
|
@@ -29,16 +29,16 @@ const oe = ({
|
|
|
29
29
|
className: C
|
|
30
30
|
}) => {
|
|
31
31
|
I("Payroll.PayrollEditEmployee", P);
|
|
32
|
-
const R = W(), { LoadingIndicator: h, baseSubmitHandler: b } = ee(), { data:
|
|
32
|
+
const R = W(), { LoadingIndicator: h, baseSubmitHandler: b } = ee(), { data: g } = G({ employeeId: e }), { data: A } = M({
|
|
33
33
|
employeeId: e
|
|
34
|
-
}),
|
|
34
|
+
}), L = Q(() => [e], [e]), { data: S } = z({ companyId: r, payrollId: n }), D = d(S.payrollShow ?? {}) === j.Transition, { preparedPayroll: a, paySchedule: k, isLoading: w } = H({
|
|
35
35
|
companyId: r,
|
|
36
36
|
payrollId: n,
|
|
37
|
-
employeeUuids:
|
|
37
|
+
employeeUuids: L,
|
|
38
38
|
isTransitionPayroll: D
|
|
39
|
-
}), { mutateAsync:
|
|
39
|
+
}), { mutateAsync: O, isPending: _ } = N(), u = g.employeeShow, x = a?.employeeCompensations?.find(
|
|
40
40
|
(o) => o.employeeUuid === e
|
|
41
|
-
),
|
|
41
|
+
), U = (A.employeeBankAccounts || []).length > 0, y = d(a ?? {}), B = !F(y), Y = ({
|
|
42
42
|
paymentMethod: o,
|
|
43
43
|
reimbursements: s,
|
|
44
44
|
customWithholdings: c,
|
|
@@ -48,11 +48,11 @@ const oe = ({
|
|
|
48
48
|
// The legacy editor edits hours, not per-workweek breakdowns, so omit
|
|
49
49
|
// breakdowns and let the API use the hours we send.
|
|
50
50
|
hourlyCompensations: i.hourlyCompensations?.map((m) => {
|
|
51
|
-
const { breakdowns:
|
|
51
|
+
const { breakdowns: q, ...l } = m;
|
|
52
52
|
return l;
|
|
53
53
|
}),
|
|
54
54
|
fixedCompensations: i.fixedCompensations?.map((m) => {
|
|
55
|
-
const { breakdowns:
|
|
55
|
+
const { breakdowns: q, ...l } = m;
|
|
56
56
|
return l;
|
|
57
57
|
}),
|
|
58
58
|
...o && o !== "Historical" ? { paymentMethod: o } : {},
|
|
@@ -65,7 +65,7 @@ const oe = ({
|
|
|
65
65
|
}), v = async (o) => {
|
|
66
66
|
const s = Y(o);
|
|
67
67
|
await b(null, async () => {
|
|
68
|
-
const c = await
|
|
68
|
+
const c = await O({
|
|
69
69
|
request: {
|
|
70
70
|
companyId: r,
|
|
71
71
|
payrollId: n,
|
|
@@ -92,13 +92,13 @@ const oe = ({
|
|
|
92
92
|
onCancel: T,
|
|
93
93
|
employee: u,
|
|
94
94
|
isPending: _,
|
|
95
|
-
employeeCompensation:
|
|
95
|
+
employeeCompensation: x,
|
|
96
96
|
fixedCompensationTypes: a?.fixedCompensationTypes || [],
|
|
97
97
|
payPeriodStartDate: a?.payPeriod?.startDate ?? void 0,
|
|
98
98
|
paySchedule: k,
|
|
99
99
|
payrollCategory: y,
|
|
100
100
|
withReimbursements: E,
|
|
101
|
-
hasDirectDepositSetup:
|
|
101
|
+
hasDirectDepositSetup: U
|
|
102
102
|
}
|
|
103
103
|
);
|
|
104
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.tsx"],"sourcesContent":["import { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { useEmployeePaymentMethodsGetBankAccountsSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { useMemo } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { PREPARE_QUERY_KEY } from '../PayrollConfiguration/usePayrollConfigurationData'\nimport { derivePayrollCategory, isOffCyclePayroll, PayrollCategory } from '../payrollTypes'\nimport { cleanupReimbursements } from '../helpers'\nimport { UNSTABLE_PayrollEditEmployee } from '../UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee'\nimport { PayrollEditEmployeePresentation } from './PayrollEditEmployeePresentation'\nimport { useUnstableFeature } from '@/contexts/UnstableFeaturesProvider/useUnstableFeature'\nimport { componentEvents } from '@/shared/constants'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useComponentDictionary } from '@/i18n'\nimport { useBase } from '@/components/Base/useBase'\n\n/**\n * Props for {@link PayrollEditEmployee}.\n *\n * @public\n */\nexport interface PayrollEditEmployeeProps extends BaseComponentInterface<'Payroll.PayrollEditEmployee'> {\n /** The associated employee identifier. */\n employeeId: string\n /** The associated company identifier. */\n companyId: string\n /** The associated payroll identifier. */\n payrollId: string\n /** Whether to show reimbursement fields. Defaults to `true`. */\n withReimbursements?: boolean\n}\n\n/**\n * Editor for an individual employee's compensation within a payroll run.\n *\n * Allows modification of pay rates, hours, time off, additional earnings,\n * reimbursements, and payment method for a single employee on the specified payroll.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/employee/saved` | Fired when employee payroll compensation changes are saved | `{ payrollPrepared, employee }` |\n * | `runPayroll/employee/cancelled` | Fired when the user cancels editing employee payroll compensation | — |\n *\n * @param props - {@link PayrollEditEmployeeProps} plus base component props.\n * @returns The employee compensation editor.\n * @public\n *\n * @example\n * ```tsx\n * import { Payroll } from '@gusto/embedded-react-sdk'\n *\n * function MyComponent() {\n * return (\n * <Payroll.PayrollEditEmployee\n * employeeId=\"your-employee-id\"\n * companyId=\"your-company-id\"\n * payrollId=\"your-payroll-id\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function PayrollEditEmployee(props: PayrollEditEmployeeProps) {\n const isRegularRateOfPayEnabled = useUnstableFeature('payrollRegularRateOfPay')\n\n if (isRegularRateOfPayEnabled) {\n return <UNSTABLE_PayrollEditEmployee {...props} />\n }\n\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n employeeId,\n companyId,\n payrollId,\n onEvent,\n dictionary,\n withReimbursements = true,\n className,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.PayrollEditEmployee', dictionary)\n\n const queryClient = useQueryClient()\n const { LoadingIndicator, baseSubmitHandler } = useBase()\n\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const { data: bankAccountsList } = useEmployeePaymentMethodsGetBankAccountsSuspense({\n employeeId,\n })\n const memoizedEmployeeId = useMemo(() => [employeeId], [employeeId])\n const { data: payrollData } = usePayrollsGetSuspense({ companyId, payrollId })\n const isTransitionPayroll =\n derivePayrollCategory(payrollData.payrollShow ?? {}) === PayrollCategory.Transition\n const { preparedPayroll, paySchedule, isLoading } = usePreparedPayrollData({\n companyId,\n payrollId,\n employeeUuids: memoizedEmployeeId,\n isTransitionPayroll,\n })\n\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const employee = employeeData.employeeShow!\n const employeeCompensation = preparedPayroll?.employeeCompensations?.find(\n comp => comp.employeeUuid === employeeId,\n )\n const bankAccounts = bankAccountsList.employeeBankAccounts || []\n const hasDirectDepositSetup = bankAccounts.length > 0\n const payrollCategory = derivePayrollCategory(preparedPayroll ?? {})\n const usesItemizedReimbursements = !isOffCyclePayroll(payrollCategory)\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n reimbursements,\n customWithholdings,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n // The legacy editor edits hours, not per-workweek breakdowns, so omit\n // breakdowns and let the API use the hours we send.\n hourlyCompensations: compensation.hourlyCompensations?.map(hourlyCompensation => {\n const { breakdowns, ...hourlyCompensationWithoutBreakdowns } = hourlyCompensation\n return hourlyCompensationWithoutBreakdowns\n }),\n fixedCompensations: compensation.fixedCompensations?.map(fixedCompensation => {\n const { breakdowns, ...fixedCompensationWithoutBreakdowns } = fixedCompensation\n return fixedCompensationWithoutBreakdowns\n }),\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n // Off-cycle payrolls write reimbursements via the legacy fixed_compensations field; the\n // itemized array gets rejected by the `emb_off_cycle_disable_named_reimbursements` backend\n // flag (default-on globally, expected removal 2026-09-01).\n // TODO(post-2026-09-01): drop the branch once the flag is gone.\n ...(usesItemizedReimbursements && reimbursements\n ? { reimbursements: cleanupReimbursements(reimbursements) }\n : {}),\n }\n }\n\n const onSave = async (updatedCompensation: PayrollEmployeeCompensationsType) => {\n const transformedCompensation = transformEmployeeCompensation(updatedCompensation)\n await baseSubmitHandler(null, async () => {\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [transformedCompensation],\n },\n },\n })\n\n await queryClient.invalidateQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n employee,\n })\n })\n }\n\n const onCancel = () => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED)\n }\n\n if (isLoading) {\n return <LoadingIndicator />\n }\n\n return (\n <PayrollEditEmployeePresentation\n className={className}\n onSave={onSave}\n onCancel={onCancel}\n employee={employee}\n isPending={isPending}\n employeeCompensation={employeeCompensation}\n fixedCompensationTypes={preparedPayroll?.fixedCompensationTypes || []}\n payPeriodStartDate={preparedPayroll?.payPeriod?.startDate ?? undefined}\n paySchedule={paySchedule}\n payrollCategory={payrollCategory}\n withReimbursements={withReimbursements}\n hasDirectDepositSetup={hasDirectDepositSetup}\n />\n )\n}\n"],"names":["PayrollEditEmployee","props","useUnstableFeature","jsx","UNSTABLE_PayrollEditEmployee","BaseComponent","Root","employeeId","companyId","payrollId","onEvent","dictionary","withReimbursements","className","useComponentDictionary","queryClient","useQueryClient","LoadingIndicator","baseSubmitHandler","useBase","employeeData","useEmployeesGetSuspense","bankAccountsList","useEmployeePaymentMethodsGetBankAccountsSuspense","memoizedEmployeeId","useMemo","payrollData","usePayrollsGetSuspense","isTransitionPayroll","derivePayrollCategory","PayrollCategory","preparedPayroll","paySchedule","isLoading","usePreparedPayrollData","updatePayroll","isPending","usePayrollsUpdateMutation","employee","employeeCompensation","comp","hasDirectDepositSetup","payrollCategory","usesItemizedReimbursements","isOffCyclePayroll","transformEmployeeCompensation","paymentMethod","reimbursements","customWithholdings","compensation","hourlyCompensation","breakdowns","hourlyCompensationWithoutBreakdowns","fixedCompensation","fixedCompensationWithoutBreakdowns","cleanupReimbursements","onSave","updatedCompensation","transformedCompensation","result","PREPARE_QUERY_KEY","componentEvents","onCancel","PayrollEditEmployeePresentation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.tsx"],"sourcesContent":["import { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { useEmployeePaymentMethodsGetBankAccountsSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { useMemo } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { PREPARE_QUERY_KEY } from '../PayrollConfiguration/usePayrollConfigurationData'\nimport { derivePayrollCategory, isOffCyclePayroll, PayrollCategory } from '../payrollTypes'\nimport { cleanupReimbursements } from '../helpers'\nimport { RropPayrollEditEmployee } from '../RropPayrollEditEmployee/RropPayrollEditEmployee'\nimport { PayrollEditEmployeePresentation } from './PayrollEditEmployeePresentation'\nimport { useFeature } from '@/contexts/FeaturesProvider/useFeature'\nimport { componentEvents } from '@/shared/constants'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useComponentDictionary } from '@/i18n'\nimport { useBase } from '@/components/Base/useBase'\n\n/**\n * Props for {@link PayrollEditEmployee}.\n *\n * @public\n */\nexport interface PayrollEditEmployeeProps extends BaseComponentInterface<'Payroll.PayrollEditEmployee'> {\n /** The associated employee identifier. */\n employeeId: string\n /** The associated company identifier. */\n companyId: string\n /** The associated payroll identifier. */\n payrollId: string\n /** Whether to show reimbursement fields. Defaults to `true`. */\n withReimbursements?: boolean\n}\n\n/**\n * Editor for an individual employee's compensation within a payroll run.\n *\n * Allows modification of pay rates, hours, time off, additional earnings,\n * reimbursements, and payment method for a single employee on the specified payroll.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/employee/saved` | Fired when employee payroll compensation changes are saved | `{ payrollPrepared, employee }` |\n * | `runPayroll/employee/cancelled` | Fired when the user cancels editing employee payroll compensation | — |\n *\n * @param props - {@link PayrollEditEmployeeProps} plus base component props.\n * @returns The employee compensation editor.\n * @public\n *\n * @example\n * ```tsx\n * import { Payroll } from '@gusto/embedded-react-sdk'\n *\n * function MyComponent() {\n * return (\n * <Payroll.PayrollEditEmployee\n * employeeId=\"your-employee-id\"\n * companyId=\"your-company-id\"\n * payrollId=\"your-payroll-id\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function PayrollEditEmployee(props: PayrollEditEmployeeProps) {\n const isRegularRateOfPayEnabled = useFeature('regularRateOfPay')\n\n if (isRegularRateOfPayEnabled) {\n return <RropPayrollEditEmployee {...props} />\n }\n\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n employeeId,\n companyId,\n payrollId,\n onEvent,\n dictionary,\n withReimbursements = true,\n className,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.PayrollEditEmployee', dictionary)\n\n const queryClient = useQueryClient()\n const { LoadingIndicator, baseSubmitHandler } = useBase()\n\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const { data: bankAccountsList } = useEmployeePaymentMethodsGetBankAccountsSuspense({\n employeeId,\n })\n const memoizedEmployeeId = useMemo(() => [employeeId], [employeeId])\n const { data: payrollData } = usePayrollsGetSuspense({ companyId, payrollId })\n const isTransitionPayroll =\n derivePayrollCategory(payrollData.payrollShow ?? {}) === PayrollCategory.Transition\n const { preparedPayroll, paySchedule, isLoading } = usePreparedPayrollData({\n companyId,\n payrollId,\n employeeUuids: memoizedEmployeeId,\n isTransitionPayroll,\n })\n\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const employee = employeeData.employeeShow!\n const employeeCompensation = preparedPayroll?.employeeCompensations?.find(\n comp => comp.employeeUuid === employeeId,\n )\n const bankAccounts = bankAccountsList.employeeBankAccounts || []\n const hasDirectDepositSetup = bankAccounts.length > 0\n const payrollCategory = derivePayrollCategory(preparedPayroll ?? {})\n const usesItemizedReimbursements = !isOffCyclePayroll(payrollCategory)\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n reimbursements,\n customWithholdings,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n // The legacy editor edits hours, not per-workweek breakdowns, so omit\n // breakdowns and let the API use the hours we send.\n hourlyCompensations: compensation.hourlyCompensations?.map(hourlyCompensation => {\n const { breakdowns, ...hourlyCompensationWithoutBreakdowns } = hourlyCompensation\n return hourlyCompensationWithoutBreakdowns\n }),\n fixedCompensations: compensation.fixedCompensations?.map(fixedCompensation => {\n const { breakdowns, ...fixedCompensationWithoutBreakdowns } = fixedCompensation\n return fixedCompensationWithoutBreakdowns\n }),\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n // Off-cycle payrolls write reimbursements via the legacy fixed_compensations field; the\n // itemized array gets rejected by the `emb_off_cycle_disable_named_reimbursements` backend\n // flag (default-on globally, expected removal 2026-09-01).\n // TODO(post-2026-09-01): drop the branch once the flag is gone.\n ...(usesItemizedReimbursements && reimbursements\n ? { reimbursements: cleanupReimbursements(reimbursements) }\n : {}),\n }\n }\n\n const onSave = async (updatedCompensation: PayrollEmployeeCompensationsType) => {\n const transformedCompensation = transformEmployeeCompensation(updatedCompensation)\n await baseSubmitHandler(null, async () => {\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [transformedCompensation],\n },\n },\n })\n\n await queryClient.invalidateQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n employee,\n })\n })\n }\n\n const onCancel = () => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED)\n }\n\n if (isLoading) {\n return <LoadingIndicator />\n }\n\n return (\n <PayrollEditEmployeePresentation\n className={className}\n onSave={onSave}\n onCancel={onCancel}\n employee={employee}\n isPending={isPending}\n employeeCompensation={employeeCompensation}\n fixedCompensationTypes={preparedPayroll?.fixedCompensationTypes || []}\n payPeriodStartDate={preparedPayroll?.payPeriod?.startDate ?? undefined}\n paySchedule={paySchedule}\n payrollCategory={payrollCategory}\n withReimbursements={withReimbursements}\n hasDirectDepositSetup={hasDirectDepositSetup}\n />\n )\n}\n"],"names":["PayrollEditEmployee","props","useFeature","jsx","RropPayrollEditEmployee","BaseComponent","Root","employeeId","companyId","payrollId","onEvent","dictionary","withReimbursements","className","useComponentDictionary","queryClient","useQueryClient","LoadingIndicator","baseSubmitHandler","useBase","employeeData","useEmployeesGetSuspense","bankAccountsList","useEmployeePaymentMethodsGetBankAccountsSuspense","memoizedEmployeeId","useMemo","payrollData","usePayrollsGetSuspense","isTransitionPayroll","derivePayrollCategory","PayrollCategory","preparedPayroll","paySchedule","isLoading","usePreparedPayrollData","updatePayroll","isPending","usePayrollsUpdateMutation","employee","employeeCompensation","comp","hasDirectDepositSetup","payrollCategory","usesItemizedReimbursements","isOffCyclePayroll","transformEmployeeCompensation","paymentMethod","reimbursements","customWithholdings","compensation","hourlyCompensation","breakdowns","hourlyCompensationWithoutBreakdowns","fixedCompensation","fixedCompensationWithoutBreakdowns","cleanupReimbursements","onSave","updatedCompensation","transformedCompensation","result","PREPARE_QUERY_KEY","componentEvents","onCancel","PayrollEditEmployeePresentation"],"mappings":"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"}
|