@gusto/embedded-react-sdk 0.12.3 → 0.13.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 (212) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/_virtual/dynamic-import-helper.js +8 -1
  3. package/dist/_virtual/dynamic-import-helper.js.map +1 -1
  4. package/dist/assets/icons/spinner_small.svg.js +10 -0
  5. package/dist/assets/icons/spinner_small.svg.js.map +1 -0
  6. package/dist/components/Base/Base.js +28 -27
  7. package/dist/components/Base/Base.js.map +1 -1
  8. package/dist/components/Base/useBase.d.ts +2 -0
  9. package/dist/components/Base/useBase.js.map +1 -1
  10. package/dist/components/Common/DataView/DataView.d.ts +2 -1
  11. package/dist/components/Common/DataView/DataView.js +20 -19
  12. package/dist/components/Common/DataView/DataView.js.map +1 -1
  13. package/dist/components/Common/DataView/useDataView.d.ts +3 -1
  14. package/dist/components/Common/DataView/useDataView.js +13 -11
  15. package/dist/components/Common/DataView/useDataView.js.map +1 -1
  16. package/dist/components/Common/EmptyData/EmptyData.module.scss.js +1 -1
  17. package/dist/components/Common/FieldDescription/FieldDescription.js +7 -14
  18. package/dist/components/Common/FieldDescription/FieldDescription.js.map +1 -1
  19. package/dist/components/Common/Fields/hooks/useField.d.ts +4 -1
  20. package/dist/components/Common/Fields/hooks/useField.js +31 -24
  21. package/dist/components/Common/Fields/hooks/useField.js.map +1 -1
  22. package/dist/components/Common/InlineSpinner/InlineSpinner.d.ts +6 -0
  23. package/dist/components/Common/InlineSpinner/InlineSpinner.js +25 -0
  24. package/dist/components/Common/InlineSpinner/InlineSpinner.js.map +1 -0
  25. package/dist/components/Common/InlineSpinner/InlineSpinner.module.scss.js +10 -0
  26. package/dist/components/Common/InlineSpinner/InlineSpinner.module.scss.js.map +1 -0
  27. package/dist/components/Common/InlineSpinner/index.d.ts +2 -0
  28. package/dist/components/Common/PaginationControl/PaginationControl.js +31 -28
  29. package/dist/components/Common/PaginationControl/PaginationControl.js.map +1 -1
  30. package/dist/components/Common/PaginationControl/PaginationControlTypes.d.ts +1 -0
  31. package/dist/components/Common/SignatureForm/SignatureForm.js +1 -1
  32. package/dist/components/Common/UI/CalendarPreview/CalendarPreview.js +1 -1
  33. package/dist/components/Common/UI/DatePicker/DatePicker.js +1 -1
  34. package/dist/components/Common/UI/Table/Table.module.scss.js +1 -1
  35. package/dist/components/Common/UI/Tabs/Tabs.d.ts +7 -0
  36. package/dist/components/Common/UI/Tabs/Tabs.js +25 -0
  37. package/dist/components/Common/UI/Tabs/Tabs.js.map +1 -0
  38. package/dist/components/Common/UI/Tabs/Tabs.module.scss.js +8 -0
  39. package/dist/components/Common/UI/Tabs/Tabs.module.scss.js.map +1 -0
  40. package/dist/components/Common/UI/Tabs/TabsTypes.d.ts +51 -0
  41. package/dist/components/Common/UI/Tabs/index.d.ts +3 -0
  42. package/dist/components/Common/hooks/useNumberFormatter.js +1 -1
  43. package/dist/components/Common/index.d.ts +1 -0
  44. package/dist/components/Company/AssignSignatory/AssignSignatory.js +1 -1
  45. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +5 -5
  46. package/dist/components/Company/AssignSignatory/CreateSignatory/Schema.d.ts +2 -2
  47. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +9 -3
  48. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  49. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +4 -4
  50. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +9 -3
  51. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  52. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +11 -5
  53. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  54. package/dist/components/Company/BankAccount/BankAccount.js +1 -1
  55. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +2 -2
  56. package/dist/components/Company/BankAccount/BankAccountForm/context.js +9 -3
  57. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  58. package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js +1 -1
  59. package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js +2 -2
  60. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +2 -2
  61. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +9 -3
  62. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  63. package/dist/components/Company/DocumentSigner/DocumentSigner.js +1 -1
  64. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +3 -3
  65. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +9 -3
  66. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  67. package/dist/components/Company/FederalTaxes/FederalTaxes.js +3 -3
  68. package/dist/components/Company/FederalTaxes/Form.js +1 -1
  69. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +18 -12
  70. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  71. package/dist/components/Company/Industry/Context.js +12 -6
  72. package/dist/components/Company/Industry/Context.js.map +1 -1
  73. package/dist/components/Company/Industry/Industry.js +2 -2
  74. package/dist/components/Company/Locations/LocationForm/LocationForm.js +4 -4
  75. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +9 -3
  76. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  77. package/dist/components/Company/Locations/LocationsList/LocationsList.js +1 -1
  78. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +9 -3
  79. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  80. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +1 -1
  81. package/dist/components/Company/OnboardingOverview/context.js +9 -3
  82. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  83. package/dist/components/Company/PaySchedule/PaySchedule.js +5 -5
  84. package/dist/components/Company/PaySchedule/usePaySchedule.js +12 -6
  85. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  86. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +3 -3
  87. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +9 -3
  88. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  89. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +1 -1
  90. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +9 -3
  91. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  92. package/dist/components/Contractor/Address/Address.js +4 -4
  93. package/dist/components/Contractor/Address/useAddress.js +11 -5
  94. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  95. package/dist/components/Contractor/ContractorList/index.js +1 -1
  96. package/dist/components/Contractor/ContractorList/useContractorList.js +1 -1
  97. package/dist/components/Contractor/NewHireReport/NewHireReport.js +52 -50
  98. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  99. package/dist/components/Contractor/NewHireReport/types.d.ts +1 -0
  100. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js +19 -12
  101. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js.map +1 -1
  102. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js +6 -5
  103. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  104. package/dist/components/Contractor/PaymentMethod/PaymentMethod.d.ts +4 -4
  105. package/dist/components/Contractor/PaymentMethod/PaymentMethod.js +7 -7
  106. package/dist/components/Contractor/Profile/ContractorProfile.js +1 -1
  107. package/dist/components/Contractor/Profile/useContractorProfile.d.ts +19 -19
  108. package/dist/components/Contractor/Profile/useContractorProfile.js +40 -35
  109. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  110. package/dist/components/Contractor/Submit/Submit.js +25 -25
  111. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  112. package/dist/components/Employee/Compensation/Compensation.js +10 -10
  113. package/dist/components/Employee/Deductions/Deductions.js +1 -1
  114. package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js +4 -4
  115. package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js +2 -2
  116. package/dist/components/Employee/Deductions/IncludeDeductionsForm/IncludeDeductionsForm.js +1 -1
  117. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +1 -1
  118. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +9 -3
  119. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  120. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +3 -3
  121. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +9 -3
  122. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  123. package/dist/components/Employee/EmployeeList/EmployeeList.js +75 -62
  124. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  125. package/dist/components/Employee/EmployeeList/List.js +27 -25
  126. package/dist/components/Employee/EmployeeList/List.js.map +1 -1
  127. package/dist/components/Employee/EmployeeList/useEmployeeList.d.ts +1 -0
  128. package/dist/components/Employee/EmployeeList/useEmployeeList.js +9 -3
  129. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  130. package/dist/components/Employee/FederalTaxes/FederalTaxes.js +3 -3
  131. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +9 -3
  132. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
  133. package/dist/components/Employee/Landing/Landing.js +2 -2
  134. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +2 -2
  135. package/dist/components/Employee/PaymentMethod/BankAccount.d.ts +2 -2
  136. package/dist/components/Employee/PaymentMethod/PaymentMethod.js +8 -8
  137. package/dist/components/Employee/PaymentMethod/Split.js +1 -1
  138. package/dist/components/Employee/PaymentMethod/usePaymentMethod.d.ts +8 -8
  139. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +15 -9
  140. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  141. package/dist/components/Employee/Profile/AdminPersonalDetails.d.ts +2 -2
  142. package/dist/components/Employee/Profile/PersonalDetailsInputs.d.ts +2 -2
  143. package/dist/components/Employee/Profile/Profile.js +15 -13
  144. package/dist/components/Employee/Profile/Profile.js.map +1 -1
  145. package/dist/components/Employee/Profile/useProfile.js +9 -3
  146. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  147. package/dist/components/Employee/StateTaxes/StateTaxes.js +3 -3
  148. package/dist/components/Employee/StateTaxes/useStateTaxes.js +9 -3
  149. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
  150. package/dist/components/Employee/Taxes/Taxes.js +5 -5
  151. package/dist/components/Employee/Taxes/useTaxes.js +9 -3
  152. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  153. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.d.ts +4 -2
  154. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +69 -33
  155. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  156. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +10 -5
  157. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +119 -50
  158. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  159. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.d.ts +5 -2
  160. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +64 -13
  161. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  162. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +18 -2
  163. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +117 -18
  164. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  165. package/dist/components/Payroll/PayrollList/PayrollList.d.ts +1 -1
  166. package/dist/components/Payroll/PayrollList/PayrollList.js +24 -11
  167. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  168. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +8 -6
  169. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +35 -26
  170. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  171. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +1 -1
  172. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +42 -35
  173. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  174. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.d.ts +2 -1
  175. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js +4 -4
  176. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js.map +1 -1
  177. package/dist/components/Payroll/helpers.d.ts +21 -0
  178. package/dist/components/Payroll/helpers.js +209 -0
  179. package/dist/components/Payroll/helpers.js.map +1 -0
  180. package/dist/components/Payroll/helpers.test.d.ts +1 -0
  181. package/dist/components/Payroll/usePreparedPayrollData.d.ts +14 -0
  182. package/dist/components/Payroll/usePreparedPayrollData.js +39 -0
  183. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -0
  184. package/dist/contexts/ApiProvider/ApiProvider.js +4 -4
  185. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js +28 -26
  186. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js.map +1 -1
  187. package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +2 -0
  188. package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
  189. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +3 -2
  190. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  191. package/dist/helpers/formattedStrings.d.ts +9 -0
  192. package/dist/helpers/formattedStrings.js +55 -16
  193. package/dist/helpers/formattedStrings.js.map +1 -1
  194. package/dist/i18n/I18n.js +15 -15
  195. package/dist/i18n/I18n.js.map +1 -1
  196. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +32 -0
  197. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js.map +1 -0
  198. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +20 -0
  199. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -0
  200. package/dist/i18n/en/Payroll.PayrollList.json.js +14 -0
  201. package/dist/i18n/en/Payroll.PayrollList.json.js.map +1 -0
  202. package/dist/i18n/en/Payroll.PayrollOverview.json.js +18 -0
  203. package/dist/i18n/en/Payroll.PayrollOverview.json.js.map +1 -0
  204. package/dist/i18n/en/common.json.d.ts +8 -0
  205. package/dist/i18n/en/common.json.js +15 -13
  206. package/dist/i18n/en/common.json.js.map +1 -1
  207. package/dist/shared/constants.d.ts +6 -0
  208. package/dist/shared/constants.js +43 -34
  209. package/dist/shared/constants.js.map +1 -1
  210. package/dist/style.css +1 -1
  211. package/dist/types/i18next.d.ts +96 -1
  212. package/package.json +27 -26
@@ -9,7 +9,7 @@ export declare const ContractorType: {
9
9
  readonly Business: "Business";
10
10
  };
11
11
  declare const ContractorProfileSchema: z.ZodObject<{
12
- selfOnboarding: z.ZodDefault<z.ZodBoolean>;
12
+ selfOnboarding: z.ZodBoolean;
13
13
  email: z.ZodOptional<z.ZodString>;
14
14
  contractorType: z.ZodEnum<["Individual", "Business"]>;
15
15
  wageType: z.ZodEnum<["Hourly", "Fixed"]>;
@@ -26,31 +26,31 @@ declare const ContractorProfileSchema: z.ZodObject<{
26
26
  contractorType: "Business" | "Individual";
27
27
  startDate: Date;
28
28
  wageType: "Hourly" | "Fixed";
29
- email?: string | undefined;
30
29
  ssn?: string | undefined;
31
30
  ein?: string | undefined;
31
+ email?: string | undefined;
32
32
  firstName?: string | undefined;
33
33
  lastName?: string | undefined;
34
34
  businessName?: string | undefined;
35
35
  hourlyRate?: number | undefined;
36
36
  middleInitial?: string | undefined;
37
37
  }, {
38
+ selfOnboarding: boolean;
38
39
  contractorType: "Business" | "Individual";
39
40
  startDate: Date;
40
41
  wageType: "Hourly" | "Fixed";
41
- email?: string | undefined;
42
42
  ssn?: string | undefined;
43
43
  ein?: string | undefined;
44
+ email?: string | undefined;
44
45
  firstName?: string | undefined;
45
46
  lastName?: string | undefined;
46
47
  businessName?: string | undefined;
47
48
  hourlyRate?: number | undefined;
48
- selfOnboarding?: boolean | undefined;
49
49
  middleInitial?: string | undefined;
50
50
  }>;
51
51
  export type ContractorProfileFormData = z.infer<typeof ContractorProfileSchema>;
52
52
  export declare const createContractorProfileValidationSchema: (t: (key: string) => string, hasSsn: boolean, hasEin: boolean) => z.ZodEffects<z.ZodObject<{
53
- selfOnboarding: z.ZodDefault<z.ZodBoolean>;
53
+ selfOnboarding: z.ZodBoolean;
54
54
  email: z.ZodOptional<z.ZodString>;
55
55
  contractorType: z.ZodEnum<["Individual", "Business"]>;
56
56
  wageType: z.ZodEnum<["Hourly", "Fixed"]>;
@@ -67,52 +67,52 @@ export declare const createContractorProfileValidationSchema: (t: (key: string)
67
67
  contractorType: "Business" | "Individual";
68
68
  startDate: Date;
69
69
  wageType: "Hourly" | "Fixed";
70
- email?: string | undefined;
71
70
  ssn?: string | undefined;
72
71
  ein?: string | undefined;
72
+ email?: string | undefined;
73
73
  firstName?: string | undefined;
74
74
  lastName?: string | undefined;
75
75
  businessName?: string | undefined;
76
76
  hourlyRate?: number | undefined;
77
77
  middleInitial?: string | undefined;
78
78
  }, {
79
+ selfOnboarding: boolean;
79
80
  contractorType: "Business" | "Individual";
80
81
  startDate: Date;
81
82
  wageType: "Hourly" | "Fixed";
82
- email?: string | undefined;
83
83
  ssn?: string | undefined;
84
84
  ein?: string | undefined;
85
+ email?: string | undefined;
85
86
  firstName?: string | undefined;
86
87
  lastName?: string | undefined;
87
88
  businessName?: string | undefined;
88
89
  hourlyRate?: number | undefined;
89
- selfOnboarding?: boolean | undefined;
90
90
  middleInitial?: string | undefined;
91
91
  }>, {
92
92
  selfOnboarding: boolean;
93
93
  contractorType: "Business" | "Individual";
94
94
  startDate: Date;
95
95
  wageType: "Hourly" | "Fixed";
96
- email?: string | undefined;
97
96
  ssn?: string | undefined;
98
97
  ein?: string | undefined;
98
+ email?: string | undefined;
99
99
  firstName?: string | undefined;
100
100
  lastName?: string | undefined;
101
101
  businessName?: string | undefined;
102
102
  hourlyRate?: number | undefined;
103
103
  middleInitial?: string | undefined;
104
104
  }, {
105
+ selfOnboarding: boolean;
105
106
  contractorType: "Business" | "Individual";
106
107
  startDate: Date;
107
108
  wageType: "Hourly" | "Fixed";
108
- email?: string | undefined;
109
109
  ssn?: string | undefined;
110
110
  ein?: string | undefined;
111
+ email?: string | undefined;
111
112
  firstName?: string | undefined;
112
113
  lastName?: string | undefined;
113
114
  businessName?: string | undefined;
114
115
  hourlyRate?: number | undefined;
115
- selfOnboarding?: boolean | undefined;
116
116
  middleInitial?: string | undefined;
117
117
  }>;
118
118
  export interface UseContractorProfileProps {
@@ -127,22 +127,22 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
127
127
  contractorType: "Business" | "Individual";
128
128
  startDate: Date;
129
129
  wageType: "Hourly" | "Fixed";
130
- email?: string | undefined;
131
130
  ssn?: string | undefined;
132
131
  ein?: string | undefined;
132
+ email?: string | undefined;
133
133
  firstName?: string | undefined;
134
134
  lastName?: string | undefined;
135
135
  businessName?: string | undefined;
136
136
  hourlyRate?: number | undefined;
137
137
  middleInitial?: string | undefined;
138
- }, any, {
138
+ }, unknown, {
139
139
  selfOnboarding: boolean;
140
140
  contractorType: "Business" | "Individual";
141
141
  startDate: Date;
142
142
  wageType: "Hourly" | "Fixed";
143
- email?: string | undefined;
144
143
  ssn?: string | undefined;
145
144
  ein?: string | undefined;
145
+ email?: string | undefined;
146
146
  firstName?: string | undefined;
147
147
  lastName?: string | undefined;
148
148
  businessName?: string | undefined;
@@ -165,9 +165,9 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
165
165
  contractorType?: "Business" | "Individual" | undefined;
166
166
  startDate?: Date | undefined;
167
167
  wageType?: "Hourly" | "Fixed" | undefined;
168
- email?: string | undefined;
169
168
  ssn?: string | undefined;
170
169
  ein?: string | undefined;
170
+ email?: string | undefined;
171
171
  firstName?: string | undefined;
172
172
  lastName?: string | undefined;
173
173
  businessName?: string | undefined;
@@ -179,9 +179,9 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
179
179
  contractorType?: boolean | undefined;
180
180
  startDate?: boolean | undefined;
181
181
  wageType?: boolean | undefined;
182
- email?: boolean | undefined;
183
182
  ssn?: boolean | undefined;
184
183
  ein?: boolean | undefined;
184
+ email?: boolean | undefined;
185
185
  firstName?: boolean | undefined;
186
186
  lastName?: boolean | undefined;
187
187
  businessName?: boolean | undefined;
@@ -193,9 +193,9 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
193
193
  contractorType?: boolean | undefined;
194
194
  startDate?: boolean | undefined;
195
195
  wageType?: boolean | undefined;
196
- email?: boolean | undefined;
197
196
  ssn?: boolean | undefined;
198
197
  ein?: boolean | undefined;
198
+ email?: boolean | undefined;
199
199
  firstName?: boolean | undefined;
200
200
  lastName?: boolean | undefined;
201
201
  businessName?: boolean | undefined;
@@ -207,9 +207,9 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
207
207
  contractorType?: boolean | undefined;
208
208
  startDate?: boolean | undefined;
209
209
  wageType?: boolean | undefined;
210
- email?: boolean | undefined;
211
210
  ssn?: boolean | undefined;
212
211
  ein?: boolean | undefined;
212
+ email?: boolean | undefined;
213
213
  firstName?: boolean | undefined;
214
214
  lastName?: boolean | undefined;
215
215
  businessName?: boolean | undefined;
@@ -221,9 +221,9 @@ export declare function useContractorProfile({ companyId, contractorId, defaultV
221
221
  contractorType: "Business" | "Individual";
222
222
  startDate: Date;
223
223
  wageType: "Hourly" | "Fixed";
224
- email?: string | undefined;
225
224
  ssn?: string | undefined;
226
225
  ein?: string | undefined;
226
+ email?: string | undefined;
227
227
  firstName?: string | undefined;
228
228
  lastName?: string | undefined;
229
229
  businessName?: string | undefined;
@@ -1,29 +1,34 @@
1
1
  import { useMemo as z } from "react";
2
2
  import { useTranslation as G } from "react-i18next";
3
- import { zodResolver as V } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@hookform/resolvers/zod/dist/zod.mjs";
3
+ import { zodResolver as V } from "@hookform/resolvers/zod";
4
4
  import { useForm as $, useWatch as y } from "react-hook-form";
5
5
  import { z as s } from "zod";
6
- import { useContractorsCreateMutation as X } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/contractorsCreate.js";
7
- import { useContractorsUpdateMutation as j } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/contractorsUpdate.js";
8
- import { WageType as L, ContractorType as k } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/models/components/contractor.js";
6
+ import { useContractorsCreateMutation as X } from "@gusto/embedded-api/react-query/contractorsCreate";
7
+ import { useContractorsUpdateMutation as j } from "@gusto/embedded-api/react-query/contractorsUpdate";
8
+ import { WageType as L, ContractorType as k } from "@gusto/embedded-api/models/components/contractor";
9
9
  import "react/jsx-runtime";
10
10
  import "react-error-boundary";
11
+ import "@gusto/embedded-api/models/errors/apierror";
12
+ import "@gusto/embedded-api/models/errors/sdkvalidationerror";
13
+ import "@gusto/embedded-api/models/errors/unprocessableentityerrorobject";
14
+ import "@tanstack/react-query";
11
15
  import { useBase as J } from "../../Base/useBase.js";
12
16
  import { ContractorSelfOnboardingStatuses as K, componentEvents as v, ContractorOnboardingStatus as Q } from "../../../shared/constants.js";
13
17
  import "classnames";
14
18
  import { removeNonDigits as Y } from "../../../helpers/formattedStrings.js";
15
19
  import "../../../contexts/ComponentAdapter/useComponentContext.js";
20
+ import "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
16
21
  import { useI18n as x } from "../../../i18n/I18n.js";
17
22
  import { SSN_REGEX as ee, NAME_REGEX as T } from "../../../helpers/validations.js";
18
23
  import { formatDateToStringDate as oe } from "../../../helpers/dateFormatting.js";
19
24
  import { normalizeEin as se } from "../../../helpers/federalEin.js";
20
- const i = L, n = k, ae = s.object({
25
+ const n = L, i = k, ae = s.object({
21
26
  // Self-onboarding toggle
22
- selfOnboarding: s.boolean().default(!1),
27
+ selfOnboarding: s.boolean(),
23
28
  email: s.string().email().optional(),
24
29
  // Required contractor fields
25
- contractorType: s.enum([n.Individual, n.Business]),
26
- wageType: s.enum([i.Hourly, i.Fixed]),
30
+ contractorType: s.enum([i.Individual, i.Business]),
31
+ wageType: s.enum([n.Hourly, n.Fixed]),
27
32
  startDate: s.date(),
28
33
  // Individual contractor fields
29
34
  firstName: s.string().min(1).regex(T).optional(),
@@ -35,13 +40,13 @@ const i = L, n = k, ae = s.object({
35
40
  ein: s.string().optional(),
36
41
  // Wage fields
37
42
  hourlyRate: s.number().min(0).optional()
38
- }), te = (a, p, m) => ae.superRefine(
43
+ }), te = (a, p, d) => ae.superRefine(
39
44
  (e, t) => {
40
45
  if (e.selfOnboarding && !e.email && t.addIssue({
41
46
  code: s.ZodIssueCode.custom,
42
47
  path: ["email"],
43
48
  message: a("validations.email")
44
- }), e.contractorType === n.Individual)
49
+ }), e.contractorType === i.Individual)
45
50
  if (e.firstName || t.addIssue({
46
51
  code: s.ZodIssueCode.custom,
47
52
  path: ["firstName"],
@@ -64,13 +69,13 @@ const i = L, n = k, ae = s.object({
64
69
  message: a("validations.ssnFormat")
65
70
  });
66
71
  }
67
- if (e.contractorType === n.Business)
72
+ if (e.contractorType === i.Business)
68
73
  if (e.businessName || t.addIssue({
69
74
  code: s.ZodIssueCode.custom,
70
75
  path: ["businessName"],
71
76
  message: a("validations.businessName")
72
77
  }), !e.ein)
73
- m || t.addIssue({
78
+ d || t.addIssue({
74
79
  code: s.ZodIssueCode.custom,
75
80
  path: ["ein"],
76
81
  message: a("validations.ein")
@@ -83,17 +88,17 @@ const i = L, n = k, ae = s.object({
83
88
  message: a("validations.einFormat")
84
89
  });
85
90
  }
86
- e.wageType === i.Hourly && (e.hourlyRate === void 0 || e.hourlyRate < 0) && t.addIssue({
91
+ e.wageType === n.Hourly && (e.hourlyRate === void 0 || e.hourlyRate < 0) && t.addIssue({
87
92
  code: s.ZodIssueCode.custom,
88
93
  path: ["hourlyRate"],
89
94
  message: a("validations.hourlyRate")
90
95
  });
91
96
  }
92
97
  );
93
- function Se({
98
+ function Pe({
94
99
  companyId: a,
95
100
  contractorId: p,
96
- defaultValues: m,
101
+ defaultValues: d,
97
102
  existingContractor: e
98
103
  }) {
99
104
  x("Contractor.Profile");
@@ -104,18 +109,18 @@ function Se({
104
109
  ), { mutateAsync: I, isPending: R } = X(), { mutateAsync: S, isPending: w } = j(), O = z(
105
110
  () => ({
106
111
  selfOnboarding: !1,
107
- contractorType: n.Business,
108
- wageType: i.Fixed,
112
+ contractorType: i.Business,
113
+ wageType: n.Fixed,
109
114
  startDate: /* @__PURE__ */ new Date(),
110
- ...m,
115
+ ...d,
111
116
  // Override with existing contractor data if available
112
117
  ...e && {
113
118
  selfOnboarding: e.onboardingStatus ? (
114
119
  // @ts-expect-error: onboarding_status during runtime can be one of self onboarding statuses
115
120
  K.has(e.onboardingStatus)
116
121
  ) : !1,
117
- contractorType: e.type || n.Business,
118
- wageType: e.wageType || i.Fixed,
122
+ contractorType: e.type || i.Business,
123
+ wageType: e.wageType || n.Fixed,
119
124
  startDate: e.startDate ? new Date(e.startDate) : /* @__PURE__ */ new Date(),
120
125
  firstName: e.firstName || void 0,
121
126
  middleInitial: e.middleInitial || void 0,
@@ -128,12 +133,12 @@ function Se({
128
133
  })() : void 0
129
134
  }
130
135
  }),
131
- [e, m]
132
- ), d = $({
136
+ [e, d]
137
+ ), m = $({
133
138
  resolver: V(g),
134
139
  defaultValues: O
135
- }), { handleSubmit: D, formState: E } = d, h = y({ control: d.control, name: "contractorType" }), P = y({ control: d.control, name: "wageType" }), F = y({
136
- control: d.control,
140
+ }), { handleSubmit: D, formState: E } = m, h = y({ control: m.control, name: "contractorType" }), P = y({ control: m.control, name: "wageType" }), F = y({
141
+ control: m.control,
137
142
  name: "selfOnboarding"
138
143
  }), N = (o) => {
139
144
  const r = {
@@ -142,10 +147,10 @@ function Se({
142
147
  startDate: oe(o.startDate) || "",
143
148
  selfOnboarding: o.selfOnboarding,
144
149
  email: o.selfOnboarding ? o.email : void 0,
145
- hourlyRate: o.wageType === i.Hourly ? String(o.hourlyRate) : void 0,
150
+ hourlyRate: o.wageType === n.Hourly ? String(o.hourlyRate) : void 0,
146
151
  isActive: !0
147
152
  };
148
- return o.contractorType === n.Individual ? {
153
+ return o.contractorType === i.Individual ? {
149
154
  ...r,
150
155
  firstName: o.firstName,
151
156
  middleInitial: o.middleInitial || void 0,
@@ -190,16 +195,16 @@ function Se({
190
195
  contractorId: u
191
196
  });
192
197
  });
193
- }, A = F, H = h === n.Business, Z = h === n.Individual, _ = P === i.Hourly, M = [
194
- { label: "Individual", value: n.Individual },
195
- { label: "Business", value: n.Business }
198
+ }, A = !!F, H = h === i.Business, Z = h === i.Individual, _ = P === n.Hourly, M = [
199
+ { label: "Individual", value: i.Individual },
200
+ { label: "Business", value: i.Business }
196
201
  ], U = [
197
- { label: "Hourly", value: i.Hourly },
198
- { label: "Fixed", value: i.Fixed }
202
+ { label: "Hourly", value: n.Hourly },
203
+ { label: "Fixed", value: n.Fixed }
199
204
  ], W = R || w;
200
205
  return {
201
206
  // Form methods and submission
202
- formMethods: d,
207
+ formMethods: m,
203
208
  handleSubmit: D(B),
204
209
  formState: {
205
210
  ...E,
@@ -218,9 +223,9 @@ function Se({
218
223
  };
219
224
  }
220
225
  export {
221
- n as ContractorType,
222
- i as WageType,
226
+ i as ContractorType,
227
+ n as WageType,
223
228
  te as createContractorProfileValidationSchema,
224
- Se as useContractorProfile
229
+ Pe as useContractorProfile
225
230
  };
226
231
  //# 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 {\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 = 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":";;;;;;;;;;;;;;;;;;;AA4BO,MAAMA,IAAWC,GACXC,IAAiBC,GAGxBC,KAA0BC,EAAE,OAAO;AAAA;AAAA,EAEvC,gBAAgBA,EAAE,UAAU,QAAQ,EAAK;AAAA,EACzC,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,CACrDC,GACAC,GACAC,MAEON,GAAwB;AAAA,EAC7B,CAACO,GAAiCC,MAAyB;AAWzD,QATID,EAAK,kBAAkB,CAACA,EAAK,SAC/BC,EAAI,SAAS;AAAA,MACX,MAAMP,EAAE,aAAa;AAAA,MACrB,MAAM,CAAC,OAAO;AAAA,MACd,SAASG,EAAE,mBAAmB;AAAA,IAAA,CAC/B,GAICG,EAAK,mBAAmBT,EAAe;AAiBzC,UAhBKS,EAAK,aACRC,EAAI,SAAS;AAAA,QACX,MAAMP,EAAE,aAAa;AAAA,QACrB,MAAM,CAAC,WAAW;AAAA,QAClB,SAASG,EAAE,uBAAuB;AAAA,MAAA,CACnC,GAGEG,EAAK,YACRC,EAAI,SAAS;AAAA,QACX,MAAMP,EAAE,aAAa;AAAA,QACrB,MAAM,CAAC,UAAU;AAAA,QACjB,SAASG,EAAE,sBAAsB;AAAA,MAAA,CAClC,GAGC,CAACG,EAAK;AACR,QAAKF,KACHG,EAAI,SAAS;AAAA,UACX,MAAMP,EAAE,aAAa;AAAA,UACrB,MAAM,CAAC,KAAK;AAAA,UACZ,SAASG,EAAE,iBAAiB;AAAA,QAAA,CAC7B;AAAA,WAEE;AAEL,cAAMK,IAAWC,EAAgBH,EAAK,GAAG;AACzC,QAAKI,GAAU,KAAKF,CAAQ,KAC1BD,EAAI,SAAS;AAAA,UACX,MAAMP,EAAE,aAAa;AAAA,UACrB,MAAM,CAAC,KAAK;AAAA,UACZ,SAASG,EAAE,uBAAuB;AAAA,QAAA,CACnC;AAAA,MAEL;AAIF,QAAIG,EAAK,mBAAmBT,EAAe;AASzC,UARKS,EAAK,gBACRC,EAAI,SAAS;AAAA,QACX,MAAMP,EAAE,aAAa;AAAA,QACrB,MAAM,CAAC,cAAc;AAAA,QACrB,SAASG,EAAE,0BAA0B;AAAA,MAAA,CACtC,GAGC,CAACG,EAAK;AACR,QAAKD,KACHE,EAAI,SAAS;AAAA,UACX,MAAMP,EAAE,aAAa;AAAA,UACrB,MAAM,CAAC,KAAK;AAAA,UACZ,SAASG,EAAE,iBAAiB;AAAA,QAAA,CAC7B;AAAA,WAEE;AAEL,cAAMQ,IAAgBC,GAAaN,EAAK,GAAG;AAC3C,QAAK,gBAAgB,KAAKK,CAAa,KACrCJ,EAAI,SAAS;AAAA,UACX,MAAMP,EAAE,aAAa;AAAA,UACrB,MAAM,CAAC,KAAK;AAAA,UACZ,SAASG,EAAE,uBAAuB;AAAA,QAAA,CACnC;AAAA,MAEL;AAIF,IAAIG,EAAK,aAAaX,EAAS,WACzBW,EAAK,eAAe,UAAaA,EAAK,aAAa,MACrDC,EAAI,SAAS;AAAA,MACX,MAAMP,EAAE,aAAa;AAAA,MACrB,MAAM,CAAC,YAAY;AAAA,MACnB,SAASG,EAAE,wBAAwB;AAAA,IAAA,CACpC;AAAA,EAGP;AAAA;AAWG,SAASU,GAAqB;AAAA,EACnC,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,oBAAAC;AACF,GAA8B;AAC5B,EAAAC,EAAQ,oBAAoB;AAC5B,QAAM,EAAE,EAAA,IAAMC,EAAe,oBAAoB,GAC3C,EAAE,SAAAC,GAAS,mBAAAC,EAAA,IAAsBC,EAAA,GAGjCC,IAAmBrB;AAAA,IACvB;AAAA,IACAe,GAAoB,UAAU;AAAA,IAC9BA,GAAoB,UAAU;AAAA,EAAA,GAI1B,EAAE,aAAaO,GAAkB,WAAWC,EAAA,IAAeC,EAAA,GAC3D,EAAE,aAAaC,GAAkB,WAAWC,EAAA,IAAeC,EAAA,GAG3DC,IAAoBC;AAAA,IACxB,OAAO;AAAA,MACL,gBAAgB;AAAA,MAChB,gBAAgBlC,EAAe;AAAA,MAC/B,UAAUF,EAAS;AAAA,MACnB,+BAAe,KAAA;AAAA,MACf,GAAGqB;AAAA;AAAA,MAEH,GAAIC,KAAsB;AAAA,QACxB,gBAAgBA,EAAmB;AAAA;AAAA,UAE/Be,EAAiC,IAAIf,EAAmB,gBAAgB;AAAA,YACxE;AAAA,QACJ,gBAAgBA,EAAmB,QAAQpB,EAAe;AAAA,QAC1D,UAAUoB,EAAmB,YAAYtB,EAAS;AAAA,QAClD,WAAWsB,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,OAAOA,EAAmB,SAAS;AAAA,QACnC,YAAYA,EAAmB,cAC1B,MAAM;AACL,gBAAMgB,IAAS,WAAWhB,EAAmB,UAAU;AACvD,iBAAO,MAAMgB,CAAM,IAAI,SAAYA;AAAA,QACrC,OACA;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,CAAChB,GAAoBD,CAAa;AAAA,EAAA,GAI9BkB,IAAcC,EAAmC;AAAA,IACrD,UAAUC,EAAYb,CAAgB;AAAA,IACtC,eAAeO;AAAA,EAAA,CAChB,GAEK,EAAE,cAAAO,GAAc,WAAAC,EAAA,IAAcJ,GAG9BK,IAAcC,EAAS,EAAE,SAASN,EAAY,SAAS,MAAM,kBAAkB,GAC/EO,IAAkBD,EAAS,EAAE,SAASN,EAAY,SAAS,MAAM,YAAY,GAC7EQ,IAAwBF,EAAS;AAAA,IACrC,SAASN,EAAY;AAAA,IACrB,MAAM;AAAA,EAAA,CACP,GAGKS,IAAmC,CACvCrC,MACqD;AACrD,UAAMsC,IAAc;AAAA,MAClB,MAAMtC,EAAK;AAAA,MACX,UAAUA,EAAK;AAAA,MACf,WAAWuC,GAAuBvC,EAAK,SAAS,KAAK;AAAA,MACrD,gBAAgBA,EAAK;AAAA,MACrB,OAAOA,EAAK,iBAAiBA,EAAK,QAAQ;AAAA,MAC1C,YAAYA,EAAK,aAAaX,EAAS,SAAS,OAAOW,EAAK,UAAU,IAAI;AAAA,MAC1E,UAAU;AAAA,IAAA;AAGZ,WAAIA,EAAK,mBAAmBT,EAAe,aAClC;AAAA,MACL,GAAG+C;AAAA,MACH,WAAWtC,EAAK;AAAA,MAChB,eAAeA,EAAK,iBAAiB;AAAA,MACrC,UAAUA,EAAK;AAAA,MACf,KAAKA,EAAK;AAAA,MACV,mBAAmB;AAAA;AAAA,IAAA,IAGd;AAAA,MACL,GAAGsC;AAAA,MACH,mBAAmB;AAAA;AAAA,MACnB,cAActC,EAAK;AAAA,MACnB,KAAKA,EAAK,KAAK,QAAQ,MAAM,EAAE;AAAA,IAAA;AAAA,EAGrC,GAEMwC,IAAmC,CACvCxC,GACAyC,OAGO;AAAA,IACL,GAFoBJ,EAAiCrC,CAAI;AAAA,IAGzD,SAAAyC;AAAA,EAAA,IAKEC,IAAqD,OAAM1C,MAAQ;AACvE,UAAMe,EAAkBf,GAAM,OAAM2C,MAAW;AAC7C,UAAIlC,IAAeE,GAAoB;AACvC,UAAIA,GAAoB;AAEtB,YAAI,CAACA,EAAmB;AACtB,gBAAM,IAAI,MAAM,4CAA4C;AAE9D,cAAM8B,IAAU9B,EAAmB,SAC7BiC,IAAaJ,EAAiCG,GAASF,CAAO,GAE9DI,IAAiB,MAAMxB,EAAiB;AAAA,UAC5C,SAAS;AAAA,YACP,gBAAgBZ;AAAAA,YAChB,aAAamC;AAAA,UAAA;AAAA,QACf,CACD;AAED,QAAA9B,EAAQgC,EAAgB,oBAAoBD,EAAe,UAAU;AAAA,MACvE,OAAO;AAEL,cAAMD,IAAaP,EAAiCM,CAAO,GAErDI,IAAiB,MAAM7B,EAAiB;AAAA,UAC5C,SAAS;AAAA,YACP,aAAaV;AAAA,YACb,aAAaoC;AAAA,UAAA;AAAA,QACf,CACD;AAEDnC,QAAAA,IAAesC,EAAe,YAAY,MAC1CjC,EAAQgC,EAAgB,oBAAoBC,EAAe,UAAU;AAAA,MACvE;AAEA,MAAAjC,EAAQgC,EAAgB,yBAAyB;AAAA,QAC/C,gBACEH,EAAQ,kBACRhC,GAAoB,qBAClBqC,EAA2B;AAAA,QAC/B,cAAAvC;AAAAA,MAAA,CACD;AAAA,IACH,CAAC;AAAA,EACH,GAGMwC,IAAuBb,GACvBc,IAA2BjB,MAAgB1C,EAAe,UAC1D4D,IAA6BlB,MAAgB1C,EAAe,YAC5D6D,IAAuBjB,MAAoB9C,EAAS,QAGpDgE,IAAwB;AAAA,IAC5B,EAAE,OAAO,cAAc,OAAO9D,EAAe,WAAA;AAAA,IAC7C,EAAE,OAAO,YAAY,OAAOA,EAAe,SAAA;AAAA,EAAS,GAGhD+D,IAAkB;AAAA,IACtB,EAAE,OAAO,UAAU,OAAOjE,EAAS,OAAA;AAAA,IACnC,EAAE,OAAO,SAAS,OAAOA,EAAS,MAAA;AAAA,EAAM,GAIpCkE,IAAepC,KAAcG;AAEnC,SAAO;AAAA;AAAA,IAEL,aAAAM;AAAA,IACA,cAAcG,EAAaW,CAAQ;AAAA,IACnC,WAAW;AAAA,MACT,GAAGV;AAAA,MACH,cAAAuB;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,CAAC7C;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(),\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, unknown, 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 = 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 // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion\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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"}
@@ -1,27 +1,27 @@
1
1
  import { jsx as t, jsxs as a, Fragment as p } from "react/jsx-runtime";
2
2
  import { useTranslation as O } from "react-i18next";
3
- import { useContractorsUpdateOnboardingStatusMutation as A } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/contractorsUpdateOnboardingStatus.js";
4
- import { useContractorsGetOnboardingStatusSuspense as R } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/contractorsGetOnboardingStatus.js";
5
- import { useContractorsGetSuspense as _ } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/contractorsGet.js";
6
- import { SubmitDone as I } from "./SubmitDone.js";
3
+ import { useContractorsUpdateOnboardingStatusMutation as _ } from "@gusto/embedded-api/react-query/contractorsUpdateOnboardingStatus";
4
+ import { useContractorsGetOnboardingStatusSuspense as R } from "@gusto/embedded-api/react-query/contractorsGetOnboardingStatus";
5
+ import { useContractorsGetSuspense as A } from "@gusto/embedded-api/react-query/contractorsGet";
6
+ import { SubmitDone as E } from "./SubmitDone.js";
7
7
  import { Flex as C } from "../../Common/Flex/Flex.js";
8
8
  import "classnames";
9
9
  import { ContractorOnboardingStatus as d, componentEvents as s } from "../../../shared/constants.js";
10
- import { useComponentContext as b } from "../../../contexts/ComponentAdapter/useComponentContext.js";
11
- import { useI18n as x } from "../../../i18n/I18n.js";
12
- import { BaseComponent as E } from "../../Base/Base.js";
13
- import { useBase as B } from "../../Base/useBase.js";
14
- import { firstLastName as v } from "../../../helpers/formattedStrings.js";
10
+ import { useComponentContext as T } from "../../../contexts/ComponentAdapter/useComponentContext.js";
11
+ import { useI18n as I } from "../../../i18n/I18n.js";
12
+ import { BaseComponent as B } from "../../Base/Base.js";
13
+ import { useBase as v } from "../../Base/useBase.js";
14
+ import { firstLastName as x } from "../../../helpers/formattedStrings.js";
15
15
  function Q(e) {
16
- return /* @__PURE__ */ t(E, { ...e, children: /* @__PURE__ */ t(M, { ...e, children: e.children }) });
16
+ return /* @__PURE__ */ t(B, { ...e, children: /* @__PURE__ */ t(U, { ...e, children: e.children }) });
17
17
  }
18
- const M = ({ contractorId: e, selfOnboarding: c }) => {
19
- x("Contractor.Submit");
20
- const { Alert: o, Button: m, UnorderedList: u } = b(), { t: n } = O("Contractor.Submit"), { onEvent: r, baseSubmitHandler: i } = B(), f = Object.values(n("warningItems", { returnObjects: !0 })), { data: T } = R({
18
+ const U = ({ contractorId: e, selfOnboarding: c }) => {
19
+ I("Contractor.Submit");
20
+ const { Alert: o, Button: m, UnorderedList: u } = T(), { t: n } = O("Contractor.Submit"), { onEvent: r, baseSubmitHandler: i } = v(), b = Object.values(n("warningItems", { returnObjects: !0 })), { data: S } = R({
21
21
  contractorUuid: e
22
- }), l = T.contractorOnboardingStatus?.onboardingStatus, { mutateAsync: S } = A(), D = async () => {
22
+ }), l = S.contractorOnboardingStatus?.onboardingStatus, { mutateAsync: f } = _(), D = async () => {
23
23
  await i(null, async () => {
24
- const h = await S({
24
+ const g = await f({
25
25
  request: {
26
26
  contractorUuid: e,
27
27
  requestBody: { onboardingStatus: d.ONBOARDING_COMPLETED }
@@ -29,34 +29,34 @@ const M = ({ contractorId: e, selfOnboarding: c }) => {
29
29
  });
30
30
  r(
31
31
  s.CONTRACTOR_ONBOARDING_STATUS_UPDATED,
32
- h.contractorOnboardingStatus
32
+ g.contractorOnboardingStatus
33
33
  ), r(s.CONTRACTOR_SUBMIT_DONE, { message: n("submitDone.successMessage") });
34
34
  });
35
35
  }, N = () => {
36
36
  r(s.CONTRACTOR_INVITE_CONTRACTOR, { contractorId: e }), r(s.CONTRACTOR_SUBMIT_DONE, {
37
37
  message: n("inviteContractor.successMessage")
38
38
  });
39
- }, g = () => {
39
+ }, h = () => {
40
40
  r(s.CONTRACTOR_SUBMIT_DONE, {
41
41
  onboardingStatus: l,
42
42
  message: n("submitDone.successMessage")
43
43
  });
44
44
  };
45
- return l === d.ONBOARDING_COMPLETED ? /* @__PURE__ */ t(I, { onDone: g }) : l === d.ADMIN_ONBOARDING_INCOMPLETE && c ? /* @__PURE__ */ t(U, { onSubmit: N, contractorId: e }) : /* @__PURE__ */ a(p, { children: [
46
- /* @__PURE__ */ t(o, { label: n("title"), status: "warning", children: /* @__PURE__ */ t(u, { items: f }) }),
45
+ return l === d.ONBOARDING_COMPLETED ? /* @__PURE__ */ t(E, { onDone: h }) : l === d.SELF_ONBOARDING_NOT_INVITED && c ? /* @__PURE__ */ t(M, { onSubmit: N, contractorId: e }) : /* @__PURE__ */ a(p, { children: [
46
+ /* @__PURE__ */ t(o, { label: n("title"), status: "warning", children: /* @__PURE__ */ t(u, { items: b }) }),
47
47
  /* @__PURE__ */ t(C, { flexDirection: "column", alignItems: "flex-end", children: /* @__PURE__ */ t(m, { title: n("submitCTA"), onClick: D, children: n("submitCTA") }) })
48
48
  ] });
49
- }, U = ({
49
+ }, M = ({
50
50
  onSubmit: e,
51
51
  contractorId: c
52
52
  }) => {
53
- const { t: o } = O("Contractor.Submit", { keyPrefix: "inviteContractor" }), { Button: m, Heading: u, Text: n } = b(), { data: r } = _({ contractorUuid: c }), i = r.contractor;
54
- return /* @__PURE__ */ a(C, { flexDirection: "column", alignItems: "flex-end", children: [
53
+ const { t: o } = O("Contractor.Submit", { keyPrefix: "inviteContractor" }), { Button: m, Heading: u, Text: n } = T(), { data: r } = A({ contractorUuid: c }), i = r.contractor;
54
+ return /* @__PURE__ */ a(C, { flexDirection: "column", children: [
55
55
  /* @__PURE__ */ t(u, { as: "h2", children: o("title") }),
56
56
  /* @__PURE__ */ t(n, { children: o("description") }),
57
- /* @__PURE__ */ a(C, { flexDirection: "column", alignItems: "flex-end", children: [
57
+ /* @__PURE__ */ a(C, { flexDirection: "column", children: [
58
58
  /* @__PURE__ */ a("div", { children: [
59
- /* @__PURE__ */ t(n, { children: v({
59
+ /* @__PURE__ */ t(n, { children: x({
60
60
  first_name: i?.firstName,
61
61
  last_name: i?.lastName
62
62
  }) }),
@@ -72,6 +72,6 @@ const M = ({ contractorId: e, selfOnboarding: c }) => {
72
72
  };
73
73
  export {
74
74
  Q as ContractorSubmit,
75
- M as Root
75
+ U as Root
76
76
  };
77
77
  //# sourceMappingURL=Submit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Submit.js","sources":["../../../../src/components/Contractor/Submit/Submit.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { useContractorsUpdateOnboardingStatusMutation } from '@gusto/embedded-api/react-query/contractorsUpdateOnboardingStatus'\nimport { useContractorsGetOnboardingStatusSuspense } from '@gusto/embedded-api/react-query/contractorsGetOnboardingStatus'\nimport { useContractorsGetSuspense } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { SubmitDone } from './SubmitDone'\nimport { Flex } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport {\n BaseComponent,\n useBase,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nexport interface ContractorSubmitProps\n extends CommonComponentInterface<'Contractor.ContractorList'> {\n contractorId: string\n selfOnboarding?: boolean\n}\n\nexport function ContractorSubmit(props: ContractorSubmitProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({ contractorId, selfOnboarding }: ContractorSubmitProps) => {\n useI18n('Contractor.Submit')\n const { Alert, Button, UnorderedList } = useComponentContext()\n const { t } = useTranslation('Contractor.Submit')\n const { onEvent, baseSubmitHandler } = useBase()\n const items = Object.values(t('warningItems', { returnObjects: true }))\n\n const { data } = useContractorsGetOnboardingStatusSuspense({\n contractorUuid: contractorId,\n })\n const onboardingStatus = data.contractorOnboardingStatus?.onboardingStatus\n\n const { mutateAsync } = useContractorsUpdateOnboardingStatusMutation()\n\n const onSubmit = async () => {\n await baseSubmitHandler(null, async () => {\n const response = await mutateAsync({\n request: {\n contractorUuid: contractorId,\n requestBody: { onboardingStatus: ContractorOnboardingStatus.ONBOARDING_COMPLETED },\n },\n })\n onEvent(\n componentEvents.CONTRACTOR_ONBOARDING_STATUS_UPDATED,\n response.contractorOnboardingStatus,\n )\n onEvent(componentEvents.CONTRACTOR_SUBMIT_DONE, { message: t('submitDone.successMessage') })\n })\n }\n const handleInviteContractor = () => {\n onEvent(componentEvents.CONTRACTOR_INVITE_CONTRACTOR, { contractorId })\n onEvent(componentEvents.CONTRACTOR_SUBMIT_DONE, {\n message: t('inviteContractor.successMessage'),\n })\n }\n\n const handleSubmitDone = () => {\n onEvent(componentEvents.CONTRACTOR_SUBMIT_DONE, {\n onboardingStatus,\n message: t('submitDone.successMessage'),\n })\n }\n\n if (onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED) {\n return <SubmitDone onDone={handleSubmitDone} />\n }\n if (\n onboardingStatus === ContractorOnboardingStatus.ADMIN_ONBOARDING_INCOMPLETE &&\n selfOnboarding\n ) {\n return <InviteContractor onSubmit={handleInviteContractor} contractorId={contractorId} />\n }\n\n return (\n <>\n <Alert label={t('title')} status=\"warning\">\n <UnorderedList items={items} />\n </Alert>\n <Flex flexDirection=\"column\" alignItems=\"flex-end\">\n <Button title={t('submitCTA')} onClick={onSubmit}>\n {t('submitCTA')}\n </Button>\n </Flex>\n </>\n )\n}\n\nconst InviteContractor = ({\n onSubmit,\n contractorId,\n}: {\n onSubmit: () => void\n contractorId: string\n}) => {\n const { t } = useTranslation('Contractor.Submit', { keyPrefix: 'inviteContractor' })\n const { Button, Heading, Text } = useComponentContext()\n\n const { data: contractorData } = useContractorsGetSuspense({ contractorUuid: contractorId })\n const contractor = contractorData.contractor\n\n return (\n <Flex flexDirection=\"column\" alignItems=\"flex-end\">\n <Heading as=\"h2\">{t('title')}</Heading>\n <Text>{t('description')}</Text>\n <Flex flexDirection=\"column\" alignItems=\"flex-end\">\n <div>\n <Text>\n {firstLastName({\n first_name: contractor?.firstName,\n last_name: contractor?.lastName,\n })}\n </Text>\n <Text>{contractor?.email}</Text>\n </div>\n <div>\n <Text>{t('startDateLabel')}</Text>\n <Text>{contractor?.startDate}</Text>\n </div>\n </Flex>\n <Button title={t('inviteCta')} onClick={onSubmit}>\n {t('inviteCta')}\n </Button>\n </Flex>\n )\n}\n"],"names":["ContractorSubmit","props","jsx","BaseComponent","Root","contractorId","selfOnboarding","useI18n","Alert","Button","UnorderedList","useComponentContext","t","useTranslation","onEvent","baseSubmitHandler","useBase","items","data","useContractorsGetOnboardingStatusSuspense","onboardingStatus","mutateAsync","useContractorsUpdateOnboardingStatusMutation","onSubmit","response","ContractorOnboardingStatus","componentEvents","handleInviteContractor","handleSubmitDone","SubmitDone","InviteContractor","jsxs","Fragment","Flex","Heading","Text","contractorData","useContractorsGetSuspense","contractor","firstLastName"],"mappings":"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"}
1
+ {"version":3,"file":"Submit.js","sources":["../../../../src/components/Contractor/Submit/Submit.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { useContractorsUpdateOnboardingStatusMutation } from '@gusto/embedded-api/react-query/contractorsUpdateOnboardingStatus'\nimport { useContractorsGetOnboardingStatusSuspense } from '@gusto/embedded-api/react-query/contractorsGetOnboardingStatus'\nimport { useContractorsGetSuspense } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { SubmitDone } from './SubmitDone'\nimport { Flex } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport {\n BaseComponent,\n useBase,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nexport interface ContractorSubmitProps\n extends CommonComponentInterface<'Contractor.ContractorList'> {\n contractorId: string\n selfOnboarding?: boolean\n}\n\nexport function ContractorSubmit(props: ContractorSubmitProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({ contractorId, selfOnboarding }: ContractorSubmitProps) => {\n useI18n('Contractor.Submit')\n const { Alert, Button, UnorderedList } = useComponentContext()\n const { t } = useTranslation('Contractor.Submit')\n const { onEvent, baseSubmitHandler } = useBase()\n const items = Object.values(t('warningItems', { returnObjects: true }))\n\n const { data } = useContractorsGetOnboardingStatusSuspense({\n contractorUuid: contractorId,\n })\n const onboardingStatus = data.contractorOnboardingStatus?.onboardingStatus\n\n const { mutateAsync } = useContractorsUpdateOnboardingStatusMutation()\n\n const onSubmit = async () => {\n await baseSubmitHandler(null, async () => {\n const response = await mutateAsync({\n request: {\n contractorUuid: contractorId,\n requestBody: { onboardingStatus: ContractorOnboardingStatus.ONBOARDING_COMPLETED },\n },\n })\n onEvent(\n componentEvents.CONTRACTOR_ONBOARDING_STATUS_UPDATED,\n response.contractorOnboardingStatus,\n )\n onEvent(componentEvents.CONTRACTOR_SUBMIT_DONE, { message: t('submitDone.successMessage') })\n })\n }\n const handleInviteContractor = () => {\n onEvent(componentEvents.CONTRACTOR_INVITE_CONTRACTOR, { contractorId })\n onEvent(componentEvents.CONTRACTOR_SUBMIT_DONE, {\n message: t('inviteContractor.successMessage'),\n })\n }\n\n const handleSubmitDone = () => {\n onEvent(componentEvents.CONTRACTOR_SUBMIT_DONE, {\n onboardingStatus,\n message: t('submitDone.successMessage'),\n })\n }\n\n if (onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED) {\n return <SubmitDone onDone={handleSubmitDone} />\n }\n if (\n onboardingStatus === ContractorOnboardingStatus.SELF_ONBOARDING_NOT_INVITED &&\n selfOnboarding\n ) {\n return <InviteContractor onSubmit={handleInviteContractor} contractorId={contractorId} />\n }\n\n return (\n <>\n <Alert label={t('title')} status=\"warning\">\n <UnorderedList items={items} />\n </Alert>\n <Flex flexDirection=\"column\" alignItems=\"flex-end\">\n <Button title={t('submitCTA')} onClick={onSubmit}>\n {t('submitCTA')}\n </Button>\n </Flex>\n </>\n )\n}\n\nconst InviteContractor = ({\n onSubmit,\n contractorId,\n}: {\n onSubmit: () => void\n contractorId: string\n}) => {\n const { t } = useTranslation('Contractor.Submit', { keyPrefix: 'inviteContractor' })\n const { Button, Heading, Text } = useComponentContext()\n\n const { data: contractorData } = useContractorsGetSuspense({ contractorUuid: contractorId })\n const contractor = contractorData.contractor\n\n return (\n <Flex flexDirection=\"column\">\n <Heading as=\"h2\">{t('title')}</Heading>\n <Text>{t('description')}</Text>\n <Flex flexDirection=\"column\">\n <div>\n <Text>\n {firstLastName({\n first_name: contractor?.firstName,\n last_name: contractor?.lastName,\n })}\n </Text>\n <Text>{contractor?.email}</Text>\n </div>\n <div>\n <Text>{t('startDateLabel')}</Text>\n <Text>{contractor?.startDate}</Text>\n </div>\n </Flex>\n <Button title={t('inviteCta')} onClick={onSubmit}>\n {t('inviteCta')}\n </Button>\n </Flex>\n )\n}\n"],"names":["ContractorSubmit","props","jsx","BaseComponent","Root","contractorId","selfOnboarding","useI18n","Alert","Button","UnorderedList","useComponentContext","t","useTranslation","onEvent","baseSubmitHandler","useBase","items","data","useContractorsGetOnboardingStatusSuspense","onboardingStatus","mutateAsync","useContractorsUpdateOnboardingStatusMutation","onSubmit","response","ContractorOnboardingStatus","componentEvents","handleInviteContractor","handleSubmitDone","SubmitDone","InviteContractor","jsxs","Fragment","Flex","Heading","Text","contractorData","useContractorsGetSuspense","contractor","firstLastName"],"mappings":"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"}