@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
package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js
CHANGED
|
@@ -1,73 +1,71 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as b, useEffect as
|
|
3
|
-
import { useTranslation as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import G from "
|
|
1
|
+
import { jsxs as s, Fragment as j, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useState as b, useEffect as $ } from "react";
|
|
3
|
+
import { useTranslation as z } from "react-i18next";
|
|
4
|
+
import { getContractorDisplayName as y } from "../../shared/helpers.js";
|
|
5
|
+
import { Flex as d } from "../../../Common/Flex/Flex.js";
|
|
6
|
+
import { EmptyData as F } from "../../../Common/EmptyData/EmptyData.js";
|
|
7
|
+
import { HamburgerMenu as L } from "../../../Common/HamburgerMenu/HamburgerMenu.js";
|
|
8
|
+
import { useComponentContext as S } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
9
|
+
import { ContractorOnboardingStatusBadge as G } from "../../../Common/OnboardingStatusBadge/index.js";
|
|
10
|
+
import W from "../../../../assets/icons/trashcan.svg.js";
|
|
10
11
|
import D from "../../../../assets/icons/x-circle.svg.js";
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const l = A();
|
|
25
|
-
return /* @__PURE__ */ o(m, { flexDirection: "column", gap: 0, children: [
|
|
26
|
-
/* @__PURE__ */ a(l.Text, { size: "sm", weight: "medium", children: w(n) }),
|
|
27
|
-
/* @__PURE__ */ a(l.Text, { variant: "supporting", size: "sm", children: n.type ?? "–" })
|
|
12
|
+
import X from "../../../../assets/icons/eye.svg.js";
|
|
13
|
+
import q from "../../../../assets/icons/slash-circle.svg.js";
|
|
14
|
+
import J from "../../../../assets/icons/plus-circle.svg.js";
|
|
15
|
+
import { normalizeToDate as K, formatDateLong as Q, formatDateLongWithYear as U } from "../../../../helpers/dateFormatting.js";
|
|
16
|
+
import { ContractorOnboardingStatus as w } from "../../../../shared/constants.js";
|
|
17
|
+
import { VisuallyHidden as Z } from "../../../Common/VisuallyHidden/VisuallyHidden.js";
|
|
18
|
+
import { useDataView as ee } from "../../../Common/DataView/useDataView.js";
|
|
19
|
+
import { DataView as ie } from "../../../Common/DataView/DataView.js";
|
|
20
|
+
function te({ contractor: l }) {
|
|
21
|
+
const r = S();
|
|
22
|
+
return /* @__PURE__ */ s(d, { flexDirection: "column", gap: 0, children: [
|
|
23
|
+
/* @__PURE__ */ t(r.Text, { size: "sm", weight: "medium", children: y(l) }),
|
|
24
|
+
/* @__PURE__ */ t(r.Text, { variant: "supporting", size: "sm", children: l.type ?? "–" })
|
|
28
25
|
] });
|
|
29
26
|
}
|
|
30
|
-
function p(
|
|
31
|
-
const
|
|
32
|
-
return
|
|
27
|
+
function p(l) {
|
|
28
|
+
const r = K(l);
|
|
29
|
+
return r ? r.getFullYear() === (/* @__PURE__ */ new Date()).getFullYear() ? Q(r) : U(r) : "";
|
|
33
30
|
}
|
|
34
|
-
function
|
|
35
|
-
return
|
|
31
|
+
function ae(l) {
|
|
32
|
+
return l === w.ADMIN_ONBOARDING_REVIEW || l === w.SELF_ONBOARDING_REVIEW;
|
|
36
33
|
}
|
|
37
34
|
function Ae({
|
|
38
|
-
className:
|
|
39
|
-
contractors:
|
|
40
|
-
isFetching:
|
|
41
|
-
selectedTab:
|
|
42
|
-
onTabChange:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
35
|
+
className: l,
|
|
36
|
+
contractors: r,
|
|
37
|
+
isFetching: c,
|
|
38
|
+
selectedTab: u,
|
|
39
|
+
onTabChange: k,
|
|
40
|
+
successMessage: v,
|
|
41
|
+
status: A,
|
|
42
|
+
pagination: I,
|
|
43
|
+
onEdit: E,
|
|
46
44
|
onView: R,
|
|
47
|
-
onDismiss:
|
|
48
|
-
onRehire:
|
|
49
|
-
onDelete:
|
|
50
|
-
onCancelSelfOnboarding:
|
|
51
|
-
onCancelDismissal:
|
|
52
|
-
onCancelRehire:
|
|
53
|
-
onAddContractor:
|
|
45
|
+
onDismiss: B,
|
|
46
|
+
onRehire: O,
|
|
47
|
+
onDelete: T,
|
|
48
|
+
onCancelSelfOnboarding: x,
|
|
49
|
+
onCancelDismissal: N,
|
|
50
|
+
onCancelRehire: P,
|
|
51
|
+
onAddContractor: _
|
|
54
52
|
}) {
|
|
55
|
-
const { t: e } =
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}, [
|
|
59
|
-
const
|
|
53
|
+
const { t: e } = z("Contractor.ManagementContractorList"), n = S(), [f, h] = b(null), [o, g] = b(null), [m, V] = b(u);
|
|
54
|
+
$(() => {
|
|
55
|
+
c || V(u);
|
|
56
|
+
}, [u, c]);
|
|
57
|
+
const H = [
|
|
60
58
|
{ id: "active", label: e("tabs.active"), content: null },
|
|
61
59
|
{ id: "onboarding", label: e("tabs.onboarding"), content: null },
|
|
62
60
|
{ id: "dismissed", label: e("tabs.dismissed"), content: null }
|
|
63
61
|
], M = () => {
|
|
64
|
-
const
|
|
62
|
+
const a = {
|
|
65
63
|
key: "name",
|
|
66
64
|
title: e("nameLabel"),
|
|
67
|
-
render: (i) => /* @__PURE__ */
|
|
65
|
+
render: (i) => /* @__PURE__ */ t(te, { contractor: i })
|
|
68
66
|
};
|
|
69
|
-
return
|
|
70
|
-
|
|
67
|
+
return m === "active" ? [
|
|
68
|
+
a,
|
|
71
69
|
{
|
|
72
70
|
key: "rate",
|
|
73
71
|
title: e("rateLabel"),
|
|
@@ -75,147 +73,148 @@ function Ae({
|
|
|
75
73
|
},
|
|
76
74
|
{
|
|
77
75
|
key: "status",
|
|
78
|
-
title: /* @__PURE__ */
|
|
79
|
-
render: (i) => i.upcomingEmployment?.startDate ? /* @__PURE__ */
|
|
76
|
+
title: /* @__PURE__ */ t(Z, { children: e("statusColumnLabel") }),
|
|
77
|
+
render: (i) => i.upcomingEmployment?.startDate ? /* @__PURE__ */ t(n.Badge, { status: "info", children: e("startsBadge", {
|
|
80
78
|
date: p(i.upcomingEmployment.startDate)
|
|
81
|
-
}) }) : i.dismissalDate ? /* @__PURE__ */
|
|
79
|
+
}) }) : i.dismissalDate ? /* @__PURE__ */ t(n.Badge, { status: "warning", children: e("lastDayBadge", { date: p(i.dismissalDate) }) }) : null
|
|
82
80
|
}
|
|
83
|
-
] :
|
|
84
|
-
|
|
81
|
+
] : m === "onboarding" ? [
|
|
82
|
+
a,
|
|
85
83
|
{
|
|
86
84
|
key: "status",
|
|
87
85
|
title: e("onboardingStatusLabel"),
|
|
88
|
-
render: (i) => /* @__PURE__ */
|
|
89
|
-
/* @__PURE__ */
|
|
90
|
-
|
|
86
|
+
render: (i) => /* @__PURE__ */ s(d, { alignItems: "center", gap: 8, children: [
|
|
87
|
+
/* @__PURE__ */ t(
|
|
88
|
+
G,
|
|
91
89
|
{
|
|
92
90
|
onboarded: i.onboarded,
|
|
93
91
|
onboardingStatus: i.onboardingStatus
|
|
94
92
|
}
|
|
95
93
|
),
|
|
96
|
-
i.onboardingStatus ===
|
|
94
|
+
i.onboardingStatus === w.ONBOARDING_COMPLETED && i.upcomingEmployment?.startDate && /* @__PURE__ */ t(n.Badge, { status: "info", children: e("startsBadge", {
|
|
97
95
|
date: p(i.upcomingEmployment.startDate)
|
|
98
96
|
}) })
|
|
99
97
|
] })
|
|
100
98
|
}
|
|
101
99
|
] : [
|
|
102
|
-
|
|
100
|
+
a,
|
|
103
101
|
{
|
|
104
102
|
key: "dismissalDate",
|
|
105
103
|
title: e("dismissalDateLabel"),
|
|
106
104
|
render: (i) => i.dismissalDate ? p(i.dismissalDate) : "–"
|
|
107
105
|
}
|
|
108
106
|
];
|
|
109
|
-
}, { ...Y } =
|
|
110
|
-
data:
|
|
107
|
+
}, { ...Y } = ee({
|
|
108
|
+
data: r,
|
|
111
109
|
columns: M(),
|
|
112
|
-
itemMenu: (
|
|
113
|
-
if (
|
|
110
|
+
itemMenu: (a) => {
|
|
111
|
+
if (m === "onboarding") {
|
|
114
112
|
const C = [];
|
|
115
|
-
return
|
|
113
|
+
return a.allowedActions.includes("cancel_self_onboarding") && C.push({
|
|
116
114
|
label: e("cancelSelfOnboardingCta"),
|
|
117
115
|
onClick: () => {
|
|
118
|
-
|
|
116
|
+
x(a.uuid);
|
|
119
117
|
},
|
|
120
|
-
icon: /* @__PURE__ */
|
|
121
|
-
}),
|
|
118
|
+
icon: /* @__PURE__ */ t(D, { "aria-hidden": !0 })
|
|
119
|
+
}), a.allowedActions.includes("delete") && C.push({
|
|
122
120
|
label: e("removeCta"),
|
|
123
121
|
onClick: () => {
|
|
124
|
-
h(
|
|
122
|
+
h(a.uuid);
|
|
125
123
|
},
|
|
126
|
-
icon: /* @__PURE__ */
|
|
127
|
-
}), /* @__PURE__ */
|
|
128
|
-
|
|
129
|
-
|
|
124
|
+
icon: /* @__PURE__ */ t(W, { "aria-hidden": !0 })
|
|
125
|
+
}), /* @__PURE__ */ s(d, { alignItems: "center", justifyContent: "flex-end", gap: 4, children: [
|
|
126
|
+
a.allowedActions.includes("edit") && /* @__PURE__ */ t(
|
|
127
|
+
n.Button,
|
|
130
128
|
{
|
|
131
129
|
variant: "secondary",
|
|
132
130
|
onClick: () => {
|
|
133
|
-
|
|
131
|
+
E(a.uuid);
|
|
134
132
|
},
|
|
135
|
-
children:
|
|
133
|
+
children: ae(a.onboardingStatus) ? e("reviewCta") : e("continueCta")
|
|
136
134
|
}
|
|
137
135
|
),
|
|
138
|
-
/* @__PURE__ */
|
|
139
|
-
|
|
136
|
+
/* @__PURE__ */ t(
|
|
137
|
+
L,
|
|
140
138
|
{
|
|
141
139
|
items: C,
|
|
142
|
-
triggerLabel: e("hamburgerTitle", { name:
|
|
140
|
+
triggerLabel: e("hamburgerTitle", { name: y(a) })
|
|
143
141
|
}
|
|
144
142
|
)
|
|
145
143
|
] });
|
|
146
144
|
}
|
|
147
145
|
const i = [];
|
|
148
|
-
return
|
|
146
|
+
return a.allowedActions.includes("view") && i.push({
|
|
149
147
|
label: e("viewDetailsCta"),
|
|
150
148
|
onClick: () => {
|
|
151
|
-
R(
|
|
149
|
+
R(a.uuid);
|
|
152
150
|
},
|
|
153
|
-
icon: /* @__PURE__ */
|
|
154
|
-
}),
|
|
151
|
+
icon: /* @__PURE__ */ t(X, { "aria-hidden": !0 })
|
|
152
|
+
}), a.allowedActions.includes("cancel_rehire") && i.push({
|
|
155
153
|
label: e("cancelRehireCta"),
|
|
156
154
|
onClick: () => {
|
|
157
|
-
g({ contractorId:
|
|
155
|
+
g({ contractorId: a.uuid, type: "rehire" });
|
|
158
156
|
},
|
|
159
|
-
icon: /* @__PURE__ */
|
|
160
|
-
}),
|
|
157
|
+
icon: /* @__PURE__ */ t(D, { "aria-hidden": !0 })
|
|
158
|
+
}), a.allowedActions.includes("cancel_dismissal") && i.push({
|
|
161
159
|
label: e("cancelDismissalCta"),
|
|
162
160
|
onClick: () => {
|
|
163
|
-
g({ contractorId:
|
|
161
|
+
g({ contractorId: a.uuid, type: "dismissal" });
|
|
164
162
|
},
|
|
165
|
-
icon: /* @__PURE__ */
|
|
166
|
-
}),
|
|
163
|
+
icon: /* @__PURE__ */ t(D, { "aria-hidden": !0 })
|
|
164
|
+
}), a.allowedActions.includes("dismiss") && i.push({
|
|
167
165
|
label: e("dismissCta"),
|
|
168
166
|
onClick: () => {
|
|
169
|
-
|
|
167
|
+
B(a.uuid);
|
|
170
168
|
},
|
|
171
|
-
icon: /* @__PURE__ */
|
|
172
|
-
}),
|
|
169
|
+
icon: /* @__PURE__ */ t(q, { "aria-hidden": !0 })
|
|
170
|
+
}), a.allowedActions.includes("rehire") && i.push({
|
|
173
171
|
label: e("rehireCta"),
|
|
174
172
|
onClick: () => {
|
|
175
|
-
|
|
173
|
+
O(a.uuid);
|
|
176
174
|
},
|
|
177
|
-
icon: /* @__PURE__ */
|
|
178
|
-
}), /* @__PURE__ */
|
|
179
|
-
|
|
175
|
+
icon: /* @__PURE__ */ t(J, { "aria-hidden": !0 })
|
|
176
|
+
}), /* @__PURE__ */ t(
|
|
177
|
+
L,
|
|
180
178
|
{
|
|
181
179
|
items: i,
|
|
182
|
-
triggerLabel: e("hamburgerTitle", { name:
|
|
180
|
+
triggerLabel: e("hamburgerTitle", { name: y(a) })
|
|
183
181
|
}
|
|
184
182
|
);
|
|
185
183
|
},
|
|
186
|
-
isFetching:
|
|
187
|
-
pagination:
|
|
188
|
-
emptyState: () => /* @__PURE__ */
|
|
189
|
-
|
|
184
|
+
isFetching: c,
|
|
185
|
+
pagination: I,
|
|
186
|
+
emptyState: () => /* @__PURE__ */ t(
|
|
187
|
+
F,
|
|
190
188
|
{
|
|
191
|
-
title: e(`emptyState.${
|
|
192
|
-
description: e(`emptyState.${
|
|
189
|
+
title: e(`emptyState.${m}.title`),
|
|
190
|
+
description: e(`emptyState.${m}.description`)
|
|
193
191
|
}
|
|
194
192
|
)
|
|
195
193
|
});
|
|
196
|
-
return /* @__PURE__ */
|
|
197
|
-
/* @__PURE__ */
|
|
198
|
-
/* @__PURE__ */
|
|
199
|
-
|
|
200
|
-
/* @__PURE__ */
|
|
194
|
+
return /* @__PURE__ */ s(j, { children: [
|
|
195
|
+
/* @__PURE__ */ s(d, { className: l, flexDirection: "column", gap: 32, children: [
|
|
196
|
+
v && /* @__PURE__ */ t(n.Alert, { label: v, status: "success" }),
|
|
197
|
+
/* @__PURE__ */ s(d, { justifyContent: "space-between", alignItems: "center", children: [
|
|
198
|
+
/* @__PURE__ */ t(n.Heading, { as: "h2", children: e("title") }),
|
|
199
|
+
/* @__PURE__ */ t(n.Button, { variant: "secondary", onClick: _, children: e("addContractorCta") })
|
|
201
200
|
] }),
|
|
202
|
-
/* @__PURE__ */
|
|
203
|
-
/* @__PURE__ */
|
|
204
|
-
|
|
201
|
+
/* @__PURE__ */ s(d, { flexDirection: "column", gap: 0, children: [
|
|
202
|
+
/* @__PURE__ */ t(
|
|
203
|
+
n.Tabs,
|
|
205
204
|
{
|
|
206
|
-
tabs:
|
|
207
|
-
selectedId:
|
|
208
|
-
onSelectionChange: (
|
|
209
|
-
|
|
205
|
+
tabs: H,
|
|
206
|
+
selectedId: u,
|
|
207
|
+
onSelectionChange: (a) => {
|
|
208
|
+
k(a);
|
|
210
209
|
},
|
|
211
210
|
"aria-label": e("tabsLabel")
|
|
212
211
|
}
|
|
213
212
|
),
|
|
214
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ t(ie, { label: e("contractorListLabel"), ...Y })
|
|
215
214
|
] })
|
|
216
215
|
] }),
|
|
217
|
-
/* @__PURE__ */
|
|
218
|
-
|
|
216
|
+
/* @__PURE__ */ t(
|
|
217
|
+
n.Dialog,
|
|
219
218
|
{
|
|
220
219
|
isOpen: !!f,
|
|
221
220
|
onClose: () => {
|
|
@@ -224,11 +223,11 @@ function Ae({
|
|
|
224
223
|
onPrimaryActionClick: async () => {
|
|
225
224
|
if (f)
|
|
226
225
|
try {
|
|
227
|
-
await
|
|
226
|
+
await T(f), h(null);
|
|
228
227
|
} catch {
|
|
229
228
|
}
|
|
230
229
|
},
|
|
231
|
-
isPrimaryActionLoading:
|
|
230
|
+
isPrimaryActionLoading: A.isPending,
|
|
232
231
|
isDestructive: !0,
|
|
233
232
|
title: e("removeDialog.title"),
|
|
234
233
|
primaryActionLabel: e("removeDialog.confirmCta"),
|
|
@@ -236,25 +235,25 @@ function Ae({
|
|
|
236
235
|
children: e("removeDialog.description")
|
|
237
236
|
}
|
|
238
237
|
),
|
|
239
|
-
/* @__PURE__ */
|
|
240
|
-
|
|
238
|
+
/* @__PURE__ */ t(
|
|
239
|
+
n.Dialog,
|
|
241
240
|
{
|
|
242
|
-
isOpen: !!
|
|
241
|
+
isOpen: !!o,
|
|
243
242
|
onClose: () => {
|
|
244
243
|
g(null);
|
|
245
244
|
},
|
|
246
245
|
onPrimaryActionClick: async () => {
|
|
247
|
-
if (
|
|
246
|
+
if (o)
|
|
248
247
|
try {
|
|
249
|
-
|
|
248
|
+
o.type === "rehire" ? await P(o.contractorId) : await N(o.contractorId), g(null);
|
|
250
249
|
} catch {
|
|
251
250
|
}
|
|
252
251
|
},
|
|
253
|
-
isPrimaryActionLoading:
|
|
254
|
-
title:
|
|
255
|
-
primaryActionLabel:
|
|
256
|
-
closeActionLabel:
|
|
257
|
-
children:
|
|
252
|
+
isPrimaryActionLoading: A.isPending,
|
|
253
|
+
title: o?.type === "rehire" ? e("cancelRehireDialog.title") : e("cancelDismissalDialog.title"),
|
|
254
|
+
primaryActionLabel: o?.type === "rehire" ? e("cancelRehireDialog.confirmCta") : e("cancelDismissalDialog.confirmCta"),
|
|
255
|
+
closeActionLabel: o?.type === "rehire" ? e("cancelRehireDialog.cancelCta") : e("cancelDismissalDialog.cancelCta"),
|
|
256
|
+
children: o?.type === "rehire" ? e("cancelRehireDialog.description") : e("cancelDismissalDialog.description")
|
|
258
257
|
}
|
|
259
258
|
)
|
|
260
259
|
] });
|
package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagementContractorListView.js","sources":["../../../../../src/components/Contractor/ContractorList/management/ManagementContractorListView.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { UseContractorListResult, ContractorWithActions } from '../shared/useContractorList'\nimport type { ContractorTab } from './ManagementContractorList'\nimport { DataView, EmptyData, useDataView, Flex, VisuallyHidden } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { ContractorOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport XCircleSvg from '@/assets/icons/x-circle.svg?react'\nimport EyeSvg from '@/assets/icons/eye.svg?react'\nimport SlashCircleSvg from '@/assets/icons/slash-circle.svg?react'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport { normalizeToDate, formatDateLong, formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport { CONTRACTOR_TYPE, ContractorOnboardingStatus } from '@/shared/constants'\n\n/** @internal */\nexport interface ManagementContractorListViewProps extends Pick<\n Extract<UseContractorListResult, { isLoading: false }>,\n 'pagination' | 'status'\n> {\n /** CSS class name applied to the root element. */\n className?: string\n contractors: ContractorWithActions[]\n isFetching: boolean\n selectedTab: ContractorTab\n onTabChange: (tab: ContractorTab) => void\n onEdit: (contractorId: string) => void\n onView: (contractorId: string) => void\n onDismiss: (contractorId: string) => void\n onRehire: (contractorId: string) => void\n onDelete: (contractorId: string) => Promise<void>\n onCancelSelfOnboarding: (contractorId: string) => Promise<void>\n onCancelDismissal: (contractorId: string) => Promise<void>\n onCancelRehire: (contractorId: string) => Promise<void>\n onAddContractor: () => void\n}\n\nfunction contractorDisplayName(contractor: ContractorWithActions) {\n return contractor.type === CONTRACTOR_TYPE.BUSINESS\n ? (contractor.businessName ?? '')\n : firstLastName({ first_name: contractor.firstName, last_name: contractor.lastName })\n}\n\nfunction ContractorNameCell({ contractor }: { contractor: ContractorWithActions }) {\n const Components = useComponentContext()\n return (\n <Flex flexDirection=\"column\" gap={0}>\n <Components.Text size=\"sm\" weight=\"medium\">\n {contractorDisplayName(contractor)}\n </Components.Text>\n <Components.Text variant=\"supporting\" size=\"sm\">\n {contractor.type ?? '–'}\n </Components.Text>\n </Flex>\n )\n}\n\nfunction formatBadgeDate(dateStr: string): string {\n const date = normalizeToDate(dateStr)\n if (!date) return ''\n const isSameYear = date.getFullYear() === new Date().getFullYear()\n return isSameYear ? formatDateLong(date) : formatDateLongWithYear(date)\n}\n\nfunction isOnboardingEditReview(onboardingStatus?: string | null) {\n return (\n onboardingStatus === ContractorOnboardingStatus.ADMIN_ONBOARDING_REVIEW ||\n onboardingStatus === ContractorOnboardingStatus.SELF_ONBOARDING_REVIEW\n )\n}\n\n/** @internal */\nexport function ManagementContractorListView({\n className,\n contractors,\n isFetching,\n selectedTab,\n onTabChange,\n status,\n pagination,\n onEdit,\n onView,\n onDismiss,\n onRehire,\n onDelete,\n onCancelSelfOnboarding,\n onCancelDismissal,\n onCancelRehire,\n onAddContractor,\n}: ManagementContractorListViewProps) {\n const { t } = useTranslation('Contractor.ManagementContractorList')\n const Components = useComponentContext()\n const [contractorToRemove, setContractorToRemove] = useState<string | null>(null)\n const [cancelAction, setCancelAction] = useState<{\n contractorId: string\n type: 'dismissal' | 'rehire'\n } | null>(null)\n\n // Columns, item-menu shape, and empty-state copy stay pinned to the previously\n // committed tab until the new tab's data lands, so they swap in one paint together\n // with `contractors`/`pagination` instead of flashing ahead of the still-stale rows\n // that `keepPreviousData` is rendering.\n const [committedTab, setCommittedTab] = useState(selectedTab)\n useEffect(() => {\n if (!isFetching) {\n setCommittedTab(selectedTab)\n }\n }, [selectedTab, isFetching])\n\n const tabs = [\n { id: 'active', label: t('tabs.active'), content: null },\n { id: 'onboarding', label: t('tabs.onboarding'), content: null },\n { id: 'dismissed', label: t('tabs.dismissed'), content: null },\n ]\n\n const getColumns = () => {\n const nameColumn = {\n key: 'name',\n title: t('nameLabel'),\n render: (contractor: ContractorWithActions) => <ContractorNameCell contractor={contractor} />,\n }\n\n if (committedTab === 'active') {\n return [\n nameColumn,\n {\n key: 'rate',\n title: t('rateLabel'),\n render: (contractor: ContractorWithActions) =>\n contractor.wageType === 'Hourly' && contractor.hourlyRate\n ? t('rateHourly', { rate: `$${contractor.hourlyRate}` })\n : (contractor.wageType ?? '–'),\n },\n {\n key: 'status',\n title: <VisuallyHidden>{t('statusColumnLabel')}</VisuallyHidden>,\n render: (contractor: ContractorWithActions) => {\n if (contractor.upcomingEmployment?.startDate) {\n return (\n <Components.Badge status=\"info\">\n {t('startsBadge', {\n date: formatBadgeDate(contractor.upcomingEmployment.startDate),\n })}\n </Components.Badge>\n )\n }\n if (contractor.dismissalDate) {\n return (\n <Components.Badge status=\"warning\">\n {t('lastDayBadge', { date: formatBadgeDate(contractor.dismissalDate) })}\n </Components.Badge>\n )\n }\n return null\n },\n },\n ]\n }\n\n if (committedTab === 'onboarding') {\n return [\n nameColumn,\n {\n key: 'status',\n title: t('onboardingStatusLabel'),\n render: (contractor: ContractorWithActions) => (\n <Flex alignItems=\"center\" gap={8}>\n <ContractorOnboardingStatusBadge\n onboarded={contractor.onboarded}\n onboardingStatus={contractor.onboardingStatus}\n />\n {contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED &&\n contractor.upcomingEmployment?.startDate && (\n <Components.Badge status=\"info\">\n {t('startsBadge', {\n date: formatBadgeDate(contractor.upcomingEmployment.startDate),\n })}\n </Components.Badge>\n )}\n </Flex>\n ),\n },\n ]\n }\n\n return [\n nameColumn,\n {\n key: 'dismissalDate',\n title: t('dismissalDateLabel'),\n render: (contractor: ContractorWithActions) =>\n contractor.dismissalDate ? formatBadgeDate(contractor.dismissalDate) : '–',\n },\n ]\n }\n\n const { ...dataViewProps } = useDataView({\n data: contractors,\n columns: getColumns(),\n itemMenu: contractor => {\n if (committedTab === 'onboarding') {\n const menuItems = []\n\n if (contractor.allowedActions.includes('cancel_self_onboarding')) {\n menuItems.push({\n label: t('cancelSelfOnboardingCta'),\n onClick: () => {\n void onCancelSelfOnboarding(contractor.uuid)\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('delete')) {\n menuItems.push({\n label: t('removeCta'),\n onClick: () => {\n setContractorToRemove(contractor.uuid)\n },\n icon: <TrashCanSvg aria-hidden />,\n })\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"flex-end\" gap={4}>\n {contractor.allowedActions.includes('edit') && (\n <Components.Button\n variant=\"secondary\"\n onClick={() => {\n onEdit(contractor.uuid)\n }}\n >\n {isOnboardingEditReview(contractor.onboardingStatus)\n ? t('reviewCta')\n : t('continueCta')}\n </Components.Button>\n )}\n <HamburgerMenu\n items={menuItems}\n triggerLabel={t('hamburgerTitle', { name: contractorDisplayName(contractor) })}\n />\n </Flex>\n )\n }\n\n const menuItems = []\n\n if (contractor.allowedActions.includes('view')) {\n menuItems.push({\n label: t('viewDetailsCta'),\n onClick: () => {\n onView(contractor.uuid)\n },\n icon: <EyeSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('cancel_rehire')) {\n menuItems.push({\n label: t('cancelRehireCta'),\n onClick: () => {\n setCancelAction({ contractorId: contractor.uuid, type: 'rehire' })\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('cancel_dismissal')) {\n menuItems.push({\n label: t('cancelDismissalCta'),\n onClick: () => {\n setCancelAction({ contractorId: contractor.uuid, type: 'dismissal' })\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('dismiss')) {\n menuItems.push({\n label: t('dismissCta'),\n onClick: () => {\n onDismiss(contractor.uuid)\n },\n icon: <SlashCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('rehire')) {\n menuItems.push({\n label: t('rehireCta'),\n onClick: () => {\n onRehire(contractor.uuid)\n },\n icon: <PlusCircleIcon aria-hidden />,\n })\n }\n\n return (\n <HamburgerMenu\n items={menuItems}\n triggerLabel={t('hamburgerTitle', { name: contractorDisplayName(contractor) })}\n />\n )\n },\n isFetching,\n pagination,\n emptyState: () => (\n <EmptyData\n title={t(`emptyState.${committedTab}.title`)}\n description={t(`emptyState.${committedTab}.description`)}\n />\n ),\n })\n\n return (\n <>\n <Flex className={className} flexDirection=\"column\" gap={32}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Button variant=\"secondary\" onClick={onAddContractor}>\n {t('addContractorCta')}\n </Components.Button>\n </Flex>\n\n <Flex flexDirection=\"column\" gap={0}>\n <Components.Tabs\n tabs={tabs}\n selectedId={selectedTab}\n onSelectionChange={id => {\n onTabChange(id as ContractorTab)\n }}\n aria-label={t('tabsLabel')}\n />\n\n <DataView label={t('contractorListLabel')} {...dataViewProps} />\n </Flex>\n </Flex>\n\n <Components.Dialog\n isOpen={!!contractorToRemove}\n onClose={() => {\n setContractorToRemove(null)\n }}\n onPrimaryActionClick={async () => {\n if (contractorToRemove) {\n try {\n await onDelete(contractorToRemove)\n setContractorToRemove(null)\n } catch {\n // Keep dialog open on error\n }\n }\n }}\n isPrimaryActionLoading={status.isPending}\n isDestructive\n title={t('removeDialog.title')}\n primaryActionLabel={t('removeDialog.confirmCta')}\n closeActionLabel={t('removeDialog.cancelCta')}\n >\n {t('removeDialog.description')}\n </Components.Dialog>\n\n <Components.Dialog\n isOpen={!!cancelAction}\n onClose={() => {\n setCancelAction(null)\n }}\n onPrimaryActionClick={async () => {\n if (!cancelAction) return\n try {\n if (cancelAction.type === 'rehire') {\n await onCancelRehire(cancelAction.contractorId)\n } else {\n await onCancelDismissal(cancelAction.contractorId)\n }\n setCancelAction(null)\n } catch {\n // Keep dialog open on error\n }\n }}\n isPrimaryActionLoading={status.isPending}\n title={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.title')\n : t('cancelDismissalDialog.title')\n }\n primaryActionLabel={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.confirmCta')\n : t('cancelDismissalDialog.confirmCta')\n }\n closeActionLabel={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.cancelCta')\n : t('cancelDismissalDialog.cancelCta')\n }\n >\n {cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.description')\n : t('cancelDismissalDialog.description')}\n </Components.Dialog>\n </>\n )\n}\n"],"names":["contractorDisplayName","contractor","CONTRACTOR_TYPE","firstLastName","ContractorNameCell","Components","useComponentContext","jsxs","Flex","jsx","formatBadgeDate","dateStr","date","normalizeToDate","formatDateLong","formatDateLongWithYear","isOnboardingEditReview","onboardingStatus","ContractorOnboardingStatus","ManagementContractorListView","className","contractors","isFetching","selectedTab","onTabChange","status","pagination","onEdit","onView","onDismiss","onRehire","onDelete","onCancelSelfOnboarding","onCancelDismissal","onCancelRehire","onAddContractor","t","useTranslation","contractorToRemove","setContractorToRemove","useState","cancelAction","setCancelAction","committedTab","setCommittedTab","useEffect","tabs","getColumns","nameColumn","VisuallyHidden","ContractorOnboardingStatusBadge","dataViewProps","useDataView","menuItems","XCircleSvg","TrashCanSvg","HamburgerMenu","EyeSvg","SlashCircleSvg","PlusCircleIcon","EmptyData","Fragment","id","DataView"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ManagementContractorListView.js","sources":["../../../../../src/components/Contractor/ContractorList/management/ManagementContractorListView.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { UseContractorListResult, ContractorWithActions } from '../shared/useContractorList'\nimport { getContractorDisplayName } from '../../shared/helpers'\nimport type { ContractorTab } from './ManagementContractorList'\nimport { DataView, EmptyData, useDataView, Flex, VisuallyHidden } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { ContractorOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport XCircleSvg from '@/assets/icons/x-circle.svg?react'\nimport EyeSvg from '@/assets/icons/eye.svg?react'\nimport SlashCircleSvg from '@/assets/icons/slash-circle.svg?react'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\nimport { normalizeToDate, formatDateLong, formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport { ContractorOnboardingStatus } from '@/shared/constants'\n\n/** @internal */\nexport interface ManagementContractorListViewProps extends Pick<\n Extract<UseContractorListResult, { isLoading: false }>,\n 'pagination' | 'status'\n> {\n /** CSS class name applied to the root element. */\n className?: string\n contractors: ContractorWithActions[]\n isFetching: boolean\n selectedTab: ContractorTab\n onTabChange: (tab: ContractorTab) => void\n /** Success message to display in an alert above the list, typically after a dismissal is scheduled. */\n successMessage?: string\n onEdit: (contractorId: string) => void\n onView: (contractorId: string) => void\n onDismiss: (contractorId: string) => void\n onRehire: (contractorId: string) => void\n onDelete: (contractorId: string) => Promise<void>\n onCancelSelfOnboarding: (contractorId: string) => Promise<void>\n onCancelDismissal: (contractorId: string) => Promise<void>\n onCancelRehire: (contractorId: string) => Promise<void>\n onAddContractor: () => void\n}\n\nfunction ContractorNameCell({ contractor }: { contractor: ContractorWithActions }) {\n const Components = useComponentContext()\n return (\n <Flex flexDirection=\"column\" gap={0}>\n <Components.Text size=\"sm\" weight=\"medium\">\n {getContractorDisplayName(contractor)}\n </Components.Text>\n <Components.Text variant=\"supporting\" size=\"sm\">\n {contractor.type ?? '–'}\n </Components.Text>\n </Flex>\n )\n}\n\nfunction formatBadgeDate(dateStr: string): string {\n const date = normalizeToDate(dateStr)\n if (!date) return ''\n const isSameYear = date.getFullYear() === new Date().getFullYear()\n return isSameYear ? formatDateLong(date) : formatDateLongWithYear(date)\n}\n\nfunction isOnboardingEditReview(onboardingStatus?: string | null) {\n return (\n onboardingStatus === ContractorOnboardingStatus.ADMIN_ONBOARDING_REVIEW ||\n onboardingStatus === ContractorOnboardingStatus.SELF_ONBOARDING_REVIEW\n )\n}\n\n/** @internal */\nexport function ManagementContractorListView({\n className,\n contractors,\n isFetching,\n selectedTab,\n onTabChange,\n successMessage,\n status,\n pagination,\n onEdit,\n onView,\n onDismiss,\n onRehire,\n onDelete,\n onCancelSelfOnboarding,\n onCancelDismissal,\n onCancelRehire,\n onAddContractor,\n}: ManagementContractorListViewProps) {\n const { t } = useTranslation('Contractor.ManagementContractorList')\n const Components = useComponentContext()\n const [contractorToRemove, setContractorToRemove] = useState<string | null>(null)\n const [cancelAction, setCancelAction] = useState<{\n contractorId: string\n type: 'dismissal' | 'rehire'\n } | null>(null)\n\n // Columns, item-menu shape, and empty-state copy stay pinned to the previously\n // committed tab until the new tab's data lands, so they swap in one paint together\n // with `contractors`/`pagination` instead of flashing ahead of the still-stale rows\n // that `keepPreviousData` is rendering.\n const [committedTab, setCommittedTab] = useState(selectedTab)\n useEffect(() => {\n if (!isFetching) {\n setCommittedTab(selectedTab)\n }\n }, [selectedTab, isFetching])\n\n const tabs = [\n { id: 'active', label: t('tabs.active'), content: null },\n { id: 'onboarding', label: t('tabs.onboarding'), content: null },\n { id: 'dismissed', label: t('tabs.dismissed'), content: null },\n ]\n\n const getColumns = () => {\n const nameColumn = {\n key: 'name',\n title: t('nameLabel'),\n render: (contractor: ContractorWithActions) => <ContractorNameCell contractor={contractor} />,\n }\n\n if (committedTab === 'active') {\n return [\n nameColumn,\n {\n key: 'rate',\n title: t('rateLabel'),\n render: (contractor: ContractorWithActions) =>\n contractor.wageType === 'Hourly' && contractor.hourlyRate\n ? t('rateHourly', { rate: `$${contractor.hourlyRate}` })\n : (contractor.wageType ?? '–'),\n },\n {\n key: 'status',\n title: <VisuallyHidden>{t('statusColumnLabel')}</VisuallyHidden>,\n render: (contractor: ContractorWithActions) => {\n if (contractor.upcomingEmployment?.startDate) {\n return (\n <Components.Badge status=\"info\">\n {t('startsBadge', {\n date: formatBadgeDate(contractor.upcomingEmployment.startDate),\n })}\n </Components.Badge>\n )\n }\n if (contractor.dismissalDate) {\n return (\n <Components.Badge status=\"warning\">\n {t('lastDayBadge', { date: formatBadgeDate(contractor.dismissalDate) })}\n </Components.Badge>\n )\n }\n return null\n },\n },\n ]\n }\n\n if (committedTab === 'onboarding') {\n return [\n nameColumn,\n {\n key: 'status',\n title: t('onboardingStatusLabel'),\n render: (contractor: ContractorWithActions) => (\n <Flex alignItems=\"center\" gap={8}>\n <ContractorOnboardingStatusBadge\n onboarded={contractor.onboarded}\n onboardingStatus={contractor.onboardingStatus}\n />\n {contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED &&\n contractor.upcomingEmployment?.startDate && (\n <Components.Badge status=\"info\">\n {t('startsBadge', {\n date: formatBadgeDate(contractor.upcomingEmployment.startDate),\n })}\n </Components.Badge>\n )}\n </Flex>\n ),\n },\n ]\n }\n\n return [\n nameColumn,\n {\n key: 'dismissalDate',\n title: t('dismissalDateLabel'),\n render: (contractor: ContractorWithActions) =>\n contractor.dismissalDate ? formatBadgeDate(contractor.dismissalDate) : '–',\n },\n ]\n }\n\n const { ...dataViewProps } = useDataView({\n data: contractors,\n columns: getColumns(),\n itemMenu: contractor => {\n if (committedTab === 'onboarding') {\n const menuItems = []\n\n if (contractor.allowedActions.includes('cancel_self_onboarding')) {\n menuItems.push({\n label: t('cancelSelfOnboardingCta'),\n onClick: () => {\n void onCancelSelfOnboarding(contractor.uuid)\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('delete')) {\n menuItems.push({\n label: t('removeCta'),\n onClick: () => {\n setContractorToRemove(contractor.uuid)\n },\n icon: <TrashCanSvg aria-hidden />,\n })\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"flex-end\" gap={4}>\n {contractor.allowedActions.includes('edit') && (\n <Components.Button\n variant=\"secondary\"\n onClick={() => {\n onEdit(contractor.uuid)\n }}\n >\n {isOnboardingEditReview(contractor.onboardingStatus)\n ? t('reviewCta')\n : t('continueCta')}\n </Components.Button>\n )}\n <HamburgerMenu\n items={menuItems}\n triggerLabel={t('hamburgerTitle', { name: getContractorDisplayName(contractor) })}\n />\n </Flex>\n )\n }\n\n const menuItems = []\n\n if (contractor.allowedActions.includes('view')) {\n menuItems.push({\n label: t('viewDetailsCta'),\n onClick: () => {\n onView(contractor.uuid)\n },\n icon: <EyeSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('cancel_rehire')) {\n menuItems.push({\n label: t('cancelRehireCta'),\n onClick: () => {\n setCancelAction({ contractorId: contractor.uuid, type: 'rehire' })\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('cancel_dismissal')) {\n menuItems.push({\n label: t('cancelDismissalCta'),\n onClick: () => {\n setCancelAction({ contractorId: contractor.uuid, type: 'dismissal' })\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('dismiss')) {\n menuItems.push({\n label: t('dismissCta'),\n onClick: () => {\n onDismiss(contractor.uuid)\n },\n icon: <SlashCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('rehire')) {\n menuItems.push({\n label: t('rehireCta'),\n onClick: () => {\n onRehire(contractor.uuid)\n },\n icon: <PlusCircleIcon aria-hidden />,\n })\n }\n\n return (\n <HamburgerMenu\n items={menuItems}\n triggerLabel={t('hamburgerTitle', { name: getContractorDisplayName(contractor) })}\n />\n )\n },\n isFetching,\n pagination,\n emptyState: () => (\n <EmptyData\n title={t(`emptyState.${committedTab}.title`)}\n description={t(`emptyState.${committedTab}.description`)}\n />\n ),\n })\n\n return (\n <>\n <Flex className={className} flexDirection=\"column\" gap={32}>\n {successMessage && <Components.Alert label={successMessage} status=\"success\" />}\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Button variant=\"secondary\" onClick={onAddContractor}>\n {t('addContractorCta')}\n </Components.Button>\n </Flex>\n\n <Flex flexDirection=\"column\" gap={0}>\n <Components.Tabs\n tabs={tabs}\n selectedId={selectedTab}\n onSelectionChange={id => {\n onTabChange(id as ContractorTab)\n }}\n aria-label={t('tabsLabel')}\n />\n\n <DataView label={t('contractorListLabel')} {...dataViewProps} />\n </Flex>\n </Flex>\n\n <Components.Dialog\n isOpen={!!contractorToRemove}\n onClose={() => {\n setContractorToRemove(null)\n }}\n onPrimaryActionClick={async () => {\n if (contractorToRemove) {\n try {\n await onDelete(contractorToRemove)\n setContractorToRemove(null)\n } catch {\n // Keep dialog open on error\n }\n }\n }}\n isPrimaryActionLoading={status.isPending}\n isDestructive\n title={t('removeDialog.title')}\n primaryActionLabel={t('removeDialog.confirmCta')}\n closeActionLabel={t('removeDialog.cancelCta')}\n >\n {t('removeDialog.description')}\n </Components.Dialog>\n\n <Components.Dialog\n isOpen={!!cancelAction}\n onClose={() => {\n setCancelAction(null)\n }}\n onPrimaryActionClick={async () => {\n if (!cancelAction) return\n try {\n if (cancelAction.type === 'rehire') {\n await onCancelRehire(cancelAction.contractorId)\n } else {\n await onCancelDismissal(cancelAction.contractorId)\n }\n setCancelAction(null)\n } catch {\n // Keep dialog open on error\n }\n }}\n isPrimaryActionLoading={status.isPending}\n title={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.title')\n : t('cancelDismissalDialog.title')\n }\n primaryActionLabel={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.confirmCta')\n : t('cancelDismissalDialog.confirmCta')\n }\n closeActionLabel={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.cancelCta')\n : t('cancelDismissalDialog.cancelCta')\n }\n >\n {cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.description')\n : t('cancelDismissalDialog.description')}\n </Components.Dialog>\n </>\n )\n}\n"],"names":["ContractorNameCell","contractor","Components","useComponentContext","jsxs","Flex","jsx","getContractorDisplayName","formatBadgeDate","dateStr","date","normalizeToDate","formatDateLong","formatDateLongWithYear","isOnboardingEditReview","onboardingStatus","ContractorOnboardingStatus","ManagementContractorListView","className","contractors","isFetching","selectedTab","onTabChange","successMessage","status","pagination","onEdit","onView","onDismiss","onRehire","onDelete","onCancelSelfOnboarding","onCancelDismissal","onCancelRehire","onAddContractor","t","useTranslation","contractorToRemove","setContractorToRemove","useState","cancelAction","setCancelAction","committedTab","setCommittedTab","useEffect","tabs","getColumns","nameColumn","VisuallyHidden","ContractorOnboardingStatusBadge","dataViewProps","useDataView","menuItems","XCircleSvg","TrashCanSvg","HamburgerMenu","EyeSvg","SlashCircleSvg","PlusCircleIcon","EmptyData","Fragment","id","DataView"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContractorListFlow.js","sources":["../../../../src/components/Contractor/ContractorListFlow/ContractorListFlow.tsx"],"sourcesContent":["import { createMachine } from 'robot3'\nimport { useMemo } from 'react'\nimport { contractorListStateMachine } from './contractorListStateMachine'\nimport {\n ContractorListContextual,\n type ContractorListFlowContextInterface,\n type ContractorListFlowProps,\n} from './ContractorListFlowComponents'\nimport { Flow } from '@/components/Flow/Flow'\n\n/**\n * Hub for viewing and managing a company's contractors, including onboarding new ones.\n *\n * @remarks\n * Drop-in entry point for browsing a company's contractors. Begins on the\n * management contractor list and routes into {@link DashboardFlow} when the\n * admin selects \"View details\" on a row, or directly into the Profile step\n * of contractor onboarding — the same Profile → Address → Payment Method →\n * New Hire Report → Submit sequence used by\n * {@link ContractorOnboarding.OnboardingFlow | OnboardingFlow} — when the\n * admin clicks \"Add contractor\" or selects \"Continue\"/\"Review\" on an\n * onboarding-tab row. A \"Back to contractors\" header is added above the\n * dashboard; the onboarding steps show their own progress header instead,\n * matching `OnboardingFlow`'s own screens exactly. Submitting, or cancelling\n * from any step, returns to this list.\n *\n * \"Dismiss\"
|
|
1
|
+
{"version":3,"file":"ContractorListFlow.js","sources":["../../../../src/components/Contractor/ContractorListFlow/ContractorListFlow.tsx"],"sourcesContent":["import { createMachine } from 'robot3'\nimport { useMemo } from 'react'\nimport { contractorListStateMachine } from './contractorListStateMachine'\nimport {\n ContractorListContextual,\n type ContractorListFlowContextInterface,\n type ContractorListFlowProps,\n} from './ContractorListFlowComponents'\nimport { Flow } from '@/components/Flow/Flow'\n\n/**\n * Hub for viewing and managing a company's contractors, including onboarding new ones.\n *\n * @remarks\n * Drop-in entry point for browsing a company's contractors. Begins on the\n * management contractor list and routes into {@link DashboardFlow} when the\n * admin selects \"View details\" on a row, or directly into the Profile step\n * of contractor onboarding — the same Profile → Address → Payment Method →\n * New Hire Report → Submit sequence used by\n * {@link ContractorOnboarding.OnboardingFlow | OnboardingFlow} — when the\n * admin clicks \"Add contractor\" or selects \"Continue\"/\"Review\" on an\n * onboarding-tab row. A \"Back to contractors\" header is added above the\n * dashboard; the onboarding steps show their own progress header instead,\n * matching `OnboardingFlow`'s own screens exactly. Submitting, or cancelling\n * from any step, returns to this list.\n *\n * \"Dismiss\" routes into {@link Dismissal}, a standalone form for scheduling\n * the contractor's dismissal date. \"Rehire\" has no corresponding sub-flow yet\n * and is not handled internally — it continues to fire its documented event\n * (`contractor/rehire`) straight through `onEvent` for the host app to\n * handle, exactly as it does outside this flow.\n *\n * The flow forwards every event emitted by its blocks to `onEvent`;\n * see the events table on each block for the full set of events and\n * payloads observable from this flow.\n *\n * @components\n * - {@link ContractorList}\n * - {@link DashboardFlow}\n * - {@link Dismissal}\n * - {@link ContractorOnboarding.ContractorProfile | ContractorProfile}\n * - {@link ContractorOnboarding.Address | Address}\n * - {@link ContractorOnboarding.PaymentMethod | PaymentMethod}\n * - {@link ContractorOnboarding.NewHireReport | NewHireReport}\n * - {@link ContractorOnboarding.ContractorSubmit | ContractorSubmit}\n *\n * @param props - See {@link ContractorListFlowProps}.\n * @returns The contractor list workflow with internal navigation to the dashboard and onboarding steps.\n * @public\n * @group Flow components\n *\n * @example\n * ```tsx title=\"App.tsx\"\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function MyApp() {\n * return (\n * <ContractorManagement.ContractorListFlow\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport const ContractorListFlow = ({ companyId, onEvent }: ContractorListFlowProps) => {\n const machine = useMemo(\n () =>\n createMachine(\n 'list',\n contractorListStateMachine,\n (initialContext: ContractorListFlowContextInterface) => ({\n ...initialContext,\n component: ContractorListContextual,\n companyId,\n selfOnboarding: false,\n }),\n ),\n [companyId],\n )\n return <Flow machine={machine} onEvent={onEvent} />\n}\n"],"names":["ContractorListFlow","companyId","onEvent","machine","useMemo","createMachine","contractorListStateMachine","initialContext","ContractorListContextual","jsx","Flow"],"mappings":";;;;;;AAiEO,MAAMA,IAAqB,CAAC,EAAE,WAAAC,GAAW,SAAAC,QAAuC;AACrF,QAAMC,IAAUC;AAAA,IACd,MACEC;AAAA,MACE;AAAA,MACAC;AAAA,MACA,CAACC,OAAwD;AAAA,QACvD,GAAGA;AAAA,QACH,WAAWC;AAAA,QACX,WAAAP;AAAA,QACA,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,IAEJ,CAACA,CAAS;AAAA,EAAA;AAEZ,SAAO,gBAAAQ,EAACC,GAAA,EAAK,SAAAP,GAAkB,SAAAD,EAAA,CAAkB;AACnD;"}
|
|
@@ -1,18 +1,31 @@
|
|
|
1
1
|
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import { ManagementContractorList as
|
|
2
|
+
import { ManagementContractorList as c } from "../ContractorList/management/ManagementContractorList.js";
|
|
3
|
+
import { Dismissal as e } from "../Dismissal/Dismissal.js";
|
|
3
4
|
import { useFlow as n } from "../../Flow/useFlow.js";
|
|
4
|
-
import { ensureRequired as
|
|
5
|
+
import { ensureRequired as s } from "../../../helpers/ensureRequired.js";
|
|
5
6
|
import { DashboardFlow as m } from "../Dashboard/DashboardFlow.js";
|
|
6
|
-
function
|
|
7
|
-
const { companyId: o, onEvent: t } = n();
|
|
8
|
-
return /* @__PURE__ */ r(
|
|
7
|
+
function I() {
|
|
8
|
+
const { companyId: o, onEvent: t, successMessage: a } = n();
|
|
9
|
+
return /* @__PURE__ */ r(
|
|
10
|
+
c,
|
|
11
|
+
{
|
|
12
|
+
companyId: s(o),
|
|
13
|
+
onEvent: t,
|
|
14
|
+
successMessage: a
|
|
15
|
+
}
|
|
16
|
+
);
|
|
9
17
|
}
|
|
10
|
-
function
|
|
18
|
+
function x() {
|
|
11
19
|
const { contractorId: o, onEvent: t } = n();
|
|
12
|
-
return /* @__PURE__ */ r(m, { contractorId:
|
|
20
|
+
return /* @__PURE__ */ r(m, { contractorId: s(o), onEvent: t });
|
|
21
|
+
}
|
|
22
|
+
function C() {
|
|
23
|
+
const { contractorId: o, onEvent: t } = n();
|
|
24
|
+
return /* @__PURE__ */ r(e, { contractorId: s(o), onEvent: t });
|
|
13
25
|
}
|
|
14
26
|
export {
|
|
15
|
-
|
|
16
|
-
|
|
27
|
+
I as ContractorListContextual,
|
|
28
|
+
x as DashboardFlowContextual,
|
|
29
|
+
C as DismissalContextual
|
|
17
30
|
};
|
|
18
31
|
//# sourceMappingURL=ContractorListFlowComponents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContractorListFlowComponents.js","sources":["../../../../src/components/Contractor/ContractorListFlow/ContractorListFlowComponents.tsx"],"sourcesContent":["import { ManagementContractorList } from '../ContractorList/management/ManagementContractorList'\nimport { DashboardFlow } from '../Dashboard'\nimport { type OnboardingFlowContextInterface } from '../OnboardingFlow/OnboardingFlowComponents'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { ensureRequired } from '@/helpers/ensureRequired'\n\n/**\n * Props for {@link ContractorListFlow}.\n *\n * @public\n */\nexport interface ContractorListFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n}\n\n// Extends OnboardingFlowContextInterface (rather than FlowContextInterface directly) so this\n// machine's context is shape-compatible with the shared contractor-onboarding step states it\n// spreads in from onboardingStateMachine.ts (see createContractorOnboardingSteps) — those\n// states' reducers and Contextual components (ProfileContextual, AddressContextual, etc.) are\n// typed against OnboardingFlowContextInterface.\n/** @internal */\nexport type ContractorListFlowContextInterface = OnboardingFlowContextInterface\n\n/** @internal */\nexport function ContractorListContextual() {\n const { companyId, onEvent } = useFlow<ContractorListFlowContextInterface>()\n return <ManagementContractorList
|
|
1
|
+
{"version":3,"file":"ContractorListFlowComponents.js","sources":["../../../../src/components/Contractor/ContractorListFlow/ContractorListFlowComponents.tsx"],"sourcesContent":["import { ManagementContractorList } from '../ContractorList/management/ManagementContractorList'\nimport { DashboardFlow } from '../Dashboard'\nimport { Dismissal } from '../Dismissal/Dismissal'\nimport { type OnboardingFlowContextInterface } from '../OnboardingFlow/OnboardingFlowComponents'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { ensureRequired } from '@/helpers/ensureRequired'\n\n/**\n * Props for {@link ContractorListFlow}.\n *\n * @public\n */\nexport interface ContractorListFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n}\n\n// Extends OnboardingFlowContextInterface (rather than FlowContextInterface directly) so this\n// machine's context is shape-compatible with the shared contractor-onboarding step states it\n// spreads in from onboardingStateMachine.ts (see createContractorOnboardingSteps) — those\n// states' reducers and Contextual components (ProfileContextual, AddressContextual, etc.) are\n// typed against OnboardingFlowContextInterface.\n/** @internal */\nexport type ContractorListFlowContextInterface = OnboardingFlowContextInterface\n\n/** @internal */\nexport function ContractorListContextual() {\n const { companyId, onEvent, successMessage } = useFlow<ContractorListFlowContextInterface>()\n return (\n <ManagementContractorList\n companyId={ensureRequired(companyId)}\n onEvent={onEvent}\n successMessage={successMessage}\n />\n )\n}\n\n/** @internal */\nexport function DashboardFlowContextual() {\n const { contractorId, onEvent } = useFlow<ContractorListFlowContextInterface>()\n return <DashboardFlow contractorId={ensureRequired(contractorId)} onEvent={onEvent} />\n}\n\n/** @internal */\nexport function DismissalContextual() {\n const { contractorId, onEvent } = useFlow<ContractorListFlowContextInterface>()\n return <Dismissal contractorId={ensureRequired(contractorId)} onEvent={onEvent} />\n}\n"],"names":["ContractorListContextual","companyId","onEvent","successMessage","useFlow","jsx","ManagementContractorList","ensureRequired","DashboardFlowContextual","contractorId","DashboardFlow","DismissalContextual","Dismissal"],"mappings":";;;;;;AA2BO,SAASA,IAA2B;AACzC,QAAM,EAAE,WAAAC,GAAW,SAAAC,GAAS,gBAAAC,EAAA,IAAmBC,EAAA;AAC/C,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAeN,CAAS;AAAA,MACnC,SAAAC;AAAA,MACA,gBAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASK,IAA0B;AACxC,QAAM,EAAE,cAAAC,GAAc,SAAAP,EAAA,IAAYE,EAAA;AAClC,2BAAQM,GAAA,EAAc,cAAcH,EAAeE,CAAY,GAAG,SAAAP,GAAkB;AACtF;AAGO,SAASS,IAAsB;AACpC,QAAM,EAAE,cAAAF,GAAc,SAAAP,EAAA,IAAYE,EAAA;AAClC,2BAAQQ,GAAA,EAAU,cAAcL,EAAeE,CAAY,GAAG,SAAAP,GAAkB;AAClF;"}
|