@gusto/embedded-react-sdk 0.12.0 → 0.12.1

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 (254) hide show
  1. package/dist/components/Base/Base.js +18 -19
  2. package/dist/components/Base/Base.js.map +1 -1
  3. package/dist/components/Common/SignatureForm/SignatureForm.js +4 -6
  4. package/dist/components/Common/SignatureForm/SignatureForm.js.map +1 -1
  5. package/dist/components/Common/SignatureForm/SignatureFormActions.js +10 -12
  6. package/dist/components/Common/SignatureForm/SignatureFormActions.js.map +1 -1
  7. package/dist/components/Common/SignatureForm/SignatureFormFields.js +6 -8
  8. package/dist/components/Common/SignatureForm/SignatureFormFields.js.map +1 -1
  9. package/dist/components/Common/UI/ProgressBar/ProgressBar.d.ts +1 -1
  10. package/dist/components/Common/UI/ProgressBar/ProgressBar.js +19 -9
  11. package/dist/components/Common/UI/ProgressBar/ProgressBar.js.map +1 -1
  12. package/dist/components/Common/UI/ProgressBar/ProgressBarTypes.d.ts +4 -0
  13. package/dist/components/Company/AssignSignatory/AssignSignatory.js +6 -8
  14. package/dist/components/Company/AssignSignatory/AssignSignatory.js.map +1 -1
  15. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +6 -7
  16. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  17. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +8 -9
  18. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  19. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +2 -3
  20. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  21. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +2 -3
  22. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  23. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +1 -1
  24. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +6 -7
  25. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  26. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +5 -6
  27. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  28. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +9 -10
  29. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  30. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +1 -1
  31. package/dist/components/Company/AssignSignatory/TitleSelect.js +7 -8
  32. package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
  33. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +1 -1
  34. package/dist/components/Company/BankAccount/BankAccount.js +6 -6
  35. package/dist/components/Company/BankAccount/BankAccount.js.map +1 -1
  36. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +2 -3
  37. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  38. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +7 -7
  39. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js.map +1 -1
  40. package/dist/components/Company/BankAccount/BankAccountForm/Form.js +7 -8
  41. package/dist/components/Company/BankAccount/BankAccountForm/Form.js.map +1 -1
  42. package/dist/components/Company/BankAccount/BankAccountForm/context.js +1 -1
  43. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +6 -7
  44. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  45. package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js +3 -3
  46. package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js.map +1 -1
  47. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +7 -8
  48. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  49. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js +4 -5
  50. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js.map +1 -1
  51. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +5 -6
  52. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  53. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +10 -12
  54. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  55. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +1 -1
  56. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +6 -8
  57. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  58. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +1 -1
  59. package/dist/components/Company/FederalTaxes/Actions.js +6 -7
  60. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  61. package/dist/components/Company/FederalTaxes/FederalTaxes.js +15 -17
  62. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  63. package/dist/components/Company/FederalTaxes/Form.js +2 -3
  64. package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
  65. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +1 -1
  66. package/dist/components/Company/Industry/Actions.js +5 -6
  67. package/dist/components/Company/Industry/Actions.js.map +1 -1
  68. package/dist/components/Company/Industry/Context.js +1 -1
  69. package/dist/components/Company/Industry/Edit.js +10 -11
  70. package/dist/components/Company/Industry/Edit.js.map +1 -1
  71. package/dist/components/Company/Locations/LocationForm/Actions.js +2 -3
  72. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  73. package/dist/components/Company/Locations/LocationForm/Form.js +4 -5
  74. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  75. package/dist/components/Company/Locations/LocationForm/LocationForm.js +9 -11
  76. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  77. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +1 -1
  78. package/dist/components/Company/Locations/LocationsList/Actions.js +2 -3
  79. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  80. package/dist/components/Company/Locations/LocationsList/List.js +2 -3
  81. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  82. package/dist/components/Company/Locations/LocationsList/LocationsList.js +12 -14
  83. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  84. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +1 -1
  85. package/dist/components/Company/OnboardingOverview/Completed.js +5 -6
  86. package/dist/components/Company/OnboardingOverview/Completed.js.map +1 -1
  87. package/dist/components/Company/OnboardingOverview/MissingRequirements.js +2 -3
  88. package/dist/components/Company/OnboardingOverview/MissingRequirements.js.map +1 -1
  89. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +2 -4
  90. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  91. package/dist/components/Company/OnboardingOverview/context.js +1 -1
  92. package/dist/components/Company/PaySchedule/PaySchedule.js +32 -34
  93. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  94. package/dist/components/Company/PaySchedule/_parts/Actions.js +10 -11
  95. package/dist/components/Company/PaySchedule/_parts/Actions.js.map +1 -1
  96. package/dist/components/Company/PaySchedule/_parts/Edit.js +2 -3
  97. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  98. package/dist/components/Company/PaySchedule/_parts/Head.js +2 -3
  99. package/dist/components/Company/PaySchedule/_parts/Head.js.map +1 -1
  100. package/dist/components/Company/PaySchedule/_parts/List.js +5 -6
  101. package/dist/components/Company/PaySchedule/_parts/List.js.map +1 -1
  102. package/dist/components/Company/PaySchedule/usePaySchedule.js +1 -1
  103. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +5 -6
  104. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  105. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +1 -1
  106. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +6 -7
  107. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  108. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +5 -6
  109. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  110. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +1 -1
  111. package/dist/components/Contractor/Address/Address.js +3 -5
  112. package/dist/components/Contractor/Address/Address.js.map +1 -1
  113. package/dist/components/Contractor/Address/Form.js +2 -3
  114. package/dist/components/Contractor/Address/Form.js.map +1 -1
  115. package/dist/components/Contractor/Address/useAddress.js +1 -1
  116. package/dist/components/Contractor/ContractorList/index.js +8 -9
  117. package/dist/components/Contractor/ContractorList/index.js.map +1 -1
  118. package/dist/components/Contractor/NewHireReport/NewHireReport.js +16 -17
  119. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  120. package/dist/components/Contractor/OnboardingFlow/OnboardingFlow.js +12 -11
  121. package/dist/components/Contractor/OnboardingFlow/OnboardingFlow.js.map +1 -1
  122. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.d.ts +1 -0
  123. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js +42 -22
  124. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js.map +1 -1
  125. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.d.ts +5 -5
  126. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js +34 -16
  127. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  128. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js +2 -3
  129. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js.map +1 -1
  130. package/dist/components/Contractor/PaymentMethod/PaymentMethod.js +2 -3
  131. package/dist/components/Contractor/PaymentMethod/PaymentMethod.js.map +1 -1
  132. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js +2 -3
  133. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js.map +1 -1
  134. package/dist/components/Contractor/Profile/ContractorProfile.js +22 -15
  135. package/dist/components/Contractor/Profile/ContractorProfile.js.map +1 -1
  136. package/dist/components/Contractor/Profile/ContractorProfileForm.d.ts +3 -1
  137. package/dist/components/Contractor/Profile/ContractorProfileForm.js +68 -65
  138. package/dist/components/Contractor/Profile/ContractorProfileForm.js.map +1 -1
  139. package/dist/components/Contractor/Profile/useContractorProfile.d.ts +16 -16
  140. package/dist/components/Contractor/Profile/useContractorProfile.js +101 -94
  141. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  142. package/dist/components/Contractor/Submit/Submit.js +36 -37
  143. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  144. package/dist/components/Employee/Compensation/Actions.js +4 -5
  145. package/dist/components/Employee/Compensation/Actions.js.map +1 -1
  146. package/dist/components/Employee/Compensation/Edit.js +2 -3
  147. package/dist/components/Employee/Compensation/Edit.js.map +1 -1
  148. package/dist/components/Employee/Compensation/List.js +5 -6
  149. package/dist/components/Employee/Compensation/List.js.map +1 -1
  150. package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js +2 -3
  151. package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js.map +1 -1
  152. package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js +6 -7
  153. package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js.map +1 -1
  154. package/dist/components/Employee/Deductions/IncludeDeductionsForm/IncludeDeductionsForm.js +2 -3
  155. package/dist/components/Employee/Deductions/IncludeDeductionsForm/IncludeDeductionsForm.js.map +1 -1
  156. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js +4 -5
  157. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js.map +1 -1
  158. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +9 -11
  159. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  160. package/dist/components/Employee/DocumentSigner/DocumentList/List.js +2 -3
  161. package/dist/components/Employee/DocumentSigner/DocumentList/List.js.map +1 -1
  162. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +1 -1
  163. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +11 -13
  164. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  165. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +1 -1
  166. package/dist/components/Employee/EmployeeList/Actions.js +4 -5
  167. package/dist/components/Employee/EmployeeList/Actions.js.map +1 -1
  168. package/dist/components/Employee/EmployeeList/EmployeeList.js +2 -4
  169. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  170. package/dist/components/Employee/EmployeeList/Head.js +2 -3
  171. package/dist/components/Employee/EmployeeList/Head.js.map +1 -1
  172. package/dist/components/Employee/EmployeeList/List.js +2 -3
  173. package/dist/components/Employee/EmployeeList/List.js.map +1 -1
  174. package/dist/components/Employee/EmployeeList/useEmployeeList.js +1 -1
  175. package/dist/components/Employee/Landing/Landing.js +6 -7
  176. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  177. package/dist/components/Employee/PaymentMethod/Actions.js +5 -6
  178. package/dist/components/Employee/PaymentMethod/Actions.js.map +1 -1
  179. package/dist/components/Employee/PaymentMethod/BankAccountEdit.js +4 -5
  180. package/dist/components/Employee/PaymentMethod/BankAccountEdit.js.map +1 -1
  181. package/dist/components/Employee/PaymentMethod/BankAccountsList.js +2 -3
  182. package/dist/components/Employee/PaymentMethod/BankAccountsList.js.map +1 -1
  183. package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js +2 -3
  184. package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js.map +1 -1
  185. package/dist/components/Employee/PaymentMethod/Split.js +2 -3
  186. package/dist/components/Employee/PaymentMethod/Split.js.map +1 -1
  187. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +1 -1
  188. package/dist/components/Employee/Profile/Actions.js +6 -7
  189. package/dist/components/Employee/Profile/Actions.js.map +1 -1
  190. package/dist/components/Employee/Profile/AdminPersonalDetails.d.ts +6 -6
  191. package/dist/components/Employee/Profile/AdminPersonalDetails.js +9 -10
  192. package/dist/components/Employee/Profile/AdminPersonalDetails.js.map +1 -1
  193. package/dist/components/Employee/Profile/HomeAddress.js +4 -5
  194. package/dist/components/Employee/Profile/HomeAddress.js.map +1 -1
  195. package/dist/components/Employee/Profile/PersonalDetailsInputs.d.ts +2 -2
  196. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +20 -21
  197. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  198. package/dist/components/Employee/Profile/useProfile.js +1 -1
  199. package/dist/components/Employee/Taxes/Actions.js +7 -8
  200. package/dist/components/Employee/Taxes/Actions.js.map +1 -1
  201. package/dist/components/Employee/Taxes/FederalForm.js +4 -5
  202. package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
  203. package/dist/components/Employee/Taxes/useTaxes.js +1 -1
  204. package/dist/components/Flow/Flow.js +15 -13
  205. package/dist/components/Flow/Flow.js.map +1 -1
  206. package/dist/components/Flow/useFlow.d.ts +1 -0
  207. package/dist/components/Flow/useFlow.js.map +1 -1
  208. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.d.ts +6 -0
  209. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +41 -0
  210. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -0
  211. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +11 -0
  212. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +78 -0
  213. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -0
  214. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.d.ts +6 -0
  215. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +19 -0
  216. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -0
  217. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +5 -0
  218. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +21 -0
  219. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -0
  220. package/dist/components/Payroll/PayrollList/PayrollList.d.ts +6 -0
  221. package/dist/components/Payroll/PayrollList/PayrollList.js +17 -0
  222. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -0
  223. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +9 -0
  224. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +49 -0
  225. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -0
  226. package/dist/components/Payroll/PayrollOverview/PayrollOverview.d.ts +7 -0
  227. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +32 -0
  228. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -0
  229. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +6 -0
  230. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +68 -0
  231. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -0
  232. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.d.ts +16 -0
  233. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js +55 -0
  234. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js.map +1 -0
  235. package/dist/components/Payroll/RunPayrollFlow/RunPayrollFlow.d.ts +6 -0
  236. package/dist/components/Payroll/RunPayrollFlow/RunPayrollFlow.js +20 -0
  237. package/dist/components/Payroll/RunPayrollFlow/RunPayrollFlow.js.map +1 -0
  238. package/dist/components/Payroll/index.d.ts +6 -0
  239. package/dist/components/Payroll/index.js +13 -0
  240. package/dist/components/Payroll/index.js.map +1 -0
  241. package/dist/components/index.d.ts +1 -0
  242. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +5 -6
  243. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  244. package/dist/i18n/en/Contractor.ContractorList.json.js +13 -11
  245. package/dist/i18n/en/Contractor.ContractorList.json.js.map +1 -1
  246. package/dist/i18n/en/Contractor.Profile.json.js +1 -1
  247. package/dist/index.js +11 -9
  248. package/dist/index.js.map +1 -1
  249. package/dist/shared/constants.d.ts +26 -0
  250. package/dist/shared/constants.js +72 -45
  251. package/dist/shared/constants.js.map +1 -1
  252. package/dist/style.css +1 -1
  253. package/dist/types/i18next.d.ts +2 -3
  254. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"ContractorProfileForm.js","sources":["../../../../src/components/Contractor/Profile/ContractorProfileForm.tsx"],"sourcesContent":["import { FormProvider } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport type { useContractorProfile } from './useContractorProfile'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { Form } from '@/components/Common/Form'\nimport { Grid } from '@/components/Common/Grid/Grid'\nimport { Flex } from '@/components/Common/Flex'\nimport { TextInputField } from '@/components/Common/Fields/TextInputField'\nimport { NumberInputField } from '@/components/Common/Fields/NumberInputField'\nimport { RadioGroupField } from '@/components/Common/Fields/RadioGroupField'\nimport { SwitchField } from '@/components/Common/Fields/SwitchField'\nimport { DatePickerField } from '@/components/Common/Fields/DatePickerField'\nimport { normalizeSSN } from '@/helpers/ssn'\nimport { normalizeEin } from '@/helpers/federalEin'\n\n// Pure presentation component - takes all data as props\nexport type ContractorProfileFormProps = ReturnType<typeof useContractorProfile> & {\n className?: string\n}\n\nexport function ContractorProfileForm({\n formMethods,\n handleSubmit,\n formState,\n shouldShowEmailField,\n shouldShowBusinessFields,\n shouldShowIndividualFields,\n shouldShowHourlyRate,\n contractorTypeOptions,\n wageTypeOptions,\n isEditing,\n className,\n}: ContractorProfileFormProps) {\n const Components = useComponentContext()\n useI18n('Contractor.Profile')\n const { t } = useTranslation('Contractor.Profile')\n\n return (\n <section className={className}>\n <FormProvider {...formMethods}>\n <Form onSubmit={handleSubmit}>\n <Grid gridTemplateColumns=\"1fr\" gap={24} className=\"mb-8\">\n <header>\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Text>{t('subtitle')}</Components.Text>\n </header>\n\n {/* Invite Contractor Card */}\n <Components.Card>\n <Grid gap={16}>\n {/* Invite Contractor Toggle */}\n <SwitchField\n name=\"inviteContractor\"\n label={t('fields.inviteContractor.label')}\n description={t('fields.inviteContractor.description')}\n />\n\n {/* Email Field - shown when inviting contractor */}\n {shouldShowEmailField && (\n <TextInputField\n name=\"email\"\n label={t('fields.email.label')}\n isRequired\n type=\"email\"\n />\n )}\n </Grid>\n </Components.Card>\n\n {/* Contractor Type */}\n <RadioGroupField\n name=\"contractorType\"\n isRequired\n label={t('fields.contractorType.label')}\n options={contractorTypeOptions}\n />\n\n {/* Individual Contractor Fields */}\n {shouldShowIndividualFields && (\n <>\n <Grid gridTemplateColumns={{ base: '1fr', medium: '1fr 1fr' }} gap={16}>\n <TextInputField name=\"firstName\" label={t('fields.firstName.label')} isRequired />\n <TextInputField name=\"middleInitial\" label={t('fields.middleInitial.label')} />\n </Grid>\n <TextInputField name=\"lastName\" label={t('fields.lastName.label')} isRequired />\n <TextInputField\n name=\"ssn\"\n label={t('fields.ssn.label')}\n placeholder={t('fields.ssn.placeholder')}\n transform={normalizeSSN}\n isRequired\n />\n </>\n )}\n\n {/* Business Contractor Fields */}\n {shouldShowBusinessFields && (\n <>\n <TextInputField\n name=\"businessName\"\n label={t('fields.businessName.label')}\n isRequired\n />\n <TextInputField\n name=\"ein\"\n label={t('fields.ein.label')}\n placeholder={t('fields.ein.placeholder')}\n transform={normalizeEin}\n isRequired\n />\n </>\n )}\n\n {/* Wage Type */}\n <RadioGroupField\n name=\"wageType\"\n isRequired\n label={t('fields.wageType.label')}\n options={wageTypeOptions}\n />\n\n {/* Hourly Rate - shown for hourly contractors */}\n {shouldShowHourlyRate && (\n <NumberInputField\n name=\"hourlyRate\"\n label={t('fields.hourlyRate.label')}\n min={0}\n isRequired\n format=\"currency\"\n />\n )}\n\n {/* Start Date */}\n <DatePickerField\n name=\"startDate\"\n label={t('fields.startDate.label')}\n description={t('fields.startDate.description')}\n isRequired\n />\n </Grid>\n\n {/* Actions */}\n <Flex gap={12} justifyContent=\"flex-end\">\n <Components.Button type=\"submit\" variant=\"primary\" isDisabled={formState.isSubmitting}>\n {formState.isSubmitting\n ? isEditing\n ? t('buttons.updating')\n : t('buttons.creating')\n : isEditing\n ? t('buttons.update')\n : t('buttons.create')}\n </Components.Button>\n </Flex>\n </Form>\n </FormProvider>\n </section>\n )\n}\n"],"names":["ContractorProfileForm","formMethods","handleSubmit","formState","shouldShowEmailField","shouldShowBusinessFields","shouldShowIndividualFields","shouldShowHourlyRate","contractorTypeOptions","wageTypeOptions","isEditing","className","Components","useComponentContext","useI18n","t","useTranslation","jsx","FormProvider","jsxs","Form","Grid","SwitchField","TextInputField","RadioGroupField","Fragment","normalizeSSN","normalizeEin","NumberInputField","DatePickerField","Flex"],"mappings":"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"}
1
+ {"version":3,"file":"ContractorProfileForm.js","sources":["../../../../src/components/Contractor/Profile/ContractorProfileForm.tsx"],"sourcesContent":["import { FormProvider } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { type Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport type { useContractorProfile } from './useContractorProfile'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { Form } from '@/components/Common/Form'\nimport { Grid } from '@/components/Common/Grid/Grid'\nimport { Flex } from '@/components/Common/Flex'\nimport { TextInputField } from '@/components/Common/Fields/TextInputField'\nimport { NumberInputField } from '@/components/Common/Fields/NumberInputField'\nimport { RadioGroupField } from '@/components/Common/Fields/RadioGroupField'\nimport { SwitchField } from '@/components/Common/Fields/SwitchField'\nimport { DatePickerField } from '@/components/Common/Fields/DatePickerField'\nimport { normalizeSSN, usePlaceholderSSN } from '@/helpers/ssn'\nimport { normalizeEin, usePlaceholderEin } from '@/helpers/federalEin'\nimport { ContractorOnboardingStatus } from '@/shared/constants'\n\n// Pure presentation component - takes all data as props\nexport type ContractorProfileFormProps = ReturnType<typeof useContractorProfile> & {\n className?: string\n existingContractor?: Contractor\n}\n\nexport function ContractorProfileForm({\n formMethods,\n handleSubmit,\n formState,\n shouldShowEmailField,\n shouldShowBusinessFields,\n shouldShowIndividualFields,\n shouldShowHourlyRate,\n contractorTypeOptions,\n wageTypeOptions,\n isEditing,\n className,\n existingContractor,\n}: ContractorProfileFormProps) {\n const Components = useComponentContext()\n useI18n('Contractor.Profile')\n const { t } = useTranslation('Contractor.Profile')\n const ssnPlaceholder = usePlaceholderSSN(existingContractor?.hasSsn ?? false)\n const einPlaceholder = usePlaceholderEin(existingContractor?.hasEin ?? false)\n\n return (\n <section className={className}>\n <FormProvider {...formMethods}>\n <Form onSubmit={handleSubmit}>\n <Grid gridTemplateColumns=\"1fr\" gap={24} className=\"mb-8\">\n <header>\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Text>{t('subtitle')}</Components.Text>\n </header>\n\n {/* Invite Contractor Card */}\n <Components.Card>\n <Grid gap={16}>\n {/* Invite Contractor Toggle */}\n <SwitchField\n name=\"selfOnboarding\"\n label={t('fields.selfOnboarding.label')}\n description={t('fields.selfOnboarding.description')}\n isDisabled={\n existingContractor &&\n existingContractor.onboardingStatus !==\n ContractorOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE\n }\n />\n\n {/* Email Field - shown when inviting contractor */}\n {shouldShowEmailField && (\n <TextInputField\n name=\"email\"\n label={t('fields.email.label')}\n isRequired\n type=\"email\"\n />\n )}\n </Grid>\n </Components.Card>\n\n {/* Contractor Type */}\n <RadioGroupField\n name=\"contractorType\"\n isRequired\n label={t('fields.contractorType.label')}\n options={contractorTypeOptions}\n />\n\n {/* Individual Contractor Fields */}\n {shouldShowIndividualFields && (\n <>\n <Grid gridTemplateColumns={{ base: '1fr', medium: '1fr 1fr' }} gap={16}>\n <TextInputField name=\"firstName\" label={t('fields.firstName.label')} isRequired />\n <TextInputField name=\"middleInitial\" label={t('fields.middleInitial.label')} />\n </Grid>\n <TextInputField name=\"lastName\" label={t('fields.lastName.label')} isRequired />\n <TextInputField\n name=\"ssn\"\n label={t('fields.ssn.label')}\n placeholder={ssnPlaceholder}\n transform={normalizeSSN}\n isRequired\n />\n </>\n )}\n\n {/* Business Contractor Fields */}\n {shouldShowBusinessFields && (\n <>\n <TextInputField\n name=\"businessName\"\n label={t('fields.businessName.label')}\n isRequired\n />\n <TextInputField\n name=\"ein\"\n label={t('fields.ein.label')}\n placeholder={einPlaceholder}\n transform={normalizeEin}\n isRequired\n />\n </>\n )}\n\n {/* Wage Type */}\n <RadioGroupField\n name=\"wageType\"\n isRequired\n label={t('fields.wageType.label')}\n options={wageTypeOptions}\n />\n\n {/* Hourly Rate - shown for hourly contractors */}\n {shouldShowHourlyRate && (\n <NumberInputField\n name=\"hourlyRate\"\n label={t('fields.hourlyRate.label')}\n min={0}\n isRequired\n format=\"currency\"\n />\n )}\n\n {/* Start Date */}\n <DatePickerField\n name=\"startDate\"\n label={t('fields.startDate.label')}\n description={t('fields.startDate.description')}\n isRequired\n />\n </Grid>\n\n {/* Actions */}\n <Flex gap={12} justifyContent=\"flex-end\">\n <Components.Button type=\"submit\" variant=\"primary\" isDisabled={formState.isSubmitting}>\n {formState.isSubmitting\n ? isEditing\n ? t('buttons.updating')\n : t('buttons.creating')\n : isEditing\n ? t('buttons.update')\n : t('buttons.create')}\n </Components.Button>\n </Flex>\n </Form>\n </FormProvider>\n </section>\n )\n}\n"],"names":["ContractorProfileForm","formMethods","handleSubmit","formState","shouldShowEmailField","shouldShowBusinessFields","shouldShowIndividualFields","shouldShowHourlyRate","contractorTypeOptions","wageTypeOptions","isEditing","className","existingContractor","Components","useComponentContext","useI18n","t","useTranslation","ssnPlaceholder","usePlaceholderSSN","einPlaceholder","usePlaceholderEin","jsx","FormProvider","jsxs","Form","Grid","SwitchField","ContractorOnboardingStatus","TextInputField","RadioGroupField","Fragment","normalizeSSN","normalizeEin","NumberInputField","DatePickerField","Flex"],"mappings":"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"}
@@ -9,7 +9,7 @@ export declare const ContractorType: {
9
9
  readonly Business: "Business";
10
10
  };
11
11
  declare const ContractorProfileSchema: z.ZodObject<{
12
- inviteContractor: z.ZodDefault<z.ZodBoolean>;
12
+ selfOnboarding: z.ZodDefault<z.ZodBoolean>;
13
13
  email: z.ZodOptional<z.ZodString>;
14
14
  contractorType: z.ZodEnum<["Individual", "Business"]>;
15
15
  wageType: z.ZodEnum<["Hourly", "Fixed"]>;
@@ -22,7 +22,7 @@ declare const ContractorProfileSchema: z.ZodObject<{
22
22
  ein: z.ZodOptional<z.ZodString>;
23
23
  hourlyRate: z.ZodOptional<z.ZodNumber>;
24
24
  }, "strip", z.ZodTypeAny, {
25
- inviteContractor: boolean;
25
+ selfOnboarding: boolean;
26
26
  contractorType: "Business" | "Individual";
27
27
  startDate: Date;
28
28
  wageType: "Hourly" | "Fixed";
@@ -45,12 +45,12 @@ declare const ContractorProfileSchema: z.ZodObject<{
45
45
  lastName?: string | undefined;
46
46
  businessName?: string | undefined;
47
47
  hourlyRate?: number | undefined;
48
- inviteContractor?: boolean | undefined;
48
+ selfOnboarding?: boolean | undefined;
49
49
  middleInitial?: string | undefined;
50
50
  }>;
51
51
  export type ContractorProfileFormData = z.infer<typeof ContractorProfileSchema>;
52
- export declare const createContractorProfileValidationSchema: (t: (key: string) => string) => z.ZodEffects<z.ZodObject<{
53
- inviteContractor: z.ZodDefault<z.ZodBoolean>;
52
+ export declare const createContractorProfileValidationSchema: (t: (key: string) => string, hasSsn: boolean, hasEin: boolean) => z.ZodEffects<z.ZodObject<{
53
+ selfOnboarding: z.ZodDefault<z.ZodBoolean>;
54
54
  email: z.ZodOptional<z.ZodString>;
55
55
  contractorType: z.ZodEnum<["Individual", "Business"]>;
56
56
  wageType: z.ZodEnum<["Hourly", "Fixed"]>;
@@ -63,7 +63,7 @@ export declare const createContractorProfileValidationSchema: (t: (key: string)
63
63
  ein: z.ZodOptional<z.ZodString>;
64
64
  hourlyRate: z.ZodOptional<z.ZodNumber>;
65
65
  }, "strip", z.ZodTypeAny, {
66
- inviteContractor: boolean;
66
+ selfOnboarding: boolean;
67
67
  contractorType: "Business" | "Individual";
68
68
  startDate: Date;
69
69
  wageType: "Hourly" | "Fixed";
@@ -86,10 +86,10 @@ export declare const createContractorProfileValidationSchema: (t: (key: string)
86
86
  lastName?: string | undefined;
87
87
  businessName?: string | undefined;
88
88
  hourlyRate?: number | undefined;
89
- inviteContractor?: boolean | undefined;
89
+ selfOnboarding?: boolean | undefined;
90
90
  middleInitial?: string | undefined;
91
91
  }>, {
92
- inviteContractor: boolean;
92
+ selfOnboarding: boolean;
93
93
  contractorType: "Business" | "Individual";
94
94
  startDate: Date;
95
95
  wageType: "Hourly" | "Fixed";
@@ -112,7 +112,7 @@ export declare const createContractorProfileValidationSchema: (t: (key: string)
112
112
  lastName?: string | undefined;
113
113
  businessName?: string | undefined;
114
114
  hourlyRate?: number | undefined;
115
- inviteContractor?: boolean | undefined;
115
+ selfOnboarding?: boolean | undefined;
116
116
  middleInitial?: string | undefined;
117
117
  }>;
118
118
  export interface UseContractorProfileProps {
@@ -123,7 +123,7 @@ export interface UseContractorProfileProps {
123
123
  }
124
124
  export declare function useContractorProfile({ companyId, contractorId, defaultValues, existingContractor, }: UseContractorProfileProps): {
125
125
  formMethods: import('react-hook-form').UseFormReturn<{
126
- inviteContractor: boolean;
126
+ selfOnboarding: boolean;
127
127
  contractorType: "Business" | "Individual";
128
128
  startDate: Date;
129
129
  wageType: "Hourly" | "Fixed";
@@ -136,7 +136,7 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
136
136
  hourlyRate?: number | undefined;
137
137
  middleInitial?: string | undefined;
138
138
  }, any, {
139
- inviteContractor: boolean;
139
+ selfOnboarding: boolean;
140
140
  contractorType: "Business" | "Individual";
141
141
  startDate: Date;
142
142
  wageType: "Hourly" | "Fixed";
@@ -161,7 +161,7 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
161
161
  disabled: boolean;
162
162
  submitCount: number;
163
163
  defaultValues?: Readonly<{
164
- inviteContractor?: boolean | undefined;
164
+ selfOnboarding?: boolean | undefined;
165
165
  contractorType?: "Business" | "Individual" | undefined;
166
166
  startDate?: Date | undefined;
167
167
  wageType?: "Hourly" | "Fixed" | undefined;
@@ -175,7 +175,7 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
175
175
  middleInitial?: string | undefined;
176
176
  }> | undefined;
177
177
  dirtyFields: Partial<Readonly<{
178
- inviteContractor?: boolean | undefined;
178
+ selfOnboarding?: boolean | undefined;
179
179
  contractorType?: boolean | undefined;
180
180
  startDate?: boolean | undefined;
181
181
  wageType?: boolean | undefined;
@@ -189,7 +189,7 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
189
189
  middleInitial?: boolean | undefined;
190
190
  }>>;
191
191
  touchedFields: Partial<Readonly<{
192
- inviteContractor?: boolean | undefined;
192
+ selfOnboarding?: boolean | undefined;
193
193
  contractorType?: boolean | undefined;
194
194
  startDate?: boolean | undefined;
195
195
  wageType?: boolean | undefined;
@@ -203,7 +203,7 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
203
203
  middleInitial?: boolean | undefined;
204
204
  }>>;
205
205
  validatingFields: Partial<Readonly<{
206
- inviteContractor?: boolean | undefined;
206
+ selfOnboarding?: boolean | undefined;
207
207
  contractorType?: boolean | undefined;
208
208
  startDate?: boolean | undefined;
209
209
  wageType?: boolean | undefined;
@@ -217,7 +217,7 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
217
217
  middleInitial?: boolean | undefined;
218
218
  }>>;
219
219
  errors: import('react-hook-form').FieldErrors<{
220
- inviteContractor: boolean;
220
+ selfOnboarding: boolean;
221
221
  contractorType: "Business" | "Individual";
222
222
  startDate: Date;
223
223
  wageType: "Hourly" | "Fixed";
@@ -1,7 +1,7 @@
1
1
  import { useMemo as z } from "react";
2
- import { useTranslation as $ } from "react-i18next";
3
- import { zodResolver as G } from "@hookform/resolvers/zod";
4
- import { useForm as V, useWatch as f } from "react-hook-form";
2
+ import { useTranslation as G } from "react-i18next";
3
+ import { zodResolver as V } from "@hookform/resolvers/zod";
4
+ import { useForm as $, useWatch as y } from "react-hook-form";
5
5
  import { z as s } from "zod";
6
6
  import { useContractorsCreateMutation as X } from "@gusto/embedded-api/react-query/contractorsCreate";
7
7
  import { useContractorsUpdateMutation as j } from "@gusto/embedded-api/react-query/contractorsUpdate";
@@ -13,111 +13,118 @@ import "@gusto/embedded-api/models/errors/sdkvalidationerror";
13
13
  import "@gusto/embedded-api/models/errors/unprocessableentityerrorobject";
14
14
  import "@tanstack/react-query";
15
15
  import { useBase as J } from "../../Base/useBase.js";
16
- import { componentEvents as y } from "../../../shared/constants.js";
17
- import "classnames";
18
- import { removeNonDigits as K } from "../../../helpers/formattedStrings.js";
16
+ import { ContractorSelfOnboardingStatuses as K, componentEvents as v, ContractorOnboardingStatus as Q } from "../../../shared/constants.js";
17
+ import { removeNonDigits as Y } from "../../../helpers/formattedStrings.js";
19
18
  import "../../../contexts/ComponentAdapter/useComponentContext.js";
20
- import { useI18n as Q } from "../../../i18n/I18n.js";
21
- import { SSN_REGEX as Y, NAME_REGEX as h } from "../../../helpers/validations.js";
22
- import { formatDateToStringDate as x } from "../../../helpers/dateFormatting.js";
23
- import { normalizeEin as ee } from "../../../helpers/federalEin.js";
24
- const n = L, r = k, oe = s.object({
19
+ import "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
20
+ import { useI18n as x } from "../../../i18n/I18n.js";
21
+ import { SSN_REGEX as ee, NAME_REGEX as T } from "../../../helpers/validations.js";
22
+ import { formatDateToStringDate as oe } from "../../../helpers/dateFormatting.js";
23
+ import { normalizeEin as se } from "../../../helpers/federalEin.js";
24
+ const n = L, i = k, ae = s.object({
25
25
  // Self-onboarding toggle
26
- inviteContractor: s.boolean().default(!1),
26
+ selfOnboarding: s.boolean().default(!1),
27
27
  email: s.string().email().optional(),
28
28
  // Required contractor fields
29
- contractorType: s.enum([r.Individual, r.Business]),
29
+ contractorType: s.enum([i.Individual, i.Business]),
30
30
  wageType: s.enum([n.Hourly, n.Fixed]),
31
31
  startDate: s.date(),
32
32
  // Individual contractor fields
33
- firstName: s.string().min(1).regex(h).optional(),
33
+ firstName: s.string().min(1).regex(T).optional(),
34
34
  middleInitial: s.string().optional(),
35
- lastName: s.string().min(1).regex(h).optional(),
35
+ lastName: s.string().min(1).regex(T).optional(),
36
36
  ssn: s.string().optional(),
37
37
  // Business contractor fields
38
38
  businessName: s.string().optional(),
39
39
  ein: s.string().optional(),
40
40
  // Wage fields
41
41
  hourlyRate: s.number().min(0).optional()
42
- }), se = (i) => oe.superRefine(
43
- (t, a) => {
44
- if (t.inviteContractor && !t.email && a.addIssue({
42
+ }), te = (a, p, d) => ae.superRefine(
43
+ (e, t) => {
44
+ if (e.selfOnboarding && !e.email && t.addIssue({
45
45
  code: s.ZodIssueCode.custom,
46
46
  path: ["email"],
47
- message: i("validations.email")
48
- }), t.contractorType === r.Individual)
49
- if (t.firstName || a.addIssue({
47
+ message: a("validations.email")
48
+ }), e.contractorType === i.Individual)
49
+ if (e.firstName || t.addIssue({
50
50
  code: s.ZodIssueCode.custom,
51
51
  path: ["firstName"],
52
- message: i("validations.firstName")
53
- }), t.lastName || a.addIssue({
52
+ message: a("validations.firstName")
53
+ }), e.lastName || t.addIssue({
54
54
  code: s.ZodIssueCode.custom,
55
55
  path: ["lastName"],
56
- message: i("validations.lastName")
57
- }), !t.ssn)
58
- a.addIssue({
56
+ message: a("validations.lastName")
57
+ }), !e.ssn)
58
+ p || t.addIssue({
59
59
  code: s.ZodIssueCode.custom,
60
60
  path: ["ssn"],
61
- message: i("validations.ssn")
61
+ message: a("validations.ssn")
62
62
  });
63
63
  else {
64
- const e = K(t.ssn);
65
- Y.test(e) || a.addIssue({
64
+ const l = Y(e.ssn);
65
+ ee.test(l) || t.addIssue({
66
66
  code: s.ZodIssueCode.custom,
67
67
  path: ["ssn"],
68
- message: i("validations.ssnFormat")
68
+ message: a("validations.ssnFormat")
69
69
  });
70
70
  }
71
- if (t.contractorType === r.Business)
72
- if (t.businessName || a.addIssue({
71
+ if (e.contractorType === i.Business)
72
+ if (e.businessName || t.addIssue({
73
73
  code: s.ZodIssueCode.custom,
74
74
  path: ["businessName"],
75
- message: i("validations.businessName")
76
- }), !t.ein)
77
- a.addIssue({
75
+ message: a("validations.businessName")
76
+ }), !e.ein)
77
+ d || t.addIssue({
78
78
  code: s.ZodIssueCode.custom,
79
79
  path: ["ein"],
80
- message: i("validations.ein")
80
+ message: a("validations.ein")
81
81
  });
82
82
  else {
83
- const e = ee(t.ein);
84
- /^\d{2}-\d{7}$/.test(e) || a.addIssue({
83
+ const l = se(e.ein);
84
+ /^\d{2}-\d{7}$/.test(l) || t.addIssue({
85
85
  code: s.ZodIssueCode.custom,
86
86
  path: ["ein"],
87
- message: i("validations.einFormat")
87
+ message: a("validations.einFormat")
88
88
  });
89
89
  }
90
- t.wageType === n.Hourly && (t.hourlyRate === void 0 || t.hourlyRate < 0) && a.addIssue({
90
+ e.wageType === n.Hourly && (e.hourlyRate === void 0 || e.hourlyRate < 0) && t.addIssue({
91
91
  code: s.ZodIssueCode.custom,
92
92
  path: ["hourlyRate"],
93
- message: i("validations.hourlyRate")
93
+ message: a("validations.hourlyRate")
94
94
  });
95
95
  }
96
96
  );
97
- function Se({
98
- companyId: i,
99
- contractorId: t,
100
- defaultValues: a,
97
+ function Ee({
98
+ companyId: a,
99
+ contractorId: p,
100
+ defaultValues: d,
101
101
  existingContractor: e
102
102
  }) {
103
- Q("Contractor.Profile");
104
- const { t: N } = $("Contractor.Profile"), { onEvent: c, baseSubmitHandler: I } = J(), g = se(N), { mutateAsync: w, isPending: R } = X(), { mutateAsync: b, isPending: C } = j(), S = z(
103
+ x("Contractor.Profile");
104
+ const { t } = G("Contractor.Profile"), { onEvent: l, baseSubmitHandler: b } = J(), g = te(
105
+ t,
106
+ e?.hasSsn ?? !1,
107
+ e?.hasEin ?? !1
108
+ ), { mutateAsync: I, isPending: R } = X(), { mutateAsync: S, isPending: w } = j(), O = z(
105
109
  () => ({
106
- inviteContractor: !1,
107
- contractorType: r.Business,
110
+ selfOnboarding: !1,
111
+ contractorType: i.Business,
108
112
  wageType: n.Fixed,
109
113
  startDate: /* @__PURE__ */ new Date(),
110
- ...a,
114
+ ...d,
111
115
  // Override with existing contractor data if available
112
116
  ...e && {
113
- contractorType: e.type || r.Business,
117
+ selfOnboarding: e.onboardingStatus ? (
118
+ // @ts-expect-error: onboarding_status during runtime can be one of self onboarding statuses
119
+ K.has(e.onboardingStatus)
120
+ ) : !1,
121
+ contractorType: e.type || i.Business,
114
122
  wageType: e.wageType || n.Fixed,
115
123
  startDate: e.startDate ? new Date(e.startDate) : /* @__PURE__ */ new Date(),
116
124
  firstName: e.firstName || void 0,
117
125
  middleInitial: e.middleInitial || void 0,
118
126
  lastName: e.lastName || void 0,
119
127
  businessName: e.businessName || void 0,
120
- ein: e.ein || void 0,
121
128
  email: e.email || void 0,
122
129
  hourlyRate: e.hourlyRate ? (() => {
123
130
  const o = parseFloat(e.hourlyRate);
@@ -125,25 +132,25 @@ function Se({
125
132
  })() : void 0
126
133
  }
127
134
  }),
128
- [e, a]
129
- ), m = V({
130
- resolver: G(g),
131
- defaultValues: S
132
- }), { handleSubmit: D, formState: E } = m, v = f({ control: m.control, name: "contractorType" }), P = f({ control: m.control, name: "wageType" }), F = f({
135
+ [e, d]
136
+ ), m = $({
137
+ resolver: V(g),
138
+ defaultValues: O
139
+ }), { handleSubmit: D, formState: E } = m, h = y({ control: m.control, name: "contractorType" }), P = y({ control: m.control, name: "wageType" }), F = y({
133
140
  control: m.control,
134
- name: "inviteContractor"
135
- }), T = (o) => {
136
- const l = {
141
+ name: "selfOnboarding"
142
+ }), N = (o) => {
143
+ const r = {
137
144
  type: o.contractorType,
138
145
  wageType: o.wageType,
139
- startDate: x(o.startDate) || "",
140
- selfOnboarding: o.inviteContractor,
141
- email: o.inviteContractor ? o.email : void 0,
146
+ startDate: oe(o.startDate) || "",
147
+ selfOnboarding: o.selfOnboarding,
148
+ email: o.selfOnboarding ? o.email : void 0,
142
149
  hourlyRate: o.wageType === n.Hourly ? String(o.hourlyRate) : void 0,
143
150
  isActive: !0
144
151
  };
145
- return o.contractorType === r.Individual ? {
146
- ...l,
152
+ return o.contractorType === i.Individual ? {
153
+ ...r,
147
154
  firstName: o.firstName,
148
155
  middleInitial: o.middleInitial || void 0,
149
156
  lastName: o.lastName,
@@ -151,73 +158,73 @@ function Se({
151
158
  fileNewHireReport: !1
152
159
  // Default value
153
160
  } : {
154
- ...l,
161
+ ...r,
155
162
  fileNewHireReport: !1,
156
163
  // Default value
157
164
  businessName: o.businessName,
158
165
  ein: o.ein?.replace(/-/g, "")
159
166
  };
160
- }, O = (o, l) => ({
161
- ...T(o),
162
- version: l
167
+ }, C = (o, r) => ({
168
+ ...N(o),
169
+ version: r
163
170
  }), B = async (o) => {
164
- await I(o, async (l) => {
171
+ await b(o, async (r) => {
165
172
  let u = e?.uuid;
166
173
  if (e) {
167
174
  if (!e.version)
168
175
  throw new Error("Contractor version is required for updates");
169
- const p = String(e.version), d = O(l, p), W = await b({
176
+ const f = String(e.version), c = C(r, f), q = await S({
170
177
  request: {
171
178
  contractorUuid: u,
172
- requestBody: d
179
+ requestBody: c
173
180
  }
174
181
  });
175
- c(y.CONTRACTOR_UPDATED, W.contractor);
182
+ l(v.CONTRACTOR_UPDATED, q.contractor);
176
183
  } else {
177
- const p = T(l), d = await w({
184
+ const f = N(r), c = await I({
178
185
  request: {
179
- companyUuid: i,
180
- requestBody: p
186
+ companyUuid: a,
187
+ requestBody: f
181
188
  }
182
189
  });
183
- u = d.contractor?.uuid, c(y.CONTRACTOR_CREATED, d.contractor);
190
+ u = c.contractor?.uuid, l(v.CONTRACTOR_CREATED, c.contractor);
184
191
  }
185
- c(y.CONTRACTOR_PROFILE_DONE, {
186
- selfOnboarding: l.inviteContractor,
192
+ l(v.CONTRACTOR_PROFILE_DONE, {
193
+ selfOnboarding: r.selfOnboarding && e?.onboardingStatus !== Q.ADMIN_ONBOARDING_REVIEW,
187
194
  contractorId: u
188
195
  });
189
196
  });
190
- }, H = F, A = v === r.Business, Z = v === r.Individual, U = P === n.Hourly, _ = [
191
- { label: "Individual", value: r.Individual },
192
- { label: "Business", value: r.Business }
193
- ], q = [
197
+ }, A = F, H = h === i.Business, Z = h === i.Individual, _ = P === n.Hourly, M = [
198
+ { label: "Individual", value: i.Individual },
199
+ { label: "Business", value: i.Business }
200
+ ], U = [
194
201
  { label: "Hourly", value: n.Hourly },
195
202
  { label: "Fixed", value: n.Fixed }
196
- ], M = R || C;
203
+ ], W = R || w;
197
204
  return {
198
205
  // Form methods and submission
199
206
  formMethods: m,
200
207
  handleSubmit: D(B),
201
208
  formState: {
202
209
  ...E,
203
- isSubmitting: M
210
+ isSubmitting: W
204
211
  },
205
212
  // Conditional rendering flags
206
- shouldShowEmailField: H,
207
- shouldShowBusinessFields: A,
213
+ shouldShowEmailField: A,
214
+ shouldShowBusinessFields: H,
208
215
  shouldShowIndividualFields: Z,
209
- shouldShowHourlyRate: U,
216
+ shouldShowHourlyRate: _,
210
217
  // Form options
211
- contractorTypeOptions: _,
212
- wageTypeOptions: q,
218
+ contractorTypeOptions: M,
219
+ wageTypeOptions: U,
213
220
  // Component state
214
- isEditing: !!t
221
+ isEditing: !!p
215
222
  };
216
223
  }
217
224
  export {
218
- r as ContractorType,
225
+ i as ContractorType,
219
226
  n as WageType,
220
- se as createContractorProfileValidationSchema,
221
- Se as useContractorProfile
227
+ te as createContractorProfileValidationSchema,
228
+ Ee as useContractorProfile
222
229
  };
223
230
  //# sourceMappingURL=useContractorProfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useContractorProfile.js","sources":["../../../../src/components/Contractor/Profile/useContractorProfile.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { SubmitHandler } from 'react-hook-form'\nimport { useForm, useWatch } from 'react-hook-form'\nimport { z } from 'zod'\nimport { useContractorsCreateMutation } from '@gusto/embedded-api/react-query/contractorsCreate'\nimport { useContractorsUpdateMutation } from '@gusto/embedded-api/react-query/contractorsUpdate'\nimport type { PostV1CompaniesCompanyUuidContractorsRequestBody } from '@gusto/embedded-api/models/operations/postv1companiescompanyuuidcontractors'\nimport type { PutV1ContractorsContractorUuidRequestBody } from '@gusto/embedded-api/models/operations/putv1contractorscontractoruuid'\nimport {\n WageType as ApiWageType,\n ContractorType as ApiContractorType,\n type Contractor,\n} from '@gusto/embedded-api/models/components/contractor'\nimport { useBase } from '@/components/Base'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { SSN_REGEX, NAME_REGEX } from '@/helpers/validations'\nimport { removeNonDigits } from '@/helpers/formattedStrings'\nimport { formatDateToStringDate } from '@/helpers/dateFormatting'\nimport { normalizeEin } from '@/helpers/federalEin'\n\n// Re-export the API types for convenience\nexport const WageType = ApiWageType\nexport const ContractorType = ApiContractorType\n\n// Form schema definition - exported for use in stories and tests\nconst ContractorProfileSchema = z.object({\n // Self-onboarding toggle\n inviteContractor: z.boolean().default(false),\n email: z.string().email().optional(),\n\n // Required contractor fields\n contractorType: z.enum([ContractorType.Individual, ContractorType.Business]),\n wageType: z.enum([WageType.Hourly, WageType.Fixed]),\n startDate: z.date(),\n\n // Individual contractor fields\n firstName: z.string().min(1).regex(NAME_REGEX).optional(),\n middleInitial: z.string().optional(),\n lastName: z.string().min(1).regex(NAME_REGEX).optional(),\n ssn: z.string().optional(),\n\n // Business contractor fields\n businessName: z.string().optional(),\n ein: z.string().optional(),\n\n // Wage fields\n hourlyRate: z.number().min(0).optional(),\n})\n\nexport type ContractorProfileFormData = z.infer<typeof ContractorProfileSchema>\n\n// Create validation schema - exported for stories\nexport const createContractorProfileValidationSchema = (t: (key: string) => string) => {\n return ContractorProfileSchema.superRefine(\n (data: ContractorProfileFormData, ctx: z.RefinementCtx) => {\n // Email validation for contractor invitation\n if (data.inviteContractor && !data.email) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['email'],\n message: t('validations.email'),\n })\n }\n\n // Individual contractor validations\n if (data.contractorType === ContractorType.Individual) {\n if (!data.firstName) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['firstName'],\n message: t('validations.firstName'),\n })\n }\n\n if (!data.lastName) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['lastName'],\n message: t('validations.lastName'),\n })\n }\n\n if (!data.ssn) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['ssn'],\n message: t('validations.ssn'),\n })\n } else {\n // Validate SSN format\n const cleanSSN = removeNonDigits(data.ssn)\n if (!SSN_REGEX.test(cleanSSN)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['ssn'],\n message: t('validations.ssnFormat'),\n })\n }\n }\n }\n\n // Business contractor validations\n if (data.contractorType === ContractorType.Business) {\n if (!data.businessName) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['businessName'],\n message: t('validations.businessName'),\n })\n }\n\n if (!data.ein) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['ein'],\n message: t('validations.ein'),\n })\n } else {\n // Validate EIN format after normalization (XX-XXXXXXX)\n const normalizedEin = normalizeEin(data.ein)\n if (!/^\\d{2}-\\d{7}$/.test(normalizedEin)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['ein'],\n message: t('validations.einFormat'),\n })\n }\n }\n }\n\n // Hourly rate validation for hourly contractors\n if (data.wageType === WageType.Hourly) {\n if (data.hourlyRate === undefined || data.hourlyRate < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['hourlyRate'],\n message: t('validations.hourlyRate'),\n })\n }\n }\n },\n )\n}\n\nexport interface UseContractorProfileProps {\n companyId: string\n contractorId?: string\n defaultValues?: Partial<ContractorProfileFormData>\n existingContractor?: Contractor\n}\n\nexport function useContractorProfile({\n companyId,\n contractorId,\n defaultValues,\n existingContractor,\n}: UseContractorProfileProps) {\n useI18n('Contractor.Profile')\n const { t } = useTranslation('Contractor.Profile')\n const { onEvent, baseSubmitHandler } = useBase()\n\n // Create validation schema with translations\n const validationSchema = createContractorProfileValidationSchema(t as (key: string) => string)\n\n // API mutations\n const { mutateAsync: createContractor, isPending: isCreating } = useContractorsCreateMutation()\n const { mutateAsync: updateContractor, isPending: isUpdating } = useContractorsUpdateMutation()\n\n // Prepare default values from existing contractor or provided defaults\n const formDefaultValues = useMemo(\n () => ({\n inviteContractor: false,\n contractorType: ContractorType.Business,\n wageType: WageType.Fixed,\n startDate: new Date(),\n ...defaultValues,\n // Override with existing contractor data if available\n ...(existingContractor && {\n contractorType: existingContractor.type || ContractorType.Business,\n wageType: existingContractor.wageType || WageType.Fixed,\n startDate: existingContractor.startDate\n ? new Date(existingContractor.startDate)\n : new Date(),\n firstName: existingContractor.firstName || undefined,\n middleInitial: existingContractor.middleInitial || undefined,\n lastName: existingContractor.lastName || undefined,\n businessName: existingContractor.businessName || undefined,\n ein: existingContractor.ein || undefined,\n email: existingContractor.email || undefined,\n hourlyRate: existingContractor.hourlyRate\n ? (() => {\n const parsed = parseFloat(existingContractor.hourlyRate)\n return isNaN(parsed) ? undefined : parsed\n })()\n : undefined,\n }),\n }),\n [existingContractor, defaultValues],\n )\n\n // Form setup\n const formMethods = useForm<ContractorProfileFormData>({\n resolver: zodResolver(validationSchema),\n defaultValues: formDefaultValues,\n })\n\n const { handleSubmit, formState } = formMethods\n\n // Watch form values for conditional rendering\n const watchedType = useWatch({ control: formMethods.control, name: 'contractorType' })\n const watchedWageType = useWatch({ control: formMethods.control, name: 'wageType' })\n const watchedInviteContractor = useWatch({\n control: formMethods.control,\n name: 'inviteContractor',\n })\n\n // Helper function to transform form data to API payload\n const transformFormDataToCreatePayload = (\n data: ContractorProfileFormData,\n ): PostV1CompaniesCompanyUuidContractorsRequestBody => {\n const basePayload = {\n type: data.contractorType,\n wageType: data.wageType,\n startDate: formatDateToStringDate(data.startDate) || '',\n selfOnboarding: data.inviteContractor,\n email: data.inviteContractor ? data.email : undefined,\n hourlyRate: data.wageType === WageType.Hourly ? String(data.hourlyRate) : undefined,\n isActive: true,\n }\n\n if (data.contractorType === ContractorType.Individual) {\n return {\n ...basePayload,\n firstName: data.firstName,\n middleInitial: data.middleInitial || undefined,\n lastName: data.lastName,\n ssn: data.ssn,\n fileNewHireReport: false, // Default value\n }\n } else {\n return {\n ...basePayload,\n fileNewHireReport: false, // Default value\n businessName: data.businessName,\n ein: data.ein?.replace(/-/g, ''),\n }\n }\n }\n\n const transformFormDataToUpdatePayload = (\n data: ContractorProfileFormData,\n version: string,\n ): PutV1ContractorsContractorUuidRequestBody => {\n const createPayload = transformFormDataToCreatePayload(data)\n return {\n ...createPayload,\n version,\n }\n }\n\n // Event handlers\n const onSubmit: SubmitHandler<ContractorProfileFormData> = async data => {\n await baseSubmitHandler(data, async payload => {\n let contractorId = existingContractor?.uuid\n if (existingContractor) {\n // Update existing contractor\n if (!existingContractor.version) {\n throw new Error('Contractor version is required for updates')\n }\n const version = String(existingContractor.version)\n const apiPayload = transformFormDataToUpdatePayload(payload, version)\n\n const updateResponse = await updateContractor({\n request: {\n contractorUuid: contractorId!,\n requestBody: apiPayload,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_UPDATED, updateResponse.contractor)\n } else {\n // Create new contractor\n const apiPayload = transformFormDataToCreatePayload(payload)\n\n const createResponse = await createContractor({\n request: {\n companyUuid: companyId,\n requestBody: apiPayload,\n },\n })\n\n contractorId = createResponse.contractor?.uuid\n onEvent(componentEvents.CONTRACTOR_CREATED, createResponse.contractor)\n }\n\n onEvent(componentEvents.CONTRACTOR_PROFILE_DONE, {\n selfOnboarding: payload.inviteContractor,\n contractorId,\n })\n })\n }\n\n // Conditional rendering helpers\n const shouldShowEmailField = watchedInviteContractor\n const shouldShowBusinessFields = watchedType === ContractorType.Business\n const shouldShowIndividualFields = watchedType === ContractorType.Individual\n const shouldShowHourlyRate = watchedWageType === WageType.Hourly\n\n // Form field options\n const contractorTypeOptions = [\n { label: 'Individual', value: ContractorType.Individual },\n { label: 'Business', value: ContractorType.Business },\n ]\n\n const wageTypeOptions = [\n { label: 'Hourly', value: WageType.Hourly },\n { label: 'Fixed', value: WageType.Fixed },\n ]\n\n // Determine if we're currently submitting (creating or updating)\n const isSubmitting = isCreating || isUpdating\n // Return only what the component actually needs\n return {\n // Form methods and submission\n formMethods,\n handleSubmit: handleSubmit(onSubmit),\n formState: {\n ...formState,\n isSubmitting,\n },\n\n // Conditional rendering flags\n shouldShowEmailField,\n shouldShowBusinessFields,\n shouldShowIndividualFields,\n shouldShowHourlyRate,\n\n // Form options\n contractorTypeOptions,\n wageTypeOptions,\n\n // Component state\n isEditing: !!contractorId,\n }\n}\n"],"names":["WageType","ApiWageType","ContractorType","ApiContractorType","ContractorProfileSchema","z","NAME_REGEX","createContractorProfileValidationSchema","t","data","ctx","cleanSSN","removeNonDigits","SSN_REGEX","normalizedEin","normalizeEin","useContractorProfile","companyId","contractorId","defaultValues","existingContractor","useI18n","useTranslation","onEvent","baseSubmitHandler","useBase","validationSchema","createContractor","isCreating","useContractorsCreateMutation","updateContractor","isUpdating","useContractorsUpdateMutation","formDefaultValues","useMemo","parsed","formMethods","useForm","zodResolver","handleSubmit","formState","watchedType","useWatch","watchedWageType","watchedInviteContractor","transformFormDataToCreatePayload","basePayload","formatDateToStringDate","transformFormDataToUpdatePayload","version","onSubmit","payload","apiPayload","updateResponse","componentEvents","createResponse","shouldShowEmailField","shouldShowBusinessFields","shouldShowIndividualFields","shouldShowHourlyRate","contractorTypeOptions","wageTypeOptions","isSubmitting"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAwBO,MAAMA,IAAWC,GACXC,IAAiBC,GAGxBC,KAA0BC,EAAE,OAAO;AAAA;AAAA,EAEvC,kBAAkBA,EAAE,UAAU,QAAQ,EAAK;AAAA,EAC3C,OAAOA,EAAE,OAAA,EAAS,MAAA,EAAQ,SAAA;AAAA;AAAA,EAG1B,gBAAgBA,EAAE,KAAK,CAACH,EAAe,YAAYA,EAAe,QAAQ,CAAC;AAAA,EAC3E,UAAUG,EAAE,KAAK,CAACL,EAAS,QAAQA,EAAS,KAAK,CAAC;AAAA,EAClD,WAAWK,EAAE,KAAA;AAAA;AAAA,EAGb,WAAWA,EAAE,OAAA,EAAS,IAAI,CAAC,EAAE,MAAMC,CAAU,EAAE,SAAA;AAAA,EAC/C,eAAeD,EAAE,OAAA,EAAS,SAAA;AAAA,EAC1B,UAAUA,EAAE,OAAA,EAAS,IAAI,CAAC,EAAE,MAAMC,CAAU,EAAE,SAAA;AAAA,EAC9C,KAAKD,EAAE,OAAA,EAAS,SAAA;AAAA;AAAA,EAGhB,cAAcA,EAAE,OAAA,EAAS,SAAA;AAAA,EACzB,KAAKA,EAAE,OAAA,EAAS,SAAA;AAAA;AAAA,EAGhB,YAAYA,EAAE,OAAA,EAAS,IAAI,CAAC,EAAE,SAAA;AAChC,CAAC,GAKYE,KAA0C,CAACC,MAC/CJ,GAAwB;AAAA,EAC7B,CAACK,GAAiCC,MAAyB;AAWzD,QATID,EAAK,oBAAoB,CAACA,EAAK,SACjCC,EAAI,SAAS;AAAA,MACX,MAAML,EAAE,aAAa;AAAA,MACrB,MAAM,CAAC,OAAO;AAAA,MACd,SAASG,EAAE,mBAAmB;AAAA,IAAA,CAC/B,GAICC,EAAK,mBAAmBP,EAAe;AAiBzC,UAhBKO,EAAK,aACRC,EAAI,SAAS;AAAA,QACX,MAAML,EAAE,aAAa;AAAA,QACrB,MAAM,CAAC,WAAW;AAAA,QAClB,SAASG,EAAE,uBAAuB;AAAA,MAAA,CACnC,GAGEC,EAAK,YACRC,EAAI,SAAS;AAAA,QACX,MAAML,EAAE,aAAa;AAAA,QACrB,MAAM,CAAC,UAAU;AAAA,QACjB,SAASG,EAAE,sBAAsB;AAAA,MAAA,CAClC,GAGC,CAACC,EAAK;AACR,QAAAC,EAAI,SAAS;AAAA,UACX,MAAML,EAAE,aAAa;AAAA,UACrB,MAAM,CAAC,KAAK;AAAA,UACZ,SAASG,EAAE,iBAAiB;AAAA,QAAA,CAC7B;AAAA,WACI;AAEL,cAAMG,IAAWC,EAAgBH,EAAK,GAAG;AACzC,QAAKI,EAAU,KAAKF,CAAQ,KAC1BD,EAAI,SAAS;AAAA,UACX,MAAML,EAAE,aAAa;AAAA,UACrB,MAAM,CAAC,KAAK;AAAA,UACZ,SAASG,EAAE,uBAAuB;AAAA,QAAA,CACnC;AAAA,MAEL;AAIF,QAAIC,EAAK,mBAAmBP,EAAe;AASzC,UARKO,EAAK,gBACRC,EAAI,SAAS;AAAA,QACX,MAAML,EAAE,aAAa;AAAA,QACrB,MAAM,CAAC,cAAc;AAAA,QACrB,SAASG,EAAE,0BAA0B;AAAA,MAAA,CACtC,GAGC,CAACC,EAAK;AACR,QAAAC,EAAI,SAAS;AAAA,UACX,MAAML,EAAE,aAAa;AAAA,UACrB,MAAM,CAAC,KAAK;AAAA,UACZ,SAASG,EAAE,iBAAiB;AAAA,QAAA,CAC7B;AAAA,WACI;AAEL,cAAMM,IAAgBC,GAAaN,EAAK,GAAG;AAC3C,QAAK,gBAAgB,KAAKK,CAAa,KACrCJ,EAAI,SAAS;AAAA,UACX,MAAML,EAAE,aAAa;AAAA,UACrB,MAAM,CAAC,KAAK;AAAA,UACZ,SAASG,EAAE,uBAAuB;AAAA,QAAA,CACnC;AAAA,MAEL;AAIF,IAAIC,EAAK,aAAaT,EAAS,WACzBS,EAAK,eAAe,UAAaA,EAAK,aAAa,MACrDC,EAAI,SAAS;AAAA,MACX,MAAML,EAAE,aAAa;AAAA,MACrB,MAAM,CAAC,YAAY;AAAA,MACnB,SAASG,EAAE,wBAAwB;AAAA,IAAA,CACpC;AAAA,EAGP;AAAA;AAWG,SAASQ,GAAqB;AAAA,EACnC,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,oBAAAC;AACF,GAA8B;AAC5B,EAAAC,EAAQ,oBAAoB;AAC5B,QAAM,EAAE,GAAAb,EAAA,IAAMc,EAAe,oBAAoB,GAC3C,EAAE,SAAAC,GAAS,mBAAAC,EAAA,IAAsBC,EAAA,GAGjCC,IAAmBnB,GAAwCC,CAA4B,GAGvF,EAAE,aAAamB,GAAkB,WAAWC,EAAA,IAAeC,EAAA,GAC3D,EAAE,aAAaC,GAAkB,WAAWC,EAAA,IAAeC,EAAA,GAG3DC,IAAoBC;AAAA,IACxB,OAAO;AAAA,MACL,kBAAkB;AAAA,MAClB,gBAAgBhC,EAAe;AAAA,MAC/B,UAAUF,EAAS;AAAA,MACnB,+BAAe,KAAA;AAAA,MACf,GAAGmB;AAAA;AAAA,MAEH,GAAIC,KAAsB;AAAA,QACxB,gBAAgBA,EAAmB,QAAQlB,EAAe;AAAA,QAC1D,UAAUkB,EAAmB,YAAYpB,EAAS;AAAA,QAClD,WAAWoB,EAAmB,YAC1B,IAAI,KAAKA,EAAmB,SAAS,IACrC,oBAAI,KAAA;AAAA,QACR,WAAWA,EAAmB,aAAa;AAAA,QAC3C,eAAeA,EAAmB,iBAAiB;AAAA,QACnD,UAAUA,EAAmB,YAAY;AAAA,QACzC,cAAcA,EAAmB,gBAAgB;AAAA,QACjD,KAAKA,EAAmB,OAAO;AAAA,QAC/B,OAAOA,EAAmB,SAAS;AAAA,QACnC,YAAYA,EAAmB,cAC1B,MAAM;AACL,gBAAMe,IAAS,WAAWf,EAAmB,UAAU;AACvD,iBAAO,MAAMe,CAAM,IAAI,SAAYA;AAAA,QACrC,OACA;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,CAACf,GAAoBD,CAAa;AAAA,EAAA,GAI9BiB,IAAcC,EAAmC;AAAA,IACrD,UAAUC,EAAYZ,CAAgB;AAAA,IACtC,eAAeO;AAAA,EAAA,CAChB,GAEK,EAAE,cAAAM,GAAc,WAAAC,EAAA,IAAcJ,GAG9BK,IAAcC,EAAS,EAAE,SAASN,EAAY,SAAS,MAAM,kBAAkB,GAC/EO,IAAkBD,EAAS,EAAE,SAASN,EAAY,SAAS,MAAM,YAAY,GAC7EQ,IAA0BF,EAAS;AAAA,IACvC,SAASN,EAAY;AAAA,IACrB,MAAM;AAAA,EAAA,CACP,GAGKS,IAAmC,CACvCpC,MACqD;AACrD,UAAMqC,IAAc;AAAA,MAClB,MAAMrC,EAAK;AAAA,MACX,UAAUA,EAAK;AAAA,MACf,WAAWsC,EAAuBtC,EAAK,SAAS,KAAK;AAAA,MACrD,gBAAgBA,EAAK;AAAA,MACrB,OAAOA,EAAK,mBAAmBA,EAAK,QAAQ;AAAA,MAC5C,YAAYA,EAAK,aAAaT,EAAS,SAAS,OAAOS,EAAK,UAAU,IAAI;AAAA,MAC1E,UAAU;AAAA,IAAA;AAGZ,WAAIA,EAAK,mBAAmBP,EAAe,aAClC;AAAA,MACL,GAAG4C;AAAA,MACH,WAAWrC,EAAK;AAAA,MAChB,eAAeA,EAAK,iBAAiB;AAAA,MACrC,UAAUA,EAAK;AAAA,MACf,KAAKA,EAAK;AAAA,MACV,mBAAmB;AAAA;AAAA,IAAA,IAGd;AAAA,MACL,GAAGqC;AAAA,MACH,mBAAmB;AAAA;AAAA,MACnB,cAAcrC,EAAK;AAAA,MACnB,KAAKA,EAAK,KAAK,QAAQ,MAAM,EAAE;AAAA,IAAA;AAAA,EAGrC,GAEMuC,IAAmC,CACvCvC,GACAwC,OAGO;AAAA,IACL,GAFoBJ,EAAiCpC,CAAI;AAAA,IAGzD,SAAAwC;AAAA,EAAA,IAKEC,IAAqD,OAAMzC,MAAQ;AACvE,UAAMe,EAAkBf,GAAM,OAAM0C,MAAW;AAC7C,UAAIjC,IAAeE,GAAoB;AACvC,UAAIA,GAAoB;AAEtB,YAAI,CAACA,EAAmB;AACtB,gBAAM,IAAI,MAAM,4CAA4C;AAE9D,cAAM6B,IAAU,OAAO7B,EAAmB,OAAO,GAC3CgC,IAAaJ,EAAiCG,GAASF,CAAO,GAE9DI,IAAiB,MAAMvB,EAAiB;AAAA,UAC5C,SAAS;AAAA,YACP,gBAAgBZ;AAAAA,YAChB,aAAakC;AAAA,UAAA;AAAA,QACf,CACD;AAED,QAAA7B,EAAQ+B,EAAgB,oBAAoBD,EAAe,UAAU;AAAA,MACvE,OAAO;AAEL,cAAMD,IAAaP,EAAiCM,CAAO,GAErDI,IAAiB,MAAM5B,EAAiB;AAAA,UAC5C,SAAS;AAAA,YACP,aAAaV;AAAA,YACb,aAAamC;AAAA,UAAA;AAAA,QACf,CACD;AAEDlC,QAAAA,IAAeqC,EAAe,YAAY,MAC1ChC,EAAQ+B,EAAgB,oBAAoBC,EAAe,UAAU;AAAA,MACvE;AAEA,MAAAhC,EAAQ+B,EAAgB,yBAAyB;AAAA,QAC/C,gBAAgBH,EAAQ;AAAA,QACxB,cAAAjC;AAAAA,MAAA,CACD;AAAA,IACH,CAAC;AAAA,EACH,GAGMsC,IAAuBZ,GACvBa,IAA2BhB,MAAgBvC,EAAe,UAC1DwD,IAA6BjB,MAAgBvC,EAAe,YAC5DyD,IAAuBhB,MAAoB3C,EAAS,QAGpD4D,IAAwB;AAAA,IAC5B,EAAE,OAAO,cAAc,OAAO1D,EAAe,WAAA;AAAA,IAC7C,EAAE,OAAO,YAAY,OAAOA,EAAe,SAAA;AAAA,EAAS,GAGhD2D,IAAkB;AAAA,IACtB,EAAE,OAAO,UAAU,OAAO7D,EAAS,OAAA;AAAA,IACnC,EAAE,OAAO,SAAS,OAAOA,EAAS,MAAA;AAAA,EAAM,GAIpC8D,IAAelC,KAAcG;AAEnC,SAAO;AAAA;AAAA,IAEL,aAAAK;AAAA,IACA,cAAcG,EAAaW,CAAQ;AAAA,IACnC,WAAW;AAAA,MACT,GAAGV;AAAA,MACH,cAAAsB;AAAA,IAAA;AAAA;AAAA,IAIF,sBAAAN;AAAA,IACA,0BAAAC;AAAA,IACA,4BAAAC;AAAA,IACA,sBAAAC;AAAA;AAAA,IAGA,uBAAAC;AAAA,IACA,iBAAAC;AAAA;AAAA,IAGA,WAAW,CAAC,CAAC3C;AAAA,EAAA;AAEjB;"}
1
+ {"version":3,"file":"useContractorProfile.js","sources":["../../../../src/components/Contractor/Profile/useContractorProfile.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { SubmitHandler } from 'react-hook-form'\nimport { useForm, useWatch } from 'react-hook-form'\nimport { z } from 'zod'\nimport { useContractorsCreateMutation } from '@gusto/embedded-api/react-query/contractorsCreate'\nimport { useContractorsUpdateMutation } from '@gusto/embedded-api/react-query/contractorsUpdate'\nimport type { PostV1CompaniesCompanyUuidContractorsRequestBody } from '@gusto/embedded-api/models/operations/postv1companiescompanyuuidcontractors'\nimport type { PutV1ContractorsContractorUuidRequestBody } from '@gusto/embedded-api/models/operations/putv1contractorscontractoruuid'\nimport {\n WageType as ApiWageType,\n ContractorType as ApiContractorType,\n type Contractor,\n} from '@gusto/embedded-api/models/components/contractor'\nimport { useBase } from '@/components/Base'\nimport { useI18n } from '@/i18n'\nimport {\n componentEvents,\n ContractorOnboardingStatus,\n ContractorSelfOnboardingStatuses,\n} from '@/shared/constants'\nimport { SSN_REGEX, NAME_REGEX } from '@/helpers/validations'\nimport { removeNonDigits } from '@/helpers/formattedStrings'\nimport { formatDateToStringDate } from '@/helpers/dateFormatting'\nimport { normalizeEin } from '@/helpers/federalEin'\n\n// Re-export the API types for convenience\nexport const WageType = ApiWageType\nexport const ContractorType = ApiContractorType\n\n// Form schema definition - exported for use in stories and tests\nconst ContractorProfileSchema = z.object({\n // Self-onboarding toggle\n selfOnboarding: z.boolean().default(false),\n email: z.string().email().optional(),\n\n // Required contractor fields\n contractorType: z.enum([ContractorType.Individual, ContractorType.Business]),\n wageType: z.enum([WageType.Hourly, WageType.Fixed]),\n startDate: z.date(),\n\n // Individual contractor fields\n firstName: z.string().min(1).regex(NAME_REGEX).optional(),\n middleInitial: z.string().optional(),\n lastName: z.string().min(1).regex(NAME_REGEX).optional(),\n ssn: z.string().optional(),\n\n // Business contractor fields\n businessName: z.string().optional(),\n ein: z.string().optional(),\n\n // Wage fields\n hourlyRate: z.number().min(0).optional(),\n})\n\nexport type ContractorProfileFormData = z.infer<typeof ContractorProfileSchema>\n\n// Create validation schema - exported for stories\nexport const createContractorProfileValidationSchema = (\n t: (key: string) => string,\n hasSsn: boolean,\n hasEin: boolean,\n) => {\n return ContractorProfileSchema.superRefine(\n (data: ContractorProfileFormData, ctx: z.RefinementCtx) => {\n // Email validation for contractor invitation\n if (data.selfOnboarding && !data.email) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['email'],\n message: t('validations.email'),\n })\n }\n\n // Individual contractor validations\n if (data.contractorType === ContractorType.Individual) {\n if (!data.firstName) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['firstName'],\n message: t('validations.firstName'),\n })\n }\n\n if (!data.lastName) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['lastName'],\n message: t('validations.lastName'),\n })\n }\n\n if (!data.ssn) {\n if (!hasSsn) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['ssn'],\n message: t('validations.ssn'),\n })\n }\n } else {\n // Validate SSN format\n const cleanSSN = removeNonDigits(data.ssn)\n if (!SSN_REGEX.test(cleanSSN)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['ssn'],\n message: t('validations.ssnFormat'),\n })\n }\n }\n }\n\n // Business contractor validations\n if (data.contractorType === ContractorType.Business) {\n if (!data.businessName) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['businessName'],\n message: t('validations.businessName'),\n })\n }\n\n if (!data.ein) {\n if (!hasEin) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['ein'],\n message: t('validations.ein'),\n })\n }\n } else {\n // Validate EIN format after normalization (XX-XXXXXXX)\n const normalizedEin = normalizeEin(data.ein)\n if (!/^\\d{2}-\\d{7}$/.test(normalizedEin)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['ein'],\n message: t('validations.einFormat'),\n })\n }\n }\n }\n\n // Hourly rate validation for hourly contractors\n if (data.wageType === WageType.Hourly) {\n if (data.hourlyRate === undefined || data.hourlyRate < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['hourlyRate'],\n message: t('validations.hourlyRate'),\n })\n }\n }\n },\n )\n}\n\nexport interface UseContractorProfileProps {\n companyId: string\n contractorId?: string\n defaultValues?: Partial<ContractorProfileFormData>\n existingContractor?: Contractor\n}\n\nexport function useContractorProfile({\n companyId,\n contractorId,\n defaultValues,\n existingContractor,\n}: UseContractorProfileProps) {\n useI18n('Contractor.Profile')\n const { t } = useTranslation('Contractor.Profile')\n const { onEvent, baseSubmitHandler } = useBase()\n\n // Create validation schema with translations\n const validationSchema = createContractorProfileValidationSchema(\n t as (key: string) => string,\n existingContractor?.hasSsn ?? false,\n existingContractor?.hasEin ?? false,\n )\n\n // API mutations\n const { mutateAsync: createContractor, isPending: isCreating } = useContractorsCreateMutation()\n const { mutateAsync: updateContractor, isPending: isUpdating } = useContractorsUpdateMutation()\n\n // Prepare default values from existing contractor or provided defaults\n const formDefaultValues = useMemo(\n () => ({\n selfOnboarding: false,\n contractorType: ContractorType.Business,\n wageType: WageType.Fixed,\n startDate: new Date(),\n ...defaultValues,\n // Override with existing contractor data if available\n ...(existingContractor && {\n selfOnboarding: existingContractor.onboardingStatus\n ? // @ts-expect-error: onboarding_status during runtime can be one of self onboarding statuses\n ContractorSelfOnboardingStatuses.has(existingContractor.onboardingStatus)\n : false,\n contractorType: existingContractor.type || ContractorType.Business,\n wageType: existingContractor.wageType || WageType.Fixed,\n startDate: existingContractor.startDate\n ? new Date(existingContractor.startDate)\n : new Date(),\n firstName: existingContractor.firstName || undefined,\n middleInitial: existingContractor.middleInitial || undefined,\n lastName: existingContractor.lastName || undefined,\n businessName: existingContractor.businessName || undefined,\n email: existingContractor.email || undefined,\n hourlyRate: existingContractor.hourlyRate\n ? (() => {\n const parsed = parseFloat(existingContractor.hourlyRate)\n return isNaN(parsed) ? undefined : parsed\n })()\n : undefined,\n }),\n }),\n [existingContractor, defaultValues],\n )\n\n // Form setup\n const formMethods = useForm<ContractorProfileFormData>({\n resolver: zodResolver(validationSchema),\n defaultValues: formDefaultValues,\n })\n\n const { handleSubmit, formState } = formMethods\n\n // Watch form values for conditional rendering\n const watchedType = useWatch({ control: formMethods.control, name: 'contractorType' })\n const watchedWageType = useWatch({ control: formMethods.control, name: 'wageType' })\n const watchedSelfOnboarding = useWatch({\n control: formMethods.control,\n name: 'selfOnboarding',\n })\n\n // Helper function to transform form data to API payload\n const transformFormDataToCreatePayload = (\n data: ContractorProfileFormData,\n ): PostV1CompaniesCompanyUuidContractorsRequestBody => {\n const basePayload = {\n type: data.contractorType,\n wageType: data.wageType,\n startDate: formatDateToStringDate(data.startDate) || '',\n selfOnboarding: data.selfOnboarding,\n email: data.selfOnboarding ? data.email : undefined,\n hourlyRate: data.wageType === WageType.Hourly ? String(data.hourlyRate) : undefined,\n isActive: true,\n }\n\n if (data.contractorType === ContractorType.Individual) {\n return {\n ...basePayload,\n firstName: data.firstName,\n middleInitial: data.middleInitial || undefined,\n lastName: data.lastName,\n ssn: data.ssn,\n fileNewHireReport: false, // Default value\n }\n } else {\n return {\n ...basePayload,\n fileNewHireReport: false, // Default value\n businessName: data.businessName,\n ein: data.ein?.replace(/-/g, ''),\n }\n }\n }\n\n const transformFormDataToUpdatePayload = (\n data: ContractorProfileFormData,\n version: string,\n ): PutV1ContractorsContractorUuidRequestBody => {\n const createPayload = transformFormDataToCreatePayload(data)\n return {\n ...createPayload,\n version,\n }\n }\n\n // Event handlers\n const onSubmit: SubmitHandler<ContractorProfileFormData> = async data => {\n await baseSubmitHandler(data, async payload => {\n let contractorId = existingContractor?.uuid\n if (existingContractor) {\n // Update existing contractor\n if (!existingContractor.version) {\n throw new Error('Contractor version is required for updates')\n }\n const version = String(existingContractor.version)\n const apiPayload = transformFormDataToUpdatePayload(payload, version)\n\n const updateResponse = await updateContractor({\n request: {\n contractorUuid: contractorId!,\n requestBody: apiPayload,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_UPDATED, updateResponse.contractor)\n } else {\n // Create new contractor\n const apiPayload = transformFormDataToCreatePayload(payload)\n\n const createResponse = await createContractor({\n request: {\n companyUuid: companyId,\n requestBody: apiPayload,\n },\n })\n\n contractorId = createResponse.contractor?.uuid\n onEvent(componentEvents.CONTRACTOR_CREATED, createResponse.contractor)\n }\n\n onEvent(componentEvents.CONTRACTOR_PROFILE_DONE, {\n selfOnboarding:\n payload.selfOnboarding &&\n existingContractor?.onboardingStatus !==\n ContractorOnboardingStatus.ADMIN_ONBOARDING_REVIEW,\n contractorId,\n })\n })\n }\n\n // Conditional rendering helpers\n const shouldShowEmailField = watchedSelfOnboarding\n const shouldShowBusinessFields = watchedType === ContractorType.Business\n const shouldShowIndividualFields = watchedType === ContractorType.Individual\n const shouldShowHourlyRate = watchedWageType === WageType.Hourly\n\n // Form field options\n const contractorTypeOptions = [\n { label: 'Individual', value: ContractorType.Individual },\n { label: 'Business', value: ContractorType.Business },\n ]\n\n const wageTypeOptions = [\n { label: 'Hourly', value: WageType.Hourly },\n { label: 'Fixed', value: WageType.Fixed },\n ]\n\n // Determine if we're currently submitting (creating or updating)\n const isSubmitting = isCreating || isUpdating\n // Return only what the component actually needs\n return {\n // Form methods and submission\n formMethods,\n handleSubmit: handleSubmit(onSubmit),\n formState: {\n ...formState,\n isSubmitting,\n },\n\n // Conditional rendering flags\n shouldShowEmailField,\n shouldShowBusinessFields,\n shouldShowIndividualFields,\n shouldShowHourlyRate,\n\n // Form options\n contractorTypeOptions,\n wageTypeOptions,\n\n // Component state\n isEditing: !!contractorId,\n }\n}\n"],"names":["WageType","ApiWageType","ContractorType","ApiContractorType","ContractorProfileSchema","z","NAME_REGEX","createContractorProfileValidationSchema","t","hasSsn","hasEin","data","ctx","cleanSSN","removeNonDigits","SSN_REGEX","normalizedEin","normalizeEin","useContractorProfile","companyId","contractorId","defaultValues","existingContractor","useI18n","useTranslation","onEvent","baseSubmitHandler","useBase","validationSchema","createContractor","isCreating","useContractorsCreateMutation","updateContractor","isUpdating","useContractorsUpdateMutation","formDefaultValues","useMemo","ContractorSelfOnboardingStatuses","parsed","formMethods","useForm","zodResolver","handleSubmit","formState","watchedType","useWatch","watchedWageType","watchedSelfOnboarding","transformFormDataToCreatePayload","basePayload","formatDateToStringDate","transformFormDataToUpdatePayload","version","onSubmit","payload","apiPayload","updateResponse","componentEvents","createResponse","ContractorOnboardingStatus","shouldShowEmailField","shouldShowBusinessFields","shouldShowIndividualFields","shouldShowHourlyRate","contractorTypeOptions","wageTypeOptions","isSubmitting"],"mappings":"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"}