@gusto/embedded-react-sdk 0.56.5 → 0.56.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -5
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -5
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -7
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -5
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -5
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +8 -10
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +6 -8
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -5
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -5
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +3 -5
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js +39 -0
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialogPresentation.js +54 -0
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialogPresentation.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js +56 -0
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PaySchedule.js +54 -39
- package/dist/components/Company/PaySchedule/management/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js +48 -32
- package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +8 -8
- package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js +74 -32
- package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -5
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -5
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -5
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js +17 -14
- package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -5
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js +27 -16
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js.map +1 -1
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js +25 -17
- package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/confirmWireDetailsStateMachine.js +6 -5
- package/dist/components/Payroll/ConfirmWireDetails/confirmWireDetailsStateMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +49 -48
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +55 -57
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +25 -18
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +49 -47
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +7 -9
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +13 -12
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/payrollDeductionAmountHook.js +36 -0
- package/dist/contexts/ApiProvider/payrollDeductionAmountHook.js.map +1 -0
- package/dist/i18n/I18n.js +1 -0
- package/dist/i18n/I18n.js.map +1 -1
- package/dist/i18n/en/Company.Management.AutoPilotDialog.json.js +22 -0
- package/dist/i18n/en/Company.Management.AutoPilotDialog.json.js.map +1 -0
- package/dist/package.json.js +1 -1
- package/dist/shared/constants.js +18 -15
- package/dist/shared/constants.js.map +1 -1
- package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.d.ts +11 -0
- package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialogPresentation.d.ts +17 -0
- package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/index.d.ts +1 -0
- package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.d.ts +22 -0
- package/dist/src/components/Company/PaySchedule/management/PaySchedule.d.ts +17 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +2 -0
- package/dist/src/components/Company/PaySchedule/management/index.d.ts +1 -1
- package/dist/src/components/Company/exports/companyManagement.d.ts +1 -1
- package/dist/src/components/Employee/EmployeeListFlow/EmployeeListFlow.d.ts +1 -1
- package/dist/src/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.d.ts +6 -0
- package/dist/src/components/Payroll/ConfirmWireDetails/confirmWireDetailsStateMachine.test.d.ts +1 -0
- package/dist/src/components/Payroll/PayrollList/__fixtures__/payrollListMocks.d.ts +67 -0
- package/dist/src/contexts/ApiProvider/payrollDeductionAmountHook.d.ts +12 -0
- package/dist/src/contexts/ApiProvider/payrollDeductionAmountHook.test.d.ts +1 -0
- package/dist/src/i18n/types.d.ts +81 -0
- package/dist/src/shared/constants.d.ts +6 -0
- package/docs/guides/endpoint-inventory.json +12 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePayrollConfigurationData.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData, useQuery, useQueryClient } from '@tanstack/react-query'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsPrepare } from '@gusto/embedded-api/funcs/payrollsPrepare'\nimport { employeesGet } from '@gusto/embedded-api/funcs/employeesGet'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport type { PayrollCategory } from '../payrollTypes'\nimport { derivePayrollCategory } from '../payrollTypes'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\ninterface UsePayrollConfigurationDataParams {\n companyId: string\n payrollId: string\n /** When true, don't call prepare and cancel any prepare already running. */\n disablePrepare?: boolean\n excludedEmployeeUuids?: string[]\n /**\n * When true, prepare is called without a roster. A transition payroll's roster is fixed by the\n * pay-schedule transition, so the API rejects any `employeeUuids` sent to prepare.\n */\n isTransitionPayroll?: boolean\n}\n\ninterface UsePayrollConfigurationDataReturn {\n employeeCompensations: PayrollEmployeeCompensationsType[]\n employeeDetails: Employee[]\n payPeriod: PayrollPayPeriodType | undefined\n paySchedule: PayScheduleShow | undefined\n payrollCategory: PayrollCategory\n pagination: PaginationControlProps\n isLoading: boolean\n isAlreadyProcessed: boolean\n refetch: () => Promise<void>\n}\n\n/** @internal */\nexport const PREPARE_QUERY_KEY = 'payroll-prepare'\nconst FIVE_MINUTES = 5 * 60 * 1000\nconst PREPARE_MAX_ATTEMPTS = 3\n\nconst isAlreadyProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\n/** @internal */\nexport function usePayrollConfigurationData({\n companyId,\n payrollId,\n disablePrepare = false,\n excludedEmployeeUuids = [],\n isTransitionPayroll = false,\n}: UsePayrollConfigurationDataParams): UsePayrollConfigurationDataReturn {\n const gustoClient = useGustoEmbeddedContext()\n const queryClient = useQueryClient()\n\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const [displayedEmployees, setDisplayedEmployees] = useState<Employee[]>([])\n const [isDataInSync, setIsDataInSync] = useState(false)\n const hasInitialDataRef = useRef(false)\n\n const { data: employeeData, isFetching: isFetchingEmployeeData } = useEmployeesList(\n {\n companyId,\n payrollUuid: payrollId,\n per: itemsPerPage,\n page: currentPage,\n sortBy: 'name',\n },\n { placeholderData: keepPreviousData },\n )\n\n const employeeDataRef = useRef(employeeData)\n employeeDataRef.current = employeeData\n\n const listedEmployeeUuids = useMemo(() => {\n return employeeData?.showEmployees?.map(e => e.uuid) || []\n }, [employeeData?.showEmployees])\n\n const missingExcludedUuids = useMemo(() => {\n const listedSet = new Set(listedEmployeeUuids)\n return excludedEmployeeUuids.filter(uuid => !listedSet.has(uuid))\n }, [excludedEmployeeUuids, listedEmployeeUuids])\n\n const employeeUuids = useMemo(() => {\n if (currentPage === 1) {\n return [...listedEmployeeUuids, ...missingExcludedUuids]\n }\n return listedEmployeeUuids\n }, [listedEmployeeUuids, missingExcludedUuids, currentPage])\n\n const employeeUuidsKey = useMemo(() => employeeUuids.join(','), [employeeUuids])\n\n const {\n data: prepareData,\n error: prepareError,\n isLoading: isPrepareLoading,\n isFetching: isPrepareFetching,\n } = useQuery({\n queryKey: [PREPARE_QUERY_KEY, payrollId, employeeUuidsKey],\n queryFn: async ({ signal }) => {\n const result = await payrollsPrepare(\n gustoClient,\n {\n companyId,\n payrollId,\n sortBy: 'last_name',\n requestBody: {\n employeeUuids: isTransitionPayroll ? undefined : employeeUuids,\n },\n },\n { signal },\n )\n\n if (!result.ok) {\n throw result.error\n }\n\n return result.value.payrollPrepared\n },\n enabled: employeeUuids.length > 0 && !disablePrepare,\n staleTime: FIVE_MINUTES,\n placeholderData: keepPreviousData,\n // An \"already processed\" prepare failure is terminal — retrying it wastes time. Other\n // errors (network blips, etc.) still get the standard retry treatment.\n retry: (failureCount, error) =>\n !isAlreadyProcessedError(error) && failureCount < PREPARE_MAX_ATTEMPTS,\n })\n\n const isAlreadyProcessed = isAlreadyProcessedError(prepareError)\n\n useEffect(() => {\n return () => {\n void queryClient.cancelQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }\n }, [queryClient, payrollId])\n\n useEffect(() => {\n if (disablePrepare) {\n void queryClient.cancelQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }\n }, [disablePrepare, queryClient, payrollId])\n\n const excludedUuidsKey = useMemo(() => missingExcludedUuids.join(','), [missingExcludedUuids])\n\n const { data: excludedEmployeeDetails } = useQuery({\n queryKey: ['excluded-employee-details', excludedUuidsKey],\n queryFn: async () => {\n const results = await Promise.all(\n missingExcludedUuids.map(uuid => employeesGet(gustoClient, { employeeId: uuid })),\n )\n const failedResult = results.find(result => !result.ok)\n if (failedResult) {\n throw failedResult.error\n }\n\n return results\n .filter(result => result.ok)\n .map(result => result.value.employee)\n .filter((e): e is Employee => e != null)\n },\n enabled: missingExcludedUuids.length > 0 && !disablePrepare,\n staleTime: FIVE_MINUTES,\n })\n\n const syncData = useCallback(() => {\n const currentEmployeeData = employeeDataRef.current\n if (!currentEmployeeData?.showEmployees || !prepareData?.employeeCompensations) {\n setIsDataInSync(false)\n return\n }\n\n const currentUuids = currentEmployeeData.showEmployees.map(e => e.uuid)\n const preparedUuids = new Set(prepareData.employeeCompensations.map(c => c.employeeUuid))\n const allListedInSync =\n currentUuids.length > 0 && currentUuids.every(uuid => preparedUuids.has(uuid))\n\n if (allListedInSync) {\n const mergedEmployees = [...currentEmployeeData.showEmployees]\n if (currentPage === 1 && excludedEmployeeDetails?.length) {\n const listedSet = new Set(currentUuids)\n for (const employee of excludedEmployeeDetails) {\n if (!listedSet.has(employee.uuid)) {\n mergedEmployees.push(employee)\n }\n }\n }\n setDisplayedEmployees(mergedEmployees)\n setIsDataInSync(true)\n hasInitialDataRef.current = true\n } else {\n setIsDataInSync(false)\n }\n }, [prepareData?.employeeCompensations, excludedEmployeeDetails, currentPage])\n\n useEffect(() => {\n syncData()\n }, [syncData])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: prepareData?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!prepareData?.payPeriod?.payScheduleUuid,\n },\n )\n\n const handleRefetch = useCallback(async () => {\n await queryClient.invalidateQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }, [queryClient, payrollId])\n\n const isInitialLoading = isPrepareLoading && !hasInitialDataRef.current\n const isPaginating = isPrepareFetching && hasInitialDataRef.current\n const isPaginationFetching = isFetchingEmployeeData || isPaginating || !isDataInSync\n const isLoading =\n isInitialLoading || isPayScheduleLoading || (!employeeData && isFetchingEmployeeData)\n\n const headers = employeeData?.httpMeta.response.headers ?? new Headers()\n const pagination: PaginationControlProps = getPaginationProps(headers, isPaginationFetching)\n\n return {\n employeeCompensations: prepareData?.employeeCompensations ?? [],\n employeeDetails: displayedEmployees,\n payPeriod: prepareData?.payPeriod,\n paySchedule: payScheduleData?.payScheduleShow,\n payrollCategory: derivePayrollCategory(prepareData ?? {}),\n pagination,\n isLoading,\n isAlreadyProcessed,\n refetch: handleRefetch,\n }\n}\n"],"names":["PREPARE_QUERY_KEY","FIVE_MINUTES","PREPARE_MAX_ATTEMPTS","isAlreadyProcessedError","error","UnprocessableEntityError","e","usePayrollConfigurationData","companyId","payrollId","disablePrepare","excludedEmployeeUuids","isTransitionPayroll","gustoClient","useGustoEmbeddedContext","queryClient","useQueryClient","currentPage","itemsPerPage","getPaginationProps","usePagination","displayedEmployees","setDisplayedEmployees","useState","isDataInSync","setIsDataInSync","hasInitialDataRef","useRef","employeeData","isFetchingEmployeeData","useEmployeesList","keepPreviousData","employeeDataRef","listedEmployeeUuids","useMemo","missingExcludedUuids","listedSet","uuid","employeeUuids","employeeUuidsKey","prepareData","prepareError","isPrepareLoading","isPrepareFetching","useQuery","signal","result","payrollsPrepare","failureCount","isAlreadyProcessed","useEffect","excludedUuidsKey","excludedEmployeeDetails","results","employeesGet","failedResult","syncData","useCallback","currentEmployeeData","currentUuids","preparedUuids","c","mergedEmployees","employee","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","handleRefetch","isInitialLoading","isPaginating","isPaginationFetching","isLoading","headers","pagination","derivePayrollCategory"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePayrollConfigurationData.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport { keepPreviousData, useQuery, useQueryClient } from '@tanstack/react-query'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { payrollsPrepare } from '@gusto/embedded-api/funcs/payrollsPrepare'\nimport { employeesGet } from '@gusto/embedded-api/funcs/employeesGet'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport type { PayrollCategory } from '../payrollTypes'\nimport { derivePayrollCategory } from '../payrollTypes'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\n\ninterface UsePayrollConfigurationDataParams {\n companyId: string\n payrollId: string\n /** When true, don't call prepare and cancel any prepare already running. */\n disablePrepare?: boolean\n excludedEmployeeUuids?: string[]\n /**\n * When true, prepare is called without a roster. A transition payroll's roster is fixed by the\n * pay-schedule transition, so the API rejects any `employeeUuids` sent to prepare.\n */\n isTransitionPayroll?: boolean\n}\n\ninterface UsePayrollConfigurationDataReturn {\n employeeCompensations: PayrollEmployeeCompensationsType[]\n employeeDetails: Employee[]\n payPeriod: PayrollPayPeriodType | undefined\n paySchedule: PayScheduleShow | undefined\n payrollCategory: PayrollCategory\n pagination: PaginationControlProps\n isLoading: boolean\n isAlreadyProcessed: boolean\n refetch: () => Promise<void>\n}\n\n/** @internal */\nexport const PREPARE_QUERY_KEY = 'payroll-prepare'\nconst FIVE_MINUTES = 5 * 60 * 1000\nconst PREPARE_MAX_ATTEMPTS = 3\n\nconst isAlreadyProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\n/** @internal */\nexport function usePayrollConfigurationData({\n companyId,\n payrollId,\n disablePrepare = false,\n excludedEmployeeUuids = [],\n isTransitionPayroll = false,\n}: UsePayrollConfigurationDataParams): UsePayrollConfigurationDataReturn {\n const gustoClient = useGustoEmbeddedContext()\n const queryClient = useQueryClient()\n\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage: 25,\n })\n const [displayedEmployees, setDisplayedEmployees] = useState<Employee[]>([])\n const [isDataInSync, setIsDataInSync] = useState(false)\n const hasInitialDataRef = useRef(false)\n\n const { data: employeeData, isFetching: isFetchingEmployeeData } = useEmployeesList(\n {\n companyId,\n payrollUuid: payrollId,\n per: itemsPerPage,\n page: currentPage,\n sortBy: 'name',\n },\n { placeholderData: keepPreviousData, throwOnError: true },\n )\n\n const employeeDataRef = useRef(employeeData)\n employeeDataRef.current = employeeData\n\n const listedEmployeeUuids = useMemo(() => {\n return employeeData?.showEmployees?.map(e => e.uuid) || []\n }, [employeeData?.showEmployees])\n\n const missingExcludedUuids = useMemo(() => {\n const listedSet = new Set(listedEmployeeUuids)\n return excludedEmployeeUuids.filter(uuid => !listedSet.has(uuid))\n }, [excludedEmployeeUuids, listedEmployeeUuids])\n\n const employeeUuids = useMemo(() => {\n if (currentPage === 1) {\n return [...listedEmployeeUuids, ...missingExcludedUuids]\n }\n return listedEmployeeUuids\n }, [listedEmployeeUuids, missingExcludedUuids, currentPage])\n\n const employeeUuidsKey = useMemo(() => employeeUuids.join(','), [employeeUuids])\n\n const {\n data: prepareData,\n error: prepareError,\n isLoading: isPrepareLoading,\n isFetching: isPrepareFetching,\n } = useQuery({\n queryKey: [PREPARE_QUERY_KEY, payrollId, employeeUuidsKey],\n queryFn: async ({ signal }) => {\n const result = await payrollsPrepare(\n gustoClient,\n {\n companyId,\n payrollId,\n sortBy: 'last_name',\n requestBody: {\n employeeUuids: isTransitionPayroll ? undefined : employeeUuids,\n },\n },\n { signal },\n )\n\n if (!result.ok) {\n throw result.error\n }\n\n return result.value.payrollPrepared\n },\n enabled: employeeUuids.length > 0 && !disablePrepare,\n staleTime: FIVE_MINUTES,\n placeholderData: keepPreviousData,\n throwOnError: error => !isAlreadyProcessedError(error),\n // An \"already processed\" prepare failure is terminal — retrying it wastes time. Other\n // errors (network blips, etc.) still get the standard retry treatment.\n retry: (failureCount, error) =>\n !isAlreadyProcessedError(error) && failureCount < PREPARE_MAX_ATTEMPTS,\n })\n\n const isAlreadyProcessed = isAlreadyProcessedError(prepareError)\n\n useEffect(() => {\n return () => {\n void queryClient.cancelQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }\n }, [queryClient, payrollId])\n\n useEffect(() => {\n if (disablePrepare) {\n void queryClient.cancelQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }\n }, [disablePrepare, queryClient, payrollId])\n\n const excludedUuidsKey = useMemo(() => missingExcludedUuids.join(','), [missingExcludedUuids])\n\n const { data: excludedEmployeeDetails } = useQuery({\n queryKey: ['excluded-employee-details', excludedUuidsKey],\n queryFn: async () => {\n const results = await Promise.all(\n missingExcludedUuids.map(uuid => employeesGet(gustoClient, { employeeId: uuid })),\n )\n const failedResult = results.find(result => !result.ok)\n if (failedResult) {\n throw failedResult.error\n }\n\n return results\n .filter(result => result.ok)\n .map(result => result.value.employee)\n .filter((e): e is Employee => e != null)\n },\n enabled: missingExcludedUuids.length > 0 && !disablePrepare,\n staleTime: FIVE_MINUTES,\n })\n\n const syncData = useCallback(() => {\n const currentEmployeeData = employeeDataRef.current\n if (!currentEmployeeData?.showEmployees || !prepareData?.employeeCompensations) {\n setIsDataInSync(false)\n return\n }\n\n const currentUuids = currentEmployeeData.showEmployees.map(e => e.uuid)\n const preparedUuids = new Set(prepareData.employeeCompensations.map(c => c.employeeUuid))\n const allListedInSync =\n currentUuids.length > 0 && currentUuids.every(uuid => preparedUuids.has(uuid))\n\n if (allListedInSync) {\n const mergedEmployees = [...currentEmployeeData.showEmployees]\n if (currentPage === 1 && excludedEmployeeDetails?.length) {\n const listedSet = new Set(currentUuids)\n for (const employee of excludedEmployeeDetails) {\n if (!listedSet.has(employee.uuid)) {\n mergedEmployees.push(employee)\n }\n }\n }\n setDisplayedEmployees(mergedEmployees)\n setIsDataInSync(true)\n hasInitialDataRef.current = true\n } else {\n setIsDataInSync(false)\n }\n }, [prepareData?.employeeCompensations, excludedEmployeeDetails, currentPage])\n\n useEffect(() => {\n syncData()\n }, [syncData])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: prepareData?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!prepareData?.payPeriod?.payScheduleUuid,\n },\n )\n\n const handleRefetch = useCallback(async () => {\n await queryClient.invalidateQueries({\n queryKey: [PREPARE_QUERY_KEY, payrollId],\n })\n }, [queryClient, payrollId])\n\n const isInitialLoading = isPrepareLoading && !hasInitialDataRef.current\n const isPaginating = isPrepareFetching && hasInitialDataRef.current\n const isPaginationFetching = isFetchingEmployeeData || isPaginating || !isDataInSync\n const isLoading =\n isInitialLoading || isPayScheduleLoading || (!employeeData && isFetchingEmployeeData)\n\n const headers = employeeData?.httpMeta.response.headers ?? new Headers()\n const pagination: PaginationControlProps = getPaginationProps(headers, isPaginationFetching)\n\n return {\n employeeCompensations: prepareData?.employeeCompensations ?? [],\n employeeDetails: displayedEmployees,\n payPeriod: prepareData?.payPeriod,\n paySchedule: payScheduleData?.payScheduleShow,\n payrollCategory: derivePayrollCategory(prepareData ?? {}),\n pagination,\n isLoading,\n isAlreadyProcessed,\n refetch: handleRefetch,\n }\n}\n"],"names":["PREPARE_QUERY_KEY","FIVE_MINUTES","PREPARE_MAX_ATTEMPTS","isAlreadyProcessedError","error","UnprocessableEntityError","e","usePayrollConfigurationData","companyId","payrollId","disablePrepare","excludedEmployeeUuids","isTransitionPayroll","gustoClient","useGustoEmbeddedContext","queryClient","useQueryClient","currentPage","itemsPerPage","getPaginationProps","usePagination","displayedEmployees","setDisplayedEmployees","useState","isDataInSync","setIsDataInSync","hasInitialDataRef","useRef","employeeData","isFetchingEmployeeData","useEmployeesList","keepPreviousData","employeeDataRef","listedEmployeeUuids","useMemo","missingExcludedUuids","listedSet","uuid","employeeUuids","employeeUuidsKey","prepareData","prepareError","isPrepareLoading","isPrepareFetching","useQuery","signal","result","payrollsPrepare","failureCount","isAlreadyProcessed","useEffect","excludedUuidsKey","excludedEmployeeDetails","results","employeesGet","failedResult","syncData","useCallback","currentEmployeeData","currentUuids","preparedUuids","c","mergedEmployees","employee","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","handleRefetch","isInitialLoading","isPaginating","isPaginationFetching","isLoading","headers","pagination","derivePayrollCategory"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { state as
|
|
2
|
-
import { PayrollOverviewContextual as c, PayrollConfigurationContextual as
|
|
1
|
+
import { state as d, transition as t, reduce as r, guard as m } from "robot3";
|
|
2
|
+
import { PayrollOverviewContextual as c, PayrollConfigurationContextual as s, PayrollReceiptsContextual as P, PayrollEditEmployeeContextual as u, PayrollBlockerContextual as b } from "../PayrollFlow/PayrollFlowComponents.js";
|
|
3
3
|
import { componentEvents as i } from "../../../shared/constants.js";
|
|
4
|
-
import { updateBreadcrumbs as l, patchBreadcrumbsHeader as p, hideBreadcrumb as
|
|
4
|
+
import { updateBreadcrumbs as l, patchBreadcrumbsHeader as p, hideBreadcrumb as f } from "../../../helpers/breadcrumbHelpers.js";
|
|
5
5
|
import { createBreadcrumbNavigateTransition as v } from "../../Common/FlowBreadcrumbs/breadcrumbTransitionHelpers.js";
|
|
6
|
-
const n = v(),
|
|
6
|
+
const n = v(), I = (e = !1) => ({
|
|
7
7
|
configuration: {
|
|
8
8
|
parent: null,
|
|
9
9
|
item: {
|
|
@@ -15,7 +15,7 @@ const n = v(), B = (e = !1) => ({
|
|
|
15
15
|
startDate: o.payPeriod?.startDate ?? "",
|
|
16
16
|
endDate: o.payPeriod?.endDate ?? ""
|
|
17
17
|
}),
|
|
18
|
-
component:
|
|
18
|
+
component: s,
|
|
19
19
|
alerts: void 0
|
|
20
20
|
}))
|
|
21
21
|
}
|
|
@@ -60,10 +60,10 @@ const n = v(), B = (e = !1) => ({
|
|
|
60
60
|
namespace: "Payroll.PayrollBlocker"
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
}),
|
|
63
|
+
}), g = t(
|
|
64
64
|
i.RUN_PAYROLL_CALCULATED,
|
|
65
65
|
"overview",
|
|
66
|
-
|
|
66
|
+
r(
|
|
67
67
|
(e, a) => ({
|
|
68
68
|
...l("overview", e, {
|
|
69
69
|
startDate: a.payload.payPeriod?.startDate ?? "",
|
|
@@ -71,20 +71,17 @@ const n = v(), B = (e = !1) => ({
|
|
|
71
71
|
}),
|
|
72
72
|
component: c,
|
|
73
73
|
payPeriod: a.payload.payPeriod ?? e.payPeriod,
|
|
74
|
-
alerts: a.payload.alert ? [
|
|
75
|
-
...(e.alerts ?? []).filter((o) => o.alertKey !== "progressSaved"),
|
|
76
|
-
{ ...a.payload.alert, alertKey: "progressSaved" }
|
|
77
|
-
] : e.alerts,
|
|
74
|
+
alerts: a.payload.alert ? [{ ...a.payload.alert, alertKey: "progressSaved" }] : void 0,
|
|
78
75
|
ctaConfig: {
|
|
79
76
|
labelKey: "exitFlowCta",
|
|
80
77
|
namespace: "Payroll.PayrollOverview"
|
|
81
78
|
}
|
|
82
79
|
})
|
|
83
80
|
)
|
|
84
|
-
),
|
|
81
|
+
), L = t(
|
|
85
82
|
i.RUN_PAYROLL_ALREADY_PROCESSED,
|
|
86
83
|
"overview",
|
|
87
|
-
|
|
84
|
+
r(
|
|
88
85
|
(e, a) => {
|
|
89
86
|
const o = a.payload.payPeriod ?? e.payPeriod;
|
|
90
87
|
return {
|
|
@@ -94,10 +91,7 @@ const n = v(), B = (e = !1) => ({
|
|
|
94
91
|
}),
|
|
95
92
|
component: c,
|
|
96
93
|
payPeriod: o,
|
|
97
|
-
alerts: a.payload.alert ? [
|
|
98
|
-
...(e.alerts ?? []).filter((m) => m.alertKey !== "alreadyProcessed"),
|
|
99
|
-
{ ...a.payload.alert, alertKey: "alreadyProcessed" }
|
|
100
|
-
] : e.alerts,
|
|
94
|
+
alerts: a.payload.alert ? [{ ...a.payload.alert, alertKey: "alreadyProcessed" }] : void 0,
|
|
101
95
|
ctaConfig: {
|
|
102
96
|
labelKey: "exitFlowCta",
|
|
103
97
|
namespace: "Payroll.PayrollOverview"
|
|
@@ -105,10 +99,10 @@ const n = v(), B = (e = !1) => ({
|
|
|
105
99
|
};
|
|
106
100
|
}
|
|
107
101
|
)
|
|
108
|
-
),
|
|
102
|
+
), D = t(
|
|
109
103
|
i.RUN_PAYROLL_EMPLOYEE_EDIT,
|
|
110
104
|
"editEmployee",
|
|
111
|
-
|
|
105
|
+
r(
|
|
112
106
|
(e, a) => ({
|
|
113
107
|
...l("editEmployee", e, {
|
|
114
108
|
firstName: a.payload.firstName,
|
|
@@ -116,64 +110,67 @@ const n = v(), B = (e = !1) => ({
|
|
|
116
110
|
startDate: e.payPeriod?.startDate ?? "",
|
|
117
111
|
endDate: e.payPeriod?.endDate ?? ""
|
|
118
112
|
}),
|
|
119
|
-
component:
|
|
113
|
+
component: u,
|
|
120
114
|
employeeId: a.payload.employeeId,
|
|
121
115
|
firstName: a.payload.firstName,
|
|
122
116
|
lastName: a.payload.lastName,
|
|
117
|
+
alerts: void 0,
|
|
123
118
|
ctaConfig: null
|
|
124
119
|
})
|
|
125
120
|
)
|
|
126
|
-
),
|
|
121
|
+
), E = t(
|
|
127
122
|
i.RUN_PAYROLL_BLOCKERS_VIEW_ALL,
|
|
128
123
|
"blockers",
|
|
129
|
-
|
|
124
|
+
r((e) => ({
|
|
130
125
|
...l("blockers", e),
|
|
131
|
-
component:
|
|
126
|
+
component: b,
|
|
127
|
+
alerts: void 0
|
|
132
128
|
}))
|
|
133
|
-
), y = (e) => !e.hasPayrollSubmissionStarted,
|
|
129
|
+
), y = (e) => !e.hasPayrollSubmissionStarted, C = t(
|
|
134
130
|
i.RUN_PAYROLL_EDIT,
|
|
135
131
|
"configuration",
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
m(y),
|
|
133
|
+
r((e) => ({
|
|
138
134
|
...l("configuration", e, {
|
|
139
135
|
startDate: e.payPeriod?.startDate ?? "",
|
|
140
136
|
endDate: e.payPeriod?.endDate ?? ""
|
|
141
137
|
}),
|
|
142
|
-
component:
|
|
138
|
+
component: s,
|
|
143
139
|
alerts: void 0,
|
|
144
140
|
ctaConfig: {
|
|
145
141
|
labelKey: "exitFlowCta",
|
|
146
142
|
namespace: "Payroll.PayrollConfiguration"
|
|
147
143
|
}
|
|
148
144
|
}))
|
|
149
|
-
),
|
|
145
|
+
), N = t(
|
|
150
146
|
i.RUN_PAYROLL_SUBMITTING,
|
|
151
147
|
"overview",
|
|
152
|
-
|
|
153
|
-
...
|
|
148
|
+
r((e) => ({
|
|
149
|
+
...f("configuration", e),
|
|
154
150
|
hasPayrollSubmissionStarted: !0
|
|
155
151
|
}))
|
|
156
|
-
),
|
|
152
|
+
), R = t(
|
|
157
153
|
i.RUN_PAYROLL_RECEIPT_GET,
|
|
158
154
|
"receipts",
|
|
159
|
-
|
|
155
|
+
r((e) => ({
|
|
160
156
|
...l("receipts", e, {
|
|
161
157
|
startDate: e.payPeriod?.startDate ?? "",
|
|
162
158
|
endDate: e.payPeriod?.endDate ?? ""
|
|
163
159
|
}),
|
|
164
|
-
component:
|
|
160
|
+
component: P,
|
|
165
161
|
alerts: void 0,
|
|
166
162
|
ctaConfig: {
|
|
167
163
|
labelKey: "exitFlowCta",
|
|
168
164
|
namespace: "Payroll.PayrollReceipts"
|
|
169
165
|
}
|
|
170
166
|
}))
|
|
171
|
-
),
|
|
167
|
+
), _ = t(
|
|
172
168
|
i.RUN_PAYROLL_EMPLOYEE_SAVED,
|
|
173
169
|
"configuration",
|
|
174
|
-
|
|
170
|
+
r((e) => ({
|
|
175
171
|
...p(e, { currentBreadcrumbId: "configuration" }),
|
|
176
|
-
component:
|
|
172
|
+
component: s,
|
|
173
|
+
alerts: void 0,
|
|
177
174
|
employeeId: void 0,
|
|
178
175
|
firstName: void 0,
|
|
179
176
|
lastName: void 0,
|
|
@@ -182,12 +179,13 @@ const n = v(), B = (e = !1) => ({
|
|
|
182
179
|
namespace: "Payroll.PayrollConfiguration"
|
|
183
180
|
}
|
|
184
181
|
}))
|
|
185
|
-
),
|
|
182
|
+
), w = t(
|
|
186
183
|
i.RUN_PAYROLL_EMPLOYEE_CANCELLED,
|
|
187
184
|
"configuration",
|
|
188
|
-
|
|
185
|
+
r((e) => ({
|
|
189
186
|
...p(e, { currentBreadcrumbId: "configuration" }),
|
|
190
|
-
component:
|
|
187
|
+
component: s,
|
|
188
|
+
alerts: void 0,
|
|
191
189
|
employeeId: void 0,
|
|
192
190
|
firstName: void 0,
|
|
193
191
|
lastName: void 0,
|
|
@@ -196,37 +194,37 @@ const n = v(), B = (e = !1) => ({
|
|
|
196
194
|
namespace: "Payroll.PayrollConfiguration"
|
|
197
195
|
}
|
|
198
196
|
}))
|
|
199
|
-
),
|
|
200
|
-
configuration:
|
|
197
|
+
), B = {
|
|
198
|
+
configuration: d(
|
|
201
199
|
n("configuration"),
|
|
200
|
+
g,
|
|
202
201
|
L,
|
|
203
202
|
D,
|
|
204
|
-
E
|
|
205
|
-
C
|
|
203
|
+
E
|
|
206
204
|
),
|
|
207
|
-
overview:
|
|
205
|
+
overview: d(
|
|
208
206
|
n("configuration", y),
|
|
209
|
-
R,
|
|
210
207
|
N,
|
|
211
|
-
|
|
208
|
+
C,
|
|
209
|
+
R
|
|
212
210
|
),
|
|
213
|
-
editEmployee:
|
|
211
|
+
editEmployee: d(
|
|
214
212
|
n("configuration"),
|
|
215
|
-
|
|
216
|
-
|
|
213
|
+
_,
|
|
214
|
+
w
|
|
217
215
|
),
|
|
218
|
-
receipts:
|
|
216
|
+
receipts: d(
|
|
219
217
|
n("configuration"),
|
|
220
218
|
n("overview")
|
|
221
219
|
),
|
|
222
|
-
blockers:
|
|
220
|
+
blockers: d(n("configuration"))
|
|
223
221
|
};
|
|
224
222
|
export {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
223
|
+
L as alreadyProcessedTransition,
|
|
224
|
+
E as blockersViewAllTransition,
|
|
225
|
+
g as calculatedTransition,
|
|
226
|
+
D as employeeEditTransition,
|
|
227
|
+
I as getPayrollExecutionBreadcrumbsNodes,
|
|
228
|
+
B as payrollExecutionMachine
|
|
231
229
|
};
|
|
232
230
|
//# sourceMappingURL=payrollExecutionMachine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payrollExecutionMachine.js","sources":["../../../../src/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.ts"],"sourcesContent":["import { transition, reduce, state, guard } from 'robot3'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayrollFlowAlert } from '../PayrollFlow/PayrollFlowComponents'\nimport {\n PayrollConfigurationContextual,\n PayrollOverviewContextual,\n PayrollEditEmployeeContextual,\n PayrollReceiptsContextual,\n PayrollBlockerContextual,\n type PayrollFlowContextInterface,\n} from '../PayrollFlow/PayrollFlowComponents'\nimport { componentEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport {\n hideBreadcrumb,\n patchBreadcrumbsHeader,\n updateBreadcrumbs,\n} from '@/helpers/breadcrumbHelpers'\nimport type {\n BreadcrumbNode,\n BreadcrumbNodes,\n} from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { createBreadcrumbNavigateTransition } from '@/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers'\n\ntype PayrollEventPayloads = {\n [componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT]: {\n payrollId: string\n employeeId: string\n firstName: string\n lastName: string\n }\n [componentEvents.RUN_PAYROLL_CALCULATED]: {\n payrollUuid: string\n alert?: PayrollFlowAlert\n payPeriod?: PayrollPayPeriodType\n }\n [componentEvents.RUN_PAYROLL_ALREADY_PROCESSED]: {\n payrollId: string\n alert?: PayrollFlowAlert\n payPeriod?: PayrollPayPeriodType\n }\n [componentEvents.BREADCRUMB_NAVIGATE]: {\n key: string\n onNavigate: (ctx: PayrollFlowContextInterface) => PayrollFlowContextInterface\n }\n [componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL]: undefined\n [componentEvents.RUN_PAYROLL_EDIT]: undefined\n}\n\nconst breadcrumbNavigateTransition =\n createBreadcrumbNavigateTransition<PayrollFlowContextInterface>()\n\ntype BreadcrumbNodeKeys = 'configuration' | 'overview' | 'editEmployee' | 'receipts' | 'blockers'\n\n/** @internal */\nexport const getPayrollExecutionBreadcrumbsNodes = (\n isDismissal: boolean = false,\n): BreadcrumbNodes => {\n const configLabel = isDismissal ? 'breadcrumbLabelDismissal' : 'breadcrumbLabel'\n\n return {\n configuration: {\n parent: null,\n item: {\n id: 'configuration',\n label: configLabel,\n namespace: 'Payroll.PayrollConfiguration',\n onNavigate: ((ctx: PayrollFlowContextInterface) => ({\n ...updateBreadcrumbs('configuration', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollConfigurationContextual,\n alerts: undefined,\n })) as (context: unknown) => unknown,\n },\n },\n overview: {\n parent: 'configuration',\n item: {\n id: 'overview',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollOverview',\n onNavigate: ((ctx: PayrollFlowContextInterface) => ({\n ...updateBreadcrumbs('overview', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n alerts: undefined,\n })) as (context: unknown) => unknown,\n },\n },\n editEmployee: {\n parent: 'configuration',\n item: {\n id: 'editEmployee',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollEditEmployee',\n },\n },\n receipts: {\n parent: 'overview',\n item: {\n id: 'receipts',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollReceipts',\n },\n },\n blockers: {\n parent: 'configuration',\n item: {\n id: 'blockers',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollBlocker',\n },\n },\n } satisfies Record<BreadcrumbNodeKeys, BreadcrumbNode>\n}\n\n/** @internal */\nexport const calculatedTransition = transition(\n componentEvents.RUN_PAYROLL_CALCULATED,\n 'overview',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollEventPayloads, typeof componentEvents.RUN_PAYROLL_CALCULATED>,\n ): PayrollFlowContextInterface => {\n return {\n ...updateBreadcrumbs('overview', ctx, {\n startDate: ev.payload.payPeriod?.startDate ?? '',\n endDate: ev.payload.payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n payPeriod: ev.payload.payPeriod ?? ctx.payPeriod,\n alerts: ev.payload.alert\n ? [\n ...(ctx.alerts ?? []).filter(a => a.alertKey !== 'progressSaved'),\n { ...ev.payload.alert, alertKey: 'progressSaved' as const },\n ]\n : ctx.alerts,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollOverview',\n },\n }\n },\n ),\n)\n\n/** @internal */\nexport const alreadyProcessedTransition = transition(\n componentEvents.RUN_PAYROLL_ALREADY_PROCESSED,\n 'overview',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollEventPayloads,\n typeof componentEvents.RUN_PAYROLL_ALREADY_PROCESSED\n >,\n ): PayrollFlowContextInterface => {\n const payPeriod = ev.payload.payPeriod ?? ctx.payPeriod\n return {\n ...updateBreadcrumbs('overview', ctx, {\n startDate: payPeriod?.startDate ?? '',\n endDate: payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n payPeriod,\n alerts: ev.payload.alert\n ? [\n ...(ctx.alerts ?? []).filter(a => a.alertKey !== 'alreadyProcessed'),\n { ...ev.payload.alert, alertKey: 'alreadyProcessed' as const },\n ]\n : ctx.alerts,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollOverview',\n },\n }\n },\n ),\n)\n\n/** @internal */\nexport const employeeEditTransition = transition(\n componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT,\n 'editEmployee',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollEventPayloads, typeof componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT>,\n ): PayrollFlowContextInterface => {\n return {\n ...updateBreadcrumbs('editEmployee', ctx, {\n firstName: ev.payload.firstName,\n lastName: ev.payload.lastName,\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollEditEmployeeContextual,\n employeeId: ev.payload.employeeId,\n firstName: ev.payload.firstName,\n lastName: ev.payload.lastName,\n ctaConfig: null,\n }\n },\n ),\n)\n\n/** @internal */\nexport const blockersViewAllTransition = transition(\n componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL,\n 'blockers',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => {\n return {\n ...updateBreadcrumbs('blockers', ctx),\n component: PayrollBlockerContextual,\n }\n }),\n)\n\nconst notSubmitted = (ctx: PayrollFlowContextInterface) => !ctx.hasPayrollSubmissionStarted\n\nconst editPayrollTransition = transition(\n componentEvents.RUN_PAYROLL_EDIT,\n 'configuration',\n guard(notSubmitted),\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => {\n return {\n ...updateBreadcrumbs('configuration', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollConfigurationContextual,\n alerts: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollConfiguration',\n },\n }\n }),\n)\n\nconst payrollSubmittingTransition = transition(\n componentEvents.RUN_PAYROLL_SUBMITTING,\n 'overview',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...hideBreadcrumb('configuration', ctx),\n hasPayrollSubmissionStarted: true,\n })),\n)\n\nconst receiptGetTransition = transition(\n componentEvents.RUN_PAYROLL_RECEIPT_GET,\n 'receipts',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('receipts', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollReceiptsContextual,\n alerts: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollReceipts',\n },\n })),\n)\n\nconst employeeSavedTransition = transition(\n componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED,\n 'configuration',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: 'configuration' }),\n component: PayrollConfigurationContextual,\n employeeId: undefined,\n firstName: undefined,\n lastName: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollConfiguration',\n },\n })),\n)\n\nconst employeeCancelledTransition = transition(\n componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED,\n 'configuration',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: 'configuration' }),\n component: PayrollConfigurationContextual,\n employeeId: undefined,\n firstName: undefined,\n lastName: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollConfiguration',\n },\n })),\n)\n\n/** @internal */\nexport const payrollExecutionMachine = {\n configuration: state<MachineTransition>(\n breadcrumbNavigateTransition('configuration'),\n calculatedTransition,\n alreadyProcessedTransition,\n employeeEditTransition,\n blockersViewAllTransition,\n ),\n overview: state<MachineTransition>(\n breadcrumbNavigateTransition('configuration', notSubmitted),\n payrollSubmittingTransition,\n editPayrollTransition,\n receiptGetTransition,\n ),\n editEmployee: state<MachineTransition>(\n breadcrumbNavigateTransition('configuration'),\n employeeSavedTransition,\n employeeCancelledTransition,\n ),\n receipts: state<MachineTransition>(\n breadcrumbNavigateTransition('configuration'),\n breadcrumbNavigateTransition('overview'),\n ),\n blockers: state<MachineTransition>(breadcrumbNavigateTransition('configuration')),\n}\n"],"names":["breadcrumbNavigateTransition","createBreadcrumbNavigateTransition","getPayrollExecutionBreadcrumbsNodes","isDismissal","ctx","updateBreadcrumbs","PayrollConfigurationContextual","PayrollOverviewContextual","calculatedTransition","transition","componentEvents","reduce","ev","a","alreadyProcessedTransition","payPeriod","employeeEditTransition","PayrollEditEmployeeContextual","blockersViewAllTransition","PayrollBlockerContextual","notSubmitted","editPayrollTransition","guard","payrollSubmittingTransition","hideBreadcrumb","receiptGetTransition","PayrollReceiptsContextual","employeeSavedTransition","patchBreadcrumbsHeader","employeeCancelledTransition","payrollExecutionMachine","state"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"payrollExecutionMachine.js","sources":["../../../../src/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.ts"],"sourcesContent":["import { transition, reduce, state, guard } from 'robot3'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayrollFlowAlert } from '../PayrollFlow/PayrollFlowComponents'\nimport {\n PayrollConfigurationContextual,\n PayrollOverviewContextual,\n PayrollEditEmployeeContextual,\n PayrollReceiptsContextual,\n PayrollBlockerContextual,\n type PayrollFlowContextInterface,\n} from '../PayrollFlow/PayrollFlowComponents'\nimport { componentEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport {\n hideBreadcrumb,\n patchBreadcrumbsHeader,\n updateBreadcrumbs,\n} from '@/helpers/breadcrumbHelpers'\nimport type {\n BreadcrumbNode,\n BreadcrumbNodes,\n} from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { createBreadcrumbNavigateTransition } from '@/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers'\n\ntype PayrollEventPayloads = {\n [componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT]: {\n payrollId: string\n employeeId: string\n firstName: string\n lastName: string\n }\n [componentEvents.RUN_PAYROLL_CALCULATED]: {\n payrollUuid: string\n alert?: PayrollFlowAlert\n payPeriod?: PayrollPayPeriodType\n }\n [componentEvents.RUN_PAYROLL_ALREADY_PROCESSED]: {\n payrollId: string\n alert?: PayrollFlowAlert\n payPeriod?: PayrollPayPeriodType\n }\n [componentEvents.BREADCRUMB_NAVIGATE]: {\n key: string\n onNavigate: (ctx: PayrollFlowContextInterface) => PayrollFlowContextInterface\n }\n [componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL]: undefined\n [componentEvents.RUN_PAYROLL_EDIT]: undefined\n}\n\nconst breadcrumbNavigateTransition =\n createBreadcrumbNavigateTransition<PayrollFlowContextInterface>()\n\ntype BreadcrumbNodeKeys = 'configuration' | 'overview' | 'editEmployee' | 'receipts' | 'blockers'\n\n/** @internal */\nexport const getPayrollExecutionBreadcrumbsNodes = (\n isDismissal: boolean = false,\n): BreadcrumbNodes => {\n const configLabel = isDismissal ? 'breadcrumbLabelDismissal' : 'breadcrumbLabel'\n\n return {\n configuration: {\n parent: null,\n item: {\n id: 'configuration',\n label: configLabel,\n namespace: 'Payroll.PayrollConfiguration',\n onNavigate: ((ctx: PayrollFlowContextInterface) => ({\n ...updateBreadcrumbs('configuration', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollConfigurationContextual,\n alerts: undefined,\n })) as (context: unknown) => unknown,\n },\n },\n overview: {\n parent: 'configuration',\n item: {\n id: 'overview',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollOverview',\n onNavigate: ((ctx: PayrollFlowContextInterface) => ({\n ...updateBreadcrumbs('overview', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n alerts: undefined,\n })) as (context: unknown) => unknown,\n },\n },\n editEmployee: {\n parent: 'configuration',\n item: {\n id: 'editEmployee',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollEditEmployee',\n },\n },\n receipts: {\n parent: 'overview',\n item: {\n id: 'receipts',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollReceipts',\n },\n },\n blockers: {\n parent: 'configuration',\n item: {\n id: 'blockers',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollBlocker',\n },\n },\n } satisfies Record<BreadcrumbNodeKeys, BreadcrumbNode>\n}\n\n/** @internal */\nexport const calculatedTransition = transition(\n componentEvents.RUN_PAYROLL_CALCULATED,\n 'overview',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollEventPayloads, typeof componentEvents.RUN_PAYROLL_CALCULATED>,\n ): PayrollFlowContextInterface => {\n return {\n ...updateBreadcrumbs('overview', ctx, {\n startDate: ev.payload.payPeriod?.startDate ?? '',\n endDate: ev.payload.payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n payPeriod: ev.payload.payPeriod ?? ctx.payPeriod,\n alerts: ev.payload.alert\n ? [{ ...ev.payload.alert, alertKey: 'progressSaved' as const }]\n : undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollOverview',\n },\n }\n },\n ),\n)\n\n/** @internal */\nexport const alreadyProcessedTransition = transition(\n componentEvents.RUN_PAYROLL_ALREADY_PROCESSED,\n 'overview',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollEventPayloads,\n typeof componentEvents.RUN_PAYROLL_ALREADY_PROCESSED\n >,\n ): PayrollFlowContextInterface => {\n const payPeriod = ev.payload.payPeriod ?? ctx.payPeriod\n return {\n ...updateBreadcrumbs('overview', ctx, {\n startDate: payPeriod?.startDate ?? '',\n endDate: payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n payPeriod,\n alerts: ev.payload.alert\n ? [{ ...ev.payload.alert, alertKey: 'alreadyProcessed' as const }]\n : undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollOverview',\n },\n }\n },\n ),\n)\n\n/** @internal */\nexport const employeeEditTransition = transition(\n componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT,\n 'editEmployee',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollEventPayloads, typeof componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT>,\n ): PayrollFlowContextInterface => {\n return {\n ...updateBreadcrumbs('editEmployee', ctx, {\n firstName: ev.payload.firstName,\n lastName: ev.payload.lastName,\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollEditEmployeeContextual,\n employeeId: ev.payload.employeeId,\n firstName: ev.payload.firstName,\n lastName: ev.payload.lastName,\n alerts: undefined,\n ctaConfig: null,\n }\n },\n ),\n)\n\n/** @internal */\nexport const blockersViewAllTransition = transition(\n componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL,\n 'blockers',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => {\n return {\n ...updateBreadcrumbs('blockers', ctx),\n component: PayrollBlockerContextual,\n alerts: undefined,\n }\n }),\n)\n\nconst notSubmitted = (ctx: PayrollFlowContextInterface) => !ctx.hasPayrollSubmissionStarted\n\nconst editPayrollTransition = transition(\n componentEvents.RUN_PAYROLL_EDIT,\n 'configuration',\n guard(notSubmitted),\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => {\n return {\n ...updateBreadcrumbs('configuration', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollConfigurationContextual,\n alerts: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollConfiguration',\n },\n }\n }),\n)\n\nconst payrollSubmittingTransition = transition(\n componentEvents.RUN_PAYROLL_SUBMITTING,\n 'overview',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...hideBreadcrumb('configuration', ctx),\n hasPayrollSubmissionStarted: true,\n })),\n)\n\nconst receiptGetTransition = transition(\n componentEvents.RUN_PAYROLL_RECEIPT_GET,\n 'receipts',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('receipts', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollReceiptsContextual,\n alerts: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollReceipts',\n },\n })),\n)\n\nconst employeeSavedTransition = transition(\n componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED,\n 'configuration',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: 'configuration' }),\n component: PayrollConfigurationContextual,\n alerts: undefined,\n employeeId: undefined,\n firstName: undefined,\n lastName: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollConfiguration',\n },\n })),\n)\n\nconst employeeCancelledTransition = transition(\n componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED,\n 'configuration',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: 'configuration' }),\n component: PayrollConfigurationContextual,\n alerts: undefined,\n employeeId: undefined,\n firstName: undefined,\n lastName: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollConfiguration',\n },\n })),\n)\n\n/** @internal */\nexport const payrollExecutionMachine = {\n configuration: state<MachineTransition>(\n breadcrumbNavigateTransition('configuration'),\n calculatedTransition,\n alreadyProcessedTransition,\n employeeEditTransition,\n blockersViewAllTransition,\n ),\n overview: state<MachineTransition>(\n breadcrumbNavigateTransition('configuration', notSubmitted),\n payrollSubmittingTransition,\n editPayrollTransition,\n receiptGetTransition,\n ),\n editEmployee: state<MachineTransition>(\n breadcrumbNavigateTransition('configuration'),\n employeeSavedTransition,\n employeeCancelledTransition,\n ),\n receipts: state<MachineTransition>(\n breadcrumbNavigateTransition('configuration'),\n breadcrumbNavigateTransition('overview'),\n ),\n blockers: state<MachineTransition>(breadcrumbNavigateTransition('configuration')),\n}\n"],"names":["breadcrumbNavigateTransition","createBreadcrumbNavigateTransition","getPayrollExecutionBreadcrumbsNodes","isDismissal","ctx","updateBreadcrumbs","PayrollConfigurationContextual","PayrollOverviewContextual","calculatedTransition","transition","componentEvents","reduce","ev","alreadyProcessedTransition","payPeriod","employeeEditTransition","PayrollEditEmployeeContextual","blockersViewAllTransition","PayrollBlockerContextual","notSubmitted","editPayrollTransition","guard","payrollSubmittingTransition","hideBreadcrumb","receiptGetTransition","PayrollReceiptsContextual","employeeSavedTransition","patchBreadcrumbsHeader","employeeCancelledTransition","payrollExecutionMachine","state"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { state as
|
|
2
|
-
import { PayrollReceiptsContextual as
|
|
1
|
+
import { state as r, transition as t, reduce as o, guard as v } from "robot3";
|
|
2
|
+
import { PayrollReceiptsContextual as L, PayrollBlockerContextual as R, PayrollLandingContextual as b, PayrollOverviewContextual as C } from "./PayrollFlowComponents.js";
|
|
3
3
|
import { PayrollExecutionFlowContextual as g } from "./PayrollExecutionFlowContextual.js";
|
|
4
4
|
import { TransitionFlowContextual as _ } from "./TransitionFlowContextual.js";
|
|
5
5
|
import { OffCycleFlowContextual as E } from "./OffCycleFlowContextual.js";
|
|
@@ -16,6 +16,7 @@ const I = {
|
|
|
16
16
|
onNavigate: ((e) => ({
|
|
17
17
|
...c(e, { currentBreadcrumbId: void 0 }),
|
|
18
18
|
component: b,
|
|
19
|
+
alerts: void 0,
|
|
19
20
|
payrollUuid: void 0,
|
|
20
21
|
executionInitialState: void 0
|
|
21
22
|
}))
|
|
@@ -50,6 +51,7 @@ function y(e) {
|
|
|
50
51
|
return {
|
|
51
52
|
...c(e, { currentBreadcrumbId: void 0 }),
|
|
52
53
|
component: b,
|
|
54
|
+
alerts: void 0,
|
|
53
55
|
payrollUuid: void 0,
|
|
54
56
|
payPeriod: void 0,
|
|
55
57
|
executionInitialState: void 0
|
|
@@ -59,6 +61,7 @@ function P(e, a, i) {
|
|
|
59
61
|
return {
|
|
60
62
|
...e,
|
|
61
63
|
component: g,
|
|
64
|
+
alerts: void 0,
|
|
62
65
|
payrollUuid: a.payload.payrollUuid,
|
|
63
66
|
showPayrollCancelledAlert: !1,
|
|
64
67
|
executionInitialState: i
|
|
@@ -67,11 +70,11 @@ function P(e, a, i) {
|
|
|
67
70
|
const u = t(
|
|
68
71
|
l.BREADCRUMB_NAVIGATE,
|
|
69
72
|
"landing",
|
|
70
|
-
|
|
73
|
+
v(
|
|
71
74
|
(e, a) => a.payload.key === "landing"
|
|
72
75
|
),
|
|
73
76
|
o(y)
|
|
74
|
-
),
|
|
77
|
+
), n = t(
|
|
75
78
|
l.PAYROLL_EXIT_FLOW,
|
|
76
79
|
"landing",
|
|
77
80
|
o(y)
|
|
@@ -94,6 +97,7 @@ const u = t(
|
|
|
94
97
|
endDate: i?.endDate ?? ""
|
|
95
98
|
}),
|
|
96
99
|
component: C,
|
|
100
|
+
alerts: void 0,
|
|
97
101
|
payrollUuid: a.payload.payrollUuid ?? e.payrollUuid,
|
|
98
102
|
payPeriod: i,
|
|
99
103
|
executionInitialState: void 0,
|
|
@@ -105,7 +109,7 @@ const u = t(
|
|
|
105
109
|
}
|
|
106
110
|
)
|
|
107
111
|
), B = {
|
|
108
|
-
landing:
|
|
112
|
+
landing: r(
|
|
109
113
|
t(
|
|
110
114
|
l.RUN_PAYROLL_SELECTED,
|
|
111
115
|
"execution",
|
|
@@ -125,7 +129,8 @@ const u = t(
|
|
|
125
129
|
"blockers",
|
|
126
130
|
o((e) => ({
|
|
127
131
|
...m("blockers", e),
|
|
128
|
-
component:
|
|
132
|
+
component: R,
|
|
133
|
+
alerts: void 0,
|
|
129
134
|
showPayrollCancelledAlert: !1,
|
|
130
135
|
ctaConfig: {
|
|
131
136
|
labelKey: "exitFlowCta",
|
|
@@ -148,6 +153,7 @@ const u = t(
|
|
|
148
153
|
(e, a) => ({
|
|
149
154
|
...c(e, { currentBreadcrumbId: void 0 }),
|
|
150
155
|
component: _,
|
|
156
|
+
alerts: void 0,
|
|
151
157
|
transitionStartDate: a.payload.startDate,
|
|
152
158
|
transitionEndDate: a.payload.endDate,
|
|
153
159
|
transitionPayScheduleUuid: a.payload.payScheduleUuid,
|
|
@@ -161,18 +167,19 @@ const u = t(
|
|
|
161
167
|
o((e) => ({
|
|
162
168
|
...c(e, { currentBreadcrumbId: void 0 }),
|
|
163
169
|
component: E,
|
|
170
|
+
alerts: void 0,
|
|
164
171
|
showPayrollCancelledAlert: !1
|
|
165
172
|
}))
|
|
166
173
|
)
|
|
167
174
|
),
|
|
168
|
-
execution:
|
|
175
|
+
execution: r(
|
|
169
176
|
u,
|
|
170
|
-
|
|
177
|
+
n,
|
|
171
178
|
d,
|
|
172
179
|
p
|
|
173
180
|
),
|
|
174
|
-
blockers:
|
|
175
|
-
submittedOverview:
|
|
181
|
+
blockers: r(s("landing"), n),
|
|
182
|
+
submittedOverview: r(
|
|
176
183
|
s("landing"),
|
|
177
184
|
t(
|
|
178
185
|
l.RUN_PAYROLL_RECEIPT_GET,
|
|
@@ -182,7 +189,7 @@ const u = t(
|
|
|
182
189
|
startDate: e.payPeriod?.startDate ?? "",
|
|
183
190
|
endDate: e.payPeriod?.endDate ?? ""
|
|
184
191
|
}),
|
|
185
|
-
component:
|
|
192
|
+
component: L,
|
|
186
193
|
alerts: void 0,
|
|
187
194
|
ctaConfig: {
|
|
188
195
|
labelKey: "exitFlowCta",
|
|
@@ -191,21 +198,21 @@ const u = t(
|
|
|
191
198
|
}))
|
|
192
199
|
),
|
|
193
200
|
d,
|
|
194
|
-
|
|
201
|
+
n
|
|
195
202
|
),
|
|
196
|
-
submittedReceipts:
|
|
203
|
+
submittedReceipts: r(
|
|
197
204
|
s("landing"),
|
|
198
|
-
|
|
205
|
+
n
|
|
199
206
|
),
|
|
200
|
-
transition:
|
|
207
|
+
transition: r(
|
|
201
208
|
u,
|
|
202
|
-
|
|
209
|
+
n,
|
|
203
210
|
d,
|
|
204
211
|
p
|
|
205
212
|
),
|
|
206
|
-
offCycle:
|
|
213
|
+
offCycle: r(
|
|
207
214
|
u,
|
|
208
|
-
|
|
215
|
+
n,
|
|
209
216
|
d,
|
|
210
217
|
p
|
|
211
218
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payrollStateMachine.js","sources":["../../../../src/components/Payroll/PayrollFlow/payrollStateMachine.ts"],"sourcesContent":["import { state, transition, reduce, guard } from 'robot3'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayrollExecutionInitialState } from '../PayrollExecutionFlow'\nimport {\n PayrollLandingContextual,\n PayrollBlockerContextual,\n PayrollOverviewContextual,\n PayrollReceiptsContextual,\n type PayrollFlowContextInterface,\n} from './PayrollFlowComponents'\nimport { PayrollExecutionFlowContextual } from './PayrollExecutionFlowContextual'\nimport { TransitionFlowContextual } from './TransitionFlowContextual'\nimport { OffCycleFlowContextual } from './OffCycleFlowContextual'\nimport { componentEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport { patchBreadcrumbsHeader, updateBreadcrumbs } from '@/helpers/breadcrumbHelpers'\nimport type { BreadcrumbNodes } from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { createBreadcrumbNavigateTransition } from '@/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers'\n\ntype PayrollFlowEventPayloads = {\n [componentEvents.RUN_PAYROLL_SELECTED]: {\n payrollUuid: string\n }\n [componentEvents.REVIEW_PAYROLL]: {\n payrollUuid: string\n }\n [componentEvents.RUN_PAYROLL_PROCESSED]: {\n payPeriod?: PayrollPayPeriodType\n payrollUuid?: string\n }\n [componentEvents.RUN_TRANSITION_PAYROLL]: {\n startDate: string\n endDate: string\n payScheduleUuid: string\n }\n}\n\n/** @internal */\nexport const payrollFlowBreadcrumbsNodes: BreadcrumbNodes = {\n landing: {\n parent: null,\n item: {\n id: 'landing',\n label: 'breadcrumbs.landing',\n namespace: 'Payroll.PayrollLanding',\n onNavigate: ((ctx: PayrollFlowContextInterface) => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PayrollLandingContextual,\n payrollUuid: undefined,\n executionInitialState: undefined,\n })) as (context: unknown) => unknown,\n },\n },\n blockers: {\n parent: 'landing',\n item: {\n id: 'blockers',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollBlocker',\n },\n },\n submittedOverview: {\n parent: 'landing',\n item: {\n id: 'submittedOverview',\n label: 'breadcrumbs.overview',\n namespace: 'Payroll.PayrollLanding',\n },\n },\n submittedReceipts: {\n parent: 'landing',\n item: {\n id: 'submittedReceipts',\n label: 'breadcrumbs.receipt',\n namespace: 'Payroll.PayrollLanding',\n },\n },\n}\n\nconst breadcrumbNavigateTransition =\n createBreadcrumbNavigateTransition<PayrollFlowContextInterface>()\n\nfunction toLandingReducer(ctx: PayrollFlowContextInterface): PayrollFlowContextInterface {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PayrollLandingContextual,\n payrollUuid: undefined,\n payPeriod: undefined,\n executionInitialState: undefined,\n }\n}\n\nfunction toExecutionReducer(\n ctx: PayrollFlowContextInterface,\n ev: { payload: { payrollUuid: string } },\n executionInitialState: PayrollExecutionInitialState,\n): PayrollFlowContextInterface {\n return {\n ...ctx,\n component: PayrollExecutionFlowContextual,\n payrollUuid: ev.payload.payrollUuid,\n showPayrollCancelledAlert: false,\n executionInitialState,\n }\n}\n\nconst landingBreadcrumbNavigateTransition = transition(\n componentEvents.BREADCRUMB_NAVIGATE,\n 'landing',\n guard(\n (_ctx: PayrollFlowContextInterface, ev: { payload: { key: string } }) =>\n ev.payload.key === 'landing',\n ),\n reduce(toLandingReducer),\n)\n\nconst exitFlowTransition = transition(\n componentEvents.PAYROLL_EXIT_FLOW,\n 'landing',\n reduce(toLandingReducer),\n)\n\nconst cancelledToLandingTransition = transition(\n componentEvents.RUN_PAYROLL_CANCELLED,\n 'landing',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...toLandingReducer(ctx),\n showPayrollCancelledAlert: true,\n })),\n)\n\nconst processedToSubmittedOverviewTransition = transition(\n componentEvents.RUN_PAYROLL_PROCESSED,\n 'submittedOverview',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollFlowEventPayloads, typeof componentEvents.RUN_PAYROLL_PROCESSED>,\n ): PayrollFlowContextInterface => {\n const payPeriod = ev.payload.payPeriod ?? ctx.payPeriod\n return {\n ...updateBreadcrumbs('submittedOverview', ctx, {\n startDate: payPeriod?.startDate ?? '',\n endDate: payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n payrollUuid: ev.payload.payrollUuid ?? ctx.payrollUuid,\n payPeriod,\n executionInitialState: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollOverview',\n },\n }\n },\n ),\n)\n\n/** @internal */\nexport const payrollFlowMachine = {\n landing: state<MachineTransition>(\n transition(\n componentEvents.RUN_PAYROLL_SELECTED,\n 'execution',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollFlowEventPayloads,\n typeof componentEvents.RUN_PAYROLL_SELECTED\n >,\n ) => toExecutionReducer(ctx, ev, 'configuration'),\n ),\n ),\n transition(\n componentEvents.REVIEW_PAYROLL,\n 'execution',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollFlowEventPayloads, typeof componentEvents.REVIEW_PAYROLL>,\n ) => toExecutionReducer(ctx, ev, 'overview'),\n ),\n ),\n transition(\n componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL,\n 'blockers',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('blockers', ctx),\n component: PayrollBlockerContextual,\n showPayrollCancelledAlert: false,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollBlocker',\n },\n })),\n ),\n transition(\n componentEvents.RUN_PAYROLL_CANCELLED_ALERT_DISMISSED,\n 'landing',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...ctx,\n showPayrollCancelledAlert: false,\n })),\n ),\n transition(\n componentEvents.RUN_TRANSITION_PAYROLL,\n 'transition',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollFlowEventPayloads,\n typeof componentEvents.RUN_TRANSITION_PAYROLL\n >,\n ): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: TransitionFlowContextual,\n transitionStartDate: ev.payload.startDate,\n transitionEndDate: ev.payload.endDate,\n transitionPayScheduleUuid: ev.payload.payScheduleUuid,\n showPayrollCancelledAlert: false,\n }),\n ),\n ),\n transition(\n componentEvents.RUN_OFF_CYCLE_PAYROLL,\n 'offCycle',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: OffCycleFlowContextual,\n showPayrollCancelledAlert: false,\n })),\n ),\n ),\n execution: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n blockers: state<MachineTransition>(breadcrumbNavigateTransition('landing'), exitFlowTransition),\n submittedOverview: state<MachineTransition>(\n breadcrumbNavigateTransition('landing'),\n transition(\n componentEvents.RUN_PAYROLL_RECEIPT_GET,\n 'submittedReceipts',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('submittedReceipts', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollReceiptsContextual,\n alerts: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollReceipts',\n },\n })),\n ),\n cancelledToLandingTransition,\n exitFlowTransition,\n ),\n submittedReceipts: state<MachineTransition>(\n breadcrumbNavigateTransition('landing'),\n exitFlowTransition,\n ),\n transition: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n offCycle: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n}\n"],"names":["payrollFlowBreadcrumbsNodes","ctx","patchBreadcrumbsHeader","PayrollLandingContextual","breadcrumbNavigateTransition","createBreadcrumbNavigateTransition","toLandingReducer","toExecutionReducer","ev","executionInitialState","PayrollExecutionFlowContextual","landingBreadcrumbNavigateTransition","transition","componentEvents","guard","_ctx","reduce","exitFlowTransition","cancelledToLandingTransition","processedToSubmittedOverviewTransition","payPeriod","updateBreadcrumbs","PayrollOverviewContextual","payrollFlowMachine","state","PayrollBlockerContextual","TransitionFlowContextual","OffCycleFlowContextual","PayrollReceiptsContextual"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"payrollStateMachine.js","sources":["../../../../src/components/Payroll/PayrollFlow/payrollStateMachine.ts"],"sourcesContent":["import { state, transition, reduce, guard } from 'robot3'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayrollExecutionInitialState } from '../PayrollExecutionFlow'\nimport {\n PayrollLandingContextual,\n PayrollBlockerContextual,\n PayrollOverviewContextual,\n PayrollReceiptsContextual,\n type PayrollFlowContextInterface,\n} from './PayrollFlowComponents'\nimport { PayrollExecutionFlowContextual } from './PayrollExecutionFlowContextual'\nimport { TransitionFlowContextual } from './TransitionFlowContextual'\nimport { OffCycleFlowContextual } from './OffCycleFlowContextual'\nimport { componentEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport { patchBreadcrumbsHeader, updateBreadcrumbs } from '@/helpers/breadcrumbHelpers'\nimport type { BreadcrumbNodes } from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { createBreadcrumbNavigateTransition } from '@/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers'\n\ntype PayrollFlowEventPayloads = {\n [componentEvents.RUN_PAYROLL_SELECTED]: {\n payrollUuid: string\n }\n [componentEvents.REVIEW_PAYROLL]: {\n payrollUuid: string\n }\n [componentEvents.RUN_PAYROLL_PROCESSED]: {\n payPeriod?: PayrollPayPeriodType\n payrollUuid?: string\n }\n [componentEvents.RUN_TRANSITION_PAYROLL]: {\n startDate: string\n endDate: string\n payScheduleUuid: string\n }\n}\n\n/** @internal */\nexport const payrollFlowBreadcrumbsNodes: BreadcrumbNodes = {\n landing: {\n parent: null,\n item: {\n id: 'landing',\n label: 'breadcrumbs.landing',\n namespace: 'Payroll.PayrollLanding',\n onNavigate: ((ctx: PayrollFlowContextInterface) => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PayrollLandingContextual,\n alerts: undefined,\n payrollUuid: undefined,\n executionInitialState: undefined,\n })) as (context: unknown) => unknown,\n },\n },\n blockers: {\n parent: 'landing',\n item: {\n id: 'blockers',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollBlocker',\n },\n },\n submittedOverview: {\n parent: 'landing',\n item: {\n id: 'submittedOverview',\n label: 'breadcrumbs.overview',\n namespace: 'Payroll.PayrollLanding',\n },\n },\n submittedReceipts: {\n parent: 'landing',\n item: {\n id: 'submittedReceipts',\n label: 'breadcrumbs.receipt',\n namespace: 'Payroll.PayrollLanding',\n },\n },\n}\n\nconst breadcrumbNavigateTransition =\n createBreadcrumbNavigateTransition<PayrollFlowContextInterface>()\n\nfunction toLandingReducer(ctx: PayrollFlowContextInterface): PayrollFlowContextInterface {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PayrollLandingContextual,\n alerts: undefined,\n payrollUuid: undefined,\n payPeriod: undefined,\n executionInitialState: undefined,\n }\n}\n\nfunction toExecutionReducer(\n ctx: PayrollFlowContextInterface,\n ev: { payload: { payrollUuid: string } },\n executionInitialState: PayrollExecutionInitialState,\n): PayrollFlowContextInterface {\n return {\n ...ctx,\n component: PayrollExecutionFlowContextual,\n alerts: undefined,\n payrollUuid: ev.payload.payrollUuid,\n showPayrollCancelledAlert: false,\n executionInitialState,\n }\n}\n\nconst landingBreadcrumbNavigateTransition = transition(\n componentEvents.BREADCRUMB_NAVIGATE,\n 'landing',\n guard(\n (_ctx: PayrollFlowContextInterface, ev: { payload: { key: string } }) =>\n ev.payload.key === 'landing',\n ),\n reduce(toLandingReducer),\n)\n\nconst exitFlowTransition = transition(\n componentEvents.PAYROLL_EXIT_FLOW,\n 'landing',\n reduce(toLandingReducer),\n)\n\nconst cancelledToLandingTransition = transition(\n componentEvents.RUN_PAYROLL_CANCELLED,\n 'landing',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...toLandingReducer(ctx),\n showPayrollCancelledAlert: true,\n })),\n)\n\nconst processedToSubmittedOverviewTransition = transition(\n componentEvents.RUN_PAYROLL_PROCESSED,\n 'submittedOverview',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollFlowEventPayloads, typeof componentEvents.RUN_PAYROLL_PROCESSED>,\n ): PayrollFlowContextInterface => {\n const payPeriod = ev.payload.payPeriod ?? ctx.payPeriod\n return {\n ...updateBreadcrumbs('submittedOverview', ctx, {\n startDate: payPeriod?.startDate ?? '',\n endDate: payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n alerts: undefined,\n payrollUuid: ev.payload.payrollUuid ?? ctx.payrollUuid,\n payPeriod,\n executionInitialState: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollOverview',\n },\n }\n },\n ),\n)\n\n/** @internal */\nexport const payrollFlowMachine = {\n landing: state<MachineTransition>(\n transition(\n componentEvents.RUN_PAYROLL_SELECTED,\n 'execution',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollFlowEventPayloads,\n typeof componentEvents.RUN_PAYROLL_SELECTED\n >,\n ) => toExecutionReducer(ctx, ev, 'configuration'),\n ),\n ),\n transition(\n componentEvents.REVIEW_PAYROLL,\n 'execution',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollFlowEventPayloads, typeof componentEvents.REVIEW_PAYROLL>,\n ) => toExecutionReducer(ctx, ev, 'overview'),\n ),\n ),\n transition(\n componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL,\n 'blockers',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('blockers', ctx),\n component: PayrollBlockerContextual,\n alerts: undefined,\n showPayrollCancelledAlert: false,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollBlocker',\n },\n })),\n ),\n transition(\n componentEvents.RUN_PAYROLL_CANCELLED_ALERT_DISMISSED,\n 'landing',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...ctx,\n showPayrollCancelledAlert: false,\n })),\n ),\n transition(\n componentEvents.RUN_TRANSITION_PAYROLL,\n 'transition',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollFlowEventPayloads,\n typeof componentEvents.RUN_TRANSITION_PAYROLL\n >,\n ): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: TransitionFlowContextual,\n alerts: undefined,\n transitionStartDate: ev.payload.startDate,\n transitionEndDate: ev.payload.endDate,\n transitionPayScheduleUuid: ev.payload.payScheduleUuid,\n showPayrollCancelledAlert: false,\n }),\n ),\n ),\n transition(\n componentEvents.RUN_OFF_CYCLE_PAYROLL,\n 'offCycle',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: OffCycleFlowContextual,\n alerts: undefined,\n showPayrollCancelledAlert: false,\n })),\n ),\n ),\n execution: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n blockers: state<MachineTransition>(breadcrumbNavigateTransition('landing'), exitFlowTransition),\n submittedOverview: state<MachineTransition>(\n breadcrumbNavigateTransition('landing'),\n transition(\n componentEvents.RUN_PAYROLL_RECEIPT_GET,\n 'submittedReceipts',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('submittedReceipts', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollReceiptsContextual,\n alerts: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollReceipts',\n },\n })),\n ),\n cancelledToLandingTransition,\n exitFlowTransition,\n ),\n submittedReceipts: state<MachineTransition>(\n breadcrumbNavigateTransition('landing'),\n exitFlowTransition,\n ),\n transition: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n offCycle: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n}\n"],"names":["payrollFlowBreadcrumbsNodes","ctx","patchBreadcrumbsHeader","PayrollLandingContextual","breadcrumbNavigateTransition","createBreadcrumbNavigateTransition","toLandingReducer","toExecutionReducer","ev","executionInitialState","PayrollExecutionFlowContextual","landingBreadcrumbNavigateTransition","transition","componentEvents","guard","_ctx","reduce","exitFlowTransition","cancelledToLandingTransition","processedToSubmittedOverviewTransition","payPeriod","updateBreadcrumbs","PayrollOverviewContextual","payrollFlowMachine","state","PayrollBlockerContextual","TransitionFlowContextual","OffCycleFlowContextual","PayrollReceiptsContextual"],"mappings":"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"}
|