@gusto/embedded-react-sdk 0.12.3 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/assets/icons/spinner_small.svg.js +10 -0
  3. package/dist/assets/icons/spinner_small.svg.js.map +1 -0
  4. package/dist/components/Base/Base.js +27 -26
  5. package/dist/components/Base/Base.js.map +1 -1
  6. package/dist/components/Base/useBase.d.ts +2 -0
  7. package/dist/components/Base/useBase.js.map +1 -1
  8. package/dist/components/Common/DataView/DataView.d.ts +2 -1
  9. package/dist/components/Common/DataView/DataView.js +20 -19
  10. package/dist/components/Common/DataView/DataView.js.map +1 -1
  11. package/dist/components/Common/DataView/useDataView.d.ts +3 -1
  12. package/dist/components/Common/DataView/useDataView.js +13 -11
  13. package/dist/components/Common/DataView/useDataView.js.map +1 -1
  14. package/dist/components/Common/EmptyData/EmptyData.module.scss.js +1 -1
  15. package/dist/components/Common/InlineSpinner/InlineSpinner.d.ts +6 -0
  16. package/dist/components/Common/InlineSpinner/InlineSpinner.js +25 -0
  17. package/dist/components/Common/InlineSpinner/InlineSpinner.js.map +1 -0
  18. package/dist/components/Common/InlineSpinner/InlineSpinner.module.scss.js +10 -0
  19. package/dist/components/Common/InlineSpinner/InlineSpinner.module.scss.js.map +1 -0
  20. package/dist/components/Common/InlineSpinner/index.d.ts +2 -0
  21. package/dist/components/Common/PaginationControl/PaginationControl.js +31 -28
  22. package/dist/components/Common/PaginationControl/PaginationControl.js.map +1 -1
  23. package/dist/components/Common/PaginationControl/PaginationControlTypes.d.ts +1 -0
  24. package/dist/components/Common/SignatureForm/SignatureForm.js +3 -2
  25. package/dist/components/Common/SignatureForm/SignatureForm.js.map +1 -1
  26. package/dist/components/Common/SignatureForm/SignatureFormActions.js +7 -6
  27. package/dist/components/Common/SignatureForm/SignatureFormActions.js.map +1 -1
  28. package/dist/components/Common/SignatureForm/SignatureFormFields.js +8 -7
  29. package/dist/components/Common/SignatureForm/SignatureFormFields.js.map +1 -1
  30. package/dist/components/Common/UI/Table/Table.module.scss.js +1 -1
  31. package/dist/components/Common/index.d.ts +1 -0
  32. package/dist/components/Company/AssignSignatory/AssignSignatory.js +7 -6
  33. package/dist/components/Company/AssignSignatory/AssignSignatory.js.map +1 -1
  34. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +3 -2
  35. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  36. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +3 -2
  37. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  38. package/dist/components/Company/AssignSignatory/CreateSignatory/Schema.d.ts +2 -2
  39. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
  40. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  41. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +6 -5
  42. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  43. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +10 -9
  44. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  45. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
  46. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  47. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
  48. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  49. package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
  50. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  51. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +9 -8
  52. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  53. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  54. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  55. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +7 -6
  56. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  57. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
  58. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  59. package/dist/components/Company/FederalTaxes/FederalTaxes.js +13 -12
  60. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  61. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +12 -11
  62. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  63. package/dist/components/Company/Industry/Context.js +7 -6
  64. package/dist/components/Company/Industry/Context.js.map +1 -1
  65. package/dist/components/Company/Locations/LocationForm/Form.js +5 -4
  66. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  67. package/dist/components/Company/Locations/LocationForm/LocationForm.js +10 -9
  68. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  69. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
  70. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  71. package/dist/components/Company/Locations/LocationsList/LocationsList.js +7 -6
  72. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  73. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
  74. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  75. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +3 -2
  76. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  77. package/dist/components/Company/OnboardingOverview/context.js +4 -3
  78. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  79. package/dist/components/Company/PaySchedule/PaySchedule.js +33 -32
  80. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  81. package/dist/components/Company/PaySchedule/_parts/Edit.js +3 -2
  82. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  83. package/dist/components/Company/PaySchedule/usePaySchedule.js +6 -5
  84. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  85. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -3
  86. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  87. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
  88. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  89. package/dist/components/Contractor/Address/Address.js +4 -3
  90. package/dist/components/Contractor/Address/Address.js.map +1 -1
  91. package/dist/components/Contractor/Address/Form.js +3 -2
  92. package/dist/components/Contractor/Address/Form.js.map +1 -1
  93. package/dist/components/Contractor/Address/useAddress.js +6 -5
  94. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  95. package/dist/components/Contractor/NewHireReport/NewHireReport.js +51 -49
  96. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  97. package/dist/components/Contractor/NewHireReport/types.d.ts +1 -0
  98. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js +19 -12
  99. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js.map +1 -1
  100. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js +6 -5
  101. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  102. package/dist/components/Contractor/PaymentMethod/PaymentMethod.d.ts +4 -4
  103. package/dist/components/Contractor/Profile/useContractorProfile.d.ts +19 -19
  104. package/dist/components/Contractor/Profile/useContractorProfile.js +2 -2
  105. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  106. package/dist/components/Contractor/Submit/Submit.js +24 -24
  107. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  108. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +8 -7
  109. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  110. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  111. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  112. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +10 -9
  113. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  114. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
  115. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  116. package/dist/components/Employee/EmployeeList/EmployeeList.js +75 -62
  117. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  118. package/dist/components/Employee/EmployeeList/List.js +27 -25
  119. package/dist/components/Employee/EmployeeList/List.js.map +1 -1
  120. package/dist/components/Employee/EmployeeList/useEmployeeList.d.ts +1 -0
  121. package/dist/components/Employee/EmployeeList/useEmployeeList.js +4 -3
  122. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  123. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +4 -3
  124. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
  125. package/dist/components/Employee/PaymentMethod/BankAccount.d.ts +2 -2
  126. package/dist/components/Employee/PaymentMethod/usePaymentMethod.d.ts +8 -8
  127. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +6 -5
  128. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  129. package/dist/components/Employee/Profile/AdminPersonalDetails.d.ts +2 -2
  130. package/dist/components/Employee/Profile/HomeAddress.js +5 -4
  131. package/dist/components/Employee/Profile/HomeAddress.js.map +1 -1
  132. package/dist/components/Employee/Profile/PersonalDetailsInputs.d.ts +2 -2
  133. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +21 -20
  134. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  135. package/dist/components/Employee/Profile/Profile.js +2 -0
  136. package/dist/components/Employee/Profile/Profile.js.map +1 -1
  137. package/dist/components/Employee/Profile/useProfile.js +4 -3
  138. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  139. package/dist/components/Employee/StateTaxes/useStateTaxes.js +4 -3
  140. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
  141. package/dist/components/Employee/Taxes/useTaxes.js +4 -3
  142. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  143. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.d.ts +4 -2
  144. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +75 -34
  145. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  146. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +10 -5
  147. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +116 -50
  148. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  149. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +6 -5
  150. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  151. package/dist/components/Payroll/PayrollList/PayrollList.d.ts +1 -1
  152. package/dist/components/Payroll/PayrollList/PayrollList.js +24 -11
  153. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  154. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +8 -6
  155. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +34 -25
  156. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  157. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +3 -2
  158. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  159. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.d.ts +2 -1
  160. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js +4 -4
  161. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js.map +1 -1
  162. package/dist/components/Payroll/helpers.d.ts +20 -0
  163. package/dist/components/Payroll/helpers.js +208 -0
  164. package/dist/components/Payroll/helpers.js.map +1 -0
  165. package/dist/components/Payroll/helpers.test.d.ts +1 -0
  166. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +3 -2
  167. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  168. package/dist/helpers/formattedStrings.d.ts +9 -0
  169. package/dist/helpers/formattedStrings.js +55 -16
  170. package/dist/helpers/formattedStrings.js.map +1 -1
  171. package/dist/i18n/I18n.js +11 -11
  172. package/dist/i18n/I18n.js.map +1 -1
  173. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +30 -0
  174. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js.map +1 -0
  175. package/dist/i18n/en/Payroll.PayrollList.json.js +14 -0
  176. package/dist/i18n/en/Payroll.PayrollList.json.js.map +1 -0
  177. package/dist/i18n/en/common.json.d.ts +8 -0
  178. package/dist/i18n/en/common.json.js +15 -13
  179. package/dist/i18n/en/common.json.js.map +1 -1
  180. package/dist/style.css +1 -1
  181. package/dist/types/i18next.d.ts +45 -1
  182. package/package.json +28 -28
@@ -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;
@@ -19,7 +19,7 @@ import { formatDateToStringDate as oe } from "../../../helpers/dateFormatting.js
19
19
  import { normalizeEin as se } from "../../../helpers/federalEin.js";
20
20
  const i = L, n = k, ae = s.object({
21
21
  // Self-onboarding toggle
22
- selfOnboarding: s.boolean().default(!1),
22
+ selfOnboarding: s.boolean(),
23
23
  email: s.string().email().optional(),
24
24
  // Required contractor fields
25
25
  contractorType: s.enum([n.Individual, n.Business]),
@@ -190,7 +190,7 @@ function Se({
190
190
  contractorId: u
191
191
  });
192
192
  });
193
- }, A = F, H = h === n.Business, Z = h === n.Individual, _ = P === i.Hourly, M = [
193
+ }, A = !!F, H = h === n.Business, Z = h === n.Individual, _ = P === i.Hourly, M = [
194
194
  { label: "Individual", value: n.Individual },
195
195
  { label: "Business", value: n.Business }
196
196
  ], U = [
@@ -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":"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"}
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";
3
+ import { useContractorsUpdateOnboardingStatusMutation as _ } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/contractorsUpdateOnboardingStatus.js";
4
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";
5
+ import { useContractorsGetSuspense as A } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/contractorsGet.js";
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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"}
@@ -10,12 +10,13 @@ import { useI18n as S } from "../../../../i18n/I18n.js";
10
10
  import { componentEvents as m } from "../../../../shared/constants.js";
11
11
  import { Flex as g } from "../../../Common/Flex/Flex.js";
12
12
  import "classnames";
13
- function B(e) {
13
+ import "react-i18next";
14
+ function N(e) {
14
15
  return /* @__PURE__ */ o(F, { ...e, children: /* @__PURE__ */ o(O, { ...e }) });
15
16
  }
16
- function O({ employeeId: e, className: s, children: n }) {
17
+ function O({ employeeId: e, className: s, children: t }) {
17
18
  S("Employee.DocumentSigner");
18
- const { onEvent: t } = L(), { data: u, error: c } = f({ employeeId: e }), i = u.formList, p = i.every((r) => !r.requiresSigning);
19
+ const { onEvent: n } = L(), { data: u, error: c } = f({ employeeId: e }), i = u.formList, p = i.every((r) => !r.requiresSigning);
19
20
  return /* @__PURE__ */ o("section", { className: s, children: /* @__PURE__ */ o(
20
21
  h,
21
22
  {
@@ -23,14 +24,14 @@ function O({ employeeId: e, className: s, children: n }) {
23
24
  employeeForms: i,
24
25
  hasSignedAllForms: p,
25
26
  handleContinue: () => {
26
- t(m.EMPLOYEE_FORMS_DONE);
27
+ n(m.EMPLOYEE_FORMS_DONE);
27
28
  },
28
29
  handleRequestFormToSign: (r) => {
29
- t(m.EMPLOYEE_VIEW_FORM_TO_SIGN, { uuid: r.uuid });
30
+ n(m.EMPLOYEE_VIEW_FORM_TO_SIGN, { uuid: r.uuid });
30
31
  },
31
32
  documentListError: c
32
33
  },
33
- children: n || /* @__PURE__ */ l(g, { flexDirection: "column", children: [
34
+ children: t || /* @__PURE__ */ l(g, { flexDirection: "column", children: [
34
35
  /* @__PURE__ */ o(d, {}),
35
36
  /* @__PURE__ */ o(E, {}),
36
37
  /* @__PURE__ */ o(a, {})
@@ -39,6 +40,6 @@ function O({ employeeId: e, className: s, children: n }) {
39
40
  ) });
40
41
  }
41
42
  export {
42
- B as DocumentList
43
+ N as DocumentList
43
44
  };
44
45
  //# sourceMappingURL=DocumentList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentList.js","sources":["../../../../../src/components/Employee/DocumentSigner/DocumentList/DocumentList.tsx"],"sourcesContent":["import { useEmployeeFormsListSuspense } from '@gusto/embedded-api/react-query/employeeFormsList'\nimport { type Form } from '@gusto/embedded-api/models/components/form'\nimport { Head } from './Head'\nimport { List } from './List'\nimport { Actions } from './Actions'\nimport { DocumentListProvider } from './useDocumentList'\nimport {\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { Flex } from '@/components/Common'\n\ninterface DocumentListProps extends CommonComponentInterface {\n employeeId: string\n}\n\nexport function DocumentList(props: DocumentListProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({ employeeId, className, children }: DocumentListProps) {\n useI18n('Employee.DocumentSigner')\n const { onEvent } = useBase()\n\n const { data, error: documentListError } = useEmployeeFormsListSuspense({ employeeId })\n const employeeForms = data.formList!\n\n const hasSignedAllForms = employeeForms.every(employeeForm => !employeeForm.requiresSigning)\n\n const handleRequestFormToSign = (data: Form) => {\n onEvent(componentEvents.EMPLOYEE_VIEW_FORM_TO_SIGN, { uuid: data.uuid })\n }\n\n const handleContinue = () => {\n onEvent(componentEvents.EMPLOYEE_FORMS_DONE)\n }\n\n return (\n <section className={className}>\n <DocumentListProvider\n value={{\n employeeForms,\n hasSignedAllForms,\n handleContinue,\n handleRequestFormToSign,\n documentListError,\n }}\n >\n {children ? (\n children\n ) : (\n <Flex flexDirection=\"column\">\n <Head />\n <List />\n <Actions />\n </Flex>\n )}\n </DocumentListProvider>\n </section>\n )\n}\n"],"names":["DocumentList","props","jsx","BaseComponent","Root","employeeId","className","children","useI18n","onEvent","useBase","data","documentListError","useEmployeeFormsListSuspense","employeeForms","hasSignedAllForms","employeeForm","DocumentListProvider","componentEvents","jsxs","Flex","Head","List","Actions"],"mappings":";;;;;;;;;;;;AAoBO,SAASA,EAAaC,GAAmD;AAC9E,SACE,gBAAAC,EAACC,KAAe,GAAGF,GACjB,4BAACG,GAAA,EAAM,GAAGH,GAAO,EAAA,CACnB;AAEJ;AAEA,SAASG,EAAK,EAAE,YAAAC,GAAY,WAAAC,GAAW,UAAAC,KAA+B;AACpE,EAAAC,EAAQ,yBAAyB;AACjC,QAAM,EAAE,SAAAC,EAAA,IAAYC,EAAA,GAEd,EAAE,MAAAC,GAAM,OAAOC,EAAA,IAAsBC,EAA6B,EAAE,YAAAR,GAAY,GAChFS,IAAgBH,EAAK,UAErBI,IAAoBD,EAAc,MAAM,CAAAE,MAAgB,CAACA,EAAa,eAAe;AAU3F,SACE,gBAAAd,EAAC,aAAQ,WAAAI,GACP,UAAA,gBAAAJ;AAAA,IAACe;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,eAAAH;AAAA,QACA,mBAAAC;AAAA,QACA,gBAVe,MAAM;AAC3B,UAAAN,EAAQS,EAAgB,mBAAmB;AAAA,QAC7C;AAAA,QASQ,yBAfwB,CAACP,MAAe;AAC9C,UAAAF,EAAQS,EAAgB,4BAA4B,EAAE,MAAMP,EAAK,MAAM;AAAA,QACzE;AAAA,QAcQ,mBAAAC;AAAA,MAAA;AAAA,MAGD,UAAAL,KAGC,gBAAAY,EAACC,GAAA,EAAK,eAAc,UAClB,UAAA;AAAA,QAAA,gBAAAlB,EAACmB,GAAA,EAAK;AAAA,0BACLC,GAAA,EAAK;AAAA,0BACLC,GAAA,CAAA,CAAQ;AAAA,MAAA,EAAA,CACX;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;"}
1
+ {"version":3,"file":"DocumentList.js","sources":["../../../../../src/components/Employee/DocumentSigner/DocumentList/DocumentList.tsx"],"sourcesContent":["import { useEmployeeFormsListSuspense } from '@gusto/embedded-api/react-query/employeeFormsList'\nimport { type Form } from '@gusto/embedded-api/models/components/form'\nimport { Head } from './Head'\nimport { List } from './List'\nimport { Actions } from './Actions'\nimport { DocumentListProvider } from './useDocumentList'\nimport {\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { Flex } from '@/components/Common'\n\ninterface DocumentListProps extends CommonComponentInterface {\n employeeId: string\n}\n\nexport function DocumentList(props: DocumentListProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({ employeeId, className, children }: DocumentListProps) {\n useI18n('Employee.DocumentSigner')\n const { onEvent } = useBase()\n\n const { data, error: documentListError } = useEmployeeFormsListSuspense({ employeeId })\n const employeeForms = data.formList!\n\n const hasSignedAllForms = employeeForms.every(employeeForm => !employeeForm.requiresSigning)\n\n const handleRequestFormToSign = (data: Form) => {\n onEvent(componentEvents.EMPLOYEE_VIEW_FORM_TO_SIGN, { uuid: data.uuid })\n }\n\n const handleContinue = () => {\n onEvent(componentEvents.EMPLOYEE_FORMS_DONE)\n }\n\n return (\n <section className={className}>\n <DocumentListProvider\n value={{\n employeeForms,\n hasSignedAllForms,\n handleContinue,\n handleRequestFormToSign,\n documentListError,\n }}\n >\n {children ? (\n children\n ) : (\n <Flex flexDirection=\"column\">\n <Head />\n <List />\n <Actions />\n </Flex>\n )}\n </DocumentListProvider>\n </section>\n )\n}\n"],"names":["DocumentList","props","jsx","BaseComponent","Root","employeeId","className","children","useI18n","onEvent","useBase","data","documentListError","useEmployeeFormsListSuspense","employeeForms","hasSignedAllForms","employeeForm","DocumentListProvider","componentEvents","jsxs","Flex","Head","List","Actions"],"mappings":";;;;;;;;;;;;;AAoBO,SAASA,EAAaC,GAAmD;AAC9E,SACE,gBAAAC,EAACC,KAAe,GAAGF,GACjB,4BAACG,GAAA,EAAM,GAAGH,GAAO,EAAA,CACnB;AAEJ;AAEA,SAASG,EAAK,EAAE,YAAAC,GAAY,WAAAC,GAAW,UAAAC,KAA+B;AACpE,EAAAC,EAAQ,yBAAyB;AACjC,QAAM,EAAE,SAAAC,EAAA,IAAYC,EAAA,GAEd,EAAE,MAAAC,GAAM,OAAOC,EAAA,IAAsBC,EAA6B,EAAE,YAAAR,GAAY,GAChFS,IAAgBH,EAAK,UAErBI,IAAoBD,EAAc,MAAM,CAAAE,MAAgB,CAACA,EAAa,eAAe;AAU3F,SACE,gBAAAd,EAAC,aAAQ,WAAAI,GACP,UAAA,gBAAAJ;AAAA,IAACe;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,eAAAH;AAAA,QACA,mBAAAC;AAAA,QACA,gBAVe,MAAM;AAC3B,UAAAN,EAAQS,EAAgB,mBAAmB;AAAA,QAC7C;AAAA,QASQ,yBAfwB,CAACP,MAAe;AAC9C,UAAAF,EAAQS,EAAgB,4BAA4B,EAAE,MAAMP,EAAK,MAAM;AAAA,QACzE;AAAA,QAcQ,mBAAAC;AAAA,MAAA;AAAA,MAGD,UAAAL,KAGC,gBAAAY,EAACC,GAAA,EAAK,eAAc,UAClB,UAAA;AAAA,QAAA,gBAAAlB,EAACmB,GAAA,EAAK;AAAA,0BACLC,GAAA,EAAK;AAAA,0BACLC,GAAA,CAAA,CAAQ;AAAA,MAAA,EAAA,CACX;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;"}
@@ -6,11 +6,12 @@ import "../../../Base/useBase.js";
6
6
  import "../../../../shared/constants.js";
7
7
  import "classnames";
8
8
  import "dompurify";
9
+ import "../../../../contexts/LocaleProvider/useLocale.js";
9
10
  import "../../../../contexts/ComponentAdapter/useComponentContext.js";
10
11
  import { createCompoundContext as t } from "../../../Base/createCompoundContext.js";
11
- const [x, C] = t("DocumentListContext");
12
+ const [C, D] = t("DocumentListContext");
12
13
  export {
13
- C as DocumentListProvider,
14
- x as useDocumentList
14
+ D as DocumentListProvider,
15
+ C as useDocumentList
15
16
  };
16
17
  //# sourceMappingURL=useDocumentList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDocumentList.js","sources":["../../../../../src/components/Employee/DocumentSigner/DocumentList/useDocumentList.ts"],"sourcesContent":["import type { Form } from '@gusto/embedded-api/models/components/form'\nimport { createCompoundContext } from '@/components/Base'\n\ntype DocumentListContextType = {\n employeeForms: Form[]\n hasSignedAllForms: boolean\n handleContinue: () => void\n handleRequestFormToSign: (form: Form) => void\n documentListError: Error | null\n formToSign?: Form\n}\n\nconst [useDocumentList, DocumentListProvider] =\n createCompoundContext<DocumentListContextType>('DocumentListContext')\nexport { useDocumentList, DocumentListProvider }\n"],"names":["useDocumentList","DocumentListProvider","createCompoundContext"],"mappings":";;;;;;;;;;AAYA,MAAM,CAACA,GAAiBC,CAAoB,IAC1CC,EAA+C,qBAAqB;"}
1
+ {"version":3,"file":"useDocumentList.js","sources":["../../../../../src/components/Employee/DocumentSigner/DocumentList/useDocumentList.ts"],"sourcesContent":["import type { Form } from '@gusto/embedded-api/models/components/form'\nimport { createCompoundContext } from '@/components/Base'\n\ntype DocumentListContextType = {\n employeeForms: Form[]\n hasSignedAllForms: boolean\n handleContinue: () => void\n handleRequestFormToSign: (form: Form) => void\n documentListError: Error | null\n formToSign?: Form\n}\n\nconst [useDocumentList, DocumentListProvider] =\n createCompoundContext<DocumentListContextType>('DocumentListContext')\nexport { useDocumentList, DocumentListProvider }\n"],"names":["useDocumentList","DocumentListProvider","createCompoundContext"],"mappings":";;;;;;;;;;;AAYA,MAAM,CAACA,GAAiBC,CAAoB,IAC1CC,EAA+C,qBAAqB;"}
@@ -13,15 +13,16 @@ import { useI18n as G } from "../../../../i18n/I18n.js";
13
13
  import { componentEvents as i } from "../../../../shared/constants.js";
14
14
  import { Flex as M } from "../../../Common/Flex/Flex.js";
15
15
  import "classnames";
16
+ import "react-i18next";
16
17
  import { SignatureForm as R } from "../../../Common/SignatureForm/SignatureForm.js";
17
- function W(r) {
18
+ function X(r) {
18
19
  return /* @__PURE__ */ o(A, { ...r, children: /* @__PURE__ */ o(j, { ...r }) });
19
20
  }
20
- function j({ employeeId: r, formId: s, className: u, children: t }) {
21
+ function j({ employeeId: r, formId: s, className: u, children: n }) {
21
22
  G("Employee.DocumentSigner");
22
- const { onEvent: e, baseSubmitHandler: a } = C(), { data: c } = x({ employeeId: r, formId: s }), n = c.form, {
23
+ const { onEvent: e, baseSubmitHandler: a } = C(), { data: c } = x({ employeeId: r, formId: s }), t = c.form, {
23
24
  data: { formPdf: f }
24
- } = h({ employeeId: r, formId: n.uuid }), d = f.documentUrl, { mutateAsync: p, isPending: l } = P();
25
+ } = h({ employeeId: r, formId: t.uuid }), d = f.documentUrl, { mutateAsync: p, isPending: l } = P();
25
26
  return /* @__PURE__ */ o("section", { className: u, children: /* @__PURE__ */ o(
26
27
  w,
27
28
  {
@@ -30,16 +31,16 @@ function j({ employeeId: r, formId: s, className: u, children: t }) {
30
31
  handleBack: () => {
31
32
  e(i.CANCEL);
32
33
  },
33
- form: n,
34
+ form: t,
34
35
  isPending: l
35
36
  },
36
37
  children: /* @__PURE__ */ o(R, { onSubmit: async (g) => {
37
38
  await a(g, async (m) => {
38
- if (n.uuid) {
39
+ if (t.uuid) {
39
40
  const { form: S } = await p({
40
41
  request: {
41
42
  employeeId: r,
42
- formId: n.uuid,
43
+ formId: t.uuid,
43
44
  requestBody: {
44
45
  signatureText: m.signature,
45
46
  agree: m.confirmSignature
@@ -49,7 +50,7 @@ function j({ employeeId: r, formId: s, className: u, children: t }) {
49
50
  e(i.EMPLOYEE_SIGN_FORM, S);
50
51
  }
51
52
  });
52
- }, children: /* @__PURE__ */ o(M, { flexDirection: "column", children: t || /* @__PURE__ */ F(E, { children: [
53
+ }, children: /* @__PURE__ */ o(M, { flexDirection: "column", children: n || /* @__PURE__ */ F(E, { children: [
53
54
  /* @__PURE__ */ o(v, {}),
54
55
  /* @__PURE__ */ o(B, {}),
55
56
  /* @__PURE__ */ o(b, {}),
@@ -59,6 +60,6 @@ function j({ employeeId: r, formId: s, className: u, children: t }) {
59
60
  ) });
60
61
  }
61
62
  export {
62
- W as SignatureForm
63
+ X as SignatureForm
63
64
  };
64
65
  //# sourceMappingURL=SignatureForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureForm.js","sources":["../../../../../src/components/Employee/DocumentSigner/SignatureForm/SignatureForm.tsx"],"sourcesContent":["import { useEmployeeFormsGetPdfSuspense } from '@gusto/embedded-api/react-query/employeeFormsGetPdf'\nimport { useEmployeeFormsSignMutation } from '@gusto/embedded-api/react-query/employeeFormsSign'\nimport { useEmployeeFormsGetSuspense } from '@gusto/embedded-api/react-query/employeeFormsGet'\nimport { Form as FormComponent } from './Form'\nimport { Head } from './Head'\nimport { Actions } from './Actions'\nimport { Preview } from './Preview'\nimport { SignatureFormProvider } from './useSignatureForm'\nimport {\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { Flex } from '@/components/Common'\nimport type { SignatureFormInputs } from '@/components/Common/SignatureForm'\nimport { SignatureForm as SharedSignatureForm } from '@/components/Common/SignatureForm'\n\ninterface SignatureFormProps extends CommonComponentInterface {\n employeeId: string\n formId: string\n}\n\nexport function SignatureForm(props: SignatureFormProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({ employeeId, formId, className, children }: SignatureFormProps) {\n useI18n('Employee.DocumentSigner')\n const { onEvent, baseSubmitHandler } = useBase()\n\n const { data } = useEmployeeFormsGetSuspense({ employeeId, formId })\n const form = data.form!\n\n const {\n data: { formPdf },\n } = useEmployeeFormsGetPdfSuspense({ employeeId, formId: form.uuid })\n const pdfUrl = formPdf!.documentUrl\n\n const { mutateAsync: signForm, isPending: isSignFormPending } = useEmployeeFormsSignMutation()\n\n const handleBack = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n const handleSubmit = async (data: SignatureFormInputs) => {\n await baseSubmitHandler(data, async payload => {\n if (form.uuid) {\n const { form: signFormResult } = await signForm({\n request: {\n employeeId,\n formId: form.uuid,\n requestBody: {\n signatureText: payload.signature,\n agree: payload.confirmSignature,\n },\n },\n })\n onEvent(componentEvents.EMPLOYEE_SIGN_FORM, signFormResult)\n }\n })\n }\n\n return (\n <section className={className}>\n <SignatureFormProvider\n value={{\n pdfUrl,\n handleBack,\n form,\n isPending: isSignFormPending,\n }}\n >\n <SharedSignatureForm onSubmit={handleSubmit}>\n <Flex flexDirection=\"column\">\n {children ? (\n children\n ) : (\n <>\n <Head />\n <Preview />\n <FormComponent />\n <Actions />\n </>\n )}\n </Flex>\n </SharedSignatureForm>\n </SignatureFormProvider>\n </section>\n )\n}\n"],"names":["SignatureForm","props","jsx","BaseComponent","Root","employeeId","formId","className","children","useI18n","onEvent","baseSubmitHandler","useBase","data","useEmployeeFormsGetSuspense","form","formPdf","useEmployeeFormsGetPdfSuspense","pdfUrl","signForm","isSignFormPending","useEmployeeFormsSignMutation","SignatureFormProvider","componentEvents","SharedSignatureForm","payload","signFormResult","Flex","jsxs","Fragment","Head","Preview","FormComponent","Actions"],"mappings":";;;;;;;;;;;;;;;;AAyBO,SAASA,EAAcC,GAAoD;AAChF,SACE,gBAAAC,EAACC,KAAe,GAAGF,GACjB,4BAACG,GAAA,EAAM,GAAGH,GAAO,EAAA,CACnB;AAEJ;AAEA,SAASG,EAAK,EAAE,YAAAC,GAAY,QAAAC,GAAQ,WAAAC,GAAW,UAAAC,KAAgC;AAC7E,EAAAC,EAAQ,yBAAyB;AACjC,QAAM,EAAE,SAAAC,GAAS,mBAAAC,EAAA,IAAsBC,EAAA,GAEjC,EAAE,MAAAC,EAAA,IAASC,EAA4B,EAAE,YAAAT,GAAY,QAAAC,GAAQ,GAC7DS,IAAOF,EAAK,MAEZ;AAAA,IACJ,MAAM,EAAE,SAAAG,EAAA;AAAA,EAAQ,IACdC,EAA+B,EAAE,YAAAZ,GAAY,QAAQU,EAAK,MAAM,GAC9DG,IAASF,EAAS,aAElB,EAAE,aAAaG,GAAU,WAAWC,EAAA,IAAsBC,EAAA;AAwBhE,SACE,gBAAAnB,EAAC,aAAQ,WAAAK,GACP,UAAA,gBAAAL;AAAA,IAACoB;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAAJ;AAAA,QACA,YA3BW,MAAM;AACvB,UAAAR,EAAQa,EAAgB,MAAM;AAAA,QAChC;AAAA,QA0BQ,MAAAR;AAAA,QACA,WAAWK;AAAA,MAAA;AAAA,MAGb,UAAA,gBAAAlB,EAACsB,GAAA,EAAoB,UA5BN,OAAOX,MAA8B;AACxD,cAAMF,EAAkBE,GAAM,OAAMY,MAAW;AAC7C,cAAIV,EAAK,MAAM;AACb,kBAAM,EAAE,MAAMW,EAAA,IAAmB,MAAMP,EAAS;AAAA,cAC9C,SAAS;AAAA,gBACP,YAAAd;AAAA,gBACA,QAAQU,EAAK;AAAA,gBACb,aAAa;AAAA,kBACX,eAAeU,EAAQ;AAAA,kBACvB,OAAOA,EAAQ;AAAA,gBAAA;AAAA,cACjB;AAAA,YACF,CACD;AACD,YAAAf,EAAQa,EAAgB,oBAAoBG,CAAc;AAAA,UAC5D;AAAA,QACF,CAAC;AAAA,MACH,GAaQ,UAAA,gBAAAxB,EAACyB,KAAK,eAAc,UACjB,UAAAnB,KAGC,gBAAAoB,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAA3B,EAAC4B,GAAA,EAAK;AAAA,0BACLC,GAAA,EAAQ;AAAA,0BACRC,GAAA,EAAc;AAAA,0BACdC,GAAA,CAAA,CAAQ;AAAA,MAAA,EAAA,CACX,GAEJ,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"SignatureForm.js","sources":["../../../../../src/components/Employee/DocumentSigner/SignatureForm/SignatureForm.tsx"],"sourcesContent":["import { useEmployeeFormsGetPdfSuspense } from '@gusto/embedded-api/react-query/employeeFormsGetPdf'\nimport { useEmployeeFormsSignMutation } from '@gusto/embedded-api/react-query/employeeFormsSign'\nimport { useEmployeeFormsGetSuspense } from '@gusto/embedded-api/react-query/employeeFormsGet'\nimport { Form as FormComponent } from './Form'\nimport { Head } from './Head'\nimport { Actions } from './Actions'\nimport { Preview } from './Preview'\nimport { SignatureFormProvider } from './useSignatureForm'\nimport {\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { Flex } from '@/components/Common'\nimport type { SignatureFormInputs } from '@/components/Common/SignatureForm'\nimport { SignatureForm as SharedSignatureForm } from '@/components/Common/SignatureForm'\n\ninterface SignatureFormProps extends CommonComponentInterface {\n employeeId: string\n formId: string\n}\n\nexport function SignatureForm(props: SignatureFormProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({ employeeId, formId, className, children }: SignatureFormProps) {\n useI18n('Employee.DocumentSigner')\n const { onEvent, baseSubmitHandler } = useBase()\n\n const { data } = useEmployeeFormsGetSuspense({ employeeId, formId })\n const form = data.form!\n\n const {\n data: { formPdf },\n } = useEmployeeFormsGetPdfSuspense({ employeeId, formId: form.uuid })\n const pdfUrl = formPdf!.documentUrl\n\n const { mutateAsync: signForm, isPending: isSignFormPending } = useEmployeeFormsSignMutation()\n\n const handleBack = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n const handleSubmit = async (data: SignatureFormInputs) => {\n await baseSubmitHandler(data, async payload => {\n if (form.uuid) {\n const { form: signFormResult } = await signForm({\n request: {\n employeeId,\n formId: form.uuid,\n requestBody: {\n signatureText: payload.signature,\n agree: payload.confirmSignature,\n },\n },\n })\n onEvent(componentEvents.EMPLOYEE_SIGN_FORM, signFormResult)\n }\n })\n }\n\n return (\n <section className={className}>\n <SignatureFormProvider\n value={{\n pdfUrl,\n handleBack,\n form,\n isPending: isSignFormPending,\n }}\n >\n <SharedSignatureForm onSubmit={handleSubmit}>\n <Flex flexDirection=\"column\">\n {children ? (\n children\n ) : (\n <>\n <Head />\n <Preview />\n <FormComponent />\n <Actions />\n </>\n )}\n </Flex>\n </SharedSignatureForm>\n </SignatureFormProvider>\n </section>\n )\n}\n"],"names":["SignatureForm","props","jsx","BaseComponent","Root","employeeId","formId","className","children","useI18n","onEvent","baseSubmitHandler","useBase","data","useEmployeeFormsGetSuspense","form","formPdf","useEmployeeFormsGetPdfSuspense","pdfUrl","signForm","isSignFormPending","useEmployeeFormsSignMutation","SignatureFormProvider","componentEvents","SharedSignatureForm","payload","signFormResult","Flex","jsxs","Fragment","Head","Preview","FormComponent","Actions"],"mappings":";;;;;;;;;;;;;;;;;AAyBO,SAASA,EAAcC,GAAoD;AAChF,SACE,gBAAAC,EAACC,KAAe,GAAGF,GACjB,4BAACG,GAAA,EAAM,GAAGH,GAAO,EAAA,CACnB;AAEJ;AAEA,SAASG,EAAK,EAAE,YAAAC,GAAY,QAAAC,GAAQ,WAAAC,GAAW,UAAAC,KAAgC;AAC7E,EAAAC,EAAQ,yBAAyB;AACjC,QAAM,EAAE,SAAAC,GAAS,mBAAAC,EAAA,IAAsBC,EAAA,GAEjC,EAAE,MAAAC,EAAA,IAASC,EAA4B,EAAE,YAAAT,GAAY,QAAAC,GAAQ,GAC7DS,IAAOF,EAAK,MAEZ;AAAA,IACJ,MAAM,EAAE,SAAAG,EAAA;AAAA,EAAQ,IACdC,EAA+B,EAAE,YAAAZ,GAAY,QAAQU,EAAK,MAAM,GAC9DG,IAASF,EAAS,aAElB,EAAE,aAAaG,GAAU,WAAWC,EAAA,IAAsBC,EAAA;AAwBhE,SACE,gBAAAnB,EAAC,aAAQ,WAAAK,GACP,UAAA,gBAAAL;AAAA,IAACoB;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAAJ;AAAA,QACA,YA3BW,MAAM;AACvB,UAAAR,EAAQa,EAAgB,MAAM;AAAA,QAChC;AAAA,QA0BQ,MAAAR;AAAA,QACA,WAAWK;AAAA,MAAA;AAAA,MAGb,UAAA,gBAAAlB,EAACsB,GAAA,EAAoB,UA5BN,OAAOX,MAA8B;AACxD,cAAMF,EAAkBE,GAAM,OAAMY,MAAW;AAC7C,cAAIV,EAAK,MAAM;AACb,kBAAM,EAAE,MAAMW,EAAA,IAAmB,MAAMP,EAAS;AAAA,cAC9C,SAAS;AAAA,gBACP,YAAAd;AAAA,gBACA,QAAQU,EAAK;AAAA,gBACb,aAAa;AAAA,kBACX,eAAeU,EAAQ;AAAA,kBACvB,OAAOA,EAAQ;AAAA,gBAAA;AAAA,cACjB;AAAA,YACF,CACD;AACD,YAAAf,EAAQa,EAAgB,oBAAoBG,CAAc;AAAA,UAC5D;AAAA,QACF,CAAC;AAAA,MACH,GAaQ,UAAA,gBAAAxB,EAACyB,KAAK,eAAc,UACjB,UAAAnB,KAGC,gBAAAoB,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAA3B,EAAC4B,GAAA,EAAK;AAAA,0BACLC,GAAA,EAAQ;AAAA,0BACRC,GAAA,EAAc;AAAA,0BACdC,GAAA,CAAA,CAAQ;AAAA,MAAA,EAAA,CACX,GAEJ,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}