@gusto/embedded-react-sdk 0.55.8 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/dist/components/Common/UI/Menu/MenuTypes.js.map +1 -1
- package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +43 -42
- package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.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/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/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/EmployeeList/management/ManagementEmployeeListView.js +70 -69
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js +2 -2
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +51 -42
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js +29 -26
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js +2 -2
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +11 -11
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +3 -3
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js +76 -79
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +2 -2
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +2 -2
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +10 -10
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +49 -45
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +83 -76
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +63 -60
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +184 -165
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js +48 -34
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +185 -171
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js +45 -34
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +44 -44
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.module.scss.js +14 -14
- package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js +16 -16
- package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js +52 -37
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +9 -8
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +29 -28
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/apiVersionMismatchHook.js +15 -0
- package/dist/contexts/ApiProvider/apiVersionMismatchHook.js.map +1 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/ThemeProvider/ThemeProvider.js +32 -26
- package/dist/contexts/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/hooks/usePollingTask/usePollingTask.js +53 -41
- package/dist/hooks/usePollingTask/usePollingTask.js.map +1 -1
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js +28 -24
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js.map +1 -1
- package/dist/i18n/en/Payroll.GrossUpModal.json.js +12 -10
- package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +8 -8
- package/dist/i18n/en/Payroll.PayrollOverview.json.js +15 -15
- package/dist/package.json.js +1 -1
- package/dist/src/components/Common/UI/ComboBox/ComboBoxTypes.d.ts +1 -1
- package/dist/src/components/Common/UI/DatePicker/DatePickerTypes.d.ts +2 -1
- package/dist/src/components/Common/UI/Menu/MenuTypes.d.ts +1 -1
- package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.d.ts +1 -1
- package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +5 -0
- package/dist/src/components/Common/UI/Select/SelectTypes.d.ts +2 -1
- package/dist/src/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +7 -2
- package/dist/src/components/Employee/EmployeeListFlow/employeeListStateMachine.test.d.ts +1 -0
- package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +6 -0
- package/dist/src/components/Payroll/PayrollConfiguration/useCalculationPoll.d.ts +6 -1
- package/dist/src/components/Payroll/PayrollOverview/useSubmissionPoll.d.ts +10 -1
- package/dist/src/contexts/ApiProvider/ApiProvider.d.ts +5 -3
- package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.d.ts +3 -0
- package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.test.d.ts +1 -0
- package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +9 -1
- package/dist/src/contexts/ThemeProvider/ThemeProvider.d.ts +8 -3
- package/dist/src/hooks/usePollingTask/usePollingTask.d.ts +55 -14
- package/dist/src/i18n/types.d.ts +14 -0
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +5 -0
- package/package.json +6 -6
|
@@ -13,10 +13,11 @@ import "dompurify";
|
|
|
13
13
|
import "../../../../contexts/LocaleProvider/useLocale.js";
|
|
14
14
|
import "../../../../shared/constants.js";
|
|
15
15
|
import "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
16
|
+
import "../../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
16
17
|
import { createCompoundContext as t } from "../../../Base/createCompoundContext.js";
|
|
17
|
-
const [
|
|
18
|
+
const [f, v] = t("StateTaxesFormContext");
|
|
18
19
|
export {
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
v as StateTaxesFormProvider,
|
|
21
|
+
f as useStateTaxesForm
|
|
21
22
|
};
|
|
22
23
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesForm/context.ts"],"sourcesContent":["import type { TaxRequirementsState } from '@gusto/embedded-api/models/components/taxrequirementsstate'\nimport { createCompoundContext } from '@/components/Base'\n\ninterface StateTaxFormContext {\n isPending: boolean\n state: string\n stateTaxRequirements: TaxRequirementsState\n handleCancel: () => void\n}\n\nconst [useStateTaxesForm, StateTaxesFormProvider] =\n createCompoundContext<StateTaxFormContext>('StateTaxesFormContext')\n\nexport { useStateTaxesForm, StateTaxesFormProvider }\n"],"names":["useStateTaxesForm","StateTaxesFormProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesForm/context.ts"],"sourcesContent":["import type { TaxRequirementsState } from '@gusto/embedded-api/models/components/taxrequirementsstate'\nimport { createCompoundContext } from '@/components/Base'\n\ninterface StateTaxFormContext {\n isPending: boolean\n state: string\n stateTaxRequirements: TaxRequirementsState\n handleCancel: () => void\n}\n\nconst [useStateTaxesForm, StateTaxesFormProvider] =\n createCompoundContext<StateTaxFormContext>('StateTaxesFormContext')\n\nexport { useStateTaxesForm, StateTaxesFormProvider }\n"],"names":["useStateTaxesForm","StateTaxesFormProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;;AAUA,MAAM,CAACA,GAAmBC,CAAsB,IAC9CC,EAA2C,uBAAuB;"}
|
|
@@ -13,10 +13,11 @@ import "dompurify";
|
|
|
13
13
|
import "../../../../contexts/LocaleProvider/useLocale.js";
|
|
14
14
|
import "../../../../shared/constants.js";
|
|
15
15
|
import "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
16
|
+
import "../../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
16
17
|
import { createCompoundContext as t } from "../../../Base/createCompoundContext.js";
|
|
17
|
-
const [
|
|
18
|
+
const [f, v] = t("StateTaxesListContext");
|
|
18
19
|
export {
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
v as StateTaxesListProvider,
|
|
21
|
+
f as useStateTaxesList
|
|
21
22
|
};
|
|
22
23
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesList/context.ts"],"sourcesContent":["import type { TaxRequirementStatesList } from '@gusto/embedded-api/models/components/taxrequirementstateslist'\nimport { createCompoundContext } from '@/components/Base'\n\ntype StateTaxesListContextType = {\n isPending: boolean\n stateTaxRequirements: TaxRequirementStatesList[]\n handleContinue: () => void\n handleChange: (state: string) => void\n handleManageRates: (state: string) => void\n}\n\nconst [useStateTaxesList, StateTaxesListProvider] =\n createCompoundContext<StateTaxesListContextType>('StateTaxesListContext')\n\nexport { useStateTaxesList, StateTaxesListProvider }\n"],"names":["useStateTaxesList","StateTaxesListProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesList/context.ts"],"sourcesContent":["import type { TaxRequirementStatesList } from '@gusto/embedded-api/models/components/taxrequirementstateslist'\nimport { createCompoundContext } from '@/components/Base'\n\ntype StateTaxesListContextType = {\n isPending: boolean\n stateTaxRequirements: TaxRequirementStatesList[]\n handleContinue: () => void\n handleChange: (state: string) => void\n handleManageRates: (state: string) => void\n}\n\nconst [useStateTaxesList, StateTaxesListProvider] =\n createCompoundContext<StateTaxesListContextType>('StateTaxesListContext')\n\nexport { useStateTaxesList, StateTaxesListProvider }\n"],"names":["useStateTaxesList","StateTaxesListProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;;AAWA,MAAM,CAACA,GAAmBC,CAAsB,IAC9CC,EAAiD,uBAAuB;"}
|
|
@@ -13,10 +13,11 @@ import "dompurify";
|
|
|
13
13
|
import "../../../../contexts/LocaleProvider/useLocale.js";
|
|
14
14
|
import "../../../../shared/constants.js";
|
|
15
15
|
import "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
16
|
+
import "../../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
16
17
|
import { createCompoundContext as t } from "../../../Base/createCompoundContext.js";
|
|
17
|
-
const [
|
|
18
|
+
const [u, f] = t("TaxRateManagementContext");
|
|
18
19
|
export {
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
f as TaxRateManagementProvider,
|
|
21
|
+
u as useTaxRateManagement
|
|
21
22
|
};
|
|
22
23
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/TaxRateManagement/context.ts"],"sourcesContent":["import type { TaxRequirementSet } from '@gusto/embedded-api/models/components/taxrequirementset'\nimport { createCompoundContext } from '@/components/Base'\n\n/**\n * A state's effective-dated requirement sets for a single key, grouped for history display,\n * plus any future-dated candidate sets available to schedule against.\n *\n * @internal\n */\nexport interface TaxRateKeyGroup {\n key: string\n label?: string\n sets: TaxRequirementSet[]\n candidateSets: TaxRequirementSet[]\n}\n\ninterface TaxRateManagementContextType {\n state: string\n groups: TaxRateKeyGroup[]\n isPendingUpdate: boolean\n handleCancel: () => void\n handleAddRate: (\n key: string,\n effectiveFrom: string,\n requirements: { key: string; value: string }[],\n ) => Promise<boolean>\n}\n\nconst [useTaxRateManagement, TaxRateManagementProvider] =\n createCompoundContext<TaxRateManagementContextType>('TaxRateManagementContext')\n\nexport { useTaxRateManagement, TaxRateManagementProvider }\n"],"names":["useTaxRateManagement","TaxRateManagementProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/TaxRateManagement/context.ts"],"sourcesContent":["import type { TaxRequirementSet } from '@gusto/embedded-api/models/components/taxrequirementset'\nimport { createCompoundContext } from '@/components/Base'\n\n/**\n * A state's effective-dated requirement sets for a single key, grouped for history display,\n * plus any future-dated candidate sets available to schedule against.\n *\n * @internal\n */\nexport interface TaxRateKeyGroup {\n key: string\n label?: string\n sets: TaxRequirementSet[]\n candidateSets: TaxRequirementSet[]\n}\n\ninterface TaxRateManagementContextType {\n state: string\n groups: TaxRateKeyGroup[]\n isPendingUpdate: boolean\n handleCancel: () => void\n handleAddRate: (\n key: string,\n effectiveFrom: string,\n requirements: { key: string; value: string }[],\n ) => Promise<boolean>\n}\n\nconst [useTaxRateManagement, TaxRateManagementProvider] =\n createCompoundContext<TaxRateManagementContextType>('TaxRateManagementContext')\n\nexport { useTaxRateManagement, TaxRateManagementProvider }\n"],"names":["useTaxRateManagement","TaxRateManagementProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;;AA4BA,MAAM,CAACA,GAAsBC,CAAyB,IACpDC,EAAoD,0BAA0B;"}
|
package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js
CHANGED
|
@@ -13,10 +13,11 @@ import "dompurify";
|
|
|
13
13
|
import "../../../../../../contexts/LocaleProvider/useLocale.js";
|
|
14
14
|
import "../../../../../../shared/constants.js";
|
|
15
15
|
import "../../../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
16
|
+
import "../../../../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
16
17
|
import { createCompoundContext as t } from "../../../../../Base/createCompoundContext.js";
|
|
17
|
-
const [
|
|
18
|
+
const [v, P] = t("DocumentListContext");
|
|
18
19
|
export {
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
P as DocumentListProvider,
|
|
21
|
+
v as useDocumentList
|
|
21
22
|
};
|
|
22
23
|
//# sourceMappingURL=useDocumentList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentList.js","sources":["../../../../../../../src/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.ts"],"sourcesContent":["import type { Form } from '@gusto/embedded-api/models/components/form'\nimport { createCompoundContext } from '@/components/Base'\n\ntype DocumentListContextType = {\n employeeForms: Form[]\n hasSignedAllForms: boolean\n handleContinue: () => void\n handleRequestFormToSign: (form: Form) => void\n documentListError: Error | null\n formToSign?: Form\n}\n\nconst [useDocumentList, DocumentListProvider] =\n createCompoundContext<DocumentListContextType>('DocumentListContext')\nexport { useDocumentList, DocumentListProvider }\n"],"names":["useDocumentList","DocumentListProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDocumentList.js","sources":["../../../../../../../src/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.ts"],"sourcesContent":["import type { Form } from '@gusto/embedded-api/models/components/form'\nimport { createCompoundContext } from '@/components/Base'\n\ntype DocumentListContextType = {\n employeeForms: Form[]\n hasSignedAllForms: boolean\n handleContinue: () => void\n handleRequestFormToSign: (form: Form) => void\n documentListError: Error | null\n formToSign?: Form\n}\n\nconst [useDocumentList, DocumentListProvider] =\n createCompoundContext<DocumentListContextType>('DocumentListContext')\nexport { useDocumentList, DocumentListProvider }\n"],"names":["useDocumentList","DocumentListProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;;AAYA,MAAM,CAACA,GAAiBC,CAAoB,IAC1CC,EAA+C,qBAAqB;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useState as
|
|
1
|
+
import { jsx as n, jsxs as s, Fragment as N } from "react/jsx-runtime";
|
|
2
|
+
import { useState as F } from "react";
|
|
3
3
|
import { useTranslation as H } from "react-i18next";
|
|
4
|
-
import { Flex as
|
|
4
|
+
import { Flex as c } from "../../../Common/Flex/Flex.js";
|
|
5
5
|
import { EmptyData as J } from "../../../Common/EmptyData/EmptyData.js";
|
|
6
6
|
import { HamburgerMenu as O } from "../../../Common/HamburgerMenu/HamburgerMenu.js";
|
|
7
7
|
import { useComponentContext as _ } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
@@ -9,24 +9,25 @@ import { EmployeeOnboardingStatusBadge as W } from "../../../Common/OnboardingSt
|
|
|
9
9
|
import u from "../../../../assets/icons/pencil.svg.js";
|
|
10
10
|
import Y from "../../../../assets/icons/trashcan.svg.js";
|
|
11
11
|
import { firstLastName as q } from "../../../../helpers/formattedStrings.js";
|
|
12
|
-
import { formatDateLongWithYear as g } from "../../../../helpers/dateFormatting.js";
|
|
13
|
-
import
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
import { formatDateLongWithYear as g, formatDateLong as z } from "../../../../helpers/dateFormatting.js";
|
|
13
|
+
import G from "../../../../assets/icons/plus-circle.svg.js";
|
|
14
|
+
import { VisuallyHidden as K } from "../../../Common/VisuallyHidden/VisuallyHidden.js";
|
|
15
|
+
import { useDataView as Q } from "../../../Common/DataView/useDataView.js";
|
|
16
|
+
import { DataView as R } from "../../../Common/DataView/DataView.js";
|
|
17
|
+
function ge({
|
|
18
|
+
selectedTab: r,
|
|
18
19
|
onTabChange: p,
|
|
19
|
-
employees:
|
|
20
|
-
isFetching:
|
|
21
|
-
status:
|
|
22
|
-
onEdit:
|
|
23
|
-
onDismiss:
|
|
20
|
+
employees: f,
|
|
21
|
+
isFetching: b,
|
|
22
|
+
status: D,
|
|
23
|
+
onEdit: h,
|
|
24
|
+
onDismiss: y,
|
|
24
25
|
onDelete: C,
|
|
25
26
|
onAddEmployee: L,
|
|
26
27
|
pagination: P,
|
|
27
28
|
className: S
|
|
28
29
|
}) {
|
|
29
|
-
const { t: e } = H("Employee.ManagementEmployeeList"),
|
|
30
|
+
const { t: e } = H("Employee.ManagementEmployeeList"), o = _(), [d, m] = F(null), {
|
|
30
31
|
handleNextPage: v,
|
|
31
32
|
handleFirstPage: k,
|
|
32
33
|
handleLastPage: w,
|
|
@@ -35,8 +36,8 @@ function de({
|
|
|
35
36
|
currentPage: E,
|
|
36
37
|
totalPages: j,
|
|
37
38
|
totalCount: T,
|
|
38
|
-
itemsPerPage:
|
|
39
|
-
} = P,
|
|
39
|
+
itemsPerPage: V
|
|
40
|
+
} = P, B = [
|
|
40
41
|
{
|
|
41
42
|
id: "active",
|
|
42
43
|
label: e("tabs.active"),
|
|
@@ -52,35 +53,43 @@ function de({
|
|
|
52
53
|
label: e("tabs.dismissed"),
|
|
53
54
|
content: null
|
|
54
55
|
}
|
|
55
|
-
],
|
|
56
|
+
], I = () => {
|
|
56
57
|
const t = {
|
|
57
58
|
key: "name",
|
|
58
59
|
title: e("nameLabel"),
|
|
59
|
-
render: (
|
|
60
|
-
first_name:
|
|
61
|
-
last_name:
|
|
60
|
+
render: (a) => q({
|
|
61
|
+
first_name: a.firstName,
|
|
62
|
+
last_name: a.lastName
|
|
62
63
|
})
|
|
63
64
|
}, i = {
|
|
64
65
|
key: "jobTitle",
|
|
65
66
|
title: e("jobTitleLabel"),
|
|
66
|
-
render: (
|
|
67
|
+
render: (a) => a.primaryJob?.title ?? "-"
|
|
67
68
|
};
|
|
68
|
-
|
|
69
|
+
if (r === "active") {
|
|
70
|
+
const a = {
|
|
71
|
+
key: "pendingDismissal",
|
|
72
|
+
title: /* @__PURE__ */ n(K, { children: e("pendingDismissalLabel") }),
|
|
73
|
+
render: (l) => l.pendingDismissalDate ? /* @__PURE__ */ n(o.Badge, { status: "info", children: e("pendingDismissalBadge", { date: z(l.pendingDismissalDate) }) }) : null
|
|
74
|
+
};
|
|
75
|
+
return [t, i, a];
|
|
76
|
+
}
|
|
77
|
+
return r === "onboarding" ? [
|
|
69
78
|
t,
|
|
70
79
|
{
|
|
71
80
|
key: "startDate",
|
|
72
81
|
title: e("startDateLabel"),
|
|
73
|
-
render: (
|
|
82
|
+
render: (a) => g(a.primaryJob?.hireDate) || "-"
|
|
74
83
|
},
|
|
75
84
|
i,
|
|
76
85
|
{
|
|
77
86
|
key: "status",
|
|
78
87
|
title: e("statusLabel"),
|
|
79
|
-
render: (
|
|
88
|
+
render: (a) => /* @__PURE__ */ n(
|
|
80
89
|
W,
|
|
81
90
|
{
|
|
82
|
-
onboarded:
|
|
83
|
-
onboardingStatus:
|
|
91
|
+
onboarded: a.onboarded,
|
|
92
|
+
onboardingStatus: a.onboardingStatus
|
|
84
93
|
}
|
|
85
94
|
)
|
|
86
95
|
}
|
|
@@ -90,38 +99,38 @@ function de({
|
|
|
90
99
|
{
|
|
91
100
|
key: "lastDay",
|
|
92
101
|
title: e("lastDayLabel"),
|
|
93
|
-
render: (
|
|
94
|
-
const
|
|
95
|
-
return g(
|
|
102
|
+
render: (a) => {
|
|
103
|
+
const l = a.terminations?.[0];
|
|
104
|
+
return g(l?.effectiveDate) || "-";
|
|
96
105
|
}
|
|
97
106
|
}
|
|
98
107
|
];
|
|
99
|
-
}, { ...
|
|
100
|
-
data:
|
|
101
|
-
columns:
|
|
108
|
+
}, { ...M } = Q({
|
|
109
|
+
data: f,
|
|
110
|
+
columns: I(),
|
|
102
111
|
itemMenu: (t) => {
|
|
103
112
|
const i = [];
|
|
104
113
|
return t.allowedActions.includes("edit") && i.push({
|
|
105
114
|
label: e("editCta"),
|
|
106
115
|
onClick: () => {
|
|
107
|
-
|
|
116
|
+
h(t.uuid);
|
|
108
117
|
},
|
|
109
|
-
icon: /* @__PURE__ */
|
|
118
|
+
icon: /* @__PURE__ */ n(u, { "aria-hidden": !0 })
|
|
110
119
|
}), t.allowedActions.includes("dismiss") && i.push({
|
|
111
120
|
label: e("dismissCta"),
|
|
112
121
|
onClick: () => {
|
|
113
|
-
|
|
122
|
+
y(t.uuid);
|
|
114
123
|
},
|
|
115
|
-
icon: /* @__PURE__ */
|
|
124
|
+
icon: /* @__PURE__ */ n(Y, { "aria-hidden": !0 })
|
|
116
125
|
}), t.allowedActions.includes("delete") && i.push({
|
|
117
126
|
label: e("cancelCta"),
|
|
118
127
|
onClick: () => {
|
|
119
128
|
m(t.uuid);
|
|
120
129
|
},
|
|
121
|
-
icon: /* @__PURE__ */
|
|
122
|
-
}), i.length === 0 ? null : /* @__PURE__ */
|
|
130
|
+
icon: /* @__PURE__ */ n(u, { "aria-hidden": !0 })
|
|
131
|
+
}), i.length === 0 ? null : /* @__PURE__ */ n(O, { items: i, triggerLabel: e("hamburgerTitle") });
|
|
123
132
|
},
|
|
124
|
-
isFetching:
|
|
133
|
+
isFetching: b,
|
|
125
134
|
pagination: {
|
|
126
135
|
handleNextPage: v,
|
|
127
136
|
handleFirstPage: k,
|
|
@@ -131,57 +140,49 @@ function de({
|
|
|
131
140
|
currentPage: E,
|
|
132
141
|
totalPages: j,
|
|
133
142
|
totalCount: T,
|
|
134
|
-
itemsPerPage:
|
|
143
|
+
itemsPerPage: V
|
|
135
144
|
},
|
|
136
145
|
emptyState: () => {
|
|
137
146
|
let t = "", i = "";
|
|
138
|
-
return
|
|
147
|
+
return r === "active" ? (t = e("emptyState.active.title"), i = e("emptyState.active.description")) : r === "onboarding" ? (t = e("emptyState.onboarding.title"), i = e("emptyState.onboarding.description")) : (t = e("emptyState.dismissed.title"), i = e("emptyState.dismissed.description")), /* @__PURE__ */ n(J, { title: t, description: i });
|
|
139
148
|
}
|
|
140
149
|
});
|
|
141
|
-
return /* @__PURE__ */
|
|
142
|
-
/* @__PURE__ */
|
|
143
|
-
/* @__PURE__ */
|
|
144
|
-
/* @__PURE__ */
|
|
145
|
-
/* @__PURE__ */
|
|
146
|
-
r.Button,
|
|
147
|
-
{
|
|
148
|
-
variant: "secondary",
|
|
149
|
-
onClick: L,
|
|
150
|
-
icon: /* @__PURE__ */ a(z, {}),
|
|
151
|
-
children: e("addEmployeeCta")
|
|
152
|
-
}
|
|
153
|
-
)
|
|
150
|
+
return /* @__PURE__ */ s(N, { children: [
|
|
151
|
+
/* @__PURE__ */ s(c, { className: S, flexDirection: "column", gap: 32, children: [
|
|
152
|
+
/* @__PURE__ */ s(c, { justifyContent: "space-between", alignItems: "center", children: [
|
|
153
|
+
/* @__PURE__ */ n(o.Heading, { as: "h2", children: e("title") }),
|
|
154
|
+
/* @__PURE__ */ n(o.Button, { variant: "secondary", onClick: L, icon: /* @__PURE__ */ n(G, {}), children: e("addEmployeeCta") })
|
|
154
155
|
] }),
|
|
155
|
-
/* @__PURE__ */
|
|
156
|
-
/* @__PURE__ */
|
|
157
|
-
|
|
156
|
+
/* @__PURE__ */ s(c, { flexDirection: "column", gap: 0, children: [
|
|
157
|
+
/* @__PURE__ */ n(
|
|
158
|
+
o.Tabs,
|
|
158
159
|
{
|
|
159
|
-
tabs:
|
|
160
|
-
selectedId:
|
|
160
|
+
tabs: B,
|
|
161
|
+
selectedId: r,
|
|
161
162
|
onSelectionChange: (t) => {
|
|
162
163
|
p(t);
|
|
163
164
|
},
|
|
164
165
|
"aria-label": e("tabsLabel")
|
|
165
166
|
}
|
|
166
167
|
),
|
|
167
|
-
/* @__PURE__ */
|
|
168
|
+
/* @__PURE__ */ n(R, { label: e("employeeListLabel"), ...M })
|
|
168
169
|
] })
|
|
169
|
-
] })
|
|
170
|
-
/* @__PURE__ */
|
|
171
|
-
|
|
170
|
+
] }),
|
|
171
|
+
/* @__PURE__ */ n(
|
|
172
|
+
o.Dialog,
|
|
172
173
|
{
|
|
173
|
-
isOpen: !!
|
|
174
|
+
isOpen: !!d,
|
|
174
175
|
onClose: () => {
|
|
175
176
|
m(null);
|
|
176
177
|
},
|
|
177
178
|
onPrimaryActionClick: async () => {
|
|
178
|
-
if (
|
|
179
|
+
if (d)
|
|
179
180
|
try {
|
|
180
|
-
await C(
|
|
181
|
+
await C(d), m(null);
|
|
181
182
|
} catch {
|
|
182
183
|
}
|
|
183
184
|
},
|
|
184
|
-
isPrimaryActionLoading:
|
|
185
|
+
isPrimaryActionLoading: D.isPending,
|
|
185
186
|
isDestructive: !0,
|
|
186
187
|
title: e("deleteDialog.title"),
|
|
187
188
|
primaryActionLabel: e("deleteDialog.confirmCta"),
|
|
@@ -192,6 +193,6 @@ function de({
|
|
|
192
193
|
] });
|
|
193
194
|
}
|
|
194
195
|
export {
|
|
195
|
-
|
|
196
|
+
ge as ManagementEmployeeListView
|
|
196
197
|
};
|
|
197
198
|
//# sourceMappingURL=ManagementEmployeeListView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagementEmployeeListView.js","sources":["../../../../../src/components/Employee/EmployeeList/management/ManagementEmployeeListView.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { UseEmployeeListResult, EmployeeWithActions } from '../shared/useEmployeeList'\nimport { DataView, EmptyData, useDataView } from '@/components/Common'\nimport { Flex } from '@/components/Common/Flex/Flex'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { EmployeeOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport { formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\ntype EmployeeTab = 'active' | 'onboarding' | 'dismissed'\n\n/** @internal */\nexport interface ManagementEmployeeListViewProps extends Pick<\n Extract<UseEmployeeListResult, { isLoading: false }>,\n 'pagination' | 'status'\n> {\n employees: EmployeeWithActions[]\n isFetching: boolean\n selectedTab: EmployeeTab\n onTabChange: (tab: EmployeeTab) => void\n onEdit: (employeeId: string) => void\n onDismiss: (employeeId: string) => void\n onDelete: (employeeId: string) => Promise<void>\n onAddEmployee: () => void\n /** CSS class name applied to the root element. */\n className?: string\n}\n\n/** @internal */\nexport function ManagementEmployeeListView({\n selectedTab,\n onTabChange,\n employees,\n isFetching,\n status,\n onEdit,\n onDismiss,\n onDelete,\n onAddEmployee,\n pagination,\n className,\n}: ManagementEmployeeListViewProps) {\n const { t } = useTranslation('Employee.ManagementEmployeeList')\n const Components = useComponentContext()\n const [employeeToDelete, setEmployeeToDelete] = useState<string | null>(null)\n\n const {\n handleNextPage,\n handleFirstPage,\n handleLastPage,\n handlePreviousPage,\n handleItemsPerPageChange,\n currentPage,\n totalPages,\n totalCount,\n itemsPerPage,\n } = pagination\n\n const tabs = [\n {\n id: 'active',\n label: t('tabs.active'),\n content: null,\n },\n {\n id: 'onboarding',\n label: t('tabs.onboarding'),\n content: null,\n },\n {\n id: 'dismissed',\n label: t('tabs.dismissed'),\n content: null,\n },\n ]\n\n const getColumns = () => {\n const nameColumn = {\n key: 'name',\n title: t('nameLabel'),\n render: (employee: EmployeeWithActions) => {\n return firstLastName({\n first_name: employee.firstName,\n last_name: employee.lastName,\n })\n },\n }\n\n const jobTitleColumn = {\n key: 'jobTitle',\n title: t('jobTitleLabel'),\n render: (employee: EmployeeWithActions) => {\n return employee.primaryJob?.title ?? '-'\n },\n }\n\n if (selectedTab === 'active') {\n return [nameColumn, jobTitleColumn]\n }\n\n if (selectedTab === 'onboarding') {\n return [\n nameColumn,\n {\n key: 'startDate',\n title: t('startDateLabel'),\n render: (employee: EmployeeWithActions) => {\n const formattedDate = formatDateLongWithYear(employee.primaryJob?.hireDate)\n return formattedDate || '-'\n },\n },\n jobTitleColumn,\n {\n key: 'status',\n title: t('statusLabel'),\n render: (employee: EmployeeWithActions) => (\n <EmployeeOnboardingStatusBadge\n onboarded={employee.onboarded}\n onboardingStatus={employee.onboardingStatus}\n />\n ),\n },\n ]\n }\n\n return [\n nameColumn,\n jobTitleColumn,\n {\n key: 'lastDay',\n title: t('lastDayLabel'),\n render: (employee: EmployeeWithActions) => {\n const termination = employee.terminations?.[0]\n const formattedDate = formatDateLongWithYear(termination?.effectiveDate)\n return formattedDate || '-'\n },\n },\n ]\n }\n\n const { ...dataViewProps } = useDataView({\n data: employees,\n columns: getColumns(),\n itemMenu: employee => {\n const menuItems = []\n\n if (employee.allowedActions.includes('edit')) {\n menuItems.push({\n label: t('editCta'),\n onClick: () => {\n onEdit(employee.uuid)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('dismiss')) {\n menuItems.push({\n label: t('dismissCta'),\n onClick: () => {\n onDismiss(employee.uuid)\n },\n icon: <TrashCanSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('delete')) {\n menuItems.push({\n label: t('cancelCta'),\n onClick: () => {\n setEmployeeToDelete(employee.uuid)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (menuItems.length === 0) {\n return null\n }\n\n return <HamburgerMenu items={menuItems} triggerLabel={t('hamburgerTitle')} />\n },\n isFetching,\n pagination: {\n handleNextPage,\n handleFirstPage,\n handleLastPage,\n handlePreviousPage,\n handleItemsPerPageChange,\n currentPage,\n totalPages,\n totalCount,\n itemsPerPage,\n },\n emptyState: () => {\n let title = ''\n let description = ''\n\n if (selectedTab === 'active') {\n title = t('emptyState.active.title')\n description = t('emptyState.active.description')\n } else if (selectedTab === 'onboarding') {\n title = t('emptyState.onboarding.title')\n description = t('emptyState.onboarding.description')\n } else {\n title = t('emptyState.dismissed.title')\n description = t('emptyState.dismissed.description')\n }\n\n return <EmptyData title={title} description={description} />\n },\n })\n\n return (\n <>\n <section className={className}>\n <Flex flexDirection=\"column\" gap={32}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Button\n variant=\"secondary\"\n onClick={onAddEmployee}\n icon={<PlusCircleIcon />}\n >\n {t('addEmployeeCta')}\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 EmployeeTab)\n }}\n aria-label={t('tabsLabel')}\n />\n\n <DataView label={t('employeeListLabel')} {...dataViewProps} />\n </Flex>\n </Flex>\n </section>\n\n <Components.Dialog\n isOpen={!!employeeToDelete}\n onClose={() => {\n setEmployeeToDelete(null)\n }}\n onPrimaryActionClick={async () => {\n if (employeeToDelete) {\n try {\n await onDelete(employeeToDelete)\n setEmployeeToDelete(null)\n } catch {\n // Keep dialog open on error\n }\n }\n }}\n isPrimaryActionLoading={status.isPending}\n isDestructive\n title={t('deleteDialog.title')}\n primaryActionLabel={t('deleteDialog.confirmCta')}\n closeActionLabel={t('deleteDialog.cancelCta')}\n >\n {t('deleteDialog.description')}\n </Components.Dialog>\n </>\n )\n}\n"],"names":["ManagementEmployeeListView","selectedTab","onTabChange","employees","isFetching","status","onEdit","onDismiss","onDelete","onAddEmployee","pagination","className","t","useTranslation","Components","useComponentContext","employeeToDelete","setEmployeeToDelete","useState","handleNextPage","handleFirstPage","handleLastPage","handlePreviousPage","handleItemsPerPageChange","currentPage","totalPages","totalCount","itemsPerPage","tabs","getColumns","nameColumn","employee","firstLastName","jobTitleColumn","formatDateLongWithYear","jsx","EmployeeOnboardingStatusBadge","termination","dataViewProps","useDataView","menuItems","PencilSvg","TrashCanSvg","HamburgerMenu","title","description","EmptyData","jsxs","Fragment","Flex","PlusCircleIcon","id","DataView"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ManagementEmployeeListView.js","sources":["../../../../../src/components/Employee/EmployeeList/management/ManagementEmployeeListView.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { UseEmployeeListResult, EmployeeWithActions } from '../shared/useEmployeeList'\nimport { DataView, EmptyData, useDataView, VisuallyHidden } from '@/components/Common'\nimport { Flex } from '@/components/Common/Flex/Flex'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { EmployeeOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport { formatDateLong, formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\ntype EmployeeTab = 'active' | 'onboarding' | 'dismissed'\n\n/** @internal */\nexport interface ManagementEmployeeListViewProps extends Pick<\n Extract<UseEmployeeListResult, { isLoading: false }>,\n 'pagination' | 'status'\n> {\n employees: EmployeeWithActions[]\n isFetching: boolean\n selectedTab: EmployeeTab\n onTabChange: (tab: EmployeeTab) => void\n onEdit: (employeeId: string) => void\n onDismiss: (employeeId: string) => void\n onDelete: (employeeId: string) => Promise<void>\n onAddEmployee: () => void\n /** CSS class name applied to the root element. */\n className?: string\n}\n\n/** @internal */\nexport function ManagementEmployeeListView({\n selectedTab,\n onTabChange,\n employees,\n isFetching,\n status,\n onEdit,\n onDismiss,\n onDelete,\n onAddEmployee,\n pagination,\n className,\n}: ManagementEmployeeListViewProps) {\n const { t } = useTranslation('Employee.ManagementEmployeeList')\n const Components = useComponentContext()\n const [employeeToDelete, setEmployeeToDelete] = useState<string | null>(null)\n\n const {\n handleNextPage,\n handleFirstPage,\n handleLastPage,\n handlePreviousPage,\n handleItemsPerPageChange,\n currentPage,\n totalPages,\n totalCount,\n itemsPerPage,\n } = pagination\n\n const tabs = [\n {\n id: 'active',\n label: t('tabs.active'),\n content: null,\n },\n {\n id: 'onboarding',\n label: t('tabs.onboarding'),\n content: null,\n },\n {\n id: 'dismissed',\n label: t('tabs.dismissed'),\n content: null,\n },\n ]\n\n const getColumns = () => {\n const nameColumn = {\n key: 'name',\n title: t('nameLabel'),\n render: (employee: EmployeeWithActions) => {\n return firstLastName({\n first_name: employee.firstName,\n last_name: employee.lastName,\n })\n },\n }\n\n const jobTitleColumn = {\n key: 'jobTitle',\n title: t('jobTitleLabel'),\n render: (employee: EmployeeWithActions) => {\n return employee.primaryJob?.title ?? '-'\n },\n }\n\n if (selectedTab === 'active') {\n const pendingDismissalColumn = {\n key: 'pendingDismissal',\n title: <VisuallyHidden>{t('pendingDismissalLabel')}</VisuallyHidden>,\n render: (employee: EmployeeWithActions) => {\n if (!employee.pendingDismissalDate) return null\n\n return (\n <Components.Badge status=\"info\">\n {t('pendingDismissalBadge', { date: formatDateLong(employee.pendingDismissalDate) })}\n </Components.Badge>\n )\n },\n }\n\n return [nameColumn, jobTitleColumn, pendingDismissalColumn]\n }\n\n if (selectedTab === 'onboarding') {\n return [\n nameColumn,\n {\n key: 'startDate',\n title: t('startDateLabel'),\n render: (employee: EmployeeWithActions) => {\n const formattedDate = formatDateLongWithYear(employee.primaryJob?.hireDate)\n return formattedDate || '-'\n },\n },\n jobTitleColumn,\n {\n key: 'status',\n title: t('statusLabel'),\n render: (employee: EmployeeWithActions) => (\n <EmployeeOnboardingStatusBadge\n onboarded={employee.onboarded}\n onboardingStatus={employee.onboardingStatus}\n />\n ),\n },\n ]\n }\n\n return [\n nameColumn,\n jobTitleColumn,\n {\n key: 'lastDay',\n title: t('lastDayLabel'),\n render: (employee: EmployeeWithActions) => {\n const termination = employee.terminations?.[0]\n const formattedDate = formatDateLongWithYear(termination?.effectiveDate)\n return formattedDate || '-'\n },\n },\n ]\n }\n\n const { ...dataViewProps } = useDataView({\n data: employees,\n columns: getColumns(),\n itemMenu: employee => {\n const menuItems = []\n\n if (employee.allowedActions.includes('edit')) {\n menuItems.push({\n label: t('editCta'),\n onClick: () => {\n onEdit(employee.uuid)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('dismiss')) {\n menuItems.push({\n label: t('dismissCta'),\n onClick: () => {\n onDismiss(employee.uuid)\n },\n icon: <TrashCanSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('delete')) {\n menuItems.push({\n label: t('cancelCta'),\n onClick: () => {\n setEmployeeToDelete(employee.uuid)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (menuItems.length === 0) {\n return null\n }\n\n return <HamburgerMenu items={menuItems} triggerLabel={t('hamburgerTitle')} />\n },\n isFetching,\n pagination: {\n handleNextPage,\n handleFirstPage,\n handleLastPage,\n handlePreviousPage,\n handleItemsPerPageChange,\n currentPage,\n totalPages,\n totalCount,\n itemsPerPage,\n },\n emptyState: () => {\n let title = ''\n let description = ''\n\n if (selectedTab === 'active') {\n title = t('emptyState.active.title')\n description = t('emptyState.active.description')\n } else if (selectedTab === 'onboarding') {\n title = t('emptyState.onboarding.title')\n description = t('emptyState.onboarding.description')\n } else {\n title = t('emptyState.dismissed.title')\n description = t('emptyState.dismissed.description')\n }\n\n return <EmptyData title={title} description={description} />\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={onAddEmployee} icon={<PlusCircleIcon />}>\n {t('addEmployeeCta')}\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 EmployeeTab)\n }}\n aria-label={t('tabsLabel')}\n />\n\n <DataView label={t('employeeListLabel')} {...dataViewProps} />\n </Flex>\n </Flex>\n\n <Components.Dialog\n isOpen={!!employeeToDelete}\n onClose={() => {\n setEmployeeToDelete(null)\n }}\n onPrimaryActionClick={async () => {\n if (employeeToDelete) {\n try {\n await onDelete(employeeToDelete)\n setEmployeeToDelete(null)\n } catch {\n // Keep dialog open on error\n }\n }\n }}\n isPrimaryActionLoading={status.isPending}\n isDestructive\n title={t('deleteDialog.title')}\n primaryActionLabel={t('deleteDialog.confirmCta')}\n closeActionLabel={t('deleteDialog.cancelCta')}\n >\n {t('deleteDialog.description')}\n </Components.Dialog>\n </>\n )\n}\n"],"names":["ManagementEmployeeListView","selectedTab","onTabChange","employees","isFetching","status","onEdit","onDismiss","onDelete","onAddEmployee","pagination","className","t","useTranslation","Components","useComponentContext","employeeToDelete","setEmployeeToDelete","useState","handleNextPage","handleFirstPage","handleLastPage","handlePreviousPage","handleItemsPerPageChange","currentPage","totalPages","totalCount","itemsPerPage","tabs","getColumns","nameColumn","employee","firstLastName","jobTitleColumn","pendingDismissalColumn","jsx","VisuallyHidden","formatDateLong","formatDateLongWithYear","EmployeeOnboardingStatusBadge","termination","dataViewProps","useDataView","menuItems","PencilSvg","TrashCanSvg","HamburgerMenu","title","description","EmptyData","jsxs","Fragment","Flex","PlusCircleIcon","id","DataView"],"mappings":"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"}
|
|
@@ -86,7 +86,7 @@ function Y({
|
|
|
86
86
|
] }) })
|
|
87
87
|
});
|
|
88
88
|
return /* @__PURE__ */ r(A, { children: [
|
|
89
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ r(f, { className: k, flexDirection: "column", gap: 24, children: [
|
|
90
90
|
/* @__PURE__ */ r(f, { justifyContent: "space-between", alignItems: "center", children: [
|
|
91
91
|
/* @__PURE__ */ e(n.Heading, { as: "h2", children: t("title") }),
|
|
92
92
|
o.length > 0 && /* @__PURE__ */ e(
|
|
@@ -101,7 +101,7 @@ function Y({
|
|
|
101
101
|
] }),
|
|
102
102
|
/* @__PURE__ */ e(N, { label: t("employeeListLabel"), ...w }),
|
|
103
103
|
u && o.length > 0 && /* @__PURE__ */ e(p, { children: /* @__PURE__ */ e(n.Button, { onClick: m, children: t("continueCta") }) })
|
|
104
|
-
] })
|
|
104
|
+
] }),
|
|
105
105
|
/* @__PURE__ */ e(
|
|
106
106
|
n.Dialog,
|
|
107
107
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmployeeListView.js","sources":["../../../../../src/components/Employee/EmployeeList/onboarding/EmployeeListView.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { OnboardingStatus } from '@gusto/embedded-api/models/operations/putv1employeesemployeeidonboardingstatus'\nimport type { UseEmployeeListResult, EmployeeWithActions } from '../shared/useEmployeeList'\nimport { DataView, EmptyData, ActionsLayout, useDataView, Flex } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { EmployeeOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\n/** @internal */\nexport interface EmployeeListViewProps extends Pick<\n Extract<UseEmployeeListResult, { isLoading: false }>,\n 'pagination' | 'status'\n> {\n employees: EmployeeWithActions[]\n isFetching: boolean\n onEdit: (employeeId: string, onboardingStatus?: OnboardingStatus) => void\n onDelete: (employeeId: string) => Promise<void>\n onCancelSelfOnboarding: (employeeId: string) => Promise<void>\n onReview: (employeeId: string) => Promise<void>\n onAddEmployee: () => void\n onSkip: () => void\n showContinueButton: boolean\n /** CSS class name applied to the root element. */\n className?: string\n}\n\n/** @internal */\nexport function EmployeeListView({\n employees,\n isFetching,\n pagination,\n status,\n onEdit,\n onDelete,\n onCancelSelfOnboarding,\n onReview,\n onAddEmployee,\n onSkip,\n showContinueButton,\n className,\n}: EmployeeListViewProps) {\n const { t } = useTranslation('Employee.EmployeeList')\n const Components = useComponentContext()\n const [employeeToDelete, setEmployeeToDelete] = useState<string | null>(null)\n\n const { ...dataViewProps } = useDataView({\n data: employees,\n columns: [\n {\n key: 'name',\n title: t('nameLabel'),\n render: (employee: EmployeeWithActions) => {\n return firstLastName({\n first_name: employee.firstName,\n last_name: employee.lastName,\n })\n },\n },\n {\n key: 'status',\n title: t('statusLabel'),\n render: (employee: EmployeeWithActions) => (\n <EmployeeOnboardingStatusBadge\n onboarded={employee.onboarded}\n onboardingStatus={employee.onboardingStatus}\n />\n ),\n },\n ],\n itemMenu: employee => {\n const menuItems = []\n\n if (employee.allowedActions.includes('edit')) {\n menuItems.push({\n label: t('editCta'),\n onClick: () => {\n onEdit(employee.uuid, employee.onboardingStatus ?? undefined)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('cancel_self_onboarding')) {\n menuItems.push({\n label: t('cancelSelfOnboardingCta'),\n onClick: () => {\n void onCancelSelfOnboarding(employee.uuid)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('review')) {\n menuItems.push({\n label: t('reviewCta'),\n onClick: () => {\n void onReview(employee.uuid)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('delete')) {\n menuItems.push({\n label: t('deleteCta'),\n onClick: () => {\n setEmployeeToDelete(employee.uuid)\n },\n icon: <TrashCanSvg aria-hidden />,\n })\n }\n\n return <HamburgerMenu items={menuItems} triggerLabel={t('hamburgerTitle')} />\n },\n isFetching,\n pagination,\n emptyState: () => (\n <EmptyData title={t('emptyTableTitle')} description={t('emptyTableDescription')}>\n <ActionsLayout justifyContent=\"center\">\n {showContinueButton && (\n <Components.Button variant=\"secondary\" onClick={onSkip}>\n {t('skipCta')}\n </Components.Button>\n )}\n <Components.Button variant=\"primary\" onClick={onAddEmployee} icon={<PlusCircleIcon />}>\n {t('addEmployeeCta')}\n </Components.Button>\n </ActionsLayout>\n </EmptyData>\n ),\n })\n\n return (\n <>\n <section className={className}>\n <Flex flexDirection=\"column\" gap={24}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n\n {employees.length > 0 && (\n <Components.Button\n variant=\"secondary\"\n onClick={onAddEmployee}\n icon={<PlusCircleIcon />}\n >\n {t('addAnotherCta')}\n </Components.Button>\n )}\n </Flex>\n\n <DataView label={t('employeeListLabel')} {...dataViewProps} />\n\n {showContinueButton && employees.length > 0 && (\n <ActionsLayout>\n <Components.Button onClick={onSkip}>{t('continueCta')}</Components.Button>\n </ActionsLayout>\n )}\n </Flex>\n </section>\n\n <Components.Dialog\n isOpen={!!employeeToDelete}\n onClose={() => {\n setEmployeeToDelete(null)\n }}\n onPrimaryActionClick={async () => {\n if (employeeToDelete) {\n try {\n await onDelete(employeeToDelete)\n setEmployeeToDelete(null)\n } catch {\n // Keep dialog open on error\n }\n }\n }}\n isPrimaryActionLoading={status.isPending}\n isDestructive\n title={t('deleteDialog.title')}\n primaryActionLabel={t('deleteDialog.confirmCta')}\n closeActionLabel={t('deleteDialog.cancelCta')}\n >\n {t('deleteDialog.description')}\n </Components.Dialog>\n </>\n )\n}\n"],"names":["EmployeeListView","employees","isFetching","pagination","status","onEdit","onDelete","onCancelSelfOnboarding","onReview","onAddEmployee","onSkip","showContinueButton","className","useTranslation","Components","useComponentContext","employeeToDelete","setEmployeeToDelete","useState","dataViewProps","useDataView","employee","firstLastName","jsx","EmployeeOnboardingStatusBadge","menuItems","PencilSvg","TrashCanSvg","HamburgerMenu","EmptyData","jsxs","ActionsLayout","PlusCircleIcon","Fragment","Flex","DataView"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EmployeeListView.js","sources":["../../../../../src/components/Employee/EmployeeList/onboarding/EmployeeListView.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { OnboardingStatus } from '@gusto/embedded-api/models/operations/putv1employeesemployeeidonboardingstatus'\nimport type { UseEmployeeListResult, EmployeeWithActions } from '../shared/useEmployeeList'\nimport { DataView, EmptyData, ActionsLayout, useDataView, Flex } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { EmployeeOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\n/** @internal */\nexport interface EmployeeListViewProps extends Pick<\n Extract<UseEmployeeListResult, { isLoading: false }>,\n 'pagination' | 'status'\n> {\n employees: EmployeeWithActions[]\n isFetching: boolean\n onEdit: (employeeId: string, onboardingStatus?: OnboardingStatus) => void\n onDelete: (employeeId: string) => Promise<void>\n onCancelSelfOnboarding: (employeeId: string) => Promise<void>\n onReview: (employeeId: string) => Promise<void>\n onAddEmployee: () => void\n onSkip: () => void\n showContinueButton: boolean\n /** CSS class name applied to the root element. */\n className?: string\n}\n\n/** @internal */\nexport function EmployeeListView({\n employees,\n isFetching,\n pagination,\n status,\n onEdit,\n onDelete,\n onCancelSelfOnboarding,\n onReview,\n onAddEmployee,\n onSkip,\n showContinueButton,\n className,\n}: EmployeeListViewProps) {\n const { t } = useTranslation('Employee.EmployeeList')\n const Components = useComponentContext()\n const [employeeToDelete, setEmployeeToDelete] = useState<string | null>(null)\n\n const { ...dataViewProps } = useDataView({\n data: employees,\n columns: [\n {\n key: 'name',\n title: t('nameLabel'),\n render: (employee: EmployeeWithActions) => {\n return firstLastName({\n first_name: employee.firstName,\n last_name: employee.lastName,\n })\n },\n },\n {\n key: 'status',\n title: t('statusLabel'),\n render: (employee: EmployeeWithActions) => (\n <EmployeeOnboardingStatusBadge\n onboarded={employee.onboarded}\n onboardingStatus={employee.onboardingStatus}\n />\n ),\n },\n ],\n itemMenu: employee => {\n const menuItems = []\n\n if (employee.allowedActions.includes('edit')) {\n menuItems.push({\n label: t('editCta'),\n onClick: () => {\n onEdit(employee.uuid, employee.onboardingStatus ?? undefined)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('cancel_self_onboarding')) {\n menuItems.push({\n label: t('cancelSelfOnboardingCta'),\n onClick: () => {\n void onCancelSelfOnboarding(employee.uuid)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('review')) {\n menuItems.push({\n label: t('reviewCta'),\n onClick: () => {\n void onReview(employee.uuid)\n },\n icon: <PencilSvg aria-hidden />,\n })\n }\n\n if (employee.allowedActions.includes('delete')) {\n menuItems.push({\n label: t('deleteCta'),\n onClick: () => {\n setEmployeeToDelete(employee.uuid)\n },\n icon: <TrashCanSvg aria-hidden />,\n })\n }\n\n return <HamburgerMenu items={menuItems} triggerLabel={t('hamburgerTitle')} />\n },\n isFetching,\n pagination,\n emptyState: () => (\n <EmptyData title={t('emptyTableTitle')} description={t('emptyTableDescription')}>\n <ActionsLayout justifyContent=\"center\">\n {showContinueButton && (\n <Components.Button variant=\"secondary\" onClick={onSkip}>\n {t('skipCta')}\n </Components.Button>\n )}\n <Components.Button variant=\"primary\" onClick={onAddEmployee} icon={<PlusCircleIcon />}>\n {t('addEmployeeCta')}\n </Components.Button>\n </ActionsLayout>\n </EmptyData>\n ),\n })\n\n return (\n <>\n <Flex className={className} flexDirection=\"column\" gap={24}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n\n {employees.length > 0 && (\n <Components.Button\n variant=\"secondary\"\n onClick={onAddEmployee}\n icon={<PlusCircleIcon />}\n >\n {t('addAnotherCta')}\n </Components.Button>\n )}\n </Flex>\n\n <DataView label={t('employeeListLabel')} {...dataViewProps} />\n\n {showContinueButton && employees.length > 0 && (\n <ActionsLayout>\n <Components.Button onClick={onSkip}>{t('continueCta')}</Components.Button>\n </ActionsLayout>\n )}\n </Flex>\n\n <Components.Dialog\n isOpen={!!employeeToDelete}\n onClose={() => {\n setEmployeeToDelete(null)\n }}\n onPrimaryActionClick={async () => {\n if (employeeToDelete) {\n try {\n await onDelete(employeeToDelete)\n setEmployeeToDelete(null)\n } catch {\n // Keep dialog open on error\n }\n }\n }}\n isPrimaryActionLoading={status.isPending}\n isDestructive\n title={t('deleteDialog.title')}\n primaryActionLabel={t('deleteDialog.confirmCta')}\n closeActionLabel={t('deleteDialog.cancelCta')}\n >\n {t('deleteDialog.description')}\n </Components.Dialog>\n </>\n )\n}\n"],"names":["EmployeeListView","employees","isFetching","pagination","status","onEdit","onDelete","onCancelSelfOnboarding","onReview","onAddEmployee","onSkip","showContinueButton","className","useTranslation","Components","useComponentContext","employeeToDelete","setEmployeeToDelete","useState","dataViewProps","useDataView","employee","firstLastName","jsx","EmployeeOnboardingStatusBadge","menuItems","PencilSvg","TrashCanSvg","HamburgerMenu","EmptyData","jsxs","ActionsLayout","PlusCircleIcon","Fragment","Flex","DataView"],"mappings":"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"}
|