@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,28 +1,30 @@
1
- import { jsx as i, jsxs as Q, Fragment as V } from "react/jsx-runtime";
2
- import { useState as f, useMemo as p, useCallback as y } from "react";
3
- import { useTranslation as J } from "react-i18next";
4
- import { useTimeOffPoliciesGetSuspense as z } from "@gusto/embedded-api/react-query/timeOffPoliciesGet";
5
- import { useTimeOffPoliciesRemoveEmployeesMutation as X } from "@gusto/embedded-api/react-query/timeOffPoliciesRemoveEmployees";
6
- import { useTimeOffPoliciesUpdateBalanceMutation as Z } from "@gusto/embedded-api/react-query/timeOffPoliciesUpdateBalance";
7
- import { useEmployeesListSuspense as ee } from "@gusto/embedded-api/react-query/employeesList";
8
- import { useQueryClient as te } from "@tanstack/react-query";
9
- import { TimeOffPolicyDetailPresentation as ae } from "./TimeOffPolicyDetailPresentation.js";
10
- import { EditEmployeeBalanceModal as re } from "./EditEmployeeBalanceModal.js";
11
- import { BaseComponent as ne } from "../../Base/Base.js";
12
- import { useBase as oe } from "../../Base/useBase.js";
13
- import { componentEvents as b } from "../../../shared/constants.js";
14
- import { useComponentContext as ie } from "../../../contexts/ComponentAdapter/useComponentContext.js";
15
- import { useI18n as le } from "../../../i18n/I18n.js";
16
- import { useLocale as se } from "../../../contexts/LocaleProvider/useLocale.js";
17
- import { isEditableTimeOffPolicyType as ue } from "../TimeOffFlow/timeOffPolicyTypes.js";
18
- import L from "../../../assets/icons/edit-02.svg.js";
19
- import me from "../../../assets/icons/trashcan.svg.js";
20
- import ce from "../../../assets/icons/plus-circle.svg.js";
21
- import { HamburgerMenu as de } from "../../Common/HamburgerMenu/HamburgerMenu.js";
22
- function Ie(e) {
23
- return /* @__PURE__ */ i(ne, { ...e, children: /* @__PURE__ */ i(he, { ...e }) });
1
+ import { jsx as l, jsxs as X, Fragment as z } from "react/jsx-runtime";
2
+ import { useState as y, useMemo as _, useCallback as b } from "react";
3
+ import { useTranslation as Z } from "react-i18next";
4
+ import { useTimeOffPoliciesGetSuspense as ee } from "@gusto/embedded-api/react-query/timeOffPoliciesGet";
5
+ import { useTimeOffPoliciesRemoveEmployeesMutation as re } from "@gusto/embedded-api/react-query/timeOffPoliciesRemoveEmployees";
6
+ import { useTimeOffPoliciesUpdateBalanceMutation as te } from "@gusto/embedded-api/react-query/timeOffPoliciesUpdateBalance";
7
+ import { useEmployeesListSuspense as ae } from "@gusto/embedded-api/react-query/employeesList";
8
+ import { UnprocessableEntityError as oe } from "@gusto/embedded-api/models/errors/unprocessableentityerror";
9
+ import { useQueryClient as ne } from "@tanstack/react-query";
10
+ import { TimeOffPolicyDetailPresentation as ie } from "./TimeOffPolicyDetailPresentation.js";
11
+ import { EditEmployeeBalanceModal as le } from "./EditEmployeeBalanceModal.js";
12
+ import { BaseComponent as se } from "../../Base/Base.js";
13
+ import { useBase as me } from "../../Base/useBase.js";
14
+ import { SDKInternalError as x } from "../../../types/sdkError.js";
15
+ import { componentEvents as O } from "../../../shared/constants.js";
16
+ import { useComponentContext as ue } from "../../../contexts/ComponentAdapter/useComponentContext.js";
17
+ import { useI18n as ce } from "../../../i18n/I18n.js";
18
+ import { useLocale as de } from "../../../contexts/LocaleProvider/useLocale.js";
19
+ import { isEditableTimeOffPolicyType as fe } from "../TimeOffFlow/timeOffPolicyTypes.js";
20
+ import R from "../../../assets/icons/edit-02.svg.js";
21
+ import pe from "../../../assets/icons/trashcan.svg.js";
22
+ import ye from "../../../assets/icons/plus-circle.svg.js";
23
+ import { HamburgerMenu as _e } from "../../Common/HamburgerMenu/HamburgerMenu.js";
24
+ function Qe(e) {
25
+ return /* @__PURE__ */ l(se, { ...e, children: /* @__PURE__ */ l(Ee, { ...e }) });
24
26
  }
25
- const fe = {
27
+ const be = {
26
28
  unlimited: "unlimited",
27
29
  per_pay_period: "perPayPeriod",
28
30
  per_calendar_year: "perCalendarYear",
@@ -32,28 +34,28 @@ const fe = {
32
34
  per_hour_paid: "perHourPaid",
33
35
  per_hour_paid_no_overtime: "perHourPaidNoOvertime"
34
36
  };
35
- function pe(e) {
36
- return fe[e] ?? "unlimited";
37
+ function he(e) {
38
+ return be[e] ?? "unlimited";
37
39
  }
38
- function ye(e) {
40
+ function ve(e) {
39
41
  return e === "sick" ? "sick" : "vacation";
40
42
  }
41
- function Pe(e, t) {
43
+ function Pe(e, r) {
42
44
  if (!e) return;
43
- const [r, a] = e.split("-");
44
- return !r || !a ? e : new Date(2e3, parseInt(r, 10) - 1, parseInt(a, 10)).toLocaleDateString(t, { month: "long", day: "numeric" });
45
+ const [a, t] = e.split("-");
46
+ return !a || !t ? e : new Date(2e3, parseInt(a, 10) - 1, parseInt(t, 10)).toLocaleDateString(r, { month: "long", day: "numeric" });
45
47
  }
46
- function ve(e, t) {
47
- const r = ye(e.policyType), a = pe(e.accrualMethod);
48
- return a === "unlimited" ? { policyType: r, accrualMethod: a } : {
49
- policyType: r,
50
- accrualMethod: a,
48
+ function Te(e, r) {
49
+ const a = ve(e.policyType), t = he(e.accrualMethod);
50
+ return t === "unlimited" ? { policyType: a, accrualMethod: t } : {
51
+ policyType: a,
52
+ accrualMethod: t,
51
53
  accrualRate: e.accrualRate ? Number(e.accrualRate) : 0,
52
54
  accrualRateUnit: e.accrualRateUnit ? Number(e.accrualRateUnit) : void 0,
53
- resetDate: Pe(e.policyResetDate, t)
55
+ resetDate: Pe(e.policyResetDate, r)
54
56
  };
55
57
  }
56
- function Te(e) {
58
+ function Oe(e) {
57
59
  if (e.accrualMethod !== "unlimited")
58
60
  return {
59
61
  maxAccrualHoursPerYear: e.maxAccrualHoursPerYear != null ? Number(e.maxAccrualHoursPerYear) : null,
@@ -63,191 +65,219 @@ function Te(e) {
63
65
  paidOutOnTermination: e.paidOutOnTermination ?? !1
64
66
  };
65
67
  }
66
- function be(e, t) {
67
- const r = new Map(t.map((a) => [a.uuid, a]));
68
- return e.employees.map((a) => {
69
- const u = r.get(a.uuid ?? ""), h = u?.jobs?.find((m) => m.primary);
68
+ function ge(e, r) {
69
+ const a = new Map(r.map((t) => [t.uuid, t]));
70
+ return e.employees.map((t) => {
71
+ const s = a.get(t.uuid ?? ""), u = s?.jobs?.find((c) => c.primary);
70
72
  return {
71
- uuid: a.uuid ?? "",
72
- firstName: u?.firstName ?? null,
73
- lastName: u?.lastName ?? null,
74
- jobTitle: h?.title ?? null,
75
- balance: a.balance != null ? Number(a.balance) : null
73
+ uuid: t.uuid ?? "",
74
+ firstName: s?.firstName ?? null,
75
+ lastName: s?.lastName ?? null,
76
+ jobTitle: u?.title ?? s?.jobs?.[0]?.title ?? null,
77
+ balance: t.balance != null ? Number(t.balance) : null
76
78
  };
77
79
  });
78
80
  }
79
- function he({ policyId: e }) {
80
- le("Company.TimeOff.TimeOffPolicyDetails");
81
- const { t } = J("Company.TimeOff.TimeOffPolicyDetails"), { onEvent: r, baseSubmitHandler: a, error: u, setError: h } = oe(), { Button: m } = ie(), { locale: N } = se(), S = te(), { data: U } = z({
81
+ function Ee({ policyId: e }) {
82
+ ce("Company.TimeOff.TimeOffPolicyDetails");
83
+ const { t: r } = Z("Company.TimeOff.TimeOffPolicyDetails"), { onEvent: a, baseSubmitHandler: t, error: s, setError: u } = me(), { Button: c } = ue(), { locale: S } = de(), H = ne(), { data: U } = ee({
82
84
  timeOffPolicyUuid: e
83
- }), { mutateAsync: M, isPending: w } = X(), { mutateAsync: A, isPending: k } = Z(), n = U.timeOffPolicy;
84
- if (!n) throw new Error("Unexpected response: missing timeOffPolicy");
85
- const c = ue(n.policyType), { data: B } = ee({
86
- companyId: n.companyUuid,
85
+ }), { mutateAsync: A, isPending: k } = re(), { mutateAsync: B, isPending: I } = te(), o = U.timeOffPolicy;
86
+ if (!o) throw new Error("Unexpected response: missing timeOffPolicy");
87
+ const d = fe(o.policyType), { data: w } = ae({
88
+ companyId: o.companyUuid,
87
89
  terminated: !1
88
- }), [x, F] = f("details"), [P, D] = f(""), [Y, _] = f(), [d, O] = f(null), [s, C] = f(null), v = p(() => ve(n, N), [n, N]), q = p(() => Te(n), [n]), g = p(
89
- () => be(n, B.showEmployees ?? []),
90
- [n, B.showEmployees]
91
- ), I = p(() => {
92
- if (!P.trim()) return g;
93
- const o = P.toLowerCase();
94
- return g.filter((l) => `${l.firstName ?? ""} ${l.lastName ?? ""}`.toLowerCase().includes(o));
95
- }, [g, P]), T = y(() => {
96
- S.invalidateQueries({
90
+ }), [F, Y] = y("details"), [h, D] = y(""), [q, g] = y(), [f, E] = y(null), [m, C] = y(null), v = _(() => Te(o, S), [o, S]), $ = _(() => Oe(o), [o]), N = _(
91
+ () => ge(o, w.showEmployees ?? []),
92
+ [o, w.showEmployees]
93
+ ), j = _(() => {
94
+ if (!h.trim()) return N;
95
+ const i = h.toLowerCase();
96
+ return N.filter((n) => `${n.firstName ?? ""} ${n.lastName ?? ""}`.toLowerCase().includes(i));
97
+ }, [N, h]), P = b(() => {
98
+ H.invalidateQueries({
97
99
  queryKey: ["@gusto/embedded-api", "timeOffPolicies", "get"]
98
100
  });
99
- }, [S]), $ = y(
100
- async (o, l) => {
101
- await a({}, async () => {
102
- await M({
101
+ }, [H]), V = b(
102
+ async (i, n) => {
103
+ E(null), await t({}, async () => {
104
+ await A({
103
105
  request: {
104
106
  timeOffPolicyUuid: e,
105
- requestBody: { employees: [{ uuid: o }] }
107
+ requestBody: { employees: [{ uuid: i }] }
106
108
  }
107
- }), T(), O(null), _(t("flash.employeeRemoved", { name: l }));
109
+ }), P(), g(r("flash.employeeRemoved", { name: n }));
108
110
  });
109
111
  },
110
- [a, M, e, T, t]
111
- ), j = y(
112
- async (o) => {
113
- s && await a({}, async () => {
114
- await A({
115
- request: {
116
- timeOffPolicyUuid: e,
117
- requestBody: {
118
- employees: [{ uuid: s.employeeUuid, balance: String(o) }]
112
+ [t, A, e, P, r]
113
+ ), W = b(
114
+ async (i) => {
115
+ m && await t({}, async () => {
116
+ try {
117
+ await B({
118
+ request: {
119
+ timeOffPolicyUuid: e,
120
+ requestBody: {
121
+ employees: [{ uuid: m.employeeUuid, balance: String(i) }]
122
+ }
119
123
  }
124
+ });
125
+ } catch (n) {
126
+ if (n instanceof oe) {
127
+ const p = o.maxHours != null ? Number(o.maxHours) : null;
128
+ if (n.errors.some(
129
+ (T) => T.message === "LIMIT_VIOLATION_MAX_HOURS" || T.category === "invalid_attribute_value"
130
+ ) && p != null)
131
+ throw new x(
132
+ r("editBalanceModal.errors.balanceExceedsMax", { max: p }),
133
+ "api_error"
134
+ );
135
+ const J = n.errors.map((T) => T.message).filter(Boolean);
136
+ throw new x(
137
+ J.join(". ") || r("editBalanceModal.errors.updateFailed"),
138
+ "api_error"
139
+ );
120
140
  }
121
- }), T(), C(null), _(t("flash.balanceUpdated", { name: s.employeeName }));
141
+ throw n;
142
+ }
143
+ P(), C(null), g(r("flash.balanceUpdated", { name: m.employeeName }));
122
144
  });
123
145
  },
124
- [a, A, e, s, T, t]
125
- ), E = y(() => {
126
- r(b.TIME_OFF_ADD_EMPLOYEES_TO_POLICY, { policyId: e });
127
- }, [r, e]), W = p(() => {
128
- if (c)
146
+ [
147
+ t,
148
+ B,
149
+ e,
150
+ m,
151
+ P,
152
+ r,
153
+ o.maxHours
154
+ ]
155
+ ), M = b(() => {
156
+ a(O.TIME_OFF_ADD_EMPLOYEES_TO_POLICY, { policyId: e });
157
+ }, [a, e]), G = _(() => {
158
+ if (d)
129
159
  return [
130
- /* @__PURE__ */ i(
131
- m,
160
+ /* @__PURE__ */ l(
161
+ c,
132
162
  {
133
163
  variant: "secondary",
134
- icon: /* @__PURE__ */ i(ce, { "aria-hidden": !0 }),
135
- onClick: E,
136
- children: t("addEmployeeCta")
164
+ icon: /* @__PURE__ */ l(ye, { "aria-hidden": !0 }),
165
+ onClick: M,
166
+ children: r("addEmployeeCta")
137
167
  },
138
168
  "add"
139
169
  ),
140
- /* @__PURE__ */ i(
141
- m,
170
+ /* @__PURE__ */ l(
171
+ c,
142
172
  {
143
173
  variant: "secondary",
144
- icon: /* @__PURE__ */ i(L, { "aria-hidden": !0 }),
174
+ icon: /* @__PURE__ */ l(R, { "aria-hidden": !0 }),
145
175
  onClick: () => {
146
- r(b.TIME_OFF_EDIT_POLICY, { policyId: e });
176
+ a(O.TIME_OFF_EDIT_POLICY, { policyId: e });
147
177
  },
148
- children: t("editPolicyCta")
178
+ children: r("editPolicyCta")
149
179
  },
150
180
  "edit"
151
181
  )
152
182
  ];
153
- }, [m, r, e, t, c, E]), H = n.accrualMethod === "unlimited", G = y(
154
- (o) => {
155
- const l = `${o.firstName ?? ""} ${o.lastName ?? ""}`.trim(), R = [
156
- ...H ? [] : [
183
+ }, [c, a, e, r, d, M]), L = o.accrualMethod === "unlimited", K = b(
184
+ (i) => {
185
+ const n = `${i.firstName ?? ""} ${i.lastName ?? ""}`.trim(), p = [
186
+ ...L ? [] : [
157
187
  {
158
- label: t("employeeTable.editBalance"),
159
- icon: /* @__PURE__ */ i(L, { "aria-hidden": !0 }),
188
+ label: r("employeeTable.editBalance"),
189
+ icon: /* @__PURE__ */ l(R, { "aria-hidden": !0 }),
160
190
  onClick: () => {
161
- C({
162
- employeeUuid: o.uuid,
163
- employeeName: l,
164
- currentBalance: o.balance ?? 0
191
+ u(null), C({
192
+ employeeUuid: i.uuid,
193
+ employeeName: n,
194
+ currentBalance: i.balance ?? 0
165
195
  });
166
196
  }
167
197
  }
168
198
  ],
169
199
  {
170
- label: t("employeeTable.removeEmployee"),
171
- icon: /* @__PURE__ */ i(me, { "aria-hidden": !0 }),
200
+ label: r("employeeTable.removeEmployee"),
201
+ icon: /* @__PURE__ */ l(pe, { "aria-hidden": !0 }),
172
202
  onClick: () => {
173
- O({ uuid: o.uuid, name: l });
203
+ E({ uuid: i.uuid, name: n });
174
204
  }
175
205
  }
176
206
  ];
177
- return /* @__PURE__ */ i(
178
- de,
207
+ return /* @__PURE__ */ l(
208
+ _e,
179
209
  {
180
- items: R,
181
- triggerLabel: `${t("employeeTable.actions")} ${l}`
210
+ items: p,
211
+ triggerLabel: `${r("employeeTable.actions")} ${n}`
182
212
  }
183
213
  );
184
214
  },
185
- [t, H]
186
- ), K = v.accrualMethod === "unlimited" ? { policyDetails: v } : {
215
+ [r, L, u]
216
+ ), Q = v.accrualMethod === "unlimited" ? { policyDetails: v } : {
187
217
  policyDetails: v,
188
- policySettings: q,
189
- onChangeSettings: c ? () => {
190
- r(b.TIME_OFF_CHANGE_SETTINGS, { policyId: e });
218
+ policySettings: $,
219
+ onChangeSettings: d ? () => {
220
+ a(O.TIME_OFF_CHANGE_SETTINGS, { policyId: e });
191
221
  } : void 0
192
222
  };
193
- return /* @__PURE__ */ Q(V, { children: [
194
- /* @__PURE__ */ i(
195
- ae,
223
+ return /* @__PURE__ */ X(z, { children: [
224
+ /* @__PURE__ */ l(
225
+ ie,
196
226
  {
197
- ...K,
198
- title: n.name,
199
- subtitle: t(`subtitle.${v.policyType}`),
227
+ ...Q,
228
+ title: o.name,
229
+ subtitle: r(`subtitle.${v.policyType}`),
200
230
  onBack: () => {
201
- r(b.TIME_OFF_BACK_TO_LIST);
231
+ a(O.TIME_OFF_BACK_TO_LIST);
202
232
  },
203
- backLabel: t("breadcrumb"),
204
- actions: W,
205
- selectedTabId: x,
206
- onTabChange: F,
233
+ backLabel: r("breadcrumb"),
234
+ actions: G,
235
+ selectedTabId: F,
236
+ onTabChange: Y,
207
237
  employees: {
208
- data: I,
209
- searchValue: P,
238
+ data: j,
239
+ searchValue: h,
210
240
  onSearchChange: D,
211
241
  onSearchClear: () => {
212
242
  D("");
213
243
  },
214
- ...c ? { itemMenu: G } : {}
244
+ ...d ? { itemMenu: K } : {}
215
245
  },
216
- onAddEmployee: c ? E : void 0,
246
+ onAddEmployee: d ? M : void 0,
217
247
  removeDialog: {
218
- isOpen: d !== null,
219
- employeeName: d?.name ?? "",
248
+ isOpen: f !== null,
249
+ employeeName: f?.name ?? "",
220
250
  onConfirm: () => {
221
- d && $(d.uuid, d.name);
251
+ f && V(f.uuid, f.name);
222
252
  },
223
253
  onClose: () => {
224
- O(null);
254
+ E(null);
225
255
  },
226
- isPending: w
256
+ isPending: k
227
257
  },
228
- successAlert: Y,
258
+ successAlert: q,
229
259
  onDismissAlert: () => {
230
- _(void 0);
260
+ g(void 0);
231
261
  }
232
262
  }
233
263
  ),
234
- /* @__PURE__ */ i(
235
- re,
264
+ /* @__PURE__ */ l(
265
+ le,
236
266
  {
237
- isOpen: s !== null,
267
+ isOpen: m !== null,
238
268
  onClose: () => {
239
- C(null), h(null);
269
+ C(null), u(null);
240
270
  },
241
- employeeName: s?.employeeName ?? "",
242
- currentBalance: s?.currentBalance ?? 0,
243
- onConfirm: j,
244
- isPending: k,
245
- error: u
271
+ employeeName: m?.employeeName ?? "",
272
+ currentBalance: m?.currentBalance ?? 0,
273
+ onConfirm: W,
274
+ isPending: I,
275
+ error: s
246
276
  }
247
277
  )
248
278
  ] });
249
279
  }
250
280
  export {
251
- Ie as TimeOffPolicyDetail
281
+ Qe as TimeOffPolicyDetail
252
282
  };
253
283
  //# sourceMappingURL=TimeOffPolicyDetail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimeOffPolicyDetail.js","sources":["../../../../src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useTimeOffPoliciesGetSuspense } from '@gusto/embedded-api/react-query/timeOffPoliciesGet'\nimport { useTimeOffPoliciesRemoveEmployeesMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesRemoveEmployees'\nimport { useTimeOffPoliciesUpdateBalanceMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesUpdateBalance'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport type { TimeOffPolicy } from '@gusto/embedded-api/models/components/timeoffpolicy'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { TimeOffPolicyDetailPresentation } from './TimeOffPolicyDetailPresentation'\nimport { EditEmployeeBalanceModal } from './EditEmployeeBalanceModal'\nimport type {\n TimeOffPolicyDetailEmployee,\n AccrualMethodKey,\n PolicyDetails,\n PolicySettingsDisplay,\n PolicyTypeKey,\n} from './TimeOffPolicyDetailTypes'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { BaseComponent, type BaseComponentInterface } from '@/components/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { isEditableTimeOffPolicyType } from '@/components/TimeOff/TimeOffFlow/timeOffPolicyTypes'\nimport EditIcon from '@/assets/icons/edit-02.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\nexport interface TimeOffPolicyDetailProps extends BaseComponentInterface {\n policyId: string\n}\n\nexport function TimeOffPolicyDetail(props: TimeOffPolicyDetailProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nconst API_ACCRUAL_METHOD_MAP: Record<string, AccrualMethodKey> = {\n unlimited: 'unlimited',\n per_pay_period: 'perPayPeriod',\n per_calendar_year: 'perCalendarYear',\n per_anniversary_year: 'perAnniversaryYear',\n per_hour_worked: 'perHourWorked',\n per_hour_worked_no_overtime: 'perHourWorkedNoOvertime',\n per_hour_paid: 'perHourPaid',\n per_hour_paid_no_overtime: 'perHourPaidNoOvertime',\n}\n\nfunction mapAccrualMethod(apiMethod: string): AccrualMethodKey {\n return API_ACCRUAL_METHOD_MAP[apiMethod] ?? 'unlimited'\n}\n\nfunction mapPolicyType(apiType: string): PolicyTypeKey {\n if (apiType === 'sick') return 'sick'\n return 'vacation'\n}\n\nfunction formatResetDate(\n resetDate: string | null | undefined,\n locale?: string,\n): string | undefined {\n if (!resetDate) return undefined\n const [month, day] = resetDate.split('-')\n if (!month || !day) return resetDate\n const date = new Date(2000, parseInt(month, 10) - 1, parseInt(day, 10))\n return date.toLocaleDateString(locale, { month: 'long', day: 'numeric' })\n}\n\nfunction derivePolicyDetails(policy: TimeOffPolicy, locale?: string): PolicyDetails {\n const policyType = mapPolicyType(policy.policyType)\n const accrualMethod = mapAccrualMethod(policy.accrualMethod)\n\n if (accrualMethod === 'unlimited') {\n return { policyType, accrualMethod }\n }\n\n return {\n policyType,\n accrualMethod,\n accrualRate: policy.accrualRate ? Number(policy.accrualRate) : 0,\n accrualRateUnit: policy.accrualRateUnit ? Number(policy.accrualRateUnit) : undefined,\n resetDate: formatResetDate(policy.policyResetDate, locale),\n }\n}\n\nfunction derivePolicySettings(policy: TimeOffPolicy): PolicySettingsDisplay | undefined {\n if (policy.accrualMethod === 'unlimited') return undefined\n\n return {\n maxAccrualHoursPerYear:\n policy.maxAccrualHoursPerYear != null ? Number(policy.maxAccrualHoursPerYear) : null,\n maxHours: policy.maxHours != null ? Number(policy.maxHours) : null,\n carryoverLimitHours:\n policy.carryoverLimitHours != null ? Number(policy.carryoverLimitHours) : null,\n accrualWaitingPeriodDays: policy.accrualWaitingPeriodDays ?? null,\n paidOutOnTermination: policy.paidOutOnTermination ?? false,\n }\n}\n\nfunction deriveEmployees(\n policy: TimeOffPolicy,\n allEmployees: Array<{\n uuid: string\n firstName?: string | null\n lastName?: string | null\n jobs?: Array<{ primary?: boolean; title?: string | null }> | null\n }>,\n): TimeOffPolicyDetailEmployee[] {\n const employeeMap = new Map(allEmployees.map(e => [e.uuid, e]))\n return policy.employees.map(policyEmp => {\n const emp = employeeMap.get(policyEmp.uuid ?? '')\n const primaryJob = emp?.jobs?.find(job => job.primary)\n return {\n uuid: policyEmp.uuid ?? '',\n firstName: emp?.firstName ?? null,\n lastName: emp?.lastName ?? null,\n jobTitle: primaryJob?.title ?? null,\n balance: policyEmp.balance != null ? Number(policyEmp.balance) : null,\n }\n })\n}\n\ninterface EditBalanceState {\n employeeUuid: string\n employeeName: string\n currentBalance: number\n}\n\nfunction Root({ policyId }: TimeOffPolicyDetailProps) {\n useI18n('Company.TimeOff.TimeOffPolicyDetails')\n const { t } = useTranslation('Company.TimeOff.TimeOffPolicyDetails')\n const { onEvent, baseSubmitHandler, error, setError } = useBase()\n const { Button } = useComponentContext()\n const { locale } = useLocale()\n const queryClient = useQueryClient()\n\n const { data: policyResponse } = useTimeOffPoliciesGetSuspense({\n timeOffPolicyUuid: policyId,\n })\n\n const { mutateAsync: removeEmployees, isPending: isRemovePending } =\n useTimeOffPoliciesRemoveEmployeesMutation()\n const { mutateAsync: updateBalance, isPending: isBalancePending } =\n useTimeOffPoliciesUpdateBalanceMutation()\n\n const policy = policyResponse.timeOffPolicy\n if (!policy) throw new Error('Unexpected response: missing timeOffPolicy')\n\n const isEditable = isEditableTimeOffPolicyType(policy.policyType)\n\n const { data: employeesData } = useEmployeesListSuspense({\n companyId: policy.companyUuid,\n terminated: false,\n })\n\n const [selectedTabId, setSelectedTabId] = useState('details')\n const [searchValue, setSearchValue] = useState('')\n const [successAlert, setSuccessAlert] = useState<string | undefined>()\n const [removeTarget, setRemoveTarget] = useState<{\n uuid: string\n name: string\n } | null>(null)\n const [editBalanceState, setEditBalanceState] = useState<EditBalanceState | null>(null)\n\n const policyDetails = useMemo(() => derivePolicyDetails(policy, locale), [policy, locale])\n const policySettings = useMemo(() => derivePolicySettings(policy), [policy])\n const employees = useMemo(\n () => deriveEmployees(policy, employeesData.showEmployees ?? []),\n [policy, employeesData.showEmployees],\n )\n\n const filteredEmployees = useMemo(() => {\n if (!searchValue.trim()) return employees\n const query = searchValue.toLowerCase()\n return employees.filter(emp => {\n const fullName = `${emp.firstName ?? ''} ${emp.lastName ?? ''}`.toLowerCase()\n return fullName.includes(query)\n })\n }, [employees, searchValue])\n\n const invalidatePolicy = useCallback(() => {\n void queryClient.invalidateQueries({\n queryKey: ['@gusto/embedded-api', 'timeOffPolicies', 'get'],\n })\n }, [queryClient])\n\n const handleRemoveEmployee = useCallback(\n async (employeeUuid: string, employeeName: string) => {\n await baseSubmitHandler({}, async () => {\n await removeEmployees({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: { employees: [{ uuid: employeeUuid }] },\n },\n })\n invalidatePolicy()\n setRemoveTarget(null)\n setSuccessAlert(t('flash.employeeRemoved', { name: employeeName }))\n })\n },\n [baseSubmitHandler, removeEmployees, policyId, invalidatePolicy, t],\n )\n\n const handleUpdateBalance = useCallback(\n async (newBalance: number) => {\n if (!editBalanceState) return\n await baseSubmitHandler({}, async () => {\n await updateBalance({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: {\n employees: [{ uuid: editBalanceState.employeeUuid, balance: String(newBalance) }],\n },\n },\n })\n invalidatePolicy()\n setEditBalanceState(null)\n setSuccessAlert(t('flash.balanceUpdated', { name: editBalanceState.employeeName }))\n })\n },\n [baseSubmitHandler, updateBalance, policyId, editBalanceState, invalidatePolicy, t],\n )\n\n const handleAddEmployees = useCallback(() => {\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_TO_POLICY, { policyId })\n }, [onEvent, policyId])\n\n const actions = useMemo(() => {\n if (!isEditable) return undefined\n return [\n <Button\n key=\"add\"\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={handleAddEmployees}\n >\n {t('addEmployeeCta')}\n </Button>,\n <Button\n key=\"edit\"\n variant=\"secondary\"\n icon={<EditIcon aria-hidden />}\n onClick={() => {\n onEvent(componentEvents.TIME_OFF_EDIT_POLICY, { policyId })\n }}\n >\n {t('editPolicyCta')}\n </Button>,\n ]\n }, [Button, onEvent, policyId, t, isEditable, handleAddEmployees])\n\n const isUnlimited = policy.accrualMethod === 'unlimited'\n\n const itemMenu = useCallback(\n (employee: TimeOffPolicyDetailEmployee) => {\n const employeeName = `${employee.firstName ?? ''} ${employee.lastName ?? ''}`.trim()\n const items = [\n ...(!isUnlimited\n ? [\n {\n label: t('employeeTable.editBalance'),\n icon: <EditIcon aria-hidden />,\n onClick: () => {\n setEditBalanceState({\n employeeUuid: employee.uuid,\n employeeName,\n currentBalance: employee.balance ?? 0,\n })\n },\n },\n ]\n : []),\n {\n label: t('employeeTable.removeEmployee'),\n icon: <TrashCanSvg aria-hidden />,\n onClick: () => {\n setRemoveTarget({ uuid: employee.uuid, name: employeeName })\n },\n },\n ]\n return (\n <HamburgerMenu\n items={items}\n triggerLabel={`${t('employeeTable.actions')} ${employeeName}`}\n />\n )\n },\n [t, isUnlimited],\n )\n\n const discriminatedProps =\n policyDetails.accrualMethod === 'unlimited'\n ? { policyDetails }\n : {\n policyDetails,\n policySettings: policySettings!,\n onChangeSettings: isEditable\n ? () => {\n onEvent(componentEvents.TIME_OFF_CHANGE_SETTINGS, { policyId })\n }\n : undefined,\n }\n\n return (\n <>\n <TimeOffPolicyDetailPresentation\n {...discriminatedProps}\n title={policy.name}\n subtitle={t(`subtitle.${policyDetails.policyType}`)}\n onBack={() => {\n onEvent(componentEvents.TIME_OFF_BACK_TO_LIST)\n }}\n backLabel={t('breadcrumb')}\n actions={actions}\n selectedTabId={selectedTabId}\n onTabChange={setSelectedTabId}\n employees={{\n data: filteredEmployees,\n searchValue,\n onSearchChange: setSearchValue,\n onSearchClear: () => {\n setSearchValue('')\n },\n ...(isEditable ? { itemMenu } : {}),\n }}\n onAddEmployee={isEditable ? handleAddEmployees : undefined}\n removeDialog={{\n isOpen: removeTarget !== null,\n employeeName: removeTarget?.name ?? '',\n onConfirm: () => {\n if (removeTarget) {\n void handleRemoveEmployee(removeTarget.uuid, removeTarget.name)\n }\n },\n onClose: () => {\n setRemoveTarget(null)\n },\n isPending: isRemovePending,\n }}\n successAlert={successAlert}\n onDismissAlert={() => {\n setSuccessAlert(undefined)\n }}\n />\n\n <EditEmployeeBalanceModal\n isOpen={editBalanceState !== null}\n onClose={() => {\n setEditBalanceState(null)\n setError(null)\n }}\n employeeName={editBalanceState?.employeeName ?? ''}\n currentBalance={editBalanceState?.currentBalance ?? 0}\n onConfirm={handleUpdateBalance}\n isPending={isBalancePending}\n error={error}\n />\n </>\n )\n}\n"],"names":["TimeOffPolicyDetail","props","jsx","BaseComponent","Root","API_ACCRUAL_METHOD_MAP","mapAccrualMethod","apiMethod","mapPolicyType","apiType","formatResetDate","resetDate","locale","month","day","derivePolicyDetails","policy","policyType","accrualMethod","derivePolicySettings","deriveEmployees","allEmployees","employeeMap","e","policyEmp","emp","primaryJob","job","policyId","useI18n","useTranslation","onEvent","baseSubmitHandler","error","setError","useBase","Button","useComponentContext","useLocale","queryClient","useQueryClient","policyResponse","useTimeOffPoliciesGetSuspense","removeEmployees","isRemovePending","useTimeOffPoliciesRemoveEmployeesMutation","updateBalance","isBalancePending","useTimeOffPoliciesUpdateBalanceMutation","isEditable","isEditableTimeOffPolicyType","employeesData","useEmployeesListSuspense","selectedTabId","setSelectedTabId","useState","searchValue","setSearchValue","successAlert","setSuccessAlert","removeTarget","setRemoveTarget","editBalanceState","setEditBalanceState","policyDetails","useMemo","policySettings","employees","filteredEmployees","query","invalidatePolicy","useCallback","handleRemoveEmployee","employeeUuid","employeeName","handleUpdateBalance","newBalance","handleAddEmployees","componentEvents","actions","PlusCircleIcon","EditIcon","isUnlimited","itemMenu","employee","items","TrashCanSvg","HamburgerMenu","discriminatedProps","jsxs","Fragment","TimeOffPolicyDetailPresentation","EditEmployeeBalanceModal"],"mappings":"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"}
1
+ {"version":3,"file":"TimeOffPolicyDetail.js","sources":["../../../../src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useTimeOffPoliciesGetSuspense } from '@gusto/embedded-api/react-query/timeOffPoliciesGet'\nimport { useTimeOffPoliciesRemoveEmployeesMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesRemoveEmployees'\nimport { useTimeOffPoliciesUpdateBalanceMutation } from '@gusto/embedded-api/react-query/timeOffPoliciesUpdateBalance'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport type { TimeOffPolicy } from '@gusto/embedded-api/models/components/timeoffpolicy'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { TimeOffPolicyDetailPresentation } from './TimeOffPolicyDetailPresentation'\nimport { EditEmployeeBalanceModal } from './EditEmployeeBalanceModal'\nimport type {\n TimeOffPolicyDetailEmployee,\n AccrualMethodKey,\n PolicyDetails,\n PolicySettingsDisplay,\n PolicyTypeKey,\n} from './TimeOffPolicyDetailTypes'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { BaseComponent, type BaseComponentInterface } from '@/components/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { isEditableTimeOffPolicyType } from '@/components/TimeOff/TimeOffFlow/timeOffPolicyTypes'\nimport EditIcon from '@/assets/icons/edit-02.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\nexport interface TimeOffPolicyDetailProps extends BaseComponentInterface {\n policyId: string\n}\n\nexport function TimeOffPolicyDetail(props: TimeOffPolicyDetailProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nconst API_ACCRUAL_METHOD_MAP: Record<string, AccrualMethodKey> = {\n unlimited: 'unlimited',\n per_pay_period: 'perPayPeriod',\n per_calendar_year: 'perCalendarYear',\n per_anniversary_year: 'perAnniversaryYear',\n per_hour_worked: 'perHourWorked',\n per_hour_worked_no_overtime: 'perHourWorkedNoOvertime',\n per_hour_paid: 'perHourPaid',\n per_hour_paid_no_overtime: 'perHourPaidNoOvertime',\n}\n\nfunction mapAccrualMethod(apiMethod: string): AccrualMethodKey {\n return API_ACCRUAL_METHOD_MAP[apiMethod] ?? 'unlimited'\n}\n\nfunction mapPolicyType(apiType: string): PolicyTypeKey {\n if (apiType === 'sick') return 'sick'\n return 'vacation'\n}\n\nfunction formatResetDate(\n resetDate: string | null | undefined,\n locale?: string,\n): string | undefined {\n if (!resetDate) return undefined\n const [month, day] = resetDate.split('-')\n if (!month || !day) return resetDate\n const date = new Date(2000, parseInt(month, 10) - 1, parseInt(day, 10))\n return date.toLocaleDateString(locale, { month: 'long', day: 'numeric' })\n}\n\nfunction derivePolicyDetails(policy: TimeOffPolicy, locale?: string): PolicyDetails {\n const policyType = mapPolicyType(policy.policyType)\n const accrualMethod = mapAccrualMethod(policy.accrualMethod)\n\n if (accrualMethod === 'unlimited') {\n return { policyType, accrualMethod }\n }\n\n return {\n policyType,\n accrualMethod,\n accrualRate: policy.accrualRate ? Number(policy.accrualRate) : 0,\n accrualRateUnit: policy.accrualRateUnit ? Number(policy.accrualRateUnit) : undefined,\n resetDate: formatResetDate(policy.policyResetDate, locale),\n }\n}\n\nfunction derivePolicySettings(policy: TimeOffPolicy): PolicySettingsDisplay | undefined {\n if (policy.accrualMethod === 'unlimited') return undefined\n\n return {\n maxAccrualHoursPerYear:\n policy.maxAccrualHoursPerYear != null ? Number(policy.maxAccrualHoursPerYear) : null,\n maxHours: policy.maxHours != null ? Number(policy.maxHours) : null,\n carryoverLimitHours:\n policy.carryoverLimitHours != null ? Number(policy.carryoverLimitHours) : null,\n accrualWaitingPeriodDays: policy.accrualWaitingPeriodDays ?? null,\n paidOutOnTermination: policy.paidOutOnTermination ?? false,\n }\n}\n\nfunction deriveEmployees(\n policy: TimeOffPolicy,\n allEmployees: Array<{\n uuid: string\n firstName?: string | null\n lastName?: string | null\n jobs?: Array<{ primary?: boolean; title?: string | null }> | null\n }>,\n): TimeOffPolicyDetailEmployee[] {\n const employeeMap = new Map(allEmployees.map(e => [e.uuid, e]))\n return policy.employees.map(policyEmp => {\n const emp = employeeMap.get(policyEmp.uuid ?? '')\n const primaryJob = emp?.jobs?.find(job => job.primary)\n return {\n uuid: policyEmp.uuid ?? '',\n firstName: emp?.firstName ?? null,\n lastName: emp?.lastName ?? null,\n jobTitle: primaryJob?.title ?? emp?.jobs?.[0]?.title ?? null,\n balance: policyEmp.balance != null ? Number(policyEmp.balance) : null,\n }\n })\n}\n\ninterface EditBalanceState {\n employeeUuid: string\n employeeName: string\n currentBalance: number\n}\n\nfunction Root({ policyId }: TimeOffPolicyDetailProps) {\n useI18n('Company.TimeOff.TimeOffPolicyDetails')\n const { t } = useTranslation('Company.TimeOff.TimeOffPolicyDetails')\n const { onEvent, baseSubmitHandler, error, setError } = useBase()\n const { Button } = useComponentContext()\n const { locale } = useLocale()\n const queryClient = useQueryClient()\n\n const { data: policyResponse } = useTimeOffPoliciesGetSuspense({\n timeOffPolicyUuid: policyId,\n })\n\n const { mutateAsync: removeEmployees, isPending: isRemovePending } =\n useTimeOffPoliciesRemoveEmployeesMutation()\n const { mutateAsync: updateBalance, isPending: isBalancePending } =\n useTimeOffPoliciesUpdateBalanceMutation()\n\n const policy = policyResponse.timeOffPolicy\n if (!policy) throw new Error('Unexpected response: missing timeOffPolicy')\n\n const isEditable = isEditableTimeOffPolicyType(policy.policyType)\n\n const { data: employeesData } = useEmployeesListSuspense({\n companyId: policy.companyUuid,\n terminated: false,\n })\n\n const [selectedTabId, setSelectedTabId] = useState('details')\n const [searchValue, setSearchValue] = useState('')\n const [successAlert, setSuccessAlert] = useState<string | undefined>()\n const [removeTarget, setRemoveTarget] = useState<{\n uuid: string\n name: string\n } | null>(null)\n const [editBalanceState, setEditBalanceState] = useState<EditBalanceState | null>(null)\n\n const policyDetails = useMemo(() => derivePolicyDetails(policy, locale), [policy, locale])\n const policySettings = useMemo(() => derivePolicySettings(policy), [policy])\n const employees = useMemo(\n () => deriveEmployees(policy, employeesData.showEmployees ?? []),\n [policy, employeesData.showEmployees],\n )\n\n const filteredEmployees = useMemo(() => {\n if (!searchValue.trim()) return employees\n const query = searchValue.toLowerCase()\n return employees.filter(emp => {\n const fullName = `${emp.firstName ?? ''} ${emp.lastName ?? ''}`.toLowerCase()\n return fullName.includes(query)\n })\n }, [employees, searchValue])\n\n const invalidatePolicy = useCallback(() => {\n void queryClient.invalidateQueries({\n queryKey: ['@gusto/embedded-api', 'timeOffPolicies', 'get'],\n })\n }, [queryClient])\n\n const handleRemoveEmployee = useCallback(\n async (employeeUuid: string, employeeName: string) => {\n setRemoveTarget(null)\n await baseSubmitHandler({}, async () => {\n await removeEmployees({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: { employees: [{ uuid: employeeUuid }] },\n },\n })\n invalidatePolicy()\n setSuccessAlert(t('flash.employeeRemoved', { name: employeeName }))\n })\n },\n [baseSubmitHandler, removeEmployees, policyId, invalidatePolicy, t],\n )\n\n const handleUpdateBalance = useCallback(\n async (newBalance: number) => {\n if (!editBalanceState) return\n await baseSubmitHandler({}, async () => {\n try {\n await updateBalance({\n request: {\n timeOffPolicyUuid: policyId,\n requestBody: {\n employees: [{ uuid: editBalanceState.employeeUuid, balance: String(newBalance) }],\n },\n },\n })\n } catch (err) {\n if (err instanceof UnprocessableEntityError) {\n const maxHours = policy.maxHours != null ? Number(policy.maxHours) : null\n const hasLimitViolation = err.errors.some(\n e =>\n e.message === 'LIMIT_VIOLATION_MAX_HOURS' ||\n e.category === 'invalid_attribute_value',\n )\n if (hasLimitViolation && maxHours != null) {\n throw new SDKInternalError(\n t('editBalanceModal.errors.balanceExceedsMax', { max: maxHours }),\n 'api_error',\n )\n }\n const messages = err.errors.map(e => e.message).filter(Boolean)\n throw new SDKInternalError(\n messages.join('. ') || t('editBalanceModal.errors.updateFailed'),\n 'api_error',\n )\n }\n throw err\n }\n invalidatePolicy()\n setEditBalanceState(null)\n setSuccessAlert(t('flash.balanceUpdated', { name: editBalanceState.employeeName }))\n })\n },\n [\n baseSubmitHandler,\n updateBalance,\n policyId,\n editBalanceState,\n invalidatePolicy,\n t,\n policy.maxHours,\n ],\n )\n\n const handleAddEmployees = useCallback(() => {\n onEvent(componentEvents.TIME_OFF_ADD_EMPLOYEES_TO_POLICY, { policyId })\n }, [onEvent, policyId])\n\n const actions = useMemo(() => {\n if (!isEditable) return undefined\n return [\n <Button\n key=\"add\"\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={handleAddEmployees}\n >\n {t('addEmployeeCta')}\n </Button>,\n <Button\n key=\"edit\"\n variant=\"secondary\"\n icon={<EditIcon aria-hidden />}\n onClick={() => {\n onEvent(componentEvents.TIME_OFF_EDIT_POLICY, { policyId })\n }}\n >\n {t('editPolicyCta')}\n </Button>,\n ]\n }, [Button, onEvent, policyId, t, isEditable, handleAddEmployees])\n\n const isUnlimited = policy.accrualMethod === 'unlimited'\n\n const itemMenu = useCallback(\n (employee: TimeOffPolicyDetailEmployee) => {\n const employeeName = `${employee.firstName ?? ''} ${employee.lastName ?? ''}`.trim()\n const items = [\n ...(!isUnlimited\n ? [\n {\n label: t('employeeTable.editBalance'),\n icon: <EditIcon aria-hidden />,\n onClick: () => {\n setError(null)\n setEditBalanceState({\n employeeUuid: employee.uuid,\n employeeName,\n currentBalance: employee.balance ?? 0,\n })\n },\n },\n ]\n : []),\n {\n label: t('employeeTable.removeEmployee'),\n icon: <TrashCanSvg aria-hidden />,\n onClick: () => {\n setRemoveTarget({ uuid: employee.uuid, name: employeeName })\n },\n },\n ]\n return (\n <HamburgerMenu\n items={items}\n triggerLabel={`${t('employeeTable.actions')} ${employeeName}`}\n />\n )\n },\n [t, isUnlimited, setError],\n )\n\n const discriminatedProps =\n policyDetails.accrualMethod === 'unlimited'\n ? { policyDetails }\n : {\n policyDetails,\n policySettings: policySettings!,\n onChangeSettings: isEditable\n ? () => {\n onEvent(componentEvents.TIME_OFF_CHANGE_SETTINGS, { policyId })\n }\n : undefined,\n }\n\n return (\n <>\n <TimeOffPolicyDetailPresentation\n {...discriminatedProps}\n title={policy.name}\n subtitle={t(`subtitle.${policyDetails.policyType}`)}\n onBack={() => {\n onEvent(componentEvents.TIME_OFF_BACK_TO_LIST)\n }}\n backLabel={t('breadcrumb')}\n actions={actions}\n selectedTabId={selectedTabId}\n onTabChange={setSelectedTabId}\n employees={{\n data: filteredEmployees,\n searchValue,\n onSearchChange: setSearchValue,\n onSearchClear: () => {\n setSearchValue('')\n },\n ...(isEditable ? { itemMenu } : {}),\n }}\n onAddEmployee={isEditable ? handleAddEmployees : undefined}\n removeDialog={{\n isOpen: removeTarget !== null,\n employeeName: removeTarget?.name ?? '',\n onConfirm: () => {\n if (removeTarget) {\n void handleRemoveEmployee(removeTarget.uuid, removeTarget.name)\n }\n },\n onClose: () => {\n setRemoveTarget(null)\n },\n isPending: isRemovePending,\n }}\n successAlert={successAlert}\n onDismissAlert={() => {\n setSuccessAlert(undefined)\n }}\n />\n\n <EditEmployeeBalanceModal\n isOpen={editBalanceState !== null}\n onClose={() => {\n setEditBalanceState(null)\n setError(null)\n }}\n employeeName={editBalanceState?.employeeName ?? ''}\n currentBalance={editBalanceState?.currentBalance ?? 0}\n onConfirm={handleUpdateBalance}\n isPending={isBalancePending}\n error={error}\n />\n </>\n )\n}\n"],"names":["TimeOffPolicyDetail","props","jsx","BaseComponent","Root","API_ACCRUAL_METHOD_MAP","mapAccrualMethod","apiMethod","mapPolicyType","apiType","formatResetDate","resetDate","locale","month","day","derivePolicyDetails","policy","policyType","accrualMethod","derivePolicySettings","deriveEmployees","allEmployees","employeeMap","e","policyEmp","emp","primaryJob","job","policyId","useI18n","t","useTranslation","onEvent","baseSubmitHandler","error","setError","useBase","Button","useComponentContext","useLocale","queryClient","useQueryClient","policyResponse","useTimeOffPoliciesGetSuspense","removeEmployees","isRemovePending","useTimeOffPoliciesRemoveEmployeesMutation","updateBalance","isBalancePending","useTimeOffPoliciesUpdateBalanceMutation","isEditable","isEditableTimeOffPolicyType","employeesData","useEmployeesListSuspense","selectedTabId","setSelectedTabId","useState","searchValue","setSearchValue","successAlert","setSuccessAlert","removeTarget","setRemoveTarget","editBalanceState","setEditBalanceState","policyDetails","useMemo","policySettings","employees","filteredEmployees","query","invalidatePolicy","useCallback","handleRemoveEmployee","employeeUuid","employeeName","handleUpdateBalance","newBalance","err","UnprocessableEntityError","maxHours","SDKInternalError","messages","handleAddEmployees","componentEvents","actions","PlusCircleIcon","EditIcon","isUnlimited","itemMenu","employee","items","TrashCanSvg","HamburgerMenu","discriminatedProps","jsxs","Fragment","TimeOffPolicyDetailPresentation","EditEmployeeBalanceModal"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import { EmployeeTableItem, EmployeeTableProps } from './EmployeeTableTypes';
2
- export declare function EmployeeTable<T extends EmployeeTableItem>({ data, label, additionalColumns, hideJobTitle, searchValue, onSearchChange, onSearchClear, searchPlaceholder, selectionMode, onSelect, onSelectAll, getIsItemSelected, itemMenu, pagination, isFetching, emptyState, emptySearchState, footer, }: EmployeeTableProps<T>): import("react/jsx-runtime").JSX.Element;
2
+ export declare function EmployeeTable<T extends EmployeeTableItem>({ data, label, additionalColumns, hideJobTitle, searchValue, onSearchChange, onSearchClear, searchPlaceholder, hideSearch, selectionMode, onSelect, onSelectAll, getIsItemSelected, hideSelectAll, itemMenu, pagination, isFetching, emptyState, emptySearchState, footer, }: EmployeeTableProps<T>): import("react/jsx-runtime").JSX.Element;