@remoteoss/remote-flows 1.4.1 → 1.4.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/dist/{chunk-AGE76E7O.js → chunk-25M7VGZT.js} +2 -2
- package/dist/chunk-2BW2VK5F.js +2 -0
- package/dist/chunk-2BW2VK5F.js.map +1 -0
- package/dist/{chunk-X6325UGJ.js → chunk-2XVUZH4T.js} +2 -2
- package/dist/chunk-42R2H2DW.js +2 -0
- package/dist/{chunk-R5GUJ3IC.js → chunk-5HXPBCU6.js} +2 -2
- package/dist/{chunk-QKKAJK3A.js → chunk-6YRMHTAZ.js} +2 -2
- package/dist/{chunk-DDAMD7E7.js → chunk-73BVEZJ6.js} +2 -2
- package/dist/chunk-7JL3BFOU.js +2 -0
- package/dist/chunk-7JL3BFOU.js.map +1 -0
- package/dist/{chunk-JWDXZLGS.js → chunk-AOQ5FJGP.js} +2 -2
- package/dist/{chunk-ALC6W3PW.js → chunk-B3TRTHW4.js} +2 -2
- package/dist/{chunk-WUSZWDKK.js → chunk-BF3P3CMA.js} +2 -2
- package/dist/{chunk-UEEJS7TB.js → chunk-BZBPPV5B.js} +2 -2
- package/dist/chunk-DJ2OL5GS.js +2 -0
- package/dist/chunk-DJ2OL5GS.js.map +1 -0
- package/dist/chunk-EAV5VOMZ.js +2 -0
- package/dist/chunk-EAV5VOMZ.js.map +1 -0
- package/dist/{chunk-XGECMN4V.js → chunk-IF42CZJH.js} +2 -2
- package/dist/{chunk-KLKPBGKL.js → chunk-JDNBIL6Z.js} +2 -2
- package/dist/{chunk-Z2AKDJE5.js → chunk-JHSQWGEK.js} +2 -2
- package/dist/{chunk-EMJ266VJ.js → chunk-KABFJTE2.js} +2 -2
- package/dist/chunk-LEVFKYRL.js +2 -0
- package/dist/chunk-LEVFKYRL.js.map +1 -0
- package/dist/{chunk-UHWPRDRD.js → chunk-MWMX5KTM.js} +2 -2
- package/dist/{chunk-CD6F3YL4.js → chunk-OF66TZF4.js} +2 -2
- package/dist/{chunk-457SZDZQ.js → chunk-QLX4J76Z.js} +2 -2
- package/dist/chunk-QZ6XHIMS.js +2 -0
- package/dist/chunk-QZ6XHIMS.js.map +1 -0
- package/dist/{chunk-6E5GX7W3.js → chunk-RWYXH6CE.js} +1 -1
- package/dist/chunk-RWYXH6CE.js.map +1 -0
- package/dist/{chunk-H327JOTI.js → chunk-SCIX6XLQ.js} +2 -2
- package/dist/{chunk-5PB3CLBH.js → chunk-TKSW7MGC.js} +2 -2
- package/dist/{chunk-UIEXB3GW.js → chunk-VTX5YWRU.js} +2 -2
- package/dist/{chunk-7JDWTTYE.js → chunk-WMB752CR.js} +2 -2
- package/dist/{chunk-NGYAG3LB.js → chunk-Y75E2FOC.js} +2 -2
- package/dist/{chunk-6LQ6BSOS.js → chunk-ZK27BWOZ.js} +2 -2
- package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +3 -3
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
- package/dist/flows/ContractAmendment/context.d.ts +3 -3
- package/dist/flows/ContractAmendment/hooks.d.ts +3 -3
- package/dist/flows/ContractAmendment/hooks.js +1 -1
- package/dist/flows/ContractAmendment/index.d.ts +3 -3
- package/dist/flows/ContractAmendment/index.js +1 -1
- package/dist/flows/ContractAmendment/types.d.ts +2 -2
- package/dist/flows/ContractAmendment/utils.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
- package/dist/flows/ContractorOnboarding/api.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/components/BasicInformationStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +3 -3
- package/dist/flows/ContractorOnboarding/components/OnboardingInvite.js +1 -1
- package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/PricingPlan.js +1 -1
- package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/context.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/hooks.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/hooks.js +1 -1
- package/dist/flows/ContractorOnboarding/index.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/index.js +1 -1
- package/dist/flows/ContractorOnboarding/types.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/utils.d.ts +2 -2
- package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +3 -3
- package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +3 -3
- package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
- package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +2 -2
- package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +2 -2
- package/dist/flows/CostCalculator/api.d.ts +2 -2
- package/dist/flows/CostCalculator/components/SalaryField.d.ts +2 -2
- package/dist/flows/CostCalculator/context.d.ts +3 -3
- package/dist/flows/CostCalculator/hooks.d.ts +3 -3
- package/dist/flows/CostCalculator/hooks.js +1 -1
- package/dist/flows/CostCalculator/index.d.ts +3 -3
- package/dist/flows/CostCalculator/index.js +1 -1
- package/dist/flows/CostCalculator/types.d.ts +2 -2
- package/dist/flows/CostCalculator/utils.d.ts +3 -3
- package/dist/flows/CostCalculator/utils.js +1 -1
- package/dist/flows/Onboarding/OnboardingFlow.d.ts +4 -4
- package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
- package/dist/flows/Onboarding/api.d.ts +4 -4
- package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +2 -2
- package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
- package/dist/flows/Onboarding/components/BenefitsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
- package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
- package/dist/flows/Onboarding/components/OnboardingForm.d.ts +4 -4
- package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
- package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +3 -3
- package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
- package/dist/flows/Onboarding/components/ReviewStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +3 -3
- package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
- package/dist/flows/Onboarding/context.d.ts +6 -6
- package/dist/flows/Onboarding/hooks.d.ts +4 -4
- package/dist/flows/Onboarding/hooks.js +1 -1
- package/dist/flows/Onboarding/index.d.ts +4 -4
- package/dist/flows/Onboarding/index.js +1 -1
- package/dist/flows/Onboarding/types.d.ts +4 -4
- package/dist/flows/Onboarding/utils.d.ts +4 -4
- package/dist/flows/Termination/AdditionalDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
- package/dist/flows/Termination/EmployeeComunicationForm.d.ts +4 -4
- package/dist/flows/Termination/PaidTimeOffForm.d.ts +4 -4
- package/dist/flows/Termination/TerminationDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/TerminationFlow.d.ts +4 -4
- package/dist/flows/Termination/TerminationFlow.js +1 -1
- package/dist/flows/Termination/TerminationForm.d.ts +4 -4
- package/dist/flows/Termination/api.d.ts +5 -5
- package/dist/flows/Termination/api.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +9 -10
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +9 -10
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +7 -8
- package/dist/flows/Termination/context.d.ts +4 -4
- package/dist/flows/Termination/hooks.d.ts +4 -4
- package/dist/flows/Termination/hooks.js +1 -1
- package/dist/flows/Termination/index.d.ts +7 -8
- package/dist/flows/Termination/index.js +1 -1
- package/dist/flows/Termination/json-schemas/jsonSchema.js +1 -1
- package/dist/flows/Termination/json-schemas/schema.d.ts +4 -4
- package/dist/flows/Termination/json-schemas/schema.js +1 -1
- package/dist/flows/Termination/types.d.ts +4 -4
- package/dist/flows/Termination/utils.d.ts +4 -4
- package/dist/flows/types.d.ts +2 -2
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +35 -12
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internals.d.ts +3 -3
- package/dist/{mutations-DRSXskcC.d.ts → mutations-BC52jdwm.d.ts} +1 -1
- package/dist/{remoteFlows-C1t2xwls.d.ts → remoteFlows-BO4472Up.d.ts} +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/{types-C2LcMRHy.d.ts → types-B42GAkGo.d.ts} +4 -4
- package/dist/{types-CQoX--YI.d.ts → types-CBp9UlbO.d.ts} +3 -25
- package/dist/{types-C6psw625.d.ts → types-CINXtJqR.d.ts} +3 -3
- package/dist/{types-BKLre2R6.d.ts → types-CqM53tgV.d.ts} +4 -4
- package/dist/{types.gen-D7WEgMDJ.d.ts → types.gen-BBpr3-TL.d.ts} +1 -1
- package/dist/{utils-CiZrW4Ac.d.ts → utils-DHJl95Wn.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-2YTBWEC7.js +0 -2
- package/dist/chunk-2YTBWEC7.js.map +0 -1
- package/dist/chunk-6CASSN2Z.js +0 -2
- package/dist/chunk-6E5GX7W3.js.map +0 -1
- package/dist/chunk-BBOEK4Q5.js +0 -2
- package/dist/chunk-BBOEK4Q5.js.map +0 -1
- package/dist/chunk-LGUGZN57.js +0 -2
- package/dist/chunk-LGUGZN57.js.map +0 -1
- package/dist/chunk-NHZTYFOJ.js +0 -2
- package/dist/chunk-NHZTYFOJ.js.map +0 -1
- package/dist/chunk-RTQ4GKPG.js +0 -2
- package/dist/chunk-RTQ4GKPG.js.map +0 -1
- package/dist/chunk-V334GIML.js +0 -2
- package/dist/chunk-V334GIML.js.map +0 -1
- /package/dist/{chunk-AGE76E7O.js.map → chunk-25M7VGZT.js.map} +0 -0
- /package/dist/{chunk-X6325UGJ.js.map → chunk-2XVUZH4T.js.map} +0 -0
- /package/dist/{chunk-6CASSN2Z.js.map → chunk-42R2H2DW.js.map} +0 -0
- /package/dist/{chunk-R5GUJ3IC.js.map → chunk-5HXPBCU6.js.map} +0 -0
- /package/dist/{chunk-QKKAJK3A.js.map → chunk-6YRMHTAZ.js.map} +0 -0
- /package/dist/{chunk-DDAMD7E7.js.map → chunk-73BVEZJ6.js.map} +0 -0
- /package/dist/{chunk-JWDXZLGS.js.map → chunk-AOQ5FJGP.js.map} +0 -0
- /package/dist/{chunk-ALC6W3PW.js.map → chunk-B3TRTHW4.js.map} +0 -0
- /package/dist/{chunk-WUSZWDKK.js.map → chunk-BF3P3CMA.js.map} +0 -0
- /package/dist/{chunk-UEEJS7TB.js.map → chunk-BZBPPV5B.js.map} +0 -0
- /package/dist/{chunk-XGECMN4V.js.map → chunk-IF42CZJH.js.map} +0 -0
- /package/dist/{chunk-KLKPBGKL.js.map → chunk-JDNBIL6Z.js.map} +0 -0
- /package/dist/{chunk-Z2AKDJE5.js.map → chunk-JHSQWGEK.js.map} +0 -0
- /package/dist/{chunk-EMJ266VJ.js.map → chunk-KABFJTE2.js.map} +0 -0
- /package/dist/{chunk-UHWPRDRD.js.map → chunk-MWMX5KTM.js.map} +0 -0
- /package/dist/{chunk-CD6F3YL4.js.map → chunk-OF66TZF4.js.map} +0 -0
- /package/dist/{chunk-457SZDZQ.js.map → chunk-QLX4J76Z.js.map} +0 -0
- /package/dist/{chunk-H327JOTI.js.map → chunk-SCIX6XLQ.js.map} +0 -0
- /package/dist/{chunk-5PB3CLBH.js.map → chunk-TKSW7MGC.js.map} +0 -0
- /package/dist/{chunk-UIEXB3GW.js.map → chunk-VTX5YWRU.js.map} +0 -0
- /package/dist/{chunk-7JDWTTYE.js.map → chunk-WMB752CR.js.map} +0 -0
- /package/dist/{chunk-NGYAG3LB.js.map → chunk-Y75E2FOC.js.map} +0 -0
- /package/dist/{chunk-6LQ6BSOS.js.map → chunk-ZK27BWOZ.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/shared/drawer/DrawerDefault.tsx","../src/components/shared/drawer/Drawer.tsx","../src/components/shared/table/Table.tsx","../src/components/ui/table.tsx","../src/components/shared/table/TableFieldDefault.tsx","../src/flows/Termination/components/PaidTimeOff/PaidTimeOff.tsx"],"sourcesContent":["import { 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 function DrawerDefault({\n open,\n onOpenChange,\n direction,\n className,\n title,\n trigger,\n children,\n}: DrawerComponentProps) {\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 { useFormFields } from '@/src/context';\nimport { DrawerComponentProps } from '@/src/types/remoteFlows';\nimport { DrawerDefault } from './DrawerDefault';\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 || DrawerDefault;\n\n return (\n <CustomDrawer\n open={open}\n onOpenChange={onOpenChange}\n title={title}\n trigger={trigger}\n direction={direction}\n className={className}\n >\n {children}\n </CustomDrawer>\n );\n};\n","import { forwardRef } from 'react';\nimport { useFormFields } from '@/src/context';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport { TableFieldDefault } from './TableFieldDefault';\n\nexport type ColumnDef<T = $TSFixMe> = {\n id: keyof T;\n label: React.ReactNode;\n className?: string;\n cellClassName?: string;\n render?: (value: $TSFixMe, row: T, index: number) => React.ReactNode;\n};\n\nexport type TableDataProps<T = $TSFixMe> = {\n data: T[] | undefined;\n columns: ColumnDef<T>[];\n className?: string;\n};\n\nexport type TableComponentProps<T = $TSFixMe> = TableDataProps<T>;\n\nexport const Table = forwardRef<HTMLTableElement, TableDataProps<$TSFixMe>>(\n ({ data = [], columns, className = '' }, ref) => {\n const { components } = useFormFields();\n const CustomTable =\n (components?.table as\n | React.ComponentType<TableDataProps<$TSFixMe>>\n | undefined) || TableFieldDefault;\n\n // Pass the same structured data to custom components\n return (\n <CustomTable\n ref={ref}\n data={data}\n columns={columns}\n className={className}\n />\n );\n },\n);\n\nTable.displayName = 'Table';\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 {\n Table as TablePrimitive,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/src/components/ui/table';\nimport { cn } from '@/src/lib/utils';\nimport { $TSFixMe, TableComponentProps } from '@/src/types/remoteFlows';\n\nexport const TableFieldDefault = ({\n data,\n columns,\n className,\n ref,\n}: TableComponentProps) => {\n return (\n <TablePrimitive ref={ref} className={cn('RemoteFlows__Table', className)}>\n <TableHeader>\n <TableRow>\n {columns.map((column) => (\n <TableHead\n key={String(column.id)}\n className={cn('RemoteFlows__TableHead', column.className)}\n >\n {column.label}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {data?.map((row, rowIndex) => (\n <TableRow key={getRowKey(row, rowIndex)}>\n {columns.map((column) => (\n <TableCell\n key={String(column.id)}\n className={cn(\n 'RemoteFlows__TableCell',\n column.className,\n column.cellClassName,\n )}\n >\n {column.render\n ? column.render(\n row[column.id as keyof typeof row],\n row,\n rowIndex,\n )\n : row[column.id as keyof typeof row]}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </TablePrimitive>\n );\n};\n\nfunction getRowKey(row: $TSFixMe, index: number): string {\n return String(row.id ?? index);\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 { Table } from '@/src/components/shared/table/Table';\nimport { UseQueryResult } from '@tanstack/react-query';\nimport { PaidTimeOffRenderProps } from '@/src/flows/Termination/components/PaidTimeOff/types';\nimport { getSingularPluralUnit } from '@/src/lib/i18n';\nimport { ColumnDef } from '@/src/components/shared/table/Table';\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 usedDays,\n bookedDays,\n approvedDaysBeforeTermination,\n approvedDaysAfterTermination,\n remainingDays,\n proposedTerminationDate,\n isUnlimitedPto,\n currentEntitlementDays,\n}: {\n usedDays: string;\n bookedDays: string;\n approvedDaysBeforeTermination: string;\n approvedDaysAfterTermination: string;\n remainingDays: string;\n proposedTerminationDate: string;\n isUnlimitedPto: boolean;\n currentEntitlementDays: string;\n}) => {\n const formattedProposedTerminationDate = new Date(\n proposedTerminationDate,\n ).toLocaleDateString('en-US', {\n month: 'short',\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 {isUnlimitedPto ? 'Unlimited' : currentEntitlementDays}\n </p>\n </SummaryRow>\n <SummaryRow>\n <label>Total days booked</label>\n <p data-testid='booked-days' className='font-bold'>\n {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 {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 {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 {approvedDaysAfterTermination}\n </p>\n </SummaryRow>\n <SummaryRow>\n <label>Total days remaining unused</label>\n <p data-testid='remaining-days' className='font-bold'>\n {remainingDays}\n </p>\n </SummaryRow>\n <SummaryRow className='mb-2 py-0'>\n <p className='text-xs text-[#222E39]'>\n Unused days expire on {formattedProposedTerminationDate}\n </p>\n </SummaryRow>\n </div>\n );\n};\n\ntype TimeoffRow = {\n formattedDate: string;\n duration: number;\n status: string;\n};\n\nconst TIMEOFF_COLUMNS: ColumnDef<TimeoffRow>[] = [\n {\n id: 'formattedDate',\n label: 'Dates',\n className: 'w-[250px]',\n cellClassName: 'font-medium',\n },\n {\n id: 'duration',\n label: 'Duration',\n render: (value: number) =>\n getSingularPluralUnit({\n number: value,\n singular: 'day',\n plural: 'days',\n followCopyGuidelines: false,\n showNumber: true,\n }),\n },\n {\n id: 'status',\n label: 'Status',\n },\n];\n\nconst DrawerTimeOff = ({\n employeeName,\n timeoffQuery,\n entitledDays,\n countryName,\n currentEntitlementDays,\n formattedProposedTerminationDate,\n onOpenChange,\n open,\n}: {\n employeeName: string;\n timeoffQuery: UseQueryResult<PaidTimeoffBreakdownResponse | undefined, Error>;\n entitledDays: string;\n countryName: string;\n currentEntitlementDays: string;\n onOpenChange: () => void;\n open: boolean;\n formattedProposedTerminationDate: string;\n}) => {\n const { data: timeoff, isLoading } = timeoffQuery;\n\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 {!isLoading && (\n <>\n {Array.isArray(timeoff?.timeoffs) && timeoff?.timeoffs?.length > 0 ? (\n <>\n <p className='text-[#09090B] font-medium mb-4'>\n This list is for your information only.\n </p>\n <p className='text-xs text-[#09090B] mb-1 flex items-center justify-between gap-2'>\n <span>Annual entitlement for {countryName}</span>\n <span className='font-bold'>{entitledDays}</span>\n </p>\n <p className='text-xs text-[#09090B] mb-6 flex items-center justify-between gap-2'>\n <span>\n Entitlement up to {formattedProposedTerminationDate}\n </span>\n <span className='font-bold'>{currentEntitlementDays}</span>\n </p>\n <div className='mb-2'>\n <Table data={timeoff?.timeoffs} columns={TIMEOFF_COLUMNS} />\n </div>\n <p className='text-xs'>\n Total of{' '}\n {getSingularPluralUnit({\n number: timeoff?.bookedDays,\n singular: 'day',\n plural: 'days',\n followCopyGuidelines: false,\n showNumber: true,\n })}{' '}\n booked\n </p>\n </>\n ) : (\n <>\n <p className='font-medium mb-1 text-[#09090B]'>\n No recorded time off\n </p>\n <p className='text-sm text-[#09090B]'>\n According to our records, {employeeName} has not taken any time\n off this year.\n </p>\n </>\n )}\n </>\n )}\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 employment,\n onOpenChange,\n open,\n}: PaidTimeOffProps) => {\n const {\n entitledDays,\n bookedDays,\n usedDays,\n approvedDaysBeforeTermination,\n approvedDaysAfterTermination,\n remainingDays,\n currentEntitlementDays,\n isUnlimitedPto,\n } = summaryData.data;\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 usedDays={usedDays}\n bookedDays={bookedDays}\n currentEntitlementDays={currentEntitlementDays}\n approvedDaysBeforeTermination={approvedDaysBeforeTermination}\n approvedDaysAfterTermination={approvedDaysAfterTermination}\n remainingDays={remainingDays}\n proposedTerminationDate={proposedTerminationDate}\n isUnlimitedPto={isUnlimitedPto}\n />\n )}\n <DrawerTimeOff\n employeeName={employeeName}\n timeoffQuery={timeoffQuery}\n entitledDays={entitledDays}\n currentEntitlementDays={currentEntitlementDays}\n countryName={employment?.country?.name ?? 'Unknown'}\n onOpenChange={onOpenChange}\n formattedProposedTerminationDate={formattedProposedTerminationDate}\n open={open}\n />\n </div>\n </div>\n );\n};\n"],"mappings":"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","names":["jsx","jsxs","DrawerDefault","open","onOpenChange","direction","className","title","trigger","children","Drawer","DrawerTrigger","DrawerContent","cn","DrawerHeader","DrawerTitle","__name","jsx","Drawer","__name","open","onOpenChange","title","trigger","children","className","direction","components","useFormFields","CustomDrawer","DrawerDefault","forwardRef","React","jsx","Table","className","props","ref","cn","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","jsx","jsxs","TableFieldDefault","__name","data","columns","className","ref","Table","cn","TableHeader","TableRow","column","TableHead","TableBody","row","rowIndex","TableCell","getRowKey","index","jsx","Table","forwardRef","data","columns","className","ref","components","useFormFields","CustomTable","TableFieldDefault","Fragment","jsx","jsxs","rowBase","rowBorder","SummaryRow","__name","children","withBorder","className","cn","SummaryTimeOff","usedDays","bookedDays","approvedDaysBeforeTermination","approvedDaysAfterTermination","remainingDays","proposedTerminationDate","isUnlimitedPto","currentEntitlementDays","formattedProposedTerminationDate","TIMEOFF_COLUMNS","value","getSingularPluralUnit","DrawerTimeOff","employeeName","timeoffQuery","entitledDays","countryName","onOpenChange","open","timeoff","isLoading","Drawer","Button","Table","PaidTimeOff","summaryData","employment"]}
|
package/dist/chunk-BBOEK4Q5.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as t}from"./chunk-3OX2LLXL.js";import{b as e}from"./chunk-MRYRNB7Y.js";import{a as r}from"./chunk-P37U34EQ.js";import{jsx as f}from"react/jsx-runtime";function F({onSubmit:n,onSuccess:s,onError:m}){let{terminationBag:o}=e(),d=r(async a=>{let l=await o?.parseFormValues(a,!0);await n?.(l);let i=await o?.onSubmit(a);i?.error?m?.(i.error):i?.data&&await s?.(i.data)},"handleSubmit");return f(t,{defaultValues:o.fieldValues,fields:o?.fields,onSubmit:d})}r(F,"AdditionalDetailsForm");export{F as a};
|
|
2
|
-
//# sourceMappingURL=chunk-BBOEK4Q5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Termination/AdditionalDetailsForm.tsx"],"sourcesContent":["import { useTerminationContext } from './context';\nimport { TerminationFormValues } from '@/src/flows/Termination/types';\nimport { OffboardingResponse } from '@/src/client';\nimport { TerminationForm } from '@/src/flows/Termination/TerminationForm';\n\ntype AdditionalDetailsFormProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: TerminationFormValues) => void | Promise<void>;\n /*\n * The function is called when the form submission has failed.\n */\n onError?: (error: Error) => void;\n /*\n * The function is called when the form submission is successful. It receives the response data as\n * an argument.\n */\n onSuccess?: (data: OffboardingResponse) => void | Promise<void>;\n};\n\nexport function AdditionalDetailsForm({\n onSubmit,\n onSuccess,\n onError,\n}: AdditionalDetailsFormProps) {\n const { terminationBag } = useTerminationContext();\n\n const handleSubmit = async (values: TerminationFormValues) => {\n const parsedValues = (await terminationBag?.parseFormValues(\n values,\n true,\n )) as TerminationFormValues;\n await onSubmit?.(parsedValues);\n const terminationResult = await terminationBag?.onSubmit(values);\n\n if (terminationResult?.error) {\n onError?.(terminationResult.error);\n } else {\n if (terminationResult?.data) {\n await onSuccess?.(terminationResult.data as OffboardingResponse);\n }\n }\n };\n\n return (\n <TerminationForm\n defaultValues={terminationBag.fieldValues}\n fields={terminationBag?.fields}\n onSubmit={handleSubmit}\n />\n );\n}\n"],"mappings":"wHA8CI,cAAAA,MAAA,oBAzBG,SAASC,EAAsB,CACpC,SAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAA+B,CAC7B,GAAM,CAAE,eAAAC,CAAe,EAAIC,EAAsB,EAE3CC,EAAeC,EAAA,MAAOC,GAAkC,CAC5D,IAAMC,EAAgB,MAAML,GAAgB,gBAC1CI,EACA,EACF,EACA,MAAMP,IAAWQ,CAAY,EAC7B,IAAMC,EAAoB,MAAMN,GAAgB,SAASI,CAAM,EAE3DE,GAAmB,MACrBP,IAAUO,EAAkB,KAAK,EAE7BA,GAAmB,MACrB,MAAMR,IAAYQ,EAAkB,IAA2B,CAGrE,EAfqB,gBAiBrB,OACEX,EAACY,EAAA,CACC,cAAeP,EAAe,YAC9B,OAAQA,GAAgB,OACxB,SAAUE,EACZ,CAEJ,CA/BgBC,EAAAP,EAAA","names":["jsx","AdditionalDetailsForm","onSubmit","onSuccess","onError","terminationBag","useTerminationContext","handleSubmit","__name","values","parsedValues","terminationResult","TerminationForm"]}
|
package/dist/chunk-LGUGZN57.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as m,b as s}from"./chunk-RTQ4GKPG.js";import{c as t,d as i}from"./chunk-V334GIML.js";import{a as o}from"./chunk-P37U34EQ.js";import{useState as T}from"react";var k=o(({proposedTerminationDate:e,employeeName:f,employmentId:a,employment:r,render:y})=>{let[n,d]=T(!1),u=i({employmentId:a}),l=new Date(e).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"}),c=t({employmentId:a,options:{enabled:n}}),p=m({employmentId:a,date:e}),D=s({employmentId:a,proposedTerminationDate:e,employment:r});return y({leavePoliciesSummaryQuery:u,timeoffQuery:c||{data:{bookedDays:0,timeoffs:[]}},bookedTimeBeforeAndAfterTerminationQuery:p,formattedProposedTerminationDate:l,employeeName:f,proposedTerminationDate:e,summaryData:D??{data:{entitledDays:"0 days",bookedDays:"0 days",usedDays:"0 days",approvedDaysBeforeTermination:"0 days",approvedDaysAfterTermination:"0 days",remainingDays:"0 days",isUnlimitedPto:!1},isLoading:!1,isError:!1,error:null},employment:r,open:n,onOpenChange:o(()=>{d(P=>!P)},"onOpenChange")})},"PaidTimeOffContainer");export{k as a};
|
|
2
|
-
//# sourceMappingURL=chunk-LGUGZN57.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.tsx"],"sourcesContent":["import {\n usePaidTimeoffBreakdownQuery,\n useTimeOffLeavePoliciesSummaryQuery,\n} from '@/src/common/api';\nimport {\n useBookedTimeoffBeforeAndAfterTerminationQuery,\n useSummaryTimeOffDataQuery,\n} from '@/src/flows/Termination/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 employment,\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 // computed summary data\n const summaryData = useSummaryTimeOffDataQuery({\n employmentId: employmentId,\n proposedTerminationDate,\n employment: employment,\n });\n\n const onOpenChange = () => {\n setOpen((open) => !open);\n };\n\n return render({\n leavePoliciesSummaryQuery,\n timeoffQuery: timeoffQuery || {\n data: {\n bookedDays: 0,\n timeoffs: [],\n },\n },\n bookedTimeBeforeAndAfterTerminationQuery,\n formattedProposedTerminationDate,\n employeeName,\n proposedTerminationDate,\n summaryData: summaryData ?? {\n data: {\n entitledDays: '0 days',\n bookedDays: '0 days',\n usedDays: '0 days',\n approvedDaysBeforeTermination: '0 days',\n approvedDaysAfterTermination: '0 days',\n remainingDays: '0 days',\n isUnlimitedPto: false,\n },\n isLoading: false,\n isError: false,\n error: null,\n },\n employment: employment,\n open,\n onOpenChange,\n });\n};\n"],"mappings":"sIASA,OAAS,YAAAA,MAAgB,QAUlB,IAAMC,EAAuBC,EAAA,CAAC,CACnC,wBAAAC,EACA,aAAAC,EACA,aAAAC,EACA,WAAAC,EACA,OAAAC,CACF,IAAiC,CAC/B,GAAM,CAACC,EAAMC,CAAO,EAAIC,EAAS,EAAK,EAEhCC,EAA4BC,EAAoC,CACpE,aAAcP,CAChB,CAAC,EAEKQ,EAAmC,IAAI,KAC3CV,CACF,EAAE,mBAAmB,QAAS,CAC5B,MAAO,OACP,IAAK,UACL,KAAM,SACR,CAAC,EAEKW,EAAeC,EAA6B,CAChD,aAAcV,EACd,QAAS,CACP,QAASG,CACX,CACF,CAAC,EAEKQ,EACJC,EAA+C,CAC7C,aAAcZ,EACd,KAAMF,CACR,CAAC,EAGGe,EAAcC,EAA2B,CAC7C,aAAcd,EACd,wBAAAF,EACA,WAAYG,CACd,CAAC,EAMD,OAAOC,EAAO,CACZ,0BAAAI,EACA,aAAcG,GAAgB,CAC5B,KAAM,CACJ,WAAY,EACZ,SAAU,CAAC,CACb,CACF,EACA,yCAAAE,EACA,iCAAAH,EACA,aAAAT,EACA,wBAAAD,EACA,YAAae,GAAe,CAC1B,KAAM,CACJ,aAAc,SACd,WAAY,SACZ,SAAU,SACV,8BAA+B,SAC/B,6BAA8B,SAC9B,cAAe,SACf,eAAgB,EAClB,EACA,UAAW,GACX,QAAS,GACT,MAAO,IACT,EACA,WAAYZ,EACZ,KAAAE,EACA,aAhCmBN,EAAA,IAAM,CACzBO,EAASD,GAAS,CAACA,CAAI,CACzB,EAFqB,eAiCrB,CAAC,CACH,EA3EoC","names":["useState","PaidTimeOffContainer","__name","proposedTerminationDate","employeeName","employmentId","employment","render","open","setOpen","useState","leavePoliciesSummaryQuery","useTimeOffLeavePoliciesSummaryQuery","formattedProposedTerminationDate","timeoffQuery","usePaidTimeoffBreakdownQuery","bookedTimeBeforeAndAfterTerminationQuery","useBookedTimeoffBeforeAndAfterTerminationQuery","summaryData","useSummaryTimeOffDataQuery"]}
|
package/dist/chunk-NHZTYFOJ.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as Q}from"./chunk-6E5GX7W3.js";import{a as J}from"./chunk-LGUGZN57.js";import{a as U}from"./chunk-6DHV4GT6.js";import{a as W}from"./chunk-3DRSYLBM.js";import{a as Y}from"./chunk-A5NDO6CQ.js";import{a as L}from"./chunk-XGECMN4V.js";import{a as S,b as B,c as q,d as z,e as R}from"./chunk-5JQMTMHR.js";import{c as Z,d as K}from"./chunk-RTQ4GKPG.js";import{a as H}from"./chunk-ZXGAFQXW.js";import{a as u,b as I}from"./chunk-EGSUF7OD.js";import{a as N}from"./chunk-V334GIML.js";import{a as E}from"./chunk-2YTBWEC7.js";import{a as D}from"./chunk-P5QKSFOE.js";import{n as $}from"./chunk-T6Q7IALZ.js";import{a as A}from"./chunk-5BRMLRS7.js";import{a as w}from"./chunk-Z5WMKCRJ.js";import{d as O}from"./chunk-KQPDXXG3.js";import{d as _}from"./chunk-HRG5MSVG.js";import{a as v}from"./chunk-UQCSN47K.js";import{a as o}from"./chunk-P37U34EQ.js";import ge from"lodash.omitby";import Se from"lodash.isnull";import{format as x,isFuture as xe,parseISO as j,subDays as je}from"date-fns";import{useMemo as V}from"react";import Ve from"lodash.omit";import{useQuery as ye}from"@tanstack/react-query";var G=o(({query:t,options:e})=>{let{client:y}=O();return ye({queryKey:["payroll-calendars"],queryFn:o(()=>$({client:y,query:{year:t?.year,country_code:t?.countryCode}}),"queryFn"),enabled:e?.enabled,select:o(c=>c.data?.data?.payroll_calendars?.[0],"select")})},"usePayrollCalendars");import{isFuture as Te,isToday as Fe,parseISO as Me}from"date-fns";var X=o(t=>{if(!t)return!1;let e=Me(t);return Te(e)||Fe(e)},"isInProbationPeriod");import{Fragment as Pe,jsx as m,jsxs as ke}from"react/jsx-runtime";var mo=o(({employmentId:t,options:e,initialValues:y})=>{let{fieldValues:c,setFieldValues:ee,stepState:l,previousStep:oe,nextStep:ie}=A(B),{data:n}=N({employmentId:t}),{data:te}=G({query:{year:new Date().getFullYear().toString(),countryCode:n?.country?.code},options:{enabled:!!n?.country?.code}}),T=X(n?.probation_period_end_date),F=q(te),P=V(()=>T?x(new Date,"yyyy-MM-dd"):x(F,"yyyy-MM-dd"),[T,F]),M=!!(n?.provisional_start_date&&xe(j(n.provisional_start_date))),g=R({...y,...l.values?.employee_communication,...l.values?.termination_details,...l.values?.paid_time_off,...l.values?.additional_information},M),d=V(()=>({...g,...c}),[c,g]),k=z({minTerminationDate:F,isEmployeeInProbationPeriod:T,selectedDate:j(d.proposed_termination_date)}),ne=V(()=>{let s=H.data.schema.properties.termination_reason.oneOf,a=M?s.filter(i=>i.const==="cancellation_before_start_date"):s.filter(i=>i.const!=="cancellation_before_start_date");return{fields:{risk_assesment_info:S("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}),termination_reason:{...e?.jsfModify?.fields?.termination_reason,oneOf:a},proposed_termination_date_info:S("Proposed termination date",ke(Pe,{children:["In most cases, Remote 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.",m(I,{external:!0,zendeskId:u.terminationNoticePeriods,className:v("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:P,...d.termination_reason==="cancellation_before_start_date"&&n?.provisional_start_date?{maxDate:x(je(j(n.provisional_start_date),1),"yyyy-MM-dd")}:{},...k},...d.termination_reason==="cancellation_before_start_date"?{"x-jsf-errorMessage":{maximum:"The proposed termination date must be before the employee's start date."}}:{}},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:o(()=>{let i=e?.jsfModify?.fields?.paid_time_off_info?.["x-jsf-presentation"]?.Component;return m(J,{employeeName:n?.basic_information?.name,proposedTerminationDate:d.proposed_termination_date,employmentId:t,employment:n,render:r=>i?m(i,{...r}):m(Q,{...r})})},"Component")}},acknowledge_termination_procedure_info:{...e?.jsfModify?.fields?.acknowledge_termination_procedure_info,"x-jsf-presentation":{...e?.jsfModify?.fields?.acknowledge_termination_procedure_info?.["x-jsf-presentation"],Component:o(()=>{let i=e?.jsfModify?.fields?.acknowledge_termination_procedure_info?.["x-jsf-presentation"]?.Component;return m(U,{render:r=>i?m(i,{...r}):m(W,{...r})})},"Component")}},acknowledge_termination_procedure_fees_info:{...e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info,"x-jsf-presentation":{...e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info?.["x-jsf-presentation"],Component:o(()=>{let i={involuntaryOffboardingServiceChargeZendeskId:u.involuntaryOffboardingServiceCharge,reconciliationInvoiceZendeskId:u.reconciliationInvoice},r=e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info?.["x-jsf-presentation"]?.Component;return r?m(r,{...i}):m(Y,{...i})},"Component")}}}}},[n,t,d.proposed_termination_date,d.termination_reason,M,P,e?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info,e?.jsfModify?.fields?.acknowledge_termination_procedure_info,e?.jsfModify?.fields?.paid_time_off_info,e?.jsfModify?.fields?.proposed_termination_date,e?.jsfModify?.fields?.proposed_termination_date_info,e?.jsfModify?.fields?.risk_assesment_info,e?.jsfModify?.fields?.termination_reason,k]),{data:f,isLoading:ae}=K({formValues:d,jsfModify:{...e?.jsfModify,fields:{...e?.jsfModify?.fields,...ne?.fields}},step:l.currentStep.name}),re=D(L.data.schema),C=Z(),{mutateAsync:se}=E(C);async function me(s){if(!t)throw new Error("Employment id is missing");if(f){let a=await b(s,!0),{customer_informed_employee:i}=a,r=i==="yes"?{employee_awareness:{date:a.customer_informed_employee_date,note:a.customer_informed_employee_description}}:void 0,ce=await w(a,["agrees_to_pto_amount","confidential","customer_informed_employee","will_challenge_termination"]),pe=Ve(ce,"customer_informed_employee_date","customer_informed_employee_description"),_e=ge({...pe,...r},Se),p=a.timesheet_file??[],h=Array.isArray(p)&&p.length>0?{content:p[0].content,name:p[0].name}:void 0,ue={employment_id:t,termination_details:{..._e,timesheet_file:h||void 0},type:"termination"};return se(ue)}}o(me,"onSubmit");function de(){oe()}o(de,"back");function fe(){ie()}o(fe,"next");let le=Object.keys(c).length>0,b=o(async(s,a=!1)=>a?await _(s,re.fields,{isPartialValidation:!0}):f?await _(s,f?.fields,{isPartialValidation:!0}):{},"parseFormValues");return{employmentId:t,employment:n,fieldValues:d,isDirty:le,stepState:l,fields:f?.fields||[],isLoading:ae,isSubmitting:C.isPending,initialValues:g,handleValidation:o(async s=>{if(f){let a=await _(s,f?.fields);return f?.handleValidation(a)}return null},"handleValidation"),checkFieldUpdates:ee,parseFormValues:b,onSubmit:me,back:de,next:fe}},"useTermination");export{mo as a};
|
|
2
|
-
//# sourceMappingURL=chunk-NHZTYFOJ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Termination/hooks.tsx","../src/common/api/payroll-calendars.ts","../src/common/employment.ts"],"sourcesContent":["import { $TSFixMe } from '@/src/types/remoteFlows';\nimport { createHeadlessForm } from '@/src/common/createHeadlessForm';\nimport omitBy from 'lodash.omitby';\nimport isNull from 'lodash.isnull';\nimport { format, isFuture, parseISO, subDays } 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 EmployeeCommunicationFormValues,\n PaidTimeOffFormValues,\n TerminationDetailsFormValues,\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 {\n buildInitialValues,\n calculateMinTerminationDate,\n calculateProposedTerminationDateStatement,\n STEPS,\n} from '@/src/flows/Termination/utils';\nimport { jsonSchema } from '@/src/flows/Termination/json-schemas/jsonSchema';\nimport { terminationDetailsSchema } from '@/src/flows/Termination/json-schemas/terminationDetails';\nimport {\n useCreateTermination,\n useTerminationSchema,\n} from '@/src/flows/Termination/api';\nimport { createInformationField } from '@/src/components/form/jsf-utils/createFields';\nimport { cn } from '@/src/internals';\nimport { zendeskArticles } from '@/src/components/shared/zendesk-drawer/utils';\nimport { PaidTimeOff } from '@/src/flows/Termination/components/PaidTimeOff/PaidTimeOff';\nimport { PaidTimeOffContainer } from '@/src/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer';\nimport { useEmploymentQuery } from '@/src/common/api';\nimport { AcknowledgeInformationContainer } from '@/src/flows/Termination/components/AcknowledgeInformation/AcknowledgeInfomationContainer';\nimport { AcknowledgeInformation } from '@/src/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformation';\nimport { AcknowledgeInformationFees } from '@/src/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees';\nimport { usePayrollCalendars } from '@/src/common/api/payroll-calendars';\nimport { isInProbationPeriod } from '@/src/common/employment';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\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 } = useEmploymentQuery({ employmentId });\n\n const { data: payrollCalendars } = usePayrollCalendars({\n query: {\n year: new Date().getFullYear().toString(),\n countryCode: employment?.country?.code,\n },\n options: {\n enabled: Boolean(employment?.country?.code),\n },\n });\n\n const isEmployeeInProbationPeriod = isInProbationPeriod(\n employment?.probation_period_end_date,\n );\n\n const minTerminationDate = calculateMinTerminationDate(payrollCalendars);\n const minDate = useMemo(\n () =>\n isEmployeeInProbationPeriod\n ? format(new Date(), 'yyyy-MM-dd')\n : format(minTerminationDate, 'yyyy-MM-dd'),\n [isEmployeeInProbationPeriod, minTerminationDate],\n );\n\n const hasFutureStartDate = Boolean(\n employment?.provisional_start_date &&\n isFuture(parseISO(employment.provisional_start_date)),\n );\n\n const initialValues = buildInitialValues(\n {\n ...terminationInitialValues,\n ...stepState.values?.employee_communication,\n ...stepState.values?.termination_details,\n ...stepState.values?.paid_time_off,\n ...stepState.values?.additional_information,\n },\n hasFutureStartDate,\n );\n\n const formValues = useMemo(\n () => ({\n ...initialValues,\n ...fieldValues,\n }),\n [fieldValues, initialValues],\n );\n\n const proposedTerminationDateStatement =\n calculateProposedTerminationDateStatement({\n minTerminationDate,\n isEmployeeInProbationPeriod,\n selectedDate: parseISO(formValues.proposed_termination_date),\n });\n\n const customFields = useMemo(() => {\n const originalTerminationReasonOptions =\n terminationDetailsSchema.data.schema.properties.termination_reason.oneOf;\n\n const terminationReasonOptions = hasFutureStartDate\n ? originalTerminationReasonOptions.filter(\n (option: $TSFixMe) =>\n option.const === 'cancellation_before_start_date',\n )\n : originalTerminationReasonOptions.filter(\n (option: $TSFixMe) =>\n option.const !== 'cancellation_before_start_date',\n );\n\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 termination_reason: {\n ...(options?.jsfModify?.fields?.termination_reason as $TSFixMe),\n oneOf: terminationReasonOptions,\n },\n proposed_termination_date_info: createInformationField(\n 'Proposed termination date',\n <>\n In most cases, Remote 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 external\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: minDate,\n ...(formValues.termination_reason ===\n 'cancellation_before_start_date' &&\n employment?.provisional_start_date\n ? {\n maxDate: format(\n subDays(parseISO(employment.provisional_start_date), 1),\n 'yyyy-MM-dd',\n ),\n }\n : {}),\n ...proposedTerminationDateStatement,\n },\n ...(formValues.termination_reason === 'cancellation_before_start_date'\n ? {\n 'x-jsf-errorMessage': {\n maximum:\n \"The proposed termination date must be before the employee's start date.\",\n },\n }\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 employment={employment}\n render={(props) => {\n if (CustomComponent) {\n return <CustomComponent {...props} />;\n }\n return <PaidTimeOff {...props} />;\n }}\n />\n );\n },\n },\n },\n acknowledge_termination_procedure_info: {\n ...(options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_info as $TSFixMe),\n 'x-jsf-presentation': {\n ...(\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_info as $TSFixMe\n )?.['x-jsf-presentation'],\n Component: () => {\n const CustomComponent = (\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_info as $TSFixMe\n )?.['x-jsf-presentation']?.Component;\n\n return (\n <AcknowledgeInformationContainer\n render={(props) => {\n if (CustomComponent) {\n return <CustomComponent {...props} />;\n }\n return <AcknowledgeInformation {...props} />;\n }}\n />\n );\n },\n },\n },\n acknowledge_termination_procedure_fees_info: {\n ...(options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_fees_info as $TSFixMe),\n 'x-jsf-presentation': {\n ...(\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_fees_info as $TSFixMe\n )?.['x-jsf-presentation'],\n Component: () => {\n const zendeskIds = {\n involuntaryOffboardingServiceChargeZendeskId:\n zendeskArticles.involuntaryOffboardingServiceCharge,\n reconciliationInvoiceZendeskId:\n zendeskArticles.reconciliationInvoice,\n };\n\n const CustomComponent = (\n options?.jsfModify?.fields\n ?.acknowledge_termination_procedure_fees_info as $TSFixMe\n )?.['x-jsf-presentation']?.Component;\n\n if (CustomComponent) {\n return <CustomComponent {...zendeskIds} />;\n }\n\n return <AcknowledgeInformationFees {...zendeskIds} />;\n },\n },\n },\n },\n };\n }, [\n employment,\n employmentId,\n formValues.proposed_termination_date,\n formValues.termination_reason,\n hasFutureStartDate,\n minDate,\n options?.jsfModify?.fields?.acknowledge_termination_procedure_fees_info,\n options?.jsfModify?.fields?.acknowledge_termination_procedure_info,\n options?.jsfModify?.fields?.paid_time_off_info,\n options?.jsfModify?.fields?.proposed_termination_date,\n options?.jsfModify?.fields?.proposed_termination_date_info,\n options?.jsfModify?.fields?.risk_assesment_info,\n options?.jsfModify?.fields?.termination_reason,\n proposedTerminationDateStatement,\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 const parsedValues = (await parseFormValues(\n values,\n true,\n )) as TerminationFormValues;\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 = await 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 files = (parsedValues.timesheet_file as $TSFixMe) ?? [];\n const timesheetFile =\n Array.isArray(files) && files.length > 0\n ? { content: files[0].content, name: files[0].name }\n : undefined;\n\n const terminationPayload: CreateOffboardingParams = {\n employment_id: employmentId,\n termination_details: {\n ...terminationDetails,\n timesheet_file: timesheetFile ? timesheetFile : undefined,\n },\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 const isDirty = Boolean(Object.keys(fieldValues).length > 0);\n\n const parseFormValues = async (\n values: TerminationFormValues,\n includeAllFields: boolean = false,\n ): Promise<\n | EmployeeCommunicationFormValues\n | TerminationDetailsFormValues\n | PaidTimeOffFormValues\n | TerminationFormValues\n > => {\n if (includeAllFields) {\n return (await parseJSFToValidate(values, entireTerminationSchema.fields, {\n isPartialValidation: true,\n })) as TerminationFormValues;\n }\n\n if (terminationHeadlessForm) {\n return (await parseJSFToValidate(\n values,\n terminationHeadlessForm?.fields,\n {\n isPartialValidation: true,\n },\n )) as\n | EmployeeCommunicationFormValues\n | TerminationDetailsFormValues\n | PaidTimeOffFormValues;\n }\n return {} as $TSFixMe;\n };\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId,\n /**\n * Employment data\n */\n employment,\n\n /**\n * Current form field values, we use formValues to let the user know about all the current form values\n */\n fieldValues: formValues,\n\n /**\n * Indicates if the form is dirty\n */\n isDirty,\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: async (values: TerminationFormValues) => {\n if (terminationHeadlessForm) {\n const parsedValues = await 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: setFieldValues,\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues,\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 { useQuery } from '@tanstack/react-query';\nimport { getIndexEorPayrollCalendar } from '@/src/client';\nimport { useClient } from '@/src/context';\nimport { Client } from '@/src/client/client';\n\nexport const usePayrollCalendars = ({\n query,\n options,\n}: {\n query?: {\n year?: string;\n countryCode?: string;\n };\n options?: {\n enabled?: boolean;\n };\n}) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['payroll-calendars'],\n queryFn: () =>\n getIndexEorPayrollCalendar({\n client: client as Client,\n query: {\n year: query?.year,\n country_code: query?.countryCode,\n },\n }),\n enabled: options?.enabled,\n select: (data) => data.data?.data?.payroll_calendars?.[0],\n });\n};\n","import { isFuture, isToday, parseISO } from 'date-fns';\n\nexport const isInProbationPeriod = (probationEndDate: string | undefined) => {\n if (!probationEndDate) return false;\n\n const parsedProbationEndDate = parseISO(probationEndDate);\n\n return isFuture(parsedProbationEndDate) || isToday(parsedProbationEndDate);\n};\n"],"mappings":"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","names":["omitBy","isNull","format","isFuture","parseISO","subDays","useMemo","omit","useQuery","usePayrollCalendars","__name","query","options","client","useClient","useQuery","getIndexEorPayrollCalendar","data","isFuture","isToday","parseISO","isInProbationPeriod","__name","probationEndDate","parsedProbationEndDate","parseISO","isFuture","isToday","Fragment","jsx","jsxs","useTermination","__name","employmentId","options","terminationInitialValues","fieldValues","setFieldValues","stepState","previousStep","nextStep","useStepState","STEPS","employment","useEmploymentQuery","payrollCalendars","usePayrollCalendars","isEmployeeInProbationPeriod","isInProbationPeriod","minTerminationDate","calculateMinTerminationDate","minDate","useMemo","format","hasFutureStartDate","isFuture","parseISO","initialValues","buildInitialValues","formValues","proposedTerminationDateStatement","calculateProposedTerminationDateStatement","customFields","originalTerminationReasonOptions","terminationDetailsSchema","terminationReasonOptions","option","createInformationField","ZendeskTriggerButton","zendeskArticles","cn","subDays","CustomComponent","PaidTimeOffContainer","props","PaidTimeOff","AcknowledgeInformationContainer","AcknowledgeInformation","zendeskIds","AcknowledgeInformationFees","terminationHeadlessForm","isLoadingTermination","useTerminationSchema","entireTerminationSchema","createHeadlessForm","jsonSchema","createTermination","useCreateTermination","mutateAsync","mutationToPromise","onSubmit","values","parsedValues","parseFormValues","customerInformedEmployee","employeeAwareness","parsedRadioValues","parseFormRadioValues","normalizedValues","omit","terminationDetails","omitBy","isNull","files","timesheetFile","terminationPayload","back","next","isDirty","includeAllFields","parseJSFToValidate"]}
|
package/dist/chunk-RTQ4GKPG.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as v}from"./chunk-6CASSN2Z.js";import{a as h}from"./chunk-XFD3ULUF.js";import{a as i,b as m,c as b,d as g}from"./chunk-DFJNVGK4.js";import{b as D,d as T}from"./chunk-V334GIML.js";import{a as l}from"./chunk-P5QKSFOE.js";import{c}from"./chunk-T6Q7IALZ.js";import{d as p}from"./chunk-KQPDXXG3.js";import{a as n}from"./chunk-P37U34EQ.js";import{useMutation as C,useQuery as O}from"@tanstack/react-query";function P(o){return Object.entries(o).reduce((t,[a,r])=>({...t,[a]:b(r)}),{})}n(P,"formatTimeoffValues");function x(o){let t=o?.contract_details?.available_pto,a=o?.contract_details?.available_pto_type;return o?.country?.code==="USA"&&a==="unlimited"?{value:t===0?20:t}:a==="unlimited"&&t>0?{value:t}:{value:t}}n(x,"getMinimumStatutoryDays");function F(o,t){let a=0,r=0;return o.forEach(e=>{e.timeoff_days?.forEach(s=>{new Date(s.day)<=t?a+=s.hours||0:r+=s.hours||0})}),{before:a,after:r}}n(F,"getAllTimeoffHoursBeforeDate");var Q=n(({employmentId:o,date:t,options:a})=>D({employmentId:o,timeoffType:"paid_time_off",status:"approved",options:{enabled:a?.enabled,select:n(r=>{let{before:e,after:s}=F(r?.data?.timeoffs||[],new Date(t));return{bookedDaysBeforeTermination:m(e),bookedDaysAfterTermination:m(s)}},"select")}}),"useBookedTimeoffBeforeAndAfterTerminationQuery"),z=n(({employmentId:o,proposedTerminationDate:t,employment:a})=>{let{value:r=0}=x(a),e=T({employmentId:o}),s=Q({employmentId:o,date:t}),y=e.data?.data?.[0].annual_entitlement.type==="limited"?{days:e.data?.data?.[0].annual_entitlement.days,hours:e.data?.data?.[0].annual_entitlement.hours}:{days:r,hours:0},d={days:e.data?.data?.[0].booked.days||0,hours:e.data?.data?.[0].booked.hours||0},u=e.data?.data?.[0].current_entitlement.type==="limited"?{days:e.data?.data?.[0].current_entitlement.days||0,hours:e.data?.data?.[0].current_entitlement.hours||0}:{days:r,hours:0},f={days:e.data?.data?.[0].used.days||0,hours:e.data?.data?.[0].used.hours||0},_=s.data?.bookedDaysBeforeTermination||{days:0,hours:0},k=s.data?.bookedDaysAfterTermination||{days:0,hours:0},A=i(u.days,u.hours),B=i(f.days,f.hours),H=i(d.days,d.hours),S=A-B-H,E=g(m(S));return{data:{...P({entitledDays:y,bookedDays:d,usedDays:f,approvedDaysBeforeTermination:_,approvedDaysAfterTermination:k,remainingDays:E,currentEntitlementDays:u}),isUnlimitedPto:a?.contract_details?.available_pto_type==="unlimited"},isLoading:e.isLoading||s.isLoading,isError:e.isError||s.isError,error:e.error||s.error}},"useSummaryTimeOffDataQuery"),G=n(()=>{let{client:o}=p();return C({mutationFn:n(t=>c({client:o,body:t}),"mutationFn")})},"useCreateTermination"),W=n(({formValues:o,jsfModify:t,step:a})=>O({queryKey:["rmt-flows-termination-schema",a],queryFn:n(()=>v[a]??h,"queryFn"),select:n(({data:r})=>{let e=r?.schema||{};return l(e,o||{},{jsfModify:t})},"select")}),"useTerminationSchema");export{Q as a,z as b,G as c,W as d};
|
|
2
|
-
//# sourceMappingURL=chunk-RTQ4GKPG.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/flows/Termination/api.ts"],"sourcesContent":["import {\n CreateOffboardingParams,\n postCreateOffboarding,\n Timeoff,\n} from '@/src/client';\nimport {\n useTimeOffLeavePoliciesSummaryQuery,\n useTimeOffQuery,\n} from '@/src/common/api';\nimport { useClient } from '@/src/context';\nimport { Employment } from '@/src/flows/Onboarding/types';\nimport { defaultSchema } from '@/src/flows/Termination/json-schemas/defaultSchema';\nimport { TerminationFormValues } from '@/src/flows/Termination/types';\nimport { JSFModify } from '@/src/flows/types';\nimport {\n clampNegativeValuesIfApplicable,\n convertTotalHoursToDaysAndHours,\n convertToTotalHours,\n DaysAndHours,\n formatAsDecimal,\n} from '@/src/lib/time';\nimport { Client } from '@/src/client/client';\nimport { createHeadlessForm } from '@/src/common/createHeadlessForm';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { schema } from '@/src/flows/Termination/json-schemas/schema';\n\nfunction formatTimeoffValues(\n values: Record<string, DaysAndHours>,\n): Record<string, string> {\n return Object.entries(values).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: formatAsDecimal(value),\n }),\n {},\n );\n}\n\nfunction getMinimumStatutoryDays(employment?: Employment) {\n const availablePto = employment?.contract_details?.available_pto as number;\n const ptoType = employment?.contract_details?.available_pto_type as\n | 'unlimited'\n | 'fixed';\n const countryCode = employment?.country?.code;\n\n // Special handling for countries without statutory minimums\n if (countryCode === 'USA' && ptoType === 'unlimited') {\n // USA has no minimum, but Remote recommends 20\n return {\n value: availablePto === 0 ? 20 : availablePto,\n };\n }\n\n // For most countries with unlimited PTO, available_pto IS the statutory minimum\n if (ptoType === 'unlimited' && availablePto > 0) {\n return {\n value: availablePto,\n };\n }\n\n // For fixed PTO, it's just the entitlement\n return {\n value: availablePto,\n };\n}\n\nexport type BookedTimeoffBeforeDateResponse = {\n /*\n * The number of days booked before termination.\n */\n bookedDaysBeforeTermination: DaysAndHours;\n /*\n * The number of days booked after termination.\n */\n bookedDaysAfterTermination: DaysAndHours;\n};\n\nfunction getAllTimeoffHoursBeforeDate(\n timeoffs: Timeoff[],\n terminationDate: Date,\n): { before: number; after: number } {\n let before = 0;\n let after = 0;\n\n timeoffs.forEach((timeoff) => {\n timeoff.timeoff_days?.forEach((day) => {\n const dayDate = new Date(day.day);\n if (dayDate <= terminationDate) {\n // Day is on or before termination\n before += day.hours || 0;\n } else {\n // Day is after termination\n after += day.hours || 0;\n }\n });\n });\n\n return { before, after };\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 hook accounts for partial days and multiple timeoff_days per 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 const { before, after } = getAllTimeoffHoursBeforeDate(\n data?.data?.timeoffs || [],\n new Date(date),\n );\n\n return {\n bookedDaysBeforeTermination: convertTotalHoursToDaysAndHours(before),\n bookedDaysAfterTermination: convertTotalHoursToDaysAndHours(after),\n };\n },\n },\n });\n};\n\nexport type SummaryTimeOffDataResponse = {\n /*\n * The number of days entitled to per year.\n */\n entitledDays: string;\n /*\n * The number of days booked.\n */\n bookedDays: string;\n /*\n * The number of days used.\n */\n usedDays: string;\n /*\n * The number of days current entitlement, better than entitledDays because it takes into account the accrued value.\n */\n currentEntitlementDays: string;\n /*\n * The number of days approved before termination.\n */\n approvedDaysBeforeTermination: string;\n /*\n * The number of days approved after termination.\n */\n approvedDaysAfterTermination: string;\n /*\n * The number of days remaining.\n */\n remainingDays: string;\n /*\n * Whether the PTO is unlimited or not.\n */\n isUnlimitedPto: boolean;\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 employment,\n}: {\n employmentId: string;\n proposedTerminationDate: string;\n employment?: Employment;\n}) => {\n const { value: minimumStatutoryDays = 0 } =\n getMinimumStatutoryDays(employment);\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 ? {\n days: leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement\n .days,\n hours:\n leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement.hours,\n }\n : { days: minimumStatutoryDays, hours: 0 };\n\n const bookedDays = {\n days: leavePoliciesSummaryQuery.data?.data?.[0].booked.days || 0,\n hours: leavePoliciesSummaryQuery.data?.data?.[0].booked.hours || 0,\n };\n\n const currentEntitlementDays =\n leavePoliciesSummaryQuery.data?.data?.[0].current_entitlement.type ===\n 'limited'\n ? {\n days:\n leavePoliciesSummaryQuery.data?.data?.[0].current_entitlement\n .days || 0,\n hours:\n leavePoliciesSummaryQuery.data?.data?.[0].current_entitlement\n .hours || 0,\n }\n : { days: minimumStatutoryDays, hours: 0 };\n\n const usedDays = {\n days: leavePoliciesSummaryQuery.data?.data?.[0].used.days || 0,\n hours: leavePoliciesSummaryQuery.data?.data?.[0].used.hours || 0,\n };\n\n const approvedDaysBeforeTermination = bookedTimeQuery.data\n ?.bookedDaysBeforeTermination || { days: 0, hours: 0 };\n\n const approvedDaysAfterTermination = bookedTimeQuery.data\n ?.bookedDaysAfterTermination || { days: 0, hours: 0 };\n\n const totalCurrentEntitlementHours = convertToTotalHours(\n currentEntitlementDays.days,\n currentEntitlementDays.hours,\n );\n const totalUsedHours = convertToTotalHours(usedDays.days, usedDays.hours);\n const totalBookedHours = convertToTotalHours(\n bookedDays.days,\n bookedDays.hours,\n );\n\n const remainingHours =\n totalCurrentEntitlementHours - totalUsedHours - totalBookedHours;\n\n const remainingDays = clampNegativeValuesIfApplicable(\n convertTotalHoursToDaysAndHours(remainingHours),\n );\n\n const formattedValues = formatTimeoffValues({\n entitledDays,\n bookedDays,\n usedDays,\n approvedDaysBeforeTermination,\n approvedDaysAfterTermination,\n remainingDays,\n currentEntitlementDays,\n }) as Omit<SummaryTimeOffDataResponse, 'isUnlimitedPto'>;\n\n return {\n data: {\n ...formattedValues,\n isUnlimitedPto:\n employment?.contract_details?.available_pto_type === 'unlimited',\n },\n isLoading: leavePoliciesSummaryQuery.isLoading || bookedTimeQuery.isLoading,\n isError: leavePoliciesSummaryQuery.isError || bookedTimeQuery.isError,\n error: leavePoliciesSummaryQuery.error || bookedTimeQuery.error,\n };\n};\n\nexport const useCreateTermination = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: CreateOffboardingParams) => {\n return postCreateOffboarding({\n client: client as Client,\n body: payload,\n });\n },\n });\n};\n\nexport const useTerminationSchema = ({\n formValues,\n jsfModify,\n step,\n}: {\n formValues?: TerminationFormValues;\n jsfModify?: JSFModify;\n step?: string;\n}) => {\n return useQuery({\n queryKey: ['rmt-flows-termination-schema', step],\n queryFn: () => {\n return schema[step as keyof typeof schema] ?? defaultSchema;\n },\n select: ({ data }) => {\n const jsfSchema = data?.schema || {};\n return createHeadlessForm(jsfSchema, formValues || {}, {\n jsfModify,\n });\n },\n });\n};\n"],"mappings":"uVAuBA,OAAS,eAAAA,EAAa,YAAAC,MAAgB,wBAGtC,SAASC,EACPC,EACwB,CACxB,OAAO,OAAO,QAAQA,CAAM,EAAE,OAC5B,CAACC,EAAK,CAACC,EAAKC,CAAK,KAAO,CACtB,GAAGF,EACH,CAACC,CAAG,EAAGE,EAAgBD,CAAK,CAC9B,GACA,CAAC,CACH,CACF,CAVSE,EAAAN,EAAA,uBAYT,SAASO,EAAwBC,EAAyB,CACxD,IAAMC,EAAeD,GAAY,kBAAkB,cAC7CE,EAAUF,GAAY,kBAAkB,mBAM9C,OAHoBA,GAAY,SAAS,OAGrB,OAASE,IAAY,YAEhC,CACL,MAAOD,IAAiB,EAAI,GAAKA,CACnC,EAIEC,IAAY,aAAeD,EAAe,EACrC,CACL,MAAOA,CACT,EAIK,CACL,MAAOA,CACT,CACF,CA1BSH,EAAAC,EAAA,2BAuCT,SAASI,EACPC,EACAC,EACmC,CACnC,IAAIC,EAAS,EACTC,EAAQ,EAEZ,OAAAH,EAAS,QAASI,GAAY,CAC5BA,EAAQ,cAAc,QAASC,GAAQ,CACrB,IAAI,KAAKA,EAAI,GAAG,GACjBJ,EAEbC,GAAUG,EAAI,OAAS,EAGvBF,GAASE,EAAI,OAAS,CAE1B,CAAC,CACH,CAAC,EAEM,CAAE,OAAAH,EAAQ,MAAAC,CAAM,CACzB,CArBST,EAAAK,EAAA,gCAiCF,IAAMO,EAAiDZ,EAAA,CAAC,CAC7D,aAAAa,EACA,KAAAC,EACA,QAAAC,CACF,IAKSC,EAAiD,CACtD,aAAAH,EACA,YAAa,gBACb,OAAQ,WACR,QAAS,CACP,QAASE,GAAS,QAClB,OAAQf,EAACiB,GAAS,CAChB,GAAM,CAAE,OAAAT,EAAQ,MAAAC,CAAM,EAAIJ,EACxBY,GAAM,MAAM,UAAY,CAAC,EACzB,IAAI,KAAKH,CAAI,CACf,EAEA,MAAO,CACL,4BAA6BI,EAAgCV,CAAM,EACnE,2BAA4BU,EAAgCT,CAAK,CACnE,CACF,EAVQ,SAWV,CACF,CAAC,EA3B2D,kDA4EjDU,EAA6BnB,EAAA,CAAC,CACzC,aAAAa,EACA,wBAAAO,EACA,WAAAlB,CACF,IAIM,CACJ,GAAM,CAAE,MAAOmB,EAAuB,CAAE,EACtCpB,EAAwBC,CAAU,EAC9BoB,EAA4BC,EAAoC,CACpE,aAAAV,CACF,CAAC,EACKW,EAAkBZ,EAA+C,CACrE,aAAAC,EACA,KAAMO,CACR,CAAC,EAEKK,EACJH,EAA0B,MAAM,OAAO,CAAC,EAAE,mBAAmB,OAC7D,UACI,CACE,KAAMA,EAA0B,MAAM,OAAO,CAAC,EAAE,mBAC7C,KACH,MACEA,EAA0B,MAAM,OAAO,CAAC,EAAE,mBAAmB,KACjE,EACA,CAAE,KAAMD,EAAsB,MAAO,CAAE,EAEvCK,EAAa,CACjB,KAAMJ,EAA0B,MAAM,OAAO,CAAC,EAAE,OAAO,MAAQ,EAC/D,MAAOA,EAA0B,MAAM,OAAO,CAAC,EAAE,OAAO,OAAS,CACnE,EAEMK,EACJL,EAA0B,MAAM,OAAO,CAAC,EAAE,oBAAoB,OAC9D,UACI,CACE,KACEA,EAA0B,MAAM,OAAO,CAAC,EAAE,oBACvC,MAAQ,EACb,MACEA,EAA0B,MAAM,OAAO,CAAC,EAAE,oBACvC,OAAS,CAChB,EACA,CAAE,KAAMD,EAAsB,MAAO,CAAE,EAEvCO,EAAW,CACf,KAAMN,EAA0B,MAAM,OAAO,CAAC,EAAE,KAAK,MAAQ,EAC7D,MAAOA,EAA0B,MAAM,OAAO,CAAC,EAAE,KAAK,OAAS,CACjE,EAEMO,EAAgCL,EAAgB,MAClD,6BAA+B,CAAE,KAAM,EAAG,MAAO,CAAE,EAEjDM,EAA+BN,EAAgB,MACjD,4BAA8B,CAAE,KAAM,EAAG,MAAO,CAAE,EAEhDO,EAA+BC,EACnCL,EAAuB,KACvBA,EAAuB,KACzB,EACMM,EAAiBD,EAAoBJ,EAAS,KAAMA,EAAS,KAAK,EAClEM,EAAmBF,EACvBN,EAAW,KACXA,EAAW,KACb,EAEMS,EACJJ,EAA+BE,EAAiBC,EAE5CE,EAAgBC,EACpBnB,EAAgCiB,CAAc,CAChD,EAYA,MAAO,CACL,KAAM,CACJ,GAZoBzC,EAAoB,CAC1C,aAAA+B,EACA,WAAAC,EACA,SAAAE,EACA,8BAAAC,EACA,6BAAAC,EACA,cAAAM,EACA,uBAAAT,CACF,CAAC,EAKG,eACEzB,GAAY,kBAAkB,qBAAuB,WACzD,EACA,UAAWoB,EAA0B,WAAaE,EAAgB,UAClE,QAASF,EAA0B,SAAWE,EAAgB,QAC9D,MAAOF,EAA0B,OAASE,EAAgB,KAC5D,CACF,EAhG0C,8BAkG7Bc,EAAuBtC,EAAA,IAAM,CACxC,GAAM,CAAE,OAAAuC,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAY,CACjB,WAAYzC,EAAC0C,GACJC,EAAsB,CAC3B,OAAQJ,EACR,KAAMG,CACR,CAAC,EAJS,aAMd,CAAC,CACH,EAVoC,wBAYvBE,EAAuB5C,EAAA,CAAC,CACnC,WAAA6C,EACA,UAAAC,EACA,KAAAC,CACF,IAKSC,EAAS,CACd,SAAU,CAAC,+BAAgCD,CAAI,EAC/C,QAAS/C,EAAA,IACAiD,EAAOF,CAA2B,GAAKG,EADvC,WAGT,OAAQlD,EAAA,CAAC,CAAE,KAAAiB,CAAK,IAAM,CACpB,IAAMkC,EAAYlC,GAAM,QAAU,CAAC,EACnC,OAAOmC,EAAmBD,EAAWN,GAAc,CAAC,EAAG,CACrD,UAAAC,CACF,CAAC,CACH,EALQ,SAMV,CAAC,EApBiC","names":["useMutation","useQuery","formatTimeoffValues","values","acc","key","value","formatAsDecimal","__name","getMinimumStatutoryDays","employment","availablePto","ptoType","getAllTimeoffHoursBeforeDate","timeoffs","terminationDate","before","after","timeoff","day","useBookedTimeoffBeforeAndAfterTerminationQuery","employmentId","date","options","useTimeOffQuery","data","convertTotalHoursToDaysAndHours","useSummaryTimeOffDataQuery","proposedTerminationDate","minimumStatutoryDays","leavePoliciesSummaryQuery","useTimeOffLeavePoliciesSummaryQuery","bookedTimeQuery","entitledDays","bookedDays","currentEntitlementDays","usedDays","approvedDaysBeforeTermination","approvedDaysAfterTermination","totalCurrentEntitlementHours","convertToTotalHours","totalUsedHours","totalBookedHours","remainingHours","remainingDays","clampNegativeValuesIfApplicable","useCreateTermination","client","useClient","useMutation","payload","postCreateOffboarding","useTerminationSchema","formValues","jsfModify","step","useQuery","schema","defaultSchema","jsfSchema","createHeadlessForm"]}
|
package/dist/chunk-V334GIML.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{L as l,p as u,w as f,y as d}from"./chunk-T6Q7IALZ.js";import{d as o}from"./chunk-KQPDXXG3.js";import{a as t}from"./chunk-P37U34EQ.js";import{useMutation as y,useQuery as i}from"@tanstack/react-query";var k=t(({employmentId:e})=>{let{client:a}=o();return i({queryKey:["employment",e],retry:!1,queryFn:t(()=>d({client:a,headers:{Authorization:""},path:{employment_id:e}}),"queryFn"),enabled:!!e,select:t(({data:r})=>r?.data?.employment,"select")})},"useEmploymentQuery"),c=t(({employmentId:e,status:a,timeoffType:r,options:n})=>{let{client:s}=o();return i({queryKey:["timeoff",e,a],retry:!1,queryFn:t(()=>l({client:s,headers:{Authorization:""},query:{employment_id:e,status:a,timeoff_type:r}}),"queryFn"),select:t(({data:m})=>n?.select?.(m)??m,"select"),enabled:n?.enabled})},"useTimeOffQuery"),p=t((e,a)=>{let r=new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),n=new Date(a).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"});return`${r} \u2192 ${n}`},"formatDateRange"),P=t(({employmentId:e,options:a})=>c({employmentId:e,timeoffType:"paid_time_off",options:{enabled:a?.enabled,select:t(r=>({bookedDays:r?.data?.timeoffs?.reduce((n,s)=>n+(s?.timeoff_days?.length||0),0)||0,timeoffs:r?.data?.timeoffs?.map(n=>({status:n?.status,duration:n?.timeoff_days.length,startDate:n?.start_date,endDate:n?.end_date,formattedDate:p(n?.start_date,n?.end_date)}))||[]}),"select")}}),"usePaidTimeoffBreakdownQuery"),S=t(({employmentId:e})=>{let{client:a}=o();return i({queryKey:["timeoff-balance",e],retry:!1,queryFn:t(()=>f({client:a,headers:{Authorization:""},path:{employment_id:e}}),"queryFn"),select:t(({data:r})=>r,"select")})},"useTimeOffLeavePoliciesSummaryQuery"),x=t(()=>{let{client:e}=o();return y({mutationFn:t(a=>u({client:e,headers:{Authorization:""},body:a}),"mutationFn")})},"useMagicLink");export{k as a,c as b,P as c,S as d,x as e};
|
|
2
|
-
//# sourceMappingURL=chunk-V334GIML.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/api/index.ts"],"sourcesContent":["import {\n getIndexLeavePoliciesSummary,\n getIndexTimeoff,\n getShowEmployment,\n ListTimeoffResponse,\n MagicLinkParams,\n postGenerateMagicLink,\n TimeoffStatus,\n TimeoffType,\n} from '@/src/client';\nimport { useClient } from '@/src/context';\nimport { ContractAmendmentParams } from '@/src/flows/ContractAmendment/types';\n\nimport { Client } from '@/src/client/client';\nimport { useMutation, 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 enabled: !!employmentId,\n select: ({ data }) => data?.data?.employment,\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:\n data?.data?.timeoffs?.reduce(\n (acc, timeoff) => acc + (timeoff?.timeoff_days?.length || 0),\n 0,\n ) || 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\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\nexport const useMagicLink = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (params: MagicLinkParams) => {\n return postGenerateMagicLink({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: params,\n });\n },\n });\n};\n"],"mappings":"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","names":["useMutation","useQuery","useEmploymentQuery","__name","employmentId","client","useClient","useQuery","getShowEmployment","data","useTimeOffQuery","status","timeoffType","options","getIndexTimeoff","formatDateRange","startDate","endDate","start","end","usePaidTimeoffBreakdownQuery","acc","timeoff","useTimeOffLeavePoliciesSummaryQuery","getIndexLeavePoliciesSummary","useMagicLink","useMutation","params","postGenerateMagicLink"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|