@gusto/embedded-react-sdk 0.37.0-rc.2 → 0.37.0-rc.4

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.
Files changed (201) hide show
  1. package/README.md +3 -0
  2. package/dist/components/Common/SignatureForm/SignatureFormActions.js +8 -7
  3. package/dist/components/Common/SignatureForm/SignatureFormActions.js.map +1 -1
  4. package/dist/components/Common/SignatureForm/SignatureFormFields.js +5 -4
  5. package/dist/components/Common/SignatureForm/SignatureFormFields.js.map +1 -1
  6. package/dist/components/Common/UI/DatePicker/DatePicker.d.ts +1 -1
  7. package/dist/components/Common/UI/DatePicker/DatePicker.js +88 -69
  8. package/dist/components/Common/UI/DatePicker/DatePicker.js.map +1 -1
  9. package/dist/components/Common/UI/DatePicker/DatePickerTypes.d.ts +13 -0
  10. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +7 -6
  11. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  12. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +9 -8
  13. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  14. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
  15. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  16. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +7 -6
  17. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  18. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
  19. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  20. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
  21. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  22. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +6 -6
  23. package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
  24. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  25. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +7 -6
  26. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  27. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +8 -7
  28. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  29. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +6 -5
  30. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  31. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  32. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  33. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
  34. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  35. package/dist/components/Company/FederalTaxes/Actions.js +7 -6
  36. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  37. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +6 -5
  38. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  39. package/dist/components/Company/Industry/Actions.js +6 -5
  40. package/dist/components/Company/Industry/Actions.js.map +1 -1
  41. package/dist/components/Company/Industry/Context.js +7 -6
  42. package/dist/components/Company/Industry/Context.js.map +1 -1
  43. package/dist/components/Company/Industry/Edit.js +11 -10
  44. package/dist/components/Company/Industry/Edit.js.map +1 -1
  45. package/dist/components/Company/Locations/LocationForm/Actions.js +3 -2
  46. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  47. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
  48. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  49. package/dist/components/Company/Locations/LocationsList/Actions.js +3 -2
  50. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  51. package/dist/components/Company/Locations/LocationsList/List.js +7 -6
  52. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  53. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
  54. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  55. package/dist/components/Company/OnboardingOverview/context.js +4 -3
  56. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  57. package/dist/components/Company/PaySchedule/PaySchedule.js +60 -58
  58. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  59. package/dist/components/Company/PaySchedule/_parts/Actions.js +11 -10
  60. package/dist/components/Company/PaySchedule/_parts/Actions.js.map +1 -1
  61. package/dist/components/Company/PaySchedule/_parts/Edit.js +40 -37
  62. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  63. package/dist/components/Company/PaySchedule/usePaySchedule.d.ts +1 -0
  64. package/dist/components/Company/PaySchedule/usePaySchedule.js +6 -5
  65. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  66. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +6 -5
  67. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  68. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -3
  69. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  70. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +7 -6
  71. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  72. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +6 -5
  73. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  74. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
  75. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  76. package/dist/components/Contractor/Address/Form.js +4 -4
  77. package/dist/components/Contractor/Address/useAddress.js +6 -5
  78. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  79. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js +3 -2
  80. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js.map +1 -1
  81. package/dist/components/Contractor/Profile/useContractorProfile.js +3 -2
  82. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  83. package/dist/components/Employee/Compensation/Actions.js +1 -1
  84. package/dist/components/Employee/Compensation/List.js +6 -5
  85. package/dist/components/Employee/Compensation/List.js.map +1 -1
  86. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +3 -2
  87. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
  88. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +3 -2
  89. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
  90. package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js +3 -2
  91. package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js.map +1 -1
  92. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js +5 -4
  93. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js.map +1 -1
  94. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  95. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  96. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
  97. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  98. package/dist/components/Employee/EmployeeList/Actions.js +5 -4
  99. package/dist/components/Employee/EmployeeList/Actions.js.map +1 -1
  100. package/dist/components/Employee/EmployeeList/List.js +10 -10
  101. package/dist/components/Employee/EmployeeList/useEmployeeList.js +4 -3
  102. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  103. package/dist/components/Employee/FederalTaxes/Actions.js +3 -2
  104. package/dist/components/Employee/FederalTaxes/Actions.js.map +1 -1
  105. package/dist/components/Employee/FederalTaxes/FederalForm.js +5 -4
  106. package/dist/components/Employee/FederalTaxes/FederalForm.js.map +1 -1
  107. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +4 -3
  108. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
  109. package/dist/components/Employee/PaymentMethod/Actions.js +6 -5
  110. package/dist/components/Employee/PaymentMethod/Actions.js.map +1 -1
  111. package/dist/components/Employee/PaymentMethod/BankAccountsList.js +4 -4
  112. package/dist/components/Employee/PaymentMethod/Split.js +1 -1
  113. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +6 -5
  114. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  115. package/dist/components/Employee/Profile/Actions.js +7 -6
  116. package/dist/components/Employee/Profile/Actions.js.map +1 -1
  117. package/dist/components/Employee/Profile/AdminPersonalDetails.js +5 -4
  118. package/dist/components/Employee/Profile/AdminPersonalDetails.js.map +1 -1
  119. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +9 -8
  120. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  121. package/dist/components/Employee/Profile/useProfile.js +4 -3
  122. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  123. package/dist/components/Employee/StateTaxes/Actions.js +7 -6
  124. package/dist/components/Employee/StateTaxes/Actions.js.map +1 -1
  125. package/dist/components/Employee/StateTaxes/useStateTaxes.js +4 -3
  126. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
  127. package/dist/components/Employee/Taxes/Actions.js +8 -7
  128. package/dist/components/Employee/Taxes/Actions.js.map +1 -1
  129. package/dist/components/Employee/Taxes/FederalForm.js +5 -4
  130. package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
  131. package/dist/components/Employee/Taxes/useTaxes.js +4 -3
  132. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  133. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +48 -48
  134. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
  135. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js +15 -14
  136. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js.map +1 -1
  137. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +44 -46
  138. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
  139. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +3 -2
  140. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  141. package/dist/components/Payroll/GrossUpModal/GrossUpModal.module.scss.js +4 -4
  142. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js +25 -23
  143. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +1 -1
  144. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +11 -10
  145. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  146. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +1 -0
  147. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
  148. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +3 -2
  149. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
  150. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +105 -106
  151. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  152. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +54 -54
  153. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  154. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +2 -1
  155. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js +29 -27
  156. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
  157. package/dist/components/Payroll/PayrollExecutionFlow/index.d.ts +1 -1
  158. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.d.ts +1 -1
  159. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +60 -60
  160. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
  161. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js +22 -20
  162. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js.map +1 -1
  163. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +143 -143
  164. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  165. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +44 -55
  166. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
  167. package/dist/components/Payroll/helpers.d.ts +1 -0
  168. package/dist/components/Payroll/helpers.js +71 -69
  169. package/dist/components/Payroll/helpers.js.map +1 -1
  170. package/dist/components/Payroll/usePreparedPayrollData.js +3 -2
  171. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  172. package/dist/components/UNSTABLE_Hooks/form/fields/CheckboxHookField.js +9 -8
  173. package/dist/components/UNSTABLE_Hooks/form/fields/CheckboxHookField.js.map +1 -1
  174. package/dist/components/UNSTABLE_Hooks/form/fields/NumberInputHookField.js +12 -11
  175. package/dist/components/UNSTABLE_Hooks/form/fields/NumberInputHookField.js.map +1 -1
  176. package/dist/components/UNSTABLE_Hooks/form/fields/RadioGroupHookField.js +3 -2
  177. package/dist/components/UNSTABLE_Hooks/form/fields/RadioGroupHookField.js.map +1 -1
  178. package/dist/components/UNSTABLE_Hooks/form/fields/SelectHookField.js +8 -7
  179. package/dist/components/UNSTABLE_Hooks/form/fields/SelectHookField.js.map +1 -1
  180. package/dist/components/UNSTABLE_Hooks/form/fields/SwitchHookField.js +9 -8
  181. package/dist/components/UNSTABLE_Hooks/form/fields/SwitchHookField.js.map +1 -1
  182. package/dist/components/UNSTABLE_Hooks/form/fields/TextInputHookField.js +13 -12
  183. package/dist/components/UNSTABLE_Hooks/form/fields/TextInputHookField.js.map +1 -1
  184. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/CompensationForm.js +4 -4
  185. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/compensationSchema.d.ts +4 -4
  186. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/compensationSchema.js +86 -89
  187. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/compensationSchema.js.map +1 -1
  188. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/EmployeeDetailsForm.js +1 -1
  189. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/WorkAddressForm.js +1 -1
  190. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +3 -2
  191. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  192. package/dist/i18n/en/Company.PaySchedule.json.js +6 -6
  193. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +38 -34
  194. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js.map +1 -1
  195. package/dist/i18n/en/Payroll.PayrollOverview.json.js +62 -58
  196. package/dist/i18n/en/Payroll.PayrollOverview.json.js.map +1 -1
  197. package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js +8 -8
  198. package/dist/style.css +1 -1
  199. package/dist/types/i18next.d.ts +6 -1
  200. package/docs/reference/endpoint-inventory.json +9 -0
  201. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useEffect, useState, type ReactNode } from 'react'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { payrollsCalculate } from '@gusto/embedded-api/funcs/payrollsCalculate'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport type { PayrollProcessingRequest } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { PayrollProcessingRequestStatus } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport { useTranslation } from 'react-i18next'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport { usePayrollsCalculateGrossUpMutation } from '@gusto/embedded-api/react-query/payrollsCalculateGrossUp'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { usePayrollsGetBlockersSuspense } from '@gusto/embedded-api/react-query/payrollsGetBlockers'\nimport { payrollSubmitHandler, type ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { GrossUpModal } from '../GrossUpModal'\nimport { PayrollConfigurationPresentation } from './PayrollConfigurationPresentation'\nimport { usePayrollConfigurationData } from './usePayrollConfigurationData'\nimport { getGrossUpTargetCompensationName, isGrossUpEligible } from './grossUpHelpers'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useBase } from '@/components/Base'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { SDKInternalError } from '@/types/sdkError'\n\nconst isCalculatingStatus = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.Calculating\n\nconst isCalculatedStatus = (\n processingRequest?: PayrollProcessingRequest | null,\n calculatedAt?: Date | null,\n) =>\n calculatedAt != null &&\n (processingRequest?.status === PayrollProcessingRequestStatus.CalculateSuccess ||\n processingRequest == null)\n\ninterface PayrollConfigurationProps extends BaseComponentInterface<'Payroll.PayrollConfiguration'> {\n companyId: string\n payrollId: string\n alerts?: ReactNode\n withReimbursements?: boolean\n}\n\nexport function PayrollConfiguration(props: PayrollConfigurationProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n onEvent,\n companyId,\n payrollId,\n dictionary,\n alerts,\n withReimbursements = true,\n}: PayrollConfigurationProps) => {\n useComponentDictionary('Payroll.PayrollConfiguration', dictionary)\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { baseSubmitHandler } = useBase()\n const dateFormatter = useDateFormatter()\n\n const [isPolling, setIsPolling] = useState(false)\n const [isCalculatingPayroll, setIsCalculatingPayroll] = useState(false)\n const gustoClient = useGustoEmbeddedContext()\n\n const {\n employeeDetails,\n employeeCompensations,\n paySchedule,\n payPeriod,\n payrollCategory,\n pagination,\n isLoading,\n refetch,\n } = usePayrollConfigurationData({\n companyId,\n payrollId,\n isCalculating: isPolling || isCalculatingPayroll,\n })\n\n const { data: payrollData } = usePayrollsGetSuspense(\n {\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions', 'payroll_status_meta'],\n },\n { refetchInterval: isPolling ? 5_000 : false },\n )\n\n const { mutateAsync: updatePayroll, isPending: isUpdatingPayroll } = usePayrollsUpdateMutation()\n\n const { mutateAsync: calculateGrossUpMutation } = usePayrollsCalculateGrossUpMutation()\n\n const [grossUpEmployeeUuid, setGrossUpEmployeeUuid] = useState<string | null>(null)\n const [isGrossUpModalOpen, setIsGrossUpModalOpen] = useState(false)\n\n const grossUpEnabled = isGrossUpEligible(payrollCategory)\n const grossUpTargetCompensation = getGrossUpTargetCompensationName(payrollCategory)\n\n const onGrossUpSelect = (employeeUuid: string) => {\n setGrossUpEmployeeUuid(employeeUuid)\n setIsGrossUpModalOpen(true)\n onEvent(componentEvents.RUN_PAYROLL_GROSS_UP_SELECTED, { employeeUuid })\n }\n\n const onCalculateGrossUp = async (netPay: number): Promise<string | null> => {\n if (!grossUpEmployeeUuid) return null\n let grossUp: string | null = null\n\n await baseSubmitHandler(null, async () => {\n const result = await calculateGrossUpMutation({\n request: {\n payrollUuid: payrollId,\n payrollGrossUpRequest: {\n employeeUuid: grossUpEmployeeUuid,\n netPay: netPay.toString(),\n },\n },\n })\n\n grossUp = result.payrollGrossUpResponse?.grossUp ?? null\n\n if (grossUp) {\n onEvent(componentEvents.RUN_PAYROLL_GROSS_UP_CALCULATED, {\n grossUp,\n netPay,\n employeeUuid: grossUpEmployeeUuid,\n })\n }\n })\n\n return grossUp\n }\n\n const onGrossUpApply = async (grossAmount: string) => {\n if (!grossUpEmployeeUuid || !grossUpTargetCompensation) {\n throw new SDKInternalError(\n 'Unable to apply gross-up: missing employee or target compensation.',\n )\n }\n\n const employeeComp = employeeCompensations.find(ec => ec.employeeUuid === grossUpEmployeeUuid)\n if (!employeeComp) {\n throw new SDKInternalError('Unable to apply gross-up: employee compensation not found.')\n }\n\n const existingFixed = employeeComp.fixedCompensations ?? []\n const hasTargetCompensation = existingFixed.some(\n fc => fc.name?.toLowerCase() === grossUpTargetCompensation.toLowerCase(),\n )\n\n const updatedFixedCompensations = existingFixed.map(fc => ({\n name: fc.name,\n jobUuid: fc.jobUuid,\n amount:\n fc.name?.toLowerCase() === grossUpTargetCompensation.toLowerCase() ? grossAmount : '0',\n }))\n\n if (!hasTargetCompensation) {\n const primaryJobUuid =\n employeeComp.hourlyCompensations?.[0]?.jobUuid ?? existingFixed[0]?.jobUuid ?? ''\n updatedFixedCompensations.push({\n name: grossUpTargetCompensation,\n jobUuid: primaryJobUuid,\n amount: grossAmount,\n })\n }\n\n const updatedHourlyCompensations = (employeeComp.hourlyCompensations ?? []).map(hc => ({\n name: hc.name,\n jobUuid: hc.jobUuid,\n hours: '0',\n }))\n\n const updatedPaidTimeOff = (employeeComp.paidTimeOff ?? []).map(pto => ({\n name: pto.name,\n hours: '0',\n }))\n\n const transformedCompensation = transformEmployeeCompensation({\n ...employeeComp,\n fixedCompensations: updatedFixedCompensations,\n hourlyCompensations: updatedHourlyCompensations,\n paidTimeOff: updatedPaidTimeOff,\n })\n\n await baseSubmitHandler({}, async () => {\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [{ ...transformedCompensation, excluded: false }],\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n })\n await refetch()\n })\n\n setGrossUpEmployeeUuid(null)\n setIsGrossUpModalOpen(false)\n }\n\n const handleGrossUpApply = async (grossAmount: string) => {\n try {\n await onGrossUpApply(grossAmount)\n } catch {\n // Modal stays open; error is surfaced by baseSubmitHandler\n }\n }\n\n const { data: blockersData } = usePayrollsGetBlockersSuspense({\n companyUuid: companyId,\n })\n\n const payrollBlockerList = blockersData.payrollBlockers ?? []\n\n const blockersFromApi: ApiPayrollBlocker[] = payrollBlockerList.map(blocker => ({\n key: blocker.key,\n message: blocker.message,\n }))\n\n const [payrollBlockers, setPayrollBlockers] = useState(blockersFromApi)\n\n const onCalculatePayroll = async () => {\n setPayrollBlockers([])\n\n await baseSubmitHandler({}, async () => {\n const result = await payrollSubmitHandler(async () => {\n setIsCalculatingPayroll(true)\n try {\n const calcResult = await payrollsCalculate(gustoClient, {\n companyId,\n payrollId,\n })\n if (!calcResult.ok) {\n throw calcResult.error\n }\n setIsPolling(true)\n } finally {\n setIsCalculatingPayroll(false)\n }\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n\n const onEdit = (employee: Employee) => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT, {\n employeeId: employee.uuid,\n firstName: employee.firstName,\n lastName: employee.lastName,\n })\n }\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n reimbursements,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n }\n }\n\n const onToggleExclude = async (employeeCompensation: PayrollEmployeeCompensationsType) => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SKIP, {\n employeeId: employeeCompensation.employeeUuid,\n })\n await baseSubmitHandler({}, async () => {\n const transformedCompensation = transformEmployeeCompensation(employeeCompensation)\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [\n { ...transformedCompensation, excluded: !transformedCompensation.excluded },\n ],\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n })\n await refetch()\n })\n }\n\n const onViewBlockers = () => {\n onEvent(componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL)\n }\n\n useEffect(() => {\n if (isCalculatingStatus(payrollData.payrollShow?.processingRequest) && !isPolling) {\n setIsPolling(true)\n }\n if (\n isPolling &&\n isCalculatedStatus(\n payrollData.payrollShow?.processingRequest,\n payrollData.payrollShow?.calculatedAt,\n )\n ) {\n onEvent(componentEvents.RUN_PAYROLL_CALCULATED, {\n payrollId,\n alert: {\n type: 'success',\n title: t('alerts.progressSaved'),\n alertKey: 'progressSaved',\n },\n payPeriod: payrollData.payrollShow?.payPeriod,\n })\n setPayrollBlockers([])\n setIsPolling(false)\n }\n if (\n isPolling &&\n payrollData.payrollShow?.processingRequest?.status ===\n PayrollProcessingRequestStatus.ProcessingFailed\n ) {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setIsPolling(false)\n }\n }, [\n payrollData.payrollShow?.processingRequest?.status,\n payrollData.payrollShow?.calculatedAt,\n isPolling,\n onEvent,\n t,\n payrollId,\n ])\n\n useEffect(() => {\n if (!isPolling) return\n\n const POLLING_TIMEOUT_MS = 3 * 60 * 1000\n const timeoutId = setTimeout(() => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setIsPolling(false)\n }, POLLING_TIMEOUT_MS)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }, [isPolling, onEvent])\n\n const payrollAlert =\n payrollData.payrollShow?.payrollStatusMeta?.payrollLate &&\n payrollData.payrollShow.payrollStatusMeta.initialCheckDate &&\n payrollData.payrollShow.payrollStatusMeta.expectedDebitTime &&\n payrollData.payrollShow.payrollStatusMeta.expectedCheckDate\n ? {\n label: t('alerts.payrollLate', {\n initialCheckDate: dateFormatter.formatShortWithWeekday(\n payrollData.payrollShow.payrollStatusMeta.initialCheckDate,\n ),\n }),\n content: t('alerts.payrollLateText', {\n ...dateFormatter.formatWithTime(\n payrollData.payrollShow.payrollStatusMeta.expectedDebitTime,\n ),\n newCheckDate: dateFormatter.formatShortWithWeekday(\n payrollData.payrollShow.payrollStatusMeta.expectedCheckDate,\n ),\n }),\n variant: 'warning' as const,\n }\n : payrollData.payrollShow\n ? {\n label: t('alerts.directDepositDeadline', {\n payDate: dateFormatter.formatShortWithWeekday(payrollData.payrollShow.checkDate),\n ...dateFormatter.formatWithTime(payrollData.payrollShow.payrollDeadline),\n }),\n content: t('alerts.directDepositDeadlineText'),\n variant: 'info' as const,\n }\n : undefined\n\n return (\n <>\n <PayrollConfigurationPresentation\n onCalculatePayroll={onCalculatePayroll}\n isCalculateDisabled={blockersFromApi.length > 0}\n onEdit={onEdit}\n onToggleExclude={onToggleExclude}\n onViewBlockers={onViewBlockers}\n employeeCompensations={employeeCompensations}\n employeeDetails={employeeDetails}\n payPeriod={payPeriod}\n paySchedule={paySchedule}\n payrollCategory={payrollCategory}\n alerts={alerts}\n payrollAlert={payrollAlert}\n isPending={isPolling || isLoading || isUpdatingPayroll || isCalculatingPayroll}\n isCalculating={isCalculatingPayroll || isPolling}\n payrollBlockers={payrollBlockers}\n pagination={pagination}\n withReimbursements={withReimbursements}\n grossUpEnabled={grossUpEnabled}\n onGrossUpSelect={onGrossUpSelect}\n />\n {grossUpEnabled && (\n <GrossUpModal\n isOpen={isGrossUpModalOpen}\n onCalculateGrossUp={onCalculateGrossUp}\n onApply={handleGrossUpApply}\n onCancel={() => {\n setIsGrossUpModalOpen(false)\n }}\n />\n )}\n </>\n )\n}\n"],"names":["isCalculatingStatus","processingRequest","PayrollProcessingRequestStatus","isCalculatedStatus","calculatedAt","PayrollConfiguration","props","jsx","BaseComponent","Root","onEvent","companyId","payrollId","dictionary","alerts","withReimbursements","useComponentDictionary","useI18n","t","useTranslation","baseSubmitHandler","useBase","dateFormatter","useDateFormatter","isPolling","setIsPolling","useState","isCalculatingPayroll","setIsCalculatingPayroll","gustoClient","useGustoEmbeddedContext","employeeDetails","employeeCompensations","paySchedule","payPeriod","payrollCategory","pagination","isLoading","refetch","usePayrollConfigurationData","payrollData","usePayrollsGetSuspense","updatePayroll","isUpdatingPayroll","usePayrollsUpdateMutation","calculateGrossUpMutation","usePayrollsCalculateGrossUpMutation","grossUpEmployeeUuid","setGrossUpEmployeeUuid","isGrossUpModalOpen","setIsGrossUpModalOpen","grossUpEnabled","isGrossUpEligible","grossUpTargetCompensation","getGrossUpTargetCompensationName","onGrossUpSelect","employeeUuid","componentEvents","onCalculateGrossUp","netPay","grossUp","onGrossUpApply","grossAmount","SDKInternalError","employeeComp","ec","existingFixed","hasTargetCompensation","fc","updatedFixedCompensations","primaryJobUuid","updatedHourlyCompensations","hc","updatedPaidTimeOff","pto","transformedCompensation","transformEmployeeCompensation","result","handleGrossUpApply","blockersData","usePayrollsGetBlockersSuspense","blockersFromApi","blocker","payrollBlockers","setPayrollBlockers","onCalculatePayroll","payrollSubmitHandler","calcResult","payrollsCalculate","onEdit","employee","paymentMethod","reimbursements","compensation","onToggleExclude","employeeCompensation","onViewBlockers","useEffect","POLLING_TIMEOUT_MS","timeoutId","payrollAlert","jsxs","Fragment","PayrollConfigurationPresentation","GrossUpModal"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type ReactNode } from 'react'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { payrollsCalculate } from '@gusto/embedded-api/funcs/payrollsCalculate'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport type { PayrollProcessingRequest } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { PayrollProcessingRequestStatus } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport { useTranslation } from 'react-i18next'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport { usePayrollsCalculateGrossUpMutation } from '@gusto/embedded-api/react-query/payrollsCalculateGrossUp'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { usePayrollsGetBlockersSuspense } from '@gusto/embedded-api/react-query/payrollsGetBlockers'\nimport { payrollSubmitHandler, type ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { GrossUpModal } from '../GrossUpModal'\nimport { PayrollConfigurationPresentation } from './PayrollConfigurationPresentation'\nimport { usePayrollConfigurationData } from './usePayrollConfigurationData'\nimport { getGrossUpTargetCompensationName, isGrossUpEligible } from './grossUpHelpers'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useBase } from '@/components/Base'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { SDKInternalError } from '@/types/sdkError'\n\nconst isCalculatingStatus = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.Calculating\n\nconst isCalculatedStatus = (\n processingRequest?: PayrollProcessingRequest | null,\n calculatedAt?: Date | null,\n) =>\n calculatedAt != null &&\n (processingRequest?.status === PayrollProcessingRequestStatus.CalculateSuccess ||\n processingRequest == null)\n\ninterface PayrollConfigurationProps extends BaseComponentInterface<'Payroll.PayrollConfiguration'> {\n companyId: string\n payrollId: string\n alerts?: ReactNode\n withReimbursements?: boolean\n}\n\nexport function PayrollConfiguration(props: PayrollConfigurationProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n onEvent,\n companyId,\n payrollId,\n dictionary,\n alerts,\n withReimbursements = true,\n}: PayrollConfigurationProps) => {\n useComponentDictionary('Payroll.PayrollConfiguration', dictionary)\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { baseSubmitHandler } = useBase()\n const dateFormatter = useDateFormatter()\n\n const [isPolling, setIsPolling] = useState(false)\n const [isCalculatingPayroll, setIsCalculatingPayroll] = useState(false)\n const previousCalculatedAtRef = useRef<number | null>(null)\n const gustoClient = useGustoEmbeddedContext()\n\n const {\n employeeDetails,\n employeeCompensations,\n paySchedule,\n payPeriod,\n payrollCategory,\n pagination,\n isLoading,\n refetch,\n } = usePayrollConfigurationData({\n companyId,\n payrollId,\n isCalculating: isPolling || isCalculatingPayroll,\n })\n\n const { data: payrollData } = usePayrollsGetSuspense(\n {\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions', 'payroll_status_meta'],\n },\n { refetchInterval: isPolling ? 5_000 : false },\n )\n\n const { mutateAsync: updatePayroll, isPending: isUpdatingPayroll } = usePayrollsUpdateMutation()\n\n const { mutateAsync: calculateGrossUpMutation } = usePayrollsCalculateGrossUpMutation()\n\n const [grossUpEmployeeUuid, setGrossUpEmployeeUuid] = useState<string | null>(null)\n const [isGrossUpModalOpen, setIsGrossUpModalOpen] = useState(false)\n\n const grossUpEnabled = isGrossUpEligible(payrollCategory)\n const grossUpTargetCompensation = getGrossUpTargetCompensationName(payrollCategory)\n\n const onGrossUpSelect = (employeeUuid: string) => {\n setGrossUpEmployeeUuid(employeeUuid)\n setIsGrossUpModalOpen(true)\n onEvent(componentEvents.RUN_PAYROLL_GROSS_UP_SELECTED, { employeeUuid })\n }\n\n const onCalculateGrossUp = async (netPay: number): Promise<string | null> => {\n if (!grossUpEmployeeUuid) return null\n let grossUp: string | null = null\n\n await baseSubmitHandler(null, async () => {\n const result = await calculateGrossUpMutation({\n request: {\n payrollUuid: payrollId,\n payrollGrossUpRequest: {\n employeeUuid: grossUpEmployeeUuid,\n netPay: netPay.toString(),\n },\n },\n })\n\n grossUp = result.payrollGrossUpResponse?.grossUp ?? null\n\n if (grossUp) {\n onEvent(componentEvents.RUN_PAYROLL_GROSS_UP_CALCULATED, {\n grossUp,\n netPay,\n employeeUuid: grossUpEmployeeUuid,\n })\n }\n })\n\n return grossUp\n }\n\n const onGrossUpApply = async (grossAmount: string) => {\n if (!grossUpEmployeeUuid || !grossUpTargetCompensation) {\n throw new SDKInternalError(\n 'Unable to apply gross-up: missing employee or target compensation.',\n )\n }\n\n const employeeComp = employeeCompensations.find(ec => ec.employeeUuid === grossUpEmployeeUuid)\n if (!employeeComp) {\n throw new SDKInternalError('Unable to apply gross-up: employee compensation not found.')\n }\n\n const existingFixed = employeeComp.fixedCompensations ?? []\n const hasTargetCompensation = existingFixed.some(\n fc => fc.name?.toLowerCase() === grossUpTargetCompensation.toLowerCase(),\n )\n\n const updatedFixedCompensations = existingFixed.map(fc => ({\n name: fc.name,\n jobUuid: fc.jobUuid,\n amount:\n fc.name?.toLowerCase() === grossUpTargetCompensation.toLowerCase() ? grossAmount : '0',\n }))\n\n if (!hasTargetCompensation) {\n const primaryJobUuid =\n employeeComp.hourlyCompensations?.[0]?.jobUuid ?? existingFixed[0]?.jobUuid ?? ''\n updatedFixedCompensations.push({\n name: grossUpTargetCompensation,\n jobUuid: primaryJobUuid,\n amount: grossAmount,\n })\n }\n\n const updatedHourlyCompensations = (employeeComp.hourlyCompensations ?? []).map(hc => ({\n name: hc.name,\n jobUuid: hc.jobUuid,\n hours: '0',\n }))\n\n const updatedPaidTimeOff = (employeeComp.paidTimeOff ?? []).map(pto => ({\n name: pto.name,\n hours: '0',\n }))\n\n const transformedCompensation = transformEmployeeCompensation({\n ...employeeComp,\n fixedCompensations: updatedFixedCompensations,\n hourlyCompensations: updatedHourlyCompensations,\n paidTimeOff: updatedPaidTimeOff,\n })\n\n await baseSubmitHandler({}, async () => {\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [{ ...transformedCompensation, excluded: false }],\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n })\n await refetch()\n })\n\n setGrossUpEmployeeUuid(null)\n setIsGrossUpModalOpen(false)\n }\n\n const handleGrossUpApply = async (grossAmount: string) => {\n try {\n await onGrossUpApply(grossAmount)\n } catch {\n // Modal stays open; error is surfaced by baseSubmitHandler\n }\n }\n\n const { data: blockersData } = usePayrollsGetBlockersSuspense({\n companyUuid: companyId,\n })\n\n const payrollBlockerList = blockersData.payrollBlockers ?? []\n\n const blockersFromApi: ApiPayrollBlocker[] = payrollBlockerList.map(blocker => ({\n key: blocker.key,\n message: blocker.message,\n }))\n\n const [payrollBlockers, setPayrollBlockers] = useState(blockersFromApi)\n\n const onCalculatePayroll = async () => {\n setPayrollBlockers([])\n previousCalculatedAtRef.current = payrollData.payrollShow?.calculatedAt?.getTime() ?? null\n\n await baseSubmitHandler({}, async () => {\n const result = await payrollSubmitHandler(async () => {\n setIsCalculatingPayroll(true)\n try {\n const calcResult = await payrollsCalculate(gustoClient, {\n companyId,\n payrollId,\n })\n if (!calcResult.ok) {\n throw calcResult.error\n }\n setIsPolling(true)\n } finally {\n setIsCalculatingPayroll(false)\n }\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n\n const onEdit = (employee: Employee) => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT, {\n employeeId: employee.uuid,\n firstName: employee.firstName,\n lastName: employee.lastName,\n })\n }\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n reimbursements,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n }\n }\n\n const onToggleExclude = async (employeeCompensation: PayrollEmployeeCompensationsType) => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SKIP, {\n employeeId: employeeCompensation.employeeUuid,\n })\n await baseSubmitHandler({}, async () => {\n const transformedCompensation = transformEmployeeCompensation(employeeCompensation)\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [\n { ...transformedCompensation, excluded: !transformedCompensation.excluded },\n ],\n },\n },\n })\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n })\n await refetch()\n })\n }\n\n const onViewBlockers = () => {\n onEvent(componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL)\n }\n\n useEffect(() => {\n if (isCalculatingStatus(payrollData.payrollShow?.processingRequest) && !isPolling) {\n previousCalculatedAtRef.current = payrollData.payrollShow?.calculatedAt?.getTime() ?? null\n setIsPolling(true)\n }\n const currentCalculatedAt = payrollData.payrollShow?.calculatedAt\n const isNewCalculation = currentCalculatedAt?.getTime() !== previousCalculatedAtRef.current\n if (\n isPolling &&\n isNewCalculation &&\n isCalculatedStatus(payrollData.payrollShow?.processingRequest, currentCalculatedAt)\n ) {\n onEvent(componentEvents.RUN_PAYROLL_CALCULATED, {\n payrollId,\n alert: {\n type: 'success',\n title: t('alerts.progressSaved'),\n alertKey: 'progressSaved',\n },\n payPeriod: payrollData.payrollShow?.payPeriod,\n })\n setPayrollBlockers([])\n setIsPolling(false)\n }\n if (\n isPolling &&\n payrollData.payrollShow?.processingRequest?.status ===\n PayrollProcessingRequestStatus.ProcessingFailed\n ) {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setIsPolling(false)\n }\n }, [\n payrollData.payrollShow?.processingRequest?.status,\n payrollData.payrollShow?.calculatedAt,\n isPolling,\n onEvent,\n t,\n payrollId,\n ])\n\n useEffect(() => {\n if (!isPolling) return\n\n const POLLING_TIMEOUT_MS = 3 * 60 * 1000\n const timeoutId = setTimeout(() => {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setIsPolling(false)\n }, POLLING_TIMEOUT_MS)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }, [isPolling, onEvent])\n\n const payrollAlert =\n payrollData.payrollShow?.payrollStatusMeta?.payrollLate &&\n payrollData.payrollShow.payrollStatusMeta.initialCheckDate &&\n payrollData.payrollShow.payrollStatusMeta.expectedDebitTime &&\n payrollData.payrollShow.payrollStatusMeta.expectedCheckDate\n ? {\n label: t('alerts.payrollLate', {\n initialCheckDate: dateFormatter.formatShortWithWeekday(\n payrollData.payrollShow.payrollStatusMeta.initialCheckDate,\n ),\n }),\n content: t('alerts.payrollLateText', {\n ...dateFormatter.formatWithTime(\n payrollData.payrollShow.payrollStatusMeta.expectedDebitTime,\n ),\n newCheckDate: dateFormatter.formatShortWithWeekday(\n payrollData.payrollShow.payrollStatusMeta.expectedCheckDate,\n ),\n }),\n variant: 'warning' as const,\n }\n : payrollData.payrollShow\n ? {\n label: t('alerts.directDepositDeadline', {\n payDate: dateFormatter.formatShortWithWeekday(payrollData.payrollShow.checkDate),\n ...dateFormatter.formatWithTime(payrollData.payrollShow.payrollDeadline),\n }),\n content: t('alerts.directDepositDeadlineText'),\n variant: 'info' as const,\n }\n : undefined\n\n return (\n <>\n <PayrollConfigurationPresentation\n onCalculatePayroll={onCalculatePayroll}\n isCalculateDisabled={blockersFromApi.length > 0}\n onEdit={onEdit}\n onToggleExclude={onToggleExclude}\n onViewBlockers={onViewBlockers}\n employeeCompensations={employeeCompensations}\n employeeDetails={employeeDetails}\n payPeriod={payPeriod}\n paySchedule={paySchedule}\n payrollCategory={payrollCategory}\n alerts={alerts}\n payrollAlert={payrollAlert}\n isPending={isPolling || isLoading || isUpdatingPayroll || isCalculatingPayroll}\n isCalculating={isCalculatingPayroll || isPolling}\n payrollBlockers={payrollBlockers}\n pagination={pagination}\n withReimbursements={withReimbursements}\n grossUpEnabled={grossUpEnabled}\n onGrossUpSelect={onGrossUpSelect}\n />\n {grossUpEnabled && (\n <GrossUpModal\n isOpen={isGrossUpModalOpen}\n onCalculateGrossUp={onCalculateGrossUp}\n onApply={handleGrossUpApply}\n onCancel={() => {\n setIsGrossUpModalOpen(false)\n }}\n />\n )}\n </>\n )\n}\n"],"names":["isCalculatingStatus","processingRequest","PayrollProcessingRequestStatus","isCalculatedStatus","calculatedAt","PayrollConfiguration","props","jsx","BaseComponent","Root","onEvent","companyId","payrollId","dictionary","alerts","withReimbursements","useComponentDictionary","useI18n","t","useTranslation","baseSubmitHandler","useBase","dateFormatter","useDateFormatter","isPolling","setIsPolling","useState","isCalculatingPayroll","setIsCalculatingPayroll","previousCalculatedAtRef","useRef","gustoClient","useGustoEmbeddedContext","employeeDetails","employeeCompensations","paySchedule","payPeriod","payrollCategory","pagination","isLoading","refetch","usePayrollConfigurationData","payrollData","usePayrollsGetSuspense","updatePayroll","isUpdatingPayroll","usePayrollsUpdateMutation","calculateGrossUpMutation","usePayrollsCalculateGrossUpMutation","grossUpEmployeeUuid","setGrossUpEmployeeUuid","isGrossUpModalOpen","setIsGrossUpModalOpen","grossUpEnabled","isGrossUpEligible","grossUpTargetCompensation","getGrossUpTargetCompensationName","onGrossUpSelect","employeeUuid","componentEvents","onCalculateGrossUp","netPay","grossUp","onGrossUpApply","grossAmount","SDKInternalError","employeeComp","ec","existingFixed","hasTargetCompensation","fc","updatedFixedCompensations","primaryJobUuid","updatedHourlyCompensations","hc","updatedPaidTimeOff","pto","transformedCompensation","transformEmployeeCompensation","result","handleGrossUpApply","blockersData","usePayrollsGetBlockersSuspense","blockersFromApi","blocker","payrollBlockers","setPayrollBlockers","onCalculatePayroll","payrollSubmitHandler","calcResult","payrollsCalculate","onEdit","employee","paymentMethod","reimbursements","compensation","onToggleExclude","employeeCompensation","onViewBlockers","useEffect","currentCalculatedAt","isNewCalculation","POLLING_TIMEOUT_MS","timeoutId","payrollAlert","jsxs","Fragment","PayrollConfigurationPresentation","GrossUpModal"],"mappings":"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"}
@@ -1,19 +1,19 @@
1
- import { jsx as r, jsxs as o, Fragment as A } from "react/jsx-runtime";
2
- import { useRef as O } from "react";
3
- import { useTranslation as V, Trans as _ } from "react-i18next";
4
- import { useFormatEmployeePayRate as z, getRegularHours as K, getOvertimeHours as W, formatHoursDisplay as H, getTotalPtoHours as X, getAdditionalEarnings as q, getReimbursements as J, calculateGrossPay as Q } from "../helpers.js";
5
- import { PayrollCategory as Y } from "../payrollTypes.js";
1
+ import { jsx as r, jsxs as o, Fragment as O } from "react/jsx-runtime";
2
+ import { useRef as V } from "react";
3
+ import { useTranslation as _, Trans as z } from "react-i18next";
4
+ import { useFormatEmployeePayRate as K, getRegularHours as W, getOvertimeHours as X, formatHoursDisplay as H, getTotalPtoHours as q, getAdditionalEarnings as J, getReimbursements as Q, calculateGrossPay as Y } from "../helpers.js";
5
+ import { PayrollCategory as M } from "../payrollTypes.js";
6
6
  import { PayrollBlockerAlerts as Z } from "../PayrollBlocker/components/PayrollBlockerAlerts.js";
7
7
  import $ from "./PayrollConfigurationPresentation.module.scss.js";
8
8
  import { useI18n as ee } from "../../../i18n/I18n.js";
9
- import { Flex as u, FlexItem as y } from "../../Common/Flex/Flex.js";
9
+ import { Flex as u, FlexItem as h } from "../../Common/Flex/Flex.js";
10
10
  import { Grid as te } from "../../Common/Grid/Grid.js";
11
11
  import { useComponentContext as re } from "../../../contexts/ComponentAdapter/useComponentContext.js";
12
12
  import ne from "../../../assets/icons/pencil.svg.js";
13
13
  import oe from "../../../assets/icons/x-circle.svg.js";
14
14
  import ie from "../../../assets/icons/plus-circle.svg.js";
15
15
  import le from "../../../assets/icons/coins-hand.svg.js";
16
- import { formatNumberAsCurrency as h, firstLastName as ae } from "../../../helpers/formattedStrings.js";
16
+ import { formatNumberAsCurrency as b, firstLastName as ae } from "../../../helpers/formattedStrings.js";
17
17
  import { useDateFormatter as se } from "../../../hooks/useDateFormatter.js";
18
18
  import me from "../../../hooks/useContainerBreakpoints/useContainerBreakpoints.js";
19
19
  import { PayrollLoading as ce } from "../../Common/PayrollLoading/PayrollLoading.js";
@@ -23,26 +23,26 @@ const pe = (i, p) => i?.startDate && i.endDate ? p.formatPayPeriod(i.startDate,
23
23
  employeeCompensations: i,
24
24
  employeeDetails: p,
25
25
  payPeriod: f,
26
- paySchedule: M,
27
- onEdit: w,
28
- onToggleExclude: E,
29
- onCalculatePayroll: b,
30
- onViewBlockers: R,
31
- payrollCategory: D = Y.Regular,
26
+ paySchedule: w,
27
+ onEdit: E,
28
+ onToggleExclude: R,
29
+ onCalculatePayroll: D,
30
+ onViewBlockers: N,
31
+ payrollCategory: g = M.Regular,
32
32
  alerts: C,
33
33
  payrollAlert: m,
34
- isPending: g,
34
+ isPending: y,
35
35
  isCalculating: l,
36
36
  payrollBlockers: P = [],
37
- pagination: N,
38
- withReimbursements: U = !0,
37
+ pagination: U,
38
+ withReimbursements: F = !0,
39
39
  isCalculateDisabled: x = !1,
40
- grossUpEnabled: F = !1,
41
- onGrossUpSelect: B
40
+ grossUpEnabled: B = !1,
41
+ onGrossUpSelect: j
42
42
  }) => {
43
- const { Button: k, Heading: T, Text: d, Badge: j, Alert: G } = re();
43
+ const { Button: k, Heading: T, Text: d, Badge: G, Alert: I } = re();
44
44
  ee("Payroll.PayrollConfiguration");
45
- const { t } = V("Payroll.PayrollConfiguration"), I = se(), S = z(), v = O(null), a = me({ ref: v }).includes("small"), c = new Map(p.map((e) => [e.uuid, e])), L = (e) => {
45
+ const { t } = _("Payroll.PayrollConfiguration"), S = se(), L = K(), v = V(null), a = me({ ref: v }).includes("small"), c = new Map(p.map((e) => [e.uuid, e])), A = (e) => {
46
46
  const n = c.get(e);
47
47
  return n ? ae({ first_name: n.firstName, last_name: n.lastName }) : null;
48
48
  };
@@ -55,35 +55,35 @@ const pe = (i, p) => i?.startDate && i.endDate ? p.formatPayPeriod(i.startDate,
55
55
  alignItems: a ? "center" : "stretch",
56
56
  gap: a ? 0 : 16,
57
57
  children: [
58
- /* @__PURE__ */ o(y, { children: [
58
+ /* @__PURE__ */ o(h, { children: [
59
59
  /* @__PURE__ */ r(T, { as: "h1", children: t("pageTitle") }),
60
60
  f && /* @__PURE__ */ r(d, { variant: "supporting", children: /* @__PURE__ */ r(
61
- _,
61
+ z,
62
62
  {
63
- i18nKey: "description",
63
+ i18nKey: g === M.Dismissal ? "descriptionDismissal" : "description",
64
64
  t,
65
65
  components: { dateWrapper: /* @__PURE__ */ r(d, { weight: "bold", as: "span" }) },
66
66
  values: {
67
- ...pe(f, I),
68
- payrollType: D
67
+ ...pe(f, S),
68
+ payrollType: g
69
69
  }
70
70
  }
71
71
  ) })
72
72
  ] }),
73
- /* @__PURE__ */ r(y, { flexGrow: 0, children: a ? /* @__PURE__ */ r(
73
+ /* @__PURE__ */ r(h, { flexGrow: 0, children: a ? /* @__PURE__ */ r(
74
74
  k,
75
75
  {
76
76
  title: t("calculatePayrollTitle"),
77
- onClick: b,
78
- isDisabled: x || g || l,
77
+ onClick: D,
78
+ isDisabled: x || y || l,
79
79
  children: t(l ? "calculatingPayroll" : "calculatePayroll")
80
80
  }
81
81
  ) : /* @__PURE__ */ r(u, { flexDirection: "column", justifyContent: "normal", alignItems: "stretch", gap: 12, children: /* @__PURE__ */ r(
82
82
  k,
83
83
  {
84
84
  title: t("calculatePayrollTitle"),
85
- onClick: b,
86
- isDisabled: x || g || l,
85
+ onClick: D,
86
+ isDisabled: x || y || l,
87
87
  children: t(l ? "calculatingPayroll" : "calculatePayroll")
88
88
  }
89
89
  ) }) })
@@ -91,25 +91,25 @@ const pe = (i, p) => i?.startDate && i.endDate ? p.formatPayPeriod(i.startDate,
91
91
  }
92
92
  ),
93
93
  (C || m) && /* @__PURE__ */ o(te, { gap: 16, gridTemplateColumns: "1fr", children: [
94
- m && /* @__PURE__ */ r(G, { label: m.label, status: m.variant, children: m.content }),
94
+ m && /* @__PURE__ */ r(I, { label: m.label, status: m.variant, children: m.content }),
95
95
  C
96
96
  ] }),
97
- g ? /* @__PURE__ */ r(
97
+ y ? /* @__PURE__ */ r(
98
98
  ce,
99
99
  {
100
100
  title: t(l ? "calculatingTitle" : "loadingTitle"),
101
101
  description: t(l ? "calculatingDescription" : "loadingDescription")
102
102
  }
103
- ) : /* @__PURE__ */ o(A, { children: [
103
+ ) : /* @__PURE__ */ o(O, { children: [
104
104
  P.length > 0 && /* @__PURE__ */ r(
105
105
  Z,
106
106
  {
107
107
  blockers: P,
108
- onViewBlockersClick: R
108
+ onViewBlockersClick: N
109
109
  }
110
110
  ),
111
111
  /* @__PURE__ */ o(u, { flexDirection: "column", gap: 20, children: [
112
- /* @__PURE__ */ o(y, { children: [
112
+ /* @__PURE__ */ o(h, { children: [
113
113
  /* @__PURE__ */ r(T, { as: "h3", children: t("hoursAndEarningsTitle") }),
114
114
  /* @__PURE__ */ r(d, { variant: "supporting", children: t("hoursAndEarningsDescription") })
115
115
  ] }),
@@ -121,55 +121,55 @@ const pe = (i, p) => i?.startDate && i.endDate ? p.formatPayPeriod(i.startDate,
121
121
  {
122
122
  title: t("tableColumns.employees"),
123
123
  render: (e) => {
124
- const n = c.get(e.employeeUuid || ""), s = S(n);
124
+ const n = c.get(e.employeeUuid || ""), s = L(n);
125
125
  return /* @__PURE__ */ o(u, { flexDirection: "column", gap: 0, children: [
126
- L(e.employeeUuid || ""),
126
+ A(e.employeeUuid || ""),
127
127
  s && /* @__PURE__ */ r(d, { size: "xs", variant: "supporting", children: s }),
128
- e.excluded && /* @__PURE__ */ r(j, { status: "warning", children: t("skippedBadge") })
128
+ e.excluded && /* @__PURE__ */ r(G, { status: "warning", children: t("skippedBadge") })
129
129
  ] });
130
130
  }
131
131
  },
132
132
  {
133
133
  title: t("tableColumns.hours"),
134
134
  render: (e) => {
135
- const n = K(e), s = W(e);
135
+ const n = W(e), s = X(e);
136
136
  return H(n + s);
137
137
  }
138
138
  },
139
139
  {
140
140
  title: t("tableColumns.timeOff"),
141
141
  render: (e) => {
142
- const n = X(e);
142
+ const n = q(e);
143
143
  return H(n);
144
144
  }
145
145
  },
146
146
  {
147
147
  title: t("tableColumns.additionalEarnings"),
148
148
  render: (e) => {
149
- const n = q(e);
150
- return h(n);
149
+ const n = J(e);
150
+ return b(n);
151
151
  }
152
152
  },
153
- ...U ? [
153
+ ...F ? [
154
154
  {
155
155
  title: t("tableColumns.reimbursements"),
156
156
  render: (e) => {
157
- const n = J(e);
158
- return h(n);
157
+ const n = Q(e);
158
+ return b(n);
159
159
  }
160
160
  }
161
161
  ] : [],
162
162
  {
163
163
  title: t("tableColumns.totalPay"),
164
164
  render: (e) => {
165
- const n = c.get(e.employeeUuid || ""), s = n ? Q(
165
+ const n = c.get(e.employeeUuid || ""), s = n ? Y(
166
166
  e,
167
167
  n,
168
168
  f?.startDate,
169
- M,
170
- D
169
+ w,
170
+ g
171
171
  ) : 0;
172
- return h(s);
172
+ return b(s);
173
173
  }
174
174
  }
175
175
  ],
@@ -183,22 +183,22 @@ const pe = (i, p) => i?.startDate && i.endDate ? p.formatPayPeriod(i.startDate,
183
183
  icon: /* @__PURE__ */ r(ne, { "aria-hidden": !0 }),
184
184
  onClick: () => {
185
185
  const n = c.get(e.employeeUuid || "");
186
- n && w(n);
186
+ n && E(n);
187
187
  }
188
188
  },
189
189
  {
190
190
  label: t(e.excluded ? "editMenu.unskip" : "editMenu.skip"),
191
191
  icon: e.excluded ? /* @__PURE__ */ r(ie, { "aria-hidden": !0 }) : /* @__PURE__ */ r(oe, { "aria-hidden": !0 }),
192
192
  onClick: () => {
193
- c.get(e.employeeUuid || "") && E(e);
193
+ c.get(e.employeeUuid || "") && R(e);
194
194
  }
195
195
  },
196
- ...F ? [
196
+ ...B ? [
197
197
  {
198
198
  label: t("editMenu.setNetEarnings"),
199
199
  icon: /* @__PURE__ */ r(le, { "aria-hidden": !0 }),
200
200
  onClick: () => {
201
- e.employeeUuid && B?.(e.employeeUuid);
201
+ e.employeeUuid && j?.(e.employeeUuid);
202
202
  }
203
203
  }
204
204
  ] : []
@@ -206,7 +206,7 @@ const pe = (i, p) => i?.startDate && i.endDate ? p.formatPayPeriod(i.startDate,
206
206
  triggerLabel: t("editMenu.edit")
207
207
  }
208
208
  ),
209
- pagination: N
209
+ pagination: U
210
210
  }
211
211
  )
212
212
  ] })
@@ -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 type { EmployeeCompensations } from '@gusto/embedded-api/models/components/payroll'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport { Trans, useTranslation } from 'react-i18next'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\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'\n\ninterface PayrollConfigurationPresentationProps {\n employeeCompensations: EmployeeCompensations[]\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\nexport const PayrollConfigurationPresentation = ({\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 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 return employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : null\n }\n\n return (\n <div ref={containerRef} className={styles.container}>\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=\"description\"\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=\"h3\">{t('hoursAndEarningsTitle')}</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: EmployeeCompensations) => {\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 render: (item: EmployeeCompensations) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return formatHoursDisplay(hours + overtimeHours)\n },\n },\n {\n title: t('tableColumns.timeOff'),\n render: (item: EmployeeCompensations) => {\n const ptoHours = getTotalPtoHours(item)\n return formatHoursDisplay(ptoHours)\n },\n },\n {\n title: t('tableColumns.additionalEarnings'),\n render: (item: EmployeeCompensations) => {\n const earnings = getAdditionalEarnings(item)\n return formatNumberAsCurrency(earnings)\n },\n },\n ...(withReimbursements\n ? [\n {\n title: t('tableColumns.reimbursements'),\n render: (item: EmployeeCompensations) => {\n const reimbursements = getReimbursements(item)\n return formatNumberAsCurrency(reimbursements)\n },\n },\n ]\n : []),\n {\n title: t('tableColumns.totalPay'),\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate,\n paySchedule,\n payrollCategory,\n )\n : 0\n return formatNumberAsCurrency(calculatedGrossPay)\n },\n },\n ]}\n data={employeeCompensations}\n itemMenu={(item: EmployeeCompensations) => (\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","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","containerRef","useRef","isDesktop","useContainerBreakpoints","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsx","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 type { EmployeeCompensations } from '@gusto/embedded-api/models/components/payroll'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport { Trans, useTranslation } from 'react-i18next'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\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'\n\ninterface PayrollConfigurationPresentationProps {\n employeeCompensations: EmployeeCompensations[]\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\nexport const PayrollConfigurationPresentation = ({\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 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 return employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : null\n }\n\n return (\n <div ref={containerRef} className={styles.container}>\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=\"h3\">{t('hoursAndEarningsTitle')}</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: EmployeeCompensations) => {\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 render: (item: EmployeeCompensations) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return formatHoursDisplay(hours + overtimeHours)\n },\n },\n {\n title: t('tableColumns.timeOff'),\n render: (item: EmployeeCompensations) => {\n const ptoHours = getTotalPtoHours(item)\n return formatHoursDisplay(ptoHours)\n },\n },\n {\n title: t('tableColumns.additionalEarnings'),\n render: (item: EmployeeCompensations) => {\n const earnings = getAdditionalEarnings(item)\n return formatNumberAsCurrency(earnings)\n },\n },\n ...(withReimbursements\n ? [\n {\n title: t('tableColumns.reimbursements'),\n render: (item: EmployeeCompensations) => {\n const reimbursements = getReimbursements(item)\n return formatNumberAsCurrency(reimbursements)\n },\n },\n ]\n : []),\n {\n title: t('tableColumns.totalPay'),\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate,\n paySchedule,\n payrollCategory,\n )\n : 0\n return formatNumberAsCurrency(calculatedGrossPay)\n },\n },\n ]}\n data={employeeCompensations}\n itemMenu={(item: EmployeeCompensations) => (\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","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","containerRef","useRef","isDesktop","useContainerBreakpoints","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsx","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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"}
@@ -9,9 +9,10 @@ export interface PayrollExecutionFlowProps {
9
9
  payrollId: string;
10
10
  onEvent: OnEventType<EventType, unknown>;
11
11
  initialPayPeriod?: PayrollPayPeriodType;
12
+ isDismissalPayroll?: boolean;
12
13
  withReimbursements?: boolean;
13
14
  ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType;
14
15
  prefixBreadcrumbs?: FlowBreadcrumb[];
15
16
  initialState?: PayrollExecutionInitialState;
16
17
  }
17
- export declare function PayrollExecutionFlow({ companyId, payrollId, onEvent, initialPayPeriod, withReimbursements, ConfirmWireDetailsComponent, prefixBreadcrumbs, initialState, }: PayrollExecutionFlowProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function PayrollExecutionFlow({ companyId, payrollId, onEvent, initialPayPeriod, isDismissalPayroll: isDismissal, withReimbursements, ConfirmWireDetailsComponent, prefixBreadcrumbs, initialState, }: PayrollExecutionFlowProps): import("react/jsx-runtime").JSX.Element;
@@ -1,61 +1,62 @@
1
- import { jsx as d } from "react/jsx-runtime";
2
- import { useMemo as i } from "react";
3
- import { createMachine as x } from "robot3";
1
+ import { jsx as P } from "react/jsx-runtime";
2
+ import { useMemo as x } from "react";
3
+ import { createMachine as y } from "robot3";
4
4
  import { SaveAndExitCta as C, PayrollOverviewContextual as E, PayrollConfigurationContextual as M } from "../PayrollFlow/PayrollFlowComponents.js";
5
- import { payrollExecutionMachine as v, payrollExecutionBreadcrumbsNodes as y } from "./payrollExecutionMachine.js";
5
+ import { payrollExecutionMachine as g, getPayrollExecutionBreadcrumbsNodes as v } from "./payrollExecutionMachine.js";
6
6
  import { Flow as B } from "../../Flow/Flow.js";
7
- import { buildBreadcrumbs as P, updateBreadcrumbs as g } from "../../../helpers/breadcrumbHelpers.js";
8
- const A = [], w = {
7
+ import { buildBreadcrumbs as A, updateBreadcrumbs as w } from "../../../helpers/breadcrumbHelpers.js";
8
+ const N = [], O = {
9
9
  configuration: M,
10
10
  overview: E
11
- }, N = {
11
+ }, I = {
12
12
  configuration: "Payroll.PayrollConfiguration",
13
13
  overview: "Payroll.PayrollOverview"
14
14
  };
15
- function j({
15
+ function U({
16
16
  companyId: t,
17
17
  payrollId: a,
18
- onEvent: m,
18
+ onEvent: l,
19
19
  initialPayPeriod: o,
20
- withReimbursements: c = !0,
21
- ConfirmWireDetailsComponent: n,
22
- prefixBreadcrumbs: u = A,
20
+ isDismissalPayroll: c = !1,
21
+ withReimbursements: n = !0,
22
+ ConfirmWireDetailsComponent: u,
23
+ prefixBreadcrumbs: s = N,
23
24
  initialState: r = "configuration"
24
25
  }) {
25
- const s = i(() => {
26
- const l = P(y), p = Object.fromEntries(
27
- Object.entries(l).map(([e, f]) => [
26
+ const m = x(() => {
27
+ const b = v(c), d = A(b), f = Object.fromEntries(
28
+ Object.entries(d).map(([e, i]) => [
28
29
  e,
29
- [...u, ...f]
30
+ [...s, ...i]
30
31
  ])
31
- ), b = g(
32
+ ), p = w(
32
33
  r,
33
34
  {
34
- breadcrumbs: p
35
+ breadcrumbs: f
35
36
  },
36
37
  {
37
38
  startDate: o?.startDate ?? "",
38
39
  endDate: o?.endDate ?? ""
39
40
  }
40
41
  );
41
- return x(
42
+ return y(
42
43
  r,
43
- v,
44
+ g,
44
45
  (e) => ({
45
46
  ...e,
46
- ...b,
47
- component: w[r],
47
+ ...p,
48
+ component: O[r],
48
49
  companyId: t,
49
50
  payrollUuid: a,
50
51
  payPeriod: o,
51
52
  progressBarType: "breadcrumbs",
52
53
  currentBreadcrumbId: r,
53
- withReimbursements: c,
54
- ConfirmWireDetailsComponent: n,
54
+ withReimbursements: n,
55
+ ConfirmWireDetailsComponent: u,
55
56
  progressBarCta: C,
56
57
  ctaConfig: {
57
58
  labelKey: "exitFlowCta",
58
- namespace: N[r]
59
+ namespace: I[r]
59
60
  }
60
61
  })
61
62
  );
@@ -65,11 +66,12 @@ function j({
65
66
  c,
66
67
  n,
67
68
  u,
69
+ s,
68
70
  r
69
71
  ]);
70
- return /* @__PURE__ */ d(B, { machine: s, onEvent: m });
72
+ return /* @__PURE__ */ P(B, { machine: m, onEvent: l });
71
73
  }
72
74
  export {
73
- j as PayrollExecutionFlow
75
+ U as PayrollExecutionFlow
74
76
  };
75
77
  //# sourceMappingURL=PayrollExecutionFlow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollExecutionFlow.js","sources":["../../../../src/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { createMachine } from 'robot3'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { ConfirmWireDetailsComponentType } from '../ConfirmWireDetails/ConfirmWireDetails'\nimport {\n PayrollConfigurationContextual,\n PayrollOverviewContextual,\n SaveAndExitCta,\n type PayrollFlowContextInterface,\n} from '../PayrollFlow/PayrollFlowComponents'\nimport {\n payrollExecutionMachine,\n payrollExecutionBreadcrumbsNodes,\n} from './payrollExecutionMachine'\nimport { Flow } from '@/components/Flow/Flow'\nimport type { FlowBreadcrumb } from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { buildBreadcrumbs, updateBreadcrumbs } from '@/helpers/breadcrumbHelpers'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport type { EventType } from '@/shared/constants'\n\nconst EMPTY_BREADCRUMBS: FlowBreadcrumb[] = []\n\nexport type PayrollExecutionInitialState = 'configuration' | 'overview'\n\nexport interface PayrollExecutionFlowProps {\n companyId: string\n payrollId: string\n onEvent: OnEventType<EventType, unknown>\n initialPayPeriod?: PayrollPayPeriodType\n withReimbursements?: boolean\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n prefixBreadcrumbs?: FlowBreadcrumb[]\n initialState?: PayrollExecutionInitialState\n}\n\nconst INITIAL_COMPONENT_MAP = {\n configuration: PayrollConfigurationContextual,\n overview: PayrollOverviewContextual,\n} as const\n\nconst INITIAL_NAMESPACE_MAP = {\n configuration: 'Payroll.PayrollConfiguration' as const,\n overview: 'Payroll.PayrollOverview' as const,\n} as const\n\nexport function PayrollExecutionFlow({\n companyId,\n payrollId,\n onEvent,\n initialPayPeriod,\n withReimbursements = true,\n ConfirmWireDetailsComponent,\n prefixBreadcrumbs = EMPTY_BREADCRUMBS,\n initialState = 'configuration',\n}: PayrollExecutionFlowProps) {\n const executionFlowMachine = useMemo(() => {\n const baseBreadcrumbs = buildBreadcrumbs(payrollExecutionBreadcrumbsNodes)\n const breadcrumbs = Object.fromEntries(\n Object.entries(baseBreadcrumbs).map(([stateKey, trail]) => [\n stateKey,\n [...prefixBreadcrumbs, ...trail],\n ]),\n )\n\n const initialBreadcrumbContext = updateBreadcrumbs(\n initialState,\n {\n breadcrumbs,\n } as PayrollFlowContextInterface,\n {\n startDate: initialPayPeriod?.startDate ?? '',\n endDate: initialPayPeriod?.endDate ?? '',\n },\n )\n\n return createMachine(\n initialState,\n payrollExecutionMachine,\n (initialContext: PayrollFlowContextInterface) => ({\n ...initialContext,\n ...initialBreadcrumbContext,\n component: INITIAL_COMPONENT_MAP[initialState],\n companyId,\n payrollUuid: payrollId,\n payPeriod: initialPayPeriod,\n progressBarType: 'breadcrumbs' as const,\n currentBreadcrumbId: initialState,\n withReimbursements,\n ConfirmWireDetailsComponent,\n progressBarCta: SaveAndExitCta,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: INITIAL_NAMESPACE_MAP[initialState],\n },\n }),\n )\n }, [\n companyId,\n payrollId,\n withReimbursements,\n ConfirmWireDetailsComponent,\n prefixBreadcrumbs,\n initialState,\n ])\n\n return <Flow machine={executionFlowMachine} onEvent={onEvent} />\n}\n"],"names":["EMPTY_BREADCRUMBS","INITIAL_COMPONENT_MAP","PayrollConfigurationContextual","PayrollOverviewContextual","INITIAL_NAMESPACE_MAP","PayrollExecutionFlow","companyId","payrollId","onEvent","initialPayPeriod","withReimbursements","ConfirmWireDetailsComponent","prefixBreadcrumbs","initialState","executionFlowMachine","useMemo","baseBreadcrumbs","buildBreadcrumbs","payrollExecutionBreadcrumbsNodes","breadcrumbs","stateKey","trail","initialBreadcrumbContext","updateBreadcrumbs","createMachine","payrollExecutionMachine","initialContext","SaveAndExitCta","jsx","Flow"],"mappings":";;;;;;;AAoBA,MAAMA,IAAsC,CAAA,GAetCC,IAAwB;AAAA,EAC5B,eAAeC;AAAA,EACf,UAAUC;AACZ,GAEMC,IAAwB;AAAA,EAC5B,eAAe;AAAA,EACf,UAAU;AACZ;AAEO,SAASC,EAAqB;AAAA,EACnC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,oBAAAC,IAAqB;AAAA,EACrB,6BAAAC;AAAA,EACA,mBAAAC,IAAoBZ;AAAA,EACpB,cAAAa,IAAe;AACjB,GAA8B;AAC5B,QAAMC,IAAuBC,EAAQ,MAAM;AACzC,UAAMC,IAAkBC,EAAiBC,CAAgC,GACnEC,IAAc,OAAO;AAAA,MACzB,OAAO,QAAQH,CAAe,EAAE,IAAI,CAAC,CAACI,GAAUC,CAAK,MAAM;AAAA,QACzDD;AAAA,QACA,CAAC,GAAGR,GAAmB,GAAGS,CAAK;AAAA,MAAA,CAChC;AAAA,IAAA,GAGGC,IAA2BC;AAAA,MAC/BV;AAAA,MACA;AAAA,QACE,aAAAM;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,WAAWV,GAAkB,aAAa;AAAA,QAC1C,SAASA,GAAkB,WAAW;AAAA,MAAA;AAAA,IACxC;AAGF,WAAOe;AAAA,MACLX;AAAA,MACAY;AAAA,MACA,CAACC,OAAiD;AAAA,QAChD,GAAGA;AAAA,QACH,GAAGJ;AAAA,QACH,WAAWrB,EAAsBY,CAAY;AAAA,QAC7C,WAAAP;AAAA,QACA,aAAaC;AAAA,QACb,WAAWE;AAAA,QACX,iBAAiB;AAAA,QACjB,qBAAqBI;AAAA,QACrB,oBAAAH;AAAA,QACA,6BAAAC;AAAA,QACA,gBAAgBgB;AAAA,QAChB,WAAW;AAAA,UACT,UAAU;AAAA,UACV,WAAWvB,EAAsBS,CAAY;AAAA,QAAA;AAAA,MAC/C;AAAA,IACF;AAAA,EAEJ,GAAG;AAAA,IACDP;AAAA,IACAC;AAAA,IACAG;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,CACD;AAED,SAAO,gBAAAe,EAACC,GAAA,EAAK,SAASf,GAAsB,SAAAN,EAAA,CAAkB;AAChE;"}
1
+ {"version":3,"file":"PayrollExecutionFlow.js","sources":["../../../../src/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { createMachine } from 'robot3'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { ConfirmWireDetailsComponentType } from '../ConfirmWireDetails/ConfirmWireDetails'\nimport {\n PayrollConfigurationContextual,\n PayrollOverviewContextual,\n SaveAndExitCta,\n type PayrollFlowContextInterface,\n} from '../PayrollFlow/PayrollFlowComponents'\nimport {\n payrollExecutionMachine,\n getPayrollExecutionBreadcrumbsNodes,\n} from './payrollExecutionMachine'\nimport { Flow } from '@/components/Flow/Flow'\nimport type { FlowBreadcrumb } from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { buildBreadcrumbs, updateBreadcrumbs } from '@/helpers/breadcrumbHelpers'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport type { EventType } from '@/shared/constants'\n\nconst EMPTY_BREADCRUMBS: FlowBreadcrumb[] = []\n\nexport type PayrollExecutionInitialState = 'configuration' | 'overview'\n\nexport interface PayrollExecutionFlowProps {\n companyId: string\n payrollId: string\n onEvent: OnEventType<EventType, unknown>\n initialPayPeriod?: PayrollPayPeriodType\n isDismissalPayroll?: boolean\n withReimbursements?: boolean\n ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType\n prefixBreadcrumbs?: FlowBreadcrumb[]\n initialState?: PayrollExecutionInitialState\n}\n\nconst INITIAL_COMPONENT_MAP = {\n configuration: PayrollConfigurationContextual,\n overview: PayrollOverviewContextual,\n} as const\n\nconst INITIAL_NAMESPACE_MAP = {\n configuration: 'Payroll.PayrollConfiguration' as const,\n overview: 'Payroll.PayrollOverview' as const,\n} as const\n\nexport function PayrollExecutionFlow({\n companyId,\n payrollId,\n onEvent,\n initialPayPeriod,\n isDismissalPayroll: isDismissal = false,\n withReimbursements = true,\n ConfirmWireDetailsComponent,\n prefixBreadcrumbs = EMPTY_BREADCRUMBS,\n initialState = 'configuration',\n}: PayrollExecutionFlowProps) {\n const executionFlowMachine = useMemo(() => {\n const breadcrumbNodes = getPayrollExecutionBreadcrumbsNodes(isDismissal)\n const baseBreadcrumbs = buildBreadcrumbs(breadcrumbNodes)\n const breadcrumbs = Object.fromEntries(\n Object.entries(baseBreadcrumbs).map(([stateKey, trail]) => [\n stateKey,\n [...prefixBreadcrumbs, ...trail],\n ]),\n )\n\n const initialBreadcrumbContext = updateBreadcrumbs(\n initialState,\n {\n breadcrumbs,\n } as PayrollFlowContextInterface,\n {\n startDate: initialPayPeriod?.startDate ?? '',\n endDate: initialPayPeriod?.endDate ?? '',\n },\n )\n\n return createMachine(\n initialState,\n payrollExecutionMachine,\n (initialContext: PayrollFlowContextInterface) => ({\n ...initialContext,\n ...initialBreadcrumbContext,\n component: INITIAL_COMPONENT_MAP[initialState],\n companyId,\n payrollUuid: payrollId,\n payPeriod: initialPayPeriod,\n progressBarType: 'breadcrumbs' as const,\n currentBreadcrumbId: initialState,\n withReimbursements,\n ConfirmWireDetailsComponent,\n progressBarCta: SaveAndExitCta,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: INITIAL_NAMESPACE_MAP[initialState],\n },\n }),\n )\n }, [\n companyId,\n payrollId,\n isDismissal,\n withReimbursements,\n ConfirmWireDetailsComponent,\n prefixBreadcrumbs,\n initialState,\n ])\n\n return <Flow machine={executionFlowMachine} onEvent={onEvent} />\n}\n"],"names":["EMPTY_BREADCRUMBS","INITIAL_COMPONENT_MAP","PayrollConfigurationContextual","PayrollOverviewContextual","INITIAL_NAMESPACE_MAP","PayrollExecutionFlow","companyId","payrollId","onEvent","initialPayPeriod","isDismissal","withReimbursements","ConfirmWireDetailsComponent","prefixBreadcrumbs","initialState","executionFlowMachine","useMemo","breadcrumbNodes","getPayrollExecutionBreadcrumbsNodes","baseBreadcrumbs","buildBreadcrumbs","breadcrumbs","stateKey","trail","initialBreadcrumbContext","updateBreadcrumbs","createMachine","payrollExecutionMachine","initialContext","SaveAndExitCta","jsx","Flow"],"mappings":";;;;;;;AAoBA,MAAMA,IAAsC,CAAA,GAgBtCC,IAAwB;AAAA,EAC5B,eAAeC;AAAA,EACf,UAAUC;AACZ,GAEMC,IAAwB;AAAA,EAC5B,eAAe;AAAA,EACf,UAAU;AACZ;AAEO,SAASC,EAAqB;AAAA,EACnC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,oBAAoBC,IAAc;AAAA,EAClC,oBAAAC,IAAqB;AAAA,EACrB,6BAAAC;AAAA,EACA,mBAAAC,IAAoBb;AAAA,EACpB,cAAAc,IAAe;AACjB,GAA8B;AAC5B,QAAMC,IAAuBC,EAAQ,MAAM;AACzC,UAAMC,IAAkBC,EAAoCR,CAAW,GACjES,IAAkBC,EAAiBH,CAAe,GAClDI,IAAc,OAAO;AAAA,MACzB,OAAO,QAAQF,CAAe,EAAE,IAAI,CAAC,CAACG,GAAUC,CAAK,MAAM;AAAA,QACzDD;AAAA,QACA,CAAC,GAAGT,GAAmB,GAAGU,CAAK;AAAA,MAAA,CAChC;AAAA,IAAA,GAGGC,IAA2BC;AAAA,MAC/BX;AAAA,MACA;AAAA,QACE,aAAAO;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,WAAWZ,GAAkB,aAAa;AAAA,QAC1C,SAASA,GAAkB,WAAW;AAAA,MAAA;AAAA,IACxC;AAGF,WAAOiB;AAAA,MACLZ;AAAA,MACAa;AAAA,MACA,CAACC,OAAiD;AAAA,QAChD,GAAGA;AAAA,QACH,GAAGJ;AAAA,QACH,WAAWvB,EAAsBa,CAAY;AAAA,QAC7C,WAAAR;AAAA,QACA,aAAaC;AAAA,QACb,WAAWE;AAAA,QACX,iBAAiB;AAAA,QACjB,qBAAqBK;AAAA,QACrB,oBAAAH;AAAA,QACA,6BAAAC;AAAA,QACA,gBAAgBiB;AAAA,QAChB,WAAW;AAAA,UACT,UAAU;AAAA,UACV,WAAWzB,EAAsBU,CAAY;AAAA,QAAA;AAAA,MAC/C;AAAA,IACF;AAAA,EAEJ,GAAG;AAAA,IACDR;AAAA,IACAC;AAAA,IACAG;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,CACD;AAED,SAAO,gBAAAgB,EAACC,GAAA,EAAK,SAAShB,GAAsB,SAAAP,EAAA,CAAkB;AAChE;"}