@gusto/embedded-react-sdk 0.55.4 → 0.55.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/dist/components/Common/DataView/DataTable/DataTable.js +44 -41
- package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
- package/dist/components/Common/RequirementsList/RequirementsList.js +21 -12
- package/dist/components/Common/RequirementsList/RequirementsList.js.map +1 -1
- package/dist/components/Common/UI/Table/Table.module.scss.js +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +21 -15
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/TaxRateHistorySection.js +1 -0
- package/dist/components/Company/StateTaxes/TaxRateManagement/TaxRateHistorySection.js.map +1 -1
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js +20 -17
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.d.ts +1 -0
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js +21 -17
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/fields.d.ts +7 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/fields.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/index.d.ts +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +112 -100
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js +46 -40
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +10 -9
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js +22 -19
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.d.ts +1 -0
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +34 -30
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/fields.d.ts +7 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/fields.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/index.d.ts +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +32 -32
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.js +1 -0
- package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.js.map +1 -1
- package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js +11 -10
- package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
- package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.js +7 -6
- package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js +20 -19
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js.map +1 -1
- package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +12 -10
- package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequests.js +63 -64
- package/dist/components/InformationRequests/InformationRequests.js.map +1 -1
- package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +13 -12
- package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +200 -195
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +93 -85
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.d.ts +50 -0
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js +52 -0
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js.map +1 -0
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +52 -50
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +259 -255
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +278 -0
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/index.d.ts +1 -0
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.d.ts +108 -0
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.test.d.ts +1 -0
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.d.ts +95 -0
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.test.d.ts +1 -0
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.d.ts +126 -0
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +1 -0
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +191 -183
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +117 -107
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.d.ts +39 -0
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js +46 -0
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js.map +1 -0
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +40 -34
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +72 -87
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.d.ts +17 -0
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js +55 -0
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js.map +1 -0
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +2 -0
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js.map +1 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts +13 -0
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +58 -0
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +1 -0
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js +8 -0
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +1 -0
- package/dist/components/Payroll/helpers.d.ts +15 -0
- package/dist/components/Payroll/helpers.js.map +1 -1
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js +35 -35
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js.map +1 -1
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.module.scss.js +4 -4
- package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +2 -0
- package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
- package/dist/hooks/usePollingTask/usePollingTask.d.ts +101 -0
- package/dist/hooks/usePollingTask/usePollingTask.js +50 -0
- package/dist/hooks/usePollingTask/usePollingTask.js.map +1 -0
- package/dist/hooks/usePollingTask/usePollingTask.test.d.ts +1 -0
- package/dist/i18n/I18n.js +147 -30
- package/dist/i18n/I18n.js.map +1 -1
- package/dist/i18n/en/Contractor.ContractorList.json.js +14 -12
- package/dist/i18n/en/Contractor.ContractorList.json.js.map +1 -1
- package/dist/i18n/en/Contractor.Management.Compensation.json.js +6 -6
- package/dist/i18n/en/Contractor.ManagementContractorList.json.js +8 -8
- package/dist/i18n/en/Contractor.Profile.json.js +5 -5
- package/dist/i18n/en/Payroll.OffCyclePayPeriodDateForm.json.js +7 -5
- package/dist/i18n/en/Payroll.OffCyclePayPeriodDateForm.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollHistory.json.js +8 -8
- package/dist/i18n/en/Payroll.PayrollOverview.json.js +16 -16
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js +98 -0
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +1 -0
- package/dist/i18n/en/common.json.d.ts +1 -0
- package/dist/i18n/en/common.json.js +1 -1
- package/dist/i18n/es_US/Company.Addresses.json.js +8 -0
- package/dist/i18n/es_US/Company.Addresses.json.js.map +1 -0
- package/dist/i18n/es_US/Company.AssignSignatory.json.js +22 -0
- package/dist/i18n/es_US/Company.AssignSignatory.json.js.map +1 -0
- package/dist/i18n/es_US/Company.BankAccount.json.js +20 -0
- package/dist/i18n/es_US/Company.BankAccount.json.js.map +1 -0
- package/dist/i18n/es_US/Company.DocumentList.json.js +28 -0
- package/dist/i18n/es_US/Company.DocumentList.json.js.map +1 -0
- package/dist/i18n/es_US/Company.FederalTaxes.json.js +28 -0
- package/dist/i18n/es_US/Company.FederalTaxes.json.js.map +1 -0
- package/dist/i18n/es_US/Company.Industry.json.js +12 -0
- package/dist/i18n/es_US/Company.Industry.json.js.map +1 -0
- package/dist/i18n/es_US/Company.Locations.json.js +44 -0
- package/dist/i18n/es_US/Company.Locations.json.js.map +1 -0
- package/dist/i18n/es_US/Company.OnboardingOverview.json.js +24 -0
- package/dist/i18n/es_US/Company.OnboardingOverview.json.js.map +1 -0
- package/dist/i18n/es_US/Company.PaySchedule.json.js +36 -0
- package/dist/i18n/es_US/Company.PaySchedule.json.js.map +1 -0
- package/dist/i18n/es_US/Company.SignatureForm.json.js +20 -0
- package/dist/i18n/es_US/Company.SignatureForm.json.js.map +1 -0
- package/dist/i18n/es_US/Company.StateTaxes.json.js +12 -0
- package/dist/i18n/es_US/Company.StateTaxes.json.js.map +1 -0
- package/dist/i18n/es_US/Company.TimeOff.CreateTimeOffPolicy.json.js +18 -0
- package/dist/i18n/es_US/Company.TimeOff.CreateTimeOffPolicy.json.js.map +1 -0
- package/dist/i18n/es_US/Company.TimeOff.EmployeeTable.json.js +26 -0
- package/dist/i18n/es_US/Company.TimeOff.EmployeeTable.json.js.map +1 -0
- package/dist/i18n/es_US/Company.TimeOff.HolidayPolicy.json.js +26 -0
- package/dist/i18n/es_US/Company.TimeOff.HolidayPolicy.json.js.map +1 -0
- package/dist/i18n/es_US/Company.TimeOff.PolicyDetail.json.js +14 -0
- package/dist/i18n/es_US/Company.TimeOff.PolicyDetail.json.js.map +1 -0
- package/dist/i18n/es_US/Company.TimeOff.SelectEmployees.json.js +22 -0
- package/dist/i18n/es_US/Company.TimeOff.SelectEmployees.json.js.map +1 -0
- package/dist/i18n/es_US/Company.TimeOff.SelectPolicyType.json.js +26 -0
- package/dist/i18n/es_US/Company.TimeOff.SelectPolicyType.json.js.map +1 -0
- package/dist/i18n/es_US/Company.TimeOff.TimeOffPolicies.json.js +40 -0
- package/dist/i18n/es_US/Company.TimeOff.TimeOffPolicies.json.js.map +1 -0
- package/dist/i18n/es_US/Company.TimeOff.TimeOffPolicyDetails.json.js +52 -0
- package/dist/i18n/es_US/Company.TimeOff.TimeOffPolicyDetails.json.js.map +1 -0
- package/dist/i18n/es_US/Company.TimeOff.TimeOffRequests.json.js +21 -0
- package/dist/i18n/es_US/Company.TimeOff.TimeOffRequests.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Address.json.js +22 -0
- package/dist/i18n/es_US/Contractor.Address.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.BankAccountFields.json.js +12 -0
- package/dist/i18n/es_US/Contractor.BankAccountFields.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.ContractorList.json.js +24 -0
- package/dist/i18n/es_US/Contractor.ContractorList.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Dashboard.json.js +14 -0
- package/dist/i18n/es_US/Contractor.Dashboard.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.DocumentsList.json.js +18 -0
- package/dist/i18n/es_US/Contractor.DocumentsList.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Landing.json.js +18 -0
- package/dist/i18n/es_US/Contractor.Landing.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Management.Address.json.js +14 -0
- package/dist/i18n/es_US/Contractor.Management.Address.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Management.Compensation.json.js +22 -0
- package/dist/i18n/es_US/Contractor.Management.Compensation.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Management.Documents.json.js +16 -0
- package/dist/i18n/es_US/Contractor.Management.Documents.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Management.PaymentMethod.json.js +24 -0
- package/dist/i18n/es_US/Contractor.Management.PaymentMethod.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Management.Profile.json.js +20 -0
- package/dist/i18n/es_US/Contractor.Management.Profile.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.ManagementContractorList.json.js +48 -0
- package/dist/i18n/es_US/Contractor.ManagementContractorList.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.NewHireReport.json.js +22 -0
- package/dist/i18n/es_US/Contractor.NewHireReport.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.OnboardingSummary.json.js +10 -0
- package/dist/i18n/es_US/Contractor.OnboardingSummary.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.PaymentMethod.json.js +20 -0
- package/dist/i18n/es_US/Contractor.PaymentMethod.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Payments.CreateHistoricalPayment.json.js +34 -0
- package/dist/i18n/es_US/Contractor.Payments.CreateHistoricalPayment.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Payments.CreatePayment.json.js +42 -0
- package/dist/i18n/es_US/Contractor.Payments.CreatePayment.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Payments.HistoricalPaymentSummary.json.js +42 -0
- package/dist/i18n/es_US/Contractor.Payments.HistoricalPaymentSummary.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Payments.PaymentHistory.json.js +26 -0
- package/dist/i18n/es_US/Contractor.Payments.PaymentHistory.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Payments.PaymentStatement.json.js +22 -0
- package/dist/i18n/es_US/Contractor.Payments.PaymentStatement.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Payments.PaymentSummary.json.js +54 -0
- package/dist/i18n/es_US/Contractor.Payments.PaymentSummary.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Payments.PaymentsList.json.js +32 -0
- package/dist/i18n/es_US/Contractor.Payments.PaymentsList.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Profile.json.js +18 -0
- package/dist/i18n/es_US/Contractor.Profile.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.SelectContractors.json.js +18 -0
- package/dist/i18n/es_US/Contractor.SelectContractors.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.SignatureForm.json.js +34 -0
- package/dist/i18n/es_US/Contractor.SignatureForm.json.js.map +1 -0
- package/dist/i18n/es_US/Contractor.Submit.json.js +26 -0
- package/dist/i18n/es_US/Contractor.Submit.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.BankAccount.json.js +14 -0
- package/dist/i18n/es_US/Employee.BankAccount.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.BankFormBody.json.js +12 -0
- package/dist/i18n/es_US/Employee.BankFormBody.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Compensation.json.js +68 -0
- package/dist/i18n/es_US/Employee.Compensation.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Dashboard.json.js +12 -0
- package/dist/i18n/es_US/Employee.Dashboard.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Deductions.json.js +142 -0
- package/dist/i18n/es_US/Employee.Deductions.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.DeductionsForm.json.js +24 -0
- package/dist/i18n/es_US/Employee.DeductionsForm.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.DocumentManager.json.js +10 -0
- package/dist/i18n/es_US/Employee.DocumentManager.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.DocumentSigner.json.js +28 -0
- package/dist/i18n/es_US/Employee.DocumentSigner.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.EmployeeDocuments.json.js +10 -0
- package/dist/i18n/es_US/Employee.EmployeeDocuments.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.EmployeeList.json.js +30 -0
- package/dist/i18n/es_US/Employee.EmployeeList.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.EmploymentEligibility.json.js +22 -0
- package/dist/i18n/es_US/Employee.EmploymentEligibility.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.FederalTaxes.json.js +46 -0
- package/dist/i18n/es_US/Employee.FederalTaxes.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.FederalTaxesView.json.js +38 -0
- package/dist/i18n/es_US/Employee.FederalTaxesView.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.HomeAddress.json.js +24 -0
- package/dist/i18n/es_US/Employee.HomeAddress.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.I9SignatureForm.json.js +64 -0
- package/dist/i18n/es_US/Employee.I9SignatureForm.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Landing.json.js +16 -0
- package/dist/i18n/es_US/Employee.Landing.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.Compensation.json.js +66 -0
- package/dist/i18n/es_US/Employee.Management.Compensation.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.Deductions.json.js +26 -0
- package/dist/i18n/es_US/Employee.Management.Deductions.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.Documents.json.js +18 -0
- package/dist/i18n/es_US/Employee.Management.Documents.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.FederalTaxes.json.js +42 -0
- package/dist/i18n/es_US/Employee.Management.FederalTaxes.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.HomeAddress.json.js +56 -0
- package/dist/i18n/es_US/Employee.Management.HomeAddress.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.PaymentMethod.json.js +24 -0
- package/dist/i18n/es_US/Employee.Management.PaymentMethod.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.PaymentMethodBankForm.json.js +12 -0
- package/dist/i18n/es_US/Employee.Management.PaymentMethodBankForm.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.PaymentMethodSplitForm.json.js +22 -0
- package/dist/i18n/es_US/Employee.Management.PaymentMethodSplitForm.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.Paystubs.json.js +28 -0
- package/dist/i18n/es_US/Employee.Management.Paystubs.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.Profile.json.js +16 -0
- package/dist/i18n/es_US/Employee.Management.Profile.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.StateTaxes.json.js +16 -0
- package/dist/i18n/es_US/Employee.Management.StateTaxes.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Management.WorkAddress.json.js +52 -0
- package/dist/i18n/es_US/Employee.Management.WorkAddress.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.ManagementEmployeeList.json.js +26 -0
- package/dist/i18n/es_US/Employee.ManagementEmployeeList.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.OnboardingSummary.json.js +22 -0
- package/dist/i18n/es_US/Employee.OnboardingSummary.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.PaySchedules.json.js +12 -0
- package/dist/i18n/es_US/Employee.PaySchedules.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.PaymentMethod.json.js +68 -0
- package/dist/i18n/es_US/Employee.PaymentMethod.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Profile.json.js +32 -0
- package/dist/i18n/es_US/Employee.Profile.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.SplitPaycheck.json.js +26 -0
- package/dist/i18n/es_US/Employee.SplitPaycheck.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.SplitPaymentsFormBody.json.js +22 -0
- package/dist/i18n/es_US/Employee.SplitPaymentsFormBody.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.StateTaxes.json.js +14 -0
- package/dist/i18n/es_US/Employee.StateTaxes.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.StateTaxesView.json.js +12 -0
- package/dist/i18n/es_US/Employee.StateTaxesView.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Terminations.TerminateEmployee.json.js +18 -0
- package/dist/i18n/es_US/Employee.Terminations.TerminateEmployee.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Terminations.TerminationFlow.json.js +12 -0
- package/dist/i18n/es_US/Employee.Terminations.TerminationFlow.json.js.map +1 -0
- package/dist/i18n/es_US/Employee.Terminations.TerminationSummary.json.js +20 -0
- package/dist/i18n/es_US/Employee.Terminations.TerminationSummary.json.js.map +1 -0
- package/dist/i18n/es_US/InformationRequests.InformationRequestForm.json.js +20 -0
- package/dist/i18n/es_US/InformationRequests.InformationRequestForm.json.js.map +1 -0
- package/dist/i18n/es_US/InformationRequests.InformationRequestList.json.js +18 -0
- package/dist/i18n/es_US/InformationRequests.InformationRequestList.json.js.map +1 -0
- package/dist/i18n/es_US/InformationRequests.json.js +8 -0
- package/dist/i18n/es_US/InformationRequests.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.Common.json.js +8 -0
- package/dist/i18n/es_US/Payroll.Common.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.ConfirmWireDetailsBanner.json.js +14 -0
- package/dist/i18n/es_US/Payroll.ConfirmWireDetailsBanner.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.ConfirmWireDetailsForm.json.js +26 -0
- package/dist/i18n/es_US/Payroll.ConfirmWireDetailsForm.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.Dismissal.json.js +16 -0
- package/dist/i18n/es_US/Payroll.Dismissal.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.EmployeeSelection.json.js +8 -0
- package/dist/i18n/es_US/Payroll.EmployeeSelection.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.GrossUpModal.json.js +26 -0
- package/dist/i18n/es_US/Payroll.GrossUpModal.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.OffCycle.json.js +8 -0
- package/dist/i18n/es_US/Payroll.OffCycle.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.OffCycleCreation.json.js +16 -0
- package/dist/i18n/es_US/Payroll.OffCycleCreation.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.OffCycleDeductionsSetting.json.js +8 -0
- package/dist/i18n/es_US/Payroll.OffCycleDeductionsSetting.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.OffCyclePayPeriodDateForm.json.js +14 -0
- package/dist/i18n/es_US/Payroll.OffCyclePayPeriodDateForm.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.OffCycleReasonSelection.json.js +12 -0
- package/dist/i18n/es_US/Payroll.OffCycleReasonSelection.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.OffCycleTaxWithholding.json.js +16 -0
- package/dist/i18n/es_US/Payroll.OffCycleTaxWithholding.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.PayrollBlocker.json.js +34 -0
- package/dist/i18n/es_US/Payroll.PayrollBlocker.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.PayrollConfiguration.json.js +44 -0
- package/dist/i18n/es_US/Payroll.PayrollConfiguration.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.PayrollEditEmployee.json.js +66 -0
- package/dist/i18n/es_US/Payroll.PayrollEditEmployee.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.PayrollHistory.json.js +22 -0
- package/dist/i18n/es_US/Payroll.PayrollHistory.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.PayrollLanding.json.js +16 -0
- package/dist/i18n/es_US/Payroll.PayrollLanding.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.PayrollList.json.js +38 -0
- package/dist/i18n/es_US/Payroll.PayrollList.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.PayrollOverview.json.js +70 -0
- package/dist/i18n/es_US/Payroll.PayrollOverview.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.PayrollReceipts.json.js +20 -0
- package/dist/i18n/es_US/Payroll.PayrollReceipts.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.RecoveryCasesList.json.js +20 -0
- package/dist/i18n/es_US/Payroll.RecoveryCasesList.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.RecoveryCasesResubmit.json.js +8 -0
- package/dist/i18n/es_US/Payroll.RecoveryCasesResubmit.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.Transition.json.js +8 -0
- package/dist/i18n/es_US/Payroll.Transition.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.TransitionCreation.json.js +20 -0
- package/dist/i18n/es_US/Payroll.TransitionCreation.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.TransitionPayrollAlert.json.js +18 -0
- package/dist/i18n/es_US/Payroll.TransitionPayrollAlert.json.js.map +1 -0
- package/dist/i18n/es_US/Payroll.WireInstructions.json.js +30 -0
- package/dist/i18n/es_US/Payroll.WireInstructions.json.js.map +1 -0
- package/dist/i18n/es_US/common.json.js +44 -0
- package/dist/i18n/es_US/common.json.js.map +1 -0
- package/dist/i18n/types.d.ts +262 -6
- package/dist/index.d.ts +2 -2
- package/dist/models/external.d.ts +23 -0
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +5 -0
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.55.6](https://github.com/Gusto/embedded-react-sdk/compare/v0.55.5...v0.55.6) (2026-09-08)
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
|
|
7
|
+
- Default the payment method to check when an employee has no bank account on file ([#2683](https://github.com/Gusto/embedded-react-sdk/issues/2683))
|
|
8
|
+
- Give contractor row action-menu buttons a row-specific accessible name ([#2647](https://github.com/Gusto/embedded-react-sdk/issues/2647))
|
|
9
|
+
- Add an accessible label to the completed-step checkmark icon ([#2672](https://github.com/Gusto/embedded-react-sdk/issues/2672))
|
|
10
|
+
- Freeze `PaySchedule`'s initial routing decision so it no longer changes mid-flow ([#2703](https://github.com/Gusto/embedded-react-sdk/issues/2703))
|
|
11
|
+
- Right-align numeric `DataView` columns (currency, hours, tax rate) that aren't the last column in the table ([#2648](https://github.com/Gusto/embedded-react-sdk/issues/2648))
|
|
12
|
+
- Add helper text under the off-cycle Payment date ([#2701](https://github.com/Gusto/embedded-react-sdk/issues/2701))
|
|
13
|
+
- Recover from a failed payroll calculation instead of stalling forever ([#2700](https://github.com/Gusto/embedded-react-sdk/issues/2700))
|
|
14
|
+
- Include reimbursements in the employee take-home Payment total ([#2699](https://github.com/Gusto/embedded-react-sdk/issues/2699))
|
|
15
|
+
- Persist `0` when an additional-earning field is cleared instead of dropping it ([#2649](https://github.com/Gusto/embedded-react-sdk/issues/2649))
|
|
16
|
+
- Make the cancel payroll dialog describe cancelling ([#2652](https://github.com/Gusto/embedded-react-sdk/issues/2652))
|
|
17
|
+
- Fix payroll calculation, submission, and check-generation screens getting stuck (e.g. an unresolving "Loading payroll..." state) when a status update was missed ([#2715](https://github.com/Gusto/embedded-react-sdk/issues/2715))
|
|
18
|
+
- Cap the hourly rate input at the server's inline validation limit ([#2710](https://github.com/Gusto/embedded-react-sdk/issues/2710))
|
|
19
|
+
- Save a contractor's email address when edited from the management Profile form ([#2696](https://github.com/Gusto/embedded-react-sdk/issues/2696))
|
|
20
|
+
|
|
21
|
+
### Chores & Maintenance
|
|
22
|
+
|
|
23
|
+
- Bump `@gusto/embedded-api` to `0.3.0-rc.2` ([#2678](https://github.com/Gusto/embedded-react-sdk/issues/2678))
|
|
24
|
+
- Bump dependencies (`react-error-boundary`, `react-hook-form`)
|
|
25
|
+
- Bump dev dependencies (`react-router-dom`, `@typescript-eslint/parser`, `typescript-eslint`, `json-schema-to-typescript`, `lint-staged`, `tsx`)
|
|
26
|
+
|
|
27
|
+
## [0.55.5](https://github.com/Gusto/embedded-react-sdk/compare/v0.55.4...v0.55.5) (2026-08-31)
|
|
28
|
+
|
|
29
|
+
### Fixes
|
|
30
|
+
|
|
31
|
+
- Fix `InformationRequests` modal visibility so it is driven by the component's state machine ([#2662](https://github.com/Gusto/embedded-react-sdk/issues/2662))
|
|
32
|
+
|
|
3
33
|
## [0.55.4](https://github.com/Gusto/embedded-react-sdk/compare/v0.55.3...v0.55.4) (2026-08-31)
|
|
4
34
|
|
|
5
35
|
### Features & Enhancements
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
2
|
import { useId as T, useState as E } from "react";
|
|
3
3
|
import F from "classnames";
|
|
4
4
|
import { useTranslation as S } from "react-i18next";
|
|
@@ -6,26 +6,26 @@ import { useSelectionState as A } from "../useSelectionState.js";
|
|
|
6
6
|
import h from "./DataTable.module.scss.js";
|
|
7
7
|
import { useComponentContext as B } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
8
8
|
import { VisuallyHidden as m } from "../../VisuallyHidden/VisuallyHidden.js";
|
|
9
|
-
function
|
|
10
|
-
return !o || o === "start" ?
|
|
9
|
+
function d(r, o) {
|
|
10
|
+
return !o || o === "start" ? r : /* @__PURE__ */ a("div", { className: h.cellEnd, children: r });
|
|
11
11
|
}
|
|
12
|
-
function G(
|
|
12
|
+
function G(r, o) {
|
|
13
13
|
if (o.render)
|
|
14
|
-
return o.render(
|
|
14
|
+
return o.render(r);
|
|
15
15
|
if (o.key) {
|
|
16
16
|
const i = o.key;
|
|
17
|
-
return String(
|
|
17
|
+
return String(r[i] ?? "");
|
|
18
18
|
}
|
|
19
19
|
return "";
|
|
20
20
|
}
|
|
21
21
|
const Y = ({
|
|
22
|
-
label:
|
|
22
|
+
label: r,
|
|
23
23
|
data: o,
|
|
24
24
|
columns: i,
|
|
25
|
-
itemMenu:
|
|
25
|
+
itemMenu: u,
|
|
26
26
|
onSelect: l,
|
|
27
27
|
onSelectAll: R,
|
|
28
|
-
getIsItemSelected:
|
|
28
|
+
getIsItemSelected: p,
|
|
29
29
|
hideSelectAll: v,
|
|
30
30
|
emptyState: b,
|
|
31
31
|
footer: k,
|
|
@@ -33,18 +33,18 @@ const Y = ({
|
|
|
33
33
|
selectionMode: C = "multiple",
|
|
34
34
|
isFetching: g
|
|
35
35
|
}) => {
|
|
36
|
-
const
|
|
36
|
+
const y = B(), { t: c } = S("common"), $ = T(), [w, H] = E(null), { allSelected: L } = A(o, p), x = [
|
|
37
37
|
...l ? [
|
|
38
38
|
{
|
|
39
39
|
key: "select-header",
|
|
40
|
-
content: C === "multiple" &&
|
|
40
|
+
content: C === "multiple" && p && !v && o.length > 0 ? (
|
|
41
41
|
// Stop propagation so the surrounding react-aria-components
|
|
42
42
|
// <Column> press handler doesn't intercept the checkbox click
|
|
43
43
|
// and desync the controlled DOM state. The inner <input> is
|
|
44
44
|
// the actual interactive element; this span is a propagation
|
|
45
45
|
// shield, not a click target itself.
|
|
46
46
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
47
|
-
/* @__PURE__ */
|
|
47
|
+
/* @__PURE__ */ a(
|
|
48
48
|
"span",
|
|
49
49
|
{
|
|
50
50
|
onClick: (e) => {
|
|
@@ -56,8 +56,8 @@ const Y = ({
|
|
|
56
56
|
onMouseDown: (e) => {
|
|
57
57
|
e.stopPropagation();
|
|
58
58
|
},
|
|
59
|
-
children: /* @__PURE__ */
|
|
60
|
-
|
|
59
|
+
children: /* @__PURE__ */ a(
|
|
60
|
+
y.Checkbox,
|
|
61
61
|
{
|
|
62
62
|
value: L,
|
|
63
63
|
onChange: (e) => R?.(e, o),
|
|
@@ -67,29 +67,32 @@ const Y = ({
|
|
|
67
67
|
)
|
|
68
68
|
}
|
|
69
69
|
)
|
|
70
|
-
) : /* @__PURE__ */
|
|
70
|
+
) : /* @__PURE__ */ a(m, { children: c("table.selectRowHeader") })
|
|
71
71
|
}
|
|
72
72
|
] : [],
|
|
73
73
|
...i.map((e, t) => ({
|
|
74
74
|
key: typeof e.key == "string" ? e.key : `header-${t}`,
|
|
75
|
-
content:
|
|
75
|
+
content: d(e.title, e.justify)
|
|
76
76
|
})),
|
|
77
|
-
...
|
|
77
|
+
...u ? [
|
|
78
78
|
{
|
|
79
79
|
key: "actions-header",
|
|
80
|
-
content:
|
|
80
|
+
content: d(
|
|
81
|
+
/* @__PURE__ */ a(m, { children: c("table.actionsColumnHeader") }),
|
|
82
|
+
"end"
|
|
83
|
+
)
|
|
81
84
|
}
|
|
82
85
|
] : []
|
|
83
86
|
], N = (e, t) => {
|
|
84
87
|
H(t), l?.(e, !0);
|
|
85
88
|
}, P = (e, t) => {
|
|
86
89
|
if (C === "single") {
|
|
87
|
-
const
|
|
88
|
-
return /* @__PURE__ */
|
|
89
|
-
|
|
90
|
+
const n = p?.(e) ?? w === t;
|
|
91
|
+
return /* @__PURE__ */ a(
|
|
92
|
+
y.Radio,
|
|
90
93
|
{
|
|
91
94
|
name: $,
|
|
92
|
-
value:
|
|
95
|
+
value: n,
|
|
93
96
|
onChange: () => {
|
|
94
97
|
N(e, t);
|
|
95
98
|
},
|
|
@@ -98,13 +101,13 @@ const Y = ({
|
|
|
98
101
|
}
|
|
99
102
|
);
|
|
100
103
|
}
|
|
101
|
-
const s =
|
|
102
|
-
return /* @__PURE__ */
|
|
103
|
-
|
|
104
|
+
const s = p?.(e) ?? !1;
|
|
105
|
+
return /* @__PURE__ */ a(
|
|
106
|
+
y.Checkbox,
|
|
104
107
|
{
|
|
105
108
|
value: s,
|
|
106
|
-
onChange: (
|
|
107
|
-
l?.(e,
|
|
109
|
+
onChange: (n) => {
|
|
110
|
+
l?.(e, n);
|
|
108
111
|
},
|
|
109
112
|
label: c("table.selectRowLabel"),
|
|
110
113
|
shouldVisuallyHideLabel: !0
|
|
@@ -118,14 +121,14 @@ const Y = ({
|
|
|
118
121
|
content: P(e, t)
|
|
119
122
|
}
|
|
120
123
|
] : [],
|
|
121
|
-
...i.map((
|
|
122
|
-
key: typeof
|
|
123
|
-
content:
|
|
124
|
+
...i.map((n, f) => ({
|
|
125
|
+
key: typeof n.key == "string" ? n.key : `cell-${f}`,
|
|
126
|
+
content: d(G(e, n), n.justify)
|
|
124
127
|
})),
|
|
125
|
-
...
|
|
128
|
+
...u ? [
|
|
126
129
|
{
|
|
127
130
|
key: `menu-${t}`,
|
|
128
|
-
content: d(e)
|
|
131
|
+
content: d(u(e), "end")
|
|
129
132
|
}
|
|
130
133
|
] : []
|
|
131
134
|
];
|
|
@@ -139,26 +142,26 @@ const Y = ({
|
|
|
139
142
|
return l && t.push({
|
|
140
143
|
key: "footer-select",
|
|
141
144
|
content: ""
|
|
142
|
-
}), i.forEach((s,
|
|
143
|
-
const
|
|
145
|
+
}), i.forEach((s, n) => {
|
|
146
|
+
const f = typeof s.key == "string" ? s.key : `column-${n}`;
|
|
144
147
|
t.push({
|
|
145
|
-
key: `footer-${
|
|
146
|
-
content:
|
|
148
|
+
key: `footer-${f}`,
|
|
149
|
+
content: d(e[f] || "", s.justify)
|
|
147
150
|
});
|
|
148
|
-
}),
|
|
151
|
+
}), u && t.push({
|
|
149
152
|
key: "footer-actions",
|
|
150
153
|
content: ""
|
|
151
154
|
}), t;
|
|
152
155
|
})();
|
|
153
|
-
return /* @__PURE__ */
|
|
156
|
+
return /* @__PURE__ */ a(
|
|
154
157
|
"div",
|
|
155
158
|
{
|
|
156
159
|
className: F(h.tableWrapper, g && h.isFetching),
|
|
157
160
|
"aria-busy": !!g,
|
|
158
|
-
children: /* @__PURE__ */
|
|
159
|
-
|
|
161
|
+
children: /* @__PURE__ */ a(
|
|
162
|
+
y.Table,
|
|
160
163
|
{
|
|
161
|
-
"aria-label":
|
|
164
|
+
"aria-label": r,
|
|
162
165
|
"data-testid": "data-table",
|
|
163
166
|
headers: x,
|
|
164
167
|
rows: V,
|
|
@@ -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: <VisuallyHidden>{t('table.actionsColumnHeader')}</VisuallyHidden>,\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: itemMenu(item),\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 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,19 +1,28 @@
|
|
|
1
|
-
import { jsx as e, jsxs as
|
|
2
|
-
import
|
|
1
|
+
import { jsx as e, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import a from "classnames";
|
|
3
3
|
import { useId as d } from "react";
|
|
4
|
-
import {
|
|
4
|
+
import { useTranslation as p } from "react-i18next";
|
|
5
|
+
import { Flex as s } from "../Flex/Flex.js";
|
|
5
6
|
import i from "./RequirementsList.module.scss.js";
|
|
6
|
-
import { useComponentContext as
|
|
7
|
-
import
|
|
8
|
-
const
|
|
9
|
-
const o =
|
|
10
|
-
return /* @__PURE__ */ e(
|
|
7
|
+
import { useComponentContext as h } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
8
|
+
import f from "../../../assets/icons/checkbox.svg.js";
|
|
9
|
+
const T = ({ requirements: n }) => {
|
|
10
|
+
const o = h(), c = d(), { t: l } = p("common");
|
|
11
|
+
return /* @__PURE__ */ e(s, { flexDirection: "column", alignItems: "flex-start", gap: 8, children: /* @__PURE__ */ e(
|
|
11
12
|
o.UnorderedList,
|
|
12
13
|
{
|
|
13
14
|
className: i.list,
|
|
14
|
-
items: n.sort((t, r) => t.completed ? -1 : 1).map((t, r) => /* @__PURE__ */
|
|
15
|
-
t.completed ? /* @__PURE__ */ e("div", { className:
|
|
16
|
-
|
|
15
|
+
items: n.sort((t, r) => t.completed ? -1 : 1).map((t, r) => /* @__PURE__ */ m("div", { className: i.listItem, children: [
|
|
16
|
+
t.completed ? /* @__PURE__ */ e("div", { className: a(i.listItemIcon, i.success), children: /* @__PURE__ */ e(
|
|
17
|
+
f,
|
|
18
|
+
{
|
|
19
|
+
width: 16,
|
|
20
|
+
height: 16,
|
|
21
|
+
role: "img",
|
|
22
|
+
"aria-label": l("icons.completedStep")
|
|
23
|
+
}
|
|
24
|
+
) }) : /* @__PURE__ */ e("div", { className: i.listItemIcon, children: r + 1 }),
|
|
25
|
+
/* @__PURE__ */ m(s, { flexDirection: "column", gap: 0, children: [
|
|
17
26
|
/* @__PURE__ */ e(o.Text, { size: "md", weight: "medium", children: t.title }),
|
|
18
27
|
/* @__PURE__ */ e(o.Text, { variant: "supporting", children: t.description })
|
|
19
28
|
] })
|
|
@@ -22,6 +31,6 @@ const N = ({ requirements: n }) => {
|
|
|
22
31
|
) });
|
|
23
32
|
};
|
|
24
33
|
export {
|
|
25
|
-
|
|
34
|
+
T as RequirementsList
|
|
26
35
|
};
|
|
27
36
|
//# sourceMappingURL=RequirementsList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequirementsList.js","sources":["../../../../src/components/Common/RequirementsList/RequirementsList.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport { useId } from 'react'\nimport { Flex } from '../Flex/Flex'\nimport styles from './RequirementsList.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport SuccessCheck from '@/assets/icons/checkbox.svg?react'\n\ninterface RequirementsListProps {\n requirements: {\n title: string\n description: string\n completed: boolean\n }[]\n}\n/** @internal */\nexport const RequirementsList = ({ requirements }: RequirementsListProps) => {\n const Components = useComponentContext()\n const id = useId()\n\n return (\n <Flex flexDirection=\"column\" alignItems=\"flex-start\" gap={8}>\n <Components.UnorderedList\n className={styles.list}\n items={requirements\n .sort((a, b) => (a.completed ? -1 : 1))\n .map((step, i) => {\n return (\n <div key={`${id}-${i}-${step.description}`} className={styles.listItem}>\n {step.completed ? (\n <div className={classNames(styles.listItemIcon, styles.success)}>\n <SuccessCheck
|
|
1
|
+
{"version":3,"file":"RequirementsList.js","sources":["../../../../src/components/Common/RequirementsList/RequirementsList.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport { useId } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Flex } from '../Flex/Flex'\nimport styles from './RequirementsList.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport SuccessCheck from '@/assets/icons/checkbox.svg?react'\n\ninterface RequirementsListProps {\n requirements: {\n title: string\n description: string\n completed: boolean\n }[]\n}\n/** @internal */\nexport const RequirementsList = ({ requirements }: RequirementsListProps) => {\n const Components = useComponentContext()\n const id = useId()\n const { t } = useTranslation('common')\n\n return (\n <Flex flexDirection=\"column\" alignItems=\"flex-start\" gap={8}>\n <Components.UnorderedList\n className={styles.list}\n items={requirements\n .sort((a, b) => (a.completed ? -1 : 1))\n .map((step, i) => {\n return (\n <div key={`${id}-${i}-${step.description}`} className={styles.listItem}>\n {step.completed ? (\n <div className={classNames(styles.listItemIcon, styles.success)}>\n <SuccessCheck\n width={16}\n height={16}\n role=\"img\"\n aria-label={t('icons.completedStep')}\n />\n </div>\n ) : (\n <div className={styles.listItemIcon}>{i + 1}</div>\n )}\n <Flex flexDirection=\"column\" gap={0}>\n <Components.Text size=\"md\" weight=\"medium\">\n {step.title}\n </Components.Text>\n <Components.Text variant=\"supporting\">{step.description}</Components.Text>\n </Flex>\n </div>\n )\n })}\n />\n </Flex>\n )\n}\n"],"names":["RequirementsList","requirements","Components","useComponentContext","id","useId","t","useTranslation","Flex","jsx","styles","a","b","step","i","jsxs","classNames","SuccessCheck"],"mappings":";;;;;;;;AAgBO,MAAMA,IAAmB,CAAC,EAAE,cAAAC,QAA0C;AAC3E,QAAMC,IAAaC,EAAA,GACbC,IAAKC,EAAA,GACL,EAAE,GAAAC,EAAA,IAAMC,EAAe,QAAQ;AAErC,2BACGC,GAAA,EAAK,eAAc,UAAS,YAAW,cAAa,KAAK,GACxD,UAAA,gBAAAC;AAAA,IAACP,EAAW;AAAA,IAAX;AAAA,MACC,WAAWQ,EAAO;AAAA,MAClB,OAAOT,EACJ,KAAK,CAACU,GAAGC,MAAOD,EAAE,YAAY,KAAK,CAAE,EACrC,IAAI,CAACE,GAAMC,MAER,gBAAAC,EAAC,OAAA,EAA2C,WAAWL,EAAO,UAC3D,UAAA;AAAA,QAAAG,EAAK,8BACH,OAAA,EAAI,WAAWG,EAAWN,EAAO,cAAcA,EAAO,OAAO,GAC5D,UAAA,gBAAAD;AAAA,UAACQ;AAAAA,UAAA;AAAA,YACC,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAK;AAAA,YACL,cAAYX,EAAE,qBAAqB;AAAA,UAAA;AAAA,QAAA,EACrC,CACF,IAEA,gBAAAG,EAAC,OAAA,EAAI,WAAWC,EAAO,cAAe,cAAI,GAAE;AAAA,QAE9C,gBAAAK,EAACP,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,UAAA,gBAAAC,EAACP,EAAW,MAAX,EAAgB,MAAK,MAAK,QAAO,UAC/B,YAAK,MAAA,CACR;AAAA,4BACCA,EAAW,MAAX,EAAgB,SAAQ,cAAc,YAAK,YAAA,CAAY;AAAA,QAAA,EAAA,CAC1D;AAAA,MAAA,KAlBQ,GAAGE,CAAE,IAAIU,CAAC,IAAID,EAAK,WAAW,EAmBxC,CAEH;AAAA,IAAA;AAAA,EAAA,GAEP;AAEJ;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo as l } from "react";
|
|
2
|
+
import { useState as u, useMemo as l } from "react";
|
|
3
3
|
import { createMachine as p } from "robot3";
|
|
4
4
|
import { usePaySchedulesGetAllSuspense as h } from "@gusto/embedded-api/react-query/paySchedulesGetAll";
|
|
5
5
|
import { payScheduleStateMachine as S } from "./payScheduleStateMachine.js";
|
|
@@ -10,26 +10,32 @@ import { useI18n as P, useComponentDictionary as x } from "../../../i18n/I18n.js
|
|
|
10
10
|
import { Flow as M } from "../../Flow/Flow.js";
|
|
11
11
|
const L = ({
|
|
12
12
|
companyId: e,
|
|
13
|
-
defaultValues:
|
|
14
|
-
dictionary:
|
|
15
|
-
...
|
|
16
|
-
}) => /* @__PURE__ */ r(y, { ...
|
|
17
|
-
function w({ companyId: e, defaultValues:
|
|
18
|
-
P("Company.PaySchedule"), x("Company.PaySchedule",
|
|
19
|
-
const { onEvent:
|
|
13
|
+
defaultValues: t,
|
|
14
|
+
dictionary: n,
|
|
15
|
+
...i
|
|
16
|
+
}) => /* @__PURE__ */ r(y, { ...i, children: /* @__PURE__ */ r(w, { companyId: e, defaultValues: t, dictionary: n }) });
|
|
17
|
+
function w({ companyId: e, defaultValues: t, dictionary: n }) {
|
|
18
|
+
P("Company.PaySchedule"), x("Company.PaySchedule", n);
|
|
19
|
+
const { onEvent: i } = C(), { data: s } = h({ companyId: e }), [{ initialState: a, initialComponent: m }] = u(() => {
|
|
20
|
+
const o = (s.payScheduleShowResponse?.length ?? 0) > 0;
|
|
21
|
+
return {
|
|
22
|
+
initialState: o ? "listSchedules" : "addSchedule",
|
|
23
|
+
initialComponent: o ? d : f
|
|
24
|
+
};
|
|
25
|
+
}), c = l(
|
|
20
26
|
() => p(
|
|
21
|
-
|
|
27
|
+
a,
|
|
22
28
|
S,
|
|
23
|
-
(
|
|
24
|
-
...
|
|
25
|
-
component:
|
|
29
|
+
(o) => ({
|
|
30
|
+
...o,
|
|
31
|
+
component: m,
|
|
26
32
|
companyId: e,
|
|
27
|
-
defaultValues:
|
|
33
|
+
defaultValues: t
|
|
28
34
|
})
|
|
29
35
|
),
|
|
30
|
-
[e,
|
|
36
|
+
[e, t, a, m]
|
|
31
37
|
);
|
|
32
|
-
return /* @__PURE__ */ r(M, { machine:
|
|
38
|
+
return /* @__PURE__ */ r(M, { machine: c, onEvent: i });
|
|
33
39
|
}
|
|
34
40
|
export {
|
|
35
41
|
L as PaySchedule
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaySchedule.js","sources":["../../../../src/components/Company/PaySchedule/PaySchedule.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { createMachine } from 'robot3'\nimport { usePaySchedulesGetAllSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetAll'\nimport { payScheduleStateMachine } from './payScheduleStateMachine'\nimport type { PayScheduleContextInterface } from './PayScheduleComponents'\nimport { PayScheduleFormContextual, PayScheduleListContextual } from './PayScheduleComponents'\nimport type { PayScheduleFormData } from './shared/usePayScheduleForm/payScheduleSchema'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { BaseComponent, useBase } from '@/components/Base'\nimport type { BaseComponentKeys } from '@/components/Base/Base'\nimport { useI18n } from '@/i18n'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { Flow } from '@/components/Flow/Flow'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\n\n/**\n * The full set of fields that may be pre-filled on the {@link PaySchedule} create form.\n *\n * @public\n */\nexport type PayScheduleDefaultFields = {\n [\n K in keyof Pick<\n PayScheduleFormData,\n 'anchorPayDate' | 'anchorEndOfPayPeriod' | 'day1' | 'day2' | 'customName' | 'frequency'\n >\n ]: NonNullable<PayScheduleFormData[K]>\n}\n\n/**\n * Default values for the {@link PaySchedule} form fields. Server data for an existing pay schedule\n * takes precedence over these defaults when editing.\n *\n * @public\n */\nexport type PayScheduleDefaultValues = RequireAtLeastOne<Partial<PayScheduleDefaultFields>>\n\n/**\n * Props for the {@link PaySchedule} component.\n *\n * @public\n */\nexport interface PayScheduleProps extends BaseComponentInterface<'Company.PaySchedule'> {\n /** Identifier of the company whose pay schedules are managed. */\n companyId: string\n /** Default values used to pre-fill the create form. Ignored fields not listed in {@link PayScheduleDefaultValues}. */\n defaultValues?: PayScheduleDefaultValues\n}\n\n/**\n * Manages a company's pay schedules, including listing existing schedules and creating or editing one.\n *\n * @remarks\n * Renders the schedule list when at least one pay schedule exists and the create form otherwise.\n * Emits the following events through `onEvent`:\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `paySchedule/created` | A new pay schedule was created | The created pay schedule entity |\n * | `paySchedule/updated` | An existing pay schedule was updated | The updated pay schedule entity |\n *\n * @param props - {@link PayScheduleProps} plus the standard base component props.\n * @returns The pay schedule list or form depending on whether any schedules exist.\n * @public\n */\nexport const PaySchedule = ({\n companyId,\n defaultValues,\n dictionary,\n ...props\n}: PayScheduleProps) => {\n return (\n <BaseComponent {...props}>\n <Root companyId={companyId} defaultValues={defaultValues} dictionary={dictionary} />\n </BaseComponent>\n )\n}\n\nfunction Root({ companyId, defaultValues, dictionary }: Omit<PayScheduleProps, BaseComponentKeys>) {\n useI18n('Company.PaySchedule')\n useComponentDictionary('Company.PaySchedule', dictionary)\n const { onEvent } = useBase()\n const { data: paySchedules } = usePaySchedulesGetAllSuspense({ companyId })\n\n const hasSchedules = (paySchedules.payScheduleShowResponse?.length ?? 0) > 0\n
|
|
1
|
+
{"version":3,"file":"PaySchedule.js","sources":["../../../../src/components/Company/PaySchedule/PaySchedule.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { createMachine } from 'robot3'\nimport { usePaySchedulesGetAllSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetAll'\nimport { payScheduleStateMachine } from './payScheduleStateMachine'\nimport type { PayScheduleContextInterface } from './PayScheduleComponents'\nimport { PayScheduleFormContextual, PayScheduleListContextual } from './PayScheduleComponents'\nimport type { PayScheduleFormData } from './shared/usePayScheduleForm/payScheduleSchema'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { BaseComponent, useBase } from '@/components/Base'\nimport type { BaseComponentKeys } from '@/components/Base/Base'\nimport { useI18n } from '@/i18n'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { Flow } from '@/components/Flow/Flow'\nimport type { RequireAtLeastOne } from '@/types/Helpers'\n\n/**\n * The full set of fields that may be pre-filled on the {@link PaySchedule} create form.\n *\n * @public\n */\nexport type PayScheduleDefaultFields = {\n [\n K in keyof Pick<\n PayScheduleFormData,\n 'anchorPayDate' | 'anchorEndOfPayPeriod' | 'day1' | 'day2' | 'customName' | 'frequency'\n >\n ]: NonNullable<PayScheduleFormData[K]>\n}\n\n/**\n * Default values for the {@link PaySchedule} form fields. Server data for an existing pay schedule\n * takes precedence over these defaults when editing.\n *\n * @public\n */\nexport type PayScheduleDefaultValues = RequireAtLeastOne<Partial<PayScheduleDefaultFields>>\n\n/**\n * Props for the {@link PaySchedule} component.\n *\n * @public\n */\nexport interface PayScheduleProps extends BaseComponentInterface<'Company.PaySchedule'> {\n /** Identifier of the company whose pay schedules are managed. */\n companyId: string\n /** Default values used to pre-fill the create form. Ignored fields not listed in {@link PayScheduleDefaultValues}. */\n defaultValues?: PayScheduleDefaultValues\n}\n\n/**\n * Manages a company's pay schedules, including listing existing schedules and creating or editing one.\n *\n * @remarks\n * Renders the schedule list when at least one pay schedule exists and the create form otherwise.\n * Emits the following events through `onEvent`:\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `paySchedule/created` | A new pay schedule was created | The created pay schedule entity |\n * | `paySchedule/updated` | An existing pay schedule was updated | The updated pay schedule entity |\n *\n * @param props - {@link PayScheduleProps} plus the standard base component props.\n * @returns The pay schedule list or form depending on whether any schedules exist.\n * @public\n */\nexport const PaySchedule = ({\n companyId,\n defaultValues,\n dictionary,\n ...props\n}: PayScheduleProps) => {\n return (\n <BaseComponent {...props}>\n <Root companyId={companyId} defaultValues={defaultValues} dictionary={dictionary} />\n </BaseComponent>\n )\n}\n\nfunction Root({ companyId, defaultValues, dictionary }: Omit<PayScheduleProps, BaseComponentKeys>) {\n useI18n('Company.PaySchedule')\n useComponentDictionary('Company.PaySchedule', dictionary)\n const { onEvent } = useBase()\n const { data: paySchedules } = usePaySchedulesGetAllSuspense({ companyId })\n\n // Freeze the initial routing decision. Recomputing it after a later refetch (e.g. once\n // the first schedule is created) would re-seat the machine and orphan its interpreter.\n const [{ initialState, initialComponent }] = useState<{\n initialState: keyof typeof payScheduleStateMachine\n initialComponent: typeof PayScheduleListContextual | typeof PayScheduleFormContextual\n }>(() => {\n const hasSchedules = (paySchedules.payScheduleShowResponse?.length ?? 0) > 0\n return {\n initialState: hasSchedules ? 'listSchedules' : 'addSchedule',\n initialComponent: hasSchedules ? PayScheduleListContextual : PayScheduleFormContextual,\n }\n })\n\n const machine = useMemo(\n () =>\n createMachine(\n initialState,\n payScheduleStateMachine,\n (initialContext: PayScheduleContextInterface) => ({\n ...initialContext,\n component: initialComponent,\n companyId,\n defaultValues,\n }),\n ),\n [companyId, defaultValues, initialState, initialComponent],\n )\n\n return <Flow machine={machine} onEvent={onEvent} />\n}\n"],"names":["PaySchedule","companyId","defaultValues","dictionary","props","jsx","BaseComponent","Root","useI18n","useComponentDictionary","onEvent","useBase","paySchedules","usePaySchedulesGetAllSuspense","initialState","initialComponent","useState","hasSchedules","PayScheduleListContextual","PayScheduleFormContextual","machine","useMemo","createMachine","payScheduleStateMachine","initialContext","Flow"],"mappings":";;;;;;;;;;AAkEO,MAAMA,IAAc,CAAC;AAAA,EAC1B,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC,EAACC,KAAe,GAAGF,GACjB,4BAACG,GAAA,EAAK,WAAAN,GAAsB,eAAAC,GAA8B,YAAAC,EAAA,CAAwB,EAAA,CACpF;AAIJ,SAASI,EAAK,EAAE,WAAAN,GAAW,eAAAC,GAAe,YAAAC,KAAyD;AACjG,EAAAK,EAAQ,qBAAqB,GAC7BC,EAAuB,uBAAuBN,CAAU;AACxD,QAAM,EAAE,SAAAO,EAAA,IAAYC,EAAA,GACd,EAAE,MAAMC,EAAA,IAAiBC,EAA8B,EAAE,WAAAZ,GAAW,GAIpE,CAAC,EAAE,cAAAa,GAAc,kBAAAC,GAAkB,IAAIC,EAG1C,MAAM;AACP,UAAMC,KAAgBL,EAAa,yBAAyB,UAAU,KAAK;AAC3E,WAAO;AAAA,MACL,cAAcK,IAAe,kBAAkB;AAAA,MAC/C,kBAAkBA,IAAeC,IAA4BC;AAAA,IAAA;AAAA,EAEjE,CAAC,GAEKC,IAAUC;AAAA,IACd,MACEC;AAAA,MACER;AAAA,MACAS;AAAA,MACA,CAACC,OAAiD;AAAA,QAChD,GAAGA;AAAA,QACH,WAAWT;AAAA,QACX,WAAAd;AAAA,QACA,eAAAC;AAAA,MAAA;AAAA,IACF;AAAA,IAEJ,CAACD,GAAWC,GAAeY,GAAcC,CAAgB;AAAA,EAAA;AAG3D,SAAO,gBAAAV,EAACoB,GAAA,EAAK,SAAAL,GAAkB,SAAAV,EAAA,CAAkB;AACnD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaxRateHistorySection.js","sources":["../../../../../src/components/Company/StateTaxes/TaxRateManagement/TaxRateHistorySection.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useTaxRateManagement, type TaxRateKeyGroup } from './context'\nimport { extractRequirementColumns, toHistoryRows, type HistoryRow } from './toHistoryRows'\nimport { AddRateAction } from './AddRateAction'\nimport { DataView, EmptyData, Flex, useDataView, VisuallyHidden } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\n\ninterface TaxRateHistorySectionProps {\n group: TaxRateKeyGroup\n /**\n * Whether to render this group's own heading + \"Add tax rate\" button.\n *\n * @remarks\n * Set to `false` when this is the only group for the state — the page-level header already\n * carries the title and the single add-rate action, so a repeated per-group header would be\n * redundant.\n *\n * @defaultValue `true`\n */\n showHeader?: boolean\n}\n\ntype BadgeStatus = 'success' | 'info' | 'warning'\n\nconst statusBadgeMap = {\n current: 'success',\n scheduled: 'info',\n historical: 'warning',\n} as const satisfies Record<HistoryRow['status'], BadgeStatus>\n\nconst statusLabelKeyMap = {\n current: 'currentBadge',\n scheduled: 'scheduledBadge',\n historical: 'historicalBadge',\n} as const satisfies Record<HistoryRow['status'], string>\n\n/** @internal */\nexport function TaxRateHistorySection({ group, showHeader = true }: TaxRateHistorySectionProps) {\n const { t } = useTranslation('Company.StateTaxes', { keyPrefix: 'manageRates' })\n const Components = useComponentContext()\n const dateFormatter = useDateFormatter()\n const { state } = useTaxRateManagement()\n\n const rows = useMemo(() => toHistoryRows(group.sets), [group.sets])\n const requirementColumns = useMemo(() => extractRequirementColumns(group.sets), [group.sets])\n\n const sectionLabel = group.label ?? group.key\n\n const { ...dataViewProps } = useDataView<HistoryRow>({\n data: rows,\n columns: [\n {\n key: 'effectiveFrom',\n title: t('effectiveDateColumnLabel'),\n render: row => dateFormatter.formatLongWithYear(row.effectiveFrom),\n },\n {\n key: 'status',\n title: <VisuallyHidden>{t('statusColumnLabel')}</VisuallyHidden>,\n render: row => (\n <Components.Badge status={statusBadgeMap[row.status]}>\n {t(statusLabelKeyMap[row.status])}\n </Components.Badge>\n ),\n },\n ...requirementColumns.map(column => ({\n key: column.key,\n title: column.label ?? column.key,\n render: (row: HistoryRow) => row.values[column.key] ?? '',\n })),\n ],\n emptyState: () => (\n <EmptyData title={t('emptyHistoryTitle')} description={t('emptyHistoryDescription')} />\n ),\n })\n\n return (\n <section aria-label={sectionLabel}>\n <Flex flexDirection=\"column\" gap={16} alignItems=\"stretch\">\n {showHeader && (\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={16}>\n <Components.Heading as=\"h3\">{sectionLabel}</Components.Heading>\n <AddRateAction state={state} group={group} />\n </Flex>\n )}\n <DataView label={sectionLabel} {...dataViewProps} />\n </Flex>\n </section>\n )\n}\n"],"names":["statusBadgeMap","statusLabelKeyMap","TaxRateHistorySection","group","showHeader","t","useTranslation","Components","useComponentContext","dateFormatter","useDateFormatter","state","useTaxRateManagement","rows","useMemo","toHistoryRows","requirementColumns","extractRequirementColumns","sectionLabel","dataViewProps","useDataView","row","jsx","VisuallyHidden","column","EmptyData","jsxs","Flex","AddRateAction","DataView"],"mappings":";;;;;;;;;;;;;AA0BA,MAAMA,IAAiB;AAAA,EACrB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AACd,GAEMC,IAAoB;AAAA,EACxB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AACd;AAGO,SAASC,EAAsB,EAAE,OAAAC,GAAO,YAAAC,IAAa,MAAoC;AAC9F,QAAM,EAAE,GAAAC,MAAMC,EAAe,sBAAsB,EAAE,WAAW,eAAe,GACzEC,IAAaC,EAAA,GACbC,IAAgBC,EAAA,GAChB,EAAE,OAAAC,EAAA,IAAUC,EAAA,GAEZC,IAAOC,EAAQ,MAAMC,EAAcZ,EAAM,IAAI,GAAG,CAACA,EAAM,IAAI,CAAC,GAC5Da,IAAqBF,EAAQ,MAAMG,EAA0Bd,EAAM,IAAI,GAAG,CAACA,EAAM,IAAI,CAAC,GAEtFe,IAAef,EAAM,SAASA,EAAM,KAEpC,EAAE,GAAGgB,EAAA,IAAkBC,EAAwB;AAAA,IACnD,MAAMP;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,KAAK;AAAA,QACL,OAAOR,EAAE,0BAA0B;AAAA,QACnC,QAAQ,CAAAgB,MAAOZ,EAAc,mBAAmBY,EAAI,aAAa;AAAA,MAAA;AAAA,MAEnE;AAAA,QACE,KAAK;AAAA,QACL,OAAO,gBAAAC,EAACC,GAAA,EAAgB,UAAAlB,EAAE,mBAAmB,GAAE;AAAA,QAC/C,QAAQ,CAAAgB,MACN,gBAAAC,EAACf,EAAW,OAAX,EAAiB,QAAQP,EAAeqB,EAAI,MAAM,GAChD,UAAAhB,EAAEJ,EAAkBoB,EAAI,MAAM,CAAC,EAAA,CAClC;AAAA,MAAA;AAAA,MAGJ,GAAGL,EAAmB,IAAI,CAAAQ,OAAW;AAAA,QACnC,KAAKA,EAAO;AAAA,QACZ,OAAOA,EAAO,SAASA,EAAO;AAAA,QAC9B,QAAQ,CAACH,MAAoBA,EAAI,OAAOG,EAAO,GAAG,KAAK;AAAA,MAAA,EACvD;AAAA,IAAA;AAAA,IAEJ,YAAY,MACV,gBAAAF,EAACG,GAAA,EAAU,OAAOpB,EAAE,mBAAmB,GAAG,aAAaA,EAAE,yBAAyB,EAAA,CAAG;AAAA,EAAA,CAExF;AAED,SACE,gBAAAiB,EAAC,WAAA,EAAQ,cAAYJ,GACnB,UAAA,gBAAAQ,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAAI,YAAW,WAC9C,UAAA;AAAA,IAAAvB,uBACEuB,GAAA,EAAK,gBAAe,iBAAgB,YAAW,UAAS,KAAK,IAC5D,UAAA;AAAA,MAAA,gBAAAL,EAACf,EAAW,SAAX,EAAmB,IAAG,MAAM,UAAAW,GAAa;AAAA,MAC1C,gBAAAI,EAACM,GAAA,EAAc,OAAAjB,GAAc,OAAAR,EAAA,CAAc;AAAA,IAAA,GAC7C;AAAA,IAEF,gBAAAmB,EAACO,GAAA,EAAS,OAAOX,GAAe,GAAGC,EAAA,CAAe;AAAA,EAAA,EAAA,CACpD,EAAA,CACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"TaxRateHistorySection.js","sources":["../../../../../src/components/Company/StateTaxes/TaxRateManagement/TaxRateHistorySection.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useTaxRateManagement, type TaxRateKeyGroup } from './context'\nimport { extractRequirementColumns, toHistoryRows, type HistoryRow } from './toHistoryRows'\nimport { AddRateAction } from './AddRateAction'\nimport { DataView, EmptyData, Flex, useDataView, VisuallyHidden } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\n\ninterface TaxRateHistorySectionProps {\n group: TaxRateKeyGroup\n /**\n * Whether to render this group's own heading + \"Add tax rate\" button.\n *\n * @remarks\n * Set to `false` when this is the only group for the state — the page-level header already\n * carries the title and the single add-rate action, so a repeated per-group header would be\n * redundant.\n *\n * @defaultValue `true`\n */\n showHeader?: boolean\n}\n\ntype BadgeStatus = 'success' | 'info' | 'warning'\n\nconst statusBadgeMap = {\n current: 'success',\n scheduled: 'info',\n historical: 'warning',\n} as const satisfies Record<HistoryRow['status'], BadgeStatus>\n\nconst statusLabelKeyMap = {\n current: 'currentBadge',\n scheduled: 'scheduledBadge',\n historical: 'historicalBadge',\n} as const satisfies Record<HistoryRow['status'], string>\n\n/** @internal */\nexport function TaxRateHistorySection({ group, showHeader = true }: TaxRateHistorySectionProps) {\n const { t } = useTranslation('Company.StateTaxes', { keyPrefix: 'manageRates' })\n const Components = useComponentContext()\n const dateFormatter = useDateFormatter()\n const { state } = useTaxRateManagement()\n\n const rows = useMemo(() => toHistoryRows(group.sets), [group.sets])\n const requirementColumns = useMemo(() => extractRequirementColumns(group.sets), [group.sets])\n\n const sectionLabel = group.label ?? group.key\n\n const { ...dataViewProps } = useDataView<HistoryRow>({\n data: rows,\n columns: [\n {\n key: 'effectiveFrom',\n title: t('effectiveDateColumnLabel'),\n render: row => dateFormatter.formatLongWithYear(row.effectiveFrom),\n },\n {\n key: 'status',\n title: <VisuallyHidden>{t('statusColumnLabel')}</VisuallyHidden>,\n render: row => (\n <Components.Badge status={statusBadgeMap[row.status]}>\n {t(statusLabelKeyMap[row.status])}\n </Components.Badge>\n ),\n },\n ...requirementColumns.map(column => ({\n key: column.key,\n title: column.label ?? column.key,\n justify: 'end' as const,\n render: (row: HistoryRow) => row.values[column.key] ?? '',\n })),\n ],\n emptyState: () => (\n <EmptyData title={t('emptyHistoryTitle')} description={t('emptyHistoryDescription')} />\n ),\n })\n\n return (\n <section aria-label={sectionLabel}>\n <Flex flexDirection=\"column\" gap={16} alignItems=\"stretch\">\n {showHeader && (\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={16}>\n <Components.Heading as=\"h3\">{sectionLabel}</Components.Heading>\n <AddRateAction state={state} group={group} />\n </Flex>\n )}\n <DataView label={sectionLabel} {...dataViewProps} />\n </Flex>\n </section>\n )\n}\n"],"names":["statusBadgeMap","statusLabelKeyMap","TaxRateHistorySection","group","showHeader","t","useTranslation","Components","useComponentContext","dateFormatter","useDateFormatter","state","useTaxRateManagement","rows","useMemo","toHistoryRows","requirementColumns","extractRequirementColumns","sectionLabel","dataViewProps","useDataView","row","jsx","VisuallyHidden","column","EmptyData","jsxs","Flex","AddRateAction","DataView"],"mappings":";;;;;;;;;;;;;AA0BA,MAAMA,IAAiB;AAAA,EACrB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AACd,GAEMC,IAAoB;AAAA,EACxB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AACd;AAGO,SAASC,EAAsB,EAAE,OAAAC,GAAO,YAAAC,IAAa,MAAoC;AAC9F,QAAM,EAAE,GAAAC,MAAMC,EAAe,sBAAsB,EAAE,WAAW,eAAe,GACzEC,IAAaC,EAAA,GACbC,IAAgBC,EAAA,GAChB,EAAE,OAAAC,EAAA,IAAUC,EAAA,GAEZC,IAAOC,EAAQ,MAAMC,EAAcZ,EAAM,IAAI,GAAG,CAACA,EAAM,IAAI,CAAC,GAC5Da,IAAqBF,EAAQ,MAAMG,EAA0Bd,EAAM,IAAI,GAAG,CAACA,EAAM,IAAI,CAAC,GAEtFe,IAAef,EAAM,SAASA,EAAM,KAEpC,EAAE,GAAGgB,EAAA,IAAkBC,EAAwB;AAAA,IACnD,MAAMP;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,KAAK;AAAA,QACL,OAAOR,EAAE,0BAA0B;AAAA,QACnC,QAAQ,CAAAgB,MAAOZ,EAAc,mBAAmBY,EAAI,aAAa;AAAA,MAAA;AAAA,MAEnE;AAAA,QACE,KAAK;AAAA,QACL,OAAO,gBAAAC,EAACC,GAAA,EAAgB,UAAAlB,EAAE,mBAAmB,GAAE;AAAA,QAC/C,QAAQ,CAAAgB,MACN,gBAAAC,EAACf,EAAW,OAAX,EAAiB,QAAQP,EAAeqB,EAAI,MAAM,GAChD,UAAAhB,EAAEJ,EAAkBoB,EAAI,MAAM,CAAC,EAAA,CAClC;AAAA,MAAA;AAAA,MAGJ,GAAGL,EAAmB,IAAI,CAAAQ,OAAW;AAAA,QACnC,KAAKA,EAAO;AAAA,QACZ,OAAOA,EAAO,SAASA,EAAO;AAAA,QAC9B,SAAS;AAAA,QACT,QAAQ,CAACH,MAAoBA,EAAI,OAAOG,EAAO,GAAG,KAAK;AAAA,MAAA,EACvD;AAAA,IAAA;AAAA,IAEJ,YAAY,MACV,gBAAAF,EAACG,GAAA,EAAU,OAAOpB,EAAE,mBAAmB,GAAG,aAAaA,EAAE,yBAAyB,EAAA,CAAG;AAAA,EAAA,CAExF;AAED,SACE,gBAAAiB,EAAC,WAAA,EAAQ,cAAYJ,GACnB,UAAA,gBAAAQ,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAAI,YAAW,WAC9C,UAAA;AAAA,IAAAvB,uBACEuB,GAAA,EAAK,gBAAe,iBAAgB,YAAW,UAAS,KAAK,IAC5D,UAAA;AAAA,MAAA,gBAAAL,EAACf,EAAW,SAAX,EAAmB,IAAG,MAAM,UAAAW,GAAa;AAAA,MAC1C,gBAAAI,EAACM,GAAA,EAAc,OAAAjB,GAAc,OAAAR,EAAA,CAAc;AAAA,IAAA,GAC7C;AAAA,IAEF,gBAAAmB,EAACO,GAAA,EAAS,OAAOX,GAAe,GAAGC,EAAA,CAAe;AAAA,EAAA,EAAA,CACpD,EAAA,CACF;AAEJ;"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
2
2
|
import { useTranslation as T } from "react-i18next";
|
|
3
3
|
import E from "classnames";
|
|
4
|
-
import { useContractorPayForm as
|
|
4
|
+
import { useContractorPayForm as R } from "../shared/useContractorPayForm/useContractorPayForm.js";
|
|
5
5
|
import { WageType as d } from "../shared/useContractorPayForm/contractorPaySchema.js";
|
|
6
|
-
import
|
|
7
|
-
import { BaseBoundaries as
|
|
6
|
+
import N from "./CompensationEditForm.module.scss.js";
|
|
7
|
+
import { BaseBoundaries as A, BaseLayout as f } from "../../../Base/Base.js";
|
|
8
8
|
import "../../../Base/useBase.js";
|
|
9
|
-
import { Flex as
|
|
10
|
-
import { ActionsLayout as
|
|
11
|
-
import { Form as
|
|
12
|
-
import { SDKFormProvider as
|
|
13
|
-
import { useI18n as
|
|
9
|
+
import { Flex as M } from "../../../Common/Flex/Flex.js";
|
|
10
|
+
import { ActionsLayout as b } from "../../../Common/ActionsLayout/ActionsLayout.js";
|
|
11
|
+
import { Form as L } from "../../../Common/Form/Form.js";
|
|
12
|
+
import { SDKFormProvider as x } from "../../../../partner-hook-utils/form/SDKFormProvider.js";
|
|
13
|
+
import { useI18n as D, useComponentDictionary as F } from "../../../../i18n/I18n.js";
|
|
14
14
|
import { componentEvents as C } from "../../../../shared/constants.js";
|
|
15
15
|
import { useComponentContext as O } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
16
|
-
function
|
|
16
|
+
function Y({
|
|
17
17
|
FallbackComponent: a,
|
|
18
18
|
LoaderComponent: i,
|
|
19
19
|
...m
|
|
20
20
|
}) {
|
|
21
21
|
return /* @__PURE__ */ o(
|
|
22
|
-
|
|
22
|
+
A,
|
|
23
23
|
{
|
|
24
24
|
componentName: "Contractor.Management.Compensation",
|
|
25
25
|
FallbackComponent: a,
|
|
@@ -35,8 +35,8 @@ function H({
|
|
|
35
35
|
onEvent: l,
|
|
36
36
|
LoaderComponent: c
|
|
37
37
|
}) {
|
|
38
|
-
|
|
39
|
-
const { t: r } = T("Contractor.Management.Compensation"), e = O(), t =
|
|
38
|
+
D("Contractor.Management.Compensation"), F("Contractor.Management.Compensation", m);
|
|
39
|
+
const { t: r } = T("Contractor.Management.Compensation"), e = O(), t = R({ contractorId: a });
|
|
40
40
|
if (t.isLoading)
|
|
41
41
|
return /* @__PURE__ */ o(
|
|
42
42
|
f,
|
|
@@ -61,8 +61,8 @@ function H({
|
|
|
61
61
|
}))
|
|
62
62
|
}
|
|
63
63
|
);
|
|
64
|
-
return /* @__PURE__ */ o("section", { className: E(
|
|
65
|
-
/* @__PURE__ */ s(
|
|
64
|
+
return /* @__PURE__ */ o("section", { className: E(N.container, i), children: /* @__PURE__ */ o(f, { error: t.errorHandling.errors, LoaderComponent: c, children: /* @__PURE__ */ o(x, { formHookResult: t, children: /* @__PURE__ */ s(L, { onSubmit: y, children: [
|
|
65
|
+
/* @__PURE__ */ s(M, { flexDirection: "column", gap: 4, children: [
|
|
66
66
|
/* @__PURE__ */ o(e.Heading, { as: "h2", children: r("form.title") }),
|
|
67
67
|
/* @__PURE__ */ o(e.Text, { variant: "supporting", children: r("form.description") })
|
|
68
68
|
] }),
|
|
@@ -79,16 +79,19 @@ function H({
|
|
|
79
79
|
{
|
|
80
80
|
label: r("form.hourlyRateLabel"),
|
|
81
81
|
format: "currency",
|
|
82
|
-
validationMessages: {
|
|
82
|
+
validationMessages: {
|
|
83
|
+
REQUIRED: r("form.validations.hourlyRate"),
|
|
84
|
+
MAX_HOURLY_RATE: r("form.validations.hourlyRateMax")
|
|
85
|
+
}
|
|
83
86
|
}
|
|
84
87
|
),
|
|
85
|
-
/* @__PURE__ */ s(
|
|
88
|
+
/* @__PURE__ */ s(b, { children: [
|
|
86
89
|
/* @__PURE__ */ o(e.Button, { variant: "secondary", onClick: g, type: "button", children: r("form.cancelCta") }),
|
|
87
90
|
/* @__PURE__ */ o(e.Button, { type: "submit", isLoading: t.status.isPending, children: r("form.saveCta") })
|
|
88
91
|
] })
|
|
89
92
|
] }) }) }) });
|
|
90
93
|
}
|
|
91
94
|
export {
|
|
92
|
-
|
|
95
|
+
Y as CompensationEditForm
|
|
93
96
|
};
|
|
94
97
|
//# sourceMappingURL=CompensationEditForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompensationEditForm.js","sources":["../../../../../src/components/Contractor/Compensation/management/CompensationEditForm.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport { useContractorPayForm, WageType } from '../shared/useContractorPayForm'\nimport styles from './CompensationEditForm.module.scss'\nimport { BaseBoundaries, BaseLayout, type BaseComponentInterface } from '@/components/Base'\nimport { ActionsLayout } from '@/components/Common'\nimport { Flex } from '@/components/Common/Flex/Flex'\nimport { Form } from '@/components/Common/Form'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { RadioGroupProps } from '@/components/Common/UI/RadioGroup/RadioGroupTypes'\n\n/**\n * Props for {@link CompensationEditForm}.\n *\n * @public\n */\nexport interface CompensationEditFormProps extends BaseComponentInterface<'Contractor.Management.Compensation'> {\n /** The associated contractor identifier. */\n contractorId: string\n}\n\n/**\n * Standalone edit form for a contractor's compensation type and rate.\n *\n * @remarks\n * Renders a Fixed/Hourly compensation-type selector and, when Hourly, an\n * hourly-rate field. Save and Cancel both emit events so the parent can\n * return to the read view.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/management/compensation/updated` | Fired after compensation is successfully saved | The updated `Contractor` entity |\n * | `contractor/management/compensation/editCancelled` | Fired when the user clicks Cancel | — |\n *\n * @param input - See {@link CompensationEditFormProps}.\n * @returns The contractor compensation edit form.\n * @public\n */\nexport function CompensationEditForm({\n FallbackComponent,\n LoaderComponent,\n ...props\n}: CompensationEditFormProps) {\n return (\n <BaseBoundaries\n componentName=\"Contractor.Management.Compensation\"\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n >\n <CompensationEditFormRoot LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction CompensationEditFormRoot({\n contractorId,\n className,\n dictionary,\n onEvent,\n LoaderComponent,\n}: CompensationEditFormProps) {\n useI18n('Contractor.Management.Compensation')\n useComponentDictionary('Contractor.Management.Compensation', dictionary)\n const { t } = useTranslation('Contractor.Management.Compensation')\n const Components = useComponentContext()\n\n const payForm = useContractorPayForm({ contractorId })\n\n if (payForm.isLoading) {\n return (\n <BaseLayout\n isLoading\n error={payForm.errorHandling.errors}\n LoaderComponent={LoaderComponent}\n />\n )\n }\n\n const { Fields } = payForm.form\n\n const handleSubmit = async () => {\n const result = await payForm.actions.onSubmit()\n if (!result) return\n onEvent(componentEvents.CONTRACTOR_MANAGEMENT_COMPENSATION_UPDATED, result.data)\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.CONTRACTOR_MANAGEMENT_COMPENSATION_EDIT_CANCELLED)\n }\n\n const WageTypeFieldComponent = (radioProps: RadioGroupProps) => (\n <Components.RadioGroup\n {...radioProps}\n options={radioProps.options.map(option => ({\n ...option,\n description:\n option.value === WageType.Hourly\n ? t('form.hourlyDescription')\n : t('form.fixedDescription'),\n }))}\n />\n )\n\n return (\n <section className={classNames(styles.container, className)}>\n <BaseLayout error={payForm.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <SDKFormProvider formHookResult={payForm}>\n <Form onSubmit={handleSubmit}>\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">{t('form.title')}</Components.Heading>\n <Components.Text variant=\"supporting\">{t('form.description')}</Components.Text>\n </Flex>\n <Fields.WageType\n label={t('form.wageTypeLabel')}\n getOptionLabel={(value: string) =>\n value === WageType.Hourly ? t('hourlyLabel') : t('fixedLabel')\n }\n FieldComponent={WageTypeFieldComponent}\n />\n {payForm.status.isHourly && (\n <Fields.HourlyRate\n label={t('form.hourlyRateLabel')}\n format=\"currency\"\n validationMessages={{
|
|
1
|
+
{"version":3,"file":"CompensationEditForm.js","sources":["../../../../../src/components/Contractor/Compensation/management/CompensationEditForm.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport { useContractorPayForm, WageType } from '../shared/useContractorPayForm'\nimport styles from './CompensationEditForm.module.scss'\nimport { BaseBoundaries, BaseLayout, type BaseComponentInterface } from '@/components/Base'\nimport { ActionsLayout } from '@/components/Common'\nimport { Flex } from '@/components/Common/Flex/Flex'\nimport { Form } from '@/components/Common/Form'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { RadioGroupProps } from '@/components/Common/UI/RadioGroup/RadioGroupTypes'\n\n/**\n * Props for {@link CompensationEditForm}.\n *\n * @public\n */\nexport interface CompensationEditFormProps extends BaseComponentInterface<'Contractor.Management.Compensation'> {\n /** The associated contractor identifier. */\n contractorId: string\n}\n\n/**\n * Standalone edit form for a contractor's compensation type and rate.\n *\n * @remarks\n * Renders a Fixed/Hourly compensation-type selector and, when Hourly, an\n * hourly-rate field. Save and Cancel both emit events so the parent can\n * return to the read view.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/management/compensation/updated` | Fired after compensation is successfully saved | The updated `Contractor` entity |\n * | `contractor/management/compensation/editCancelled` | Fired when the user clicks Cancel | — |\n *\n * @param input - See {@link CompensationEditFormProps}.\n * @returns The contractor compensation edit form.\n * @public\n */\nexport function CompensationEditForm({\n FallbackComponent,\n LoaderComponent,\n ...props\n}: CompensationEditFormProps) {\n return (\n <BaseBoundaries\n componentName=\"Contractor.Management.Compensation\"\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n >\n <CompensationEditFormRoot LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction CompensationEditFormRoot({\n contractorId,\n className,\n dictionary,\n onEvent,\n LoaderComponent,\n}: CompensationEditFormProps) {\n useI18n('Contractor.Management.Compensation')\n useComponentDictionary('Contractor.Management.Compensation', dictionary)\n const { t } = useTranslation('Contractor.Management.Compensation')\n const Components = useComponentContext()\n\n const payForm = useContractorPayForm({ contractorId })\n\n if (payForm.isLoading) {\n return (\n <BaseLayout\n isLoading\n error={payForm.errorHandling.errors}\n LoaderComponent={LoaderComponent}\n />\n )\n }\n\n const { Fields } = payForm.form\n\n const handleSubmit = async () => {\n const result = await payForm.actions.onSubmit()\n if (!result) return\n onEvent(componentEvents.CONTRACTOR_MANAGEMENT_COMPENSATION_UPDATED, result.data)\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.CONTRACTOR_MANAGEMENT_COMPENSATION_EDIT_CANCELLED)\n }\n\n const WageTypeFieldComponent = (radioProps: RadioGroupProps) => (\n <Components.RadioGroup\n {...radioProps}\n options={radioProps.options.map(option => ({\n ...option,\n description:\n option.value === WageType.Hourly\n ? t('form.hourlyDescription')\n : t('form.fixedDescription'),\n }))}\n />\n )\n\n return (\n <section className={classNames(styles.container, className)}>\n <BaseLayout error={payForm.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <SDKFormProvider formHookResult={payForm}>\n <Form onSubmit={handleSubmit}>\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">{t('form.title')}</Components.Heading>\n <Components.Text variant=\"supporting\">{t('form.description')}</Components.Text>\n </Flex>\n <Fields.WageType\n label={t('form.wageTypeLabel')}\n getOptionLabel={(value: string) =>\n value === WageType.Hourly ? t('hourlyLabel') : t('fixedLabel')\n }\n FieldComponent={WageTypeFieldComponent}\n />\n {payForm.status.isHourly && (\n <Fields.HourlyRate\n label={t('form.hourlyRateLabel')}\n format=\"currency\"\n validationMessages={{\n REQUIRED: t('form.validations.hourlyRate'),\n MAX_HOURLY_RATE: t('form.validations.hourlyRateMax'),\n }}\n />\n )}\n <ActionsLayout>\n <Components.Button variant=\"secondary\" onClick={handleCancel} type=\"button\">\n {t('form.cancelCta')}\n </Components.Button>\n <Components.Button type=\"submit\" isLoading={payForm.status.isPending}>\n {t('form.saveCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </SDKFormProvider>\n </BaseLayout>\n </section>\n )\n}\n"],"names":["CompensationEditForm","FallbackComponent","LoaderComponent","props","jsx","BaseBoundaries","CompensationEditFormRoot","contractorId","className","dictionary","onEvent","useI18n","useComponentDictionary","t","useTranslation","Components","useComponentContext","payForm","useContractorPayForm","BaseLayout","Fields","handleSubmit","result","componentEvents","handleCancel","WageTypeFieldComponent","radioProps","option","WageType","classNames","styles","SDKFormProvider","jsxs","Form","Flex","value","ActionsLayout"],"mappings":"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"}
|