@gusto/embedded-react-sdk 0.15.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/components/Base/Base.js +4 -4
  3. package/dist/components/Common/EmptyData/EmptyData.js +10 -10
  4. package/dist/components/Common/EmptyData/EmptyData.js.map +1 -1
  5. package/dist/components/Common/EmptyData/EmptyData.module.scss.js +5 -3
  6. package/dist/components/Common/EmptyData/EmptyData.module.scss.js.map +1 -1
  7. package/dist/components/Common/FieldDescription/FieldDescription.module.scss.js +1 -1
  8. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbs.d.ts +2 -0
  9. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbs.js +54 -0
  10. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbs.js.map +1 -0
  11. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes.d.ts +44 -0
  12. package/dist/components/Common/FlowBreadcrumbs/index.d.ts +3 -0
  13. package/dist/components/Common/SignatureForm/SignatureForm.js +10 -12
  14. package/dist/components/Common/SignatureForm/SignatureForm.js.map +1 -1
  15. package/dist/components/Common/SignatureForm/SignatureFormActions.js +2 -3
  16. package/dist/components/Common/SignatureForm/SignatureFormActions.js.map +1 -1
  17. package/dist/components/Common/SignatureForm/SignatureFormFields.js +6 -8
  18. package/dist/components/Common/SignatureForm/SignatureFormFields.js.map +1 -1
  19. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.d.ts +2 -0
  20. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +52 -0
  21. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js.map +1 -0
  22. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.module.scss.js +16 -0
  23. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.module.scss.js.map +1 -0
  24. package/dist/components/Common/UI/Breadcrumbs/BreadcrumbsTypes.d.ts +41 -0
  25. package/dist/components/Common/UI/Breadcrumbs/BreadcrumbsTypes.js +8 -0
  26. package/dist/components/Common/UI/Breadcrumbs/BreadcrumbsTypes.js.map +1 -0
  27. package/dist/components/Common/UI/Breadcrumbs/index.d.ts +3 -0
  28. package/dist/components/Common/UI/DescriptionList/DescriptionList.d.ts +2 -0
  29. package/dist/components/Common/UI/DescriptionList/DescriptionList.js +16 -0
  30. package/dist/components/Common/UI/DescriptionList/DescriptionList.js.map +1 -0
  31. package/dist/components/Common/UI/DescriptionList/DescriptionList.module.scss.js +10 -0
  32. package/dist/components/Common/UI/DescriptionList/DescriptionList.module.scss.js.map +1 -0
  33. package/dist/components/Common/UI/DescriptionList/DescriptionListTypes.d.ts +10 -0
  34. package/dist/components/Common/UI/DescriptionList/DescriptionListTypes.js +5 -0
  35. package/dist/components/Common/UI/DescriptionList/DescriptionListTypes.js.map +1 -0
  36. package/dist/components/Common/UI/DescriptionList/index.d.ts +3 -0
  37. package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
  38. package/dist/components/Company/AssignSignatory/AssignSignatory.js +5 -7
  39. package/dist/components/Company/AssignSignatory/AssignSignatory.js.map +1 -1
  40. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +2 -4
  41. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  42. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +2 -3
  43. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  44. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +6 -8
  45. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  46. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +15 -16
  47. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  48. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -5
  49. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  50. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +2 -3
  51. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  52. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +9 -11
  53. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  54. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +9 -10
  55. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  56. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -5
  57. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  58. package/dist/components/Company/AssignSignatory/TitleSelect.js +3 -5
  59. package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
  60. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -7
  61. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  62. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +8 -9
  63. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  64. package/dist/components/Company/BankAccount/BankAccountForm/Form.js +4 -6
  65. package/dist/components/Company/BankAccount/BankAccountForm/Form.js.map +1 -1
  66. package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -5
  67. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  68. package/dist/components/Company/BankAccount/BankAccountList/AccountView.js +22 -17
  69. package/dist/components/Company/BankAccount/BankAccountList/AccountView.js.map +1 -1
  70. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +2 -3
  71. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  72. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +6 -7
  73. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  74. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js +4 -6
  75. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js.map +1 -1
  76. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +2 -3
  77. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  78. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +8 -10
  79. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  80. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -5
  81. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  82. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +7 -9
  83. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  84. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +4 -5
  85. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  86. package/dist/components/Company/FederalTaxes/Actions.js +6 -7
  87. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  88. package/dist/components/Company/FederalTaxes/FederalTaxes.js +2 -4
  89. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  90. package/dist/components/Company/FederalTaxes/Form.js +4 -4
  91. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +9 -10
  92. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  93. package/dist/components/Company/Industry/Actions.js +7 -8
  94. package/dist/components/Company/Industry/Actions.js.map +1 -1
  95. package/dist/components/Company/Industry/Context.js +7 -8
  96. package/dist/components/Company/Industry/Context.js.map +1 -1
  97. package/dist/components/Company/Industry/Edit.js +2 -4
  98. package/dist/components/Company/Industry/Edit.js.map +1 -1
  99. package/dist/components/Company/Locations/LocationForm/Actions.js +6 -7
  100. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  101. package/dist/components/Company/Locations/LocationForm/Form.js +5 -7
  102. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  103. package/dist/components/Company/Locations/LocationForm/LocationForm.js +8 -10
  104. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  105. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -5
  106. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  107. package/dist/components/Company/Locations/LocationsList/Actions.js +2 -3
  108. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  109. package/dist/components/Company/Locations/LocationsList/List.js +9 -9
  110. package/dist/components/Company/Locations/LocationsList/LocationsList.js +2 -3
  111. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  112. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -5
  113. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  114. package/dist/components/Company/OnboardingFlow/OnboardingFlow.js +10 -10
  115. package/dist/components/Company/OnboardingFlow/OnboardingFlow.js.map +1 -1
  116. package/dist/components/Company/OnboardingFlow/onboardingStateMachine.js +16 -10
  117. package/dist/components/Company/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  118. package/dist/components/Company/OnboardingOverview/Completed.js +2 -3
  119. package/dist/components/Company/OnboardingOverview/Completed.js.map +1 -1
  120. package/dist/components/Company/OnboardingOverview/MissingRequirements.js +6 -7
  121. package/dist/components/Company/OnboardingOverview/MissingRequirements.js.map +1 -1
  122. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +6 -8
  123. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  124. package/dist/components/Company/OnboardingOverview/context.js +4 -5
  125. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  126. package/dist/components/Company/PaySchedule/PaySchedule.js +2 -3
  127. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  128. package/dist/components/Company/PaySchedule/_parts/Actions.js +2 -3
  129. package/dist/components/Company/PaySchedule/_parts/Actions.js.map +1 -1
  130. package/dist/components/Company/PaySchedule/_parts/Edit.js +17 -17
  131. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  132. package/dist/components/Company/PaySchedule/_parts/Head.js +7 -8
  133. package/dist/components/Company/PaySchedule/_parts/Head.js.map +1 -1
  134. package/dist/components/Company/PaySchedule/_parts/List.js +8 -8
  135. package/dist/components/Company/PaySchedule/usePaySchedule.js +6 -7
  136. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  137. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +2 -3
  138. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  139. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -5
  140. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  141. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +2 -3
  142. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  143. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +2 -3
  144. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  145. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -5
  146. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  147. package/dist/components/Contractor/Address/Address.js +3 -5
  148. package/dist/components/Contractor/Address/Address.js.map +1 -1
  149. package/dist/components/Contractor/Address/Form.js +7 -9
  150. package/dist/components/Contractor/Address/Form.js.map +1 -1
  151. package/dist/components/Contractor/Address/useAddress.js +6 -7
  152. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  153. package/dist/components/Contractor/ContractorList/index.js +4 -4
  154. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js +37 -37
  155. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  156. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js +10 -12
  157. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js.map +1 -1
  158. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js +2 -4
  159. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js.map +1 -1
  160. package/dist/components/Contractor/Profile/ContractorProfileForm.js +15 -15
  161. package/dist/components/Contractor/Profile/useContractorProfile.js +3 -4
  162. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  163. package/dist/components/Contractor/Submit/Submit.js +19 -20
  164. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  165. package/dist/components/Employee/Compensation/Actions.js +12 -13
  166. package/dist/components/Employee/Compensation/Actions.js.map +1 -1
  167. package/dist/components/Employee/Compensation/Edit.js +14 -14
  168. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +9 -10
  169. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
  170. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +31 -32
  171. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
  172. package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js +8 -8
  173. package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js +10 -10
  174. package/dist/components/Employee/Deductions/IncludeDeductionsForm/IncludeDeductionsForm.js +22 -23
  175. package/dist/components/Employee/Deductions/IncludeDeductionsForm/IncludeDeductionsForm.js.map +1 -1
  176. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js +2 -3
  177. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js.map +1 -1
  178. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +2 -4
  179. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  180. package/dist/components/Employee/DocumentSigner/DocumentList/List.js +2 -4
  181. package/dist/components/Employee/DocumentSigner/DocumentList/List.js.map +1 -1
  182. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +4 -5
  183. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  184. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +2 -4
  185. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  186. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +4 -5
  187. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  188. package/dist/components/Employee/EmployeeList/Actions.js +6 -7
  189. package/dist/components/Employee/EmployeeList/Actions.js.map +1 -1
  190. package/dist/components/Employee/EmployeeList/EmployeeList.js +2 -4
  191. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  192. package/dist/components/Employee/EmployeeList/Head.js +2 -3
  193. package/dist/components/Employee/EmployeeList/Head.js.map +1 -1
  194. package/dist/components/Employee/EmployeeList/List.js +10 -10
  195. package/dist/components/Employee/EmployeeList/useEmployeeList.js +4 -5
  196. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  197. package/dist/components/Employee/FederalTaxes/Actions.js +5 -6
  198. package/dist/components/Employee/FederalTaxes/Actions.js.map +1 -1
  199. package/dist/components/Employee/FederalTaxes/FederalForm.js +10 -11
  200. package/dist/components/Employee/FederalTaxes/FederalForm.js.map +1 -1
  201. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +4 -5
  202. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
  203. package/dist/components/Employee/Landing/Landing.js +2 -3
  204. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  205. package/dist/components/Employee/PaymentMethod/Actions.js +5 -6
  206. package/dist/components/Employee/PaymentMethod/Actions.js.map +1 -1
  207. package/dist/components/Employee/PaymentMethod/BankAccountEdit.js +3 -5
  208. package/dist/components/Employee/PaymentMethod/BankAccountEdit.js.map +1 -1
  209. package/dist/components/Employee/PaymentMethod/BankAccountsList.js +4 -4
  210. package/dist/components/Employee/PaymentMethod/PaymentMethod.d.ts +1 -0
  211. package/dist/components/Employee/PaymentMethod/PaymentMethod.js +79 -78
  212. package/dist/components/Employee/PaymentMethod/PaymentMethod.js.map +1 -1
  213. package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js +11 -13
  214. package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js.map +1 -1
  215. package/dist/components/Employee/PaymentMethod/Split.js +7 -7
  216. package/dist/components/Employee/PaymentMethod/usePaymentMethod.d.ts +1 -0
  217. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +6 -7
  218. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  219. package/dist/components/Employee/Profile/Actions.js +5 -6
  220. package/dist/components/Employee/Profile/Actions.js.map +1 -1
  221. package/dist/components/Employee/Profile/AdminPersonalDetails.js +6 -7
  222. package/dist/components/Employee/Profile/AdminPersonalDetails.js.map +1 -1
  223. package/dist/components/Employee/Profile/HomeAddress.js +5 -6
  224. package/dist/components/Employee/Profile/HomeAddress.js.map +1 -1
  225. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +23 -25
  226. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  227. package/dist/components/Employee/Profile/useProfile.js +4 -5
  228. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  229. package/dist/components/Employee/StateTaxes/Actions.js +5 -6
  230. package/dist/components/Employee/StateTaxes/Actions.js.map +1 -1
  231. package/dist/components/Employee/StateTaxes/useStateTaxes.js +4 -5
  232. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
  233. package/dist/components/Employee/Taxes/Actions.js +6 -7
  234. package/dist/components/Employee/Taxes/Actions.js.map +1 -1
  235. package/dist/components/Employee/Taxes/FederalForm.js +10 -11
  236. package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
  237. package/dist/components/Employee/Taxes/useTaxes.js +4 -5
  238. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  239. package/dist/components/Flow/Flow.js +45 -24
  240. package/dist/components/Flow/Flow.js.map +1 -1
  241. package/dist/components/Flow/useFlow.d.ts +10 -1
  242. package/dist/components/Flow/useFlow.js.map +1 -1
  243. package/dist/components/Payroll/PayrollBlocker/PayrollBlocker.d.ts +1 -1
  244. package/dist/components/Payroll/PayrollBlocker/PayrollBlocker.js +16 -16
  245. package/dist/components/Payroll/PayrollBlocker/PayrollBlocker.js.map +1 -1
  246. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js +20 -21
  247. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js.map +1 -1
  248. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +15 -16
  249. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
  250. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +97 -82
  251. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  252. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +5 -1
  253. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +88 -84
  254. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  255. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +39 -40
  256. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  257. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +27 -27
  258. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +6 -6
  259. package/dist/components/Payroll/PayrollFlow/PayrollFlow.d.ts +1 -1
  260. package/dist/components/Payroll/PayrollFlow/PayrollFlow.js +20 -19
  261. package/dist/components/Payroll/PayrollFlow/PayrollFlow.js.map +1 -1
  262. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +5 -3
  263. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +65 -45
  264. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
  265. package/dist/components/Payroll/PayrollFlow/index.d.ts +1 -1
  266. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.d.ts +2 -0
  267. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +233 -96
  268. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
  269. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +10 -10
  270. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +8 -9
  271. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  272. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +12 -12
  273. package/dist/components/Payroll/PayrollOverview/PayrollOverview.d.ts +1 -2
  274. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +41 -45
  275. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  276. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -2
  277. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +93 -95
  278. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  279. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.d.ts +1 -2
  280. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +12 -26
  281. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
  282. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +1 -2
  283. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +40 -44
  284. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  285. package/dist/components/Payroll/usePreparedPayrollData.js +3 -4
  286. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  287. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js +46 -42
  288. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js.map +1 -1
  289. package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +2 -0
  290. package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +4 -0
  291. package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
  292. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +2 -3
  293. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  294. package/dist/helpers/breadcrumbHelpers.d.ts +33 -0
  295. package/dist/helpers/breadcrumbHelpers.js +46 -0
  296. package/dist/helpers/breadcrumbHelpers.js.map +1 -0
  297. package/dist/helpers/breadcrumbHelpers.test.d.ts +1 -0
  298. package/dist/helpers/dateFormatting.d.ts +4 -0
  299. package/dist/helpers/dateFormatting.js +30 -14
  300. package/dist/helpers/dateFormatting.js.map +1 -1
  301. package/dist/i18n/I18n.d.ts +1 -1
  302. package/dist/i18n/I18n.js +32 -23
  303. package/dist/i18n/I18n.js.map +1 -1
  304. package/dist/i18n/en/Company.PaySchedule.json.js +2 -2
  305. package/dist/i18n/en/Employee.PaymentMethod.json.js +70 -66
  306. package/dist/i18n/en/Employee.PaymentMethod.json.js.map +1 -1
  307. package/dist/i18n/en/Payroll.PayrollBlocker.json.js +28 -0
  308. package/dist/i18n/en/Payroll.PayrollBlocker.json.js.map +1 -0
  309. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +28 -24
  310. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js.map +1 -1
  311. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +28 -26
  312. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
  313. package/dist/i18n/en/Payroll.PayrollFlow.json.js +8 -0
  314. package/dist/i18n/en/Payroll.PayrollFlow.json.js.map +1 -0
  315. package/dist/i18n/en/Payroll.PayrollLanding.json.js +2 -2
  316. package/dist/i18n/en/Payroll.PayrollOverview.json.js +60 -56
  317. package/dist/i18n/en/Payroll.PayrollOverview.json.js.map +1 -1
  318. package/dist/i18n/en/Payroll.PayrollReceipts.json.js +16 -12
  319. package/dist/i18n/en/Payroll.PayrollReceipts.json.js.map +1 -1
  320. package/dist/shared/constants.d.ts +3 -0
  321. package/dist/shared/constants.js +11 -9
  322. package/dist/shared/constants.js.map +1 -1
  323. package/dist/style.css +1 -1
  324. package/dist/types/i18next.d.ts +160 -149
  325. package/package.json +8 -8
  326. package/dist/i18n/en/Payroll.RunPayroll.json.js +0 -8
  327. package/dist/i18n/en/Payroll.RunPayroll.json.js.map +0 -1
  328. package/dist/i18n/en/PayrollBlocker.json.js +0 -24
  329. package/dist/i18n/en/PayrollBlocker.json.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useEffect, useMemo, useState, type ReactNode } from 'react'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { usePayrollsCalculateMutation } from '@gusto/embedded-api/react-query/payrollsCalculate'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollProcessingRequest } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { PayrollProcessingRequestStatus } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { useTranslation } from 'react-i18next'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { payrollSubmitHandler, type ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollConfigurationPresentation } from './PayrollConfigurationPresentation'\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 type { PaginationItemsPerPage } from '@/components/Common/PaginationControl/PaginationControlTypes'\n\nconst isCalculating = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.Calculating\nconst isCalculated = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.CalculateSuccess\n\ninterface PayrollConfigurationProps extends BaseComponentInterface<'Payroll.PayrollConfiguration'> {\n companyId: string\n payrollId: string\n alerts?: ReactNode\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}: PayrollConfigurationProps) => {\n useComponentDictionary('Payroll.PayrollConfiguration', dictionary)\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { baseSubmitHandler } = useBase()\n const defaultItemsPerPage = 10\n\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState<PaginationItemsPerPage>(defaultItemsPerPage)\n const [isPolling, setIsPolling] = useState(false)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n\n const { data: employeeData, isFetching: isFetchingEmployeeData } = useEmployeesListSuspense({\n companyId,\n payrollUuid: payrollId, // get back list of employees to specific payroll\n per: itemsPerPage,\n page: currentPage,\n sortBy: 'name', // sort alphanumeric by employee last_names\n })\n\n // get list of employee uuids to filter into prepare endpoint to get back employee_compensation data\n const employeeUuids = useMemo(() => {\n return employeeData.showEmployees?.map(e => e.uuid) || []\n }, [employeeData.showEmployees])\n\n const totalPages = Number(employeeData.httpMeta.response.headers.get('x-total-pages') ?? 1)\n\n const handleItemsPerPageChange = (newCount: PaginationItemsPerPage) => {\n setItemsPerPage(newCount)\n }\n const handleFirstPage = () => {\n setCurrentPage(1)\n }\n const handlePreviousPage = () => {\n setCurrentPage(prevPage => Math.max(prevPage - 1, 1))\n }\n const handleNextPage = () => {\n setCurrentPage(prevPage => Math.min(prevPage + 1, totalPages))\n }\n const handleLastPage = () => {\n setCurrentPage(totalPages)\n }\n\n const pagination = {\n currentPage,\n handleFirstPage,\n handlePreviousPage,\n handleNextPage,\n handleLastPage,\n handleItemsPerPageChange,\n totalPages,\n isFetching: isFetchingEmployeeData,\n itemsPerPage,\n }\n\n const { data: payrollData } = usePayrollsGetSuspense(\n {\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions'],\n },\n { refetchInterval: isPolling ? 5_000 : false },\n )\n\n const { mutateAsync: calculatePayroll } = usePayrollsCalculateMutation()\n\n const { mutateAsync: updatePayroll, isPending: isUpdatingPayroll } = usePayrollsUpdateMutation()\n\n const {\n preparedPayroll,\n paySchedule,\n isLoading: isPrepareLoading,\n handlePreparePayroll,\n } = usePreparedPayrollData({\n companyId,\n payrollId,\n employeeUuids,\n sortBy: 'last_name', // sort alphanumeric by employee last_names to match employees GET\n })\n\n const onCalculatePayroll = async () => {\n // Clear any existing blockers before attempting calculation\n setPayrollBlockers([])\n\n await baseSubmitHandler({}, async () => {\n const result = await payrollSubmitHandler(async () => {\n await calculatePayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setIsPolling(true)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onEdit = (employee: Employee) => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT, { employeeId: employee.uuid })\n }\n const transformEmployeeCompensation = ({\n paymentMethod,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\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 // Refresh preparedPayroll to get updated data\n await handlePreparePayroll()\n })\n }\n\n const onViewBlockers = () => {\n onEvent(componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL)\n }\n\n useEffect(() => {\n // Start polling when payroll is calculating and not already polling\n if (isCalculating(payrollData.payrollShow?.processingRequest) && !isPolling) {\n setIsPolling(true)\n }\n // Stop polling and emit event when payroll is calculated successfully\n if (isPolling && isCalculated(payrollData.payrollShow?.processingRequest)) {\n onEvent(componentEvents.RUN_PAYROLL_CALCULATED, {\n payrollId,\n alert: { type: 'success', title: t('alerts.progressSaved') },\n })\n // Clear blockers on successful calculation\n setPayrollBlockers([])\n setIsPolling(false)\n }\n // If we are polling and payroll is in failed state, stop polling, and emit failure event\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,\n isPolling,\n onEvent,\n t,\n payrollId,\n payrollData.payrollShow?.calculatedAt,\n ])\n\n return (\n <PayrollConfigurationPresentation\n onCalculatePayroll={onCalculatePayroll}\n onEdit={onEdit}\n onToggleExclude={onToggleExclude}\n onViewBlockers={onViewBlockers}\n employeeCompensations={preparedPayroll?.employeeCompensations || []}\n employeeDetails={employeeData.showEmployees || []}\n payPeriod={preparedPayroll?.payPeriod}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n alerts={alerts}\n isPending={isPolling || isPrepareLoading || isUpdatingPayroll}\n payrollBlockers={payrollBlockers}\n pagination={pagination}\n />\n )\n}\n"],"names":["isCalculating","processingRequest","PayrollProcessingRequestStatus","isCalculated","PayrollConfiguration","props","jsx","BaseComponent","Root","onEvent","companyId","payrollId","dictionary","alerts","useComponentDictionary","useI18n","t","useTranslation","baseSubmitHandler","useBase","defaultItemsPerPage","currentPage","setCurrentPage","useState","itemsPerPage","setItemsPerPage","isPolling","setIsPolling","payrollBlockers","setPayrollBlockers","employeeData","isFetchingEmployeeData","useEmployeesListSuspense","employeeUuids","useMemo","totalPages","pagination","prevPage","newCount","payrollData","usePayrollsGetSuspense","calculatePayroll","usePayrollsCalculateMutation","updatePayroll","isUpdatingPayroll","usePayrollsUpdateMutation","preparedPayroll","paySchedule","isPrepareLoading","handlePreparePayroll","usePreparedPayrollData","onCalculatePayroll","result","payrollSubmitHandler","onEdit","employee","componentEvents","transformEmployeeCompensation","paymentMethod","compensation","onToggleExclude","employeeCompensation","transformedCompensation","onViewBlockers","useEffect","PayrollConfigurationPresentation"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useEffect, useMemo, useState, type ReactNode } from 'react'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { usePayrollsCalculateMutation } from '@gusto/embedded-api/react-query/payrollsCalculate'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollProcessingRequest } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { PayrollProcessingRequestStatus } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { useTranslation } from 'react-i18next'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { payrollSubmitHandler, type ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollConfigurationPresentation } from './PayrollConfigurationPresentation'\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 type { PaginationItemsPerPage } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport {\n formatDateNamedWeekdayShortPlusDate,\n formatDateTimeWithTimezone,\n} from '@/helpers/dateFormatting'\nimport { useLocale } from '@/contexts/LocaleProvider'\n\nconst isCalculating = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.Calculating\nconst isCalculated = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.CalculateSuccess\n\ninterface PayrollConfigurationProps extends BaseComponentInterface<'Payroll.PayrollConfiguration'> {\n companyId: string\n payrollId: string\n alerts?: ReactNode\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}: PayrollConfigurationProps) => {\n useComponentDictionary('Payroll.PayrollConfiguration', dictionary)\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { baseSubmitHandler } = useBase()\n const { locale } = useLocale()\n const defaultItemsPerPage = 10\n\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState<PaginationItemsPerPage>(defaultItemsPerPage)\n const [isPolling, setIsPolling] = useState(false)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n\n const { data: employeeData, isFetching: isFetchingEmployeeData } = useEmployeesListSuspense({\n companyId,\n payrollUuid: payrollId, // get back list of employees to specific payroll\n per: itemsPerPage,\n page: currentPage,\n sortBy: 'name', // sort alphanumeric by employee last_names\n })\n\n // get list of employee uuids to filter into prepare endpoint to get back employee_compensation data\n const employeeUuids = useMemo(() => {\n return employeeData.showEmployees?.map(e => e.uuid) || []\n }, [employeeData.showEmployees])\n\n const totalPages = Number(employeeData.httpMeta.response.headers.get('x-total-pages') ?? 1)\n\n const handleItemsPerPageChange = (newCount: PaginationItemsPerPage) => {\n setItemsPerPage(newCount)\n }\n const handleFirstPage = () => {\n setCurrentPage(1)\n }\n const handlePreviousPage = () => {\n setCurrentPage(prevPage => Math.max(prevPage - 1, 1))\n }\n const handleNextPage = () => {\n setCurrentPage(prevPage => Math.min(prevPage + 1, totalPages))\n }\n const handleLastPage = () => {\n setCurrentPage(totalPages)\n }\n\n const pagination = {\n currentPage,\n handleFirstPage,\n handlePreviousPage,\n handleNextPage,\n handleLastPage,\n handleItemsPerPageChange,\n totalPages,\n isFetching: isFetchingEmployeeData,\n itemsPerPage,\n }\n\n const { data: payrollData } = usePayrollsGetSuspense(\n {\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions'],\n },\n { refetchInterval: isPolling ? 5_000 : false },\n )\n\n const { mutateAsync: calculatePayroll } = usePayrollsCalculateMutation()\n\n const { mutateAsync: updatePayroll, isPending: isUpdatingPayroll } = usePayrollsUpdateMutation()\n\n const {\n preparedPayroll,\n paySchedule,\n isLoading: isPrepareLoading,\n handlePreparePayroll,\n } = usePreparedPayrollData({\n companyId,\n payrollId,\n employeeUuids,\n sortBy: 'last_name', // sort alphanumeric by employee last_names to match employees GET\n })\n\n const onCalculatePayroll = async () => {\n // Clear any existing blockers before attempting calculation\n setPayrollBlockers([])\n\n await baseSubmitHandler({}, async () => {\n const result = await payrollSubmitHandler(async () => {\n await calculatePayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setIsPolling(true)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\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 const transformEmployeeCompensation = ({\n paymentMethod,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\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 // Refresh preparedPayroll to get updated data\n await handlePreparePayroll()\n })\n }\n\n const onViewBlockers = () => {\n onEvent(componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL)\n }\n\n useEffect(() => {\n // Start polling when payroll is calculating and not already polling\n if (isCalculating(payrollData.payrollShow?.processingRequest) && !isPolling) {\n setIsPolling(true)\n }\n // Stop polling and emit event when payroll is calculated successfully\n if (isPolling && isCalculated(payrollData.payrollShow?.processingRequest)) {\n onEvent(componentEvents.RUN_PAYROLL_CALCULATED, {\n payrollId,\n alert: { type: 'success', title: t('alerts.progressSaved') },\n })\n // Clear blockers on successful calculation\n setPayrollBlockers([])\n setIsPolling(false)\n }\n // If we are polling and payroll is in failed state, stop polling, and emit failure event\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,\n isPolling,\n onEvent,\n t,\n payrollId,\n payrollData.payrollShow?.calculatedAt,\n ])\n\n const payrollDeadlineNotice = payrollData.payrollShow\n ? {\n label: t('alerts.directDepositDeadline', {\n payDate: formatDateNamedWeekdayShortPlusDate(payrollData.payrollShow.checkDate, locale),\n ...formatDateTimeWithTimezone(payrollData.payrollShow.payrollDeadline, locale),\n }),\n content: t('alerts.directDepositDeadlineText'),\n }\n : undefined\n\n return (\n <PayrollConfigurationPresentation\n onCalculatePayroll={onCalculatePayroll}\n onEdit={onEdit}\n onToggleExclude={onToggleExclude}\n onViewBlockers={onViewBlockers}\n employeeCompensations={preparedPayroll?.employeeCompensations || []}\n employeeDetails={employeeData.showEmployees || []}\n payPeriod={preparedPayroll?.payPeriod}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n alerts={alerts}\n payrollDeadlineNotice={payrollDeadlineNotice}\n isPending={isPolling || isPrepareLoading || isUpdatingPayroll}\n payrollBlockers={payrollBlockers}\n pagination={pagination}\n />\n )\n}\n"],"names":["isCalculating","processingRequest","PayrollProcessingRequestStatus","isCalculated","PayrollConfiguration","props","jsx","BaseComponent","Root","onEvent","companyId","payrollId","dictionary","alerts","useComponentDictionary","useI18n","t","useTranslation","baseSubmitHandler","useBase","locale","useLocale","defaultItemsPerPage","currentPage","setCurrentPage","useState","itemsPerPage","setItemsPerPage","isPolling","setIsPolling","payrollBlockers","setPayrollBlockers","employeeData","isFetchingEmployeeData","useEmployeesListSuspense","employeeUuids","useMemo","totalPages","pagination","prevPage","newCount","payrollData","usePayrollsGetSuspense","calculatePayroll","usePayrollsCalculateMutation","updatePayroll","isUpdatingPayroll","usePayrollsUpdateMutation","preparedPayroll","paySchedule","isPrepareLoading","handlePreparePayroll","usePreparedPayrollData","onCalculatePayroll","result","payrollSubmitHandler","onEdit","employee","componentEvents","transformEmployeeCompensation","paymentMethod","compensation","onToggleExclude","employeeCompensation","transformedCompensation","onViewBlockers","useEffect","payrollDeadlineNotice","formatDateNamedWeekdayShortPlusDate","formatDateTimeWithTimezone","PayrollConfigurationPresentation"],"mappings":"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"}
@@ -17,9 +17,13 @@ interface PayrollConfigurationPresentationProps {
17
17
  onViewBlockers: () => void;
18
18
  isOffCycle?: boolean;
19
19
  alerts?: ReactNode;
20
+ payrollDeadlineNotice?: {
21
+ label: string;
22
+ content?: ReactNode;
23
+ };
20
24
  isPending?: boolean;
21
25
  payrollBlockers?: ApiPayrollBlocker[];
22
26
  pagination?: PaginationControlProps;
23
27
  }
24
- export declare const PayrollConfigurationPresentation: ({ employeeCompensations, employeeDetails, payPeriod, paySchedule, onEdit, onToggleExclude, onCalculatePayroll, onViewBlockers, isOffCycle, alerts, isPending, payrollBlockers, pagination, }: PayrollConfigurationPresentationProps) => import("react/jsx-runtime").JSX.Element;
28
+ export declare const PayrollConfigurationPresentation: ({ employeeCompensations, employeeDetails, payPeriod, paySchedule, onEdit, onToggleExclude, onCalculatePayroll, onViewBlockers, isOffCycle, alerts, payrollDeadlineNotice, isPending, payrollBlockers, pagination, }: PayrollConfigurationPresentationProps) => import("react/jsx-runtime").JSX.Element;
25
29
  export {};
@@ -1,192 +1,196 @@
1
- import { jsxs as i, jsx as e, Fragment as N } from "react/jsx-runtime";
2
- import { useTranslation as A, Trans as R } from "react-i18next";
3
- import { useFormatEmployeePayRate as U, getRegularHours as B, getOvertimeHours as j, formatHoursDisplay as D, getTotalPtoHours as G, getAdditionalEarnings as O, getReimbursements as V, calculateGrossPay as _ } from "../helpers.js";
4
- import { PayrollBlockerAlerts as z } from "../PayrollBlocker/components/PayrollBlockerAlerts.js";
5
- import K from "./PayrollConfigurationPresentation.module.scss.js";
6
- import { useI18n as W } from "../../../i18n/I18n.js";
7
- import { Flex as u, FlexItem as w } from "../../Common/Flex/Flex.js";
8
- import { Grid as X } from "../../Common/Grid/Grid.js";
1
+ import { jsxs as i, jsx as e, Fragment as U } from "react/jsx-runtime";
2
+ import { useTranslation as B, Trans as j } from "react-i18next";
3
+ import { useFormatEmployeePayRate as G, getRegularHours as N, getOvertimeHours as O, formatHoursDisplay as w, getTotalPtoHours as V, getAdditionalEarnings as _, getReimbursements as z, calculateGrossPay as K } from "../helpers.js";
4
+ import { PayrollBlockerAlerts as W } from "../PayrollBlocker/components/PayrollBlockerAlerts.js";
5
+ import X from "./PayrollConfigurationPresentation.module.scss.js";
6
+ import { useI18n as q } from "../../../i18n/I18n.js";
7
+ import { Flex as p, FlexItem as x } from "../../Common/Flex/Flex.js";
8
+ import { Grid as J } from "../../Common/Grid/Grid.js";
9
9
  import "classnames";
10
- import { HamburgerMenu as q } from "../../Common/HamburgerMenu/HamburgerMenu.js";
11
- import { useComponentContext as J } from "../../../contexts/ComponentAdapter/useComponentContext.js";
12
- import Q from "../../../assets/icons/pencil.svg.js";
13
- import Y from "../../../assets/icons/x-circle.svg.js";
14
- import Z from "../../../assets/icons/plus-circle.svg.js";
15
- import { formatNumberAsCurrency as f, firstLastName as $ } from "../../../helpers/formattedStrings.js";
16
- import { parseDateStringToLocal as x } from "../../../helpers/dateFormatting.js";
17
- import { useLocale as ee } from "../../../contexts/LocaleProvider/useLocale.js";
18
- import { useLoadingIndicator as te } from "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
19
- import { DataView as re } from "../../Common/DataView/DataView.js";
20
- const ne = ({
10
+ import { useComponentContext as Q } from "../../../contexts/ComponentAdapter/useComponentContext.js";
11
+ import Y from "../../../assets/icons/pencil.svg.js";
12
+ import Z from "../../../assets/icons/x-circle.svg.js";
13
+ import $ from "../../../assets/icons/plus-circle.svg.js";
14
+ import { formatNumberAsCurrency as y, firstLastName as ee } from "../../../helpers/formattedStrings.js";
15
+ import { parseDateStringToLocal as P } from "../../../helpers/dateFormatting.js";
16
+ import { useLocale as te } from "../../../contexts/LocaleProvider/useLocale.js";
17
+ import { useLoadingIndicator as re } from "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
18
+ import { HamburgerMenu as ne } from "../../Common/HamburgerMenu/HamburgerMenu.js";
19
+ import { DataView as oe } from "../../Common/DataView/DataView.js";
20
+ const ie = ({
21
21
  payPeriod: l,
22
- locale: m
22
+ locale: c
23
23
  }) => {
24
24
  if (l?.startDate && l.endDate) {
25
- const s = x(l.startDate), d = x(l.endDate);
25
+ const s = P(l.startDate), d = P(l.endDate);
26
26
  if (s && d) {
27
- const p = s.toLocaleDateString(m, {
27
+ const g = s.toLocaleDateString(c, {
28
28
  month: "long",
29
29
  day: "numeric"
30
- }), g = d.toLocaleDateString(m, {
30
+ }), h = d.toLocaleDateString(c, {
31
31
  month: "short",
32
32
  day: "numeric",
33
33
  year: "numeric"
34
34
  });
35
- return { startDate: p, endDate: g };
35
+ return { startDate: g, endDate: h };
36
36
  }
37
37
  }
38
38
  return { startDate: "", endDate: "" };
39
- }, Pe = ({
39
+ }, ke = ({
40
40
  employeeCompensations: l,
41
- employeeDetails: m,
41
+ employeeDetails: c,
42
42
  payPeriod: s,
43
43
  paySchedule: d,
44
- onEdit: p,
45
- onToggleExclude: g,
46
- onCalculatePayroll: P,
47
- onViewBlockers: T,
48
- isOffCycle: k = !1,
49
- alerts: y,
50
- isPending: b,
51
- payrollBlockers: C = [],
52
- pagination: L
44
+ onEdit: g,
45
+ onToggleExclude: h,
46
+ onCalculatePayroll: T,
47
+ onViewBlockers: k,
48
+ isOffCycle: L = !1,
49
+ alerts: b,
50
+ payrollDeadlineNotice: u,
51
+ isPending: C,
52
+ payrollBlockers: D = [],
53
+ pagination: M
53
54
  }) => {
54
- const { Button: M, Heading: h, Text: o, Badge: v, LoadingSpinner: H } = J();
55
- W("Payroll.PayrollConfiguration");
56
- const { t: n } = A("Payroll.PayrollConfiguration"), { locale: E } = ee(), { LoadingIndicator: S } = te(), F = U(), c = new Map(m.map((t) => [t.uuid, t])), I = (t) => {
57
- const r = c.get(t);
58
- return r ? $({ first_name: r.firstName, last_name: r.lastName }) : null;
55
+ const { Button: v, Heading: f, Text: o, Badge: H, LoadingSpinner: E, Alert: S } = Q();
56
+ q("Payroll.PayrollConfiguration");
57
+ const { t: n } = B("Payroll.PayrollConfiguration"), { locale: A } = te(), { LoadingIndicator: F } = re(), I = G(), m = new Map(c.map((t) => [t.uuid, t])), R = (t) => {
58
+ const r = m.get(t);
59
+ return r ? ee({ first_name: r.firstName, last_name: r.lastName }) : null;
59
60
  };
60
- return /* @__PURE__ */ i(u, { flexDirection: "column", gap: 16, children: [
61
- /* @__PURE__ */ i(u, { justifyContent: "space-between", alignItems: "center", children: [
62
- /* @__PURE__ */ i(w, { children: [
63
- /* @__PURE__ */ e(h, { as: "h1", children: n("pageTitle") }),
61
+ return /* @__PURE__ */ i(p, { flexDirection: "column", gap: 16, children: [
62
+ /* @__PURE__ */ i(p, { justifyContent: "space-between", alignItems: "center", children: [
63
+ /* @__PURE__ */ i(x, { children: [
64
+ /* @__PURE__ */ e(f, { as: "h1", children: n("pageTitle") }),
64
65
  /* @__PURE__ */ e(o, { children: /* @__PURE__ */ e(
65
- R,
66
+ j,
66
67
  {
67
68
  i18nKey: "description",
68
69
  t: n,
69
70
  components: { dateWrapper: /* @__PURE__ */ e(o, { weight: "bold", as: "span" }) },
70
- values: ne({ payPeriod: s, locale: E })
71
+ values: ie({ payPeriod: s, locale: A })
71
72
  }
72
73
  ) })
73
74
  ] }),
74
75
  /* @__PURE__ */ e(
75
- M,
76
+ v,
76
77
  {
77
78
  title: n("calculatePayrollTitle"),
78
- onClick: P,
79
- isDisabled: b,
79
+ onClick: T,
80
+ isDisabled: C,
80
81
  children: n("calculatePayroll")
81
82
  }
82
83
  )
83
84
  ] }),
84
- y && /* @__PURE__ */ e(X, { gap: 16, gridTemplateColumns: "1fr", children: y }),
85
- b ? /* @__PURE__ */ e(S, { children: /* @__PURE__ */ i(u, { flexDirection: "column", alignItems: "center", gap: 4, children: [
86
- /* @__PURE__ */ e(H, { size: "lg" }),
87
- /* @__PURE__ */ e(h, { as: "h4", children: n("loadingTitle") }),
85
+ (b || u) && /* @__PURE__ */ i(J, { gap: 16, gridTemplateColumns: "1fr", children: [
86
+ u && /* @__PURE__ */ e(S, { status: "info", label: u.label, children: u.content }),
87
+ b
88
+ ] }),
89
+ C ? /* @__PURE__ */ e(F, { children: /* @__PURE__ */ i(p, { flexDirection: "column", alignItems: "center", gap: 4, children: [
90
+ /* @__PURE__ */ e(E, { size: "lg" }),
91
+ /* @__PURE__ */ e(f, { as: "h4", children: n("loadingTitle") }),
88
92
  /* @__PURE__ */ e(o, { children: n("loadingDescription") })
89
- ] }) }) : /* @__PURE__ */ i(N, { children: [
90
- /* @__PURE__ */ e("div", { className: K.payrollBlockerContainer, children: C.length > 0 && /* @__PURE__ */ e(
91
- z,
93
+ ] }) }) : /* @__PURE__ */ i(U, { children: [
94
+ /* @__PURE__ */ e("div", { className: X.payrollBlockerContainer, children: D.length > 0 && /* @__PURE__ */ e(
95
+ W,
92
96
  {
93
- blockers: C,
94
- onMultipleViewClick: T
97
+ blockers: D,
98
+ onMultipleViewClick: k
95
99
  }
96
100
  ) }),
97
- /* @__PURE__ */ i(w, { children: [
98
- /* @__PURE__ */ e(h, { as: "h3", children: n("hoursAndEarningsTitle") }),
101
+ /* @__PURE__ */ i(x, { children: [
102
+ /* @__PURE__ */ e(f, { as: "h3", children: n("hoursAndEarningsTitle") }),
99
103
  /* @__PURE__ */ e(o, { children: n("hoursAndEarningsDescription") })
100
104
  ] }),
101
105
  /* @__PURE__ */ e(
102
- re,
106
+ oe,
103
107
  {
104
108
  label: n("employeeCompensationsTitle"),
105
109
  columns: [
106
110
  {
107
111
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.employees") }),
108
112
  render: (t) => {
109
- const r = c.get(t.employeeUuid || ""), a = F(r);
110
- return /* @__PURE__ */ i(u, { flexDirection: "column", gap: 8, children: [
111
- /* @__PURE__ */ e(o, { weight: "semibold", children: I(t.employeeUuid || "") }),
113
+ const r = m.get(t.employeeUuid || ""), a = I(r);
114
+ return /* @__PURE__ */ i(p, { flexDirection: "column", gap: 8, children: [
115
+ /* @__PURE__ */ e(o, { weight: "semibold", children: R(t.employeeUuid || "") }),
112
116
  a && /* @__PURE__ */ e(o, { variant: "supporting", children: a }),
113
- t.excluded && /* @__PURE__ */ e(v, { status: "warning", children: n("skippedBadge") })
117
+ t.excluded && /* @__PURE__ */ e(H, { status: "warning", children: n("skippedBadge") })
114
118
  ] });
115
119
  }
116
120
  },
117
121
  {
118
122
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.hours") }),
119
123
  render: (t) => {
120
- const r = B(t), a = j(t);
121
- return /* @__PURE__ */ e(o, { children: D(r + a) });
124
+ const r = N(t), a = O(t);
125
+ return /* @__PURE__ */ e(o, { children: w(r + a) });
122
126
  }
123
127
  },
124
128
  {
125
129
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.timeOff") }),
126
130
  render: (t) => {
127
- const r = G(t);
128
- return /* @__PURE__ */ e(o, { children: D(r) });
131
+ const r = V(t);
132
+ return /* @__PURE__ */ e(o, { children: w(r) });
129
133
  }
130
134
  },
131
135
  {
132
136
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.additionalEarnings") }),
133
137
  render: (t) => {
134
- const r = O(t);
135
- return /* @__PURE__ */ e(o, { children: f(r) });
138
+ const r = _(t);
139
+ return /* @__PURE__ */ e(o, { children: y(r) });
136
140
  }
137
141
  },
138
142
  {
139
143
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.reimbursements") }),
140
144
  render: (t) => {
141
- const r = V(t);
142
- return /* @__PURE__ */ e(o, { children: f(r) });
145
+ const r = z(t);
146
+ return /* @__PURE__ */ e(o, { children: y(r) });
143
147
  }
144
148
  },
145
149
  {
146
150
  title: /* @__PURE__ */ e(o, { weight: "semibold", children: n("tableColumns.totalPay") }),
147
151
  render: (t) => {
148
- const r = c.get(t.employeeUuid || ""), a = r ? _(
152
+ const r = m.get(t.employeeUuid || ""), a = r ? K(
149
153
  t,
150
154
  r,
151
155
  s?.startDate,
152
156
  d,
153
- k
157
+ L
154
158
  ) : 0;
155
- return /* @__PURE__ */ e(o, { children: f(a) });
159
+ return /* @__PURE__ */ e(o, { children: y(a) });
156
160
  }
157
161
  }
158
162
  ],
159
163
  data: l,
160
164
  itemMenu: (t) => /* @__PURE__ */ e(
161
- q,
165
+ ne,
162
166
  {
163
167
  items: [
164
168
  {
165
169
  label: n("editMenu.edit"),
166
- icon: /* @__PURE__ */ e(Q, { "aria-hidden": !0 }),
170
+ icon: /* @__PURE__ */ e(Y, { "aria-hidden": !0 }),
167
171
  onClick: () => {
168
- const r = c.get(t.employeeUuid || "");
169
- r && p(r);
172
+ const r = m.get(t.employeeUuid || "");
173
+ r && g(r);
170
174
  }
171
175
  },
172
176
  {
173
177
  label: n(t.excluded ? "editMenu.unskip" : "editMenu.skip"),
174
- icon: t.excluded ? /* @__PURE__ */ e(Z, { "aria-hidden": !0 }) : /* @__PURE__ */ e(Y, { "aria-hidden": !0 }),
178
+ icon: t.excluded ? /* @__PURE__ */ e($, { "aria-hidden": !0 }) : /* @__PURE__ */ e(Z, { "aria-hidden": !0 }),
175
179
  onClick: () => {
176
- c.get(t.employeeUuid || "") && g(t);
180
+ m.get(t.employeeUuid || "") && h(t);
177
181
  }
178
182
  }
179
183
  ],
180
184
  triggerLabel: n("editMenu.edit")
181
185
  }
182
186
  ),
183
- pagination: L
187
+ pagination: M
184
188
  }
185
189
  )
186
190
  ] })
187
191
  ] });
188
192
  };
189
193
  export {
190
- Pe as PayrollConfigurationPresentation
194
+ ke as PayrollConfigurationPresentation
191
195
  };
192
196
  //# sourceMappingURL=PayrollConfigurationPresentation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport type { EmployeeCompensations } from '@gusto/embedded-api/models/components/payrollshow'\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 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 } 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 { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { parseDateStringToLocal } from '@/helpers/dateFormatting'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\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 isOffCycle?: boolean\n alerts?: ReactNode\n isPending?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n pagination?: PaginationControlProps\n}\n\nconst getPayrollConfigurationTitle = ({\n payPeriod,\n locale,\n}: {\n payPeriod?: PayrollPayPeriodType\n locale: string\n}) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n const startDate = parseDateStringToLocal(payPeriod.startDate)\n const endDate = parseDateStringToLocal(payPeriod.endDate)\n\n if (startDate && endDate) {\n const startFormatted = startDate.toLocaleDateString(locale, {\n month: 'long',\n day: 'numeric',\n })\n const endFormatted = endDate.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n return { startDate: startFormatted, endDate: endFormatted }\n }\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 isOffCycle = false,\n alerts,\n isPending,\n payrollBlockers = [],\n pagination,\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, LoadingSpinner } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { locale } = useLocale()\n const { LoadingIndicator } = useLoadingIndicator()\n const formatEmployeePayRate = useFormatEmployeePayRate()\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 <Flex flexDirection=\"column\" gap={16}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n <Text>\n <Trans\n i18nKey=\"description\"\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={getPayrollConfigurationTitle({ payPeriod, locale })}\n />\n </Text>\n </FlexItem>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isPending}\n >\n {t('calculatePayroll')}\n </Button>\n </Flex>\n\n {alerts && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <LoadingIndicator>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={4}>\n <LoadingSpinner size=\"lg\" />\n <Heading as=\"h4\">{t('loadingTitle')}</Heading>\n <Text>{t('loadingDescription')}</Text>\n </Flex>\n </LoadingIndicator>\n ) : (\n <>\n <div className={styles.payrollBlockerContainer}>\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts\n blockers={payrollBlockers}\n onMultipleViewClick={onViewBlockers}\n />\n )}\n </div>\n <FlexItem>\n <Heading as=\"h3\">{t('hoursAndEarningsTitle')}</Heading>\n <Text>{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: <Text weight=\"semibold\">{t('tableColumns.employees')}</Text>,\n render: (item: EmployeeCompensations) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={8 as const}>\n <Text weight=\"semibold\">{getEmployeeName(item.employeeUuid || '')}</Text>\n {payRateDisplay && <Text variant=\"supporting\">{payRateDisplay}</Text>}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.hours')}</Text>,\n render: (item: EmployeeCompensations) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return <Text>{formatHoursDisplay(hours + overtimeHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.timeOff')}</Text>,\n render: (item: EmployeeCompensations) => {\n const ptoHours = getTotalPtoHours(item)\n return <Text>{formatHoursDisplay(ptoHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.additionalEarnings')}</Text>,\n render: (item: EmployeeCompensations) => {\n const earnings = getAdditionalEarnings(item)\n return <Text>{formatNumberAsCurrency(earnings)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.reimbursements')}</Text>,\n render: (item: EmployeeCompensations) => {\n const reimbursements = getReimbursements(item)\n return <Text>{formatNumberAsCurrency(reimbursements)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.totalPay')}</Text>,\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 isOffCycle,\n )\n : 0\n return <Text>{formatNumberAsCurrency(calculatedGrossPay)}</Text>\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 ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n pagination={pagination}\n />\n </>\n )}\n </Flex>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","locale","startDate","parseDateStringToLocal","endDate","startFormatted","endFormatted","PayrollConfigurationPresentation","employeeCompensations","employeeDetails","paySchedule","onEdit","onToggleExclude","onCalculatePayroll","onViewBlockers","isOffCycle","alerts","isPending","payrollBlockers","pagination","Button","Heading","Text","Badge","LoadingSpinner","useComponentContext","useI18n","t","useTranslation","useLocale","LoadingIndicator","useLoadingIndicator","formatEmployeePayRate","useFormatEmployeePayRate","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsxs","Flex","FlexItem","jsx","Trans","Grid","Fragment","styles","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","HamburgerMenu","PencilSvg","PlusCircle","XCircle"],"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 type { EmployeeCompensations } from '@gusto/embedded-api/models/components/payrollshow'\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 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 } 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 { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { parseDateStringToLocal } from '@/helpers/dateFormatting'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\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 isOffCycle?: boolean\n alerts?: ReactNode\n payrollDeadlineNotice?: {\n label: string\n content?: ReactNode\n }\n isPending?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n pagination?: PaginationControlProps\n}\n\nconst getPayrollConfigurationTitle = ({\n payPeriod,\n locale,\n}: {\n payPeriod?: PayrollPayPeriodType\n locale: string\n}) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n const startDate = parseDateStringToLocal(payPeriod.startDate)\n const endDate = parseDateStringToLocal(payPeriod.endDate)\n\n if (startDate && endDate) {\n const startFormatted = startDate.toLocaleDateString(locale, {\n month: 'long',\n day: 'numeric',\n })\n const endFormatted = endDate.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n return { startDate: startFormatted, endDate: endFormatted }\n }\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 isOffCycle = false,\n alerts,\n payrollDeadlineNotice,\n isPending,\n payrollBlockers = [],\n pagination,\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, LoadingSpinner, Alert } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { locale } = useLocale()\n const { LoadingIndicator } = useLoadingIndicator()\n const formatEmployeePayRate = useFormatEmployeePayRate()\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 <Flex flexDirection=\"column\" gap={16}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n <Text>\n <Trans\n i18nKey=\"description\"\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={getPayrollConfigurationTitle({ payPeriod, locale })}\n />\n </Text>\n </FlexItem>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isPending}\n >\n {t('calculatePayroll')}\n </Button>\n </Flex>\n\n {(alerts || payrollDeadlineNotice) && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {payrollDeadlineNotice && (\n <Alert status=\"info\" label={payrollDeadlineNotice.label}>\n {payrollDeadlineNotice.content}\n </Alert>\n )}\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <LoadingIndicator>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={4}>\n <LoadingSpinner size=\"lg\" />\n <Heading as=\"h4\">{t('loadingTitle')}</Heading>\n <Text>{t('loadingDescription')}</Text>\n </Flex>\n </LoadingIndicator>\n ) : (\n <>\n <div className={styles.payrollBlockerContainer}>\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts\n blockers={payrollBlockers}\n onMultipleViewClick={onViewBlockers}\n />\n )}\n </div>\n <FlexItem>\n <Heading as=\"h3\">{t('hoursAndEarningsTitle')}</Heading>\n <Text>{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: <Text weight=\"semibold\">{t('tableColumns.employees')}</Text>,\n render: (item: EmployeeCompensations) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={8 as const}>\n <Text weight=\"semibold\">{getEmployeeName(item.employeeUuid || '')}</Text>\n {payRateDisplay && <Text variant=\"supporting\">{payRateDisplay}</Text>}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.hours')}</Text>,\n render: (item: EmployeeCompensations) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return <Text>{formatHoursDisplay(hours + overtimeHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.timeOff')}</Text>,\n render: (item: EmployeeCompensations) => {\n const ptoHours = getTotalPtoHours(item)\n return <Text>{formatHoursDisplay(ptoHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.additionalEarnings')}</Text>,\n render: (item: EmployeeCompensations) => {\n const earnings = getAdditionalEarnings(item)\n return <Text>{formatNumberAsCurrency(earnings)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.reimbursements')}</Text>,\n render: (item: EmployeeCompensations) => {\n const reimbursements = getReimbursements(item)\n return <Text>{formatNumberAsCurrency(reimbursements)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.totalPay')}</Text>,\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 isOffCycle,\n )\n : 0\n return <Text>{formatNumberAsCurrency(calculatedGrossPay)}</Text>\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 ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n pagination={pagination}\n />\n </>\n )}\n </Flex>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","locale","startDate","parseDateStringToLocal","endDate","startFormatted","endFormatted","PayrollConfigurationPresentation","employeeCompensations","employeeDetails","paySchedule","onEdit","onToggleExclude","onCalculatePayroll","onViewBlockers","isOffCycle","alerts","payrollDeadlineNotice","isPending","payrollBlockers","pagination","Button","Heading","Text","Badge","LoadingSpinner","Alert","useComponentContext","useI18n","t","useTranslation","useLocale","LoadingIndicator","useLoadingIndicator","formatEmployeePayRate","useFormatEmployeePayRate","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsxs","Flex","FlexItem","jsx","Trans","Grid","Fragment","styles","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","HamburgerMenu","PencilSvg","PlusCircle","XCircle"],"mappings":"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"}
@@ -1,73 +1,72 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import { useEmployeesGetSuspense as _ } from "@gusto/embedded-api/react-query/employeesGet";
3
- import { usePayrollsUpdateMutation as A } from "@gusto/embedded-api/react-query/payrollsUpdate";
4
- import { usePreparedPayrollData as O } from "../usePreparedPayrollData.js";
5
- import { PayrollEditEmployeePresentation as R } from "./PayrollEditEmployeePresentation.js";
6
- import { componentEvents as m } from "../../../shared/constants.js";
7
- import { BaseComponent as x } from "../../Base/Base.js";
8
- import { useComponentDictionary as Y } from "../../../i18n/I18n.js";
9
- import { useBase as g } from "../../Base/useBase.js";
10
- function G(e) {
11
- return /* @__PURE__ */ n(x, { ...e, children: /* @__PURE__ */ n(N, { ...e, children: e.children }) });
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { useEmployeesGetSuspense as O } from "@gusto/embedded-api/react-query/employeesGet";
3
+ import { usePayrollsUpdateMutation as R } from "@gusto/embedded-api/react-query/payrollsUpdate";
4
+ import { useMemo as U } from "react";
5
+ import { usePreparedPayrollData as x } from "../usePreparedPayrollData.js";
6
+ import { PayrollEditEmployeePresentation as Y } from "./PayrollEditEmployeePresentation.js";
7
+ import { componentEvents as l } from "../../../shared/constants.js";
8
+ import { BaseComponent as g } from "../../Base/Base.js";
9
+ import { useComponentDictionary as N } from "../../../i18n/I18n.js";
10
+ import { useBase as b } from "../../Base/useBase.js";
11
+ function V(e) {
12
+ return /* @__PURE__ */ a(g, { ...e, children: /* @__PURE__ */ a(h, { ...e, children: e.children }) });
12
13
  }
13
- const N = ({
14
+ const h = ({
14
15
  employeeId: e,
15
- companyId: a,
16
+ companyId: n,
16
17
  payrollId: s,
17
- onEvent: i,
18
+ onEvent: m,
18
19
  dictionary: p
19
20
  }) => {
20
- Y("Payroll.PayrollEditEmployee", p);
21
- const { LoadingIndicator: y, baseSubmitHandler: c } = g(), { data: d } = _({ employeeId: e }), { preparedPayroll: t, paySchedule: u, isLoading: f } = O({
22
- companyId: a,
21
+ N("Payroll.PayrollEditEmployee", p);
22
+ const { LoadingIndicator: y, baseSubmitHandler: c } = b(), { data: d } = O({ employeeId: e }), u = U(() => [e], []), { preparedPayroll: t, paySchedule: f, isLoading: P } = x({
23
+ companyId: n,
23
24
  payrollId: s,
24
- employeeUuids: [e]
25
- }), { mutateAsync: P, isPending: E } = A(), l = d.employee, C = t?.employeeCompensations?.find(
26
- (o) => o.employeeUuid === e
27
- ), L = ({
25
+ employeeUuids: u
26
+ }), { mutateAsync: E, isPending: C } = R(), i = d.employee, L = t?.employeeCompensations?.at(0), D = ({
28
27
  paymentMethod: o,
29
28
  ...r
30
29
  }) => ({
31
30
  ...r,
32
31
  ...o && o !== "Historical" ? { paymentMethod: o } : {},
33
32
  memo: r.memo || void 0
34
- }), D = async (o) => {
35
- const r = L(o);
33
+ }), S = async (o) => {
34
+ const r = D(o);
36
35
  await c(null, async () => {
37
- const U = await P({
36
+ const A = await E({
38
37
  request: {
39
- companyId: a,
38
+ companyId: n,
40
39
  payrollId: s,
41
40
  payrollUpdate: {
42
41
  employeeCompensations: [r]
43
42
  }
44
43
  }
45
44
  });
46
- i(m.RUN_PAYROLL_EMPLOYEE_SAVED, {
47
- payrollPrepared: U.payrollPrepared,
48
- employee: l
45
+ m(l.RUN_PAYROLL_EMPLOYEE_SAVED, {
46
+ payrollPrepared: A.payrollPrepared,
47
+ employee: i
49
48
  });
50
49
  });
51
- }, S = () => {
52
- i(m.RUN_PAYROLL_EMPLOYEE_CANCELLED);
50
+ }, _ = () => {
51
+ m(l.RUN_PAYROLL_EMPLOYEE_CANCELLED);
53
52
  };
54
- return f ? /* @__PURE__ */ n(y, {}) : /* @__PURE__ */ n(
55
- R,
53
+ return P ? /* @__PURE__ */ a(y, {}) : /* @__PURE__ */ a(
54
+ Y,
56
55
  {
57
- onSave: D,
58
- onCancel: S,
59
- employee: l,
60
- isPending: E,
61
- employeeCompensation: C,
56
+ onSave: S,
57
+ onCancel: _,
58
+ employee: i,
59
+ isPending: C,
60
+ employeeCompensation: L,
62
61
  fixedCompensationTypes: t?.fixedCompensationTypes || [],
63
62
  payPeriodStartDate: t?.payPeriod?.startDate,
64
- paySchedule: u,
63
+ paySchedule: f,
65
64
  isOffCycle: t?.offCycle
66
65
  }
67
66
  );
68
67
  };
69
68
  export {
70
- G as PayrollEditEmployee,
71
- N as Root
69
+ V as PayrollEditEmployee,
70
+ h as Root
72
71
  };
73
72
  //# sourceMappingURL=PayrollEditEmployee.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.tsx"],"sourcesContent":["import { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { PayrollEditEmployeePresentation } from './PayrollEditEmployeePresentation'\nimport { componentEvents } from '@/shared/constants'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useComponentDictionary } from '@/i18n'\nimport { useBase } from '@/components/Base/useBase'\n\ninterface PayrollEditEmployeeProps extends BaseComponentInterface<'Payroll.PayrollEditEmployee'> {\n employeeId: string\n companyId: string\n payrollId: string\n}\n\nexport function PayrollEditEmployee(props: PayrollEditEmployeeProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n employeeId,\n companyId,\n payrollId,\n onEvent,\n dictionary,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.PayrollEditEmployee', dictionary)\n\n const { LoadingIndicator, baseSubmitHandler } = useBase()\n\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const { preparedPayroll, paySchedule, isLoading } = usePreparedPayrollData({\n companyId,\n payrollId,\n employeeUuids: [employeeId],\n })\n\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const employee = employeeData.employee!\n\n // @TODO: with filtering now supported in prepare payroll this can likely just be the 1st response\n // unless there is a case where an employee can have multiple payroll items within the same payroll\n const employeeCompensation = preparedPayroll?.employeeCompensations?.find(\n compensation => compensation.employeeUuid === employeeId,\n )\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n }\n }\n\n const onSave = async (updatedCompensation: PayrollEmployeeCompensationsType) => {\n const transformedCompensation = transformEmployeeCompensation(updatedCompensation)\n await baseSubmitHandler(null, async () => {\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [transformedCompensation],\n },\n },\n })\n\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n employee,\n })\n })\n }\n\n const onCancel = () => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED)\n }\n\n if (isLoading) {\n return <LoadingIndicator />\n }\n\n return (\n <PayrollEditEmployeePresentation\n onSave={onSave}\n onCancel={onCancel}\n employee={employee}\n isPending={isPending}\n employeeCompensation={employeeCompensation}\n fixedCompensationTypes={preparedPayroll?.fixedCompensationTypes || []}\n payPeriodStartDate={preparedPayroll?.payPeriod?.startDate}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n />\n )\n}\n"],"names":["PayrollEditEmployee","props","jsx","BaseComponent","Root","employeeId","companyId","payrollId","onEvent","dictionary","useComponentDictionary","LoadingIndicator","baseSubmitHandler","useBase","employeeData","useEmployeesGetSuspense","preparedPayroll","paySchedule","isLoading","usePreparedPayrollData","updatePayroll","isPending","usePayrollsUpdateMutation","employee","employeeCompensation","compensation","transformEmployeeCompensation","paymentMethod","onSave","updatedCompensation","transformedCompensation","result","componentEvents","onCancel","PayrollEditEmployeePresentation"],"mappings":";;;;;;;;;AAkBO,SAASA,EAAoBC,GAA0D;AAC5F,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEO,MAAMG,IAAO,CAAC;AAAA,EACnB,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AACF,MAAgC;AAC9B,EAAAC,EAAuB,+BAA+BD,CAAU;AAEhE,QAAM,EAAE,kBAAAE,GAAkB,mBAAAC,EAAA,IAAsBC,EAAA,GAE1C,EAAE,MAAMC,EAAA,IAAiBC,EAAwB,EAAE,YAAAV,GAAY,GAC/D,EAAE,iBAAAW,GAAiB,aAAAC,GAAa,WAAAC,EAAA,IAAcC,EAAuB;AAAA,IACzE,WAAAb;AAAA,IACA,WAAAC;AAAA,IACA,eAAe,CAACF,CAAU;AAAA,EAAA,CAC3B,GAEK,EAAE,aAAae,GAAe,WAAAC,EAAA,IAAcC,EAAA,GAE5CC,IAAWT,EAAa,UAIxBU,IAAuBR,GAAiB,uBAAuB;AAAA,IACnE,CAAAS,MAAgBA,EAAa,iBAAiBpB;AAAA,EAAA,GAG1CqB,IAAgC,CAAC;AAAA,IACrC,eAAAC;AAAA,IACA,GAAGF;AAAA,EAAA,OAEI;AAAA,IACL,GAAGA;AAAA,IACH,GAAIE,KAAiBA,MAAkB,eAAe,EAAE,eAAAA,EAAA,IAAkB,CAAA;AAAA,IAC1E,MAAMF,EAAa,QAAQ;AAAA,EAAA,IAIzBG,IAAS,OAAOC,MAA0D;AAC9E,UAAMC,IAA0BJ,EAA8BG,CAAmB;AACjF,UAAMjB,EAAkB,MAAM,YAAY;AACxC,YAAMmB,IAAS,MAAMX,EAAc;AAAA,QACjC,SAAS;AAAA,UACP,WAAAd;AAAA,UACA,WAAAC;AAAA,UACA,eAAe;AAAA,YACb,uBAAuB,CAACuB,CAAuB;AAAA,UAAA;AAAA,QACjD;AAAA,MACF,CACD;AAED,MAAAtB,EAAQwB,EAAgB,4BAA4B;AAAA,QAClD,iBAAiBD,EAAO;AAAA,QACxB,UAAAR;AAAA,MAAA,CACD;AAAA,IACH,CAAC;AAAA,EACH,GAEMU,IAAW,MAAM;AACrB,IAAAzB,EAAQwB,EAAgB,8BAA8B;AAAA,EACxD;AAEA,SAAId,sBACMP,GAAA,EAAiB,IAIzB,gBAAAT;AAAA,IAACgC;AAAA,IAAA;AAAA,MACC,QAAAN;AAAA,MACA,UAAAK;AAAA,MACA,UAAAV;AAAA,MACA,WAAAF;AAAA,MACA,sBAAAG;AAAA,MACA,wBAAwBR,GAAiB,0BAA0B,CAAA;AAAA,MACnE,oBAAoBA,GAAiB,WAAW;AAAA,MAChD,aAAAC;AAAA,MACA,YAAYD,GAAiB;AAAA,IAAA;AAAA,EAAA;AAGnC;"}
1
+ {"version":3,"file":"PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.tsx"],"sourcesContent":["import { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { useMemo } from 'react'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { PayrollEditEmployeePresentation } from './PayrollEditEmployeePresentation'\nimport { componentEvents } from '@/shared/constants'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useComponentDictionary } from '@/i18n'\nimport { useBase } from '@/components/Base/useBase'\n\ninterface PayrollEditEmployeeProps extends BaseComponentInterface<'Payroll.PayrollEditEmployee'> {\n employeeId: string\n companyId: string\n payrollId: string\n}\n\nexport function PayrollEditEmployee(props: PayrollEditEmployeeProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n employeeId,\n companyId,\n payrollId,\n onEvent,\n dictionary,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.PayrollEditEmployee', dictionary)\n\n const { LoadingIndicator, baseSubmitHandler } = useBase()\n\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const memoizedEmployeeId = useMemo(() => [employeeId], [])\n const { preparedPayroll, paySchedule, isLoading } = usePreparedPayrollData({\n companyId,\n payrollId,\n employeeUuids: memoizedEmployeeId,\n })\n\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const employee = employeeData.employee!\n const employeeCompensation = preparedPayroll?.employeeCompensations?.at(0)\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n }\n }\n\n const onSave = async (updatedCompensation: PayrollEmployeeCompensationsType) => {\n const transformedCompensation = transformEmployeeCompensation(updatedCompensation)\n await baseSubmitHandler(null, async () => {\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [transformedCompensation],\n },\n },\n })\n\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n employee,\n })\n })\n }\n\n const onCancel = () => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED)\n }\n\n if (isLoading) {\n return <LoadingIndicator />\n }\n\n return (\n <PayrollEditEmployeePresentation\n onSave={onSave}\n onCancel={onCancel}\n employee={employee}\n isPending={isPending}\n employeeCompensation={employeeCompensation}\n fixedCompensationTypes={preparedPayroll?.fixedCompensationTypes || []}\n payPeriodStartDate={preparedPayroll?.payPeriod?.startDate}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n />\n )\n}\n"],"names":["PayrollEditEmployee","props","jsx","BaseComponent","Root","employeeId","companyId","payrollId","onEvent","dictionary","useComponentDictionary","LoadingIndicator","baseSubmitHandler","useBase","employeeData","useEmployeesGetSuspense","memoizedEmployeeId","useMemo","preparedPayroll","paySchedule","isLoading","usePreparedPayrollData","updatePayroll","isPending","usePayrollsUpdateMutation","employee","employeeCompensation","transformEmployeeCompensation","paymentMethod","compensation","onSave","updatedCompensation","transformedCompensation","result","componentEvents","onCancel","PayrollEditEmployeePresentation"],"mappings":";;;;;;;;;;AAmBO,SAASA,EAAoBC,GAA0D;AAC5F,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEO,MAAMG,IAAO,CAAC;AAAA,EACnB,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AACF,MAAgC;AAC9B,EAAAC,EAAuB,+BAA+BD,CAAU;AAEhE,QAAM,EAAE,kBAAAE,GAAkB,mBAAAC,EAAA,IAAsBC,EAAA,GAE1C,EAAE,MAAMC,EAAA,IAAiBC,EAAwB,EAAE,YAAAV,GAAY,GAC/DW,IAAqBC,EAAQ,MAAM,CAACZ,CAAU,GAAG,CAAA,CAAE,GACnD,EAAE,iBAAAa,GAAiB,aAAAC,GAAa,WAAAC,EAAA,IAAcC,EAAuB;AAAA,IACzE,WAAAf;AAAA,IACA,WAAAC;AAAA,IACA,eAAeS;AAAA,EAAA,CAChB,GAEK,EAAE,aAAaM,GAAe,WAAAC,EAAA,IAAcC,EAAA,GAE5CC,IAAWX,EAAa,UACxBY,IAAuBR,GAAiB,uBAAuB,GAAG,CAAC,GAEnES,IAAgC,CAAC;AAAA,IACrC,eAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,OAEI;AAAA,IACL,GAAGA;AAAA,IACH,GAAID,KAAiBA,MAAkB,eAAe,EAAE,eAAAA,EAAA,IAAkB,CAAA;AAAA,IAC1E,MAAMC,EAAa,QAAQ;AAAA,EAAA,IAIzBC,IAAS,OAAOC,MAA0D;AAC9E,UAAMC,IAA0BL,EAA8BI,CAAmB;AACjF,UAAMnB,EAAkB,MAAM,YAAY;AACxC,YAAMqB,IAAS,MAAMX,EAAc;AAAA,QACjC,SAAS;AAAA,UACP,WAAAhB;AAAA,UACA,WAAAC;AAAA,UACA,eAAe;AAAA,YACb,uBAAuB,CAACyB,CAAuB;AAAA,UAAA;AAAA,QACjD;AAAA,MACF,CACD;AAED,MAAAxB,EAAQ0B,EAAgB,4BAA4B;AAAA,QAClD,iBAAiBD,EAAO;AAAA,QACxB,UAAAR;AAAA,MAAA,CACD;AAAA,IACH,CAAC;AAAA,EACH,GAEMU,IAAW,MAAM;AACrB,IAAA3B,EAAQ0B,EAAgB,8BAA8B;AAAA,EACxD;AAEA,SAAId,sBACMT,GAAA,EAAiB,IAIzB,gBAAAT;AAAA,IAACkC;AAAA,IAAA;AAAA,MACC,QAAAN;AAAA,MACA,UAAAK;AAAA,MACA,UAAAV;AAAA,MACA,WAAAF;AAAA,MACA,sBAAAG;AAAA,MACA,wBAAwBR,GAAiB,0BAA0B,CAAA;AAAA,MACnE,oBAAoBA,GAAiB,WAAW;AAAA,MAChD,aAAAC;AAAA,MACA,YAAYD,GAAiB;AAAA,IAAA;AAAA,EAAA;AAGnC;"}