@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
|
@@ -1,43 +1,46 @@
|
|
|
1
1
|
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
-
import { useId as
|
|
3
|
-
import
|
|
4
|
-
import { useTranslation as
|
|
5
|
-
import { useSelectionState as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
2
|
+
import { useId as E, useState as F } from "react";
|
|
3
|
+
import A from "classnames";
|
|
4
|
+
import { useTranslation as B } from "react-i18next";
|
|
5
|
+
import { useSelectionState as G } from "../useSelectionState.js";
|
|
6
|
+
import { getSortControls as J } from "../getSortControls.js";
|
|
7
|
+
import b from "./DataTable.module.scss.js";
|
|
8
|
+
import { useComponentContext as K } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
8
9
|
import { VisuallyHidden as m } from "../../VisuallyHidden/VisuallyHidden.js";
|
|
9
|
-
function
|
|
10
|
-
return !o || o === "start" ?
|
|
10
|
+
function i(n, o) {
|
|
11
|
+
return !o || o === "start" ? n : /* @__PURE__ */ a("div", { className: b.cellEnd, children: n });
|
|
11
12
|
}
|
|
12
|
-
function
|
|
13
|
+
function W(n, o) {
|
|
13
14
|
if (o.render)
|
|
14
|
-
return o.render(
|
|
15
|
+
return o.render(n);
|
|
15
16
|
if (o.key) {
|
|
16
|
-
const
|
|
17
|
-
return String(
|
|
17
|
+
const c = o.key;
|
|
18
|
+
return String(n[c] ?? "");
|
|
18
19
|
}
|
|
19
20
|
return "";
|
|
20
21
|
}
|
|
21
|
-
const
|
|
22
|
-
label:
|
|
22
|
+
const I = ({
|
|
23
|
+
label: n,
|
|
23
24
|
data: o,
|
|
24
|
-
columns:
|
|
25
|
-
itemMenu:
|
|
25
|
+
columns: c,
|
|
26
|
+
itemMenu: y,
|
|
26
27
|
onSelect: l,
|
|
27
|
-
onSelectAll:
|
|
28
|
-
getIsItemSelected:
|
|
29
|
-
hideSelectAll:
|
|
30
|
-
emptyState:
|
|
31
|
-
footer:
|
|
32
|
-
isWithinBox:
|
|
28
|
+
onSelectAll: v,
|
|
29
|
+
getIsItemSelected: f,
|
|
30
|
+
hideSelectAll: D,
|
|
31
|
+
emptyState: k,
|
|
32
|
+
footer: h,
|
|
33
|
+
isWithinBox: $,
|
|
33
34
|
selectionMode: C = "multiple",
|
|
34
|
-
isFetching: g
|
|
35
|
+
isFetching: g,
|
|
36
|
+
sortDescriptor: w,
|
|
37
|
+
onSortChange: R
|
|
35
38
|
}) => {
|
|
36
|
-
const
|
|
39
|
+
const p = K(), { t: d } = B("common"), H = E(), [L, j] = F(null), { allSelected: x } = G(o, f), N = [
|
|
37
40
|
...l ? [
|
|
38
41
|
{
|
|
39
42
|
key: "select-header",
|
|
40
|
-
content: C === "multiple" &&
|
|
43
|
+
content: C === "multiple" && f && !D && o.length > 0 ? (
|
|
41
44
|
// Stop propagation so the surrounding react-aria-components
|
|
42
45
|
// <Column> press handler doesn't intercept the checkbox click
|
|
43
46
|
// and desync the controlled DOM state. The inner <input> is
|
|
@@ -57,78 +60,86 @@ const Y = ({
|
|
|
57
60
|
e.stopPropagation();
|
|
58
61
|
},
|
|
59
62
|
children: /* @__PURE__ */ a(
|
|
60
|
-
|
|
63
|
+
p.Checkbox,
|
|
61
64
|
{
|
|
62
|
-
value:
|
|
63
|
-
onChange: (e) =>
|
|
64
|
-
label:
|
|
65
|
+
value: x,
|
|
66
|
+
onChange: (e) => v?.(e, o),
|
|
67
|
+
label: d("table.selectAllRowsLabel"),
|
|
65
68
|
shouldVisuallyHideLabel: !0
|
|
66
69
|
}
|
|
67
70
|
)
|
|
68
71
|
}
|
|
69
72
|
)
|
|
70
|
-
) : /* @__PURE__ */ a(m, { children:
|
|
73
|
+
) : /* @__PURE__ */ a(m, { children: d("table.selectRowHeader") })
|
|
71
74
|
}
|
|
72
75
|
] : [],
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
// A sortable column with nothing listening would render a header that looks interactive and
|
|
77
|
+
// does nothing, so the sort affordance is gated on there being a handler to receive it.
|
|
78
|
+
...c.map(
|
|
79
|
+
(e, t) => e.isSortable && R ? {
|
|
80
|
+
key: e.key,
|
|
81
|
+
content: i(e.title, e.justify),
|
|
82
|
+
...J(e.key, w, R)
|
|
83
|
+
} : {
|
|
84
|
+
key: typeof e.key == "string" ? e.key : `header-${t}`,
|
|
85
|
+
content: i(e.title, e.justify)
|
|
86
|
+
}
|
|
87
|
+
),
|
|
88
|
+
...y ? [
|
|
78
89
|
{
|
|
79
90
|
key: "actions-header",
|
|
80
|
-
content:
|
|
81
|
-
/* @__PURE__ */ a(m, { children:
|
|
91
|
+
content: i(
|
|
92
|
+
/* @__PURE__ */ a(m, { children: d("table.actionsColumnHeader") }),
|
|
82
93
|
"end"
|
|
83
94
|
)
|
|
84
95
|
}
|
|
85
96
|
] : []
|
|
86
|
-
],
|
|
87
|
-
|
|
88
|
-
},
|
|
97
|
+
], P = (e, t) => {
|
|
98
|
+
j(t), l?.(e, !0);
|
|
99
|
+
}, V = (e, t) => {
|
|
89
100
|
if (C === "single") {
|
|
90
|
-
const
|
|
101
|
+
const r = f?.(e) ?? L === t;
|
|
91
102
|
return /* @__PURE__ */ a(
|
|
92
|
-
|
|
103
|
+
p.Radio,
|
|
93
104
|
{
|
|
94
|
-
name:
|
|
95
|
-
value:
|
|
105
|
+
name: H,
|
|
106
|
+
value: r,
|
|
96
107
|
onChange: () => {
|
|
97
|
-
|
|
108
|
+
P(e, t);
|
|
98
109
|
},
|
|
99
|
-
label:
|
|
110
|
+
label: d("table.selectRowLabel"),
|
|
100
111
|
shouldVisuallyHideLabel: !0
|
|
101
112
|
}
|
|
102
113
|
);
|
|
103
114
|
}
|
|
104
|
-
const s =
|
|
115
|
+
const s = f?.(e) ?? !1;
|
|
105
116
|
return /* @__PURE__ */ a(
|
|
106
|
-
|
|
117
|
+
p.Checkbox,
|
|
107
118
|
{
|
|
108
119
|
value: s,
|
|
109
|
-
onChange: (
|
|
110
|
-
l?.(e,
|
|
120
|
+
onChange: (r) => {
|
|
121
|
+
l?.(e, r);
|
|
111
122
|
},
|
|
112
|
-
label:
|
|
123
|
+
label: d("table.selectRowLabel"),
|
|
113
124
|
shouldVisuallyHideLabel: !0
|
|
114
125
|
}
|
|
115
126
|
);
|
|
116
|
-
},
|
|
127
|
+
}, S = o.map((e, t) => {
|
|
117
128
|
const s = [
|
|
118
129
|
...l ? [
|
|
119
130
|
{
|
|
120
131
|
key: `select-${t}`,
|
|
121
|
-
content:
|
|
132
|
+
content: V(e, t)
|
|
122
133
|
}
|
|
123
134
|
] : [],
|
|
124
|
-
...
|
|
125
|
-
key: typeof
|
|
126
|
-
content:
|
|
135
|
+
...c.map((r, u) => ({
|
|
136
|
+
key: typeof r.key == "string" ? r.key : `cell-${u}`,
|
|
137
|
+
content: i(W(e, r), r.justify)
|
|
127
138
|
})),
|
|
128
|
-
...
|
|
139
|
+
...y ? [
|
|
129
140
|
{
|
|
130
141
|
key: `menu-${t}`,
|
|
131
|
-
content:
|
|
142
|
+
content: i(y(e), "end")
|
|
132
143
|
}
|
|
133
144
|
] : []
|
|
134
145
|
];
|
|
@@ -136,19 +147,19 @@ const Y = ({
|
|
|
136
147
|
key: `row-${t}`,
|
|
137
148
|
data: s
|
|
138
149
|
};
|
|
139
|
-
}),
|
|
140
|
-
if (!
|
|
141
|
-
const e =
|
|
150
|
+
}), T = (() => {
|
|
151
|
+
if (!h) return;
|
|
152
|
+
const e = h(), t = [];
|
|
142
153
|
return l && t.push({
|
|
143
154
|
key: "footer-select",
|
|
144
155
|
content: ""
|
|
145
|
-
}),
|
|
146
|
-
const
|
|
156
|
+
}), c.forEach((s, r) => {
|
|
157
|
+
const u = typeof s.key == "string" ? s.key : `column-${r}`;
|
|
147
158
|
t.push({
|
|
148
|
-
key: `footer-${
|
|
149
|
-
content:
|
|
159
|
+
key: `footer-${u}`,
|
|
160
|
+
content: i(e[u] || "", s.justify)
|
|
150
161
|
});
|
|
151
|
-
}),
|
|
162
|
+
}), y && t.push({
|
|
152
163
|
key: "footer-actions",
|
|
153
164
|
content: ""
|
|
154
165
|
}), t;
|
|
@@ -156,18 +167,18 @@ const Y = ({
|
|
|
156
167
|
return /* @__PURE__ */ a(
|
|
157
168
|
"div",
|
|
158
169
|
{
|
|
159
|
-
className:
|
|
170
|
+
className: A(b.tableWrapper, g && b.isFetching),
|
|
160
171
|
"aria-busy": !!g,
|
|
161
172
|
children: /* @__PURE__ */ a(
|
|
162
|
-
|
|
173
|
+
p.Table,
|
|
163
174
|
{
|
|
164
|
-
"aria-label":
|
|
175
|
+
"aria-label": n,
|
|
165
176
|
"data-testid": "data-table",
|
|
166
|
-
headers:
|
|
167
|
-
rows:
|
|
168
|
-
footer:
|
|
169
|
-
emptyState:
|
|
170
|
-
isWithinBox:
|
|
177
|
+
headers: N,
|
|
178
|
+
rows: S,
|
|
179
|
+
footer: T,
|
|
180
|
+
emptyState: k ? k() : void 0,
|
|
181
|
+
isWithinBox: $,
|
|
171
182
|
hasCheckboxColumn: !!l
|
|
172
183
|
}
|
|
173
184
|
)
|
|
@@ -175,6 +186,6 @@ const Y = ({
|
|
|
175
186
|
);
|
|
176
187
|
};
|
|
177
188
|
export {
|
|
178
|
-
|
|
189
|
+
I as DataTable
|
|
179
190
|
};
|
|
180
191
|
//# sourceMappingURL=DataTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.js","sources":["../../../../../src/components/Common/DataView/DataTable/DataTable.tsx"],"sourcesContent":["import { useId, useState } from 'react'\nimport cn from 'classnames'\nimport { useTranslation } from 'react-i18next'\nimport type { useDataViewPropReturn, SelectionMode } from '../useDataView'\nimport { useSelectionState } from '../useSelectionState'\nimport type { TableData, TableRow, TableProps } from '../../UI/Table/TableTypes'\nimport { VisuallyHidden } from '../../VisuallyHidden'\nimport styles from './DataTable.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\nfunction withJustify(content: React.ReactNode, justify?: 'start' | 'end') {\n if (!justify || justify === 'start') return content\n return <div className={styles.cellEnd}>{content}</div>\n}\n\n/** @internal */\nexport type DataTableProps<T> = {\n label: string\n columns: useDataViewPropReturn<T>['columns']\n data: useDataViewPropReturn<T>['data']\n itemMenu?: useDataViewPropReturn<T>['itemMenu']\n onSelect?: useDataViewPropReturn<T>['onSelect']\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: useDataViewPropReturn<T>['hideSelectAll']\n emptyState?: useDataViewPropReturn<T>['emptyState']\n footer?: useDataViewPropReturn<T>['footer']\n isWithinBox?: TableProps['isWithinBox']\n selectionMode?: SelectionMode\n isFetching?: useDataViewPropReturn<T>['isFetching']\n}\n\nfunction getCellContent<T>(\n item: T,\n column: { key?: string | keyof T; render?: (item: T) => React.ReactNode },\n) {\n if (column.render) {\n return column.render(item)\n }\n\n if (column.key) {\n const key = column.key as keyof T\n return String(item[key] ?? '')\n }\n\n return ''\n}\n\n/** @internal */\nexport const DataTable = <T,>({\n label,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isWithinBox,\n selectionMode = 'multiple',\n isFetching,\n}: DataTableProps<T>) => {\n const Components = useComponentContext()\n const { t } = useTranslation('common')\n const radioGroupName = useId()\n const [selectedRadioIndex, setSelectedRadioIndex] = useState<number | null>(null)\n const { allSelected } = useSelectionState(data, getIsItemSelected)\n\n const headers: TableData[] = [\n ...(onSelect\n ? [\n {\n key: 'select-header',\n content:\n selectionMode === 'multiple' &&\n getIsItemSelected &&\n !hideSelectAll &&\n data.length > 0 ? (\n // Stop propagation so the surrounding react-aria-components\n // <Column> press handler doesn't intercept the checkbox click\n // and desync the controlled DOM state. The inner <input> is\n // the actual interactive element; this span is a propagation\n // shield, not a click target itself.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <span\n onClick={e => {\n e.stopPropagation()\n }}\n onPointerDown={e => {\n e.stopPropagation()\n }}\n onMouseDown={e => {\n e.stopPropagation()\n }}\n >\n <Components.Checkbox\n value={allSelected}\n onChange={(checked: boolean) => onSelectAll?.(checked, data)}\n label={t('table.selectAllRowsLabel')}\n shouldVisuallyHideLabel\n />\n </span>\n ) : (\n <VisuallyHidden>{t('table.selectRowHeader')}</VisuallyHidden>\n ),\n },\n ]\n : []),\n ...columns.map((column, index) => ({\n key: typeof column.key === 'string' ? column.key : `header-${index}`,\n content: withJustify(column.title, column.justify),\n })),\n ...(itemMenu\n ? [\n {\n key: 'actions-header',\n content: withJustify(\n <VisuallyHidden>{t('table.actionsColumnHeader')}</VisuallyHidden>,\n 'end',\n ),\n },\n ]\n : []),\n ]\n\n const handleRadioSelect = (item: T, rowIndex: number) => {\n setSelectedRadioIndex(rowIndex)\n onSelect?.(item, true)\n }\n\n const renderSelectionControl = (item: T, rowIndex: number) => {\n if (selectionMode === 'single') {\n const isSelected = getIsItemSelected?.(item) ?? selectedRadioIndex === rowIndex\n return (\n <Components.Radio\n name={radioGroupName}\n value={isSelected}\n onChange={() => {\n handleRadioSelect(item, rowIndex)\n }}\n label={t('table.selectRowLabel')}\n shouldVisuallyHideLabel\n />\n )\n }\n\n const isSelected = getIsItemSelected?.(item) ?? false\n return (\n <Components.Checkbox\n value={isSelected}\n onChange={(checked: boolean) => {\n onSelect?.(item, checked)\n }}\n label={t('table.selectRowLabel')}\n shouldVisuallyHideLabel\n />\n )\n }\n\n const rows: TableRow[] = data.map((item, rowIndex) => {\n const rowData: TableData[] = [\n ...(onSelect\n ? [\n {\n key: `select-${rowIndex}`,\n content: renderSelectionControl(item, rowIndex),\n },\n ]\n : []),\n ...columns.map((column, colIndex) => {\n return {\n key: typeof column.key === 'string' ? column.key : `cell-${colIndex}`,\n content: withJustify(getCellContent(item, column), column.justify),\n }\n }),\n ...(itemMenu\n ? [\n {\n key: `menu-${rowIndex}`,\n content: withJustify(itemMenu(item), 'end'),\n },\n ]\n : []),\n ]\n\n return {\n key: `row-${rowIndex}`,\n data: rowData,\n }\n })\n\n const buildFooterData = () => {\n if (!footer) return undefined\n\n const footerContent = footer()\n const footerCells: TableData[] = []\n\n // Add select column footer (empty)\n if (onSelect) {\n footerCells.push({\n key: 'footer-select',\n content: '',\n })\n }\n\n // Add data column footers\n columns.forEach((column, index) => {\n const columnKey = typeof column.key === 'string' ? column.key : `column-${index}`\n footerCells.push({\n key: `footer-${columnKey}`,\n content: withJustify(footerContent[columnKey] || '', column.justify),\n })\n })\n\n // Add actions column footer (empty)\n if (itemMenu) {\n footerCells.push({\n key: 'footer-actions',\n content: '',\n })\n }\n\n return footerCells\n }\n\n const footerData = buildFooterData()\n\n return (\n <div\n className={cn(styles.tableWrapper, isFetching && styles.isFetching)}\n aria-busy={Boolean(isFetching)}\n >\n <Components.Table\n aria-label={label}\n data-testid=\"data-table\"\n headers={headers}\n rows={rows}\n footer={footerData}\n emptyState={emptyState ? emptyState() : undefined}\n isWithinBox={isWithinBox}\n hasCheckboxColumn={!!onSelect}\n />\n </div>\n )\n}\n"],"names":["withJustify","content","justify","jsx","styles","getCellContent","item","column","key","DataTable","label","data","columns","itemMenu","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","emptyState","footer","isWithinBox","selectionMode","isFetching","Components","useComponentContext","t","useTranslation","radioGroupName","useId","selectedRadioIndex","setSelectedRadioIndex","useState","allSelected","useSelectionState","headers","checked","VisuallyHidden","index","handleRadioSelect","rowIndex","renderSelectionControl","isSelected","rows","rowData","colIndex","footerData","footerContent","footerCells","columnKey","cn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataTable.js","sources":["../../../../../src/components/Common/DataView/DataTable/DataTable.tsx"],"sourcesContent":["import { useId, useState } from 'react'\nimport cn from 'classnames'\nimport { useTranslation } from 'react-i18next'\nimport type { useDataViewPropReturn, SelectionMode } from '../useDataView'\nimport { useSelectionState } from '../useSelectionState'\nimport { getSortControls } from '../getSortControls'\nimport type { TableData, TableHeaderData, TableRow, TableProps } from '../../UI/Table/TableTypes'\nimport { VisuallyHidden } from '../../VisuallyHidden'\nimport styles from './DataTable.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\nfunction withJustify(content: React.ReactNode, justify?: 'start' | 'end') {\n if (!justify || justify === 'start') return content\n return <div className={styles.cellEnd}>{content}</div>\n}\n\n/** @internal */\nexport type DataTableProps<T> = {\n label: string\n columns: useDataViewPropReturn<T>['columns']\n data: useDataViewPropReturn<T>['data']\n itemMenu?: useDataViewPropReturn<T>['itemMenu']\n onSelect?: useDataViewPropReturn<T>['onSelect']\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: useDataViewPropReturn<T>['hideSelectAll']\n emptyState?: useDataViewPropReturn<T>['emptyState']\n footer?: useDataViewPropReturn<T>['footer']\n isWithinBox?: TableProps['isWithinBox']\n selectionMode?: SelectionMode\n isFetching?: useDataViewPropReturn<T>['isFetching']\n sortDescriptor?: useDataViewPropReturn<T>['sortDescriptor']\n onSortChange?: useDataViewPropReturn<T>['onSortChange']\n}\n\nfunction getCellContent<T>(\n item: T,\n column: { key?: string | keyof T; render?: (item: T) => React.ReactNode },\n) {\n if (column.render) {\n return column.render(item)\n }\n\n if (column.key) {\n const key = column.key as keyof T\n return String(item[key] ?? '')\n }\n\n return ''\n}\n\n/** @internal */\nexport const DataTable = <T,>({\n label,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isWithinBox,\n selectionMode = 'multiple',\n isFetching,\n sortDescriptor,\n onSortChange,\n}: DataTableProps<T>) => {\n const Components = useComponentContext()\n const { t } = useTranslation('common')\n const radioGroupName = useId()\n const [selectedRadioIndex, setSelectedRadioIndex] = useState<number | null>(null)\n const { allSelected } = useSelectionState(data, getIsItemSelected)\n\n const headers: TableHeaderData[] = [\n ...(onSelect\n ? [\n {\n key: 'select-header',\n content:\n selectionMode === 'multiple' &&\n getIsItemSelected &&\n !hideSelectAll &&\n data.length > 0 ? (\n // Stop propagation so the surrounding react-aria-components\n // <Column> press handler doesn't intercept the checkbox click\n // and desync the controlled DOM state. The inner <input> is\n // the actual interactive element; this span is a propagation\n // shield, not a click target itself.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <span\n onClick={e => {\n e.stopPropagation()\n }}\n onPointerDown={e => {\n e.stopPropagation()\n }}\n onMouseDown={e => {\n e.stopPropagation()\n }}\n >\n <Components.Checkbox\n value={allSelected}\n onChange={(checked: boolean) => onSelectAll?.(checked, data)}\n label={t('table.selectAllRowsLabel')}\n shouldVisuallyHideLabel\n />\n </span>\n ) : (\n <VisuallyHidden>{t('table.selectRowHeader')}</VisuallyHidden>\n ),\n },\n ]\n : []),\n // A sortable column with nothing listening would render a header that looks interactive and\n // does nothing, so the sort affordance is gated on there being a handler to receive it.\n ...columns.map((column, index) =>\n column.isSortable && onSortChange\n ? {\n key: column.key,\n content: withJustify(column.title, column.justify),\n ...getSortControls(column.key, sortDescriptor, onSortChange),\n }\n : {\n key: typeof column.key === 'string' ? column.key : `header-${index}`,\n content: withJustify(column.title, column.justify),\n },\n ),\n ...(itemMenu\n ? [\n {\n key: 'actions-header',\n content: withJustify(\n <VisuallyHidden>{t('table.actionsColumnHeader')}</VisuallyHidden>,\n 'end',\n ),\n },\n ]\n : []),\n ]\n\n const handleRadioSelect = (item: T, rowIndex: number) => {\n setSelectedRadioIndex(rowIndex)\n onSelect?.(item, true)\n }\n\n const renderSelectionControl = (item: T, rowIndex: number) => {\n if (selectionMode === 'single') {\n const isSelected = getIsItemSelected?.(item) ?? selectedRadioIndex === rowIndex\n return (\n <Components.Radio\n name={radioGroupName}\n value={isSelected}\n onChange={() => {\n handleRadioSelect(item, rowIndex)\n }}\n label={t('table.selectRowLabel')}\n shouldVisuallyHideLabel\n />\n )\n }\n\n const isSelected = getIsItemSelected?.(item) ?? false\n return (\n <Components.Checkbox\n value={isSelected}\n onChange={(checked: boolean) => {\n onSelect?.(item, checked)\n }}\n label={t('table.selectRowLabel')}\n shouldVisuallyHideLabel\n />\n )\n }\n\n const rows: TableRow[] = data.map((item, rowIndex) => {\n const rowData: TableData[] = [\n ...(onSelect\n ? [\n {\n key: `select-${rowIndex}`,\n content: renderSelectionControl(item, rowIndex),\n },\n ]\n : []),\n ...columns.map((column, colIndex) => {\n return {\n key: typeof column.key === 'string' ? column.key : `cell-${colIndex}`,\n content: withJustify(getCellContent(item, column), column.justify),\n }\n }),\n ...(itemMenu\n ? [\n {\n key: `menu-${rowIndex}`,\n content: withJustify(itemMenu(item), 'end'),\n },\n ]\n : []),\n ]\n\n return {\n key: `row-${rowIndex}`,\n data: rowData,\n }\n })\n\n const buildFooterData = () => {\n if (!footer) return undefined\n\n const footerContent = footer()\n const footerCells: TableData[] = []\n\n // Add select column footer (empty)\n if (onSelect) {\n footerCells.push({\n key: 'footer-select',\n content: '',\n })\n }\n\n // Add data column footers\n columns.forEach((column, index) => {\n const columnKey = typeof column.key === 'string' ? column.key : `column-${index}`\n footerCells.push({\n key: `footer-${columnKey}`,\n content: withJustify(footerContent[columnKey] || '', column.justify),\n })\n })\n\n // Add actions column footer (empty)\n if (itemMenu) {\n footerCells.push({\n key: 'footer-actions',\n content: '',\n })\n }\n\n return footerCells\n }\n\n const footerData = buildFooterData()\n\n return (\n <div\n className={cn(styles.tableWrapper, isFetching && styles.isFetching)}\n aria-busy={Boolean(isFetching)}\n >\n <Components.Table\n aria-label={label}\n data-testid=\"data-table\"\n headers={headers}\n rows={rows}\n footer={footerData}\n emptyState={emptyState ? emptyState() : undefined}\n isWithinBox={isWithinBox}\n hasCheckboxColumn={!!onSelect}\n />\n </div>\n )\n}\n"],"names":["withJustify","content","justify","jsx","styles","getCellContent","item","column","key","DataTable","label","data","columns","itemMenu","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","emptyState","footer","isWithinBox","selectionMode","isFetching","sortDescriptor","onSortChange","Components","useComponentContext","t","useTranslation","radioGroupName","useId","selectedRadioIndex","setSelectedRadioIndex","useState","allSelected","useSelectionState","headers","checked","VisuallyHidden","index","getSortControls","handleRadioSelect","rowIndex","renderSelectionControl","isSelected","rows","rowData","colIndex","footerData","footerContent","footerCells","columnKey","cn"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataView.js","sources":["../../../../src/components/Common/DataView/DataView.tsx"],"sourcesContent":["import { useMemo, useRef } from 'react'\nimport { PaginationControl } from '../PaginationControl/PaginationControl'\nimport type { TableProps } from '../UI/Table/TableTypes'\nimport styles from './DataView.module.scss'\nimport { DataTable } from './DataTable/DataTable'\nimport type { useDataViewPropReturn, SelectionMode } from './useDataView'\nimport { DataCards } from './DataCards/DataCards'\nimport type { useContainerBreakpointsProps } from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\n\n/** @internal */\nexport type DataViewProps<T> = {\n columns: useDataViewPropReturn<T>['columns']\n data: T[]\n pagination?: useDataViewPropReturn<T>['pagination']\n label: string\n itemMenu?: useDataViewPropReturn<T>['itemMenu']\n onSelect?: useDataViewPropReturn<T>['onSelect']\n onSelectAll?: useDataViewPropReturn<T>['onSelectAll']\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: useDataViewPropReturn<T>['hideSelectAll']\n breakAt?: string\n breakpoints?: useContainerBreakpointsProps['breakpoints']\n footer?: useDataViewPropReturn<T>['footer']\n isFetching?: boolean\n isWithinBox?: TableProps['isWithinBox']\n emptyState?: useDataViewPropReturn<T>['emptyState']\n selectionMode?: SelectionMode\n}\n\n/** @internal */\nexport const DataView = <T,>({\n pagination,\n isFetching,\n breakAt = 'small',\n breakpoints: customBreakpoints,\n footer,\n isWithinBox,\n emptyState,\n selectionMode,\n onSelectAll,\n ...dataViewProps\n}: DataViewProps<T>) => {\n const containerRef = useRef<HTMLElement | null>(null)\n const breakpoints = useContainerBreakpoints({\n ref: containerRef,\n breakpoints: customBreakpoints,\n })\n\n // Wait for breakpoints to be detected before rendering\n const isBreakpointsDetected = breakpoints.length > 0\n const isMobile = !breakpoints.includes(breakAt)\n\n const Component = useMemo(() => {\n return isMobile ? DataCards : DataTable\n }, [isMobile])\n\n return (\n <div\n data-testid=\"data-view\"\n className={styles.dataViewContainer}\n ref={ref => {\n containerRef.current = ref\n }}\n >\n {isBreakpointsDetected && (\n <Component\n {...dataViewProps}\n onSelectAll={onSelectAll}\n footer={footer}\n isWithinBox={isWithinBox}\n emptyState={emptyState}\n selectionMode={selectionMode}\n isFetching={isFetching}\n />\n )}\n {pagination && <PaginationControl {...pagination} isFetching={isFetching} />}\n </div>\n )\n}\n"],"names":["DataView","pagination","isFetching","breakAt","customBreakpoints","footer","isWithinBox","emptyState","selectionMode","onSelectAll","dataViewProps","containerRef","useRef","breakpoints","useContainerBreakpoints","isBreakpointsDetected","isMobile","Component","useMemo","DataCards","DataTable","jsxs","styles","ref","jsx","PaginationControl"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"DataView.js","sources":["../../../../src/components/Common/DataView/DataView.tsx"],"sourcesContent":["import { useMemo, useRef } from 'react'\nimport { PaginationControl } from '../PaginationControl/PaginationControl'\nimport type { TableProps } from '../UI/Table/TableTypes'\nimport styles from './DataView.module.scss'\nimport { DataTable } from './DataTable/DataTable'\nimport type { useDataViewPropReturn, SelectionMode } from './useDataView'\nimport { DataCards } from './DataCards/DataCards'\nimport type { useContainerBreakpointsProps } from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\n\n/** @internal */\nexport type DataViewProps<T> = {\n columns: useDataViewPropReturn<T>['columns']\n data: T[]\n pagination?: useDataViewPropReturn<T>['pagination']\n label: string\n itemMenu?: useDataViewPropReturn<T>['itemMenu']\n onSelect?: useDataViewPropReturn<T>['onSelect']\n onSelectAll?: useDataViewPropReturn<T>['onSelectAll']\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: useDataViewPropReturn<T>['hideSelectAll']\n breakAt?: string\n breakpoints?: useContainerBreakpointsProps['breakpoints']\n footer?: useDataViewPropReturn<T>['footer']\n isFetching?: boolean\n isWithinBox?: TableProps['isWithinBox']\n emptyState?: useDataViewPropReturn<T>['emptyState']\n selectionMode?: SelectionMode\n sortDescriptor?: useDataViewPropReturn<T>['sortDescriptor']\n onSortChange?: useDataViewPropReturn<T>['onSortChange']\n}\n\n/** @internal */\nexport const DataView = <T,>({\n pagination,\n isFetching,\n breakAt = 'small',\n breakpoints: customBreakpoints,\n footer,\n isWithinBox,\n emptyState,\n selectionMode,\n onSelectAll,\n ...dataViewProps\n}: DataViewProps<T>) => {\n const containerRef = useRef<HTMLElement | null>(null)\n const breakpoints = useContainerBreakpoints({\n ref: containerRef,\n breakpoints: customBreakpoints,\n })\n\n // Wait for breakpoints to be detected before rendering\n const isBreakpointsDetected = breakpoints.length > 0\n const isMobile = !breakpoints.includes(breakAt)\n\n const Component = useMemo(() => {\n return isMobile ? DataCards : DataTable\n }, [isMobile])\n\n return (\n <div\n data-testid=\"data-view\"\n className={styles.dataViewContainer}\n ref={ref => {\n containerRef.current = ref\n }}\n >\n {isBreakpointsDetected && (\n <Component\n {...dataViewProps}\n onSelectAll={onSelectAll}\n footer={footer}\n isWithinBox={isWithinBox}\n emptyState={emptyState}\n selectionMode={selectionMode}\n isFetching={isFetching}\n />\n )}\n {pagination && <PaginationControl {...pagination} isFetching={isFetching} />}\n </div>\n )\n}\n"],"names":["DataView","pagination","isFetching","breakAt","customBreakpoints","footer","isWithinBox","emptyState","selectionMode","onSelectAll","dataViewProps","containerRef","useRef","breakpoints","useContainerBreakpoints","isBreakpointsDetected","isMobile","Component","useMemo","DataCards","DataTable","jsxs","styles","ref","jsx","PaginationControl"],"mappings":";;;;;;;AAiCO,MAAMA,IAAW,CAAK;AAAA,EAC3B,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,aAAaC;AAAA,EACb,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MAAwB;AACtB,QAAMC,IAAeC,EAA2B,IAAI,GAC9CC,IAAcC,EAAwB;AAAA,IAC1C,KAAKH;AAAA,IACL,aAAaP;AAAA,EAAA,CACd,GAGKW,IAAwBF,EAAY,SAAS,GAC7CG,IAAW,CAACH,EAAY,SAASV,CAAO,GAExCc,IAAYC,EAAQ,MACjBF,IAAWG,IAAYC,GAC7B,CAACJ,CAAQ,CAAC;AAEb,SACE,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAWC,EAAO;AAAA,MAClB,KAAK,CAAAC,MAAO;AACV,QAAAZ,EAAa,UAAUY;AAAA,MACzB;AAAA,MAEC,UAAA;AAAA,QAAAR,KACC,gBAAAS;AAAA,UAACP;AAAA,UAAA;AAAA,YACE,GAAGP;AAAA,YACJ,aAAAD;AAAA,YACA,QAAAJ;AAAA,YACA,aAAAC;AAAA,YACA,YAAAC;AAAA,YACA,eAAAC;AAAA,YACA,YAAAN;AAAA,UAAA;AAAA,QAAA;AAAA,QAGHD,KAAc,gBAAAuB,EAACC,GAAA,EAAmB,GAAGxB,GAAY,YAAAC,EAAA,CAAwB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhF;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const r = {
|
|
2
|
+
none: "ascending",
|
|
3
|
+
ascending: "descending",
|
|
4
|
+
descending: "none"
|
|
5
|
+
};
|
|
6
|
+
function c(o, e, i) {
|
|
7
|
+
const t = e?.columnKey === o ? e.direction : "none", n = (s) => () => {
|
|
8
|
+
i(s === "none" ? void 0 : { columnKey: o, direction: s });
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
isSortable: !0,
|
|
12
|
+
sortDirection: t,
|
|
13
|
+
onSort: n(r[t]),
|
|
14
|
+
onSortAscending: n("ascending"),
|
|
15
|
+
onSortDescending: n("descending"),
|
|
16
|
+
onClearSort: n("none")
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
c as getSortControls
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=getSortControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSortControls.js","sources":["../../../../src/components/Common/DataView/getSortControls.ts"],"sourcesContent":["import type { TableSortControls, TableSortDirection } from '../UI/Table/TableTypes'\n\n/**\n * Which column a `DataView` is sorted by, and in which direction. Absent while the data is in its\n * default order.\n *\n * @internal\n */\nexport interface TableSortDescriptor {\n /** `key` of the column the data is currently sorted by. */\n columnKey: string\n /** Direction the sorted column is ordered in. */\n direction: TableSortDirection\n}\n\nconst NEXT_DIRECTION = {\n none: 'ascending',\n ascending: 'descending',\n descending: 'none',\n} as const satisfies Record<TableSortDirection | 'none', TableSortDirection | 'none'>\n\n/**\n * Builds the sort state and handlers for one sortable column, so the desktop table, the mobile\n * cards, and a partner's own table all cycle through the same sorts in the same order.\n *\n * @param columnKey - `key` of the column these controls belong to.\n * @param current - The sort currently applied to the data, if any.\n * @param onSortChange - Receives the sort to move to, or `undefined` to return to the default order.\n * @returns Controls to hand to the column's header cell.\n * @internal\n */\nexport function getSortControls(\n columnKey: string,\n current: TableSortDescriptor | undefined,\n onSortChange: (sortDescriptor: TableSortDescriptor | undefined) => void,\n): TableSortControls {\n const sortDirection = current?.columnKey === columnKey ? current.direction : 'none'\n const sortTo = (direction: TableSortDirection | 'none') => () => {\n onSortChange(direction === 'none' ? undefined : { columnKey, direction })\n }\n\n return {\n isSortable: true,\n sortDirection,\n onSort: sortTo(NEXT_DIRECTION[sortDirection]),\n onSortAscending: sortTo('ascending'),\n onSortDescending: sortTo('descending'),\n onClearSort: sortTo('none'),\n }\n}\n"],"names":["NEXT_DIRECTION","getSortControls","columnKey","current","onSortChange","sortDirection","sortTo","direction"],"mappings":"AAeA,MAAMA,IAAiB;AAAA,EACrB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,YAAY;AACd;AAYO,SAASC,EACdC,GACAC,GACAC,GACmB;AACnB,QAAMC,IAAgBF,GAAS,cAAcD,IAAYC,EAAQ,YAAY,QACvEG,IAAS,CAACC,MAA2C,MAAM;AAC/D,IAAAH,EAAaG,MAAc,SAAS,SAAY,EAAE,WAAAL,GAAW,WAAAK,GAAW;AAAA,EAC1E;AAEA,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,eAAAF;AAAA,IACA,QAAQC,EAAON,EAAeK,CAAa,CAAC;AAAA,IAC5C,iBAAiBC,EAAO,WAAW;AAAA,IACnC,kBAAkBA,EAAO,YAAY;AAAA,IACrC,aAAaA,EAAO,MAAM;AAAA,EAAA;AAE9B;"}
|
|
@@ -1,45 +1,51 @@
|
|
|
1
|
-
import { useMemo as
|
|
2
|
-
const
|
|
1
|
+
import { useMemo as v } from "react";
|
|
2
|
+
const D = ({
|
|
3
3
|
columns: r,
|
|
4
4
|
data: w,
|
|
5
5
|
itemMenu: V,
|
|
6
|
-
onSelect:
|
|
7
|
-
onSelectAll:
|
|
8
|
-
getIsItemSelected:
|
|
9
|
-
hideSelectAll:
|
|
6
|
+
onSelect: u,
|
|
7
|
+
onSelectAll: P,
|
|
8
|
+
getIsItemSelected: p,
|
|
9
|
+
hideSelectAll: x,
|
|
10
10
|
pagination: a,
|
|
11
|
-
emptyState:
|
|
12
|
-
footer:
|
|
13
|
-
isFetching:
|
|
14
|
-
selectionMode:
|
|
15
|
-
|
|
11
|
+
emptyState: b,
|
|
12
|
+
footer: f,
|
|
13
|
+
isFetching: j,
|
|
14
|
+
selectionMode: k,
|
|
15
|
+
sortDescriptor: q,
|
|
16
|
+
onSortChange: s
|
|
17
|
+
}) => v(() => ({
|
|
16
18
|
pagination: a,
|
|
17
19
|
data: w,
|
|
18
20
|
columns: r,
|
|
19
21
|
itemMenu: V,
|
|
20
|
-
onSelect:
|
|
21
|
-
onSelectAll:
|
|
22
|
-
getIsItemSelected:
|
|
23
|
-
hideSelectAll:
|
|
24
|
-
emptyState:
|
|
25
|
-
footer:
|
|
26
|
-
isFetching:
|
|
27
|
-
selectionMode:
|
|
22
|
+
onSelect: u,
|
|
23
|
+
onSelectAll: P,
|
|
24
|
+
getIsItemSelected: p,
|
|
25
|
+
hideSelectAll: x,
|
|
26
|
+
emptyState: b,
|
|
27
|
+
footer: f,
|
|
28
|
+
isFetching: j,
|
|
29
|
+
selectionMode: k,
|
|
30
|
+
sortDescriptor: q,
|
|
31
|
+
onSortChange: s
|
|
28
32
|
}), [
|
|
29
33
|
a,
|
|
30
34
|
w,
|
|
31
35
|
r,
|
|
32
36
|
V,
|
|
33
|
-
p,
|
|
34
|
-
s,
|
|
35
37
|
u,
|
|
36
38
|
P,
|
|
39
|
+
p,
|
|
37
40
|
x,
|
|
38
|
-
D,
|
|
39
41
|
b,
|
|
40
|
-
f
|
|
42
|
+
f,
|
|
43
|
+
j,
|
|
44
|
+
k,
|
|
45
|
+
q,
|
|
46
|
+
s
|
|
41
47
|
]);
|
|
42
48
|
export {
|
|
43
|
-
|
|
49
|
+
D as useDataView
|
|
44
50
|
};
|
|
45
51
|
//# sourceMappingURL=useDataView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataView.js","sources":["../../../../src/components/Common/DataView/useDataView.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\n\n/** @internal */\nexport type SelectionMode = 'multiple' | 'single'\n\ntype DataViewColumn<T> =\n | {\n key: keyof T\n title: string | React.ReactNode\n render?: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n }\n | {\n key?: string\n title: string | React.ReactNode\n render: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n }\n\ntype FooterKeys<T> = keyof T | string\n\ntype BaseDataViewProps<T> = {\n columns: DataViewColumn<T>[]\n data: T[]\n pagination?: PaginationControlProps\n itemMenu?: (item: T) => React.ReactNode\n emptyState?: () => React.ReactNode\n footer?: () => Partial<Record<FooterKeys<T>, React.ReactNode>>\n isFetching?: boolean\n /**\n * When true, hides the select-all header checkbox (DataTable) and the\n * select-all row (DataCards). Only meaningful with `selectionMode: 'multiple'`.\n * Per-row checkboxes are unaffected.\n */\n hideSelectAll?: boolean\n}\n\ntype NoSelectionProps = {\n onSelect?: undefined\n onSelectAll?: undefined\n getIsItemSelected?: undefined\n selectionMode?: undefined\n}\n\ntype SingleSelectionProps<T> = {\n selectionMode: 'single'\n onSelect: (item: T, checked: boolean) => void\n onSelectAll?: undefined\n getIsItemSelected?: (item: T) => boolean\n}\n\ntype MultipleSelectionProps<T> = {\n selectionMode?: 'multiple'\n onSelect: (item: T, checked: boolean) => void\n /**\n * Called when the select-all checkbox is toggled.\n * The header checkbox state reflects only the currently visible `data` array.\n * With pagination, consumers decide whether to select all data or only the visible page.\n * `visibleData` is the current page's data array for reference.\n */\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n /**\n * Required for multi-select. Returns whether a given item is currently selected.\n * Use a stable identifier from the item (e.g. item.id) rather than array index.\n */\n getIsItemSelected: (item: T) => boolean\n}\n\n/** @internal */\nexport type useDataViewProp<T> = BaseDataViewProps<T> &\n (NoSelectionProps | SingleSelectionProps<T> | MultipleSelectionProps<T>)\n\n/** @internal */\nexport type useDataViewPropReturn<T> = {\n pagination?: PaginationControlProps\n data: T[]\n columns: DataViewColumn<T>[]\n itemMenu?: (item: T) => React.ReactNode\n onSelect?: (item: T, checked: boolean) => void\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: boolean\n emptyState?: () => React.ReactNode\n footer?: () => Partial<Record<FooterKeys<T>, React.ReactNode>>\n isFetching?: boolean\n selectionMode?: SelectionMode\n}\n\n/** @internal */\nexport const useDataView = <T>({\n columns,\n data,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n pagination,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n}: useDataViewProp<T>): useDataViewPropReturn<T> => {\n const dataViewProps = useMemo(() => {\n return {\n pagination,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n }\n }, [\n pagination,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n ])\n\n return dataViewProps\n}\n"],"names":["useDataView","columns","data","itemMenu","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","pagination","emptyState","footer","isFetching","selectionMode","useMemo"],"mappings":";
|
|
1
|
+
{"version":3,"file":"useDataView.js","sources":["../../../../src/components/Common/DataView/useDataView.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport type { TableSortDescriptor } from './getSortControls'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\n\n/** @internal */\nexport type SelectionMode = 'multiple' | 'single'\n\n// A sortable column's `key` is reported back as the sort's `columnKey`, so it has to be a real\n// string the consumer chose -- never DataTable's `header-<index>` fallback.\ntype DataViewColumn<T> =\n | {\n key: keyof T\n title: string | React.ReactNode\n render?: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n isSortable?: false\n }\n | {\n key: string\n title: string | React.ReactNode\n render?: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n isSortable: true\n }\n | {\n key?: string\n title: string | React.ReactNode\n render: (item: T) => React.ReactNode\n justify?: 'start' | 'end'\n isSortable?: false\n }\n\ntype FooterKeys<T> = keyof T | string\n\ntype BaseDataViewProps<T> = {\n columns: DataViewColumn<T>[]\n data: T[]\n pagination?: PaginationControlProps\n itemMenu?: (item: T) => React.ReactNode\n emptyState?: () => React.ReactNode\n footer?: () => Partial<Record<FooterKeys<T>, React.ReactNode>>\n isFetching?: boolean\n /**\n * When true, hides the select-all header checkbox (DataTable) and the\n * select-all row (DataCards). Only meaningful with `selectionMode: 'multiple'`.\n * Per-row checkboxes are unaffected.\n */\n hideSelectAll?: boolean\n /**\n * Column the data is currently sorted by. Omit while it is in its default order.\n */\n sortDescriptor?: TableSortDescriptor\n /**\n * Called when the user picks a new sort, from a column header (DataTable) or the\n * sort control above the cards (DataCards), with `undefined` when they return the data to its\n * default order. Omit to leave columns unsortable.\n */\n onSortChange?: (sortDescriptor: TableSortDescriptor | undefined) => void\n}\n\ntype NoSelectionProps = {\n onSelect?: undefined\n onSelectAll?: undefined\n getIsItemSelected?: undefined\n selectionMode?: undefined\n}\n\ntype SingleSelectionProps<T> = {\n selectionMode: 'single'\n onSelect: (item: T, checked: boolean) => void\n onSelectAll?: undefined\n getIsItemSelected?: (item: T) => boolean\n}\n\ntype MultipleSelectionProps<T> = {\n selectionMode?: 'multiple'\n onSelect: (item: T, checked: boolean) => void\n /**\n * Called when the select-all checkbox is toggled.\n * The header checkbox state reflects only the currently visible `data` array.\n * With pagination, consumers decide whether to select all data or only the visible page.\n * `visibleData` is the current page's data array for reference.\n */\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n /**\n * Required for multi-select. Returns whether a given item is currently selected.\n * Use a stable identifier from the item (e.g. item.id) rather than array index.\n */\n getIsItemSelected: (item: T) => boolean\n}\n\n/** @internal */\nexport type useDataViewProp<T> = BaseDataViewProps<T> &\n (NoSelectionProps | SingleSelectionProps<T> | MultipleSelectionProps<T>)\n\n/** @internal */\nexport type useDataViewPropReturn<T> = {\n pagination?: PaginationControlProps\n data: T[]\n columns: DataViewColumn<T>[]\n itemMenu?: (item: T) => React.ReactNode\n onSelect?: (item: T, checked: boolean) => void\n onSelectAll?: (checked: boolean, visibleData: T[]) => void\n getIsItemSelected?: (item: T) => boolean\n hideSelectAll?: boolean\n emptyState?: () => React.ReactNode\n footer?: () => Partial<Record<FooterKeys<T>, React.ReactNode>>\n isFetching?: boolean\n selectionMode?: SelectionMode\n sortDescriptor?: TableSortDescriptor\n onSortChange?: (sortDescriptor: TableSortDescriptor | undefined) => void\n}\n\n/** @internal */\nexport const useDataView = <T>({\n columns,\n data,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n pagination,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n sortDescriptor,\n onSortChange,\n}: useDataViewProp<T>): useDataViewPropReturn<T> => {\n const dataViewProps = useMemo(() => {\n return {\n pagination,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n sortDescriptor,\n onSortChange,\n }\n }, [\n pagination,\n data,\n columns,\n itemMenu,\n onSelect,\n onSelectAll,\n getIsItemSelected,\n hideSelectAll,\n emptyState,\n footer,\n isFetching,\n selectionMode,\n sortDescriptor,\n onSortChange,\n ])\n\n return dataViewProps\n}\n"],"names":["useDataView","columns","data","itemMenu","onSelect","onSelectAll","getIsItemSelected","hideSelectAll","pagination","emptyState","footer","isFetching","selectionMode","sortDescriptor","onSortChange","useMemo"],"mappings":";AAkHO,MAAMA,IAAc,CAAI;AAAA,EAC7B,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AACF,MACwBC,EAAQ,OACrB;AAAA,EACL,YAAAP;AAAA,EACA,MAAAN;AAAA,EACA,SAAAD;AAAA,EACA,UAAAE;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAE;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,IAED;AAAA,EACDN;AAAA,EACAN;AAAA,EACAD;AAAA,EACAE;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAE;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AAAA,CACD;"}
|
|
@@ -1,29 +1,69 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { Table as
|
|
3
|
-
import
|
|
4
|
-
import { Text as
|
|
5
|
-
import { TableDefaults as
|
|
6
|
-
import
|
|
7
|
-
import { applyMissingDefaults as
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
import { jsx as o, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import { Table as v, TableHeader as k, Row as s, Column as D, TableBody as T, Cell as l } from "react-aria-components";
|
|
3
|
+
import g from "classnames";
|
|
4
|
+
import { Text as c } from "../Text/Text.js";
|
|
5
|
+
import { TableDefaults as x } from "./TableTypes.js";
|
|
6
|
+
import p from "./Table.module.scss.js";
|
|
7
|
+
import { applyMissingDefaults as w } from "../../../../helpers/applyMissingDefaults.js";
|
|
8
|
+
import C from "../../../../assets/icons/caret-down.svg.js";
|
|
9
|
+
function N(d) {
|
|
10
|
+
for (const n of d)
|
|
11
|
+
if (n.isSortable && n.sortDirection !== "none")
|
|
12
|
+
return { column: n.key, direction: n.sortDirection };
|
|
13
|
+
}
|
|
14
|
+
function P(d) {
|
|
15
|
+
const n = w(d, x), { className: u, headers: i, rows: h, footer: t, emptyState: f, isWithinBox: b, hasCheckboxColumn: S, ...y } = n;
|
|
16
|
+
return /* @__PURE__ */ o("div", { className: p.root, "data-within-box": b || void 0, children: /* @__PURE__ */ m(
|
|
17
|
+
v,
|
|
18
|
+
{
|
|
19
|
+
...y,
|
|
20
|
+
className: g("react-aria-Table", u),
|
|
21
|
+
sortDescriptor: N(i),
|
|
22
|
+
onSortChange: (e) => {
|
|
23
|
+
const r = i.find((a) => a.key === String(e.column));
|
|
24
|
+
r?.isSortable && r.onSort();
|
|
25
|
+
},
|
|
26
|
+
children: [
|
|
27
|
+
/* @__PURE__ */ o(k, { children: /* @__PURE__ */ o(s, { children: i.map((e, r) => /* @__PURE__ */ o(
|
|
28
|
+
D,
|
|
29
|
+
{
|
|
30
|
+
id: e.key,
|
|
31
|
+
isRowHeader: r === 0,
|
|
32
|
+
allowsSorting: e.isSortable,
|
|
33
|
+
children: /* @__PURE__ */ m(c, { as: "span", weight: "semibold", size: "xs", children: [
|
|
34
|
+
e.content,
|
|
35
|
+
e.isSortable && /* @__PURE__ */ o(
|
|
36
|
+
C,
|
|
37
|
+
{
|
|
38
|
+
"aria-hidden": "true",
|
|
39
|
+
className: g(
|
|
40
|
+
p.sortIcon,
|
|
41
|
+
e.sortDirection === "ascending" && p.sortIconAscending
|
|
42
|
+
),
|
|
43
|
+
"data-sorted": e.sortDirection === "none" ? void 0 : "true"
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
] })
|
|
47
|
+
},
|
|
48
|
+
e.key
|
|
49
|
+
)) }) }),
|
|
50
|
+
/* @__PURE__ */ m(T, { children: [
|
|
51
|
+
h.length === 0 && f ? /* @__PURE__ */ o(s, { children: /* @__PURE__ */ o(l, { colSpan: i.length, children: f }) }) : h.map((e) => /* @__PURE__ */ o(s, { children: e.data.map((r, a) => /* @__PURE__ */ o(l, { children: /* @__PURE__ */ o(
|
|
52
|
+
c,
|
|
53
|
+
{
|
|
54
|
+
as: "span",
|
|
55
|
+
variant: S ? a === 1 ? "leading" : "supporting" : a === 0 ? "leading" : "supporting",
|
|
56
|
+
size: "sm",
|
|
57
|
+
children: r.content
|
|
58
|
+
}
|
|
59
|
+
) }, r.key)) }, e.key)),
|
|
60
|
+
t && t.length > 0 && /* @__PURE__ */ o(s, { "data-footer": "true", children: t.length === 1 && t[0] ? /* @__PURE__ */ o(l, { colSpan: i.length, children: /* @__PURE__ */ o(c, { as: "span", variant: "leading", size: "sm", children: t[0].content }) }, t[0].key) : t.map((e) => /* @__PURE__ */ o(l, { children: /* @__PURE__ */ o(c, { as: "span", variant: "leading", size: "sm", children: e.content }) }, e.key)) }, "table-footer")
|
|
61
|
+
] })
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
) });
|
|
25
65
|
}
|
|
26
66
|
export {
|
|
27
|
-
|
|
67
|
+
P as Table
|
|
28
68
|
};
|
|
29
69
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../../../src/components/Common/UI/Table/Table.tsx"],"sourcesContent":["import {\n Table as AriaTable,\n TableHeader as AriaTableHeader,\n TableBody as AriaTableBody,\n Row,\n Column,\n Cell,\n} from 'react-aria-components'\nimport classnames from 'classnames'\nimport { Text } from '../Text/Text'\nimport type { TableProps } from './TableTypes'\nimport { TableDefaults } from './TableTypes'\nimport styles from './Table.module.scss'\nimport { applyMissingDefaults } from '@/helpers/applyMissingDefaults'\n\n/**\n * Data table with headers, rows, optional footer, and empty state.\n *\n * @param rawProps - Table configuration; see {@link TableProps}.\n * @returns The rendered table.\n * @public\n */\nexport function Table(rawProps: TableProps) {\n const resolvedProps = applyMissingDefaults(rawProps, TableDefaults)\n const { className, headers, rows, footer, emptyState, isWithinBox, hasCheckboxColumn, ...props } =\n resolvedProps\n return (\n <div className={styles.root} data-within-box={isWithinBox || undefined}>\n <AriaTable
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../../../src/components/Common/UI/Table/Table.tsx"],"sourcesContent":["import {\n Table as AriaTable,\n TableHeader as AriaTableHeader,\n TableBody as AriaTableBody,\n Row,\n Column,\n Cell,\n} from 'react-aria-components'\nimport classnames from 'classnames'\nimport { Text } from '../Text/Text'\nimport type { TableProps } from './TableTypes'\nimport { TableDefaults } from './TableTypes'\nimport styles from './Table.module.scss'\nimport { applyMissingDefaults } from '@/helpers/applyMissingDefaults'\nimport CaretDown from '@/assets/icons/caret-down.svg?react'\n\nfunction getAriaSortDescriptor(headers: TableProps['headers']) {\n for (const header of headers) {\n if (header.isSortable && header.sortDirection !== 'none') {\n return { column: header.key, direction: header.sortDirection }\n }\n }\n return undefined\n}\n\n/**\n * Data table with headers, rows, optional footer, and empty state.\n *\n * @param rawProps - Table configuration; see {@link TableProps}.\n * @returns The rendered table.\n * @public\n */\nexport function Table(rawProps: TableProps) {\n const resolvedProps = applyMissingDefaults(rawProps, TableDefaults)\n const { className, headers, rows, footer, emptyState, isWithinBox, hasCheckboxColumn, ...props } =\n resolvedProps\n return (\n <div className={styles.root} data-within-box={isWithinBox || undefined}>\n <AriaTable\n {...props}\n className={classnames('react-aria-Table', className)}\n sortDescriptor={getAriaSortDescriptor(headers)}\n onSortChange={descriptor => {\n // The header owns its own cycle, so react-aria's suggested direction is discarded.\n const activatedHeader = headers.find(header => header.key === String(descriptor.column))\n if (activatedHeader?.isSortable) {\n activatedHeader.onSort()\n }\n }}\n >\n <AriaTableHeader>\n <Row>\n {headers.map((header, index) => (\n <Column\n key={header.key}\n id={header.key}\n isRowHeader={index === 0}\n allowsSorting={header.isSortable}\n >\n <Text as=\"span\" weight=\"semibold\" size=\"xs\">\n {header.content}\n {header.isSortable && (\n <CaretDown\n aria-hidden=\"true\"\n className={classnames(\n styles.sortIcon,\n header.sortDirection === 'ascending' && styles.sortIconAscending,\n )}\n data-sorted={header.sortDirection === 'none' ? undefined : 'true'}\n />\n )}\n </Text>\n </Column>\n ))}\n </Row>\n </AriaTableHeader>\n <AriaTableBody>\n {rows.length === 0 && emptyState ? (\n <Row>\n <Cell colSpan={headers.length}>{emptyState}</Cell>\n </Row>\n ) : (\n rows.map(row => (\n <Row key={row.key}>\n {row.data.map((cell, index) => (\n <Cell key={cell.key}>\n <Text\n as=\"span\"\n variant={\n hasCheckboxColumn\n ? index === 1\n ? 'leading'\n : 'supporting'\n : index === 0\n ? 'leading'\n : 'supporting'\n }\n size=\"sm\"\n >\n {cell.content}\n </Text>\n </Cell>\n ))}\n </Row>\n ))\n )}\n {footer && footer.length > 0 && (\n <Row key=\"table-footer\" data-footer=\"true\">\n {footer.length === 1 && footer[0] ? (\n <Cell key={footer[0].key} colSpan={headers.length}>\n <Text as=\"span\" variant=\"leading\" size=\"sm\">\n {footer[0].content}\n </Text>\n </Cell>\n ) : (\n footer.map(cell => (\n <Cell key={cell.key}>\n <Text as=\"span\" variant=\"leading\" size=\"sm\">\n {cell.content}\n </Text>\n </Cell>\n ))\n )}\n </Row>\n )}\n </AriaTableBody>\n </AriaTable>\n </div>\n )\n}\n"],"names":["getAriaSortDescriptor","headers","header","Table","rawProps","resolvedProps","applyMissingDefaults","TableDefaults","className","rows","footer","emptyState","isWithinBox","hasCheckboxColumn","props","styles","jsxs","AriaTable","classnames","descriptor","activatedHeader","jsx","AriaTableHeader","Row","index","Column","Text","CaretDown","AriaTableBody","Cell","row","cell"],"mappings":"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"}
|