@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.
- package/CHANGELOG.md +64 -0
- package/dist/components/Common/DataView/DataCards/DataCards.d.ts +2 -1
- package/dist/components/Common/DataView/DataCards/DataCards.js +14 -13
- package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
- package/dist/components/Common/DataView/DataTable/DataTable.d.ts +2 -1
- package/dist/components/Common/DataView/DataTable/DataTable.js +51 -50
- package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
- package/dist/components/Common/DataView/DataView.d.ts +1 -0
- package/dist/components/Common/DataView/DataView.js.map +1 -1
- package/dist/components/Common/DataView/useDataView.d.ts +8 -1
- package/dist/components/Common/DataView/useDataView.js +20 -17
- package/dist/components/Common/DataView/useDataView.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +20 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +20 -4
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +22 -6
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +20 -4
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +20 -4
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/fields.js +4 -4
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +28 -12
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +23 -7
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +20 -4
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +20 -4
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +20 -4
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js +5 -5
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +20 -4
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +20 -4
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Contractor/Address/useAddress.js +22 -6
- package/dist/components/Contractor/Address/useAddress.js.map +1 -1
- package/dist/components/Contractor/Profile/useContractorProfile.js +52 -42
- package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
- package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.d.ts +9 -0
- package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.js +76 -0
- package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.js.map +1 -0
- package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.module.scss.js +8 -0
- package/dist/components/Employee/Compensation/management/AddAnotherJob/AddAnotherJob.module.scss.js.map +1 -0
- package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.d.ts +11 -0
- package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.js +85 -0
- package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.js.map +1 -0
- package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.module.scss.js +8 -0
- package/dist/components/Employee/Compensation/management/EditCompensation/EditCompensation.module.scss.js.map +1 -0
- package/dist/components/Employee/Compensation/management/EditCompensation/index.d.ts +3 -0
- package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.d.ts +25 -0
- package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.js +81 -0
- package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.js.map +1 -0
- package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.module.scss.js +8 -0
- package/dist/components/Employee/Compensation/management/EditPendingCompensation/EditPendingCompensation.module.scss.js.map +1 -0
- package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.d.ts +18 -0
- package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js +171 -0
- package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js.map +1 -0
- package/dist/components/Employee/Compensation/management/index.d.ts +6 -0
- package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.d.ts +6 -1
- package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.js +67 -209
- package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.d.ts +18 -0
- package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js +169 -0
- package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js.map +1 -0
- package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.d.ts +16 -0
- package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.js +36 -30
- package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.d.ts +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js +4 -4
- package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +212 -187
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/fields.js +6 -6
- package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.d.ts +8 -0
- package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.js +22 -17
- package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.d.ts +12 -2
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +115 -110
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
- package/dist/components/Employee/Dashboard/BasicDetailsView.d.ts +8 -3
- package/dist/components/Employee/Dashboard/BasicDetailsView.js +108 -84
- package/dist/components/Employee/Dashboard/BasicDetailsView.js.map +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.d.ts +2 -0
- package/dist/components/Employee/Dashboard/Dashboard.js +86 -68
- package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Employee/Dashboard/DashboardComponents.d.ts +8 -4
- package/dist/components/Employee/Dashboard/DashboardComponents.js +147 -93
- package/dist/components/Employee/Dashboard/DashboardComponents.js.map +1 -1
- package/dist/components/Employee/Dashboard/DocumentsView.js +18 -11
- package/dist/components/Employee/Dashboard/DocumentsView.js.map +1 -1
- package/dist/components/Employee/Dashboard/JobAndPayView.js +304 -264
- package/dist/components/Employee/Dashboard/JobAndPayView.js.map +1 -1
- package/dist/components/Employee/Dashboard/JobAndPayView.module.scss.js +10 -0
- package/dist/components/Employee/Dashboard/JobAndPayView.module.scss.js.map +1 -0
- package/dist/components/Employee/Dashboard/TaxesView.d.ts +7 -2
- package/dist/components/Employee/Dashboard/TaxesView.js +68 -54
- package/dist/components/Employee/Dashboard/TaxesView.js.map +1 -1
- package/dist/components/Employee/Dashboard/dashboardStateMachine.js +152 -142
- package/dist/components/Employee/Dashboard/dashboardStateMachine.js.map +1 -1
- package/dist/components/Employee/Dashboard/getPendingCompensationChanges.d.ts +6 -0
- package/dist/components/Employee/Dashboard/getPendingCompensationChanges.js +13 -12
- package/dist/components/Employee/Dashboard/getPendingCompensationChanges.js.map +1 -1
- package/dist/components/Employee/Dashboard/hooks/useEmployeeBasicDetails.d.ts +12 -5
- package/dist/components/Employee/Dashboard/hooks/useEmployeeBasicDetails.js +21 -21
- package/dist/components/Employee/Dashboard/hooks/useEmployeeBasicDetails.js.map +1 -1
- package/dist/components/Employee/Dashboard/hooks/useEmployeeCompensation.d.ts +13 -3
- package/dist/components/Employee/Dashboard/hooks/useEmployeeCompensation.js +53 -55
- package/dist/components/Employee/Dashboard/hooks/useEmployeeCompensation.js.map +1 -1
- package/dist/components/Employee/Dashboard/hooks/useEmployeeForms.d.ts +10 -4
- package/dist/components/Employee/Dashboard/hooks/useEmployeeForms.js +10 -12
- package/dist/components/Employee/Dashboard/hooks/useEmployeeForms.js.map +1 -1
- package/dist/components/Employee/Dashboard/hooks/useEmployeeTaxes.d.ts +10 -3
- package/dist/components/Employee/Dashboard/hooks/useEmployeeTaxes.js +19 -14
- package/dist/components/Employee/Dashboard/hooks/useEmployeeTaxes.js.map +1 -1
- package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.js +8 -8
- package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.js +4 -4
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +20 -4
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/shared/useSignEmployeeForm/fields.js +1 -1
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js +37 -40
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.d.ts +1 -2
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js +64 -71
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.d.ts +2 -0
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js +25 -0
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js.map +1 -0
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.d.ts +13 -0
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js +37 -0
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js.map +1 -0
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.d.ts +6 -0
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js +69 -0
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js.map +1 -0
- package/dist/components/Employee/EmployeeListFlow/index.d.ts +3 -0
- package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/fields.js +4 -4
- package/dist/components/Employee/HomeAddress/management/HomeAddress.js +15 -12
- package/dist/components/Employee/HomeAddress/management/HomeAddress.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.d.ts +2 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js +86 -83
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useBankForm/fields.js +1 -1
- package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/splitFieldFactory.js +4 -4
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/fields.js +8 -8
- package/dist/components/Employee/Profile/shared/useHomeAddressForm/fields.js +5 -5
- package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.js +4 -4
- package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldComponents.js +8 -8
- package/dist/components/Employee/Taxes/useTaxes.js +20 -4
- package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddress.js +14 -11
- package/dist/components/Employee/WorkAddress/management/WorkAddress.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.d.ts +2 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js +92 -89
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
- package/dist/components/Employee/exports/employeeManagement.d.ts +2 -0
- package/dist/components/Employee/exports/employeeManagement.js +18 -16
- package/dist/components/Employee/exports/employeeManagement.js.map +1 -1
- package/dist/components/Employee/index.d.ts +2 -0
- package/dist/components/Employee/index.js +32 -30
- package/dist/components/Employee/index.js.map +1 -1
- package/dist/components/Flow/FlowHeader.js +34 -31
- package/dist/components/Flow/FlowHeader.js.map +1 -1
- package/dist/components/Flow/useFlow.d.ts +12 -0
- package/dist/components/Flow/useFlow.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +34 -26
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +36 -22
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyList.js +92 -69
- package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js +23 -23
- package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js +52 -40
- package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffFlow/TimeOffFlowComponents.d.ts +1 -1
- package/dist/components/TimeOff/TimeOffFlow/TimeOffFlowComponents.js.map +1 -1
- package/dist/components/TimeOff/TimeOffFlow/timeOffStateMachine.js +73 -56
- package/dist/components/TimeOff/TimeOffFlow/timeOffStateMachine.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +58 -58
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.d.ts +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js +91 -87
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormTypes.d.ts +2 -0
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +91 -124
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.d.ts +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js +72 -87
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +1 -6
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +160 -220
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.d.ts +7 -3
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js +77 -54
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.test.d.ts +1 -0
- package/dist/components/TimeOff/TimeOffPolicyDetail/EditEmployeeBalanceModal.js +12 -11
- package/dist/components/TimeOff/TimeOffPolicyDetail/EditEmployeeBalanceModal.js.map +1 -1
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +177 -147
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.d.ts +1 -1
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js +38 -36
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js.map +1 -1
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTableTypes.d.ts +2 -0
- package/dist/i18n/en/Company.TimeOff.SelectEmployees.json.js +10 -10
- package/dist/i18n/en/Company.TimeOff.TimeOffPolicies.json.js +17 -15
- package/dist/i18n/en/Company.TimeOff.TimeOffPolicies.json.js.map +1 -1
- package/dist/i18n/en/Company.TimeOff.TimeOffPolicyDetails.json.js +9 -9
- package/dist/i18n/en/Employee.Compensation.json.js +68 -56
- package/dist/i18n/en/Employee.Compensation.json.js.map +1 -1
- package/dist/i18n/en/Employee.Dashboard.json.js +26 -24
- package/dist/i18n/en/Employee.Dashboard.json.js.map +1 -1
- package/dist/i18n/en/Employee.DocumentManager.json.js +1 -1
- package/dist/i18n/en/Employee.HomeAddress.Management.json.js +12 -10
- package/dist/i18n/en/Employee.HomeAddress.Management.json.js.map +1 -1
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js +32 -30
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js.map +1 -1
- package/dist/i18n/en/Employee.WorkAddress.Management.json.js +16 -14
- package/dist/i18n/en/Employee.WorkAddress.Management.json.js.map +1 -1
- package/dist/i18n/en/common.json.d.ts +21 -0
- package/dist/partner-hook-utils/form/fields/DatePickerHookField.js +33 -32
- package/dist/partner-hook-utils/form/fields/DatePickerHookField.js.map +1 -1
- package/dist/partner-hook-utils/types.d.ts +4 -0
- package/dist/shared/constants.d.ts +4 -0
- package/dist/shared/constants.js +20 -18
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/i18next.d.ts +45 -11
- package/docs/reference/endpoint-inventory.json +24 -8
- package/package.json +1 -1
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { useTranslation as
|
|
4
|
-
import { useTimeOffPoliciesGetSuspense as
|
|
5
|
-
import { useTimeOffPoliciesRemoveEmployeesMutation as
|
|
6
|
-
import { useTimeOffPoliciesUpdateBalanceMutation as
|
|
7
|
-
import { useEmployeesListSuspense as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
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
|
|
36
|
-
return
|
|
37
|
+
function he(e) {
|
|
38
|
+
return be[e] ?? "unlimited";
|
|
37
39
|
}
|
|
38
|
-
function
|
|
40
|
+
function ve(e) {
|
|
39
41
|
return e === "sick" ? "sick" : "vacation";
|
|
40
42
|
}
|
|
41
|
-
function Pe(e,
|
|
43
|
+
function Pe(e, r) {
|
|
42
44
|
if (!e) return;
|
|
43
|
-
const [
|
|
44
|
-
return !
|
|
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
|
|
47
|
-
const
|
|
48
|
-
return
|
|
49
|
-
policyType:
|
|
50
|
-
accrualMethod:
|
|
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,
|
|
55
|
+
resetDate: Pe(e.policyResetDate, r)
|
|
54
56
|
};
|
|
55
57
|
}
|
|
56
|
-
function
|
|
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
|
|
67
|
-
const
|
|
68
|
-
return e.employees.map((
|
|
69
|
-
const
|
|
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:
|
|
72
|
-
firstName:
|
|
73
|
-
lastName:
|
|
74
|
-
jobTitle:
|
|
75
|
-
balance:
|
|
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
|
|
80
|
-
|
|
81
|
-
const { t } =
|
|
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:
|
|
84
|
-
if (!
|
|
85
|
-
const
|
|
86
|
-
companyId:
|
|
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
|
-
}), [
|
|
89
|
-
() =>
|
|
90
|
-
[
|
|
91
|
-
),
|
|
92
|
-
if (!
|
|
93
|
-
const
|
|
94
|
-
return
|
|
95
|
-
}, [
|
|
96
|
-
|
|
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
|
-
}, [
|
|
100
|
-
async (
|
|
101
|
-
await
|
|
102
|
-
await
|
|
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:
|
|
107
|
+
requestBody: { employees: [{ uuid: i }] }
|
|
106
108
|
}
|
|
107
|
-
}),
|
|
109
|
+
}), P(), g(r("flash.employeeRemoved", { name: n }));
|
|
108
110
|
});
|
|
109
111
|
},
|
|
110
|
-
[
|
|
111
|
-
),
|
|
112
|
-
async (
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
141
|
+
throw n;
|
|
142
|
+
}
|
|
143
|
+
P(), C(null), g(r("flash.balanceUpdated", { name: m.employeeName }));
|
|
122
144
|
});
|
|
123
145
|
},
|
|
124
|
-
[
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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__ */
|
|
131
|
-
|
|
160
|
+
/* @__PURE__ */ l(
|
|
161
|
+
c,
|
|
132
162
|
{
|
|
133
163
|
variant: "secondary",
|
|
134
|
-
icon: /* @__PURE__ */
|
|
135
|
-
onClick:
|
|
136
|
-
children:
|
|
164
|
+
icon: /* @__PURE__ */ l(ye, { "aria-hidden": !0 }),
|
|
165
|
+
onClick: M,
|
|
166
|
+
children: r("addEmployeeCta")
|
|
137
167
|
},
|
|
138
168
|
"add"
|
|
139
169
|
),
|
|
140
|
-
/* @__PURE__ */
|
|
141
|
-
|
|
170
|
+
/* @__PURE__ */ l(
|
|
171
|
+
c,
|
|
142
172
|
{
|
|
143
173
|
variant: "secondary",
|
|
144
|
-
icon: /* @__PURE__ */
|
|
174
|
+
icon: /* @__PURE__ */ l(R, { "aria-hidden": !0 }),
|
|
145
175
|
onClick: () => {
|
|
146
|
-
|
|
176
|
+
a(O.TIME_OFF_EDIT_POLICY, { policyId: e });
|
|
147
177
|
},
|
|
148
|
-
children:
|
|
178
|
+
children: r("editPolicyCta")
|
|
149
179
|
},
|
|
150
180
|
"edit"
|
|
151
181
|
)
|
|
152
182
|
];
|
|
153
|
-
}, [
|
|
154
|
-
(
|
|
155
|
-
const
|
|
156
|
-
...
|
|
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:
|
|
159
|
-
icon: /* @__PURE__ */
|
|
188
|
+
label: r("employeeTable.editBalance"),
|
|
189
|
+
icon: /* @__PURE__ */ l(R, { "aria-hidden": !0 }),
|
|
160
190
|
onClick: () => {
|
|
161
|
-
C({
|
|
162
|
-
employeeUuid:
|
|
163
|
-
employeeName:
|
|
164
|
-
currentBalance:
|
|
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:
|
|
171
|
-
icon: /* @__PURE__ */
|
|
200
|
+
label: r("employeeTable.removeEmployee"),
|
|
201
|
+
icon: /* @__PURE__ */ l(pe, { "aria-hidden": !0 }),
|
|
172
202
|
onClick: () => {
|
|
173
|
-
|
|
203
|
+
E({ uuid: i.uuid, name: n });
|
|
174
204
|
}
|
|
175
205
|
}
|
|
176
206
|
];
|
|
177
|
-
return /* @__PURE__ */
|
|
178
|
-
|
|
207
|
+
return /* @__PURE__ */ l(
|
|
208
|
+
_e,
|
|
179
209
|
{
|
|
180
|
-
items:
|
|
181
|
-
triggerLabel: `${
|
|
210
|
+
items: p,
|
|
211
|
+
triggerLabel: `${r("employeeTable.actions")} ${n}`
|
|
182
212
|
}
|
|
183
213
|
);
|
|
184
214
|
},
|
|
185
|
-
[
|
|
186
|
-
),
|
|
215
|
+
[r, L, u]
|
|
216
|
+
), Q = v.accrualMethod === "unlimited" ? { policyDetails: v } : {
|
|
187
217
|
policyDetails: v,
|
|
188
|
-
policySettings:
|
|
189
|
-
onChangeSettings:
|
|
190
|
-
|
|
218
|
+
policySettings: $,
|
|
219
|
+
onChangeSettings: d ? () => {
|
|
220
|
+
a(O.TIME_OFF_CHANGE_SETTINGS, { policyId: e });
|
|
191
221
|
} : void 0
|
|
192
222
|
};
|
|
193
|
-
return /* @__PURE__ */
|
|
194
|
-
/* @__PURE__ */
|
|
195
|
-
|
|
223
|
+
return /* @__PURE__ */ X(z, { children: [
|
|
224
|
+
/* @__PURE__ */ l(
|
|
225
|
+
ie,
|
|
196
226
|
{
|
|
197
|
-
...
|
|
198
|
-
title:
|
|
199
|
-
subtitle:
|
|
227
|
+
...Q,
|
|
228
|
+
title: o.name,
|
|
229
|
+
subtitle: r(`subtitle.${v.policyType}`),
|
|
200
230
|
onBack: () => {
|
|
201
|
-
|
|
231
|
+
a(O.TIME_OFF_BACK_TO_LIST);
|
|
202
232
|
},
|
|
203
|
-
backLabel:
|
|
204
|
-
actions:
|
|
205
|
-
selectedTabId:
|
|
206
|
-
onTabChange:
|
|
233
|
+
backLabel: r("breadcrumb"),
|
|
234
|
+
actions: G,
|
|
235
|
+
selectedTabId: F,
|
|
236
|
+
onTabChange: Y,
|
|
207
237
|
employees: {
|
|
208
|
-
data:
|
|
209
|
-
searchValue:
|
|
238
|
+
data: j,
|
|
239
|
+
searchValue: h,
|
|
210
240
|
onSearchChange: D,
|
|
211
241
|
onSearchClear: () => {
|
|
212
242
|
D("");
|
|
213
243
|
},
|
|
214
|
-
...
|
|
244
|
+
...d ? { itemMenu: K } : {}
|
|
215
245
|
},
|
|
216
|
-
onAddEmployee:
|
|
246
|
+
onAddEmployee: d ? M : void 0,
|
|
217
247
|
removeDialog: {
|
|
218
|
-
isOpen:
|
|
219
|
-
employeeName:
|
|
248
|
+
isOpen: f !== null,
|
|
249
|
+
employeeName: f?.name ?? "",
|
|
220
250
|
onConfirm: () => {
|
|
221
|
-
|
|
251
|
+
f && V(f.uuid, f.name);
|
|
222
252
|
},
|
|
223
253
|
onClose: () => {
|
|
224
|
-
|
|
254
|
+
E(null);
|
|
225
255
|
},
|
|
226
|
-
isPending:
|
|
256
|
+
isPending: k
|
|
227
257
|
},
|
|
228
|
-
successAlert:
|
|
258
|
+
successAlert: q,
|
|
229
259
|
onDismissAlert: () => {
|
|
230
|
-
|
|
260
|
+
g(void 0);
|
|
231
261
|
}
|
|
232
262
|
}
|
|
233
263
|
),
|
|
234
|
-
/* @__PURE__ */
|
|
235
|
-
|
|
264
|
+
/* @__PURE__ */ l(
|
|
265
|
+
le,
|
|
236
266
|
{
|
|
237
|
-
isOpen:
|
|
267
|
+
isOpen: m !== null,
|
|
238
268
|
onClose: () => {
|
|
239
|
-
C(null),
|
|
269
|
+
C(null), u(null);
|
|
240
270
|
},
|
|
241
|
-
employeeName:
|
|
242
|
-
currentBalance:
|
|
243
|
-
onConfirm:
|
|
244
|
-
isPending:
|
|
245
|
-
error:
|
|
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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;AAiCO,SAASA,GAAoBC,GAAiC;AACnE,SACE,gBAAAC,EAACC,MAAe,GAAGF,GACjB,4BAACG,IAAA,EAAM,GAAGH,GAAO,EAAA,CACnB;AAEJ;AAEA,MAAMI,KAA2D;AAAA,EAC/D,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,6BAA6B;AAAA,EAC7B,eAAe;AAAA,EACf,2BAA2B;AAC7B;AAEA,SAASC,GAAiBC,GAAqC;AAC7D,SAAOF,GAAuBE,CAAS,KAAK;AAC9C;AAEA,SAASC,GAAcC,GAAgC;AACrD,SAAIA,MAAY,SAAe,SACxB;AACT;AAEA,SAASC,GACPC,GACAC,GACoB;AACpB,MAAI,CAACD,EAAW;AAChB,QAAM,CAACE,GAAOC,CAAG,IAAIH,EAAU,MAAM,GAAG;AACxC,SAAI,CAACE,KAAS,CAACC,IAAYH,IACd,IAAI,KAAK,KAAM,SAASE,GAAO,EAAE,IAAI,GAAG,SAASC,GAAK,EAAE,CAAC,EAC1D,mBAAmBF,GAAQ,EAAE,OAAO,QAAQ,KAAK,WAAW;AAC1E;AAEA,SAASG,GAAoBC,GAAuBJ,GAAgC;AAClF,QAAMK,IAAaT,GAAcQ,EAAO,UAAU,GAC5CE,IAAgBZ,GAAiBU,EAAO,aAAa;AAE3D,SAAIE,MAAkB,cACb,EAAE,YAAAD,GAAY,eAAAC,EAAA,IAGhB;AAAA,IACL,YAAAD;AAAA,IACA,eAAAC;AAAA,IACA,aAAaF,EAAO,cAAc,OAAOA,EAAO,WAAW,IAAI;AAAA,IAC/D,iBAAiBA,EAAO,kBAAkB,OAAOA,EAAO,eAAe,IAAI;AAAA,IAC3E,WAAWN,GAAgBM,EAAO,iBAAiBJ,CAAM;AAAA,EAAA;AAE7D;AAEA,SAASO,GAAqBH,GAA0D;AACtF,MAAIA,EAAO,kBAAkB;AAE7B,WAAO;AAAA,MACL,wBACEA,EAAO,0BAA0B,OAAO,OAAOA,EAAO,sBAAsB,IAAI;AAAA,MAClF,UAAUA,EAAO,YAAY,OAAO,OAAOA,EAAO,QAAQ,IAAI;AAAA,MAC9D,qBACEA,EAAO,uBAAuB,OAAO,OAAOA,EAAO,mBAAmB,IAAI;AAAA,MAC5E,0BAA0BA,EAAO,4BAA4B;AAAA,MAC7D,sBAAsBA,EAAO,wBAAwB;AAAA,IAAA;AAEzD;AAEA,SAASI,GACPJ,GACAK,GAM+B;AAC/B,QAAMC,IAAc,IAAI,IAAID,EAAa,IAAI,CAAAE,MAAK,CAACA,EAAE,MAAMA,CAAC,CAAC,CAAC;AAC9D,SAAOP,EAAO,UAAU,IAAI,CAAAQ,MAAa;AACvC,UAAMC,IAAMH,EAAY,IAAIE,EAAU,QAAQ,EAAE,GAC1CE,IAAaD,GAAK,MAAM,KAAK,CAAAE,MAAOA,EAAI,OAAO;AACrD,WAAO;AAAA,MACL,MAAMH,EAAU,QAAQ;AAAA,MACxB,WAAWC,GAAK,aAAa;AAAA,MAC7B,UAAUA,GAAK,YAAY;AAAA,MAC3B,UAAUC,GAAY,SAAS;AAAA,MAC/B,SAASF,EAAU,WAAW,OAAO,OAAOA,EAAU,OAAO,IAAI;AAAA,IAAA;AAAA,EAErE,CAAC;AACH;AAQA,SAASpB,GAAK,EAAE,UAAAwB,KAAsC;AACpD,EAAAC,GAAQ,sCAAsC;AAC9C,QAAM,EAAE,EAAA,IAAMC,EAAe,sCAAsC,GAC7D,EAAE,SAAAC,GAAS,mBAAAC,GAAmB,OAAAC,GAAO,UAAAC,EAAA,IAAaC,GAAA,GAClD,EAAE,QAAAC,EAAA,IAAWC,GAAA,GACb,EAAE,QAAAzB,EAAA,IAAW0B,GAAA,GACbC,IAAcC,GAAA,GAEd,EAAE,MAAMC,EAAA,IAAmBC,EAA8B;AAAA,IAC7D,mBAAmBd;AAAA,EAAA,CACpB,GAEK,EAAE,aAAae,GAAiB,WAAWC,EAAA,IAC/CC,EAAA,GACI,EAAE,aAAaC,GAAe,WAAWC,EAAA,IAC7CC,EAAA,GAEIhC,IAASyB,EAAe;AAC9B,MAAI,CAACzB,EAAQ,OAAM,IAAI,MAAM,4CAA4C;AAEzE,QAAMiC,IAAaC,GAA4BlC,EAAO,UAAU,GAE1D,EAAE,MAAMmC,EAAA,IAAkBC,GAAyB;AAAA,IACvD,WAAWpC,EAAO;AAAA,IAClB,YAAY;AAAA,EAAA,CACb,GAEK,CAACqC,GAAeC,CAAgB,IAAIC,EAAS,SAAS,GACtD,CAACC,GAAaC,CAAc,IAAIF,EAAS,EAAE,GAC3C,CAACG,GAAcC,CAAe,IAAIJ,EAAA,GAClC,CAACK,GAAcC,CAAe,IAAIN,EAG9B,IAAI,GACR,CAACO,GAAkBC,CAAmB,IAAIR,EAAkC,IAAI,GAEhFS,IAAgBC,EAAQ,MAAMlD,GAAoBC,GAAQJ,CAAM,GAAG,CAACI,GAAQJ,CAAM,CAAC,GACnFsD,IAAiBD,EAAQ,MAAM9C,GAAqBH,CAAM,GAAG,CAACA,CAAM,CAAC,GACrEmD,IAAYF;AAAA,IAChB,MAAM7C,GAAgBJ,GAAQmC,EAAc,iBAAiB,CAAA,CAAE;AAAA,IAC/D,CAACnC,GAAQmC,EAAc,aAAa;AAAA,EAAA,GAGhCiB,IAAoBH,EAAQ,MAAM;AACtC,QAAI,CAACT,EAAY,KAAA,EAAQ,QAAOW;AAChC,UAAME,IAAQb,EAAY,YAAA;AAC1B,WAAOW,EAAU,OAAO,CAAA1C,MACL,GAAGA,EAAI,aAAa,EAAE,IAAIA,EAAI,YAAY,EAAE,GAAG,YAAA,EAChD,SAAS4C,CAAK,CAC/B;AAAA,EACH,GAAG,CAACF,GAAWX,CAAW,CAAC,GAErBc,IAAmBC,EAAY,MAAM;AACzC,IAAKhC,EAAY,kBAAkB;AAAA,MACjC,UAAU,CAAC,uBAAuB,mBAAmB,KAAK;AAAA,IAAA,CAC3D;AAAA,EACH,GAAG,CAACA,CAAW,CAAC,GAEViC,IAAuBD;AAAA,IAC3B,OAAOE,GAAsBC,MAAyB;AACpD,YAAM1C,EAAkB,CAAA,GAAI,YAAY;AACtC,cAAMW,EAAgB;AAAA,UACpB,SAAS;AAAA,YACP,mBAAmBf;AAAA,YACnB,aAAa,EAAE,WAAW,CAAC,EAAE,MAAM6C,EAAA,CAAc,EAAA;AAAA,UAAE;AAAA,QACrD,CACD,GACDH,EAAA,GACAT,EAAgB,IAAI,GACpBF,EAAgB,EAAE,yBAAyB,EAAE,MAAMe,EAAA,CAAc,CAAC;AAAA,MACpE,CAAC;AAAA,IACH;AAAA,IACA,CAAC1C,GAAmBW,GAAiBf,GAAU0C,GAAkB,CAAC;AAAA,EAAA,GAG9DK,IAAsBJ;AAAA,IAC1B,OAAOK,MAAuB;AAC5B,MAAKd,KACL,MAAM9B,EAAkB,CAAA,GAAI,YAAY;AACtC,cAAMc,EAAc;AAAA,UAClB,SAAS;AAAA,YACP,mBAAmBlB;AAAA,YACnB,aAAa;AAAA,cACX,WAAW,CAAC,EAAE,MAAMkC,EAAiB,cAAc,SAAS,OAAOc,CAAU,EAAA,CAAG;AAAA,YAAA;AAAA,UAClF;AAAA,QACF,CACD,GACDN,EAAA,GACAP,EAAoB,IAAI,GACxBJ,EAAgB,EAAE,wBAAwB,EAAE,MAAMG,EAAiB,aAAA,CAAc,CAAC;AAAA,MACpF,CAAC;AAAA,IACH;AAAA,IACA,CAAC9B,GAAmBc,GAAelB,GAAUkC,GAAkBQ,GAAkB,CAAC;AAAA,EAAA,GAG9EO,IAAqBN,EAAY,MAAM;AAC3C,IAAAxC,EAAQ+C,EAAgB,kCAAkC,EAAE,UAAAlD,EAAA,CAAU;AAAA,EACxE,GAAG,CAACG,GAASH,CAAQ,CAAC,GAEhBmD,IAAUd,EAAQ,MAAM;AAC5B,QAAKhB;AACL,aAAO;AAAA,QACL,gBAAA/C;AAAA,UAACkC;AAAA,UAAA;AAAA,YAEC,SAAQ;AAAA,YACR,MAAM,gBAAAlC,EAAC8E,IAAA,EAAe,eAAW,GAAA,CAAC;AAAA,YAClC,SAASH;AAAA,YAER,YAAE,gBAAgB;AAAA,UAAA;AAAA,UALf;AAAA,QAAA;AAAA,QAON,gBAAA3E;AAAA,UAACkC;AAAA,UAAA;AAAA,YAEC,SAAQ;AAAA,YACR,MAAM,gBAAAlC,EAAC+E,GAAA,EAAS,eAAW,GAAA,CAAC;AAAA,YAC5B,SAAS,MAAM;AACb,cAAAlD,EAAQ+C,EAAgB,sBAAsB,EAAE,UAAAlD,EAAA,CAAU;AAAA,YAC5D;AAAA,YAEC,YAAE,eAAe;AAAA,UAAA;AAAA,UAPd;AAAA,QAAA;AAAA,MAQN;AAAA,EAEJ,GAAG,CAACQ,GAAQL,GAASH,GAAU,GAAGqB,GAAY4B,CAAkB,CAAC,GAE3DK,IAAclE,EAAO,kBAAkB,aAEvCmE,IAAWZ;AAAA,IACf,CAACa,MAA0C;AACzC,YAAMV,IAAe,GAAGU,EAAS,aAAa,EAAE,IAAIA,EAAS,YAAY,EAAE,GAAG,KAAA,GACxEC,IAAQ;AAAA,QACZ,GAAKH,IAcD,CAAA,IAbA;AAAA,UACE;AAAA,YACE,OAAO,EAAE,2BAA2B;AAAA,YACpC,MAAM,gBAAAhF,EAAC+E,GAAA,EAAS,eAAW,GAAA,CAAC;AAAA,YAC5B,SAAS,MAAM;AACb,cAAAlB,EAAoB;AAAA,gBAClB,cAAcqB,EAAS;AAAA,gBACvB,cAAAV;AAAA,gBACA,gBAAgBU,EAAS,WAAW;AAAA,cAAA,CACrC;AAAA,YACH;AAAA,UAAA;AAAA,QACF;AAAA,QAGN;AAAA,UACE,OAAO,EAAE,8BAA8B;AAAA,UACvC,MAAM,gBAAAlF,EAACoF,IAAA,EAAY,eAAW,GAAA,CAAC;AAAA,UAC/B,SAAS,MAAM;AACb,YAAAzB,EAAgB,EAAE,MAAMuB,EAAS,MAAM,MAAMV,GAAc;AAAA,UAC7D;AAAA,QAAA;AAAA,MACF;AAEF,aACE,gBAAAxE;AAAA,QAACqF;AAAA,QAAA;AAAA,UACC,OAAAF;AAAA,UACA,cAAc,GAAG,EAAE,uBAAuB,CAAC,IAAIX,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAGjE;AAAA,IACA,CAAC,GAAGQ,CAAW;AAAA,EAAA,GAGXM,IACJxB,EAAc,kBAAkB,cAC5B,EAAE,eAAAA,MACF;AAAA,IACE,eAAAA;AAAA,IACA,gBAAAE;AAAA,IACA,kBAAkBjB,IACd,MAAM;AACJ,MAAAlB,EAAQ+C,EAAgB,0BAA0B,EAAE,UAAAlD,EAAA,CAAU;AAAA,IAChE,IACA;AAAA,EAAA;AAGZ,SACE,gBAAA6D,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAxF;AAAA,MAACyF;AAAA,MAAA;AAAA,QACE,GAAGH;AAAA,QACJ,OAAOxE,EAAO;AAAA,QACd,UAAU,EAAE,YAAYgD,EAAc,UAAU,EAAE;AAAA,QAClD,QAAQ,MAAM;AACZ,UAAAjC,EAAQ+C,EAAgB,qBAAqB;AAAA,QAC/C;AAAA,QACA,WAAW,EAAE,YAAY;AAAA,QACzB,SAAAC;AAAA,QACA,eAAA1B;AAAA,QACA,aAAaC;AAAA,QACb,WAAW;AAAA,UACT,MAAMc;AAAA,UACN,aAAAZ;AAAA,UACA,gBAAgBC;AAAA,UAChB,eAAe,MAAM;AACnB,YAAAA,EAAe,EAAE;AAAA,UACnB;AAAA,UACA,GAAIR,IAAa,EAAE,UAAAkC,MAAa,CAAA;AAAA,QAAC;AAAA,QAEnC,eAAelC,IAAa4B,IAAqB;AAAA,QACjD,cAAc;AAAA,UACZ,QAAQjB,MAAiB;AAAA,UACzB,cAAcA,GAAc,QAAQ;AAAA,UACpC,WAAW,MAAM;AACf,YAAIA,KACGY,EAAqBZ,EAAa,MAAMA,EAAa,IAAI;AAAA,UAElE;AAAA,UACA,SAAS,MAAM;AACb,YAAAC,EAAgB,IAAI;AAAA,UACtB;AAAA,UACA,WAAWjB;AAAA,QAAA;AAAA,QAEb,cAAAc;AAAA,QACA,gBAAgB,MAAM;AACpB,UAAAC,EAAgB,MAAS;AAAA,QAC3B;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAzD;AAAA,MAAC0F;AAAA,MAAA;AAAA,QACC,QAAQ9B,MAAqB;AAAA,QAC7B,SAAS,MAAM;AACb,UAAAC,EAAoB,IAAI,GACxB7B,EAAS,IAAI;AAAA,QACf;AAAA,QACA,cAAc4B,GAAkB,gBAAgB;AAAA,QAChD,gBAAgBA,GAAkB,kBAAkB;AAAA,QACpD,WAAWa;AAAA,QACX,WAAW5B;AAAA,QACX,OAAAd;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
|
|
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;
|