@gusto/embedded-react-sdk 0.57.3 → 0.58.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 +88 -0
- package/dist/components/Common/DataView/DataCards/DataCards.js +98 -66
- package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
- package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js +11 -9
- package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js.map +1 -1
- package/dist/components/Common/DataView/DataTable/DataTable.js +86 -75
- package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
- package/dist/components/Common/DataView/DataView.js.map +1 -1
- package/dist/components/Common/DataView/getSortControls.js +22 -0
- package/dist/components/Common/DataView/getSortControls.js.map +1 -0
- package/dist/components/Common/DataView/useDataView.js +30 -24
- package/dist/components/Common/DataView/useDataView.js.map +1 -1
- package/dist/components/Common/UI/Table/Table.js +65 -25
- package/dist/components/Common/UI/Table/Table.js.map +1 -1
- package/dist/components/Common/UI/Table/Table.module.scss.js +8 -4
- package/dist/components/Common/UI/Table/Table.module.scss.js.map +1 -1
- package/dist/components/Common/UI/Table/TableTypes.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +5 -6
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +6 -7
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +3 -4
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +30 -45
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js +11 -12
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +78 -83
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -4
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js +45 -54
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js +17 -22
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +1 -0
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +122 -113
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js +63 -54
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js +39 -48
- package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js.map +1 -1
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js +76 -69
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +27 -29
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +14 -12
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
- package/dist/components/Contractor/shared/hourlyRate.js +14 -0
- package/dist/components/Contractor/shared/hourlyRate.js.map +1 -0
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +63 -63
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js +65 -74
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +16 -16
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +2 -3
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +84 -82
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js +8 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js.map +1 -0
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +91 -88
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +16 -16
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +146 -134
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js +14 -12
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +34 -33
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +49 -48
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +0 -4
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +51 -38
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +121 -102
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +79 -74
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +92 -83
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +23 -27
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +82 -75
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js +416 -0
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js.map +1 -0
- package/dist/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js → RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js} +1 -1
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js +97 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js +106 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js.map +1 -0
- package/dist/components/Payroll/{TransitionCreation/TransitionCreationPresentation.module.scss.js → TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js} +1 -1
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js +10 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js.map +1 -0
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +86 -64
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +126 -77
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js +8 -0
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/index.js +16 -20
- package/dist/components/Payroll/index.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +2 -3
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +11 -14
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +18 -17
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js +31 -0
- package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js.map +1 -0
- package/dist/contexts/FeaturesProvider/FeaturesProvider.js +14 -0
- package/dist/contexts/FeaturesProvider/FeaturesProvider.js.map +1 -0
- package/dist/contexts/FeaturesProvider/useFeature.js +7 -0
- package/dist/contexts/FeaturesProvider/useFeature.js.map +1 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +32 -30
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
- package/dist/i18n/I18n.js +2 -3
- package/dist/i18n/I18n.js.map +1 -1
- package/dist/i18n/en/Contractor.Profile.json.js +1 -1
- package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +29 -23
- package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollLanding.json.js +1 -1
- package/dist/i18n/en/{Payroll.UNSTABLE_PayrollEditEmployee.json.js → Payroll.RropPayrollEditEmployee.json.js} +42 -38
- package/dist/i18n/en/Payroll.RropPayrollEditEmployee.json.js.map +1 -0
- package/dist/i18n/en/Payroll.TransitionConfiguration.json.js +28 -0
- package/dist/i18n/en/Payroll.TransitionConfiguration.json.js.map +1 -0
- package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js +16 -12
- package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js.map +1 -1
- package/dist/i18n/en/common.json.js +1 -1
- package/dist/package.json.js +1 -1
- package/dist/partner-hook-utils/form/composeSubmitHandler.js +55 -48
- package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +31 -29
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
- package/dist/shared/constants.js +2 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/src/components/Common/DataView/DataCards/DataCards.d.ts +3 -1
- package/dist/src/components/Common/DataView/DataTable/DataTable.d.ts +3 -1
- package/dist/src/components/Common/DataView/DataView.d.ts +2 -0
- package/dist/src/components/Common/DataView/getSortControls.d.ts +24 -0
- package/dist/src/components/Common/DataView/useDataView.d.ts +22 -1
- package/dist/src/components/Common/UI/Table/TableTypes.d.ts +71 -2
- package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +1 -9
- package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +0 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +3 -14
- package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +2 -2
- package/dist/src/components/Contractor/ContractorList/shared/index.d.ts +1 -1
- package/dist/src/components/Contractor/ContractorList/shared/useContractorList.d.ts +38 -0
- package/dist/src/components/Contractor/shared/hourlyRate.d.ts +23 -0
- package/dist/src/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.d.ts +9 -0
- package/dist/src/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +2 -0
- package/dist/src/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +8 -6
- package/dist/src/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.d.ts +0 -8
- package/dist/src/components/Payroll/PayrollFlow/PayrollFlow.d.ts +5 -3
- package/dist/src/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +2 -3
- package/dist/src/components/Payroll/PayrollFlow/payrollStateMachine.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollLanding/PayrollLanding.d.ts +18 -5
- package/dist/src/components/Payroll/PayrollList/PayrollList.d.ts +11 -5
- package/dist/src/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts → RropPayrollEditEmployee/RropPayrollEditEmployee.d.ts} +9 -5
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfiguration.d.ts +55 -0
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.d.ts +9 -0
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.d.ts +52 -0
- package/dist/src/components/Payroll/TransitionConfiguration/index.d.ts +2 -0
- package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +5 -2
- package/dist/src/components/Payroll/index.d.ts +2 -6
- package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.d.ts +14 -0
- package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.test.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -1
- package/dist/src/contexts/FeaturesProvider/FeaturesProvider.d.ts +21 -0
- package/dist/src/contexts/FeaturesProvider/useFeature.d.ts +53 -0
- package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +3 -0
- package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +38 -10
- package/dist/src/contexts/index.d.ts +1 -0
- package/dist/src/i18n/en/common.json.d.ts +5 -1
- package/dist/src/i18n/types.d.ts +113 -66
- package/dist/src/partner-hook-utils/form/fields/RadioGroupHookField.d.ts +9 -7
- package/dist/src/shared/constants.d.ts +4 -2
- package/dist/src/test-utils/renderWithProviders.d.ts +2 -0
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +24 -27
- package/package.json +15 -14
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +0 -29
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +0 -1
- package/dist/components/Payroll/Transition/TransitionFlow.js +0 -60
- package/dist/components/Payroll/Transition/TransitionFlow.js.map +0 -1
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js +0 -31
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +0 -1
- package/dist/components/Payroll/Transition/transitionStateMachine.js +0 -49
- package/dist/components/Payroll/Transition/transitionStateMachine.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +0 -100
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +0 -110
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.module.scss.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js +0 -21
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js +0 -48
- package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js +0 -35
- package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js +0 -23
- package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +0 -29
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +0 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +0 -411
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +0 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +0 -1
- package/dist/i18n/en/Payroll.Transition.json.js +0 -8
- package/dist/i18n/en/Payroll.Transition.json.js.map +0 -1
- package/dist/i18n/en/Payroll.TransitionCreation.json.js +0 -26
- package/dist/i18n/en/Payroll.TransitionCreation.json.js.map +0 -1
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +0 -1
- package/dist/src/components/Payroll/PayrollFlow/TransitionFlowContextual.d.ts +0 -7
- package/dist/src/components/Payroll/Transition/TransitionFlow.d.ts +0 -55
- package/dist/src/components/Payroll/Transition/TransitionFlowComponents.d.ts +0 -52
- package/dist/src/components/Payroll/Transition/index.d.ts +0 -2
- package/dist/src/components/Payroll/Transition/transitionStateMachine.d.ts +0 -29
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreation.d.ts +0 -22
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +0 -9
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +0 -57
- package/dist/src/components/Payroll/TransitionCreation/index.d.ts +0 -2
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayroll.d.ts +0 -55
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollComponents.d.ts +0 -24
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollTypes.d.ts +0 -23
- package/dist/src/components/Payroll/TransitionPayroll/index.d.ts +0 -2
- package/dist/src/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.d.ts +0 -15
- package/dist/src/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.d.ts +0 -28
- /package/dist/src/components/{Payroll/Transition/transitionStateMachine.test.d.ts → Common/DataView/getSortControls.test.d.ts} +0 -0
package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js
CHANGED
|
@@ -1,229 +1,238 @@
|
|
|
1
|
-
import { jsxs as s, Fragment as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { useTranslation as
|
|
4
|
-
import { getContractorDisplayName as
|
|
1
|
+
import { jsxs as s, Fragment as $, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { useState as D, useEffect as z } from "react";
|
|
3
|
+
import { useTranslation as F } from "react-i18next";
|
|
4
|
+
import { getContractorDisplayName as w } from "../../shared/helpers.js";
|
|
5
5
|
import { Flex as d } from "../../../Common/Flex/Flex.js";
|
|
6
|
-
import { EmptyData as
|
|
6
|
+
import { EmptyData as G } from "../../../Common/EmptyData/EmptyData.js";
|
|
7
7
|
import { HamburgerMenu as L } from "../../../Common/HamburgerMenu/HamburgerMenu.js";
|
|
8
|
-
import { useComponentContext as
|
|
9
|
-
import { ContractorOnboardingStatusBadge as
|
|
10
|
-
import
|
|
11
|
-
import
|
|
8
|
+
import { useComponentContext as k } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
9
|
+
import { ContractorOnboardingStatusBadge as W } from "../../../Common/OnboardingStatusBadge/index.js";
|
|
10
|
+
import K from "../../../../assets/icons/trashcan.svg.js";
|
|
11
|
+
import y from "../../../../assets/icons/x-circle.svg.js";
|
|
12
12
|
import X from "../../../../assets/icons/eye.svg.js";
|
|
13
13
|
import q from "../../../../assets/icons/slash-circle.svg.js";
|
|
14
14
|
import J from "../../../../assets/icons/plus-circle.svg.js";
|
|
15
|
-
import { normalizeToDate as
|
|
16
|
-
import { ContractorOnboardingStatus as
|
|
17
|
-
import { VisuallyHidden as
|
|
18
|
-
import { useDataView as
|
|
19
|
-
import { DataView as
|
|
20
|
-
function
|
|
21
|
-
const r =
|
|
15
|
+
import { normalizeToDate as Q, formatDateLong as U, formatDateLongWithYear as Z } from "../../../../helpers/dateFormatting.js";
|
|
16
|
+
import { ContractorOnboardingStatus as v } from "../../../../shared/constants.js";
|
|
17
|
+
import { VisuallyHidden as ee } from "../../../Common/VisuallyHidden/VisuallyHidden.js";
|
|
18
|
+
import { useDataView as ie } from "../../../Common/DataView/useDataView.js";
|
|
19
|
+
import { DataView as te } from "../../../Common/DataView/DataView.js";
|
|
20
|
+
function ae({ contractor: l }) {
|
|
21
|
+
const r = k();
|
|
22
22
|
return /* @__PURE__ */ s(d, { flexDirection: "column", gap: 0, children: [
|
|
23
|
-
/* @__PURE__ */
|
|
24
|
-
/* @__PURE__ */
|
|
23
|
+
/* @__PURE__ */ a(r.Text, { size: "sm", weight: "medium", children: w(l) }),
|
|
24
|
+
/* @__PURE__ */ a(r.Text, { variant: "supporting", size: "sm", children: l.type ?? "–" })
|
|
25
25
|
] });
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
const r =
|
|
29
|
-
return r ? r.getFullYear() === (/* @__PURE__ */ new Date()).getFullYear() ?
|
|
27
|
+
function f(l) {
|
|
28
|
+
const r = Q(l);
|
|
29
|
+
return r ? r.getFullYear() === (/* @__PURE__ */ new Date()).getFullYear() ? U(r) : Z(r) : "";
|
|
30
30
|
}
|
|
31
|
-
function
|
|
32
|
-
return l ===
|
|
31
|
+
function ne(l) {
|
|
32
|
+
return l === v.ADMIN_ONBOARDING_REVIEW || l === v.SELF_ONBOARDING_REVIEW;
|
|
33
33
|
}
|
|
34
34
|
function Ae({
|
|
35
35
|
className: l,
|
|
36
36
|
contractors: r,
|
|
37
37
|
isFetching: c,
|
|
38
38
|
selectedTab: u,
|
|
39
|
-
onTabChange:
|
|
40
|
-
successMessage:
|
|
39
|
+
onTabChange: I,
|
|
40
|
+
successMessage: S,
|
|
41
41
|
status: A,
|
|
42
|
-
pagination:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
42
|
+
pagination: E,
|
|
43
|
+
sort: g,
|
|
44
|
+
onEdit: R,
|
|
45
|
+
onView: B,
|
|
46
|
+
onDismiss: O,
|
|
47
|
+
onRehire: T,
|
|
48
|
+
onDelete: x,
|
|
49
|
+
onCancelSelfOnboarding: N,
|
|
50
|
+
onCancelDismissal: P,
|
|
51
|
+
onCancelRehire: _,
|
|
52
|
+
onAddContractor: V
|
|
52
53
|
}) {
|
|
53
|
-
const { t: e } =
|
|
54
|
-
|
|
55
|
-
c ||
|
|
54
|
+
const { t: e } = F("Contractor.ManagementContractorList"), n = k(), [h, C] = D(null), [o, p] = D(null), [m, H] = D(u);
|
|
55
|
+
z(() => {
|
|
56
|
+
c || H(u);
|
|
56
57
|
}, [u, c]);
|
|
57
|
-
const
|
|
58
|
+
const M = [
|
|
58
59
|
{ id: "active", label: e("tabs.active"), content: null },
|
|
59
60
|
{ id: "onboarding", label: e("tabs.onboarding"), content: null },
|
|
60
61
|
{ id: "dismissed", label: e("tabs.dismissed"), content: null }
|
|
61
|
-
],
|
|
62
|
-
const
|
|
62
|
+
], Y = () => {
|
|
63
|
+
const i = {
|
|
63
64
|
key: "name",
|
|
64
65
|
title: e("nameLabel"),
|
|
65
|
-
|
|
66
|
+
isSortable: !0,
|
|
67
|
+
render: (t) => /* @__PURE__ */ a(ae, { contractor: t })
|
|
66
68
|
};
|
|
67
69
|
return m === "active" ? [
|
|
68
|
-
|
|
70
|
+
i,
|
|
69
71
|
{
|
|
70
72
|
key: "rate",
|
|
71
73
|
title: e("rateLabel"),
|
|
72
|
-
render: (
|
|
74
|
+
render: (t) => t.wageType === "Hourly" && t.hourlyRate ? e("rateHourly", { rate: `$${t.hourlyRate}` }) : t.wageType ?? "–"
|
|
73
75
|
},
|
|
74
76
|
{
|
|
75
77
|
key: "status",
|
|
76
|
-
title: /* @__PURE__ */
|
|
77
|
-
render: (
|
|
78
|
-
date:
|
|
79
|
-
}) }) :
|
|
78
|
+
title: /* @__PURE__ */ a(ee, { children: e("statusColumnLabel") }),
|
|
79
|
+
render: (t) => t.upcomingEmployment?.startDate ? /* @__PURE__ */ a(n.Badge, { status: "info", children: e("startsBadge", {
|
|
80
|
+
date: f(t.upcomingEmployment.startDate)
|
|
81
|
+
}) }) : t.dismissalDate ? /* @__PURE__ */ a(n.Badge, { status: "warning", children: e("lastDayBadge", { date: f(t.dismissalDate) }) }) : null
|
|
80
82
|
}
|
|
81
83
|
] : m === "onboarding" ? [
|
|
82
|
-
|
|
84
|
+
i,
|
|
83
85
|
{
|
|
84
86
|
key: "status",
|
|
85
87
|
title: e("onboardingStatusLabel"),
|
|
86
|
-
render: (
|
|
87
|
-
/* @__PURE__ */
|
|
88
|
-
|
|
88
|
+
render: (t) => /* @__PURE__ */ s(d, { alignItems: "center", gap: 8, children: [
|
|
89
|
+
/* @__PURE__ */ a(
|
|
90
|
+
W,
|
|
89
91
|
{
|
|
90
|
-
onboarded:
|
|
91
|
-
onboardingStatus:
|
|
92
|
+
onboarded: t.onboarded,
|
|
93
|
+
onboardingStatus: t.onboardingStatus
|
|
92
94
|
}
|
|
93
95
|
),
|
|
94
|
-
|
|
95
|
-
date:
|
|
96
|
+
t.onboardingStatus === v.ONBOARDING_COMPLETED && t.upcomingEmployment?.startDate && /* @__PURE__ */ a(n.Badge, { status: "info", children: e("startsBadge", {
|
|
97
|
+
date: f(t.upcomingEmployment.startDate)
|
|
96
98
|
}) })
|
|
97
99
|
] })
|
|
98
100
|
}
|
|
99
101
|
] : [
|
|
100
|
-
|
|
102
|
+
i,
|
|
101
103
|
{
|
|
102
104
|
key: "dismissalDate",
|
|
103
105
|
title: e("dismissalDateLabel"),
|
|
104
|
-
render: (
|
|
106
|
+
render: (t) => t.dismissalDate ? f(t.dismissalDate) : "–"
|
|
105
107
|
}
|
|
106
108
|
];
|
|
107
|
-
}, { ...
|
|
109
|
+
}, { ...j } = ie({
|
|
108
110
|
data: r,
|
|
109
|
-
columns:
|
|
110
|
-
|
|
111
|
+
columns: Y(),
|
|
112
|
+
sortDescriptor: g.current && {
|
|
113
|
+
columnKey: g.current.field,
|
|
114
|
+
direction: g.current.direction
|
|
115
|
+
},
|
|
116
|
+
onSortChange: (i) => {
|
|
117
|
+
g.onSortChange(i && { field: "name", direction: i.direction });
|
|
118
|
+
},
|
|
119
|
+
itemMenu: (i) => {
|
|
111
120
|
if (m === "onboarding") {
|
|
112
|
-
const
|
|
113
|
-
return
|
|
121
|
+
const b = [];
|
|
122
|
+
return i.allowedActions.includes("cancel_self_onboarding") && b.push({
|
|
114
123
|
label: e("cancelSelfOnboardingCta"),
|
|
115
124
|
onClick: () => {
|
|
116
|
-
|
|
125
|
+
N(i.uuid);
|
|
117
126
|
},
|
|
118
|
-
icon: /* @__PURE__ */
|
|
119
|
-
}),
|
|
127
|
+
icon: /* @__PURE__ */ a(y, { "aria-hidden": !0 })
|
|
128
|
+
}), i.allowedActions.includes("delete") && b.push({
|
|
120
129
|
label: e("removeCta"),
|
|
121
130
|
onClick: () => {
|
|
122
|
-
|
|
131
|
+
C(i.uuid);
|
|
123
132
|
},
|
|
124
|
-
icon: /* @__PURE__ */
|
|
133
|
+
icon: /* @__PURE__ */ a(K, { "aria-hidden": !0 })
|
|
125
134
|
}), /* @__PURE__ */ s(d, { alignItems: "center", justifyContent: "flex-end", gap: 4, children: [
|
|
126
|
-
|
|
135
|
+
i.allowedActions.includes("edit") && /* @__PURE__ */ a(
|
|
127
136
|
n.Button,
|
|
128
137
|
{
|
|
129
138
|
variant: "secondary",
|
|
130
139
|
onClick: () => {
|
|
131
|
-
|
|
140
|
+
R(i.uuid);
|
|
132
141
|
},
|
|
133
|
-
children:
|
|
142
|
+
children: ne(i.onboardingStatus) ? e("reviewCta") : e("continueCta")
|
|
134
143
|
}
|
|
135
144
|
),
|
|
136
|
-
/* @__PURE__ */
|
|
145
|
+
/* @__PURE__ */ a(
|
|
137
146
|
L,
|
|
138
147
|
{
|
|
139
|
-
items:
|
|
140
|
-
triggerLabel: e("hamburgerTitle", { name:
|
|
148
|
+
items: b,
|
|
149
|
+
triggerLabel: e("hamburgerTitle", { name: w(i) })
|
|
141
150
|
}
|
|
142
151
|
)
|
|
143
152
|
] });
|
|
144
153
|
}
|
|
145
|
-
const
|
|
146
|
-
return
|
|
154
|
+
const t = [];
|
|
155
|
+
return i.allowedActions.includes("view") && t.push({
|
|
147
156
|
label: e("viewDetailsCta"),
|
|
148
157
|
onClick: () => {
|
|
149
|
-
|
|
158
|
+
B(i.uuid);
|
|
150
159
|
},
|
|
151
|
-
icon: /* @__PURE__ */
|
|
152
|
-
}),
|
|
160
|
+
icon: /* @__PURE__ */ a(X, { "aria-hidden": !0 })
|
|
161
|
+
}), i.allowedActions.includes("cancel_rehire") && t.push({
|
|
153
162
|
label: e("cancelRehireCta"),
|
|
154
163
|
onClick: () => {
|
|
155
|
-
|
|
164
|
+
p({ contractorId: i.uuid, type: "rehire" });
|
|
156
165
|
},
|
|
157
|
-
icon: /* @__PURE__ */
|
|
158
|
-
}),
|
|
166
|
+
icon: /* @__PURE__ */ a(y, { "aria-hidden": !0 })
|
|
167
|
+
}), i.allowedActions.includes("cancel_dismissal") && t.push({
|
|
159
168
|
label: e("cancelDismissalCta"),
|
|
160
169
|
onClick: () => {
|
|
161
|
-
|
|
170
|
+
p({ contractorId: i.uuid, type: "dismissal" });
|
|
162
171
|
},
|
|
163
|
-
icon: /* @__PURE__ */
|
|
164
|
-
}),
|
|
172
|
+
icon: /* @__PURE__ */ a(y, { "aria-hidden": !0 })
|
|
173
|
+
}), i.allowedActions.includes("dismiss") && t.push({
|
|
165
174
|
label: e("dismissCta"),
|
|
166
175
|
onClick: () => {
|
|
167
|
-
|
|
176
|
+
O(i.uuid);
|
|
168
177
|
},
|
|
169
|
-
icon: /* @__PURE__ */
|
|
170
|
-
}),
|
|
178
|
+
icon: /* @__PURE__ */ a(q, { "aria-hidden": !0 })
|
|
179
|
+
}), i.allowedActions.includes("rehire") && t.push({
|
|
171
180
|
label: e("rehireCta"),
|
|
172
181
|
onClick: () => {
|
|
173
|
-
|
|
182
|
+
T(i.uuid);
|
|
174
183
|
},
|
|
175
|
-
icon: /* @__PURE__ */
|
|
176
|
-
}), /* @__PURE__ */
|
|
184
|
+
icon: /* @__PURE__ */ a(J, { "aria-hidden": !0 })
|
|
185
|
+
}), /* @__PURE__ */ a(
|
|
177
186
|
L,
|
|
178
187
|
{
|
|
179
|
-
items:
|
|
180
|
-
triggerLabel: e("hamburgerTitle", { name:
|
|
188
|
+
items: t,
|
|
189
|
+
triggerLabel: e("hamburgerTitle", { name: w(i) })
|
|
181
190
|
}
|
|
182
191
|
);
|
|
183
192
|
},
|
|
184
193
|
isFetching: c,
|
|
185
|
-
pagination:
|
|
186
|
-
emptyState: () => /* @__PURE__ */
|
|
187
|
-
|
|
194
|
+
pagination: E,
|
|
195
|
+
emptyState: () => /* @__PURE__ */ a(
|
|
196
|
+
G,
|
|
188
197
|
{
|
|
189
198
|
title: e(`emptyState.${m}.title`),
|
|
190
199
|
description: e(`emptyState.${m}.description`)
|
|
191
200
|
}
|
|
192
201
|
)
|
|
193
202
|
});
|
|
194
|
-
return /* @__PURE__ */ s(
|
|
203
|
+
return /* @__PURE__ */ s($, { children: [
|
|
195
204
|
/* @__PURE__ */ s(d, { className: l, flexDirection: "column", gap: 32, children: [
|
|
196
|
-
|
|
205
|
+
S && /* @__PURE__ */ a(n.Alert, { label: S, status: "success" }),
|
|
197
206
|
/* @__PURE__ */ s(d, { justifyContent: "space-between", alignItems: "center", children: [
|
|
198
|
-
/* @__PURE__ */
|
|
199
|
-
/* @__PURE__ */
|
|
207
|
+
/* @__PURE__ */ a(n.Heading, { as: "h2", children: e("title") }),
|
|
208
|
+
/* @__PURE__ */ a(n.Button, { variant: "secondary", onClick: V, children: e("addContractorCta") })
|
|
200
209
|
] }),
|
|
201
210
|
/* @__PURE__ */ s(d, { flexDirection: "column", gap: 0, children: [
|
|
202
|
-
/* @__PURE__ */
|
|
211
|
+
/* @__PURE__ */ a(
|
|
203
212
|
n.Tabs,
|
|
204
213
|
{
|
|
205
|
-
tabs:
|
|
214
|
+
tabs: M,
|
|
206
215
|
selectedId: u,
|
|
207
|
-
onSelectionChange: (
|
|
208
|
-
|
|
216
|
+
onSelectionChange: (i) => {
|
|
217
|
+
I(i);
|
|
209
218
|
},
|
|
210
219
|
"aria-label": e("tabsLabel")
|
|
211
220
|
}
|
|
212
221
|
),
|
|
213
|
-
/* @__PURE__ */
|
|
222
|
+
/* @__PURE__ */ a(te, { label: e("contractorListLabel"), ...j })
|
|
214
223
|
] })
|
|
215
224
|
] }),
|
|
216
|
-
/* @__PURE__ */
|
|
225
|
+
/* @__PURE__ */ a(
|
|
217
226
|
n.Dialog,
|
|
218
227
|
{
|
|
219
|
-
isOpen: !!
|
|
228
|
+
isOpen: !!h,
|
|
220
229
|
onClose: () => {
|
|
221
|
-
|
|
230
|
+
C(null);
|
|
222
231
|
},
|
|
223
232
|
onPrimaryActionClick: async () => {
|
|
224
|
-
if (
|
|
233
|
+
if (h)
|
|
225
234
|
try {
|
|
226
|
-
await
|
|
235
|
+
await x(h), C(null);
|
|
227
236
|
} catch {
|
|
228
237
|
}
|
|
229
238
|
},
|
|
@@ -235,17 +244,17 @@ function Ae({
|
|
|
235
244
|
children: e("removeDialog.description")
|
|
236
245
|
}
|
|
237
246
|
),
|
|
238
|
-
/* @__PURE__ */
|
|
247
|
+
/* @__PURE__ */ a(
|
|
239
248
|
n.Dialog,
|
|
240
249
|
{
|
|
241
250
|
isOpen: !!o,
|
|
242
251
|
onClose: () => {
|
|
243
|
-
|
|
252
|
+
p(null);
|
|
244
253
|
},
|
|
245
254
|
onPrimaryActionClick: async () => {
|
|
246
255
|
if (o)
|
|
247
256
|
try {
|
|
248
|
-
o.type === "rehire" ? await
|
|
257
|
+
o.type === "rehire" ? await _(o.contractorId) : await P(o.contractorId), p(null);
|
|
249
258
|
} catch {
|
|
250
259
|
}
|
|
251
260
|
},
|
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 { 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
|
+
{"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' | 'sort'\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 sort,\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 // `key` doubles as the API sort field, so it must stay in step with ContractorSortField.\n const nameColumn = {\n key: 'name',\n title: t('nameLabel'),\n isSortable: true,\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 sortDescriptor: sort.current && {\n columnKey: sort.current.field,\n direction: sort.current.direction,\n },\n onSortChange: sortDescriptor => {\n // Name is the only sortable column; ContractorSortField makes a stale key a type error.\n sort.onSortChange(sortDescriptor && { field: 'name', direction: sortDescriptor.direction })\n },\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","sort","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","sortDescriptor","menuItems","XCircleSvg","TrashCanSvg","HamburgerMenu","EyeSvg","SlashCircleSvg","PlusCircleIcon","EmptyData","Fragment","id","DataView"],"mappings":"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"}
|