@gusto/embedded-react-sdk 0.56.4 → 0.56.6
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 +25 -0
- package/dist/components/Common/DocumentEmbed/DocumentEmbed.js +18 -0
- package/dist/components/Common/DocumentEmbed/DocumentEmbed.js.map +1 -0
- package/dist/components/Common/DocumentViewer/DocumentViewer.js +35 -29
- package/dist/components/Common/DocumentViewer/DocumentViewer.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +6 -5
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +7 -6
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +4 -3
- 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 +4 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +4 -3
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +64 -61
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +133 -134
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
- package/dist/components/Contractor/ContractorListFlow/ContractorListFlow.js.map +1 -1
- package/dist/components/Contractor/ContractorListFlow/ContractorListFlowComponents.js +22 -9
- package/dist/components/Contractor/ContractorListFlow/ContractorListFlowComponents.js.map +1 -1
- package/dist/components/Contractor/ContractorListFlow/contractorListStateMachine.js +51 -20
- package/dist/components/Contractor/ContractorListFlow/contractorListStateMachine.js.map +1 -1
- package/dist/components/Contractor/Dismissal/Dismissal.js +77 -0
- package/dist/components/Contractor/Dismissal/Dismissal.js.map +1 -0
- package/dist/components/Contractor/Dismissal/DismissalPresentation.js +57 -0
- package/dist/components/Contractor/Dismissal/DismissalPresentation.js.map +1 -0
- package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js +44 -0
- package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js.map +1 -0
- package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js +17 -14
- package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +45 -41
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
- package/dist/components/Contractor/exports/contractorManagement.js +56 -54
- package/dist/components/Contractor/exports/contractorManagement.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +4 -3
- 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/GrossUpModal/GrossUpModal.js +3 -2
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +201 -196
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +55 -52
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js +38 -29
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +63 -62
- 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/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +72 -68
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +3 -2
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
- package/dist/i18n/I18n.js +2 -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/i18n/en/Contractor.Dismissal.json.js +20 -0
- package/dist/i18n/en/Contractor.Dismissal.json.js.map +1 -0
- package/dist/i18n/en/Contractor.Payments.PaymentStatement.json.js +2 -2
- package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +38 -38
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js +31 -31
- package/dist/i18n/en/common.json.js +37 -35
- package/dist/i18n/en/common.json.js.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/shared/constants.js +19 -15
- package/dist/shared/constants.js.map +1 -1
- package/dist/src/components/Common/DocumentEmbed/DocumentEmbed.d.ts +3 -0
- package/dist/src/components/Common/DocumentEmbed/DocumentEmbedTypes.d.ts +25 -0
- package/dist/src/components/Common/DocumentEmbed/index.d.ts +2 -0
- 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/Contractor/ContractorList/management/ManagementContractorList.d.ts +2 -0
- package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +3 -1
- package/dist/src/components/Contractor/ContractorListFlow/ContractorListFlow.d.ts +6 -4
- package/dist/src/components/Contractor/ContractorListFlow/ContractorListFlowComponents.d.ts +2 -0
- package/dist/src/components/Contractor/ContractorListFlow/contractorListStateMachine.d.ts +1 -0
- package/dist/src/components/Contractor/ContractorListFlow/contractorListStateMachine.test.d.ts +1 -0
- package/dist/src/components/Contractor/Dismissal/Dismissal.d.ts +45 -0
- package/dist/src/components/Contractor/Dismissal/DismissalPresentation.d.ts +17 -0
- package/dist/src/components/Contractor/Dismissal/useDismissal/useDismissal.d.ts +41 -0
- package/dist/src/components/Contractor/Dismissal/useDismissal/useDismissal.test.d.ts +1 -0
- package/dist/src/components/Contractor/exports/contractorManagement.d.ts +1 -0
- 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/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.d.ts +19 -0
- package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/useComponentContext.d.ts +5 -2
- package/dist/src/i18n/en/common.json.d.ts +3 -0
- package/dist/src/i18n/types.d.ts +128 -0
- package/dist/src/shared/constants.d.ts +8 -0
- package/docs/guides/endpoint-inventory.json +30 -1
- package/package.json +1 -1
|
@@ -1,40 +1,71 @@
|
|
|
1
|
-
import { state as
|
|
2
|
-
import { createContractorOnboardingSteps as
|
|
3
|
-
import { DashboardFlowContextual as
|
|
1
|
+
import { state as s, transition as a, reduce as r } from "robot3";
|
|
2
|
+
import { createContractorOnboardingSteps as d, contractorCreateTransition as T, contractorUpdateTransition as C } from "../OnboardingFlow/onboardingStateMachine.js";
|
|
3
|
+
import { ContractorListContextual as c, DashboardFlowContextual as m, DismissalContextual as l } from "./ContractorListFlowComponents.js";
|
|
4
4
|
import { componentEvents as o } from "../../../shared/constants.js";
|
|
5
|
-
const
|
|
5
|
+
const i = {
|
|
6
6
|
type: "minimal",
|
|
7
7
|
back: {
|
|
8
8
|
labelKey: "backToListCta",
|
|
9
9
|
namespace: "Contractor.ManagementContractorList",
|
|
10
10
|
event: o.CONTRACTOR_RETURN_TO_LIST
|
|
11
11
|
}
|
|
12
|
-
},
|
|
12
|
+
}, n = r(
|
|
13
13
|
(t) => ({
|
|
14
14
|
...t,
|
|
15
|
-
component:
|
|
15
|
+
component: c,
|
|
16
16
|
header: null,
|
|
17
|
-
contractorId: void 0
|
|
17
|
+
contractorId: void 0,
|
|
18
|
+
successMessage: void 0
|
|
18
19
|
})
|
|
19
|
-
),
|
|
20
|
-
list:
|
|
20
|
+
), S = {
|
|
21
|
+
list: s(
|
|
21
22
|
a(
|
|
22
23
|
o.CONTRACTOR_VIEW,
|
|
23
24
|
"dashboard",
|
|
24
|
-
|
|
25
|
-
(t,
|
|
25
|
+
r(
|
|
26
|
+
(t, e) => ({
|
|
26
27
|
...t,
|
|
27
|
-
component:
|
|
28
|
-
header:
|
|
29
|
-
contractorId:
|
|
28
|
+
component: m,
|
|
29
|
+
header: i,
|
|
30
|
+
contractorId: e.payload.contractorId
|
|
30
31
|
})
|
|
31
32
|
)
|
|
32
33
|
),
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
a(
|
|
35
|
+
o.CONTRACTOR_DISMISS,
|
|
36
|
+
"dismiss",
|
|
37
|
+
r(
|
|
38
|
+
(t, e) => ({
|
|
39
|
+
...t,
|
|
40
|
+
component: l,
|
|
41
|
+
header: i,
|
|
42
|
+
contractorId: e.payload.contractorId,
|
|
43
|
+
successMessage: void 0
|
|
44
|
+
})
|
|
45
|
+
)
|
|
46
|
+
),
|
|
47
|
+
T,
|
|
48
|
+
C
|
|
35
49
|
),
|
|
36
|
-
dashboard:
|
|
37
|
-
a(o.CONTRACTOR_RETURN_TO_LIST, "list",
|
|
50
|
+
dashboard: s(
|
|
51
|
+
a(o.CONTRACTOR_RETURN_TO_LIST, "list", n)
|
|
52
|
+
),
|
|
53
|
+
dismiss: s(
|
|
54
|
+
a(o.CONTRACTOR_RETURN_TO_LIST, "list", n),
|
|
55
|
+
a(o.CANCEL, "list", n),
|
|
56
|
+
a(
|
|
57
|
+
o.CONTRACTOR_DISMISSAL_SCHEDULED,
|
|
58
|
+
"list",
|
|
59
|
+
r(
|
|
60
|
+
(t, e) => ({
|
|
61
|
+
...t,
|
|
62
|
+
component: c,
|
|
63
|
+
header: null,
|
|
64
|
+
contractorId: void 0,
|
|
65
|
+
successMessage: e.payload.message
|
|
66
|
+
})
|
|
67
|
+
)
|
|
68
|
+
)
|
|
38
69
|
),
|
|
39
70
|
// Spreads in the same Profile → Address → Payment Method → New Hire Report → Submit states
|
|
40
71
|
// ContractorOnboarding.OnboardingFlow uses, rather than mounting that flow as a nested
|
|
@@ -46,9 +77,9 @@ const m = {
|
|
|
46
77
|
// waitForExplicitSubmitDone: true because this list (unlike OnboardingFlow's own) has no
|
|
47
78
|
// success-banner mechanism — without it, an admin completing onboarding would be swept back
|
|
48
79
|
// to the list the instant they click Submit, with no confirmation at all.
|
|
49
|
-
...
|
|
80
|
+
...d(c, { waitForExplicitSubmitDone: !0 })
|
|
50
81
|
};
|
|
51
82
|
export {
|
|
52
|
-
|
|
83
|
+
S as contractorListStateMachine
|
|
53
84
|
};
|
|
54
85
|
//# sourceMappingURL=contractorListStateMachine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractorListStateMachine.js","sources":["../../../../src/components/Contractor/ContractorListFlow/contractorListStateMachine.ts"],"sourcesContent":["import { transition, reduce, state } from 'robot3'\nimport {\n contractorCreateTransition,\n contractorUpdateTransition,\n createContractorOnboardingSteps,\n} from '../OnboardingFlow/onboardingStateMachine'\nimport {\n ContractorListContextual,\n DashboardFlowContextual,\n type ContractorListFlowContextInterface,\n} from './ContractorListFlowComponents'\nimport { componentEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport type { FlowHeaderConfig } from '@/components/Flow/useFlow'\n\ntype EventPayloads = {\n [componentEvents.CONTRACTOR_VIEW]: { contractorId: string }\n}\n\nconst backToListHeader: FlowHeaderConfig = {\n type: 'minimal',\n back: {\n labelKey: 'backToListCta',\n namespace: 'Contractor.ManagementContractorList',\n event: componentEvents.CONTRACTOR_RETURN_TO_LIST,\n },\n}\n\nconst returnToList = reduce(\n (ctx: ContractorListFlowContextInterface): ContractorListFlowContextInterface => ({\n ...ctx,\n component: ContractorListContextual,\n header: null,\n contractorId: undefined,\n }),\n)\n\n/** @internal */\nexport const contractorListStateMachine = {\n list: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_VIEW,\n 'dashboard',\n reduce(\n (\n ctx: ContractorListFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_VIEW>,\n ): ContractorListFlowContextInterface => ({\n ...ctx,\n component: DashboardFlowContextual,\n header: backToListHeader,\n contractorId: ev.payload.contractorId,\n }),\n ),\n ),\n contractorCreateTransition,\n contractorUpdateTransition,\n ),\n dashboard: state<MachineTransition>(\n transition(componentEvents.CONTRACTOR_RETURN_TO_LIST, 'list', returnToList),\n ),\n // Spreads in the same Profile → Address → Payment Method → New Hire Report → Submit states\n // ContractorOnboarding.OnboardingFlow uses, rather than mounting that flow as a nested\n // component — see createContractorOnboardingSteps' own doc comment for why. Every\n // 'list'-targeting transition inside these states (cancel, submit-done) resolves against\n // this machine's own `list` state above, since state names resolve against whichever\n // machine they end up spread into.\n //\n // waitForExplicitSubmitDone: true because this list (unlike OnboardingFlow's own) has no\n // success-banner mechanism — without it, an admin completing onboarding would be swept back\n // to the list the instant they click Submit, with no confirmation at all.\n ...createContractorOnboardingSteps(ContractorListContextual, { waitForExplicitSubmitDone: true }),\n}\n"],"names":["backToListHeader","componentEvents","returnToList","reduce","ctx","ContractorListContextual","contractorListStateMachine","state","transition","ev","DashboardFlowContextual","contractorCreateTransition","contractorUpdateTransition","createContractorOnboardingSteps"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"contractorListStateMachine.js","sources":["../../../../src/components/Contractor/ContractorListFlow/contractorListStateMachine.ts"],"sourcesContent":["import { transition, reduce, state } from 'robot3'\nimport {\n contractorCreateTransition,\n contractorUpdateTransition,\n createContractorOnboardingSteps,\n} from '../OnboardingFlow/onboardingStateMachine'\nimport {\n ContractorListContextual,\n DashboardFlowContextual,\n DismissalContextual,\n type ContractorListFlowContextInterface,\n} from './ContractorListFlowComponents'\nimport { componentEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport type { FlowHeaderConfig } from '@/components/Flow/useFlow'\n\ntype EventPayloads = {\n [componentEvents.CONTRACTOR_VIEW]: { contractorId: string }\n [componentEvents.CONTRACTOR_DISMISS]: { contractorId: string }\n [componentEvents.CONTRACTOR_DISMISSAL_SCHEDULED]: {\n contractorId: string\n endDate: string\n message: string\n }\n}\n\nconst backToListHeader: FlowHeaderConfig = {\n type: 'minimal',\n back: {\n labelKey: 'backToListCta',\n namespace: 'Contractor.ManagementContractorList',\n event: componentEvents.CONTRACTOR_RETURN_TO_LIST,\n },\n}\n\nconst returnToList = reduce(\n (ctx: ContractorListFlowContextInterface): ContractorListFlowContextInterface => ({\n ...ctx,\n component: ContractorListContextual,\n header: null,\n contractorId: undefined,\n successMessage: undefined,\n }),\n)\n\n/** @internal */\nexport const contractorListStateMachine = {\n list: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_VIEW,\n 'dashboard',\n reduce(\n (\n ctx: ContractorListFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_VIEW>,\n ): ContractorListFlowContextInterface => ({\n ...ctx,\n component: DashboardFlowContextual,\n header: backToListHeader,\n contractorId: ev.payload.contractorId,\n }),\n ),\n ),\n transition(\n componentEvents.CONTRACTOR_DISMISS,\n 'dismiss',\n reduce(\n (\n ctx: ContractorListFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_DISMISS>,\n ): ContractorListFlowContextInterface => ({\n ...ctx,\n component: DismissalContextual,\n header: backToListHeader,\n contractorId: ev.payload.contractorId,\n successMessage: undefined,\n }),\n ),\n ),\n contractorCreateTransition,\n contractorUpdateTransition,\n ),\n dashboard: state<MachineTransition>(\n transition(componentEvents.CONTRACTOR_RETURN_TO_LIST, 'list', returnToList),\n ),\n dismiss: state<MachineTransition>(\n transition(componentEvents.CONTRACTOR_RETURN_TO_LIST, 'list', returnToList),\n transition(componentEvents.CANCEL, 'list', returnToList),\n transition(\n componentEvents.CONTRACTOR_DISMISSAL_SCHEDULED,\n 'list',\n reduce(\n (\n ctx: ContractorListFlowContextInterface,\n ev: MachineEventType<\n EventPayloads,\n typeof componentEvents.CONTRACTOR_DISMISSAL_SCHEDULED\n >,\n ): ContractorListFlowContextInterface => ({\n ...ctx,\n component: ContractorListContextual,\n header: null,\n contractorId: undefined,\n successMessage: ev.payload.message,\n }),\n ),\n ),\n ),\n // Spreads in the same Profile → Address → Payment Method → New Hire Report → Submit states\n // ContractorOnboarding.OnboardingFlow uses, rather than mounting that flow as a nested\n // component — see createContractorOnboardingSteps' own doc comment for why. Every\n // 'list'-targeting transition inside these states (cancel, submit-done) resolves against\n // this machine's own `list` state above, since state names resolve against whichever\n // machine they end up spread into.\n //\n // waitForExplicitSubmitDone: true because this list (unlike OnboardingFlow's own) has no\n // success-banner mechanism — without it, an admin completing onboarding would be swept back\n // to the list the instant they click Submit, with no confirmation at all.\n ...createContractorOnboardingSteps(ContractorListContextual, { waitForExplicitSubmitDone: true }),\n}\n"],"names":["backToListHeader","componentEvents","returnToList","reduce","ctx","ContractorListContextual","contractorListStateMachine","state","transition","ev","DashboardFlowContextual","DismissalContextual","contractorCreateTransition","contractorUpdateTransition","createContractorOnboardingSteps"],"mappings":";;;;AA0BA,MAAMA,IAAqC;AAAA,EACzC,MAAM;AAAA,EACN,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,WAAW;AAAA,IACX,OAAOC,EAAgB;AAAA,EAAA;AAE3B,GAEMC,IAAeC;AAAA,EACnB,CAACC,OAAiF;AAAA,IAChF,GAAGA;AAAA,IACH,WAAWC;AAAA,IACX,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,gBAAgB;AAAA,EAAA;AAEpB,GAGaC,IAA6B;AAAA,EACxC,MAAMC;AAAA,IACJC;AAAA,MACEP,EAAgB;AAAA,MAChB;AAAA,MACAE;AAAA,QACE,CACEC,GACAK,OACwC;AAAA,UACxC,GAAGL;AAAA,UACH,WAAWM;AAAA,UACX,QAAQV;AAAA,UACR,cAAcS,EAAG,QAAQ;AAAA,QAAA;AAAA,MAC3B;AAAA,IACF;AAAA,IAEFD;AAAA,MACEP,EAAgB;AAAA,MAChB;AAAA,MACAE;AAAA,QACE,CACEC,GACAK,OACwC;AAAA,UACxC,GAAGL;AAAA,UACH,WAAWO;AAAA,UACX,QAAQX;AAAA,UACR,cAAcS,EAAG,QAAQ;AAAA,UACzB,gBAAgB;AAAA,QAAA;AAAA,MAClB;AAAA,IACF;AAAA,IAEFG;AAAA,IACAC;AAAA,EAAA;AAAA,EAEF,WAAWN;AAAA,IACTC,EAAWP,EAAgB,2BAA2B,QAAQC,CAAY;AAAA,EAAA;AAAA,EAE5E,SAASK;AAAA,IACPC,EAAWP,EAAgB,2BAA2B,QAAQC,CAAY;AAAA,IAC1EM,EAAWP,EAAgB,QAAQ,QAAQC,CAAY;AAAA,IACvDM;AAAA,MACEP,EAAgB;AAAA,MAChB;AAAA,MACAE;AAAA,QACE,CACEC,GACAK,OAIwC;AAAA,UACxC,GAAGL;AAAA,UACH,WAAWC;AAAA,UACX,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,gBAAgBI,EAAG,QAAQ;AAAA,QAAA;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYF,GAAGK,EAAgCT,GAA0B,EAAE,2BAA2B,IAAM;AAClG;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation as D } from "react-i18next";
|
|
3
|
+
import { useDismissal as f } from "./useDismissal/useDismissal.js";
|
|
4
|
+
import { DismissalPresentation as C } from "./DismissalPresentation.js";
|
|
5
|
+
import { BaseBoundaries as p, BaseLayout as c } from "../../Base/Base.js";
|
|
6
|
+
import { useComponentDictionary as d, useI18n as g } from "../../../i18n/I18n.js";
|
|
7
|
+
import { componentEvents as m } from "../../../shared/constants.js";
|
|
8
|
+
import { formatDateToStringDate as S } from "../../../helpers/dateFormatting.js";
|
|
9
|
+
function b({ FallbackComponent: t, LoaderComponent: r, ...n }) {
|
|
10
|
+
return /* @__PURE__ */ o(
|
|
11
|
+
p,
|
|
12
|
+
{
|
|
13
|
+
componentName: "Contractor.Dismissal",
|
|
14
|
+
FallbackComponent: t,
|
|
15
|
+
LoaderComponent: r,
|
|
16
|
+
children: /* @__PURE__ */ o(h, { LoaderComponent: r, ...n })
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
function h({
|
|
21
|
+
contractorId: t,
|
|
22
|
+
onEvent: r,
|
|
23
|
+
dictionary: n,
|
|
24
|
+
className: e,
|
|
25
|
+
LoaderComponent: s
|
|
26
|
+
}) {
|
|
27
|
+
d("Contractor.Dismissal", n), g("Contractor.Dismissal");
|
|
28
|
+
const i = f({ contractorId: t });
|
|
29
|
+
return i.isLoading ? /* @__PURE__ */ o(
|
|
30
|
+
c,
|
|
31
|
+
{
|
|
32
|
+
isLoading: !0,
|
|
33
|
+
error: i.errorHandling.errors,
|
|
34
|
+
LoaderComponent: s
|
|
35
|
+
}
|
|
36
|
+
) : /* @__PURE__ */ o(
|
|
37
|
+
y,
|
|
38
|
+
{
|
|
39
|
+
contractorId: t,
|
|
40
|
+
onEvent: r,
|
|
41
|
+
className: e,
|
|
42
|
+
LoaderComponent: s,
|
|
43
|
+
dismissal: i
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
function y({
|
|
48
|
+
contractorId: t,
|
|
49
|
+
onEvent: r,
|
|
50
|
+
className: n,
|
|
51
|
+
LoaderComponent: e,
|
|
52
|
+
dismissal: s
|
|
53
|
+
}) {
|
|
54
|
+
const { t: i } = D("Contractor.Dismissal"), u = () => {
|
|
55
|
+
r(m.CANCEL);
|
|
56
|
+
}, l = async ({ endDate: a }) => {
|
|
57
|
+
await s.actions.dismiss(a) && r(m.CONTRACTOR_DISMISSAL_SCHEDULED, {
|
|
58
|
+
contractorId: t,
|
|
59
|
+
endDate: S(a),
|
|
60
|
+
message: i("successMessage")
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
return /* @__PURE__ */ o(c, { error: s.errorHandling.errors, LoaderComponent: e, children: /* @__PURE__ */ o(
|
|
64
|
+
C,
|
|
65
|
+
{
|
|
66
|
+
contractor: s.data.contractor,
|
|
67
|
+
isPending: s.status.isPending,
|
|
68
|
+
onCancel: u,
|
|
69
|
+
onSubmit: l,
|
|
70
|
+
className: n
|
|
71
|
+
}
|
|
72
|
+
) });
|
|
73
|
+
}
|
|
74
|
+
export {
|
|
75
|
+
b as Dismissal
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=Dismissal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dismissal.js","sources":["../../../../src/components/Contractor/Dismissal/Dismissal.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { useDismissal, type UseDismissalReady } from './useDismissal/useDismissal'\nimport { DismissalPresentation, type DismissalFormData } from './DismissalPresentation'\nimport { BaseBoundaries, BaseLayout, type BaseComponentInterface } from '@/components/Base/Base'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport type { LoaderComponentType } from '@/components/Base'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport { formatDateToStringDate } from '@/helpers/dateFormatting'\n\n/**\n * Props for {@link Dismissal}.\n *\n * @public\n */\nexport interface DismissalProps extends BaseComponentInterface<'Contractor.Dismissal'> {\n /** The contractor identifier to dismiss. */\n contractorId: string\n}\n\n/**\n * Standalone form for scheduling a contractor's dismissal.\n *\n * @remarks\n * Fetches the contractor, renders a single \"Dismissal date\" field bounded to\n * the day after their start date, and schedules the dismissal on submit.\n * Does not remove or hide the contractor itself — the dismissal can be\n * cancelled up until the date takes effect.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/dismissal/scheduled` | Fired after the dismissal is successfully scheduled | `{ contractorId: string, endDate: string, message: string }` |\n * | `CANCEL` | Fired when the user clicks Cancel | — |\n *\n * @param props - See {@link DismissalProps}.\n * @returns The dismissal form.\n * @public\n * @group Block components\n *\n * @example\n * ```tsx\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function MyComponent() {\n * return (\n * <ContractorManagement.Dismissal\n * contractorId=\"4b3f930f-82cd-48a8-b797-798686e12e5e\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function Dismissal({ FallbackComponent, LoaderComponent, ...props }: DismissalProps) {\n return (\n <BaseBoundaries\n componentName=\"Contractor.Dismissal\"\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n >\n <DismissalContent LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n\ninterface DismissalContentProps {\n contractorId: string\n onEvent: OnEventType<EventType, unknown>\n dictionary?: DismissalProps['dictionary']\n className?: string\n LoaderComponent?: LoaderComponentType\n}\n\nfunction DismissalContent({\n contractorId,\n onEvent,\n dictionary,\n className,\n LoaderComponent,\n}: DismissalContentProps) {\n useComponentDictionary('Contractor.Dismissal', dictionary)\n useI18n('Contractor.Dismissal')\n\n const dismissal = useDismissal({ contractorId })\n\n if (dismissal.isLoading) {\n return (\n <BaseLayout\n isLoading\n error={dismissal.errorHandling.errors}\n LoaderComponent={LoaderComponent}\n />\n )\n }\n\n return (\n <DismissalReady\n contractorId={contractorId}\n onEvent={onEvent}\n className={className}\n LoaderComponent={LoaderComponent}\n dismissal={dismissal}\n />\n )\n}\n\ninterface DismissalReadyProps {\n contractorId: string\n onEvent: OnEventType<EventType, unknown>\n className?: string\n LoaderComponent?: LoaderComponentType\n dismissal: UseDismissalReady\n}\n\nfunction DismissalReady({\n contractorId,\n onEvent,\n className,\n LoaderComponent,\n dismissal,\n}: DismissalReadyProps) {\n const { t } = useTranslation('Contractor.Dismissal')\n\n const handleCancel = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n const handleSubmit = async ({ endDate }: DismissalFormData) => {\n const result = await dismissal.actions.dismiss(endDate)\n if (!result) return\n\n onEvent(componentEvents.CONTRACTOR_DISMISSAL_SCHEDULED, {\n contractorId,\n endDate: formatDateToStringDate(endDate),\n message: t('successMessage'),\n })\n }\n\n return (\n <BaseLayout error={dismissal.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <DismissalPresentation\n contractor={dismissal.data.contractor}\n isPending={dismissal.status.isPending}\n onCancel={handleCancel}\n onSubmit={handleSubmit}\n className={className}\n />\n </BaseLayout>\n )\n}\n"],"names":["Dismissal","FallbackComponent","LoaderComponent","props","jsx","BaseBoundaries","DismissalContent","contractorId","onEvent","dictionary","className","useComponentDictionary","useI18n","dismissal","useDismissal","BaseLayout","DismissalReady","t","useTranslation","handleCancel","componentEvents","handleSubmit","endDate","formatDateToStringDate","DismissalPresentation"],"mappings":";;;;;;;;AAsDO,SAASA,EAAU,EAAE,mBAAAC,GAAmB,iBAAAC,GAAiB,GAAGC,KAAyB;AAC1F,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAc;AAAA,MACd,mBAAAJ;AAAA,MACA,iBAAAC;AAAA,MAEA,UAAA,gBAAAE,EAACE,GAAA,EAAiB,iBAAAJ,GAAmC,GAAGC,EAAA,CAAO;AAAA,IAAA;AAAA,EAAA;AAGrE;AAUA,SAASG,EAAiB;AAAA,EACxB,cAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAR;AACF,GAA0B;AACxB,EAAAS,EAAuB,wBAAwBF,CAAU,GACzDG,EAAQ,sBAAsB;AAE9B,QAAMC,IAAYC,EAAa,EAAE,cAAAP,GAAc;AAE/C,SAAIM,EAAU,YAEV,gBAAAT;AAAA,IAACW;AAAA,IAAA;AAAA,MACC,WAAS;AAAA,MACT,OAAOF,EAAU,cAAc;AAAA,MAC/B,iBAAAX;AAAA,IAAA;AAAA,EAAA,IAMJ,gBAAAE;AAAA,IAACY;AAAA,IAAA;AAAA,MACC,cAAAT;AAAA,MACA,SAAAC;AAAA,MACA,WAAAE;AAAA,MACA,iBAAAR;AAAA,MACA,WAAAW;AAAA,IAAA;AAAA,EAAA;AAGN;AAUA,SAASG,EAAe;AAAA,EACtB,cAAAT;AAAA,EACA,SAAAC;AAAA,EACA,WAAAE;AAAA,EACA,iBAAAR;AAAA,EACA,WAAAW;AACF,GAAwB;AACtB,QAAM,EAAE,GAAAI,EAAA,IAAMC,EAAe,sBAAsB,GAE7CC,IAAe,MAAM;AACzB,IAAAX,EAAQY,EAAgB,MAAM;AAAA,EAChC,GAEMC,IAAe,OAAO,EAAE,SAAAC,QAAiC;AAE7D,IADe,MAAMT,EAAU,QAAQ,QAAQS,CAAO,KAGtDd,EAAQY,EAAgB,gCAAgC;AAAA,MACtD,cAAAb;AAAA,MACA,SAASgB,EAAuBD,CAAO;AAAA,MACvC,SAASL,EAAE,gBAAgB;AAAA,IAAA,CAC5B;AAAA,EACH;AAEA,2BACGF,GAAA,EAAW,OAAOF,EAAU,cAAc,QAAQ,iBAAAX,GACjD,UAAA,gBAAAE;AAAA,IAACoB;AAAA,IAAA;AAAA,MACC,YAAYX,EAAU,KAAK;AAAA,MAC3B,WAAWA,EAAU,OAAO;AAAA,MAC5B,UAAUM;AAAA,MACV,UAAUE;AAAA,MACV,WAAAX;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as e, jsxs as r } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation as b } from "react-i18next";
|
|
3
|
+
import m from "zod";
|
|
4
|
+
import { useForm as x, FormProvider as v } from "react-hook-form";
|
|
5
|
+
import { zodResolver as g } from "@hookform/resolvers/zod";
|
|
6
|
+
import { getContractorDisplayName as y } from "../shared/helpers.js";
|
|
7
|
+
import { Flex as o } from "../../Common/Flex/Flex.js";
|
|
8
|
+
import { ActionsLayout as C } from "../../Common/ActionsLayout/ActionsLayout.js";
|
|
9
|
+
import { Form as F } from "../../Common/Form/Form.js";
|
|
10
|
+
import { useComponentContext as R } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
11
|
+
import { useI18n as j } from "../../../i18n/I18n.js";
|
|
12
|
+
import { addDays as q, normalizeToDate as z } from "../../../helpers/dateFormatting.js";
|
|
13
|
+
import { DatePickerField as S } from "../../Common/Fields/DatePickerField/DatePickerField.js";
|
|
14
|
+
const T = m.object({
|
|
15
|
+
endDate: m.date({ error: "validation.endDateRequired" })
|
|
16
|
+
});
|
|
17
|
+
function J({
|
|
18
|
+
contractor: i,
|
|
19
|
+
isPending: a,
|
|
20
|
+
onSubmit: d,
|
|
21
|
+
onCancel: c,
|
|
22
|
+
className: u
|
|
23
|
+
}) {
|
|
24
|
+
const { Alert: p, Heading: f, Text: n, Button: s } = R();
|
|
25
|
+
j("Contractor.Dismissal");
|
|
26
|
+
const { t } = b("Contractor.Dismissal"), l = x({
|
|
27
|
+
resolver: g(T),
|
|
28
|
+
defaultValues: {}
|
|
29
|
+
}), D = y(i), h = i.startDate ? q(z(i.startDate), 1) : void 0;
|
|
30
|
+
return /* @__PURE__ */ e(v, { ...l, children: /* @__PURE__ */ e(F, { onSubmit: l.handleSubmit(d), children: /* @__PURE__ */ r(o, { className: u, flexDirection: "column", gap: 24, children: [
|
|
31
|
+
/* @__PURE__ */ r(o, { flexDirection: "column", gap: 4, children: [
|
|
32
|
+
/* @__PURE__ */ e(f, { as: "h2", children: t("title", { name: D }) }),
|
|
33
|
+
/* @__PURE__ */ e(n, { variant: "supporting", children: t("subtitle") })
|
|
34
|
+
] }),
|
|
35
|
+
/* @__PURE__ */ r(o, { flexDirection: "column", gap: 24, children: [
|
|
36
|
+
/* @__PURE__ */ e(
|
|
37
|
+
S,
|
|
38
|
+
{
|
|
39
|
+
name: "endDate",
|
|
40
|
+
label: t("form.endDate.label"),
|
|
41
|
+
isRequired: !0,
|
|
42
|
+
minDate: h,
|
|
43
|
+
errorMessage: t("validation.endDateRequired")
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
/* @__PURE__ */ e(p, { status: "info", label: t("alert.label"), children: /* @__PURE__ */ e(n, { children: t("alert.text") }) })
|
|
47
|
+
] }),
|
|
48
|
+
/* @__PURE__ */ r(C, { children: [
|
|
49
|
+
/* @__PURE__ */ e(s, { variant: "secondary", onClick: c, isDisabled: a, children: t("actions.cancel") }),
|
|
50
|
+
/* @__PURE__ */ e(s, { type: "submit", variant: "primary", isLoading: a, children: t("actions.submit") })
|
|
51
|
+
] })
|
|
52
|
+
] }) }) });
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
J as DismissalPresentation
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=DismissalPresentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DismissalPresentation.js","sources":["../../../../src/components/Contractor/Dismissal/DismissalPresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport z from 'zod'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport { getContractorDisplayName } from '../shared/helpers'\nimport { Flex, ActionsLayout, DatePickerField } from '@/components/Common'\nimport { Form as HtmlForm } from '@/components/Common/Form/Form'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { normalizeToDate, addDays } from '@/helpers/dateFormatting'\n\ninterface DismissalPresentationProps {\n contractor: Contractor\n isPending: boolean\n onSubmit: (data: DismissalFormData) => void\n onCancel: () => void\n /** CSS class name applied to the root element. */\n className?: string\n}\n\n/** @internal */\nexport interface DismissalFormData {\n /** The effective date of the dismissal — the contractor's last day. */\n endDate: Date\n}\n\nconst dismissalSchema = z.object({\n endDate: z.date({ error: 'validation.endDateRequired' }),\n})\n\n/** @internal */\nexport function DismissalPresentation({\n contractor,\n isPending,\n onSubmit,\n onCancel,\n className,\n}: DismissalPresentationProps) {\n const { Alert, Heading, Text, Button } = useComponentContext()\n useI18n('Contractor.Dismissal')\n const { t } = useTranslation('Contractor.Dismissal')\n\n const formMethods = useForm<DismissalFormData>({\n resolver: zodResolver(dismissalSchema),\n defaultValues: {},\n })\n\n const name = getContractorDisplayName(contractor)\n const minDate = contractor.startDate\n ? addDays(normalizeToDate(contractor.startDate)!, 1)\n : undefined\n\n return (\n <FormProvider {...formMethods}>\n <HtmlForm onSubmit={formMethods.handleSubmit(onSubmit)}>\n <Flex className={className} flexDirection=\"column\" gap={24}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('title', { name })}</Heading>\n <Text variant=\"supporting\">{t('subtitle')}</Text>\n </Flex>\n\n <Flex flexDirection=\"column\" gap={24}>\n <DatePickerField\n name=\"endDate\"\n label={t('form.endDate.label')}\n isRequired\n minDate={minDate}\n errorMessage={t('validation.endDateRequired')}\n />\n <Alert status=\"info\" label={t('alert.label')}>\n <Text>{t('alert.text')}</Text>\n </Alert>\n </Flex>\n\n <ActionsLayout>\n <Button variant=\"secondary\" onClick={onCancel} isDisabled={isPending}>\n {t('actions.cancel')}\n </Button>\n <Button type=\"submit\" variant=\"primary\" isLoading={isPending}>\n {t('actions.submit')}\n </Button>\n </ActionsLayout>\n </Flex>\n </HtmlForm>\n </FormProvider>\n )\n}\n"],"names":["dismissalSchema","z","DismissalPresentation","contractor","isPending","onSubmit","onCancel","className","Alert","Heading","Text","Button","useComponentContext","useI18n","useTranslation","formMethods","useForm","zodResolver","name","getContractorDisplayName","minDate","addDays","normalizeToDate","FormProvider","jsx","HtmlForm","jsxs","Flex","DatePickerField","ActionsLayout"],"mappings":";;;;;;;;;;;;;AA2BA,MAAMA,IAAkBC,EAAE,OAAO;AAAA,EAC/B,SAASA,EAAE,KAAK,EAAE,OAAO,8BAA8B;AACzD,CAAC;AAGM,SAASC,EAAsB;AAAA,EACpC,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,GAA+B;AAC7B,QAAM,EAAE,OAAAC,GAAO,SAAAC,GAAS,MAAAC,GAAM,QAAAC,EAAA,IAAWC,EAAA;AACzC,EAAAC,EAAQ,sBAAsB;AAC9B,QAAM,EAAE,EAAA,IAAMC,EAAe,sBAAsB,GAE7CC,IAAcC,EAA2B;AAAA,IAC7C,UAAUC,EAAYjB,CAAe;AAAA,IACrC,eAAe,CAAA;AAAA,EAAC,CACjB,GAEKkB,IAAOC,EAAyBhB,CAAU,GAC1CiB,IAAUjB,EAAW,YACvBkB,EAAQC,EAAgBnB,EAAW,SAAS,GAAI,CAAC,IACjD;AAEJ,2BACGoB,GAAA,EAAc,GAAGR,GAChB,UAAA,gBAAAS,EAACC,KAAS,UAAUV,EAAY,aAAaV,CAAQ,GACnD,UAAA,gBAAAqB,EAACC,GAAA,EAAK,WAAApB,GAAsB,eAAc,UAAS,KAAK,IACtD,UAAA;AAAA,IAAA,gBAAAmB,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,MAAA,gBAAAH,EAACf,GAAA,EAAQ,IAAG,MAAM,UAAA,EAAE,SAAS,EAAE,MAAAS,EAAA,CAAM,GAAE;AAAA,wBACtCR,GAAA,EAAK,SAAQ,cAAc,UAAA,EAAE,UAAU,EAAA,CAAE;AAAA,IAAA,GAC5C;AAAA,IAEA,gBAAAgB,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,MAAA,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAO,EAAE,oBAAoB;AAAA,UAC7B,YAAU;AAAA,UACV,SAAAR;AAAA,UACA,cAAc,EAAE,4BAA4B;AAAA,QAAA;AAAA,MAAA;AAAA,MAE9C,gBAAAI,EAAChB,GAAA,EAAM,QAAO,QAAO,OAAO,EAAE,aAAa,GACzC,UAAA,gBAAAgB,EAACd,GAAA,EAAM,UAAA,EAAE,YAAY,GAAE,EAAA,CACzB;AAAA,IAAA,GACF;AAAA,sBAECmB,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAL,EAACb,GAAA,EAAO,SAAQ,aAAY,SAASL,GAAU,YAAYF,GACxD,UAAA,EAAE,gBAAgB,EAAA,CACrB;AAAA,MACA,gBAAAoB,EAACb,GAAA,EAAO,MAAK,UAAS,SAAQ,WAAU,WAAWP,GAChD,UAAA,EAAE,gBAAgB,EAAA,CACrB;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useContractorsGet as g } from "@gusto/embedded-api/react-query/contractorsGet";
|
|
2
|
+
import { useContractorsPostV1ContractorsContractorUuidTerminationMutation as E } from "@gusto/embedded-api/react-query/contractorsPostV1ContractorsContractorUuidTermination";
|
|
3
|
+
import { RFCDate as p } from "@gusto/embedded-api/types/rfcdate";
|
|
4
|
+
import { useBaseSubmit as C } from "../../../Base/useBaseSubmit.js";
|
|
5
|
+
import { composeErrorHandler as b } from "../../../../partner-hook-utils/composeErrorHandler.js";
|
|
6
|
+
import { formatDateToStringDate as y } from "../../../../helpers/dateFormatting.js";
|
|
7
|
+
import { GENERIC_API_ERROR_MESSAGE as D } from "../../../../types/sdkError.js";
|
|
8
|
+
function G({ contractorId: o }) {
|
|
9
|
+
const t = g({ contractorUuid: o }), s = E(), {
|
|
10
|
+
baseSubmitHandler: c,
|
|
11
|
+
error: m,
|
|
12
|
+
setError: u
|
|
13
|
+
} = C("Contractor.Dismissal"), r = b([t], { submitError: m, setSubmitError: u }), d = s.isPending, l = async (n) => {
|
|
14
|
+
let i;
|
|
15
|
+
return await c(n, async (f) => {
|
|
16
|
+
await s.mutateAsync({
|
|
17
|
+
request: {
|
|
18
|
+
contractorUuid: o,
|
|
19
|
+
requestBody: { endDate: new p(y(f)) }
|
|
20
|
+
}
|
|
21
|
+
}), i = { mode: "create", data: void 0 };
|
|
22
|
+
}), i;
|
|
23
|
+
}, { data: e, isLoading: a } = t;
|
|
24
|
+
return a || !e?.contractor ? {
|
|
25
|
+
isLoading: !0,
|
|
26
|
+
errorHandling: !a && !t.error ? {
|
|
27
|
+
...r,
|
|
28
|
+
errors: [
|
|
29
|
+
...r.errors,
|
|
30
|
+
{ category: "internal_error", message: D, fieldErrors: [] }
|
|
31
|
+
]
|
|
32
|
+
} : r
|
|
33
|
+
} : {
|
|
34
|
+
isLoading: !1,
|
|
35
|
+
data: { contractor: e.contractor },
|
|
36
|
+
status: { isPending: d },
|
|
37
|
+
actions: { dismiss: l },
|
|
38
|
+
errorHandling: r
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
G as useDismissal
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=useDismissal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDismissal.js","sources":["../../../../../src/components/Contractor/Dismissal/useDismissal/useDismissal.ts"],"sourcesContent":["import { useContractorsGet } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { useContractorsPostV1ContractorsContractorUuidTerminationMutation } from '@gusto/embedded-api/react-query/contractorsPostV1ContractorsContractorUuidTermination'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult, HookSubmitResult } from '@/partner-hook-utils/types'\nimport { formatDateToStringDate } from '@/helpers/dateFormatting'\nimport { GENERIC_API_ERROR_MESSAGE } from '@/types/sdkError'\n\n/**\n * Props for {@link useDismissal}.\n *\n * @public\n */\nexport interface UseDismissalProps {\n /** The contractor identifier to dismiss. */\n contractorId: string\n}\n\n/**\n * Ready state of {@link useDismissal}.\n *\n * @public\n */\nexport interface UseDismissalReady extends BaseHookReady<\n { contractor: Contractor },\n { isPending: boolean }\n> {\n /** Actions available when the hook has loaded. */\n actions: {\n /** Schedules a dismissal effective on `endDate`. */\n dismiss: (endDate: Date) => Promise<HookSubmitResult<unknown> | undefined>\n }\n}\n\n/**\n * Return type of {@link useDismissal}.\n *\n * @public\n */\nexport type UseDismissalResult = HookLoadingResult | UseDismissalReady\n\n/**\n * Fetches a contractor and exposes an action to schedule their dismissal.\n *\n * @param input - The contractor to dismiss.\n * @returns A {@link HookLoadingResult} while the contractor is being fetched, or a {@link UseDismissalReady} once it has arrived.\n * @public\n */\nexport function useDismissal({ contractorId }: UseDismissalProps): UseDismissalResult {\n const contractorQuery = useContractorsGet({ contractorUuid: contractorId })\n const dismissMutation = useContractorsPostV1ContractorsContractorUuidTerminationMutation()\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('Contractor.Dismissal')\n\n const errorHandling = composeErrorHandler([contractorQuery], { submitError, setSubmitError })\n\n const isPending = dismissMutation.isPending\n\n const dismiss = async (endDate: Date): Promise<HookSubmitResult<unknown> | undefined> => {\n let submitResult: HookSubmitResult<unknown> | undefined\n\n await baseSubmitHandler(endDate, async date => {\n await dismissMutation.mutateAsync({\n request: {\n contractorUuid: contractorId,\n requestBody: { endDate: new RFCDate(formatDateToStringDate(date)!) },\n },\n })\n submitResult = { mode: 'create', data: undefined }\n })\n\n return submitResult\n }\n\n const { data, isLoading } = contractorQuery\n\n if (isLoading || !data?.contractor) {\n // A settled query (not `isLoading`) with no query `error` but also no `contractor` in the\n // response body would otherwise report `isLoading: true` forever with an empty error list —\n // `contractor` is optional on the response type, so this isn't a thrown error we'd catch via\n // `composeErrorHandler`. Surface it as an error so the host sees a real failure state instead\n // of a stuck spinner.\n const settledWithNoContractor = !isLoading && !contractorQuery.error\n return {\n isLoading: true,\n errorHandling: settledWithNoContractor\n ? {\n ...errorHandling,\n errors: [\n ...errorHandling.errors,\n { category: 'internal_error', message: GENERIC_API_ERROR_MESSAGE, fieldErrors: [] },\n ],\n }\n : errorHandling,\n }\n }\n\n return {\n isLoading: false,\n data: { contractor: data.contractor },\n status: { isPending },\n actions: { dismiss },\n errorHandling,\n }\n}\n"],"names":["useDismissal","contractorId","contractorQuery","useContractorsGet","dismissMutation","useContractorsPostV1ContractorsContractorUuidTerminationMutation","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","isPending","dismiss","endDate","submitResult","date","RFCDate","formatDateToStringDate","data","isLoading","GENERIC_API_ERROR_MESSAGE"],"mappings":";;;;;;;AAkDO,SAASA,EAAa,EAAE,cAAAC,KAAuD;AACpF,QAAMC,IAAkBC,EAAkB,EAAE,gBAAgBF,GAAc,GACpEG,IAAkBC,EAAA,GAElB;AAAA,IACJ,mBAAAC;AAAA,IACA,OAAOC;AAAA,IACP,UAAUC;AAAA,EAAA,IACRC,EAAc,sBAAsB,GAElCC,IAAgBC,EAAoB,CAACT,CAAe,GAAG,EAAE,aAAAK,GAAa,gBAAAC,GAAgB,GAEtFI,IAAYR,EAAgB,WAE5BS,IAAU,OAAOC,MAAkE;AACvF,QAAIC;AAEJ,iBAAMT,EAAkBQ,GAAS,OAAME,MAAQ;AAC7C,YAAMZ,EAAgB,YAAY;AAAA,QAChC,SAAS;AAAA,UACP,gBAAgBH;AAAA,UAChB,aAAa,EAAE,SAAS,IAAIgB,EAAQC,EAAuBF,CAAI,CAAE,EAAA;AAAA,QAAE;AAAA,MACrE,CACD,GACDD,IAAe,EAAE,MAAM,UAAU,MAAM,OAAA;AAAA,IACzC,CAAC,GAEMA;AAAA,EACT,GAEM,EAAE,MAAAI,GAAM,WAAAC,EAAA,IAAclB;AAE5B,SAAIkB,KAAa,CAACD,GAAM,aAOf;AAAA,IACL,WAAW;AAAA,IACX,eAH8B,CAACC,KAAa,CAAClB,EAAgB,QAIzD;AAAA,MACE,GAAGQ;AAAA,MACH,QAAQ;AAAA,QACN,GAAGA,EAAc;AAAA,QACjB,EAAE,UAAU,kBAAkB,SAASW,GAA2B,aAAa,CAAA,EAAC;AAAA,MAAE;AAAA,IACpF,IAEFX;AAAA,EAAA,IAID;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,YAAYS,EAAK,WAAA;AAAA,IACzB,QAAQ,EAAE,WAAAP,EAAA;AAAA,IACV,SAAS,EAAE,SAAAC,EAAA;AAAA,IACX,eAAAH;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { state as i, transition as t, reduce as n } from "robot3";
|
|
2
2
|
import { PaymentListContextual as o, CreatePaymentFlowContextual as l, HistoricalPaymentFlowContextual as s, ViewPaymentFlowContextual as u, InformationRequestsContextual as R } from "./PaymentFlowComponents.js";
|
|
3
|
-
import { informationRequestEvents as
|
|
3
|
+
import { informationRequestEvents as c, componentEvents as r, payrollWireEvents as T } from "../../../../shared/constants.js";
|
|
4
4
|
import { patchBreadcrumbsHeader as a } from "../../../../helpers/breadcrumbHelpers.js";
|
|
5
5
|
import { createBreadcrumbNavigateTransition as C } from "../../../Common/FlowBreadcrumbs/breadcrumbTransitionHelpers.js";
|
|
6
6
|
const A = {
|
|
@@ -16,7 +16,7 @@ const A = {
|
|
|
16
16
|
}))
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
},
|
|
19
|
+
}, m = C(), y = {
|
|
20
20
|
landing: i(
|
|
21
21
|
t(
|
|
22
22
|
r.CONTRACTOR_PAYMENT_CREATE,
|
|
@@ -40,10 +40,10 @@ const A = {
|
|
|
40
40
|
r.CONTRACTOR_PAYMENT_VIEW,
|
|
41
41
|
"history",
|
|
42
42
|
n(
|
|
43
|
-
(e,
|
|
43
|
+
(e, d) => ({
|
|
44
44
|
...e,
|
|
45
45
|
component: u,
|
|
46
|
-
currentPaymentId:
|
|
46
|
+
currentPaymentId: d.payload.paymentId,
|
|
47
47
|
alerts: void 0
|
|
48
48
|
})
|
|
49
49
|
)
|
|
@@ -53,20 +53,21 @@ const A = {
|
|
|
53
53
|
"informationRequests",
|
|
54
54
|
n((e) => ({
|
|
55
55
|
...a(e, { currentBreadcrumbId: void 0 }),
|
|
56
|
-
component: R
|
|
56
|
+
component: R,
|
|
57
|
+
alerts: void 0
|
|
57
58
|
}))
|
|
58
59
|
),
|
|
59
60
|
t(
|
|
60
61
|
T.PAYROLL_WIRE_FORM_DONE,
|
|
61
62
|
"landing",
|
|
62
63
|
n(
|
|
63
|
-
(e,
|
|
64
|
+
(e, d) => ({
|
|
64
65
|
...e,
|
|
65
66
|
alerts: [
|
|
66
67
|
{
|
|
67
68
|
type: "success",
|
|
68
69
|
title: "wireDetailsSubmitted",
|
|
69
|
-
content:
|
|
70
|
+
content: d.payload.confirmationAlert.content
|
|
70
71
|
}
|
|
71
72
|
]
|
|
72
73
|
})
|
|
@@ -83,7 +84,7 @@ const A = {
|
|
|
83
84
|
alerts: void 0
|
|
84
85
|
}))
|
|
85
86
|
),
|
|
86
|
-
|
|
87
|
+
m("landing")
|
|
87
88
|
),
|
|
88
89
|
historicalPayment: i(
|
|
89
90
|
t(
|
|
@@ -95,7 +96,7 @@ const A = {
|
|
|
95
96
|
alerts: void 0
|
|
96
97
|
}))
|
|
97
98
|
),
|
|
98
|
-
|
|
99
|
+
m("landing")
|
|
99
100
|
),
|
|
100
101
|
history: i(
|
|
101
102
|
t(
|
|
@@ -112,23 +113,25 @@ const A = {
|
|
|
112
113
|
]
|
|
113
114
|
}))
|
|
114
115
|
),
|
|
115
|
-
|
|
116
|
+
m("landing")
|
|
116
117
|
),
|
|
117
118
|
informationRequests: i(
|
|
118
119
|
t(
|
|
119
|
-
|
|
120
|
+
c.INFORMATION_REQUEST_FORM_DONE,
|
|
120
121
|
"landing",
|
|
121
122
|
n((e) => ({
|
|
122
123
|
...a(e, { currentBreadcrumbId: void 0 }),
|
|
123
|
-
component: o
|
|
124
|
+
component: o,
|
|
125
|
+
alerts: void 0
|
|
124
126
|
}))
|
|
125
127
|
),
|
|
126
128
|
t(
|
|
127
|
-
|
|
129
|
+
c.INFORMATION_REQUEST_FORM_CANCEL,
|
|
128
130
|
"landing",
|
|
129
131
|
n((e) => ({
|
|
130
132
|
...a(e, { currentBreadcrumbId: void 0 }),
|
|
131
|
-
component: o
|
|
133
|
+
component: o,
|
|
134
|
+
alerts: void 0
|
|
132
135
|
}))
|
|
133
136
|
)
|
|
134
137
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymentStateMachine.js","sources":["../../../../../src/components/Contractor/Payments/PaymentFlow/paymentStateMachine.ts"],"sourcesContent":["import { reduce, state, transition } from 'robot3'\nimport type { WireInRequest } from '@gusto/embedded-api/models/components/wireinrequest'\nimport {\n CreatePaymentFlowContextual,\n HistoricalPaymentFlowContextual,\n InformationRequestsContextual,\n PaymentListContextual,\n type PaymentFlowContextInterface,\n ViewPaymentFlowContextual,\n} from './PaymentFlowComponents'\nimport { componentEvents, informationRequestEvents, payrollWireEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport { patchBreadcrumbsHeader } from '@/helpers/breadcrumbHelpers'\nimport type { BreadcrumbNodes } from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { createBreadcrumbNavigateTransition } from '@/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers'\n\ntype EventPayloads = {\n [componentEvents.CONTRACTOR_PAYMENT_CREATE]: undefined\n [componentEvents.CONTRACTOR_PAYMENT_EXIT]: { uuid?: string | null }\n [componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_CREATE]: undefined\n [componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_EXIT]: undefined\n [componentEvents.CONTRACTOR_PAYMENT_VIEW]: { paymentId: string }\n [componentEvents.CONTRACTOR_PAYMENT_CANCEL]: { paymentId: string }\n [componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND]: undefined\n [componentEvents.BREADCRUMB_NAVIGATE]: {\n key: string\n onNavigate: (ctx: PaymentFlowContextInterface) => PaymentFlowContextInterface\n }\n [informationRequestEvents.INFORMATION_REQUEST_FORM_DONE]: undefined\n [informationRequestEvents.INFORMATION_REQUEST_FORM_CANCEL]: undefined\n [payrollWireEvents.PAYROLL_WIRE_FORM_DONE]: {\n wireInRequest: WireInRequest\n confirmationAlert: {\n title: string\n content?: string\n }\n }\n}\n\n/**\n * Hub-level breadcrumb nodes for {@link PaymentFlow}.\n *\n * @remarks\n * Only `landing` is defined here — the `createPayment`, `historicalPayment`, and `history` spokes\n * own and render their own breadcrumb trails (via `CreatePaymentFlow`/`HistoricalPaymentFlow`/\n * `ViewPaymentFlow`), prefixed with this `landing` item so the trail reads continuously across the\n * hub/spoke boundary.\n *\n * @internal\n */\nexport const paymentFlowBreadcrumbsNodes: BreadcrumbNodes = {\n landing: {\n parent: null,\n item: {\n id: 'landing',\n label: 'breadcrumbLabel',\n namespace: 'Contractor.Payments.PaymentsList',\n onNavigate: ((ctx: PaymentFlowContextInterface) => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n })) as (context: unknown) => unknown,\n },\n },\n}\n\nconst breadcrumbNavigateTransition =\n createBreadcrumbNavigateTransition<PaymentFlowContextInterface>()\n\n/**\n * Hub machine for {@link PaymentFlow}.\n *\n * @remarks\n * `createPayment`, `historicalPayment`, and `history` each stay active for the full lifetime of\n * their respective spoke (`CreatePaymentFlow`, `HistoricalPaymentFlow`, `ViewPaymentFlow`) rather\n * than tracking the spoke's internal screen. The spoke's own machine drives its internal steps and\n * breadcrumb trail; events it can't handle locally (e.g. the `landing` breadcrumb, or a terminal\n * exit/cancel event) bubble up here to transition the hub back to `landing`.\n *\n * @internal\n */\nexport const paymentMachine = {\n landing: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_PAYMENT_CREATE,\n 'createPayment',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...ctx,\n component: CreatePaymentFlowContextual,\n alerts: undefined,\n }\n }),\n ),\n transition(\n componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_CREATE,\n 'historicalPayment',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...ctx,\n component: HistoricalPaymentFlowContextual,\n alerts: undefined,\n }\n }),\n ),\n transition(\n componentEvents.CONTRACTOR_PAYMENT_VIEW,\n 'history',\n reduce(\n (\n ctx: PaymentFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_PAYMENT_VIEW>,\n ): PaymentFlowContextInterface => {\n return {\n ...ctx,\n component: ViewPaymentFlowContextual,\n currentPaymentId: ev.payload.paymentId,\n alerts: undefined,\n }\n },\n ),\n ),\n transition(\n componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND,\n 'informationRequests',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: InformationRequestsContextual,\n }\n }),\n ),\n transition(\n payrollWireEvents.PAYROLL_WIRE_FORM_DONE,\n 'landing',\n reduce(\n (\n ctx: PaymentFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof payrollWireEvents.PAYROLL_WIRE_FORM_DONE>,\n ): PaymentFlowContextInterface => {\n return {\n ...ctx,\n alerts: [\n {\n type: 'success',\n title: 'wireDetailsSubmitted',\n content: ev.payload.confirmationAlert.content,\n },\n ],\n }\n },\n ),\n ),\n ),\n createPayment: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_PAYMENT_EXIT,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n alerts: undefined,\n }\n }),\n ),\n breadcrumbNavigateTransition('landing'),\n ),\n historicalPayment: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_EXIT,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n alerts: undefined,\n }\n }),\n ),\n breadcrumbNavigateTransition('landing'),\n ),\n history: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_PAYMENT_CANCEL,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n alerts: [\n {\n type: 'success',\n title: 'paymentCancelledSuccessfully',\n },\n ],\n }\n }),\n ),\n breadcrumbNavigateTransition('landing'),\n ),\n informationRequests: state<MachineTransition>(\n transition(\n informationRequestEvents.INFORMATION_REQUEST_FORM_DONE,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n }\n }),\n ),\n transition(\n informationRequestEvents.INFORMATION_REQUEST_FORM_CANCEL,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n }\n }),\n ),\n ),\n}\n"],"names":["paymentFlowBreadcrumbsNodes","ctx","patchBreadcrumbsHeader","PaymentListContextual","breadcrumbNavigateTransition","createBreadcrumbNavigateTransition","paymentMachine","state","transition","componentEvents","reduce","CreatePaymentFlowContextual","HistoricalPaymentFlowContextual","ev","ViewPaymentFlowContextual","InformationRequestsContextual","payrollWireEvents","informationRequestEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paymentStateMachine.js","sources":["../../../../../src/components/Contractor/Payments/PaymentFlow/paymentStateMachine.ts"],"sourcesContent":["import { reduce, state, transition } from 'robot3'\nimport type { WireInRequest } from '@gusto/embedded-api/models/components/wireinrequest'\nimport {\n CreatePaymentFlowContextual,\n HistoricalPaymentFlowContextual,\n InformationRequestsContextual,\n PaymentListContextual,\n type PaymentFlowContextInterface,\n ViewPaymentFlowContextual,\n} from './PaymentFlowComponents'\nimport { componentEvents, informationRequestEvents, payrollWireEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport { patchBreadcrumbsHeader } from '@/helpers/breadcrumbHelpers'\nimport type { BreadcrumbNodes } from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { createBreadcrumbNavigateTransition } from '@/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers'\n\ntype EventPayloads = {\n [componentEvents.CONTRACTOR_PAYMENT_CREATE]: undefined\n [componentEvents.CONTRACTOR_PAYMENT_EXIT]: { uuid?: string | null }\n [componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_CREATE]: undefined\n [componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_EXIT]: undefined\n [componentEvents.CONTRACTOR_PAYMENT_VIEW]: { paymentId: string }\n [componentEvents.CONTRACTOR_PAYMENT_CANCEL]: { paymentId: string }\n [componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND]: undefined\n [componentEvents.BREADCRUMB_NAVIGATE]: {\n key: string\n onNavigate: (ctx: PaymentFlowContextInterface) => PaymentFlowContextInterface\n }\n [informationRequestEvents.INFORMATION_REQUEST_FORM_DONE]: undefined\n [informationRequestEvents.INFORMATION_REQUEST_FORM_CANCEL]: undefined\n [payrollWireEvents.PAYROLL_WIRE_FORM_DONE]: {\n wireInRequest: WireInRequest\n confirmationAlert: {\n title: string\n content?: string\n }\n }\n}\n\n/**\n * Hub-level breadcrumb nodes for {@link PaymentFlow}.\n *\n * @remarks\n * Only `landing` is defined here — the `createPayment`, `historicalPayment`, and `history` spokes\n * own and render their own breadcrumb trails (via `CreatePaymentFlow`/`HistoricalPaymentFlow`/\n * `ViewPaymentFlow`), prefixed with this `landing` item so the trail reads continuously across the\n * hub/spoke boundary.\n *\n * @internal\n */\nexport const paymentFlowBreadcrumbsNodes: BreadcrumbNodes = {\n landing: {\n parent: null,\n item: {\n id: 'landing',\n label: 'breadcrumbLabel',\n namespace: 'Contractor.Payments.PaymentsList',\n onNavigate: ((ctx: PaymentFlowContextInterface) => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n })) as (context: unknown) => unknown,\n },\n },\n}\n\nconst breadcrumbNavigateTransition =\n createBreadcrumbNavigateTransition<PaymentFlowContextInterface>()\n\n/**\n * Hub machine for {@link PaymentFlow}.\n *\n * @remarks\n * `createPayment`, `historicalPayment`, and `history` each stay active for the full lifetime of\n * their respective spoke (`CreatePaymentFlow`, `HistoricalPaymentFlow`, `ViewPaymentFlow`) rather\n * than tracking the spoke's internal screen. The spoke's own machine drives its internal steps and\n * breadcrumb trail; events it can't handle locally (e.g. the `landing` breadcrumb, or a terminal\n * exit/cancel event) bubble up here to transition the hub back to `landing`.\n *\n * @internal\n */\nexport const paymentMachine = {\n landing: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_PAYMENT_CREATE,\n 'createPayment',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...ctx,\n component: CreatePaymentFlowContextual,\n alerts: undefined,\n }\n }),\n ),\n transition(\n componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_CREATE,\n 'historicalPayment',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...ctx,\n component: HistoricalPaymentFlowContextual,\n alerts: undefined,\n }\n }),\n ),\n transition(\n componentEvents.CONTRACTOR_PAYMENT_VIEW,\n 'history',\n reduce(\n (\n ctx: PaymentFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof componentEvents.CONTRACTOR_PAYMENT_VIEW>,\n ): PaymentFlowContextInterface => {\n return {\n ...ctx,\n component: ViewPaymentFlowContextual,\n currentPaymentId: ev.payload.paymentId,\n alerts: undefined,\n }\n },\n ),\n ),\n transition(\n componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND,\n 'informationRequests',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: InformationRequestsContextual,\n alerts: undefined,\n }\n }),\n ),\n transition(\n payrollWireEvents.PAYROLL_WIRE_FORM_DONE,\n 'landing',\n reduce(\n (\n ctx: PaymentFlowContextInterface,\n ev: MachineEventType<EventPayloads, typeof payrollWireEvents.PAYROLL_WIRE_FORM_DONE>,\n ): PaymentFlowContextInterface => {\n return {\n ...ctx,\n alerts: [\n {\n type: 'success',\n title: 'wireDetailsSubmitted',\n content: ev.payload.confirmationAlert.content,\n },\n ],\n }\n },\n ),\n ),\n ),\n createPayment: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_PAYMENT_EXIT,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n alerts: undefined,\n }\n }),\n ),\n breadcrumbNavigateTransition('landing'),\n ),\n historicalPayment: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_HISTORICAL_PAYMENT_EXIT,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n alerts: undefined,\n }\n }),\n ),\n breadcrumbNavigateTransition('landing'),\n ),\n history: state<MachineTransition>(\n transition(\n componentEvents.CONTRACTOR_PAYMENT_CANCEL,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n alerts: [\n {\n type: 'success',\n title: 'paymentCancelledSuccessfully',\n },\n ],\n }\n }),\n ),\n breadcrumbNavigateTransition('landing'),\n ),\n informationRequests: state<MachineTransition>(\n transition(\n informationRequestEvents.INFORMATION_REQUEST_FORM_DONE,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n alerts: undefined,\n }\n }),\n ),\n transition(\n informationRequestEvents.INFORMATION_REQUEST_FORM_CANCEL,\n 'landing',\n reduce((ctx: PaymentFlowContextInterface): PaymentFlowContextInterface => {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PaymentListContextual,\n alerts: undefined,\n }\n }),\n ),\n ),\n}\n"],"names":["paymentFlowBreadcrumbsNodes","ctx","patchBreadcrumbsHeader","PaymentListContextual","breadcrumbNavigateTransition","createBreadcrumbNavigateTransition","paymentMachine","state","transition","componentEvents","reduce","CreatePaymentFlowContextual","HistoricalPaymentFlowContextual","ev","ViewPaymentFlowContextual","InformationRequestsContextual","payrollWireEvents","informationRequestEvents"],"mappings":"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"}
|