@gusto/embedded-react-sdk 0.57.1 → 0.57.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/components/Base/Base.js +2 -3
  3. package/dist/components/Base/Base.js.map +1 -1
  4. package/dist/components/Common/DateRangeFilter/DateRangeFilter.js +32 -32
  5. package/dist/components/Common/DateRangeFilter/DateRangeFilter.js.map +1 -1
  6. package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
  7. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +6 -8
  8. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  9. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +8 -10
  10. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  11. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -6
  12. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  13. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +6 -8
  14. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  15. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -6
  16. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  17. package/dist/components/Company/AssignSignatory/TitleSelect.js +10 -11
  18. package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
  19. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -8
  20. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  21. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +8 -9
  22. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  23. package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -6
  24. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  25. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +10 -12
  26. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  27. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +11 -13
  28. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  29. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +5 -7
  30. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  31. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -6
  32. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  33. package/dist/components/Company/FederalTaxes/Actions.js +7 -9
  34. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  35. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +8 -11
  36. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  37. package/dist/components/Company/Industry/Actions.js +5 -7
  38. package/dist/components/Company/Industry/Actions.js.map +1 -1
  39. package/dist/components/Company/Industry/Context.js +6 -9
  40. package/dist/components/Company/Industry/Context.js.map +1 -1
  41. package/dist/components/Company/Industry/Edit.js +10 -12
  42. package/dist/components/Company/Industry/Edit.js.map +1 -1
  43. package/dist/components/Company/Locations/LocationForm/Actions.js +8 -10
  44. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  45. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -6
  46. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  47. package/dist/components/Company/Locations/LocationsList/Actions.js +6 -8
  48. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  49. package/dist/components/Company/Locations/LocationsList/List.js +11 -13
  50. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  51. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -6
  52. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  53. package/dist/components/Company/OnboardingOverview/context.js +3 -6
  54. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  55. package/dist/components/Company/PaySchedule/PayScheduleForm.js +66 -62
  56. package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
  57. package/dist/components/Company/PaySchedule/PayScheduleForm.module.scss.js +2 -2
  58. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js.map +1 -1
  59. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js.map +1 -1
  60. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js +34 -14
  61. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js.map +1 -1
  62. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js +106 -0
  63. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js.map +1 -0
  64. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js +136 -0
  65. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js.map +1 -0
  66. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js +38 -20
  67. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js.map +1 -1
  68. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js +78 -44
  69. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js.map +1 -1
  70. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js +45 -37
  71. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js.map +1 -1
  72. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js +253 -92
  73. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js.map +1 -1
  74. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js +22 -0
  75. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js.map +1 -0
  76. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js +13 -0
  77. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js.map +1 -0
  78. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js +48 -43
  79. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js.map +1 -1
  80. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.js.map +1 -1
  81. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js +57 -0
  82. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js.map +1 -0
  83. package/dist/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.js +11 -13
  84. package/dist/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.js.map +1 -1
  85. package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js +83 -0
  86. package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js.map +1 -0
  87. package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js +84 -0
  88. package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js.map +1 -0
  89. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js +49 -44
  90. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -1
  91. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +109 -39
  92. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -1
  93. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js.map +1 -1
  94. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -1
  95. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
  96. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +5 -7
  97. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  98. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -6
  99. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  100. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +6 -8
  101. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  102. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -6
  103. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  104. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -6
  105. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  106. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +5 -5
  107. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
  108. package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js +1 -1
  109. package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js.map +1 -1
  110. package/dist/components/Contractor/Compensation/management/CompensationCard/CompensationCard.js +16 -17
  111. package/dist/components/Contractor/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
  112. package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js +4 -4
  113. package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js.map +1 -1
  114. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js +3 -3
  115. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js.map +1 -1
  116. package/dist/components/Contractor/ContractorList/shared/useContractorList.js +6 -6
  117. package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -1
  118. package/dist/components/Contractor/Dashboard/Dashboard.js +20 -20
  119. package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
  120. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js +10 -10
  121. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js.map +1 -1
  122. package/dist/components/Contractor/Documents/management/DocumentsCard/DocumentsCard.js +8 -9
  123. package/dist/components/Contractor/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
  124. package/dist/components/Contractor/Landing/Landing.js +43 -39
  125. package/dist/components/Contractor/Landing/Landing.js.map +1 -1
  126. package/dist/components/Contractor/NewHireReport/NewHireReport.js +3 -3
  127. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  128. package/dist/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.js +6 -8
  129. package/dist/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.js.map +1 -1
  130. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +1 -1
  131. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
  132. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +10 -10
  133. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  134. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +4 -4
  135. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
  136. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +8 -8
  137. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
  138. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +5 -5
  139. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
  140. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +3 -3
  141. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
  142. package/dist/components/Contractor/Profile/management/ProfileCard/ProfileCard.js +26 -27
  143. package/dist/components/Contractor/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
  144. package/dist/components/Contractor/Profile/management/ProfileEditForm.js +11 -11
  145. package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js +1 -1
  146. package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js.map +1 -1
  147. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +1 -1
  148. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
  149. package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js +1 -1
  150. package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js.map +1 -1
  151. package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js +2 -9
  152. package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  153. package/dist/components/Contractor/Submit/Submit.js +18 -18
  154. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  155. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js +6 -6
  156. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js.map +1 -1
  157. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +25 -25
  158. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
  159. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +15 -15
  160. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
  161. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +1 -1
  162. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  163. package/dist/components/Employee/Dashboard/Dashboard.js +25 -25
  164. package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
  165. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js +12 -13
  166. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
  167. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js +12 -13
  168. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
  169. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js +6 -8
  170. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js.map +1 -1
  171. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -6
  172. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  173. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +7 -7
  174. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  175. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +1 -1
  176. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  177. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js +3 -4
  178. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js.map +1 -1
  179. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js +3 -4
  180. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js.map +1 -1
  181. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +6 -6
  182. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
  183. package/dist/components/Employee/Landing/Landing.js +37 -33
  184. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  185. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +27 -27
  186. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  187. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js +22 -24
  188. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
  189. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +8 -9
  190. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
  191. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js +14 -15
  192. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
  193. package/dist/components/Employee/Profile/management/ProfileEditForm.js +1 -1
  194. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +1 -1
  195. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +6 -6
  196. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
  197. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
  198. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
  199. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js +8 -15
  200. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  201. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js +7 -8
  202. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js.map +1 -1
  203. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js +7 -8
  204. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js.map +1 -1
  205. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +11 -11
  206. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
  207. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +12 -12
  208. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
  209. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +26 -26
  210. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
  211. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +56 -54
  212. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  213. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +14 -16
  214. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  215. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +6 -8
  216. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
  217. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +9 -11
  218. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
  219. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +66 -64
  220. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  221. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +1 -1
  222. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  223. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +6 -6
  224. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  225. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  226. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +1 -1
  227. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
  228. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  229. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +75 -89
  230. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  231. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  232. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +9 -9
  233. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  234. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +44 -46
  235. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  236. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  237. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +63 -61
  238. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
  239. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +14 -13
  240. package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +1 -1
  241. package/dist/components/Payroll/helpers.js +53 -49
  242. package/dist/components/Payroll/helpers.js.map +1 -1
  243. package/dist/components/Payroll/payrollTypes.js +1 -1
  244. package/dist/components/Payroll/payrollTypes.js.map +1 -1
  245. package/dist/components/Payroll/usePreparedPayrollData.js +13 -16
  246. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  247. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +2 -2
  248. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
  249. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +2 -4
  250. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
  251. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js +6 -8
  252. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js.map +1 -1
  253. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +28 -30
  254. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
  255. package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js +1 -1
  256. package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js.map +1 -1
  257. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +2 -4
  258. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  259. package/dist/helpers/dateFormatting.js +47 -40
  260. package/dist/helpers/dateFormatting.js.map +1 -1
  261. package/dist/i18n/en/Company.Management.PaySchedule.json.js +37 -17
  262. package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -1
  263. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +20 -10
  264. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -1
  265. package/dist/i18n/en/Payroll.PayrollHistory.json.js +5 -5
  266. package/dist/i18n/en/Payroll.PayrollList.json.js +5 -5
  267. package/dist/i18n/en/Payroll.PayrollOverview.json.js +1 -1
  268. package/dist/package.json.js +1 -1
  269. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js +8 -10
  270. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js.map +1 -1
  271. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js +12 -14
  272. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js.map +1 -1
  273. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +13 -15
  274. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
  275. package/dist/partner-hook-utils/form/fields/SelectHookField.js +10 -12
  276. package/dist/partner-hook-utils/form/fields/SelectHookField.js.map +1 -1
  277. package/dist/partner-hook-utils/form/fields/SwitchHookField.js +14 -16
  278. package/dist/partner-hook-utils/form/fields/SwitchHookField.js.map +1 -1
  279. package/dist/partner-hook-utils/form/fields/TextInputHookField.js +8 -10
  280. package/dist/partner-hook-utils/form/fields/TextInputHookField.js.map +1 -1
  281. package/dist/shared/constants.js +5 -5
  282. package/dist/shared/constants.js.map +1 -1
  283. package/dist/src/components/Common/DateRangeFilter/DateRangeFilter.d.ts +2 -2
  284. package/dist/src/components/Common/OnboardingStatusBadge/index.d.ts +1 -1
  285. package/dist/src/components/Company/PaySchedule/PayScheduleForm.d.ts +6 -0
  286. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.d.ts +1 -1
  287. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.d.ts +1 -1
  288. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.d.ts +10 -3
  289. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.d.ts +21 -0
  290. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.d.ts +34 -0
  291. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.d.ts +9 -3
  292. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.d.ts +5 -1
  293. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.d.ts +10 -10
  294. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.d.ts +12 -4
  295. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.d.ts +19 -0
  296. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.d.ts +17 -0
  297. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.d.ts +1 -1
  298. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.d.ts +34 -0
  299. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/usePayScheduleAssignment.d.ts +16 -3
  300. package/dist/src/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.d.ts +1 -1
  301. package/dist/src/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.d.ts +23 -0
  302. package/dist/src/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.d.ts +25 -0
  303. package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +1 -1
  304. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.d.ts +1 -1
  305. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +1 -1
  306. package/dist/src/components/Contractor/Landing/Landing.d.ts +5 -2
  307. package/dist/src/components/Employee/Landing/Landing.d.ts +5 -2
  308. package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +1 -1
  309. package/dist/src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +1 -1
  310. package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +1 -1
  311. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.d.ts +2 -2
  312. package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
  313. package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -2
  314. package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -1
  315. package/dist/src/components/Payroll/helpers.d.ts +22 -2
  316. package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +2 -2
  317. package/dist/src/helpers/dateFormatting.d.ts +13 -0
  318. package/dist/src/i18n/types.d.ts +96 -6
  319. package/dist/src/models/external.d.ts +63 -48
  320. package/dist/src/shared/constants.d.ts +1 -1
  321. package/dist/style.css +1 -1
  322. package/docs/guides/endpoint-inventory.json +33 -13
  323. package/package.json +21 -21
@@ -1,47 +1,45 @@
1
- import { jsx as r, jsxs as s } from "react/jsx-runtime";
1
+ import { jsx as n, jsxs as m } from "react/jsx-runtime";
2
2
  import { useTranslation as g } from "react-i18next";
3
3
  import { useBankForm as y } from "../useBankForm/useBankForm.js";
4
- import "classnames";
5
- import "../../../../../shared/constants.js";
6
4
  import { ActionsLayout as N } from "../../../../Common/ActionsLayout/ActionsLayout.js";
7
5
  import { Form as f } from "../../../../Common/Form/Form.js";
8
6
  import { BaseLayout as u } from "../../../../Base/Base.js";
9
7
  import { SDKFormProvider as B } from "../../../../../partner-hook-utils/form/SDKFormProvider.js";
10
8
  import { useComponentContext as v } from "../../../../../contexts/ComponentAdapter/useComponentContext.js";
11
9
  import { useI18n as E, useComponentDictionary as L } from "../../../../../i18n/I18n.js";
12
- function S({
10
+ function A({
13
11
  employeeId: c,
14
12
  dictionary: l,
15
13
  onSaved: d,
16
14
  onCancel: i,
17
15
  LoaderComponent: a,
18
- ...p
16
+ ...b
19
17
  }) {
20
18
  E("Employee.BankFormBody"), L("Employee.BankFormBody", l);
21
- const t = y({ employeeId: c, ...p }), { t: o } = g("Employee.BankFormBody"), m = v();
22
- if (t.isLoading)
23
- return /* @__PURE__ */ r(
19
+ const r = y({ employeeId: c, ...b }), { t: o } = g("Employee.BankFormBody"), s = v();
20
+ if (r.isLoading)
21
+ return /* @__PURE__ */ n(
24
22
  u,
25
23
  {
26
24
  isLoading: !0,
27
- error: t.errorHandling.errors,
25
+ error: r.errorHandling.errors,
28
26
  LoaderComponent: a
29
27
  }
30
28
  );
31
- const { Fields: n } = t.form, b = async () => {
32
- const e = await t.actions.onSubmit();
29
+ const { Fields: t } = r.form, p = async () => {
30
+ const e = await r.actions.onSubmit();
33
31
  e && d(e.data);
34
32
  };
35
- return /* @__PURE__ */ r(u, { error: t.errorHandling.errors, LoaderComponent: a, children: /* @__PURE__ */ r(B, { formHookResult: t, children: /* @__PURE__ */ s(f, { onSubmit: b, children: [
36
- /* @__PURE__ */ r(
37
- n.Name,
33
+ return /* @__PURE__ */ n(u, { error: r.errorHandling.errors, LoaderComponent: a, children: /* @__PURE__ */ n(B, { formHookResult: r, children: /* @__PURE__ */ m(f, { onSubmit: p, children: [
34
+ /* @__PURE__ */ n(
35
+ t.Name,
38
36
  {
39
37
  label: o("nameLabel"),
40
38
  validationMessages: { REQUIRED: o("validations.accountName") }
41
39
  }
42
40
  ),
43
- /* @__PURE__ */ r(
44
- n.RoutingNumber,
41
+ /* @__PURE__ */ n(
42
+ t.RoutingNumber,
45
43
  {
46
44
  label: o("routingNumberLabel"),
47
45
  description: o("routingNumberDescription"),
@@ -51,8 +49,8 @@ function S({
51
49
  }
52
50
  }
53
51
  ),
54
- /* @__PURE__ */ r(
55
- n.AccountNumber,
52
+ /* @__PURE__ */ n(
53
+ t.AccountNumber,
56
54
  {
57
55
  label: o("accountNumberLabel"),
58
56
  validationMessages: {
@@ -61,20 +59,20 @@ function S({
61
59
  }
62
60
  }
63
61
  ),
64
- /* @__PURE__ */ r(
65
- n.AccountType,
62
+ /* @__PURE__ */ n(
63
+ t.AccountType,
66
64
  {
67
65
  label: o("accountTypeLabel"),
68
66
  getOptionLabel: (e) => o(e === "Checking" ? "accountTypeChecking" : "accountTypeSavings")
69
67
  }
70
68
  ),
71
- /* @__PURE__ */ s(N, { children: [
72
- i && /* @__PURE__ */ r(m.Button, { variant: "secondary", type: "button", onClick: i, children: o("cancelCta") }),
73
- /* @__PURE__ */ r(m.Button, { type: "submit", isLoading: t.status.isPending, children: o("saveCta") })
69
+ /* @__PURE__ */ m(N, { children: [
70
+ i && /* @__PURE__ */ n(s.Button, { variant: "secondary", type: "button", onClick: i, children: o("cancelCta") }),
71
+ /* @__PURE__ */ n(s.Button, { type: "submit", isLoading: r.status.isPending, children: o("saveCta") })
74
72
  ] })
75
73
  ] }) }) });
76
74
  }
77
75
  export {
78
- S as BankFormBody
76
+ A as BankFormBody
79
77
  };
80
78
  //# sourceMappingURL=BankFormBody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BankFormBody.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount'\nimport { useBankForm, type AccountType, type UseBankFormProps } from '../useBankForm'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { BaseLayout } from '@/components/Base/Base'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport type { ResourceDictionary } from '@/types/Helpers'\nimport type { LoaderComponentType } from '@/components/Base'\n\n/** @internal */\nexport type BankFormBodyDictionary = ResourceDictionary<'Employee.BankFormBody'>\n\n/** @internal */\nexport interface BankFormBodyProps extends Omit<UseBankFormProps, 'employeeId'> {\n employeeId: string\n /**\n * Translation overrides for the form's strings. Each consuming surface passes\n * the dictionary it resolved from its own namespace so partner overrides on\n * that namespace flow into the shared form text.\n */\n dictionary?: BankFormBodyDictionary\n /** Called with the created bank account after a successful submit. */\n onSaved: (bankAccount: EmployeeBankAccount) => void\n onCancel?: () => void\n LoaderComponent?: LoaderComponentType\n}\n\n/**\n * Shared bank-account form body. Owns the `useBankForm` composition, the field\n * JSX, and the submit/cancel actions. Reads its copy from the internal\n * `Employee.BankFormBody` namespace; consuming surfaces inject their own copy\n * via the `dictionary` prop and map the `onSaved`/`onCancel` callbacks onto\n * their surface-specific events.\n *\n * @internal\n */\nexport function BankFormBody({\n employeeId,\n dictionary,\n onSaved,\n onCancel,\n LoaderComponent,\n ...hookProps\n}: BankFormBodyProps) {\n useI18n('Employee.BankFormBody')\n useComponentDictionary('Employee.BankFormBody', dictionary)\n const bankForm = useBankForm({ employeeId, ...hookProps })\n const { t } = useTranslation('Employee.BankFormBody')\n const Components = useComponentContext()\n\n if (bankForm.isLoading) {\n return (\n <BaseLayout\n isLoading\n error={bankForm.errorHandling.errors}\n LoaderComponent={LoaderComponent}\n />\n )\n }\n\n const { Fields } = bankForm.form\n\n const handleSubmit = async () => {\n const result = await bankForm.actions.onSubmit()\n if (result) {\n onSaved(result.data)\n }\n }\n\n return (\n <BaseLayout error={bankForm.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <SDKFormProvider formHookResult={bankForm}>\n <Form onSubmit={handleSubmit}>\n <Fields.Name\n label={t('nameLabel')}\n validationMessages={{ REQUIRED: t('validations.accountName') }}\n />\n <Fields.RoutingNumber\n label={t('routingNumberLabel')}\n description={t('routingNumberDescription')}\n validationMessages={{\n REQUIRED: t('validations.routingNumber'),\n INVALID_ROUTING_NUMBER: t('validations.routingNumber'),\n }}\n />\n <Fields.AccountNumber\n label={t('accountNumberLabel')}\n validationMessages={{\n REQUIRED: t('validations.accountNumber'),\n INVALID_ACCOUNT_NUMBER: t('validations.accountNumberFormat'),\n }}\n />\n <Fields.AccountType\n label={t('accountTypeLabel')}\n getOptionLabel={(type: AccountType) =>\n type === 'Checking' ? t('accountTypeChecking') : t('accountTypeSavings')\n }\n />\n <ActionsLayout>\n {onCancel && (\n <Components.Button variant=\"secondary\" type=\"button\" onClick={onCancel}>\n {t('cancelCta')}\n </Components.Button>\n )}\n <Components.Button type=\"submit\" isLoading={bankForm.status.isPending}>\n {t('saveCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </SDKFormProvider>\n </BaseLayout>\n )\n}\n"],"names":["BankFormBody","employeeId","dictionary","onSaved","onCancel","LoaderComponent","hookProps","useI18n","useComponentDictionary","bankForm","useBankForm","t","useTranslation","Components","useComponentContext","jsx","BaseLayout","Fields","handleSubmit","result","SDKFormProvider","jsxs","Form","type","ActionsLayout"],"mappings":";;;;;;;;;;;AAuCO,SAASA,EAAa;AAAA,EAC3B,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,GAAGC;AACL,GAAsB;AACpB,EAAAC,EAAQ,uBAAuB,GAC/BC,EAAuB,yBAAyBN,CAAU;AAC1D,QAAMO,IAAWC,EAAY,EAAE,YAAAT,GAAY,GAAGK,GAAW,GACnD,EAAE,GAAAK,EAAA,IAAMC,EAAe,uBAAuB,GAC9CC,IAAaC,EAAA;AAEnB,MAAIL,EAAS;AACX,WACE,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAS;AAAA,QACT,OAAOP,EAAS,cAAc;AAAA,QAC9B,iBAAAJ;AAAA,MAAA;AAAA,IAAA;AAKN,QAAM,EAAE,QAAAY,MAAWR,EAAS,MAEtBS,IAAe,YAAY;AAC/B,UAAMC,IAAS,MAAMV,EAAS,QAAQ,SAAA;AACtC,IAAIU,KACFhB,EAAQgB,EAAO,IAAI;AAAA,EAEvB;AAEA,SACE,gBAAAJ,EAACC,GAAA,EAAW,OAAOP,EAAS,cAAc,QAAQ,iBAAAJ,GAChD,UAAA,gBAAAU,EAACK,GAAA,EAAgB,gBAAgBX,GAC/B,UAAA,gBAAAY,EAACC,GAAA,EAAK,UAAUJ,GACd,UAAA;AAAA,IAAA,gBAAAH;AAAA,MAACE,EAAO;AAAA,MAAP;AAAA,QACC,OAAON,EAAE,WAAW;AAAA,QACpB,oBAAoB,EAAE,UAAUA,EAAE,yBAAyB,EAAA;AAAA,MAAE;AAAA,IAAA;AAAA,IAE/D,gBAAAI;AAAA,MAACE,EAAO;AAAA,MAAP;AAAA,QACC,OAAON,EAAE,oBAAoB;AAAA,QAC7B,aAAaA,EAAE,0BAA0B;AAAA,QACzC,oBAAoB;AAAA,UAClB,UAAUA,EAAE,2BAA2B;AAAA,UACvC,wBAAwBA,EAAE,2BAA2B;AAAA,QAAA;AAAA,MACvD;AAAA,IAAA;AAAA,IAEF,gBAAAI;AAAA,MAACE,EAAO;AAAA,MAAP;AAAA,QACC,OAAON,EAAE,oBAAoB;AAAA,QAC7B,oBAAoB;AAAA,UAClB,UAAUA,EAAE,2BAA2B;AAAA,UACvC,wBAAwBA,EAAE,iCAAiC;AAAA,QAAA;AAAA,MAC7D;AAAA,IAAA;AAAA,IAEF,gBAAAI;AAAA,MAACE,EAAO;AAAA,MAAP;AAAA,QACC,OAAON,EAAE,kBAAkB;AAAA,QAC3B,gBAAgB,CAACY,MACOZ,EAAtBY,MAAS,aAAe,wBAA2B,oBAAN;AAAA,MAA0B;AAAA,IAAA;AAAA,sBAG1EC,GAAA,EACE,UAAA;AAAA,MAAApB,KACC,gBAAAW,EAACF,EAAW,QAAX,EAAkB,SAAQ,aAAY,MAAK,UAAS,SAAST,GAC3D,UAAAO,EAAE,WAAW,EAAA,CAChB;AAAA,MAEF,gBAAAI,EAACF,EAAW,QAAX,EAAkB,MAAK,UAAS,WAAWJ,EAAS,OAAO,WACzD,UAAAE,EAAE,SAAS,EAAA,CACd;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;"}
1
+ {"version":3,"file":"BankFormBody.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount'\nimport { useBankForm, type AccountType, type UseBankFormProps } from '../useBankForm'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { BaseLayout } from '@/components/Base/Base'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport type { ResourceDictionary } from '@/types/Helpers'\nimport type { LoaderComponentType } from '@/components/Base'\n\n/** @internal */\nexport type BankFormBodyDictionary = ResourceDictionary<'Employee.BankFormBody'>\n\n/** @internal */\nexport interface BankFormBodyProps extends Omit<UseBankFormProps, 'employeeId'> {\n employeeId: string\n /**\n * Translation overrides for the form's strings. Each consuming surface passes\n * the dictionary it resolved from its own namespace so partner overrides on\n * that namespace flow into the shared form text.\n */\n dictionary?: BankFormBodyDictionary\n /** Called with the created bank account after a successful submit. */\n onSaved: (bankAccount: EmployeeBankAccount) => void\n onCancel?: () => void\n LoaderComponent?: LoaderComponentType\n}\n\n/**\n * Shared bank-account form body. Owns the `useBankForm` composition, the field\n * JSX, and the submit/cancel actions. Reads its copy from the internal\n * `Employee.BankFormBody` namespace; consuming surfaces inject their own copy\n * via the `dictionary` prop and map the `onSaved`/`onCancel` callbacks onto\n * their surface-specific events.\n *\n * @internal\n */\nexport function BankFormBody({\n employeeId,\n dictionary,\n onSaved,\n onCancel,\n LoaderComponent,\n ...hookProps\n}: BankFormBodyProps) {\n useI18n('Employee.BankFormBody')\n useComponentDictionary('Employee.BankFormBody', dictionary)\n const bankForm = useBankForm({ employeeId, ...hookProps })\n const { t } = useTranslation('Employee.BankFormBody')\n const Components = useComponentContext()\n\n if (bankForm.isLoading) {\n return (\n <BaseLayout\n isLoading\n error={bankForm.errorHandling.errors}\n LoaderComponent={LoaderComponent}\n />\n )\n }\n\n const { Fields } = bankForm.form\n\n const handleSubmit = async () => {\n const result = await bankForm.actions.onSubmit()\n if (result) {\n onSaved(result.data)\n }\n }\n\n return (\n <BaseLayout error={bankForm.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <SDKFormProvider formHookResult={bankForm}>\n <Form onSubmit={handleSubmit}>\n <Fields.Name\n label={t('nameLabel')}\n validationMessages={{ REQUIRED: t('validations.accountName') }}\n />\n <Fields.RoutingNumber\n label={t('routingNumberLabel')}\n description={t('routingNumberDescription')}\n validationMessages={{\n REQUIRED: t('validations.routingNumber'),\n INVALID_ROUTING_NUMBER: t('validations.routingNumber'),\n }}\n />\n <Fields.AccountNumber\n label={t('accountNumberLabel')}\n validationMessages={{\n REQUIRED: t('validations.accountNumber'),\n INVALID_ACCOUNT_NUMBER: t('validations.accountNumberFormat'),\n }}\n />\n <Fields.AccountType\n label={t('accountTypeLabel')}\n getOptionLabel={(type: AccountType) =>\n type === 'Checking' ? t('accountTypeChecking') : t('accountTypeSavings')\n }\n />\n <ActionsLayout>\n {onCancel && (\n <Components.Button variant=\"secondary\" type=\"button\" onClick={onCancel}>\n {t('cancelCta')}\n </Components.Button>\n )}\n <Components.Button type=\"submit\" isLoading={bankForm.status.isPending}>\n {t('saveCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </SDKFormProvider>\n </BaseLayout>\n )\n}\n"],"names":["BankFormBody","employeeId","dictionary","onSaved","onCancel","LoaderComponent","hookProps","useI18n","useComponentDictionary","bankForm","useBankForm","t","useTranslation","Components","useComponentContext","jsx","BaseLayout","Fields","handleSubmit","result","SDKFormProvider","jsxs","Form","type","ActionsLayout"],"mappings":";;;;;;;;;AAuCO,SAASA,EAAa;AAAA,EAC3B,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,GAAGC;AACL,GAAsB;AACpB,EAAAC,EAAQ,uBAAuB,GAC/BC,EAAuB,yBAAyBN,CAAU;AAC1D,QAAMO,IAAWC,EAAY,EAAE,YAAAT,GAAY,GAAGK,GAAW,GACnD,EAAE,GAAAK,EAAA,IAAMC,EAAe,uBAAuB,GAC9CC,IAAaC,EAAA;AAEnB,MAAIL,EAAS;AACX,WACE,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAS;AAAA,QACT,OAAOP,EAAS,cAAc;AAAA,QAC9B,iBAAAJ;AAAA,MAAA;AAAA,IAAA;AAKN,QAAM,EAAE,QAAAY,MAAWR,EAAS,MAEtBS,IAAe,YAAY;AAC/B,UAAMC,IAAS,MAAMV,EAAS,QAAQ,SAAA;AACtC,IAAIU,KACFhB,EAAQgB,EAAO,IAAI;AAAA,EAEvB;AAEA,SACE,gBAAAJ,EAACC,GAAA,EAAW,OAAOP,EAAS,cAAc,QAAQ,iBAAAJ,GAChD,UAAA,gBAAAU,EAACK,GAAA,EAAgB,gBAAgBX,GAC/B,UAAA,gBAAAY,EAACC,GAAA,EAAK,UAAUJ,GACd,UAAA;AAAA,IAAA,gBAAAH;AAAA,MAACE,EAAO;AAAA,MAAP;AAAA,QACC,OAAON,EAAE,WAAW;AAAA,QACpB,oBAAoB,EAAE,UAAUA,EAAE,yBAAyB,EAAA;AAAA,MAAE;AAAA,IAAA;AAAA,IAE/D,gBAAAI;AAAA,MAACE,EAAO;AAAA,MAAP;AAAA,QACC,OAAON,EAAE,oBAAoB;AAAA,QAC7B,aAAaA,EAAE,0BAA0B;AAAA,QACzC,oBAAoB;AAAA,UAClB,UAAUA,EAAE,2BAA2B;AAAA,UACvC,wBAAwBA,EAAE,2BAA2B;AAAA,QAAA;AAAA,MACvD;AAAA,IAAA;AAAA,IAEF,gBAAAI;AAAA,MAACE,EAAO;AAAA,MAAP;AAAA,QACC,OAAON,EAAE,oBAAoB;AAAA,QAC7B,oBAAoB;AAAA,UAClB,UAAUA,EAAE,2BAA2B;AAAA,UACvC,wBAAwBA,EAAE,iCAAiC;AAAA,QAAA;AAAA,MAC7D;AAAA,IAAA;AAAA,IAEF,gBAAAI;AAAA,MAACE,EAAO;AAAA,MAAP;AAAA,QACC,OAAON,EAAE,kBAAkB;AAAA,QAC3B,gBAAgB,CAACY,MACOZ,EAAtBY,MAAS,aAAe,wBAA2B,oBAAN;AAAA,MAA0B;AAAA,IAAA;AAAA,sBAG1EC,GAAA,EACE,UAAA;AAAA,MAAApB,KACC,gBAAAW,EAACF,EAAW,QAAX,EAAkB,SAAQ,aAAY,MAAK,UAAS,SAAST,GAC3D,UAAAO,EAAE,WAAW,EAAA,CAChB;AAAA,MAEF,gBAAAI,EAACF,EAAW,QAAX,EAAkB,MAAK,UAAS,WAAWJ,EAAS,OAAO,WACzD,UAAAE,EAAE,SAAS,EAAA,CACd;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;"}
@@ -2,10 +2,8 @@ import { jsx as o } from "react/jsx-runtime";
2
2
  import { useState as L, useCallback as k } from "react";
3
3
  import { useTranslation as D } from "react-i18next";
4
4
  import { useErrorBoundary as _ } from "react-error-boundary";
5
- import "classnames";
6
- import { componentEvents as E } from "../../../../../shared/constants.js";
7
5
  import { Loading as T } from "../../../../Common/Loading/Loading.js";
8
- import { EmptyData as w } from "../../../../Common/EmptyData/EmptyData.js";
6
+ import { EmptyData as E } from "../../../../Common/EmptyData/EmptyData.js";
9
7
  import { BaseBoundaries as O, BaseLayout as M } from "../../../../Base/Base.js";
10
8
  import { useComponentContext as S } from "../../../../../contexts/ComponentAdapter/useComponentContext.js";
11
9
  import { openPdfInNewTab as U } from "../../../../../helpers/openPdfInNewTab.js";
@@ -14,12 +12,13 @@ import { usePaymentMethodList as H } from "../../../PaymentMethod/shared/usePaym
14
12
  import { formatDateLongWithYear as R } from "../../../../../helpers/dateFormatting.js";
15
13
  import W from "../../../../../hooks/useNumberFormatter.js";
16
14
  import { useI18n as j } from "../../../../../i18n/I18n.js";
15
+ import { componentEvents as w } from "../../../../../shared/constants.js";
17
16
  import F from "../../../../../assets/icons/download-cloud.svg.js";
18
17
  import { usePaystubsList as V } from "../../shared/usePaystubsList/usePaystubsList.js";
19
18
  import { useNonce as v } from "../../../../../contexts/NonceProvider/useNonce.js";
20
19
  import { useDataView as G } from "../../../../Common/DataView/useDataView.js";
21
20
  import { DataView as Q } from "../../../../Common/DataView/DataView.js";
22
- function ft({ LoaderComponent: a, ...i }) {
21
+ function pt({ LoaderComponent: a, ...i }) {
23
22
  return /* @__PURE__ */ o(O, { componentName: "Employee.Management.Paystubs", LoaderComponent: a, children: /* @__PURE__ */ o(q, { LoaderComponent: a, ...i }) });
24
23
  }
25
24
  function q({ employeeId: a, onEvent: i, LoaderComponent: s }) {
@@ -49,7 +48,7 @@ function z({
49
48
  () => /* @__PURE__ */ new Set()
50
49
  ), { payStubs: h } = s.data, C = s.pagination.payStubs, N = l.isLoading ? void 0 : l.data.paymentMethod, B = k(
51
50
  async (t) => {
52
- i(E.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOAD_REQUESTED, {
51
+ i(w.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOAD_REQUESTED, {
53
52
  employeeId: a,
54
53
  payrollUuid: t
55
54
  });
@@ -64,7 +63,7 @@ function z({
64
63
  r.close();
65
64
  return;
66
65
  }
67
- r.navigate(n.data), i(E.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOADED, {
66
+ r.navigate(n.data), i(w.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOADED, {
68
67
  employeeId: a,
69
68
  payrollUuid: t
70
69
  });
@@ -130,18 +129,18 @@ function z({
130
129
  }
131
130
  );
132
131
  },
133
- emptyState: () => /* @__PURE__ */ o(w, { title: e("emptyState.title"), description: e("emptyState.description") })
132
+ emptyState: () => /* @__PURE__ */ o(E, { title: e("emptyState.title"), description: e("emptyState.description") })
134
133
  }), P = h.length > 0;
135
134
  return /* @__PURE__ */ o(M, { error: u.errors, LoaderComponent: d, children: /* @__PURE__ */ o(
136
135
  m.Box,
137
136
  {
138
137
  withPadding: !P,
139
138
  header: /* @__PURE__ */ o(m.BoxHeader, { title: e("title") }),
140
- children: P ? /* @__PURE__ */ o(Q, { label: e("listLabel"), isWithinBox: !0, ...x }) : /* @__PURE__ */ o(w, { title: e("emptyState.title"), description: e("emptyState.description") })
139
+ children: P ? /* @__PURE__ */ o(Q, { label: e("listLabel"), isWithinBox: !0, ...x }) : /* @__PURE__ */ o(E, { title: e("emptyState.title"), description: e("emptyState.description") })
141
140
  }
142
141
  ) });
143
142
  }
144
143
  export {
145
- ft as PaystubsCard
144
+ pt as PaystubsCard
146
145
  };
147
146
  //# sourceMappingURL=PaystubsCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaystubsCard.js","sources":["../../../../../../src/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport {\n usePaystubsList,\n type EmployeePayStub,\n type UsePaystubsListReady,\n} from '../../shared/usePaystubsList'\nimport { DataView, EmptyData, useDataView, Loading } from '@/components/Common'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useNonce } from '@/contexts/NonceProvider'\nimport { openPdfInNewTab } from '@/helpers/openPdfInNewTab'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport {\n usePaymentMethodList,\n type UsePaymentMethodListResult,\n} from '@/components/Employee/PaymentMethod/shared'\nimport { formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport type { LoaderComponentType } from '@/components/Base'\nimport DownloadCloudIcon from '@/assets/icons/download-cloud.svg?react'\n\n/**\n * Props for {@link PaystubsCard}.\n *\n * @public\n */\nexport interface PaystubsCardProps {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when paystub interactions occur. */\n onEvent: OnEventType<EventType, unknown>\n /** Custom loading indicator rendered while this component's async data is fetching. Overrides the indicator configured on `GustoProvider` for this instance only. */\n LoaderComponent?: LoaderComponentType\n}\n\n/**\n * Standalone \"Paystubs\" card. Owns its own data fetch via\n * {@link usePaystubsList} and renders the paginated paystubs table with a\n * per-row PDF download action. Emits the management block's scoped events\n * (`EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_*`) on download request and on\n * download success. The card has no edit transitions and no alert API —\n * paystubs is a read-only surface whose only action is a download side\n * effect that opens the PDF in a new tab.\n *\n * @public\n */\nexport function PaystubsCard({ LoaderComponent, ...props }: PaystubsCardProps) {\n return (\n <BaseBoundaries componentName=\"Employee.Management.Paystubs\" LoaderComponent={LoaderComponent}>\n <PaystubsCardContent LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction PaystubsCardContent({ employeeId, onEvent, LoaderComponent }: PaystubsCardProps) {\n useI18n('Employee.Management.Paystubs')\n const { t } = useTranslation('Employee.Management.Paystubs')\n const Components = useComponentContext()\n const paystubsList = usePaystubsList({ employeeId })\n const paymentMethodList = usePaymentMethodList({ employeeId })\n\n const errorHandling = composeErrorHandler([paystubsList, paymentMethodList])\n\n if (paystubsList.isLoading) {\n return (\n <BaseLayout error={errorHandling.errors} LoaderComponent={LoaderComponent}>\n <Components.Box header={<Components.BoxHeader title={t('title')} />}>\n <Loading />\n </Components.Box>\n </BaseLayout>\n )\n }\n\n return (\n <PaystubsCardReady\n employeeId={employeeId}\n onEvent={onEvent}\n paystubsList={paystubsList}\n paymentMethodList={paymentMethodList}\n errorHandling={errorHandling}\n LoaderComponent={LoaderComponent}\n />\n )\n}\n\ninterface PaystubsCardReadyProps extends PaystubsCardProps {\n paystubsList: UsePaystubsListReady\n paymentMethodList: UsePaymentMethodListResult\n errorHandling: ReturnType<typeof composeErrorHandler>\n}\n\nfunction PaystubsCardReady({\n employeeId,\n onEvent,\n paystubsList,\n paymentMethodList,\n errorHandling,\n LoaderComponent,\n}: PaystubsCardReadyProps) {\n const { t } = useTranslation('Employee.Management.Paystubs')\n const Components = useComponentContext()\n const formatCurrency = useNumberFormatter('currency')\n const { showBoundary } = useErrorBoundary()\n const nonce = useNonce()\n\n const [downloadingPayrollUuids, setDownloadingPayrollUuids] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n const { payStubs } = paystubsList.data\n const payStubsPagination = paystubsList.pagination.payStubs\n const paymentMethod = paymentMethodList.isLoading\n ? undefined\n : paymentMethodList.data.paymentMethod\n\n const handleDownload = useCallback(\n async (payrollUuid: string) => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOAD_REQUESTED, {\n employeeId,\n payrollUuid,\n })\n\n const tab = openPdfInNewTab({ loadingMessage: t('downloadLoadingMessage'), nonce })\n setDownloadingPayrollUuids(prev => {\n const next = new Set(prev)\n next.add(payrollUuid)\n return next\n })\n try {\n const result = await paystubsList.actions.downloadPayStub(payrollUuid)\n if (!result) {\n tab.close()\n return\n }\n tab.navigate(result.data)\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOADED, {\n employeeId,\n payrollUuid,\n })\n } catch (err) {\n tab.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingPayrollUuids(prev => {\n if (!prev.has(payrollUuid)) return prev\n const next = new Set(prev)\n next.delete(payrollUuid)\n return next\n })\n }\n },\n [paystubsList.actions, onEvent, employeeId, t, showBoundary, nonce],\n )\n\n const payStubsColumns = [\n {\n key: 'payday',\n title: t('payday'),\n render: (payStub: EmployeePayStub) => formatDateLongWithYear(payStub.checkDate) || '-',\n },\n {\n key: 'checkAmount',\n title: t('checkAmount'),\n justify: 'end' as const,\n render: (payStub: EmployeePayStub) => {\n if (!payStub.netPay) return '-'\n const amount = parseFloat(payStub.netPay)\n return isNaN(amount) ? '-' : formatCurrency(amount)\n },\n },\n {\n key: 'grossPay',\n title: t('grossPay'),\n justify: 'end' as const,\n render: (payStub: EmployeePayStub) => {\n if (!payStub.grossPay) return '-'\n const amount = parseFloat(payStub.grossPay)\n return isNaN(amount) ? '-' : formatCurrency(amount)\n },\n },\n {\n key: 'paymentMethod',\n title: t('paymentMethod'),\n render: () => paymentMethod?.type || t('noPaymentMethod'),\n },\n ]\n\n const payStubsDataView = useDataView({\n data: payStubs,\n columns: payStubsColumns,\n pagination: payStubsPagination,\n itemMenu: payStub => {\n const isDownloading =\n !!payStub.payrollUuid && downloadingPayrollUuids.has(payStub.payrollUuid)\n return (\n <Components.ButtonIcon\n variant=\"tertiary\"\n aria-label={t('downloadCta')}\n isDisabled={!payStub.payrollUuid}\n isLoading={isDownloading}\n onClick={() => {\n if (payStub.payrollUuid) {\n void handleDownload(payStub.payrollUuid)\n }\n }}\n >\n <DownloadCloudIcon aria-hidden />\n </Components.ButtonIcon>\n )\n },\n emptyState: () => (\n <EmptyData title={t('emptyState.title')} description={t('emptyState.description')} />\n ),\n })\n\n const isShowingTable = payStubs.length > 0\n\n return (\n <BaseLayout error={errorHandling.errors} LoaderComponent={LoaderComponent}>\n <Components.Box\n withPadding={!isShowingTable}\n header={<Components.BoxHeader title={t('title')} />}\n >\n {isShowingTable ? (\n <DataView label={t('listLabel')} isWithinBox {...payStubsDataView} />\n ) : (\n <EmptyData title={t('emptyState.title')} description={t('emptyState.description')} />\n )}\n </Components.Box>\n </BaseLayout>\n )\n}\n"],"names":["PaystubsCard","LoaderComponent","props","jsx","BaseBoundaries","PaystubsCardContent","employeeId","onEvent","useI18n","t","useTranslation","Components","useComponentContext","paystubsList","usePaystubsList","paymentMethodList","usePaymentMethodList","errorHandling","composeErrorHandler","BaseLayout","Loading","PaystubsCardReady","formatCurrency","useNumberFormatter","showBoundary","useErrorBoundary","nonce","useNonce","downloadingPayrollUuids","setDownloadingPayrollUuids","useState","payStubs","payStubsPagination","paymentMethod","handleDownload","useCallback","payrollUuid","componentEvents","tab","openPdfInNewTab","prev","next","result","err","payStubsColumns","payStub","formatDateLongWithYear","amount","payStubsDataView","useDataView","isDownloading","DownloadCloudIcon","EmptyData","isShowingTable","DataView"],"mappings":"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"}
1
+ {"version":3,"file":"PaystubsCard.js","sources":["../../../../../../src/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport {\n usePaystubsList,\n type EmployeePayStub,\n type UsePaystubsListReady,\n} from '../../shared/usePaystubsList'\nimport { DataView, EmptyData, useDataView, Loading } from '@/components/Common'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useNonce } from '@/contexts/NonceProvider'\nimport { openPdfInNewTab } from '@/helpers/openPdfInNewTab'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport {\n usePaymentMethodList,\n type UsePaymentMethodListResult,\n} from '@/components/Employee/PaymentMethod/shared'\nimport { formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport type { LoaderComponentType } from '@/components/Base'\nimport DownloadCloudIcon from '@/assets/icons/download-cloud.svg?react'\n\n/**\n * Props for {@link PaystubsCard}.\n *\n * @public\n */\nexport interface PaystubsCardProps {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when paystub interactions occur. */\n onEvent: OnEventType<EventType, unknown>\n /** Custom loading indicator rendered while this component's async data is fetching. Overrides the indicator configured on `GustoProvider` for this instance only. */\n LoaderComponent?: LoaderComponentType\n}\n\n/**\n * Standalone \"Paystubs\" card. Owns its own data fetch via\n * {@link usePaystubsList} and renders the paginated paystubs table with a\n * per-row PDF download action. Emits the management block's scoped events\n * (`EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_*`) on download request and on\n * download success. The card has no edit transitions and no alert API —\n * paystubs is a read-only surface whose only action is a download side\n * effect that opens the PDF in a new tab.\n *\n * @public\n */\nexport function PaystubsCard({ LoaderComponent, ...props }: PaystubsCardProps) {\n return (\n <BaseBoundaries componentName=\"Employee.Management.Paystubs\" LoaderComponent={LoaderComponent}>\n <PaystubsCardContent LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction PaystubsCardContent({ employeeId, onEvent, LoaderComponent }: PaystubsCardProps) {\n useI18n('Employee.Management.Paystubs')\n const { t } = useTranslation('Employee.Management.Paystubs')\n const Components = useComponentContext()\n const paystubsList = usePaystubsList({ employeeId })\n const paymentMethodList = usePaymentMethodList({ employeeId })\n\n const errorHandling = composeErrorHandler([paystubsList, paymentMethodList])\n\n if (paystubsList.isLoading) {\n return (\n <BaseLayout error={errorHandling.errors} LoaderComponent={LoaderComponent}>\n <Components.Box header={<Components.BoxHeader title={t('title')} />}>\n <Loading />\n </Components.Box>\n </BaseLayout>\n )\n }\n\n return (\n <PaystubsCardReady\n employeeId={employeeId}\n onEvent={onEvent}\n paystubsList={paystubsList}\n paymentMethodList={paymentMethodList}\n errorHandling={errorHandling}\n LoaderComponent={LoaderComponent}\n />\n )\n}\n\ninterface PaystubsCardReadyProps extends PaystubsCardProps {\n paystubsList: UsePaystubsListReady\n paymentMethodList: UsePaymentMethodListResult\n errorHandling: ReturnType<typeof composeErrorHandler>\n}\n\nfunction PaystubsCardReady({\n employeeId,\n onEvent,\n paystubsList,\n paymentMethodList,\n errorHandling,\n LoaderComponent,\n}: PaystubsCardReadyProps) {\n const { t } = useTranslation('Employee.Management.Paystubs')\n const Components = useComponentContext()\n const formatCurrency = useNumberFormatter('currency')\n const { showBoundary } = useErrorBoundary()\n const nonce = useNonce()\n\n const [downloadingPayrollUuids, setDownloadingPayrollUuids] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n const { payStubs } = paystubsList.data\n const payStubsPagination = paystubsList.pagination.payStubs\n const paymentMethod = paymentMethodList.isLoading\n ? undefined\n : paymentMethodList.data.paymentMethod\n\n const handleDownload = useCallback(\n async (payrollUuid: string) => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOAD_REQUESTED, {\n employeeId,\n payrollUuid,\n })\n\n const tab = openPdfInNewTab({ loadingMessage: t('downloadLoadingMessage'), nonce })\n setDownloadingPayrollUuids(prev => {\n const next = new Set(prev)\n next.add(payrollUuid)\n return next\n })\n try {\n const result = await paystubsList.actions.downloadPayStub(payrollUuid)\n if (!result) {\n tab.close()\n return\n }\n tab.navigate(result.data)\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOADED, {\n employeeId,\n payrollUuid,\n })\n } catch (err) {\n tab.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingPayrollUuids(prev => {\n if (!prev.has(payrollUuid)) return prev\n const next = new Set(prev)\n next.delete(payrollUuid)\n return next\n })\n }\n },\n [paystubsList.actions, onEvent, employeeId, t, showBoundary, nonce],\n )\n\n const payStubsColumns = [\n {\n key: 'payday',\n title: t('payday'),\n render: (payStub: EmployeePayStub) => formatDateLongWithYear(payStub.checkDate) || '-',\n },\n {\n key: 'checkAmount',\n title: t('checkAmount'),\n justify: 'end' as const,\n render: (payStub: EmployeePayStub) => {\n if (!payStub.netPay) return '-'\n const amount = parseFloat(payStub.netPay)\n return isNaN(amount) ? '-' : formatCurrency(amount)\n },\n },\n {\n key: 'grossPay',\n title: t('grossPay'),\n justify: 'end' as const,\n render: (payStub: EmployeePayStub) => {\n if (!payStub.grossPay) return '-'\n const amount = parseFloat(payStub.grossPay)\n return isNaN(amount) ? '-' : formatCurrency(amount)\n },\n },\n {\n key: 'paymentMethod',\n title: t('paymentMethod'),\n render: () => paymentMethod?.type || t('noPaymentMethod'),\n },\n ]\n\n const payStubsDataView = useDataView({\n data: payStubs,\n columns: payStubsColumns,\n pagination: payStubsPagination,\n itemMenu: payStub => {\n const isDownloading =\n !!payStub.payrollUuid && downloadingPayrollUuids.has(payStub.payrollUuid)\n return (\n <Components.ButtonIcon\n variant=\"tertiary\"\n aria-label={t('downloadCta')}\n isDisabled={!payStub.payrollUuid}\n isLoading={isDownloading}\n onClick={() => {\n if (payStub.payrollUuid) {\n void handleDownload(payStub.payrollUuid)\n }\n }}\n >\n <DownloadCloudIcon aria-hidden />\n </Components.ButtonIcon>\n )\n },\n emptyState: () => (\n <EmptyData title={t('emptyState.title')} description={t('emptyState.description')} />\n ),\n })\n\n const isShowingTable = payStubs.length > 0\n\n return (\n <BaseLayout error={errorHandling.errors} LoaderComponent={LoaderComponent}>\n <Components.Box\n withPadding={!isShowingTable}\n header={<Components.BoxHeader title={t('title')} />}\n >\n {isShowingTable ? (\n <DataView label={t('listLabel')} isWithinBox {...payStubsDataView} />\n ) : (\n <EmptyData title={t('emptyState.title')} description={t('emptyState.description')} />\n )}\n </Components.Box>\n </BaseLayout>\n )\n}\n"],"names":["PaystubsCard","LoaderComponent","props","jsx","BaseBoundaries","PaystubsCardContent","employeeId","onEvent","useI18n","t","useTranslation","Components","useComponentContext","paystubsList","usePaystubsList","paymentMethodList","usePaymentMethodList","errorHandling","composeErrorHandler","BaseLayout","Loading","PaystubsCardReady","formatCurrency","useNumberFormatter","showBoundary","useErrorBoundary","nonce","useNonce","downloadingPayrollUuids","setDownloadingPayrollUuids","useState","payStubs","payStubsPagination","paymentMethod","handleDownload","useCallback","payrollUuid","componentEvents","tab","openPdfInNewTab","prev","next","result","err","payStubsColumns","payStub","formatDateLongWithYear","amount","payStubsDataView","useDataView","isDownloading","DownloadCloudIcon","EmptyData","isShowingTable","DataView"],"mappings":";;;;;;;;;;;;;;;;;;;;AAmDO,SAASA,GAAa,EAAE,iBAAAC,GAAiB,GAAGC,KAA4B;AAC7E,SACE,gBAAAC,EAACC,GAAA,EAAe,eAAc,gCAA+B,iBAAAH,GAC3D,4BAACI,GAAA,EAAoB,iBAAAJ,GAAmC,GAAGC,EAAA,CAAO,EAAA,CACpE;AAEJ;AAEA,SAASG,EAAoB,EAAE,YAAAC,GAAY,SAAAC,GAAS,iBAAAN,KAAsC;AACxF,EAAAO,EAAQ,8BAA8B;AACtC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,8BAA8B,GACrDC,IAAaC,EAAA,GACbC,IAAeC,EAAgB,EAAE,YAAAR,GAAY,GAC7CS,IAAoBC,EAAqB,EAAE,YAAAV,GAAY,GAEvDW,IAAgBC,EAAoB,CAACL,GAAcE,CAAiB,CAAC;AAE3E,SAAIF,EAAa,YAEb,gBAAAV,EAACgB,KAAW,OAAOF,EAAc,QAAQ,iBAAAhB,GACvC,UAAA,gBAAAE,EAACQ,EAAW,KAAX,EAAe,0BAASA,EAAW,WAAX,EAAqB,OAAOF,EAAE,OAAO,GAAG,GAC/D,UAAA,gBAAAN,EAACiB,GAAA,EAAQ,EAAA,CACX,EAAA,CACF,IAKF,gBAAAjB;AAAA,IAACkB;AAAA,IAAA;AAAA,MACC,YAAAf;AAAA,MACA,SAAAC;AAAA,MACA,cAAAM;AAAA,MACA,mBAAAE;AAAA,MACA,eAAAE;AAAA,MACA,iBAAAhB;AAAA,IAAA;AAAA,EAAA;AAGN;AAQA,SAASoB,EAAkB;AAAA,EACzB,YAAAf;AAAA,EACA,SAAAC;AAAA,EACA,cAAAM;AAAA,EACA,mBAAAE;AAAA,EACA,eAAAE;AAAA,EACA,iBAAAhB;AACF,GAA2B;AACzB,QAAM,EAAE,GAAAQ,EAAA,IAAMC,EAAe,8BAA8B,GACrDC,IAAaC,EAAA,GACbU,IAAiBC,EAAmB,UAAU,GAC9C,EAAE,cAAAC,EAAA,IAAiBC,EAAA,GACnBC,IAAQC,EAAA,GAER,CAACC,GAAyBC,CAA0B,IAAIC;AAAA,IAC5D,0BAAU,IAAA;AAAA,EAAI,GAGV,EAAE,UAAAC,MAAalB,EAAa,MAC5BmB,IAAqBnB,EAAa,WAAW,UAC7CoB,IAAgBlB,EAAkB,YACpC,SACAA,EAAkB,KAAK,eAErBmB,IAAiBC;AAAA,IACrB,OAAOC,MAAwB;AAC7B,MAAA7B,EAAQ8B,EAAgB,sDAAsD;AAAA,QAC5E,YAAA/B;AAAA,QACA,aAAA8B;AAAA,MAAA,CACD;AAED,YAAME,IAAMC,EAAgB,EAAE,gBAAgB9B,EAAE,wBAAwB,GAAG,OAAAiB,GAAO;AAClF,MAAAG,EAA2B,CAAAW,MAAQ;AACjC,cAAMC,IAAO,IAAI,IAAID,CAAI;AACzB,eAAAC,EAAK,IAAIL,CAAW,GACbK;AAAA,MACT,CAAC;AACD,UAAI;AACF,cAAMC,IAAS,MAAM7B,EAAa,QAAQ,gBAAgBuB,CAAW;AACrE,YAAI,CAACM,GAAQ;AACX,UAAAJ,EAAI,MAAA;AACJ;AAAA,QACF;AACA,QAAAA,EAAI,SAASI,EAAO,IAAI,GACxBnC,EAAQ8B,EAAgB,8CAA8C;AAAA,UACpE,YAAA/B;AAAA,UACA,aAAA8B;AAAA,QAAA,CACD;AAAA,MACH,SAASO,GAAK;AACZ,QAAAL,EAAI,MAAA,GACJd,EAAamB,aAAe,QAAQA,IAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CAAC;AAAA,MAClE,UAAA;AACE,QAAAd,EAA2B,CAAAW,MAAQ;AACjC,cAAI,CAACA,EAAK,IAAIJ,CAAW,EAAG,QAAOI;AACnC,gBAAMC,IAAO,IAAI,IAAID,CAAI;AACzB,iBAAAC,EAAK,OAAOL,CAAW,GAChBK;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAAC5B,EAAa,SAASN,GAASD,GAAYG,GAAGe,GAAcE,CAAK;AAAA,EAAA,GAG9DkB,IAAkB;AAAA,IACtB;AAAA,MACE,KAAK;AAAA,MACL,OAAOnC,EAAE,QAAQ;AAAA,MACjB,QAAQ,CAACoC,MAA6BC,EAAuBD,EAAQ,SAAS,KAAK;AAAA,IAAA;AAAA,IAErF;AAAA,MACE,KAAK;AAAA,MACL,OAAOpC,EAAE,aAAa;AAAA,MACtB,SAAS;AAAA,MACT,QAAQ,CAACoC,MAA6B;AACpC,YAAI,CAACA,EAAQ,OAAQ,QAAO;AAC5B,cAAME,IAAS,WAAWF,EAAQ,MAAM;AACxC,eAAO,MAAME,CAAM,IAAI,MAAMzB,EAAeyB,CAAM;AAAA,MACpD;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,KAAK;AAAA,MACL,OAAOtC,EAAE,UAAU;AAAA,MACnB,SAAS;AAAA,MACT,QAAQ,CAACoC,MAA6B;AACpC,YAAI,CAACA,EAAQ,SAAU,QAAO;AAC9B,cAAME,IAAS,WAAWF,EAAQ,QAAQ;AAC1C,eAAO,MAAME,CAAM,IAAI,MAAMzB,EAAeyB,CAAM;AAAA,MACpD;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,KAAK;AAAA,MACL,OAAOtC,EAAE,eAAe;AAAA,MACxB,QAAQ,MAAMwB,GAAe,QAAQxB,EAAE,iBAAiB;AAAA,IAAA;AAAA,EAC1D,GAGIuC,IAAmBC,EAAY;AAAA,IACnC,MAAMlB;AAAA,IACN,SAASa;AAAA,IACT,YAAYZ;AAAA,IACZ,UAAU,CAAAa,MAAW;AACnB,YAAMK,IACJ,CAAC,CAACL,EAAQ,eAAejB,EAAwB,IAAIiB,EAAQ,WAAW;AAC1E,aACE,gBAAA1C;AAAA,QAACQ,EAAW;AAAA,QAAX;AAAA,UACC,SAAQ;AAAA,UACR,cAAYF,EAAE,aAAa;AAAA,UAC3B,YAAY,CAACoC,EAAQ;AAAA,UACrB,WAAWK;AAAA,UACX,SAAS,MAAM;AACb,YAAIL,EAAQ,eACLX,EAAeW,EAAQ,WAAW;AAAA,UAE3C;AAAA,UAEA,UAAA,gBAAA1C,EAACgD,GAAA,EAAkB,eAAW,GAAA,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAGrC;AAAA,IACA,YAAY,MACV,gBAAAhD,EAACiD,GAAA,EAAU,OAAO3C,EAAE,kBAAkB,GAAG,aAAaA,EAAE,wBAAwB,EAAA,CAAG;AAAA,EAAA,CAEtF,GAEK4C,IAAiBtB,EAAS,SAAS;AAEzC,SACE,gBAAA5B,EAACgB,GAAA,EAAW,OAAOF,EAAc,QAAQ,iBAAAhB,GACvC,UAAA,gBAAAE;AAAA,IAACQ,EAAW;AAAA,IAAX;AAAA,MACC,aAAa,CAAC0C;AAAA,MACd,0BAAS1C,EAAW,WAAX,EAAqB,OAAOF,EAAE,OAAO,GAAG;AAAA,MAEhD,UAAA4C,sBACEC,GAAA,EAAS,OAAO7C,EAAE,WAAW,GAAG,aAAW,IAAE,GAAGuC,GAAkB,IAEnE,gBAAA7C,EAACiD,KAAU,OAAO3C,EAAE,kBAAkB,GAAG,aAAaA,EAAE,wBAAwB,EAAA,CAAG;AAAA,IAAA;AAAA,EAAA,GAGzF;AAEJ;"}
@@ -1,29 +1,28 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
2
  import { useTranslation as y } from "react-i18next";
3
- import "classnames";
4
- import { componentEvents as g } from "../../../../../shared/constants.js";
5
- import { Loading as P } from "../../../../Common/Loading/Loading.js";
6
- import { BaseBoundaries as B, BaseLayout as L } from "../../../../Base/Base.js";
7
- import { useComponentContext as N } from "../../../../../contexts/ComponentAdapter/useComponentContext.js";
3
+ import { Loading as g } from "../../../../Common/Loading/Loading.js";
4
+ import { BaseBoundaries as P, BaseLayout as B } from "../../../../Base/Base.js";
5
+ import { useComponentContext as L } from "../../../../../contexts/ComponentAdapter/useComponentContext.js";
8
6
  import { formatDateLongWithYear as l } from "../../../../../helpers/dateFormatting.js";
9
- import { firstLastName as X } from "../../../../../helpers/formattedStrings.js";
10
- import { useI18n as D } from "../../../../../i18n/I18n.js";
7
+ import { firstLastName as N } from "../../../../../helpers/formattedStrings.js";
8
+ import { useI18n as X } from "../../../../../i18n/I18n.js";
9
+ import { componentEvents as D } from "../../../../../shared/constants.js";
11
10
  import { useEmployeeProfileSummary as v } from "../../shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js";
12
- function H({ LoaderComponent: r, ...m }) {
13
- return /* @__PURE__ */ t(B, { componentName: "Employee.Management.Profile", LoaderComponent: r, children: /* @__PURE__ */ t(C, { LoaderComponent: r, ...m }) });
11
+ function A({ LoaderComponent: r, ...m }) {
12
+ return /* @__PURE__ */ t(P, { componentName: "Employee.Management.Profile", LoaderComponent: r, children: /* @__PURE__ */ t(C, { LoaderComponent: r, ...m }) });
14
13
  }
15
14
  function C({ employeeId: r, onEvent: m, LoaderComponent: d }) {
16
- D("Employee.Management.Profile");
17
- const { t: o } = y("Employee.Management.Profile"), n = N(), a = v({ employeeId: r }), s = a.isLoading, e = a.isLoading ? void 0 : a.data.employee, c = e ? X({ first_name: e.firstName, last_name: e.lastName }) : void 0, p = e ? l(e.jobs?.[0]?.hireDate) : void 0, f = e ? l(e.dateOfBirth) : void 0, E = e?.hasSsn ? "XXX-XX-XXXX" : void 0, i = /* @__PURE__ */ t("span", { "aria-label": o("listEmptyPlaceholder"), children: "–" }), h = e ? [
15
+ X("Employee.Management.Profile");
16
+ const { t: o } = y("Employee.Management.Profile"), n = L(), a = v({ employeeId: r }), s = a.isLoading, e = a.isLoading ? void 0 : a.data.employee, c = e ? N({ first_name: e.firstName, last_name: e.lastName }) : void 0, p = e ? l(e.jobs?.[0]?.hireDate) : void 0, f = e ? l(e.dateOfBirth) : void 0, E = e?.hasSsn ? "XXX-XX-XXXX" : void 0, i = /* @__PURE__ */ t("span", { "aria-label": o("listEmptyPlaceholder"), children: "–" }), h = e ? [
18
17
  { term: o("legalName"), description: c || i },
19
18
  { term: o("startDate"), description: p || i },
20
19
  { term: o("socialSecurityNumber"), description: E || i },
21
20
  { term: o("dateOfBirth"), description: f || i },
22
21
  { term: o("personalEmail"), description: e.email || i }
23
22
  ] : [], u = () => {
24
- m(g.EMPLOYEE_MANAGEMENT_PROFILE_EDIT_REQUESTED, { employeeId: r });
23
+ m(D.EMPLOYEE_MANAGEMENT_PROFILE_EDIT_REQUESTED, { employeeId: r });
25
24
  };
26
- return /* @__PURE__ */ t(L, { error: a.errorHandling.errors, LoaderComponent: d, children: /* @__PURE__ */ t(
25
+ return /* @__PURE__ */ t(B, { error: a.errorHandling.errors, LoaderComponent: d, children: /* @__PURE__ */ t(
27
26
  n.Box,
28
27
  {
29
28
  header: /* @__PURE__ */ t(
@@ -41,11 +40,11 @@ function C({ employeeId: r, onEvent: m, LoaderComponent: d }) {
41
40
  )
42
41
  }
43
42
  ),
44
- children: s ? /* @__PURE__ */ t(P, {}) : e ? /* @__PURE__ */ t(n.DescriptionList, { items: h }) : null
43
+ children: s ? /* @__PURE__ */ t(g, {}) : e ? /* @__PURE__ */ t(n.DescriptionList, { items: h }) : null
45
44
  }
46
45
  ) });
47
46
  }
48
47
  export {
49
- H as ProfileCard
48
+ A as ProfileCard
50
49
  };
51
50
  //# sourceMappingURL=ProfileCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileCard.js","sources":["../../../../../../src/components/Employee/Profile/management/ProfileCard/ProfileCard.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { useEmployeeProfileSummary } from '../../shared/useEmployeeProfileSummary'\nimport { Loading } from '@/components/Common'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport type { LoaderComponentType } from '@/components/Base'\n\n/**\n * Props for {@link ProfileCard}.\n *\n * @public\n */\nexport interface ProfileCardProps {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when the user requests to edit the profile. */\n onEvent: OnEventType<EventType, unknown>\n /** Custom loading indicator rendered while this component's async data is fetching. Overrides the indicator configured on `GustoProvider` for this instance only. */\n LoaderComponent?: LoaderComponentType\n}\n\n/**\n * Read-only card showing an employee's basic profile details with an Edit action.\n *\n * @remarks\n * Standalone card that fetches its own data. Emits an event when the user\n * clicks Edit so the parent can switch to the edit form. The card does not\n * render success or error alerts itself — alert presentation is the\n * surrounding surface's responsibility.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/management/profile/editRequested` | Fired when the user clicks the Edit button | `{ employeeId: string }` |\n *\n * @param props - See {@link ProfileCardProps}.\n * @returns The basic-details profile card.\n * @public\n */\nexport function ProfileCard({ LoaderComponent, ...props }: ProfileCardProps) {\n return (\n <BaseBoundaries componentName=\"Employee.Management.Profile\" LoaderComponent={LoaderComponent}>\n <ProfileCardContent LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction ProfileCardContent({ employeeId, onEvent, LoaderComponent }: ProfileCardProps) {\n useI18n('Employee.Management.Profile')\n const { t } = useTranslation('Employee.Management.Profile')\n const Components = useComponentContext()\n\n const profile = useEmployeeProfileSummary({ employeeId })\n\n const isEmployeeLoading = profile.isLoading\n\n const employee = profile.isLoading ? undefined : profile.data.employee\n\n const legalName = employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : undefined\n const startDate = employee ? formatDateLongWithYear(employee.jobs?.[0]?.hireDate) : undefined\n const dateOfBirth = employee ? formatDateLongWithYear(employee.dateOfBirth) : undefined\n const maskedSsn = employee?.hasSsn ? 'XXX-XX-XXXX' : undefined\n\n const emptyPlaceholder = <span aria-label={t('listEmptyPlaceholder')}>–</span>\n const profileItems = employee\n ? [\n { term: t('legalName'), description: legalName || emptyPlaceholder },\n { term: t('startDate'), description: startDate || emptyPlaceholder },\n { term: t('socialSecurityNumber'), description: maskedSsn || emptyPlaceholder },\n { term: t('dateOfBirth'), description: dateOfBirth || emptyPlaceholder },\n { term: t('personalEmail'), description: employee.email || emptyPlaceholder },\n ]\n : []\n\n const handleEdit = () => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PROFILE_EDIT_REQUESTED, { employeeId })\n }\n\n return (\n <BaseLayout error={profile.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <Components.Box\n header={\n <Components.BoxHeader\n title={t('title')}\n action={\n <Components.Button\n variant=\"secondary\"\n onClick={handleEdit}\n isDisabled={isEmployeeLoading}\n >\n {t('editCta')}\n </Components.Button>\n }\n />\n }\n >\n {isEmployeeLoading ? (\n <Loading />\n ) : employee ? (\n <Components.DescriptionList items={profileItems} />\n ) : null}\n </Components.Box>\n </BaseLayout>\n )\n}\n"],"names":["ProfileCard","LoaderComponent","props","jsx","BaseBoundaries","ProfileCardContent","employeeId","onEvent","useI18n","t","useTranslation","Components","useComponentContext","profile","useEmployeeProfileSummary","isEmployeeLoading","employee","legalName","firstLastName","startDate","formatDateLongWithYear","dateOfBirth","maskedSsn","emptyPlaceholder","profileItems","handleEdit","componentEvents","BaseLayout","Loading"],"mappings":";;;;;;;;;;;AA4CO,SAASA,EAAY,EAAE,iBAAAC,GAAiB,GAAGC,KAA2B;AAC3E,SACE,gBAAAC,EAACC,GAAA,EAAe,eAAc,+BAA8B,iBAAAH,GAC1D,4BAACI,GAAA,EAAmB,iBAAAJ,GAAmC,GAAGC,EAAA,CAAO,EAAA,CACnE;AAEJ;AAEA,SAASG,EAAmB,EAAE,YAAAC,GAAY,SAAAC,GAAS,iBAAAN,KAAqC;AACtF,EAAAO,EAAQ,6BAA6B;AACrC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,6BAA6B,GACpDC,IAAaC,EAAA,GAEbC,IAAUC,EAA0B,EAAE,YAAAR,GAAY,GAElDS,IAAoBF,EAAQ,WAE5BG,IAAWH,EAAQ,YAAY,SAAYA,EAAQ,KAAK,UAExDI,IAAYD,IACdE,EAAc,EAAE,YAAYF,EAAS,WAAW,WAAWA,EAAS,SAAA,CAAU,IAC9E,QACEG,IAAYH,IAAWI,EAAuBJ,EAAS,OAAO,CAAC,GAAG,QAAQ,IAAI,QAC9EK,IAAcL,IAAWI,EAAuBJ,EAAS,WAAW,IAAI,QACxEM,IAAYN,GAAU,SAAS,gBAAgB,QAE/CO,IAAmB,gBAAApB,EAAC,QAAA,EAAK,cAAYM,EAAE,sBAAsB,GAAG,UAAA,KAAC,GACjEe,IAAeR,IACjB;AAAA,IACE,EAAE,MAAMP,EAAE,WAAW,GAAG,aAAaQ,KAAaM,EAAA;AAAA,IAClD,EAAE,MAAMd,EAAE,WAAW,GAAG,aAAaU,KAAaI,EAAA;AAAA,IAClD,EAAE,MAAMd,EAAE,sBAAsB,GAAG,aAAaa,KAAaC,EAAA;AAAA,IAC7D,EAAE,MAAMd,EAAE,aAAa,GAAG,aAAaY,KAAeE,EAAA;AAAA,IACtD,EAAE,MAAMd,EAAE,eAAe,GAAG,aAAaO,EAAS,SAASO,EAAA;AAAA,EAAiB,IAE9E,CAAA,GAEEE,IAAa,MAAM;AACvB,IAAAlB,EAAQmB,EAAgB,4CAA4C,EAAE,YAAApB,EAAA,CAAY;AAAA,EACpF;AAEA,2BACGqB,GAAA,EAAW,OAAOd,EAAQ,cAAc,QAAQ,iBAAAZ,GAC/C,UAAA,gBAAAE;AAAA,IAACQ,EAAW;AAAA,IAAX;AAAA,MACC,QACE,gBAAAR;AAAA,QAACQ,EAAW;AAAA,QAAX;AAAA,UACC,OAAOF,EAAE,OAAO;AAAA,UAChB,QACE,gBAAAN;AAAA,YAACQ,EAAW;AAAA,YAAX;AAAA,cACC,SAAQ;AAAA,cACR,SAASc;AAAA,cACT,YAAYV;AAAA,cAEX,YAAE,SAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QACd;AAAA,MAAA;AAAA,MAKL,UAAAA,IACC,gBAAAZ,EAACyB,GAAA,CAAA,CAAQ,IACPZ,IACF,gBAAAb,EAACQ,EAAW,iBAAX,EAA2B,OAAOa,EAAA,CAAc,IAC/C;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;"}
1
+ {"version":3,"file":"ProfileCard.js","sources":["../../../../../../src/components/Employee/Profile/management/ProfileCard/ProfileCard.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { useEmployeeProfileSummary } from '../../shared/useEmployeeProfileSummary'\nimport { Loading } from '@/components/Common'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport type { LoaderComponentType } from '@/components/Base'\n\n/**\n * Props for {@link ProfileCard}.\n *\n * @public\n */\nexport interface ProfileCardProps {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when the user requests to edit the profile. */\n onEvent: OnEventType<EventType, unknown>\n /** Custom loading indicator rendered while this component's async data is fetching. Overrides the indicator configured on `GustoProvider` for this instance only. */\n LoaderComponent?: LoaderComponentType\n}\n\n/**\n * Read-only card showing an employee's basic profile details with an Edit action.\n *\n * @remarks\n * Standalone card that fetches its own data. Emits an event when the user\n * clicks Edit so the parent can switch to the edit form. The card does not\n * render success or error alerts itself — alert presentation is the\n * surrounding surface's responsibility.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/management/profile/editRequested` | Fired when the user clicks the Edit button | `{ employeeId: string }` |\n *\n * @param props - See {@link ProfileCardProps}.\n * @returns The basic-details profile card.\n * @public\n */\nexport function ProfileCard({ LoaderComponent, ...props }: ProfileCardProps) {\n return (\n <BaseBoundaries componentName=\"Employee.Management.Profile\" LoaderComponent={LoaderComponent}>\n <ProfileCardContent LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction ProfileCardContent({ employeeId, onEvent, LoaderComponent }: ProfileCardProps) {\n useI18n('Employee.Management.Profile')\n const { t } = useTranslation('Employee.Management.Profile')\n const Components = useComponentContext()\n\n const profile = useEmployeeProfileSummary({ employeeId })\n\n const isEmployeeLoading = profile.isLoading\n\n const employee = profile.isLoading ? undefined : profile.data.employee\n\n const legalName = employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : undefined\n const startDate = employee ? formatDateLongWithYear(employee.jobs?.[0]?.hireDate) : undefined\n const dateOfBirth = employee ? formatDateLongWithYear(employee.dateOfBirth) : undefined\n const maskedSsn = employee?.hasSsn ? 'XXX-XX-XXXX' : undefined\n\n const emptyPlaceholder = <span aria-label={t('listEmptyPlaceholder')}>–</span>\n const profileItems = employee\n ? [\n { term: t('legalName'), description: legalName || emptyPlaceholder },\n { term: t('startDate'), description: startDate || emptyPlaceholder },\n { term: t('socialSecurityNumber'), description: maskedSsn || emptyPlaceholder },\n { term: t('dateOfBirth'), description: dateOfBirth || emptyPlaceholder },\n { term: t('personalEmail'), description: employee.email || emptyPlaceholder },\n ]\n : []\n\n const handleEdit = () => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PROFILE_EDIT_REQUESTED, { employeeId })\n }\n\n return (\n <BaseLayout error={profile.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <Components.Box\n header={\n <Components.BoxHeader\n title={t('title')}\n action={\n <Components.Button\n variant=\"secondary\"\n onClick={handleEdit}\n isDisabled={isEmployeeLoading}\n >\n {t('editCta')}\n </Components.Button>\n }\n />\n }\n >\n {isEmployeeLoading ? (\n <Loading />\n ) : employee ? (\n <Components.DescriptionList items={profileItems} />\n ) : null}\n </Components.Box>\n </BaseLayout>\n )\n}\n"],"names":["ProfileCard","LoaderComponent","props","jsx","BaseBoundaries","ProfileCardContent","employeeId","onEvent","useI18n","t","useTranslation","Components","useComponentContext","profile","useEmployeeProfileSummary","isEmployeeLoading","employee","legalName","firstLastName","startDate","formatDateLongWithYear","dateOfBirth","maskedSsn","emptyPlaceholder","profileItems","handleEdit","componentEvents","BaseLayout","Loading"],"mappings":";;;;;;;;;;AA4CO,SAASA,EAAY,EAAE,iBAAAC,GAAiB,GAAGC,KAA2B;AAC3E,SACE,gBAAAC,EAACC,GAAA,EAAe,eAAc,+BAA8B,iBAAAH,GAC1D,4BAACI,GAAA,EAAmB,iBAAAJ,GAAmC,GAAGC,EAAA,CAAO,EAAA,CACnE;AAEJ;AAEA,SAASG,EAAmB,EAAE,YAAAC,GAAY,SAAAC,GAAS,iBAAAN,KAAqC;AACtF,EAAAO,EAAQ,6BAA6B;AACrC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,6BAA6B,GACpDC,IAAaC,EAAA,GAEbC,IAAUC,EAA0B,EAAE,YAAAR,GAAY,GAElDS,IAAoBF,EAAQ,WAE5BG,IAAWH,EAAQ,YAAY,SAAYA,EAAQ,KAAK,UAExDI,IAAYD,IACdE,EAAc,EAAE,YAAYF,EAAS,WAAW,WAAWA,EAAS,SAAA,CAAU,IAC9E,QACEG,IAAYH,IAAWI,EAAuBJ,EAAS,OAAO,CAAC,GAAG,QAAQ,IAAI,QAC9EK,IAAcL,IAAWI,EAAuBJ,EAAS,WAAW,IAAI,QACxEM,IAAYN,GAAU,SAAS,gBAAgB,QAE/CO,IAAmB,gBAAApB,EAAC,QAAA,EAAK,cAAYM,EAAE,sBAAsB,GAAG,UAAA,KAAC,GACjEe,IAAeR,IACjB;AAAA,IACE,EAAE,MAAMP,EAAE,WAAW,GAAG,aAAaQ,KAAaM,EAAA;AAAA,IAClD,EAAE,MAAMd,EAAE,WAAW,GAAG,aAAaU,KAAaI,EAAA;AAAA,IAClD,EAAE,MAAMd,EAAE,sBAAsB,GAAG,aAAaa,KAAaC,EAAA;AAAA,IAC7D,EAAE,MAAMd,EAAE,aAAa,GAAG,aAAaY,KAAeE,EAAA;AAAA,IACtD,EAAE,MAAMd,EAAE,eAAe,GAAG,aAAaO,EAAS,SAASO,EAAA;AAAA,EAAiB,IAE9E,CAAA,GAEEE,IAAa,MAAM;AACvB,IAAAlB,EAAQmB,EAAgB,4CAA4C,EAAE,YAAApB,EAAA,CAAY;AAAA,EACpF;AAEA,2BACGqB,GAAA,EAAW,OAAOd,EAAQ,cAAc,QAAQ,iBAAAZ,GAC/C,UAAA,gBAAAE;AAAA,IAACQ,EAAW;AAAA,IAAX;AAAA,MACC,QACE,gBAAAR;AAAA,QAACQ,EAAW;AAAA,QAAX;AAAA,UACC,OAAOF,EAAE,OAAO;AAAA,UAChB,QACE,gBAAAN;AAAA,YAACQ,EAAW;AAAA,YAAX;AAAA,cACC,SAAQ;AAAA,cACR,SAASc;AAAA,cACT,YAAYV;AAAA,cAEX,YAAE,SAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QACd;AAAA,MAAA;AAAA,MAKL,UAAAA,IACC,gBAAAZ,EAACyB,GAAA,CAAA,CAAQ,IACPZ,IACF,gBAAAb,EAACQ,EAAW,iBAAX,EAA2B,OAAOa,EAAA,CAAc,IAC/C;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;"}
@@ -6,12 +6,12 @@ import { useEmployeeDetailsForm as h } from "../shared/useEmployeeDetailsForm/us
6
6
  import v from "./Profile.module.scss.js";
7
7
  import { BaseBoundaries as L, BaseLayout as c } from "../../../Base/Base.js";
8
8
  import "../../../Base/useBase.js";
9
- import { componentEvents as E } from "../../../../shared/constants.js";
10
9
  import { Grid as A } from "../../../Common/Grid/Grid.js";
11
10
  import { ActionsLayout as R } from "../../../Common/ActionsLayout/ActionsLayout.js";
12
11
  import { Form as y } from "../../../Common/Form/Form.js";
13
12
  import { SDKFormProvider as P } from "../../../../partner-hook-utils/form/SDKFormProvider.js";
14
13
  import { useI18n as F, useComponentDictionary as S } from "../../../../i18n/I18n.js";
14
+ import { componentEvents as E } from "../../../../shared/constants.js";
15
15
  import { useComponentContext as _ } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
16
16
  function J({
17
17
  FallbackComponent: t,
@@ -10,12 +10,12 @@ import { SDKFormProvider as L } from "../../../../partner-hook-utils/form/SDKFor
10
10
  import { composeSubmitHandler as z } from "../../../../partner-hook-utils/form/composeSubmitHandler.js";
11
11
  import { composeErrorHandler as S } from "../../../../partner-hook-utils/composeErrorHandler.js";
12
12
  import { Grid as A } from "../../../Common/Grid/Grid.js";
13
- import { componentEvents as p } from "../../../../shared/constants.js";
14
13
  import { ActionsLayout as B } from "../../../Common/ActionsLayout/ActionsLayout.js";
15
14
  import { Form as Y } from "../../../Common/Form/Form.js";
16
15
  import { BaseLayout as N } from "../../../Base/Base.js";
17
16
  import "../../../Base/useBase.js";
18
17
  import { useI18n as H, useComponentDictionary as W } from "../../../../i18n/I18n.js";
18
+ import { componentEvents as p } from "../../../../shared/constants.js";
19
19
  import { useComponentContext as Z } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
20
20
  import { getStreet as j, getCityStateZip as q } from "../../../../helpers/formattedStrings.js";
21
21
  const G = {
@@ -45,10 +45,10 @@ function Ce({
45
45
  validationMode: L = "onSubmit",
46
46
  shouldFocusError: G = !0
47
47
  }) {
48
- const u = Q({ employeeId: i ?? "" }, { enabled: !!i }), t = u.data?.employee, r = !i, c = ce(t), p = r ? "create" : "update", [I, w] = k(
48
+ const u = Q({ employeeId: i ?? "" }, { enabled: !!i }), t = u.data?.employeeShow, r = !i, c = ce(t), p = r ? "create" : "update", [S, w] = k(
49
49
  () => $({ mode: p, optionalFieldsToRequire: O, hasSsn: t?.hasSsn }),
50
50
  [p, O, t?.hasSsn]
51
- ), S = {
51
+ ), I = {
52
52
  firstName: t?.firstName ?? a?.firstName ?? "",
53
53
  middleInitial: t?.middleInitial ?? a?.middleInitial ?? "",
54
54
  lastName: t?.lastName ?? a?.lastName ?? "",
@@ -57,11 +57,11 @@ function Ce({
57
57
  ssn: a?.ssn ?? "",
58
58
  selfOnboarding: a?.selfOnboarding ?? Oe(t)
59
59
  }, d = x({
60
- resolver: K(I),
60
+ resolver: K(S),
61
61
  mode: L,
62
62
  shouldFocusError: G,
63
- defaultValues: S,
64
- values: S,
63
+ defaultValues: I,
64
+ values: I,
65
65
  resetOptions: { keepDirtyValues: !0 }
66
66
  }), g = j(), y = J(), b = X(), R = g.isPending || y.isPending || b.isPending, {
67
67
  baseSubmitHandler: v,
@@ -159,7 +159,7 @@ function Ce({
159
159
  },
160
160
  fieldsMetadata: C,
161
161
  hookFormInternals: U,
162
- getFormSubmissionValues: le(d, I)
162
+ getFormSubmissionValues: le(d, S)
163
163
  }
164
164
  };
165
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useEmployeeDetailsForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport { useEmployeesGet } from '@gusto/embedded-api/react-query/employeesGet'\nimport { useEmployeesCreateMutation } from '@gusto/embedded-api/react-query/employeesCreate'\nimport { useEmployeesUpdateMutation } from '@gusto/embedded-api/react-query/employeesUpdate'\nimport { useEmployeesUpdateOnboardingStatusMutation } from '@gusto/embedded-api/react-query/employeesUpdateOnboardingStatus'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport {\n createEmployeeDetailsSchema,\n type EmployeeDetailsOptionalFieldsToRequire,\n type EmployeeDetailsFormData,\n type EmployeeDetailsFormOutputs,\n} from './employeeDetailsSchema'\nimport {\n FirstNameField,\n MiddleInitialField,\n LastNameField,\n EmailField,\n DateOfBirthField,\n SsnField,\n SelfOnboardingField,\n} from './fields'\nimport type {\n FirstNameFieldProps,\n MiddleInitialFieldProps,\n LastNameFieldProps,\n EmailFieldProps,\n DateOfBirthFieldProps,\n SsnFieldProps,\n SelfOnboardingFieldProps,\n} from './fields'\nimport { normalizeToISOString } from '@/helpers/dateFormatting'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { EmployeeOnboardingStatus } from '@/shared/constants'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { removeNonDigits } from '@/helpers/formattedStrings'\n\nexport type { EmployeeDetailsOptionalFieldsToRequire } from './employeeDetailsSchema'\n\n/** @internal */\nfunction buildEmployeeDetailsFieldsMetadata(\n base: Record<keyof EmployeeDetailsFormData, FieldMetadata>,\n) {\n return {\n firstName: base.firstName,\n middleInitial: base.middleInitial,\n lastName: base.lastName,\n email: base.email,\n dateOfBirth: base.dateOfBirth,\n ssn: base.ssn,\n selfOnboarding: base.selfOnboarding,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional callbacks passed to {@link UseEmployeeDetailsFormReady.actions.onSubmit | onSubmit}.\n *\n * @remarks\n * Only the callback matching the submit mode fires —\n * `onEmployeeCreated` on create, `onEmployeeUpdated` on update.\n * `onOnboardingStatusUpdated` fires when toggling the self-onboarding\n * switch changes the employee's onboarding status as part of an update.\n *\n * @public\n * @group Utility types\n */\nexport interface EmployeeDetailsSubmitCallbacks {\n /** Fired after a new employee is successfully created. */\n onEmployeeCreated?: (employee: Employee) => void\n /** Fired after an existing employee is successfully updated. */\n onEmployeeUpdated?: (employee: Employee) => void\n /** Fired when an update toggles self-onboarding and the employee's onboarding status changes. */\n onOnboardingStatusUpdated?: (status: unknown) => void\n}\n\n/**\n * Shared options merged into both branches of {@link UseEmployeeDetailsFormProps}.\n *\n * @public\n */\nexport type UseEmployeeDetailsFormSharedProps = {\n /** Whether to expose the self-onboarding toggle as `form.Fields.SelfOnboarding`. Defaults to `true`. */\n withSelfOnboardingField?: boolean\n /** Fields that are optional by default but should be promoted to required for this form instance. */\n optionalFieldsToRequire?: EmployeeDetailsOptionalFieldsToRequire\n /** Initial values applied before any employee data loads. */\n defaultValues?: Partial<EmployeeDetailsFormData>\n /** When validation runs. Forwarded to react-hook-form's `mode`. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Whether react-hook-form should focus the first error on validation failure. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Options for {@link useEmployeeDetailsForm}.\n *\n * @remarks\n * Discriminated by mode: in create mode supply `companyId` and omit\n * `employeeId`; in update mode supply `employeeId` (and optionally\n * `companyId`).\n *\n * @public\n * @group Utility types\n */\nexport type UseEmployeeDetailsFormProps =\n | (UseEmployeeDetailsFormSharedProps & { companyId: string; employeeId?: never })\n | (UseEmployeeDetailsFormSharedProps & { employeeId: string; companyId?: string })\n\n/**\n * The Field components exposed by {@link useEmployeeDetailsForm} as `form.Fields`.\n *\n * @remarks\n * Each entry is a component bound to a specific form field. `SelfOnboarding`\n * may be `undefined` when the field is not toggleable.\n *\n * @public\n */\nexport interface EmployeeDetailsFormFields {\n /** Bound to `firstName`. Text input. */\n FirstName: ComponentType<FirstNameFieldProps>\n /** Bound to `middleInitial`. Text input. */\n MiddleInitial: ComponentType<MiddleInitialFieldProps>\n /** Bound to `lastName`. Text input. */\n LastName: ComponentType<LastNameFieldProps>\n /** Bound to `email`. Text input. */\n Email: ComponentType<EmailFieldProps>\n /** Bound to `dateOfBirth`. Date picker. */\n DateOfBirth: ComponentType<DateOfBirthFieldProps>\n /** Bound to `ssn`. Text input. */\n Ssn: ComponentType<SsnFieldProps>\n /** Bound to `selfOnboarding`. Switch, or `undefined` when the field is not toggleable. */\n SelfOnboarding: ComponentType<SelfOnboardingFieldProps> | undefined\n}\n\n/**\n * The ready-state result returned by {@link useEmployeeDetailsForm} once data has loaded.\n *\n * @remarks\n * Provides the form's `data` snapshot, pending `status`, submit `actions`,\n * error handling, and the `form.Fields` map.\n *\n * @public\n */\nexport interface UseEmployeeDetailsFormReady extends BaseFormHookReady<\n EmployeeDetailsFieldsMetadata,\n EmployeeDetailsFormData,\n EmployeeDetailsFormFields\n> {\n /** The loaded employee data, or `null` in create mode. */\n data: {\n /** The employee being edited, or `null` in create mode. */\n employee: Employee | null\n }\n /** Submit status and form mode. */\n status: {\n /** `true` while the create, update, or onboarding-status mutation is in flight. */\n isPending: boolean\n /** `'create'` when no `employeeId` was supplied, `'update'` otherwise. */\n mode: 'create' | 'update'\n }\n /** Submit and related actions. */\n actions: {\n /** Validates the form and submits the changes. Returns the created or updated employee, or `undefined` when validation fails. */\n onSubmit: (\n callbacks?: EmployeeDetailsSubmitCallbacks,\n ) => Promise<HookSubmitResult<Employee> | undefined>\n }\n}\n\nconst isCurrentlySelfOnboarding = (employee?: Employee) => {\n if (!employee?.onboardingStatus) return false\n const selfOnboardingStatuses: string[] = [\n EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED_STARTED,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED_OVERDUE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_COMPLETED_BY_EMPLOYEE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW,\n ]\n return selfOnboardingStatuses.includes(employee.onboardingStatus)\n}\n\nconst canToggleSelfOnboarding = (employee?: Employee) => {\n if (!employee) return true\n return (\n employee.onboardingStatus === EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE ||\n employee.onboardingStatus === EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n )\n}\n\n/**\n * Headless hook for creating or updating an employee's profile details — name, email, SSN, date of birth, and self-onboarding preference.\n *\n * @remarks\n * Returns a discriminated union: a loading variant while the underlying\n * employee fetch resolves, and a ready variant exposing the form's data,\n * pending status, submit action, error handling, and bound `Fields`.\n * Self-onboarding is only toggleable when the employee's onboarding status\n * allows it; otherwise `form.Fields.SelfOnboarding` is `undefined`.\n *\n * @param input - See {@link UseEmployeeDetailsFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseEmployeeDetailsFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useEmployeeDetailsForm,\n * SDKFormProvider,\n * type UseEmployeeDetailsFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function EmployeeDetailsPage({ companyId, employeeId }: { companyId: string; employeeId?: string }) {\n * const employeeDetails = useEmployeeDetailsForm({ companyId, employeeId })\n *\n * if (employeeDetails.isLoading) return <div>Loading...</div>\n *\n * return <EmployeeDetailsReady employeeDetails={employeeDetails} />\n * }\n *\n * function EmployeeDetailsReady({ employeeDetails }: { employeeDetails: UseEmployeeDetailsFormReady }) {\n * const { Fields } = employeeDetails.form\n *\n * const handleSubmit = async () => {\n * await employeeDetails.actions.onSubmit({\n * onEmployeeCreated: emp => console.log('Created:', emp.uuid),\n * onEmployeeUpdated: emp => console.log('Updated:', emp.uuid),\n * })\n * }\n *\n * return (\n * <SDKFormProvider formHookResult={employeeDetails}>\n * <form onSubmit={e => { e.preventDefault(); void handleSubmit() }}>\n * <Fields.FirstName label=\"First name\" />\n * <Fields.LastName label=\"Last name\" />\n * <Fields.Email label=\"Personal email\" />\n * <Fields.DateOfBirth label=\"Date of birth\" />\n * <Fields.Ssn label=\"Social Security number\" />\n * <button type=\"submit\" disabled={employeeDetails.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useEmployeeDetailsForm({\n companyId,\n employeeId,\n withSelfOnboardingField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseEmployeeDetailsFormProps): HookLoadingResult | UseEmployeeDetailsFormReady {\n const employeeQuery = useEmployeesGet({ employeeId: employeeId ?? '' }, { enabled: !!employeeId })\n\n const employee = employeeQuery.data?.employee\n\n const isCreateMode = !employeeId\n const isSelfOnboardingToggleable = canToggleSelfOnboarding(employee)\n\n const mode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () => createEmployeeDetailsSchema({ mode, optionalFieldsToRequire, hasSsn: employee?.hasSsn }),\n [mode, optionalFieldsToRequire, employee?.hasSsn],\n )\n\n const resolvedDefaults: EmployeeDetailsFormData = {\n firstName: employee?.firstName ?? partnerDefaults?.firstName ?? '',\n middleInitial: employee?.middleInitial ?? partnerDefaults?.middleInitial ?? '',\n lastName: employee?.lastName ?? partnerDefaults?.lastName ?? '',\n email: employee?.email ?? partnerDefaults?.email ?? '',\n dateOfBirth: employee?.dateOfBirth ?? normalizeToISOString(partnerDefaults?.dateOfBirth),\n ssn: partnerDefaults?.ssn ?? '',\n selfOnboarding: partnerDefaults?.selfOnboarding ?? isCurrentlySelfOnboarding(employee),\n }\n\n const formMethods = useForm<EmployeeDetailsFormData, unknown, EmployeeDetailsFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createEmployeeMutation = useEmployeesCreateMutation()\n const updateEmployeeMutation = useEmployeesUpdateMutation()\n const updateOnboardingStatusMutation = useEmployeesUpdateOnboardingStatusMutation()\n\n const isPending =\n createEmployeeMutation.isPending ||\n updateEmployeeMutation.isPending ||\n updateOnboardingStatusMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('EmployeeDetailsForm')\n\n const queries = employeeId ? [employeeQuery] : []\n const errorHandling = composeErrorHandler(queries, { submitError, setSubmitError })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildEmployeeDetailsFieldsMetadata(baseMetadata)\n\n const onSubmit = async (\n callbacks?: EmployeeDetailsSubmitCallbacks,\n ): Promise<HookSubmitResult<Employee> | undefined> => {\n let submitResult: HookSubmitResult<Employee> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: EmployeeDetailsFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const { selfOnboarding, dateOfBirth, ssn, ...body } = payload\n\n const cleanedSsn = ssn ? removeNonDigits(ssn) : undefined\n const hasSsnInput = cleanedSsn && cleanedSsn.length > 0\n\n let updatedEmployee: Employee\n\n if (isCreateMode) {\n if (!companyId) {\n throw new SDKInternalError('companyId is required to create an employee')\n }\n const result = await createEmployeeMutation.mutateAsync({\n request: {\n companyId,\n requestBody: {\n ...body,\n selfOnboarding,\n dateOfBirth: dateOfBirth ? new RFCDate(new Date(dateOfBirth)) : undefined,\n ssn: hasSsnInput ? cleanedSsn : undefined,\n },\n },\n })\n\n if (!result.employee) {\n throw new SDKInternalError('Employee creation failed')\n }\n\n updatedEmployee = result.employee\n callbacks?.onEmployeeCreated?.(updatedEmployee)\n } else {\n if (!employee) {\n throw new SDKInternalError('Employee data is not available')\n }\n\n if (isSelfOnboardingToggleable) {\n const currentIsSelfOnboarding =\n employee.onboardingStatus ===\n EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n\n if (selfOnboarding !== currentIsSelfOnboarding) {\n const { employeeOnboardingStatus } =\n await updateOnboardingStatusMutation.mutateAsync({\n request: {\n employeeId: employee.uuid,\n requestBody: {\n onboardingStatus: selfOnboarding\n ? EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n : EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE,\n },\n },\n })\n\n callbacks?.onOnboardingStatusUpdated?.(employeeOnboardingStatus)\n }\n }\n\n const result = await updateEmployeeMutation.mutateAsync({\n request: {\n employeeId: employee.uuid,\n requestBody: {\n version: employee.version as string,\n ...body,\n dateOfBirth: dateOfBirth || undefined,\n ssn: hasSsnInput ? cleanedSsn : undefined,\n },\n },\n })\n\n if (!result.employee) {\n throw new SDKInternalError('Employee update failed')\n }\n\n updatedEmployee = result.employee\n callbacks?.onEmployeeUpdated?.(updatedEmployee)\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedEmployee,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const isDataLoading = employeeId ? employeeQuery.isLoading : false\n\n if (isDataLoading || (employeeId && !employee)) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n employee: employee ?? null,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n FirstName: FirstNameField,\n MiddleInitial: MiddleInitialField,\n LastName: LastNameField,\n Email: EmailField,\n DateOfBirth: DateOfBirthField,\n Ssn: SsnField,\n SelfOnboarding:\n withSelfOnboardingField && isSelfOnboardingToggleable ? SelfOnboardingField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useEmployeeDetailsForm}.\n *\n * @public\n */\nexport type UseEmployeeDetailsFormResult = HookLoadingResult | UseEmployeeDetailsFormReady\n\n/**\n * Shape of `form.fieldsMetadata` returned by {@link useEmployeeDetailsForm}.\n *\n * @public\n */\nexport type EmployeeDetailsFieldsMetadata = ReturnType<typeof buildEmployeeDetailsFieldsMetadata>\n"],"names":["buildEmployeeDetailsFieldsMetadata","base","isCurrentlySelfOnboarding","employee","EmployeeOnboardingStatus","canToggleSelfOnboarding","useEmployeeDetailsForm","companyId","employeeId","withSelfOnboardingField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","employeeQuery","useEmployeesGet","isCreateMode","isSelfOnboardingToggleable","mode","schema","metadataConfig","useMemo","createEmployeeDetailsSchema","resolvedDefaults","normalizeToISOString","formMethods","useForm","zodResolver","createEmployeeMutation","useEmployeesCreateMutation","updateEmployeeMutation","useEmployeesUpdateMutation","updateOnboardingStatusMutation","useEmployeesUpdateOnboardingStatusMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","callbacks","submitResult","resolve","data","payload","selfOnboarding","dateOfBirth","ssn","body","cleanedSsn","removeNonDigits","hasSsnInput","updatedEmployee","SDKInternalError","result","RFCDate","currentIsSelfOnboarding","employeeOnboardingStatus","hookFormInternals","useHookFormInternals","FirstNameField","MiddleInitialField","LastNameField","EmailField","DateOfBirthField","SsnField","SelfOnboardingField","createGetFormSubmissionValues"],"mappings":";;;;;;;;;;;;;;;;;;;AAuDA,SAASA,GACPC,GACA;AACA,SAAO;AAAA,IACL,WAAWA,EAAK;AAAA,IAChB,eAAeA,EAAK;AAAA,IACpB,UAAUA,EAAK;AAAA,IACf,OAAOA,EAAK;AAAA,IACZ,aAAaA,EAAK;AAAA,IAClB,KAAKA,EAAK;AAAA,IACV,gBAAgBA,EAAK;AAAA,EAAA;AAEzB;AAqHA,MAAMC,KAA4B,CAACC,MAC5BA,GAAU,mBAC0B;AAAA,EACvCC,EAAyB;AAAA,EACzBA,EAAyB;AAAA,EACzBA,EAAyB;AAAA,EACzBA,EAAyB;AAAA,EACzBA,EAAyB;AAAA,EACzBA,EAAyB;AAAA,EAEG,SAASD,EAAS,gBAAgB,IATxB,IAYpCE,KAA0B,CAACF,MAC1BA,IAEHA,EAAS,qBAAqBC,EAAyB,+BACvDD,EAAS,qBAAqBC,EAAyB,iCAHnC;AA8DjB,SAASE,GAAuB;AAAA,EACrC,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,yBAAAC,IAA0B;AAAA,EAC1B,yBAAAC;AAAA,EACA,eAAeC;AAAA,EACf,gBAAAC,IAAiB;AAAA,EACjB,kBAAAC,IAAmB;AACrB,GAAiF;AAC/E,QAAMC,IAAgBC,EAAgB,EAAE,YAAYP,KAAc,GAAA,GAAM,EAAE,SAAS,CAAC,CAACA,GAAY,GAE3FL,IAAWW,EAAc,MAAM,UAE/BE,IAAe,CAACR,GAChBS,IAA6BZ,GAAwBF,CAAQ,GAE7De,IAAOF,IAAe,WAAW,UAEjC,CAACG,GAAQC,CAAc,IAAIC;AAAA,IAC/B,MAAMC,EAA4B,EAAE,MAAAJ,GAAM,yBAAAR,GAAyB,QAAQP,GAAU,QAAQ;AAAA,IAC7F,CAACe,GAAMR,GAAyBP,GAAU,MAAM;AAAA,EAAA,GAG5CoB,IAA4C;AAAA,IAChD,WAAWpB,GAAU,aAAaQ,GAAiB,aAAa;AAAA,IAChE,eAAeR,GAAU,iBAAiBQ,GAAiB,iBAAiB;AAAA,IAC5E,UAAUR,GAAU,YAAYQ,GAAiB,YAAY;AAAA,IAC7D,OAAOR,GAAU,SAASQ,GAAiB,SAAS;AAAA,IACpD,aAAaR,GAAU,eAAeqB,GAAqBb,GAAiB,WAAW;AAAA,IACvF,KAAKA,GAAiB,OAAO;AAAA,IAC7B,gBAAgBA,GAAiB,kBAAkBT,GAA0BC,CAAQ;AAAA,EAAA,GAGjFsB,IAAcC,EAAsE;AAAA,IACxF,UAAUC,EAAYR,CAAM;AAAA,IAC5B,MAAMP;AAAA,IACN,kBAAAC;AAAA,IACA,eAAeU;AAAA,IACf,QAAQA;AAAA,IACR,cAAc,EAAE,iBAAiB,GAAA;AAAA,EAAK,CACvC,GAEKK,IAAyBC,EAAA,GACzBC,IAAyBC,EAAA,GACzBC,IAAiCC,EAAA,GAEjCC,IACJN,EAAuB,aACvBE,EAAuB,aACvBE,EAA+B,WAE3B;AAAA,IACJ,mBAAAG;AAAA,IACA,OAAOC;AAAA,IACP,UAAUC;AAAA,EAAA,IACRC,GAAc,qBAAqB,GAGjCC,IAAgBC,GADNhC,IAAa,CAACM,CAAa,IAAI,CAAA,GACI,EAAE,aAAAsB,GAAa,gBAAAC,GAAgB,GAE5EI,IAAeC,GAAwBtB,GAAgBK,EAAY,OAAO,GAC1EkB,IAAiB3C,GAAmCyC,CAAY,GAEhEG,IAAW,OACfC,MACoD;AACpD,QAAIC;AAEJ,iBAAM,IAAI,QAAc,CAAAC,MAAW;AACjC,MAAKtB,EAAY;AAAA,QACf,OAAOuB,MAAqC;AAC1C,gBAAMb,EAAkBa,GAAM,OAAMC,MAAW;AAC7C,kBAAM,EAAE,gBAAAC,GAAgB,aAAAC,GAAa,KAAAC,GAAK,GAAGC,MAASJ,GAEhDK,IAAaF,IAAMG,GAAgBH,CAAG,IAAI,QAC1CI,IAAcF,KAAcA,EAAW,SAAS;AAEtD,gBAAIG;AAEJ,gBAAIzC,GAAc;AAChB,kBAAI,CAACT;AACH,sBAAM,IAAImD,EAAiB,6CAA6C;AAE1E,oBAAMC,IAAS,MAAM/B,EAAuB,YAAY;AAAA,gBACtD,SAAS;AAAA,kBACP,WAAArB;AAAA,kBACA,aAAa;AAAA,oBACX,GAAG8C;AAAA,oBACH,gBAAAH;AAAA,oBACA,aAAaC,IAAc,IAAIS,EAAQ,IAAI,KAAKT,CAAW,CAAC,IAAI;AAAA,oBAChE,KAAKK,IAAcF,IAAa;AAAA,kBAAA;AAAA,gBAClC;AAAA,cACF,CACD;AAED,kBAAI,CAACK,EAAO;AACV,sBAAM,IAAID,EAAiB,0BAA0B;AAGvD,cAAAD,IAAkBE,EAAO,UACzBd,GAAW,oBAAoBY,CAAe;AAAA,YAChD,OAAO;AACL,kBAAI,CAACtD;AACH,sBAAM,IAAIuD,EAAiB,gCAAgC;AAG7D,kBAAIzC,GAA4B;AAC9B,sBAAM4C,IACJ1D,EAAS,qBACTC,EAAyB;AAE3B,oBAAI8C,MAAmBW,GAAyB;AAC9C,wBAAM,EAAE,0BAAAC,EAAA,IACN,MAAM9B,EAA+B,YAAY;AAAA,oBAC/C,SAAS;AAAA,sBACP,YAAY7B,EAAS;AAAA,sBACrB,aAAa;AAAA,wBACX,kBAAkB+C,IACd9C,EAAyB,iCACzBA,EAAyB;AAAA,sBAAA;AAAA,oBAC/B;AAAA,kBACF,CACD;AAEH,kBAAAyC,GAAW,4BAA4BiB,CAAwB;AAAA,gBACjE;AAAA,cACF;AAEA,oBAAMH,IAAS,MAAM7B,EAAuB,YAAY;AAAA,gBACtD,SAAS;AAAA,kBACP,YAAY3B,EAAS;AAAA,kBACrB,aAAa;AAAA,oBACX,SAASA,EAAS;AAAA,oBAClB,GAAGkD;AAAA,oBACH,aAAaF,KAAe;AAAA,oBAC5B,KAAKK,IAAcF,IAAa;AAAA,kBAAA;AAAA,gBAClC;AAAA,cACF,CACD;AAED,kBAAI,CAACK,EAAO;AACV,sBAAM,IAAID,EAAiB,wBAAwB;AAGrD,cAAAD,IAAkBE,EAAO,UACzBd,GAAW,oBAAoBY,CAAe;AAAA,YAChD;AAEA,YAAAX,IAAe;AAAA,cACb,MAAM9B,IAAe,WAAW;AAAA,cAChC,MAAMyC;AAAA,YAAA;AAAA,UAEV,CAAC,GACDV,EAAA;AAAA,QACF;AAAA,QACA,MAAM;AACJ,UAAAA,EAAA;AAAA,QACF;AAAA,MAAA,EACF;AAAA,IACF,CAAC,GAEMD;AAAA,EACT,GAEMiB,IAAoBC,GAAqBvC,CAAW;AAI1D,UAFsBjB,IAAaM,EAAc,YAAY,OAEvCN,KAAc,CAACL,IAC5B,EAAE,WAAW,IAAe,eAAAoC,EAAA,IAG9B;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,MACJ,UAAUpC,KAAY;AAAA,IAAA;AAAA,IAExB,QAAQ;AAAA,MACN,WAAA+B;AAAA,MACA,MAAMlB,IAAgB,WAAsB;AAAA,IAAA;AAAA,IAE9C,SAAS,EAAE,UAAA4B,EAAA;AAAA,IACX,eAAAL;AAAA,IACA,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,WAAW0B;AAAA,QACX,eAAeC;AAAA,QACf,UAAUC;AAAA,QACV,OAAOC;AAAA,QACP,aAAaC;AAAA,QACb,KAAKC;AAAA,QACL,gBACE7D,KAA2BQ,IAA6BsD,KAAsB;AAAA,MAAA;AAAA,MAElF,gBAAA5B;AAAA,MACA,mBAAAoB;AAAA,MACA,yBAAyBS,GAA8B/C,GAAaN,CAAM;AAAA,IAAA;AAAA,EAC5E;AAEJ;"}
1
+ {"version":3,"file":"useEmployeeDetailsForm.js","sources":["../../../../../../src/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport { useEmployeesGet } from '@gusto/embedded-api/react-query/employeesGet'\nimport { useEmployeesCreateMutation } from '@gusto/embedded-api/react-query/employeesCreate'\nimport { useEmployeesUpdateMutation } from '@gusto/embedded-api/react-query/employeesUpdate'\nimport { useEmployeesUpdateOnboardingStatusMutation } from '@gusto/embedded-api/react-query/employeesUpdateOnboardingStatus'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport {\n createEmployeeDetailsSchema,\n type EmployeeDetailsOptionalFieldsToRequire,\n type EmployeeDetailsFormData,\n type EmployeeDetailsFormOutputs,\n} from './employeeDetailsSchema'\nimport {\n FirstNameField,\n MiddleInitialField,\n LastNameField,\n EmailField,\n DateOfBirthField,\n SsnField,\n SelfOnboardingField,\n} from './fields'\nimport type {\n FirstNameFieldProps,\n MiddleInitialFieldProps,\n LastNameFieldProps,\n EmailFieldProps,\n DateOfBirthFieldProps,\n SsnFieldProps,\n SelfOnboardingFieldProps,\n} from './fields'\nimport { normalizeToISOString } from '@/helpers/dateFormatting'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { EmployeeOnboardingStatus } from '@/shared/constants'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { removeNonDigits } from '@/helpers/formattedStrings'\n\nexport type { EmployeeDetailsOptionalFieldsToRequire } from './employeeDetailsSchema'\n\n/** @internal */\nfunction buildEmployeeDetailsFieldsMetadata(\n base: Record<keyof EmployeeDetailsFormData, FieldMetadata>,\n) {\n return {\n firstName: base.firstName,\n middleInitial: base.middleInitial,\n lastName: base.lastName,\n email: base.email,\n dateOfBirth: base.dateOfBirth,\n ssn: base.ssn,\n selfOnboarding: base.selfOnboarding,\n } satisfies FieldsMetadata\n}\n\n/**\n * Optional callbacks passed to {@link UseEmployeeDetailsFormReady.actions.onSubmit | onSubmit}.\n *\n * @remarks\n * Only the callback matching the submit mode fires —\n * `onEmployeeCreated` on create, `onEmployeeUpdated` on update.\n * `onOnboardingStatusUpdated` fires when toggling the self-onboarding\n * switch changes the employee's onboarding status as part of an update.\n *\n * @public\n * @group Utility types\n */\nexport interface EmployeeDetailsSubmitCallbacks {\n /** Fired after a new employee is successfully created. */\n onEmployeeCreated?: (employee: Employee) => void\n /** Fired after an existing employee is successfully updated. */\n onEmployeeUpdated?: (employee: Employee) => void\n /** Fired when an update toggles self-onboarding and the employee's onboarding status changes. */\n onOnboardingStatusUpdated?: (status: unknown) => void\n}\n\n/**\n * Shared options merged into both branches of {@link UseEmployeeDetailsFormProps}.\n *\n * @public\n */\nexport type UseEmployeeDetailsFormSharedProps = {\n /** Whether to expose the self-onboarding toggle as `form.Fields.SelfOnboarding`. Defaults to `true`. */\n withSelfOnboardingField?: boolean\n /** Fields that are optional by default but should be promoted to required for this form instance. */\n optionalFieldsToRequire?: EmployeeDetailsOptionalFieldsToRequire\n /** Initial values applied before any employee data loads. */\n defaultValues?: Partial<EmployeeDetailsFormData>\n /** When validation runs. Forwarded to react-hook-form's `mode`. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Whether react-hook-form should focus the first error on validation failure. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Options for {@link useEmployeeDetailsForm}.\n *\n * @remarks\n * Discriminated by mode: in create mode supply `companyId` and omit\n * `employeeId`; in update mode supply `employeeId` (and optionally\n * `companyId`).\n *\n * @public\n * @group Utility types\n */\nexport type UseEmployeeDetailsFormProps =\n | (UseEmployeeDetailsFormSharedProps & { companyId: string; employeeId?: never })\n | (UseEmployeeDetailsFormSharedProps & { employeeId: string; companyId?: string })\n\n/**\n * The Field components exposed by {@link useEmployeeDetailsForm} as `form.Fields`.\n *\n * @remarks\n * Each entry is a component bound to a specific form field. `SelfOnboarding`\n * may be `undefined` when the field is not toggleable.\n *\n * @public\n */\nexport interface EmployeeDetailsFormFields {\n /** Bound to `firstName`. Text input. */\n FirstName: ComponentType<FirstNameFieldProps>\n /** Bound to `middleInitial`. Text input. */\n MiddleInitial: ComponentType<MiddleInitialFieldProps>\n /** Bound to `lastName`. Text input. */\n LastName: ComponentType<LastNameFieldProps>\n /** Bound to `email`. Text input. */\n Email: ComponentType<EmailFieldProps>\n /** Bound to `dateOfBirth`. Date picker. */\n DateOfBirth: ComponentType<DateOfBirthFieldProps>\n /** Bound to `ssn`. Text input. */\n Ssn: ComponentType<SsnFieldProps>\n /** Bound to `selfOnboarding`. Switch, or `undefined` when the field is not toggleable. */\n SelfOnboarding: ComponentType<SelfOnboardingFieldProps> | undefined\n}\n\n/**\n * The ready-state result returned by {@link useEmployeeDetailsForm} once data has loaded.\n *\n * @remarks\n * Provides the form's `data` snapshot, pending `status`, submit `actions`,\n * error handling, and the `form.Fields` map.\n *\n * @public\n */\nexport interface UseEmployeeDetailsFormReady extends BaseFormHookReady<\n EmployeeDetailsFieldsMetadata,\n EmployeeDetailsFormData,\n EmployeeDetailsFormFields\n> {\n /** The loaded employee data, or `null` in create mode. */\n data: {\n /** The employee being edited, or `null` in create mode. */\n employee: Employee | null\n }\n /** Submit status and form mode. */\n status: {\n /** `true` while the create, update, or onboarding-status mutation is in flight. */\n isPending: boolean\n /** `'create'` when no `employeeId` was supplied, `'update'` otherwise. */\n mode: 'create' | 'update'\n }\n /** Submit and related actions. */\n actions: {\n /** Validates the form and submits the changes. Returns the created or updated employee, or `undefined` when validation fails. */\n onSubmit: (\n callbacks?: EmployeeDetailsSubmitCallbacks,\n ) => Promise<HookSubmitResult<Employee> | undefined>\n }\n}\n\nconst isCurrentlySelfOnboarding = (employee?: Employee) => {\n if (!employee?.onboardingStatus) return false\n const selfOnboardingStatuses: string[] = [\n EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED_STARTED,\n EmployeeOnboardingStatus.SELF_ONBOARDING_INVITED_OVERDUE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_COMPLETED_BY_EMPLOYEE,\n EmployeeOnboardingStatus.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW,\n ]\n return selfOnboardingStatuses.includes(employee.onboardingStatus)\n}\n\nconst canToggleSelfOnboarding = (employee?: Employee) => {\n if (!employee) return true\n return (\n employee.onboardingStatus === EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE ||\n employee.onboardingStatus === EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n )\n}\n\n/**\n * Headless hook for creating or updating an employee's profile details — name, email, SSN, date of birth, and self-onboarding preference.\n *\n * @remarks\n * Returns a discriminated union: a loading variant while the underlying\n * employee fetch resolves, and a ready variant exposing the form's data,\n * pending status, submit action, error handling, and bound `Fields`.\n * Self-onboarding is only toggleable when the employee's onboarding status\n * allows it; otherwise `form.Fields.SelfOnboarding` is `undefined`.\n *\n * @param input - See {@link UseEmployeeDetailsFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseEmployeeDetailsFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useEmployeeDetailsForm,\n * SDKFormProvider,\n * type UseEmployeeDetailsFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function EmployeeDetailsPage({ companyId, employeeId }: { companyId: string; employeeId?: string }) {\n * const employeeDetails = useEmployeeDetailsForm({ companyId, employeeId })\n *\n * if (employeeDetails.isLoading) return <div>Loading...</div>\n *\n * return <EmployeeDetailsReady employeeDetails={employeeDetails} />\n * }\n *\n * function EmployeeDetailsReady({ employeeDetails }: { employeeDetails: UseEmployeeDetailsFormReady }) {\n * const { Fields } = employeeDetails.form\n *\n * const handleSubmit = async () => {\n * await employeeDetails.actions.onSubmit({\n * onEmployeeCreated: emp => console.log('Created:', emp.uuid),\n * onEmployeeUpdated: emp => console.log('Updated:', emp.uuid),\n * })\n * }\n *\n * return (\n * <SDKFormProvider formHookResult={employeeDetails}>\n * <form onSubmit={e => { e.preventDefault(); void handleSubmit() }}>\n * <Fields.FirstName label=\"First name\" />\n * <Fields.LastName label=\"Last name\" />\n * <Fields.Email label=\"Personal email\" />\n * <Fields.DateOfBirth label=\"Date of birth\" />\n * <Fields.Ssn label=\"Social Security number\" />\n * <button type=\"submit\" disabled={employeeDetails.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useEmployeeDetailsForm({\n companyId,\n employeeId,\n withSelfOnboardingField = true,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseEmployeeDetailsFormProps): HookLoadingResult | UseEmployeeDetailsFormReady {\n const employeeQuery = useEmployeesGet({ employeeId: employeeId ?? '' }, { enabled: !!employeeId })\n\n const employee = employeeQuery.data?.employeeShow\n\n const isCreateMode = !employeeId\n const isSelfOnboardingToggleable = canToggleSelfOnboarding(employee)\n\n const mode = isCreateMode ? 'create' : 'update'\n\n const [schema, metadataConfig] = useMemo(\n () => createEmployeeDetailsSchema({ mode, optionalFieldsToRequire, hasSsn: employee?.hasSsn }),\n [mode, optionalFieldsToRequire, employee?.hasSsn],\n )\n\n const resolvedDefaults: EmployeeDetailsFormData = {\n firstName: employee?.firstName ?? partnerDefaults?.firstName ?? '',\n middleInitial: employee?.middleInitial ?? partnerDefaults?.middleInitial ?? '',\n lastName: employee?.lastName ?? partnerDefaults?.lastName ?? '',\n email: employee?.email ?? partnerDefaults?.email ?? '',\n dateOfBirth: employee?.dateOfBirth ?? normalizeToISOString(partnerDefaults?.dateOfBirth),\n ssn: partnerDefaults?.ssn ?? '',\n selfOnboarding: partnerDefaults?.selfOnboarding ?? isCurrentlySelfOnboarding(employee),\n }\n\n const formMethods = useForm<EmployeeDetailsFormData, unknown, EmployeeDetailsFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createEmployeeMutation = useEmployeesCreateMutation()\n const updateEmployeeMutation = useEmployeesUpdateMutation()\n const updateOnboardingStatusMutation = useEmployeesUpdateOnboardingStatusMutation()\n\n const isPending =\n createEmployeeMutation.isPending ||\n updateEmployeeMutation.isPending ||\n updateOnboardingStatusMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('EmployeeDetailsForm')\n\n const queries = employeeId ? [employeeQuery] : []\n const errorHandling = composeErrorHandler(queries, { submitError, setSubmitError })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildEmployeeDetailsFieldsMetadata(baseMetadata)\n\n const onSubmit = async (\n callbacks?: EmployeeDetailsSubmitCallbacks,\n ): Promise<HookSubmitResult<Employee> | undefined> => {\n let submitResult: HookSubmitResult<Employee> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: EmployeeDetailsFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const { selfOnboarding, dateOfBirth, ssn, ...body } = payload\n\n const cleanedSsn = ssn ? removeNonDigits(ssn) : undefined\n const hasSsnInput = cleanedSsn && cleanedSsn.length > 0\n\n let updatedEmployee: Employee\n\n if (isCreateMode) {\n if (!companyId) {\n throw new SDKInternalError('companyId is required to create an employee')\n }\n const result = await createEmployeeMutation.mutateAsync({\n request: {\n companyId,\n requestBody: {\n ...body,\n selfOnboarding,\n dateOfBirth: dateOfBirth ? new RFCDate(new Date(dateOfBirth)) : undefined,\n ssn: hasSsnInput ? cleanedSsn : undefined,\n },\n },\n })\n\n if (!result.employee) {\n throw new SDKInternalError('Employee creation failed')\n }\n\n updatedEmployee = result.employee\n callbacks?.onEmployeeCreated?.(updatedEmployee)\n } else {\n if (!employee) {\n throw new SDKInternalError('Employee data is not available')\n }\n\n if (isSelfOnboardingToggleable) {\n const currentIsSelfOnboarding =\n employee.onboardingStatus ===\n EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n\n if (selfOnboarding !== currentIsSelfOnboarding) {\n const { employeeOnboardingStatus } =\n await updateOnboardingStatusMutation.mutateAsync({\n request: {\n employeeId: employee.uuid,\n requestBody: {\n onboardingStatus: selfOnboarding\n ? EmployeeOnboardingStatus.SELF_ONBOARDING_PENDING_INVITE\n : EmployeeOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE,\n },\n },\n })\n\n callbacks?.onOnboardingStatusUpdated?.(employeeOnboardingStatus)\n }\n }\n\n const result = await updateEmployeeMutation.mutateAsync({\n request: {\n employeeId: employee.uuid,\n requestBody: {\n version: employee.version as string,\n ...body,\n dateOfBirth: dateOfBirth || undefined,\n ssn: hasSsnInput ? cleanedSsn : undefined,\n },\n },\n })\n\n if (!result.employee) {\n throw new SDKInternalError('Employee update failed')\n }\n\n updatedEmployee = result.employee\n callbacks?.onEmployeeUpdated?.(updatedEmployee)\n }\n\n submitResult = {\n mode: isCreateMode ? 'create' : 'update',\n data: updatedEmployee,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n const isDataLoading = employeeId ? employeeQuery.isLoading : false\n\n if (isDataLoading || (employeeId && !employee)) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n employee: employee ?? null,\n },\n status: {\n isPending,\n mode: isCreateMode ? ('create' as const) : ('update' as const),\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n FirstName: FirstNameField,\n MiddleInitial: MiddleInitialField,\n LastName: LastNameField,\n Email: EmailField,\n DateOfBirth: DateOfBirthField,\n Ssn: SsnField,\n SelfOnboarding:\n withSelfOnboardingField && isSelfOnboardingToggleable ? SelfOnboardingField : undefined,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useEmployeeDetailsForm}.\n *\n * @public\n */\nexport type UseEmployeeDetailsFormResult = HookLoadingResult | UseEmployeeDetailsFormReady\n\n/**\n * Shape of `form.fieldsMetadata` returned by {@link useEmployeeDetailsForm}.\n *\n * @public\n */\nexport type EmployeeDetailsFieldsMetadata = ReturnType<typeof buildEmployeeDetailsFieldsMetadata>\n"],"names":["buildEmployeeDetailsFieldsMetadata","base","isCurrentlySelfOnboarding","employee","EmployeeOnboardingStatus","canToggleSelfOnboarding","useEmployeeDetailsForm","companyId","employeeId","withSelfOnboardingField","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","employeeQuery","useEmployeesGet","isCreateMode","isSelfOnboardingToggleable","mode","schema","metadataConfig","useMemo","createEmployeeDetailsSchema","resolvedDefaults","normalizeToISOString","formMethods","useForm","zodResolver","createEmployeeMutation","useEmployeesCreateMutation","updateEmployeeMutation","useEmployeesUpdateMutation","updateOnboardingStatusMutation","useEmployeesUpdateOnboardingStatusMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","callbacks","submitResult","resolve","data","payload","selfOnboarding","dateOfBirth","ssn","body","cleanedSsn","removeNonDigits","hasSsnInput","updatedEmployee","SDKInternalError","result","RFCDate","currentIsSelfOnboarding","employeeOnboardingStatus","hookFormInternals","useHookFormInternals","FirstNameField","MiddleInitialField","LastNameField","EmailField","DateOfBirthField","SsnField","SelfOnboardingField","createGetFormSubmissionValues"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { composeErrorHandler as t } from "../../../../../partner-hook-utils/comp
3
3
  function m({
4
4
  employeeId: r
5
5
  }) {
6
- const e = n({ employeeId: r }, { staleTime: 1 / 0 }), o = t([e]), i = e.data?.employee;
6
+ const e = n({ employeeId: r }, { staleTime: 1 / 0 }), o = t([e]), i = e.data?.employeeShow;
7
7
  return e.isLoading || !i ? { isLoading: !0, errorHandling: o } : {
8
8
  isLoading: !1,
9
9
  data: { employee: i },
@@ -1 +1 @@
1
- {"version":3,"file":"useEmployeeProfileSummary.js","sources":["../../../../../../src/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.tsx"],"sourcesContent":["import { useEmployeesGet } from '@gusto/embedded-api/react-query/employeesGet'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult } from '@/partner-hook-utils/types'\n\n/**\n * Options for {@link useEmployeeProfileSummary}.\n *\n * @public\n */\nexport interface UseEmployeeProfileSummaryParams {\n /** The associated employee identifier. */\n employeeId: string\n}\n\ntype UseEmployeeProfileSummaryReady = BaseHookReady<\n { employee: Employee },\n { isFetching: boolean; isPending: boolean }\n>\n\n/**\n * Return type of {@link useEmployeeProfileSummary}.\n *\n * @public\n */\nexport type UseEmployeeProfileSummaryResult = HookLoadingResult | UseEmployeeProfileSummaryReady\n\n/**\n * Read-only data hook for the basic-details Profile card.\n *\n * @remarks\n * Fetches a single employee record scoped to the fields the\n * basic-details surface displays. Pair with {@link useEmployeeDetailsForm}\n * to render an edit form against the same record.\n *\n * @param input - See {@link UseEmployeeProfileSummaryParams}.\n * @returns A {@link HookLoadingResult} while loading, or the ready result with the loaded employee once available.\n * @public\n *\n * @example\n * ```tsx\n * import { useEmployeeProfileSummary } from '@gusto/embedded-react-sdk'\n *\n * function ProfileSummary({ employeeId }: { employeeId: string }) {\n * const summary = useEmployeeProfileSummary({ employeeId })\n *\n * if (summary.isLoading) return <div>Loading...</div>\n *\n * const { employee } = summary.data\n * return <h2>{employee.firstName} {employee.lastName}</h2>\n * }\n * ```\n */\nexport function useEmployeeProfileSummary({\n employeeId,\n}: UseEmployeeProfileSummaryParams): UseEmployeeProfileSummaryResult {\n const employeeQuery = useEmployeesGet({ employeeId }, { staleTime: Infinity })\n\n const errorHandling = composeErrorHandler([employeeQuery])\n\n const employee = employeeQuery.data?.employee\n\n if (employeeQuery.isLoading || !employee) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { employee },\n status: {\n isFetching: employeeQuery.isFetching,\n isPending: false,\n },\n errorHandling,\n }\n}\n"],"names":["useEmployeeProfileSummary","employeeId","employeeQuery","useEmployeesGet","errorHandling","composeErrorHandler","employee"],"mappings":";;AAqDO,SAASA,EAA0B;AAAA,EACxC,YAAAC;AACF,GAAqE;AACnE,QAAMC,IAAgBC,EAAgB,EAAE,YAAAF,EAAA,GAAc,EAAE,WAAW,OAAU,GAEvEG,IAAgBC,EAAoB,CAACH,CAAa,CAAC,GAEnDI,IAAWJ,EAAc,MAAM;AAErC,SAAIA,EAAc,aAAa,CAACI,IACvB,EAAE,WAAW,IAAM,eAAAF,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,UAAAE,EAAA;AAAA,IACR,QAAQ;AAAA,MACN,YAAYJ,EAAc;AAAA,MAC1B,WAAW;AAAA,IAAA;AAAA,IAEb,eAAAE;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useEmployeeProfileSummary.js","sources":["../../../../../../src/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.tsx"],"sourcesContent":["import { useEmployeesGet } from '@gusto/embedded-api/react-query/employeesGet'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult } from '@/partner-hook-utils/types'\n\n/**\n * Options for {@link useEmployeeProfileSummary}.\n *\n * @public\n */\nexport interface UseEmployeeProfileSummaryParams {\n /** The associated employee identifier. */\n employeeId: string\n}\n\ntype UseEmployeeProfileSummaryReady = BaseHookReady<\n { employee: Employee },\n { isFetching: boolean; isPending: boolean }\n>\n\n/**\n * Return type of {@link useEmployeeProfileSummary}.\n *\n * @public\n */\nexport type UseEmployeeProfileSummaryResult = HookLoadingResult | UseEmployeeProfileSummaryReady\n\n/**\n * Read-only data hook for the basic-details Profile card.\n *\n * @remarks\n * Fetches a single employee record scoped to the fields the\n * basic-details surface displays. Pair with {@link useEmployeeDetailsForm}\n * to render an edit form against the same record.\n *\n * @param input - See {@link UseEmployeeProfileSummaryParams}.\n * @returns A {@link HookLoadingResult} while loading, or the ready result with the loaded employee once available.\n * @public\n *\n * @example\n * ```tsx\n * import { useEmployeeProfileSummary } from '@gusto/embedded-react-sdk'\n *\n * function ProfileSummary({ employeeId }: { employeeId: string }) {\n * const summary = useEmployeeProfileSummary({ employeeId })\n *\n * if (summary.isLoading) return <div>Loading...</div>\n *\n * const { employee } = summary.data\n * return <h2>{employee.firstName} {employee.lastName}</h2>\n * }\n * ```\n */\nexport function useEmployeeProfileSummary({\n employeeId,\n}: UseEmployeeProfileSummaryParams): UseEmployeeProfileSummaryResult {\n const employeeQuery = useEmployeesGet({ employeeId }, { staleTime: Infinity })\n\n const errorHandling = composeErrorHandler([employeeQuery])\n\n const employee = employeeQuery.data?.employeeShow\n\n if (employeeQuery.isLoading || !employee) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { employee },\n status: {\n isFetching: employeeQuery.isFetching,\n isPending: false,\n },\n errorHandling,\n }\n}\n"],"names":["useEmployeeProfileSummary","employeeId","employeeQuery","useEmployeesGet","errorHandling","composeErrorHandler","employee"],"mappings":";;AAqDO,SAASA,EAA0B;AAAA,EACxC,YAAAC;AACF,GAAqE;AACnE,QAAMC,IAAgBC,EAAgB,EAAE,YAAAF,EAAA,GAAc,EAAE,WAAW,OAAU,GAEvEG,IAAgBC,EAAoB,CAACH,CAAa,CAAC,GAEnDI,IAAWJ,EAAc,MAAM;AAErC,SAAIA,EAAc,aAAa,CAACI,IACvB,EAAE,WAAW,IAAM,eAAAF,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,UAAAE,EAAA;AAAA,IACR,QAAQ;AAAA,MACN,YAAYJ,EAAc;AAAA,MAC1B,WAAW;AAAA,IAAA;AAAA,IAEb,eAAAE;AAAA,EAAA;AAEJ;"}