@remoteoss/remote-flows 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/{chunk-YU3JIZ7J.js → chunk-3VYNEJMC.js} +2 -2
  2. package/dist/chunk-6IL4TB7S.js +2 -0
  3. package/dist/chunk-6IL4TB7S.js.map +1 -0
  4. package/dist/{chunk-UUZ353RX.js → chunk-74DRB7Z5.js} +2 -2
  5. package/dist/chunk-CYPGWEOO.js +2 -0
  6. package/dist/chunk-CYPGWEOO.js.map +1 -0
  7. package/dist/chunk-HHWIJGDR.js +2 -0
  8. package/dist/chunk-HHWIJGDR.js.map +1 -0
  9. package/dist/chunk-JTOLQCOG.js +2 -0
  10. package/dist/chunk-JTOLQCOG.js.map +1 -0
  11. package/dist/chunk-KDUM4EZJ.js +2 -0
  12. package/dist/chunk-KDUM4EZJ.js.map +1 -0
  13. package/dist/chunk-SGE4DLC3.js +2 -0
  14. package/dist/chunk-SGE4DLC3.js.map +1 -0
  15. package/dist/chunk-SLMJEZJ7.js +2 -0
  16. package/dist/chunk-SLMJEZJ7.js.map +1 -0
  17. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
  18. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +3 -3
  19. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  20. package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
  21. package/dist/flows/ContractAmendment/context.d.ts +3 -3
  22. package/dist/flows/ContractAmendment/hooks.d.ts +3 -3
  23. package/dist/flows/ContractAmendment/hooks.js +1 -1
  24. package/dist/flows/ContractAmendment/index.d.ts +3 -3
  25. package/dist/flows/ContractAmendment/index.js +1 -1
  26. package/dist/flows/ContractAmendment/utils.d.ts +2 -2
  27. package/dist/flows/ContractAmendment/utils.js +1 -1
  28. package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +5 -5
  29. package/dist/flows/ContractorOnboarding/api.d.ts +2 -2
  30. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +4 -4
  31. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +5 -5
  32. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +5 -5
  33. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +5 -5
  34. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +3 -3
  35. package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +5 -5
  36. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +4 -4
  37. package/dist/flows/ContractorOnboarding/context.d.ts +5 -5
  38. package/dist/flows/ContractorOnboarding/hooks.d.ts +5 -5
  39. package/dist/flows/ContractorOnboarding/index.d.ts +5 -5
  40. package/dist/flows/ContractorOnboarding/types.d.ts +5 -5
  41. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +3 -3
  42. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +3 -3
  43. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +1 -1
  44. package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +1 -1
  45. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +1 -1
  46. package/dist/flows/CostCalculator/api.d.ts +1 -1
  47. package/dist/flows/CostCalculator/components/SalaryField.d.ts +2 -2
  48. package/dist/flows/CostCalculator/context.d.ts +3 -3
  49. package/dist/flows/CostCalculator/hooks.d.ts +3 -3
  50. package/dist/flows/CostCalculator/index.d.ts +3 -3
  51. package/dist/flows/CostCalculator/types.d.ts +1 -1
  52. package/dist/flows/CostCalculator/utils.d.ts +3 -3
  53. package/dist/flows/Onboarding/OnboardingFlow.d.ts +4 -4
  54. package/dist/flows/Onboarding/api.d.ts +4 -4
  55. package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +2 -2
  56. package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +4 -4
  57. package/dist/flows/Onboarding/components/BenefitsStep.d.ts +4 -4
  58. package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +4 -4
  59. package/dist/flows/Onboarding/components/OnboardingForm.d.ts +4 -4
  60. package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +3 -3
  61. package/dist/flows/Onboarding/components/ReviewStep.d.ts +4 -4
  62. package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +3 -3
  63. package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +4 -4
  64. package/dist/flows/Onboarding/context.d.ts +4 -4
  65. package/dist/flows/Onboarding/hooks.d.ts +4 -4
  66. package/dist/flows/Onboarding/index.d.ts +4 -4
  67. package/dist/flows/Onboarding/types.d.ts +4 -4
  68. package/dist/flows/Onboarding/utils.d.ts +4 -4
  69. package/dist/flows/Termination/AdditionalDetailsForm.d.ts +4 -4
  70. package/dist/flows/Termination/EmployeeComunicationForm.d.ts +4 -4
  71. package/dist/flows/Termination/PaidTimeOffForm.d.ts +4 -4
  72. package/dist/flows/Termination/TerminationDetailsForm.d.ts +4 -4
  73. package/dist/flows/Termination/TerminationFlow.d.ts +4 -4
  74. package/dist/flows/Termination/TerminationFlow.js +1 -1
  75. package/dist/flows/Termination/TerminationForm.d.ts +4 -4
  76. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +16 -3
  77. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.js +1 -1
  78. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +16 -3
  79. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
  80. package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +16 -2
  81. package/dist/flows/Termination/context.d.ts +4 -4
  82. package/dist/flows/Termination/hooks.d.ts +4 -4
  83. package/dist/flows/Termination/hooks.js +1 -1
  84. package/dist/flows/Termination/index.d.ts +11 -5
  85. package/dist/flows/Termination/index.js +1 -1
  86. package/dist/flows/Termination/types.d.ts +4 -4
  87. package/dist/flows/api.d.ts +4 -4
  88. package/dist/index.d.ts +8 -8
  89. package/dist/index.js +1 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/{mutations-DaNL3KJH.d.ts → mutations-C0KsEf83.d.ts} +1 -1
  92. package/dist/{remoteFlows-R6i-5uxZ.d.ts → remoteFlows-DJcvCgN2.d.ts} +19 -2
  93. package/dist/{types-CUuFeuNj.d.ts → types-1tGveWWg.d.ts} +3 -3
  94. package/dist/{types-ClV6M7ry.d.ts → types-CwUhT-vz.d.ts} +37 -18
  95. package/dist/{types-D_DohAP5.d.ts → types-Dad_rgYV.d.ts} +2 -2
  96. package/dist/{types-BSmXaqyP.d.ts → types-DegHPy8Q.d.ts} +4 -4
  97. package/dist/{types.gen-BMxrLsCq.d.ts → types.gen-B73oMrmZ.d.ts} +1 -14
  98. package/package.json +1 -1
  99. package/dist/chunk-347YWDTK.js +0 -2
  100. package/dist/chunk-347YWDTK.js.map +0 -1
  101. package/dist/chunk-3AEKPMIN.js +0 -2
  102. package/dist/chunk-3AEKPMIN.js.map +0 -1
  103. package/dist/chunk-4O4VBGMD.js +0 -2
  104. package/dist/chunk-4O4VBGMD.js.map +0 -1
  105. package/dist/chunk-EZWZMPD2.js +0 -2
  106. package/dist/chunk-EZWZMPD2.js.map +0 -1
  107. package/dist/chunk-O7REUCKR.js +0 -2
  108. package/dist/chunk-O7REUCKR.js.map +0 -1
  109. package/dist/chunk-REDYWUCC.js +0 -2
  110. package/dist/chunk-REDYWUCC.js.map +0 -1
  111. /package/dist/{chunk-YU3JIZ7J.js.map → chunk-3VYNEJMC.js.map} +0 -0
  112. /package/dist/{chunk-UUZ353RX.js.map → chunk-74DRB7Z5.js.map} +0 -0
@@ -1,7 +1,13 @@
1
- import { E as EmploymentShowResponse, T as ListTimeoffResponse, W as TimeoffStatus, X as TimeoffType, Y as ListLeavePoliciesSummaryResponse } from './types.gen-BMxrLsCq.js';
1
+ import { E as Employment, T as ListTimeoffResponse, W as TimeoffStatus, X as TimeoffType, Y as ListLeavePoliciesSummaryResponse } from './types.gen-B73oMrmZ.js';
2
2
  import * as _tanstack_react_query from '@tanstack/react-query';
3
3
  import { UseQueryResult } from '@tanstack/react-query';
4
4
  import { ContractAmendmentParams } from './flows/ContractAmendment/types.js';
5
+ import { E as Employment$1 } from './types-1tGveWWg.js';
6
+
7
+ type DaysAndHours = {
8
+ hours: number;
9
+ days: number;
10
+ };
5
11
 
6
12
  type UseEmployment = Pick<ContractAmendmentParams, 'employmentId'>;
7
13
  /**
@@ -11,7 +17,9 @@ type UseEmployment = Pick<ContractAmendmentParams, 'employmentId'>;
11
17
  * @param {string} params.employmentId - The ID of the employment to fetch details for.
12
18
  * @returns {UseQueryResult<any, unknown>} - The result of the query, including the employment details.
13
19
  */
14
- declare const useEmploymentQuery: ({ employmentId }: UseEmployment) => _tanstack_react_query.UseQueryResult<EmploymentShowResponse | undefined, Error>;
20
+ declare const useEmploymentQuery: ({ employmentId }: UseEmployment) => _tanstack_react_query.UseQueryResult<(Employment & {
21
+ termination_date?: string | null;
22
+ }) | undefined, Error>;
15
23
  /**
16
24
  * Hook to retrieve time off data for a specific employment.
17
25
  *
@@ -55,8 +63,8 @@ declare const usePaidTimeoffBreakdownQuery: ({ employmentId, options, }: {
55
63
  };
56
64
  }) => _tanstack_react_query.UseQueryResult<PaidTimeoffBreakdownResponse, Error>;
57
65
  type BookedTimeoffBeforeDateResponse = {
58
- bookedDaysBeforeTermination: number;
59
- bookedDaysAfterTermination: number;
66
+ bookedDaysBeforeTermination: DaysAndHours;
67
+ bookedDaysAfterTermination: DaysAndHours;
60
68
  };
61
69
  /**
62
70
  * Hook to retrieve booked time off data before and after a specific date for a specific employment.
@@ -66,7 +74,7 @@ type BookedTimeoffBeforeDateResponse = {
66
74
  * @param {string} [params.date] - The date to fetch booked time off data for.
67
75
  * @returns {BookedTimeoffBeforeDateResponse} - The booked time off data before and after the specific date.
68
76
  *
69
- * This hooks it's not taking into account unlimited time off or half days yet or even we you request several days in one request.
77
+ * This hook accounts for partial days and multiple timeoff_days per request.
70
78
  */
71
79
  declare const useBookedTimeoffBeforeAndAfterTerminationQuery: ({ employmentId, date, options, }: {
72
80
  employmentId: string;
@@ -76,12 +84,14 @@ declare const useBookedTimeoffBeforeAndAfterTerminationQuery: ({ employmentId, d
76
84
  };
77
85
  }) => _tanstack_react_query.UseQueryResult<BookedTimeoffBeforeDateResponse, Error>;
78
86
  type SummaryTimeOffDataResponse = {
79
- entitledDays: number;
80
- bookedDays: number;
81
- usedDays: number;
82
- approvedDaysBeforeTermination: number;
83
- approvedDaysAfterTermination: number;
84
- remainingDays: number;
87
+ entitledDays: string;
88
+ bookedDays: string;
89
+ usedDays: string;
90
+ currentEntitlementDays: string;
91
+ approvedDaysBeforeTermination: string;
92
+ approvedDaysAfterTermination: string;
93
+ remainingDays: string;
94
+ isUnlimitedPto: boolean;
85
95
  };
86
96
  /**
87
97
  * Hook to retrieve summary time off data for a specific employment.
@@ -94,17 +104,20 @@ type SummaryTimeOffDataResponse = {
94
104
  * This hook doesn't take into account unlimited time off or half days yet.
95
105
  *
96
106
  */
97
- declare const useSummaryTimeOffDataQuery: ({ employmentId, proposedTerminationDate, }: {
107
+ declare const useSummaryTimeOffDataQuery: ({ employmentId, proposedTerminationDate, employment, }: {
98
108
  employmentId: string;
99
109
  proposedTerminationDate: string;
110
+ employment?: Employment$1;
100
111
  }) => {
101
112
  data: {
102
- entitledDays: number;
103
- bookedDays: number;
104
- usedDays: number;
105
- approvedDaysBeforeTermination: number;
106
- approvedDaysAfterTermination: number;
107
- remainingDays: number;
113
+ isUnlimitedPto: boolean;
114
+ entitledDays: string;
115
+ bookedDays: string;
116
+ usedDays: string;
117
+ currentEntitlementDays: string;
118
+ approvedDaysBeforeTermination: string;
119
+ approvedDaysAfterTermination: string;
120
+ remainingDays: string;
108
121
  };
109
122
  isLoading: boolean;
110
123
  isError: boolean;
@@ -168,8 +181,14 @@ type PaidTimeOffRenderProps = {
168
181
  isError: boolean;
169
182
  error: Error | null;
170
183
  };
184
+ /**
185
+ * The employment data.
186
+ * @see {@link Employment}
187
+ */
188
+ employment?: Employment;
171
189
  };
172
190
  type PaidTimeOffContainerProps = {
191
+ employment?: Employment;
173
192
  employmentId: string;
174
193
  proposedTerminationDate: string;
175
194
  employeeName: string;
@@ -1,6 +1,6 @@
1
- import { O as OffboardingResponse, P as PostCreateOffboardingError, $ as TerminationDetailsParams } from './types.gen-BMxrLsCq.js';
1
+ import { O as OffboardingResponse, P as PostCreateOffboardingError, _ as TerminationDetailsParams } from './types.gen-B73oMrmZ.js';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
- import { E as ErrorResponse, S as SuccessResponse } from './mutations-DaNL3KJH.js';
3
+ import { E as ErrorResponse, S as SuccessResponse } from './mutations-C0KsEf83.js';
4
4
  import * as _remoteoss_json_schema_form from '@remoteoss/json-schema-form';
5
5
  import { $TSFixMe } from '@remoteoss/json-schema-form';
6
6
  import { Step } from './flows/useStepState.js';
@@ -1,18 +1,18 @@
1
- import { j as Employment, F as File, g as CreateContractDocumentResponse, f as SignContractDocument, S as SuccessResponse } from './types.gen-BMxrLsCq.js';
1
+ import { E as Employment, F as File, g as CreateContractDocumentResponse, f as SignContractDocument, S as SuccessResponse } from './types.gen-B73oMrmZ.js';
2
2
  import { OnboardingBack } from './flows/ContractorOnboarding/components/OnboardingBack.js';
3
3
  import { OnboardingSubmit } from './flows/ContractorOnboarding/components/OnboardingSubmit.js';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
- import { N as NormalizedFieldError } from './mutations-DaNL3KJH.js';
5
+ import { N as NormalizedFieldError } from './mutations-C0KsEf83.js';
6
6
  import * as _tanstack_query_core from '@tanstack/query-core';
7
7
  import * as _remoteoss_json_schema_form from '@remoteoss/json-schema-form';
8
8
  import { Fields } from '@remoteoss/json-schema-form';
9
9
  import * as React$1 from 'react';
10
10
  import { STEPS } from './flows/ContractorOnboarding/utils.js';
11
11
  import { Step } from './flows/useStepState.js';
12
- import { M as Meta, J as JSFFieldset, $ as $TSFixMe } from './remoteFlows-R6i-5uxZ.js';
12
+ import { M as Meta, J as JSFFieldset, $ as $TSFixMe } from './remoteFlows-DJcvCgN2.js';
13
13
  import { FieldValues } from 'react-hook-form';
14
14
  import { BasicInformationStep } from './flows/ContractorOnboarding/components/BasicInformationStep.js';
15
- import { g as SelectCountryStep } from './types-CUuFeuNj.js';
15
+ import { g as SelectCountryStep } from './types-1tGveWWg.js';
16
16
  import { FlowOptions, JSFModify } from './flows/types.js';
17
17
  import { OnboardingInvite } from './flows/Onboarding/components/OnboardingInvite.js';
18
18
 
@@ -200,19 +200,6 @@ type ActionError = {
200
200
  */
201
201
  message: string;
202
202
  };
203
- /**
204
- * Complete information of an employment
205
- */
206
- type EmploymentShowResponse = {
207
- data: {
208
- employment?: Employment & {
209
- /**
210
- * Most updated termination date for the offboarding. This date is subject to change through the offboarding process even after it is finalized.
211
- */
212
- termination_date?: string | null;
213
- };
214
- };
215
- };
216
203
  type CostCalculatorDiscountResponse = {
217
204
  annual_amount: number;
218
205
  monthly_amount: number;
@@ -1589,4 +1576,4 @@ type PostSignContractDocumentErrors = {
1589
1576
  };
1590
1577
  type PostSignContractDocumentError = PostSignContractDocumentErrors[keyof PostSignContractDocumentErrors];
1591
1578
 
1592
- export type { TerminationDetailsParams as $, EmploymentResponse as A, PatchUpdateEmployment2Error as B, CreateOffboardingParams as C, EmploymentFullParams as D, EmploymentShowResponse as E, File as F, PutUpdateBenefitOfferError as G, MagicLinkResponse as H, UnprocessableEntityResponse as I, MagicLinkParams as J, ConvertCurrencyResponse as K, PostConvertRawCurrencyConverterError as L, MinimalRegion as M, ConvertCurrencyParams as N, OffboardingResponse as O, PostCreateOffboardingError as P, PostCreateContractEligibilityError as Q, CreateContractEligibilityParams as R, SuccessResponse as S, ListTimeoffResponse as T, UnifiedEmploymentUpsertBenefitOffersRequest as U, ValidationError as V, TimeoffStatus as W, TimeoffType as X, ListLeavePoliciesSummaryResponse as Y, Currency as Z, HelpCenterArticle as _, ContractAmendmentAutomatableResponse as a, PostAutomatableContractAmendmentError as b, ContractAmendmentResponse as c, PostCreateContractAmendmentError as d, PostSignContractDocumentError as e, SignContractDocument as f, CreateContractDocumentResponse as g, PostCreateContractDocumentError as h, CreateContractDocument as i, Employment as j, CostCalculatorEstimateResponse as k, PostCreateEstimationError as l, CostCalculatorEstimatePdfResponse as m, PostCreateEstimationPdfError as n, CostCalculatorEstimateParams as o, CostCalculatorEstimateCsvResponse as p, PostCreateEstimationCsvError as q, MinimalCountry as r, EmploymentTermType as s, CostCalculatorEmployment as t, EmploymentCreationResponse as u, Company as v, PostInviteEmploymentInvitationError as w, PostCreateRiskReserveError as x, PostCreateEmployment2Error as y, EmploymentCreateParams as z };
1579
+ export type { PatchUpdateEmployment2Error as A, EmploymentFullParams as B, CreateOffboardingParams as C, PutUpdateBenefitOfferError as D, Employment as E, File as F, MagicLinkResponse as G, UnprocessableEntityResponse as H, MagicLinkParams as I, ConvertCurrencyResponse as J, PostConvertRawCurrencyConverterError as K, ConvertCurrencyParams as L, MinimalRegion as M, PostCreateContractEligibilityError as N, OffboardingResponse as O, PostCreateOffboardingError as P, CreateContractEligibilityParams as Q, Currency as R, SuccessResponse as S, ListTimeoffResponse as T, UnifiedEmploymentUpsertBenefitOffersRequest as U, ValidationError as V, TimeoffStatus as W, TimeoffType as X, ListLeavePoliciesSummaryResponse as Y, HelpCenterArticle as Z, TerminationDetailsParams as _, ContractAmendmentAutomatableResponse as a, PostAutomatableContractAmendmentError as b, ContractAmendmentResponse as c, PostCreateContractAmendmentError as d, PostSignContractDocumentError as e, SignContractDocument as f, CreateContractDocumentResponse as g, PostCreateContractDocumentError as h, CreateContractDocument as i, CostCalculatorEstimateResponse as j, PostCreateEstimationError as k, CostCalculatorEstimatePdfResponse as l, PostCreateEstimationPdfError as m, CostCalculatorEstimateParams as n, CostCalculatorEstimateCsvResponse as o, PostCreateEstimationCsvError as p, MinimalCountry as q, EmploymentTermType as r, CostCalculatorEmployment as s, EmploymentCreationResponse as t, Company as u, PostInviteEmploymentInvitationError as v, PostCreateRiskReserveError as w, PostCreateEmployment2Error as x, EmploymentCreateParams as y, EmploymentResponse as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remoteoss/remote-flows",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "scripts": {
5
5
  "build": "NODE_ENV=production tsup",
6
6
  "ci": "npm run build && npm run check-format && npm run check-exports && npm run lint && npm run type-check && npm run test",
@@ -1,2 +0,0 @@
1
- import{a as g,b as h,d as C,e as L,f as M}from"./chunk-TWIUL2P3.js";import{b as E}from"./chunk-WVDTHFGS.js";import{b as H}from"./chunk-3ZWDIEEM.js";import{a as l}from"./chunk-43WMZDDH.js";import{a as b}from"./chunk-P37U34EQ.js";import{jsx as c,jsxs as P}from"react/jsx-runtime";var S=b(({open:e,onOpenChange:t,title:a,trigger:m,children:i,className:s="",direction:u="right"})=>{let{components:f}=H(),D=f?.drawer;return D?c(D,{open:e,onOpenChange:t,title:a,trigger:m,children:i}):P(g,{open:e,onOpenChange:t,direction:u,children:[c(h,{asChild:!0,children:m}),c(C,{className:l(s,"RemoteFlows__Drawer h-full w-[540px] mt-0 ml-auto px-4"),children:P("div",{className:"h-full flex flex-col",children:[c(L,{children:c(M,{children:a})}),c("div",{className:"flex-1 overflow-y-auto",children:i})]})})]})},"Drawer");import*as d from"react";import{jsx as n}from"react/jsx-runtime";var N=d.forwardRef(({className:e,...t},a)=>n("div",{className:"relative w-full overflow-auto",children:n("table",{ref:a,className:l("w-full caption-bottom text-sm",e),...t})}));N.displayName="Table";var v=d.forwardRef(({className:e,...t},a)=>n("thead",{ref:a,className:l("[&_tr]:border-b",e),...t}));v.displayName="TableHeader";var x=d.forwardRef(({className:e,...t},a)=>n("tbody",{ref:a,className:l("[&_tr:last-child]:border-0",e),...t}));x.displayName="TableBody";var A=d.forwardRef(({className:e,...t},a)=>n("tfoot",{ref:a,className:l("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...t}));A.displayName="TableFooter";var R=d.forwardRef(({className:e,...t},a)=>n("tr",{ref:a,className:l("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...t}));R.displayName="TableRow";var y=d.forwardRef(({className:e,...t},a)=>n("th",{ref:a,className:l("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));y.displayName="TableHead";var w=d.forwardRef(({className:e,...t},a)=>n("td",{ref:a,className:l("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));w.displayName="TableCell";var F=d.forwardRef(({className:e,...t},a)=>n("caption",{ref:a,className:l("mt-4 text-sm text-muted-foreground",e),...t}));F.displayName="TableCaption";import{jsx as o,jsxs as r}from"react/jsx-runtime";var p=b(e=>`${e} ${e===1?"day":"days"}`,"pluralizeDays"),$="RemoteFlows__SummaryRow flex justify-between items-center py-2 text-xs",Q="RemoteFlows__SummaryRowBorder border-b border-b-1 border-b-[#E4E4E7]",T=b(({children:e,withBorder:t=!1,className:a=""})=>o("div",{className:l($,t&&Q,a),children:e}),"SummaryRow"),U=b(({entitledDays:e,usedDays:t,bookedDays:a,approvedDaysBeforeTermination:m,approvedDaysAfterTermination:i,remainingDays:s,proposedTerminationDate:u})=>{let f=new Date(u).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"});return r("div",{children:[r(T,{withBorder:!0,children:[o("label",{children:"Number of days entitled to per year"}),o("p",{"data-testid":"entitled-days",className:"font-bold",children:p(e)})]}),r(T,{children:[o("label",{children:"Total days booked"}),o("p",{"data-testid":"booked-days",className:"font-bold",children:p(a)})]}),r(T,{children:[o("label",{children:"Number of days already used"}),o("p",{"data-testid":"used-days",className:"font-bold",children:p(t)})]}),r(T,{children:[r("label",{children:["Approved for use before ",f]}),o("p",{"data-testid":"approved-days-before-termination",className:"font-bold",children:p(m)})]}),r(T,{withBorder:!0,children:[r("label",{children:["Approved for use after ",f]}),o("p",{"data-testid":"approved-days-after-termination",className:"font-bold",children:p(i)})]}),r(T,{children:[o("label",{children:"Total days remaining unused"}),o("p",{"data-testid":"remaining-days",className:"font-bold",children:p(s)})]}),o(T,{className:"mb-2 py-0",children:r("p",{className:"text-xs text-[#222E39]",children:["Expiration date of unused days: ",f]})})]})},"SummaryTimeOff"),z=b(({employeeName:e,timeoffQuery:t,onOpenChange:a,open:m})=>{let{data:i}=t||{};return r(S,{open:m,onOpenChange:a,title:`${e} paid time off breakdown`,trigger:o(E,{variant:"link",className:"text-xs text-[#3B82F6] font-bold p-0",children:"See detailed time off breakdown \u2197"}),className:"h-full w-[540px] mt-0 ml-auto px-4 RemoteFlows_DrawerTimeOff",children:[o("div",{className:"mb-2",children:r(N,{children:[o(v,{children:r(R,{children:[o(y,{className:"w-[250px]",children:"Dates"}),o(y,{children:"Duration"}),o(y,{children:"Status"})]})}),o(x,{children:i?.timeoffs.map(s=>r(R,{children:[o(w,{className:"font-medium w-[250px]",children:s.formattedDate}),o(w,{children:p(s.duration)}),o(w,{children:s.status})]},`${s.startDate}-${s.endDate}`))})]})}),r("p",{className:"text-xs",children:["Total of ",p(i?.bookedDays||0)," booked"]})]})},"DrawerTimeOff"),te=b(({employeeName:e,proposedTerminationDate:t,summaryData:a,formattedProposedTerminationDate:m,timeoffQuery:i,onOpenChange:s,open:u})=>{let{entitledDays:f,bookedDays:D,usedDays:_,approvedDaysBeforeTermination:B,approvedDaysAfterTermination:k,remainingDays:O}=a?.data||{entitledDays:0,bookedDays:0,usedDays:0,approvedDaysBeforeTermination:0,approvedDaysAfterTermination:0,remainingDays:0};return r("div",{className:"RemoteFlows__PaidTimeOff__Container py-3",children:[o("h3",{className:"RemoteFlows__PaidTimeOff__Title mb-2",children:"Paid time off"}),r("p",{className:"RemoteFlows__PaidTimeOff__Description text-sm mb-2",children:["The proposed termination date for ",e," is"," ",m,". You will need to pay them for any unused accrued days. Below is a breakdown of their time off entitlement and usage for the current annual leave period:"]}),r("div",{className:"mb-2",children:[!a?.isLoading&&!a?.isError&&a?.data&&o(U,{entitledDays:f,usedDays:_,bookedDays:D,approvedDaysBeforeTermination:B,approvedDaysAfterTermination:k,remainingDays:O,proposedTerminationDate:t}),o(z,{employeeName:e,timeoffQuery:i,onOpenChange:s,open:u})]})]})},"PaidTimeOff");export{te as a};
2
- //# sourceMappingURL=chunk-347YWDTK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/shared/drawer/Drawer.tsx","../src/components/ui/table.tsx","../src/flows/Termination/components/PaidTimeOff/PaidTimeOff.tsx"],"sourcesContent":["import { useFormFields } from '@/src/context';\nimport { DrawerComponentProps } from '@/src/types/remoteFlows';\nimport {\n Drawer as DrawerPrimitive,\n DrawerTrigger,\n DrawerContent,\n DrawerHeader,\n DrawerTitle,\n} from '@/src/components/ui/drawer';\nimport { cn } from '@/src/lib/utils';\n\nexport type DrawerProps = DrawerComponentProps & {\n className?: string;\n direction?: 'left' | 'right';\n};\n\nexport const Drawer = ({\n open,\n onOpenChange,\n title,\n trigger,\n children,\n className = '',\n direction = 'right',\n}: DrawerProps) => {\n const { components } = useFormFields();\n const CustomDrawer = components?.drawer;\n\n if (CustomDrawer) {\n return (\n <CustomDrawer\n open={open}\n onOpenChange={onOpenChange}\n title={title}\n trigger={trigger}\n >\n {children}\n </CustomDrawer>\n );\n }\n\n return (\n <DrawerPrimitive\n open={open}\n onOpenChange={onOpenChange}\n direction={direction}\n >\n <DrawerTrigger asChild>{trigger}</DrawerTrigger>\n <DrawerContent\n className={cn(\n className,\n 'RemoteFlows__Drawer h-full w-[540px] mt-0 ml-auto px-4',\n )}\n >\n <div className='h-full flex flex-col'>\n <DrawerHeader>\n <DrawerTitle>{title}</DrawerTitle>\n </DrawerHeader>\n <div className='flex-1 overflow-y-auto'>{children}</div>\n </div>\n </DrawerContent>\n </DrawerPrimitive>\n );\n};\n","import * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className='relative w-full overflow-auto'>\n <table\n ref={ref}\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n));\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('mt-4 text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","import { PaidTimeoffBreakdownResponse } from '@/src/common/api';\nimport { Button } from '@/src/components/ui/button';\nimport { cn } from '@/src/lib/utils';\nimport { Drawer } from '@/src/components/shared/drawer/Drawer';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/src/components/ui/table';\nimport { UseQueryResult } from '@tanstack/react-query';\nimport { PaidTimeOffRenderProps } from '@/src/flows/Termination/components/PaidTimeOff/types';\n\nconst pluralizeDays = (count: number) =>\n `${count} ${count === 1 ? 'day' : 'days'}`;\n\nconst rowBase =\n 'RemoteFlows__SummaryRow flex justify-between items-center py-2 text-xs';\nconst rowBorder =\n 'RemoteFlows__SummaryRowBorder border-b border-b-1 border-b-[#E4E4E7]';\n\nconst SummaryRow = ({\n children,\n withBorder = false,\n className = '',\n}: {\n children: React.ReactNode;\n withBorder?: boolean;\n className?: string;\n}) => {\n return (\n <div className={cn(rowBase, withBorder && rowBorder, className)}>\n {children}\n </div>\n );\n};\n\nconst SummaryTimeOff = ({\n entitledDays,\n usedDays,\n bookedDays,\n approvedDaysBeforeTermination,\n approvedDaysAfterTermination,\n remainingDays,\n proposedTerminationDate,\n}: {\n entitledDays: number;\n usedDays: number;\n bookedDays: number;\n approvedDaysBeforeTermination: number;\n approvedDaysAfterTermination: number;\n remainingDays: number;\n proposedTerminationDate: string;\n}) => {\n const formattedProposedTerminationDate = new Date(\n proposedTerminationDate,\n ).toLocaleDateString('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n });\n return (\n <div>\n <SummaryRow withBorder>\n <label>Number of days entitled to per year</label>\n <p data-testid='entitled-days' className='font-bold'>\n {pluralizeDays(entitledDays)}\n </p>\n </SummaryRow>\n <SummaryRow>\n <label>Total days booked</label>\n <p data-testid='booked-days' className='font-bold'>\n {pluralizeDays(bookedDays)}\n </p>\n </SummaryRow>\n <SummaryRow>\n <label>Number of days already used</label>\n <p data-testid='used-days' className='font-bold'>\n {pluralizeDays(usedDays)}\n </p>\n </SummaryRow>\n <SummaryRow>\n <label>\n Approved for use before {formattedProposedTerminationDate}\n </label>\n <p data-testid='approved-days-before-termination' className='font-bold'>\n {pluralizeDays(approvedDaysBeforeTermination)}\n </p>\n </SummaryRow>\n <SummaryRow withBorder>\n <label>Approved for use after {formattedProposedTerminationDate}</label>\n <p data-testid='approved-days-after-termination' className='font-bold'>\n {pluralizeDays(approvedDaysAfterTermination)}\n </p>\n </SummaryRow>\n <SummaryRow>\n <label>Total days remaining unused</label>\n <p data-testid='remaining-days' className='font-bold'>\n {pluralizeDays(remainingDays)}\n </p>\n </SummaryRow>\n <SummaryRow className='mb-2 py-0'>\n <p className='text-xs text-[#222E39]'>\n Expiration date of unused days: {formattedProposedTerminationDate}\n </p>\n </SummaryRow>\n </div>\n );\n};\n\nconst DrawerTimeOff = ({\n employeeName,\n timeoffQuery,\n onOpenChange,\n open,\n}: {\n employeeName: string;\n timeoffQuery: UseQueryResult<PaidTimeoffBreakdownResponse | undefined, Error>;\n onOpenChange: () => void;\n open: boolean;\n}) => {\n const { data: timeoff } = timeoffQuery || {};\n return (\n <Drawer\n open={open}\n onOpenChange={onOpenChange}\n title={`${employeeName} paid time off breakdown`}\n trigger={\n <Button variant='link' className='text-xs text-[#3B82F6] font-bold p-0'>\n See detailed time off breakdown ↗\n </Button>\n }\n className='h-full w-[540px] mt-0 ml-auto px-4 RemoteFlows_DrawerTimeOff'\n >\n <div className='mb-2'>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className='w-[250px]'>Dates</TableHead>\n <TableHead>Duration</TableHead>\n <TableHead>Status</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {timeoff?.timeoffs.map((timeoff) => (\n <TableRow key={`${timeoff.startDate}-${timeoff.endDate}`}>\n <TableCell className='font-medium w-[250px]'>\n {timeoff.formattedDate}\n </TableCell>\n <TableCell>{pluralizeDays(timeoff.duration)}</TableCell>\n <TableCell>{timeoff.status}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n <p className='text-xs'>\n Total of {pluralizeDays(timeoff?.bookedDays || 0)} booked\n </p>\n </Drawer>\n );\n};\n\nexport type PaidTimeOffProps = PaidTimeOffRenderProps;\n\n/**\n * PaidTimeOff component\n *\n * This component is used to display the paid time off summary and details.\n * It displays the summary data and a button to open the details drawer.\n * When the details drawer is open, it displays the paid time off breakdown.\n */\nexport const PaidTimeOff = ({\n employeeName,\n proposedTerminationDate,\n summaryData,\n formattedProposedTerminationDate,\n timeoffQuery,\n onOpenChange,\n open,\n}: PaidTimeOffProps) => {\n const {\n entitledDays,\n bookedDays,\n usedDays,\n approvedDaysBeforeTermination,\n approvedDaysAfterTermination,\n remainingDays,\n } = summaryData?.data || {\n entitledDays: 0,\n bookedDays: 0,\n usedDays: 0,\n approvedDaysBeforeTermination: 0,\n approvedDaysAfterTermination: 0,\n remainingDays: 0,\n };\n return (\n <div className='RemoteFlows__PaidTimeOff__Container py-3'>\n <h3 className='RemoteFlows__PaidTimeOff__Title mb-2'>Paid time off</h3>\n <p className='RemoteFlows__PaidTimeOff__Description text-sm mb-2'>\n The proposed termination date for {employeeName} is{' '}\n {formattedProposedTerminationDate}. You will need to pay them for any\n unused accrued days. Below is a breakdown of their time off entitlement\n and usage for the current annual leave period:\n </p>\n <div className='mb-2'>\n {!summaryData?.isLoading &&\n !summaryData?.isError &&\n summaryData?.data && (\n <SummaryTimeOff\n entitledDays={entitledDays}\n usedDays={usedDays}\n bookedDays={bookedDays}\n approvedDaysBeforeTermination={approvedDaysBeforeTermination}\n approvedDaysAfterTermination={approvedDaysAfterTermination}\n remainingDays={remainingDays}\n proposedTerminationDate={proposedTerminationDate}\n />\n )}\n <DrawerTimeOff\n employeeName={employeeName}\n timeoffQuery={timeoffQuery}\n onOpenChange={onOpenChange}\n open={open}\n />\n </div>\n </div>\n );\n};\n"],"mappings":"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","names":["jsx","jsxs","Drawer","__name","open","onOpenChange","title","trigger","children","className","direction","components","useFormFields","CustomDrawer","DrawerTrigger","DrawerContent","cn","DrawerHeader","DrawerTitle","React","jsx","Table","className","props","ref","cn","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","jsx","jsxs","pluralizeDays","__name","count","rowBase","rowBorder","SummaryRow","children","withBorder","className","cn","SummaryTimeOff","entitledDays","usedDays","bookedDays","approvedDaysBeforeTermination","approvedDaysAfterTermination","remainingDays","proposedTerminationDate","formattedProposedTerminationDate","DrawerTimeOff","employeeName","timeoffQuery","onOpenChange","open","timeoff","Drawer","Button","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","PaidTimeOff","summaryData"]}
@@ -1,2 +0,0 @@
1
- import{b as a}from"./chunk-PAQW5BFW.js";import{a as r}from"./chunk-P37U34EQ.js";var m={form:{index:0,name:"form"},confirmation_form:{index:1,name:"confirmation_form"}};function _(t,o){if(!t)return{};if(!o)return{...t.data.employment?.contract_details,effective_date:"",reason_for_change:"",job_title:t.data.employment?.job_title,additional_comments:"",annual_gross_salary:a(t.data.employment?.contract_details?.annual_gross_salary)};let s=o.map(n=>n.name),i=Object.keys(t?.data?.employment?.contract_details||{});return{...s.reduce((n,e)=>{if(i.includes(e)){let c=t?.data?.employment?.contract_details;n[e]=c[e]}return n},{}),effective_date:"",reason_for_change:"",job_title:t.data.employment?.job_title,additional_comments:"",annual_gross_salary:a(t.data.employment?.contract_details?.annual_gross_salary),additional_comments_toggle:!1}}r(_,"buildInitialValues");export{m as a,_ as b};
2
- //# sourceMappingURL=chunk-3AEKPMIN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/ContractAmendment/utils.ts"],"sourcesContent":["import { EmploymentShowResponse } from '@/src/client';\nimport { convertFromCents } from '@/src/components/form/utils';\nimport { Fields } from '@remoteoss/json-schema-form';\nimport { Step } from '../useStepState';\n\ntype StepKeys = 'form' | 'confirmation_form';\n\nexport const STEPS: Record<StepKeys, Step<StepKeys>> = {\n form: { index: 0, name: 'form' },\n confirmation_form: { index: 1, name: 'confirmation_form' },\n} as const;\n\nexport function buildInitialValues(\n employment: EmploymentShowResponse | undefined,\n fields?: Fields | undefined,\n) {\n if (!employment) {\n return {};\n }\n\n if (!fields) {\n return {\n ...employment.data.employment?.contract_details,\n effective_date: '',\n reason_for_change: '',\n job_title: employment.data.employment?.job_title,\n additional_comments: '',\n annual_gross_salary: convertFromCents(\n employment.data.employment?.contract_details\n ?.annual_gross_salary as string,\n ),\n };\n }\n\n const allFields = fields.map((field) => field.name);\n const employmentFields = Object.keys(\n employment?.data?.employment?.contract_details || {},\n );\n const initialValues = allFields.reduce<Record<string, unknown>>(\n (initialValuesAcc, field) => {\n // @ts-expect-error error\n if (employmentFields.includes(field)) {\n const contractDetails = employment?.data?.employment\n ?.contract_details as Record<string, unknown>;\n // @ts-expect-error error\n initialValuesAcc[field] = contractDetails[field];\n }\n return initialValuesAcc;\n },\n {} as Record<string, unknown>,\n );\n\n return {\n ...initialValues,\n effective_date: '',\n reason_for_change: '',\n job_title: employment.data.employment?.job_title,\n additional_comments: '',\n annual_gross_salary: convertFromCents(\n employment.data.employment?.contract_details\n ?.annual_gross_salary as string,\n ),\n additional_comments_toggle: false,\n };\n}\n"],"mappings":"gFAOO,IAAMA,EAA0C,CACrD,KAAM,CAAE,MAAO,EAAG,KAAM,MAAO,EAC/B,kBAAmB,CAAE,MAAO,EAAG,KAAM,mBAAoB,CAC3D,EAEO,SAASC,EACdC,EACAC,EACA,CACA,GAAI,CAACD,EACH,MAAO,CAAC,EAGV,GAAI,CAACC,EACH,MAAO,CACL,GAAGD,EAAW,KAAK,YAAY,iBAC/B,eAAgB,GAChB,kBAAmB,GACnB,UAAWA,EAAW,KAAK,YAAY,UACvC,oBAAqB,GACrB,oBAAqBE,EACnBF,EAAW,KAAK,YAAY,kBACxB,mBACN,CACF,EAGF,IAAMG,EAAYF,EAAO,IAAKG,GAAUA,EAAM,IAAI,EAC5CC,EAAmB,OAAO,KAC9BL,GAAY,MAAM,YAAY,kBAAoB,CAAC,CACrD,EAeA,MAAO,CACL,GAfoBG,EAAU,OAC9B,CAACG,EAAkBF,IAAU,CAE3B,GAAIC,EAAiB,SAASD,CAAK,EAAG,CACpC,IAAMG,EAAkBP,GAAY,MAAM,YACtC,iBAEJM,EAAiBF,CAAK,EAAIG,EAAgBH,CAAK,CACjD,CACA,OAAOE,CACT,EACA,CAAC,CACH,EAIE,eAAgB,GAChB,kBAAmB,GACnB,UAAWN,EAAW,KAAK,YAAY,UACvC,oBAAqB,GACrB,oBAAqBE,EACnBF,EAAW,KAAK,YAAY,kBACxB,mBACN,EACA,2BAA4B,EAC9B,CACF,CApDgBQ,EAAAT,EAAA","names":["STEPS","buildInitialValues","employment","fields","convertFromCents","allFields","field","employmentFields","initialValuesAcc","contractDetails","__name"]}
@@ -1,2 +0,0 @@
1
- import{a as w}from"./chunk-347YWDTK.js";import{a as C}from"./chunk-EZWZMPD2.js";import{a as x}from"./chunk-VUP76ZMQ.js";import{a as P}from"./chunk-S4XU4SE7.js";import{a as V}from"./chunk-32GSS4UM.js";import{a as S}from"./chunk-LRGEEPGK.js";import{a as M}from"./chunk-2YTBWEC7.js";import{a as g}from"./chunk-MP2T74PU.js";import{a as j,b as k}from"./chunk-2M7EBC4K.js";import{a as h}from"./chunk-PJBAQZ6G.js";import{a as F}from"./chunk-Z5WMKCRJ.js";import{c as m}from"./chunk-PAQW5BFW.js";import{a as r}from"./chunk-43WMZDDH.js";import{a as i}from"./chunk-P37U34EQ.js";import{createHeadlessForm as Z}from"@remoteoss/json-schema-form";import U from"lodash.omitby";import W from"lodash.isnull";import{format as G}from"date-fns";import{useMemo as b}from"react";import Q from"lodash.omit";import{jsx as N,jsxs as K}from"react/jsx-runtime";function u(t,e,d){return{"x-jsf-presentation":{inputType:"hidden",Component:i(()=>K("div",{className:r("RemoteFlows__InformationStatement",d?.className),children:[N("h3",{className:r("RemoteFlows__InformationStatement__Title"),children:t}),N("p",{className:r("RemoteFlows__InformationStatement__Description"),children:e})]}),"Component")}}}i(u,"createInformationField");import{Fragment as Y,jsx as f,jsxs as ee}from"react/jsx-runtime";function X(t){return{confidential:"",customer_informed_employee:"",customer_informed_employee_date:"",customer_informed_employee_description:"",personal_email:"",termination_reason:void 0,reason_description:"",termination_reason_files:[],will_challenge_termination:"",will_challenge_termination_description:null,agrees_to_pto_amount:"",agrees_to_pto_amount_notes:null,acknowledge_termination_procedure:!1,additional_comments:"",proposed_termination_date:"",risk_assessment_reasons:[],timesheet_file:void 0,...t}}i(X,"buildInitialValues");var ke=i(({employmentId:t,options:e,initialValues:d})=>{let{fieldValues:c,setFieldValues:v,stepState:n,previousStep:$,nextStep:R}=h(P),{data:y}=S(t),p=X({...n.values?.employee_communication,...n.values?.termination_details,...n.values?.paid_time_off,...n.values?.additional_information,...d}),_=b(()=>({...n.values?.[n.currentStep.name],...p,...c}),[n.values,n.currentStep.name,c,p]),D=b(()=>({fields:{risk_assesment_info:u("Offboarding risk assessment","Employees may be protected from termination if they fall into certain categories. To help avoid claims from employees, let us know if the employee is part of one or more of these categories. Select all that apply.",{className:e?.jsfModify?.fields?.risk_assesment_info?.["x-jsf-presentation"]?.className}),proposed_termination_date_info:u("Proposed termination date",ee(Y,{children:["In most cases, we must provide notice to the employee before termination. The required notice period depends on local labor laws, the employment agreement, and other factors. We'll use those factors to determine the required notice period.",f(g,{zendeskId:V.terminationNoticePeriods,className:r("text-sm",e?.jsfModify?.fields?.proposed_termination_date_info?.["x-jsf-presentation"]?.zendeskTriggerButtonClassName),children:"Learn about notice periods"})]}),{className:e?.jsfModify?.fields?.proposed_termination_date_info?.["x-jsf-presentation"]?.className}),proposed_termination_date:{...e?.jsfModify?.fields?.proposed_termination_date,"x-jsf-presentation":{...e?.jsfModify?.fields?.proposed_termination_date?.["x-jsf-presentation"],minDate:G(new Date,"yyyy-MM-dd")}},paid_time_off_info:{...e?.jsfModify?.fields?.paid_time_off_info,"x-jsf-presentation":{...e?.jsfModify?.fields?.paid_time_off_info?.["x-jsf-presentation"],Component:i(()=>{let a=e?.jsfModify?.fields?.paid_time_off_info?.["x-jsf-presentation"]?.Component;return f(C,{employeeName:y?.basic_information?.name,proposedTerminationDate:_.proposed_termination_date,employmentId:t,render:o=>a?f(a,{...o}):f(w,{...o})})},"Component")}}}}),[y?.basic_information?.name,_.proposed_termination_date,e?.jsfModify?.fields?.paid_time_off_info,e?.jsfModify?.fields?.proposed_termination_date_info,e?.jsfModify?.fields?.risk_assesment_info,t]),{data:s,isLoading:E}=k({formValues:_,jsfModify:{...e?.jsfModify,fields:{...e?.jsfModify?.fields,...D?.fields}},step:n.currentStep.name}),l=Z(x.data.schema),T=j(),{mutateAsync:O}=M(T);async function I(a){if(!t)throw new Error("Employment id is missing");if(s){let o=m(a,l.fields,{isPartialValidation:!0}),{customer_informed_employee:B}=o,H=B==="yes"?{employee_awareness:{date:o.customer_informed_employee_date,note:o.customer_informed_employee_description}}:void 0,L=F(o,["agrees_to_pto_amount","confidential","customer_informed_employee","will_challenge_termination"]),A=Q(L,"customer_informed_employee_date","customer_informed_employee_description"),q=U({...A,...H},W);return O({employment_id:t,termination_details:q,type:"termination"})}}i(I,"onSubmit");function J(){$()}i(J,"back");function z(){R()}return i(z,"next"),{employmentId:t,stepState:n,fields:s?.fields||[],isLoading:E,isSubmitting:T.isPending,initialValues:p,handleValidation:i(a=>{if(s){let o=m(a,s?.fields);return s?.handleValidation(o)}return null},"handleValidation"),checkFieldUpdates:i(a=>{if(l){let o=m(a,l?.fields,{isPartialValidation:!0});v(o)}},"checkFieldUpdates"),parseFormValues:i(a=>m(a,l.fields,{isPartialValidation:!0}),"parseFormValues"),onSubmit:I,back:J,next:z}},"useTermination");export{ke as a};
2
- //# sourceMappingURL=chunk-4O4VBGMD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Termination/hooks.tsx","../src/components/form/jsf-utils/createFields.tsx"],"sourcesContent":["import { $TSFixMe, createHeadlessForm } from '@remoteoss/json-schema-form';\nimport omitBy from 'lodash.omitby';\nimport isNull from 'lodash.isnull';\nimport { format } from 'date-fns';\nimport { useMemo } from 'react';\nimport {\n CreateOffboardingParams,\n TerminationDetailsParams,\n} from '@/src/client';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport {\n TerminationFlowProps,\n TerminationFormValues,\n} from '@/src/flows/Termination/types';\nimport omit from 'lodash.omit';\nimport { parseFormRadioValues } from '@/src/flows/utils';\nimport { useStepState } from '@/src/flows/useStepState';\nimport { STEPS } from '@/src/flows/Termination/utils';\nimport { jsonSchema } from '@/src/flows/Termination/json-schemas/jsonSchema';\nimport { useCreateTermination, useTerminationSchema } from '@/src/flows/api';\nimport { createInformationField } from '@/src/components/form/jsf-utils/createFields';\nimport { cn, ZendeskTriggerButton } from '@/src/internals';\nimport { zendeskArticles } from '@/src/components/shared/zendesk-drawer/utils';\nimport { PaidTimeOff } from '@/src/flows/Termination/components/PaidTimeOff/PaidTimeOff';\nimport { useEmployment } from '@/src/flows/Onboarding/api';\nimport { PaidTimeOffContainer } from '@/src/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer';\n\nfunction buildInitialValues(\n stepsInitialValues: Partial<TerminationFormValues>,\n): TerminationFormValues {\n const initialValues: TerminationFormValues = {\n confidential: '',\n customer_informed_employee: '',\n customer_informed_employee_date: '',\n customer_informed_employee_description: '',\n personal_email: '',\n termination_reason: undefined,\n reason_description: '',\n termination_reason_files: [],\n will_challenge_termination: '',\n will_challenge_termination_description: null,\n agrees_to_pto_amount: '',\n agrees_to_pto_amount_notes: null,\n acknowledge_termination_procedure: false,\n additional_comments: '',\n proposed_termination_date: '',\n risk_assessment_reasons: [],\n timesheet_file: undefined,\n ...stepsInitialValues,\n };\n\n return initialValues;\n}\n\ntype TerminationHookProps = Omit<TerminationFlowProps, 'render'>;\n\nexport const useTermination = ({\n employmentId,\n options,\n initialValues: terminationInitialValues,\n}: TerminationHookProps) => {\n const { fieldValues, setFieldValues, stepState, previousStep, nextStep } =\n useStepState<keyof typeof STEPS, TerminationFormValues>(STEPS);\n\n const { data: employment } = useEmployment(employmentId);\n\n const initialValues = buildInitialValues({\n ...stepState.values?.employee_communication,\n ...stepState.values?.termination_details,\n ...stepState.values?.paid_time_off,\n ...stepState.values?.additional_information,\n ...terminationInitialValues,\n });\n\n const formValues = useMemo(\n () => ({\n ...stepState.values?.[stepState.currentStep.name as keyof typeof STEPS], // Restore values for the current step\n ...initialValues,\n ...fieldValues,\n }),\n [stepState.values, stepState.currentStep.name, fieldValues, initialValues],\n );\n\n const customFields = useMemo(() => {\n return {\n fields: {\n risk_assesment_info: createInformationField(\n 'Offboarding risk assessment',\n 'Employees may be protected from termination if they fall into certain categories. To help avoid claims from employees, let us know if the employee is part of one or more of these categories. Select all that apply.',\n {\n className: (\n options?.jsfModify?.fields?.risk_assesment_info as $TSFixMe\n )?.['x-jsf-presentation']?.className,\n },\n ),\n proposed_termination_date_info: createInformationField(\n 'Proposed termination date',\n <>\n In most cases, we must provide notice to the employee before\n termination. The required notice period depends on local labor laws,\n the employment agreement, and other factors. We'll use those factors\n to determine the required notice period.\n <ZendeskTriggerButton\n zendeskId={zendeskArticles.terminationNoticePeriods}\n className={cn(\n 'text-sm',\n (\n options?.jsfModify?.fields\n ?.proposed_termination_date_info as $TSFixMe\n )?.['x-jsf-presentation']?.zendeskTriggerButtonClassName,\n )}\n >\n Learn about notice periods\n </ZendeskTriggerButton>\n </>,\n {\n className: (\n options?.jsfModify?.fields\n ?.proposed_termination_date_info as $TSFixMe\n )?.['x-jsf-presentation']?.className,\n },\n ),\n proposed_termination_date: {\n ...(options?.jsfModify?.fields\n ?.proposed_termination_date as $TSFixMe),\n 'x-jsf-presentation': {\n ...(\n options?.jsfModify?.fields?.proposed_termination_date as $TSFixMe\n )?.['x-jsf-presentation'],\n minDate: format(new Date(), 'yyyy-MM-dd'),\n },\n },\n paid_time_off_info: {\n ...(options?.jsfModify?.fields?.paid_time_off_info as $TSFixMe),\n 'x-jsf-presentation': {\n ...(options?.jsfModify?.fields?.paid_time_off_info as $TSFixMe)?.[\n 'x-jsf-presentation'\n ],\n Component: () => {\n const CustomComponent = (\n options?.jsfModify?.fields?.paid_time_off_info as $TSFixMe\n )?.['x-jsf-presentation']?.Component;\n\n return (\n <PaidTimeOffContainer\n employeeName={employment?.basic_information?.name as string}\n proposedTerminationDate={formValues.proposed_termination_date}\n employmentId={employmentId}\n render={(props) => {\n if (CustomComponent) {\n return <CustomComponent {...props} />;\n }\n return <PaidTimeOff {...props} />;\n }}\n />\n );\n },\n },\n },\n },\n };\n }, [\n employment?.basic_information?.name,\n formValues.proposed_termination_date,\n options?.jsfModify?.fields?.paid_time_off_info,\n options?.jsfModify?.fields?.proposed_termination_date_info,\n options?.jsfModify?.fields?.risk_assesment_info,\n employmentId,\n ]);\n\n const { data: terminationHeadlessForm, isLoading: isLoadingTermination } =\n useTerminationSchema({\n formValues: formValues,\n jsfModify: {\n ...options?.jsfModify,\n fields: {\n ...options?.jsfModify?.fields,\n ...customFields?.fields,\n },\n },\n step: stepState.currentStep.name,\n });\n\n const entireTerminationSchema = createHeadlessForm(jsonSchema.data.schema);\n\n const createTermination = useCreateTermination();\n const { mutateAsync } = mutationToPromise(createTermination);\n\n async function onSubmit(values: TerminationFormValues) {\n if (!employmentId) {\n throw new Error('Employment id is missing');\n }\n\n if (terminationHeadlessForm) {\n // this is a hack because I need to validate all form values with the entire schema\n const parsedValues = parseJSFToValidate(\n values,\n entireTerminationSchema.fields,\n { isPartialValidation: true },\n );\n\n const { customer_informed_employee: customerInformedEmployee } =\n parsedValues;\n\n const employeeAwareness =\n customerInformedEmployee === 'yes'\n ? {\n employee_awareness: {\n date: parsedValues.customer_informed_employee_date,\n note: parsedValues.customer_informed_employee_description,\n },\n }\n : undefined;\n\n const radioFieldKeys = [\n 'agrees_to_pto_amount',\n 'confidential',\n 'customer_informed_employee',\n 'will_challenge_termination',\n ];\n\n const parsedRadioValues = parseFormRadioValues(\n parsedValues,\n radioFieldKeys,\n );\n\n const normalizedValues = omit(\n parsedRadioValues,\n 'customer_informed_employee_date',\n 'customer_informed_employee_description',\n );\n\n const terminationDetails: TerminationDetailsParams = omitBy(\n {\n ...normalizedValues,\n ...employeeAwareness,\n },\n isNull,\n ) as unknown as TerminationDetailsParams;\n\n const terminationPayload: CreateOffboardingParams = {\n employment_id: employmentId,\n termination_details: terminationDetails,\n type: 'termination',\n };\n\n return mutateAsync(terminationPayload);\n }\n\n return;\n }\n\n function back() {\n previousStep();\n }\n\n function next() {\n nextStep();\n }\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId,\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the contract amendment schema\n */\n fields: terminationHeadlessForm?.fields || [],\n /**\n * Loading state indicating if the termination schema is being fetched\n */\n isLoading: isLoadingTermination,\n /**\n * Loading state indicating if a contract amendment mutation is in progress\n */\n isSubmitting: createTermination.isPending,\n /**\n * Initial form values\n */\n initialValues: initialValues,\n /**\n * Function to validate form values against the contract amendment schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: (values: TerminationFormValues) => {\n if (terminationHeadlessForm) {\n const parsedValues = parseJSFToValidate(\n values,\n terminationHeadlessForm?.fields,\n );\n return terminationHeadlessForm?.handleValidation(parsedValues);\n }\n return null;\n },\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: (values: Partial<TerminationFormValues>) => {\n if (entireTerminationSchema) {\n const parsedValues = parseJSFToValidate(\n values,\n entireTerminationSchema?.fields,\n { isPartialValidation: true },\n );\n setFieldValues(parsedValues as TerminationFormValues);\n }\n },\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues: (values: TerminationFormValues) => {\n return parseJSFToValidate(values, entireTerminationSchema.fields, {\n isPartialValidation: true,\n });\n },\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next,\n };\n};\n","import { cn } from '@/src/lib/utils';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\ntype JSFPresentationConfig = {\n inputType?: string;\n Component?: React.ComponentType<$TSFixMe>;\n hidden?: boolean;\n [key: string]: unknown;\n};\n\ntype JSFFieldConfig = {\n 'x-jsf-presentation'?: JSFPresentationConfig;\n [key: string]: unknown;\n};\n\n/**\n * Creates an information field with standard styling\n */\nexport function createInformationField(\n title: React.ReactNode,\n description: React.ReactNode,\n options?: {\n className?: string;\n },\n): JSFFieldConfig {\n return {\n 'x-jsf-presentation': {\n inputType: 'hidden',\n Component: () => (\n <div\n className={cn(\n 'RemoteFlows__InformationStatement',\n options?.className,\n )}\n >\n <h3 className={cn('RemoteFlows__InformationStatement__Title')}>\n {title}\n </h3>\n <p className={cn('RemoteFlows__InformationStatement__Description')}>\n {description}\n </p>\n </div>\n ),\n },\n };\n}\n"],"mappings":"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","names":["createHeadlessForm","omitBy","isNull","format","useMemo","omit","jsx","jsxs","createInformationField","title","description","options","__name","cn","Fragment","jsx","jsxs","buildInitialValues","stepsInitialValues","__name","useTermination","employmentId","options","terminationInitialValues","fieldValues","setFieldValues","stepState","previousStep","nextStep","useStepState","STEPS","employment","useEmployment","initialValues","formValues","useMemo","customFields","createInformationField","ZendeskTriggerButton","zendeskArticles","cn","format","CustomComponent","PaidTimeOffContainer","props","PaidTimeOff","terminationHeadlessForm","isLoadingTermination","useTerminationSchema","entireTerminationSchema","createHeadlessForm","jsonSchema","createTermination","useCreateTermination","mutateAsync","mutationToPromise","onSubmit","values","parsedValues","parseJSFToValidate","customerInformedEmployee","employeeAwareness","parsedRadioValues","parseFormRadioValues","normalizedValues","omit","terminationDetails","omitBy","isNull","back","next"]}
@@ -1,2 +0,0 @@
1
- import{c as t,d as m,e as a,f as i}from"./chunk-REDYWUCC.js";import{a as n}from"./chunk-P37U34EQ.js";import{useState as T}from"react";var C=n(({proposedTerminationDate:e,employeeName:f,employmentId:o,render:s})=>{let[r,u]=T(!1),y=i({employmentId:o}),c=new Date(e).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"}),d=t({employmentId:o,options:{enabled:r}}),P=m({employmentId:o,date:e}),l=a({employmentId:o,proposedTerminationDate:e});return s({leavePoliciesSummaryQuery:y,timeoffQuery:d,bookedTimeBeforeAndAfterTerminationQuery:P,formattedProposedTerminationDate:c,employeeName:f,proposedTerminationDate:e,summaryData:l,open:r,onOpenChange:n(()=>{u(O=>!O)},"onOpenChange")})},"PaidTimeOffContainer");export{C as a};
2
- //# sourceMappingURL=chunk-EZWZMPD2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.tsx"],"sourcesContent":["import {\n useBookedTimeoffBeforeAndAfterTerminationQuery,\n usePaidTimeoffBreakdownQuery,\n useSummaryTimeOffDataQuery,\n useTimeOffLeavePoliciesSummaryQuery,\n} from '@/src/common/api';\nimport { PaidTimeOffContainerProps } from '@/src/flows/Termination/components/PaidTimeOff/types';\nimport { useState } from 'react';\n\n/**\n * PaidTimeOffContainer component\n *\n * This is a container component that manages paid time off (PTO) data retrieval and state\n * for the termination flow. It aggregates multiple time off-related queries and formats\n * the termination date for display.\n *\n */\nexport const PaidTimeOffContainer = ({\n proposedTerminationDate,\n employeeName,\n employmentId,\n render,\n}: PaidTimeOffContainerProps) => {\n const [open, setOpen] = useState(false);\n\n const leavePoliciesSummaryQuery = useTimeOffLeavePoliciesSummaryQuery({\n employmentId: employmentId,\n });\n\n const formattedProposedTerminationDate = new Date(\n proposedTerminationDate,\n ).toLocaleDateString('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n });\n\n const timeoffQuery = usePaidTimeoffBreakdownQuery({\n employmentId: employmentId,\n options: {\n enabled: open,\n },\n });\n\n const bookedTimeBeforeAndAfterTerminationQuery =\n useBookedTimeoffBeforeAndAfterTerminationQuery({\n employmentId: employmentId,\n date: proposedTerminationDate,\n });\n\n const summaryData = useSummaryTimeOffDataQuery({\n employmentId: employmentId,\n proposedTerminationDate,\n });\n\n const onOpenChange = () => {\n setOpen((open) => !open);\n };\n\n return render({\n leavePoliciesSummaryQuery,\n timeoffQuery,\n bookedTimeBeforeAndAfterTerminationQuery,\n formattedProposedTerminationDate,\n employeeName,\n proposedTerminationDate,\n summaryData,\n open,\n onOpenChange,\n });\n};\n"],"mappings":"qGAOA,OAAS,YAAAA,MAAgB,QAUlB,IAAMC,EAAuBC,EAAA,CAAC,CACnC,wBAAAC,EACA,aAAAC,EACA,aAAAC,EACA,OAAAC,CACF,IAAiC,CAC/B,GAAM,CAACC,EAAMC,CAAO,EAAIC,EAAS,EAAK,EAEhCC,EAA4BC,EAAoC,CACpE,aAAcN,CAChB,CAAC,EAEKO,EAAmC,IAAI,KAC3CT,CACF,EAAE,mBAAmB,QAAS,CAC5B,MAAO,OACP,IAAK,UACL,KAAM,SACR,CAAC,EAEKU,EAAeC,EAA6B,CAChD,aAAcT,EACd,QAAS,CACP,QAASE,CACX,CACF,CAAC,EAEKQ,EACJC,EAA+C,CAC7C,aAAcX,EACd,KAAMF,CACR,CAAC,EAEGc,EAAcC,EAA2B,CAC7C,aAAcb,EACd,wBAAAF,CACF,CAAC,EAMD,OAAOG,EAAO,CACZ,0BAAAI,EACA,aAAAG,EACA,yCAAAE,EACA,iCAAAH,EACA,aAAAR,EACA,wBAAAD,EACA,YAAAc,EACA,KAAAV,EACA,aAbmBL,EAAA,IAAM,CACzBM,EAASD,GAAS,CAACA,CAAI,CACzB,EAFqB,eAcrB,CAAC,CACH,EArDoC","names":["useState","PaidTimeOffContainer","__name","proposedTerminationDate","employeeName","employmentId","render","open","setOpen","useState","leavePoliciesSummaryQuery","useTimeOffLeavePoliciesSummaryQuery","formattedProposedTerminationDate","timeoffQuery","usePaidTimeoffBreakdownQuery","bookedTimeBeforeAndAfterTerminationQuery","useBookedTimeoffBeforeAndAfterTerminationQuery","summaryData","useSummaryTimeOffDataQuery"]}
@@ -1,2 +0,0 @@
1
- import{a as v}from"./chunk-REDYWUCC.js";import{a as A}from"./chunk-2YTBWEC7.js";import{a as l,b as _}from"./chunk-3AEKPMIN.js";import{C as b,c as E,p as w}from"./chunk-3O3Q24JL.js";import{a as M}from"./chunk-PJBAQZ6G.js";import{d}from"./chunk-3ZWDIEEM.js";import{a as j,c as S}from"./chunk-PAQW5BFW.js";import{a as t}from"./chunk-P37U34EQ.js";import{createHeadlessForm as I,modify as R}from"@remoteoss/json-schema-form";import{useMutation as Q,useQuery as B}from"@tanstack/react-query";var J=t(({countryCode:a,employment:r,fieldValues:n,options:e})=>{let{client:u}=d(),m=e?.jsonSchemaVersion?.contract_amendments?{json_schema_version:e.jsonSchemaVersion.contract_amendments}:{};return B({queryKey:["contract-amendment-schema"],retry:!1,queryFn:t(async()=>{let o=await E({client:u,headers:{Authorization:""},query:{employment_id:r?.data?.employment?.id,country_code:a,...m}});if(o.error||!o.data)throw new Error("Failed to fetch contract amendment schema");return o},"queryFn"),enabled:!!r,select:t(({data:o})=>{let c=o?.data||{};if(e&&e.jsfModify){let{schema:f}=R(c,e.jsfModify);c=f}let s={...n,annual_gross_salary:n?.annual_gross_salary?j(n?.annual_gross_salary):void 0},y=Object.keys(s).length>0;return I(c,{initialValues:y?s:_(r)})},"select")})},"useContractAmendmentSchemaQuery"),K=t(a=>{let{client:r}=d(),n=a?.jsonSchemaVersion?.contract_amendments?{json_schema_version:a.jsonSchemaVersion.contract_amendments}:{};return Q({mutationFn:t(e=>w({client:r,headers:{Authorization:""},body:e,query:{...n}}),"mutationFn")})},"useCreateContractAmendmentMutation"),U=t(a=>{let{client:r}=d(),n=a?.jsonSchemaVersion?.contract_amendments?{json_schema_version:a.jsonSchemaVersion.contract_amendments}:{};return Q({mutationFn:t(e=>b({client:r,headers:{Authorization:""},body:e,query:{...n}}),"mutationFn")})},"useAutomatableContractAmendmentMutation"),ae=t(({employmentId:a,countryCode:r,options:n})=>{let{fieldValues:e,setFieldValues:u,stepState:m,nextStep:o,previousStep:c}=M(l),{data:s,isLoading:y,isError:V,error:f}=v({employmentId:a}),{data:i,isLoading:q,isError:L,error:T}=J({employment:s,countryCode:r,fieldValues:{...m.values?.[m.currentStep.name],...e},options:n}),k=_(s,i?.fields),F=K(n),g=U(n);async function O(p){let h=S(p,i?.fields||[],{isPartialValidation:!1}),P={employment_id:s?.data.employment?.id,amendment_contract_id:s?.data.employment?.active_contract_id,contract_amendment:{...h}};switch(m.currentStep.name){case l.form.name:{let{mutateAsync:C}=A(g),H=await C(P);return o(),H}case l.confirmation_form.name:{let{mutateAsync:C}=A(F);return C(P)}default:throw new Error("Invalid step state")}}t(O,"onSubmit");function z(p){if(i){let h=S(p,i?.fields);return i?.handleValidation(h)}return null}t(z,"handleValidation");function x(){c()}return t(x,"back"),{stepState:m,fields:i?.fields||[],isLoading:y||q,isError:V||L,error:f||T,isSubmitting:g.isPending||F.isPending,initialValues:k,values:e,handleValidation:z,checkFieldUpdates:u,onSubmit:O,back:x}},"useContractAmendment");export{ae as a};
2
- //# sourceMappingURL=chunk-O7REUCKR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/ContractAmendment/hooks.ts"],"sourcesContent":["import {\n CreateContractAmendmentParams,\n EmploymentShowResponse,\n getShowContractAmendmentSchema,\n postAutomatableContractAmendment,\n postCreateContractAmendment,\n} from '@/src/client';\n\nimport {\n convertToCents,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport { mutationToPromise } from '@/src/lib/mutations';\n\nimport { Client } from '@hey-api/client-fetch';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { ContractAmendmentParams } from './types';\n\nimport { useEmploymentQuery } from '@/src/common/api';\nimport { useClient } from '@/src/context';\nimport { FieldValues } from 'react-hook-form';\nimport { useStepState } from '../useStepState';\nimport { buildInitialValues, STEPS } from './utils';\nimport { FlowOptions } from '@/src/flows/types';\n\ntype ContractAmendmentSchemaParams = {\n countryCode: string;\n employment: EmploymentShowResponse | undefined;\n fieldValues: FieldValues | undefined;\n options?: ContractAmendmentParams['options'];\n};\n\nconst useContractAmendmentSchemaQuery = ({\n countryCode,\n employment,\n fieldValues,\n options,\n}: ContractAmendmentSchemaParams) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.contract_amendments\n ? {\n json_schema_version: options.jsonSchemaVersion.contract_amendments,\n }\n : {};\n return useQuery({\n queryKey: ['contract-amendment-schema'],\n retry: false,\n queryFn: async () => {\n const response = await getShowContractAmendmentSchema({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n query: {\n employment_id: employment?.data?.employment?.id as string,\n country_code: countryCode,\n ...jsonSchemaQueryParam,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch contract amendment schema');\n }\n\n return response;\n },\n enabled: Boolean(employment),\n select: ({ data }) => {\n let jsfSchema = data?.data || {};\n\n if (options && options.jsfModify) {\n const { schema } = modify(jsfSchema, options.jsfModify);\n jsfSchema = schema;\n }\n\n const copyFieldValues = {\n ...fieldValues,\n annual_gross_salary: fieldValues?.annual_gross_salary\n ? convertToCents(fieldValues?.annual_gross_salary)\n : undefined,\n };\n\n const hasFieldValues = Object.keys(copyFieldValues).length > 0;\n\n const result = createHeadlessForm(jsfSchema, {\n initialValues: hasFieldValues\n ? copyFieldValues\n : buildInitialValues(employment),\n });\n return result;\n },\n });\n};\n\nconst useCreateContractAmendmentMutation = (options?: FlowOptions) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.contract_amendments\n ? {\n json_schema_version: options.jsonSchemaVersion.contract_amendments,\n }\n : {};\n return useMutation({\n mutationFn: (payload: CreateContractAmendmentParams) => {\n return postCreateContractAmendment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nconst useAutomatableContractAmendmentMutation = (options?: FlowOptions) => {\n const { client } = useClient();\n const jsonSchemaQueryParam = options?.jsonSchemaVersion?.contract_amendments\n ? {\n json_schema_version: options.jsonSchemaVersion.contract_amendments,\n }\n : {};\n return useMutation({\n mutationFn: (payload: CreateContractAmendmentParams) => {\n return postAutomatableContractAmendment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n query: {\n ...jsonSchemaQueryParam,\n },\n });\n },\n });\n};\n\nexport const useContractAmendment = ({\n employmentId,\n countryCode,\n options,\n}: ContractAmendmentParams) => {\n const { fieldValues, setFieldValues, stepState, nextStep, previousStep } =\n useStepState<keyof typeof STEPS>(STEPS);\n\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n isError: isErrorEmployment,\n error: errorEmployment,\n } = useEmploymentQuery({\n employmentId,\n });\n\n const {\n data: contractAmendmentHeadlessForm,\n isLoading: isLoadingContractAmendments,\n isError: isErrorContractAmendmentSchema,\n error: errorContractAmendmentSchema,\n } = useContractAmendmentSchemaQuery({\n employment,\n countryCode,\n // In case the user is navigating back to the form step, we need to\n // pass the previous field values, so that the schema can be\n // generated with the correct values.\n fieldValues: {\n ...stepState.values?.[stepState.currentStep.name], // Restore values for the current step\n ...fieldValues,\n },\n options,\n });\n\n const initialValues = buildInitialValues(\n employment,\n contractAmendmentHeadlessForm?.fields,\n );\n\n const createContractAmendmentMutation =\n useCreateContractAmendmentMutation(options);\n const automatableContractAmendmentMutation =\n useAutomatableContractAmendmentMutation(options);\n\n async function onSubmit(values: FieldValues) {\n const parsedValues = parseJSFToValidate(\n values,\n contractAmendmentHeadlessForm?.fields || [],\n {\n isPartialValidation: false,\n },\n );\n\n const payload = {\n employment_id: employment?.data.employment?.id as string,\n amendment_contract_id: employment?.data.employment\n ?.active_contract_id as string,\n contract_amendment: {\n ...parsedValues,\n },\n };\n\n switch (stepState.currentStep.name) {\n case STEPS.form.name: {\n const { mutateAsync } = mutationToPromise(\n automatableContractAmendmentMutation,\n );\n\n const automatableContractAmendment = await mutateAsync(payload);\n\n nextStep();\n\n return automatableContractAmendment;\n }\n case STEPS.confirmation_form.name: {\n const { mutateAsync } = mutationToPromise(\n createContractAmendmentMutation,\n );\n\n return mutateAsync(payload);\n }\n\n default:\n throw new Error('Invalid step state');\n }\n }\n\n function handleValidation(values: FieldValues) {\n if (contractAmendmentHeadlessForm) {\n const parsedValues = parseJSFToValidate(\n values,\n contractAmendmentHeadlessForm?.fields,\n );\n\n return contractAmendmentHeadlessForm?.handleValidation(parsedValues);\n }\n return null;\n }\n\n function back() {\n previousStep();\n }\n\n return {\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the contract amendment schema\n */\n fields: contractAmendmentHeadlessForm?.fields || [],\n /**\n * Loading state indicating if either employment or contract amendment data is being fetched\n */\n isLoading: isLoadingEmployment || isLoadingContractAmendments,\n /**\n * Error state indicating if there was an error fetching either employment or contract amendment data\n */\n isError: isErrorEmployment || isErrorContractAmendmentSchema,\n /**\n * Error object containing details about any errors that occurred during data fetching\n */\n error: errorEmployment || errorContractAmendmentSchema,\n /**\n * Loading state indicating if a contract amendment mutation is in progress\n */\n isSubmitting:\n automatableContractAmendmentMutation.isPending ||\n createContractAmendmentMutation.isPending,\n /**\n * Initial form values built from employment data and contract amendment fields\n */\n initialValues,\n /**\n * Current form field values\n */\n values: fieldValues,\n /**\n * Function to validate form values against the contract amendment schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation,\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n };\n};\n"],"mappings":"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","names":["createHeadlessForm","modify","useMutation","useQuery","useContractAmendmentSchemaQuery","__name","countryCode","employment","fieldValues","options","client","useClient","jsonSchemaQueryParam","useQuery","response","getShowContractAmendmentSchema","data","jsfSchema","schema","modify","copyFieldValues","convertToCents","hasFieldValues","createHeadlessForm","buildInitialValues","useCreateContractAmendmentMutation","useMutation","payload","postCreateContractAmendment","useAutomatableContractAmendmentMutation","postAutomatableContractAmendment","useContractAmendment","employmentId","setFieldValues","stepState","nextStep","previousStep","useStepState","STEPS","isLoadingEmployment","isErrorEmployment","errorEmployment","useEmploymentQuery","contractAmendmentHeadlessForm","isLoadingContractAmendments","isErrorContractAmendmentSchema","errorContractAmendmentSchema","initialValues","createContractAmendmentMutation","automatableContractAmendmentMutation","onSubmit","values","parsedValues","parseJSFToValidate","mutateAsync","mutationToPromise","automatableContractAmendment","handleValidation","back"]}
@@ -1,2 +0,0 @@
1
- import{G as p,s as u,u as y}from"./chunk-3O3Q24JL.js";import{d as i}from"./chunk-3ZWDIEEM.js";import{a}from"./chunk-P37U34EQ.js";import{useQuery as m}from"@tanstack/react-query";var x=a(({employmentId:n})=>{let{client:o}=i();return m({queryKey:["employment",n],retry:!1,queryFn:a(()=>y({client:o,headers:{Authorization:""},path:{employment_id:n}}),"queryFn"),select:a(({data:e})=>e,"select")})},"useEmploymentQuery"),l=a(({employmentId:n,status:o,timeoffType:e,options:t})=>{let{client:r}=i();return m({queryKey:["timeoff",n,o],retry:!1,queryFn:a(()=>p({client:r,headers:{Authorization:""},query:{employment_id:n,status:o,timeoff_type:e}}),"queryFn"),select:a(({data:s})=>t?.select?.(s)??s,"select"),enabled:t?.enabled})},"useTimeOffQuery"),T=a((n,o)=>{let e=new Date(n).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),t=new Date(o).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"});return`${e} \u2192 ${t}`},"formatDateRange"),w=a(({employmentId:n,options:o})=>l({employmentId:n,timeoffType:"paid_time_off",options:{enabled:o?.enabled,select:a(e=>({bookedDays:e?.data?.total_count||0,timeoffs:e?.data?.timeoffs?.map(t=>({status:t?.status,duration:t?.timeoff_days.length,startDate:t?.start_date,endDate:t?.end_date,formattedDate:T(t?.start_date,t?.end_date)}))||[]}),"select")}}),"usePaidTimeoffBreakdownQuery"),b=a(({employmentId:n,date:o,options:e})=>l({employmentId:n,timeoffType:"paid_time_off",status:"approved",options:{enabled:e?.enabled,select:a(t=>({bookedDaysBeforeTermination:t?.data?.timeoffs?.filter(r=>new Date(r?.start_date)<=new Date(o)).length||0,bookedDaysAfterTermination:t?.data?.timeoffs?.filter(r=>new Date(r?.start_date)>new Date(o)).length||0}),"select")}}),"useBookedTimeoffBeforeAndAfterTerminationQuery"),L=a(({employmentId:n,proposedTerminationDate:o})=>{let e=g({employmentId:n}),t=b({employmentId:n,date:o}),r=e.data?.data?.[0].annual_entitlement.type==="limited"&&e.data?.data?.[0].annual_entitlement.days||0,s=e.data?.data?.[0].booked?.days||0,d=e.data?.data?.[0].used.days||0,c=t.data?.bookedDaysBeforeTermination||0,D=t.data?.bookedDaysAfterTermination||0,f=r-s-d;return{data:{entitledDays:r,bookedDays:s,usedDays:d,approvedDaysBeforeTermination:c,approvedDaysAfterTermination:D,remainingDays:f<0?0:f},isLoading:e.isLoading||t.isLoading,isError:e.isError||t.isError,error:e.error||t.error}},"useSummaryTimeOffDataQuery"),g=a(({employmentId:n})=>{let{client:o}=i();return m({queryKey:["timeoff-balance",n],retry:!1,queryFn:a(()=>u({client:o,headers:{Authorization:""},path:{employment_id:n}}),"queryFn"),select:a(({data:e})=>e,"select")})},"useTimeOffLeavePoliciesSummaryQuery");export{x as a,l as b,w as c,b as d,L as e,g as f};
2
- //# sourceMappingURL=chunk-REDYWUCC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common/api.ts"],"sourcesContent":["import {\n getIndexLeavePoliciesSummary,\n getIndexTimeoff,\n getShowEmployment,\n ListTimeoffResponse,\n TimeoffStatus,\n TimeoffType,\n} from '@/src/client';\nimport { useClient } from '@/src/context';\nimport { ContractAmendmentParams } from '@/src/flows/ContractAmendment/types';\nimport { Client } from '@hey-api/client-fetch';\nimport { useQuery } from '@tanstack/react-query';\n\ntype UseEmployment = Pick<ContractAmendmentParams, 'employmentId'>;\n\n/**\n * Hook to retrieve employment details for a specific employment ID.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} params.employmentId - The ID of the employment to fetch details for.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the employment details.\n */\nexport const useEmploymentQuery = ({ employmentId }: UseEmployment) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n queryFn: () => {\n return getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: { employment_id: employmentId },\n });\n },\n select: ({ data }) => data,\n });\n};\n\n/**\n * Hook to retrieve time off data for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch time off data for.\n * @param {TimeoffStatus} [params.status] - The status of the time off requests to filter by (e.g., 'approved', 'pending').\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the time off data.\n *\n */\nexport const useTimeOffQuery = <TData = ListTimeoffResponse>({\n employmentId,\n status,\n timeoffType,\n options,\n}: {\n employmentId?: string;\n status?: TimeoffStatus;\n timeoffType?: TimeoffType;\n options?: {\n enabled?: boolean;\n select?: (data: ListTimeoffResponse | undefined) => TData;\n };\n}) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['timeoff', employmentId, status],\n retry: false,\n queryFn: () => {\n return getIndexTimeoff({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n query: {\n employment_id: employmentId,\n status: status,\n timeoff_type: timeoffType,\n },\n });\n },\n select: ({ data }) => (options?.select?.(data) ?? data) as TData,\n enabled: options?.enabled,\n });\n};\n\nconst formatDateRange = (startDate: string, endDate: string) => {\n const start = new Date(startDate).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n const end = new Date(endDate).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n return `${start} → ${end}`;\n};\n\nexport type PaidTimeoffBreakdownResponse = {\n bookedDays: number;\n timeoffs: {\n status: string;\n duration: number;\n startDate: string;\n endDate: string;\n formattedDate: string;\n }[];\n};\n\n/**\n * Hook to retrieve paid time off breakdown for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch paid time off breakdown for.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the paid time off breakdown.\n *\n */\nexport const usePaidTimeoffBreakdownQuery = ({\n employmentId,\n options,\n}: {\n employmentId?: string;\n options?: {\n enabled?: boolean;\n };\n}) => {\n return useTimeOffQuery<PaidTimeoffBreakdownResponse>({\n employmentId,\n timeoffType: 'paid_time_off',\n options: {\n enabled: options?.enabled,\n select: (data) => {\n return {\n bookedDays: data?.data?.total_count || 0,\n timeoffs:\n data?.data?.timeoffs?.map((timeoff) => {\n return {\n status: timeoff?.status,\n duration: timeoff?.timeoff_days.length,\n startDate: timeoff?.start_date,\n endDate: timeoff?.end_date,\n formattedDate: formatDateRange(\n timeoff?.start_date,\n timeoff?.end_date,\n ),\n };\n }) || [],\n };\n },\n },\n });\n};\n\nexport type BookedTimeoffBeforeDateResponse = {\n bookedDaysBeforeTermination: number;\n bookedDaysAfterTermination: number;\n};\n\n/**\n * Hook to retrieve booked time off data before and after a specific date for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch booked time off data for.\n * @param {string} [params.date] - The date to fetch booked time off data for.\n * @returns {BookedTimeoffBeforeDateResponse} - The booked time off data before and after the specific date.\n *\n * This hooks it's not taking into account unlimited time off or half days yet or even we you request several days in one request.\n */\nexport const useBookedTimeoffBeforeAndAfterTerminationQuery = ({\n employmentId,\n date,\n options,\n}: {\n employmentId: string;\n date: string;\n options?: { enabled: boolean };\n}) => {\n return useTimeOffQuery<BookedTimeoffBeforeDateResponse>({\n employmentId,\n timeoffType: 'paid_time_off',\n status: 'approved',\n options: {\n enabled: options?.enabled,\n select: (data) => {\n return {\n bookedDaysBeforeTermination:\n data?.data?.timeoffs?.filter((timeoff) => {\n return new Date(timeoff?.start_date) <= new Date(date);\n }).length || 0,\n bookedDaysAfterTermination:\n data?.data?.timeoffs?.filter((timeoff) => {\n return new Date(timeoff?.start_date) > new Date(date);\n }).length || 0,\n };\n },\n },\n });\n};\n\nexport type SummaryTimeOffDataResponse = {\n entitledDays: number;\n bookedDays: number;\n usedDays: number;\n approvedDaysBeforeTermination: number;\n approvedDaysAfterTermination: number;\n remainingDays: number;\n};\n\n/**\n * Hook to retrieve summary time off data for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch summary time off data for.\n * @param {string} [params.proposedTerminationDate] - The proposed termination date to fetch summary time off data for.\n * @returns {SummaryTimeOffDataResponse} - The summary time off data.\n *\n * This hook doesn't take into account unlimited time off or half days yet.\n *\n */\nexport const useSummaryTimeOffDataQuery = ({\n employmentId,\n proposedTerminationDate,\n}: {\n employmentId: string;\n proposedTerminationDate: string;\n}) => {\n const leavePoliciesSummaryQuery = useTimeOffLeavePoliciesSummaryQuery({\n employmentId,\n });\n const bookedTimeQuery = useBookedTimeoffBeforeAndAfterTerminationQuery({\n employmentId,\n date: proposedTerminationDate,\n });\n\n const entitledDays =\n (leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement.type ===\n 'limited' &&\n leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement.days) ||\n 0;\n const bookedDays =\n leavePoliciesSummaryQuery.data?.data?.[0].booked?.days || 0;\n const usedDays = leavePoliciesSummaryQuery.data?.data?.[0].used.days || 0;\n const approvedDaysBeforeTermination =\n bookedTimeQuery.data?.bookedDaysBeforeTermination || 0;\n const approvedDaysAfterTermination =\n bookedTimeQuery.data?.bookedDaysAfterTermination || 0;\n const remainingDays = entitledDays - bookedDays - usedDays;\n\n return {\n data: {\n entitledDays,\n bookedDays,\n usedDays,\n approvedDaysBeforeTermination,\n approvedDaysAfterTermination,\n remainingDays: remainingDays < 0 ? 0 : remainingDays,\n },\n isLoading: leavePoliciesSummaryQuery.isLoading || bookedTimeQuery.isLoading,\n isError: leavePoliciesSummaryQuery.isError || bookedTimeQuery.isError,\n error: leavePoliciesSummaryQuery.error || bookedTimeQuery.error,\n };\n};\n\n/**\n * Hook to retrieve time off balance for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch time off balance for.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the time off balance.\n *\n */\nexport const useTimeOffLeavePoliciesSummaryQuery = ({\n employmentId,\n}: {\n employmentId?: string;\n}) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['timeoff-balance', employmentId],\n retry: false,\n queryFn: () => {\n return getIndexLeavePoliciesSummary({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: { employment_id: employmentId as string },\n });\n },\n select: ({ data }) => data,\n });\n};\n"],"mappings":"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","names":["useQuery","useEmploymentQuery","__name","employmentId","client","useClient","useQuery","getShowEmployment","data","useTimeOffQuery","status","timeoffType","options","getIndexTimeoff","formatDateRange","startDate","endDate","start","end","usePaidTimeoffBreakdownQuery","timeoff","useBookedTimeoffBeforeAndAfterTerminationQuery","date","useSummaryTimeOffDataQuery","proposedTerminationDate","leavePoliciesSummaryQuery","useTimeOffLeavePoliciesSummaryQuery","bookedTimeQuery","entitledDays","bookedDays","usedDays","approvedDaysBeforeTermination","approvedDaysAfterTermination","remainingDays","getIndexLeavePoliciesSummary"]}