@gusto/embedded-react-sdk 0.45.0 → 0.46.2

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 (233) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/components/Common/DataView/DataCards/DataCards.d.ts +2 -1
  3. package/dist/components/Common/DataView/DataCards/DataCards.js +14 -13
  4. package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
  5. package/dist/components/Common/DataView/DataTable/DataTable.d.ts +2 -1
  6. package/dist/components/Common/DataView/DataTable/DataTable.js +51 -50
  7. package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
  8. package/dist/components/Common/DataView/DataView.d.ts +1 -0
  9. package/dist/components/Common/DataView/DataView.js.map +1 -1
  10. package/dist/components/Common/DataView/useDataView.d.ts +8 -1
  11. package/dist/components/Common/DataView/useDataView.js +20 -17
  12. package/dist/components/Common/DataView/useDataView.js.map +1 -1
  13. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +20 -4
  14. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  15. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +20 -4
  16. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  17. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +22 -6
  18. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  19. package/dist/components/Company/BankAccount/BankAccountForm/context.js +20 -4
  20. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  21. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +20 -4
  22. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  23. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/fields.js +4 -4
  24. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +28 -12
  25. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  26. package/dist/components/Company/Industry/Context.js +23 -7
  27. package/dist/components/Company/Industry/Context.js.map +1 -1
  28. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +20 -4
  29. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  30. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +20 -4
  31. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  32. package/dist/components/Company/OnboardingOverview/context.js +20 -4
  33. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  34. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js +5 -5
  35. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +20 -4
  36. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  37. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +20 -4
  38. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  39. package/dist/components/Contractor/Address/useAddress.js +22 -6
  40. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  41. package/dist/components/Contractor/Profile/useContractorProfile.js +52 -42
  42. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  43. package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.d.ts +9 -0
  44. package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.js +76 -0
  45. package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.js.map +1 -0
  46. package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.module.scss.js +8 -0
  47. package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.module.scss.js.map +1 -0
  48. package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.d.ts +11 -0
  49. package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.js +85 -0
  50. package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.js.map +1 -0
  51. package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.module.scss.js +8 -0
  52. package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.module.scss.js.map +1 -0
  53. package/dist/components/Employee/Compensation/management/EditCompensation/index.d.ts +3 -0
  54. package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.d.ts +25 -0
  55. package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.js +81 -0
  56. package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.js.map +1 -0
  57. package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.module.scss.js +8 -0
  58. package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.module.scss.js.map +1 -0
  59. package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.d.ts +18 -0
  60. package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js +171 -0
  61. package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js.map +1 -0
  62. package/dist/components/Employee/Compensation/management/index.d.ts +6 -0
  63. package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.d.ts +6 -1
  64. package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.js +67 -209
  65. package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.js.map +1 -1
  66. package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.d.ts +18 -0
  67. package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js +169 -0
  68. package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js.map +1 -0
  69. package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.d.ts +16 -0
  70. package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.js +36 -30
  71. package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.js.map +1 -1
  72. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.d.ts +1 -1
  73. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js +4 -4
  74. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js.map +1 -1
  75. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +212 -187
  76. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
  77. package/dist/components/Employee/Compensation/shared/useJobForm/fields.js +6 -6
  78. package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.d.ts +8 -0
  79. package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.js +22 -17
  80. package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.js.map +1 -1
  81. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.d.ts +12 -2
  82. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +115 -110
  83. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  84. package/dist/components/Employee/Dashboard/BasicDetailsView.d.ts +8 -3
  85. package/dist/components/Employee/Dashboard/BasicDetailsView.js +108 -84
  86. package/dist/components/Employee/Dashboard/BasicDetailsView.js.map +1 -1
  87. package/dist/components/Employee/Dashboard/Dashboard.d.ts +2 -0
  88. package/dist/components/Employee/Dashboard/Dashboard.js +86 -68
  89. package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
  90. package/dist/components/Employee/Dashboard/DashboardComponents.d.ts +8 -4
  91. package/dist/components/Employee/Dashboard/DashboardComponents.js +147 -93
  92. package/dist/components/Employee/Dashboard/DashboardComponents.js.map +1 -1
  93. package/dist/components/Employee/Dashboard/DocumentsView.js +18 -11
  94. package/dist/components/Employee/Dashboard/DocumentsView.js.map +1 -1
  95. package/dist/components/Employee/Dashboard/JobAndPayView.js +304 -264
  96. package/dist/components/Employee/Dashboard/JobAndPayView.js.map +1 -1
  97. package/dist/components/Employee/Dashboard/JobAndPayView.module.scss.js +10 -0
  98. package/dist/components/Employee/Dashboard/JobAndPayView.module.scss.js.map +1 -0
  99. package/dist/components/Employee/Dashboard/TaxesView.d.ts +7 -2
  100. package/dist/components/Employee/Dashboard/TaxesView.js +68 -54
  101. package/dist/components/Employee/Dashboard/TaxesView.js.map +1 -1
  102. package/dist/components/Employee/Dashboard/dashboardStateMachine.js +152 -142
  103. package/dist/components/Employee/Dashboard/dashboardStateMachine.js.map +1 -1
  104. package/dist/components/Employee/Dashboard/getPendingCompensationChanges.d.ts +6 -0
  105. package/dist/components/Employee/Dashboard/getPendingCompensationChanges.js +13 -12
  106. package/dist/components/Employee/Dashboard/getPendingCompensationChanges.js.map +1 -1
  107. package/dist/components/Employee/Dashboard/hooks/useEmployeeBasicDetails.d.ts +12 -5
  108. package/dist/components/Employee/Dashboard/hooks/useEmployeeBasicDetails.js +21 -21
  109. package/dist/components/Employee/Dashboard/hooks/useEmployeeBasicDetails.js.map +1 -1
  110. package/dist/components/Employee/Dashboard/hooks/useEmployeeCompensation.d.ts +13 -3
  111. package/dist/components/Employee/Dashboard/hooks/useEmployeeCompensation.js +53 -55
  112. package/dist/components/Employee/Dashboard/hooks/useEmployeeCompensation.js.map +1 -1
  113. package/dist/components/Employee/Dashboard/hooks/useEmployeeForms.d.ts +10 -4
  114. package/dist/components/Employee/Dashboard/hooks/useEmployeeForms.js +10 -12
  115. package/dist/components/Employee/Dashboard/hooks/useEmployeeForms.js.map +1 -1
  116. package/dist/components/Employee/Dashboard/hooks/useEmployeeTaxes.d.ts +10 -3
  117. package/dist/components/Employee/Dashboard/hooks/useEmployeeTaxes.js +19 -14
  118. package/dist/components/Employee/Dashboard/hooks/useEmployeeTaxes.js.map +1 -1
  119. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.js +8 -8
  120. package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.js +4 -4
  121. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +20 -4
  122. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  123. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/fields.js +1 -1
  124. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js +37 -40
  125. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js.map +1 -1
  126. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.d.ts +1 -2
  127. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js +64 -71
  128. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js.map +1 -1
  129. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.d.ts +2 -0
  130. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js +25 -0
  131. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js.map +1 -0
  132. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.d.ts +13 -0
  133. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js +37 -0
  134. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js.map +1 -0
  135. package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.d.ts +6 -0
  136. package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js +69 -0
  137. package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js.map +1 -0
  138. package/dist/components/Employee/EmployeeListFlow/index.d.ts +3 -0
  139. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/fields.js +4 -4
  140. package/dist/components/Employee/HomeAddress/management/HomeAddress.js +15 -12
  141. package/dist/components/Employee/HomeAddress/management/HomeAddress.js.map +1 -1
  142. package/dist/components/Employee/HomeAddress/management/HomeAddressView.d.ts +2 -1
  143. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js +86 -83
  144. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
  145. package/dist/components/Employee/PaymentMethod/shared/useBankForm/fields.js +1 -1
  146. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/splitFieldFactory.js +4 -4
  147. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/fields.js +8 -8
  148. package/dist/components/Employee/Profile/shared/useHomeAddressForm/fields.js +5 -5
  149. package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.js +4 -4
  150. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldComponents.js +8 -8
  151. package/dist/components/Employee/Taxes/useTaxes.js +20 -4
  152. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  153. package/dist/components/Employee/WorkAddress/management/WorkAddress.js +14 -11
  154. package/dist/components/Employee/WorkAddress/management/WorkAddress.js.map +1 -1
  155. package/dist/components/Employee/WorkAddress/management/WorkAddressView.d.ts +2 -1
  156. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js +92 -89
  157. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
  158. package/dist/components/Employee/exports/employeeManagement.d.ts +2 -0
  159. package/dist/components/Employee/exports/employeeManagement.js +18 -16
  160. package/dist/components/Employee/exports/employeeManagement.js.map +1 -1
  161. package/dist/components/Employee/index.d.ts +2 -0
  162. package/dist/components/Employee/index.js +32 -30
  163. package/dist/components/Employee/index.js.map +1 -1
  164. package/dist/components/Flow/FlowHeader.js +34 -31
  165. package/dist/components/Flow/FlowHeader.js.map +1 -1
  166. package/dist/components/Flow/useFlow.d.ts +12 -0
  167. package/dist/components/Flow/useFlow.js.map +1 -1
  168. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +34 -26
  169. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  170. package/dist/components/Payroll/usePreparedPayrollData.js +36 -22
  171. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  172. package/dist/components/TimeOff/PolicyList/PolicyList.js +92 -69
  173. package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
  174. package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js +23 -23
  175. package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js.map +1 -1
  176. package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js +52 -40
  177. package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js.map +1 -1
  178. package/dist/components/TimeOff/TimeOffFlow/TimeOffFlowComponents.d.ts +1 -1
  179. package/dist/components/TimeOff/TimeOffFlow/TimeOffFlowComponents.js.map +1 -1
  180. package/dist/components/TimeOff/TimeOffFlow/timeOffStateMachine.js +73 -56
  181. package/dist/components/TimeOff/TimeOffFlow/timeOffStateMachine.js.map +1 -1
  182. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +58 -58
  183. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
  184. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.d.ts +1 -1
  185. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js +91 -87
  186. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js.map +1 -1
  187. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormTypes.d.ts +2 -0
  188. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +91 -124
  189. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
  190. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.d.ts +1 -1
  191. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js +72 -87
  192. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js.map +1 -1
  193. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +1 -6
  194. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +160 -220
  195. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
  196. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.d.ts +7 -3
  197. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js +77 -54
  198. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js.map +1 -1
  199. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.test.d.ts +1 -0
  200. package/dist/components/TimeOff/TimeOffPolicyDetail/EditEmployeeBalanceModal.js +12 -11
  201. package/dist/components/TimeOff/TimeOffPolicyDetail/EditEmployeeBalanceModal.js.map +1 -1
  202. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +177 -147
  203. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
  204. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.d.ts +1 -1
  205. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js +38 -36
  206. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js.map +1 -1
  207. package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTableTypes.d.ts +2 -0
  208. package/dist/i18n/en/Company.TimeOff.SelectEmployees.json.js +10 -10
  209. package/dist/i18n/en/Company.TimeOff.TimeOffPolicies.json.js +17 -15
  210. package/dist/i18n/en/Company.TimeOff.TimeOffPolicies.json.js.map +1 -1
  211. package/dist/i18n/en/Company.TimeOff.TimeOffPolicyDetails.json.js +9 -9
  212. package/dist/i18n/en/Employee.Compensation.json.js +68 -56
  213. package/dist/i18n/en/Employee.Compensation.json.js.map +1 -1
  214. package/dist/i18n/en/Employee.Dashboard.json.js +26 -24
  215. package/dist/i18n/en/Employee.Dashboard.json.js.map +1 -1
  216. package/dist/i18n/en/Employee.DocumentManager.json.js +1 -1
  217. package/dist/i18n/en/Employee.HomeAddress.Management.json.js +12 -10
  218. package/dist/i18n/en/Employee.HomeAddress.Management.json.js.map +1 -1
  219. package/dist/i18n/en/Employee.ManagementEmployeeList.json.js +32 -30
  220. package/dist/i18n/en/Employee.ManagementEmployeeList.json.js.map +1 -1
  221. package/dist/i18n/en/Employee.WorkAddress.Management.json.js +16 -14
  222. package/dist/i18n/en/Employee.WorkAddress.Management.json.js.map +1 -1
  223. package/dist/i18n/en/common.json.d.ts +21 -0
  224. package/dist/partner-hook-utils/form/fields/DatePickerHookField.js +33 -32
  225. package/dist/partner-hook-utils/form/fields/DatePickerHookField.js.map +1 -1
  226. package/dist/partner-hook-utils/types.d.ts +4 -0
  227. package/dist/shared/constants.d.ts +4 -0
  228. package/dist/shared/constants.js +20 -18
  229. package/dist/shared/constants.js.map +1 -1
  230. package/dist/style.css +1 -1
  231. package/dist/types/i18next.d.ts +45 -11
  232. package/docs/reference/endpoint-inventory.json +24 -8
  233. package/package.json +1 -1
@@ -1,271 +1,211 @@
1
- import { jsx as S } from "react/jsx-runtime";
2
- import { useRef as me, useCallback as d, useMemo as p, useState as A } from "react";
3
- import { useTimeOffPoliciesAddEmployeesMutation as ue } from "@gusto/embedded-api/react-query/timeOffPoliciesAddEmployees";
4
- import { useTimeOffPoliciesRemoveEmployeesMutation as de } from "@gusto/embedded-api/react-query/timeOffPoliciesRemoveEmployees";
5
- import { useTimeOffPoliciesGetSuspense as pe } from "@gusto/embedded-api/react-query/timeOffPoliciesGet";
6
- import { useTimeOffPoliciesUpdateMutation as ye } from "@gusto/embedded-api/react-query/timeOffPoliciesUpdate";
7
- import { UnprocessableEntityError as N } from "@gusto/embedded-api/models/errors/unprocessableentityerror";
8
- import { useQueryClient as he } from "@tanstack/react-query";
9
- import { useTranslation as Oe } from "react-i18next";
10
- import { SelectEmployeesPresentation as ge } from "./SelectEmployeesPresentation.js";
11
- import { useSelectEmployeesData as Ee } from "./useSelectEmployeesData.js";
12
- import { useBase as Pe } from "../../../Base/useBase.js";
13
- import { SDKInternalError as x } from "../../../../types/sdkError.js";
14
- import { componentEvents as _ } from "../../../../shared/constants.js";
15
- import { useI18n as Se } from "../../../../i18n/I18n.js";
16
- const z = {
1
+ import { jsx as P } from "react/jsx-runtime";
2
+ import { useRef as ee, useCallback as f, useMemo as O, useState as U } from "react";
3
+ import { useTimeOffPoliciesAddEmployeesMutation as ne } from "@gusto/embedded-api/react-query/timeOffPoliciesAddEmployees";
4
+ import { useTimeOffPoliciesGetSuspense as te } from "@gusto/embedded-api/react-query/timeOffPoliciesGet";
5
+ import { useTimeOffPoliciesUpdateMutation as oe } from "@gusto/embedded-api/react-query/timeOffPoliciesUpdate";
6
+ import { UnprocessableEntityError as se } from "@gusto/embedded-api/models/errors/unprocessableentityerror";
7
+ import { useQueryClient as ie } from "@tanstack/react-query";
8
+ import { useTranslation as ae } from "react-i18next";
9
+ import { SelectEmployeesPresentation as re } from "./SelectEmployeesPresentation.js";
10
+ import { useSelectEmployeesData as ce, matchesEmployeeSearch as le } from "./useSelectEmployeesData.js";
11
+ import { useBase as fe } from "../../../Base/useBase.js";
12
+ import { SDKInternalError as me } from "../../../../types/sdkError.js";
13
+ import { componentEvents as b } from "../../../../shared/constants.js";
14
+ import { useI18n as ue } from "../../../../i18n/I18n.js";
15
+ const I = {
17
16
  vacation: "Vacation Hours",
18
17
  sick: "Sick Hours"
19
18
  };
20
- function k(i, f) {
21
- if (!i) return;
22
- const r = z[f], n = i.eligiblePaidTimeOff?.find((g) => g.name === r)?.accrualBalance;
23
- return n && n.length > 0 ? n : void 0;
19
+ function L(s, r) {
20
+ if (!s) return;
21
+ const t = I[r], a = s.eligiblePaidTimeOff?.find((c) => c.name === t)?.accrualBalance;
22
+ return a && a.length > 0 ? a : void 0;
24
23
  }
25
- function ve(i, f) {
26
- const r = {};
27
- for (const m of i) {
28
- const n = k(m, f);
29
- n && (r[m.uuid] = n);
24
+ function de(s, r) {
25
+ const t = {};
26
+ for (const i of s) {
27
+ const a = L(i, r);
28
+ a && (t[i.uuid] = a);
30
29
  }
31
- return r;
30
+ return t;
32
31
  }
33
- function xe(i) {
34
- return i.mode === "wizard" ? /* @__PURE__ */ S(H, { ...i, mode: "wizard" }) : /* @__PURE__ */ S(Ce, { ...i });
32
+ function Be(s) {
33
+ return s.mode === "wizard" ? /* @__PURE__ */ P(q, { ...s, mode: "wizard" }) : /* @__PURE__ */ P(pe, { ...s });
35
34
  }
36
- function Ce(i) {
37
- const { data: f } = pe({
38
- timeOffPolicyUuid: i.policyId
39
- }), r = f.timeOffPolicy;
40
- if (!r) throw new Error("Unexpected response: missing timeOffPolicy");
41
- const m = r.accrualMethod === "unlimited", n = p(() => {
42
- const u = /* @__PURE__ */ new Set();
43
- for (const l of r.employees)
44
- l.uuid && u.add(l.uuid);
45
- return u;
46
- }, [r.employees]), g = p(() => {
47
- const u = {};
48
- for (const l of r.employees)
49
- l.uuid && (u[l.uuid] = l.balance ?? "0");
50
- return u;
51
- }, [r.employees]);
52
- return /* @__PURE__ */ S(
53
- H,
35
+ function pe(s) {
36
+ const { data: r } = te({
37
+ timeOffPolicyUuid: s.policyId
38
+ }), t = r.timeOffPolicy;
39
+ if (!t) throw new Error("Unexpected response: missing timeOffPolicy");
40
+ const i = t.accrualMethod === "unlimited", a = O(() => {
41
+ const c = /* @__PURE__ */ new Set();
42
+ for (const u of t.employees)
43
+ u.uuid && c.add(u.uuid);
44
+ return c;
45
+ }, [t.employees]);
46
+ return /* @__PURE__ */ P(
47
+ q,
54
48
  {
55
- ...i,
49
+ ...s,
56
50
  mode: "standalone",
57
- originalUuids: n,
58
- originalBalances: g,
59
- hideBalances: m
51
+ existingAssigneeUuids: a,
52
+ hideBalances: i
60
53
  }
61
54
  );
62
55
  }
63
- function H({
64
- companyId: i,
65
- policyId: f,
66
- policyType: r,
67
- mode: m = "standalone",
68
- originalUuids: n,
69
- originalBalances: g,
70
- hideBalances: u = !1
56
+ function q({
57
+ companyId: s,
58
+ policyId: r,
59
+ policyType: t,
60
+ mode: i = "standalone",
61
+ existingAssigneeUuids: a,
62
+ hideBalances: c = !1
71
63
  }) {
72
- Se("Company.TimeOff.SelectEmployees");
73
- const { t: l } = Oe("Company.TimeOff.SelectEmployees"), { onEvent: y, baseSubmitHandler: b } = Pe(), M = he(), {
74
- filteredEmployees: v,
75
- selectedUuids: a,
76
- searchValue: K,
77
- pagination: V,
78
- isFetching: W,
79
- handleSelect: B,
80
- handleSelectAll: D,
81
- handleSearchChange: j,
82
- handleSearchClear: Q
83
- } = Ee(i, n), h = me(/* @__PURE__ */ new Map()), G = d(
84
- (e, t) => {
85
- t ? h.current.set(e.uuid, e) : h.current.delete(e.uuid), B(e, t);
64
+ ue("Company.TimeOff.SelectEmployees");
65
+ const { t: u } = ae("Company.TimeOff.SelectEmployees"), { onEvent: d, baseSubmitHandler: v } = fe(), A = ie(), {
66
+ filteredEmployees: Y,
67
+ eligibleEmployees: y,
68
+ selectedUuids: l,
69
+ searchValue: g,
70
+ pagination: x,
71
+ isFetching: N,
72
+ handleSelect: _,
73
+ handleSelectAll: w,
74
+ handleSearchChange: R,
75
+ handleSearchClear: z
76
+ } = ce(s, a), p = ee(/* @__PURE__ */ new Map()), k = f(
77
+ (e, n) => {
78
+ n ? p.current.set(e.uuid, e) : p.current.delete(e.uuid), _(e, n);
86
79
  },
87
- [B]
88
- ), $ = d(
89
- (e, t) => {
90
- for (const s of t)
91
- e ? h.current.set(s.uuid, s) : h.current.delete(s.uuid);
92
- D(e, t);
80
+ [_]
81
+ ), H = f(
82
+ (e) => {
83
+ const n = g ? y.filter((o) => le(o, g)) : y;
84
+ for (const o of n)
85
+ e ? p.current.set(o.uuid, o) : p.current.delete(o.uuid);
86
+ w(e);
93
87
  },
94
- [D]
95
- ), R = p(
96
- () => ve(v, r),
97
- [v, r]
98
- ), [P, J] = A({}), X = p(
99
- () => ({ ...R, ...P }),
100
- [R, P]
101
- ), { mutateAsync: T, isPending: F } = ue(), { mutateAsync: q, isPending: L } = de(), { mutateAsync: I, isPending: Z } = ye(), U = F || L || Z, [ee, C] = A(!1), [te, w] = A(!1), ne = d((e, t) => {
102
- J((s) => ({ ...s, [e]: t }));
103
- }, []), Y = d(
104
- (e) => e.map((t) => {
105
- if (u) return { uuid: t, balance: "0" };
106
- const s = P[t], o = k(
107
- h.current.get(t),
108
- r
109
- ), c = s && s.length > 0 ? s : o ?? "0";
110
- return { uuid: t, balance: c };
88
+ [y, g, w]
89
+ ), M = O(
90
+ () => de(y, t),
91
+ [y, t]
92
+ ), [E, K] = U({}), V = O(
93
+ () => ({ ...M, ...E }),
94
+ [M, E]
95
+ ), { mutateAsync: B, isPending: D } = ne(), { mutateAsync: T, isPending: W } = oe(), j = D || W, [Q, S] = U(!1), G = f((e, n) => {
96
+ K((o) => ({ ...o, [e]: n }));
97
+ }, []), F = f(
98
+ (e) => e.map((n) => {
99
+ if (c) return { uuid: n, balance: "0" };
100
+ const o = E[n], m = L(
101
+ p.current.get(n),
102
+ t
103
+ ), C = o && o.length > 0 ? o : m ?? "0";
104
+ return { uuid: n, balance: C };
111
105
  }),
112
- [u, P, r]
113
- ), O = d(
114
- async (e, t, s = !1) => {
115
- await b({}, async () => {
116
- if (t.length > 0)
117
- try {
118
- await q({
119
- request: {
120
- timeOffPolicyUuid: f,
121
- requestBody: { employees: t.map((c) => ({ uuid: c })) }
122
- }
123
- });
124
- } catch (c) {
125
- if (c instanceof N) {
126
- const E = c.errors[0]?.message ?? "";
127
- throw new x(
128
- l("errors.removeEmployeesFailed", { details: E }),
129
- "api_error"
130
- );
131
- }
132
- throw c;
133
- }
134
- let o;
135
- if (e.length > 0 && (o = (await T({
106
+ [c, E, t]
107
+ ), h = f(
108
+ async (e) => {
109
+ await v({}, async () => {
110
+ let n;
111
+ if (e.length > 0 && (n = (await B({
136
112
  request: {
137
- timeOffPolicyUuid: f,
138
- requestBody: { employees: Y(e) }
113
+ timeOffPolicyUuid: r,
114
+ requestBody: { employees: F(e) }
139
115
  }
140
- })).timeOffPolicy), s && o) {
141
- const c = typeof o == "object" && "version" in o ? String(o.version) : "";
116
+ })).timeOffPolicy), i === "wizard" && n) {
117
+ const o = typeof n == "object" && "version" in n ? String(n.version) : "";
142
118
  try {
143
- await I({
119
+ await T({
144
120
  request: {
145
- timeOffPolicyUuid: f,
146
- requestBody: { complete: !0, version: c }
121
+ timeOffPolicyUuid: r,
122
+ requestBody: { complete: !0, version: o }
147
123
  }
148
124
  });
149
- } catch (E) {
150
- if (E instanceof N) {
151
- const fe = E.errors[0]?.message ?? "";
152
- throw new x(
153
- l("errors.completePolicyFailed", { details: fe }),
125
+ } catch (m) {
126
+ if (m instanceof se) {
127
+ const C = m.errors[0]?.message ?? "";
128
+ throw new me(
129
+ u("errors.completePolicyFailed", { details: C }),
154
130
  "api_error"
155
131
  );
156
132
  }
157
- throw E;
133
+ throw m;
158
134
  }
159
135
  }
160
- M.invalidateQueries({
136
+ A.invalidateQueries({
161
137
  queryKey: ["@gusto/embedded-api", "timeOffPolicies", "get"]
162
- }), y(_.TIME_OFF_ADD_EMPLOYEES_DONE, o);
138
+ }), d(b.TIME_OFF_ADD_EMPLOYEES_DONE, n);
163
139
  });
164
140
  },
165
141
  [
166
- b,
167
- q,
142
+ i,
143
+ v,
144
+ B,
145
+ F,
168
146
  T,
169
- Y,
170
- I,
171
- f,
172
- M,
173
- y,
174
- l
147
+ r,
148
+ A,
149
+ d,
150
+ u
175
151
  ]
176
- ), oe = d(async () => {
177
- if (m === "wizard") {
178
- const o = [...a];
179
- await O(o, [], !0);
152
+ ), $ = f(async () => {
153
+ const e = [...l];
154
+ if (e.length === 0 && i === "standalone") {
155
+ d(b.TIME_OFF_ADD_EMPLOYEES_DONE);
180
156
  return;
181
157
  }
182
- const e = n ?? /* @__PURE__ */ new Set(), t = [...a].filter((o) => !e.has(o)), s = [...e].filter((o) => !a.has(o));
183
- if (t.length === 0 && s.length === 0) {
184
- y(_.TIME_OFF_ADD_EMPLOYEES_DONE);
158
+ if (i === "standalone" && e.length > 0) {
159
+ S(!0);
185
160
  return;
186
161
  }
187
- if (s.length > 0) {
188
- C(!0);
189
- return;
190
- }
191
- if (t.length > 0) {
192
- w(!0);
193
- return;
194
- }
195
- }, [m, n, a, y, O]), se = d(async () => {
196
- const e = n ?? /* @__PURE__ */ new Set(), t = [...a].filter((o) => !e.has(o)), s = [...e].filter((o) => !a.has(o));
197
- C(!1), await O(t, s);
198
- }, [n, a, O]), re = d(async () => {
199
- const e = n ?? /* @__PURE__ */ new Set(), t = [...a].filter((o) => !e.has(o)), s = [...e].filter((o) => !a.has(o));
200
- w(!1), await O(t, s);
201
- }, [n, a, O]), ae = p(() => {
202
- if (!n) return a.size;
203
- let e = 0;
204
- for (const t of a) n.has(t) || (e += 1);
205
- return e;
206
- }, [n, a]), ie = p(() => {
207
- if (!n) return 0;
208
- let e = 0;
209
- for (const t of n) a.has(t) || (e += 1);
210
- return e;
211
- }, [n, a]), ce = p(() => {
212
- const e = n ?? /* @__PURE__ */ new Set(), t = z[r];
213
- for (const s of a) {
214
- if (e.has(s)) continue;
215
- if (h.current.get(s)?.eligiblePaidTimeOff?.some((c) => c.name === t))
162
+ await h(e);
163
+ }, [i, l, d, h]), J = f(async () => {
164
+ const e = [...l];
165
+ S(!1), await h(e);
166
+ }, [l, h]), X = O(() => {
167
+ const e = I[t];
168
+ for (const n of l)
169
+ if (p.current.get(n)?.eligiblePaidTimeOff?.some((m) => m.name === e))
216
170
  return !0;
217
- }
218
171
  return !1;
219
- }, [a, n, r]), le = d(() => {
220
- y(_.TIME_OFF_ADD_EMPLOYEES_BACK);
221
- }, [y]);
222
- return /* @__PURE__ */ S(
223
- ge,
172
+ }, [l, t]), Z = f(() => {
173
+ d(b.TIME_OFF_ADD_EMPLOYEES_BACK);
174
+ }, [d]);
175
+ return /* @__PURE__ */ P(
176
+ re,
224
177
  {
225
- employees: v,
226
- selectedUuids: a,
227
- searchValue: K,
228
- onSelect: G,
229
- onSelectAll: $,
230
- onSearchChange: j,
231
- onSearchClear: Q,
232
- onBack: le,
233
- onContinue: oe,
234
- showReassignmentWarning: ce,
235
- policyTypeLabel: l(`policyTypeLabel_${r}`),
236
- balances: u ? void 0 : X,
237
- onBalanceChange: u ? void 0 : ne,
238
- pagination: V,
239
- isFetching: W,
240
- isPending: U,
241
- originallyOnPolicyUuids: n,
242
- originalBalances: g,
243
- removeConfirmDialog: m === "standalone" ? {
244
- isOpen: ee,
245
- count: ie,
246
- onConfirm: () => {
247
- se();
248
- },
249
- onClose: () => {
250
- C(!1);
251
- },
252
- isPending: L
253
- } : void 0,
254
- addConfirmDialog: m === "standalone" ? {
255
- isOpen: te,
256
- count: ae,
178
+ employees: Y,
179
+ selectedUuids: l,
180
+ searchValue: g,
181
+ onSelect: k,
182
+ onSelectAll: H,
183
+ onSearchChange: R,
184
+ onSearchClear: z,
185
+ onBack: Z,
186
+ onContinue: $,
187
+ showReassignmentWarning: X,
188
+ policyTypeLabel: u(`policyTypeLabel_${t}`),
189
+ balances: c ? void 0 : V,
190
+ onBalanceChange: c ? void 0 : G,
191
+ pagination: x,
192
+ isFetching: N,
193
+ isPending: j,
194
+ addConfirmDialog: i === "standalone" ? {
195
+ isOpen: Q,
196
+ count: l.size,
257
197
  onConfirm: () => {
258
- re();
198
+ J();
259
199
  },
260
200
  onClose: () => {
261
- w(!1);
201
+ S(!1);
262
202
  },
263
- isPending: F
203
+ isPending: D
264
204
  } : void 0
265
205
  }
266
206
  );
267
207
  }
268
208
  export {
269
- xe as SelectEmployeesTimeOff
209
+ Be as SelectEmployeesTimeOff
270
210
  };
271
211
  //# sourceMappingURL=SelectEmployeesTimeOff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectEmployeesTimeOff.js","sources":["../../../../../src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react'\nimport { useTimeOffPoliciesAddEmployeesMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesAddEmployees'\nimport { useTimeOffPoliciesRemoveEmployeesMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesRemoveEmployees'\nimport { useTimeOffPoliciesGetSuspense } from '@gusto/embedded-api/react-query/timeOffPoliciesGet'\nimport { useTimeOffPoliciesUpdateMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesUpdate'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport type { CreatableTimeOffPolicyType } from '../../TimeOffFlow/timeOffPolicyTypes'\nimport { SelectEmployeesPresentation } from './SelectEmployeesPresentation'\nimport { useSelectEmployeesData } from './useSelectEmployeesData'\nimport type { EmployeeItem } from './SelectEmployeesPresentationTypes'\nimport { useBase } from '@/components/Base/useBase'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { componentEvents } from '@/shared/constants'\nimport { useI18n } from '@/i18n'\n\ninterface SelectEmployeesTimeOffProps {\n companyId: string\n policyId: string\n policyType: CreatableTimeOffPolicyType\n mode?: 'standalone' | 'wizard'\n}\n\nconst PAID_TIME_OFF_NAME_BY_POLICY_TYPE: Record<CreatableTimeOffPolicyType, string> = {\n vacation: 'Vacation Hours',\n sick: 'Sick Hours',\n}\n\nfunction extractCarryOverBalance(\n employee: EmployeeItem | undefined,\n policyType: CreatableTimeOffPolicyType,\n): string | undefined {\n if (!employee) return undefined\n const targetName = PAID_TIME_OFF_NAME_BY_POLICY_TYPE[policyType]\n const matching = employee.eligiblePaidTimeOff?.find(pto => pto.name === targetName)\n const balance = matching?.accrualBalance\n return balance && balance.length > 0 ? balance : undefined\n}\n\nfunction deriveCarryOverBalances(\n employees: EmployeeItem[],\n policyType: CreatableTimeOffPolicyType,\n): Record<string, string> {\n const map: Record<string, string> = {}\n for (const employee of employees) {\n const balance = extractCarryOverBalance(employee, policyType)\n if (balance) {\n map[employee.uuid] = balance\n }\n }\n return map\n}\n\nexport function SelectEmployeesTimeOff(props: SelectEmployeesTimeOffProps) {\n if (props.mode === 'wizard') {\n return <SelectEmployeesTimeOffInner {...props} mode=\"wizard\" />\n }\n return <StandaloneLoader {...props} />\n}\n\nfunction StandaloneLoader(props: SelectEmployeesTimeOffProps) {\n const { data: policyResponse } = useTimeOffPoliciesGetSuspense({\n timeOffPolicyUuid: props.policyId,\n })\n const policy = policyResponse.timeOffPolicy\n if (!policy) throw new Error('Unexpected response: missing timeOffPolicy')\n\n const isUnlimited = policy.accrualMethod === 'unlimited'\n\n const originalUuids = useMemo(() => {\n const set = new Set<string>()\n for (const e of policy.employees) {\n if (e.uuid) set.add(e.uuid)\n }\n return set\n }, [policy.employees])\n\n const originalBalances = useMemo(() => {\n const map: Record<string, string> = {}\n for (const e of policy.employees) {\n if (e.uuid) map[e.uuid] = e.balance ?? '0'\n }\n return map\n }, [policy.employees])\n\n return (\n <SelectEmployeesTimeOffInner\n {...props}\n mode=\"standalone\"\n originalUuids={originalUuids}\n originalBalances={originalBalances}\n hideBalances={isUnlimited}\n />\n )\n}\n\ninterface InnerProps extends SelectEmployeesTimeOffProps {\n originalUuids?: Set<string>\n originalBalances?: Record<string, string>\n hideBalances?: boolean\n}\n\nfunction SelectEmployeesTimeOffInner({\n companyId,\n policyId,\n policyType,\n mode = 'standalone',\n originalUuids,\n originalBalances,\n hideBalances = false,\n}: InnerProps) {\n useI18n('Company.TimeOff.SelectEmployees')\n const { t } = useTranslation('Company.TimeOff.SelectEmployees')\n const { onEvent, baseSubmitHandler } = useBase()\n const queryClient = useQueryClient()\n const {\n filteredEmployees,\n selectedUuids,\n searchValue,\n pagination,\n isFetching,\n handleSelect,\n handleSelectAll,\n handleSearchChange,\n handleSearchClear,\n } = useSelectEmployeesData(companyId, originalUuids)\n\n // Captures the full Employee record at the moment a row is selected so\n // their carry-over balance is still available at submit time even if the\n // user has since searched/paginated the row out of view. Without this,\n // `selectedUuids` would point at UUIDs we no longer have data for.\n const selectedEmployeesRef = useRef(new Map<string, EmployeeItem>())\n\n const handleSelectWithCapture = useCallback(\n (item: EmployeeItem, checked: boolean) => {\n if (checked) {\n selectedEmployeesRef.current.set(item.uuid, item)\n } else {\n selectedEmployeesRef.current.delete(item.uuid)\n }\n handleSelect(item, checked)\n },\n [handleSelect],\n )\n\n const handleSelectAllWithCapture = useCallback(\n (checked: boolean, visibleItems: EmployeeItem[]) => {\n for (const item of visibleItems) {\n if (checked) {\n selectedEmployeesRef.current.set(item.uuid, item)\n } else {\n selectedEmployeesRef.current.delete(item.uuid)\n }\n }\n handleSelectAll(checked, visibleItems)\n },\n [handleSelectAll],\n )\n\n const carryOverBalances = useMemo(\n () => deriveCarryOverBalances(filteredEmployees, policyType),\n [filteredEmployees, policyType],\n )\n\n const [balances, setBalances] = useState<Record<string, string>>({})\n\n const effectiveBalances = useMemo<Record<string, string>>(\n () => ({ ...carryOverBalances, ...balances }),\n [carryOverBalances, balances],\n )\n\n const { mutateAsync: addEmployees, isPending: isAddPending } =\n useTimeOffPoliciesAddEmployeesMutation()\n const { mutateAsync: removeEmployees, isPending: isRemovePending } =\n useTimeOffPoliciesRemoveEmployeesMutation()\n const { mutateAsync: updatePolicy, isPending: isUpdatePending } =\n useTimeOffPoliciesUpdateMutation()\n const isSubmitPending = isAddPending || isRemovePending || isUpdatePending\n\n const [confirmRemoveOpen, setConfirmRemoveOpen] = useState(false)\n const [confirmAddOpen, setConfirmAddOpen] = useState(false)\n\n const handleBalanceChange = useCallback((uuid: string, value: string) => {\n setBalances(prev => ({ ...prev, [uuid]: value }))\n }, [])\n\n const buildAddPayload = useCallback(\n (uuids: string[]) =>\n uuids.map(uuid => {\n if (hideBalances) return { uuid, balance: '0' }\n const userValue = balances[uuid]\n const carryOver = extractCarryOverBalance(\n selectedEmployeesRef.current.get(uuid),\n policyType,\n )\n const balance = userValue && userValue.length > 0 ? userValue : (carryOver ?? '0')\n return { uuid, balance }\n }),\n [hideBalances, balances, policyType],\n )\n\n const submitDiff = useCallback(\n async (toAdd: string[], toRemove: string[], markComplete = false) => {\n await baseSubmitHandler({}, async () => {\n if (toRemove.length > 0) {\n try {\n await removeEmployees({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: { employees: toRemove.map(uuid => ({ uuid })) },\n },\n })\n } catch (err) {\n if (err instanceof UnprocessableEntityError) {\n const apiMessage = err.errors[0]?.message ?? ''\n throw new SDKInternalError(\n t('errors.removeEmployeesFailed', { details: apiMessage }),\n 'api_error',\n )\n }\n throw err\n }\n }\n let policyResult: unknown\n if (toAdd.length > 0) {\n const response = await addEmployees({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: { employees: buildAddPayload(toAdd) },\n },\n })\n policyResult = response.timeOffPolicy\n }\n if (markComplete && policyResult) {\n const version =\n typeof policyResult === 'object' && 'version' in policyResult\n ? String((policyResult as { version: unknown }).version)\n : ''\n try {\n await updatePolicy({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: { complete: true, version },\n },\n })\n } catch (err) {\n if (err instanceof UnprocessableEntityError) {\n const apiMessage = err.errors[0]?.message ?? ''\n throw new SDKInternalError(\n t('errors.completePolicyFailed', { details: apiMessage }),\n 'api_error',\n )\n }\n throw err\n }\n }\n void queryClient.invalidateQueries({\n queryKey: ['@gusto/embedded-api', 'timeOffPolicies', 'get'],\n })\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_DONE, policyResult)\n })\n },\n [\n baseSubmitHandler,\n removeEmployees,\n addEmployees,\n buildAddPayload,\n updatePolicy,\n policyId,\n queryClient,\n onEvent,\n t,\n ],\n )\n\n const handleContinue = useCallback(async () => {\n if (mode === 'wizard') {\n const toAdd = [...selectedUuids]\n await submitDiff(toAdd, [], true)\n return\n }\n\n const original = originalUuids ?? new Set<string>()\n const toAdd = [...selectedUuids].filter(uuid => !original.has(uuid))\n const toRemove = [...original].filter(uuid => !selectedUuids.has(uuid))\n\n if (toAdd.length === 0 && toRemove.length === 0) {\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_DONE)\n return\n }\n\n if (toRemove.length > 0) {\n setConfirmRemoveOpen(true)\n return\n }\n\n if (toAdd.length > 0) {\n setConfirmAddOpen(true)\n return\n }\n }, [mode, originalUuids, selectedUuids, onEvent, submitDiff])\n\n const handleConfirmRemove = useCallback(async () => {\n const original = originalUuids ?? new Set<string>()\n const toAdd = [...selectedUuids].filter(uuid => !original.has(uuid))\n const toRemove = [...original].filter(uuid => !selectedUuids.has(uuid))\n setConfirmRemoveOpen(false)\n await submitDiff(toAdd, toRemove)\n }, [originalUuids, selectedUuids, submitDiff])\n\n const handleConfirmAdd = useCallback(async () => {\n const original = originalUuids ?? new Set<string>()\n const toAdd = [...selectedUuids].filter(uuid => !original.has(uuid))\n const toRemove = [...original].filter(uuid => !selectedUuids.has(uuid))\n setConfirmAddOpen(false)\n await submitDiff(toAdd, toRemove)\n }, [originalUuids, selectedUuids, submitDiff])\n\n const addCount = useMemo(() => {\n if (!originalUuids) return selectedUuids.size\n let count = 0\n for (const uuid of selectedUuids) if (!originalUuids.has(uuid)) count += 1\n return count\n }, [originalUuids, selectedUuids])\n\n const removeCount = useMemo(() => {\n if (!originalUuids) return 0\n let count = 0\n for (const uuid of originalUuids) if (!selectedUuids.has(uuid)) count += 1\n return count\n }, [originalUuids, selectedUuids])\n\n const showReassignmentWarning = useMemo(() => {\n const originalSet = originalUuids ?? new Set<string>()\n const targetPtoName = PAID_TIME_OFF_NAME_BY_POLICY_TYPE[policyType]\n for (const uuid of selectedUuids) {\n if (originalSet.has(uuid)) continue\n const employee = selectedEmployeesRef.current.get(uuid)\n if (employee?.eligiblePaidTimeOff?.some(pto => pto.name === targetPtoName)) {\n return true\n }\n }\n return false\n }, [selectedUuids, originalUuids, policyType])\n\n const handleBack = useCallback(() => {\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_BACK)\n }, [onEvent])\n\n return (\n <SelectEmployeesPresentation\n employees={filteredEmployees}\n selectedUuids={selectedUuids}\n searchValue={searchValue}\n onSelect={handleSelectWithCapture}\n onSelectAll={handleSelectAllWithCapture}\n onSearchChange={handleSearchChange}\n onSearchClear={handleSearchClear}\n onBack={handleBack}\n onContinue={handleContinue}\n showReassignmentWarning={showReassignmentWarning}\n policyTypeLabel={t(`policyTypeLabel_${policyType}`)}\n balances={hideBalances ? undefined : effectiveBalances}\n onBalanceChange={hideBalances ? undefined : handleBalanceChange}\n pagination={pagination}\n isFetching={isFetching}\n isPending={isSubmitPending}\n originallyOnPolicyUuids={originalUuids}\n originalBalances={originalBalances}\n removeConfirmDialog={\n mode === 'standalone'\n ? {\n isOpen: confirmRemoveOpen,\n count: removeCount,\n onConfirm: () => {\n void handleConfirmRemove()\n },\n onClose: () => {\n setConfirmRemoveOpen(false)\n },\n isPending: isRemovePending,\n }\n : undefined\n }\n addConfirmDialog={\n mode === 'standalone'\n ? {\n isOpen: confirmAddOpen,\n count: addCount,\n onConfirm: () => {\n void handleConfirmAdd()\n },\n onClose: () => {\n setConfirmAddOpen(false)\n },\n isPending: isAddPending,\n }\n : undefined\n }\n />\n )\n}\n"],"names":["PAID_TIME_OFF_NAME_BY_POLICY_TYPE","extractCarryOverBalance","employee","policyType","targetName","balance","pto","deriveCarryOverBalances","employees","map","SelectEmployeesTimeOff","props","jsx","SelectEmployeesTimeOffInner","StandaloneLoader","policyResponse","useTimeOffPoliciesGetSuspense","policy","isUnlimited","originalUuids","useMemo","set","e","originalBalances","companyId","policyId","mode","hideBalances","useI18n","t","useTranslation","onEvent","baseSubmitHandler","useBase","queryClient","useQueryClient","filteredEmployees","selectedUuids","searchValue","pagination","isFetching","handleSelect","handleSelectAll","handleSearchChange","handleSearchClear","useSelectEmployeesData","selectedEmployeesRef","useRef","handleSelectWithCapture","useCallback","item","checked","handleSelectAllWithCapture","visibleItems","carryOverBalances","balances","setBalances","useState","effectiveBalances","addEmployees","isAddPending","useTimeOffPoliciesAddEmployeesMutation","removeEmployees","isRemovePending","useTimeOffPoliciesRemoveEmployeesMutation","updatePolicy","isUpdatePending","useTimeOffPoliciesUpdateMutation","isSubmitPending","confirmRemoveOpen","setConfirmRemoveOpen","confirmAddOpen","setConfirmAddOpen","handleBalanceChange","uuid","value","prev","buildAddPayload","uuids","userValue","carryOver","submitDiff","toAdd","toRemove","markComplete","err","UnprocessableEntityError","apiMessage","SDKInternalError","policyResult","version","componentEvents","handleContinue","original","handleConfirmRemove","handleConfirmAdd","addCount","count","removeCount","showReassignmentWarning","originalSet","targetPtoName","handleBack","SelectEmployeesPresentation"],"mappings":"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"}
1
+ {"version":3,"file":"SelectEmployeesTimeOff.js","sources":["../../../../../src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react'\nimport { useTimeOffPoliciesAddEmployeesMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesAddEmployees'\nimport { useTimeOffPoliciesGetSuspense } from '@gusto/embedded-api/react-query/timeOffPoliciesGet'\nimport { useTimeOffPoliciesUpdateMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesUpdate'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport type { CreatableTimeOffPolicyType } from '../../TimeOffFlow/timeOffPolicyTypes'\nimport { SelectEmployeesPresentation } from './SelectEmployeesPresentation'\nimport { matchesEmployeeSearch, useSelectEmployeesData } from './useSelectEmployeesData'\nimport type { EmployeeItem } from './SelectEmployeesPresentationTypes'\nimport { useBase } from '@/components/Base/useBase'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { componentEvents } from '@/shared/constants'\nimport { useI18n } from '@/i18n'\n\ninterface SelectEmployeesTimeOffProps {\n companyId: string\n policyId: string\n policyType: CreatableTimeOffPolicyType\n mode?: 'standalone' | 'wizard'\n}\n\nconst PAID_TIME_OFF_NAME_BY_POLICY_TYPE: Record<CreatableTimeOffPolicyType, string> = {\n vacation: 'Vacation Hours',\n sick: 'Sick Hours',\n}\n\nfunction extractCarryOverBalance(\n employee: EmployeeItem | undefined,\n policyType: CreatableTimeOffPolicyType,\n): string | undefined {\n if (!employee) return undefined\n const targetName = PAID_TIME_OFF_NAME_BY_POLICY_TYPE[policyType]\n const matching = employee.eligiblePaidTimeOff?.find(pto => pto.name === targetName)\n const balance = matching?.accrualBalance\n return balance && balance.length > 0 ? balance : undefined\n}\n\nfunction deriveCarryOverBalances(\n employees: EmployeeItem[],\n policyType: CreatableTimeOffPolicyType,\n): Record<string, string> {\n const map: Record<string, string> = {}\n for (const employee of employees) {\n const balance = extractCarryOverBalance(employee, policyType)\n if (balance) {\n map[employee.uuid] = balance\n }\n }\n return map\n}\n\nexport function SelectEmployeesTimeOff(props: SelectEmployeesTimeOffProps) {\n if (props.mode === 'wizard') {\n return <SelectEmployeesTimeOffInner {...props} mode=\"wizard\" />\n }\n return <StandaloneLoader {...props} />\n}\n\nfunction StandaloneLoader(props: SelectEmployeesTimeOffProps) {\n const { data: policyResponse } = useTimeOffPoliciesGetSuspense({\n timeOffPolicyUuid: props.policyId,\n })\n const policy = policyResponse.timeOffPolicy\n if (!policy) throw new Error('Unexpected response: missing timeOffPolicy')\n\n const isUnlimited = policy.accrualMethod === 'unlimited'\n\n const existingAssigneeUuids = useMemo(() => {\n const set = new Set<string>()\n for (const e of policy.employees) {\n if (e.uuid) set.add(e.uuid)\n }\n return set\n }, [policy.employees])\n\n return (\n <SelectEmployeesTimeOffInner\n {...props}\n mode=\"standalone\"\n existingAssigneeUuids={existingAssigneeUuids}\n hideBalances={isUnlimited}\n />\n )\n}\n\ninterface InnerProps extends SelectEmployeesTimeOffProps {\n existingAssigneeUuids?: Set<string>\n hideBalances?: boolean\n}\n\nfunction SelectEmployeesTimeOffInner({\n companyId,\n policyId,\n policyType,\n mode = 'standalone',\n existingAssigneeUuids,\n hideBalances = false,\n}: InnerProps) {\n useI18n('Company.TimeOff.SelectEmployees')\n const { t } = useTranslation('Company.TimeOff.SelectEmployees')\n const { onEvent, baseSubmitHandler } = useBase()\n const queryClient = useQueryClient()\n const {\n filteredEmployees,\n eligibleEmployees,\n selectedUuids,\n searchValue,\n pagination,\n isFetching,\n handleSelect,\n handleSelectAll,\n handleSearchChange,\n handleSearchClear,\n } = useSelectEmployeesData(companyId, existingAssigneeUuids)\n\n // Captures the full Employee record at the moment a row is selected so\n // their record is still available for the reassignment-warning check at\n // submit time even if the user has since searched/paginated the row out of\n // view. Without this, `selectedUuids` would point at UUIDs we no longer\n // have data for.\n const selectedEmployeesRef = useRef(new Map<string, EmployeeItem>())\n\n const handleSelectWithCapture = useCallback(\n (item: EmployeeItem, checked: boolean) => {\n if (checked) {\n selectedEmployeesRef.current.set(item.uuid, item)\n } else {\n selectedEmployeesRef.current.delete(item.uuid)\n }\n handleSelect(item, checked)\n },\n [handleSelect],\n )\n\n const handleSelectAllWithCapture = useCallback(\n (checked: boolean) => {\n // Mirror the hook's scope: full search-filtered list across pages, not\n // just the visible page slice. Keeps `selectedEmployeesRef` in sync so\n // off-page selections survive a submit (carry-over balances, etc.).\n const scope = searchValue\n ? eligibleEmployees.filter(employee => matchesEmployeeSearch(employee, searchValue))\n : eligibleEmployees\n for (const item of scope) {\n if (checked) {\n selectedEmployeesRef.current.set(item.uuid, item)\n } else {\n selectedEmployeesRef.current.delete(item.uuid)\n }\n }\n handleSelectAll(checked)\n },\n [eligibleEmployees, searchValue, handleSelectAll],\n )\n\n const carryOverBalances = useMemo(\n () => deriveCarryOverBalances(eligibleEmployees, policyType),\n [eligibleEmployees, policyType],\n )\n\n const [balances, setBalances] = useState<Record<string, string>>({})\n\n const effectiveBalances = useMemo<Record<string, string>>(\n () => ({ ...carryOverBalances, ...balances }),\n [carryOverBalances, balances],\n )\n\n const { mutateAsync: addEmployees, isPending: isAddPending } =\n useTimeOffPoliciesAddEmployeesMutation()\n const { mutateAsync: updatePolicy, isPending: isUpdatePending } =\n useTimeOffPoliciesUpdateMutation()\n const isSubmitPending = isAddPending || isUpdatePending\n\n const [confirmAddOpen, setConfirmAddOpen] = useState(false)\n\n const handleBalanceChange = useCallback((uuid: string, value: string) => {\n setBalances(prev => ({ ...prev, [uuid]: value }))\n }, [])\n\n const buildAddPayload = useCallback(\n (uuids: string[]) =>\n uuids.map(uuid => {\n if (hideBalances) return { uuid, balance: '0' }\n const userValue = balances[uuid]\n const carryOver = extractCarryOverBalance(\n selectedEmployeesRef.current.get(uuid),\n policyType,\n )\n const balance = userValue && userValue.length > 0 ? userValue : (carryOver ?? '0')\n return { uuid, balance }\n }),\n [hideBalances, balances, policyType],\n )\n\n const submitAdd = useCallback(\n async (toAdd: string[]) => {\n await baseSubmitHandler({}, async () => {\n let policyResult: unknown\n if (toAdd.length > 0) {\n const response = await addEmployees({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: { employees: buildAddPayload(toAdd) },\n },\n })\n policyResult = response.timeOffPolicy\n }\n if (mode === 'wizard' && policyResult) {\n const version =\n typeof policyResult === 'object' && 'version' in policyResult\n ? String((policyResult as { version: unknown }).version)\n : ''\n try {\n await updatePolicy({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: { complete: true, version },\n },\n })\n } catch (err) {\n if (err instanceof UnprocessableEntityError) {\n const apiMessage = err.errors[0]?.message ?? ''\n throw new SDKInternalError(\n t('errors.completePolicyFailed', { details: apiMessage }),\n 'api_error',\n )\n }\n throw err\n }\n }\n void queryClient.invalidateQueries({\n queryKey: ['@gusto/embedded-api', 'timeOffPolicies', 'get'],\n })\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_DONE, policyResult)\n })\n },\n [\n mode,\n baseSubmitHandler,\n addEmployees,\n buildAddPayload,\n updatePolicy,\n policyId,\n queryClient,\n onEvent,\n t,\n ],\n )\n\n const handleContinue = useCallback(async () => {\n const toAdd = [...selectedUuids]\n\n if (toAdd.length === 0 && mode === 'standalone') {\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_DONE)\n return\n }\n\n if (mode === 'standalone' && toAdd.length > 0) {\n setConfirmAddOpen(true)\n return\n }\n\n await submitAdd(toAdd)\n }, [mode, selectedUuids, onEvent, submitAdd])\n\n const handleConfirmAdd = useCallback(async () => {\n const toAdd = [...selectedUuids]\n setConfirmAddOpen(false)\n await submitAdd(toAdd)\n }, [selectedUuids, submitAdd])\n\n const showReassignmentWarning = useMemo(() => {\n const targetPtoName = PAID_TIME_OFF_NAME_BY_POLICY_TYPE[policyType]\n for (const uuid of selectedUuids) {\n const employee = selectedEmployeesRef.current.get(uuid)\n if (employee?.eligiblePaidTimeOff?.some(pto => pto.name === targetPtoName)) {\n return true\n }\n }\n return false\n }, [selectedUuids, policyType])\n\n const handleBack = useCallback(() => {\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_BACK)\n }, [onEvent])\n\n return (\n <SelectEmployeesPresentation\n employees={filteredEmployees}\n selectedUuids={selectedUuids}\n searchValue={searchValue}\n onSelect={handleSelectWithCapture}\n onSelectAll={handleSelectAllWithCapture}\n onSearchChange={handleSearchChange}\n onSearchClear={handleSearchClear}\n onBack={handleBack}\n onContinue={handleContinue}\n showReassignmentWarning={showReassignmentWarning}\n policyTypeLabel={t(`policyTypeLabel_${policyType}`)}\n balances={hideBalances ? undefined : effectiveBalances}\n onBalanceChange={hideBalances ? undefined : handleBalanceChange}\n pagination={pagination}\n isFetching={isFetching}\n isPending={isSubmitPending}\n addConfirmDialog={\n mode === 'standalone'\n ? {\n isOpen: confirmAddOpen,\n count: selectedUuids.size,\n onConfirm: () => {\n void handleConfirmAdd()\n },\n onClose: () => {\n setConfirmAddOpen(false)\n },\n isPending: isAddPending,\n }\n : undefined\n }\n />\n )\n}\n"],"names":["PAID_TIME_OFF_NAME_BY_POLICY_TYPE","extractCarryOverBalance","employee","policyType","targetName","balance","pto","deriveCarryOverBalances","employees","map","SelectEmployeesTimeOff","props","jsx","SelectEmployeesTimeOffInner","StandaloneLoader","policyResponse","useTimeOffPoliciesGetSuspense","policy","isUnlimited","existingAssigneeUuids","useMemo","set","e","companyId","policyId","mode","hideBalances","useI18n","t","useTranslation","onEvent","baseSubmitHandler","useBase","queryClient","useQueryClient","filteredEmployees","eligibleEmployees","selectedUuids","searchValue","pagination","isFetching","handleSelect","handleSelectAll","handleSearchChange","handleSearchClear","useSelectEmployeesData","selectedEmployeesRef","useRef","handleSelectWithCapture","useCallback","item","checked","handleSelectAllWithCapture","scope","matchesEmployeeSearch","carryOverBalances","balances","setBalances","useState","effectiveBalances","addEmployees","isAddPending","useTimeOffPoliciesAddEmployeesMutation","updatePolicy","isUpdatePending","useTimeOffPoliciesUpdateMutation","isSubmitPending","confirmAddOpen","setConfirmAddOpen","handleBalanceChange","uuid","value","prev","buildAddPayload","uuids","userValue","carryOver","submitAdd","toAdd","policyResult","version","err","UnprocessableEntityError","apiMessage","SDKInternalError","componentEvents","handleContinue","handleConfirmAdd","showReassignmentWarning","targetPtoName","handleBack","SelectEmployeesPresentation"],"mappings":"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"}
@@ -1,12 +1,16 @@
1
1
  import { EmployeeItem } from './SelectEmployeesPresentationTypes';
2
- export declare function useSelectEmployeesData(companyId: string, initialSelectedUuids?: Set<string>): {
2
+ export declare function isStartedByToday(hireDate: string | undefined): boolean;
3
+ export declare function matchesEmployeeSearch(employee: EmployeeItem, query: string): boolean;
4
+ export declare function useSelectEmployeesData(companyId: string, excludeUuids?: Set<string>): {
3
5
  filteredEmployees: EmployeeItem[];
6
+ eligibleEmployees: EmployeeItem[];
7
+ eligibleCount: number;
4
8
  selectedUuids: Set<string>;
5
9
  searchValue: string;
6
- pagination: Required<Pick<import('../../../..').PaginationControlProps, "totalCount" | "itemsPerPage">> & Omit<import('../../../..').PaginationControlProps, "totalCount" | "itemsPerPage">;
10
+ pagination: import('../../../..').PaginationControlProps;
7
11
  isFetching: boolean;
8
12
  handleSelect: (item: EmployeeItem, checked: boolean) => void;
9
- handleSelectAll: (checked: boolean, visibleItems: EmployeeItem[]) => void;
13
+ handleSelectAll: (checked: boolean, _visibleItems?: EmployeeItem[]) => void;
10
14
  handleSearchChange: (value: string) => void;
11
15
  handleSearchClear: () => void;
12
16
  };